--------2018-10-31
这几天学业务的时候接触到加密这个概念,比较感兴趣,了解了一下,以下是目前了解到的一些基础知识。
一、基础知识
1. 加密分为对称加密和非对称加密。
2. 对称加密:发送端和接收端使用同一个密码进行加密解密。
发送端:明文 * 密码 --> 密文
接收端:密文 * 密码 --> 明文
3. 非对称加密:发送端和接收端使用一对私钥和公钥进行加密解密。
发送端:明文 * 私钥 --> 密文
接收端:密文 * 公钥 --> 明文
4. 私钥:发送端需要自己保管
5. 公钥:发送端给一个或多个接收端自己的公钥。
6. 公钥加密 -> 对应的私钥解密 ; 私密加密 ->对应公钥解密。
二、数字签名
使用场景:A想给B发信,需要保证B收到的就是A的信,且信没有被篡改。
发送端: A 写了信
---> hash函数处理信,生成信的摘要(digest)
---> A使用自己的私钥对摘要进行加密
--->生成“数字签名” signature
---> 信+数字签名,发送给B。
接收端: B接到信
---> 使用A给公钥,对signature进行解密
---> 获得信的摘要(digest _1),获取成功说明信来自B
---> B 使用hash函数对信解密,获得信的摘要(digest _2)
---> 对比digest _1 和digest _2
---> 对比一致说明信没有被篡改,对比不一致说明信被篡改。
三、数字证书
使用场景:当B获得A的公钥 KEY_ga,C偷换成立自己的公钥KEY_gc,然后伪装成A发送信息给B,为了应对这个风险,B要求A去认证自己的公钥。
认证流程:A 去认证中心(certificate authority-CA)进行公钥认证
---> CA使用自己的私钥+A的公钥+相关信息
---> 生成A的“数字证书”,A再将认证公钥(CA-KEY_ga)给B
发送端: A 写了信
---> hash函数处理信,生成信的摘要(digest)
---> A使用自己的私钥对摘要进行加密
---> 生成“数字签名” signature
---> 信+数字签名+数字证书,发送给B。
接收端: B接到信
---> 使用A给认证公钥(CA-KEY_ga)解密数字证书
---> 获得A真正的公钥,后续操作同上(解密数字签名、解密信,对比digest)