欢迎访问学兔兔,学习、交流 分享 !

返回首页 |

计算机科学丛书 密码工程 原理与应用

收藏
  • 大小:46.94 MB
  • 语言:中文版
  • 格式: PDF文档
  • 阅读软件: Adobe Reader
资源简介
计算机科学丛书 密码工程 原理与应用
作者:(美)尼尔斯·弗格森(Niels Ferguson),布鲁斯·施奈尔 著
出版时间: 2017年版
内容简介
  本书深入地探讨特定的、具体的协议,讲述如何设计密码协议,分析做出设计决策的原因,并指出其中可能存在的陷阱,从而帮助读者像密码学家一样思考。本书分为五部分,第 一部分对密码学进行概述,第二到四部分分别讲述消息安全、密钥协商、密钥管理方面的内容,第五部分介绍标准和专利等其他问题。本书可作为高等院校计算机安全和密码学相关专业的教材或教学参考书,也可作为应用密码工程的自学指南。
目  录
Cryptography Engineering: Design Principles and Practical Applications
出版者的话
译者序
前言
《实用密码学》前言
关于作者
第一部分 概述
第1章 密码学研究范围 2
1.1 密码学的作用 2
1.2 木桶原理 3
1.3 对手设定 4
1.4 专业偏执狂 5
1.4.1 更广泛的好处 5
1.4.2 攻击 5
1.5 威胁模型 6
1.6 密码学不是唯一解决方案 7
1.7 密码学是非常难的 8
1.8 密码学是简单的部分 8
1.9 通用攻击 9
1.10 安全性和其他设计准则 9
1.10.1 安全性和性能 9
1.10.2 安全性和特性 10
1.10.3 安全性和演变的系统 11
1.11 更多阅读材料 11
1.12 专业偏执狂练习 12
1.12.1 时事练习 12
1.12.2 安全审查练习 12
1.13 习题 13
第2章 密码学简介 14
2.1 加密 14
2.2 认证 15
2.3 公钥加密 16
2.4 数字签名 17
2.5 PKI 18
2.6 攻击 18
2.6.1 唯密文攻击模型 19
2.6.2 已知明文攻击模型 19
2.6.3 选择明文攻击模型 19
2.6.4 选择密文攻击模型 19
2.6.5 区分攻击的目的 20
2.6.6 其他类型的攻击 20
2.7 深入探讨 20
2.7.1 生日攻击 20
2.7.2 中间相遇攻击 21
2.8 安全等级 22
2.9 性能 22
2.10 复杂性 23
2.11 习题 24
第二部分 消息安全
第3章 分组密码 26
3.1 什么是分组密码 26
3.2 攻击类型 27
3.3 理想分组密码 27
3.4 分组密码安全的定义 28
3.5 实际分组密码 30
3.5.1 DES 30
3.5.2 AES 32
3.5.3 Serpent 34
3.5.4 Twofish 34
3.5.5 其他的AES候选算法 36
3.5.6 如何选择分组密码 36
3.5.7 如何选择密钥长度 36
3.6 习题 37
第4章 分组密码工作模式 39
4.1 填充 39
4.2 ECB 40
4.3 CBC 40
4.3.1 固定IV 40
4.3.2 计数器IV 41
4.3.3 随机IV 41
4.3.4 瞬时IV 41
4.4 OFB 42
4.5 CTR 43
4.6 加密与认证 44
4.7 如何选择工作模式 44
4.8 信息泄露 44
4.8.1 碰撞的可能性 45
4.8.2 如何处理信息泄露 46
4.8.3 关于数学证明 46
4.9 习题 47
第5章 散列函数 48
5.1 散列函数的安全性 48
5.2 实际的散列函数 49
5.2.1 一种简单但不安全的散列函数 50
5.2.2 MD5 50
5.2.3 SHA-1 51
5.2.4 SHA-224、SHA-256、SHA-384和SHA-512 51
5.3 散列函数的缺陷 52
5.3.1 长度扩充 52
5.3.2 部分消息碰撞 52
5.4 修复缺陷 53
5.4.1 一个临时的修复方法 53
5.4.2 一个更有效的修复方法 53
5.4.3 其他修复方法 54
5.5 散列算法的选择 55
5.6 习题 55
第6章 消息认证码 56
6.1 MAC的作用 56
6.2 理想MAC与MAC的安全性 56
6.3 CBC-MAC和CMAC 57
6.4 HMAC 58
6.5 GMAC 59
6.6 如何选择MAC 60
6.7 MAC的使用 60
6.8 习题 61
第7章 安全信道 63
7.1 安全信道的性质 63
7.1.1 角色 63
7.1.2 密钥 63
7.1.3 消息或字节流 64
7.1.4 安全性质 64
7.2 认证与加密的顺序 65
7.3 安全信道设计概述 66
7.3.1 消息编号 66
7.3.2 认证 67
7.3.3 加密 67
7.3.4 组织格式 68
7.4 详细设计 68
7.4.1 初始化 68
7.4.2 发送消息 69
7.4.3 接收消息 70
7.4.4 消息的顺序 71
7.5 备选方案 71
7.6 习题 72
第8章 实现上的问题I 74
8.1 创建正确的程序 75
8.1.1 规范 75
8.1.2 测试和修复 75
8.1.3 不严谨的态度 76
8.1.4 如何着手 76
8.2 制作安全的软件 77
8.3 保守秘密 77
8.3.1 清除状态 77
8.3.2 交换文件 79
8.3.3 高速缓冲存储器 79
8.3.4 内存保留数据 80
8.3.5 其他程序的访问 82
8.3.6 数据完整性 82
8.3.7 需要做的工作 83
8.4 代码质量 83
8.4.1 简洁性 83
8.4.2 模块化 83
8.4.3 断言 84
8.4.4 缓冲区溢出 84
8.4.5 测试 85
8.5 侧信道攻击 85
8.6 一些其他的话 86
8.7 习题 86
第三部分 密钥协商
第9章 生成随机性 88
9.1 真实随机 88
9.1.1 使用真实随机数的问题 89
9.1.2 伪随机数 89
9.1.3 真实随机数和伪随机数生成器 90
9.2 伪随机数生成器的攻击模型 90
9.3 Fortuna 91
9.4 生成器 91
9.4.1 初始化 93
9.4.2 更新种子 93
9.4.3 生成块 94
9.4.4 生成随机数 94
9.4.5 生成器速度 95
9.5 累加器 95
9.5.1 熵源 95
9.5.2 熵池 96
9.5.3 实现注意事项 97
9.5.4初始化 98
9.5.5 获取随机数据 99
9.5.6 添加事件 100
9.6 种子文件管理 101
9.6.1 写种子文件 101
9.6.2 更新种子文件 101
9.6.3 读写种子文件的时间 102
9.6.4 备份和虚拟机 102
9.6.5 文件系统更新的原子性 103
9.6.6 初次启动 103
9.7 选择随机元素 103
9.8 习题 104
第10章 素数 106
10.1 整除性与素数 106
10.2 产生小素数 107
10.3 素数的模运算 109
10.3.1 加法和减法 109
10.3.2 乘法 110
10.3
下载地址