最近在看K8S,在部署环节里面有很多关于秘钥签名之类的概念,虽然之前也配置过不少但是看着依旧是不甚明了,于是抽时间好好复习了一下相关知识。

​http://www.youdzone.com/signature.html​

这个文章讲的非常的透彻,可以说是经典中的经典。缩写一下就是

加密:

主要用于消息秘密传输,即便被截获,也无法解密信息

B将自己的公钥发给A(公钥是公开的),这样B给A发消息的时候就可以使用A的公钥加密数据,A收到后用A自己的私钥(私钥是保密的不可外传)可以解密。

签名:

主要用于消息验证,防止被篡改,或者冒名发送

A给B发消息的时候,A使用私钥加密数据摘要(将消息通过一定算法例如MD5 SHA等进行处理,生成摘要)作为签名,B使用A的公钥对签名进行解密,然后对比数据摘要与签名解密数据是否一致,如果一致说明数据没有被篡改,否则数据不可信。

问题,如果公钥被篡改了呢?

数字证书:

用于保证信息发送人真实身份,防止冒用

A用自己的公钥向CA申请数字证书。A发给B的信息中心在签名后附带上数字证书。

B收到信息后用CA的公钥解开CA签发的数字证书,提取出A的公钥,对签名进行解密,对比数据摘要。