关于密钥、数字证书与签名

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。

对称密钥:信息的发送方和接收方使用同一个密钥去加密和解密数据。

非对称密钥:使用不同密钥分别完成加密、解密操作,一个公开发布,即公钥,另一个由用户自己秘密保存,即私钥。

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,由CA发行。

根证书:未被签名的公钥证书或自签名的证书。安装根证书意味着对这个CA认证中心的信任。

 

证书用来证明你手里的公钥的主人身份,证书一般包含:公钥PK、公钥的签名S、公钥所有者信息。

拿到证书之后,需要解密公钥的签名S,然后与公钥PK对比,怎么保证解密S用的公钥PKK是真的?又要有一个证书来证明PKK的正确性,怎么证明用来解密PKK签名的公钥PKKK的正确性?然后就是PKKKKK……

CA用自己的私钥对A的公钥进行签名,将这个签名和A的公钥,以及与A相关的一些信息做成证书,从而结束上述验证链关系。

 

当B想要A的公钥时,找CA拿A的证书。用CA的公钥解密A的公钥的签名,与证书中的A的公钥比较,如果一样,证明这个证书是有效的。如果不一样,说明说明证书可能已经被篡改,或者这是个假的CA……

 

签名是为了让信息的接收者可以验证发送者的身份。

数据摘要:通过使用数据摘要算法,常见的有(MD5,SHA1等),可生成文件的数据摘要,并且可认为这个摘要独一无二。

将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。接收方收到数字签名后,用同样的HASH算法对原报文计算出报文摘要值。

假设A发送信息M给B,A首先使用数据摘要算法生成发送信息M的数据摘要D,然后用自己的私钥对摘要D进行加密,操作之后就得到了签名S,用私钥加密摘要D的这个过程就叫签名。然后A用B的公钥加密信息M得到密文C,将C和生成的签名S一起发送给B。B收到后,用自己的私钥对密文C进行解密,得到明文M。然后B使用数据摘要算法生成M的数据摘要D1,用A的公钥解密签名S,得到数据摘要D2,将D1和D2进行比较,如果相同则证明这个消息确实来自于A。


猜你喜欢

转载自blog.csdn.net/songkai320/article/details/80515126