加密传输的一些知识点

提供端到端的加密方案有:

  • 网络层加密
  • 传输层加密
  • 应用层加密

在网络安全加密方案的比较中,最安全的方案一定是暴露用户信息最少的,换句话说:加密的越多,越安全!

所以对底层的网络层加密最安全,最山梗的应用加密层加密最不安全。

网络层加密(IPsec)加密了除IP之外的所有层,包括TCP/UDP及以上,加密用户信息最多。

传输层加密(TLS)加密了除IP/TCP/UDP之外,所有应用层数据,包括 HTTP/FTP/SMTP,加密内容次之

应用层加密,只是加密应用层里敏感的信息,如密码,以及其它需要加密保护的内容,那IP/TCP/HTTP内容都明文暴露在外,加密内容最少。

毫无疑问网络层加密是最安全的,但是IPsec需要预先配置,甚至安装客户端软件,严重影响了它的普及层度。

而基于TLS的安全加密如https,几乎不需要任何预先配置。只要浏览器拥有Root CA证书,或者二级RA签发证书,然后加密是自动进行的,无需用户任何干预。

IPsecTLS的认证加密由一下组成:

1.认证对端合法性(Authentication)

  • Pre-shared Password
  • PKI

2.密钥交换算法(Key Exchange)

  • RSA
  • ECDH

3.加密算法(Encryption)

  • AES
  • 3DES

4.MAC校验算法(Integrity)

  • MD5
  • SHA-1

5.放重放共计(Anti-Replay)

  • 一般使用序列号(Sequence Number)来杜绝重放攻击

虽然上面的方案已趋近于完美,但还是存在最薄弱的环节,认证对方合法性(中间人欺骗)。

如果客户端和服务端都是私有实现的,比如说统一公司开发的后端和前端APP,可以使用下面方案解决。

使用预共享秘钥生成 敏感数据加密 + MAC,将数据HTTP封装,然后由TLS加密,这样即使中间人欺骗,也无法解密应用层加密数据。

参考:https://www.zhihu.com/question/52790301