假设你在古代,你出门在外,妻子在家养子。你们家有个箱子,箱子上有把锁,这就是你和你妻子互通的工具。你媳妇儿负责往箱子里放东西,然后上锁。你有把独特的钥匙,你负责开锁,取东西。可是你再将箱子给镖局托运的的过程中,被镖局的“小黑”掉包了,箱子的外表一致,锁看起来也一样,可是已经不是你的箱子了。因为路途遥远,古代又没有什么iPhone啥的,你媳妇没办法来辨别该箱子是否是原装的。然后就将一些东西放在了箱子里边,然后上锁交给了镖局的“小黑”。
因为“小黑”掉包的箱子,所以小黑有箱子的钥匙呢,然后就可以打开这个箱子,取东西了。原来的箱子又在小黑那,小黑就可以往原来的箱子里边随便往箱子放点没有价值的东西给你就行了。当你发现箱子里的东西不是你想要的时候,完了,小黑从镖局辞职了,找不到人了。找镖局的人讨说法,可是镖局的人说“小黑”是镖局的临时工,这个责任镖局说了,我们不能担。鉴于你无权无势,这事儿也就此罢了。(故事纯属虚构,如有雷同纯属巧合)
关于更多骗子的故事请移步网络剧《毛骗》一二三季。
为了防止“小黑”再次作案,所以颁布一个公正机构来证明你媳妇收到的箱子就是你发出的箱子。在RAS加密中也有一个第三方机构来充当这个角色,负责证明客户端收到的证书就是你发送的证书,中间没有被篡改。这个中间认证机构,就是数组证书认证机构, 其颁发的证书也就是我们常说的CA证书(CA , Certificate Authority)。
下面我们就来详细的叙述一下证书签名,证书分发以及证书验证的整个过程。
1、服务端人员使用RSA算法生成两个密钥,一个用来加密一个用来解密。将负责加密的那个密钥公布出去,所以我们称之为公钥(Public Key),而用来解密的那个密钥,不能对外公布,只有服务端持有,所以我们称之为私钥(Private Key)。服务端在将Public Key进行分发证书之前需要向CA机构申请给将要分发的公钥进行数字签名。(服务器公钥负责加密,服务器私钥负责解密)
2、生成数字签名公钥证书:对于CA机构来说,其也有两个密钥,我们暂且称之为CA私钥和CA公钥。CA机构将服务端的Public Key作为输入参数将其转换为一个特有的Hash值。然后使用CA私钥将这个Hash值进行加密处理,并与服务端的Public Key绑定在一起,生成数字签名证书。其实数字签名证书的本质就是服务端的公钥+CA私钥加密的Hash值。(CA私钥负责签名,CA公钥负责验证)
3、服务器获取到这个已经含有数字签名并带有公钥的证书,将该证书发送给客户端。当客户端收到该公钥数字证书后,会验证其有效性。大部分客户端都会预装CA机构的公钥,也就是CA公钥。客户端使用CA公钥对数字证书上的签名进行验证,这个验证的过程就是使用CA公钥对CA私钥加密的内容进行解密,将解密后的内容与服务端的Public Key所生成的Hash值进行匹配,如果匹配成功,则说明该证书就是相应的服务端发过来的。否则就是非法证书。
4、验证完服务端公钥的合法性后,就可以使用该公钥进行加密通信了。
下方这个截图就是苹果的根证书的一些信息,从下方可以看出,CA证书内容中包括加密算法,公共密钥以及数字签名。
下方就是公钥以及数字签名的具体内容,当对下方公共密钥进行验证时,需要使用内置的CA公钥将数字签名进行解密。然后将解密后的内容,与公钥生成的Hash值进行比较,如果匹配成功,那么该证书就是CA机构颁布的合法证书。