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

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

3天内不再提示

保护嵌入式系统免受未经授权的软件修改

星星科技指导员 来源:嵌入式计算设计 作者:ANDR WEIMERSKIRCH, PH 2022-11-08 10:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:ANDR WEIMERSKIRCH, PH.D.,KAI SCHRAMM, PH.D.

当今的嵌入式航空电子设备和其他安全关键型系统越来越面临着提高安全性的要求。因此,利用数字签名和Rivest Shamir Adleman(RSA)和椭圆曲线加密(ECC)算法的软件下载/刷新方案有助于防止未经授权的访问和伪造。

现代世界中越来越多的设备配备了多种嵌入式系统。这一趋势的一个明显例子是航空业,它使用大量电子控制单元 (ECU) 来控制几乎所有东西,例如空调、发动机甚至制动系统[1]。ECU通常允许通过引导加载程序下载更新的程序和数据代码。必须确保软件的真实性和安全启动过程,因为越来越多的嵌入式设备用于安全敏感应用,例如飞机的发动机控制。因此,必须防止对这些设备的任何本地或远程篡改[1]。

为了防止伪造或未经授权的访问,必须安全地更新软件(通常存储在可重新编程的闪存中)。在引导过程中(软件通常在安全的后端服务器上签名,然后使用引导加载程序安装),系统必须通过检查数字签名来验证新固件的真实性。仅当此验证成功时,设备才能执行新固件。讨论了一种基于数字签名的安全软件下载/烧录方案,集成了Rivest Shamir Adleman(RSA)算法和椭圆曲线加密(ECC)签名算法,作为授予这种保证的一种手段[3]。

通过数字签名实现真实性

数字签名提供完整性和真实性;经过数字签名的数据不能被恶意第三方更改,否则接收方不会检测到。此外,接收方可以验证数据是否确实由声明的签名者签名。此外,签名者不能否认他是签名的合法创建者(不可否认性)。此外,数字签名是使用非对称加密算法(如 RSA 算法或 ECC)生成和验证的。

数字签名的计算如图 1 所示。有一对密钥由私钥SK和公钥PK组成。只有签名者可以访问 SK,而 PK 可以公开分发。一般来说,SK只为嵌入式系统的制造商所知,例如航空业的OEM,而PK内置于每个嵌入式系统中。程序代码 x 首先被哈希为一个短的固定长度值 y。通常,y 是通过应用安全哈希算法 (SHA)1 系列的哈希函数来计算的。然后使用私钥SK在y上计算数字签名。此后可以使用公钥PK验证签名。

图1:在嵌入式系统制造商处生成数字签名

21

因此,软件颁发者(即嵌入式系统的制造商)持有用于对软件进行签名的私钥SK,ECU持有相应的公钥PK用于验证它(再次参见图1)。

安全软件下载

利用安全的软件下载过程是在现代嵌入式系统中维护这些所需信息安全级别的关键。安全软件下载过程包括几个独特但至关重要的步骤(参见图 2):

第 1 步:软件开发完成。

步骤 2:将程序目标代码传递到软件颁发者安全环境中的信任中心,该信任中心使用其私钥 SK 对目标代码进行签名。

第 3 步:然后将签名传回并附加到程序目标代码。

第 4 步:代码包和签名包现在存储在数据库中,该数据库可能包含不同嵌入式系统的版本。

步骤5:将适当的程序代码下载到嵌入式系统。

第 6 步:然后使用相应的公共验证密钥 PK 验证相应的程序代码。

图2:安全软件下载过程

22

在此安全软件下载的上下文中,RSA 适合进行签名验证。这是因为它允许非常快速的签名验证,并且可以在不侵犯专利的情况下在软件中实现。表 1 中显示了此实现的一些性能值。

表 1:与各种加密算法相比,在 ARM MPCore @ 400 MHz 上测量的 RSA 签名验证的运行时间

21

颁发单个私钥/公钥对就足够了,这样私钥 SK 存储在信任中心,公钥 PK 存储在嵌入式系统中。信任中心可能是与任何计算机网络断开连接的电脑和保存密钥的安全智能卡。嵌入式系统只需要存储公钥,这样系统本身就不会存储任何机密信息。但是,必须保护此公钥免受操纵(也就是说,它必须存储在可以读取但不能覆盖的安全内存中[3])。因此,安全存储插座包括只读存储器(ROM)或一次写入多次读取(WORM)存储器,必须在生产过程中由制造商初始化[1]。

安全软件刷机

在闪存过程中,每个软件块都可选加密,并事先计算签名。接下来,外部编程设备对引导加载程序进行身份验证(例如,通过使用质询-响应机制)。然后,外部设备逐块传递到嵌入式系统的引导加载程序。引导加载程序解密并存储每个块,并在其上计算哈希[2]。最后,在引导加载程序计算出新闪存程序文件的哈希值后,它会执行数字签名验证。如果签名验证成功,则接受并激活下载的文件。否则,将激活安全程序,引导加载程序将等待下载正确的闪存文件。

数字签名确保安心

通常,固件中内置了引导加载程序以更新程序。但是,在大多数情况下,没有实施任何机制来避免下载以未经制造商授权的方式更改设备行为的操纵程序。所提出的机制是操纵攻击的有效对策。这种机制已经在各种应用中成功实施,例如汽车领域[3]、航空领域,甚至手机行业。我们强烈建议实施所述的基于数字签名的非对称加密方法。

审核编辑:郭婷

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

    关注

    5188

    文章

    20187

    浏览量

    329389
  • ecu
    ecu
    +关注

    关注

    14

    文章

    968

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    做医疗嵌入式软件研发以后好跳槽吗?

    做医疗嵌入式软件研发,以后想跳槽一点儿也不难。别看医疗行业门槛高、规矩多,你手里攒下的那套本事,到哪儿都吃得开。嵌入式这东西,甭管在哪个行当里折腾,说到底六个基本部分跑不掉:嵌入式C、
    的头像 发表于 12-03 11:04 334次阅读
    做医疗<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>研发以后好跳槽吗?

    CW32嵌入式软件开发的必备知识

    设计的原则和方法,能够设计出高效、可维护的软件系统。 了解嵌入式系统的实时性要求,能够设计出满足实时性要求的软件
    发表于 11-28 07:48

    嵌入式软件分层架构设计原则

    嵌入式软件分层架构的设计原则如下: 模块化和可扩展性:每一层应当保持松耦合,这样当硬件变化或某些功能扩展时,只需要修改对应的层次,而不影响整体架构。 硬件无关性:上层代码应当尽量避免直接依赖硬件
    发表于 11-28 07:05

    嵌入式系统的定义和应用领域

    嵌入式系统,简而言之,就是一种专为特定设备或装置设计的计算机系统。它们通常配备一个嵌入式处理器,其控制程序被存储在ROM中。这些系统在许多日
    发表于 11-17 06:49

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台。嵌入式系统的具体安全要求取决于其架构以及所面临的威胁。在本博客中,我们将探讨RTOS的安全性,以SAFERTOS及其增强安全模块(ESM)作
    的头像 发表于 10-24 15:51 1216次阅读

    RT-Thread 2025嵌入式软件大赛重磅来袭

    为激发开发者潜能、促进技术交流,RT-Thread 正式启动2025年度嵌入式软件大赛! 本赛道为嵌入式软件大赛,聚焦嵌入式
    的头像 发表于 09-22 16:40 3283次阅读
    RT-Thread 2025<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>大赛重磅来袭

    RT-Thread 2025嵌入式软件大赛重磅来袭

    顶尖芯片厂商,以及电子发烧友等合作伙伴,为开发者提供展示编程能力与创新思维的顶级舞台。参赛者将基于主流嵌入式平台,实现高效、智能、可靠的软件方案,探索嵌入式系统在A
    的头像 发表于 09-20 10:06 1328次阅读
    RT-Thread 2025<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>大赛重磅来袭

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。 2025.1 版嵌入式
    的头像 发表于 08-20 09:15 3671次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1073次阅读

    嵌入式软件开发常用的软件有哪些?

    文档等非常方便,因为它查找,定位,彩色显示等功能非常强大。开发人员会当成源代码阅读工具使用。 4. Keil uVision5 Keil 5 软件是一款功能强大的嵌入式系统开发工具,主要用于编写
    发表于 07-03 17:06

    嵌入式开发入门指南:从零开始学习嵌入式

    开发(设备驱动、内核编译) 4. 推荐的学习资源书籍:《嵌入式系统软件设计基础》《ARM Cortex-M系列嵌入式开发》在线课程:慕课网、B站嵌入式教学视频实践平台:Arduino、
    发表于 05-15 09:29

    嵌入式软件行业增长驱动因素

    嵌入式软件在物联网应用中至关重要,因为它管理设备操作、控制传感器、支持连接并确保数据安全。例如,在智能家居中,恒温器、安全摄像头和灯光等设备使用嵌入式系统独立运行,并通过云平台或本地网
    的头像 发表于 05-09 11:26 681次阅读

    嵌入式系统开发圣经【干货】

    内容包括:嵌入式系统的介绍、嵌入式SoC硬件系统概论、嵌入式系统软件开发。适用于产品主管、
    发表于 03-12 13:58

    IAR分析嵌入式系统的市场前景

    作为全球领先的嵌入式系统开发软件解决方案供应商,IAR始终致力于为客户提供高性能与高安全性的开发工具,支持不同行业的嵌入式产品开发。
    的头像 发表于 02-26 15:34 929次阅读

    嵌入式机器学习的应用特性与软件开发环境

    作者:DigiKey Editor 在许多嵌入式系统中,必须采用嵌入式机器学习(Embedded Machine Learning)技术,这是指将机器学习模型部署在资源受限的设备(如微控制器、物联网
    的头像 发表于 01-25 17:05 1251次阅读
    <b class='flag-5'>嵌入式</b>机器学习的应用特性与<b class='flag-5'>软件</b>开发环境