加密:加密与解密是同一秘钥称为对称加密,用公钥加密、用私钥解密称为非对称加密。
CA:证书中心"(certificate authority,简称CA),为需认证的公钥做认证的机构。CA用自己的私钥(标记为CA私钥)对需认证的公钥(如公钥AB)和相关信息进行加密,就生成数字证书。数字证书要用CA提供的公钥(标记为CA公钥)解密,这样就可以得到被认证的公钥与相关信息。
(A方)加签:先用Hash函数对数据生成数据的摘要,再使用私钥(标记为私钥AB),对这个摘要加密,就生成数字签名。将这个数字签名和数据一起发送给B方,称为“加入数字签名”过程,简称加签。
(B方)验签:收到A方的数字签名和数据后,取出数字签名,用公钥(标记为公钥AB)解密,如果能得到摘要信息,说明的确是持有与该公钥匹配的私钥的发送方(A方)发出。对收到的数据使用Hash函数生成摘要,将得到的摘要结果,与解密出来的摘要进行对比。如果两者一致,就证明数据未被修改过。这个过程称为验证数字签名,简称验签。
比较复杂的情况是,B方持有公钥AB被C方的流氓软件篡改为公钥BC,但B方还不知道被篡改了。若C方发送它生成的数字签名和数据到B方,B方用被篡改的公钥能解密出摘要并且对比摘要信息也没问题,则B方会误认为该数据和数字签名还是A方发出。所以需要CA对公钥AB和相关信息做成数字证书,A方向B方传输数据时,不仅附上A方数据签名,还要附上CA所认证的数字证书。当B方收到A方数据签名+CA所认证的数字证书+数据时,用CA提供的公钥对数字证书解密,就可以得到公钥AB,在进行验签,就可以防止自己持有的公钥AB被篡改的情况发生。
那么,流氓软件篡改了CA提供给你的公钥怎么办?若被篡改了,在对CA数字证书验证的时候就通不过,因为是层层验证过程,即验证你这一级CA是通过你的上一级或者根CA。即使公钥被篡改了,也会发现CA提供给你的公钥被篡改了。