信息安全案例教程:技术与应用
上QQ阅读APP看书,第一时间看更新

3.1 密码与数据保密性

数据在存储、传输和处理中面临的首要问题是非授权访问。确保数据的保密性是防止信息泄露的基本要求,实现保密性的重要方法是加密和访问控制。本节主要介绍与加密相关的技术和方法。

3.1.1 密码学术语和基本概念

1.密码学与保密通信

传统的密码学主要用于保密通信,其基本目的是使得两个在不安全信道中通信的实体,以一种使攻击者不能明白和理解通信内容的方式进行通信。

保密通信的基本过程如图3-2所示。

图3-2 保密通信基本过程

图3-2中包括如下部分。

●通信的参与者:发送方(或称为发方、发送者)和接收方(或称为收方、接收者),以及潜在的密码分析者(攻击者)。

●明文M:指人们可以读懂内容的原始消息,即待加密的消息(Message),也称明文P(Plain Text)。

●密文C:明文变换成一种在通常情况下无法读懂的、隐蔽后的信息称为密文(Cypher Text,Cypher亦为Cipher)。

●加密E:由明文到密文的变换过程称为加密(Encryption)。

●解密D:由密文到明文的变换过程称为解密(Decryption)。

在保密通信过程中,发送方将明文通过加密,使得只有合法的接收方才能通过相应的解密得到明文,而攻击者即使窃听或截取到通信的密文信息也无法还原出原始信息。

保密通信中,通信双方要商定信息变换的方法,即加密和解密算法,使得攻击者很难破解,同时要求算法高速、高效和低成本;攻击者对窃听或截取的密文会想方设法在有效时间内进行破解,以得到有用的明文信息。前者是研究把明文信息变换成不能破解或很难破解的密文的技术,称为密码编码学(Cryptography);后者是研究分析破译密码,从密文推演出明文或相关内容的技术,称为密码分析学(Cryptanalysis)。它们彼此目的相反,相互对立,但在发展中又相互促进。

现代密码技术已不仅仅限于保密通信的应用了,现代密码技术及应用已经涵盖数据处理过程的各个环节,如数据加密、密码分析、数字签名、身份认证、秘密分享等。通过以密码学为核心的理论与技术来保证数据的机密性、完整性、不可否认性等多种安全属性。

2.密码的概念

大家似乎很熟悉“密码”一词,日常生活中登录各种账户要输入密码,银行ATM取款时要输入密码。其实,严格来讲这里所谓的密码应该被称作口令(Password),因为它不是本来意义上的加密代码,而是用于认证用户身份的口令,关于口令的更多相关知识将在第4章身份安全中介绍。

或许与最早的密码起源于古希腊有关,密码学——Cryptography(或Cryptology)一词来源于希腊语。密码通常是密码算法的简称,它由加密算法和解密算法组成。

公元前6年的古希腊人可能是最早有意识使用一些技术来加密信息的,他们使用一根叫Scytale的棍子(见图3-3),送信人先绕棍子卷一张纸条,然后把要加密的信息写在上面,接着打开纸送给收信人。如果不知道棍子的直径是很难解密里面的内容的。在这个例子中,Scytale可以理解成是一种加密算法,如果暴露了这根棍子,也就没有秘密可言了。

图3-3 Scytale棍子

3.密钥的概念

如果算法的保密性是基于保持算法的秘密,这种算法称为受限算法。按照现在的标准,受限算法的保密性已远远不够。大的或经常变换的组织不能使用它们,因为每有一个用户离开这个组织或其中有人无意暴露了算法的秘密,这一密码算法就得作废了。更糟的是,受限密码算法不可能进行质量控制或标准化。每个组织必须有他们自己的唯一算法,这样的组织不可能采用流行的硬件或软件产品。密码学家用“密钥”解决了这个问题。

如图3-4所示,密钥K(Key)是指在密码算法中引进的控制参数,对一个算法采用不同的参数值,其解密结果就不同。加密算法的控制参数称为加密密钥,解密算法的控制参数称为解密密钥。

图3-4 应用密钥的加解密过程

应用密钥加密数据的一个经典例子是凯撒密码,据说这是因为凯撒是率先使用加密函数的古代将领之一。凯撒密码是一种简单置换密码,密文字母表是由正常顺序的明文字母表循环左移3个字母得到的,如图3-5所示。加密过程可表示为CiEKMi)=(Mi+3)mod 26,这里的密钥为3。如将字母A换作字母D,将字母B换作字母E。明文“hello world”由此得到的密文就是“khoor zruog”。解密时只要将密文中的每个字母反过来替换即可得到明文了,即MiDkCi)=(Ci-3)mod 26。

图3-5 密钥为3的凯撒密码

4.密码的安全性

如何认为一个密码,或是说加解密算法是安全的?

先来看看常用于破解密码的3种方法。

(1)穷举攻击

穷举攻击又称作蛮力(Brute Force)攻击,是指密码分析者用试遍所有密钥的方法来破译密码。穷举攻击所花费的时间等于尝试次数乘以一次解密(加密)所需的时间。例如,对于上面介绍的凯撒密码,攻击者就可以通过穷举密钥1~25来尝试破解。

显然,可以通过增大密钥量或加大解密(加密)算法的复杂性来对抗穷举攻击。例如,将26个字母扩大到更大的字符空间,这样当密钥量增大时,尝试的次数必然增大。

或者,密文与明文的变换关系不再是顺序左移,而是先选定一个单词,如security(密钥),然后用26个字母中剩余不重复的字母依次对应构造出一张变换表,见表3-1。这样可以增加解密(加密)算法的复杂性,完成一次解密(加密)所需的时间增大,从而增加穷举攻击的难度。当然,这里只是为了举例说明一下基本思想,尽管表3-1中有26!≈4×1026种变换,但是这样的变换对于目前的穷举攻击依然不在话下。

表3-1 字母替换表

(2)统计分析攻击

统计分析攻击是指密码分析者通过分析密文的统计规律来破译密码。例如,对于上面的凯撒密码就可以通过分析密文字母和字母组的频率而破译。实际上,凯撒密码这种字母间的变换并没有将明文字母出现的频率掩藏起来,很容易利用频率分析法进行破解。所谓频率分析,就是基于某种语言中各个字符出现频率的不一样,表现出一定的统计规律,这种统计规律可能在密文中得以保存,从而通过一些推测和验证过程来实现密码的分析。例如英文字母的频率分布如图3-6所示。

图3-6 英文字母的频率分布图

从图3-6中可以看出,字母e出现的频率最高。可以通过对密文中出现的各个字母进行统计,找出它们各自的频率。然后根据密文中出现的各个字母频率,与英文字母标准频率进行对比分析,从高到低,依次对应明文“e”“t”…“j”,并由此依次尝试,最终推断出密钥,从而破解密文。

对抗统计分析攻击的方法是增加算法的混乱性和扩散性。

1)混乱性(Confusion)。当明文中的字符变化时,截取者不能预知密文会有什么变化,这种特性称为混乱性。混乱性好的算法,其明文、密钥和密文之间有着复杂的函数关系。这样,截取者就要花很长时间才能确定明文、密钥和密文之间的关系,从而要花很长的时间才能破译密码。

2)扩散性(Diffusion)。密码还应该把明文的信息扩展到整个密文中去,这样,明文的变化就可以影响到密文的很多部分,这种特性称为扩散性。这是一种将明文中单一字母包含的信息散布到整个输出中去的特性。好的扩散性意味着截取者需要获得很多密文,才能去推测加密算法。

(3)数学分析攻击

数学分析攻击是指密码分析者针对加密算法的数学依据,通过数学求解的方法来破译密码。对抗这种数学分析攻击,应选用具有坚实数学基础和足够复杂的加密算法。

(4)社会工程攻击

通过威胁、勒索、行贿或者行使武力直到获得密钥,这些社会工程学攻击也是一种破解密码的途径。本章第3.5节介绍的信息隐藏技术是对付这种攻击的方法。

通过上面的分析可知,影响密码安全性的基本因素包括密码算法的复杂度、密钥机密性和密钥长度等。密码算法本身的复杂程度或保密强度取决于密码设计水平、破译技术等,它是密码系统安全性的保证。对于密钥的机密性,早在1883年柯克霍夫(Kerckhoff)在其名著《军事密码学》中就提出了一个原则:密码的安全不依赖于对加密系统或算法的保密,而依赖于密钥。这一原则已被后人广泛接受,称为柯克霍夫原则(Kerckhoffs’Principle)。

评估密码系统安全性主要有3种方法:

1)无条件安全性。这种评价方法考虑的是假定攻击者拥有无限的计算资源,但仍然无法破译该密码系统。

2)计算安全性。这种方法是指如果使用目前最好的方法攻破它所需要的计算资源远远超出攻击者拥有的计算资源,则可以认为这个密码系统是安全的。

3)可证明安全性。这种方法是将密码系统的安全性归结为某个经过深入研究的困难问题(如大整数素因子分解、计算离散对数等)。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关,没有完全证明问题本身的安全性,并给出它们的等价性证明。

对于实际使用的密码系统而言,由于至少存在一种破译方法,即暴力攻击法,因此都不能满足无条件安全性,只能达到计算安全性。密码系统要达到实际安全,就要满足以下准则:

1)破译该密码系统的处理复杂性巨大,以至于在实际中是无法实现的。

2)破译该密码系统所需要的计算时间超过被加密信息的生命周期。例如,战争中发起战斗攻击的作战命令只需要在战斗打响前保密。

3)破译该密码系统的代价超过被加密信息本身的价值。

如果一个密码系统能够满足以上准则之一,就可以认为是实际安全的。密码学界流行的一种观点是,如果算法公开,且大多数人在相当长的时间内没有找到破解算法的有效办法,则可以认为这种算法是安全的。

5.密码体制

密码体制,也称为密码系统,是指明文、密文、密钥以及实现加密和解密算法的一套软件与硬件机制。由于密码算法决定密码体制,有时对密码体制和密码算法不加区分。

根据加密密钥(通常记为Ke)和解密密钥(通常记为Kd)的关系,密码体制可以分为对称密码体制(Symmetric Cryptosystem)和非对称密码体制(Asymmetric Cryptosystem)。

●对称密码体制,也称为单钥或私钥密码体制,其加密密钥和解密密钥相同或实质上等同(KeKd),即由其中一个很容易推出另一个。对称密码体制模型如图3-7所示。

图3-7 对称密码体制模型

●非对称密码体制,也称为公钥或双密钥密码体制,其加密密钥和解密密钥不同(这里不仅KeKd,在计算上Kd不能由Ke推出),这样将Ke公开也不会损害Kd的安全。非对称密码体制模型如图3-8所示。

图3-8 非对称密码体制模型

6.密钥管理

由于密码技术都依赖于密钥,因此密钥的安全管理是密码技术应用中非常重要的环节。只有密钥安全,不容易被攻击者得到或破获,才能保障实际通信或加密数据的安全。

密钥管理方法因所使用的密码体制而异,但对密钥的管理通常包括:如何在不安全的环境中,为用户分发密钥信息,使得密钥能够安全、正确并有效地使用;在安全策略的指导下处理密钥自产生到最终销毁的整个生命周期,包括密钥的产生、存储、备份/恢复、装入、分配、保护、更新、泄露、撤销、销毁等。

密钥的产生首先必须考虑其安全性,一般要求在安全的环境下产生,可以通过某种密码协议或算法生成。其次,必须考虑具体密码算法的限制,根据不同算法检测,以避免得到弱密钥。此外,在确定要产生的密钥的长度时,应结合应用的实际安全需求,如要考虑加密数据的重要性、保密期限长短、破译者可能的计算能力等。

密钥分配,也称为密钥分发,是指将密钥安全地分发给需要的用户,一般来说,在通信双方建立加密会话前,需要进行会话密钥的分配。

密钥使用过程中的安全管理也是密钥管理的一个重点。一般来说,应当根据不同需要使用不同的密钥,如身份认证使用公钥和私钥对、临时的会话使用会话密钥。在保密通信中,每次建立会话都需要双方协商或分配会话密钥,而不应当使用之前会话所使用的会话密钥,更不能永远使用同一个会话密钥。甚至在有些保密通信系统中,同一次会话经过一定的时间或数据量之后,会强制要求通信各方重新生成会话密钥。

除安全存储外,密钥在分发或传输过程中,也需要加强安全保护。如密钥传输时,可以拆分成两部分,并委托给两个不同的人或机构来分别传输,还可通过使用其他密钥加密来保护。

在特定的环境中密钥必须能被撤销。密钥撤销的原因包括与密钥有关的系统被迁移,怀疑一个特定密钥已泄漏并受到非法使用的威胁,或密钥的使用目的被改变等。一个密钥停用后可能还要保持一段时间,如用密钥加密的内容仍需保密一段时间,所以密钥的机密性要保持到所保护的信息不再需要保密为止。密钥销毁必须清除一个密钥的所有踪迹。密钥使用活动终结后,安全销毁所有敏感密钥的副本十分重要,应该使得攻击者无法通过分析旧数据文件或抛弃的设备确定旧密钥。

3.1.2 对称密码体制与常见对称加密算法

在对称密码体制中,明文的加密和密文的解密采用相同的密钥。在应用对称加密的通信中,消息的发送者和接收者必须遵循一个共享的秘密即使用的密钥。

根据密码算法对明文信息的加密方式,对称密码体制常分为两类。

●分组密码(Block Cipher,也叫块密码),一次加密一个明文块。

●流密码(Stream Cipher,也叫序列密码),一次加密一个字符或一位。

目前常见的一些对称密码算法包括DES、3-DES、AES、IDEA、BlowFish、CAST、RC系列算法。

(1)数据加密标准(Data Encryption Standard,DES)

1977年,美国国家标准与技术研究院(National Institute of Standard and Technology,NIST)采纳了IBM公司提交的,由美国学者Tuchman和Meyer完成的Lucifer加密算法的改进版本,作为美国非国家保密机关使用的数据加密标准,随后DES在国际上被广泛使用。

DES算法使用分组加密方式进行加密。它以64位的分组长度对数据进行加密,输出64位长度的密文。密钥长度为56位,密钥与64位数据块的长度差用于填充8位奇偶校验位。DES算法只使用了标准的算术和逻辑运算,所以适合在计算机上用软件来实现。DES被认为是最早广泛用于商业系统的加密算法之一。

由于DES设计时间较早,且采用的56位密钥较短,因此已经发掘出一系列用于破解DES加密的软件和硬件系统。DES不应再被视为一种安全的加密措施。而且,由于美国国家安全局在设计算法时有行政介入的问题发生,很多人怀疑DES算法中存在后门。

3-DES(Triple DES)是DES的一个升级,它不是全新设计的算法,而是通过使用2个或3个密钥执行3次DES(加密——解密——加密)。3个密钥的3-DES算法的密钥长度为168位,2个密钥的3-DES算法的密钥长度为112位,这样通过增加密钥长度以提高密码的安全性。随着AES的推广,3-DES将逐步完成其历史使命。

(2)高级加密标准(Advanced Encryption Standard,AES)

1995年,NIST采纳了由密码学家Rijmen和Daemen设计的Rijindael算法,使其成为了高级加密标准。Rijindael算法之所以最后当选,是因为它集安全性、效率、可实现性及灵活性于一体。AES已经成为对称加密算法中最流行的算法之一。

AES算法是具有分组长度和密钥长度均可变的多轮迭代型加密算法。分组长度一般为128 bit,密钥长度可以是128/192/256位。根据密钥的长度,算法分别被称为AES-128、AES-192和AES-256。

关于AES算法的安全性讨论仍然在进行中,目前尚无已知的安全弱点,安全性良好。

(3)国际数据加密算法(International Data Encryption Algorithm,IDEA)

由中国学者来学嘉(Xuejia Lai)与著名密码学家James Massey于1990年共同提出,1992年经最后修改更名。

IDEA的设计思想是“把不同代数群中的运算相混和”,它是一种多层迭代分组密码算法,使用64位分组和128位的密钥,是分组密码算法中速度快、安全性强的代表算法之一。

IDEA是国际公认的继DES之后又一个成功的分组对称密码算法。IDEA运用硬件与软件实现都很容易,而且在实现上比DES算法快得多。IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力。该算法也在多种商业产品中得到应用,著名的加密软件PGP(Pretty Good Privacy)就选用IDEA作为其分组对称加密算法。IDEA的应用和研究正在不断走向成熟。

(4)RC系列算法(Rivest Cipher,RC)

由著名密码学家Ron Rivest设计的几种算法的统称,己发布的算法包括RC2、RC4、RC5和RC6。它是密钥大小可变的流式密码,使用面向字节的操作。

为网络浏览器和服务器之间安全通信定义的安全套接字层/传输层安全(Secure Sockets Layer/Transport Layer Security,SSL/TLS)协议标准中使用了RC4。它也被用于属于IEEE802.11无线局域网标准的有线等效保密(Wire Equivalent Privacy,WEP)协议及更新的Wi-Fi保护访问(Wi-Fi Protected Access,WPA)协议中。目前,已有针对WEP中RC4算法的攻击。本质上,这种攻击不在于RC4算法本身,而是由于输入到RC4的密钥的产生方法。这种攻击并不适用于其他使用RC4的应用,而且能够在WEP中通过改变密钥的产生方法来修补。这一问题恰恰说明设计一个密码系统的安全不仅包括密码函数,还包括如何正确地使用这些函数。

3.1.3 公钥密码体制与常见公钥密码算法

1.对称密码体制的缺陷与公钥密码体制的产生

一个安全的对称密钥密码体制,可以达到下列功能:

1)保护信息机密。明文经加密后,除非拥有密钥,外人无从了解其内容。

2)认证发送方之身份。接收方任意选择一随机数r,请发送方加密成密文C,送回给接收方。接收方再将C解密,若能还原成原来的r,则可确知发送方的身份无误,否则是第三者冒充。由于只有发送方(r的接收方除外)知道加密密钥,因此只有他能将此随机数r所对应的C求出,其他人则因不知道加密密钥,而无法求出正确的C。

3)确保信息完整性。在许多不需要隐藏信息内容,但需要确保信息内容不被更改的场合,发送方可将明文加密后的密文附加于明文之后送给接收方,接收方可将附加的密文解密,或将明文加密成密文,然后对照是否相符。若相符则表示明文正确,否则有被更动之嫌疑。通常可利用一些技术,将附加密文的长度缩减,以减少传送时间及内存容量。有关这些方法,本书在第3.2节散列函数中介绍。

对称密码体制具有一些天然的缺陷,包括:

1)密钥管理的困难性。对称密码体制中,密钥为发送方和接收方所共享,分别用于消息的加密和解密。密钥需要受到特别的保护和安全传递,才能保证对称密码体制功能的安全实现。此外,任何两个用户间要进行保密通信就需要一个密钥,不同用户间进行保密通信时必须使用不同的密钥。若网络中有n人,则每一人必须拥有n-1把密钥,网络中共需有n(n-1)/2把不同的密钥。当n=1000时,每人须保管999把密钥,网络中共需499500把不同的密钥。这么多的密钥会给密钥的安全管理与传递带来很大的困难。

2)陌生人之间的保密通信。电子商务等网络应用提出了互不相识的网络用户间进行秘密通信的问题,而对称密码体制的密钥分发方法要求密钥共享各方互相信任,因此它不能解决陌生人之间的密钥传递问题,也就不能支持陌生人之间的保密通信。

3)无法达到不可否认服务。对称密钥密码系统无法达到如手写签名一样具有事后不可否认的特性,这是由于发送方与接收方都使用同一密钥,因此发送方可在事后否认他先前发送的任何信息。接收方也可以任意地伪造或篡改,而第三者无法分辨是发送方抵赖发送的信息或是接收方自己捏造信息。

如何解决以上的这些问题呢?现在回到密码系统模型上,如果将加密密钥Kd与解密密钥Ke分开,使得即使知道Kd,还是无法得知Ke,那么就可将Kd公开,但只有接收方知道Ke。在此情况下,任何人均可利用Kd加密,而只有知道Ke的接收方才能解密。或是只有接收方一人才能加密(加密与解密其实都是一种动作),任何人均能解密。这就是公钥(公开密钥)密码系统的主要精神,也是其与对称密码系统最大的不同所在。

1976年,Diffie和Hellman在New Direction in Cryptography(密码学新方向)一文中首次提出了公钥密码体制的思想,这就是有名的Diffie-Hellman公钥分配系统(Public Key Distribution System,PKDS)。但是他们并没有提出一个完整的公钥系统,而只是推测其存在。1977年,Rivest、Shamir和Adleman第一次实现了公钥密码体制,称为RSA算法。

2.公钥密码体制的内容

图3-9是公钥密码体制加解密的原理图,加密和解密过程主要有以下几步。

图3-9 公钥密码体制加解密原理图

1)系统中的接收方B产生一对公钥和私钥,PKB表示公钥,SKB表示私钥。

2)B将公钥放在一个公开的寄存器或文件中,通常放入管理密钥的密钥分发中心。私钥则被用户保存。

3)A如果要想向B发送消息M,则首先必须得到并使用B的公钥加密M,表示为C=,其中C是密文,E是加密算法。

4)B收到A的密文后,用自己的私钥解密得到明文信息,表示为MDSKB(C),其中D是解密算法。

公钥密码体制的安全性体现在:

●接收方产生密钥对(公钥PKB和秘钥SKB)是很容易计算得到的。

●发送方用收到的公钥对消息加密以产生密文,即,在计算上是容易的。

●接收方用自己的秘钥对密文解密,即在计算上是容易的。

●密码分析者或者攻击者由B的公钥求私钥在计算上是不可行的。

●密码分析者或者攻击者由密文和B的公钥恢复明文在计算上是不可行的。

●加密和解密操作的次序可以互换,也就是

安全的公钥密码体制可以保护信息机密性,发送方用接收方的公钥将明文加密成密文,此后只有拥有私钥的接收方才能解密。此外,公钥密码体制还能达到下列功能:

1)简化密钥分配及管理。网络上的每一人只需要一对公钥和私钥。

2)密钥交换。发送方和接收方可以利用公钥密码体制交换会话密钥。这种应用也称为混合密码系统,即用对称密码体制加密需要保密传输的消息本身,然后用公钥密码体制加密对称密码体制中使用的会话密钥。将两者结合使用,充分利用对称密码体制在处理速度上的优势和非对称密码体制在密钥分发和管理方面的优势。

3)实现不可否认功能。由于只有接收方才拥有私钥,若他先用私钥将明文加密成密文(签名),则任何人均能用公开密钥将密文解密(验证)进行鉴别。由于只有接收方才能将明文签名,任何人无法伪造,因此,此签名文就如同接收方亲手签名一样,日后有争执时,第三方可以很容易作出正确的判断。提供此种功能的公钥密码算法称为数字签名,本章第3.3节中将详细介绍。这种基于数字签名的方法也可提供认证功能。

3.公钥密码算法

(1)RSA算法

RSA公钥密码算法是目前应用最广泛的公钥密码算法之一。RSA算法是第一个能同时用于加密和数字签名的算法,易于理解和操作。同时,RSA是研究得最深入的公钥算法,从提出到现在已有30多年,经历了各种攻击的考验,逐渐为人们所接受,普遍被认为是当前最优秀的公钥方案之一。

RSA算法是基于群Zn中大整数因子分解的困难性建立的。RSA算法可以描述如下:

1)生成两个大素数p和q(保密)。

2)计算这两个素数的乘积n=pq(公开)。

3)计算小于n并且与n互素的整数的个数,即欧拉函数φ(n)=(p-1)(q-1)(保密)。

4)选取一个随机整数e满足1<e<φ(n),并且e和φ(n)互质,即gcd(e,φ(n))=1(公开)。

5)计算d,满足de=1 mod φ(n)(保密)。

其中,{e,n}为公钥,{d,n}为私钥。

利用RSA加密的第一步是将明文数字化,并取长度小于log2n位的数字作明文块。

加密算法:cE(m)≡me(mod n)

解密算法:D(c)≡cd(mod n)

图3-10是一个利用RSA算法的加密实例。

图3-10 公钥密码体制加解密原理图

图中的例子按照下列步骤生成密钥:

1)生成两个素数,p=17、q=11。

2)计算npq=17×11=187。

3)计算φ(n)=(p-1)(q-1)=16×10=160。

4)选择e,使得e和φ(n)互质,且小于φ(n),取e=7。

5)计算d,满足de=1 mod 160=1,且d<160。正确的d=23,因为23×7=161=10×16+1。

由此,公钥为{7,187},私钥为{23,187}。

读者可以在完成本章思考与实践的第20题时,验证这个实例,及进行加解密的实验。

RSA算法有硬件和软件两种实现方法,不论采用何种实现方法,RSA的速度总是比DES慢。因为RSA的计算量远远大于DES,在加密和解密时需要做大量的模数乘法运算。RSA在加密或解密一个200位十进制数时大约需要做1000次模数乘法运算,提高模数乘法运算的速度是解决RSA效率问题的关键所在。

硬件实现的方法采用专用芯片,以提高RSA加密和解密的速度。使用同样硬件实现两种算法,DES比RSA快大约1000倍。在一些智能卡应用中也采用了RSA算法,速度都比较慢。软件实现方法的速度要更慢一些,这与计算机的处理能力和速度有关。同样使用软件实现两种算法,DES比RSA快大约100倍。

因此,在实际应用中,RSA算法很少用于加密大块的数据,通常在混合密码系统中用于加密会话密钥,或者是数字签名和身份认证。

(2)ElGamal算法

1985年,ElGamal提出基于离散对数困难问题的数字签名,通常称为ElGamal数字签名体制,其修正形式已被NIST作为数字签名标准(Digital Signature Standard,DSS)。与RSA不同,该算法专为数字签名功能而设计,不能用于加密。本章第3.3节中将进一步介绍。

(3)椭圆曲线密码

采用公钥实现加密和数字签名的绝大多数产品及标准都使用了RSA算法。最近几年,为了安全使用RSA,RSA中密钥的长度在不断增加,加大了RSA应用处理的负担,这对于那些进行大量安全交易的电子商务网站来说更是如此。1985年,N.Koblitz和V.Miller分别独立提出了椭圆曲线密码体制(Elliptic Curve Cryptography,ECC),其依据是椭圆曲线点群上离散对数问题的难解性。

椭圆曲线密码算法的标准化工作也在进行中,国际标准化组织颁布了各种ECC算法标准,如IEEE P1363定义了椭圆曲线公钥算法。椭圆曲线公钥密码算法是RSA算法的强有力的竞争者。与RSA相比,椭圆曲线密码算法能用更少的密钥位获得更高的安全性,而且处理速度快,占用存储空间少,带宽要求低。它在许多计算资源受限的环境,如移动通信、无线设备等,得到了广泛应用。

4.公钥的管理

公钥密码技术很好地解决了密钥交换问题,不过在公钥密码体制的实际应用中还必须解决一系列问题,比如怎样分发和获取用户的公钥,如何建立和维护用户与其公钥的对应关系,获得公钥后如何鉴别该公钥的有效性,通信双方如果发生争议如何仲裁等。

为了解决上述问题,就必须有一个权威的第三方机构对用户的公钥和私钥进行集中管理,确保能够安全高效地生成、分发、保存、更新用户的密钥,提供有效的密钥鉴别手段,防止被攻击者篡改和替换。

公钥基础设施(Public Key Infrastructure,PKI)是目前建立这种公钥管理权威机构中最成熟的技术。PKI是在公钥密码理论技术基础上发展起来的一种综合安全平台,能够为所有网络应用透明地提供加密和数字签名等密码服务所必需的密钥和证书管理,从而达到在不安全的网络中保证通信信息的安全、真实、完整和不可否认的目的。本书将在第4章中对此详细介绍。