一、不同级别的数据完整性
1.意外错误:最可能的原因是通信信道中存在噪声。CRC
2.简单操作:针对意外错误提供的保护机制。如果数据以特定的方式更改,则不需要重新计算即可预测新的完整性摘要。
3.主动攻击:防止攻击者对以前没见过其完整性摘要的数据创建“有效的”完整性摘要。
4.否认攻击:针对完整性摘要的创建者试图否认创建了该摘要来提供保护。
二、哈希函数
1.哈希函数主要用途:
(1)强单向函数:用于“加密”那些不需要“解密”的高度机密数据,例如口令;
(2)提供数据弱完整性保证:检查数据是否被恶意更改、恶意操作;
(3)作为构建其他密码学原语的组件:MAC、带附件的数字签名方案;
(4)绑定数据的一种方法;
(5)作为伪随机源:哈希函数有时用于生成密码方案使用的伪随机数,eg生成密钥。
2.哈希函数没有密钥;哈希函数是公开的。
3.哈希函数实用属性:
(1)将任意长度的输入值压缩为固定长度的输出值;
(2)易于计算,哈希函数的实际计算速度比对称密码快。
4.哈希函数安全属性:
(1)抗原像性:函数h的输出h(x)通常称为x的像,x被称为h(x)的像。给定h(x)很难确定x。
(2)抗第二原像性:给定x和h(x),很难找到y(y≠x)满足h(y)=h(x)。PIN
(3)抗碰撞性:很难找到x≠y,使得h(x)=h(y)。
5.哈希函数的应用
(1)抗原像性:口令存储,数据本身不需要恢复。用户标识I,口令P,口令文件(I,h(P))。
(2)抗第二原像性:生成校验和。如果单独使用哈希函数,只能防止简单的错误和操纵。与其他安全机制结合使用。
(3)抗碰撞性:密码学承诺
6.哈希函数的理论攻击:
(1)数字签名是对消息哈希值的签名,而不是对消息本身签名。
(2)生日攻击:不关注任何两个人的生日相同的可能性,而是关注他们中的两个有一个特定生日的可能性。
A.随机选取一条消息,计算其哈希值,并且将结果保存在数据库中。
B.随机选择一条消息,计算其哈希值,然后检查该哈希值是否已经存在于数据库中。
C.如果此哈希值已经存在于数据库中,那么说明已经找到碰撞;否则将此哈希值加入数据库中,重复B。
7. 哈希函数实践:
(1)n位哈希函数在2^(n/2)次哈希计算后被发现碰撞的概率大于一半。
(2)王小云团队2004年、2005年,提出md5、sha1哈希函数算法的攻击理论(模差分比特分析法)。
(3)sha2:sha-224、sha-256、sha-384、sha-512,sha-256是许多应用建议的最低安全级别。
8. sha-3的目标不是取代sha-2标准,而是使哈希函数的范围多样化。
(1)海绵函数:核心为置换
(2)扩展---压缩定长
(3)sha3-224、sha3-256、sha3-384、sha3-512
9. 消息认证码MAC
(1)加密通常不提供数据源身份认证。
(2)提供数据源身份认证常用的机制之一,另一种是数字签名。
(3)MAC属性:MAC是一个密码校验和,与消息一起发送,以提供数据源身份认证的保证。MAC以消息和密钥k(对称)作为输入,发送方发送的消息中包含MAC。接收方将接收到的消息和密钥输入MAC算法并重新计算MAC。接收方检查重新计算的MAC是否与发送方的MAC匹配。不匹配无法确定更改还是伪造。不知道密钥的情况下,很难找到有效的消息/MAC对。
MAC的保证提供给MAC的合法接收方,这个接收方是唯一能够验证MAC正确性的其他实体。哈希函数的弱数据完整性保证可提供给每个人。
10. HMAC:基于哈希的消息认证码
HMAC-MD5:后缀标识底层哈希函数的名称
h(K1||h(K2||M))
HMAC安全性取决于以下独立因素:密钥的安全性;哈希函数的安全性;MAC输出的函数。
11. MAC和不可否认性:不可否认性是一个实体不能否认任何先前的承诺或行动的保证。MAC最重要的限制是它们不提供不可否认性服务。发送方可以否认发送了MAC,并声称伪造了它。不可否认性需要基于公钥加密的技术。
12. 认证加密:机密性总是需要与数据源身份认证一起提供。
13. 提供认证加密两种可能的方法:
(1)使用单独的密码学原语来分别提供
A.先MAC后加密:计算完整消息的MAC;加密消息和MAC(但不加密相关数据);将密文和相关数据发送到接收方。
B.先加密后MAC:将消息加密;将密文和相关数据结合起来计算MAC;密文、相关数据和MAC发送到接收端。接收方首先要检查密文上的MAC。如果检查失败,则接收方将拒绝数据,而不需要解密,而不需要解密,从而减少一些计算工作。
加密操作和MAC操作都应该使用不同的密钥进行计算。
使用显示设计的密码学原语