加密技术是为了保护敏感数据在网络传输中的安全,就像日常生活中使用的淘宝、支付宝、微信等等软件,如果涉及到金额的数据在网络中不加密传输,那是极易被别人窃取、篡改的,通信中的数据加密技术就显得尤为重要。各类加密工具的原理都是大同小异,这里对常见加密原理进行解读。
一、对称加密
加密数据与解密数据使用相同的密钥,这种加密方法称为对称加密
- 特点
- 加密与解密使用相同密钥,加密解密速度快
- 将原始数据进行切块,逐个进行加密。
- 缺点
- 每一个通信的对象都有一把密钥,如果通信对象过多导致密钥过多。
- 密钥分发问题,如何保证密钥不被窃取
二、非对称加密
加密数据与解密数据使用一堆不相同的密钥,公钥公开给所有人,私钥自己保存。使用公钥加密的数据只有自己的私钥可以解开。
- 特点
- 用公钥加密数据,只能使用配对的私钥进行解密。
- 用私钥加密的数据,只能使用配对的私钥进行解密
- 缺点
- 加密解密速度慢、时间长,不适用于对大数据进行加密解密。
三、单项散列
单项散列又称为hash算法,把任意长度的数据、字符加密后得到一个固定长度的特征码。
-
特点
- 加密后输出的特征码长度固定
- 加密后的特征码只跟数据内容有关,与数据名称无关
- 可以用作数据的指纹
- 得到数据的特征码无法推算出原数据的内容
-
缺点
- 相同内容的文件加密后的结果相同
- 通常随数据一同发出,极易被窃取
四、加密通信的综合应用
以上三种如果单独使用任何一种对数据进行数据加密的话都是不安全的,那么现在在互联网中的数据时如何传输的呢?其实数据在互联网中并不会使用单一加密技术,往往都是各类技术混合使用,互补优缺点使数据的传输更加安全。
- 首先通过TCP三次握手进行连接,然后客户端发送hello包到服务端,服务端回应一个hello包,如果客户端需要再次发送数字证书, 则发送数字证书到客户端。
- 客户端得到服务器的证书后通过CA服务验证真伪、验证证书的主体与访问的主体是否一致,验证证书是否在吊销证书列表中。如果全部通过验证则与服务器端进行加密算法的协商。
- 然后是用证书中服务器的公钥加密【对称秘钥】发送给服务器端,【对称秘钥】只能用服务器的私钥进行解密,当服务器通过私钥解密【对称秘钥】后。使用对称秘钥将客户端请求的数据发送到客户端,客户端在用对称秘钥进行解密,从而得到想要的数据。
注:对称秘钥非长期有效,每隔一段时间甚至每一次数据的传输都使用不同的对称秘钥。