FHE 的应用场景

2024-03-03 02:20
文章标签 应用 场景 fhe

本文主要是介绍FHE 的应用场景,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文献:

  1. [MSM+22] Marcolla C, Sucasas V, Manzano M, et al. Survey on fully homomorphic encryption, theory, and applications[J]. Proceedings of the IEEE, 2022, 110(10): 1572-1609.

文章目录

  • FHE
    • First Generation
    • Second Generation
    • Third Generation
    • Fourth Generation
    • Others
    • 实现
  • 应用场景
    • Machine Learning
    • Fog Computing for IoT
    • Cloud Computing

综述文章 [MSM+22] 参考了超过 300 篇文献,对 FHE 做了不错的调查,内容包括:方案、攻击、应用、实现。

FHE

一些主流 FHE 方案的时间轴:

在这里插入图片描述

First Generation

FHE based on ideal lattices

[Gen09] 通过 SWHE 以及 Bootstrapping 技术,基于理想格第一次构造出了 FHE 方案。它考虑 L ( I ) \mathcal L(I) L(I)​ 的 “坏基” 和 “好基”,利用 Babai’s NP 加解密。原始的解密电路无法被自身支持,因此提出了 Squash 技术,将私钥写成 Sparse Subset Sum Problem(SSSP)的形式。最终的 FHE 基于三个假设:SSSP、BDD、Ideal-SVP,其数学结构难以高效实现,比明文运算慢了 1 0 9 10^9 109 倍,并且主理想存在弱点

在这里插入图片描述

FHE based on the AGCD problem

[DGHV10] 构造了基于 SSSP 以及 Approximate - Greatest Common Divisor(AGCD)问题的 FHE,给定随机的整数集合 { x 0 , ⋯ , x n } ⊆ Z \{x_0,\cdots,x_n\} \subseteq \mathbb Z {x0,,xn}Z,去寻找一个大整数 p p p,使得它是近似的公因子。后续 [CS15] 给出了从 LWE 到 AGCD 的归约,移除了 SSSP 假设。

在这里插入图片描述

Second Generation

FHE based on LWE and RLWE

[BV11] 基于 LWE 构造 FHE,提出了 re-linearization 以及 dimension-modulus reduction 技术,后者淘汰了 Squash 技术,从而不再需要 SSSP 假设。[BGV12] 定义了新的范式 Level FHE,对于先验的有限深度的电路不再需要 Bootstrapping 技术。[GHS12] 给出了 BGV 的 RNS 变体,[Bra12] 以及 [FV12] 给出了 BGV 的 scale invariant 变体 B/FV,[BEHZ16] 和 [HPS19] 给出了 BFV 的 RNS 变体,[KLPX18] 给出了 BFV 的大明文模数的变体。

在这里插入图片描述

FHE based on NTRU

[SS11] 略微修改了 NTRU(带噪),给出了到 RLWE 的归约。[LTV12] 基于 SS-NTRU 构造了 FHE,它基于 RLWE 和 Decisional Small Polynomial Ratio(DSPR)假设,后者是说区分 h = g f − 1 ( m o d q ) h=gf^{-1}\pmod{q} h=gf1(modq) 和均匀分布。[BLLN13] 给出了 LTV 的 scale invariant 变体 YASHE,移除了 DSPR 假设。

在这里插入图片描述

Third Generation

FHE based on LWE and RLWE

[GSW13] 基于 LWE 构造出了不需要 KSK 的 FHE,并且同态乘法的噪声增长仅为多项式级别(而 BGV/BFV 的则是拟多项式的因子)。[AP14] 将取模运算表示为算术函数(对称群,置换矩阵的乘法)而非布尔电路,提出了 AP-type 自举算法(密文分解 + 选择私钥)。[DM15] 基于 RLWE 问题构造了 FHEW,在单位群上使用 AP 算法给出了盲旋转。[CGGI16] 利用 [GINX16] 提出的 GINX-type 自举算法(二元秘密 + 选择密文)构造了 TFHE,并提出了更快的外积。[CLOT21] 给出了 PBS 的扩展。[LMK+23] 给出了基于自同构的盲旋转算法,支持任意分布的秘密,且 BK 规模较小。

在这里插入图片描述

FHE based on NTRU

[BIP+22] 提出了基于 NTRU 假设的 TFHE 变体 FINAL,由于 NTRU 比 RLWE 的元素更少,因此秘钥规模更小,自举速度更快。[XZD+23] 提出了采用 LMK-type 自举算法的 NTRU-FHE,使得 KS 与外积一样快。

Fourth Generation

FHE based on LWE and RLWE

[CKKS17] 提出了近似运算的 Level FHE,[CHKKS18a] 提出了 CKKS 的自举算法(近似取模),[CHKKS18b] 给出了 RNS 变体。后续的 [CCS19]、[HK20]、[BMTH21] 等大量工作改进了 CKKS 的自举算法。

在这里插入图片描述

Others

FHE based on FFI

[DHP+18] 提出了一种基于 Finite Field Isomorphism(FFI)问题的 FHE,说的是恢复两个有限域之间的同构映射是困难的。所设计的 SWHE 的同态运算是自然的,这类似于 GSW,不需要 KSK。

实现

Libraries

目前已经存在许多的同态算法的开源库

在这里插入图片描述

Compilers

不过开源库提供的 API 依旧需要人们较为了解它们的功能和原理,因此人们设计了编译器,可以将标准代码转换为某些同态库的实现。

在这里插入图片描述

Accelerators

最初 [Gen09] 方案比明文运算慢了一亿倍,后续的各种同态方案提升了 3-4 个数量级,但是依旧比明文运算慢得多。设计 FPGA 加速器,可以提升 1-2 个数量级,但是与 CPU 之间的数据移动很慢;设计 ASIC 加速器,可以提升 3-4 个数量级,速度接近明文运算

应用场景

Machine Learning

Support Vector Machines(SVMs)

SVMs 是一种广泛应用的分类模型。有一些工作结合 Additive HE(比如 Paillier)以及 MPC(例如 SS)实现隐私保护的 SVM 的训练和分类。

Neural Networks(NN)

将 NN 视为回归模型的泛化。有一些工作结合 Additive HE 和以及 Garbled Circuits 实现了大数据集上的峰岭回归。[DGL+16] 设计了 CryptoNets,它实现了以 Sigmoid 为激活函数的前馈网络的预测(不用于训练),计算性能有限。后续的一些工作研究了在大数据、共享框架下的 deep NN 上的同态训练。

Fog Computing for IoT

在物联网(IoT)中存在 device 以及 cloud service,雾计算指的是在两者之间靠近 device 的地方存在一层 fog layer,用于预处理 device 发送的数据,一般是 event-driven 以及 packet-by-packet 方式处理的。

我们让 collector 生成公私钥,让 sensors 对数据 FHE 加密,传递途中的 fog layer 做预处理,最后数据汇总到 collector 解密出明文。当然 sensor 能力有限,而 FHE 会密文膨胀,因此可以采用 hybrid homomorphic encryption(HHE),组合使用 FHE 以及 symmetric key encryption(SKE),但是 fog layer 需要同态解密 SKE 回到 FHE

在这里插入图片描述

Cloud Computing

Homomorphic Proxy Re-Encryption((HPRE)

代理重加密说的是 delegator 授权 proxy 能够将它的密文转化为 delegatee 的密文,从而后者可以在不知道前者的私钥情况下解密前者的密文。HPRE 的一种简单实现就是 delegator 利用 delegatee 的 pk 加密自身的 sk 发送给 proxy,于是 proxy 可以在不知道 sk 的情况下实现密文的重加密。缺点是一旦 proxy 和 delegatee 共谋,那么 delegator 的 sk 就泄露了。有一些工作可以抵御上述攻击。

在这里插入图片描述

Homomorphic Authenticated Encryption(HAE)

可认证的同态加密,它可以检验同态运算结果的正确性,这用于抵御云计算的随意返回无用运算。 homomorphic

一般 HAE 可以组合使用 HE 以及 homomorphic authentication(HA),后者是附加在密文上的 homomorphic signatures(HS)。可以证明,如果 HE 和 HA 都是 IND-CPA 安全的,那么 HAE 就是 IND-CCA1 安全的。也有对称版本的解决方案 homomorphic MACs。

在这里插入图片描述

Multi-Party Computation(MPC)

MK-FHE 天然可以构造出 2 轮通信的 MPC,不过只要有一个参与方失败那么整个协议都会失败。Threshold MK-FHE 可以解决这个问题。FHE 只能提供被动安全,还需要添加 ZKP 实现主动安全性。

在这里插入图片描述

这篇关于FHE 的应用场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768161

相关文章

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景