不错的文章
https://zhuanlan.zhihu.com/p/257350962
非对称加密算法
非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。
只需要传输公钥,便可进行加密,多人加密可使用一样的公钥。
但由于密钥长度过长,通常只使用非对称加密传递对称加密的密钥信息。
RSA的加密过程可以使用一个通式来表达:
密文=明文^E mod N
(E,N)表示公钥
RSA的解密过程也可以使用一个通式来表达:
明文=密文^D mod N
(D,N)表示密钥
签名算法
私钥可以解密公钥加密数据的同时公钥也可以解密私钥加密的数据
私密加密后,只能用该私钥对等的公钥才能进行解密
其他人不能伪造这个消息,私钥持有者也不能抵赖这条消息不是自己写的。
实际应用
- 发送者先将原文经过Hash算法产生数字摘要(不可篡改性)
- 发送者再将通过自己私钥加密的数字签名发送给接收者(不能伪造,抵赖)
- 发送者将原文信息发送给接收者
- 接收者通过发送者公钥解密数字签名,获取先前的数字摘要
- 再将原文进行相同的hash算法,对比数字摘要进行验证。
ps:SSH免密登录,就是本地保存私钥,公钥给服务器实现的。
数字证书
数字证书就是为了验证,发送者公钥是否被篡改。
A网站B用户
- A需先找到CA做公钥认证
- 证明后,证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
- A向B发送消息,附带数字证书
- B通过根证书,验证数字证书的正确性,并获取A的公钥,然后进行签名算法验证获得可信信息。
CA(Certificate Authority)证书授权中心
CA证书 CA向用户签发的证书,通常是用CA私钥加密后的用户公钥和个人信息。
CA根证书 CA自己给自己签分的证书,用来校验CA证书,一般存放在浏览器内部。