互联网上的任何角落都存在通信内容被窃听的风险,明文通信更加剧了这一风险。

加解密方式

1. 通信的加密

由于HTTP协议本身没有加密机制,但是可以通过和SSL或TLS的组合使用,加密HTTP的通信内容,这种组合被称为HTTPS

2. 内容的加密

既然HTTP没有加密机制,那么对HTTP通信报文内容加密(报文首部和整个报文是不加密的)也是可行的,要实现内容加密的前提是客户端和服务器同时具备加密和解密机制。

加解密类型

1. 相互交换密钥的公开密钥加密技术(对称加密)

该加密方法中加密算法是公开的,而密钥是保密的,加解密都需要密钥,没有密钥就无法解密。反过来说,任何人只要持有了密钥就能解密了,如果密钥被攻击者获得,那么加密就失去了意义。


以共享密钥方式加密时必须将密钥也发送给对方,考虑到发送密钥也有被窃听的风险,不发送对方就无法完成解密工作。再说了,如果密钥都能安全发送,那么数据也一定能安全发送了。那么问题来了,该如何解决这个棘手的问题呢?

2. 使用两把密钥的公开密钥加密技术(非对称加密)

顾名思义,该加密算法中有两把私有密钥,两把公有密钥,其中客户端和服务端各生成一对密钥(公开密钥+私有密钥),私有密钥只有自己知道,公开密钥则任何人都可以获得。

使用该加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,在使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心私有密钥被攻击者窃听而盗走。(本文没有涉及到公开密钥真实性也就是公开密钥证书的相关知识)

3.Hash加密算法(散列算法)

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

如何选择加密类型

散列算法是不可逆的,只有加密过程没有解密过程,并不适用于网络通信,适用于信息验证类的场景。

非对称加密安全性相比对称加密高出很多,但是在性能上却不如对称加密算法,在实际的操作过程中,我们通常使用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。