《图解密码技术》第八章
- 重放攻击:replay attack
- 否认:repudiation,防止否认:nonrepudiation
认证加密
认证加密简称AE或AEAD,将对称密码与消息认证码相结合,同时满足机密性、完整性和认证三大功能的机制
- Encrypt-then-MAC:将明文用对称密码加密,计算密文的MAC值
- Encrypt-and-MAC:将明文用对称密码加密,并对明文计算MAC值
- MAC-then-Encrypt:先计算明文的MAC值,然后将明文和MAC值同时用对称密码加密
- GCM与GMAC
- GCM:Galois/Counter Mode,使用AES等128比特 的分组密码的CTR模式,使用一个反复加法和乘法运算的散列函数来计算MAC值。
- CTR模式本质是对递增的计数器值进行加密,因此可以通过对若干分组进行并行处理来提高运行速度
- 专门用于消息认证码的GCM被称为GMAC,GCM和CCM都要被列为推荐使用的认证加密方式
- GCM:Galois/Counter Mode,使用AES等128比特 的分组密码的CTR模式,使用一个反复加法和乘法运算的散列函数来计算MAC值。
HMAC详细介绍
什么是HMAC
HMAC是一种是用单向散列函数来构造消息认证码的方法,任何高强度的单向散列函数都可以被用与HMAC.
e.g:HMAC-SHA1、HMAC-SHA-224
HMAC的步骤
对消息认证码的攻击
重放攻击
(重复发送100次100万的转账就称为1亿),防御重放攻击:
-
序号
约定每次发对消息赋予一个递增的序号,并且计算MAC值时将序号也包含在消息中。但每个通信对象都需要记录最后一个消息的序号.
-
时间戳
约定在发送消息时包含当前的时间,如果收到之前的消息,即使MAC正确也将其当做错误的消息来处理,这样就能防御重放攻击。考虑到通信延时,还是会存在可以进行重放攻击的空间.
-
nonce
接收者先向发送者发送一个一次性的随机数,称为nonce,发送者在消息中包含这个nonce并计算MAC值, 每次通信的nonce都不一样,所以无法重放攻击。但是通信的数据量回增加.
密钥推测攻击
对消息认证码也可以暴力破解和生日攻击
对与消息认证码,应保证不能根据MAC值推测出通信双方使用的密钥
即在省城消息认证码所使用的密钥时,必须使用密码学安全的、高强度的伪随机数生成器.
消息认证码无法解决的问题
对第三方证明
能够计算出正确MAC的只有Alice和Bob,在双方通信时,可以断定是对方计算了MAC值,但是第三方,Alice或Bob不能证明是对方计算了MAC值,而不是自己
防止否认
Alice给Bob发送了消息,Alice否认了,因为无法向第三方证明,所以无法防止否认.