目录
一、混合密码系统
二、证书
一、混合密码系统
因为对称加密有密钥传输问题,所以我们可以取而代之使用非对称加密,但是非对称加密又计算量大、速度慢,所以我们也经常使用对称加密 + 非对称加密这样的混合密码系统,即使用对称加密来加密数据,使用非对称加密来传输对称加密的密钥,这样就结合了两者的优点,既加密计算量小、速度快,又没有密钥传输问题。
但是混合密码系统也并非没有问题,它面临的问题就是中间人攻击,所谓中间人攻击本质上来说其实是非对称加密公钥可能被篡改的问题,也就是说消息发送者根本就不知道他收到的公钥到底真得是消息接收者的公钥还是攻击者的公钥。下面是一个中间人攻击的一个例子:
二、证书
那怎么解决混合密码系统面临的中间人攻击问题呢?即怎么解决非对称加密公钥可能被篡改的问题呢?一谈到防止被篡改,我们第一个想到的东西就是数字签名。没错,但是如果我们自己给公钥做数字签名的话,无论消息接收者用消息摘要算法做数字签名还是用非对称加密做数字签名,依然会面临中间人攻击问题——我们自己做的数字签名本身都可能被篡改。所以我们得让权威机构帮我们给公钥做数字签名,这个权威机构就是证书中心CA(Certificate Authority),我们只需要把公钥发给CA,CA就会用他们的CA私钥对我们的公钥加密生成数字签名,然后把我们的公钥和公钥的数字签名打包生成一个文件——证书,消息接收者会持有这个证书,同时CA公钥是公开的,所以消息发送者会持有CA公钥(浏览器和操作系统已经内置了各大CA公钥,不需要传输,所以这个地方可以避免中间人攻击CA公钥)。这样消息接收者只需要把证书发送给消息发送者,消息发送者就可以使用CA公钥对证书里的数字签名解密——这一步就可以验证CA的身份、即确定证书到底是不是CA的证书,然后会拿着解密后的内容跟证书里的公钥做对比,如果一致,则保留公钥——这就是消息接收者的公钥。接下来就可以继续做混合密码系统要做的事情了,也就解决了中间人攻击问题。
网友评论