什么是完美前向保密(PFS)?
完美前向保密(PFS),也称为前向保密,是一种加密风格,以在客户端和服务器之间生成临时私钥交换而闻名。对于用户发起的每个单独会话,都会生成一个唯一的会话密钥。如果标识证书或其中一个会话密钥被泄露,任何其他会话的数据都不会受到影响。因此,过去的会话及其中的信息受到保护,免受任何未来攻击。
没有完美前向保密时,当用户与客户端发起通信会话时,整个对话基于端点的特殊密钥进行加密。然而,端点使用相同的特殊密钥为其所有会话生成加密,如果密钥被泄露,端点曾经进行过的每次通信中的所有信息也会被泄露。
有了完美前向保密,每个通信会话都会生成一个唯一的加密密钥,该密钥与特殊密钥分开,并且仅在会话期间有效。因此,如果攻击者泄露了用户的特殊密钥,通信仍将保持加密和安全。同样,如果攻击者泄露了唯一的加密密钥,只有该特定会话会被泄露。
PFS保护网络传输层上的数据,已成为开发人员将其实现到致力于用户隐私的消息服务或网站的安全标准。应用此功能的工具可以频繁更改加密密钥,例如每条短信、电话呼叫或页面刷新。互联网工程任务组已发布传输层安全标准,要求所有TLS会话必须使用完美前向保密。
为什么完美前向保密很重要?
前向保密有助于防止“记录现在,解密后来”攻击。最佳实践是假设所有通过公共网络的流量都被记录,包括通过互联网或无线传输的任何内容。没有前向保密,每个与特定端点之间的消息可能都由相同的秘密密钥保护。如果该秘密密钥被攻击者获取,无论是通过黑客攻击端点还是泄露密钥,所有记录的过去消息都将很容易解密。
有了前向保密,每条消息都由不同的密钥保护。这意味着,如果在初始交换中使用的长期证书或密钥被窃取或破解,它不会泄露任何消息内容。如果特定消息的会话密钥被破解,它只会泄露该消息的内容,而不是任何其他消息。
完美前向保密如何工作?
PFS涉及几个步骤,通常包括握手和会话密钥交换。
- 握手或认证:一个端点联系另一个端点。为了确认其身份,使用长期秘密。这可能是预共享密钥、密码或公钥证书。此初始交换仅用于认证,尽管它可以提供加密,但通过此通道的通信不被视为安全。
- 会话密钥交换:两个端点使用一种方法生成共享秘密或会话密钥,而不传输它。这通常通过密钥交换算法(如Diffie-Hellman或Rivest-Shamir-Adleman)完成。此共享秘密用于加密单个消息。
- 重复密钥交换:密钥交换为每条新消息重复进行。在某些系统中,一次生成多个消息的密钥,以避免需要活跃的来回通信。
Heartbleed 和完美前向保密
完美前向保密在2012年开始影响OpenSSL的Heartbleed漏洞发现后变得更加引人关注。该漏洞源于TLS协议心跳扩展使用中的输入验证不足。
Heartbleed被称为缓冲区过度读取漏洞。它使用户能够读取超出允许范围的数据,泄露整个信息链,最多达64千字节。攻击者可能滥用Heartbleed漏洞从服务器读取私有内存,如果该私有内存包含秘密密钥,他们将能够解密该服务器的所有安全流量。
尽管Heartbleed自2014年以来已公开披露,但它证明了OpenSSL攻击的简单性,并引发了关于临时密钥交换方法的讨论。通过添加前向保密,所有过去的流量可以被认为是安全的。
完美前向保密的应用
自其诞生以来,完美前向保密已被信息提供者广泛采用,并被视为关键安全功能。Signal,一种用于端到端加密的消息协议,见于WhatsApp、Google Allo messenger和Facebook对话中,普及了PFS。被称为“双棘轮”系统,Signal协议为每条消息创建新的加密密钥,提供前向和后向安全性。最近,它还引入了一项功能,使消息能够自毁。
2011年,Google默认向Gmail、Google Docs和加密搜索用户提供完美前向保密。X(前身为Twitter)自2013年起向所有用户提供完美前向保密。2016年,Apple宣布对所有iOS应用实施新的强制协议,要求使用App Transport Security,这是一种使用完美前向保密的安全功能。
Wi-Fi中的前向保密
完美前向保密是最新Wi-Fi安全标准Wi-Fi Protected Access 3(WPA3)的强制功能。在早期版本的消费者WPA中,它不是功能,因此所有流量都可以由任何拥有共享秘密的人解密。这使得攻击者能够记录网络上的所有无线流量并存储以供离线攻击。任何拥有Wi-Fi密码的攻击者都能够读取所有无线流量。
无线网络标准,比较最新的WPA3与之前的WPA和WEP迭代。
这是公共Wi-Fi被认为极不安全的原因之一。例如,在咖啡店使用WPA或WPA2的共享Wi-Fi密码的任何人都可以读取任何设备与路由器之间传输的所有数据。
随着无线网络的发展,保护它们的协议已显著演进。了解无线LAN安全标准以及如何清楚区分WEP、WPA、WPA2和WPA3之间的差异。