前后端数据交互加密

在前后端分离的项目中,往往需要传输一些敏感的信息,例如密码、金额等,签名验签算法只能保证数据不被篡改,但是却无法对数据进行保密,如果用户输入的密码明文传输,就会被网络中的节点截获,虽然大部分网络运营商并不会去截取网络传输的内容,但是不能排除用户连接的WiFi网络是不是钓鱼网络,所以在传输敏感信息的时候需要加密,本文就讨论如何安全的让客户端和服务器交换秘钥。

AES+RSA

简单介绍一下AES和RSA

  • AES对称加解密,加密解密使用同一个秘钥
  • RSA非对称加解密,使用公钥加密数据,只有对应的私钥才能解密,加密方和解密方各自保存秘钥对中的一个。

为什么前后端交互要结合AES和RSA

  1. 如果只用AES
    前端要加密数据,就需要保存秘钥,我们知道保存在前端的东西都不是秘密,秘钥泄露后,拿到秘钥和加密后的数据,就可以解密,加密毫无意义。
  2. 如果只用RSA
    前端只保存秘钥对中的一个,即使泄露,也无法解密数据,解决了AES的问题。但是RSA效率低,每次交互都进行加解密,对性能影响较大。

结合使用:AES加密数据,RSA加密秘钥AES秘钥动态生成,避免了前端保存秘钥导致泄露的可能,RSA秘钥加密,保证秘钥传输过程的安全。最终提交到后端的数据是:AES加密后的数据 + RSA加密后的秘钥

图例


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!