发现了一篇让人分清MAC、消息摘要、数字签名的文章
安全体系(零)—— 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
https://blog.youkuaiyun.com/xjhhjx/article/details/81603107
抓自己想看的重点如下:
1.数据传输的安全
1.1 对称加密
又称共享加密,加解密使用相同的密钥。常见算法:DES
问题:如何保证密钥的安全性?
1.2 非对称加密
也称公钥加密。常见算法:RSA
问题:如何保证公钥是合法的?
2.保证数据完整性
消息摘要
哈希函数,这种算法是不可逆的。常见算法:MD5 SHA
例:
当我们使用某一软件时,下载完成后需要确认是否是官方提供的完整版,是否被人篡改过。通常软件提供方会提供软件的散列值,用户下载软件之后,在本地使用相同的散列算法计算散列值,并与官方提供的散列值向对比。如果相同,说明软件完整,未被修改过。
问题:如何验证发送的数据确实来自于发送方?
3.保证数据的真实性
3.1 消息认证码
消息认证码MAC为一种与密钥相关的单向散列函数。
例:
1).A把消息发送给B前,先把共享密钥发送给B。
2).A把要发送的消息使用共享密钥计算出MAC值,然后将消息和MAC发送给B。
3).B接收到消息和MAC值后,使用共享密钥计算出MAC值,与接收到的MAC值对比。
4).如果MAC值相同,说明接收到的消息是完整的,而且是A发送的。
这里还是存在对称加密的密钥配送问题,可以使用公钥加密方式解决。
问题:如何让发送方无法否认发送过数据?
3.2 数字签名
公钥算法
例:
1).A把消息用哈希函数处理生成消息摘要,并报摘要用私钥进行加密生成签名,把签名和消息一起发送给B。
2). 数据经过网络传送给B,当然,为了安全,可以用上述的加密方法对数据进行加密。
3). B接收到数据后,提取出消息和签名进行验签。采用相同的哈希函数生成消息摘要,将其与接收的签名用配对的公钥解密的结果对比,如果相同,说明签名验证成功。消息是A发送的,如果验证失败,说明消息不是A发送的。
问题:
依然是,如何确保公钥的合法性?
4.公钥证书
认证机构(Certification
Authority)CA来管理