2022 IEEE Symposium on Security and Privacy (SP)
目录
- 1.概述
- 2.SECFLOAT设计
- 2.1 为什么标准库不适合2PC?
- 2.3 本文贡献
- 2.2 SECFLOAT的设计
- 2.2.1为什么它的设计可以解决问题?
- 2.2.2实现
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) y≈log2(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}) δ′=(1−2m)。使用分段多项式或者样条进行展开,并且使用自定义的加减方法计算结果。
2.2.2实现
为精确的数学函数提供了加密友好的功能:对于数学函数使用样条和分段多项式来进行多项式近似实现了各种函数。
为基本浮点操作提供加密友好功能: 加减乘除