《孙子兵法》中提到,“知彼知已,百战不殆”,意思是在战争中,只有掌握对手的情报,了解对手的动态,才能百战百胜。其实无论是战场还是商场,不管是国家、社会还是团体、个人,在任何较量中,谁能掌握对手的情报,谁就掌握了制胜的关键。在当下,依靠密码学的智慧,以少胜多、以一则情报扭转一场战役的战局已经不再是神话。
进入 21 世纪以来,随着计算机技术的不断发展和互联网的广泛应用,网络信息安全面临着前所未有的危机和挑战。地区冲突和情报战争的不断升级,使得信息安全成为国家安全的重要阵地,不容忽视。
信息安全作为国家安全的重要组成部分,受到国家的高度重视。“没有网络安全就没有国家安全”。2022 年 10 月,中国共产党第二十次全国代表大会更是提出要推进国家安全体系和能力现代化,坚决维护国家安全和社会稳定。当今世界各国之间的网络攻击频仍,在这些看不见硝烟的战争中,信息安全已经成为一把 “达摩克利斯之剑”,悬在各国信息安全的战场之上。而密码学作为信息安全技术的支撑,就成了抵御达摩克利斯之剑的坚固盾牌。
本书作者为我国航空工业的从业人员。航空是国防和民生的重要组成部分,航空数据大部分属于敏感机密信息,一旦泄露,就可能给公众权益、企业利益、政令政策乃至国家安全等造成不同程度的损害。而数据泄露可能会发生在数据采集、传输、存储、使用、共享和销毁的任何环节中。为了防止数据泄露给第三方,在各环节中经常需要使用技术手段对其加以保护。其中最高效的技术手段就是加密。通过对数据进行加密,可以保证其完整性、保密性、可用性这三大安全要素。
过去,密码学只被用于特定的领域,应用范围并不广泛。但在网络信息高度发达的今天,数据已经成为关系各行各业生死存亡的高度机密。从国防单位到民营企业,乃至个人,都需要在网络中频繁使用大量数据,这也使得网络攻击频繁出现,手段日新月异。黑客群体也越来越系统化、专业化,有些甚至掌握了非常尖端的网络攻击技术。因此网络安全,特别是对数据的保护变得尤为重要。2022年,境外针对我国西北工业大学的网络攻击,就是对我国航空工业数据安全发起的一次猛烈冲击,这引起了我国航空工业乃至全社会对数据安全的思考和重视,也让越来越多的人对密码学产生了浓厚的兴趣。
各种新型加密算法层出不穷,使得非密码学专业的初学者理解加密算法变得越来越吃力。为了帮助读者快速了解密码学的工作原理,本书深人浅出地介绍了古典与现代密码学背后的数学原理,包括密码学的底层算法,并对重要的数学知识进行了详细推导和分析,还为读者推荐了相关文献,以加深读者对算法的理解。同时本书提供了大量例题和习题,便于读者进行验证和提高。
与其他密码学图书不同,本书加入了大量的例证和详细推导过程,以帮助读者理解加密算法过程,并着重强调实际使用中需要注意的细节。同时本书也给出了各类密码加密和解密过程的相关 Python/SageMath 代码,以降低读者理解加密算法的难度。还有少部分代码涉及运算技巧,优化了加密算法的速度,提高了效率。读者掌握了相关代码后,就能完全掌握这类密码。
本书介绍的大多数算法只需要读者拥有适当的数学背景,如基础的微积分、线性代数和概率论知识,如果读者有一定的编程经验则更有助于对本书的阅读和理解。对于一些较为专业和晦涩的材料,作者通过详细示例对其进行拆解,并对所涉及的专业数学知识进行简要处理,为读者扫清阅读障碍,将阅读门槛降至无需特殊专业背景即可理解的程度。通过阅读本书,读者将获得对加密算法和密码分析的深刻理解,以及相关的知识、工具和经验,继而自信地探索前沿的密码学主题。
● 对密码学感兴趣的读者。作者写作本书的目的是让尽可能多的读者了解和学习密码学,因此,任何希望深入了解密码学及其工作原理的读者都可以阅读本书,而且不会被过于深奥的数学原理所难倒。
● 信息安全/密码学领域的用户和从业人员,包括但不限于关注数据安全的普通用户,在信息的产生、使用、传输过程中接触敏感信息的用户,正在将密码学技术应用于数据保护的信息安全从业人员,以及希望进一步了解数据安全的管理者。
● 高校学生。本书可以作为理科专业的密码学辅助阅读图书,作为对部分细节的补充;也可作为工科专业的密码学阅读图书。读者可以通过书中的示例迅速掌握算法,而无须钻研数学细节。
密码学是一门交叉学科,涉及不同领域的数学知识,包括但不限于数论、抽象代数、线性代数、概率论,同时还与计算机科学有交叉,如优化算法等。推荐大学二年级及以上的学生阅读本书,也非常欢迎对密码学感兴趣的读者将本书作为参考用书。
本书分为四部分,共 14 章。
第一部分:基础背景知识。该部分主要介绍密码学的应用场景、数学基础以及密码学相关理论与实践。
● 第1章 密码学简介,对密码学简史、密码学概念、编码进行介绍。
● 第2章 数学基础,主要介绍密码学相关的数学背景知识,以数论和代数为主,以帮助读者理解本书中讨论的一些技术。
● 第3章 密码学中的信息理论,主要介绍香农在密码学方面的研究内容,以及信息论在密码学中的应用。
第二部分:对称密码学。该部分主要介绍古典密码学、流密码和分组密码,侧重研究它们的加密过程和分析过程。
● 第4章 古典密码学,主要介绍了古典密码学中的一些经典算法,包括凯撒密码、反切码、维吉尼亚密码、仿射密码、希尔密码,以及默克尔-赫尔曼背包密码的加密和解密算法,并详细描述了这些密码的分析方法。
● 第5章 流密码,主要介绍了 RC4 加密算法和祖冲之密码的加密和解密过程。
● 第6章 分组密码,主要介绍了经典的 DES、AES、SM4 加密算法的加密和解密过程。
第三部分:非对称密码学。非对称密码也称公钥密码,是现代密码学的重要分支。
● 第7章 RSA 加密算法,主要介绍了基于大数分解难题的 RSA 加密算法的加密和解密步骤,以及数种针对 RSA 密码系统的分析方法。
● 第8章 ElGamal 加密算法,主要介绍了基于离散对数难题的 ElGamal 加密算法的加密和解密步骤,以及数种针对 ElGamal 密码系统的分析方法。
● 第9章 椭圆曲线密码,主要介绍了基于离散对数难题的椭圆曲线加密算法,详细描述了它的加密和解密步骤,以及数种针对椭圆曲线密码系统的分析方法。
● 第 10 章 格密码,主要介绍了基于 SVP 和 CVP 的格密码系统,详细描述了它的加密和解密步骤,以及可能的分析方法。
● 第 11 章 全同态加密,全同态加密突破了传统密码算法的限制,让密码学的应用变得更加广泛。本章主要介绍了同态、全同态加密的概念,描述了第二代全同态加密算法的步骤和示例。
第四部分:数据完整性。现代密码学也非常注重数据完整性,该部分主要介绍哈希函数、消息验证码及数字签名技术。
● 第 12 章 哈希函数,主要介绍了 MD2、MD4、SHA 系列哈希函数的加密算法,并简单介绍其发展历史及安全性验证。
● 第 13 章 消息验证码,主要介绍了消息验证码的应用场景与安全性分析。
● 第 14 章 数字签名技术,主要介绍了基于公钥密码学的数字签名应用场景和实例。
对于初学者,建议按照章节顺序阅读本书。对于有一定数学基础的读者,可以跳过介绍数学的有关部分,或者选择感兴趣的章节阅读。
由于作者水平有限,加之本书内容具有极强的专业性且相关技术发展日新月异,书中难免存在不尽完善之处。如果你对本书有任何宝贵的意见和建议,欢迎通过邮箱 ethanliuzhuo @outlook.com 来信进行交流探讨,作者将不胜感激。
我要特别感谢我的妻子刘逸云教授和我可爱的女儿们,她们的支持和鼓励促使我完成了本书的写作。特别是我的妻子在写作上给予我许多建议,不仅参与了本书的内容设计和结构安排,还对本书进行了仔细的校对和修改。在此我要向她表示诚挚的谢意。
同时,特别感谢中国航空工业集团有限公司对本书的大力支持。本书的另外两位作者赵勇焜、黄领才在本书的写作过程中做出了巨大的贡献,为本书的顺利完成和最终质量的提高提供了重要的帮助。赵勇焜在本书的初稿阶段就加人了团队,并编写了第 2、3、14 章,使得本书的内容更加系统和严谨。黄领才总师拥有非常丰富的航空从业经验,是本书的技术顾问,为我们提供了大量宝贵的指导和建议,还协助作者团队联系了多位业内专家,为本书提供了不少实用案例和技术支持。在此,我要向两位合作者表示最真挚的感谢和敬意。非常感谢人民邮电出版社的余洁老师及其他参与本书出版工作的编辑老师所做的努力和付出,他们的专业素养和敬业精神让我深感钦佩和感激。在他们的帮助下本书得以顺利出版,而我也从中收获了非常宝贵的经验和知识。特别感谢买尔哈巴·买买提明、彭瑾、陈云天、刘慧以及一众知乎网友指出本书初稿中出现的错误,并对内容深度提出了非常有用的建议。
谨以此书献给我最亲爱的家人,以及众多热爱密码学的朋友。路漫漫其修远兮,吾将上下而求索!
刘 卓