1、Thoughts About New Directions in Cryptography密码学的新方向读后感在 1949 年之前的几千年,密码学还没有成为一门真正的科学,而是一门艺术,密码学专家常常是凭自己的直觉和信念来进行密码设计。直到 1949 年,美国数学家、信息论的创始人 Shannon, Claude Elwood 发表了保密系统的信息理论一文,它标志着密码学阶段的开始。随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:可靠密钥的传输通道问题。如何提供与手写签名等效的认证体系。为了解决这些问题,Whitfield Diffie 和 Martin E.Hellman
2、两人于 1976 年发表了名为密码学新方向的文章。他们首次证明了在发送端和接收端不需要传输密钥的保密通信的可能性,从而开创了公钥密码学的新纪元。该文章也成了区分古典密码和现代密码的标志。这本书分为七个部分,分别是引言,常规加密,公钥加密,单项认证,问题的相关行为和陷阱门,计算复杂性以及历史回顾。下面就具体对本书进行介绍:第一部分,引言(introduction):提出了现代的我们正处在密码学革命的边缘,密码设备高消费下降,所以需要一种能够消除必要的安全锁分配渠道和提供相当的数字签名的新类型密码系统,同时在信息理论和计算机科学理论上保证了密码安全学的发展,这样就把这门艺术变成了一门科学.最著名的
3、密码学问题是关于隐私的:在不安全的渠道沟通,为了防止信息被未授权的取出,就要用到密码学,这样等于给隐私加以保护.在本文的第三部分提出在公共渠道上没有通过系统安全协议的转移密钥的两种方法。第五部分讨论了提供一个真实,可靠的信息依靠数字签名的单向验证问题。给出了许多解决问题的方法,它展示了怎样把公共密钥密码系统转化成为单向验证系统。第六部分将考虑各种各样的密码学的问题的相互联系性并且介绍更难的问题-陷阱门。在引言中,介绍了本书的内容,并且说明了作者著书的原因与意图。第二部分,常规密码体系(conventional cryptography):密码学在研究“数学”系统中涉及二种安全问题:隐私和身份验
4、证。隐私系统是指在提取信息时防止未经授权的当事方的信息传输到公共通道,从而确保发件人的邮件安全,它是只读的预定收件人。认证体系的安全通道是防止可能是每周一次的信使和不安全的一条电话线的通道。加密系统是一个单一的参数家庭SK;zKPK;z的可逆转换:SK:PC (1),从空间( P )的纯文本邮件到空间( )的密文信息。有两种办法处理这个问题的系统是安全的,由于计算的安全性而屈服于攻击无限计算,被称为计算安全;而一个制度,能够抵御任何密码分析攻击,不管有多少计算允许,被称为无条件安全。根据 Shannon 的理论,无条件安全的算法是存在的,但由于其密钥过长而不实用,这也是发展计算上安全的算法的原
5、因。文中提出,密码系统可以分为两大类:流密码和分组密码;而攻击可分为三种:一是唯密文攻击,破译者仅拥有密文,他们只使用知识的统计特性中的语言使用特性和知识的某些“可能”的特性。这在实践中经常发生,是最弱的威胁,其中一个系统可能遭受的任何系统屈从被认为是完全没有保障的。二是已知明文攻击,破译者拥有了大量相应的明文和密文。三是选定明文攻击,破译者可以自己向无限数量的纯文本邮件选择审查结果。需要指出的是,本文给出了密码学的一个定义:研究解决保密和认证这两类安全问题的“数学”方法的学科。第三部分,公钥加密(public key cryptography):如图一所示,密码学已经成为一种衍生的安全措施。
6、作者建议开发如图二所示的信息流动的公共密钥系统。在这样的系统中,双方用一个公共通道和唯一的已知公开技术就可以建立安全的连接。他们审查两种办法来解决这个问题,就是所谓的公钥密码算法和公钥分配算法。其中,第一种方法更强大,而第二个更接近实现。公钥密码系统指定义在有限信息空间M上的,基于Ek 和Dk 的可逆变换:EK:M M (2)DK:M M (3)满足下列条件:1 任给 KK, Ek 是 Dk 的互逆变换;2 任意的 KK和 MM,用 Ek 和 Dk 进行加密和解密是容易计算的;3 对几乎所有的 KK,从 Ek 推出 Dk 在计算上是不可行的;4 任意的 KK,从 K 计算 Ek 和 Dk 是可
7、行的。这里 K 是用以产生 Ek 和 Dk 的随机数。由于第三特点,保证了可公开 Ek 而不损害 Dk 的安全性,这样才保证了公钥密码算法的安全性。第四特点,有一个可行的途径计算相应的对逆变换,在没有规定用什么来加密或破译变换的可能,实际上,密码设备都必须包含一个真正的随机生成数(例如噪声二极管)产生 K,连同算法产生 EKDK 两部分。破译密码的关键是防止被未授权修改。以加密二值 n 维向量为例,加密算法是乘一个nn 可逆矩阵,解密则乘其逆矩阵,所需运算时间为 n2。此可逆矩阵可通过对单位矩阵做一系列的行和列的初等变换得到,而其逆矩阵是经过逆序的行和列的逆变换得到。但是矩阵求逆只需要 n3
8、的时间,密码分析者用时与正常解密用时之比是 n。虽然这个例子并不实用,但对解释公钥密码算法是有用的。一个更实用的方法是利用机器语言的难懂性,把加密算法编译成机器语言公布,而解密算法保密,分析者要理解机器语言的全部运算过程是很困难的,所以要破解是困难的,当然此算法必须足够的复杂以免通过输入和输出对来破解。公钥分配算法是基于求对数再取模计算上的困难。令 q 是一个素数,在有限域GF(q)上任取 q,计算 Y= ax *mod(q) ,其中 a 是 GF(q)上的一个固定基元。则 X= log a 【Y*mod(q) 】 。不难得出由 X 计算 Y 是较容易的,约需要计算 2log2q 次乘法;然而
9、从 Y得出 X 是困难的,因为需 q/2 次运算。这样对每一个用户,从1,2,q-1中随机的选一个 q,计算出 Yi=aXi* mod q ,并将 Yi 公布,Xi 保密。那么当用户 i 和 j 通信时,使用 Kij=aXiXj *mod q 作为他们的公共密钥。此密钥用户 i 通过 j 公布的 Yj 得到,即 Kij= YjXi *mod q= (aXj)Xi *mod q= aXiXj *mod q 得到。用户 j 的计算同理。对于第三方要获得此密钥就必须计算,而这在计算上是不可行的,从而达到了在公共信道上分配私钥的效果。第四部分,单向认证(one-way authentication):
10、作者提出,为了发展一种能够替代现有的纯电子形式交流的合同,我们必须发现一种和书面签名拥有相同性能的数字现象。这种数字现象必须可以让所有人可以辨认出可信的签名,但是让不合法的用户无法去产生。所以,作者提出了单向认证的概念,它必须能够让用户在不认知的情形下,也能辨认它。现有的认证体系只能保证不被第三方冒名顶替,但不能解决发送者和接收者之间的冲突,为此引入单向函数的概念,即对定义域中的任意x,f(x)是容易计算的,但对几乎所有的值域中的y,求满足y= f(x)的x在计算上是不可行的。例如已知多项式p(x)和x ,求y =p(x)是容易的,但若已知y 求出x 是困难的。公钥密码算法可用来产生一个真正的
11、单向认证体系。当用户 A 要发信息 M 给用户 B 时,他用其保密的解密密钥解密“M”并传给 B,B 收到时用 A 公布的加密密钥 “加密”此消息从而得到信息 M。因为解密密钥是保密的,只有 A 发送的消息才具有这样的性质,从而确认此信息来源于 A,也就建立了一个单向认证体系。Leslie Lamport 还提出另一种单向信息认证方法,它是应用在 k 维二值空间上的单向函数 f 到其自身的映射来实现的。若发送者发送 N 比特的信息 m,他要产生 2N 个随机 k 维二值向量 x1,X1,x2,X2,xn , Xn ,并保密,随后把这些向量在 f 下的像y1,Y1,y2,Y2,yn , Yn,发
12、送给接收者。当发送信息 m=( m1,m2 ,mN )时,m1=0 发送 x1 ,m1 =1 发送 X1 ,依次类推。接收者把收到的信息用 f 映射之,若为 y1 则 m1=0, Y1 则 m1 =1,如此下去便得到了 m。由于函数 f 的单向性,接收者无法从 y 推出x,因此就无法改动接收到的任何收据。当然在 N 比较大时这种方法的额外开销是很大的,为此有必要引入单向映射 g,用来把 N 比特的信息映射成 n 比特(n 约为 50),但这里要求g 有比一般的单向函数更强的性质。第五部分,问题的相关行为和陷阱门(problem interrel actions and trap doors):
13、 在这个部分,作者展示了一些迄今能够归结于其他人的密码学问题,因此根据难度定义了一个松散序列。1.如图三所示,一个对已知明文攻击安全的密码算法能产生一个单向函数。设 :P-K是这样的一个算法,取 P=P0 。考虑映射 f:K-C定义为 f (x)=Sx (P0) ,则 f是一个单向函数,因为要由 f(x)得到 x 和已知明文攻击是等价的(即已知 P=P0 和 SK (P0)求不出 K)。Evans 还提出过另一种方法,他用的映射是 f (x)=Sx(X),这增加了破解的难度,但这个单向函数却破坏了对已知明文攻击安全的要求。一个公钥密码算法可用来产生一个单向认证体系。一个陷门密码算法可用来产生一
14、个公钥分配算法。所谓陷门密码算法是指只有知道陷门信息才能正确还原明文,不掌握陷门信息要破解出明文在计算上是不可行的。比如 A要和 B 建立公共私钥,A 任选一个密钥,用 B 公布的含有陷门信息的加密密钥加密之,并将密文发送给 B,B 由保密的陷门信息解密得到此密钥,于是 A 和 B 建立了公共的私钥。不难发现公钥密码算法是一个陷门单向函数。第六部分,计算的复杂性(computational complexity):实践证明,几乎没有系统能能够抵抗厉害的破译者,而那些自认为是安全的系统随着时间的推移也会背各个击破。在 16 和 17 世纪,大家都关注强度加密方法,依靠数学方法来计算具有天文数目的
15、密钥。后来,香农提出了一次填补系统(one time pad system) ,并且从二十世纪晚期便被应用于“完美保密” (一个无条件安全形式) 。现代密码算法的安全性是基于计算上的不可行性,因此就有必要对计算复杂度进行研究。在确定型图灵机上可用多项式时间求解的问题定义为 P 类复杂度,在非确定型图灵上可用多项式时间求解的问题定义为 NP 类复杂度,显然 NP 包括 P。Karp 还定义了一个 NP 完全集,即如果 NP 完全集中的任何一个问题属于 P 类,则 NP 中的所有问题都属于 P。现在大多数的加密算法用的是 NP 完全集中的问题。关于密码分析的难度有如下定理:一个加密和解密算法若是能
16、在 P 时间内完成的,那么密码分析的难度不会大于 NP 时间。我们注意到普通的密码学问题就是 NP 的完整性问题。从我们定义的宽度可以得出加密的问题。 让 y = f(x) = a . x ,其中 a 是向量 n 的一个已知向量, x 是一个双向向量。计算 y 很简单,涉及到 n 分量。关于倒置 f,并且需要找到和 y 对应的一个子集的问题被称之为背包问题。当 2n 的子集以指数增长,并且 n 大于 100 时,穷举就变得不可能,所以必须谨慎行使。背包问题在最坏的情况下可能会变得很难。第七部分,历史回顾(historical perspective):虽然,公钥系统和单向认证是在本文第一次提出
17、,但是我们可以认为这是从过去的密码学里面发展变化出来的,并且顺应了百年来密码学发展的潮流。密码学的核心便是加密。然而,在早期人们对应该让什么保密还怀有迷惑。密码体制,如凯撒密码,保密了整个加密过程。在发明的电报 2 ,191 之后,一般系统和特定系统之间的区域允许系统受到损害。 密码学的发展经历了早期的加密过程保密,到 60 年代对明文攻击安全的算法,到现在算法公开的基于计算复杂度的算法,可见其发展趋势是秘密性越来越弱的。并且随着许多曾经被证明为安全的算法被相继攻破,密码安全性的分析也经历了早期的纯数学证明到后来的密码分析攻击,再到计算复杂度分析。这里还有一个有趣的现象就是密码分析方法大多是由
18、专业人事发现的,而密码算法则主要是由非专业人员提出的。在日常生活中,我们经常会接触到许多息交换,比如上网账号,电子商务,电子邮件,电子政务,银行证券等,因此,信息安全技术也必定渗透于我们生活的方方面面。但是让我真正对信息安全技术得以窥探的,还是这学期修的信息安全技术这门学科。信息安全技术作为一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。而在书中所讲的内容里面,我最感兴趣的也是密码学。因为密码学是信息安全的核心技术,不仅与我们日常生活紧密相关,更是在军事,航天等各个领域有着不可忽视的作用。如今,计算机
19、网络环境下信息的保密性、完整性、可用性和抗抵赖性,都需要采用密码技术来解决。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。如今,我虽然看了密码学的新方向这篇经典著作,但还是只能粗略地了解密码学中的最浅显的部分,想要真正了解密码学还有很长的路要走。在文章中提出的公钥加密,单向认证等技术,现在也被广泛地使用。Diffie 和 Hellman 的经典算法,影响直至今日,各种新兴算法的形成、多次地被引用,并且还会在日后长期发挥巨大作用。所有学科的提出,都需要不断的学习,吸收,不仅要有自己的独特见解与研究,更需要站在前人的肩膀上。Diffie 和 Hellman 所提出的理论,都是在对前人的总结,理解,分析的基础上,顺应时代潮流的发展产物。所以我们应该学习他们,以至所有科学家的精神,让信息安全技术得以更好地发展。