不错的文章

https://zhuanlan.zhihu.com/p/257350962

非对称加密算法

非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。
只需要传输公钥,便可进行加密,多人加密可使用一样的公钥。
但由于密钥长度过长,通常只使用非对称加密传递对称加密的密钥信息。

RSA的加密过程可以使用一个通式来表达:
密文=明文^E mod N

(E,N)表示公钥

RSA的解密过程也可以使用一个通式来表达:
明文=密文^D mod N

(D,N)表示密钥

签名算法

私钥可以解密公钥加密数据的同时公钥也可以解密私钥加密的数据
私密加密后,只能用该私钥对等的公钥才能进行解密
其他人不能伪造这个消息,私钥持有者也不能抵赖这条消息不是自己写的。
v2-ffedb2336a5b3232c1ff7a6a5f72ba74_1440w
实际应用

  1. 发送者先将原文经过Hash算法产生数字摘要(不可篡改性)
  2. 发送者再将通过自己私钥加密的数字签名发送给接收者(不能伪造,抵赖)
  3. 发送者将原文信息发送给接收者
  4. 接收者通过发送者公钥解密数字签名,获取先前的数字摘要
  5. 再将原文进行相同的hash算法,对比数字摘要进行验证。

ps:SSH免密登录,就是本地保存私钥,公钥给服务器实现的。

数字证书

数字证书就是为了验证,发送者公钥是否被篡改。
A网站B用户

  1. A需先找到CA做公钥认证
  2. 证明后,证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
  3. A向B发送消息,附带数字证书
  4. B通过根证书,验证数字证书的正确性,并获取A的公钥,然后进行签名算法验证获得可信信息。

CA(Certificate Authority)证书授权中心

CA证书 CA向用户签发的证书,通常是用CA私钥加密后的用户公钥和个人信息。
CA根证书 CA自己给自己签分的证书,用来校验CA证书,一般存放在浏览器内部。