
本书提供了一个关于安全法则、安全薄弱环节以及相关可用技术的概述。通过对真实的系统漏洞案例和出于安全需要的开发实例的讲解,给出了抵消安全风险的有效技术及建议。领域涉及数据保护协议、新兴的嵌入式系统、网络、密码系统、系统体系结构、操作系统和存储技术。本书提供给大家使嵌入式系统更可靠、更安全、更有保障的终极建议;本书展示了对安全法则、安全担忧及相关技术的深刻理解;本书介绍了高效开发安全可靠嵌入式软件的成熟技术;当设计安全可靠的嵌入式系统时,系统架构、操作系统、管理程序、网络、存储以及加密,这些都必须被作为研究课题。这是嵌入式系统和安全从业人员必读的一本书,无论是新手还是专家。
编辑推荐作者简介目录序言文摘
编辑推荐
《嵌入式系统安全:安全与可信软件开发实战方法》提供了一个关于安全法则、安全薄弱环节以及相关可用技术的概述。通过对真实的系统漏洞案例和出于安全需要的开发实例的讲解,给出了抵消安全风险的有效技术及建议。领域涉及数据保护协议、新兴的嵌入式系统、网络、密码系统、系统体系结构、操作系统和存储技术。
作者简介
作者:(美国)戴维·克勒德马赫(David Kleidermacher) (美国)迈克·克勒德马赫(Mike Kleidermacher) 译者:周庆国 姚琪 刘洋 严凤龙
目录
推荐序
译者序
序
前言
第1章嵌入式系统安全绪论 1
1.1什么是安全 1
1.2什么是嵌入式系统 1
1.3嵌入式安全趋势 3
1.3.1嵌入式系统的复杂度 4
1.3.2网络连接 9
1.3.3关键性基础架构对嵌入式系统的依赖 一11
1.3.4复杂的攻击者 12
1.3.5处理器整合 13
1.4安全策略 14
1.4.1绝对安全 14
1.4.2保密性、完整性和实用性 15
1.4.3隔离 15
1.4.4信息流控制 16
1.4.5物理安全策略 16
1.4.6特定应用软件的安全策略 16
1.5安全威胁 17
1.6总结 18
参考文献 18
第2章 系统软件的安全考量 19
2.1操作系统角色 19
2.2多重独立安全等级 19
2.2.1信息流20
2.2.2数据隔离 20
2.2.3损害控制 20
2.2.4周期性处理 20
2.2.5一直激活 21
2.2.6防篡改 21
2.2.7可评估 21
2.3微内核与单内核 23
2.4嵌入式操作系统核心安全要求 25
2.4.1内存保护 25
2.4.2虚拟内存 25
2.4.3故障恢复 27
2.4.4资源保护 27
2.4.5虚拟设备驱动 30
2.4.6确定性影响 30
2.4.7安全调度 33
2.5访问控制与访问能力 34
2.5.1案例分析:安全Web浏览器 35
2.5.2访问控制的粒度与简化 36
2.5.3 白名单与黑名单 38
2.5.4职责混淆问题 39
2.5.5能力与访问控制表 39
2.5.6能力约束与收回 43
2.5.7使用能力系统的安全设计 44
2.6系统管理程序与系统虚拟化 46
2.6.1系统虚拟化介绍 48
2.6.2系统虚拟化应用 48
2.6.3环境沙箱 49
2.6.4虚拟安全设施 49
2.6.5系统管理程序架构 49
2.6.6半虚拟化 52
2.6.7充分利用硬件辅助实现虚拟化 52
2.6.8系统管理程序的安全性 54
2.7110虚拟化 56
2.7.1共享I/O的需求 56
2.7.2仿真技术 56
2.7.3直通技术 56
2.7.4共享IOMMU 58
2.7.5IOMMU与虚拟设备驱动 58
2.7.6微内核中的安全I/O虚拟化 59
2.8远程管理 60
2.9确保TCB的完整性 62
2.9.1可信硬件和供应链 62
2.9.2安全引导 62
2.9.3静态可信根与动态可信根 63
2.9.4远程认证 64
参考文献 65
第3章安全嵌入式软件开发 67
3.1 PHASE的介绍 67
3.2最少实现 68
3.3组件架构 68
3.3.1运行时组件化 69
3.3.2进程与线程 70
3.4最小化权限 71
3.5安全开发过程 71
3.5.1变更管理 —72
3.5.2同行评审 72
3.5.3开发工具的安全性 74
3.5.4安全编码 76
3.5.5软件测试与验证 107
3.5.6开发过程效率 —112
3.6独立专家验证 113
3.6.1通用标准 114
3.6.2案例分析:操作系统保护准则 116
3.7案例分析:HAWS 119
3.7.1最少实现 120
3.7.2组件架构 121
3.7.3最小化权限 122
3.7.4安全开发过程 122
3.7.5独立专家验证 122
3.8模型驱动设计 122
3.8.1 MDD概述 123
3.8.2可执行模型 126
3.8.3建模语言 128
3.8.4 MDD平台类型 132
3.8.5案例分析:数字病理扫描仪 132
3.8.6 MDD平台选择 138
3.8.7在安全关键系统中使用MDD 145
参考文献 146
第4章嵌入式加密 150
4.1简介 150
4.2美国联邦政府加密指南 151
4.3一次性密码本 152
4.4加密模式 160
4.4.1输出反馈 160
4.4.2加密反馈 160
4.4.3带有CFB保护的0FB 161
4.4.4通信流安全 162
4.4.5计数器模式 162
4.5块加密 163
4.6认证加密 165
4.6.1 CCM 166
4.6.2伽罗瓦计数器模式 166
4.7公钥加密 166
4.7.1 RSA 168
4.7.2等效密钥强度 169
4.7.3陷门构建 169
4.8密钥协商 170
4.9公钥认证 172
4.10椭圆曲线加密 174
4.10.1椭圆盐线数字签名 175
4.10.2椭圆曲线匿名密钥协商 175
4.11加密散列 175
4.11.1安全散列算法 176
4.11.2 MM0176
4.12消息认证码 177
4.13随机数生成 177
4.13.1真随机数生成 178
4.13.2伪随机数生成 181
4.14嵌入式系统的密钥管理 183
4.14.1密钥管理——通用模型 183
4.14.2密钥管理案例分析 188
4.15加密认证 197
4.15.1FIPS 140—2认证 197
4.15.2NSA认证 199
参考文献 202
第5章嵌入式系统数据保护协议 205
5.1简介 205
5.2动态数据协议 205
5.2.1广义模式 205
5.2.2选择安全的网络层 209
5.2.3以太网安全协议 210
5.2.4网络层安全协议与安全套接层协议 213
5.2.5网络层安全协议 214
5.2.6安全套接层协议/传输层安全协议 219
5.2.7嵌入式虚拟专用网络客户端 222
5.2.8数据包安全传输协议 223
5.2.9安全外壳协议 224
5.2.10自定义网络安全协议 225
5.2.11网络安全协议加密实现 227
5.2.12安全多媒体协议 227
5.2.13广播安全 231
5.3静态数据协议 236
5.3.1安全存储层的选择 237
5.3.2对称加密算法的选择 238
5.3.3存储加密密钥的管理 241
5.3.4对数据加密解决方案的高端威胁 243
参考文献 245
第6章新兴应用技术 249
6.1嵌入式网络交易 249
6.1.1剖析网络交易 250
6.1.2不安全状态 250
6.1.3网络交易的威胁 251
6.1.4提高网络交易安全的前沿尝试 253
6.1.5可信赖嵌入式交易体系结构 258
6.2汽车安全 260
6.3安卓系统安全 263
6.3.1安卓系统安全回顾 263
6.3.2安卓设备Rooting 264
6.3.3手机数据保护:深度防护的一个实例研究 265
6.3.4安卓沙箱处理方法 267
6.4下一代软件定义无线电 271
6.4.1红黑分离 271
6.4.2软件定义无线电体系结构 271
6.4.3进入Linux 272
6.4.4多域无线电 273
参考文献 274
序言
序终于完成了!一本关于构建安全嵌入式系统的书终于完成了。
从报纸上,几乎每天你都能看到一连串关于泄露和漏洞利用的故事。信用卡信息从数据库中蹦了出来,个人信息从公司服务器中涌了出来。
但如房间中的大象,真正的威胁载体在很大程度上被忽略了。对于世界上的每一台计算机,都有成百上千的嵌入式系统,这些嵌入式系统通过一系列日益增长的通信信道互联。
WiFi、蓝牙、以太网、RFID、FireWire-此类技术数不胜数。智能手机至少有4根天线以及可重新擦写的内存,而且如果遭到入侵,可能成为一种电子的“病毒传播者”。
任何有网络连接的设备都可能成为某种威胁的载体。一个USB牙刷(是的,至少在市场上有一款这样的产品)可能携带生物的和计算机的感染元素。也可以是一个智能鼠标垫(与计算机互连,可以显示自定义图片)。用来展示你所爱的人的可爱照片的无线电子相框,可能拥有一颗邪恶的“心”,因为它正在“毒害”你的邻居的网络。
考虑到目前一些汽车已经配置了线控制动系统。牵引机配置线控转向已经有一段时间了;方向盘只是一个旋转编码器,这样的技术肯定会引入到汽车中。但是消费者希望在工作、娱乐和路上开车时都能连网。对于一个游遍大半个世界的坏家伙来说,只是通过发送TCP/IP数据包就在加州第五号公路(I-5)引起一场灾难性的危机,这样会有多难呢?显然,这一点也不难。研究人员已经能够通过各种载体控制汽车。
美国国土安全部的工程师远程入侵了一台大型的柴油发电机并摧毁了它。Stuxnet病毒表明,一个陈旧的监控和数据采集( SCADA)控制系统可能是一个由政府暗中支持的武器。
SCADA系统控制着发电厂、工厂,当然也会涉及任何工业生产。昆士兰的一个污水处理厂遭到攻击,导致有毒液体大面积泄漏。
当电网变得智能时,又会发生什么呢?至少有一个公司销售的轴承采用了磁场悬挂支撑轴;DSP芯片差不多每秒执行15 000次计算才能让机械平稳运行。而且轴承控制器是通过以太网连接的!协同攻击轴承——就是轴承!——可能使制造业遭受损失。?市场上已经出现联网的烤面包机,也有联网的咖啡机。当1亿美国人在某个星期一的早上醒来,正睡眼朦胧,甚至可能因宿醉而难受,喝过一杯咖啡后完全不起作用,要做的事情将陷入停滞状态。但事实上,他们仍会继续惬意地睡觉,因为某个尼日利亚少年重设了所有的闹钟。
还有另一个安全问题:非恶意的bug。随着嵌入式系统越来越成为文明社会中重要的一部分,任何能够破坏系统可靠性的bug都会成为一个至关重要的安全问题。当监狱自动控制门无法关闭时,监狱就成了酒店,但可不像加州旅馆,因为所有的客人都急着要退房。一项任务如果消耗了太多的资源(如内存)或CPU,它就会阻碍其他活动的运行。交通灯无法变成红灯,而铁路信号一直开着,或ATM的点钞机一直吐钱,无法停下来(有人会这样希望的)。
大多数的嵌入式系统开发人员基本没有接受过安全培训,而且多数不会意识到威胁的存在,从来不知道应该有意识地使用各种技术和技巧使他们的产品更加牢固耐用。本书首次涉及了这样的议题。Dave和Mike Kleidemacher清楚地描述了这些安全问题,并且提出了五项“高可信软件工程原则”指南。需要一份清楚而完整的加密技术介绍,或数据保护的各种细节吗?本书通过丰富的示例对此加以阐述。
很多开发人员放弃了构建一个安全的系统,因为他们认为敌人总是先行一步。而且嵌入式系统不会像计算机一样,能够每隔15分钟升级一次,所以改进的防范措施总是落后于新型的攻击。但Dave和Mike指出,确实有可能构建安全的嵌入式软件。
本书作者认为构建安全的嵌入式系统并不容易。在某些情况下,甚至工具本身都必须经过评估和认可。但是,安全固件将成为国家的当务之急,甚至是国家的一项竞争优势。这本书会给出这些问题的答案。我也希望,该书能够敲响关于安全的警钟。
Jack Ganssle
文摘
版权页:
2009年8月10日,NVD公布了SELinux安全扩展中存在内存泄漏。几天以后,又公布了5个漏洞。这当中的一个——CVE—2009—2692,指出用户可以很轻易地利用这个严重的内核漏洞来完全控制整个系统。这个漏洞竟然在Linux内核中潜藏了8年之久!
(2) Linux更新频率
随着时间的推移,一些关键性的软件组件可以得到保证。通常这些软件相对简单,变化很少(除了可能的漏洞修复),长期部署在各种不同的环境中。然而,Linux内核一直在不断地更新,连更新的方式也不断地变化(例如,无线打补丁(over—the—air patching))。最新的Linux 2.6,更新速度要比之前的版本快得多,并定期将重要的更新添加到内核的稳定分支中。举例来说,Linux开发人员Grep Kroah—Hartman报告说,Linux 2.6.24版本的内核在三个月中每天会增加近5000行代码。为此他感慨道:“这些事情仍然好好地运作着,让人觉得太不可思议了……”
更新的频率一直在加快。Kroah—Hartman报告说,在版本2.6.30的开发周期中,平均每天增加超过12000行代码。从2005年以来,已经有5000多不同的人以平均每小时超过6次变动的速度在修改Linux内核。在Linux 2.6(2.6.0)第一个版本中,内核代码已经超过了500万行;而在2.6.30的版本中,这个数字已经超过了1100万。
Jim Ready是嵌入式Linux供应商MontaVista的创始人,他提供了另一个很好的例子。他讨论了NVD的CVE—2006—1528漏洞,该漏洞已经在Linux 2.6.13版本中得到了修复。为了在发行版本中修复这个漏洞,用户被迫在2.6.10内核上添加了846233行新代码,这也表示了2.6.10和2.6.13两版本之间的变化用。
(3) CVE—2009—2692——一个完全丧失安全的例证
接下来,我们将详细介绍前文提及的严重内核漏洞。一个形式相对简单的程序能够轻易利用这个微妙的漏洞,通过这种情况让读者体会一下应对Linux安全的艰难。如果读者想忽略这部分细节,可直接跳到下一部分。
ISBN | 9787111520078 |
---|---|
出版社 | 机械工业出版社 |
作者 | 戴维·克勒德马赫 (David Kleidermacher) |
尺寸 | 16 |