OpenFHE: Open-Source Fully Homomorphic Encryption Library
Abstract
OpenFHE是一个开源FHE库,它结合了其他流行FHE库的设计理念,并包含了一些新的设计概念和想法。
最主要的设计特点可以概述如下:
(1) 从一开始就假设所有已实现的FHE方案都将支持Bootstrapping操作和scheme switching操作。
(2) 支持硬件加速。
(3) OpenFHE包含两种模式 : 用户友好模式和编译友好模式。
1. Introduction
2. Cryptographic Capabilities
OpenFHE包含所有公开的FHE方案的实现,支持整数、实数和布尔算数。所有的方案均基于RLWE问题,且仅支持2的幂次方的分圆环。
且该库也支持多方扩展的同态加密,包括多密钥FHE和密钥共享FHE。OpenFHE在设计时假设实现的方案均支持自举,且可以进行方案间的切换。
2.1 FHE Schemes
主流的FHE包含有3类。
第一类支持有限域上的整数模算术,包括BGV和BFV。
第二类支持Boolean电路,包括DM和CGGI。
第三类支持实数运算,为CKKS。
其中BGV、BFV和CKKS三者公用同一个设计,称其为BGV-like。
2.1.1 BGV-like schemes
OpenFHE实现了BGV、BFV和CKKS。为了高效性,目前仅仅支持这些方案的RNS变体。RNS技术可以将这些方案采用的大整数分解到一系列小整数,例如机器支持的64-bit。
BGV scheme
BFV scheme
CKKS scheme
OpenFHE实现了CKKS方案的两种RNS变体(基于使用的不同的Rescaling,又可以进一步分为四种模式)。
(1) 第一种RNS变体,对于每一层密文均假设具有相同的缩放因子 2 p 2^p 2p,其中RNS模链中 q i ≈ 2 p q_i\approx 2^p qi≈2p(除了RNS模链中的第一个素数,该模数用于解密,不是计算模)。
支持此模式的论文有:
《A full rns variant of approximate homomorphic encryption》
《Optimizad homomorphic encryption solution for secure genome-wide association studies》
(2) 第二种RNS变体,对于每一层密文使用不同的缩放因子。
支持此模式的论文有:
《Approximate homomorphic encryption with reduced approximation error》
OpenFHE支持四种rescaling模式,如下:
(1) FIXEDMANUAL : 每一层的缩放因子不改变,且modulus switching 操作需要用户手动执行。
(2) FIXEDAUTO : 每一层的缩放因子不改变,除了第一次同态乘法外,其余每次同态乘法之前都会自动调用rescaling操作。
(3) FLEXIBLEAUTO : 每一层使用不同的缩放因子,除了第一次同态乘法外,其余每次同态乘法之前都会自动调用rescaling操作。
(4) FLEXIBLEAUTOEXT : 每一层使用不同的缩放因子,每次同态乘法前都会自动调用rescaling操作。
更多的细节可以查看论文《Approximate homomorphic encryption with reduced approximation error》。
在选择rescaling模式时,遵循以下原则:
(1) FLEXIBLEAUTOEXT模式下,对相同的参数可以提供更高的精度。但是对于更快的模式(FIXEDMANUAL 或 FIXEDAUTO)来说,在相同参数下,此模式的计算复杂性通常高1.5倍。
(2) FIEXIBLEAUTO模式,在相同参数下,比FLEXIBLEAUTOEXT提供的精度大概少3-4bit,但是更快了。
(3) FIXEDMANUAL和FIXEDAUTO模式,在相同参数,比FIEXIBLEAUTO提供的精度大概多3-4bit的额外精度损失,但计算复杂度较小。
且如果是FHE专家使用FIXEDMANUAL将会得到比FIXEDAUTO更好的性能。
(4) AUTO 模式币FIXEDMANUAL模式更容易使用,因为所有的rescaling操作均由OpenFHE自动完成。
(5) 如果我们的目标是在相同的精度下,最小化模数Q,那么FLEXIBLEAUTOEXT模式是最好的选择。 在某些情况下,在相同的安全级别下,Q的减小也可以约减ring的维度,从而产生更好的性能。
另外,OpenFHE默认使用的模式是FLEXIBLEAUTOEXT。
2.1.2 DM-like schemes
2.2 Multiparty Extensions
OpenFHE还支持BGV、BFV和CKKS的多方扩展,包括有threshold FHE和Proxy ReEncryption。
2.5 Bootstrapping
我们期待OpenFHE可以支持对所有FHE方案进行Bootstrapping操作。Bootstrapping对于单一方案实现任意的计算是必要的,且对于不同方案之间的切换也是必要的。
当前OpenFHE中核心FHE方案的Bootstrapping操作介绍如下:
(1) 用于DM和CGGI方案的Bootstrapping采用如下论文中描述的设计:《Bootstrapping in FHEW-like cryptosystems》,用于LMKCDEY方案的Bootstrapping采用如下论文中描述的设计: 《Efficient FHEW bootstrapping with small evaluation keys, and applications to threshold homomorphic encryption》。
(2) CKKS方案的RNS版本的Bootstrapping使用如下论文的设计:
《Bootstrapping precision beyond the limit》
《Efficient bootstrapping for approximate homomorphic encryption with non-sparse keys》
《Improved bootstrapping for approximate homomorphic encryption》
《Bootstrapping for approximate homomorphic encryption》
(3) BGV暂时没实现Bootstrapping。
(4) BFV暂时没实现Bootstrapping。
(5) OpenFHE还支持CKKS多方版本的交互式Bootstrapping,见论文:
《Collaborative privacy-preserving analysis of oncological data using multiparty homomorphic encryption》