密码学的研究与应用已有几千年的历史,但作为一门科学是20世纪50年代才开始的。不可否认,互联网的广泛应用大大推动了密码学的研究与发展。大多数国家和地区都已经成立了密码学学会,这些学会定期举办学术会议进行学术交流,促进了密码学的研究与应用。国内外已出版了大量有关密码学的书籍,其理论研究也相对比较成熟,在很多观点上已达成共识。DouglasR.Stinson所著的《密码学原理与实践(第二版)》一书是一本很有特色的教科书,具体表现在以下几个方面:1.表述清晰。书中的语言描述浅显易懂,如分组密码的差分分析和线性分析本是很难描述的问题,本书中却表述得非常清楚。2.论证严谨。书中对很多密码问题,如惟一解距离、Hash函数的延拓准则等进行了严格的数学证明,具有一种逻辑上的美感。3.内容新颖。书中从可证明安全的角度对很多密码学问题特别是公钥密码问题进行了清楚的论述,使用了预言(Oracle)这一术语,通过阅读本书可使读者能够精确掌握这一概念的灵魂。书中顺便对一些密码学领域的最新进展也做了相应的介绍。4.选材精良。书中选择了大量典型的、相对成熟的素材,特别适合于教学使用。5.习题丰富。通过演练每章后面精心安排的习题,可以迅速并熟练掌握密码学的基本技巧。要掌握好一门课程,必须选择一两本好书。我认为本书是非常值得精读的一本好书,这也是我花费大量时间翻译本书的初衷。本书在翻译过程中,得到了一大批博士的协助,他们是徐涛博士、薛锐博士、孙中伟博士、黄寄洪博士、张斌博士、王鹏博士和杨海波博士,特别是徐涛博士协助完成了全书的统稿和审校工作,没有他们的鼎力相助,本书的翻译和审稿工作绝不会如此顺利,在此对他们表示衷心的感谢。本书的翻译工作得到了国家973项目(编号:G1999035802)和国家杰出青年科学基金(编号:60025205)的支持,在此表示感谢。冯登国2003年元旦于北京序言本书的第一版于1995年3月出版。那时,我的目标是写一本通用的教材,包含密码学方面所有的基本核心领域,并选择一些前沿的主题。在写作过程中,我试图使内容具有足够的弹性并容纳这一学科的众多方向,以便它可在数学、计算机科学和工程等专业的本科生和研究生的密码学课程中使用。下面列举了本书第一版中的一些特色,并在本书中保留了下来。数学背景知识在需要的时候“及时(justintime)”地提供出来。·密码体制的描述由更精确的伪代码给出。·提供例子以说明密码体制的工作过程。·对算法和密码体制的数学基础做了仔细、严格的解释。·包含了大量的练习,其中一些很具有挑战性。本书的第一版包含13章。当两年前开始修订时,我发现有丰富的新材料可以加入到第二版中。为了防止篇幅过于庞大,并能在合理的时间内完成,我决定把第二版的内容更紧密地集中在密码学的核心领域上,这就更像是一门课程里所覆盖的内容。其结果就使得本书包含了对第一版的前7章内容的更新、修改、扩展和重新组织。我计划不久再写一本“姊妹篇”,包含对第一版其余内容的更新,并加入新的内容。下面对本书的7章内容做一概述:·第1章对于简单的“经典”密码体制进行了基本的介绍。一些主题被更新或改进,例如,给出了基于DanVelleman建议的对于维吉尼亚密码的简化的密码分析。·第2章覆盖了密码学中Shannon理论的主要内容,包括完善保密性的概念以及信息论在密码学中的应用。这些内容并没有显著的改动;然而,相对于第一版,本书包含了对于基础概率论的更细致的阐述。·第3章是几乎完全重写的。在第一版对应的章节中基本上只讲述了数据加密标准(DES),现在看来已很陈旧。我决定使用代换-置换网络(substitution-permutationnetworks)作为数学模型来引入现代分组密码设计和分析的许多概念,包括差分分析和线性分析。这里比以前更加强调一般的原则,并讨论了特定的密码体制(DES和新的AES)以说明这些一般原则。·第4章对第一版的第7章做了较大改动。这一章现在介绍了对于带密钥的Hash函数和不带密钥的Hash函数的统一处理,以及它们在构造消息认证码中的应用。这里强调了数学分析和安全性证明。本章还包含了安全Hash算法(SHA)的描述。·第5章讨论了RSA密码体制,并给出了相当多的数论背景知识,例如素性检验(primalitytesting)和因子分解。本章已经被扩展了,包含了几个新的小节,例如Pollardρ算法、Wiener的低解密指数攻击和基于RSA的密码体制的语义安全。·第6章讨论了基于离散对数(DiscreteLogarithm)问题的公钥密码体制,例如ElGamal密码体制。这一章也包含了很多新内容,例如Pollardρ算法、通用算法复杂性更低的下界、椭圆曲线的扩展讨论、离散对数密码体制的语义安全性,以及Diffie-Hellman问题。本章中不再对背包(knapsack)密码体制和McEliece密码体制进行讨论。·第7章讨论了签名方案问题。像以前一样,介绍了DSA方案,也包含了对特殊类型的签名方案的阐述,例如不可否认签名和fail-stop签名。新材料重点讨论了安全性定义、ElGamal签名方案的变种(例如Schnorr签名方案和椭圆曲线DSA方案),和可证明的安全签名方案,例如全域Hash。写一本密码学方面的著作的一个最大的困难就是确定应包含多少数学背景知识。密码学是一个涉及广泛的学科,它需要多个数学领域的知识,包括数论、群论、环论、域论、线性代数、概率论以及信息论。同样地,熟悉计算复杂性、算法和NP完全性理论也是很有用的。