· 主题 ·

面对嵌入式安全危机

防范网络攻击必须从设备设计和嵌入式安全性开始。

图片由西门子公司Mentor 图形提供。


物联网(IoT)刚刚开始形成,可能有数十亿个启用传感器的设备形成了一个连接网络。这种技术上的巨大变化催生了各种各样的设备,从小型到大型,从简单到复杂。尽管存在差异,但这些设备有一个共同点:网络威胁的可悲漏洞。

最近的经验使开发人员和最终用户重新构造了他们面临的威胁的视图,从而在新的环境中增强了安全性。过去,许多人将网络攻击的目标视为对个人或专有数据的盗用。但是,在过去的几年中,技术人员,企业和政府已经意识到,针对设备本身的攻击同样具有危险性,他们正在采取行动夺取系统控制权并以恶意方式对其进行操作。

 图片由西门子公司Mentor 图形提供。 嵌入式系统安全体系结构的设计必须超出选择正确的处理器和软件的范围。通过采用整体方法,设计师可以考虑产品生命周期的所有方面。在安全性方面,这意味着在静止,使用中和运输中保护数据。 图片由西门子公司Mentor 图形提供。

同时,开发人员和IT员工现在意识到,除了保护网络以确保安全之外,他们还必须做更多的事情。黑客一次又一次地侵入或禁用外围防御。但是,问题并不仅限于此。今天的威胁是多方面的。对网络攻击的仔细观察表明,这些事件中有70%来自外围。面对这些现实,越来越多的开发人员认为网络防御必须从设备开始。

但是,即使这种认识扎根,向安全设备转移和应对安全威胁的步伐似乎也非常缓慢。这不是因为缺乏认识。最终用户不愿为他们认为应该属于产品一部分的安全性买单,这是降低成本的巨大压力。

欣赏差异

在物联网开发中起关键作用的所有组件中,嵌入式系统位居榜首。但是,在实施更高安全性的运动中,这些设备仍处于后台,依靠模糊性来防御网络威胁。但是,最近发生的事件表明,这种方法将不再起作用。

但是,在开发人员将安全措施纳入其嵌入式设计之前,他们必须认识到这些设备与标准PC不同。嵌入式系统通常执行专门的固定功能。使用定制的操作系统(例如VxWorks,MQX或Linux版本);最小化处理和内存使用;并且通常以非常有限的资源运作。

这些因素加在一起,使得标准的PC安全技术不适用于嵌入式设备所面临的挑战。事实是,嵌入式设备所需的安全级别经常会大不相同。这意味着开发人员必须想出适合嵌入式应用程序的方法和技术。

一个很好的起点

开发嵌入式系统安全性的最佳方法是采用整体方法。 “整合安全性的计划应该从产品构想开始,” R的Mike Borza说&Synopsys的D工程师和主要解决方案小组。 “我经常想说安全性应该'扎根,而不是拖延。'”

产品设计师通常会对自己产品的功能和特点有良好的定义。这些描述了产品在应有的状态下应该做什么。网络安全的目标是即使遇到试图改变产品使用的企图,也要使产品保持这种方式运行。因此,开始进行安全计划的一个好地方是识别产品的关键功能和相关数据。通过确定这些目标,设计人员可以制定一组安全目标。这些目标反过来为选择系统设计的关键要素奠定了基础。

“在系统设计的早期阶段,开发人员必须选择能够满足该系统安全目标的系统架构,”西门子业务部门Mentor嵌入式系统部门的高级工程师Arvind Raghuraman说。接下来是选择硬件平台。各种安全要求,例如安全启动,防篡改安全存储中机密的安全管理,安全和非安全软件上下文之间的持久隔离以及加密加速,都对硬件的选择产生了影响。”

一旦开发团队确定了正确的硬件平台,便可以决定有效利用硬件提供的功能的软件体系结构。

增强现有设计

这些做法对设计新系统的开发人员非常有效,但是有一个陷阱。大多数物联网产品不是新设计。增强现有产品的工程师受到以前的设计和实现选择的限制。许多现有设计都有数百甚至数千个潜在的安全漏洞。因此,理解和解决这些问题至关重要,但是第一步通常被忽略。

“保护现有系统的第一步是了解它们的漏洞,” 修复实验室的联合创始人兼首席执行官Terry Dunlap说。 “像我们的离心机平台这样的工具可以自动分析固件并提供全面的漏洞报告,是一个很好的起点。从头开始建立安全性对于新产品设计来说非常有用,但是修复现有产品中巨大的安全漏洞对大多数工程师而言意义重大。”

加密的局限性

整个设计过程中的最大挑战之一是确定使用哪种技术以及如何最好地实施它们。但是,某些基本安全技术应随资源来支持任何设备中。

其中最基本的也许是加密,它只是将数据转换为代码以防止未经授权的访问的过程。设计人员使用该技术来保护通过不安全的网络(如Internet)传输到另一个系统的数据的机密性。

为此,嵌入式系统传统上使用启用加密的通信协议,例如TLS(传输层安全性),SSH(安全外壳)和IPSec(互联网协议安全性)。如今,大多数嵌入式平台都将这些协议作为标准组件包含在内。但是,当前的安全标准需要更多的加密。今天,开发人员使用该技术来确保安全的数据存储,验证代码以进行安全的引导和安全的固件更新并实现强大的设备标识。

图标实验室的Floodgate安全框架包括安全启动工具,该工具使用经过签名且经过验证的代码来创建加密签名的图像,以将其加载到设备上。集成到设备上引导加载程序中的安全引导过程会验证映像。这样可以确保仅允许OEM签署的经过身份验证的代码在设备上运行。图片由Icon Labs提供。 图标实验室的Floodgate安全框架包括安全启动工具,该工具使用经过签名且经过验证的代码来创建加密签名的图像,以将其加载到设备上。集成到设备上引导加载程序中的安全引导过程会验证映像。这样可以确保仅允许OEM签署的经过身份验证的代码在设备上运行。图片由Icon Labs提供。

但是,加密可以执行的操作受到限制。 “我认为,当这些技术被视为灵丹妙药时,如果没有仔细考虑它们如何适应设备的整体安全状况,这些技术将是无效的,”联合创始人Alan Grau说&Icon Labs的CTO。 “例如,我们看到了使用TLS(传输层安全性)实现安全Web界面的系统,但仍启用了不受保护的telnet端口。”

另一个常见缺陷涉及加密密钥的管理。 Borza说:“所有加密都取决于一个秘密密钥,并且该密钥必须保持秘密,以使加密数据保持机密。” “即使对加密一无所知,这对于任何人来说都是显而易见的。但是,通常不会发现将密钥写入磁盘文件中或将其嵌入程序中,而对手可以很容易地找到它们。”

由于这些问题,加密在确保嵌入式系统安全中可以发挥作用,但是必须将其视为防御的几层之一。

控制访问

另一种安全性构建技术是身份验证。使用此过程,系统会在授予对系统资源的访问权限之前验证用户的身份或敏感数据的来源和完整性。

这是嵌入式系统的网络防御中最重要的元素之一。 “安全通信的关键组成部分涉及验证通信中的对方是他们声称的身份,” Grau说。 “在没有这种保证的情况下,系统很容易遭受欺骗性身份和中间人攻击。基于证书的身份验证提供了密码学上强的身份验证,对于此过程至关重要。”

身份验证通常始于使用加密哈希函数。当系统传送数据时,哈希函数会计算固定长度,称为“摘要”。该值是数据唯一的,可以指示何时对消息进行了更改。它提示接收系统识别修改以及更改的来源。数据中的单个位更改会产生不同的结果。因此,哈希函数提供了一种计算任何数据的唯一代表的方法。

接下来,系统使用创建数字签名的非对称算法,使用私钥对哈希值进行加密。

整个过程如下所示:传输数据的系统计算数据的哈希值或摘要,然后使用系统的私钥对哈希值进行加密。此消息称为数字签名。然后,发送系统发送一个包含数据的文件和一个包含加密哈希的消息。接收系统可以通过计算散列并解密随附的消息来验证消息。如果解密的消息与哈希匹配,则接收系统知道该消息来自标识的发件人。

在增强现有产品时,设计工程师必须应对以前的设计和实现选择,其中可能涉及许多潜在的安全漏洞。设计人员在确保现有系统安全方面的第一步是了解漏洞。 修复实验室的Centrifuge平台之类的工具可通过自动审查和验证固件是否存在漏洞来帮助解决此问题。图片由ReFirm Labs提供。 在增强现有产品时,设计工程师必须应对以前的设计和实现选择,其中可能涉及许多潜在的安全漏洞。设计人员在确保现有系统安全方面的第一步是了解漏洞。 修复实验室的Centrifuge平台之类的工具可通过自动审查和验证固件是否存在漏洞来帮助解决此问题。 图片由ReFirm Labs提供。

这种身份验证要求IoT设备具有足够的资源来处理加密操作。随着处理器速度的提高和低成本安全协处理器的可用性,与几年前相比,现在这已经可以以更低的成本实现。

Raghuraman说:“使用基于公钥的身份验证实现的数字签名基础结构是满足系统身份验证需求的绝佳工具。” “硬件加密加速单元提供硬件加速,使软件能够以最佳方式实现哈希和功能验证。”

设计人员还可以使用两个系统都知道的共享密钥来实现身份验证的另一种选择。与使用公钥密码术相比,此方法所需的计算更少。因此,当必须验证大量数据时,效率更高。

无论采用哪种方法,身份验证都会以多种方式发挥作用。例如,嵌入式设备可能必须在系统启动时对系统固件和关联的配置数据进行身份验证,或者在嵌入式设备上运行的应用程序可能必须对传递给系统的软件和安全更新的源进行身份验证和验证,然后才能使用它们。

在某些情况下,嵌入式设备本身必须证明其起源于与之交互的基础结构。例如,尝试与后端系统交互的启用了IoT的嵌入式设备。在此,嵌入式设备必须向后端系统提供其凭据,以便可以通过在云基础架构上维护的注册表使用其身份进行身份验证。

鉴于其有效性和广泛的适用性,身份验证是嵌入式安全性的关键要素。 “对消息,数据文件和可执行文件进行签名和身份验证是确保数据完整性的核心,” Borza说。 “如果数据具有完整性,则可以知道是谁发起的,并且正是发送的数据。”

右脚下车

查看工作中的加密和身份验证的最佳方法之一是检查安全启动和安全固件更新功能。

在第一种情况下,市场提供了几种类型的安全启动,以减轻启动过程中的漏洞。通用版本可以验证引导加载程序是否已使用系统固件中的数据库授权的加密密钥进行了签名。通过适当的签名验证,安全启动可以防止替换和执行更改后的启动代码。这样可以防止黑客在处理器初始化后将恶意软件或安全后门引入处理器。

另一种方法是在设备加载时限制其可变参数。该技术试图防止黑客将错误的命令或安全后门代入设备设置中。

第三种技术旨在保护嵌入式系统的启动代码。目的是防止黑客访问代码以克隆系统,插入恶意软件或开发禁用系统的方法。

经过数字签名的启动文件为防止某些最广泛的启动加载攻击提供了重要的一步。但需要说明的是:即使安全启动没有遭到某些黑客攻击,但如果验证模块未集成到嵌入式处理器中,它仍然很容易受到验证过程中的攻击。

代码和安全更新使用许多与安全启动相同的技术。基于公钥的更新数字签名提供了一定的安全性。但是,在实施软件更新基础结构时,设计人员还必须考虑在更新未按预期进行的情况下系统将如何响应-可能是由于新固件浮出水面的运行时错误所致。在这种情况下,系统应该能够回滚到已知的运行固件。

资源分区

利用一般访问控制的另一种安全措施是特权分离。设计人员通过仅分配任务,过程或用户来执行其分配的任务所需的特权,从而实现此网络安全原则。这样可以确保获得子系统访问权限的黑客无法访问系统的其余部分。从本质上讲,黑客受到他们所入侵子系统的特权的限制。

赛普拉斯的PSoC 6 MCU提供了三个基于硬件的隔离级别。其中包括使用专用的Arm Cortex-M0 +内核为受信任的应用程序提供隔离的执行环境;托管信任操作和系统服务根源的安全元素功能;和隔离每个受信任的应用程序。这三个隔离级别旨在减少威胁的攻击面。图片由赛普拉斯半导体公司提供。 赛普拉斯的PSoC 6 MCU提供了三个基于硬件的隔离级别。其中包括使用专用的Arm Cortex-M0 +内核为受信任的应用程序提供隔离的执行环境;托管信任操作和系统服务根源的安全元素功能;和隔离每个受信任的应用程序。这三个隔离级别旨在减少威胁的攻击面。图片由赛普拉斯半导体公司提供。

特权分离可以通过以下两种方法之一来实现。设计人员可以在软件中实现分隔,将程序分为多个部分,这些部分限于执行特定任务所需的特定特权。或者他们可以在硬件中实现隔离。

在软件方面,大多数操作系统都对系统中运行的进程的访问权限进行一定程度的控制。 “某些系统,例如SELinux,可以对安全策略进行细粒度控制,” Grau说。 “无论采用何种实施方式,都应使用特权分离来限制对敏感且对安全性至关重要的数据和流程的访问。这样可以减少黑客可利用的攻击面,并限制黑客破坏设备的损失。”

值得信赖的平台

设计人员还可以利用硬件来实现安全性。实际上,可以将许多硬件安全方法整合到物联网设计中。

一种这样的技术是可信平台模块(TPM),它本质上是一个安全协处理器。最近,TPM接受了许多新应用程序,包括使用组件配置状态的加密哈希值进行平台完整性验证;有关安装TPM的系统状态以及加密密钥生成和管理的远程证明。在系统操作的预引导和引导阶段,这些模块被证明是最有用的,可确保硬件和底层系统软件和固件具有完整性。

“在嵌入式世界中,传统上仅在专用应用程序(例如,销售点终端)中看到TPM。但是随着对安全系统的需求变得越来越大,并且人们意识到嵌入式系统传统上在安全性方面做得很差,我们看到越来越多的应用程序将TPM作为必不可少的组成部分。” Raghuraman说。

成本问题

为产品选择正确的技术之类的任务似乎令人生畏,但真正的挑战通常出现在底线。赛普拉斯半导体公司MCU业务部门高级营销总监Jack Ogawa说:“产品团队在确定他们要设计的嵌入式系统需要哪种安全措施时,需要做出成本与收益的决定。”

在这一点上,一些开发人员放弃了许多安全考虑,将其抛在脑后。设计人员通常很快就会忽略安全性,因为其成本太高而无法包含在产品中。如今,这似乎是嵌入式安全的最大障碍。

“确实存在与安全性相关的成本,尽管我也认为这些就像保险一样,” Borza说。 “没有成功的攻击对企业有何价值?这很难衡量。但是,衡量成功攻击的成本很容易,而且这些成本通常很高,远远超出了首先阻止攻击的成本。”

更多信息

赛普拉斯半导体

图标实验室

Mentor嵌入式系统部门,西门子业务

修复实验室

新思科技

分享这篇文章

订阅我们的免费杂志, 免费的电子邮件通讯或两者兼而有之!

加入超过90,000名工程专业人员的行列,他们将在新闻发布后立即获得最新的工程新闻。


关于作者

汤姆·凯文(Tom Kevan)的头像
汤姆·凯文

汤姆·凯文(Tom Kevan)是一名自由撰稿人/编辑,专门从事工程和通信技术。通过联系他 (必须启用JavaScript才能查看此电子邮件地址)。.

关注DE
#17654