① 当服务器传给浏览器公钥A的时候,中间方劫持公钥A,并生成需要的公钥C通报给浏览器。
② 当浏览器传给服务器公钥B的时候,中间方挟持公钥B,并生成需要的公钥D通报给服务器。
③ 当浏览器发送请求时,则会使用前面得到的公钥C举行加密,此时中间方则使用已经生成好的私钥C解密,此时数据已经泄露,然后再使用劫持的公钥A重新加密数据并转发至服务器,此时数据已经被篡改
④ 相反服务器相应浏览器时也会有③步骤一样的问题。
这里问题的根源在于,服务器给浏览器公钥的时候,浏览器无法得知当前拿到的公钥是否为正确的,是否没有被篡改过?那么此时是否可以再将传输的公钥举行加密?如果如许做,就会造成一个循环了,无论怎样都会有一个关键密钥处于明文传输过程中。
数字证书和数字签名