当前位置: 首页 > news >正文

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

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) 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实现

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

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

相关文章:

  • 单页面应用部署到iis上可以正常打开,刷新就404
  • 基于深度学习的心律异常分类算法
  • SpringAOP+自定义注解实现限制接口访问频率,利用滑动窗口思想Redis的ZSet(附带整个Demo)
  • Github 2024-03-28 开源项目日报 Top10
  • scala-idea环境搭建及使用
  • 扩展wordpress回收站功能
  • SpringBoot SpringMVC (详解)
  • 《数据结构学习笔记---第三篇》---单链表具体实现
  • 提升JavaScript代码质量的最佳实践
  • 2024最新华为OD机试试题库全 -【幼儿园圆桶的取出顺序】- C卷
  • LNMP架构之mysql数据库实战
  • easyExcel大数据量导出oom
  • [BT]BUUCTF刷题第9天(3.27)
  • 整数的反转
  • 离线数仓(八)【DWD 层开发】
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • iOS 系统授权开发
  • JAVA SE 6 GC调优笔记
  • JavaScript类型识别
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PAT A1050
  • PhantomJS 安装
  • PHP的Ev教程三(Periodic watcher)
  • Python学习笔记 字符串拼接
  • rabbitmq延迟消息示例
  • 关于List、List?、ListObject的区别
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 入口文件开始,分析Vue源码实现
  • 深度学习入门:10门免费线上课程推荐
  • 数组大概知多少
  • Nginx实现动静分离
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • # centos7下FFmpeg环境部署记录
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (02)vite环境变量配置
  • (poj1.3.2)1791(构造法模拟)
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十) 初识 Docker file
  • (小白学Java)Java简介和基本配置
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET Core中Emit的使用
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET开发人员必知的八个网站
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @SpringBootApplication 包含的三个注解及其含义
  • [ C++ ] STL_list 使用及其模拟实现
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件