基于同态加密体制的安全多方计算

article/2025/9/13 22:06:55

本文首发公众号VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。有兴趣的小伙伴们,欢迎关注。
在这里插入图片描述

安全多方计算(Secure Multi-party Computa-tion,sMPC)是分布式密码学的理论基础,也是分布式计算研究的一个基本问题,最早由姚期智于1982年通过姚氏百万富翁问题提出。

简单的说,安全多方计算是指一组人,比如 P 1 . . . . P n P _1 ....P_ n P1....Pn ,共同安全的计算函数 f ( x 1 , . . . , x n ) = ( y 1 , . . . , y n ) f(x_1,...,x_n)=(y_1,...,y_n) f(x1,...,xn)=(y1,...,yn)。函数的n个输入分别由n个参与者秘密掌握,设 P i P _i Pi的秘密输入是 x i x _i xi ,并且在计算结束后, P i P_ i Pi 得到输出 y i y_ i yi 。这里的安全性是要求即使在某些参与者有欺骗行为的情况下保证计算结果的正确性,即计算结束后每个诚实的参与者 P i P_ i Pi 都能得到正确的输出 y i y_i yi,同时还要求保证每个参与者输入的保密性,即每个参与者 P i P_ i Pi 除了 ( x i , y i ) (x _i ,y_ i ) (xi,yi)外,得不到任何其他信息。

安全多方计算的一般实现方法有四种:同态加密密码体制、不经意传输协议、线性密钥共享体制、混淆电路框架。
这一篇先介绍基于同态加密密码体制的安全多方计算协议。

1 同态门限密码体制

具有加法同态性的门限密码体制是构造安全多方计算协议的一个基本工具。具体来说,设 ( s k , p k , M , C , E , D ) (sk,pk,M,C,E,D) sk,pk,M,C,E,D是一个公钥密码体制,其中 s k sk sk是私钥, p k pk pk是公钥, M M M是明文空间, C C C是密文空间, E E E D D D分别是加密算法和解密算法。特别是明文空间 M M M和密文空间 C C C都是带有某种运算的有限交换群。对任意的明文 m ∈ M m \in M mM,加密得到密文 c = E ( m ) c= E(m) c=E(m),解密过程为 D ( c ) = D ( E ( m ) ) = m D(c)=D(E(m))=m D(c)=D(E(m))=m

对于任意的 m 1 , m 2 ∈ M m_1,m_2 \in M m1,m2M,满足 E ( m 1 ) ∗ E ( m 2 ) = E ( m 1 + m 2 ) E(m_1)\ast E(m_2)=E(m_1+m_2) E(m1)E(m2)=E(m1+m2),我们就称该密码体制具有加法同态性,其中“+”表示明文空间的运算,“ ∗ \ast ”表示密文空间的运算。加法同态性质说明:可以由 m 1 m_1 m1 m 2 m_2 m2的密文直接得到 m 1 + m 2 m_1+m_2 m1+m2的密文。

具有加法同态性的密码体制有很多,经常用到的是Paillier密码体制。门限密码体制是把解密的权力利用门限控制,比如 ( t , n ) (t,n) (t,n)门限就是要求只有 n n n个参与者中的至少 t t t个人联合才能解密得到明文,而任何少于 t t t个人都无法得到明文。Desmedt和Frankel在其文献“Threshold Cryptosystem(1990)”中指出,任何一个公钥密码体制理论上都可以门限化。

门限密码体制基本的思路是公布公钥 p k pk pk,但是将私钥 s k sk sk n n n个人中按照Shamir ( t , n ) (t,n) (t,n)门限体制进行共享。设 P i P_i Pi得到子密钥 s k i sk_i ski 1 ≤ i ≤ n 1\leq i\leq n 1in。解密的时候,设要联合解密密文 m ∈ M m \in M mM P i P_i Pi将自己的子密钥作用在密文上得到 m i = D s k i ( c ) m_i=D_{sk_i}(c) mi=Dski(c) 1 ≤ i ≤ t 1\leq i\leq t 1it。最后由 m 1 , . . . , m t m_1,...,m_t m1,...,mt就可以得到明文 m m m

注意:解密的时候并不是将私钥 s k sk sk重构出来,否则私钥一旦被某个参与者知道,该门限密码体制就变得不安全了。

2 基于Paillier加法同态密码体制的安全多方计算协议

P = { P 1 , . . . , P n } P=\{P_1,...,P_n\} P={P1,...,Pn}是参与者集合,他们要共同计算函数 f ( x 1 , . . . , x n ) f(x_1,...,x_n) f(x1,...,xn),其中 P i P_i Pi掌握输入 x i x_i xi 1 ≤ i ≤ n 1\leq i\leq n 1in。讨论密码学模型下的安全多方计算,攻击者结构是 Θ \Theta Θ。设 ( s k , p k , M , C , E , D ) (sk,pk,M,C,E,D) sk,pk,M,C,E,D是一个基于Paillier加法同态性的门限密码体制,并且 P 1 , . . . , P n P_1,...,P_n P1,...,Pn已经掌握了相关参数(即各自的公钥、私钥等)。这里用到的门限密钥共享体制满足对于任意的 m 1 , m 2 ∈ M m_1,m_2 \in M m1,m2M,任意的被收买集合 θ ∈ Θ \theta \in \Theta θΘ都无法区分 E ( m 1 ) E(m_1) E(m1) E ( m 2 ) E(m_2) E(m2)

下面的安全多方计算协议分为输入阶段、计算阶段和输出阶段。

(1)输入阶段

每个参与者 P i P_i Pi 1 ≤ i ≤ n 1\leq i\leq n 1in,将自己的输入 x i x_i xi用公钥 p k i pk_i pki进行加密得到密文 E ( x i ) E(x_i) E(xi),然后把密文 E ( x i ) E(x_i) E(xi)公开。

(2)计算阶段

假设要计算的函数 f f f已经表示成某个有限域上 K K K的多项式,这里取 K = Z p K=Z_p K=Zp p p p N N N的素因子。因此,在计算阶段的每一步依然是处理一个 x + y x+y x+y x y xy xy,其中 x , y ∈ K x,y \in K x,yK。并采用加密体制进行隐藏,即每个参与者得到的只是输入和输出的密文。由于经过输入阶段,可以假设每个参与者已经得到输入的密文 E ( x ) E(x) E(x) E ( y ) E(y) E(y),于是计算阶段的每一步就是使所有参与者最后得到 E ( x + y ) E(x+y) E(x+y) E ( x y ) E(xy) E(xy),然后作为下一步计算的输入计算。

计算 “ x + y ” “x+y” x+y:由于采用的密码体制具有加法同态性质,那么每个参与者由 E ( x ) E(x) E(x) E ( y ) E(y) E(y),不需要交互只进行直接计算 E ( x ) ∗ E ( y ) E(x)\ast E(y) E(x)E(y)就可以得到 E ( x + y ) E(x+y) E(x+y)

计算 “ x y ” “xy” xy:每个参与者 P i P_i Pi 1 ≤ i ≤ n 1\leq i\leq n 1in,秘密选取随机数 d i ∈ M d_i \in M diM,将用公钥 p k pk pk加密,公开 E ( d i ) E(d_i) E(di)。根据加法同态性,将所有参与者都得到 c ′ = E ( d 1 + . . . + d n + x ) = E ( d 1 ) ∗ . . . ∗ E ( d n ) ∗ E ( x ) c'=E(d_1+...+d_n+x)=E(d_1)\ast ... \ast E(d_n)\ast E(x) c=E(d1+...+dn+x)=E(d1)...E(dn)E(x),然后联合对 c ′ c' c进行解密,得到 d = D ( c ′ ) = d 1 + . . . + d n + x d=D(c')=d_1+...+d_n+x d=D(c)=d1+...+dn+x。参与者 P 1 P_1 P1计算 z 1 = d − d 1 z_1=d-d_1 z1=dd1 P i P_i Pi计算 a i = − d i a_i=-d_i ai=di 2 ≤ i ≤ n 2 \leq i \leq n 2in,显然有 x = ∑ i = 1 n a i x = \sum_{i=1}^na_i x=i=1nai。根据加密体制的加法同态性,每个参与者 P i P_i Pi 1 ≤ i ≤ n 1\leq i\leq n 1in,计算得到 E ( ( a i y ) E((a_iy) E((aiy)并将结果公开。例如,如果密文空间对应的运算时乘法,那么 E ( ( a i y ) = ( E ( ( y ) ) a i E((a_iy)=(E((y))^{a_i} E((aiy)=(E((y))ai。最后,所有参与者计算 E ( ( a 1 y ) ∗ . . . ∗ E ( ( a n y ) = E ( ∑ i = 1 n a i y ) = E ( x y ) E((a_1y)\ast ... \ast E((a_ny)=E(\sum_{i=1}^na_iy)=E(xy) E((a1y)...E((any)=E(i=1naiy)=E(xy)

(3)输出阶段

由于到计算阶段的最后,所有参与者都已经得到最后函数值的密文 E ( f ( x 1 , . . . , x n ) ) E(f(x_1,...,x_n)) E(f(x1,...,xn)),因此输出阶段就是所有参与者联合对 E ( f ( x 1 , . . . , x n ) ) E(f(x_1,...,x_n)) E(f(x1,...,xn))进行解密得到最后的函数值。

3 往期回顾

数字签名系列

  • 图解 ECDSA 签名与验签基本原理
  • 图解 BLS 签名与验签基本原理
  • BLS 签名理论原理和工程实现
  • 基于 RSA 的实用门限签名算法
  • 门限密钥共享技术原理
  • 隐私保护利器之环签名实现原理
  • 多重签名 MultiSig:Schnorr 协议与 ECDSA 协议
  • 一种高效的数字签名算法ED25519
  • Schnorr 协议:零知识身份证明和数字签名

智能合约隐私计算

  • 智能合约隐私计算:开篇
  • 智能合约隐私计算:同态加密应用举例
  • 智能合约隐私计算:再谈Paillier同态加密算法
  • 智能合约隐私计算:基于FO承诺的零知识证明
  • 智能合约隐私计算:基于FO承诺的零知识承诺相等性证明和平衡验证

密码学承诺系列

  • Pedersen commitment

同态加密系列

  • 智能合约隐私保护技术之同态加密
  • 智能合约隐私计算之再谈Paillier同态加密算法

4 参考资源

[1] 密钥共享体制和安全多方计算[M],刘木兰、张志芳著。


http://chatgpt.dhexx.cn/article/tmtaajcV.shtml

相关文章

多方安全计算

说明,本文是转载的,个人觉得作者讲解清晰明了,收录用于学习,原文链接:https://blog.csdn.net/yuxinqingge/article/details/104588197。 如今,互联网已经完成了从IT时代向DT时代转变,数据已经成…

多方安全计算MPC

1.多方安全计算的价值 MPC是密码学的一个重要分支,旨在解决一组互不信任的参与方之间保护隐私的协同计算问题,为数据需求方提供不泄露原始数据前提下的多方协同计算能力。 在目前个人数据毫无隐私的环境下,对数据进行确权并实现数据价值显得…

安全多方计算(MPC)

MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。 根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC 1)安全两方&a…

安全多方计算之二:一文搞懂百万富翁问题

百万富翁问题 1. 解决方案2. 协议描述3. 协议说明4. 协议举例5. 协议扩展 两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方及其他第三方知道自己财富的任何信息,这是由中国计算机科学家、2000年图灵奖获得者姚启智教授于1982年在论文《…

安全多方计算-入门学习笔记(三)

四、基于非噪音的安全多方计算介绍 1概念 非噪音方法一般是通过密码学方法将数据编码或加密,得到一些奇怪的数字,而且这些奇怪的数字有一些神奇的性质,比如看上去很随机但其实保留了原始数据的线性关系,或者顺序明明被打乱但人们…

基于隐私保护的安全多方计算区块链融合技术的智能合约

安全多方计算与区块链的融合技术 SMPC-安全多方计算综述安全的定义安全模型SMPC效率问题 区块链应用:智能合约智能合约的问题SMPC需求引入 基于SMPC的智能合约辅助:MPI协议-效率提升 SMPC-安全多方计算综述 随着物联网、移动计算、大数据、云计算的快速…

安全多方计算之GMW协议

安全多方计算之GMW协议 一、背景 论文原文《How to play any mental game》。作者:Micali S, Goldreich O, Wigderson A. 发表在:Proceedings of the Nineteenth ACM Symp on Theory of Computing, STOC. GMW协议可以同时适用在布尔电路和算术电路&am…

多方安全计算概述

多方安全计算(Secure Multi-Party Computation, MPC)是密码学的一个分支,在无可信第三方的情况下,仍可安全地按照公开的计算逻辑,进行数据协同计算,并输出结果。 即使参与各方输入的数据只有自…

安全多方计算之一:什么是安全多方计算

安全多方计算 1. 安全多方计算简介2. 基本概念2.1 参与者2.2 攻击者 3. 安全多方计算的模型4. 安全多方计算的密码学工具5. 学习参考 1. 安全多方计算简介 安全多方计算问题SMC,Secure Multi-party Computation)由由中国计算机科学家、2000年图灵奖获得…

安全多方计算简介

文章目录 一、安全多方计算定义二、安全多方计算安全模型1.行为模型2.安全门限 三、安全多方计算关键技术1.秘密共享(Secret Sharing, SS)2.不经意传输(Oblivious Transfer, OT)3.混淆电路(Garbled Circuit, GC) 参考资料 一、安全多方计算定义 安全多方计算(Secure Multi-Par…

安全多方计算 # 个人笔记

一个优美令人如痴如醉的领域。 Data is the oil of the 21st century 欢迎读者拍砖和提供本文修改建议。本文长期维护。 第二次编辑于2021/10/20,新增了部分阅读材料,调整了文章内容的组织。 0 研究背景 【最后更新于2021/10/20】 时代背景&#xff1…

Verilog操作符

操作符优先级表 Verilog中的大小(size)与符号 Verilog根据表达式中变量的长度对表达式的值自动地进行调整; Verilog自动截断或扩展赋值语句中右边的值以适应左边变量的长度; 当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算; 算术运算符 加(+)、减(-…

C语言——操作符详解

目录 一、算术操作符 二、移位操作符 三、位操作符 四、赋值操作符 五、单目操作符 六、关系操作符 七、逻辑操作符 八、条件操作符 九、逗号表达式 十、下标引用、函数调用和结构成员 以上就是C语言中涉及到得操作符,我将用代码实例配合说明&#xff0c…

教妹学Java(十一):操作符简介

大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。本篇文章通过我和三妹对话的形式来谈一谈“Java 中的操作符”。 教妹学 Java,没见过这么有趣的标题吧?“语不惊人死不休”,没错&…

位运算操作符详解

文章目录 一. 移位操作符>> <<1. 整数的二进制表示Ps:怎么确定一个数在内存中占几位呢&#xff1f; 2. <<左移操作符3. >>右移操作符 二. 位操作符& &#xff5c;^1. &按&#xff08;二进制&#xff09;位与2. &#xff5c;按&#xff08;二进…

【C语言】操作符详解

文章目录 前言一、操作符分类二、用法详述1.算数操作符2.移位操作符2.1左移操作符2.2右移操作符2.3警告&#xff1a; 3.位操作符3.1 & 按位与3.2 | 按位或3.3 \^ 按位异或 4.赋值操作符5.单目操作符5.1逻辑反操作符 !5.2 自增、自减操作符 、--5.3 按位取反 ~ 6.关系操作符…

集合类型的操作符(共10个)

注意&#xff1a;本次所有的举例均为s{1,2,3,4,5},t{4,5,6,7} 1.S - T 或 S.difference(T): 返回一个新集合&#xff0c;包括在集合S中但不在集合T中的元素 eg:2.S - T或S.difference_update(T): 更新集合S&#xff0c;包括在集合S,包括在集合S中但不在集合T中的元素。 eg: 3.S…

c++ 操作符大全-算术操作符、关系操作符、逻辑操作符、位操作符、自增自减操作符、赋值操作符、条件操作符、逗号操作符、操作符优先级

文章目录 操作符1、算术操作符2、关系操作符3、逻辑操作符4、位操作符5、自增自减操作符6、赋值操作符7、条件操作符8、逗号操作符9、操作符优先级 操作符 计算机程序可以看作一串运算式&#xff0c;可以对各种运算类型进行运算。这种运算不仅仅是代数上的加减乘除&#xff0c…

操作符详解—c语言

目录 1. 操作符分类&#xff1a; 2. 算术操作符 3. 移位操作符 3.1 左移操作符 3.2 右移操作符 4. 位操作符 5. 赋值操作符 6. 单目操作符 6.1 单目操作符介绍 7. 关系操作符 8. 逻辑操作符 9. 条件操作符 10. 逗号表达式 11. 下标引用、函数调用和结构成…

【SV】流操作符

流操作符 作用 把其后的数据打包成一个比特流 >>和<< 操作符>>把数据从左向右变成流&#xff0c;<<则把数据从右到左变成流。 注意&#xff1a; 可以指定一个片段宽度&#xff0c;把源数据按照这个宽度分段以后再转变成流。 例如 h{>>1{j}} 或…