AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

Meta 如何实现大规模无身份信息认证?

  • 2022-06-30
  • 本文字数:3796 字

    阅读完需:约 12 分钟

Meta如何实现大规模无身份信息认证?

我们在 Meta 公司不断研发新的隐私增强技术(privacy-enhancing technologies,PET),核心原则之一是数据简约化——仅收集我们服务所需的最少量数据。我们一直在寻找方法来增强用户隐私性,以保护我们所有产品的用户数据。


以前,我们研究过用后置的处理数据方法,去除身份信息或汇总多用户数据,从而简约化数据。然而,这是一种被动的数据简约化方法,以 Meta 公司的规模,可能会非常耗费资源。当我们寻找扩展性更高的解决方案时,我们发现,可以利用“无身份信息认证(de-identified authentication)”的方法来主动消除身份信息。这样一来,我们从信息源头就可以去除身份信息。


在所有客户端-服务器交互中,身份认证对防止端点被爬取、被垃圾邮件塞满或被分布式拒绝服务攻击(DDOS)很有帮助。业内最为广泛采用的身份认证方式,是通过用户 ID 进行身份认证,服务器在提供服务或接收客户端流量之前验证客户端身份。


但我们希望通过去除用户身份信息来提高隐私标准,同时仍能保证身份认证,以保护用户数据和我们的服务。因此,我们利用工业界和学术界多年来合作设计的匿名凭据,创建了称为“匿名凭据服务(Anonymous Credential Service,ACS)”的核心服务。匿名凭据服务是一种高可用的多租户服务,它允许客户端以无身份信息的方式进行身份认证。这增强了隐私和安全性,同时还具有计算意识。匿名凭据服务是我们隐私增强技术产品组合的最新成员之一,目前正在 Meta 公司多个大流量的用例中使用。

匿名凭据如何支持无身份信息认证


在较高抽象层面上,匿名凭据将认证分为两个阶段,来支持无身份信息认证:颁发令牌和无身份信息认证。在颁发令牌阶段,客户端通过一个认证过的通道联系服务器,向服务器发送一个令牌(token)。服务器给令牌签名并将其发回客户端。然后,在无身份信息认证(或称令牌赎回)阶段,客户端使用匿名通道提交数据,并用此令牌的变异形式取代用户 ID 进行身份认证。


我们大幅简化了协议中的细微差别,签名令牌(令牌发行阶段)和赎回令牌(无身份信息认证阶段)两个阶段的数据不再能够直接关联起来,因此服务器在第二阶段对客户端进行身份认证时,无需知道令牌属于哪个特定客户端,从而保护了用户隐私。

匿名凭据协议的工作原理


让我们深入了解一下匿名凭据协议。匿名凭据基于 VOPRF(可验证不经意伪随机函数,它使客户端能够获知自定义输入的可验证伪随机函数评估)和盲签名(一种数字签名,可以防止签名者知道发送者的消息内容)创建。除了前面提到的颁发令牌阶段和无身份信息认证阶段之外,完整的工作流程还有一个设置阶段。


在设置阶段,客户端获取服务器的公钥和其他公共参数。接下来是颁布令牌阶段,客户端创建一个随机令牌并选择一个致盲因子,对令牌进行盲签名,并将盲签后的令牌发送到服务器。反过来,服务器对令牌签名并将其发回客户端。然后客户端对服务器返回的签过名的盲令牌执行非盲操作。客户端还计算 shared_secret,它本质上是原始令牌和服务器签名的函数。


请注意,直到此时,服务器都没有见过原始令牌的值。之后,在无身份信息认证阶段,客户端转发原始令牌、相关业务数据,以及带有 shared_secret 的业务数据的 HMAC(Hash message authentication codes,散列过的消息认证代码)。


然后,服务器可以通过检查这个 HMAC,来验证客户端发送的 shared_secret 与本地计算的 shared_secret 是否相同。如果此检查通过,则服务器将请求视为合法,并处理业务数据。有关该协议的详情,请参阅论文《大规模无身份信息认证遥测(De-identified authenticated telemetry at scale)》

无身份信息认证的真实用例

WhatsApp 上的无身份信息遥测


匿名凭据服务使客户端能够以无身份信息方式进行身份认证。通过匿名凭据服务去除身份认证中的用户 ID,我们可以在满足数据收集简约化目标的同时保护用户隐私。为了服务于生产用例,我们必须创建一个健壮的架构,增强面对现实世界各种问题的适应能力。


WhatsApp上的无身份信息遥测(De-Identified Telemetry,DIT)是当前利用匿名凭据服务的一个用例。以前,我们用安全存储和数据删除策略,确保日志数据不会关联具体用户。但我们希望我们的隐私保护措施更进一步,将匿名凭据服务与 WhatsApp 系统集成,以便对某些 WhatsApp 客户端日志启用无身份信息认证。


大规模部署后,无身份信息遥测使 WhatsApp 在验证日志请求时无需收集身份信息,就能报告性能指标(对确保为每个用户提供快速、无崩溃的应用程序很重要)。整个 WhatsApp 家族都在使用匿名凭据服务,这个庞大的用例需要匿名凭据服务每秒处理数十万个请求。

联合学习


我们要强调的另一个用例是联合学习,这是一种训练全局机器学习模型的技术,私有敏感数据仅保存在本地客户端设备上(不需要上传到服务器)。在这种模式中,设备与服务器共享模型更新而不是原始敏感数据,服务器计算聚合模型的更新来优化全局模型。


这是使用匿名凭据服务进一步保护用户隐私的一种潜在方法。我们不希望恶意行为者发送欺诈性的模型更新数据,但我们希望确保合法用户能够帮助改进全局模型。通过利用匿名凭据服务,我们可以确保合法客户端以无身份信息认证的方式发送客户端模型的更新信息。

匿名凭据服务架构


现在让我们深入了解匿名凭据服务架构。


匿名凭据服务是一个 C++服务,基于 Meta 公司的容器编排框架Twine开发。在全球范围对流量进行负载均衡,每个区域都根据需求动态伸缩。匿名凭据服务为颁发令牌和赎回令牌提供 Thrift API。


有一项重要需求是,在不同用例间构建围栏,隔离匿名凭据服务的令牌。为什么呢?因为我们是多租户的,服务于各种用例。不同用例可能有不同的身份认证机制(例如,脸书用户与 Instagram 用户)。应当禁止不同的用例赎回颁发给特定用例的令牌。


为了解决这个问题,我们要求每个 API 请求都声明自己的用例名称,我们使用针对具体用例的密钥来隔离用例。我们把密钥存储在 Meta 公司的“钥匙串(keychain )”服务中,并通过 Meta 公司的异步作业基础设施定期更换安全密钥。此外,我们还有另一项工作是,在密钥轮换后,发布更新的匿名凭据服务公钥,让客户端可以获取更新后的密钥。

匿名凭据服务扩展的经验教训


在扩展匿名凭据服务的过程中,我们学到了维持服务可靠性和效率的三个关键经验:防止运行匿名凭据服务的成本随着流量的增加而线性增长、避免人为的流量高峰、在不需要专家知识的情况下,推进各个用例接入服务。


随着接入服务的用例越来越多,我们注意到,对新接入的用例,必须按其流量 1:1 的比例添加主机和更多的服务器容量。鉴于最近全球服务器供应链紧张,我们研究了如何简化匿名凭据服务,使其更实用,同时仍能保持我们的高隐私标准。


我们决定允许用例在合理的阈值内重用凭据。在匿名凭据服务服务器上,我们添加了一个重用凭据计数器(由 Meta 公司的分布式键值存储ZippyDB提供支持)。该计数器将计算特定匿名凭据服务令牌被赎回的次数,如果赎回次数超过阈值,则请求失败。针对敏感的用例,还有赎回限制(即不重用令牌)。通过允许重用凭据,可以减少为特定用例颁发令牌的数量,从而节省服务器容量。


我们在扩展时遇到的另一个问题和流量尖峰有关。我们通过观察服务仪表盘,注意到匿名凭据服务的服务器在短时间内收到大量请求。这将导致服务器一时不堪重负,部分请求会失败。


我们发现,这些引起流量尖峰的请求都来自一个大型用例。在与相关的客户团队交谈后,我们了解到,他们把数据缓存在移动客户端上,然后每晚在同一时间,这些移动客户端分别把自己的数据批量发送到服务端。


尽管理论上这是个好主意,但这种模型实际上是在对我们的服务器进行分布式拒绝服务攻击(DDOS),因为突然有众多客户端同时发送了许多请求。为了解决这个特定用例的问题,我们通过添加抖动来分散请求,让它们错开发送时间。为了更普遍地解决这个问题,保护我们服务器的健康,我们与 Meta 公司流量团队合作,添加了一个全局限速器,如果匿名凭据服务流量超过某个速率阈值,限速器将选择性地丢弃这些超额流量。


我们在扩展匿名凭据服务时遇到的最后一个挑战是在工程方面。最初,我们有一个小团队,致力于推广匿名凭据服务,然后发现接入新的用例很困难。当时,接入新用例通常需要我们中的一个人与合作伙伴团队密切合作,解释匿名凭据服务的关键概念,并在我们的服务器上手动配置新的匿名凭据服务用例。


我们通过给接入匿名凭据服务的新用例创建平滑的接入体验来减轻这种合作成本。我们用 React 构建了一个自助接入匿名凭据服务的站点入口。现在,来自 Meta 公司的工程师们,可以使用该站点作为匿名凭据服务的一站式商店。


此外,我们为 Android 和 iOS 创建了匿名凭据服务客户端 SDK,以提供高质量的加密原语和协议实现。客户端可以调用高级方法,例如直接获取匿名凭据服务令牌(fetch-acs-token),不需要自己一步一步构建令牌。这些方法通过调用匿名凭据服务的 API、去盲化令牌和执行所有其他相关操作,来处理整个令牌交换协议。我们还改进了维基上的接入文档,投入资源开发了 codegen 工具。这进一步减少了客户的编码量,更容易与我们集成,让他们无需专家级的密码学知识即可使用我们的协议。


无身份信息化是保护数据和隐私的重要工具。共享和保护数据需要信任和责任感。展望未来,我们希望将匿名凭据服务进一步集成到 Meta 公司的数据基础架构中,并在身份认证用例之外的产品中用它进一步保护数据隐私。


我们希望我们的工作能够激发整个行业研发更多的隐私增强技术。


查看英文原文How Meta enables de-identified authentication at scale

2022-06-30 10:023098

评论

发布
暂无评论
发现更多内容

延迟退休,如何影响程序员?

秃头小帅oi

吊打面试官!从多维度理解架构

不在线第一只蜗牛

程序员 面试

快手自研Spark向量化引擎正式发布,性能提升200%

快手技术

spark 引擎 大数据 开源

物流数字化:低代码推进供应链数字化进程

不在线第一只蜗牛

低代码 数字化 供应链 物流

饿了么基于Flink+Paimon+StarRocks的实时湖仓探索

Apache Flink

大数据 flink 实时计算 StarRocks

AI耳机成智能硬件布局入口产品 科大讯飞无线智能耳机率先突围

科技热闻

CPP在内网穿透技术的思考

不在线第一只蜗牛

cpp

数字货币期权秒合约交易所APP开发与平台搭建全攻略

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

延迟退休,程序员的你准备好了吗?

伤感汤姆布利柏

【YashanDB知识库】单机升级典型问题及应急措施

YashanDB

yashandb 崖山数据库 yashandb知识库

阿里巴巴商品详情API返回值:电商精准营销的关键

技术冰糖葫芦

api 网关 API Gateway API 文档 API 测试 pinduoduo API

望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 新能源产业

业界首个AI安全产业图谱发布,移动云实力入选

科技热闻

数业智能心大陆探索生成式AIGC创新前沿

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

职场女性的心灵救赎:数业智能心大陆照亮新曙光

心大陆多智能体

智能体 AI大模型 心理健康 数字心理 AI 智能体

ETL数据集成丨建设BI的关键前提是ETL数据集成?

RestCloud

数据分析 BI ETL 数据集成 企业数据工具

深度解析 MintRich 独特的价格曲线机制玩法

NFT Research

web3 NFT\

飞猪、去哪儿网接连“出事”,在线旅游平台有多少“坑”?

趣解商业

去哪儿网 飞猪 在线旅游平台

深入浅出 GIF

yuanyxh

js GIF #前端

利用 FileSystem API 实现一个 web 端的残缺版文件管理器

yuanyxh

js #前端

TikTok云手机解决运营效率低、封号问题

Ogcloud

云手机 tiktok云手机 tiktok运营 TikTok养号 tiktok矩阵

链游开发指南:基于Dapp合约的链上游戏开发与源码出售

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Meta如何实现大规模无身份信息认证?_文化 & 方法_Meta AI 团队_InfoQ精选文章