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]、航空领域,甚至手机行业。我们强烈建议实施所述的基于数字签名的非对称加密方法。

审核编辑:郭婷

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

    关注

    5082

    文章

    19114

    浏览量

    304888
  • ecu
    ecu
    +关注

    关注

    14

    文章

    886

    浏览量

    54488
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    EsDA,一站嵌入式软件

    ,旨在提高嵌入式软件开发的效率、性能和可扩展性。EsDA全称是嵌入式系统设计自动化,它是一个由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多种
    的头像 发表于 09-15 08:10 285次阅读
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>

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

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

    嵌入式系统是什么?

    嵌入式系统是是一个功能完备、几乎不依赖其他外部装置就可以独立运行的系统。该系统包含软件和硬件,以应用为中心,以计算机为基础,能够根据需求灵活
    的头像 发表于 08-29 16:26 370次阅读

    嵌入式系统中的实时操作系统

    嵌入式RTOS是嵌入式应用程序运行、相互交互和与外界通信的底层软件机制。在本节中,您将了解嵌入式软件开发人员使用哪些流行RTOS以及它们运行
    的头像 发表于 08-20 11:28 487次阅读

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于
    的头像 发表于 07-31 09:25 701次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>开发与AI整合

    嵌入式系统怎么学?

    系统设计与调试:需要掌握嵌入式系统的设计方法和调试技术,包括硬件设计、软件设计、电路调试等,以确保系统的稳定性和可靠性。 随着技术的不断进
    发表于 07-02 10:10

    嵌入式系统基础

    嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 它由硬件和软件
    的头像 发表于 06-19 09:10 453次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>基础

    再谈嵌入式实时操作系统

    等领域。嵌入式实时操作系统(RTOS)构造简单、功能齐全、便于使用,特别适合各类应用场景,因此它在软件应用程序开发中发挥着重要的作用,使嵌入式系统
    的头像 发表于 04-09 17:27 792次阅读
    再谈<b class='flag-5'>嵌入式</b>实时操作<b class='flag-5'>系统</b>

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 683次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入
    的头像 发表于 01-22 15:27 2278次阅读

    嵌入式系统的应用实例

    嵌入式系统的三个基本要素是嵌入性、专用性与计算机系统
    的头像 发表于 01-22 09:57 1064次阅读

    聊聊嵌入式软件分层

    今天以控制LED闪烁为例,聊聊嵌入式软件分层
    的头像 发表于 12-28 09:22 673次阅读