【隐私计算】安全多方计算MPC中的高效三角函数计算

隐私计算中的非线性函数很难算,或者开销很大。三角函数更是如此,Squirrel文章中提出了一种高效的计算方式,感觉可以作为一种通用优化方案。

参考文献:Squirrel: A Scalable Secure Two-Party Computation Framework for Training Gradient Boosting Decision Tree [USENIX Security 23]

在基于秘密分享机制的两方安全计算场景下:

sin ⁡ ( x ) = sin ⁡ ( ⟨ x ⟩ 0 + ⟨ x ⟩ 1 ) = sin ⁡ ( ⟨ x ⟩ 0 ) ⋅ cos ⁡ ( ⟨ x ⟩ 1 ) + sin ⁡ ( ⟨ x ⟩ 1 ) ⋅ cos ⁡ ( ⟨ x ⟩ 0 ) \sin(x) = \sin(\langle x\rangle_0 + \langle x\rangle_1) = \sin(\langle x\rangle_0)\cdot \cos(\langle x\rangle_1) + \sin(\langle x\rangle_1)\cdot \cos(\langle x\rangle_0) sin(x)=sin(⟨x0+x1)=sin(⟨x0)cos(⟨x1)+sin(⟨x1)cos(⟨x0)

cos ⁡ ( x ) = cos ⁡ ( ⟨ x ⟩ 0 + ⟨ x ⟩ 1 ) = cos ⁡ ( ⟨ x ⟩ 0 ) ⋅ cos ⁡ ( ⟨ x ⟩ 1 ) − sin ⁡ ( ⟨ x ⟩ 1 ) ⋅ sin ⁡ ( ⟨ x ⟩ 0 ) \cos(x) = \cos(\langle x\rangle_0 + \langle x\rangle_1) = \cos(\langle x\rangle_0)\cdot \cos(\langle x\rangle_1) - \sin(\langle x\rangle_1)\cdot \sin(\langle x\rangle_0) cos(x)=cos(⟨x0+x1)=cos(⟨x0)cos(⟨x1)sin(⟨x1)sin(⟨x0)

其中,四项都可以在client和server端本地(local)计算,不带来任何通信开销。唯一的通信开销来自两次乘法,需要双方通过不经意传输(OT)共同计算。最后加法也是本地完成,不带来任何通信开销。

有了三角函数协议之后,就可以搭建sigmoid函数的协议:

在这里插入图片描述

在这里插入图片描述

至于指数 exp ⁡ \exp exp能不能用这样的方式?

exp ⁡ ( x ) = exp ⁡ ( ⟨ x ⟩ 0 + ⟨ x ⟩ 1 ) = exp ⁡ ( ⟨ x ⟩ 0 ) ⋅ exp ⁡ ( ⟨ x ⟩ 1 ) \exp(x) = \exp(\langle x\rangle_0 + \langle x\rangle_1) = \exp(\langle x\rangle_0) \cdot \exp(\langle x\rangle_1) exp(x)=exp(⟨x0+x1)=exp(⟨x0)exp(⟨x1)

我认为应该是不能的,因为 exp ⁡ ( ⟨ x ⟩ 0 ) , exp ⁡ ( ⟨ x ⟩ 1 ) \exp(\langle x\rangle_0), \exp(\langle x\rangle_1) exp(⟨x0),exp(⟨x1)两项即使本地计算,但是 exp ⁡ \exp exp不像 sin ⁡ , cos ⁡ \sin, \cos sin,cos,它是发散的,在本地计算是很可能会超出有限环的范围,发生溢出错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.zwX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值