APP下载

云环境下基于椭圆曲线的数据加密机制研究

2021-07-16刘建英李洪涛王波

关键词:公钥加密算法密钥

刘建英, 李洪涛, 王波

山西师范大学数学与计算机科学学院, 山西 临汾 041000

当前,云计算呈现蓬勃发展阶段,企业云的兴起,云原生概念的不断普及,云安全产品生态的形成,技术产业创新不断涌现.2019年7月,中国信息通信研究院第5次发布的《云计算发展白皮书(2019)》指出,2018年我国云计算市场规模达962.8亿元,增速39.2 %,其中,公有云市场规模达到437亿元,较2017年增长65.2 %.云计算服务有效提高了数据库的存储容量、容错能力,提升了企业的应用处理机制.

当前,云平台被众多企业广泛地使用,同时意味着对云端数据的保护愈发重要,云端数据的隐私保护和安全存储问题日益突出.2011年CSDN网站用户数据库被黑客在网上公开,大约600万邮箱密码和明文密码泄露;2016年雅虎用户账号信息遭到黑客窃取,至少5亿用户信息被泄露.因此,在云计算环境下,如何保证在云上的数据的安全存储,将是云计算面临的一大难题.

云数据的保护机制通常使用密码方式实现.通用的密码算法包括对称和非对称两种加密算法.其中,对称加密算法的加解密密钥是一致的,典型的代表有AES,DES算法,由于密钥的一致性,总体上该种算法计算简单,执行效率高;非对称加密算法则使用不同的加解密密钥实现数据的加解密操作,这种算法计算复杂,但安全性强于对称算法,典型的有RSA,ECC(Elliptic Curve Cryptography)等.由于当前通用的密码技术标准的规定一般以美国为主导,为了保障我国的信息安全,相关密码标准被制定,并由国家商用密码管理局陆续公布,包括SM2,SM3,SM4等.

除了基本的加密技术外,为了提升运算性能和安全强度,目前也有新的加密技术研究方案.例如,陈庄[1]等人提出了一种基于数据分级的加密方案,使用双重密钥机制对关系型数据库中的部分特殊数据加密;针对非结构化数据则采取客户端本地加密的方式;赵嘉诚[2]提出了一种云计算环境下利用MapReduce改进的并行AES、RSA混合加密算法,通过RSA管理密钥,AES负责加密明文数据;刘艳[3]提出将对称加密算法与非对称加密算法相结合的数据加密方案,该方案通过对称算法AES与非对称算法RSA、ECC的融合,最终提出了AES-RSA和AES-ECC两种混合加密方案;贾冀芳[4]基于国家商用密码算法(国密算法)的安全性强于通用密码算法、性能弱于通用密码算法的现状,在OpenSSL基础上设计了一种SM2与RSA自动切换的算法,以满足在性能达标的前提下能提高系统的安全性;付雅丹[5]设计了基于AES加密算法的分布式密文计算算法和基于ECC公钥体制的ECIES密文计算方法;张连营[6]提出了云计算密码应用建设的技术方案,确保了云计算及国产密码的自主可控和安全性;PanJun Sun[7]针对云计算环境下的安全和隐私保护展开研究;王凤领[8]针对云计算环境下的数据安全问题提出了解决方案,为大数据云计算环境下的数据安全提供了一定的参考.

综上,现有的云计算加密工作主要围绕国际通用的加密算法进行改进,国密算法与国际通用的商用算法有较高的安全级别.鉴于此,本文提出了基于椭圆曲线的数据加密方案.国密算法基于ECC,是国家密码管理局制定的标准,较通用的AES,RSA加密算法有较高的安全性,同时借助于Hadoop的MapReduce框架实现,不仅提高了云数据的存储安全级别,且加快了云数据加密效率.

1 方案设计

1.1 椭圆曲线一致性加密算法

椭圆曲线密码学是基于椭圆离散数学的一种公开密钥的方法,于1985年由Victor Miller和Neal Koblitz分别独立提出.ECC密码技术依赖于椭圆曲线的离散问题,可被广泛地应用在不同的应用场景中,如SSL安全协议、智能卡等.

椭圆曲线集成加密框架(Elliptic Curve Integrated Encryption Scheme, ECIES ),一种基于ECC密码体制的加解密方案,由Abdalla、Bellare和Rogaway等人提出.ECIES并非具体的方案,其中的公钥生成,加解密算法需要自行设置.目前ECIES也有部分具体的实现,如ANSI X9.63, ISO/IEC 18033-2,IEEE 1363a和SEC1等标准.

椭圆曲线集成加密框架ECIES整体由四大部分构成,分别是密钥生成(Key Generate,KG)、密钥交换(Key Agreement, KA)、加密( Encryption, ENC)、消息比特码生成(Message Authentication Code, MAC).其中KA功能模块包含密钥派生(Key Derivation Function, KDF),杂凑数值位生成 (HASH)功能嵌套在KA和MAC两个模块中.首先,本小节将对ECIES加解密框架的运行机制进行介绍,随后,详细阐述框架中的各个模块的功能.

假定Alice计划发送给Bob一条信息,为了保证信息的安全传输,对信息进行加密.即Alice作为发送人,Bob作为接收人.加密机制采用ECIES加密集成方案,则具体的流程如图1所示.

图1 ECIES加密流程图Fig.1 ECIES encryption flowchart

在ECIES加密算法中, 发送方Alice和接收方Bob分别利用椭圆曲线密钥函数生成各自的密钥对(R,S),(P,Q);然后发送方Alice利用自己的私钥S和Bob的公钥P进行密钥协商,生成共享密钥P·S,并经过KDF密钥派生模块生成两个密钥Mk,Ek,其中密钥Mk用于签名生成摘要,Ek用于明文数据加密;接着发送方Alice利用上述生成的加密密钥Ek在Enc加密模块中对明文数据M进行加密操作,得到密文ME;密文ME在MAC模块中通过密钥Mk,为密文打上标签,生成摘要D,最后发送方Alice将公钥R,密文ME,标签D打包发送给接收方Bob.

在ECIES解密算法中,接收方Bob接收到Alice发送来的密文数据后,首先拆包,得到公钥R,密文ME,标签D; 然后Bob同样使用自己的私钥Q和发送方Alice的公钥R,经过KA密钥交换和KDF密钥派生模块生成共享密钥对Mk,Ek; 接着Bob利用密钥Mk,通过MAC模块,得到密文的标签值D′; 比较D与D′的值是否一致,如果不一致,则表示接收的信息是不完整的.如果一致,则利用上述生成的密钥Ek在ENC模块中解密密文ME得到明文M.

1.2 模块分析

从上述分析可得,椭圆曲线集成加密框架ECIES主要包含四大模块,密钥生成KG、密钥交换KA、加密ENC、消息比特码生成MAC,其中KA功能模块包含密钥派生(Key Derivation Function, KDF),KA和MAC两个模块嵌套HASH功能.接下来,对各个模块作详细阐述.

(1) KG(椭圆曲线密钥对生成)

KG模块包括ECIES加密解密算法中发送方和接收方私钥密钥对的生成过程,其中椭圆曲线密钥对生成方式过程如下:

a 建立椭圆群Ep(a,b),选取椭圆曲线E:y2=x3+ax+b(modp);

b 在上述的椭圆群中选择点G=(Gx,Gy),其中,G符合条件n·G=O,n代表大素数;

c 然后确定私钥,通常将小于n的整数d确立为私钥;依据公式P=d·G,得到公钥P,其中,曲线参数参照国家密码管理局制定的椭圆曲线密码算法标准,具体参数如下:

p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF

a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC

b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93

n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123

Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7

Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0

(2) KA(密钥交换算法)

KA模块中的主要算法是密钥交换算法,即两个用户进行信息交流,用分别的私钥和对方的公钥产生彼此之间信息交流的共享密钥.此密钥一般作为对称加解密算法的密钥.

本部分使用的椭圆曲线密钥交换协议参照国家密码管理局制定的SM2椭圆曲线公钥密码算法第3部分-密钥交换协议,由三部分构成,即:密码杂凑算法,密钥派生函数(KDF)、随机数生成器.密钥交换协议的安全级别一定程度上取决于三种函数的具体实现程度.

(3)HASH(哈希算法)

HASH模块中使用的哈希算法为国家密码管理局制定的SM3国密密码杂凑算法标准.特定长度的数据信息,经过该算法的填充、压缩功能,可最终转换为256位的杂凑码,与国际标准SHA-256等长.

(4)ENC(加密算法)

ENC模块使用国家密码管理局制定的SM4分组密码算法标准.该算法采用128位的密钥长度,每隔128位,消息被分为一组.无论数据解密或数据加密均使用相同的算法结构,但采用不同顺序的轮密钥,互为逆操作,同时非线性迭代结构被应用于加密过程.

(5)MAC(签名算法)

MAC模块是对ENC模块结束后产生的密文C使用KA模块产生的密钥Kmac进行生成用于检测数据一致性的 TAG值,记为Tag.MAC中使用国家密码管理局制定的SM2椭圆曲线公钥密码算法第2部分——数字签名算法.该算法包含两大操作:签名和验签.通常私钥用于数据的签名,而公钥用于消息的验签,即消息的确认.同时,无论签名还是验签,均需要使用密码杂凑算法进行消息的压缩操作.

1.3 基于MapReduce框架的椭圆曲线集成加密算法

非对称加密算法是一种常用的密钥保密算法,该算法强度复杂,安全性依赖于算法及其密钥,典型的有DH、RSA、EIGama、ECC算法等.RSA作为最经典的非对称加密算法,基于大整数因子分解困难问题而设计.ECC公钥密码设计机制是基于椭圆曲线的离散对数问题,安全性取决于椭圆曲线离散对数问题的难解性.ECC是公钥算法中较为安全、难以攻破的一种算法.在同等条件下,ECC密钥长度更短,计算量较小,存储空间占用更少,安全性更高,因此,它是一种适合云环境下使用的公钥加密方案,不仅保证了数据的安全性,还提高了算法的运算效率.本文提出的ECC椭圆加密曲线采用国家密码管理局制定的国密标准,包含SM2椭圆曲线公钥密码算法、SM3国密密码杂凑算法、SM4分组密码算法标准,利用云环境Hadoop平台下的MapReduce框架实现.

MapReduce是适合海量数据处理的编程模型,整体可分为Split分片、Map、Reduce三个执行阶段.MapReduce采用“分而治之”策略,将一个分布式文件系统的大规模数据集,划分成独立的片,这些片对应Map任务进行并行处理.其中,大规模集群上的并行计算被抽象成两个函数Map和Reduce.Map函数负责对分片后的数据块进行操作,而Reduce接收Map函数的输出并进行处理.基于MapReduce框架的椭圆曲线集成加密算法方案如图2所示.

图2 基于MapReduce框架的椭圆曲线集成加密算法方案Fig.2 ECIES based on MapReduce framework

接下来,将对MapReduce框架中的各个阶段重点阐述.

(1)Split分片

Split分片这一阶段将存储在HDFS文件系统中的明文数据分成若干个数据块,其中,采用pos,i,li,buffer变量刻画,pos表示数据块在明文大数据的偏移位置,i表示第i个数据块,li表示数据块的大小,buffer存储数据块的内容.首先pos记录第1个数据块的起始位置,依据l读取数据块1中的内容到buffer,同时pos变量指向下一数据块的偏移位置,依次循环;其次,最终的key存储第i个数据块在明文大数据文件的偏移量,将buffer赋值value,存储数据块的内容.

(2)Map函数

Map阶段中运行ECIES加密算法,接收Spilt阶段的输入,明文数据通过ECIES框架中的密钥对生成、密钥协商、加密、签名模块处理后得到,其中,key值不变,表示数据块的偏移位置,value值为经过加密处理后的数据Enc-data.

(3)Reduce函数

Reduce阶段接收Map的输出〈key, value(Enc-data)〉,依据key值进行排序,合并操作,经Reduce函数直接输出.由于key 值记录了数据块首字节在大数据文件中的偏移位置,因此,经过shuffle处理后的密文数据保证了原始数据的完整性,按顺序依次拼接即可.

2 算法实现及结果

2.1 Hadoop实验平台

本实验采用Hadoop的MapReduce框架实现,主平台由1个Master主节点和3个Slave从节点组成,其中,作业、资源的使用情况由主节点管理,而从节点负责分布式数据的存储和计算,主要配置如表1所示.

表1 实验平台配置Tab.1 Experimental platform configuration

2.2 实验结果

综合上述的ECIES加解密框架,该框架包含四大模块,即PRE密钥生成、KA密钥协商、ENC加解密、MAC签名验签.串行ECIES算法中各个模块的时间消耗比例见表2,我们可以得出以下结论: (1)ENC加解密模块在该框架中占用的比重最高,最耗时间; (2) 剩余的模块中,MAC是最耗时的模块,其次是PRE模块和KA模块.

表2 ECIES各模块时间消耗Tab.2 Time of each module ECIES

在Hadoop云平台上,分别对1 GB, 2 GB和4 GB的数据文件使用ECIES加解密算法进行串行和并行测试,其中, Map 数量为1时,表示串行环境测试; Map为n时,表示云环境下的并行测试,数据文件被分成了n块,即划分为n个Map任务运行.本次实验测试了当split分片不同,即不同的Map任务条件下,数据文件的总耗时、Map阶段耗时、Reduce 阶段耗时、总加速比,具体结果如表3,表4,表5所示.

表3 ECIES加密算法耗时统计(1 GB)Tab.3 Time consumed statistics of ECIES(1 GB)

表4 ECIES加密算法耗时统计(2 GB)Tab.4 Time consumed statistics of ECIES(2 GB)

表5 ECIES加密算法耗时统计(4 GB)Tab.5 Time consumed statistics of ECIES(4 GB)

为直观显示上述数据的变化趋势,我们采用图的形式进行刻画.下图显示了分别加密1 GB,2 GB,4 GB数据文件不同分片条件下的加密时间和整体加速比,具体见图3,图4.

图3 ECIES加密框架不同数据块时间消耗Fig.3 Time consumed of different data blocks in ECIES encryption algorithm

图4 ECIES加密算法不同数据块加速比Fig.4 Acceleration ratio of different data blocks in ECIES encryption algorithm

通过对上述表和图的趋势分析,可以得出以下结论:

(1) 随着数据块的增加,即Map任务的递增,算法的时间总消耗呈下降趋势,但降到一定程度时增加,最后趋于稳定状态.

(2) 数据量较大时,算法的总时间消耗和加速比在集群数量接近24时效果最佳,整体加速比在3.0左右.

(3)Map任务逐渐增加的同时,Map任务所用时间呈递减趋势,分析其原因,分片数量的增加导致节点上Map端待处理数据的容量减少,充分利用了Map的并行优势.

(4)Reduce阶段所用时间整体上呈现先增加后减少最后又增加的趋势,究其原因,split分片任务的增加导致时间呈现递减,但后期随着分片的不断增加致使信息的传递时间和排序时长发挥作用,因此时间消耗增加.

Reduce端接收Map端输出的(key,value(End-data)),对偏移量key值排序,连接密文.为了提高Reduce的并行处理能力,本实验将Reduce的任务数量分别设为1,2,3,4,5,测试不同Reduce 任务下的ECIES加密的耗时情况,如图5、图6所示.

图5 不同Reduce下 ECIES 加密算法耗时统计(Map=16)Fig.5 Time consumed of different number of Reduce(Map=16)

图6 不同Reduce 下ECTES加密算法耗时统计(Map=32)Fig.6 Time consumed of different number of Reduce(Map=32)

分析图5图6,可以看到,Reduce数量对ECIES加密算法的运算性能有一定的影响,随着Reduce数量的变化,ECIES算法整体耗时呈现先减后增的状态,其中当Reduce数量接近3时,耗时最少,即接近集群节点的数量性能较佳.

3 结语

随着云技术与大数据的快速发展,数据的隐私保护愈发重要,因此,解决计算中的安全问题成为当前面临的挑战之一.基于此,本文提出了一种基于云计算环境下的国密算法加密方案.重点阐述了ECIES加密框架的基本原理,借助于国密算法的安全性强的特性,使用国密算法实现密钥协商,签名验签,加解密的功能,随后使用了Hadoop平台的MapReduce框架实现了该算法.最后,通过不同实验表明,基于MapReduce框架实现的ECIES加密算法不仅可以提高数据加密的安全性能,还利用集群的并行功能,提升了数据加密的运算效率,且其中Map和Reduce任务的数量对加速比有一定的影响.

猜你喜欢

公钥加密算法密钥
幻中邂逅之金色密钥
幻中邂逅之金色密钥
基于DES加密算法的改进研究
案例教学法在公钥密码体制难点教学中的应用——以ssh服务中双向认证为例
密码系统中密钥的状态与保护*
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
TPM 2.0密钥迁移协议研究
神奇的公钥密码
国密SM2密码算法的C语言实现