世界上并没有一个包打天下的解决方案,也没有百分之百安全的安全系统。然而,安全系统不必是完美无缺的解决方案,也不需要全然牢不可破以至于失去应用价值。安全系统只要足够安全即可,也就是在它所保护的数据的预期有效时间内,它能够抵御可能的敌人进攻即可。
若没有应用环境,安全就没有意义
嵌入式系统设计师经常误解安全,认为诸如特定的加密算法和安全协议等安全措施只是系统的附加特性。安全是一个过程,而不是永远保持不变的一款产品或一种状态。而且,也不能在产品将永远保持安全的假设下,把安全措施简单地加入到一款产品中。当今设计师面临的棘手难题*就是明确嵌入式系统的安全要求和目标。有助于解决这一难题的方法很多,本文所讨论的方法涉及威胁建模和风险评估,目的是帮助设计师定义安全策略,然后设计对策来实施安全策略。
安全设计—在设计的初始阶段检测威胁
在设计安全解决方案的时候,首先*须做的就是定义一个威胁模型,然后再创建安全策略。一旦评估完成,就能安心地选择具体的技术来实现安全对策。威胁决定应对策略,策略决定设计。
许多设计师都会犯同一个错误,在设计安全系统时没有首先明确和了解可能遇到的真正威胁,以及这些威胁会给他们的终端产品带来的重大风险。相反,他们教条地把各类安全技术堆在一起,并希望能获得很高的安全性。这样做代价高昂,没有系统能防御所有的安全威胁,在设计中囊括那些没有必要的技术和防御没有实际威胁的风险毫无意义。
威胁建模—价值意味着风险
对于资源受限的设备,嵌入式系统*须在存储容量、功耗、处理能力、上市时间及成本等参数和安全需求之间获取一种平衡。尽管存在资源不足的挑战,通过仔细考虑威胁模型并设计系统使其工作在能满足该模型的可用计算能力限制之内,仍有可能开发出使产品在开放环境中有效工作的系统。
对系统设计师来说,考虑“威胁建模”的原理非常有用。威胁建模是基于一种假设,即每个系统都有值得保护的固有价值。然而,因为这些系统是有价值的,他们对内部或外部威胁也是开放的,这些威胁能够且经常给终端产品带来损害。设计完成后的安全漏洞常常是无法修正的,且危及投入的资金和开发资源,因此需要在设计周期的初始阶段增强对安全评估的需求,并在整个设计周期进行监测和重复修正。
本质上,我们可以把威胁模型定义为:“识别一组可能的攻击,以便考虑配合一套彻底的风险评估策略。”有了威胁模型,我们就能评估攻击的概率、潜在危害和优先级。
当正确完成威胁建模时,真正的威胁就被确定下来了。然而,如果弄错了可能存在的威胁的话,其代价将是高昂的。设计师弄错威胁的一个案例是DVD的保护措施。尽管DVD碟片被加密,密钥也放在播放机里,只要播放机里包含抗篡改硬件,这种保护方式是没有问题的。但引入软件播放器时,密钥会曝露出来,通过逆向工程就能恢复密钥,也使任何人都能随便复制和散布任何DVD内容。
1、风险评估
仅仅列出一堆威胁是不够的,由于不同威胁的风险不同,因此还需要知道每种威胁的风险。威胁建模的下一个步骤是风险评估,这是在任何安全系统设计中的一个至关重要的部分。风险评估的一些基础问题,即“保护什么”、“为什么要保护”和“防范的对象是谁”,应在设计周期的初阶段厘清。尽早采取表1所示的措施,将有助于您选择有效、安全的防范技术和防御策略。
2、安全策略
识别出威胁,并权衡风险后,接下来就该建立安全策略了。安全策略是解决方案背后的战略,而技术仅仅是战术手段。安全策略描述“为什么”,而不是“如何做”。
例如,基于FPGA设计的安全策略目标*也许是“保持配置位流的机密性”,这是一个系统目标。“如何做”或对策的实施可能是采用诸如AES等对称密钥加密的方式,对配置位流进行加密以便实现这个目标。
整体的设计流程总结如下:
了解系统的真正威胁,并评估这些威胁的风险。
评估哪些威胁是危险的,并且可能发生。
将系统性防御这些威胁所需的安全策略进行描述并归档。这将是一系列的声明,例如:“只有可信任的代码才允许进入受限制的内存”,或“密码密钥*须保密”。
设计并实施能加强系统安全策略的防范措施。理论上,这些防范措施是保护、检测和回应的混合机制。
3、防范措施
在确定了潜在的攻击,且已定义好安全目标后,就可以考虑实施防范技术来减轻风险。一套有效的安全防范措施包括三个不同的部分:保护、检测、回应。这些对策*须基于系统已知威胁来合理地共同工作。如果保护机制被攻破,*须依靠检测和回应机制来抵御攻击。如果回应机制不存在或无效,那拥有检测机制也就没有意义。