X509 摘要 加密解密 公钥私钥 数字签名 数字证书
X509 摘要 加密解密 公钥私钥 数字签名 数字证书
加密算法分两类: 对称性加密算法 非对称性加密算法
RSA算法: 有公钥和密钥2个钥匙, 其中一个加密信息后, 只能用另一个才能解密信息.
假设有A,B2个人互相通信, 它们各有自己的公钥和私钥: A公, A私, B公, B私, 每个人把公钥告诉别人, 私钥不告诉别人.
现在A向B发送消息, 可用于加密消息的钥匙一共就4种情况: A公, A私, B公, B私, 首先排除两个:
*. 用A的公钥加密, 因为除了A没有其他人知道A的私钥, 消息发出去没人会解密, 没有发出去的意义.
*. 用B的私钥加密, 但B是不把私钥告诉别人的.
剩下可选的两种情况:
*. 使用A的私钥加密消息. 作用: 消息真实性保证. 这条消息一定是从A发出来的, 保证了消息的真实性, 而不是别人伪造出来的.
*. 使用B的公钥加密消息. 作用: 消息加密. 只有B才能解密看到这条消息, 别人无法解密消息, 保证了消息的加密传输.
两种情况的应用:
*. 消息加密. 很直观, 就是加密消息, 不被第三方看到消息内容.
*. 消息真实性保证. 为了保证消息的真实性, 将消息的摘要, 用A的私钥加密, 称作数字签名(digital signature), 将发出的消息(明文消息)附加上数字签名. 接收者将数字签名用A公钥解密得到摘要, 校验摘要, 即可确认消息的真实性.
*. 消息真实性保证. B在接收A的公钥时, 为了保证收到的公钥确实是A的公钥(而不是恶意者的公钥), 再增加一个角色CA(证书中心Certificate Authority), CA有自己的公钥和私钥, 公钥大白于天下, CA证书中心创建一个文件(称作数字证书digital certificate, 文件扩展名crt, cer, key), 满足X.509格式, 记录了证书颁发者(也就是这个CA)信息, A的信息, A的公钥. 将这个文件用CA的秘钥加密, 以此保证这个证书是CA颁发的, 而不是别人编出来的. 把这个证书发给B, B就能放心的保存A的公钥了. 这要求首先固定一个CA的公钥(大家默认承认, 代码变量写死), 才能搭建起整个信任平台.
专有名词解释:
signature verification 数字签名校验, 使用A的公钥, 校验消息确实是A发来的.
certificate validation 数字证书校验, 使用CA的公钥, 校验证书确实是CA颁发的.
