(阅读笔记)ASTRA: High Throughput 3PC over Rings with Application to Secure Prediction

文章介绍

ASTRA是Harsh Chaudhari等人发布在CCSW’19上文章,链接为: ASTRA: High Throughput 3PC over Rings with Application to Secure Prediction
本文的主要工作是在半诚实和恶意条件下提升安全三方计算的效率,协议在 Z 2 l \mathcal{Z}_{2^l} Z2l整数环上实现。
在半诚实条件下,在线阶段每一个乘法门的总通信量是 2 ring elements,这在3PC中是首次实现的;在恶意条件下,在线阶段每一个乘法门的总通信量是 4 ring elements, 通信效率高于ABY3的 5 ring elements。
作者将提出的技术应用到了机器学习的安全推理预测任务上:linear regression, linear SVM regression, logistic regression, linear SVM regression,将输入和计算外包给不合谋的三台服务器,在半诚实和恶意条件下运行性能均是目前最优。

Definitions

考虑三方 P = { P 0 , P 1 , P 2 } \mathcal{P}=\{P_0, P_1, P_2\} P={P0,P1,P2}, f f f表示包含 2 输入加法门和乘法门的电路, D D D表示乘法电路的深度, I , O , A , M I,O,A,M I,O,A,M分别表示输入线、输出线、加法门和乘法门的数量。用 g = ( w x , w y , w z ) g=(w_x,w_y,w_z) g=(wx,wy,wz)表示电路的一个门,其中 w x w_x wx表示左输入线, w y w_y wy表示右输入线, w z w_z wz表示输出线。 { P 0 } \{P_0\} {P0}作为 “distributor”, 执行离线阶段的预处理过程, { P 1 , P 2 } \{P_1, P_2\} {P1,P2}作为 “evaluators”, 执行在线阶段的电路部分。“s” 表示半诚实模式, “m” 表示恶意模式。

Sharing 语义

[ ⋅ ] − s h a r i n g [\cdot]-sharing []sharing: 将 v v v以加法秘密分享的形式分享给 P 1 , P 2 P_1, P_2 P1,P2, 满足 v = v 1 + v 2 v=v_1+v_2 v=v1+v2
[  ⁣ [ ⋅ ]  ⁣ ] − s h a r i n g [\![\cdot]\!]-sharing [[]]sharing: P 0 P_0 P0持有 ( λ v , 1 , λ v , 2 ) (\lambda_{v,1}, \lambda_{v,2}) (λv,1,λv,2), P 1 P_1 P1持有 ( m v , λ v , 1 ) (m_v, \lambda_{v,1}) (mv,λv,1), 其中 v = m v − λ v , λ v = λ v , 1 + λ v , 2 v=m_v-\lambda_v,\lambda_v=\lambda_{v,1}+\lambda_{v,2} v=mvλvλv=λv,1+λv,2.
线性关系:
[ c 1 x + c 2 y ] = ( c 1 x 1 + c 2 y 1 , c 1 x 2 + c 2 y 2 ) = c 1 [ x ] + c 2 [ y ] [c_1x+c_2y]=(c_1x_1+c_2y_1, c_1x_2+c_2y_2)=c_1[x]+c_2[y] [c1x+c2y]=(c1x1+c2y1,c1x2+c2y2)=c1[x]+c2[y],
[  ⁣ [ c 1 x + c 2 y ]  ⁣ ] = ( c 1 m x + c 2 m y , c 1 [ λ x ] + c 2 [ λ y ] ) = c 1 [  ⁣ [ x ]  ⁣ ] + c 2 [  ⁣ [ y ]  ⁣ ] [\![c_1x+c_2y]\!]=(c_1m_x+c_2m_y,c_1[\lambda_x]+c_2[\lambda_y])=c_1[\![x]\!]+c_2[\![y]\!] [[c1x+c2y]]=(c1mx+c2my,c1[λx]+c2[λy])=c1[[x]]+c2[[y]].

Semi-honest security

Protocol Π 3 p c s \Pi_{3pc}^s Π3pcs包括三个阶段: input-sharing, circuit-evaluation和output-reconstruction.

Input-shaing 阶段

Protocol Π S h s ( P i , x ) \Pi_{Sh}^s(P_i, x) ΠShs(Pi,x)使得三方将输入的 x x x分享为 [  ⁣ [ x ]  ⁣ ] − s h a r i n g [\![x]\!]-sharing [[x]]sharing。具体实现为,离线阶段采样 λ x \lambda_x λx, 在线阶段 P i P_i Pi计算 m x m_x mx并发送给 P 1 , P 2 P_1, P_2 P1,P2.
离线阶段结束后各方持有信息:

i P 0 P_0 P0 P 1 P_1 P1 P 2 P_2 P2
0 λ x , 1 , λ x , 2 \lambda_{x,1}, \lambda_{x,2} λx,1,λx,2 λ x , 1 \lambda_{x,1} λx,1 λ x , 2 \lambda_{x,2} λx,2
1 λ x , 1 , λ x , 2 \lambda_{x,1}, \lambda_{x,2} λx,1,λx,2 λ x , 1 , λ x , 2 \lambda_{x,1}, \lambda_{x,2} λx,1,λx,2 λ x , 2 \lambda_{x,2} λx,2
2 λ x , 1 , λ x , 2 \lambda_{x,1}, \lambda_{x,2} λx,1,λx,2 λ x , 1 \lambda_{x,1} λx,1 λ x , 1 , λ x , 2 \lambda_{x,1}, \lambda_{x,2} λx,1,λx,2

在这里插入图片描述

Circuit-evaluation阶段

在这里插入图片描述
在这里插入图片描述

Output-reconstruction阶段

为了重建输出 y y y, 由于每一方均只缺少一个share,因此其他任意一方将确实的share发送给它,就可以计算得到 y = m y − λ y , 1 − λ y , 2 y=m_y-\lambda_{y,1}-\lambda_{y,2} y=myλy,1λy,2

完整协议

在这里插入图片描述

Malicious security

与半诚实情况类似,也包括三个阶段。

Input-sharing和output-reconstruction 阶段

在恶意情况下,我们需要保证诚实方拥有的shares是一致的,但是如果 P 0 P_0 P0是腐败方,那么它发送给 P 1 , P 2 P_1, P_2 P1,P2 m x m_x mx可能不一致,为了解决这个问题, P 1 , P 2 P_1, P_2 P1,P2互换 H ( m x ) H(m_x) H(mx), 当出现不一致时就abort。
在重建阶段,拥有share的两方分别发送share和hash给第三方用于重建,二者不一致时就abort。
在这里插入图片描述

Circuit-evaluation 阶段

Π A d d \Pi_{Add} ΠAdd是本地计算,所以不受影响, Π M u l s \Pi_{Mul}^s ΠMuls则可能面临交互不一致的问题。当 P 0 P_0 P0被腐败时,离线阶段可能存在 γ x y ≠ λ x λ y \gamma_{xy}\neq\lambda_x\lambda_y γxy=λxλy的问题;当 P 1 ( o r P 2 ) P_1(or P_2) P1(orP2)被腐败,在线阶段交给另外一个诚实方的 m z m_z mz的share可能是错误的,从而重构出错误的 m z m_z mz
假设 P 1 P_1 P1是诚实方,为了检查它重构的 m z m_z mz是否正确,它向 P 0 P_0 P0发送 m x , m y m_x,m_y mx,my, 由于 P 0 P_0 P0知道 λ x , λ y \lambda_x,\lambda_y λx,λy, 它就可以重构 m z m_z mz并发送给 P 1 P_1 P1用来验证,但是这样会泄露隐私,因此 P 1 P_1 P1发送给 P 0 P_0 P0时需要加上一个掩膜,即 P 1 P_1 P1发送 m x ∗ = m x + δ x , m y ∗ = m y + δ y m_x^*=m_x+\delta_x, m_y^*=m_y+\delta_y mx=mx+δx,my=my+δy, P 0 P_0 P0计算 m z ∗ = − m x ∗ λ y − m y ∗ λ x + λ z + 2 γ x y . m_z^*=-m_x^*\lambda_y-m_y^*\lambda_x+\lambda_z+2\gamma_{xy}. mz=mxλymyλx+λz+2γxy.
注意到:
在这里插入图片描述
假设 P 0 P_0 P0知道 χ = δ x λ y + δ y λ x − γ x y , \chi=\delta_x\lambda_y+\delta_y\lambda_x-\gamma_{xy}, χ=δxλy+δyλxγxy,它就可以计算 m z ∗ + χ m_z^*+\chi mz+χ并发送给 P 1 P_1 P1, 从而 P 1 P_1 P1可以验证 m z m_z mz的正确性。 P 2 P_2 P2同理。
为了使得 P 0 P_0 P0获得 χ \chi χ, 如果向 P 0 P_0 P0公开 χ \chi χ,那么 P 0 P_0 P0会根据自己的信息推测出 m x m y m_xm_y mxmy, 因此我们需要给 χ \chi χ加上一个掩码 δ z \delta_z δz, 即计算 δ x λ y + δ y λ x + δ z − γ x y \delta_x\lambda_y+\delta_y\lambda_x+\delta_z-\gamma_{xy} δxλy+δyλx+δzγxy. 让 P 1 , P 2 P_1, P_2 P1,P2随机采样 δ x , δ y , δ z \delta_x, \delta_y, \delta_z δx,δy,δz, 计算 [ χ ] P i = χ i [\chi]_{P_i}=\chi_i [χ]Pi=χi并发送给 P 0 P_0 P0, P 0 P_0 P0相加得到 χ \chi χ. 这里引入一个新问题,如果 P 1 , P 2 P_1, P_2 P1,P2有一个是恶意方,那么需要保证发送的 χ \chi χ是正确的。
总结一下,我们遗留下来两个问题:1)当 P 0 P_0 P0作恶时, γ x y ≠ λ x λ y \gamma_{xy}\neq\lambda_x\lambda_y γxy=λxλy; 2) 当 P 1 P_1 P1 P 2 P_2 P2作恶时, χ \chi χ的不正确发送。我们可以用三元组解决这两个问题。令 a = δ x − λ y , b = δ y − λ y , c = ( δ z + δ x δ y ) − χ a=\delta_x-\lambda_y, b=\delta_y-\lambda_y, c=(\delta_z+\delta_x\delta_y)-\chi a=δxλy,b=δyλy,c=(δz+δxδy)χ
在这里插入图片描述
( [  ⁣ [ a ]  ⁣ ] , [  ⁣ [ b ]  ⁣ ] , [  ⁣ [ c ]  ⁣ ] ) ([\![a]\!], [\![b]\!], [\![c]\!] ) ([[a]],[[b]],[[c]])是一个三元组 ( c = a b c=ab c=ab) 当且仅当 P 0 P_0 P0正确分享了 γ x y \gamma_{xy} γxy并重构了 χ \chi χ。这是因为:
在这里插入图片描述
Protocol Π p r c \Pi_{prc} Πprc验证(a,b,c)是否是一个乘法三元组,其中(d,e,f)是一个有效的三元组。
在这里插入图片描述

完整协议

在这里插入图片描述

ML协议

点积

给定d为向量 p → , q → \overrightarrow{p}, \overrightarrow{q} p ,q , 计算其点积 p → ⨀ q → \overrightarrow{p}\bigodot \overrightarrow{q} p q , 如果直接使用乘法协议,那么其通信复杂度与d线性相关,因此在离线阶段, P 0 P_0 P0直接以 [ ⋅ ] − s h a r i n g [\cdot]-sharing []sharing的形式分享 γ p q = λ p → ⨀ λ q → \gamma_{pq}=\overrightarrow{\lambda_p}\bigodot \overrightarrow{\lambda_q} γpq=λp λq , 而不是对每一维分享 λ p i λ q i \lambda_{p_i}\lambda_{q_i} λpiλqi. 在线阶段也不是分别重构每一维 m p i q i m_{p_iq_i} mpiqi,而是每一方在本地求和计算,直接重构 m u , u = p → ⨀ q → m_u, u=\overrightarrow{p}\bigodot \overrightarrow{q} mu,u=p q .
在这里插入图片描述

比较

给定算数分享 [  ⁣ [ u ]  ⁣ ] , [  ⁣ [ v ]  ⁣ ] [\![u]\!], [\![v]\!] [[u]],[[v]], 要比较 u , v u,v u,v的大小,通用方法是计算 a = u − v a=u-v a=uv, 然后提取 a a a的最高有效位 m s b ( a ) msb(a) msb(a)。我们利用 s i g n ( a ⋅ r ) = s i g n ( a ) ⊕ s i g n ( r ) sign(a\cdot r)=sign(a)\oplus sign(r) sign(ar)=sign(a)sign(r), 把对a的判断转换为对 r a ra ra r r r的符号位的判断。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值