本系列读书笔记是基于个人对于《Introduction to modern cryptography》的阅读写下的,将会不定期更新其他章节的阅读笔记,本章为开篇第一章。文章中图片均来源于《Introduction to modern cryptography》一书。
密码学,在字典中的含义是“编码或解码的艺术”,主要针对的是编码。时至今日,其内涵已经扩展到包括完整性保障、密钥交换、验证协议、电子投票以及加密货币等各个方面。而对应的,现代密码学涵盖保护数字信息、数字系统和分布式计算免遭攻击的数学技术研究。
从时间上看,二者大致上以1980s为分界线,在此之前的称为古典密码,之后的成为现代密码。
总的来说,密码学已经从之前的一种用以保护少数特定应用场景的信息机密性的启发式的技巧发展成为一门帮助全世界普通人保障系统广泛化的科学。
对称加密:在对称加密的场景下,通信双方共享密钥,发送方可使用之加密明文并将其以密文形式发送至接收方,接收方使用相同的密钥解密密文并恢复明文。
对称密码有两个典型的应用方向:空间上,同一时间内两不同地点的通信双方可使用对称密码满足保密通信的要求;时间上,同一地点的不同时间维度的双方亦可使用对称密码满足保密通信的要求。
以上算法需满足以下公式:
D e c k ( E n c k ( m ) ) = m Dec_k(Enc_k(m)) = m Deck(Enck(m))=m
密码方案并不需要保密,而且它必须很容易被敌方获取。换一种说法,密码方案的安全性不依赖于密码方案的保密,而是只依赖于密钥的隐秘性。
该原理有三种主要依据:
凯撒密码是目前最古老的密码之一,其核心点在于明文通过右移三位进行加密。
G e n ( ) → k E n c k ( m 1 ⋅ ⋅ ⋅ m l ) = c 1 ⋅ ⋅ ⋅ c l , c i = [ ( m i + k ) m o d 26 ] D e c k ( c 1 ⋅ ⋅ ⋅ c l ) = m 1 ⋅ ⋅ ⋅ m l , m i = [ ( c i − k ) m o d 26 ] Gen() \rightarrow k \\ Enc_k(m_1 ··· m_l) = c_1 ··· c_l,\ c_i = [(m_i + k) \ mod \ 26] \\ Dec_k(c_1 ··· c_l) = m_1 ··· m_l,\ m_i = [(c_i - k)\ mod \ 26] Gen()→kEnck(m1⋅⋅⋅ml)=c1⋅⋅⋅cl, ci=[(mi+k) mod 26]Deck(c1⋅⋅⋅cl)=m1⋅⋅⋅ml, mi=[(ci−k) mod 26]
移位密码可以被穷举破解,原因在于移位密码的密钥只存在26种可能,只需尝试每种可能再取其中最合理的结果便可完成破解,故可引出以下原则:
任何安全加密方案都需要一个足够大的密钥空间 以保证穷举攻击是难以做到的 \small 任何安全加密方案都需要一个足够大的密钥空间 \\ 以保证穷举攻击是难以做到的 任何安全加密方案都需要一个足够大的密钥空间以保证穷举攻击是难以做到的
在该密码方案中,密文和明文的映射关系是随机的,但是需要保证此映射关系是一对一的,并由此使得密钥空间包含字母表中所有的双射。
该方案保证了密钥空间的规模足够大,但是仍然会被攻击者利用英语的统计特性加以攻击:
在之前的移位密码的攻击中,我们需要尝试每种密钥可能并选出结果最合理的解,该方法的缺点在于电脑很难选择出人类认知中的合理。更重要的是,当明文本身并不是语言意义上合理时,保证解密出来的明文合理已经毫无作用。而在下列方法中,明文只需要满足和英语具有相同分布即可:
用 0-25 分别表示英文字母 a-z, p i p_i pi表示第 i 个字母出现的频率,则可得到以下结论:
∑ i = 0 25 p i 2 ≈ 0.065 \sum_{i=0}^{25} p_i^2 \approx 0.065 i=0∑25pi2≈0.065
在得到一些密文的情况下,令 q i q_i qi表示密文中第 i 个字母出现的频率,并假设密钥为 k,则可认为 p i p_i pi和 q i + k q_{i+k} qi+k对应,于是我们计算每个可能的密钥取值 j ∈ { 0 , . . . , 25 } j \in \{0,...,25 \} j∈{0,...,25},当得到的 I j I_j Ij和 I k ≈ 0.065 I_k \approx0.065 Ik≈0.065最接近时便可认为 j = k j = k j=k
I j = d e f ∑ i = 0 25 p i ⋅ q i + j I_j \stackrel{def}{=} \sum_{i = 0}^{25}p_i·q_{i+j} Ij=defi=0∑25pi⋅qi+j
维吉尼亚密码是多表移位密码的典型,可被认为是在不同明文区域中使用不同移位密码实例。密钥可被视为一串字母,加密是通过按密钥的扩展字符所表示的数量移动每个明文文本字符,当密钥长度为 1 时退化为移位密码。示例如下:
当密钥长度(t)已知的情况下,攻击该密码方案是非常容易的:我们可以将密文分为 t 个部分(按以下方式进行组合),其中每个部分都可以使用移位密码的方式进行破解,可暴力破解亦可利用统计规律破解。
c j , c j + t , c j + 2 t , j ∈ { 1 , . . . , t } c_j, c_{j+t},c_{j+2t}, \quad j \in \{ 1,...,t \} cj,cj+t,cj+2t,j∈{1,...,t}
当 t 未知时,破解该密码方案的难度并未过度提升,原因如下:
以上对维吉尼亚密码的攻击需要攻击者能够得到远大于密钥长度的密文,以确保计算得到的频率接近英语中字母的频率分布。
总的来说,安全性定义由两部分组成:安全保证和威胁模型,安全保证定义方案要阻止攻击者的行为,威胁模型阐述攻击者的能力、攻击者能够执行的行为。
证明密码方案的安全性基于某些其他假设而不直接假设密码方案是安全的原因如下:
在密码学中,严格证明一个结构满足特定假设下的给定定义是十分重要的。相对于定义和假设,安全性证明提供了一个更加坚实的保证:没有攻击者能攻击成功;这比用无原则的或启发式的方法来解决问题要好得多。
如果不能证明任何拥有特定资源的对手都不能破坏某个方案,我们只能凭直觉认为情况就是如此。经验表明,在密码学和计算机安全方面的直觉是灾难性的。