支持多数据源安全共享的分布式大数据协作系统研究
2022-06-21魏啸磊,林苏,潘越,胡奇,夏天
魏啸磊,林苏,潘越,胡奇,夏天
摘 要: 同态加密算法和安全多方计算技术可在数据加密的情况下进行多方参与的计算,可以有效的解决数据泄露问题。对常见的四种同态加密库SEAL、HElib、PALISADE、Pyfhel进行了分析和选择,综合运行速度和开发效率因素,选择Pyfhel同态加密库,来设计与实现支持多数据源安全共享的分布式大数据协作系统。该系统为数据共享场景提供了一种可行的解决方案。
关键词: 同态加密; 数据共享; Pyfhel; 多方计算
中图分类号:TP393 文献标识码:A 文章编号:1006-8228(2022)06-10-04
Research on distributed big data collaboration system supporting
secure sharing of multiple data sources
Wei Xiaolei, Lin Su, Pan Yue, Hu Qi, Xia Tian
(Wenzhou University, College of Computer Science & Artificial Intelligence, Wenzhou, Zhejiang 325035, China)
Abstract: Homomorphic encryption algorithm and secure multi-party computing technology can carry out multi-party computing under the condition of data encryption, which can effectively solve the problem of data leakage. In this paper, four common homomorphic encryption libraries SEAL, HElib, PALISADE and Pyfhel are analyzed and selected. Considering the running speed and development efficiency, Pyfhel is selected to design and implement a distributed big data collaboration system that supports the secure sharing of multiple data sources. The system provides a feasible solution for data sharing scenarios.
Key words: homomorphic encryption; data sharing; Pyfhel; multi-party computation
0 引言
随着互联网和大数据等技术的不断发展,我们步入了大数据时代,数据共享、数据分析等应用的使用越来越普遍,海量数据的交叉计算可以为科研、医疗、金融等提供更好支持,但是数据的共享随之带来的是数据的泄露的问题。许多企业或组织出于信息安全或利益的考虑,内部数据是不对外开放的,但是这也会带来“数据孤岛”的问题,数据的价值无法体现出来。同态加密算法和安全多方计算技术可以在不泄露明文的情况下,实现多方参与的数据协同计算,实现安全的数据流通,达到数据“可用不可见”[1]。
同态加密,英文称之为Homomorphic Encryption,HE是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,直接对密文进行同态计算,得到的密文计算结果与直接用明文进行计算的结果相一致的算法。基于同态加密的安全多方计算技术旨在解决一组互不信任的参与方之间保护隐私的协同计算问题,在不泄露原始数据前提下,为数据需求方提供多方协同计算能力。
1 同态加密算法库
同态加密算法可以分为全同态加密算法和半同态加密算法。其中,全同态加密算法是指支持对密文进行任意形式的计算;半同态加密算法是指支持对密文进行部分形式的计算,如仅支持加法或乘法计算[6]。全同态加密算法在不断的发展中依次出现了Gentry、BGV、BFV、GSW、CKKS等方案。一个同态加密库可以支持多种算法,如SEAL可以支持BFV和CKKS方案、HElib可以支持CKKS方案、PALISADE可以支持BGV、BFV、CKKS等方案。Pyfhel库是基于SEAL/PALISADE/HElib开发的。
1.1 四种同态加密库的简介和调用方法
SEAL是微软开源的同态加密库,有C++和C#版本,并逐渐推广应用到Python、Javascript和TypeScript。它支持不对称和对称加密算法,提供了两种机制的同态加密,BFV和CKKS[2]。它支持Windows、Linux、macOS、FreeBSD、Android等操作系統平台,并支持
.NET开发,使开发人员编写同态加密应用程序更为便捷。在Windows中SEAL的安装需要借助Visual studio进行安装和配置。首先需要安装C++编译运行环境,然后下载SEAL源码文件,编译解析源码文件,生成seal.lib文件。在调用时,需添加该lib文件的附件库目录、附加包含目录和附件依赖项。总体上,安装相对比较复杂。
HElib由C++编写,使用了NTL数学库,可实现无自举的同态加密和近似数算数的同态加密,支持密文的加法和乘法。安装HElib需要先下载HElib源码和HElib依赖。有两种不同的方式来构建和安装HElib。一种是自动下载和构建GMP和 NTL依赖项,并将库打包在可重定位的文件夹中。第二种要求自行安装GMP与NTL并在系统中可用。调用时需要添加头文件目录、lib文件目录、库文件目录。HElib适用于Linux、MacOS等平台[4]。
PALISADE是一个由Duality公司研发的基于C++编写的通用综合格密码库。该库是模块化系统结构,侧重于可用性。在增加安全性方面,它运用了数字签名、基于身份的加密和基于属性加密的密文策略。在性能方面,PALISADE有效地实现了余数系统算法,提高了全同态加密方案的性能。PALISADE拥有跨平台性,支持在Linux、Windows、macOS平台上安装,同时可以使用CMake/make自定义安装。以Linux安装为例,首先需要下载MSYS2,然后下载对应源码进行编译和构建,调用方式与HElib类似[5]。
Pyfhel是支持Python语言的一个同态加密库,底层由C++语言开发,使用SEAL/HElib/PALISADE作为后端。支持密文的整型和双精度浮点型数的加法、乘法、减法和幂指数的运算。Pyfhel适用于任何拥有Python环境的平台。安装时,只需要运行pip install pyfhel命令,安装简单。调用时只需导入Pyfhel库,并调用库中函数即可[3]。
1.2 四种同态加密库比较与选择
本文在Linux Kali2020虚拟机(CPU数量为1、内核为1,内存为2G)中对上述四个同态加密库进行了运行时处理速度的测试。其中,统一运用CKKS全同态加密方案,每种程序运行次数都经过10轮并取平均,结果如表1和表2所示。由表1可见,其中SEAL和Pyfhel运行时间增加是比较平稳的,而HElib和PALISADE当次数较少时运行速度较优,但当次数较大时运行时间将会大幅度增加。由乘法同态测试发现,乘法会产生大量噪声,所以不同算法对乘法的运算次数的支持会有限制,表2中标注了实验中测到的运算上限。在乘法运算速度上,SEAL和HElib比较快,但在乘法运算次数上会比PALISADE略差。
综合上述结果的比较,发现Pyfhel同态加密库在加法的运算速度和乘法的运算次数上性能适中,而安装和调用方面是四种库中最便捷的,所以我们选择了Pyfhel同态加密库和Python语言来实现我们的支持多数据源安全共享的分布式大数据协作系统。
2 运用pyfhel实现支持多数据源安全共享的分布式大数据协作系统
2.1系统总体设计
数字经济时代,企业或组织需要在数据流通和交易方面进行深度合作。通过各方数据协同计算,可以大程度的利用数据的价值,提升生产效率,推动产业创新。而保护各方数据在共享计算时不被泄露是企业或组织参与数据共享合作的前提条件。例如银行需要对企业做出评估,需要政府方面的数据信息来进行计算。如果直接把数据给银行,会产生数据泄露的问题,因此,亟需运用同态加密和安全多方计算技术开发一个第三方平台使其能够获得政府加密以后的数据并进行计算,并将结果返回给银行。
根据多方数据安全共享的需求,运用同态加密和多方计算技术设计与开发支持多数据源安全共享的分布式大数据协作系统。系统包括密钥生成、密钥重置、加密、解密、计算、系统管理等六个主要功能模块,其中系统管理包括风控模型管理、数据源管理、用户管理。系统整个流程是客户端负责产生和更新同态加密所需的密钥对,并将加密参数、公钥等除私钥以外文件上传到平台上保存;数据源端从平台获取公钥来加密所需的数据,并将加密后的数据发往平台进行计算;平台根据分控模型将收到的数据进行同态加密计算,并将得到的结果发送给客户端;客户端用私钥对计算后的密文进行解密得到明文结果。在整个业务交互过程中,除了数据源,其他参与方都无法获得明文数据,因此保障了数据共享的保密性、完整性。各模块与系统的三个组成部分的关系如图1所示。
2.2 关键模块设计
下文就密钥生成、密钥重置、系统管理、加密、计算、解密等系统关键功能模块展开设计介绍。
⑴ 密钥生成:直接调用Pyfhel库,生成密钥对,然后将公私钥分别存到两个文件中。
⑵ 密钥重置:对密钥进行定时更新,增加系统安全性。客户端具有密钥重置功能,在第一次密钥生成之后,会在本地生成一个up.dat文件,该文件存储着密钥本次生成或更新的时间戳,如果该时间戳和当前时间相差超过更新周期,则会自动地重新生成加密参数、公钥、私钥等文件,并将除私钥以外的文件上传到平台上进行保存或更新。
⑶ 系统管理:包括风控模型管理、數据源管理、用户管理,如图2所示。风控模型为系统中的计算模型。用户管理是主要对不同角色用户的管理。
⑷ 加密:在数据源端加载执行。当数据源端收到平台请求并确定请求的数据范围后,将会从平台下载相应客户端的加密参数、公钥等文件,然后从本地逐一调取数据进行加密操作,加密调用的是Pyfhel库中的encode函数和encrypt函数,最后将密文发送给平台。
⑸ 计算:平台接收到计算请求后,根据风控模型向数据源请求数据,并在收到数据源发送的密文数据后进行计算,如图3所示。计算调用的是Pyfhel同态加密库中的运算函数。针对计算过程中的噪音问题,系统加入了判决操作,通过noiseBudget参数是否为0判断计算结果的正确性,并将正确的密文结果发送给客户端。
⑹ 解密:客户端在接收到平台发送的密文结果后,运用私钥文件和Pyfhel库中decrypt函数对密文结果进行解密,然后再用decode函数进行解码得到明文结果。
2.3 系统实现
该系统是一个Web平台,前端运用Bootstrap框架,后端运用Django框架,前后端的交互运用Ajax技术,数据存储运用的是MySql技术,有关同态加密计算方面运用的是Python的Pyfhel同态加密库。系统的技术实现如图4所示。为了提高系统客户端的兼容性,客户端页采用Web形式实现,主要包括密钥生成、管理风控模型功能。平台管理员具有管理企业用户和数据源的功能。其中,企业用户即需要数据进行风控模型计算获得运算结果的客户端用户。数据源管理员可登录平台查看数据源使用情况,主要包括数据源的ID、名称、IP地址、端口号、被使用的次数等信息。
3 结束语
本文在比较了四种同态加密库以后,选择使用Python语言和Pyfhel同态加密库,设计和实现了一个支持多数据源安全共享的分布式大数据协作系统。该系统能够解决企业风控值计算场景中数据共享的安全性问题。该方案在不泄露源数据的情况下进行安全共享计算,可以让数据的价值得以体现,该方案可以推广和衍生到更多共享的场景中。在未来,我们将结合区块链技术对同态加密算法做更深入的研究,使其能够支持更大规模的计算。
参考文献(References):
[1] 郭娟娟,王琼霄,许新,等.安全多方计算及其在机器学习中的应用[J].计算机研究与发展,2021,58(10):2163-2186
[2] Yatao YANG, Yang ZHAO, Juanmei ZHANG, Jierun HUANG, Yuan GAO. Recent Development of Theory and Application on Homomorphic Encryption[J]. Journal of Electronics and Information Technology,2021,43(2):475-487
[3] Ibarrondo,&Gomez,Pyfhel.Retrieved[EB/OL].(2021-09-06)[2021.11.08].https://github.com/ibarrond/Pyfhel.
[4] Halevi, S., Shoup, V.: Algorithms in HElib. In: Garay, J.A.,Gennaro, R. (eds.) CRYPTO 2014, Part I. LNCS, vol. 8616,pp.554-571. Springer, Heidelberg[EB/OL].(2014)[2021.11.08].http://eprint.iacr.org/2014/106
[5] Polyakov,PALISADEDevelopment. Retrieved[EB/OL].(2020)[2021.11.08].https://gitlab.com/pallisadeli sade/palisade-development
[6] 馮超.全同态加密的相关算法研究[D].山东大学,2015