如何安全的传输你的密码
想要安全的传输,最重要的也是唯一的解决方案就是加密。通用意义上的加密技术分为哈希散列,对称加密和非对称加密三种
哈希散列(MD5)
- 哈希散列并不能算是严格意义上的加密技术,因此我把它称为通用意义上的加密技术,哈希散列的通用定义是:通过一些不可逆的哈希算法将原本的明文内容转化为散列后的密文内容。 由于散列算法几乎不可逆,因此攻击者几乎无法通过密文猜测到对应的明文内容
- 缺点:特别容易破解弱口令
对称加密(AES、DES)
- 通信双方约定一个一样的对称加密密钥,在传输前客户端使用密钥加密好后传输给服务端,服务端通过密钥解密后拿到明文,由于密钥的不同导致即便是弱口令攻击者也根本无法做对应的暴力破解手段
- 缺点:客户端的密钥在浏览器上很容易被发现,所以只适用于服务端与服务端之间的交互
非对称加密(RSA)
- 通过数学方式生成“公钥”,“私钥”对,整个服务通信过程如下
- 客户端在连接建立之初就获取到服务端的公钥
- 客户端要传输数据前使用公钥加密传输内容
- 服务端获取加密后的数据并用自己的私钥解密获取传输内容
- 由于公钥是公共的,所有地方都可以被拿到使用,私钥是绝密的,只能被服务端保密持有。依靠这种简单的方式就完成密钥的安全管理和通信
优化
- 非对称加密完美的解决了通信的安全问题,但实际公钥私钥长度非常长,面对高并发的请求使用这种方式会导致速度缓慢
- 答:使用非对称加密的公钥和私钥首先传递对称加密的密钥,之后使用对称加密进行传输,可以提高通信两端的处理性能