FHE VM

作者: 雪落无留痕 | 来源:发表于2021-12-21 10:55 被阅读0次

    全同态加密(FHE)支持在加密状态下对数据进行计算,但使用FHE 需要非常专业的密码学知识。本文将介绍一种FHE 编译器,支持将高级语言(C++等)对未加密数据的处理,转换为高级语言加密数据的处理。

    该编译器基于Google XLS SDK 实现,采用现成的FHE库(TFHE),实现底层的FHE操作。

    该编译器采用模块化设计,可以兼容不同的FHE库,和不同的高级语言,

    FHE 介绍

    同态加密方案可分为:PHE(partially homomorphic encryption), FHE(Fully homomorphic encryption) 和 SHE(somewhat homomorphic encryption)。

    • PHE: 只支持部署同态操作,例如Pailler支持加法同态,RSA支持乘法同态;

    • FHE: 同时任意次数的支持加法和乘法操作;

    • SHE: 只支持有限次数的加法和乘法操作。

    FHE主要有基于LWE(Learning with Errors) 技术设计,依赖添加noise 进行加密。若noise足够小,可以实现解密。同态加密次数越多,增加的noise 越多。加法运算的noise可以忽略,但乘法运算会大幅增加noise。 当同态次数增加, 增加的noise 也越多,会导致密文无法解密。需要 bootstrapping 降低noise, 即利用密钥将密文转换为明文。

    FHE发展主要有三个阶段:

    • 第一代FHE 基于Gentry 方案,效率较差,一次乘法操作需要30mins;
    • 第二代FHE有BGV和BFV 方案,采用分层的同态加密技术,需要选择足够大的参数,满足指定的计算,而无需bootstrapping。 并且引入了SIMD 批量优化技术,减少延迟。
    • 第三代基于GSW方案,侧重于快速bootstrapping, 大幅提供bootstrapping的效率。但是不支持SIMD批量优化技术。TFHE 基于GSW实现。

    FHE 一个关键挑战是参数选择,必须选择正确的参数集避免bootstrapping, 确保安全,减少密文大小。并且还需要选择合适的编码方案,例如TFHE 适合二进制操作,BGV和BFV 适合数值运算。

    FHE 编译器

    FHE 编译器支持将一种高级语言转换为另一种高级语言,例如下所示,将处理明文的C++ 程序转换为处理密文的C++ 程序。

    FHE 编译器处理流程

    主要基于XLS 和 TFHE 实现,将C++ 程序转为 FHE-C++ 流程如下:

    模块化设计

    编译器模块化设计主要体现在以下三个方面:

    • 输入代码可以为任何转换为XLS 的语言;
    • 输出的FHE代码可以为任意支持FHE 库的语言;
    • FHE 后端可以为任何暴露API 的库。

    client-server交互

    编译器限制

    FHE编译器由于是data-independent, 不支持branching, 不支持 变长的循环和数组,也不支持递归。

    安全模型

    FHE编译器基于honest-curious 模型,服务端会执行正确的计算,但无法解密获得明文数据。但无法抵抗恶意服务器,因为FHE 无法提供结果的验证。

    参考

    https://arxiv.org/abs/2106.07893

    https://github.com/google/fully-homomorphic-encryption

    相关文章

      网友评论

          本文标题:FHE VM

          本文链接:https://www.haomeiwen.com/subject/cwtxqrtx.html