【隐私计算篇】多方安全计算之函数秘密共享(FSS)

1. 函数秘密共享(FSS)定义  

        秘密共享是一种将一个值拆分为多个份额的方法,形式有多种,可以参考《安全多方计算(MPC)矩阵乘法算子的原理分析》。这里主要提及加法秘密共享,使得:这些份额可以重新组合以还原出秘密值;任意严格的份额子集都无法泄露秘密值的任何信息。使用方括号表示法[v]_i来表示值 v 的第 i个秘密份额。使用 "+" 表示重新组合:[v]_1 + [v]_2 = v

        函数秘密【1,3】共享具有一个额外的要求,即可以在输入 x 上对函数 f 的份额进行计算,以得到 f(x) 的份额。给定[f]_i,可以高效地计算出任意 x 对应的[f(x)]_i。使用 [f(x)]_i 表示在输入 x上评估份额[f]_i​。使用 "+" 表示重新组合:[f(x)]_1 + [f(x)]_2 = f(x)

        对于函数 f : \{0, 1\}^n \to \{0, 1\}^*p \geq 2 个评估者,函数秘密共享(Function Secret Sharing, FSS)通过以下(可能是随机的)算法来描述:

  • Gen(1^\lambda, f) → ([f]_1, \cdots, [f]_p)
    将函数分割成一组紧凑的秘密份额 [f]_1, \cdots, [f]_p​。

  • Eval([f]_i, x) → [f(x)]_i
    使用秘密份额[f]_i 和输入 x,输出 f(x) 的秘密份额 [f(x)]_i

  • Recover([f(x)]_1, \cdots, [f(x)]_p) → f(x)
    从 p 个秘密份额中恢复出 f(x)。

2. 为什么函数秘密共享(FSS)有用

        假设一个客户端希望在云端存储的数据上运行某个函数,但不想将该函数暴露给云服务器,该怎么办?

解决方案:


假设服务器之间没有串通行为,并使用 FSS 来隐藏函数。

  1. 客户端使用 FSS 将函数 f 进行秘密共享,分发给云服务器。
  2. 云服务器在秘密共享的函数 f 上进行计算,并将(秘密共享的)结果 f(x) 返回给客户端。
  3. 客户端在本地重新组合这些份额以获得 f(x)。

此外,FSS 在构建隐私保护系统中非常有用:

  • 私密读取分布式数据库(私密信息检索)
    例如:在远程数据库上进行私密关键字搜索【2, 4】。

  • 私密写入分布式数据库(私密信息写入)
    例如:匿名通信【5, 6, 7, 8】。

  • 多方计算
    例如:为多方计算生成预处理(Silent OT extension)【9】。

3. FSS与DPF关系

        上述内容介绍了FSS ,其是一种通用的技术,用于将任意函数分割为多个秘密份额,使得这些份额能够在不泄露函数本身的情况下在分布式环境中进行计算。每个参与者持有函数的一部分份额,通过本地计算和通信,可以计算函数在某个输入值上的结果,并最终组合这些结果还原出函数的输出。

        而DPF(分布式点函数) 是 FSS 的一种特定形式,专门用于分享点函数。点函数是一种非常简单的函数,形式为:

\begin{cases} v & \text{if } x = x_0 \\ 0 & \text{otherwise} \end{cases}

        其中 x_0 是一个特定的输入值,v 是在 x_0​ 处的输出值。在 DPF 中,函数的秘密共享特别针对这种形式的点函数。DPF 可以让多个参与者在不泄露 x_0 和 v 的情况下对函数进行计算,并在需要时重新组合得到正确的点函数输出。由于点函数非常简单,DPF 通常有更高的效率和更小的计算开销,尤其适合需要查询特定位置或值的应用场景,如私密信息检索(PIR)等。

【10】中描述了PCG for tensor product from LPN and FSS过程。

【11】中给出了基于DPF给出了多服务器PIR(私有信息检索)的解决方案。分布式点函数包含两个算法(Gen 和 Eval):

  • Gen(y) → (k_a, k_i):为 y 生成点函数的密钥
  • Eval(k_a, x') → y':在输入 x 上评估点函数

此外,【12】给出了FSS for Multi-point Funciton的应用

4. 参考材料

【1】Private Access Control for Function Secret Sharing

【2】Elette Boyle, Niv Gilboa, and Yuval Ishai. “Function secret sharing”. In: Annual international conference on the theory and applications of cryptographic techniques. Springer. 2015, pp. 337–367.

【3】Elette Boyle, Niv Gilboa, and Yuval Ishai. “Function secret sharing: Improvements and extensions”. In: Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016, pp. 1292–1303.

【4】Emma Dauterman et al. “DORY: An encrypted search system with distributed trust”. In: Proceedings of the 14th USENIX Conference on Operating Systems Design and Implementation. 2020, pp. 1101–1119.

【5】Henry Corrigan-Gibbs, Dan Boneh, and David Mazières. “Riposte: An anonymous messaging system handling millions of users”. In: 2015 IEEE Symposium on Security and Privacy. IEEE. 2015, pp. 321–338.

【6】Saba Eskandarian et al. “Express: Lowering the cost of metadata-hiding communication with cryptographic privacy”. In: 30th USENIX Security Symposium (USENIX Security 21). 2021, pp. 1775–1792.

【7】Adithya Vadapalli, Kyle Storrier, and Ryan Henry. “Sabre: Sender-anonymous messaging with fast audits”. In: 2022 IEEE Symposium on Security and Privacy (SP). IEEE. 2022, pp. 1953–1970.

【8】Zachary Newman, Sacha Servan-Schreiber, and Srinivas Devadas. “Spectrum: High-bandwidth Anonymous Broadcast”. In: 19th USENIX Symposium on Networked Systems Design and Implementation (NSDI 22). 2022, pp. 229–248.

【9】Elette Boyle et al. “Efficient pseudorandom correlation generators: Silent OT extension and more”. In: Annual International Cryptology Conference. Springer. 2019, pp. 489–518.

【10】Efficient Pseudorandom Correlation Generators: MPC with Silent Preprocessing

【11】Distributed Point Functions: Efficient Secure Aggregation and Beyond with Non-Colluding Servers

【12】Homomorphic Secret Sharing

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

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

相关文章

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单:Web前端开发精进秘籍》张鑫旭,一些摘要: HTML,这门语言的知识体系非常庞杂,涉…

Python数据结构与算法问题详解

Python数据结构与算法问题详解 Python 作为一种高级编程语言,凭借其简洁的语法和强大的内置库,成为了数据结构与算法学习的绝佳工具。本文将深入解析几种常见的数据结构,并结合具体的算法,展示如何在实际问题中高效解决问题。通过…

《PMI-PBA认证与商业分析实战精析》第7章 解决方案评价

第7章 解决方案评价 本章主要内容: 评价的建议思维 解决方案的评价计划 确定评价什么 何时以及如何验证解决方案的结果 评价验收标准和解决缺陷 促进通过/不通过的决策 获得解决方案的签字确认 评价解决方案的长期绩效 解决方案替换/淘汰 本章涵盖的考试…

ASP.NET Core 创建使用异步队列

示例图 在 ASP.NET Core 应用程序中,执行耗时任务而不阻塞线程的一种有效方法是使用异步队列。在本文中,我们将探讨如何使用 .NET Core 和 C# 创建队列结构以及如何使用此队列异步执行操作。 步骤 1:创建 EmailMessage 类 首先&#xff0c…

1、Spring Boot 3.x 集成 Eureka Server/Client

一、前言 基于 Spring Boot 3.x 版本开发,因为 Spring Boot 3.x 暂时没有正式发布,所以很少有 Spring Boot 3.x 开发的项目,自己也很想了踩踩坑,看看 Spring Boot 3.x 与 2.x 有什么区别。自己与记录一下在 Spring Boot 3.x 过程…

Linux下的IO模型

阻塞与非阻塞IO(Input/Output) 阻塞与非阻塞IO(Input/Output)是计算机操作系统中两种不同的文件或网络通信方式。它们的主要区别在于程序在等待IO操作完成时的行为。 阻塞IO(Blocking IO) 在阻塞IO模式下…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…

调用智谱AI,面试小助手Flask简单示例

文章目录 1.接入AI获取API密钥Python代码 2.小助手的实现流程3.Flask应用示例Python文件.pyindex.html运行Flask应用地址栏输入 http://localhost:5000/ 1.接入AI 获取API密钥 在智谱AI的官方网站上注册,右上角点击API密钥,新建并复制一个 API Key&…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中,是一定会遇到表关联查询的。当两张大表关联时,时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合:SC_DATA(学生基本信息集合&…

Flask-2

文章目录 请求全局钩子[hook]异常抛出和捕获异常abort 主动抛出HTTP异常errorhandler 捕获错误 context请求上下文(request context)应用上下文(application context)current_appg变量 两者区别: 终端脚本命令flask1.0的终端命令使用自定义终端命令 flask2.0的终端命…

⌈ 传知代码 ⌋ 将一致性正则化用于弱监督学习

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

2款.NET开源且免费的Git可视化管理工具

Git是什么? Git是一种分布式版本控制系统,它可以记录文件的修改历史和版本变化,并可以支持多人协同开发。Git最初是由Linux开发者Linus Torvalds创建的,它具有高效、灵活、稳定等优点,如今已成为软件开发领域中最流行…

如何使用EventChannel

文章目录 1 知识回顾2 示例代码3 经验总结我们在上一章回中介绍了MethodChannel的使用方法,本章回中将介绍EventChannel的使用方法.闲话休提,让我们一起Talk Flutter吧。 1 知识回顾 我们在前面章回中介绍了通道的概念和作用,并且提到了通道有不同的类型,本章回将其中一种…

使用Apifox创建接口文档,部署第一个简单的基于Vue+Axios的前端项目

前言 在当今软件开发的过程中,接口文档的创建至关重要,它不仅能够帮助开发人员更好地理解系统架构,还能确保前后端开发的有效协同。Apifox作为一款集API文档管理、接口调试、Mock数据模拟为一体的工具,能够大幅度提高开发效率。在…

我为什么决定关闭ChatGPT的记忆功能?

你好,我是三桥君 几个月前,ChatGPT宣布即将推出一项名为“记忆功能”的新特性,英文名叫memory。 这个功能听起来相当吸引人,宣传口号是让GPT更加了解用户,仿佛是要为我们每个人量身打造一个专属的AI助手。 在记忆功…

用Arduino单片机读取PCF8591模数转换器的模拟量并转化为数字输出

PCF8591是一款单芯片,单电源和低功耗8位CMOS数据采集设备。博文[1]对该产品已有介绍,此处不再赘述。但该博文是使用NVIDIA Jetson nano运行python读取输入PCF8591的模拟量的,读取的结果显示在屏幕上,或输出模拟量点亮灯。NVIDIA J…

Ubuntu下Kafka安装及使用

Kafka是由Apache软件基金会开发的一个开源流处理平台,同时也是一个高吞吐量的分布式发布订阅消息系统。它由Scala和Java编写,具有多种特性和广泛的应用场景。 Kafka是一个分布式消息系统,它允许生产者(Producer)发布消…

docker 部署nacos

目录 一、拉取镜像 二、部署 三、访问(默认是用内嵌数据库) 四、配置 五、重启容器 一、拉取镜像 docker pull nacos/nacos-server 二、部署 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --restartalways --privilegedt…