主旨是两个人要想安全的传输内容,首先会选择用对称加密算法来加密内容(因为非对称加密算法耗时长,不适合频繁传输内容),但对称加密所用到的密钥X需要保证可以安全的传输给对方。
于是这个密钥X的传输,就需要用到非对称加密的方式(因为只需要传一次密钥X,耗时长便是可以接受的),非对称加密的用法是A想给B发这个密钥X,首先B要维护一套私钥n和公钥m,A就需要用B的公钥m来加密这个X,传输到B之后,B就用自己的私钥n来解密获得X以到达前面所要求的目的。
此时如果有第三方C劫持了公钥m加密后的X,也没有用,因为解密用的n只有B自己拥有。
但第三方C可以进行中间人攻击,也就是当A想获取B的公钥m时,C有机会用C自己的公钥cm去替换掉m(可能因为A获取m的途径出了问题或请求遭到拦截等等)于是A就不经意间拿到了cm却以为是m,A用cm去加密X,再发给B的时候,C进行拦截并用C自己私钥解密即可获得X,破解了安全的传输。
那么问题变成,A如何安全的获取到B的正确公钥m(不能被篡改)。
于是引入了数字证书的方式,每个电脑操作系统出厂自带ca机构的证书(所以盗版系统会有安全问题),B可以把自己的公钥m放到ca机构,也就是申请成为一个证书打包进去,拿到这个证书就可以解出B的公钥m,此时A就可以到ca机构正规途径去下载B申请的证书,用A本机的ca证书去解密出B的公钥。证书的加密是ca机构来做,解密是A本机ca证书来做所以可以验证是否被篡改,于是可以阻挡中间人攻击,这样就可以完成上述的任务,达到安全传输的目的。
还有个疑问没了解清楚:C为什么不能从ca机构下载到b的证书并用C本机的ca证书去解出b的公钥m?后来反应过来,C是可以这种方式获取到m,但是前面已经说了C的攻击是需要篡改m发给A让A拿到错误的公钥cm,数字证书机制已经可以防篡改了就保证了安全性,C光拿到m没有用,本来m也是公钥,公开的。