使用 Zama 的 Concrete ML 和全同态加密赢得 TikTok 黑客马拉松

  • ZamaFHE
  • 发布于 2024-10-30 21:26
  • 阅读 21

新加坡国立大学(NUS)的一组计算机科学学生在 TikTok TechJam 2024 上使用 Zama 的 Concrete ML 和全同态加密 (FHE) 技术,开发了一个广告服务系统,展示了 FHE 如何为在线广告开创一个尊重隐私的新时代。该项目名为 AnonymousAds,旨在保护用户隐私的前提下,实现个性化广告投放。

博客

/

社区

Concrete ML

使用 Zama 的 Concrete ML 和全同态加密赢得 TikTok 黑客马拉松

2024 年 10 月 29 日

-

Jeremiah Au, Nigel Lee, PJ Anthony, Vansh Nath


这是一篇由 Jeremiah Au, Nigel Lee, PJ Anthony, Vansh Nath 撰写的客座博文。

TLDR: 今天的在线广告严重依赖于浏览器 cookies 来跟踪和识别用户行为,但通常以牺牲隐私为代价。借助全同态加密(FHE),可以通过启用隐私保护的广告定向来彻底改变这种模式,在这种模式下,用户偏好会被加密,并且只有用户才能访问它们。在 TikTok 黑客马拉松期间,一组来自 NUS 的学生开发了一个基于 Zama 的 Concrete ML 构建的广告服务系统,展示了 FHE 如何为在线广告开启一个尊重隐私的新时代。

关于 TikTok TechJam

我们是一群来自新加坡国立大学 (NUS) 的计算机科学专业的学生,今年,我们有幸参加了 2024 年的 TikTok TechJam。这项全球性的黑客马拉松挑战学生通过解决各个领域的实际问题来创新、创造和展示卓越的技术。

在各种问题陈述中,其中一个专注于隐私的问题立即引起了我们的注意。它向我们介绍了我们以前从未遇到过的迷人概念,包括“私有集合交集”、“差分隐私”,以及最让我们感兴趣的一个概念:“全同态加密(FHE)”。我们对这些突破性技术的好奇,加上当今数字世界中隐私日益增长的重要性,促使我们接受了这项挑战。

寻找完美的 FHE 库

经过大量的集思广益,我们开发了一个概念验证,以演示全同态加密(FHE)如何增强定向广告中的隐私保护。这让我们开始寻找可以帮助我们将想法变为现实的库和框架。在搜索过程中,我们在 GitHub 上发现了 Zama 的 Concrete ML,并立即看到了它在我们项目中的潜力。

乍一看,Concrete ML 似乎很复杂,其中大量的文档涵盖了不同的模型、配置状态、自举等等。但是,快速入门指南和代码示例非常全面且用户友好。虽然某些方面最初并不清楚,但我们通过探索简洁且结构良好的源代码很快找到了答案。Concrete ML 提供的抽象非常有价值,使我们能够将 FHE 集成到我们的解决方案中,而无需深入了解底层密码学细节。

关于我们的项目:AnonymousAds

在当今“免费增值”软件时代,许多公司依赖个性化广告来产生收入,但往往以牺牲用户隐私为代价。随着用户越来越注重隐私,他们仍然不愿意为他们期望免费获得的服务付费。这种紧张关系使我们的目标很明确:创建一个安全协议,允许企业在不损害用户隐私的情况下投放个性化广告。

为了实现这一目标,我们开发了一个概念验证,该验证利用搜索引擎查询来预测用户感兴趣的类别并投放定向广告,同时确保服务器端完全不知道用户的身份或偏好。

项目和解决方案的架构

图 1:我们的解决方案的设计概述。

预处理: 首先,使用诸如词干提取和大小写折叠等自然语言技术来处理和清理用户的搜索引擎查询,以便为加密准备数据。

加密: 清理完成后,数据在客户端使用全同态加密(FHE)私钥进行加密,从而确保敏感信息永远不会以明文形式离开用户的设备。然后将加密数据发送到服务器。

转换: 在服务器端,加密数据通过神经网络回归模型进行处理,该模型经过训练,可以将搜索引擎使用统计信息转换为用于广告定向的“用户兴趣类别”。由于 FHE 的特性,此转换发生在加密数据上,这意味着服务器永远不会看到实际的查询或生成的预测。

结果加密和传输: 由于 FHE,模型的输出(即预测的兴趣类别)保持加密状态,并发送回客户端。由于服务器无权访问私钥,因此它既看不到输入(搜索查询)也看不到输出(兴趣类别)。

解密和聚合: 加密结果到达客户端后,将使用 FHE 私钥对其进行解密。随着用户发出更多搜索查询,模型会继续使用贝叶斯更新来优化其预测,将新数据与历史信息相结合,以提供越来越准确的推荐。

噪声注入: 为了进一步保护用户隐私,客户端通过基于真实兴趣类别和随机生成的类别混合请求广告来混淆真实预测,这种技术称为噪声注入。这使得服务器无法确定用户的真实兴趣。

最后,客户端会根据真实的兴趣类别选择并展示最相关的广告,从而确保在不损害隐私的情况下提供个性化的体验。

实施和部署

我们的项目分为三个主要组件,每个组件在系统中都扮演着不同的角色:

  1. dev: 该组件负责生成和训练项目中使用的 Concrete ML 模型。在这里,我们专注于构建和优化神经网络,该网络稍后将部署用于加密推理。
  2. search-engine: 这代表用户的设备并充当前端,用户可以在其中与搜索引擎交互。它处理查询处理、加密、解密以及用于接收定向广告的用户界面。
  3. server: 该组件模拟公司的服务器,其中加密数据使用 Concrete ML 模型进行处理。服务器对加密数据执行计算,从而确保敏感信息在整个过程中保持私密。
n_inputs = NUM_KEYWORDS
n_outputs = NUM_CATEGORIES
params = {
    "module__n_layers": 3,
    "module__activation_function" : nn.ReLU,
    "module__n_hidden_neurons_multiplier" : 4,

    "module__n_w_bits" : 4,
    "module__n_a_bits" : 4,

    "max_epochs": 150,
    "verbose" : True,
    "lr" : 1e-3,
}
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)

concrete_regressor = NeuralNetRegressor(**params)
concrete_regressor.fit(X_train, y_train)
y_pred = concrete_regressor.predict(X_test)

print(np.sum((y_pred - y_test) ** 2) / y_pred.shape[0])

concrete_regressor.compile(X_train)
dev = FHEModelDev(path_dir=FHE_FILE_PATH, model=concrete_regressor)

clear_fhe_dir()
dev.save()}

图 2:使用的参数以及 Concrete ML 模型的编译。

我们在本地机器上运行了整个项目,利用 Docker 进行容器化以确保一致且隔离的环境。使用各种参数仔细调整了 Concrete ML 模型,以在性能和准确性之间取得最佳平衡。

对于托管 Web 界面,我们使用了 Flask,而诸如 Numpy、Pandas 和 Sklearn 之类的库用于处理数据处理任务。这些工具帮助我们在加密之前有效地管理和预处理数据。

此外,我们在整个项目中实施了广泛的日志记录系统。这使我们能够跟踪和演示我们协议的每个步骤,从而为评委提供清晰的见解,了解加密数据处理过程中幕后发生的事情。

2024-07-07 22:25:56,819 - INFO - Received 200 OK response from server
2024-07-07 22:25:56,821 - INFO - Starting decryption of received vector
2024-07-07 22:25:56,834 - INFO - Cleaned and normalized predictions
2024-07-07 22:25:56,834 - INFO - Predictions received and decrypted from server:
2024-07-07 22:25:56,834 - INFO - 1. Sports    Probability: 0.9636  # 从服务器接收并解密的预测:1. 体育 概率:0.9636
2024-07-07 22:25:56,835 - INFO - 2. Food      Probability: 0.0187  # 2. 食物 概率:0.0187
2024-07-07 22:25:56,835 - INFO - 3. Gaming    Probability: 0.0177  # 3. 游戏 概率:0.0177
2024-07-07 22:25:56,835 - INFO - 4. Music     Probability: 0.0000  # 4. 音乐 概率:0.0000
2024-07-07 22:25:56,835 - INFO - 5. Tv        Probability: 0.0000  # 5. 电视 概率:0.0000
2024-07-07 22:25:56,835 - INFO - ------------------------------------------------
2024-07-07 22:25:56,835 - INFO - Starting process to update existing predictions using bayesian inference  # 开始使用贝叶斯推断更新现有预测的过程
2024-07-07 22:25:56,836 - INFO - Total predictions: 6  # 预测总数:6
2024-07-07 22:25:56,843 - INFO - Prediction file './tmp/predict.txt' has been written to.  # 预测文件 './tmp/predict.txt' 已写入。
2024-07-07 22:25:56,843 - INFO - Successfully updated existing predictions using bayesian inference  # 使用贝叶斯推断成功更新现有预测
2024-07-07 22:25:56,843 - INFO - Updated predictions:  # 更新的预测:
2024-07-07 22:25:56,843 - INFO - 1. Sports    Probability: 0.9385  # 1. 体育 概率:0.9385
2024-07-07 22:25:56,843 - INFO - 2. Food      Probability: 0.0290  # 2. 食物 概率:0.0290
2024-07-07 22:25:56,843 - INFO - 3. Gaming    Probability: 0.0165  # 3. 游戏 概率:0.0165
2024-07-07 22:25:56,843 - INFO - 4. Music     Probability: 0.0161  # 4. 音乐 概率:0.0161
2024-07-07 22:25:56,843 - INFO - 5. Tv        Probability: 0.0000   # 5. 电视 概率:0.0000
2024-07-07 22:25:56,849 - INFO - 172.27.0.1 - - [07/Jul/2024 22:25:56] "POST /send_search_history HTTP/1.1" 200 -
2024-07-07 22:25:56,863 - INFO - Starting send_ads process  # 开始 send_ads 进程
2024-07-07 22:25:56,863 - INFO - Successfully selected best ads  # 成功选择最佳广告
2024-07-07 22:25:56,863 - INFO - Successfully added noisy ads   # 成功添加嘈杂广告
2024-07-07 22:25:56,863 - INFO - Completed send_ads process  # 完成 send_ads 进程
2024-07-07 22:25:56,940 - INFO - 172.27.0.1 - - [07/Jul/2024 22:25:56] "POST /get_ads HTTP/1.1" 200 -

图 3:生成的日志示例。

结论

参加 TikTok TechJam 是一次令人振奋的经历,它促使我们跳出框框思考并探索我们以前从未使用过的技术。将 Zama 的 Concrete ML 集成到我们的解决方案中不仅有趣,而且也是一次关于全同态加密 (FHE) 潜力的宝贵学习体验。回首往事,想到我们的项目获胜真是令人难以置信!你可以在 Github 上查看我们的完整解决方案:Anonymous Ads

特别感谢 Zama 团队让我们有机会在这篇博文中分享我们的旅程。

Jeremiah Au, Nigel Lee, PJ Anthony, Vansh Nath.

附加链接

阅读更多相关帖子

未找到任何项目。

Concrete Concrete ML FHEVM TFHE-rs

产品与服务

隐私保护机器学习 机密区块链 阈值密钥管理系统

开发者

博客 文档 GITHUB FHE 资源 研究论文 赏金计划 FHE 状态操作系统

公司

关于 FHE 简介 活动 媒体 职业 法律

联系方式

与专家交谈 联系我们 X Discord Telegram 所有社区渠道

隐私对于电子时代的开放社会是必要的。隐私不是秘密。私事是不想让全世界知道的事情,但秘密是不想让任何人知道的事情。隐私是选择性地向世界展示自己的力量。如果双方有某种交易,那么双方都会记住他们的互动。每一方都可以谈论他们自己对这件事的记忆;谁能阻止它呢?人们可以立法禁止它,但言论自由,甚至比隐私更重要,是开放社会的基础;我们不寻求限制任何言论。如果许多参与者在同一个论坛上一起发言,每个人都可以对所有其他人发言,并将关于个人和其他参与者的知识汇总在一起。电子通信的力量使这种群体发言成为可能,并且它不会仅仅因为我们可能希望它消失而消失。既然我们渴望隐私,我们必须确保交易的每一方只了解该交易直接需要的知识。既然任何信息都可以被谈论,我们必须确保我们尽可能少地透露信息。在大多数情况下,个人身份并不重要。当我在商店购买杂志并将现金交给店员时,没有必要知道我是谁。当我要求我的电子邮件提供商发送和接收消息时,我的提供商不需要知道我在和谁说话,或者我说什么,或者其他人对我说什么;我的提供商只需要知道如何将消息发送到那里,以及我欠他们多少费用。当我的身份被交易的底层机制泄露时,我就没有隐私。我不能在这里选择性地展示自己;我必须总是展示自己。因此,开放社会中的隐私需要匿名交易系统。到目前为止,现金一直是主要的此类系统。匿名交易系统不是秘密交易系统。匿名系统使个人能够在需要时且仅在需要时透露自己的身份;这是隐私的本质。开放社会中的隐私也需要密码学。如果我说了一些话,我希望只有我打算让它听到的人才能听到。如果我的言论内容对全世界可见,我就没有隐私。加密是为了表明对隐私的渴望,而使用弱密码加密是为了表明对隐私的渴望不太强烈。此外,当默认设置为匿名时,为了有保证地揭示自己的身份,需要密码签名。我们不能期望政府、公司或其他大型、没有人情味的组织出于他们的恩惠而给予我们隐私。谈论我们对他们有利,我们应该期望他们会这样做。试图阻止他们的言论就是与信息的现实作斗争。信息不仅仅是想自由,它渴望自由。信息会扩展以填充可用的存储空间。信息是谣言的年轻、更强大的表弟;信息比谣言跑得更快,眼睛更多,知道的更多,但理解的更少。如果我们希望拥有任何隐私,我们必须捍卫自己的隐私。我们必须走到一起,创建允许进行匿名交易的系统。几个世纪以来,人们一直在用耳语、黑暗、信封、关着的门、秘密握手和信使来捍卫自己的隐私。过去的技术不允许强大的隐私,但电子技术可以。我们,密码朋克,致力于构建匿名系统。我们正在用密码学、匿名邮件转发系统、数字签名和电子货币来捍卫我们的隐私。密码朋克编写代码。我们知道必须有人编写软件来捍卫隐私,并且既然我们不能在没有我们大家参与的情况下获得隐私,我们将编写它。我们发布我们的代码,以便我们的密码朋克同伴可以练习和使用它。我们的代码对全世界所有人免费使用。我们不太关心你是否不同意我们编写的软件。我们知道软件无法被摧毁,并且一个广泛分散的系统无法被关闭。密码朋克谴责对密码学的法规,因为加密本质上是一种私人行为。事实上,加密行为将信息从公共领域中移除。即使是反对密码学的法律也只能达到一个国家的边界和其暴力的臂膀。密码学将不可避免地蔓延到全球,并随之而来的是它使之成为可能的匿名交易系统。为了使隐私得到广泛传播,它必须成为社会契约的一部分。人们必须走到一起并部署这些系统以造福大众。隐私的范围仅限于社会中同伴的合作。我们,密码朋克,寻求你的问题和疑虑,并希望我们可以与你互动,以便我们不会欺骗自己。但是,我们不会因为某些人可能不同意我们的目标而改变我们的方向。密码朋克正在积极致力于使网络更安全,以保护隐私。让我们一起快速前进。前进。Eric Hughes 著。1993 年 3 月 9 日。

  • 原文链接: zama.ai/post/winning-tik...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ZamaFHE
ZamaFHE
Zama是一家开源密码学公司,专注于为区块链和人工智能构建最先进的完全同态加密(FHE)解决方案。