历史上的今天
返回首页

历史上的今天

今天是:2025年01月17日(星期五)

正在发生

2020年01月17日 | 使用有安全保障的闪存存储构建安全的汽车系统

2020-01-17 来源:EEWORLD

在现代汽车嵌入式系统中,高度安全的数据存储是必不可少的,尤其是在面对日益高明的网络攻击时。本文将介绍设计师正确使用闪存的步骤。


对电子嵌入式系统的安全和安全保障需求从未有今天这样强烈。随着汽车的自动化程度不断提高,我们需要提高其安全保障水平,防止它们被黑客攻破。对于采用大量机器人与物联网(IoT)设备,需要处理敏感数据的工厂来说,同样如此。


对所有此类嵌入式系统来说,非易失性闪存存储器必不可少。闪存可用作代码存储、文件系统存储或直接运行代码的微控制器单元(MCU)存储器。如果要实现系统安全性,必须首先确保系统使用的闪存存储器是安全的。本文探讨闪存存储器的安全需求,帮助开发人员为汽车、工业和通信应用构建安全有保障的嵌入式系统。

 

闪存存储器的使用方式


如果我们仔细观察现代汽车的电子系统,我们会发现闪存在整车上都得到广泛使用。随着系统的复杂性增加,我们需要更大容量的代码存储和数据存储。车内的所有子系统,包括高级驾驶辅助系统(ADAS)、仪表系统(即将与信息娱乐合并)、传动和车身系统,都需要嵌入式系统才能实时运行。


所有这些嵌入式系统都需要某种类型的闪存存储器,用作代码存储和数据存储。例如,图1所示的是一个使用多个NOR闪存器件的ADAS子系统。

ADAS子系统使用多个NOR闪存

图1.该ADAS子系统使用多个NOR闪存


在当今的ADAS应用中,复杂的算法和人工智能流程依赖在闪存存储器中存储的代码和数据来运行。存储必须提供故障安全和安全保障,因为系统故障或恶意攻击可能导致严重的人身伤害乃至身故。


在工业和网络应用中,也存在对存储解决方案的类似安全与安全保障需求。在互联互通程度不断提高的大背景下,黑客能突破任何与互联网相连的薄弱实体,窃取敏感信息,或者将被攻破的设备当作跳板,在整个网络中的其他地方发起攻击。因此,构建有安全保障的系统,避免发生这种类型的攻击,变得至关重要。

 

有安全保障的闪存存储


多年来,闪存存储器厂商一直提供纯粹的数据存储。对于这些应用,耐久度和保持能力是衡量闪存存储器质量的两大指标。安全保障并非是对这类型闪存器件的要求,这就意味着存储在闪存上的数据要么完全不受保护,要么使用未经认证的命令进行保护。


例如,一些闪存器件通过正常命令集提供基本的保护功能,例如针对编程或擦除操作对扇区提供非易失性或易失性保护、针对编程或读取操作的密码保护等。这些功能虽是好功能,但不足以抵御手段高明的攻击。如果黑客能够访问闪存器件的总线接口,他们就能轻易地提取或修改设备上的数据。


为了保障安全,闪存器件必须保护存储的代码和数据免受多种手段的攻击。下面总结了闪存存储设备需要加以防范的几种攻击。


(1)中间人(MIM)攻击


MIM攻击中的黑客常模仿通信信道的发送方,发送命令或消息给另一侧,以窃取或修改数据(图2)。因此,有必要认证主机和闪存设备间的每一条消息。认证可通过在主机和闪存上使用公共密钥,生成伴随实际消息的消息认证码(MAC)来实现。接收方可以在对消息采取行动之前先验证MAC。

中间人攻击常模仿通信的信道发送方发送命令或消息,最终目的是窃取或修改数据

图2.中间人攻击常模仿通信的信道发送方发送命令或消息,最终目的是窃取或修改数据


为了防止在密钥受损时系统被永久破坏,通常需要使用临时密钥。临时密钥会在一定时间或在一定次数后失效。这样做的目的是尽可能避免密钥被破坏性物理分析(DPA)或其它迭代攻击等方法进行解密。


另一种中间人攻击则是在一定时间以后重放截获的合法消息。为了防范重放攻击,主机和闪存设备必须使用累加计数器(值随每个消息递增)生成MAC。由于当前的累加计数器值与上一消息的值不同。重放相同的消息就不能通过MAC验证。


(2)克隆


一些黑客可以使用先进的技术读取闪存芯片中的全部内容,通过非法克隆牟利。为了防范此类攻击,每个闪存芯片都必须拥有任何人都不能读取的唯一设备秘密(UDS)。UDS值具有唯一性,是每个芯片内的真实随机值。一个芯片和另一个芯片中的UDS之间毫无关联。


UDS可用于推导复合设备标识符(CDI),而这个标识符是生成可信计算工作组织(TCG)设备标识符组合引擎(DICE)规格定义的设备ID证书的基础。一般来说,设备也在CDI的基础上,为所有用主机导出的密钥生成别名私钥公钥对。这样就无需暴露设备ID的私钥。


有了UDS和DICE流程后,由于UDS在物理上不可克隆,因此黑客就无法克隆设备。

 

(3)窃听


被动侦听是另外一种已知的攻击方式。攻击者通过在总线上窃听,可从通过总线传输的数据中搜集敏感信息或机密情报。为保护重要数据,用户可选择在通过总线将数据发送到闪存设备,并存储数据前为数据加密。当主机从设备检索数据时,也应对数据进行加密处理,让潜在的黑客永远无机可乘。


也许有人会说,加密方法不需要有安全保障的闪存存储解决方案,因为主机可以直接加密数据并将其存储到闪存中。只有主机才能解密数据。


然而,这样做也有一定的缺点。其中之一是主机不能轻易地弃用加密密钥。例如,假设使用KeyA加密数据并将其存储在闪存中,后来用户发现KeyA已被攻破,就需要在系统上使用不同的密钥,即KeyB。


这时,主机陷入两难境地:它不能直接弃用KeyA,因为它需要保留该密钥,才能解密从设备读取的数据。然而,如果KeyA被攻破,用户可能不想永久保留它。如果要使用新的数据加密密钥,用户不得不采取更复杂的措施。先擦除闪存上的原始加密数据,再用新加密的数据为闪存编程。这种操作在现场并非易事,且存在一定风险。

 

另一方面,如果有安全保障的闪存能够提供加密和解密功能,它就能在其有安全保障的存储中安全地存放明文数据,并在将数据发回给主机之前进行加密处理。如果当前的加密密钥被攻破,主机可以简单地与设备交换新的密钥。存储中的数据保持完整且有安全保障,与存储加密数据相比,是一种简单得多的方法。


保护措施


下面介绍开发安全闪存存储的各个步骤:


(1)提供灵活的存储器架构


在现代的多核嵌入式系统中,多个MCU或硬件安全模块(HSM)可能可以访问同一个闪存存储。闪存设备有必要提供一种灵活的存储器架构,可以对其进行分区和配置,以便通过不同的内核管理不同的区域。这些不同区域可提供不同水平的安全保障,或者在完全不需要时,取消安全保障。


通过了解eMMC标准和UFS标准,我们显然可以看到支持多个安全区域的趋势。当前的eMMC标准规定了重放保护内存块(RPMB)。最新的UFS(v3.0)标准可为四个RPMB分区提供智能支持,它们由四个不同的密钥进行管理。这样的存储器架构灵活性在多核SoC环境中更加合适。


(2)提供快速的安全启动功能


众多嵌入式系统都在闪存中存储启动代码。部分是因为需要快速启动,例如汽车子系统需要在加电重置(POR)的100ms内处理CAN消息。系统不仅需要安全启动(即验证启动代码),还需要快速启动。这就给嵌入式设计师提出更高的挑战。


一般情况下,在运行存储并下载(SnD)模式时,主机从闪存读取引导加载程序并映射给RAM执行。然而,要想安全启动,就需要检查认证整个引导加载程序代码,以确保其可信性。这个过程需要在MCU上花费时间。有安全保障的闪存存储能够提供引导加载认证,大幅度缩短启动时间。


安全的闪存设备能够使用内部安全散列函数检查引导加载程序,并为主机提供验证用散列值。如果散列值未发生改变,就说明引导加载程序未被篡改,可以安全地用于启动。


(3)提供安全的固件无线更新(FOTA)


对于现代的嵌入式应用而言,现场升级是必备功能。通过远程升级系统的固件或软件,制造商能够快速解决问题、提供新增特性、提升用户体验。然而,远程升级也会对系统构成安全威胁。没人希望黑客利用现成的更新通道,让系统运行恶意固件或软件。


除了依靠CPU提供的安全保障,闪存设备内部的安全引擎也能大幅提高FOTA流程的安全水平(图3)。采用这样的安全引擎后,提供启动代码存储的闪存设备不仅可以用闪存设备旁边的主机认证固件提供商,也可以在远程云上进行认证。通过这种方式,可以为闪存中的固件更新或软件更新建立端到端的通道安全。


闪存设备中的安全引擎有助于实现更安全的固件无线更新流程

图3.闪存设备中的安全引擎有助于实现更安全的固件无线更新流程


现代汽车、工业、通信使用的嵌入式系统需要有高度安全保障的数据存储。嵌入式系统设计师面临的挑战是,如何构建能够抵御网络攻击的安全系统。集成安全保障特性的闪存,如赛普拉斯的Semper Flash,通过防范各种针对嵌入式系统的攻击,提高整体系统的安全性。


推荐阅读

史海拾趣

Eutech公司的发展小趣事

在电源适配器和服务器电源市场,EUtech公司凭借技术创新迅速崛起。他们不断优化产品设计,提高产品性能,同时注重节能环保。随着下游AI行业的快速发展,公司及时抓住机遇,推出了一系列高性能、高可靠性的电源产品,赢得了市场的广泛认可。

Array Microsystems Inc公司的发展小趣事

Array Microsystems Inc公司自创立之初,便专注于阵列传感器技术的研发。在成立初期,公司面临资金短缺和技术瓶颈的双重挑战。然而,通过不懈的努力和持续的技术创新,Array Microsystems Inc成功研发出了一款高灵敏度、低功耗的阵列传感器。这一突破性的技术不仅填补了市场的空白,还为公司带来了可观的利润。随着产品的推广和应用,Array Microsystems Inc逐渐在电子行业中崭露头角。

Apex [Apex Microtechnology]公司的发展小趣事

Apex Microtechnology成立于1980年,自创立之初,公司便专注于功率模拟技术的研发,为工业、国防和航空航天等领域提供高精确控制电流、电压和速度的解决方案。凭借其在功率驱动器和放大器领域的专业知识,Apex Microtechnology逐渐在电子行业中崭露头角,吸引了众多客户的关注。

极海半导体(Geehy)公司的发展小趣事

Apex Microtechnology一直致力于开发在性能、质量和可靠性方面引领行业的产品。通过不断创新和研发,公司成功推出了多款具有竞争力的功率模拟产品,为全球客户提供高效的解决方案。同时,Apex Microtechnology也积极拓展全球市场,与众多知名企业建立了合作关系,进一步提升了其在电子行业的影响力。

Broadcom(博通)公司的发展小趣事

1991年,加州大学洛杉矶分校的工程学教授亨利·山缪利和他的博士班学生亨利·尼古拉斯,以各出资5000美元的方式,在美国加州尔湾小镇共同创立了博通公司。初创时期,博通主要致力于开发机顶盒的宽带通信芯片。随着技术的不断进步和市场需求的增长,博通的产品逐渐受到业界的认可,销售额稳步上升。

Helium_Systems__Inc.公司的发展小趣事

为了更好地适应全球市场的变化,海曼电子不断深化其国际化战略。公司在全球范围内建立了完善的研发、生产和销售网络,确保能够快速响应客户需求。同时,公司还加大了对海外市场的投入,通过本地化运营和定制化服务,赢得了更多海外客户的信赖和支持。此外,海曼电子还积极参与国际标准的制定和推广工作,提升了公司在全球电子行业的影响力。

问答坊 | AI 解惑

电子元件基础教程

工控与测量的基本功…

查看全部问答>

关于Linux嵌入式系统的培训效果!

想参加培训,但是不知道效果如何? 请大家来谈谈自己的经验吧~~ 谢绝销售…

查看全部问答>

串口接收问题

各位大侠好!请教一下,我利用C51的串口向S3C2440的串口1发数据,然后将该数据用串口0显示出来(串口调试工具),两个串口的波特率都是9600,奇偶校验都是一样的,为什么我收到的数据不是我发的数据,我用C51持续不断的发送十六进制的01,可我接受 ...…

查看全部问答>

一个例子看不明白

/* 打问号的地方不明白,希望大家给加下注释,谢谢了 这是一个蜂鸣器的程序(运行在arm9(mini2440)上的Linux下) */ #include #include #include #include #define PWM_IOCTL_SET_FREQ            &nb ...…

查看全部问答>

单片机技术

   单片机的经典电路时咋样的呀,希望大家给点建议啊。最好给个protel 99se的看看。…

查看全部问答>

WinCE中断处理--物理中断号与逻辑中断号的问题

各位大侠好:    小弟现在正在搞WinCE下面的中断处理,遇到了一点问题,希望大家踊跃发言,不吝赐教、    中断处理过程中,需要把物理中断号转化为系统的逻辑中断号,但是我却不怎么清楚物理中断号是怎么回事。看了不少网上 ...…

查看全部问答>

北京 诚聘 windows驱动软件开发工程师(兼或全职)

职位描述 Windows驱动程序设计和实现 职位要求 1.计算机、电子工程、通信、自动化等相关专业本科以上学历; 2.熟练掌握C/C++语言编程; 3.精通WDM, WDF编程,熟悉DriverStudio, WINDBG等开发工具; 4.深入理解Windows操作系统组成原理和内核 ...…

查看全部问答>

wince gprs 拨号的问题

我的程序是先打开串口,然后向串口写入at指令,最后调用rasdial()函数进行拨号连接,现在的问题是拨号能成功但是中间他会弹出一个终端窗口,要我们点 开始 -> 继续  才能继续走下去,我想实现不 弹出任何窗口 直接拨号连接.不知道大家有没有做 ...…

查看全部问答>

基于LM3S8962的多个报文对象的CAN收发例程

本例程所用的驱动库版本是:5961 演示了一个CAN控制器的多个报文对象进行CAN收发, 本例程在Stellaris 8962的评估套件上顺利运行,其中8962板作接收方,2110小板作发送方。  …

查看全部问答>