必备
- 公钥(公开)
- 私钥(私人持有)
应用
1. 数据加密
使用公钥加密,私钥解密,解决了密钥传送的问题。
数据加密
2. 电子签名
将数据生成散列值,如MD5
,将散列值使用私钥进行加密,公钥可以解密。
和现实世界的盖章类似,但盖章机制存在先盖章,后书写内容
的漏洞,电子签名相当于数据加密和盖章一起使用,只拿到盖章没用。
电子签名
注:数据加密和电子签名互为逆向使用。
CA机构
1. 存在问题
公钥验证问题,如下
公钥伪装
2. 解决方案
引入第三方机构
解决方案
- 兔小白生成密钥对 “兔PublicKey” 和 “兔PrivateKey”
- 兔小白保存好 “兔PrivateKey”,将 “兔PublicKey” 发给认证机构
- 认证机构确认 “兔PublicKey” 确实属于兔小白,然后用自己的“ 机构PrivateKey” 对 “兔PublicKey” 进行数字签名,生成证书。
- 熊小猫想要与兔小白通信时,先从认证机构处获取到兔小白公钥证书。
- 熊小猫用 “机构PublicKey” 验证证书上 “兔PublicKey” 的签名,确保 “兔PublicKey” 没有被篡改以及确实来自认证机构。
- 熊小猫用证书中的 “兔PublicKey” 对信息进行加密,发给兔小白
- 兔小白用自己的私钥 “兔PrivateKey” 解密信息
总结
在最讲安全的领域,密码学,其实“很不安全”。
- 从来没有100%的信任,信任只会转移,不会消失,信任
有且必须有
载体。(<100%
) - 我们不得不对
Object
投入一定量的前提信任成本。(>0%
)