Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)

2024-04-21 20:08

本文主要是介绍Additive secret sharing 加性秘密共享(加法,乘法,向量乘法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

前言

Additive secret sharing

Secure addition

Secure multiplication

Secure vectorization


前言

本文前一部分主要来自另一篇博客:https://blog.csdn.net/qq_33154865/article/details/106271611,在此感谢这篇博客的作者。

后一部分是因为我想整体地补充完整additive secret sharing,所以加上了addtion和vectorization的部分。

如果还有不清楚的可以看相关视频:https://www.bilibili.com/video/av285066309/

Additive secret sharing

假设数据拥有者有一个数据x,现在将x秘密共享给两个服务器A, B,服务器A随机得到其中一部分(加密后),服务器B也随机得到其中一部分(加密后)。

想要恢复数据或进行计算的时候,一方将自己的数据发给另一方,或者将数据一起发给第三方(具体根据隐私需求来定)。

A方持有信息:{\left\langle x \right\rangle ^\alpha }{\left\langle y \right\rangle ^\alpha }

B方持有信息:{\left\langle x \right\rangle ^\beta }{\left\langle y \right\rangle ^\beta }

Note:

Additive有两个含义:

1、加性共享(重点):这个过程跟一般的secret sharing不同的就是它的所有共享过程都是通过加性(additive)共享来实现的,也就是说对于每一个共享的信息,都有x = {\left\langle x \right\rangle ^\alpha } + {\left\langle x \right\rangle ^\beta }

2、额外的信息:它的加密是靠在原有数据上共享额外(additive)的信息完成的,解密时需要将这些额外的信息根据一定的规律剥离。

Secure addition

秘密地算加法比较简单,A与B共享一个额外的常数c,假设当A要计算时,需要先自己(locally)计算,然后加上B传来的值(已乘上c加密),然后将结果除以c就可以还原出

验算:

\begin{array}{l} {\left\langle {x + y} \right\rangle ^\alpha } + {\left\langle {x + y} \right\rangle ^\beta } = \frac{​{​{​{\left\langle {c \cdot x + c \cdot y} \right\rangle }^\alpha }}}{c} + \frac{​{​{​{\left\langle {c \cdot x + c \cdot y} \right\rangle }^\beta }}}{c}\\ = {\left\langle x \right\rangle ^\alpha } + {\left\langle x \right\rangle ^\beta } + {\left\langle y \right\rangle ^\alpha } + {\left\langle y \right\rangle ^\beta }\\ = x + y \end{array}

Secure multiplication

为了进行乘法计算,附加的信息就不再是简单的常数c,而是一个三元组a, b, c, 满足:

根据共享的a, b, c可以计算得来ef(此处为A方的计算方式,B方同理):

双方各自计算自己的ef并共享,最终双方都可以得到真正的ef值:

最后的乘法结果是:

验算:

\begin{array}{l} {\left\langle {x + y} \right\rangle ^\alpha } + {\left\langle {x + y} \right\rangle ^\beta } = (f \cdot {\left\langle a \right\rangle ^\alpha } + e \cdot {\left\langle b \right\rangle ^\alpha } + {\left\langle c \right\rangle ^\alpha }) + (e \cdot f + f \cdot {\left\langle a \right\rangle ^\beta } + e \cdot {\left\langle b \right\rangle ^\beta } + {\left\langle c \right\rangle ^\beta })\\ = f \cdot ({\left\langle a \right\rangle ^\alpha } + {\left\langle a \right\rangle ^\beta }) + e \cdot ({\left\langle b \right\rangle ^\alpha } + {\left\langle b \right\rangle ^\beta }) + ({\left\langle c \right\rangle ^\alpha } + \left\langle c \right\rangle ) + e \cdot f\\ = f \cdot a + e \cdot b + c + e \cdot f\\ = (y - b) \cdot a + (x - a) \cdot b + c + (x - a) \cdot (y - b)\\ = ay - ab + bx - ab + ab + xy - ay - bx + ab\\ = xy \end{array}

Secure vectorization

在矩阵这里,加性仍然可以保持,也就是说

为了对XY进行矩阵(向量)相乘,共享的额外信息变成为三个矩阵,其中UX大小相同,VY大小相同,其元素皆为均匀分布的随机数,且满足

类似地,根据共享的U,V,Z,可以计算出

双方各自计算自己的PQ并共享,可以得到最后的乘法结果:

验算方法与Secure multiplication中类似,只不过其中的乘法为矩阵乘法。在此就不缀述了。

参考文献

[1] D. Demmler, T. Schneider, and M. Zohner, “Aby-a framework for efficient mixed-protocol secure two-party computation.” in NDSS, 2015.

这篇关于Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923929

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

# VMware 共享文件

VMware tools快速安装 VMware 提供了 open-vm-tools,这是 VMware 官方推荐的开源工具包,通常不需要手动安装 VMware Tools,因为大多数 Linux 发行版(包括 Ubuntu、CentOS 等)都包含了 open-vm-tools,并且已经优化以提供与 VMware 环境的兼容性和功能支持。 建议按照以下步骤安装 open-vm-tools 而不

Vector3 三维向量

Vector3 三维向量 Struct Representation of 3D vectors and points. 表示3D的向量和点。 This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doin

8. 自然语言处理中的深度学习:从词向量到BERT

引言 深度学习在自然语言处理(NLP)领域的应用极大地推动了语言理解和生成技术的发展。通过从词向量到预训练模型(如BERT)的演进,NLP技术在机器翻译、情感分析、问答系统等任务中取得了显著成果。本篇博文将探讨深度学习在NLP中的核心技术,包括词向量、序列模型(如RNN、LSTM),以及BERT等预训练模型的崛起及其实际应用。 1. 词向量的生成与应用 词向量(Word Embedding)

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

【C++】作用域指针、智能指针、共享指针、弱指针

十、智能指针、共享指针 从上篇文章 【C++】如何用C++创建对象,理解作用域、堆栈、内存分配-CSDN博客 中我们知道,你的对象是创建在栈上还是在堆上,最大的区别就是对象的作用域不一样。所以在C++中,一旦程序进入另外一个作用域,那其他作用域的对象就自动销毁了。这种机制有好有坏。我们可以利用这个机制,比如可以自动化我们的代码,像智能指针、作用域锁(scoped_lock)等都是利用了这种机制。