查网站排名wordpress 站群

news/2025/10/3 15:09:02/文章来源:
查网站排名,wordpress 站群,今天体育新闻最新消息,网站首页大图素材在上一篇文章中#xff0c;我们介绍了#xff0c;对于安全技术开发者#xff0c;如何快速的基于 Rosetta 等隐私 AI 框架所提供的一系列接口#xff0c;将自己的安全协议集成落地到上层的 AI 应用中来。在这一篇文章中#xff0c;我们将介绍为了保护用户的隐私数据#x…在上一篇文章中我们介绍了对于安全技术开发者如何快速的基于 Rosetta 等隐私 AI 框架所提供的一系列接口将自己的安全协议集成落地到上层的 AI 应用中来。在这一篇文章中我们将介绍为了保护用户的隐私数据在隐私 AI 框架的计算任务全流程中数据是如何以密文形式流动同时仍正确完成加法、乘法等计算步骤的。隐私 AI 系统存在的目的就是赋能 AI使得各种 AI 场景下对用户隐私数据的使用都是安全的。那么这样的系统就需要提供充分的保障从理论到工程实现的每一个阶段都应该是经得起推敲、抵抗得住各种攻击的。不能简单的认为只需要各方先在本地自己的数据上计算出一个模型然后将模型结果交换一下计算下其模型参数的平均值就不会泄露各方的隐私数据了。现代密码学(Cryptography)是建立在严格的数学定义、计算复杂度假设和证明基础之上的其中 MPC (Multi-Party Computation)方向是专门研究多个参与方如何正确、安全的进行联合计算的子领域 Rosetta 、 TF Encrypted 等隐私 AI 框架都采用了 MPC 技术以提供可靠的安全性。下面我们就结合具体案例看的看下在 Rosetta 中隐私数据是如何得到安全保护的。案例Alice, Bob 和 Charley 三人最近需要在他们的 AI 系统中引入对数据的隐私保护能力。他们很重视安全性所以他们想通过一个简单的例子 —— 乘法(multiply)来验证下隐私 AI 框架是否真正做到了隐私安全。他们约定Alice 的输入为 1.2345Bob 的输入为 5.4321而 Charley 拿到相乘的结果。他们按照 Rosetta 提供的教程快速编写了如下代码(脚本名为 rosetta-mul.py)#!/usr/bin/env python3import latticex.rosetta as rttimport tensorflow as tf rtt.activate(SecureNN)x tf.Variable(rtt.private_console_input(0, shape(1,))) # Alices inputy tf.Variable(rtt.private_console_input(1, shape(1,))) # Bobs inputz tf.multiply(x, y) # z x * ywith tf.Session() as sess: sess.run(tf.global_variables_initializer()) res sess.run(rtt.SecureReveal(z, receive_party4)) # b0100 means Charley print(z:, res)rtt.deactivate()接着他们各自打开一个终端分别进行如下操作Alice (P0) 在终端敲下如下命令行并根据提示输入自己的私有数据$ python ./rosetta-mul.py --party_id0please input the private data (float or integer): 1.2345Bob (P1) 执行同样的操作输入的也是只有自己才知晓的私有数据$ python ./rosetta-mul.py --party_id1please input the private data (float or integer): 5.4321Charley (P2) 在终端敲下如下命令行等一会儿就可以得到所期望的计算结果$ python ./rosetta-mul.py --party_id2z: [b6.705910]注对于 Charley 来说由于没有数据故不会提示输入。Alice 和 Bob 的本地输出都会是 z: [b0.000000], 而不会拿到正确的结果。可以看出Charley 拿到的最终结果与逻辑上明文结果(6.70592745)相比误差(0.00001745)可以忽略不计。系统的正确性得到了验证。如果想让误差更小可以通过配置提升精度或使用 128-bit 的数据类型。具体操作可以参考文档。上面短短的几行代码虽然结果是正确的但是他们三人对于系统安全性方面仍有一些困惑Alice、Bob 的私有输入会不会被另外两方知道Charley 拿到的结果会不会被 Alice 、 Bob 知道整个程序运行过程中有没有其他数据的泄漏如果前几问的回答都是否定的那 Charley 又是如何得到明文在回答这些问题之前为简化描述、突出本质我们需要简单介绍一下 MPC 实际落地中常用的安全假设。假定系统中有 3 个节点P0/P1/P2其中 P0/P1 为数据参与方而P2 是辅助节点用于随机数生成。只考虑半诚实(Semi-Honest)安全模型即三方都会遵守协议执行的流程并且其中诚实者占多数(Honest-Majority)也就是说三个节点中只会有一个“坏人”。更为复杂的恶意(Malicious)模型等安全场景可参考其他相关论文。内部数据类型为 64 位无符号整型即 uint64_t (这在理论上对应着在环 Z264Z264 )。下面我们就按照 输入–计算–输出 的顺序详细介绍 Rosetta 中数据的表示与流动以及所用到相关技术与算法在工程上的优化实现。隐私数据的输入隐私计算问题首先要解决的是隐私数据的输入。在上述案例中是通过如下两行代码来完成私有数据的安全输入的x tf.Variable(rtt.private_console_input(0, shape(1,))) # Alices inputy tf.Variable(rtt.private_console_input(1, shape(1,))) # Bobs input如代码所示rtt.private_console_input 是 Rosetta 众多 API 之一Rosetta 还提供了 rtt.private_input、rtt.PrivateDataset 等 API用来处理隐私数据的输入。这里发生了什么x,y 的值会是什么在进入剖析之前先来了解一个重要的概念 —— 秘密分享。秘密分享什么是 秘密分享(Secret Sharing)[1]先来看一种简单的两方 additive 的构造给定一个数 x定义 share(x) (x0, x1) (x − r, r)其中 r 是随机数并且与 x 独立。可以看到x x0 x1 x -r r。原始数据 x 的秘密分享值 (x0, x1) 将会由两个数据参与方 (P0, P1) 各自保存。在秘密分享的方案中所有的数据包括中间数值都会分享在两个参与方之间。直观的看参与的两方不会得到任何的明文信息。理论上只需要在环 Z264Z264 上支持加法和乘法就可以进一步通过组合来支持上层各种更复杂的函数。下文我们会看到关于乘法的详细解析读者可以回过头来再看这段话。那工程上是如何处理的呢假设 P0 有一个私有数据 x三方之间可以简单交互一下实现方案 1 P2 生成一个随机数 r发送给 P0/P1。然后 P0 本地设置 x0 x - rP1 本地设置 x1 r。此时 share(x) (x0, x1) (x - r, r)与上面的定义一致。这是方案之一后文基于这个方案进行讲解。在本文最后我们会提一下实际落地时的进一步优化方案。回到主线结合 方案 1我们以 Alice 的输入值 x 1.2345 为例看下具体过程。第一步浮点数转定点数。对于有数据输入的一方需要先将真实的浮点数转成定点数。浮点数转定点数即浮点数乘以一个固定的缩放因子(scale一般为 2k2k )使其变成定点数(取其整数部分舍弃小数部分)。当最后需要还原真实的原始浮点数时用定点数除以缩放因子即可。我们先选定一个缩放因子这里取 scale 218218 。经过缩放后得到 x 1.2345 * (118) 323616.768取整数部分即 323616用于后续计算。这里是有精度损失的但在精度允许的范围内不会影响后面的计算。第二步生成随机数 r。 也叫掩码(Masking value)用来隐藏真实值。P2 生成一个随机数 r是一个 64-bit 空间的无符号整数。(如r fdad72ecbfbefeb9。这里用十六进制表示下同)P2 将 r 发送给 P0,P1。此时P0,P1 都拥有一个相同的随机数 r 了。第三步设置秘密分享值。按秘密分享 方案 1 的定义P0 本地设置 x0 x - rP1 本地设置 x1 r。所以有P0x0 4f020 - fdad72ecbfbefeb9 2528d134045f167P1x1 fdad72ecbfbefeb94f020 是 323616 的十六进制表示。如果计算结果大于 64 bit 的空间范围需要对结果取模(64 位空间)。下同。至此我们获得了关于 x 的分享值share(x) (x0, x1) (x - r, r) (2528d134045f167, fdad72ecbfbefeb9)。感兴趣的读者朋友可以验证一下 (x0 x1) mod 264264 。同理我们对 Bob 的输入值进行一样的处理。上面三步其实就是 private_console_input 的工作机制与过程。经过处理后各方本地都存储着如下值我们用 Xi,Yi 表示 X,Y 在 Pi 的分享值。(下同)P2 为何是 0 呢在本方案中 P2 作为一个辅助节点不参与真正的逻辑计算。我们可以看到在处理隐私数据输入的整个过程中P0 无法知道 y 值P1 无法知道 x 值P2 无法知道 x 或 y 值。最后我们总结一下这三个主要阶段密文上的协同计算这是计算的核心。上一步我们保证了输入的安全没有信息的泄漏各方无法单独拿到其他节点的私有输入。接下来看一下计算的代码只有一行z tf.multiply(x, y) # z x * y在这个计算的过程中发生了什么下面结合乘法(Multiply) 算子原理进行实例讲解。Multiply 算子原理乘法相对较为复杂我们结合经典的 Beaver Triple 方法 [2] 加以介绍。该方法是由密码学家 Donald Beaver 在 1991 年提出主要思想是通过乘法。协议基本原理如下输入 P0 拥有 X,Y 的秘密分享值 X0,Y0P1 拥有 X,Y 的秘密分享值 X1,Y1。这里有 share(X) (X0, X1)share(Y) (Y0, Y1)。在此案例中这里的输入就对接上一节所述的隐私输入的输出结果。计算步骤P2 本地生成一组随机数 A,B,C且满足 C A * B。A,B,C 的生成步骤P2 随机生成 A0,A1,B0,B1,C0令 A A0 A1, B B0 B1得到 C A * B, C1 C - C0。其中 Ai,Bi,Ci 是 A,B,C 的分享值。 这些都是在 P2 本地完成的。这也就是 P2 做为辅助节点的作用(用于随机数生成)。这里 A,B,C 一般被称为三元组(Beaver’s Triple)。比如某次生成的随机数如下感兴趣的读者朋友可以验证一下。如 A A0 A1 2373edde1a0e5dcd ad483b77e4e5db41 d0bc2955fef4390e。这个 A 是个随机数。P2 将上一步生成的随机数的秘密分享值分别发送给 P0,P1。即将 A0,B0,C0 发送给 P0将 A1,B1,C1 发送给 P1。此时P0,P1 拥有如下值P0 计算 E0 和 F0P1 计算 E1 和 F1。并交换 Ei,Fi。P0 本地计算 E0 X0 - A0, F0 Y0 - B0。P1 本地计算 E1 X1 - A1, F1 Y1 - B1。此时P0,P1 拥有如下值交换 Ei,Fi。P0 将 E0,F0 发送给 P1P1 将 E1,F1 发送给 P0。此时P0,P1 都拥有 E0,F0,E1,F1。P0,P1 本地计算 得到E 和 F。P0,P1 各自本地计算 E E0 E1, F F0 F1。P0 本地计算 Z0P1 本地计算 Z1。现在P0 已经拥有 A0,B0,C0,E,FP1 已经拥有 A1,B1,C1,E,F。有了这些就可以计算出 Z X * Y 的秘密分享值 Z0,Z1 了。 即P0 本地计算 Z0 E * B0 A0 * F C0P1 本地计算 Z1 E * B1 A1 * F C1 E * F。正确性可以通过以下恒等式加以验证ZZ0Z1 E⋅B0A0⋅FC0E⋅B1A1⋅FC1E⋅F E⋅(B0B1)(A0A1)⋅F(C0C1)E⋅F E⋅BA⋅FCE⋅F E⋅BA⋅FA⋅BE⋅F (AE)⋅(BF) (AX−A)⋅(BY−B)X⋅Y ZZ0Z1 E⋅B0A0⋅FC0E⋅B1A1⋅FC1E⋅F E⋅(B0B1)(A0A1)⋅F(C0C1)E⋅F E⋅BA⋅FCE⋅F E⋅BA⋅FA⋅BE⋅F (AE)⋅(BF) (AX−A)⋅(BY−B)X⋅Y 输出 P0,P1 分别持有 Z X * Y 的秘密分享值 Z0,Z1。我们可以看到从输入到计算再到输出整个过程中没有泄漏任何隐私数据。整个算子计算结束时 P0 单独拥有 X0,Y0,A0,B0,C0,E0,F0,E1,F1,E,F,Z0P1 单独拥有 X1,Y1,A1,B1,C1,E0,F0,E1,F1,E,F,Z1P2 单独拥有 A0,B0,C0,A1,B1,C1三方都无法单独得到 X 或 Y 或 Z。最后我们总结一下(1~5 对应着上面的步骤)获取明文结果从输入到计算再到输出各节点只能看到本地所单独拥有的秘密分享值(一些毫无规律的 64 位随机数)从上文也可以看到节点是无法独自得到任何隐私数据的。那么当计算结束后如果想得到结果的明文怎么获取呢Rosetta 提供了一个恢复明文的接口使用很简单。res sess.run(rtt.SecureReveal(z, receive_party4)) # b0100 means Charleyprint(z:, res)那这个 rtt.SecureReveal 是如何工作的呢其实非常简单如果本方想要知道明文只需要对方把他的秘密分享值发给我然后本地相加即可。比如上一节结尾处我们知道了各方 (P0/P1/P2) 的分享值如下结合实例Charley (P2) 想要获取结果明文那么P0,P1 将各自的分享值 Z0,Z1 发给 P2然后 P2 本地相加即可。即: 1db35d14c12a ffffe24ca30611b0 1ad2da (1757914)。我们将此值进一步再转换为浮点数就可以得到我们想要的用户态的明文值了: 1757914 / (1 18) 6.7059097 效率优化上面介绍的 秘密分享 与 multiply 算子 都是基于最基本的算法原理在时间上和通信上的开销还是比较大的在实际工程实现中还可以进一步进行优化以提升性能。在介绍优化方案之前先了解一下 什么是 PRFPRF[3]Pseudo-Random Function。 简单来说即给定一个随机种子 key一个计数器 counter执行 PRF(key, counter) 会得到一个相同的随机数。补充说明一下。例如P0,P1 执行 PRF(key01, counter01)会产生一个相同的随机数。这里的 key01counter01 对于 P0,P1 来说是一致的。程序会维护这两个值对使用者来说是透明的。关于秘密分享来看看优化版本(假设 P0 有一个私有数据 x)。方案 2(优化版): P0,P1 使用 PRF(key01, counter) 本地同时生成一个相同的随机数 r。然后 P0 本地设置 x0 x - rP1 本地设置 x1 r。此时 share(x) (x0, x1) (x - r, r)与定义一致。此版本无需 P2 的参与。没有通信开销。目前 Rosetta 开源版本中使用的正是此方案。方案 3(优化版): P0 设置 x0 xP1 设置 x1 0 即可。此时 share(x) (x, 0)。此版本无需 P2 的参与。没有通信开销也没有计算开销。上述各个版本(包括方案 1)都是可行且安全的。可以看到P1/P2 并不知道 P0 的原始输入值。关于 Multiply 算子Multiply 算子中输入输出部分没有变化主要是计算步骤中的第 1 步与第 2 步有些许变化以减少通信量。这里也只描述这两步其余与前文相同。在上文的描述中我们知道 P2 生成三元组后需要将其分享值发送给 P0,P1。当我们有了 PRF 后可以这么做P0,P2 使用 PRF(key02, counter02) 同时生成 A0,B0,C0P0,P1 使用 PRF(key12, counter12) 同时生成 A1,B1。然后P2 令 A A0 A1, B B0 B1得到 C A * B, C1 C - C0。P2 将 C1 发送给 P1。P2 的任务完成。目前 Rosetta 开源版本中使用的是此方案。相比于原始版本优化版本只需要发送 C1不用再发送 A0,A1,B0,B1,C0。在 Rosetta 中我们还针对具体的各个不同的算子进行了一系列的算法、工程优化欢迎感兴趣的读者来进一步了解。小结安全性是隐私 AI 框架的根本在本篇文章中我们结合隐私数据输入的处理和密文上乘法的实现介绍了“随机数” 形式的密文是如何在多方之间流动同时“神奇”的仍能保证计算逻辑的正确性的。我们这里对于安全性的说明是直观上的描述而实际上这些算法的安全性都是有严格数学证明的。感兴趣的读者可以进一步去探索相关的论文。Rosetta 将持续集成安全可靠的密码学算法协议作为“隐私计算引擎”到框架后端中也欢迎广大开发者参与到隐私 AI 的生态建设中来。参考文献[1] 秘密共享 https://en.wikipedia.org/wiki/Secret_sharing[2] Beaver, Donald. “Efficient multiparty protocols using circuit randomization.” Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1991.[3] PRF 的一个简单介绍 https://crypto.stanford.edu/pbc/notes/crypto/prf.html作者介绍Rosetta 技术团队一群专注于技术、玩转算法、追求高效的工程师。Rosetta 是一款基于主流深度学习框架 TensorFlow 的隐私 AI 框架作为矩阵元公司大规模商业落地的重要引擎它承载和结合了隐私计算、区块链和 AI 三种典型技术。目前 Rosetta 已经在 Github 开源( https://github.com/LatticeX-Foundation/Rosetta) 欢迎关注并参与到 Rosetta 社区中来。延伸阅读隐私AI工程技术实践指南整体介绍-InfoQ面向隐私AI的TensorFlow深度定制化实践-InfoQ隐私AI框架中MPC协议的快速集成-InfoQ关注我并转发此篇文章私信我“领取资料”即可免费获得InfoQ价值4999元迷你书点击文末「了解更多」即可移步InfoQ官网获取最新资讯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抚顺网站开发招聘wordpress更改主题

文章目录1. html 部分2. js部分3. 拦截器部分4. 认证授权部分5. 控制层部分6. 工具类实现流程: 1.从reqest域中获取现在登陆的新sessionId 2.根据登陆的用户名从reqest域中获取已经登陆的老sessionId 3.判断老sessionId是否存在和新旧sessionId是否是否一致 如果一直返回当前用…

和水导学习的第二篇笔记

操作系统 操作系统的作用 将外部指令传给CPU 操作系统有什么 计算机有什么组成: 应用程序:便利生活,具体干活,和操作系统,人交互 操作系统:接收外部指令,控制硬件,和人,硬件,应用程序交互 硬件:操作数据,和…

微信公众号推文添加附件方法,1分钟学会!支持word,excel,pdf等适合招聘,公告,申请表等

微信公众号图文文章时,总会遇到带有附件的文章,但微信公众号本身并不具备直接上传附件的功能,那编辑者们是如何快速在微信公众号中添加office、pdf和word等附件,以供用户快速预览或保存使用的呢?微信公众号图文文…

社保在哪个网站做增员网站建设兼职挣多少钱

01.dns解析过程02.用户访问网站流程03.局域网电脑上网流程04.网站架构图解转载于:https://blog.51cto.com/qinbin/1954149

bMIND包本地安装

https://github.com/randel/MIND 下载code,下载下来是MIND-master.zip,本地R安装要求严格是“MIND-master.tar.gz” 格式转化: # 如果机器上有 git: cd /public/home/chidm/Downloads git clone https://github.com…

百度电商MultiAgent视频生成系统 - 详解

百度电商MultiAgent视频生成系统 - 详解2025-10-03 14:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block …

网络实践——基于epoll_ET工作、Reactor设计模式的HTTP服务 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

为博客写遗言

写下这段文字的时候,内心是极挣扎的 可能是【数据删除】临近了,所以情感上的波动愈发强烈 不久后,就要和 cnblogs 说再见了,甚至是和电脑说再见了足足 249 篇博客,不舍、痛苦、伤感是难免的 博客快断更了,应当有…

2025国庆Day2

模拟赛 T1 简单题 离散化+差分即可 或者直接贪心 对可能成为答案的点计算删的区间并取min #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath>…

灵犀科技网站开发WordPress获取评论内容

5大安全产品全面升级&#xff0c;抢先了解&#xff1a;https://developer.aliyun.com/topic/securityapril 预约观看发布会&#xff1a;https://yq.aliyun.com/live/2670 新基建大势之下的物联网 近日&#xff0c;中央政治局常委会会议提出&#xff0c;加快发展5G、数据中心、…

新能源汽车整车电控环境详解!

新能源汽车整车电控环境详解!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

《吃透 C++ vector:从基础使用到核心接口实战指南》 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

广州旅游网站建设设计学做投资网站好

DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能&#xff0c;具有日、周、月和时间轴视图&#xff0c;并包括内置的打印支持&#xff0c;因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中&#xff08;点击这里回顾…

完整教程:GitOps:一种实现云原生的持续交付模型

完整教程:GitOps:一种实现云原生的持续交付模型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

黑马程序员苍穹外卖学习指南(本文消除我跟视频做该项目时遇到的问题和解决方法)

黑马程序员苍穹外卖学习指南(本文消除我跟视频做该项目时遇到的问题和解决方法)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

做网站的个人心得学校网站模版

基于蚁群算法的TSP问题建模求解 一、蚁群优化算法&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;1.1 蚁群算法的起源——“双桥实验”1.2 蚁群优化算法思想1.3 蚁群算法应用于求解组合优化问题 二、基于蚁群算法的TSP问题建模求解2.1 旅行商问题&#xff08;…

佛山网站建设百家号网站统计平台

使用Selenium处理动态生成的网页内容和语法代码可以通过以下步骤进行&#xff1a; 安装Selenium库&#xff1a;使用pip命令安装Selenium库&#xff0c;可以在命令行中运行如下命令&#xff1a; pip install selenium 下载WebDriver&#xff1a;Selenium需要与特定的浏览器进行交…

P11983 [JOIST 2025] 展览会 3 题解

Description JOI 美术馆计划近期举办一场绘画展览。馆方拥有编号为 \(1\) 至 \(N\) 的 \(N\) 幅画作,其中画作 \(i\)(\(1 \leq i \leq N\))的美观值为 \(A_i\)。在展览中这些画作将排成一行展示,但具体排列顺序尚未…

黑客马拉松(Hackathon)

黑客马拉松(Hackathon)黑客马拉松是一种 短时间内高强度的软件/硬件开发活动。一般持续 24~72 小时,有的甚至一周。参与者通常是开发者、设计师、产品经理等,组成小团队。目标是在有限时间里,从零开始,开发出一个…