14.1.3 加密与认证技术
加密是指一个过程,将一组信息(或称明文)经过密钥及加密函数的转换,变成读不懂的密文,而接收方则将此密文经过解密密钥和解密函数还原成明文。其基本模型如图14-1所示。
图14-1 信息加密系统基本模型
现代通信中,无论是无线通信还是有线通信,或者是计算机网络,都具有开放的特点,也就是说,通信环境是不安全的。如何在不安全的信道中建立安全的通信信道成为现在密码理论技术的重要研究课题。
现代密码技术诞生于20世纪70年代,即公钥密码思想的提出和美国数据加密标准(DES)的公开发布。公钥密码技术解决了不安全信道无接触安全通信的问题,本质上是解决了不安全信道密钥分发问题,其另外一种重要应用就是数字签名,为身份认证、不可否认签名等需求提供了一种技术方法。DES的公开发布,一方面开创了大众密码技术研究和应用的局面,另一方面奠定了现代密码理论的一个根本性原则——Kerckhoffs原则,即密码体制的安全性不依赖于算法的保密,而仅仅依赖于密钥的保密。这是现代密码思想与经典密码思想不同的一个根本之处。现代密码的另一个重要特点就是现代密码一般都具有深刻的数学理论基础。
·按照密钥数量,密码体制可分为单钥(对称)密码体制和双钥(非对称,公钥)密码体制。例如,DES,AES,IDEA等都是对称密码体制;RSA,EIGamal密码体制,背包密码体制,ECC等都是公钥密码体制。
·按照处理消息的长度,密码体制可分为分组密码体制和流密码体制。20世纪80年代中期,人们还提出了一种基于物理定律的密码体制——量子密码技术。与传统的密码基础不同,量子密码技术的安全性不是基于数学困难问题或者计算不可能问题,而是基于量子物理的测不准原理、量子态不可克隆等物理定律,因此,量子密码体制是一种不可破译的密码体制。
1.对称密码算法
对称加密算法可分为分组加密算法和流密码算法,分组算法每次处理一个分组,流密码每次处理一个比特或一个字符。分组密码算法的分组一般为64、128不等。
分组密码算法和流密码算法加密速度快,适用于加密批量信息。分组加密算法具有不同的模式工作,美国就数据加密标准(DES)颁布了ECB(Electronic Code Book),CBC(Chain Block Coding)、CFB(Cipher Feedback)和OFB(Output Feedback)等4种工作模式,后来也成了分组密码算法的通用工作模式。
ECB称为电子密码本模式,对每一个分组使用同一个密钥进行加密;CFB模式将上一次加密结果与当前数据块异或后再加密,从而将数据块链接到了一起。综合运用这些模式,可以增强加密算法的安全性,对特定的攻击产生更强的免疫力。
(1)DES算法
最著名的对称加密算法DES(Data Encryption Standard,数据加密标准)是由IBM公司在20世纪70年代发展起来的,在经过加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National StandardInstitute,ANSI)承认。DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码,在每轮编码时都使用不同的子密钥,子密钥的长度均为48位,由56位的完整密钥得出。DES用软件进行解码需要很长时间,而用硬件解码速度非常快,幸运的是早些时候大多数黑客并没有足够的设备制造出这种硬件设备。但是,由于现在的计算机速度越来越快,制造这样一台特殊机器需要花费的成本已经大大降低,所以现在再要求“强壮”加密的场合单独使用DES已经不再适合了。
(2)三重DES
因为确定一种新的加密法是否真的安全是极为困难的,而且DES的唯一缺点就是密钥长度相对比较短,所以人们并没有放弃使用DES,而是想出了一个解决其长度问题的方法,即采用三重DES。这种方法用两个密钥对明文进行3次加密。假设两个密钥是K1和K2,其算法步骤如下。
①用密钥K1进行DES加密。
②用K2对步骤①的结果进行DES解密。
③对步骤②的结果再使用密钥K1进行DES加密。
这种方法的缺点是要花费3倍于原来的时间,但从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式了。
(3)IDEA算法
IDEA(International Data Encryption Algorithm,国际数据加密算法)是瑞士的著名学者提出的,它在1990年正式公布并在以后得到增强。这种算法是在DES算法的基础上发展出来的,类似于三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。
类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同之处在于,它采用软件实现和采用硬件实现同样快速。此外,由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,这极大地促进了IDEA的发展和完善。
此外还有由麻省理工学院的RonRivest开发的RC5算法,它允许使用不同长度的密钥,以及允许使用最长为448位的不同长度的密钥的Blowfish算法,它针对在32位处理器上的执行进行了优化。
2.公钥密码算法
公钥密码体制有两个密钥,一个可用来加密数据,称为公钥;另一个用来解密,称为私钥。私钥保密,公钥公开。任何人都能用公钥对加密消息,只有私钥的拥有者才能对它进行解密。公钥密码算法的一个重要用途就是数字签名,用于数字签名时,密钥的使用与加密时使用相反。签名就是对消息加密,加密密钥保密,只有加密密钥的拥有者才能对消息签名,从而这个签名密钥称为签名密钥。验证就是解密消息,解密密钥公开,使得任何人都能验证签名,这个解密密钥称为验证密钥。
目前流行的公钥算法是RSA,名字来源于它的发明者Ron Rivest、Adi Shamir以及Leonard Adleman。RSA的安全性基于大数因子分解的困难性。RSA公钥密码算法既可用于加密,也可用于数字签名。RSA速度慢,所以RSA算法一般不直接用于数据加密,而用于对称密码算法密钥的传递和数字签名。
椭圆曲线上的公钥密码体制基于椭圆曲线群上的离散对数困难性问题,目前,还没有发现亚指数算法,所以,相对于RSA而言,密钥短,其160比特长度密钥可以达到RSA1024比特密钥的强度,是目前最有前途的密码体制之一。
量子密码体制是一种安全的公钥密码体制,目前,基于量子密码的保密通信技术已经取得了很大的成功,正逐步走向应用。
1978年出现了著名的RSA算法。这是一种公钥加密算法,这种算法为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是由密钥管理中心先生成一对RSA密钥,其中之一称为私钥,由用户保存;另一个称为公钥,可对外公开,甚至可在网络服务器中注册。在传送信息时,常采用私钥加密方法与公钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
密钥管理中心产生一对公钥和私钥的方法如下:在离线方式下,先产生两个足够大的质数p、q,计算n=p×q和z=(p-1)×(q-1),再选取一个与z互素的奇数e,称e为公开指数;从这个e值可以找出另一个值d,并能满足e×d=1mod(z)条件。由此而得到的两组数(n,e)和(n,d)分别称为公开密钥和保密密钥,或简称公钥和私钥。
RSA算法之所以具有安全性,是基于数论中的一个特性事实:即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。在当今技术条件下,当n足够大时,为了找到d,欲从n中通过质因子分解试图找到与d对应的p、q是极其困难甚至是不可能的。由此可见,RSA的安全性是依赖于作为公钥的大数n的位数长度的。为保证足够的安全性,一般认为现在的个人应用需要用384bit或512bit的n,公司需要用1024bit的n,极其重要的场合应该用2048bit的n。
RSA算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密后发出即可。对方收到信息后,用仅为自己所知的解密密钥将信息解密,从而获知报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题。不过RSA并不能替代DES,它们的优缺点正好互补。RSA的密钥很长,加密速度慢;DES正好弥补了RSA的缺点。即DES用于明文加密,RSA用于DES密钥的加密。因为DES加密速度快,适合加密较长的报文;而RSA可解决DES密钥分配的问题。美国的保密增强邮件(PEM)就是采用了RSA和DES结合的方法,目前已成为E-mail保密通信标准。
Taher Elgamal开发了Elgamal算法,这种算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数的难度。
数字签名算法(DSA)由美国政府开发,作为数字签名的标准算法。这种算法基于Elgamal算法,但是只允许认证,不能提供机密性。
将椭圆曲线作为加密算法提出于1985年,相比于RSA算法,这种算法最大的好处是密钥更小,因而同样安全级别的计算速度更快。
3.密钥管理
按照Kerckhoffs原则,密码体制的安全性仅仅依赖于密钥的保密,从而对密钥的保护就成了密码应用安全的根本保证。然而,密钥需要分发到合法用户,需要使用、存储、更新、销毁等,这就是密钥管理。密钥管理是一项复杂和困难的技术,是现代密码应用技术的核心问题之一。
密钥管理包含了一系列的技术问题,也包含了行政管理人员的素质问题,对于密钥的产生、分配、存储、更换、销毁、使用和管理等一系列环节,必须都注意到。每个具体系统的密钥管理必须与具体的使用环境和保密要求相结合,万能的、绝对安全的密钥管理系统是不存在的。实践表明,从密钥管理渠道窃取密钥比单纯从破译途径窃取密钥要容易得多,代价也要小得多。
依据应用对象的不同,密钥管理方式也不相同。如对于物理层加密,由于只在邻节点之间进行,因此密钥管理比较简单;而对于运输层以上(端/端)的加密,密钥管理就比较复杂;单节点构成的网络系统比多节点构成的分布式网络系统,密钥的管理就更加复杂。这里,主要介绍端端加密的密钥管理办法,这些方法适用于主机和多终端系统,既能保护网络中通信的数据,也能保护网络中存储的数据。
一个良好的密钥管理系统,应尽可能不依赖人的因素,这不仅是为了提高密钥管理的自动化水平,同时也是为了提高系统的安全程度。为此,密钥管理系统有以下具体要求。
·密钥难以被非法窃取。
·在一定条件下,窃取了密钥也没有用。
·密钥的分配和更换过程对用户是透明的。
一个密钥管理系统设计时,要先明确解决什么问题,要考虑哪些因素。一般有以下几方面的因素必须考虑。
·系统对保密的强度要求。
·系统中哪些地方需要密钥,密钥采用何种方式预置或装入保密组件。
·一个密钥的生命周期是多长。
·系统安全对用户承受能力的影响。
上述因素中有些是技术性的,有些则是非技术性的,只要对这些因素作认真考虑,就能设计出一个符合需求的密钥管理系统。
4.数据加密技术
数据加密技术是网络通信安全所依赖的基本技术。按照网络层次的不同,数据加密方式划分主要有链路加密、节点加密和端端加密三种。
(1)链路加密
链路加密是最常用的加密方法之一,通常用硬件在物理层实现,用于保护通信节点间传输的数据。这种加密方式比较简单,实现也比较容易,只要将一对密码设备安装在两个节点间的线路上,使用相同的密钥即可,用户没有选择的余地,也不需要了解加密技术的细节。一旦在一条线路上采用链路加密,往往需要在全网内都采用链路加密。图14-2所示的是这种加密方式的原理图。这种方式在临近的两个节点之间的链路上传送是加密的,而在节点中信息是以明文形式出现的。在实施链路加密时,报头和报文一样都要进行加密。
图14-2 链路加密模式原理图
链路加密方式对用户是透明的,即加密操作由网络自动进行,用户不能干预加密/解密过程。这种加密方式可以在物理层和链路层实现,主要以硬件方式完成,用以对信息或链路中可能被截取的信息进行保护。这些链路主要包括专用线路、电话线、电缆、光纤、微波和卫星通道等。
(2)节点加密
节点加密是链路加密的改进,其目的是为了克服链路加密在节点处易遭非法存取的缺点。在协议栈的运输层上进行加密,是对源点和目的点之间传输的数据信息进行加密保护。实现方法与链路加密类似,只是将加密算法组合到依附于节点的加密模块中,加密原理如图14-3所示。这种加密方式明文只出现在节点的保护模块中,可以提供用户节点间连续的安全服务,也能实现对等实体鉴别。
图14-3 节点加密模式原理图
节点加密也是每条链路使用一个专用密钥,但从一个密钥到另一个密钥的变换过程是在保密模块中进行的。
(3)端端加密
传输层以上的加密统称为端端加密。端端加密是面向协议栈高层主体进行加密,一般在表示层以上实现。协议信息以明文形式传输,用户数据在中间节点不需要加密。端端加密一般由软件完成。在网络高层进行加密,不需要考虑网络低层的线路、调制解调器、接口与传输码等细节,但要求用户的联机自动加密软件必须与网络通信协议软件结合,而各厂商的网络通信协议软件往往各不相同,因此目前的端端加密往往采用脱机调用方式。端端加密也可以采用硬件方式实现,不过该加密设备要么能识别特殊的命令字,要么能识别低层协议信息,要完成对用户数据的加密,硬件实现往往有很大难度。
大型网络系统中,交换网络在多收发方传输信息的时候,用端端加密是比较合适的。端端加密往往以软件方式实现,并在协议栈的高层(应用层和表示层)上完成。端端加密原理如图14-4所示,数据在通过各节点传输时一直对数据进行保护,只是在终点进行加密处理。在数据传输的整个过程中,以一个能变化的密钥和算法进行加密。在中间节点和有关安全模块中不出现明文,端端加密或节点加密时,不加密报头,只加密报文。
图14-4 端端加密模式原理图
端端加密具有链路加密和节点加密所不具有的优点,一是成本低,由于端端加密在中间节点都不需要解密,即数据到达目的地之前始终用密码保护着,所以只要求源和目标节点具有加密/解密设备,而链路加密则要求处理加密信息的每条链路均要配有加密/解密设备;二是端端加密算法/设备可以由用户提供,因此对用户来说这种加密方式比较灵活。
然而,由于端端加密只加密报文,数据报头还是保持明文形式,所以容易被流量分析者所利用;另外,端端加密所需的密钥数量远大于链路加密,密钥管理代价很高。
5.数字签名与认证技术
(1)数字签名原理
对文件进行加密解决了传送信息的保密问题,而防止他人对传输的文件进行破坏,以及如何确定发信人的身份还需要采取其他的手段,手段之一就是数字签名。在电子商务安全保密系统中,数字签名技术有着特别重要的地位,在电子商务安全服务中的源鉴别、完整性服务和不可否认服务中,都要用到数字签名技术。在电子商务中,完善的数字签名应具备签字方不能抵赖、他人不能伪造以及在公证人面前能够验证真伪的能力。
数字签名是通过一个单向函数对要传送的报文进行处理得到的,用以认证报文来源并核实报文是否发生变化的一个字母数字串。
数字签名的作用就是为了鉴别文件或书信的真伪,传统的做法是相关人员在纸质文件或书信上亲笔签名或印章。签名起到认证、核准、生效的作用。数字签名用来保证信息传输过程中信息的完整和提供信息发送者身份的认证。
在书面文件上签名是确认文件的一种手段,其作用有两点,第一,因为自己的签名难以否认,从而确认了文件已签署这一事实;第二,因为签名不易仿冒,从而确定了文件是真的这一事实。
数字签名与书面文件签名有相同之处。采用数字签名,也能确认两点,第一,信息是由签名者发送的;第二,信息自签发后到收到为止未曾做过任何修改。
这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息,或发出(收到)信件后又加以否认等情况发生。
数字签名技术在具体工作时,首先发送方对信息施以数学变换,所得的信息由原始信息和数学变换的参数唯一确定。在接收方进行逆变换,得到原始信息。只要数学变换方法优良,变换后的信息在传输中就具有很强的安全性,很难被破译、篡改。这一个过程往往采用加密方法,对应的反变换过程就成为对应的解密方法。
数字签名技术中一项重要技术就是消息摘要生成技术,就是通过一个单向函数将消息压缩成一个160bit、128bit或某个固定长度短消息的技术,这个函数一般称为Hash函数或算法,生成的短消息称为消息摘要(Digital Digest)或数字指纹法(Digital Finger Print),也称为散列值。它和签名算法配合使用,签名算法只对消息摘要签名。
哈希算法是一种求逆困难的算法,要求找到两个不同的消息具有相同消息摘要,或者找到一个消息具有已知消息摘要是很困难的。
数字签名的基本原理如下。
①被发送文件采用哈希算法对原始消息进行运算,得到一个固定长度的消息摘要。
②发送方生成消息摘要,用私钥对摘要加密进行数字签名。
③这个数字签名将作为消息报文的附件和消息报文一起发送给接收方。
④接收方先从接收到的原始报文中用同样的算法计算出新的报文摘要,再用发送方的公钥对报文附件的数字签名进行解密,比较两个报文摘要,如果值相同,接收方就能确认该数字签名是发送方的。
(2)数字签名算法
数字签名的算法很多,应用最为广泛的有DSS数字签名体制、RSA数字签名体制和EIGamal数字签名体制。美国数字签名标准DSS是一种目前应用最广泛的数字签名算法。
(3)数字签名存在的问题
数字签名的引入过程中不可避免地会带来一些新问题,需要进一步加以解决。除技术因素问题以外,还存在许多经济、管理以及法律等方面的问题,特别需要相关法律条文的支持。
·需要立法机构对数字签名技术有足够的重视,并且在立法上加快脚步,迅速制定有关法律,以充分实现数字签名具有的特殊鉴别作用,有力地推动电子商务以及其他网上事务的发展。
·如果发送方的信息已经进行了数字签名,那么接收方就一定要有数字签名软件,这就要求软件具有很高的普及性。
·假设某人发送信息后脱离了某个组织,被取消了原有数字签名的权限,以往发送的数字签名在鉴定时只能在取消确认列表中找到原有确认信息,这样就需要鉴定中心结合时间信息进行鉴定。
·基础设施(如鉴定中心、在线存取数据库等)的费用,是采用公共资金还是在使用期内向用户收费;如果在使用期内收费,会不会影响到这项技术的全面推广。
(4)数字签名实施
用户首先可以下载或者购买数字签名软件,然后安装在个人计算机上。在产生密钥对后,软件自动向外界传送公开密钥。由于公钥的存储需要,所以需要建立一个鉴定中心(CA)完成个人信息及其密钥的确定工作。
鉴定中心是一个可信的第三方成员。用户在获取公钥时,首先向鉴定中心请求数字确认,鉴定中心确认用户身份后,发出数字确认,同时鉴定中心向数据库发送确认信息。然后用户使用私钥对所传信息签名,保证信息的完整性和真实性,也使发送方无法否认信息的发送,之后发向接收方;
接收方接收到信息后,使用公钥确认数字签名,进入数据库检査用户确认信息的状况和可信度;最后数据库向接收方返回用户确认状态信息。
不过,在使用这种技术时,签名者必须注意保护好私钥,因为它是公钥体系安全的重要基础。如果密钥丢失,应该立即报告鉴定中心取消认证,将其列入确认取消列表之中。
其次,鉴定中心必须能够迅速确认用户的身份及其密钥的关系。一旦接收到用户请求,鉴定中心要立即认证信息的安全性并返回确认信息。
(5)数字签名与数字认证
数字认证是基于安全标准、协议和密码技术的电子证书,用以确立一个人或服务器的身份,它把一对用于信息加密和签名的电子密钥捆绑在一起,保证了这对密钥真正属于指定的个人和机构。数字认证由验证机构CA进行电子化发布或撤销,信息接收方可以从CAWeb站点上下载发送方的验证信息。Verisign是第一家X.509公开密钥的商业化发布机构,在它的Digital ID下可以生成、管理应用于其他厂商的数字签名的公开密钥验证。
(6)数字签名的发展方向
支持数字签名是Web发展的目标,确保数据保密性、数据完整性和不可否认性才能保证在线商业的安全交易。基于数字签名等有关技术的复杂认证能力将与口令保护一样直接嵌入操作系统环境、应用、远程访问产品、信息传递系统及Internet防火墙中。