0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统信息安全概述

麦克泰技术 ? 来源:麦克泰技术 ? 2025-01-24 11:36 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在受控环境中,防止意外错误和硬件故障足以实现安全行为。如果检测到不可恢复的情况,系统可以切换到功能有限或没有功能的状态,但仍然是安全的。

在不受控制的环境中,各种形式的破坏都可能危及系统的安全。只有在生命周期的每个步骤都考虑安全性,才能防止这种情况发生,这些步骤包括:

1 威胁建模-在设计阶段,必须识别安全需求。

2 安全的组件-软件开发人员必须正确地实现安全需求。此外,他们必须以不向系统添加任何漏洞的方式实现所有其他需求。

3 安全的部署-软件交付时(如从供应移到制造商),供应商必须提供软件完整性和真实性的检查机制。

4 主动维护-在产品的生命周期内,制造商必须纠正组件使用中发现的漏洞。

5 安全更新和启动-在更新系统时,产品制造商必须确保更新软件的完整性和真实性。

1. 威胁建模

创建安全系统的第一步是识别系统资产。产品制造商使用威胁建模来分析攻击者如何威胁这些资产。

威胁建模必须集成到设计过程中,并在所有抽象级别上执行。因此,在定义高级需求时,软件架构师识别进一步的抽象威胁。这些威胁会导致额外的安全需求,以减轻这些威胁。该分析将集成到随后的每个开发步骤中。

嵌入式系统必须保护:

?系统安全:大多数类型的攻击都会影响系统的安全性。

?系统可用性:如果攻击者可以关闭系统,则客户将无法使用设备。

?商业秘密:如果攻击者可以访问固件,他们就可以获取其包含的商业秘密。

?法律遵从性:如果攻击者可以导致系统违反法律(发送垃圾邮件,监视别人),这将对产品制造商造成法律影响。

?公司声誉:系统故障可能会给制造商带来不好的影响。

一旦确定了系统资产,产品制造商就必须估计攻击者为攻击这些资产而愿意投入的成本和资源。基于这些信息,开发团队就可以定义产品必须达到的安全级别。基于定义的安全级别,开发人员可以导出安全需求以最小化风险。

IEC 62443安全等级

IEC62443定义了5个安全级别(SL)对组件达到的安全级别进行分类:

?安全级别0:不需要特殊要求或保护。

?安全级别1:防止无意或意外的误用。

?安全级别2:使用很少的资源、一般技能和简单活动防止故意滥用。

?安全级别3:利用适度的资源、系统特定知识和适度的活动,防止复杂手段的故意滥用。

?安全级别4:通过大量的资源、系统特定知识和高度活动,防止使用复杂手段进行故意滥用。

按照功能安全标准开发系统时,安全级别SL-1不需要进一步的活动。术语“很少(few)”、“中等(moderate)”和“高(high)”并不能很好地定义更高的安全级别。对于安全级别的一般理解是:

?SL-2可以防止业余爱好者或愤怒的前雇员查阅有关安全和想攻击的系统的公开信息。

?SL-3可以防止专业黑客通过勒索、出售漏洞或提取的信息来赚钱。

?SL-4可防范从公司或政府获得大量资金支持的专业黑客组织。

IEC62443安全要求

IEC62443列出了为满足安全级别组件必须实现的功能需求。例如,“与系统交互的人……”:

?SL-1:…须被识别和验证。

?SL-2:…须唯一标识和身份验证(没有共享的管理帐户)。

?SL-3:…果从不受信任的网络访问,必须通过多因素身份验证进行唯一标识和身份验证。

?SL-4:…须在所有网络上通过多因素身份验证进行唯一标识和身份验证。

安全区域

提高安全性的屏障(墙、门、保安、防火墙、虚拟化技术等)将系统划分为区域,每个区域达到其组件的最低安全级别。虽然IEC62443主要解决自动化和控制系统中的操作技术安全问题,但定义的安全级别对于任何有关安全的讨论都是有价值的。

2. 安全的组件

实现安全系统的第二步是确保每个组件的设计和实现都是安全的,并为其他组件提供安全的接口。组件开发人员必须遵循“设计安全”的原则,考虑适用的安全标准,并将威胁建模的结果纳入设计过程的每个步骤。

接口约定

除了正确实现组件的功能需求外,安全性还依赖于对所使用的其他组件的约定的严格遵守。在这种情况下,约定意味着组件对其调用者的需求。

例如:

?从内存池中取出的每个内存块都将返回到相同的内存池中。

?函数的参数不能为零。

?需在临界区内调用函数。

对调用者施加这样的限制有很多原因(性能、灵活性、可移植性等),系统的安全性要求满足这些约定。

执行期望

在实现新组件时,开发人员应该通过尽可能多地验证约定的遵从性来提高安全性。由于软件无法在运行时验证所有约定,组件开发者必须在相应的文档中清楚地描述剩余的未检查的期望。组件用户可以遵循这些约定,并使用各种软件开发技术(如评审、静态分析、测试等)来证明对约定的遵从性。

通信协议验证

实现通信端点的组件必须确保所有通信消息符合商定并记录的协议。

具体来说,这意味着要验证每条消息字段的类型、值范围、大小和编码,还要验证元数据,如每次消息的数量、发送方地址和消息的预期顺序。软件必须根据安全列表检查枚举,而不是从拒绝列表中排除项目。对违反协议的反应必须设计成不可滥用。

隔离组件

有时,开发团队希望使用与产品的目标安全级别不匹配的组件。在这种情况下,可以在具有受限的隔离环境中运行该组件。一种方法是使用内存保护单元限制内存访问,并使用抢占式调度器保证运行时间。组件中漏洞造成的损害将被限制在孤立的环境中,不会影响系统的其余部分。

安全检查表

使组件安全的第一步是确保它具有相对简单的API,该API指导用户如何正确使用它。这样的组件需要详细的、最新的文档,包括安全手册:checklist是用户必须采取的确保安全使用组件的所有步骤的清单(例如“运行此验证”,“使用这些选项进行编译”或“在此常量中插入公钥”)。

加密算法

系统的安全性很可能基于某些加密操作,用于加解密或签名和校验和的生成和验证。这些加密操作仅在以下情况下提供安全性:使用了最先进的算法,可以熟练地实施,将来可以被更安全的东西取代。

很少有人具有相应知识和思维来设计好的加密算法。在密码分析专家花了数年时间仍未破解成功之后,新的算法被认为是安全的(至少暂时如此)并公布。

安全地实现算法几乎同样棘手。有无数的障碍需要克服,从选择适当的填充方案到防止定时攻击或在正确的模式下使用加密原语。

依赖信誉良好的第三方的解决方案是一种被广泛接受的最佳实践。

系统配置

如果嵌入式设备具有影响其安全性的配置参数,则其应该具有默认的安全值。例如,密码保护接口应该具有唯一的强密码,或者在设备运行之前强制用户修改密码。

使用默认密码并要求用户更改密码是远远不够的。类似地,系统设计必须默认启用加密,而非建议用户稍后启用。

系统日志记录

记录与安全相关的事件对于安全漏洞审计和分析至关重要,但很难实现。日志的完整性和机密性是产品制造商在威胁建模中必须分析的安全资产。

对于安全漏洞分析,希望在日志中包含尽可能多的信息和细节。然而,嵌入式设备中的系统资源限制了这个决策。如果不能保证协议的机密性,很多有价值的信息会泄漏。此外,一些法律也会限制记录个人数据或要求在短时间内删除这些数据。

开发团队必须考虑的另一个方面是日志泛滥。如果攻击者做了一些生成大量日志记录的操作,那么不相关的信息可能会覆盖关键信息。

在设计安全日志记录方案时,要考虑到日志通常是设备制造商和设备所有者之间的责任案件中的证据,设备所有者可能对操纵日志感兴趣。

3. 安全的部署

实现安全系统的第三步是确保编译过的代码和源代码以及所有文档存储在安全介质上,并通过安全通道传输。在文件传输到嵌入式系统之前,攻击者可以通过修改部分设计、代码或二进制文件攻击系统。

IT环境

攻击者可以通过访问或操纵开发人员的机器、带有源代码管理系统的服务器或在传输过程中操纵软件来实现攻击。防止开发者机器和服务器被操纵的措施:

?适当的IT权限管理

?定期更新所有使用的软件

?限制物理访问

?安全策略(例如,员工不在电脑前时必须锁上电脑)

软件传输

防止软件在传输过程中被操纵的措施包括:

?使用PGP或X.509证书建立一个安全的通信通道,对所有通信进行签名(和加密)。

?在通过电子邮件发送信息的同时,通过不同的通道(电话、信件、加密聊天等)传递加密安全的指纹。

?使用通过TLS、X.509证书、身份验证和授权保护的数据传输门户。

4. 主动维护

实现安全系统的第四步是确保所有组件在运行期间保持安全。

在对协议、密码学和库的研究中,随时可能发现重大漏洞,产品的最终用户必须更新其安全系统。软件组件供应商必须建立一个系统,将发现的漏洞通知所有客户。库用户必须能够接收这些信息,以便在他们的系统中创建和部署软件更新。

5. 安全更新和安全启动

实现安全系统的第五步是确保在系统上执行的所有软件的完整性和真实性,原则上可以通过下列方式:只有制造商可以安装软件,更新过程是安全的,启动过程是安全的。

如果最终用户无法更新软件,则必须禁用具有已知漏洞的系统,并用改进的设备替换。在某些情况下,这可能是一个可行的解决方案,但通常的嵌入式系统需要一种方法来安装新的固件。

如果攻击者获得对嵌入式系统的物理访问权限,就有可能操纵其固件。在这种情况下,引导过程必须是安全的。安全更新过程对启动时间没有影响,适用于大多数嵌入式系统。这两种机制都必须确保应用程序:

?固件真实性:可信方创建了固件。

?固件完整性:没有其他人修改固件。

?固件版本:更新必须提供比已安装的固件更新的版本(防止回滚到易受攻击的旧版本)。

产品制造商应使用数字签名方案来验证固件的真实性。消息验证码(MAC)提供相同级别的安全性,但需要软件提供商和嵌入式设备之间共享密钥。多个设备不应使用相同的共享密钥。

该产品需要认证方案的信任根。这个信任根是一个证书或公钥,嵌入式系统可以用它来验证固件的签名。

身份验证方案通常还验证固件的完整性。

最后,引导代码必须检查软件的版本。引导代码将固件版本号存储在无法篡改的安全位置。引导代码不会安装或引导版本号较低的固件。

安全更新

在安全更新方案中,固件在接收到软件后对其进行验证,并将其存储在可信存储区域(内部flash)中。设备在后续引导中使用更新和验证过的软件。更新过程的挑战包括完整的固件通常不适合临时通信内存,攻击者可能会断开电源并阻止安全检查的执行。

安全启动

在安全引导方案中,引导代码在每次重新引导时加载并验证软件,这允许我们将软件存储在不安全的介质上(外部闪存,SD卡,网络服务器等),简化了更新过程并降低了硬件制造成本。但需要更多的内存,并且每次重新启动需要更长的时间。

引导代码仍然需要可信内存存储固件加载程序的和信任根(用于验证固件的加密密钥)。

复位后,引导代码将固件加载到RAM中,验证其真实性、完整性和版本,对其进行解密,并在RAM中执行。

如果应用程序存在允许攻击者修改引导代码的安全漏洞,那么攻击者就可以完全控制设备。有几种硬件方式可以防止这种攻击:

?一次性可编程(OTP)引导记录锁定引导代码或信任锚的校验和。

?硬件安全模块(HSMs)是专用的协处理器,具有更高的权限和防篡改存储。

?带密钥存储的加密协处理器允许使用密钥(用于解密或验证),同时防止任何系统部分读取或更改密钥。

为了使用这种硬件支持,引导代码通常配备了一个三阶段的引导过程:

?硬件验证引导管理器和信任根。

?引导管理器验证并执行引导加载程序。

?引导加载程序加载、验证、解密并执行应用程序。

引导加载程序和引导管理器是分开的,引导管理器尽可能简单,不太可能包含错误,只有在极少数情况下才需要更新。引导加载程序包含所有复杂的设备驱动程序和网络协议,因此它更有可能包含错误。由于不涉及硬件,所以更新引导加载程序更容易。

结论

在不断变化的威胁环境中,在设计阶段考虑产品的安全性至关重要。本文提供了对软件开发挑战的概述和见解。这些知识将帮助你从产品的规划阶段开始,在快速发展的威胁环境中确保产品的安全性和完整性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3690

    浏览量

    131754
  • 信息安全
    +关注

    关注

    5

    文章

    684

    浏览量

    39868

原文标题:嵌入式系统中的信息安全

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式应用中常见的安全威胁

    越来越多的嵌入式设备存在互联需求,在安全应用开发中,除功能安全外,应用还需考虑信息安全
    的头像 发表于 04-28 14:45 ?743次阅读
    <b class='flag-5'>嵌入式</b>应用中常见的<b class='flag-5'>安全</b>威胁

    如何提高嵌入式代码质量?

    嵌入式系统的发展已经深刻地影响了我们日常生活的方方面面,从智能家居到汽车控制系统,再到医疗设备和工业自动化等领域,嵌入式系统无处不在。
    发表于 01-15 10:48

    嵌入式主板的概述与发展

    随着科技的迅猛发展,嵌入式系统在现代电子产品中扮演着越来越重要的角色。嵌入式主板作为嵌入式系统的核心组件之一,承担着控制、处理和通讯等多种功
    的头像 发表于 01-13 16:30 ?847次阅读
    <b class='flag-5'>嵌入式</b>主板的<b class='flag-5'>概述</b>与发展

    ARM嵌入式通信协议及应用

    随着科技的飞速发展,嵌入式系统在各个领域扮演着越来越重要的角色。ARM处理器因其高性能、低功耗的特点,在嵌入式系统中得到了广泛应用。通信协议作为嵌入
    的头像 发表于 12-28 09:18 ?1104次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 ?1089次阅读

    什么是嵌入式操作系统?

    的战斗机。 FreeRTOS:它适合那些资源有限的小型设备,就像小巧的瑞士军刀。 QNX:它以安全和可靠著称,很多汽车和工业系统都用它,可以说是EOS中的沃尔沃。 Linux:虽然它不是专门为嵌入式
    发表于 11-08 15:07

    嵌入式系统与物联网的结合

    随着科技的飞速发展,嵌入式系统和物联网(IoT)已经成为现代技术领域的重要组成部分。嵌入式系统是指嵌入到设备或
    的头像 发表于 11-06 10:23 ?1244次阅读

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件
    的头像 发表于 10-16 10:14 ?2750次阅读

    AMD 面向嵌入式系统推出高能效 EPYC 嵌入式 8004 系列

    领先地位。 ? AMD EPYC 嵌入式 8004 系列处理器专为计算密集型嵌入式系统所设计,可为高需求工作负载提供卓越性能,同时以紧凑的尺寸规格最大限度为空间和功率受限型应用提升能效。它还集成了一整套
    发表于 10-11 13:58 ?1138次阅读

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+第三四章阅读报告

    Hypervisor如何通过特定的架构设计和算法实现,来确保多个虚拟机(VMs)在有限资源下的高效、安全运行。 关键收获 : 架构设计 :了解到嵌入式Hypervisor通常采用微内核或分离内核架构,以减少系统
    发表于 10-09 18:29

    嵌入式系统的原理和应用

    嵌入式系统是一种专用的计算机系统,其设计初衷是执行特定任务,而非作为通用计算机使用。这类系统通常作为更大系统的一部分,起到控制、监控或辅助的
    的头像 发表于 10-05 17:03 ?2373次阅读

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备
    的头像 发表于 09-30 10:05 ?1693次阅读

    嵌入式系统的未来趋势有哪些?

    嵌入式系统是指将我们的操作系统和功能软件集成于计算机硬件系统之中,形成一个专用的计算机系统。那么嵌入式
    发表于 09-12 15:42

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式L
    的头像 发表于 09-02 09:07 ?921次阅读

    学习hypervisor嵌入式产品安全设计

    Hypervisor的设计与实现,涵盖嵌入式Hypervisor架构与核心组件、中断隔离技术、内存隔离技术、循环表调度器、健康监控、分区间通信技术、内核资源管理模型、系统初始化过程、内核服务
    发表于 08-25 09:11