APP下载

嵌入式系统“多大程度的安全才算安全”

2009-09-05PhilipGiordano

电子产品世界 2009年8期
关键词:嵌入式系统风险评估检测

Philip Giordano

摘要:安全设计是一个动态的、与具体系统相关的过程,且往往很复杂。在探讨安全话题时,最重要的事情就是尽早开始安全需求评估,定义系统安全目标,并经常性地根据系统用途及市场的变化来确定是否最初的威胁已经改变或扩展。

关键词:嵌入式系统;安全系统;风险评估;威胁建模;检测

引言

若没有应用环境,安全就没有意义。嵌入式系统设计师经常误解安全,认为诸如特定的加密算法和安全协议等安全措施只是系统的附加特性。安全是一个过程,而不是永远保持不变的一款产品或一种终极状态。而且,也不能在产品将永远保持安全的假设下,把安全措施简单地加入到一款产品中。设计师应该在设计过程开始的时候,就把安全和其他参数如成本、性能和功耗等一并进行考虑。

在设计的初始阶段,利用安全设计检测威胁

在设计安全解决方案的时候,首先必须做的就是定义一个威胁模型,然后再创建安全策略。一旦评估完成,就能安心地选择具体的技术来实现安全对策。威胁决定应对策略,策略决定设计。

许多设计师都会犯同一个错误,在设计安全系统时没有首先明确和了解可能遇到的真正威胁、以及这些威胁会为他们的终端产品带来的重大风险。相反,他们教条地把分类的安全技术堆在一起,并希望能获得很高的安全性。这样做代价高昂,没有系统能防御所有的安全威胁,在设计中囊括那些没有必要的技术和防御没有实际威胁的风险毫无意义。

即使威胁建模有价值,它本身也存在风险

对于资源受限的设备,嵌入式系统必须在存储容量、功耗、处理能力、上市时间及成本等参数和安全需求之间获取一种平衡。尽管存在资源不足的挑战,通过仔细考虑威胁模型并设计系统使其工作在能满足该模型的可用计算能力限制之内,仍有可能开发出使产品在开放环境中有效工作的系统。

对系统设计师来说,考虑“威胁建模”的原理非常有用。威胁建模是基于一种假设,即每个系统都有值得保护的固有价值。然而,因为这些系统是有价值的,他们对内部或外部威胁也是开放的,这些威胁能够且经常给终端产品带来损害。设计完成后的安全漏洞常常是无法修正的,且危及投入的资金和开发资源,因此需要在设计周期的初始阶段增强对安全评估的需求,并在整个设计周期中进行监测和重复修正。

本质上,我们可以把威胁模型定义为识别一组可能的攻击,以便考虑配合一套彻底的风险评估策略。有了威胁模型,您就能估计攻击的概率、潜在危害和优先级。

威胁建模很难,但是很有必要,威胁建模需要考虑系统是怎样被攻击的。建模完成后,它解决了潜在的系统安全故障隐患,解决了诸如它是如何产生、以及在出现安全故障时发生了什么等问题。通常在市场和成本的压力下,这个评估以一种特别的方式来进行。即通过集思广益征集系统有可能受到的所有攻击(当然,潜在的黑客或许比您更超前一步)。对这个过程来说,一个更加系统化及可重复的方法是使用攻击树,这个概念首先是由Bruce Schneier提出来的。攻击树提供一种将攻击系统的不同方式进行系统性分类的方法。大致来说,就是您以一种树的结构描述了系统所受的攻击,在树结构中节点代表着攻击时间。树的根节点是攻击者的总目标,达到该目标的不同路径则是叶节点。

当正确完成威胁建模时,真正的威胁就被确定下来了。然而,如果弄错了可能存在的威胁的话,其代价将是高昂的。设计师弄错威胁的一个案例是DVD的保护。尽管DVD碟片被加密,密钥也被放在播放机里,只要播放机里包含抗篡改硬件,这种保护方式是没有问题的。但当引入软件播放器时,密钥就被曝露出来,通过反向工程就能恢复密钥,也使任何人都能自由复制和散布任何DVD内容。在这种情况下,它是有缺陷的威胁模型。虽然有安全措施,但是这无法真正解决问题。

仅仅列出一堆威胁是不够的,由于不同威胁的风险不同,您还需要知道每种威胁的风险。威胁建模的下一个步骤是风险评估,这是在任何安全系统设计中的一个至关重要的部分。

风险评估

在风险评估中,不可避免地要讨论一些基础问题,即What、Why以及Who?

What您在保护什么?在设计最初阶段,就需要在您的系统中确定需要保护的关键对象。这些对象可能包括密钥、特殊算法、器件标识符、数字媒体、生物特征识别或产品固件。

Why—您为什么要保护这个设计?您是否需要作为与商业伙伴协议的一部分而保护IP,该商业伙伴只在您承诺在自己设计的产品中能保护其安全才会向您提供IP?您是否需要在一个医疗设备或商业销售点系统中保证机密的用户信息是安全的?您所设计的产品是否将是黑客攻击目标的热门产品?所有这些问题都将决定对有效的安全防范技术的选择。

Who—是谁真正地想要您的IP?当然,攻击者名单是列不尽的。不管他是享受攻击挑战的经验丰富的技术专家,还是意图获取您的IP的大型组织、政府或竞争对手,关键都是要识别攻击者的动机、资源和专有技术,这样您才能设计适当的防御措施。

安全策略

一旦您已经识别出了您的威胁,并且权衡了风险,接下来就该建立安全策略了。安全策略是解决方案背后的战略,而技术仅仅是战术手段。安全策略描述“为什么”,而不是“如何做”。

例如,一个基于FPGA设计的安全策略目标之一也许是“保持配置码流的机密性”,这是系统的目标之一。“如何做”或对策的实施可能会是采用诸如AES等对称密钥加密的方式,对配置码流进行加密以便实现这个目标。

下面总结了如何将这个工作放入到整体的设计流程中。

了解系统的真正威胁、并且评估这些威胁的风险,评估哪些威胁是最危险的并最可能发生。将系统性防御这些威胁所需的安全策略进行描述并归档。这将是一系列的声明,例如:“只有可信任的代码才允许进入到受限制的内存”,或“密码密钥必须保密”。

设计并实施能加强系统安全策略的防范措施。理论上,这些防范措施是保护、检测和同应的混合机制。

防范措施

在系统确定了潜在的攻击,且已定义好安全目标后,就可以考虑实施防范技术来减轻风险。一套有效的安全防范措施包括3个不同的部分,并且它们依次发挥作用:保护、检测、回应。

为了解释保护、检测和回应之间的关系,我们来看一个经典的汽车盗窃案例。偷车贼如果想要偷窃您的新车,他必须首先破坏车门锁。如果窃贼想要开走汽车而不仅是抢劫车内财物,他可能遇到许多安全措施,包括由于没有使用正确的钥匙而导致触发引擎关断开关,或者由于声音、冲击或篡改而激活警报声。甚至车主还会采纳其他额外的、意料之外的安全措施,如Lojack汽车恢复系统,尽管该系统还存在安全漏洞,但也可能把警察直接带到盗车贼身边。在安全设计术语中,门锁和引擎关断机制是保护对策、而警报是检测对策,警察和Lojack系统是回应对策。

这些对策必须基于系统已知威胁来合理地共同工作。如果保护机制被攻破,必须依靠检测和回应机制来抵御攻击。如果回应机制不存在或无效,那拥有检测机制也就没有意义。

在嵌入式系统中,保护机制也许采取加密的形式、反篡改的机制、或采用多种物理安全形式如机械性地搞乱连接处理器、内存装置数据线以及关键元件封装的硬件接入点。例如,媒体播放器一般使用加密法来实施数字版权管理(DRM),以便作为对音乐和电影内容的保护。

检测机制如入侵传感器可被用于检测开路或短路,从而指示发生了企图物理性损害设备的行为。

回应是系统的最后防御。通常,回应机制将关闭或禁用设备,或删除敏感内容以预防发生危害。回应机制也能记录检测到的攻击类型及发生时间,这样就能在受到攻击后提供有用的法庭审核信息。

结语

安全设计就是一个动态的、与具体的系统相关的过程,且往往很复杂。对于本文中谈论的每种安全话题,都有大量研究和专门技术资料供设计师研究和学习。在开始进行设计时,最重要的事情就是尽早开始您的安全需求评估,定义系统安全目标,并经常性地根据系统用途及市场的变化来确定是否最初的威胁已经改变或扩展。

什么时候您才会知道您的系统是足够安全的?澳大利亚新南威尔士Country Energy负责安全的Robbie Sinclair曾经说过:“在您感觉到不够安全之前,安全措施总是过量的。”当您开始您的安全评估时,请给出您对“多大程度的安全才算安全”这个问题的答案。

猜你喜欢

嵌入式系统风险评估检测
“不等式”检测题
“一元一次不等式”检测题
“一元一次不等式组”检测题
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究