安全多方计算之七:门限密码系统

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 安全多方计算之七:门限密码系统


1. 定义

门限密码系统由分布式密钥生成算法、加密算法、门限解密算法三部分构成,定义如下:

(1)分布式密钥生成:这是一个由参与者共同生成公钥y yy的协议,协议运行结束后,每个参与者将获得一个关于私钥x xx的碎片、对应于该碎片的公钥密钥y i y_iyi,以及与私钥x xx相对应的公钥y yy

(2)加密算法:该算法的输入为公钥y yy和待加密的消息m mm,其输出为在公钥y yy下明文m mm对应的密文c cc

(3)门限解密: 这是一个由任意t tt个参与者P i 1 ′ , P i 2 ′ , … , P i t P_{i_1^{\prime}}, P_{i_2^{\prime}}, \ldots, P_{i_{t}}Pi1,Pi2,,Pit 运行的协议, 对于给定输人密文c cct tt个公开验证密钥h i 1 ′ , h i 2 ′ , … , h i t h_{i_1^{\prime}},h_{i_2^{\prime}}, \ldots, h_{i_{t}}hi1,hi2,,hit 以及 t tt 个碎片x i 1 ′ x i 2 ′ , … , x i t x_{i_1^{\prime}} x_{i_2^{\prime}}, \ldots, x_{i_{t}}xi1xi2,,xit, 协议运行结束后将输出 密文 c cc 和对应的明文 m mm

2. 分布式ElGamal加密

系统参数: p 、 q p、qpq是大素数, 且q / p − 1 q / p-1q/p1, 满足Z p Z_{p}Zp中离散对数问题是难解的,g ggZ p ∗ Z_{p}^{*}Zp的本原元,M MM 为明文消息。

n nn个参与者P 1 , P 2 , … , P n P_{1}, P_{2}, \ldots, P_{n}P1,P2,,Pn分别选取一个随机数x i ∈ Z p , i = 1 , 2 , … , n x_{i} \in Z_{p},i=1,2, \ldots, nxiZp,i=1,2,,n 计算y i = g x i   m o d   p y_{i}= g^{x_{i}} \bmod pyi=gximodp并公布。

私钥:x = ∑ i = 1 n x i   m o d   p x=\sum_{i=1}^{n} x_{i} \bmod px=i=1nximodp公钥:y = ∏ i = 1 n y i   m o d   p = g ∑ i = 1 n x i   m o d   p = g x   m o d   p y=\prod_{i=1}^{n} y_{i} \bmod p=g^{\sum_{i=1}^{n} x_{i}} \bmod p = g^x \bmod py=i=1nyimodp=gi=1nximodp=gxmodp

加密: 选取随机数r ∈ Z p r \in Z_{p}rZp, 计算E ( M ) = ( α , β ) = ( g r   m o d   p , y r M   m o d   p ) E(M)=(\alpha, \beta) = (g^{r} \bmod p, y^{r} M \bmod p)E(M)=(α,β)=(grmodp,yrMmodp)解密: n nn个参与者首先分别计算α x i   m o d   p \alpha^{x_{i}}\bmod pαximodp并公布, 然后共同计算出∏ i = 1 n α x i \prod_{i=1}^{n} \alpha^{x^{i}}i=1nαxi, 从而解出M MM:M = β ∏ i = 1 n α x i   m o d   p = β α ∑ i = 1 n x i   m o d   p = β α x   m o d   p M=\frac{\beta}{\prod_{i=1}^{n} \alpha^{x^{i}}} \bmod p =\frac{\beta}{\alpha^{\sum_{i=1}^{n} x^{i}}} \bmod p =\frac{\beta}{\alpha^x} \bmod pM=i=1nαxiβmodp=αi=1nxiβmodp=αxβmodp

推广

令消息M = M 1 M 2 ⋯ M n M=M_{1} M_{2} \cdots M_{n}M=M1M2Mn, n nn个参与者P 1 , P 2 , … , P n P_{1}, P_{2}, \ldots, P_{n}P1,P2,,Pn分别对消息 M 1 , M 2 , … , M n M_{1}, M_{2}, \ldots, M_{n}M1,M2,,Mn 加密。

系统参数: p 、 q p、qpq是大素数, 且q / p − 1 q / p-1q/p1, 满足Z p Z_{p}Zp中离散对数问题是难解的,g ggZ p ∗ Z_{p}^{*}Zp的本原元,M MM 为明文消息。

利用分布式 ElGamal 加密方式产生私钥/公钥对:n nn个参与者分别选取一个随机数x i ∈ Z p , i = 1 , 2 , … , n x_{i}\in Z_{p},i=1,2, \ldots,nxiZp,i=1,2,,n 计算y i = g x i   m o d   p y_{i}=g^{x_{i}} \bmod pyi=gximodp 并公布。

私钥:x = ∑ i = 1 n x i   m o d   p x=\sum_{i=1}^{n} x_{i} \bmod px=i=1nximodp公钥:y = ∏ i = 1 n y i   m o d   p = g ∑ i = 1 n x i   m o d   p = g x   m o d   p y=\prod_{i=1}^{n} y_{i} \bmod p=g^{\sum_{i=1}^{n} x_{i}} \bmod p = g^x \bmod py=i=1nyimodp=gi=1nximodp=gxmodp

加密: n nn个参与者分别选取随机数r 1 , r 2 , … , r n ∈ Z p r_{1}, r_{2}, \ldots, r_{n} \in Z_{p}r1,r2,,rnZp, 对消息M i M_{i}Mi 加密E ( M i ) = ( α i , β i ) = ( g r i   m o d   p , y r i M i   m o d   p ) E\left(M_{i}\right)= \left(\alpha_i ,\beta_i\right) =(g^{r_{i}} \bmod p, y^{r_{i}} M_{i} \bmod p)E(Mi)=(αi,βi)=(grimodp,yriMimodp)

根据同态性计算E ( M ) = E ( M 1 M 2 ⋯ M n ) = E ( M 1 ) E ( M 2 ) ⋯ E ( M n ) = ( α , β ) E(M)=E\left(M_{1} M_{2} \cdots M_{n}\right)= E(M_{1})E(M_{2}) \cdots E(M_{n})= (\alpha, \beta)E(M)=E(M1M2Mn)=E(M1)E(M2)E(Mn)=(α,β)其中,α = ∏ i = 1 n α i = g ∑ i = 1 n r i   m o d   p , β = ∏ i = 1 n β i = y ∑ i = 1 n r i M   m o d   p \alpha=\prod_{i=1}^{n} \alpha_{i}=g^{\sum_{i=1}^{n} r_{i}} \bmod p,\beta = \prod_{i=1}^{n} \beta_{i}=y^{\sum_{i=1}^{n} r_{i}} M \bmod pα=i=1nαi=gi=1nrimodp,β=i=1nβi=yi=1nriMmodp

解密: n nn 个参与者首先分别计算α x i   m o d   p \alpha^{x_{i}} \bmod pαximodp 并公布, 来共同计算出∏ i = 1 n α x i \prod_{i=1}^{n} \alpha^{x_{i}}i=1nαxi, 从而解出M MM:M = β ∏ i = 1 n α x i   m o d   p β α ∑ i = 1 n x i   m o d   p = β α x   m o d   p \quad M=\frac{\beta}{\prod_{i=1}^{n} \alpha^{x_{i}}} \bmod p \frac{\beta}{\alpha^{\sum_{i=1}^{n} x_{i}}} \bmod p=\frac{\beta}{\alpha^x} \bmod pM=i=1nαxiβmodpαi=1nxiβmodp=αxβmodp

3.有可信中心的门限ElGamal密码

(1) 分布式密钥生成

可信中心产生一个密钥x xx, 对应的公钥为y = g x   m o d   p y=g^{x} \bmod py=gxmodp,使用 ( t , n ) (t, n)(t,n) 门限方案在协议参与者中分享私钥x xx : 选择随机多项式f ( u ) = a t − 1 u t − 1 + … + a 2 u 2 + a 1 u + a 0 ∈ G F ( q ) [ u ] f(u)=a_{t-1} u^{t-1}+\ldots+a_{2} u^{2}+ a_{1} u+a_{0} \in G F(q)[u]f(u)=at1ut1++a2u2+a1u+a0GF(q)[u]P i P_{i}Pi 得到 x i = f ( u i ) , i = 1 , 2 , … , n x_{i}=f\left(u_{i}\right), i=1,2, \ldots, nxi=f(ui),i=1,2,,n

(2) 加密

选取随机数k ∈ Z p k \in Z_{p}kZp计算:E ( M ) = ( α , β ) = ( g k   m o d   p , y k M   m o d   p ) E(M)=(\alpha, \beta)= (g^{k} \bmod p, y^{k} M \bmod p)E(M)=(α,β)=(gkmodp,ykMmodp)

(3) 解密

P i P_{i}Pi 计算α i = α x i \alpha_{i}=\alpha^{x_{i}}αi=αxi并公布, 同时公布一个零知识证明以证明其计算的正确性;

每个协议参与者从公布的计算结果中选择t ttα i 1 , α i 2 , … , α i t \alpha_{i_1}, \alpha_{i_2}, \ldots, \alpha_{i_t}αi1,αi2,,αit, 则M = β α x = β ∏ s = 1 t α i s λ i s M=\frac{\beta}{\alpha^{x}}=\frac{\beta}{\prod_{s=1}^{t} \alpha_{i_s}^{\lambda_{i_s}}}M=αxβ=s=1tαisλisβλ i s \lambda_{i_s}λis 为 Lagrange 揷值系数, 满足 x = λ i 1 x i 1 + ⋯ + λ i t x i t x=\lambda_{i_1} x_{i_1}+\cdots+\lambda_{i_t} x_{i_t}x=λi1xi1++λitxit .

有可信中的门限ElGamal密码不能算严格意义上的门限密码,存在第三方可心中,参加密钥分享的用户必须完全信任分发者,相信其不会对加密数据执行解密操作。

4. 无可信中心的门限ElGamal密码

(1)分布式密钥生成

每个参与者P i P_{i}Pi 选择择随机数x i x_{i}xi 作为私钥, 计算 y i = g x i   m o d   p y_{i}=g^{x_{i}} \bmod pyi=gximodp, 并公布;

每个参与者收到广播的值后, 计算公钥:y = ∏ i = 1 n y i   m o d   p = g ∑ i = 1 n x i   m o d   p = g x   m o d   p y=\prod_{i=1}^{n} y_{i} \bmod p=g^{\sum_{i=1}^{n} x_{i}} \bmod p = g^x \bmod py=i=1nyimodp=gi=1nximodp=gxmodp每个参与者P i P_{i}Pi以秘密分发者身份执行 Feldman 的 VSS 方案, 在P 1 , P 2 , … , P n P_{1}, P_{2}, \ldots, P_{n}P1,P2,,Pn 之间分享秘密 x i x_{i}xi : 选择 t − 1 t-1t1 次随机多项式,f i ( u ) = a i , t − 1 u t − 1 + … + a i 2 u 2 + a i 1 u + a i o ∈ G F ( q ) [ u ] f_{i}(u)=a_{i, t-1} u^{t-1}+\ldots+a_{i 2} u^{2}+a_{i 1} u+a_{i o} \in G F(q)[u]fi(u)=ai,t1ut1++ai2u2+ai1u+aioGF(q)[u]其中x i = a i 0 = f i ( 0 ) x_{i}=a_{i 0}=f_{i}(0)xi=ai0=fi(0)

P i P_{i}Pi 计算 x i j = f i ( u j ) x_{i j}=f_{i}\left(u_{j}\right)xij=fi(uj) , 发送给 P j , j = 1 , 2 … , n P_{j}, j=1,2 \ldots, nPj,j=1,2,n ; P j P_{j}Pj 收到其他参与者的值 x i j = f i ( u j ) , i = 1 , 2 … , n x_{i j}=f_{i}\left(u_{j}\right), i=1,2 \ldots, nxij=fi(uj),i=1,2,n, 计算 s j = ∑ i = 1 n x i j = ∑ i = 1 n f i ( u j ) s_{j}=\sum_{i=1}^{n} x_{i j}=\sum_{i=1}^{n} f_{i}\left(u_{j}\right)sj=i=1nxij=i=1nfi(uj) 作为自己最终分享得到的关于私钥x xx的秘密碎片, 其验证公钥为y j = g s j   m o d   p = g ∑ i = 1 n x i j   m o d   p y_{j}=g^{s_{j}} \bmod p=g^{\sum_{i=1}^{n} x_{i j}} \bmod pyj=gsjmodp=gi=1nxijmodp(2) 加密

选取随机数k ∈ Z p k \in Z_{p}kZp,计算E ( M ) = ( α , β ) = ( g k   m o d   p , y k M   m o d   p ) E(M)=(\alpha, \beta) =(g^{k} \bmod p, y^{k} M \bmod p)E(M)=(α,β)=(gkmodp,ykMmodp)(3) 门限解密

每个参与者 P i P_{i}Pi 计算 α i = α s i \alpha_{i}=\alpha^{s_{i}}αi=αsi , 并公布. 同时公布一个零知识证明以证明其计算的正确性;

每个协议参与者从公布的计算结果中选择 t ttα i 1 , α i 2 , … , α i t \alpha_{i_1}, \alpha_{i_2}, \ldots, \alpha_{i_t}αi1,αi2,,αit, 则M = β α x = β ∏ s = 1 t α i s λ i s M=\frac{\beta}{\alpha^{x}}=\frac{\beta}{\prod_{s=1}^{t} \alpha_{i_s}^{\lambda_{i_s}}}M=αxβ=s=1tαisλisβλ i s \lambda_{i_s}λis 为 Lagrange 揷值系数, 满足 x = λ i 1 s i 1 + ⋯ + λ i t s i t x=\lambda_{i_1} s_{i_1}+\cdots+\lambda_{i_t} s_{i_t}x=λi1si1++λitsit .

相关文章
|
机器学习/深度学习 算法 数据可视化
神经⽹络可以计算任何函数的可视化证明
神经⽹络可以计算任何函数的可视化证明
|
8月前
|
安全 算法 数据安全/隐私保护
安全多方计算之四:比特承诺
安全多方计算之四:比特承诺
|
8月前
|
机器学习/深度学习 安全 物联网
安全多方计算之十:联邦学习与安全多方计算
安全多方计算之十:联邦学习与安全多方计算
|
8月前
【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络
【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络
148 0
差分方程模型:基金运作与管理
差分方程模型:基金运作与管理
|
算法
【最优潮流】基于分布式交变方向乘法器(ADMM)方法来求解带碳排放交易的直流动态最优潮流(Matlab代码实现)
【最优潮流】基于分布式交变方向乘法器(ADMM)方法来求解带碳排放交易的直流动态最优潮流(Matlab代码实现)
128 0
|
机器学习/深度学习 人工智能 决策智能
顶会是否应该降低接收门槛?用博弈论探索最优审稿和决策机制
顶会是否应该降低接收门槛?用博弈论探索最优审稿和决策机制
|
算法 Python
升维打击——算法问题的维度碾压
升维打击——算法问题的维度碾压
139 0
|
算法
陶哲轩攻克60年几何学难题!发现「周期性密铺猜想」在高维空间反例
陶哲轩攻克60年几何学难题!发现「周期性密铺猜想」在高维空间反例
193 0
|
机器学习/深度学习 人工智能 城市大脑
大咖说*计算讲谈社|如何提出关键问题?
“定义问题”往往比“回答问题”本身更重要。那什么问题是关键问题?如何提出关键问题?【计算讲谈社】第三讲上线,阿里巴巴研究员吴翰清(道哥)携学员针对该主题展开分享和讨论。
322 0
大咖说*计算讲谈社|如何提出关键问题?