前言 - 现代密码学导论 Introduction to Modern Cryptography

Introduction to Modern Cryptography - Jonathan Katz and Yehuda Lindell

前言

​    这本书介绍了密码学的基本原理和原则。旨在作为密码学本科或研究生课程的教科书,作为适合自学的一般介绍(特别是对于即将毕业的学生(beginning graduate students)),并作为学生、研究人员和从业人员的参考资料。

​    如今已有许多其他的密码学教科书,读者们会询问是否还会需要另一本关于这个主题的书。如果这个问题的答案不是明确的yes,我们就不会写这本书。本书的创新之处,也是我们认为它有别于目前市场上其他书籍的地方,在于它以一种易于理解的,适合于介绍该主题的方式,对现代密码学进行了严格的处理。可以肯定的是,本书使用的材料是困难的(至少相比于该领域的其他书籍)。然而,我们并没有回避这个困难,而是选择直面它,引导读者突破这些苛刻(但令人着迷)的主题,而不是将读者的目光挡在它们之外。

​​    如前所述,我们的目光聚焦在现代(1980s以后)密码学上,它与经典密码学的不同之处在于对定义、精确假设以及严格证明安全性的强调。我们依次简要的讨论了这几点(这些原则将在第一章中更详细地探讨)。

  • 定义的核心作用:现代密码学的一个关键知识贡献是认识到安全的正式定义是设计任何加密系统基础或协议的第一步。回想原因很简单,如果你不知道你正在努力实现的是什么,你怎么能希望知到何时能够实现它呢?正如我们将在本书中看到的那样,安全的密码学定义非常强大,并且乍一看可能几乎无法实现。密码学中最令人惊叹的方面之一是:(在温和而广泛相信的假设下)满足如此强壮定义的有效结构是可以被证明存在的。

  • 正式化和精确假设的重要性:正如第二章解释的那样,许多密码学结构目前无法证明是无条件安全的。相反,安全往往依赖于一些普遍相信的(尽管没有被证明)假设。现代加密方法明确任何这类假设必须被清楚明白地定义。这不仅是允许了对假设的客观评估,更重要的,正如接下来所描述的,使安全性的严格证明成为可能。

  • 严格证明安全性的可能:先前的两个想法自然地引出了这一个:即,相对于一个给定的安全定义和良好定义的加密假设,加密结构就可以被证明是安全的。这是现代密码学的本质,也担负将密码学由一门艺术转向一门科学的责任。

    这个观点的重要性再怎么强调都不为过。历史上,加密方案大多是以一种特定方式设计的,并且如果设计者自身不能发现任何攻击方式,就被视为是安全的。相比之下,现代密码学提倡在一个完善定义的模型中,具有安全性的正式、数学证明的方案设计。除非基础假设是错误的(或者安全定义没有适当地刻画出现实世界的安全问题),否则这类方案可以确保安全。通过依靠于一个长期成立的假设(例如,一个“很难打破”(“factoring is hard”)的假设),这样就可能得到极不可能被攻破的方案。

  • 一种统一的方法。现代密码学的上述贡献不仅仅体现在“密码学理论”界。目前为止,精确定义的重要性已经被安全界的用户(当然也包括那些使用加密工具构建安全系统的人们)广泛的认识和赞赏,并且,安全的严格证明已经成为标准化加密方案的要求之一。如此一来,我们没有将“应用密码学”从“可证明安全性”中分离出来;而是展示了一种实际的,可以被广泛使用的结构,连同其所能实现的安全的定义的精确陈述(以及,大多时候,一个证明)。

使用指南

    这份指南主要面向希望在课程中使用本书的教师,即便是学生自己选取本书,也会觉得很有帮助。

  • 需要的背景知识。这本书使用了定义,证明,以及数学概念,并因此需要一些数学功底。特别的,我们假定读者已经接触过一些在高等数学或离散数学课程、算法、或者可计算理论中讲述的,学院水平的证明方式方法。说到这,我们已经做了巨大努力来简化表述并使其可以普遍接受。我们相信本书不比那些缺少严谨的同类书籍更难。相反,我们相信(举个例子),一旦安全目标得到了清晰地制定,理解在一种特定结构中的设计选择将会变得更加容易

    我们已经对本书的结构进行了调整,使其唯一需要的预备知识是一门算法课程和一门离散数学课程。即使在这里,我们也依赖了不少材料(very little material):特别是,我们假设读者熟悉基本概率和大O记号,模运算以及高效算法和多项式运行时间等价的想法。这些概念将在附录A或在本书中第一次使用时回顾。

  • 课程组建议。我们强烈建议在任何密码学导论课程中都应包含本书的核心材料,包括以下内容(星标章节被排除在外;见下文关于星标材料的进一步讨论):
    • Chapter 1-4 (至4.6节),讨论经典密码学,现代密码学和私钥密码学的基本原理(包括私钥加密和消息认证)
    • Chapter 7,介绍被视为难以解决的具体数学问题,提供理解RSA,Diffie-Hellman和EI Gamal所需的数论背景,并说明数论假设如何在密码学中使用。
    • Chapter 9 and 10,介绍公钥设置的动机并讨论公钥加密(包括基于RSA的方案和EI Gamal)
    • Chapter 12,描述数字签名方案
    • Section 13.1 and 13.3,介绍随机预言模型和RSA-FDH签名方案

​    我们认为这些核心材料(可能省略了一些更深入的讨论和一些证明)可以在一门30-35小时的本科生课程中涵盖。时间充裕的教师可以以更轻松的速度推进,例如,在介绍基础群论和数论背景时,提供所有证明的细节并更缓慢的进行。或者,可以像接下来讨论的那样组织更多的主题。

​    我们相信这些核心材料(可能省略了一些更深入的讨论和一些证明)可以在一门30-35小时的本科生课程中涵盖。时间充裕的教师可以以更轻松的速度推进,例如,在介绍基础群论和数论背景时,提供所有证明的细节并更缓慢的进行。或者,可以像接下来讨论的那样组织更多的主题。

    那些希望在长期课程或节奏较快的研究生课程中涵盖更多材料的教师将会发现,本书的结构,在时间允许的情况下(也取决于教师的兴趣),允许灵活地纳入其他话题。特别的,某些章节和部分加了“*”标。这些部分从任何方面来讲都不是不重要,但可以说并不构成密码学导论课程的“核心材料”。正如刚刚给出的课程大纲(不包括任何星标材料)表明的那样,星标章节和部分可能被跳过(或涵盖在后续课程的任何位置)而并不影响课程的节奏。我们特别花心思确保了没有非星标的材料是依赖于任何星标材料的。大多数情况下,星标章节也互不依赖(在极少数情况下存在这种依赖,其会被明确指出)。

​    我们为那些希望给自己的课程带来特别吸引力的教师准备了以下来自星标主题的建议:

  • 理论:一个更加侧重理论的课程可以包含以下材料:Section 4.8 和 4.9(处理私钥加密更强的安全性);Chapter 6(介绍单向函数和硬核位,并从任何单向变异开始,构建伪随机生成器和伪随机函数/变异);Section 10.7(从陷阱门变异中构建公钥加密);Chapter 11(描述Goldwasser-Micali,Rabin和Paillier 加密方案);Section 12.6(展示了一种不依赖于随机变异的签名策略)。
  • 应用:强烈建议希望强调密码学实践方面的教师涵盖以下章节:Section4.7(描述HMAC);Chapter 5(讨论现代区块密码和设计中使用的技术);以及Chapter 13的全部内容(给出给出随机变异模型中的加密结构)
  • 数学:针对具有深厚数学基础的学生的课程(或由喜欢密码学这一方面的人授课的课程),可以从以下章节纳入材料:Chapter 5(见上文)和Section 7.3(椭圆曲线组);Chapter 8(分解和计算离散对数的算法);以及Chapter 11(描述Goldwasser-Micali,Rabin和Paillier的加密方案以及所有必要的数论背景)

评论和斟误

​    我们编写本书的目的是让“理论计算机科学”界之外的广大群众了解现代密码学。我们希望你能让我们知道我们是否成功了。特别是,我们总是非常乐意收到关于这本书的反馈,尤其是告诉我们如何改进这本书的建设性意见。我们希望书中没有错误或错别字;但是,如果你发现了任何错误,我们将非常感激你的告知(已知错误的清单将保存在http://www.cs.umd.edu/~jkatz/imc.html)。你可以发送邮件至[email protected][email protected]来说明你的意见和发现的错误。请在标题行写上“Introduction to Modern Cryptography”。

你可能感兴趣的:(密码学,安全)