如果说现实世界的信任基于情感,那么互联网世界的信任基于数学。互联网世界的一大特点是参与信息交互的双方在地理上是隔离的,于是信任成了一个非常重要的问题,而密码学里的加密算法正好可以解决互联网世界里的信任问题。
什么是对称加密算法?
对称加密算法是指加密和解密都用同一个密钥,它的优点是加解密性能好,缺点是密钥的分发困难,很难保证密钥在传输过程中不被泄露。典型算法有:DES, AES等。
什么是非对称加密算法?
顾名思义,非对称加密算法的加解密密钥不一样,且成对出现(公钥和私钥),它的好处是密钥分发简单,公钥可以公开,但缺点是加解密性能比较差。典型算法有:RSA,ECC等。
加密算法(HTTPS)如何保证信息传输安全且高效?
对称加密算法可以保证高效,但无法保证安全;而非对称加密算法正好相反,可以保证安全但效率低下。那么有没有一种方案既可以保证信息传输安全且高效呢(鱼和熊掌都要)?有的,聪明的计算机学家发明了如下的信息加密传输方案:
具体过程如下:
1.信息发送方A用对称密钥(会话密钥,一般为了安全都是临时生成)对原文加密;
2.信息发送方A用信息接收方B的公钥对上述的会话密钥加密;
3.信息接收方B用自己的私钥解密获得会话密钥;
4.信息接收方B用会话密钥对原文进行解密。
上面的方案为什么可以做到安全且高效呢?说它高效是因为原文是用对称加密算法,说它安全是因为用非对称加密算法传输临时的会话密钥,正好结合了两者的优点,所以这种方案广泛用于互联网的https的加密传输。
HTTPS可能被劫持吗?
上文阐述了HTTPS是安全且高效的,那有没有HTTPS被劫持的情况呢?比如你在浏览某些网站的时候,明明是https加密的网站,为什么浏览器经常会提醒「您的连接不上私密连接」呢?如下图所示:
这是因为HTTPS存在中间人攻击的隐患。回到上图的例子,信息发送者A用B的公钥加密会话密钥,这里会存在一个信任问题,在网络中A怎么知道这个公钥一定是B的呢?这就好比经常听到的一种诈骗案件,骗子假装是公司老板在QQ上诱导财务把款汇到骗子账户上。
在现实生活中,我们打个电话和对方确认下就可以了,但在互联网上,如何证明B就是B呢?这就需要数字证书和CA了。
数字证书和CA(认证中心)
数字证书(Digital Certificate),是由CA(认证中心)签发的,包含公钥及其拥有者真实信息。数字证书就是网络身份证,证明张三是张三,现实世界里我们的身份证由公安局签发,而网络世界里网站的身份(即数字证书)由CA认证中心签发。
上面是一张淘宝网的数字证书,签发者就是CA认证中心(GlobalSign),下面是阿里巴巴公司信息,也就是说GlobalSign证明这个数字证书是阿里巴巴公司的。所以这个CA认证中心很重要,它是一个中心化的信任中心,一旦它出现信任危机,就会动摇整个互联网信任基础。前一段时间出现一个事件,由于赛门铁克出于经济利益,滥发数字证书,导致各大浏览器(Chrome, Firefox)联合抵制赛门铁克的证书,理由是它给整个互联网带来了信任危机。
主要加密算法对比
未完待续,关注我的公众号可获取后续文章: