这一学期担任学校密码学基础课程助教,这里记录一些我给同学们补充的内容
课程参考书:
- 《密码编码学与网络安全:原理与实践(第七版)》:对密码学、密码学与网络中基本安全组件的联系有着十分详尽的介绍,同时也对sagemath在密码学中的使用有所展示
- 《应用密码学手册》:使用图表,伪代码等方式对密码学的基本数学机理、重要概念与算法、密码学应用、实现技巧等等有着详细的阐释
- 《应用密码学,协议、算法与C源程序》:对大量具体而经典的密码学相关理念与方案进行了细致的介绍
- 《密码学,C/C++语言实现》:基于FLINT/C库对密码学的基本功能的C实现进行了讲解与指导
Chapter 1 :古典密码学
信息论,系统论和控制论并称为“三论”,它们在新时代科技发展历程中被作为理论基础广泛应用于各个领域,其中以“信息熵”这一概念为核心的信息论便广泛应用于通信、人工智能、计算机与网络空间安全等领域中。虽然在本课程中我们并没有介绍熵的概念,但信息熵这一模型及其相关理论或思想将会渗透在大家将来在本专业各个方向学习工作中的方方面面,后续三年级上学期(大三上)的课程“现代通信原理”也会有一部分内容围绕熵这一概念进行细致的学习与讨论。
信息熵(信息论/香农理论)及其在密码学中的应用可以参考 D.R. Stinson 的《密码学原理与实践(第三版)》的第二章。值得一提的是此书的第一章也十分有趣,作者在这一章详细介绍了一些古典密码的设计与相应攻击案例,感兴趣的同学也可以就此进行了解,然后进行相应的编程实现。当然,如果想更加深入地了解信息论,那么可以阅读 Tomas M. Cover 和 Joy A. Thomas 的《信息论基础》 一书,这本书以其深入浅出的语言阐释、清晰明了的图形说明和富有启发的数学推导,被广泛推荐作为信息论课程的教科书,包括我校人工智能专业的 信息论 选修课。
- 值得大家熟悉的内容:课本上提到的多种密码算法、模运算、模逆元、矩阵的逆的计算方法。
- 值得大家了解的内容:古典密码的频率分析方法,古典密码分析网站quipquip,焖肉面- puzzle hunt工具集
Chapter 2 :流密码
流密码是一类历史十分悠久且研究十分深刻的密码,它是密码学中一种十分基础的概念,十分多的内容,比如纠错码、伪随机序列等等都一定程度上与流密码相关。流密码的设计与分析有限域上多项式等等理论密切相关,其中对LFSR(线性反馈移位寄存器)和NFSR(非线性)的研究更是极为丰富,当然也不乏将上述内容作为基础密码组件做得的密码设计。
课上我们提到,考虑延迟算子 ,那么我们就可以抽象出LFSR的特征多项式,且LFSR的周期与特征多项式的周期亦与特征多项式的可约性密切相关。如果同学们想要进一步学习相关多项式理论,大家可以参考 Rudolf Lidl 等人撰写的 Finite Fields 一书,这本书介绍了很多包括多项式分解,线性反馈序列,相关编码理论等等内容;研究生教材 《代数学基础与有限域》 中的内容也很不错,里面也具有比较详尽的相关理论介绍。
关于流密码的分析:流密码的分析方法众多,给大家提供一些关键词,感兴趣的同学可以根据这些关键词进行检索:时间存储数据折中攻击(推荐论文 A SpaceTime Trade-Off in Exhaustive Search Attacks on Stream Ciphers)、相关分析方法(Fast correlation attacks on certain stream ciphers)、线性分析方法(参考对SNOW密码的攻击)、代数分析方法(立方攻击)、猜测确定分析方法、相关密钥攻击等等。
- 值得大家熟悉的内容:LFSR序列(以及递推式)及其特征多项式的对应关系、什么是m序列,它的特点是什么、LFSR门级电路的绘制、如何将序列写成矩阵形式等
- 值得大家了解的内容:不可约多项式与本原多项式、生成函数相关理论、线性码相关理论、线性与非线性……
Chapter 3 :分组密码
关于课本上几种分组模式常见的可能存在的问题:ECB(暴露明文结构,相同的明文拥有相同的密文,具有被重放攻击的可能性)、CBC(字节反转攻击,即可以在破坏前一个分组消息的代价下实现对下一个明文分组的消息控制)、CFB(选择明文伪造,在敌手拥有解密机器的情况下可以在不知道密钥的情况下取构造名为呢所对应的密文)、OFB/CTR(密钥复用攻击,即相同的初始化向量/计数器所产生的密钥流相同,可能会存在一定问题)
关于3DES的EDE模式:EDE模式()是当时IBM设计出来为了兼容旧的DES算法的,这时旧的DES就等价于上述3DES直接取。它想处理的情况是比如说你很早之前用旧的DES算法加密的数据,你现在的系统更新了是3DES,但是你仍然想解密你之前的密文,你就取就好了
关于差分分析与线性分析:推荐学习资料 The Block Cipher Companion P109~P176 (注意该书有些小地方有点小问题,大家可以自行斟酌)
关于布尔函数:布尔函数是对称密码学研究中的一个十分有趣的角度,它在对称密码设计与分析中有着重要地位,且布尔函数与同学们下学期会学习到的现代通信原理有很多相通之处,下面仍然给出一些同学们如果感兴趣可以了解的概念:Walsh变换与Walsh谱(线性谱,对应线性密码分析,对应现代通信原理中频谱密度)、自相关函数与差分谱(对应差分密码分析,对应通信原理中自相关函数等)(*同学们学习过通信原理中的傅里叶变换、Parseval定理和韦纳辛钦定理后可以思考其中是否有更深一步的联系)、安全性指标(平衡性、代数次数(Berlekamp-Massay算法)、差分均匀度与仿射函数、非线性度(汉明重量、Bent函数)、相关免疫阶、弹性阶与Xiao-Massey定理、代数免疫度、雪崩原则等等)。
- 值得大家熟悉的内容:代换、扩散与混淆,Feistel结构,课本上提到的几种分组模式(分组密码的密钥是如何产生的,与流密码的差异,能够画图),课本上的几种分组密码算法(尤其DES与AES),GF(2)中运算和 运算的差别,异或运算的特点,常见分组密码的明文分组长度、密钥长度与轮数等
- 值得大家了解的内容:SPN结构、Lai-Massy结构(IDEA),分组模式GCM,差分分析与线性分析等