PKI知识梳理
场景:S要通过Internet发送一份文件给R,这份文件非常重要,不能有丝毫差错,而且不能被别人知道文件的内容。如何安全发送这份文件。
采用对称加密算法加密文件后传输。S用对称密钥加密明文后得到密文,通过Internet发送密文给R,R用对称密钥解密密文,得到想要的明文。
这种方式需要R将对称密钥告知S,如果途中被黑客截获了对称密钥,整个过程就不是保密的了。
采用非对称加密传输数据。R将自己的公钥告知S,S用公钥加密明文后的密文通过Internet传给R,R用自己的私钥解密密文得到想要的明文。整个过程私钥不公开,只有公钥公开,即使黑客截获了公钥也解不开密文。
由于非对称加密算法比对称加密算法慢很多,而且加密后的数据会变长,所以一般采用对称加密算法加密文件,然后用非对称加密算法加密对称密钥。
如果黑客截获了R的公钥,并用自己的对称密钥加密一份伪造的明文连同经R公钥加密的伪造对称密钥发给R。也就是说R不知道收到的数据是否是S发过来的。
为解决这个问题采用签名/验签流程。
签名就是S对原始数据采用摘要算法得到一个摘要,用自己的私钥加密这个摘要,得到的一个密文数据我们称之为签名。
验签就是当R收到原始数据和签名后,用S的公钥解密签名,得到一个摘要1,对原始数据进行摘要算法得到摘要2,对2个摘要进行比较,如果相等表示验签成功。通过签名/验签的流程后表明数据在传输过程中没有被修改,并且一定是S发过来的数据。
最后简化后的流程图
新的问题又出来了,S需要提前把自己的公钥给R,R才能完成验签操作。如果黑客将S的公钥替换为自己伪造的公钥验签不能成功。也就是说R不确定手上的公钥是否是S的。采用数字证书可以解决这个问题。数字证书用于绑定公钥和公钥所属人。
一个最简单的证书包括如下信息:证书序列号、拥有者名称、拥有者公钥、有效期。最重要的是要有一个可信证书授权机构的数字签名,拥有这个签名,就保证了该证书里面的公钥一定是属于证书所有人的。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐