基于国密算法的新型电子邮件加密系统研究与实现
2018-11-15杨润东李子臣
杨润东 李子臣,2
1(北京印刷学院信息工程学院 北京 102600)2 (北京电子科技学院通信工程系 北京 102600)
随着网络技术的日新月异,信息时代的到来,我们的生活已经和互联网休戚相关.网络技术使人们可以极其便利地进行信息交换和传输,大大缩短了彼此的距离感.电子邮件的主要功能是交换信息,人们使用的电子邮件进行办公、交流日益频繁,电子邮件已经变成我们生活、学习、办公的重要手段.越来越多的个人信息和一些机密信息在网络上传播.随之而来人们对信息安全的要求也与日俱增,然而由于网络的开放性,电子邮件要经过多级存储和转发,而且电子邮件在网络之间的传输又是以明文进行传播,其用户的敏感信息和邮件的内容很容易被非法拦截窃取.有关邮件安全的事件有愈演愈烈的态势,有的影响甚至是世界级别的,例如“希拉里邮件门”事件、“朴槿惠闺蜜干政”事件,都是由于邮件泄密造成的,这些邮件安全事件让人们意识到保护个人信息安全、保护电子邮件安全的重要性.
目前电子邮件加密技术根据使用的加密算法的不同可以分成4种技术:对称加密技术、PKICA加密技术、链式加密技术、基于身份的密码加密技术.
分组密码算法又称为对称加密算法[1],在很多方面应用成熟,如在电子邮件方面.优点是加密速度快,但是发送方接收方密钥相同,若密钥被第三方窃取则很容易破解密文,其次是密钥管理困难,代价高效率低,渐渐被取代.
链式加密技术是综合了非对称密码算法和对称密码算法各自优点的一种非常重要的电子邮件加密技术.目前主要使用该技术的软件PGP[3]较为成熟,应用较广,但是证书维护、撤销等操作成本较高.
基于身份的密码加密技术节省了公钥证书以及相关操作,大大节省了通信的效率,被广泛使用,目前主要软件有赛曼邮件天使系统[4].但是该技术需要进行密钥托管,服务器的安全就显得尤为重要,因为在服务器中存放着每一位用户的资料,一旦泄露后果十分严重.
本文综合链式加密技术的安全性,基于身份的密码技术的无需证书管理的简洁性、签密技术的高效性、国密SM4分组加密算法的快速性,提出了基于国密算法的新型邮件加密系统NMES,该系统对信体加密可以实现一次一密,具有较高的安全性和效率,有效解决了证书管理困难问题,具有广泛的应用前景.
NMES的设计原则主要有以下几个方面:
1) 用户操作简单方便.
2) 实现的功能多样.可以实现加密、解密、数字签名、检测、密钥的生成与管理等基本功能.
3) 具有在个逻辑步骤中完成加密和签名功能,可以节省计算和通信量,提高运行效率.
4) 系统不需要特定的邮件系统,具有广泛的应用性和推广性.
1 NMES系统加密与解密
密码技术[5]的核心思想就是对待处理的数据进行变换伪装,使非法用户不能理解处理后的数据的真正含义.伪装的含义就是将要处理的数据进行数学变换,成为另一种可以恢复的形式.明文(plaintext)就是未经过变换的原始数据.密文(ciphertext)是经过变换后的数据.数据变换的过程就是加密(encryption).加密在加密密钥(key)控制下进行.解密(decryption)就是将变换后的数据进行逆变换还原的过程.NMES系统使用了2次加密,第1次使用SM4对信体和信体杂凑值进行加密,第2次是使用签密算法,对SM4的密钥进行签密运算获得签密密文.充分保证了系统的安全性与高效性.
1.1 基于身份的签密算法
Zheng[6]在1997年提出了签密源语.签密就是能够同时保证机密性、完整性、不可否认性的一种新密码体制,与传统的“先加密后签密”其效率更高,通信量更少.
基于身份的签密是在签密技术提出后的一种很重要的签密方案,由 Boneh和 Franklin[7]最先提出,基于身份的签密方案主要是利用椭圆曲线上的双线性对设计并实现的.本方案中使用的基于身份的签密算法[8]主要包含如下几个算法.
系统初始化:在PKG中完成,分别输入安全参数k.输出主密钥s和系统参数params,PKG将s作为秘密值进行保密,公开参数params.
密钥生成算法:输入一个用户的IDU,PKG计算用户的私钥SU,并将其通过安全的通道发送给用户.
签密算法Signcrypt(m,SA,IDB):输入的是公开的参数params、明文m、接收者的身份IDB以及发送者的私钥SA.输出密文Unsigncrypt(σ,SB,IDA).
解签密算法Unsigncrypt(σ,SB,IDA):输入的有系统参数params、密文σ、接收者的私钥SB、发送者的IDA.输出明文m或者解签密失败符号“⊥”.
1.2 国密算法
1) 国密算法SM4
国密SM4算法是对称密码算法,在中国的国密算法中具有重要的意义,因为它是我国第1次颁布的商用密码算法,影响深远,意义重大.
SM4算法是一个分组算法,其整体结构[9]如图1所示:
图1 SM4结构
分组长度和密钥长度都是128 b.加密算法和密钥扩展都使用相同的32轮迭代结构,以字节(8 b)和字为单位对数据进行处理.SM4算法采用的是对合运算,只是在加解密过程中使用的轮密钥的顺序不同,解密密钥是加密密钥的逆序.SM4算法有很多设计优势:简洁、算法独特,安全性能好.详情请参考颁布的算法标准.
2) 国密算法SM3
SM3算法是一种杂凑算法,主要应用可以分为商业数字签名和验证、消息认证码的生成与认证等.
SM3算法首先是要对长度为l(l<264)(单位为b)的消息进行填充,填充到合适的长度,然后对填充好的数据进行迭代压缩,最后生成杂凑值.杂凑值是固定长度,为256 b,具体参见国家密码管理局公开标准[10].
2 NMES系统消息格式
本文设计的不需要特定的邮件系统,要对待发送邮件内容进行标准处理,然后以文件的形式保存,文件可以通过任何邮件进行发送,它分成3部分:1)邮件的签密部分;2)一致性检验部分;3)信件主体加密部分.文件具有统一的格式,以在通信过程中使用方便,NMES邮件加密的统一格式主要包含签密信息、信体加密信息、一致性检验信息,其统一格式如下.
消息格式主要用3个英文大写字符E(encrypt),S(Signcrypt),C(consistency)表示加密邮件的3个功能,3个字符分别表示加密、签密和一致性检验.
表1 消息格式
接收者(receiver)和发送者(sender)的名字都是用NMES注册用户名来表示,用户名为包含数字、英文字符的字符串,每个用户名都是特定唯一的.
签密信息是发送者通过基于身份的签密算法对SM4密钥进行签密得到的签密值,对其进行编码成字符串保存.
一致性检验信息是使用SM3杂凑算法对要发送的信息进行杂凑,得到的一个256 b的杂凑值,再使用SM4算法对杂凑值进行加密得到的一个一致性检验的密文信息,编码后以字符串的形式保存.
信件主体加密信息是用获取到的SM4密钥对信体进行加密后的密文,加密编码以字符串保存.
3 NMES系统框架流程
本文的邮件加密系统框架流程如图2所示:
图2 NMES系统框架流程
Step1. SM4密钥获取.
首先获取SM4密钥,在NMES系统中,SM4密钥获取方式有2种,第1种方式:用户自己设置,输入16 b的字符作为SM4加密的密钥.第2种方式:系统自己生成,系统随机产生16个随机数作为自身的密钥,将随机数以字符的形式存入密钥key中.
Step2. 获取用户私钥.
用户通过在邮件系统中注册获取用户唯一的身份标识ID,PKG通过获取到的身份ID计算出该用户的私钥S,用安全的传输方式秘密发送给用户.
Step3. 对SM4密钥进行签密.
对Step1中获取到的SM4密钥进行签密,用接收者的身份标识ID和自己私钥S对SM4密钥进行签密,将签密结果σ保存.
Step4. 用SM3对待加密信件进行压缩编码.
首先要对待加密信体进行填充,若信体m的长度为l(l<264)(单位为b),首先将bit“1”增添在消息最后面,再添加k个“0”,k满足l+1+k=448 mod 512的最小非负数.再添加一个64 b比特串用以表示消息长度,使得被填充后的消息m1的长度为512N.然后使用SM3算法对填充好的数据进行压缩编码,最终会得到512 b的杂凑值V.
Step5. 对压缩编码值进行加密编码.
将压缩编码V用SM4算法以及发送者获取到的密钥对其进行加密,密文C1以字符串的形式存储.
Step6. 用SM4对信件加密.
将信件M按照16 B分组,然后用获得的SM4密钥对其进行加密[11](Ek就是表示用密钥key进行SM4加密):Ci=Ek(Mi).
将密文块级联起来就是密文C2,对密文进行编码以便在网络上传输.
Step7. 待发送的文件.
将各个信息按照接收者EMS名、发送者的EMS名、发送格式信息、签密信息、密文信息的顺序以规定的格式存入一个文本,加密过程结束.
解密过程:首先对接收到的密文进行分离,分离出消息格式类型、接收者MES名、发送者MES名、分离出签密密文σ,用发送的身份标识和接收者的私钥S进行解签密,若解密成功则同时进行签名验证,解出的明文为SM4密钥.接着通过用SM4密钥对密文C1和C2解密,得到信件的明文m以及杂凑值v.再对明文进行SM3压缩编码得到V′,与解密的v进行一致性检验,检测是否信息被篡改,确保信息的完整性和真实性.
4 NMES系统的实现与性能分析
4.1 NMES系统实现
现代密码学其密码算法大多建立在复杂的数学计算上,SM4算法是国家商用密码算法,该算法使用了移位、交换、压缩、迭代等操作,NMES系统开发使用的是C语言,C语言具有运算速度快、移植性好等特点,通过测试可知,本系统使用的SM4加密算法每秒可以加密6 507 KB的文本数据.
签密算法是通过椭圆曲线上的双线性对构造的,使用256 b的BN曲线.并依赖开源库opessl进行椭圆曲线上的运算和双线性对的计算,大大提高了开发效率.通过实验可知密钥长度为512 b时,加密一个数据块仅仅需要几秒钟,可满足日常的邮件发送功能.
程序是在Microsoft Visual Studio 2010编程环境下使用C语言实现的,能够实现对文本的加密.系统主要有如下3个部分:
1) 用户登录界面.主要功能包含新用户注册、已有账户登录.
2) 书写待发送的消息m.对SM4的key进行签密,同时使用key对邮件加密,加密后的密文以文件的形式保存.
3) 读取邮件.对接收的邮件进行解签密,在解签密的同时进行验证,通过解出的密钥对邮件密文解密.
其中加解密功能是系统的重要功能.首先获取到SM4密钥,随机生成或者用户设定,随后通过ID标识获得接收者的参数和用户的参数,对SM4密钥进行签密,签密可以实现对SM4密钥的加密和验签,这样既保证了密钥的安全传输又进行签名验证,随后使用SM3算法对待加密的邮件文本进行杂凑运算,获得一个256 b的杂凑值,并用SM4算法对杂凑值和待加密邮件文本进行加密,将加密后的密文进行传输.加密后的邮件文件必须依照英特网的编码格式进行传输,其编码格式是Base64.
软件具体操作步骤如下:
1) 运行软件进入登录界面(如图3所示),若已经注册,直接登录,否则先进行注册.
图3 邮件登录界面
2) 用户若发送邮件,需要输入对方的唯一身份标识符ID和要发送的内容(如图4所示).
图4 加密界面
3) 获取到签密密钥Key1和加密密钥Key2,点击加密,对Key2进行签密,对M进行杂凑,得到杂凑值V,对V和M进行加密(如图4所示).
4) 加密完成后点击保存,会以标准的固定格式进行保存,通过邮件进行发送.
5) 接收邮件,将邮件读入到系统,点击解密,对邮件进行解签密,完成解密(如图5所示).
图5 解密界面
4.2 性能分析
NMES系统通过国密算法、签密算法和链式加密算法,实现了电子邮件以密文的形式在网络上进行安全的传输,有效保证了邮件内容的安全.
功能分析:NMES系统的主要功能有3个:加密、签密、一致性验证.通过这些功能可以保证电子邮件的内容的机密性、来源的可靠性、内容完整性以及不可否认性,从而保证邮件的安全.
明文信息首先进行加密,同时明文需要通过SM3算法进行杂凑得到明文的杂凑值V,再使用SM4算法对V进行加密.这样就可以实现一致性检测,验证消息是否被篡改,保证了消息的一致性和真实性.
SM4的密钥是通过签密算法进行签密,同时完成了加密和签名的功能,这样既能安全地传输密钥,而且对消息进行了签名,保证消息来源的可靠性和不可伪造性.
系统通过对邮件内容进行2次加密、1次一致性检验、1次签名,使得电子邮件在传输过程中的安全性大大提高.
效率分析:系统使用的算法相较于目前电子邮件加密系统效率更高,速度更快.系统使用的对称加密算法是国密SM4,在Windows环境中,CPU(英特尔)Intel®CoreTMi5-4590 CPU @3.30 GHz下加密1 MB的文本需要0.17 s.系统使用的签密算法加密SM4的128 b密钥,需要0.01 s.
由于传统PKI的密钥分发和证书管理困难,本系统是基于IBE设计的,避免了密钥的分发困难和证书的管理复杂,系统使用签密的技术可以在一个逻辑步骤内完成加密与签名,提高了通信效率,每次发送邮件使用的SM4密钥都不一样,可以保证密文的安全.
系统结合签密算法、国密SM4、SM3算法,实现了电子邮件的加密系统,NMES电子邮件系统速度快、安全性高,信息的秘密性好,身份验证和签名效率高,应用前景广泛.
5 小 结
本文主要讨论了基于国密算法的新型电子邮件加密系统的研究与实现,介绍了SM3、SM4和基于身份的签密算法,并结合这些算法设计了NMES系统,本系统可以实现对邮件的加密、解密、签名以及一致性检测等功能.本系统使用2次验证,第1次是消息来源验证;第2次是一致性验证,验证消息是否被窜改,通过2次验证可以确保消息的真实性和可靠性.系统使用了签密技术提高了效率,减少了通信量,每一次使用SM4的密钥不同大大提高了安全性.这是对邮件加密系统的一次尝试和探索,将来会进一步对本系统进行改进与完善,并在实际中运用.