与Linda一起100天写作

Day8-密码学小白文

2017-03-11  本文已影响35人  小红鱼

互联网本没有安全问题,自从有了研究安全的人,互联网就变得不安全了。今天就聊一下密码学。先申明我是小白,所以不确定写出来的东西完全正确,如有错误,请大神更正。

众所周知,web使用http协议通信。但是http协议本身并不安全,因为它通信使用明文(不加密),内容很可能被窃听,就像这样:

聪明如你,肯定马上想到,加密不就好啦。所谓加密就是把明文,通过一定的加密算法,转换成不可读的密文。而这个加密算法会用到一个参数,这个参数叫做密钥。现代密码学中,加密算法是公开的,而密钥却是保密的。

1. 共享密钥加密

加密和解密使用同一个密钥的方式叫做共享密钥加密,也叫做对称密钥加密。

采用共享密钥加密,必须把密钥也传给对方,对方才能解密。可问题是怎样才能把密钥安全的传给对方?如果密钥被攻击者中途窃取,那攻击者也能解密。何况你都能把密钥安全传给对方了,那数据本身也就能安全传达。你可能会问既然这么坑为什么还要用这种加密方式,我们后面再解答。

2.公开密钥加密

公开密钥加密使用一对不对称的密钥,一把叫私有密钥,一把叫公开密钥。私有密钥自己留着,不让别人知道。公开密钥可以随意发布,任何人都可以获得。发送方使用对方的公开密钥加密,对方收到密文后,使用自己的私有密钥解密。这样攻击者即使截获了密文,因为没有私有密钥也没有办法解密。

3.混合加密

我们都知道http是不安全的,但是https是安全的,其中一个原因是它采用了加密的机制,而且是共享密钥和公开密钥两者并用的混合加密机制。为什么要混合加密呢?因为公开密钥加密与共享密钥加密相比,处理速度要慢得多。

简单说就是首先使用第二种加密方式安全的传送第一种方式需要的密钥,然后再使用第一种方式加密进行通信。

4.数字证书

你以为公开密钥就安全了么?怎么证明公开的密钥就是原本服务器发布的那个密钥?万一被攻击者篡改了公开密钥呢?为了解决这个问题,可以使用一个客户端和服务器都信赖的第三方机构来给真正的公开密钥颁布证书,而且要保证真正的密钥安全地转交给客户端。因此,多数浏览器都会在内部事先植入常用的认证机构的公开密钥。

你以为使用证书就一定安全了么?事实上曾经发生过数字证书认证机构被黑的事件,攻击者颁布了大量的伪造证书。所以记住这句话,没有一个系统是安全的。

周末愉快!

上一篇 下一篇

猜你喜欢

热点阅读