基于Paillier 的并行同态加密及应用研究*

2021-11-24 05:50刘国辉张春婷尚书智李岳泽
科技创新与应用 2021年32期
关键词:同态私钥公钥

刘国辉,吴 迪,曲 直,张春婷,尚书智,李岳泽,肖 楠

(1.国网黑龙江省电力有限公司信息通信公司,黑龙江 哈尔滨 150001;2.黑龙江省电力调度实业有限公司,黑龙江 哈尔滨 150001)

电网作为国民经济的命脉,每天产生海量的电力数据,这些数据一直被认为是我国经济发展的“晴雨表”。随着信息与通信技术的快速发展,电网系统变得更加先进、高效和智能。与此同时,由于系统复杂性的增加,引发了人们对于电网的数据安全和隐私问题的担忧。如果没有适当地保护,电网极易受到各种非法攻击。例如,一旦获取用户的用电行为数据,通过适当的数据分析,不法分子就可以获得其个人信息和日常习惯,从而对用户的隐私造成威胁。当判断出房屋何时空置时,不法分子可能趁着住户不在家时破门而入,后果不堪设想。因此,电网如何以安全有效的方式为用户提供隐私保护已成为当前学术研究的热点课题。

同态加密技术可以为数据提供必要的隐私保护[1],该技术允许在不解密的情况下对密文直接进行运算。即在密文上执行数学运算的结果解密后,与在明文上直接执行相同数学运算的结果相同。它可以在不受信任的环境中执行各种操作,而无需透露每个操作的机密数据,最后将结果以密文的形式返回给数据拥有者。与传统的加密算法相比,该方法不需要在云和数据拥有者之间进行频繁的加密和解密操作,可以有效地减少通信和计算资源的开销。用户的私人数据以密文形式保存在云中,服务提供商不知道数据内容,这样可以防止他们通过非法盗用和篡改用户数据来获取用户的隐私。同态加密允许对加密数据进行分析和计算,提高了电力数据的可用性和安全性,同时保护了用户敏感信息的安全性和私密性。同态加密技术为电网充分利用云计算资源进行海量电力数据分析和处理提供了安全基础和保障,很好地解决了电网用户的数据隐私安全问题。

加密技术可以分为对称加密与非对称加密两种方式。对称加密是一种古老的加密方式,其消息发送方和接收方使用同一个密钥来加密和解密消息。而非对称加密则使用一对密钥(pk,sk),其中pk 指公共密钥(简称“公钥”),而sk 指私有密钥(简称“私钥”)。虽然对称方式的加密与解密速度快,但是其安全性不高。因此本文采用非对称加密方式,其安全性较高,只是加密与解密的速度相对较慢。本文旨在研究如何提升非对称加密的速度。分布式技术能够并行地处理数据,可以有效提高数据加密与解密的速度。文献[2]提出结合分布式计算MapReduce[3]进行数据加密搜索策略。但Spark 相比于MapReduce 有一定的运算效率优势[4]。本文基于Paillier 算法[5],结合分布式技术Apache Spark[6],提出了一种并行同态加密算法,极大地提高了数据加密与解密的速度,可满足实时性的场景需求。

1 相关研究

1.1 Paillier 算法

Paillier 算法是一种具有加法同态性的非对称加密算法。Paillier 算法包含三个部分:密钥生成(CreateKey)、加密过程(Enc)和解密过程(Dec)。

1.1.1 密钥生成CreateKey

1.1.2 加密过程Enc

给定一条明文消息m∈Zn和公钥pk=(n,g),选取一个随机数r∈Zn*,可以计算出这条消息的密文c,其中

1.1.3 解密过程Dec

给定消息的密文c 和私钥sk=(λ,μ),可以恢复出明文m,其中:

Paillier 加密具有可随机性、不可区分性,并且具有以下加法同态性:

其中,m1、m2是两个随机消息,r1、r2是两个随机数,Dec(·)是解密函数,Enc(·)是加密函数,Enc(m1)、Enc(m2)分别是m1、m2经过相同密钥加密生成的密文。

1.2 Spark 技术

Apache Spark 是一个开源的、低延迟的内存集群计算平台,用于快速而简单地处理大量数据。它最初由加州大学伯克利分校的AMPLab 开发,后来成为Apache 软件基金会的一部分。它属于Hadoop 开源框架,并建立在Hadoop 分布式文件系统(HDFS)之上。Hadoop 作为一种并行数据处理的框架,传统上使用MapReduce 模型处理数据,该模型由Map 和Reduce两个阶段组成。在Map 阶段,对数据进行排序或过滤,生成键值对。然后,在Reduce 阶段执行汇总操作。但是这个过程需要较长时间,因为其数据处理工作流程的每个阶段都有一个Map 和一个Reduce 阶段,而且在处理的每个阶段之间都要向计算机硬盘写入数据或从计算机硬盘读入数据。

Spark 框架对MapReduce 模型进行了改进,提供了基于内存的集群计算,可用于实时流数据处理和快速交互式查询,加快了迭代运算的执行速度。Spark 使Hadoop 集群中的应用程序在内存中的运行速度提高了100 倍,即使在磁盘上运行时也提高了10 倍[6]。Spark 的核心是提出了弹性分布式数据集(Resiliennt Distributed Datasets,RDD)[7]的概念,RDD 旨在支持内存数据存储,并以一种既容错又高效的方式在整个群集中分布。它消除了对磁盘读取和写入的时间,从而提升数据处理的速度。

2 方法

本文主要基于Paillier 算法进行同态加密运算,并使用单机和并行两种方式进行对照运算。样例数据来自联合循环电厂数据,详细数据介绍见2.1。

2.1 数据来源

本文使用的数据来自于联合循环发电厂(CCPP)收集的数据[8],此发电厂已设置为满负荷运行。其功能包括每小时平均环境变量温度(AT)、环境压力(AP)、相对湿度(RH)和排气真空(V),以预测工厂的每小时净电能输出(EP)。

2.2 Spark 并行同态加密

如图1 所示,本节使用Paillier 库对联合循环发电厂的数据进行同态加密。Paillier 同态加密首先会生成公钥和私钥,其中公钥是用来对数据进行加密,私钥是用来解密。整个加密过程主要包括过滤、Map和Reduce 过程。原始数据经过过滤函数来去除非数值型数据,之后在Map 阶段,使用公钥对分割的数据进行加密。Reduce 阶段会收集各个节点加密后的数据进行整合,并输出结果。如果想要对加密后的数据进行解密,只需要使用私钥进行运算即可。

图1 Spark 并行同态加密

相关算法如表1 所示,输入的原始数据是结构化的csv 文件,输出为同态加密后的加密文件FOUT,Paillier 产生的公钥pk 和私钥sk。

表1 并行同态加密算法

3 实验

3.1 实验平台

实验平台使用Docker 搭建4 台分布式集群,其中包括1 个Master 节点和3 个Slave 节点,Master 节点负责资源调度,Slave 节点负责存储和计算。4 台服务器硬件软件配置均相同。其中硬件配置:CPU 为8*Intel Core Processor(Skylake)@2.4GHz,内存为16GB,硬盘为100GB。软件配置:操作系统为CentOS Linux release 7.5.1804(Core),Docker 版本为18.06.3,Hadoop 版本为2.7.7,JDK 为1.8.0_221,Python 为3.6,Spark 为2.4.7。Paillier 算法是调用python-paiiler 库(https://github.com/data61/python-paillier)。

3.2 实验结果

在本实验中,对联合循环发电厂数据进行加密,同时我们对数据进行预处理,将数据按行数分为1k、10k和100k。从表2 可以看出,加密后的文件要远大于加密前大小,这是由于加密过程中需要产生公钥私钥等信息。集群的加密时间要明显少于单机的加密时间,并行同态加密的运算效率更高。如图2 所示,同态加密运算时间与文件大小有关,文件越大运行时间越长,并趋于线性增长。

表2 单机与集群测试结果

图2 单机与集群测试结果

4 结论

本文提出了一种基于Spark 框架下的并行同态加密方案,并通过实验实现了该方案,结果表明并行同态加密方案可以显著提高加密效率。本方案利用Spark基于弹性分布数据集(RDD)的MapReduce 方法对数据进行分割,利用Paillier 同态加密算法并行加密,最后将加密后的数据块进行整合,达到数据文件加密的结果。我们的未来工作将围绕全同态并行加密方法进行相关研究。

猜你喜欢
同态私钥公钥
相对于模N的完全不变子模F的N-投射模
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
小R-投射模
D4-δ-盖及其应用
拉回和推出的若干注记
神奇的公钥密码
一种基于虚拟私钥的OpenSSL与CSP交互方案
基于秘密共享的IBE移动密码系统
国密SM2密码算法的C语言实现