数据在存储、传输和处理中面临的首要问题是非授权访问。确保数据的保密性是防止信息泄露的基本要求,实现保密性的重要方法是加密和访问控制。本节主要介绍加密相关的技术和方法。访问控制技术在第4章介绍。
微课视频3-4
密码学的基本概念
1.密码体制基本组成
密码体制(Cryptosystem)也称为密码系统,是指明文、密文、密钥以及实现加解密算法的一套软硬件机制。由于密码算法决定密码体制,本书对密码体制和密码算法不加区分。
一个基于密码技术的保密通信基本模型如图3-6所示。
图3-6 保密通信基本模型
该模型展示了一个密码体制的基本组成,涉及以下5个部分。
1)明文 M :指人们可以读懂内容的原始消息,即待加密的消息(Message),也称明文 P (Plain Text)。
2)密文 C :明文变换成一种在通常情况下无法读懂的、隐蔽后的信息称为密文(Cypher Text,Cypher亦为Cipher)。
3)加密 E :由明文到密文的变换过程称为加密(Encryption)。
4)解密 D :由密文到明文的变换过程称为解密(Decryption)。
5)密钥 K :密钥(Key)是指在密码算法中引进的控制参数,对一个算法采用不同的参数值,其加解密结果就会不同。加密算法的控制参数称为加密密钥,解密算法的控制参数称为解密密钥。
说明:
1)在保密通信过程中,发送方将明文通过加密,使得密文只有合法的接收方才能通过相应的解密得到明文,而攻击者即使窃听或截取到通信的密文信息,也无法还原出原始信息。
2)保密通信中,通信双方要商定信息变换的方法,即加密和解密算法,使得攻击者很难破解,同时要求算法高速、高效和低成本;攻击者对窃听或截取的密文会想方设法在有效时间内进行破解,以得到有用的明文信息。前者是研究把明文信息变换成不能破解或很难破解的密文的技术,称为密码编码学(Cryptography);后者是研究分析破译密码,从密文推演出明文或相关内容的技术,称为密码分析学(Cryptanalysis)。它们彼此目的相反,相互对立,但在发展中又相互促进。
3)大家似乎很熟悉“密码”一词,日常生活中登录各种账户要输入“密码”,例如银行ATM取款要输入“密码”。其实,严格来讲这里所谓的密码应该仅被称作“口令”(Password),因为它不是本来意义上的“加密代码”,而是用于认证用户的身份。关于口令更多的相关知识将在第4章中介绍。
4)为什么要引入密钥?如果算法的保密性是基于保持算法的秘密,这种算法称为受限算法。大的或经常变换的组织不能使用它们,因为每有一个用户离开这个组织或其中有人无意暴露了算法的秘密,这一密码算法就得作废了。而且受限密码算法无法进行质量控制或标准化,因为每个组织必须有自己的唯一算法,这样的组织不可能采用流行的硬件或软件产品。案例 3-1中的人体密码机—风语者就属于受限加密算法。通过引入密钥的加解密机制,加解密算法得以公开,确保密钥的安全性成为确保密码安全性的关键。
【例3-1】 应用密钥加密数据的恺撒密码。
恺撒密码是一种简单置换密码,密文字母表是由正常顺序的明文字母表循环左移3个字母得到的,如图3-7所示。
图3-7 密钥为3的恺撒密码
加密过程可表示为: C i = E K ( M i )= ( M i +3) mod 26,这里的密钥为3。如将字母A换作字母D,将字母B换作字母E。明文“hello world”由此得到的密文就是“khoor zruog”。
解密时只要将密文中的每个字母反过来运用密钥3进行替换即可得到明文,即 M i = D k ( C i )=( C i -3) mod 26。
2.密码体制的分类
如图3-8所示,根据加密密钥(通常记为 K e )和解密密钥(通常记为 K d )的关系,密码体制可以分为对称密码体制(Symmetric Cryptosystem)和非对称密码体制(Asymmetric Cryptosystem)。
● 对称密码体制,也称单钥或私钥密码体制,其加密密钥和解密密钥相同或实质上等同( K e = K d )。
● 非对称密码体制,也称公钥或双密钥密码体制,其加密密钥和解密密钥不同(这里不仅 K e ≠ K d ,在计算上 K d 也不能由 K e 推出),这样将 K e 公开也不会损害 K d 的安全。
图3-8 对称/非对称密码体制模型
说明:
在对称密码体制中,加密过程与解密过程使用相同或容易相互推导得出的密钥,即加密和解密两方的密钥是“对称”的。这如同使用一个带锁的箱子收藏物品,往箱子里放入物品后用钥匙锁上,取出物品时则需要用同一把钥匙开锁。
虽然生活中通常上锁和开锁是用同一把钥匙,但实际上加密和解密可以不是同一个密钥,也就是说上锁和开锁可以不是同一把钥匙,当然这种密钥有一些特殊要求,3.2.3节将详细介绍这类非对称密码体制。
3.密码体制的安全性
(1)常见密码攻击方法
常见密码攻击方法可以直接针对密钥和密码算法,也可以针对密钥的产生、保管以及计算、应用环境等展开。
1)穷举攻击。穷举攻击又称作蛮力(Brute Force)攻击,是指密码分析者用试遍所有密钥的方法来破译密码。例如,对于恺撒密码,就可以通过穷举密钥1~25来尝试破解。
穷举攻击所花费的时间等于尝试次数乘以一次解密(加密)所需的时间。显然,可以通过增大密钥量或加大解密(加密)算法的复杂性来对抗穷举攻击。例如,将26个字母扩大到更大的字符空间,这样当密钥量增大时,尝试的次数必然增大。
或者,密文与明文的变换关系不再是顺序左移,而是先选定一个单词(密钥),如security,然后用26个字母中剩余的不重复的字母依次对应构造一张变换表,见表3-1。这样可以增加解密(加密)算法的复杂性,完成一次解密(加密)所需的时间增大,从而增加穷举攻击的难度。当然,这里只是为了举例说明一下基本思想,尽管表 3-1中有 26!≈4×10 26 种变换,但是这样的变换对于当前计算能力下的穷举攻击依然不在话下。
表3-1 字母变换表
2)统计分析攻击。统计分析攻击是指密码分析者通过分析密文的统计规律来破译密码。例如,对于恺撒密码就可以通过分析密文字母和字母组的频率而破译。实际上,恺撒密码这种字母间的变换并没有将明文字母出现的频率掩藏起来,很容易利用频率分析法进行破译。所谓频率分析,就是基于某种语言中各个字符出现的频率不一样,表现出一定的统计规律,这种统计规律可能在密文中得以保留,从而通过一些推测和验证过程来实现对密码的分析。例如,英文字母的频率分布如图3-9所示。
图3-9 英文字母的频率分布图
从图 3-9中可以看出,字母e出现的频率最高。可以通过对密文中出现的各个字母进行统计,找出它们各自的频率。然后根据密文中出现各个字母的频率,与英文字母标准频率进行对比分析,从高到低依次对应明文“e”“t”…“j”,并由此依次尝试,最终推断出密钥,从而破解密文。
对抗统计分析攻击的方法是增加算法的混乱性和扩散性。
● 混乱性(Confusion)。当明文中的字符变化时,攻击者不能预知密文会有什么变化,这种特性称为混乱性。混乱性好的算法,其明文、密钥和密文之间有着复杂的函数关系。这样,攻击者就要花很长时间才能确定明文、密钥和密文之间的关系,从而要花很长的时间才能破译密码。
● 扩散性(Diffusion)。密码还应该把明文的信息扩展到整个密文中去,这样,明文的变化就可以影响到密文的很多部分,这种特性称为扩散性。扩散性好的算法,可以将明文中单一字母包含的信息散布到整个输出中去,这意味着攻击者需要获得很多密文,才能去推测加密算法。
3)数学分析攻击。数学分析攻击是指密码分析者针对加密算法的数学依据,通过数学求解的方法来破译密码。为了对抗这种攻击,应选用具有坚实数学基础和足够复杂的加密算法。
4)社会工程攻击。社会工程攻击是指通过威胁、勒索、行贿,或者折磨密钥拥有者,直到他给出密钥。本章3.5节介绍的信息隐藏技术是应对这种攻击的方法。
5)针对密码算法的侧信道攻击。这是指利用与密码实现有关的物理特性来获取运算中暴露的秘密参数,以减少理论分析所需计算工作的密码分析方法,也包括通过侵入系统获取密码系统的密钥的方法。测量密码算法的执行时间、差错、能量、辐射、噪声、电压等物理特性被用于侧信道分析技术中。
拓展知识:根据密码分析者可利用数据的攻击分类
根据密码分析者可利用的数据来分类,可将密码体制的攻击方法分为以下4种。
1)唯密文(Ciphertext Only)攻击:密码分析者已知加密算法,仅根据截获的密文进行分析得出明文或密钥。
2)已知明文(Known Plaintext)攻击:密码分析者已知加密算法,根据得到的一些密文和对应的明文进行分析得出密钥。
3)选择明文(Chosen Plaintext)攻击:密码分析者已知加密算法,不仅可得到一些密文和对应的明文,还可设法让对手加密一段选定的明文,并获得加密后的密文,从而分析得到密钥。
4)选择密文(Chosen Ciphertext)攻击:密码分析者已知加密算法,可得到所需要的任何密文所对应的明文,从而分析得到密钥。
(2)如何评估密码体制的安全性
评估密码体制的安全性主要有以下3种方法。
1)无条件安全性。如果攻击者拥有无限的计算资源,但仍然无法破译一个密码体制,则称其为无条件安全。香农证明了一次一密密码具有无条件安全性,即从密文中得不到关于明文或者密钥的任何信息。
2)计算安全性。如果使用目前最好的方法攻破一个密码体制所需要的计算资源远远超出攻击者拥有的计算资源,则可以认为该密码体制是安全的。
3)可证明安全性。如果密码体制的安全性可以归结为某个经过深入研究的困难问题(如大整数素因子分解、计算离散对数等),则称其为可证明安全。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关,没有完全证明问题本身的安全性,并给出它们的等价性证明。
对于实际使用的密码体制而言,由于至少存在一种破译方法,即暴力攻击法,因此都不能满足无条件安全性,只能达到计算安全性。
(3)确保密码体制安全的设计原则
一个实用的密码体制要达到实际安全应当遵循以下原则。
1)密码算法安全强度高。就是说,攻击者根据截获的密文或某些已知明文密文对,要确定密钥或者任意明文在计算上不可行。
2)密钥空间足够大。这就使得试图通过穷举密钥空间进行搜索的方式在计算上不可行。
3)密码体制的安全不依赖于对加密算法的保密,而依赖于可随时改变的密钥。即使攻击者知道所用的加密体制,也无助于用来推导出明文或密钥。这一原则已被后人广泛接受,称为柯克霍夫原则(Kerckhoffs’ Principle),于 1883年由柯克霍夫(Kerckhoffs)在其名著《军事密码学》中提出。
4)既易于实现又便于使用。这主要是指加密算法和解密算法都可以高效地计算。
说明:
通过上面的分析可知,影响密码安全性的基本因素包括:密码算法的复杂度、密钥长度、密钥应用和计算环境等。密码算法本身的复杂程度或保密强度取决于密码设计水平、破译技术等,它是密码系统安全性的保证。
密码算法分数学形态、软件形态和硬件形态,通常说密码算法是安全的是指密码算法在数学上是安全的,但密码算法的应用必须以软件或硬件的形态实现,而数学上的安全并不能保证算法的软硬件实现安全。当前,量子信息科学的研究和发展催生了量子计算机、量子通信的出现。量子计算机的超强计算能力使得基于计算复杂性的现有密码算法的安全性受到了极大挑战。
密码算法在应用中除了面临攻击的问题,还存在密码算法及产品受到各国政府的控制和管理,以及密码算法的后门问题。密码算法的后门是指秘密的、未被公开的入口,能够绕过监管,不易被发现。这也是我国必须使用自主设计的密码算法的主要原因。
鉴于密码关乎政府、军队、商业等重要领域的敏感信息,因此,出于维护国家安全的需要,各国政府都极其重视对密码的控制和管理。2019年10月26日,《中华人民共和国密码法》颁布,自2020年1月1日起施行。《密码法》规定核心密码用于保护国家绝密级、机密级、秘密级信息,普通密码用于保护国家机密级、秘密级信息,商用密码用于保护不属于国家秘密的信息;还规定了核心密码、普通密码使用要求、安全管理制度以及国家加强核心密码、普通密码工作的一系列特殊保障制度和措施;规定了商用密码标准化制度、检测认证制度、市场准入管理制度、使用要求、进出口管理制度、电子政务电子认证服务管理制度以及商用密码事中事后监管制度。
请读者完成本章思考与实践第27题,了解更多知识。
微课视频3-5
保护数据的保密性-1
1.对称密码体制的分类
根据密码算法对明文信息的加密方式,对称密码体制通常包括分组密码、序列密码、消息认证码、哈希函数和认证加密算法。本节主要介绍分组密码和序列密码。
(1)分组密码
分组密码(Block Cipher,也叫块密码)是将明文数据分成多个等长的数据块(这样的数据块就是分组),对每个块以同样的密钥和同样的处理过程进行加密或解密。加解密过程一般采用混淆和扩散功能部件的多次迭代。
分组密码不用产生很长的密钥,适应能力强,多用于大数据量的加密场景。
(2)序列密码
理论上说,一次一密的方式是不可破解的,但是这种方式的密钥量巨大,不太可行,因此人们采用序列密码来模仿一次一密从而获得安全性较高的密码。
序列密码(Stream Cipher,也叫流密码)是将明文数据的每一个字符或位逐个与密钥的对应分量进行加密或解密计算。序列密码需要快速产生一个足够长的密钥,因为,有多长的明文,就要有多长的密钥。为此,序列密码的一个主要任务是快速产生一个足够长的“密钥流”。序列密码的强度依赖密钥序列的随机性和不可预测性。
序列密码适用于实时性要求高的场景,如电话、视频通信等。
2.常见对称密码算法
(1)数据加密标准(Data Encryption Standard,DES)
1975年,美国NIST采纳了IBM公司提交的一种加密算法,以“数据加密标准”的名称对外公布,以此作为美国非国家保密机关使用的数据加密标准,随后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)
2001年,NIST采纳了由密码学家Rijmen和Daemen设计的Rijindael(结合两人名字)算法,称其为高级加密标准。Rijindael算法之所以最后当选,是因为它集安全性、效率、可实现性及灵活性于一体。AES已经成为对称加密算法中最流行的算法之一。
AES算法是限定分组长度为128位、密钥长度可变(128/192/256位)的多轮替换——置换迭代型算法,其中替换提供了混乱性,置换提供了扩散性。不同的密钥长度可以满足不同等级的安全需求。根据密钥的长度,算法分别被称为AES-128、AES-192和AES-256。加密和解密的轮数由明文块和密钥块的长度决定。
到目前为止,对AES最大的威胁是旁路攻击,即不直接攻击加密系统,而是通过搜集和分析密码系统运行设备(通常是计算机)所发出的计时信息、电能消耗、电磁泄漏,甚至发出的声音,以发现破解密码的重要线索。
由于AES对内存的需求低,因而适合应用于计算资源或存储资源受限制的环境中。
(3)国际数据加密算法(International Data Encryption Algorithm,IDEA)
1990年,中国学者来学嘉与著名密码学家James Massey共同提出国际数据加密算法。
IDEA属于分组密码,使用64位分组和128位的密钥。IDEA是国际公认的继DES之后又一个成功的分组对称密码算法。
IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力。该算法也在多种商业产品中得到应用,著名的加密软件PGP(Pretty Good Privacy)就选用IDEA作为其分组对称加密算法。IDEA算法的应用和研究正在不断走向成熟。
IDEA运用硬件与软件实现都很容易,而且在实现上比DES快得多。
(4)RC系列算法
RC(Rivest Cipher)系列算法是由著名密码学家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算法的攻击。
3.对称密码体制的功能与缺陷分析
(1)对称密钥密码体制功能分析
一个安全的对称密钥密码体制可以实现下列功能。
1)保护信息的机密性。明文经加密后,除非拥有密钥,否则外人无从了解其内容。
2)认证发送方的身份。接收方任意选择一随机数 r ,请发送方加密成密文 C ,送回给接收方。接收方再将 C 解密,若能还原成原来的 r ,则可确知发送方的身份无误,否则就是第三者冒充。由于只有发送方及接收方知道加密密钥,因此只有发送方能将此随机数 r 所对应的 C 求出,其他人则因不知道加密密钥,而无法求出正确的 C 。
3)确保信息的完整性。在许多不需要隐藏信息内容,但需要确保信息内容不被更改的场合,发送方可将明文加密后的密文附加于明文之后送给接收方,接收方可将附加的密文解密,或将明文加密成密文,然后对照是否相符。若相符则表示明文正确,否则有被更改的嫌疑。通常可利用一些技术,将附加密文的长度缩减,以减少传送时间及内存容量。有关这些方法,本书将在3.3节哈希函数中介绍。
(2)对称密码体制缺陷分析
对称密码体制具有一些天然的缺陷,包括:
1)密钥管理的困难性。对称密码体制中,密钥为发送方和接收方所共享,分别用于消息的加密和解密。密钥需要受到特别的保护和安全传递,才能保证对称密码体制功能的安全实现。此外,任何两个用户间要进行保密通信就需要一个密钥,不同用户间进行保密通信时必须使用不同的密钥。若网络中有 n 人,则每人必须拥有 n -1把密钥,网络中共需有 n ( n -1)/2把不同的密钥,例如当 n =1000时,每人必须拥有999把密钥,网络中共需有499500把不同的密钥。这么多的密钥会给密钥的安全管理与传递带来很大的困难。
2)不支持陌生人之间的保密通信。电子商务等网络应用提出了互不相识的网络用户间进行秘密通信的问题,而对称密码体制的密钥分发方法要求密钥共享的各方互相信任,因此由于它不能解决陌生人之间的密钥传递问题,也就不能支持陌生人之间的保密通信。
3)无法达到不可否认服务。对称密钥密码体制无法达到如手写签名具有事后不可否认的特性,这是由于发送方与接收方都使用同一密钥,因此发送方可在事后否认先前送过的任何信息。接收方也可以任意地伪造或篡改,而第三方并无法分辨是发送方抵赖发送的信息或是接收方自己捏造的信息。
微课视频3-6
保护数据的保密性-2
1.公钥密码体制的产生
1976年,美国斯坦福大学电气工程系的Diffie和Hellman发表了划时代的论文 New Direction in Cryptography (《密码学新方向》)。文中提出了一种密钥交换协议,即Diffie-Hellman密钥交换协议,通信双方可以在不安全的环境中通过交换信息安全地传送密钥。在此基础上,他们又提出了公钥密码体制的思想。不过,他们并没有提出一个完整的公钥密码实现方案。2016年 3月,Diffie和Hellman由于“使得公钥密码技术在实际中可用的创造性贡献”被美国计算机协会授予图灵奖(计算机科学领域最有声望的奖项)。
Diffie和Hellman提出的公钥密码体制的思想是:产生一对可以互逆变换的密钥 K d 与 K e ,但是即使知道 K d ,还是无法得知 K e ,这样就可将 K d 公开,但只有接收方知道 K e 。在此情况下,任何人均可利用 K d 加密,而只有知道 K e 的接收方才能解密;或是只有接收方一人才能加密(加密与解密其实都是一种动作),任何人均能解密。
2.公钥密码体制的内容
(1)公钥密码体制的加解密原理
图3-10是公钥密码体制加解密的原理图,加解密过程主要有以下几步。
图3-10 公钥密码体制加解密原理图
1)接收方B产生一对公钥( PK B )和私钥( SK B )。
2)B将公钥 PK B 放在一个公开的寄存器或文件中,通常放入管理密钥的密钥分发中心。私钥 SK B 则被用户保存。
3)A如果要向B发送消息 M ,则首先必须得到并使用B的公钥加密 M ,表示为 ( M ),其中 C 是密文, E 是加密算法。
4)B收到A的密文后,用自己的私钥解密得到明文信息,表示为 ,其中 D 是解密算法。
(2)公钥密码体制的特点
● 产生的密钥对(公钥 PK B 和私钥 SK B )是很容易计算得到的。
● 发送方A用接收方的公钥对消息加密,即 ,在计算上是容易的。
● 接收方B用自己的私钥对密文解密,即 ,在计算上是容易的。
● 密码分析者或攻击者由公钥求对应的私钥在计算上是不可行的。
● 密码分析者或攻击者由密文和对应的公钥恢复明文在计算上是不可行的。
● 加密和解密操作的次序可以互换,也就是 。
(3)公钥密码体制的功能
1)保护信息的机密性。发送方用接收方的公钥将明文加密成密文,此后只有拥有私钥的接收方才能解密。
2)简化密钥分配及管理。保密通信系统中的每人只需要一对公钥和私钥。
3)密钥交换。发送方和接收方可以利用公钥密码体制传送会话密钥。
4)实现不可否认。若发送方用自己的私钥将明文加密成密文(签名),则任何人均能用公开密钥将密文解密(验证签名)进行鉴别。这里的密文(签名)就如同发送方亲手签名一样,日后有争执时,第三方可以很容易做出正确的判断。公钥密码算法的这种应用称为数字签名,本章3.4节中将详细介绍。这种基于数字签名的方法也可提供认证功能。
3.常见公钥密码算法
(1)RSA算法
1)RSA算法的诞生。1978年,美国麻省理工学院计算机科学实验室的三位研究员Rivest、Shamir和Adleman联名发表了论文 A Method for Obtaining Digital Signatures and Public-Key Cryptosystems (《获得数字签名的方法和公钥密码系统》),首次提出了一种能够完全实现Diffie-Hellman公钥分配的实用方法,其后被称为RSA算法。RSA就取自三位作者姓氏的首字母。2002年,Rivest、Shamir和Adleman由于“巧妙地实现了公钥密码系统”被美国计算机协会授予图灵奖。
文档资料3-1
Rivest、Shamir和Adleman介绍
RSA公钥密码算法是目前应用最广泛的公钥密码算法之一。RSA算法是第一个能同时用于加密和数字签名的算法,易于理解和操作。同时,RSA是人们研究得最深入的公钥算法,从提出到现在已有30多年,经历了各种攻击的考验,被普遍认为是当前最优秀的公钥方案之一。
文档资料3-2
RSA算法介绍
请读者完成本章思考与实践第14题,实践利用RSA算法产生公钥和私钥的过程。
2)RSA算法的安全性。RSA算法是基于群 Z n 中大整数因子分解的困难性建立的,即计算两个大素数的乘积容易,而对乘积进行因子分解计算困难。
国际数学界和密码学界已经证明,企图利用公钥和密文推断出明文,或者企图利用公钥推断出私钥的难度等同于分解两个大素数的乘积,这是一个困难的问题。
还有,RSA算法保证产生的密文是统计独立而且分布均匀的。也就是说,不论给出多少明文和对应的密文,也无法通过已知的明文和密文的对应关系来破解下一份密文。
研究结果表明,破解RSA算法的最好方法还是对大数 n 进行分解,即通过 n 来找因子 p 和 q 。为了应对飞速增长的计算机处理速度, p 和 q 都需要非常大,不过,量子计算机的研制和应用将成为RSA算法的安全威胁。
3)RSA算法的实现与应用。RSA算法有硬件和软件两种实现方法,不论采用何种实现方法,RSA算法的速度总是比DES慢。因为RSA算法的计算量远大于DES,在加密和解密时需要做大量的模数乘法运算。RSA算法在加密或解密一个 200位十进制数时大约需要做 1000次模数乘法运算,提高模数乘法运算的速度是解决RSA效率问题的关键所在。
硬件实现采用专用芯片,以提高RSA算法加密和解密的速度。使用同样硬件实现,DES比RSA算法快大约1000倍。在一些智能卡应用中也采用了RSA算法,速度都比较慢。软件实现方法的速度要更慢一些,这与计算机的处理能力和速度有关。同样使用软件实现,DES比RSA算法快大约100倍。
因此,在实际应用中,RSA算法很少用于加密大块的数据,通常在混合密码系统中用于加密会话密钥,或者用于数字签名和身份认证。
(2)椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法
1)ECC算法的诞生。为了安全使用RSA算法,RSA算法中密钥的长度需要不断增加,这加大了RSA算法应用处理的负担。1985年,N. Koblitz和V. Miller分别独立提出了椭圆曲线密码算法。国际标准化组织颁布了多种ECC算法标准,如IEEE P1363定义了椭圆曲线公钥算法。
2)ECC算法的安全性。ECC算法是RSA算法强有力的竞争者。ECC算法的安全性基于椭圆曲线离散对数问题的难解性,即计算大素数的幂乘容易,而对数计算困难。从理论上讲,离散对数问题和大整数分解问题这两个计算问题是相互对应的,即它们或者同时有解,或者同时无解。就这一点来说,ECC算法和RSA算法是同一安全等级的。
3)RSA算法的实现与应用。与RSA算法相比,ECC算法能用更短的密钥获得更高的安全性,而且处理速度快,存储空间占用少,带宽要求低。它在许多计算资源受限的环境,如移动通信、无线设备等,得到了广泛应用。在实际使用中,为了实现与RSA算法同样的加密强度,ECC算法所需要的密钥长度短得多。例如,可以证明,对于 256位密钥长度的ECC算法来说,其安全强度相当于3072位密钥长度的RSA算法。
ECC算法的安全性和优势得到了业界的广泛认可,被用于多种应用,例如它已被用于安全电子交易(Secure Electronic Transactions,SET)协议、安全套接层/传输层安全(SSL/TLS)协议、安全壳(Secure Shell,SSH)协议中;苹果公司用它为iMessage服务提供签名;大多数比特币程序使用OpenSSL开源密码算法库进行椭圆曲线计算,以创建密钥对来控制比特币的获取。越来越多的网站也开始广泛使用ECC算法来保证一切从客户的HTTPS连接到他们的数据中心之间的数据传递的安全。现在密码学界普遍认为ECC算法将替代RSA算法成为通用的公钥密码算法。
(3)ElGamal算法
ElGamal算法是 1984年斯坦福大学的Tather ElGamal,基于Diffie-Hellman密钥交换协议,提出的一种基于离散对数计算困难问题的公钥密码体制。
1985年,ElGamal利用ElGamal算法设计出ElGamal数字签名方案,该数字签名方案是经典数字签名方案之一,具有高度的安全性与实用性。其修正形式已被NIST作为数字签名标准(Digital Signature Standard,DSS)。有关数字签名的内容将在3.4节介绍。
密钥是密码体制中的一个要素,对于密码的安全性有着至关重要的作用。本节介绍密钥管理的概念,并着重分析公钥的安全性问题。
1.密钥管理的概念
由于密码技术都依赖于密钥,因此密钥的安全管理是密码技术应用中非常重要的环节。只有密钥安全,不容易被攻击者得到或破译,才能保障实际通信或加密数据的安全。
密钥管理方法因所使用的密码体制而异,但对密钥的管理通常包括:如何在不安全的环境中,为用户分发密钥信息,使得密钥能够安全、正确并有效地使用;在安全策略的指导下处理密钥自产生到最终销毁的整个生命周期,包括密钥的产生、分配、使用、存储、备份/恢复、更新、撤销和销毁等。
(1)密钥的产生
对于密钥的产生,首先必须考虑其安全性。一般要求在安全的环境下产生,可以通过某种密码协议或算法生成。其次,必须考虑具体密码算法的限制,根据不同算法进行检测,以避免得到弱密钥。此外,在确定要产生的密钥的长度时,应结合应用的实际安全需求,如要考虑加密数据的重要性、保密期限长短、破译者可能的计算能力等。
(2)密钥分配
密钥分配也称密钥分发,是指将密钥安全地分发给需要的用户,一般地,在通信双方建立加密会话前,需要进行会话密钥的分配。
公钥密码算法的计算量比常规加密算法的计算量大很多,故不适合于用来加密长明文,所以公钥密码通常用来加密短明文,特别是用来加密常规加密算法的密钥。
这里介绍主密钥和会话密钥两个级别的密钥使用。
通信双方在特定的时间范围内通常产生一个密钥,用于将其他密钥加密以便安全传送,这个密钥称为主密钥。
发送方还会产生一个密钥,用来加密双方之间实际的通信数据,称为会话密钥(或阶段密钥)。
会话密钥的有效期通常只是一个对话时段,比如从建立TCP连接开始到终止连接这段时间。主密钥的有效期长一些,但也不能太长,这由具体的应用程序决定。
(3)密钥的使用
应当根据不同需要使用不同的密钥,如身份认证使用公钥和私钥对、临时的会话使用会话密钥。在保密通信中,每次建立会话都需要双方协商或分配会话密钥,而不应当使用之前会话所使用的会话密钥,更不能永远使用同一个会话密钥。甚至在有些保密通信系统中,同一次会话经过一定时间或一定数据量之后,会强制要求通信各方重新生成会话密钥。
【例3-2】 主密钥和会话密钥使用举例。
假设用户甲在家中使用远程登录加密软件登录到单位的主机,此软件先产生主密钥,然后用单位主机的公钥将主密钥加密后通过网络传给主机,主机用自己的私钥将收到的密文解密得到主密钥。用户甲加密软件然后产生会话密钥,并用常规加密算法和主密钥加密后通过网络传给主机。这个会话密钥将用于加密这段远程登录中用户甲和主机之间的所有信息,包括用户甲的登录名、登录密码、甲发出的指令及双方之间交流的数据,如果甲退出登录但没有退出加密软件,则会话密钥作废,但主密钥仍有效,用于用户甲下次登录。如果用户甲退出加密软件,则主密钥作废。
(4)密钥的存储、分发和传输
除安全存储外,密钥在分发或传输过程中,也需要加强安全保护。如密钥传输时,可以拆分成两部分,并委托给两个不同的人或机构来分别传输,还可通过使用其他密钥加密来保护。
(5)密钥的撤销和销毁
在特定的环境中密钥必须能被撤销。密钥撤销的原因包括与密钥有关的系统被迁移,怀疑一个特定密钥已泄露并受到非法使用的威胁,或密钥的使用目的被改变等。一个密钥停用后可能还要保持一段时间,如用密钥加密的内容仍需保密一段时间,所以密钥的机密性要保持到所保护的信息不再需要保密为止。
密钥销毁必须清除一个密钥的所有踪迹。密钥使用活动终结后,安全销毁所有敏感密钥的副本十分重要,应该使得攻击者无法通过分析旧数据文件或抛弃的设备来确定旧密钥。
拓展知识:混合密码系统
混合密码系统,即首先用公钥密码体制加密传送对称密码体制中使用的会话密钥,在后期相互传输消息的过程中使用该会话密钥加密消息。
混合密码系统能够充分利用非对称密码体制在密钥分发和管理方面的优势,以及对称密码体制在处理速度上的优势。
2.公钥的管理
公钥密码技术很好地解决了密钥传送问题,不过在公钥密码体制实际应用中还必须解决一系列的问题,比如:
● 怎样分发和获取用户的公钥?
● 如何建立和维护用户与其公钥的对应关系,获得公钥后如何鉴别该公钥的真实性?
● 通信双方如果发生争议如何仲裁?
【例3-3】 签名和加密的顺序问题。
假定用户A想给用户B发送一个消息 M ,出于机密性和不可否认性的考虑,A需要在发送前对消息进行签名和加密,那么A是先签名后加密好,还是先加密后签名好呢?
考虑下面的重放攻击情况,假设A决定发送消息
M =“I love you”
先签名再加密,她发送 给B。出于恶意,B收到后解密获得签名的消息 ( M ),并将其加密为 ,将该消息发送给C,于是C以为A爱上了他。
再考虑下面的中间人攻击情况,A将一份重要的研究成果发送给B。这次她的消息是先加密再签名,即发送 给B。
然而C截获了A和B之间的所有通信内容并进行中间人攻击。C使用A的公钥来计算出 ,并且用自己的私钥签名后发给B,从而使得B认为该成果是C的。
从上面的两种情况,我们能够意识到公钥密码体制的局限性。对于公钥密码,任何人都可以进行公钥操作,即任何人都可以加密消息,任何人都可以验证签名。
为了解决上述的问题,就必须有一个权威的第三方机构对用户的公私钥进行集中管理,确保能够安全高效地生成、分发、保存、更新用户的密钥,提供有效的密钥鉴别手段,防止被攻击者篡改和替换。
公钥基础设施(Public Key Infrastructure,PKI)是目前建立这种公钥管理权威机构中最成熟的技术。PKI是在公钥密码理论技术基础上发展起来的一种综合安全平台,能够为所有网络应用透明地提供加密和数字签名等密码服务所必需的密钥和证书管理,从而达到在不安全的网络中保证通信信息的安全、真实、完整和不可否认等目的。本书将在第4章中对此详细介绍。
微课视频3-7
保护数据的完整性