书籍详情

密码工程:原理与应用

密码工程:原理与应用

作者:(美)尼尔斯·弗格森,布鲁斯·施奈尔

出版社:机械工业出版社

出版时间:2017-12-01

ISBN:9787111574354

定价:¥79.00

购买这本书可以去
内容简介
  本书深入地探讨特定的、具体的协议,讲述如何设计密码协议,分析做出设计决策的原因,并指出其中可能存在的陷阱,从而帮助读者像密码学家一样思考。本书分为五部分,第 一部分对密码学进行概述,第二到四部分分别讲述消息安全、密钥协商、密钥管理方面的内容,第五部分介绍标准和专利等其他问题。本书可作为高等院校计算机安全和密码学相关专业的教材或教学参考书,也可作为应用密码工程的自学指南。
作者简介
  关 于 作 者Cryptography Engineering: Design Principles and Practical ApplicationsNiels Feiguso的整个职业生涯都是密码工程师。在Eindhoven大学学习数学后,他在DigiCash分析、设计和实现用来保护用户隐私的高级电子支付系统。后来,他担任Counterpane公司和MacFergus公司的密码顾问,分析了数百个系统并参与了几十个系统的设计。他参与了Twofish分组密码设计,对AES做了一些好的初步分析,并参与了现在WiFi所使用的加密系统的研发。自2004年以来,他在微软工作,帮助设计和实现BitLocker磁盘加密系统。他目前在Windows密码小组工作,负责Windows和其他微软产品中的加密实现。Bruce Schneier是国际知名的安全技术专家,被《经济学人》杂志称为“安全教父”。他是14本书的作者,其中包括畅销书《超越恐惧:在一个不确定的世界中明智地思考安全》《秘密和谎言》和《应用密码学》,并发表了数百篇文章和学术论文。他的很有影响力的通讯“Crypto-Gram”和博客“Schneier on Security”有超过25万读者。他是电视和广播电台的常客,并且他关于安全和隐私问题的言论经常被报纸引用。他曾多次在国会作证,并且曾在多个政府技术委员会任职。他是BT(原英国电信)的首席安全技术官。Tadayoshi Kohno(Yoshi)是华盛顿大学计算机科学与工程系教授。他的研究兴趣是提高当前和未来技术的安全性和隐私性。他在2003年对Diebold AccuVote-TS电子投票机的源代码进行了初步安全分析,并从此将研究领域转向了从无线植入式起搏器和除颤器到云计算的新兴安全技术。他获得了国家科学基金会CAREER奖和Alfred P. Sloan研究奖学金。2007年,鉴于他对应用密码学的贡献,入选《麻省理工学院科技评论》全球青年科技创新人才榜(TR35),是35岁以下的世界顶 级创新者之一。他在加州大学圣迭戈分校获得计算机科学博士学位。Niels、Bruce和Yoshi是Skein散列函数设计团队的成员,该团队是NIST的SHA-3竞赛的参与者之一。
目录
目  录
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
猜您喜欢

读书导航