密码学是研究如何保护信息安全性的一门科学,涉及数学、物理、计算机、信息论、编码学、通讯技术等学科,已经在生活中得到广泛应用。
密码学组成分支分为编码学和密码分析学。密码编码学主要研究对信息进行编码,实现信息的隐蔽。密码分析学主要研究加密消息的破译或消息的伪造。二者相互独立,又相互依存,在矛盾与斗争中发展,对立统一。
密码学的发展历史大致可划分为三个阶段:
机密性
仅有发送方和指定的接收方能够理解传输的报文内容。窃听者可以截取到加密了的报文,但不能还原出原来的信息,即不能得到报文内容。
鉴别
发送方和接收方都应该能证实通信过程所涉及的另一方, 通信的另一方确实具有他们所声称的身份。即第三者不能冒充跟你通信的对方,能对对方的身份进行鉴别。
报文完整性
即使发送方和接收方可以互相鉴别对方,但他们还需要确保其通信的内容在传输过程中未被改变。
不可否认性
如果人们收到通信对方的报文后,还要证实报文确实来自所宣称的发送方,发送方也不能在发送报文以后否认自己发送过报文。
密码体制是一个使通信双方能进行秘密通信的协议。密码体制由五要素组成,P(Plaintext明文集合),C(Ciphertext密文集合),K(Key密钥集合),E(Encryption加密算法),D(Decryption解密算法),且满足如下特性:
script type="math/tex; mode=display" id="MathJax-Element-1" p ∈ P /script
script type="math/tex; mode=display" id="MathJax-Element-2" c ∈ C /script
script type="math/tex; mode=display" id="MathJax-Element-3" k1 ∈ K, k2 ∈ K /script
script type="math/tex; mode=display" id="MathJax-Element-6" E_{k1}(p) = c,D_{k2}(c) = p /script
无论是用手工或机械完成的古典密码体制,还是采用计算机软件方式或电子电路的硬件方式完成的现代密码体制,其加解密基本原理都是一致的。都是基于对明文信息的替代或置换,或者是通过两者的结合运用完成的。
替代(substitution cipher):有系统地将一组字母换成其他字母或符号;
例如‘help me’变成‘ifmq nf’(每个字母用下一个字母取代)。
置换(Transposition cipher):不改变字母,将字母顺序重新排列;
例如‘help me’变成‘ehpl em’(两两调换位置)。
密码分析者通常利用以下几种方法对密码体制进行攻击:
已知明文分析法:
知道一部分明文和其对应的密文,分析发现秘钥。
选定明文分析法:
设法让对手加密自己选定的一段明文,并获得对应的密文,在此基础上分析发现密钥。
差别比较分析法:
设法让对方加密一组差别细微的明文,通过比较他们加密后的结果来分析秘钥。
无条件安全:
无论破译者的计算能力有多强,无论截获多少密文,都无法破译明文。
计算上安全:
破译的代价超出信息本身的价值,破译所需的时间超出信息的有效期。
任何密码系统的应用都需要在安全性和运行效率之间做出平衡,密码算法只要达到计算安全要求就具备了实用条件,并不需要实现理论上的绝对安全。1945年美国数学家克劳德·E·香农在其发布的《密码学的数学原理》中,严谨地证明了一次性密码本或者称为“弗纳姆密码”(Vernam)具有无条件安全性。但这种绝对安全的加密方式在实际操作中需要消耗大量资源,不具备大规模使用的可行性。事实上,当前得到广泛应用的密码系统都只具有计算安全性。
一个好的密码体制应该满足以下两个条件:
在已知明文和密钥的情况下,根据加密算法计算密文是容易的;在已知密文和解密密钥的情况下,计算明文是容易的。
在不知道解密密钥的情况下,无法从密文计算出明文,或者从密文计算出明文的代价超出了信息本身的价值。
常见的密码算法包括:
对称密码体制也称单钥或私钥密码体制,其加密密钥和解密密钥相同,或实质上等同, 即从一个易于推出另一个。
优点:保密性高,加密速度快,适合加密大量数据,易于通过硬件实现;
缺点:秘钥必须通过安全可靠的途径传输,秘钥的分发是保证安全的关键因素;
常见对称密码算法:DES (密钥长度=56位)、3DES( 三个不同的密钥,每个长度56位)、AES(密钥长度128/192/256可选)、IDEA(密钥长度128位)、RC5(密钥长度可变)。
根据加密方式的不同,对称密码又可以分为分组密码和序列密码。
将明文分为固定长度的组,用同一秘钥和算法对每一块加密,输出也是固定长度的密文,解密过程也一样。
又称为流密码,每次加密一位或一字节的明文,通过伪随机数发生器产生性能优良的伪随机序列(密钥流),用该序列加密明文消息序列,得到密文序列,解密过程也一样。
非对称密码体制又称双钥或公钥密码体制,其加密密钥和解密密钥不同,从一个很难推出另一个。其中的加密密钥可以公开,称为公开密钥,简称公钥;解密密钥必须保密,称为私有密钥,简称私钥。
优点:密钥交换可通过公开信道进行,无需保密。既可用于加密也可用于签名。
缺点:加密速度不如对称密码,不适合大量数据加密,加密操作难以通过硬件实现。
非对称密码体制不但赋予了通信的保密性,还提供了消息的认证性,无需实现交换秘钥就可通过不安全信道安全地传递信息,简化了密钥管理的工作量,适应了通信网的需要,为保密学技术应用于商业领域开辟了广阔的前景。
常见的非对称密码算法:RSA(基于大整数质因子分解难题)、ECC(基于椭圆曲线离散对数难题)。
对非对称密码的误解
非对称密码比对称密码更安全?
任何一种算法的安全都依赖于秘钥的长度、破译密码的工作量,从抗分析的角度看,没有哪一方更优越;
非对称密码使对称密码成为过时技术?
公钥算法很慢,一般用于密钥管理和数字签名,对称密码将长期存在,实际工程中采用对称密码与非对称密码相结合。
哈希函数将任意长的消息映射为一个固定长度的散列值,也称消息摘要。消息摘要可以作为认证符,完成消息认证。
哈希是单向函数,从消息摘要来推理原消息是极为困难的。哈希函数的安全性是由发生碰撞的概率决定的。如果攻击者能轻易构造出两个不同的消息具有相同的消息摘要,那么这样的哈希函数是不可靠的。
常见的哈希函数有:MD5,SHA1,HMAC。
数字签名是公钥密码的典型应用,可以提供和现实中亲笔签名相似的效果,在技术上和法律上都有保证。是网络环境中提供消息完整性,确认身份,保证消息来源(抗抵赖性)的重要技术。
数字签名与验证过程:
发送方用哈希函数从报文文本中生成一个128位的散列值(或报文摘要),发送方用自己的私钥对这个散列值进行加密来形成自己的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给接收方。接收方收到报文后,用同样的哈希函数从原始报文中计算出散列值(或报文摘要),接着再用发送方的公钥来对报文附加的数字签名进行解密得出另一个散列值,如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现消息的完整性和不可抵赖性。
在网络安全中,密钥的地位举足轻重
。如何安全可靠、迅速高效地分配密钥、管理密钥一直是密码学领域中的重要问题。
密钥生成可以通过在线或离线的交互协商方式实现,如密码协议等 。密钥长度应该足够长。一般来说,密钥长度越大,对应的密钥空间就越大,攻击者使用穷举猜测密码的难度就越大。选择密钥时,应该避免选择弱密钥,大部分密钥生成算法采用随机过程或伪随机过程生成密钥。
采用对称加密算法进行保密通信,需要共享同一密钥。通常是系统中的一个成员先选择一个秘密密钥,然后将它传送另一个成员或别的成员。X9.17标准描述了两种密钥:密钥加密密钥和数据密钥。密钥加密密钥加密其它需要分发的密钥;而数据密钥只对信息流进行加密。密钥加密密钥一般通过手工分发。为增强保密性,也可以将密钥分成许多不同的部分然后用不同的信道发送出去。
密钥附着一些检错和纠错位来传输,当密钥在传输中发生错误时,能很容易地被检查出来,并且如果需要,密钥可被重传。接收端也可以验证接收的密钥是否正确。发送方用密钥加密一个常量,然后把密文的前2-4字节与密钥一起发送。在接收端,做同样的工作,如果接收端解密后的常数能与发端常数匹配,则传输无错。
当密钥需要频繁的改变时,频繁进行新的密钥分发的确是困难的事,一种更容易的解决办法是从旧的密钥中产生新的密钥,有时称为密钥更新。可以使用单向函数进行更新密钥。如果双方共享同一密钥,并用同一个单向函数进行操作,就会得到相同的结果。
密钥可以存储在脑子、磁条卡、智能卡中。也可以把密钥平分成两部分,一半存入终端一半存入ROM密钥。还可采用类似于密钥加密密钥的方法对难以记忆的密钥进行加密保存。
密钥的备份可以采用密钥托管、秘密分割、秘密共享等方式。
密钥托管:
密钥托管要求所有用户将自己的密钥交给密钥托管中心,由密钥托管中心备份保管密钥(如锁在某个地方的保险柜里或用主密钥对它们进行加密保存),一旦用户的密钥丢失(如用户遗忘了密钥或用户意外死亡),按照一定的规章制度,可从密钥托管中心索取该用户的密钥。另一个备份方案是用智能卡作为临时密钥托管。如Alice把密钥存入智能卡,当Alice不在时就把它交给Bob,Bob可以利用该卡进行Alice的工作,当Alice回来后,Bob交还该卡,由于密钥存放在卡中,所以Bob不知道密钥是什么。
秘密分割:
秘密分割把秘密分割成许多碎片,每一片本身并不代表什么,但把这些碎片放到一块,秘密就会重现出来。
秘密共享:
将密钥K分成n块,每部分叫做它的“影子”,知道任意m个或更多的块就能够计算出密钥K,知道任意m-1个或更少的块都不能够计算出密钥K。秘密共享解决了两个问题:一是若密钥偶然或有意地被暴露,整个系统就易受攻击;二是若密钥丢失或损坏,系统中的所有信息就不能用了。
加密密钥不能无限期使用,有以下有几个原因:密钥使用时间越长,它泄露的机会就越大;如果密钥已泄露,那么密钥使用越久,损失就越大;密钥使用越久,人们花费精力破译它的诱惑力就越大——甚至采用穷举攻击法。
不同密钥应有不同有效期。数据密钥的有效期主要依赖数据的价值和给定时间里加密数据的数量。价值与数据传送率越大所用的密钥更换越频繁。如密钥加密密钥无需频繁更换,因为它们只是偶尔地用作密钥交换,密钥加密密钥要么被记忆下来,要么保存在一个安全地点,丢失该密钥意味着丢失所有的文件加密密钥。
公开密钥密码应用中的私钥的有效期是根据应用的不同而变化的。用作数字签名和身份识别的私钥必须持续数年(甚至终身),用作抛掷硬币协议的私钥在协议完成之后就应该立即销毁。即使期望密钥的安全性持续终身,两年更换一次密钥也是要考虑的。旧密钥仍需保密,以防用户需要验证从前的签名。但是新密钥将用作新文件签名,以减少密码分析者所能攻击的签名文件数目。
如果密钥必须替换,旧钥就必须销毁,密钥必须物理地销毁。
PKI是一个利用公钥加密技术为密钥和证书的管理,所设计的组件、功能子系统、操作规程等的集合,它的主要任务是管理密钥和证书,为网络用户建立安全通信信任机制。
数字证书是一个包含用户身份信息、公钥信息、证书认证中心(CA)数字签名的文件。
作用:数字证书是各类终端实体和最终用户在网上进行信息交流及商业活动的身份证明,在电子交易的各个缓解,交易的各方都需要验证对方数字证书的有效性,从而解决相互间的信任问题。
CA全称Certificate Authentication,是具备权威性的数字证书申请及签发机构。
CA作为PKI的核心部分,主要由注册服务器组、证书申请受理和审核机构、认证中心服务器三者组成。
注册服务器:通过 Web Server 建立的站点,可为客户提供24×7 不间断的服务。客户在网上提出证书申请和填写相应的证书申请表。
证书申请受理和审核机构:负责证书的申请和审核。
认证中心服务器:是数字证书生成、发放的运行实体,同时提供发放证书的管理、证书废止列表(CRL)的生成和处理等服务。
通过CA可以实现以下功能:
1. 接收验证最终用户数字证书的申请;
2. 确定是否接受最终用户数字证书的申请和审批;
3. 向申请者颁发、拒绝颁发数字证书;
4. 接收、处理最终用户数字证书的更新;
5. 接受最终用户数字证书的查询、撤销;
6. 产生和发布CRL(证书废止列表);
7. 数字证书的归档;
8. 密钥归档;
9. 历史数据归档;
五、量子密码
5.1 量子计算
由于量子计算技术取得了出人意料的快速发展,大量仅能抵御经典计算机暴力破解的密码算法面临被提前淘汰的困境 。
非对称密码系统有效解决了对称密码面临的安全密钥交换问题,因而广泛应用于公钥基础设施、数字签名、联合授权、公共信道密钥交换、安全电子邮件、虚拟专用网以及安全套接层等大量网络通信活动之中。不幸的是,随着量子计算的发展,包括RSA密码、ECC密码以及DH密钥交换技术等非对称密码算法已经从理论上被证明彻底丧失了安全性。相对于对称密码系统还可以采取升级措施应对量子威胁,非对称密码系统必须采取全新方法进行重建 。
5.2 量子密码
量子密码是以量子力学和密码学为基础,利用量子物理学中的原理实现密码体制的一种新型密码体制,与当前大多使用的经典密码体制不一样的是,量子密码利用信息载体的物理属性实现。目前量子密码用于承载信息的载体包括光子、压缩态光信号、相干态光信号等。
由于量子密码体制的理论基础是量子物理定理,而物理定理是物理学家经过多年的研究与论证得出的结论,有可靠的理论依据,且不论在何时都是不会改变的,因此,理论上,依赖于这些物理定理的量子密码也是不可攻破的,量子密码体制是一种无条件安全的密码体制。
目 录
译者序
前言
第一部分 密码编码学
第1章 导论 5
1.1 密码编码学和隐写术 5
1.2 符号码 5
1.3 公开代码:伪装 8
1.4 暗示 11
1.5 公开代码:利用虚码掩蔽 12
1.6 公开代码:采用栅格的隐藏 15
1.7 密码编码的方法的分类 16
第2章 密码编码学的方法和目标 18
2.1 密码编码学的本质 18
2.1.1 加密与解密方法 18
2.1.2 加密与解密机 20
2.1.3 密码技术与文学 20
2.1.4 密码研究机构 21
2.2 加密 22
2.2.1 词汇表、字符集 22
2.2.2 加密和解密 22
2.2.3 归纳定义 23
2.3 密码体制 23
2.3.1 基本概念 23
2.3.2 加密和编码 24
2.3.3 文本流 24
2.4 多音码 25
2.4.1 多音码 25
2.4.2 字间空格 26
2.5 字符集 26
2.5.1 明文字符集 26
2.5.2 技术字符集 27
2.5.3 同态的情形 28
2.6 密钥 28
2.6.1 密钥需要变化 28
2.6.2 分组 28
2.6.3 同构 29
2.6.4 香农 29
第3章 加密方法:简单代替 30
3.1 V(1)→W的情形 30
3.1.1 V→W:没有多名码和空字符的加密 30
3.1.2 V(1)→W:有多名码和空字符的加密 31
3.2 特殊情况:V玍 31
3.2.1 自反置换 32
3.2.2 电路实现 33
3.2.3 单循环置换 33
3.2.4 混合密表 34
3.2.5 借助口令字构造密表 35
3.2.6 记数 35
3.2.7 圆盘加密和滑尺加密 36
3.2.8 带滑动窗的循环字符 36
3.3 V(1)→Wm:多叶简单代替 36
3.3.1 m=2双叶简单代替:V(1)→W2 36
3.3.2 m=3三叶简单代替:V(1)→W3 38
3.3.3 m=5五叶简单代替:V(1)→W5 38
3.3.4 m=8八叶简单代替:V(1)→W8 39
3.4 V(1)→W(m)的一般情况:夹叉式加密 39
3.4.1 约束条件 39
3.4.2 俄国的接合 41
第4章 加密方法:多字母代替和编码 42
4.1 V2→W(m)的情形 42
4.1.1 字母 42
4.1.2 双叶双码加密步V2玍2 42
4.1.3 三叶双码代替V2→W3 46
4.2 Playfair和Delastelle的特殊情况:
分层方法 47
4.2.1 Playfair密码 47
4.2.2 修改后的PLAYFAIR 49
4.2.3 Delastelle密码 49
4.3 V3→W(m)的情形 50
4.3.1 GioPPi 50
4.3.2 Henkels 50
4.4 V(n)→W(m)的一般情况:密本 51
4.4.1 词汇手册 52
4.4.2 两部本密本 53
4.4.3 现代密本 55
4.4.4 电报代码 56
4.4.5 商用密本 57
4.4.6 检错和纠错编码 58
4.4.7 短命的密本 58
4.4.8 战壕密码 58
第5章 加密方法:线性代替 60
5.1 自反线性代替 61
5.2 齐次线性代替 62
5.2.1 希尔 62
5.2.2 非齐次情况 62
5.2.3 计数 63
5.2.4 矩阵对的构造 64
5.2.5 自反矩阵的构造 65
5.3 二元线性代替 65
5.4 一般线性变换 65
5.5 线性代替的分解 66
5.6 十选一字母表 68
5.7 带有十进制和二进制数的线性代替 69
5.7.1 N=10的情况 69
5.7.2 N=2的情况: 69
5.7.3 图灵 70
第6章 加密方法:换位 71
6.1 最简单的方法 71
6.1.1 Crab 71
6.1.2 首字母互换 71
6.1.3 路径抄写 72
6.1.4 格子变换 73
6.2 纵行换位 74
6.2.1 口令字 74
6.2.2 矩形方案 75
6.2.3 两步法 75
6.2.4 Ubchi 76
6.2.5 置换的构造 76
6.3 变位字 77
6.3.1 历史 77
6.3.2 惟一性 78
第7章 多表加密:加密表族 80
7.1 迭代代替 80
7.1.1 同态 80
7.1.2 循环置换 81
7.2 移位和旋转密表 81
7.2.1 移位加密表 81
7.2.2 旋转加密表 82
7.2.3 伴随加密表 82
7.2.4 加密表的数量 83
7.3 转轮密码机 83
7.3.1 背景 84
7.3.2 自反转轮机 85
7.3.3 国防军的方案 86
7.3.4 TYPEX 89
7.3.5 ENIGMA代替 89
7.4 移位标准加密表:维吉尼亚密表
和博福特密表 91
7.4.1 维吉尼亚加密步 91
7.4.2 EYRAUD 92
7.4.3 博福特加密步 92
7.4.4 逆向维吉尼亚加密步和
逆向博福特加密步 92
7.4.5 波他加密步 93
7.5 非相关加密表 93
7.5.1 置换 94
7.5.2 Gripenstierna 94
7.5.3 MULTIPLEX 95
7.5.4 拉丁方要求 98
第8章 多表加密:密钥 101
8.1 早期使用周期密钥的方法 101
8.1.1 艾伯蒂 101
8.1.2 特理特米乌斯 101
8.2 双密钥 103
8.2.1 波他 103
8.2.2 维吉尼亚 103
8.2.3 三重密钥 103
8.3 弗纳姆加密 103
8.3.1 逐比特加密 104
8.3.2 弗纳姆 104
8.3.3 进位问题 104
8.4 准非周期密钥 105
8.4.1 繁琐的多表加密 105
8.4.2 多表加密的安全性 105
8.4.3 渐进加密 106
8.4.4 “规则”的转轮运动 106
8.5 密钥序列的产生机器—密钥生成器 106
8.5.1 惠斯通 106
8.5.2 不规则的尝试 106
8.5.3 由缺口和棘轮控制的轮运动 108
8.5.4 打字密码机 109
8.5.5 赫本 110
8.5.6 亚德利 111
8.5.7 绿密、红密和紫密 112
8.6 线外形成密钥序列 115
8.6.1 矩阵方幂 115
8.6.2 二元序列 115
8.7 非周期密钥 116
8.7.1 错觉 116
8.7.2 自身密钥 117
8.7.3 明文函数 119
8.7.4 流密码 119
8.8 单个的一次性密钥 120
8.8.1 弗纳姆 120
8.8.2 无尽头和无意义 120
8.8.3 坏习惯 120
8.8.4 不可破译的加密 121
8.8.5 不可破译密钥序列的生成 121
8.8.6 实际使用 121
8.8.7 误用 121
8.9 密钥协商和密钥管理 122
8.9.1 背景 122
8.9.2 密钥协商 122
8.9.3 密钥管理 124
第9章 方法类的合成 125
9.1 群性质 125
9.1.1 密钥群 125
9.1.2 方法的合成 126
9.1.3 T52 126
9.1.4 SZ 126
9.2 复合加密 127
9.2.1 复合加密 127
9.2.2 复台加密的需求 127
9.2.3 插接板 128
9.2.4 ADFGVX 128
9.2.5 ENIGMA复合加密 128
9.3 加密方法的相似性 128
9.4 香农的“和面团法” 128
9.4.1 混淆和扩散 129
9.4.2 Heureka 130
9.4.3 香农 133
9.4.4 分层方法 133
9.4.5 Polybios 133
9.4.6 Koehl 133
9.4.7 其他方法 134
9.5 数学运算产生的混淆和扩散 134
9.5.1 剩余运算 134
9.5.2 方幂 135
9.5.3 双向通信 137
9.5.4 普利尼·厄尔·蔡斯 137
9.6 DES和IDEA 137
9.6.1 DES算法 137
9.6.2 雪崩效应 140
9.6.3 DES的操作模式 141
9.6.4 DES的安全性 141
9.6.5 DES的继承者 142
9.6.6 密码系统和芯片 143
第10章 公开加密密钥体制 145
10.1 对称和非对称的加密方法 145
10.1.1 对称方法 145
10.1.2 非对称方法 146
10.1.3 加密和签名方法 146
10.2 单向函数 147
10.2.1 严格单向函数 147
10.2.2 陷门单向函数 148
10.2.3 效率界限 148
10.2.4 已知单向函数的例子 149
10.3 RSA方法 152
10.4 对RSA的密码分析攻击 153
10.4.1 qi的分解攻击 153
10.4.2 迭代攻击 154
10.4.3 ei较小时的攻击 156
10.4.4 风险 156
10.4.5 缺陷 157
10.5 保密与认证 157
10.6 公钥体制的安全性 158
第11章 加密安全性 159
11.1 密码错误 159
11.1.1 加密错误 159
11.1.2 技术错误 159
11.1.3 可能字攻击 160
11.1.4 填充 161
11.1.5 压缩 162
11.1.6 人为错误 162
11.1.7 使用容易记忆的口令和密钥 162
11.1.8 密钥的规律性 163
11.1.9 冒名顶替 163
11.1.10 通过非法手段获得密码资料 163
11.1.11 通过战争获得密码资料 163
11.1.12 细节泄露 164
11.2 密码学的格言 164
11.2.1 格言1 165
11.2.2 格言2 166
11.2.3 格言3 166
11.2.4 格言4 167
11.2.5 格言5 167
11.3 香农的标准 168
11.4 密码学和人权 169
11.4.1 问题 169
11.4.2 解决方案 170
11.4.3 托管加密标准 170
11.4.4 NSA 171
11.4.5 国家权力 171
11.4.6 出口政策 171
第二部分 密 码 分 析
第12章 穷尽法的组合复杂度 175
12.1 单表简单加密 175
12.1.1 通常的简单代替
(12.2.1中n=1的特例) 175
12.1.2 十选一采样字母表 176
12.1.3 CAESAR加法(12·2·3中n=1
的情况) 176
12.2 单表多字母加密 176
12.2.1 一般的多字母代替 177
12.2.2 多字母齐次线性代替 177
12.2.3 多字母变换 177
12.2.4 换位 178
12.2.5 单表代替总结 178
12.3 多表加密 179
12.3.1 d个字母表的PERMUTE加密 179
12.3.2 d张表的MULTIPLEX加密 179
12.3.3 d张表的艾伯蒂加密 179
12.3.4 d张表的维吉尼亚或博福特加密 179
12.3.5 多表加密总结 179
12.4 组合复杂度注记 180
12.4.1 杰斐逊和巴泽里埃斯的圆柱加密 180
12.4.2 双重换位 181
12.4.3 维吉尼亚加密 181
12.5 穷尽密码分析 181
12.6 惟一解距离 183
12.7 穷尽攻击的实现 184
12.8 机械化穷尽 185
12.8.1 代替的穷尽 185
12.8.2 换位的穷尽 187
12.8.3 蛮力与不变性 187
第13章 语言分析:模式 188
13.1 重码模式的不变性 188
13.2 加密方法的排除 190
13.3 模式查找 190
13.3.1 例子 190
13.3.2 Aristocrats 191
13.3.3 字母脱漏 192
13.4 多字母模式查找 193
13.5 可能字方法 194
13.5.1 对照表 194
13.5.2 Murphy和J奼er 194
13.5.3 F焗rerbefehl 194
13.5.4 代替选取的不变性 198
13.6 模式词例的自动化穷尽 198
13.6.1 单词列表 198
13.6.2 模式查找 199
13.6.3 模式连接 199
13.6.4 搜索空间的减小 200
13.7 Pangrams 200
第14章 多表情形:可能字 202
14.1 可能字位置的非重合穷尽 202
14.2 可能字位置的二元非重合穷尽 204
14.3 德维亚里攻击 206
14.3.1 部分解密 206
14.3.2 完整解密 207
14.3.3 字母组合 209
14.3.4 德维亚里和吉维埃格 210
14.3.5 历史 211
14.4 可能字位置的Z字形穷尽 212
14.5 同构方法 213
14.5.1 Knox和Candela 213
14.5.2 条形方法 214
14.5.3 部分考查 214
14.5.4 可插接反射器 217
14.5.5 对策 217
14.6 隐藏明文—密文泄露 217
第15章 语言分析:频率 219
15.1 加密方法的排除 219
15.2 模式的不变性 220
15.3 直觉方法:频率轮廓 220
15.4 频率排序 222
15.4.1 频率排序的缺陷 223
15.4.2 频率计数 224
15.5 小集团和模式匹配 225
15.5.1 波动 225
15.5.2 小集团 228
15.5.3 例子 228
15.5.4 经验频率 229
15.6 最优匹配 230
15.6.1 平方距离 230
15.6.2 最优化 230
15.7 多字母频率 231
15.7.1 频率表 231
15.7.2 单词频率 233
15.7.3 位置 235
15.7.4 单词长度 235
15.7.5 单词的格式 235
15.7.6 空格 236
15.8 频率匹配的结合方法 236
15.8.1 例之一 236
15.8.2 例之二 238
15.8.3 最后结果 240
15.8.4 匹配一个尾部 241
15.8.5 一个不同的方法 241
15.9 多字母代替的频率匹配 242
15.9.1 可约情况 242
15.9.2 利用隐含的对称性 242
15.10 各式各样的其他方法 243
15.10.1 一个著名的密码 243
15.10.2 注记 244
15.11 再谈惟一解距离 244
第16章 Kappa和Chi 246
16.1 Kappa的定义和不变性 246
16.1.1 常用语言的Kappa值 247
16.1.2 两个结论 247
16.1.3 Kappa的期望值 248
16.2 Chi的定义和不变性 248
16.2.1 一般结果 249
16.2.2 特殊情形 249
16.2.3 两个结论 249
16.2.4 Chi的期望值 250
16.3 Kappa-Chi定理 250
16.4 Kappa-Phi定理 251
16.4.1 Kappa-Phi定理 251
16.4.2 Phi(T)与Psi(T)的区别 252
16.4.3 两个结论 252
16.4.4 Phi的期望值 253
16.5 字符频率的对称函数 253
第17章 周期性检验 255
17.1 弗里德曼的Kappa试验 256
17.2 多字母的Kappa试验 258
17.3 用机器进行的密码分析 259
17.3.1 穿孔卡的使用 259
17.3.2 锯木架 260
17.3.3 Robinson方法 261
17.3.4 比较器 262
17.3.5 快速分析机RAM 262
17.4 卡西斯基试验 263
17.4.1 早期的方法 263
17.4.2 巴贝奇对破解密码的贡献 264
17.4.3 例子 264
17.4.4 机器 266
17.5 建立深度和库尔巴克的Phi试验 267
17.5.1 列的形成 267
17.5.2 Phi试验忧于Kappa试验 268
17.5.3 例子 268
17.6 周期长度的估计 270
第18章 伴随加密表的校准 272
18.1 轮廓匹配 272
18.1.1 使用深度 272
18.1.2 绘制轮廓图 274
18.2 根据已知加密表校准 275
18.2.1 利用Chi 275
18.2.2 条形方法 276
18.2.3 额外的帮助 276
18.2.4 滑尺方法 278
18.2.5 方法总结 278
18.3 Chi试验:伴随字母表的互相校准 278
18.3.1 例子 279
18.3.2 获得中间密文 279
18.3.3 一个附带结果 282
18.4 原始加密表的恢复 282
18.5 克尔克霍夫斯的位置对称性 284
18.5.1 例子 284
18.5.2 Volap焝 287
18.5.3 令人吃惊的例子 287
18.6 剥离复合加密:求差方法 289
18.6.1 剥离 289
18.6.2 位置的对称性 289
18.6.3 使用机器 290
18.7 密本的破解 291
18.8 口令字的恢复 291
18.8.1 弗里德曼 291
18.8.2 再论弗里德曼 292
第19章 泄露 293
19.1 克尔克霍夫斯的重叠法 293
19.1.1 例子 293
19.1.2 位置对称性 294
19.2 用密钥群加密情况下的重叠法 294
19.2.1 纯加密 295
19.2.2 差 296
19.2.3 循环密钥群 296
19.2.4 其他密钥群 299
19.2.5 特殊情况C52- 299
19.2.6 Tunny 301
19.2.7 Sturgeon 306
19.3 复合加密代码的同相重叠法 307
19.3.1 指标的使用 307
19.3.2 孔策 309
19.4 密文-密文泄露 310
19.4.1 密钥的密文-密文泄露 310
19.4.2 化简为明文-明文的泄露 311
19.5 辛科夫方法 314
19.5.1 密钥的直积 314
19.5.2 中间加密 316
19.5.3 还原 318
19.6 密文-密文泄露:双倍法 319
19.6.1 法国 320
19.6.2 波兰I 321
19.6.3 波兰II 324
19.6.4 英国 327
19.7 明文-密文泄露:反馈循环 330
19.7.1 图灵BOMBE 331
19.7.2 Turing-Welchman BOMBE 334
19.7.3 更多的BOMBE 335
19.7.4 计算机的出现 337
第20章 线性分析 339
20.1 线性多码代替的化简 339
20.1.1 例子 339
20.1.2 一个缺憾 340
20.2 密钥还原 340
20.3 线性移位寄存器的还原 341
第21章 猜字法 344
21.1 换位 344
21.1.1 例子 344
21.1.2 移位的列 346
21.1.3 说明 346
21.1.4 代码组模式 346
21.1.5 虚幻的复杂 346
21.2 双重纵行换位 347
21.3 复合猜字法 347
21.3.1 例子 347
21.3.2 实际应用 348
21.3.3 Hassard、Grosvenor、Holden 348
第22章 总结 350
22.1 成功的破译 350
22.1.1 海军侦察破译处和外交部
密码服务处 351
22.1.2 日本的密码分析机构 353
22.1.3 前苏联陆军总情报局 354
22.2 非授权解密者的操作方式 354
22.2.1 魅力与不幸 354
22.2.2 个性 355
22.2.3 策略 355
22.2.4 隐藏的危险 356
22.2.5 解密的层次 356
22.2.6 暴力 357
22.2.7 预防 357
22.3 虚假的安全 357
22.4 密码学的重要性 358
22.4.1 顾虑 358
22.4.2 新思想 359
22.4.3 破解秘密的实质 359
附录A 公理化信息论 361