当前位置:首页 > 嵌入式 > 嵌入式新闻
[导读]正如一名安全专家所言,系统安全不是一件事情,而是一个过程。在我们这个链接越来越广泛的环境,也是越来越充满敌意的环境中,安全这一过程——是层出不穷的新攻

正如一名安全专家所言,系统安全不是一件事情,而是一个过程。在我们这个链接越来越广泛的环境,也是越来越充满敌意的环境中,安全这一过程——是层出不穷的新攻击,导致带来新对策,然后是更创新的新攻击,如此不断重复。就像冷战时期的军备竞赛削弱其交战国的资源,对于有漏洞的系统,解决新挑战占用的资源会越来越多。

在数据中心,即使有大量的可互换资源,这也是很大的问题。但是在嵌入式系统中,资源是专用的,而且通常限制很严,安全可能会成为不可逾越的障碍。物联网(IoT)已经渗透到发达国家的关键基础设施中,这些系统对安全的需求的确关乎生死,非常重要。因此,对于嵌入式系统设计人员而言,理解这种不断发展的挑战非常重要,对于数据中心架构师而言同样如此。

安全的三个层面

我们可以把系统安全分成三个不同的层面。这种划分既是物理的——每一层面以系统的不同领域为重点,也是按时间顺序的,因为设计人员会逐级前进,以便逐步深入的理解问题。一种军事类比很好的解释了这些层面(图1)。

图 1.十一世纪Bamburgh城堡清楚的解释了现代系统安全背后的原理。

 

这些层面是周界完整性、内部安全,以及主动安全。简言之,周界完整性方法旨在防止对整个系统进行攻击,就像城堡周围的城墙。内部安全措施是为了一旦攻破系统后减小其损害,就像城墙上的城楼,迷宫似的街道,最终,城堡击退了进入城墙的攻击者。主动安全是找到并隔离对系统的攻击,非常像是在城墙内外巡逻的城堡卫士,设下埋伏,突袭敌人,或者破坏敌人的地道。

在真实的世界中,系统安全的三个层面互相交织,彼此依赖,就像城堡城墙需要守备部队,而没有城墙,守备部队会非常庞大。我们将分别研究每一层面——部分是为了更清晰,部分是因为倒霉的系统设计人员在前一层面失败后才打算实现下一层面。这就像一个军阀构筑了不设防的城墙,当城墙被攻击时,再修建城楼,招募市民,发给他们棍棒和杈子,只有当第二次被击败后,才会雇佣、武装、训练士兵和军官。

保卫周界

保护您的财产最直观明显的方式是围绕它构筑城墙。事实是,这几乎从未成功过——不论是在军事历史上还是系统安全上,却一直受到政治家或者系统设计人员的关注。因此,我们应该从了解周界完整性开始:它能够应对的攻击,它所采用的技术,它所需要的资源。

对系统进行攻击的一个基本形式是假身份。攻击者假装成别的人,有权进行数据读写操作,执行代码或者更新您的系统。堵住这种攻击需要身份认证:要求相应的一方证明自己的身份,通常采用密码或者证书。

但是任何监视这种会话过程的人都很容易复制密码。因此,系统通常采用变化的码型对密码加密,以防止中间有人窃取加密后的密码,并重用。

但这还是不够。这个中间人通过观察就能够窃取宝贵的数据,或者他能够破坏发送给系统的代码和数据。因此,在很多应用中,重要的是对整个会话进行加密,而不仅仅是密码。通常在互联网的传送层安全(TLS,接替了安全套接字层(SSL))或者通过IPsec来实现这一层面的安全。原理上,假设密钥没有被偷走,这些协议保护了整个会话内容不会被读取或者篡改。然而,这两者之间有明显的不同。

TLS是熟悉的https安全网络连接的基础,运行在第4层,在传输控制协议(TCP)之上。相应的,可以在浏览器等应用程序中实现。IPsec运行在第3层,必须由操作系统内核提供支持,因此,并不像TLS应用得那么广泛。今天,IPsec主要应用在企业虚拟私有网络(VPN)中,即使它的确比TLS安全得多。第三,MACsec是功能更强大的以太网数据流加密方法,对整个数据包进行加密,因此,中间人丝毫不会知道源、目的、格式和内容。但是,MACsec要求对以太网接口进行较大的硬件改变,应用不太广泛。

身份认证和加密都有一个逻辑问题:怎样让通信对方首先获得密钥,而不会被别人偷走?答案是常用的公开密钥密码。这一计算量巨大的过程使用了一对密钥,都来自一个大随机数。一个密钥是公开的——您可以将其与任何人分享。另一个是私有的,其拥有者一定要保护好它。

对于身份认证,服务器可以使用私有密钥加密证书(或者其哈希序列),把加密后的消息发送给客户端。然后,任何客户端都可以采用匹配的公开密钥对消息解密,验证服务器是私有密钥的实际拥有者。如果解密后产生了有效的证书或者哈希序列,那么,数据一定是采用匹配的私有密钥进行了加密。还会详细的进行记录,记录证书的拥有者,进一步提高了可信性。然而,服务器操作人员并不太在意保存好所记录的证书,因此,客户端如果能够解密消息,那么大部分时间都会正常工作。

对于数据流本身的安全,过程正好相反。任何人都可以使用公开密钥对消息加密,但是只有持有匹配私有密钥的人能够对其解密。

这种不对称的方法避免了在服务器和客户端首先要传送未加密密钥,不需要这样就能够传送信息。但是,加密和解密任务非常艰巨。Barco Silex的Gregory Baudet说,采用加密软件对一个短数字签名进行检查时,在Cortex®-M3微控制器上需要2.7秒。对于数据中心这并不是一个大问题,您可以使用一个Xeon内核解决这一问题。但是在相互连接的嵌入式系统中,每秒可能需要接收数百个签名,如果不进行硬件加速,几乎就不可能实现。即使是在客户端服务器环境下,TLS只使用公开密钥加密方法来保护密钥组的交换,然后,应用在效率更高的对称密钥算法中,以保护实际消息。

如果您的通信方——或者互联网传输路由上的某一跳,被感染了,那么这些都不能保护您——如果您使用TLS。因此,周界完整性方法会含有最后一道防线,扫描输入解密后的消息,确定是否有入侵。在数据中心,这种方法会对已知病毒相关的模式进行穷尽式搜索。在嵌入式系统中,消息指令表数量有限,任务可以是简单的规则检查。取决于复杂度和速度,这种防火墙可以是从仔细的保护软件任务直至专用硬件规则表达式引擎等各种方法。

内部安全

纷乱的军事历史最终只剩下破败的城墙和堡垒。而今天,可怕的安全入侵事件越来越多,数据中心架构师也开始认识到仅有周界防护是不够的。他们的系统必须能够对抗已经存在于周界内部的攻击。嵌入式系统也更是如此。

很自然的认为内部威胁是穿过系统外部防护而在内部发起的攻击。但是,正如Edward Snowden所揭示的,人们的注意力已经转向了另一场景:内部人的威胁。如果一个目标的价值比较高——很多工业、基础设施和交通系统都是此类,最简单、最可靠的攻击是由内部人进行的——一个授权用户。通过密码或者身份认证,他们可以自由的进入系统,内部人已经旁路了第一条防线,可以直接置入恶意软件或者偷窃数据。逐渐地,这些内部人发起的威胁成为内部安全所关注的重点。

内部安全的中心任务在于如何防止未授权代码的执行。这一任务相应的从安全启动过程开始。最终,系统在执行任何程序之前,必须依靠防篡改硬件对启动代码进行身份认证。相应的,启动代码在把控制权交给操作系统代码之前,必须对其进行身份认证(图2)。通常,这一过程会包括建立经过身份认证的可信模式,管理密钥存储访问、地址空间访问的授权代码,以及应用代码的身份认证。

图 2.需要安全事件链才能启动一个安全系统。

 

这些任务中最敏感的是保护密钥。通常,在数据中心,密钥存储、密钥管理和密码加速过程都会驻留在专用硬件安全模组中,这些模组与服务器相分离。这些模组提供了访问控制、加密和防篡改功能。在嵌入式系统中,密钥存储的问题要难得多。一方面,成本、体积和功耗限制导致很难实现硬件安全模组。另一方面,有可能会给财产甚至生命带来风险。嵌入式系统可能在物理上受到攻击者的控制,因此,必须保护密钥存储,不受侧面通道的攻击和物理篡改,而不仅仅是未授权读申请。

各种约束可能迫使嵌入式系统开发人员将密钥和加密代码存储在系统处理器地址空间中的某些地方。这一选择着重说明了安全启动过程的重要性,以及可信操作模式的重要性,只有可信操作模式能够唯一的访问系统中所有的存储管理单元。自然地,同样重要的是不允许任何设备上的不可信模式直接访问物理存储器。

这些措施不仅使得保护密钥成为可能,而且还支持实现其他各类内部安全特性。如果一项任务只能通过可信代码初始化并准许访问存储器,那么系统就有机会很好的防止大部分恶意软件的攻击。但总是有可能在某些地方、某些情况下攻破防线。

最后一条静态防线是对存储中的数据进行加密——这很显然,但是令人惊奇的是,对性能或者利润的兴趣导致忽略了这条防线。如果对存储的数据进行了加密,尝试读取或者写入的任何任务必须提供有效的密钥。因此,即使一名攻击者能够启动一次恶意软件攻击,他仍然需要获得授权任务的存储加密密钥。即使介质——例如闪存、硬盘或者磁带等,被物理盗窃了,存储加密也有保护数据的优点。

但是也有挑战。解密增加了存储访问延时——特别是在软件中进行解密的情况。更差的是,软件解密任务很容易成为攻击者的目标。因此,出于这些原因,有必要采用基于硬件的加密。

还有一个问题是把加密墙放在哪里。在硬盘和DRAM之间是很显然的选择。而闪存越来越多的用于硬盘高速缓存,甚至是主存储器,那么,您真的希望在共享的非易失存储器中对文件进行解密吗?在最安全的系统中,处理器SoC本身可以存放密码,因此,即使是在DRAM中对数据加密,那么最好还是在片内高速缓存中。对于SoC设计和系统性能而言,这一方法最有意义。

最后,还有威慑。即使不能完全保护系统不受内部威胁的攻击,也有可能让内部人觉得攻击会非常危险。最终,系统能够跟踪用户或者任务的活动过程,特别是启动新任务或者把数据输入输出系统等关键事件。然后,会通过算法或者通过人员查看,来审查这些记录,以便发现可疑的活动。审查并不能阻止攻击成功。但是,很多内部威胁需要不断的尝试找到系统防护的薄弱之处。审查能够使得任何攻击都不太可能很快成功,对于攻击者而言这要冒很大的风险。

这种对系统行为的监督并不一定要离线或者事后进行。您可以设计一个系统监视其自己的行为,甚至对可疑的行为采取反制措施。这种想法促使我们进入安全的第三层,主动方法。

主动安全

到目前为止,我们所讨论的措施实际上都是被动的。要么试图阻止对系统资源的访问,要么使得这些资源对于入侵者而言是不可用的。但是,还有采用了完全不同的策略的第三类防护:如果已经出现了安全破坏事件,那么,想办法反击。我们可以把这类措施分成三类:擦除、监视,以及机器学习。所有这三类并非源自安全,而是来自可靠性和随机故障探测领域。把入侵当做是硬件差错来进行查找。

擦除的想法非常简单:如果系统的某一状态对于安全非常关键,那么,经常性的读取它,采用哈希序列对其正确性进行验证,如果有必要,还可以给出状态报警或者纠正状态。这类擦除方法可以选用启动ROM、在CPU安全模式中执行的任何代码、身份认证密钥、MMU和高速缓存TLB输入,以及决定FPGA功能的控制RAM等。如果不是采用单独的硬件进行擦除,隔离篡改恶意软件,则很难避免出现无限回归问题。

我们的第二类是行为监视:观察系统,以确保它没有出错。在实际中,与数据中心相比,这一方法更适用于嵌入式系统,能够更清晰的定义不正确的行为,而在数据中心,主机并不清楚客户代码的预期行为。

某些可靠性非常高的系统中所使用的一个极端的例子是三模组冗余(TMR),请参见图3。这里,您有同一行为的三种模组——但是,理想情况是采用不同的实现,它们运行在锁步状态下,对每一步骤的结果进行投票。一名攻击者将不得不导致两种不同的模组在同一步骤上获得同样错误的结果,才能影响系统的行为。

图 3.三模组冗余方法对比一个模组三种独立实现的结果,对正确状态进行多数投票。

 

TMR要求三个完整的模组附加上对比、投票和错误恢复硬件。如果没有安全硬件,对投票或者恢复过程的攻击能够避开冗余所提供的保护功能。您可以只使用两种模组以降低成本,但是,系统就只能探测错误,而无法随时对其进行纠正。

相关的方法能够进一步降低成本。并没有采用冗余模组,而是建立一个状态机,在每一关键步骤,把系统状态和一组全面定义了可接受行为的规则进行对比。这一方法能够大幅度降低嵌入式系统的成本和功耗,这些系统能够简明的定义可接受的行为。这可以用在功能安全系统中,这些系统能够定义不安全的活动。但是,在实际中,可能会很难找到足够的规则。

这就给我们带来了第三种可选方法——目前还在试验中:深度学习。把系统的关键状态变量连接至深度学习神经网络。同时采用正常工作、已知攻击和随机注入故障来训练网络。您可能一直不会知道最终网络是怎样工作的,也不能确定网络是否正常运行。但是在复杂系统中,有可能超出人类设计出的规则。毫无疑问,训练过的网络本身必须能够安全的不受攻击。

这些主动措施带来了一个关键问题:我们应该在哪一层面上应用它们?我们要检查的模组应该是一个寄存器,还是处理器中的一个功能模块,SoC中一个完整的处理器,或者整个嵌入式系统? 模组粒度越精细,成本越高,具有讽刺意味的,也越难探测到某些攻击。一个工作良好的CPU能够很好的执行恶意软件。在全系统层面上进行检查会更经济一些,但是,很难定义可接受行为的范围,在某一攻击对系统造成内部损害之前很难发现它。

总结

我们提供了三类防护:周界完整性、关键资产安全,以及主动监视。从外面的城墙到城堡据点直至巡逻士兵,我们所提供的与中世纪军事指挥官的非常相似。随着硬件功能虚拟化所支持的云数据中心越来越多的执行安全关键任务,这些理念将会创新的出现在服务器、网络和存储硬件中。嵌入式系统在任务中越来越关键,相互连接也越来越多,这些理念也会在嵌入式系统中实现。

准备好了吗。这是您的城堡。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

【2024年3月25日,德国慕尼黑和瑞典瓦尔贝格讯】不同汽车的独特性给汽车零部件供应商和OEM厂商等带来了挑战,因为每辆车的驾驶方式、驾驶地点、驾驶者、设计、用途以及道路和交通状况都是独一无二的。为保证每辆汽车都能正常运...

关键字: AI 机器学习 嵌入式系统

GD32F303作为一款先进的微控制器,在嵌入式系统领域有着广泛的应用。本文旨在深入探究GD32F303的发布时间,并分析其背后的技术背景和市场环境。通过对相关资料的梳理和分析,本文揭示了GD32F303发布的历史背景、...

关键字: GD32F303 微控制器 嵌入式系统

物联网控制模块作为连接物理世界与数字世界的桥梁,在现代科技领域扮演着至关重要的角色。本文将详细探讨物联网控制模块的定义、功能、应用领域以及未来发展趋势,旨在为读者提供全面而深入的了解,并展望其在未来物联网产业中的广阔前景...

关键字: 物联网 控制模块 嵌入式系统

以下内容中,小编将对嵌入式开发的相关内容进行着重介绍和阐述,希望本文能帮您增进对嵌入式开发的了解,和小编一起来看看吧。

关键字: 嵌入式 嵌入式开发 嵌入式系统
关闭
关闭