基于PGP混合加密技术的安全电子邮件系统研究与实现

2016-03-21 12:54吴培飞
计算机时代 2016年3期
关键词:解密加密

吴培飞

摘 要: 电子邮件系统作为Internet上应用最广泛的业务之一,它的安全性越来越得到广泛的关注和深入的研究。本文通过详细分析PGP加密算法的基本原理、电子邮件加密安全需求和PGP技术在电子邮件系统中的应用,以PGP 8.1为实例阐述了整个安全邮件的加密、解密过程,并对PGP中存在的一些安全问题,如公钥的篡改、邮件签名时间的伪造等给出了相应的解决方案。

关键词: 安全邮件; 加密; PGP; 解密

中图分类号:TP393.08 文献标志码:A 文章编号:1006-8228(2016)03-39-04

Research and implementation of secure E-mail system based on

PGP hybrid encryption technology

Wu Peifei

(Information Engineering Institute, Hangzhou Vocational & Technical College, Hangzhou, Zhejiang 310018, China)

Abstract: E-mail system, as one of the most widely used services on Internet, has received more and more attention and research. Through detailed analysis of PGP encryption algorithm basic principle, E-mail encryption security demand and the PGP technology application in E-mail system, to PGP 8.1 for example describes the secure E-mail encryption and decryption process, and gives the corresponding solutions to some of the existing PGP security problems, such as the public key tampering, time signature of e-mail forgery.

Key words: secure E-mail; encryption; PGP; decryption

0 引言

电子邮件(EMAIL)是internet上最普及的应用。特别是目前电子邮件在电子商务及电子政务中的应用越来越广泛,如接受客户的订单、传送合同书、传送公文等。因此电子邮件的安全需求日益增强。

虽然基于SMTP的电子邮件系统被广泛应用,但邮件系统本身不具备安全措施,邮件在收、发、存的过程中都是采用通用编号方式,信息的发送和接受无鉴别和确认,这些都给邮件传递留下了安全隐患。

安全电子邮件必须是运用各种安全机制来保障邮件在internet传送过程中的安全性,它应实现以下功能:机密性、完整性、身份认证、不可否认性。

为了解决电子邮件的安全性问题,人们提出了一系列的安全电子邮件协议,如PGP、S/MIME、PEM、MOSS等,通过这些协议和标准,来提供邮件的机密性、完整性以及不可抵赖性。在众多的电子邮件加密系统中,PGP因其在解决信息保密、信息源和信息完整性鉴定方面具有良好的功能,得到了广泛的应用。PGP作为目前电子邮件系统中应用最为广泛的一种加密技术,其基于RSA公钥密码体制进行设计,不但可以对电子邮件信息进行加密保护防止非法用户访问,还可以实现对电子邮件信息的数字签名。

1 PGP加密算法原理

PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。PGP公开密钥加解密使用一对非对称的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。PGP传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP都会随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容[1]。

1.1 PGP核心算法-RSA算法

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法的工作原理简要介绍如下。

⑴ 任意选取两个不同的大质数p和q,计算乘积r=p*q。

⑵ 任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。

⑶ 确定解密密钥d:d*e=1 mod (p-1)*(q-1)根据e、p和q可以容易地计算出d。

⑷ 公开整数r和e,但是不公开d。

⑸ 将明文P加密成密文C,C=Pe mod r。

⑹ 将密文C解密为明文P,P=Cd mod r。

虽然RSA算法在密钥长度达到600位以上(通常加密过程中我们选取1024位),可以获得良好的加密安全性能,但是RSA算法仍存在以下不足:

产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密;

RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多倾向于因子分解不是NP问题;

速度太慢,由于RSA的分组长度太大,为保证其安全性,n至少也要600bits以上,这样使得运算代价很高,而且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

1.2 报文加密算法-IDEA算法

IDEA算法是一种数据块加密算法,类似于DES算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES算法不同之处在于,它采用软件实现和采用硬件实现同样快速。

IDEA是一种由8个相似圈(Round)和一个输出变换(Output Transformation)组成的迭代算法。IDEA的每个圈都由三种函数:模(216+1)乘法、模216加法和按位XOR组成。

在加密之前,IDEA通过密钥扩展(Key Expansion)将128bit的密钥扩展为52Byte的加密密钥EK(Encryption Key),然后由EK计算出解密密钥DK(Decryption Key)。EK和DK分为8组半密钥,每组长度为6Byte,前8组密钥用于8圈加密,最后半组密钥(4Byte)用于输出变换。IDEA的加密过程和解密过程是一样的,只不过使用不同的密钥(加密时用EK,解密时用DK)[2]。

密钥扩展的过程如下:

⑴ 将128bit的密钥作为EK的前8byte;

⑵ 将前8byte循环左移25bit,得到下一8byte,将这个过程循环7次;

⑶ 在第7次循环时,取前4byte作为EK的最后4byte;

⑷ 至此52byte的EK生成完毕。

IDEA算法相对来说是一个比较新的算法,其安全性研究也在进行之中。在1997年的EuroCrypt'97年会上,John Borst等人提出了对圈数减少的IDEA的两种攻击算法:对3.5圈IDEA的截短差分攻击(Truncate Diffrential Attack)和对3圈IDEA的差分线性攻击(Diffrential Linear Attack)。虽然这两种攻击算法对整8.5圈的IDEA算法不可能取得实质性的攻击效果,但随着现代计算机技术的高速发展,这必将导致IDEA算法被攻破的可能性大大增加。

1.3 PGP加解密过程

使用公开密钥对文件进行加密传输的实际过程包括以下四步:

⑴ 发送方生成一个自己的私有密钥并用接收方的公开密钥对自己的私有密钥进行加密,然后通过网络传输到接收方;

⑵ 发送方对需要传输的文件用自己的私有密钥进行加密,然后通过网络把加密后的文件传输到接收方;

⑶ 接收方用自己的私有密钥进行解密后得到发送方的私有密钥;

⑷ 接受方用发送方的私有密钥对文件进行解密得到文件的明文形式。

因为只有接收方才拥有自己的私有密钥,所以即使其他人得到了经过加密的发送方的私有密钥,也因为无法进行解密而保证了私有密钥的安全性,从而也保证了传输文件的安全性[3]。

2 PGP技术在电子邮件系统中的应用

该过程使用虚拟机环境模拟实际过程。本次实验需要两台互相连通的计算机,其中一台做服务器,另外一台做客户机(为方便,一台称为win2003,一台称为winxp),并准备Winwebmail(局域网邮件服务器软件)和PGP 8.1软件。

⑴ 创建邮件服务器

开启一台win2003,IP地址设为192.168.100.100,在其上安装Winwebmail作为局域网内的邮件服务器软件,并创建邮件账户lisi@system.com和zhangsan@

system.com,以便局域网用户lisi能发送邮件给用户zhangsan。

⑵ 对服务器及客户机上的Outlook Express进行设置

开启这台win2003上的Outlook Express,添加账户zhangsan@system.com, SMTP及POP3服务器地址均为192.168.100.100。同样开启winxp这台电脑上的Outlook Express,添加账户lisi@system.com, SMTP及POP3服务器地址均为192.168.100.100。这样在xp电脑上就能用lisi账户发送一封邮件给服务器上的zhangsan账户,并且在服务器上的zhangsan也能马上接收到这封邮件。

⑶ 在win2003上安装PGP软件及生成钥匙对

使用PGP之前,首先需要生成一对密钥,这一对密钥其实是同时生成的,其中的一个称为公钥,意思是公共的密钥,可以把它分发给邮件发送者,让他们用这个密钥来加密文件,另一个称为私钥,这个密钥由用户自己保存,用这个密钥来解开加密文件。通过打开“开始”菜单中“PGP”子菜单下的“PGP KEYS”,或点击桌面上的PGP KEYS图标或者用菜单key>new key来开始生成密钥对。

第一步,PGP提示这个向导的目的是生成一对密钥,可以用它来加密文件或对数字文件进行签名。这里是用来进行邮件的加密。

第二步,PGP要求输入全名和邮件地址。这里输入的是zhangsan@system.com。

第三步,指定密钥的长度。通常来说位数越大,被解密的可能性就越小越安全,但是在执行解密和加密时需要更多的时间,这里选择1024位。

第四步,请重复输入密码。密码大于8位,并且最好包括大小写、空格、数字、标点符号等,该界面上的“Hide Typing”含义是指示是否显示键入的密码。

第五步,接下来PGP会花一点时间来生成zhangsan的密钥,然后会问是否想把zhangsan公共密钥发送到服务器上去。这里选择否。接下来按照向导生成密钥。

第六步,在PGP软件上用快捷键Ctrl+E或者菜单keys>Emport 将zhangsan的公钥导出为扩展名为asc或txt的文件,比如zhangsan.asc。

第七步,启动该机上的Outlook Express软件,把邮件接收者zhangsan的公用密钥zhangsan.asc发给邮件发送者lisi。

⑷ 在winxp上安装PGP软件,并导入公钥

第一步,启动xp上的Outlook Express,进入lisi账户接收邮件,把zhangsan的公用密钥zhangsan.asc保存在桌面上。

第二步,在该机器上安装PGP软件,在其PGP界面上用Ctrl+M或keys>import导入zhangsan的公用密钥zhangsan.asc。

⑸ 加密邮件(winxp)

第一步,启动xp上的Outlook Express,进入lisi账户,单击创建邮件,收件人地址输入zhangsan@system.com,内容输入这是我的加密邮件,然后单击任务栏上的PGP图标,在出现的菜单中,选择current window--encypt,在出现的选择加密用的密钥对话框中,把上面对话框中的zhangsan拖入到下面的Recipients栏中,单击OK按钮就完成了邮件的加密。接下来单击发送,这样就给zhangsan@

system.com发送了一封密文邮件。

⑹ 解密邮件(win2003)

第一步,启动win2003上的Outlook Express,进入zhangsan账户,在收到的邮件列表中就能发现那封密文邮件,打开显示乱码。

第二步,单击任务栏上的PGP图标,在出现的菜单中,选择current window---decrypt & Verify,输入zhangsan的私钥的保护密码,就能显示邮件的内容,如图2和如图3所示。

3 PGP中一些存在问题的解决方案

3.1 公钥的防篡改

对PGP来说,公钥本来就是要公开的,不存在防监听的问题。但公钥的发布仍然可能存在安全性问题,例如公钥被篡改(public key tampering),使得使用公钥与公钥持有人的公钥不一致。这在公钥密码体系中是很严重的安全问题。因此必须帮助用户确信使用的公钥是与他通信的对方的公钥[4]。

为了防止使用公钥的人得到包含错误的公钥,通过以下若干方法来降低这种风险。

⑴ 直接从接收者手中得到其公钥,这种方法有局限性。

⑵ 通过电话认证密钥:在电话上以radix-64的形式口述密钥或密钥指纹。密钥指纹(keys fingerprint)就是PGP生成密钥的160bit的SHA-1摘要(16个8位十六进制)。

⑶ 从双方信任的C那里获得接收者的公钥。发送者A和接收者B有一个共同的朋友C,而C知道他手中的B的公钥是正确的。C签名的B的公钥上传到BBS上让用户去下载,如果A想要获得B的公钥,就必须先获取C的公钥来解密BBS上经过C签名的B的公钥,这样就等于加了双重保险,一般不存在篡改而不被用户发现的现象,即使是BBS管理员。

⑷ 由一个普通信任的机构担当第三方,即“认证机构”。这样的“认证机构”适合由非个人控制的组织或政府机构充当,来注册和管理用户的密钥对[5]。

3.2 可信的PGP时间戳

PGP签名上的时间标戳是不可信的,因为任何一个想伪造“错误”时戳的人都可以修改系统时间来达到目的。而在商业活动中又有这种利用PGP签名的时间来确认责任的需要,因此就必须建立第三方的时间公证体系。很显然,只要公证方在邮件上签上标准的时间,就能解决这个问题。

对时间可靠性有要求的场合,可以采用国际标准时间戳协议RFC3161来解决。这个协议是建立在TSA可信的基础上的[6]。

3.3 PGP信任和证书吊销的问题

可以通过以下步骤来解决PGP信任和证书吊销的问题:

⑴ 制定公钥审查过程规范,以保证公钥的真实性;

⑵ 建立介绍人可信度评价体系,用以判定介绍人所达到的信任等级;

⑶ 在一个相对独立的用户群体内,设立一个或几个公认的介绍人,并根据评价体系对介绍人进行评估,得到介绍人的信任等级;

⑷ 用户根据评价结果对自己的PGP软件进行信任设置;

⑸ 每个介绍人都将经过自己签名的公钥证书存放到统一的证书服务器中,以备查询调用;

⑹ 每个介绍人都应及时的将已吊销的证书公布到证书服务器上;

⑺ 用户从证书服务器下载所需的证书,证书的有效性验证由PGP自动完成;

⑻ 用户定期更新已下载到本地的证书,对于极其重要的通信场合,每次通信前都应查询证书服务器,检查证书是否被吊销。

通过上述办法,每个用户只需验证少数公认介绍人的公钥,大大减轻了管理负担。

4 结束语

虽然PGP是一个基于RSA公钥加密体系的邮件加密软件,但它并不是一种完全的非对称加密体系,它是一种由对称加密算法(IDEA)、非对称加密算法(RSA)、单向散列算法(MD5)以及随机数生成器(从用户击键频率产生伪随机数序列的种子)组成的混合加密技术,这些算法都是PGP不可分割的组成部分,PGP集中了这些算法的优点,使它们彼此互补。PGP巧妙的将常规密钥加密和公开密钥加密紧密结合起来,从而使会话安全得以保证。PGP支持1024位的公开密钥与128位的传统密钥加密,能达到军事级别的标准,完全能够满足电子邮件对于安全性能的要求[7]。

参考文献(References):

[1] 张瑞丽,杨坤伟,李吉亮.对电子邮件加密技术的分析与研究[J].

计算机技术与发展,2014:10,12,24

[2] 孙涛.基于RSA公钥加密体系实现电子邮件加密[J].信息与

电脑(理论版),2014:156-159

[3] 杨柳.基于PGP系统的电子邮件安全机制的实现[J].计算机

安全,2013.1:5-7

[4] 石淑华,池瑞楠.计算机网络安全技术[M].人民邮电出版社,

2012.

[5] 张明旺.电子邮件安全技术探讨[J].计算机安全,2012.6:28-31

[6] 贺惠萍,荣彦,张兰.利用PGP软件实现安全收发电子邮件[J].

计算机安全,2011.1:29

[7] 陆燕,张璐.PGP核心算法及其安全性探讨[J].信息技术,

2011.3:8-9

猜你喜欢
解密加密
解密“一包三改”
炫词解密
炫词解密
一种基于熵的混沌加密小波变换水印算法
一种基于LWE的同态加密方案
认证加密的研究进展
解密“黑匣子”
吴王余眜剑解密
基于ECC加密的电子商务系统
解密“大调解”