频道栏目
读书频道 > 安全 > 嵌入式系统安全:安全与可信软件开发实战方法
2.9.3 静态可信根与动态可信根
2015-12-09 14:37:23     我来说两句
收藏   我要投稿
从读者的角度出发,以通俗易懂的语言,结合丰富多彩的实例,详细介绍了嵌入式系统安全开发设计各方面的知识。通过行业标准和实际经验提出切实可行的嵌入式安全方法,这无论对于初学者还是资深开发者来说都具有一  立即去当当网订购

在大多数嵌入式系统中,有一串固件要被执行以建立安全的初始状态,期间TCB会启动、运行并控制系统的安全性。最常见的情况是,CPU会先执行一段小的预先在制造时就烧写在ROM中的引导装载程序。安全的引导有赖于基于硬件的可信根;这种情况下,我们要依赖ROM在生产后不能被修改的事实。而ROM加载器会引导一个功能更多的,驻留在内部Flash中的二级引导加载器。例如,许多基于ARM的嵌入式系统会用到流行的u-boot这个引导加载器。该引导加载器接着会引导主操作系统或系统管理程序,进而由它们启动更高等级的应用程序。

典型的安全引导方法是在上述的引导链中检验每个组件的身份。如果该链的任何一个环节被破坏,则安全的初始状态也是打了折扣的。在第一阶段的ROM加载器中必须预先烧好加密密钥,该密钥将被用来检验下一级引导加载器的数字签名。该密钥可以集成进ROM加载器的映像以成为该加载器本身的组成部分,也可使用一次性可编程熔丝来安装,还可存储一本地的TPM中以提供增强的防篡改保护。硬件可信根必须包括有该初始的验证密钥。第4章将描述数字签名的概念,数字签名通常采用公钥加密来实现。

上述签名密钥被用来检验引导链中第二阶段组件的身份。因此其已知可信的签名应存储在由硬件保护的区域。对二级组件的检验包括其可执行的映像、可信的签名以及第三阶段的签名密钥。该链照此一直传下去,可以无限长。对于某些复杂的嵌入式和移动计算机系统拥有超长的检验链或甚至采用树型的需要检验的组件来组成TCB,也是不少见的。图2.31显示了三级引导序列的例子。当检验链从系统复位开始,并直到所有先于建立运行时稳定状态之前要执行的固件完成检验,该链被称作静态可信根。


 

相反,动态的可信根允许已运行着的系统(该系统也许没有处在已知的安全状态)来完成TCB链的测量,然后部分复位计算机资源以便通过该动态链使系统进入初始的安全状态。动态可信根需要特殊的硬件支持,如Intel的可信执行技术(Trusted Execution Technology,TXT)[19],这种硬件存在于一些基于Intel架构的嵌入式芯片组中。支撑动态可信根发展的主要动力是它可以移除大量的,来自TCB必须用来运行以初始化计算机的引导组件。在基于Intel架构的系统中,BIOS往往是软件中非常大的一块,常用来初始化系统。正因为它是代码量大,单体式的软件块,BIOS可能存在着可被利用的漏洞(事实上这点已被证明了)。通过在BIOS已初始化好硬件之后再执行动态复位(也时也称作延后启动),以去除BIOS执行环境下所有特权,该系统从理论上已减少了TCB并提高了初始处于安全状态的可能性。不幸的是,研究者们已发现已实现的延后启动机制在硬件和软件中存在几个弱点[20],使得在复杂的引导环境里想要获得高等级的可信成为问题。另外,尽管可信计算组织(Trusted Computing Group,TCG)具有标准化的TPM接口[21],针对基于Intel架构计算环境,想要实现动态可信根还不得不进行大量的扩展开发。

关键点 对于安全引导的好消息是,大多数的嵌入式和移动计算系统采用是简单的引导装载程序,这让它们很适合静态可信根方法,并可以在没有特殊硬件的支持下就可实现安全引导。

如果嵌入式系统的安全值得投资,即使是基于PC 的系统也可引入由嵌入式软件安全专家开发的、定制的安全BIOS。读者应当咨询系统软件厂商以理解可用的选项。

在第5章关于休息时数据保护的讨论中,将给出另一个安全引导重要性的另一个例子。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.9.2 安全引导
下一篇:2.9.4 远程认证
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站