查看原文
其他

案例丨Meta如何提高密码安全性并保护用户隐私

Hao Chen 开放隐私计算 2024-01-09



Meta 正在开发新的隐私增强技术 (PET),用更少的数据进行创新和解决问题。这些技术使团队能够以可验证并保护用户数据的方式构建和推出隐私增强型产品。
使用最先进的加密技术,Meta开发了私有数据查找,允许用户在隐私保护的条件下查询服务器端数据集。PDL基于一种称为隐私集合求交的安全多方计算机制,其中持有集合的两方可以计算两个集合的交集,而无需向对方透露其集合。通过PDL进一步确保只有一方(即Meta用户)可以看到结果,从而使Meta无法得知交集的结果,增强了用户数据的隐私性。
Meta使用PDL来实现数据最小化,并首先在Meta的新平台Enterprise Center中支持第一方密码,以实现外部合作伙伴与Meta之间的协作。通过PDL,Meta鼓励使用更强的密码,同时最大限度地减少在密码预检查过程中向服务器泄露的信息。
对于大多数用户来说,创建密码是身份验证周期的第一步。因此,在此步骤中识别弱密码比检查已使用的弱密码提供了更强的安全立场。虽然传统的密码指南包含一系列最佳实践,但满足这些要求的良好密码仍然可能因违规而泄露。因此,主动检查受损密码补充了密码强度准则,并帮助用户选择强大、安全的密码。
具体来说,PDL支持Enterprise Center的密码创建流程中的违规密码检查功能,包括帐户创建和密码重置。现在,如果Enterprise Center用户尝试使用之前在第三方(例如 FlashPoint.io、HoldSecurity.com)收集的数据泄露中暴露的密码,他们会收到警报。传统的服务器端密码哈希检查会向服务器透露所有用户的密码创建尝试,与此相比,PDL 有助于以保护隐私的方式发送警报,换句话说,无需向Meta Enterprise Center 透露密码的内容。用户尝试过的操作,以及密码之前是否已暴露。目标是将企业中心收集的最终信息最小化为用户选择的强密码。


PDL 如何支持隐私保护下的密码预检查
根据已知在第三方数据泄露中暴露的一组密码检查用户输入的密码的挑战属于应用密码学领域,称为“隐私集合求交”。它允许双方各自持有一组敏感数据(在本例中为密码),计算各方数据集中共有的项目,而无需任何一方向另一方透露其数据集的内容。PDL提供了Private Set Intersection的功能,其设计灵感来自于由托马斯等人撰写的研究论文。与以前的工作的一个区别是,Meta检查密码是否出现在漏洞中的任何位置,而以前的解决方案仅当特定(用户名,密码)对出现在漏洞中时才向用户发出警报。Meta以这种方式设计解决方案,因为它与高度敏感帐户的有针对性的攻击场景更相关:对于此类攻击,恶意行为者可能会结合目标的用户名使用违规中的所有密码。例如,如果与特定用户名关联的强密码出现泄露,那么所有用户也应避免使用该密码。

初步实施
Meta通过PDL进行的密码预检查工作流程的简化版本中,当发出请求时,客户端计算其密码p的哈希H(p) ,然后使用为每个请求随机生成的密钥a对哈希输出进行盲化。之后,客户端将这个盲散列值发送到Meta的服务。
收到请求后,Meta Enterprise Center 中的密码预检查服务将首先使用长期密钥b对客户端的请求进行盲处理。结果值是来自客户端的原始密码的双盲哈希。然后,服务器将对泄露的密码数据集中的所有密码应用相同的哈希算法和密钥b的致盲操作。这将产生盲哈希值列表,服务器发回双盲查询和单盲哈希值列表。
收到响应后,客户端应用其秘密密钥a来对双盲哈希进行解密,从而产生仅由服务的秘密密钥b进行盲化的哈希值。现在,客户端能够与盲化哈希值列表进行匹配。如果客户端的密码p与泄露的密码匹配,那么将会有一个匹配的盲散列值。
在此实现中,用户数据的隐私得到了很好的保护,因为用户的密码是通过用户的一次性密钥进行单向散列和加密的,不会向服务泄露任何信息。此外,服务不会了解匹配结果,因为匹配完全发生在客户端本地。
人们可能已经注意到,这个初始版本存在几个问题。首先,在运行时对泄露的密码数据集中的每个密码进行散列和致盲会导致服务器端出现大量延迟。其次,就延迟和带宽使用而言,客户端下载泄露密码的所有盲散列值是不切实际的,因为可能有数百万个密码。

性能优化
确定默认实现会对用户体验产生不利影响,因为处理时间和需要在客户端和服务器之间传输的数据量增加。为了应对这一挑战,采用了以下优化:
  1. 将受损密码数据预处理为盲哈希值为了避免在运行时执行昂贵的加密操作并提高性能,受损的密码数据集被预处理为可以直接回复客户端的格式。

  2. 对泄露的密码数据集进行分片。让客户端从密码散列的前几个字节生成一个小的分片索引,而不是返回整个泄露的密码数据集的盲散列值。增加的泄漏和隐私风险可以忽略不计,因为数百万个密码可能共享相同的索引,并且仔细选择索引大小以平衡隐私和性能。现在,索引使服务器能够返回数据集的较小子集以响应盲化哈希值。

  3. 服务回复的盲散列值的压缩。为了减少服务响应的带宽开销,将每个盲哈希值截断为较小的大小,同时保留其匹配的唯一性。


用户体验
隐私保护密码预检查成功的基础在于能够以对用户透明的方式执行检查,从而避免对用户体验造成任何干扰。
隐私保护密码预检查的整个工作流程包括以下步骤:
  1. 用户在帐户创建或密码重置期间输入新密码。

  2. 如果密码检查通过本地要求(例如最小长度要求),则将其发送到客户端库以进行私人密码预检查。

  3. 客户端库生成 PDL 请求,将其发送到服务器并获取 PDL 响应。

  4. 客户端库会进行本地匹配;如果找到匹配项,用户会在页面上收到警报,建议使用更强的密码。

以下序列图演示了工作流程:

通过 PDL 提供更多隐私价值
展望未来,PDL 有几个有趣的扩展和潜在的应用程序,可以进一步减少数据收集工作。下面简要提及其中一些。
  • 除了密码之外,PDL 还可用于从客户端查找其他信息,例如导致私人联系人发现的服务上的用户联系人。

  • PDL 可应用于希望检测应用程序内的恶意内容和下载而不向服务器泄露内容的系统。

  • PDL 可以扩展以支持键值查找。

PDL 还可以与其他隐私增强技术相结合,以优化隐私和效率之间的权衡。例如,PDL 还可以与匿名凭证服务 (ACS)一起使用,以额外隐藏客户端的身份,从而提高隐私性并在设计分片时提供更大的灵活性。
作者:Hao Chen, Zhiyi Zhang, Haozhi Xiong, Ananth Raghunathan
文章来源:https://engineering.fb.com/2023/08/08/security/how-meta-is-improving-password-security-and-preserving-privacy/

END

热门文章:




隐私计算头条周刊(08.14-08.20)


招标 | 近期隐私计算项目招标中标42(广西电网公司、云南农业职业技术学院、中国电信)


2023全球各国隐私计算发展最新动态盘点


社区招募丨OpenMPC隐私计算课程课代表征集


加入我们丨OpenMPC社区招募实习生

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存