SECFLOAT: Accurate Floating-Point meets Secure 2-Party Computation

本文介绍了一种名为SECFLOAT的设计,为32位单精度浮点数在安全两方计算环境下的精确操作和数学函数提供加密友好的功能。它解决了标准库和IEEE标准在安全计算中的局限性,通过调整精度和使用自定义算法提高效率。
摘要由CSDN通过智能技术生成

2022 IEEE Symposium on Security and Privacy (SP)

1.概述

问题: 密码学工作中使用的现有函数是不精确的,标准库中使用的精确函数对加密不友好。
解决方案: 本文提出SECFLOAT用于32位单精度浮点数操作和数学函数的安全两方计算。

2.SECFLOAT设计

2.1 为什么标准库不适合2PC?

IEEE标准的不友好性: IEEE标准定义了浮点数的表示形式,但这些标准并不针对安全计算设计。IEEE标准要求使用无限精度的实数算术来计算原始操作,然后将结果舍入到最接近理想实数结果的浮点数。

Intel的MKL库的不适用性: 即使IEEE标准不指定数学库的精度,但通常情况下,数学库会计算精确结果。然而,标准的数学库通常使用高位宽(更多的位数) 来获取精确结果,这在安全计算中会导致巨大的开销。

2.3 本文贡献

  • 为精确的数学函数提供了加密友好的功能
  • 为基本浮点操作提供加密友好功能
  • 为32为浮点算数运算的安全双方计算建立了 S E C F L O A T 2 SECFLOAT^2 SECFLOAT2

2.2 SECFLOAT的设计

2.2.1为什么它的设计可以解决问题?

标准的数学函数库中的数学函数执行三部处理:

  • 范围缩减
  • 多项式近似
  • 输出补偿

假设 x = m 2 N x=m2^N x=m2N其中 m = 1 + δ m=1+\delta m=1+δ, δ \delta δ为double,存在函数 f ( x ) = l o g 2 ( x ) f(x)=log_2(x) f(x)=log2(x)

标准的数学函数:首先 l o g 2 ( x ) = N + l o g 2 ( 1 + δ ) log_2(x)=N+log_2(1+\delta) log2(x)=N+log2(1+δ),首先计算 y ≈ l o g 2 ( 1 + δ ) y \approx log_2(1+\delta) ylog2(1+δ)使用泰勒级数展开计算近似结果。最后计算 y + N y+N y+N四舍五入为浮点数 f f f返回结果。

加密友好的版本:将 q = 52 q=52 q=52改为 q = 27 q=27 q=27,但会带来误差。设计了新的log计算方式:当 N ≠ − 1 N \neq-1 N=1正常计算,相反 l o g 2 ( x ) = N + l o g 2 ( 1 − δ ′ ) log_2(x)=N+log_2(1-\delta^{'}) log2(x)=N+log2(1δ),其中 δ ′ = ( 1 − m 2 ) \delta^{'}=(1-\frac{m}{2}) δ=(12m)。使用分段多项式或者样条进行展开,并且使用自定义的加减方法计算结果。

2.2.2实现

为精确的数学函数提供了加密友好的功能:对于数学函数使用样条分段多项式来进行多项式近似实现了各种函数。

为基本浮点操作提供加密友好功能: 加减乘除

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值