加密、摘要、数字签名以及CA认证
在讲单向散列函数之前,先说一下加密、摘要、数字签名以及CA认证之间的关系。
- 加密
接之前讲的RSA加密算法,Alice有两把钥匙,一把公钥,一把私钥,Alice把公钥(绿色的钥匙)给了Bob,私钥(橙色的钥匙)在自己手里。Bob给Alice发消息,用Alice的公钥加密,Alice收到之后,用自己的私钥解密,就能看到消息。这个就是加密的过程。
加密一般用加密算法来实现,对称加密或非对称加密。算法有:AES、DES、RSA算法等。
2. 摘要和签名
那么什么是摘要呢?大家肯定听过MD5(MD5 Message-Digest Algorithm)消息摘要算法,这个也就是我们之后要了解的单向散列函数的相关算法。摘要的主要作用是防止消息被篡改。
同样是Alice和Bob,Alice要给Bob发一封信,这封信的内容就是下图中的明文,Alice通过MD5算法生成一段固定长度的摘要,接下来Alice用自己的私钥给这段摘要签名,随后将签名和明文一起发送给Bob,Bob收到之后,用Alice的公钥解密,说明消息是Alice发的。然后对明文用MD5进行摘要,若生成的摘要和传过来的摘要相同,说明明文没有被篡改,反之明文内容被篡改了。
- CA认证
接前面MD5签名,若Eve趁Bob不注意,将Alice的公钥换成了自己的,那么Eve就可以冒充Alice给Bob发消息了。这个时候Bob依旧可以解开签名,但是他不知道这个是Eve发的。所以Bob就告诉Alice,要求Alice去找"证书中心"(certificate authority,简称CA),为公钥做认证,证书中心用自己的私钥,对Alice的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
证书中心,用自己的私钥,给Alice的公钥以及其他的一些信息签名,生成数字证书。
Alice给Bob发消息的时候,不仅要发送明文、签名还要发送证书中心的数字证书。
Bob收到消息之后,先用证书中心的公钥解开数字证书,得到Alice的公钥,然后用Alice的公钥解开签名,得到摘要,此时就能证明消息确实是Alice发的。最后再去对比摘要,确认明文是否被篡改。