前 言 密码学主要包括两部分,即密码编码学和密码分析学,这两部分既对立又统一,正是由于其对立性才促进了密码学的发展。一个密码算法(也称密码体制)的安全性只有通过系统地考查抵抗当前各类攻击的能力并进行全面的分析才能得出适度的定论。密码算法的安全性分析并非易事,但有一点是非常清楚的,那就是掌握现有的分析方法(也称攻击方法)并利用这些方法对相应的算法进行分析以考查其安全强度。密码分析方法不仅涉及的知识面宽,而且带有一定的实验性和经验性,任何一种分析方法都只有通过实践才能真正掌握。密码分析方法有很多,因为不同的密码算法有不同的分析方法,甚至同一密码算法也有很多种分析方法。作者在教学实践的基础上,于2000年在清华大学出版社出版了《密码分析学》一书,系统地介绍了当时已有的分析密码算法和密码协议的典型方法,该书出版后受到广大读者的青睐。时隔20年,密码分析学有了更丰富的内涵,很多书对此做了比较详细的介绍,但仍然缺乏一本全面、系统地介绍序列密码分析方法的著作。鉴于这种情况,作者结合多年的教学和科研实践,并在自己的读书笔记的基础上,撰写了本书,以飨读者。 作者有幸承担并主持了国家自然科学基金重点项目“流密码的设计与分析”和国际3GPP标准——祖冲之(ZUC)序列密码的研制工作,在这些项目的执行过程中,创设或掌握了不少新知识、新思想和新方法,对序列密码理论、设计、分析和应用都有了更加深刻的认识,深知密码基础理论和密码分析方法的重要性,深深地体会到设计一个新颖的、理论上安全的、实用的轻量级序列密码绝非易事。不信,你可以亲自试一试,尤其是当你读完本书后,你的自信会大打折扣。 本书具有以下特点: (1) 结构清晰。本书系统总结了散见于众多文献中的各种序列密码分析方法,将其归纳为时间存储数据折中分析方法、相关分析方法、线性分析方法、代数分析方法、猜测确定分析方法、侧信道分析方法和其他分析方法七大类,并分门别类地介绍了典型的分析方法。 (2) 内容新颖。本书反映了序列密码分析领域的最新研究进展,不仅处处有小的综述,而且极力介绍一些新的具体分析方法,包括序列密码的时间存储数据折中攻击方法、条件相关分析方法、选择初始向量分析方法、立方攻击方法、面向字节的猜测确定攻击方法、冷启动攻击方法、近似碰撞攻击方法等。同时,尽量反映一些新的设计思想,包括Sprout序列密码、FLIP序列密码、抗泄露序列密码等。 (3) 选材精良。本书在写作过程中以借鉴有代表性的重要文献为主,尤其是一些阐述经典分析方法的经典文献,尽量采用原始文献中的表述,把问题和原理讲透、讲清楚。这样做不仅有利于引导读者阅读原文,而且能够原原本本地反映典型分析方法的精髓,不会曲解原作者的真实意图。 本书在每章的开头都给出本章内容提要和本章重点,并在每章的结尾附有思考题,这些都有利于读者理解和掌握相关内容。每章还设有“注记与思考”,对本章进行总结和注解。各章末尾附有本章参考文献,作者这样做的目的是希望本书能够起到抛砖引玉的作用,向对序列密码分析感兴趣的读者提供一些线索,以便读者进一步阅读和研究。 作者在写作本书过程中得到了西安电子科技大学胡予濮教授、郑州信息工程大学戚文峰教授、中国科学院软件研究所张斌研究员、中国科学院数学与系统科学研究院冯秀涛副研究员的大力支持和帮助,也得到了序列密码讨论班的老师和同学们的帮助,在此向他们表示衷心的感谢。作者特别感谢清华大学出版社、国家重点基础研究发展计划项目(编号: 2013CB338003)和国家自然科学基金重点项目(编号: 60833008)的支持。 本书的初稿是2017年秋完成的,作者虽然下了很大功夫,但是总觉得不够理想,于是又花了几年的时间进行了修改和完善,并征求了许多专家学者的意见和建议。“丑媳妇总要见公婆”,敬请读者多提宝贵意见和建议。 冯登国2021年6月于北京