第3章 密码学原理及密钥管理
密码学是一门研究信息保密的科学,它已有几千年的历史了,但仍有不少领域令人兴奋和值得探索。这是一个不断变化且充满挑战的领域。本章从密码学的基本原理和密钥管理的基本方法出发,阐述密码学在信息安全应用中的基本思想和方法,为信息安全问题的解决提供清晰的思路。 3.1 密码学基础
密码学基本和典型的任务是通过加密的方法提供保密性。假设用户Alice和用户Bob进行通信,为了防止用户Eve窃取通信的内容,Alice加密明文m得到密文c,并把密文c传送给Bob, Bob解密密文c得到明文m。加密防止了Eve从截获的密文中获取任何有用信息的企图。 3.1.1 密码学发展简史
自从人类有了战争,就有了保密通信,也就有了密码的应用。密码技术的基本思想是伪装信息,是对信息施加一种可逆的数学变换(如图3-1所示)。伪装前的信息称为明文(plaintext),伪装后的信息称为密文(ciphertext),伪装信息的过程称为加密(encryption),解除伪装的过程称为解密(decryption)。加密和解密的过程在密钥(key)的控制下进行。只给合法的用户分配密钥,未授权的用户因为没有密钥,所以不能从密文得到明文。
人类对密码的研究和应用已有几千年的历史,但是密码学作为一门科学仅仅是上个世纪50年代的事情。1949年,信息论的创始者Shannon发表的著名论文“保密系统的通信理论”(Communication Theory of Secrecy systems)为密码学奠定了坚实的数学基础,使密码学正式成为一门科学。
密码技术的发展经历了古典密码时期、近代密码时期和现代密码时期三个阶段(如表3-1所示)。
古典密码在历史上发挥了巨大作用。编制古典密码的基本方法对于编制现代密码仍然有效。凯撒密
码(Caesar cipher)和栅栏密码(rail fence cipher)是古典密码时期的经典案例。
古罗马的凯撒大帝使用凯撒密码与前线的将军们通信。凯撒将英文中的每一个字母用比自身位置滞后3位的字母来替代(如表3-2所示)。信件写好后,在封口滴上厚厚的蜡,压上自己的私印。前线的将军们收到信件后,首先检查蜡封是否完整,蜡印是否为凯撒的印章,然后拆开信件,将英文中的每一个字母用比自身位置超前3位的字母替代,依此方法读取信件内容。
在应用凯撒密码时,首先构造一个或者多个密文字母表,然后用密文字母表中的字母或者字母组来代替明文字母或者字母组,各字母或者字母组的相对位置不变,但其本身改变了,这样编成的密码称为代替密码。凯撒密码就是一种代替密码。
在美国南北战争时期,军队中使用过一种栅栏密码。栅栏密码是将明文依次交替写成平行的两行,然后按行的顺序输出得到密文。解密的过程正好与之相反,将密文从中间分成平行的两行,然后依次交替读取两行的内容得到明文。
例3-2 :栅栏密码应用实例。明文:m:=attack at seven
加密方法:将明文依次交替写成平行的两行,然后按行的顺序输出得到密文,即
a t c a s v n t a k t e e
密文:c:=atcasvntaktee
解密方法:将密文从中间分成平行的两行,然后依次交替读取两行的内容得到明文,即
a t c a s v n t a k t e e
明文:m:=attack at seven
在应用栅栏密码时,把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。栅栏密码就是一种置换密码。
美国电话电报公司的Gillbert Vernam在1917年为电报通信设计了一种非常方便的密码,后来被称为Vernam密码。Vernam密码奠定了序列密码的基础,在近代计算机和通信系统中得到广泛应用。
例3-3 Vernam密码应用示例。
1976年美国著名学者Diffie和Hellman的经典论文“密码学的新方向”(New Directions in cryptography)奠定了公钥密码学(public key cryptosystem)的基础,标志着密码学的研究和实践由传统走向现代。1977年美国颁布了数据加密标准(Data Encryption Standard, DES),揭开了密码学的神秘面纱,使密码学的研究和应用从秘密走向公开,从此密码学成为了一门蓬勃发展的学科。
1994年美国颁布了数字签名标准(Digital Signature Standard,DSS)。1995年美国犹他州颁布了世界上第一部《数字签名法》,从此数字签名有了法律依据。1995年我国颁布了自己的数字签名标准(《带消息恢复的数字签名方案》GB 15851-1995)。2004年我国颁布了《中华人民共和国电子签名法》,成为世界上少数几个颁布数字签名法的国家之一。1997年美国宣布片开征集高级加密标准(Advanced Encryption Standard,AES),以取代DES。2001年11月26日,美国政府正式颁布AES为美国国家标准(编号为FIST PUBS 197)。2002年以来,许多国际标准化组织都已经采纳AES作为国际标准。为了与国际标准一致,我国银行系统也采用AES。
随着科学技术的迅速发展,以及受社会需求的推动,密码学正从原来的基于数学的密码向基于非数学的密码发展。由信息科学,计算机科学和量子力学结合而成的新的量子信息科学正在建立,量子技术在信息科学方面的应用导致了量子计算机、量子通信和量子密码研究热潮的兴起。
一些在电子计算机环境下是安全的密码,在量子计算机环境下却是可破译的。人们估计用量子计算机攻破RSA和ECC (Elliptic Curve Cryptograpy)等公开密钥只需要几十分钟。在强大的量子计算机面前,现在的许多密码将无密可言。量子密码的基本依据是量子的测不准原理和量子态的不可克隆、不可删除原理,是一种基于非数学原理的密码。量子密码具有可证明的安全性,能对窃听行为方便地进行检测。这些特性使量子密码具有许多其他密码所没有的优势,因而量子密码引起国际密码学界和物理学界的高度重视。我国科学家在量子计算和量子保密通信领域做出了卓越的贡献。2007年国际上首个量子密码通信网络由我国科学家在北京测试运行成功,标志着量子保密通信技术从点对点方式向网络化迈出了关键的一步。
近年来,生物信息技术的发展推动了DNA计算机和DNA密码的研究。DNA计算具有许多现在的电子计算所无法比拟的优点。比如,具有高度的并行性、极低的能量消耗和极高的存储密度。目前,人机交互DNA计算机已经问世。人们已经开始利用DNA计算机求解数学难题。如果能够利用DNA计算机求解数学难题,就意味着可以利用DNA计算机破译密码。现在的各种密码基于各种数学困难问题,量子密码可以认为是基于量子状态的测定、克隆和删除的困难问题,而DNA密码应当基于生物学中的某种困难问题。目前人们已经提出了一些DNA密码方案,尽管这些方案还不能实用,但已经显示出诱人的魅力。由于DNA密码的安全不依赖于计算困难问题,所以不管未来的电子计算机、量子计算机和DNA计算机具有多么强大的计算能力,DNA密码对于它们的计算攻击都是免疫的。
我们相信,量子密码、DNA密码将会把我们带人一个新的密码时代。 3.1.2 密码学研究目标
密码学为信息安全中的保密性、完整性、认证性和不可否认性提供基本保障,尽可能地使通信系统正常工作。
(1)保密性(confidentiality)
保密性具有隐藏消息的真实含义和目的的属性。Alice和Bob相互发送消息,为了防止消息的真实内容被Eve所窃取,Alice和Bob把消息隐藏起来,只有他们自己可以还原消息,而Eve则不能。
(2)完整性(integrity)
完整性具有确保传输过程中消息和数据的正确性的属性。消息接收者能够检验消息在传输过程中是否被有意或者无意篡改。完整性包括数据来源的完整性和数据内容的完整性。数据来源的完整性包含数据来源的准确性和可信性。数据内容的完整性是指接收到的数据与正确来源生成的数据的一致性。
(3)认证性(authentication)
认证性具有代表身份特征或者消息实体的属性。Alice和Bob能够互相验证对方的身份是真实的,而不是假冒的,此为实体认证(entity authentication)。Alice和Bob能够互相验证消息的来源和消息的完整性,即验证消息是否来自对方所声称的实体,验证消息在传送过程中是否被篡改、重放或者延迟等,此为消息认证(message authentication)。
(4)不可否认性(Non-repudiation)
不可否认性具有同意负责任的属性,更确切地说,是无法反驳应尽的责任。例如,你在一份具有法律效力的合同书上签了字,事后你不能否认曾经同意了合同书中的条款。Alice向Bob发送了一条消息,Alice不能事后否认曾经向Bob发送了这条消息,同样,Bob也不能事后否认曾经接收到了Alice发来的这条消息。不可否认性用于保证参与交互的实体对其行为的诚实。
密码学能够为上述信息安全服务提供基本保障,同时还能够提供其他更多的安全服务,如访问控制等。
3.1.3 密码体制
密码学是一门古老的学科,它通过把人们能够读懂的消息变换成不易读懂的消息来隐藏消息的真实内容,使窃听者无法理解消息的内容,同时还能让合法用户把变换的结果还原成能够读懂的消息。
一个密码系统,通常简称为密码体制(cryptosystem),由五部分组成: ? 明文空间M,它是全体明文的集合。
? 密文空间C,它是全体密文的集合。
? 密钥空间K,它是全体密钥的集合。其中,每一个密钥K均由加密密钥Ke和解密密钥Kd组成,
即K=
? 加密算法E,它是一族由M到C的加密变换。 ? 解密算法D,它是一族由C到M的解密变换。
对于每一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,而且解密变换就是加密变换的逆变换。对于明文空间M中的每一个明文m,加密算法E在密钥ke的控制下将明文m加密成密文c,而解密算法D在密钥kd的控制下将密文c解密出同一明文m。如果一个密码体制中的加密密钥ke和解密密钥kd相同,即ke=kd,或者由其中一个密钥很容易推出另一个密钥,则称该密码体制为对称密码体制或者单密钥密码体制或者传统密码体制,否则称为双密钥密码体制。进而,如果在计算上kd不能由ke推出,那么将ke公开不会损害kd的安全,于是可将ke公开,这种密码体制称为公开密钥密码体制,简称为公钥密码体制。
(1)对称加密体制原理
对称加密体制(symmetric-key encryption scheme)由一个映射E:M x K→C构成,且对任意的k∈K,映射Ek:M→C,m |→E(k, m) 是可逆的。
其中,M为明文的集合,K为密钥的集合,C为密文的集合,m∈M为明文,k∈K为密钥。E为关于密钥k的加密函数,其逆函数D:=E-1(k, m)为解密函数。加密算法E和解密算法D是公开的。只要知道密钥k,任何人都可以破译密文。因此,对于加密映射的一个基本安全性要求是:不知道密钥k,就不可能计算出解密函数D的值。
在对称加密体制中,加密算法E和解密算法D取决于相同的密钥k(如图3-2所示)。对于明文m,发送方Alice利用加密算法E和密钥k将明文m加密成密文c,有c:=E(k, m)。对于密文c,接收方Bob利用解密算法D和密钥k将密文c解密成明文m,有m:=D(k, c)。因此,在对称加密体制中,对于明文m,有D(k, E (k, m))=m。
为了使用对称加密体制,合法的通信双方必须事先商定一个共享密钥,然后双方就可以利用这个共享密钥进行秘密通信了。
(2)公钥加密体制原理
1976年,W.Diffie和M.E.Hellman在他们的论文“密码学的新方向”中提出了公开密钥的思想,设想了一种无须事先传递密钥的密码体制,给出了一种密钥协商的方法,这种方法在公钥密码学中使用至今。
公钥密码学的基本思想是公开密钥。每一个公钥密码体制的用户都拥有一对个人密钥k=(ke,kd),包括任何人都可以使用的加密用的公钥ke和只有用户本人才能使用的解密用的私钥kd。公钥ke是公开的,任何用户都可以知道,私钥kd只有用户本人知道。
在公钥加密体制中,加密算法E和解密算法D取决于不同的密钥k = (ke,kd)(如图3-3所示)。用户Alice和Bob相互发送消息,发送方Alice利用Bob的公钥ke加密明文m得到密文c:=E(ke,m),并把密文c传送给Bob。接收方Bob利用自己的私钥kd解密密文c得到明文m:= D(kd, c),即D(kd, E(ke,m))=m。
保密性要求从密文中不能得到有关明文的任何信息。不严格地说,如果从密文中提取有关明文的任何信息是不可行的,就称这种加密体制是安全的。公钥加密体制的安全性基于这样的事实:利用公钥ke加密明文m是容易的,但是,不知道私钥kd,从密文c推断明文m是困难的。
研究表明,公钥加密方法要求更复杂的计算,比对称加密方法需要消耗更多的计算资源和通信资源,因此,对称加密方法更适合大量数据的加密,而公钥加密方法用来实现密钥协商。