现在越来越多的软件支持端到端加密,服务器和第三方即使获取所有网络流量,也无法查看具体数据内容,从数学和工程上提供安全性。
其中一个最简单的实现就是非对称加密。双方都持有私钥,公布公钥。发送者使用自己的私钥和对方的公钥加密,接收者使用对方的公钥和自己的私钥解密。
但在实际操作中还有很多其它考虑因素:
- 如果密钥泄露,历史消息能否被泄露(前向安全)。
- 其中接收者登录了多个设备,如何在多个终端上阅读同时确保安全性。
- 是否支持群聊。
- 支持离线消息等等。
为此,端到端通讯里涉及了一系列的加密概念。
1、forward sececy 前向安全
前向安全是指只要通讯当时的密钥没有全部泄露,只有当前的密钥泄露,历史消息仍然安全。
比如如果总是使用同一公钥密钥进行通信,一旦密钥泄露,历史消息将被一览无遗,这就不符合前向安全。
因此要想实现前向安全,通信是密钥必须要不断更换。一个最简单的方法是每次都生成新的私钥和公钥。
2、Post-Compromise security / Future Secrecy / 后向安全
后向安全是指,如果即使密钥遭到泄露,也只能使用一段时间。如果没有持续泄露,很快泄露的密钥将无法解密新的消息。
3、MAC
全称 Message Authentication Code ,就是用于生成摘要,验证消息完整性以及源身份。一个典型是HMAC。
【未完待续】
Q. E. D.