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

相关文章

java父子线程之间实现共享传递数据

《java父子线程之间实现共享传递数据》本文介绍了Java中父子线程间共享传递数据的几种方法,包括ThreadLocal变量、并发集合和内存队列或消息队列,并提醒注意并发安全问题... 目录通过 ThreadLocal 变量共享数据通过并发集合共享数据通过内存队列或消息队列共享数据注意并发安全问题总结在 J

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

【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