HTTPS

189 阅读4分钟

早些年,我们的网络通信一直都是使用的HTTP协议,HTTP其他的方面都很好,但是有个最大的缺点就是在HTTP上的通信是明文的,这简直就是信息在网络上裸奔啊,这是很不安全的,特别是涉及到隐私等信息的传输,一不小心就会被不怀好意的人给窃取过去。为了阻断这种被“偷窥”的感觉,这时就需要一个加密协议来对我们的信息进行加密,HTTPS应运而生,但产生的过程也不是一蹴而就的。下面来看看产生的过程吧...

第一阶段:当然最容易想到的就是对称加密协议,通信双方A,B共同拥有一个密钥,A发送信息给B时,用加密算法对信息进行加密,发送给B,B再通过密钥来解密信息,通信的一开始,通信双方中的一方先产生一个密钥,然后再发送给对方,进而之后都是用这个密钥。但仔细想想,这样做有什么问题呢?对,还是存在不安全的问题——密钥的传输。在双方没有密钥之前还是使用明文传输密钥,万一密钥被截取了呢?这样后面所有的通信等于还是明文传输。所以依旧不安全。

第二阶段:RSA是一种非对称加密算法,它有一对密钥,公钥和私钥(用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密)。我们用这种方法来对信息加密。A,B双方都事先产生一对密钥(公钥加私钥),然后交换公钥,因为公钥谁都可以知道,所以不需要加密传输。之后再A想要给B发信息的时候,A通过B传过来的公钥加密信息传给B,B通过对应的私钥来解密数据。看似数据传输的安全问题解决了,但也带来了一个新的问题——性能。对称加密算法要比非对称加密算法速度快百倍,如果只是对信息加密的话,这样的消耗是没必要的。

第三阶段:可以结合对称加密和非对称加密,即使用非对称加密的方式安全的传输对称加密的密钥,之后用对称加密来进行信息的发送。这样好像就即考虑到了安全的问题,也考虑到了性能问题。好棒!

第四阶段:往往危险都是隐藏的很深的,第二阶段的时候我们提到了一句话:看似数据安全的安全问题解决了。为什么要用“看似”,因为危险无处不在,要实现一个完全安全的传输协议不是那么容易的,比如说:如果当一开始A,B互相传输公钥的时候,一个中间人劫持了你们的公钥,并且把他自己生成的公钥分别发给你们,那这样不是很危险?不经吓出冷汗!那怎么样才算真正意义上的安全呢?

第五阶段:通过现实中“公证处”的启发,我们也可以在网络中建立这么一个具有公信力的认证中心,它会给每个人办法一个证书,用来证明每个人的身份。当然证书的发放也要是一个安全的方式,我们可以采用数字证书的方式:1)A把他的公钥和个人信息通过一种Hash算法生成一个消息摘要(可以看成一串不会重复的字符串);2)然后让认证中心(CA)用它的私钥对消息摘要加密,形成数字签名;3)再把原始信息(A的公钥和个人信息)和数字签名合并新城一个新的东西叫:数字证书。所以经过这样的步骤后,B收到A发来的数字证书后,对原始信息部分进行Hash加密成摘要信息1,对数字签名用CA的公钥解密成摘要信息2,对比摘要信息1,2,看他们是否相同,相同则没有人篡改,这样就可以安全的拿到对方的公钥了。