数字签名和数字证书是个啥?
在早起的互联网中,各种信息都是以明文形式在网络中传输。随着各种计算机高手的出现,他们可以轻松截获并读取这些信息。因此,人们希望通过一种机制来对信息进行加密,从而保证信息被安全传输,数字签名和数字证书就是这么一种方式。下面看一组动漫图。
鲍勃有两把钥匙,公钥和私钥。私钥只有一把,自己留着,公钥有好多把,因为苏珊喜欢鲍勃,平时没事就想说些甜甜的私密的话,所以鲍勃给苏珊一把公钥。这要苏珊写完信后就用鲍勃的公钥进行加密,鲍勃收到信后用他的私钥进行解密以此达到了保密的效果。
这里保证如果鲍勃私钥不泄漏,这封信即使落在别人手里也不会被解密。而鲍勃回信的时候有些不同,他先用Hash函数生成信的摘要,然后用私钥对这个摘要加密生成数字签名(signature),然后附在信的下面,一起发给苏珊。
苏珊收到信后,取下数字签名,用鲍勃的公钥解密得到信件摘要来证明这封信确实是鲍勃发的。然后苏珊在对信件本身使用Hash得到结果摘要,将两个摘要进行对比,如果两者一致,就证明这封信未被修改过。
所以数字签名其实就是对加密过的摘要用私钥在加密,然后和加密的摘要一起发送过去来证明信件没有被别人篡改过。但电脑高手道格喜欢苏珊,看到苏珊这么迷恋鲍勃,心想:如果我是鲍勃就好了。于是,他偷偷用苏珊的电脑,把自己的公钥换走了鲍勃的公钥,来了一手狸猫换太子。苏珊并不知情,她还以为是鲍勃的公钥。因此,道格便可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,苏珊用假的鲍勃公钥进行解密,整个过程在苏珊看来还以为和鲍勃在通话。
后来苏珊发现不对劲,她不确定公钥是不是鲍勃的,就要求鲍勃去“证书中心”(CA),为公钥做认证。证书中心用自己的私钥对鲍勃的公钥进行加密,生成“数字证书”,这样鲍勃拿到数字证书后,在写信时,再附上“数字证书”就可以了。
苏珊收到信后,用CA的公钥解密数字证书,就可以拿到鲍勃真实的公钥了。
所以,数字证书其实就是委托权威的第三方把发送方的公钥进行加密的结果,这样公钥就不必存到本地被别人篡改了,因为每次鲍勃都会把加密过的公钥给苏珊,苏珊在通过权威机构的公钥解密得出鲍勃真实的公钥。