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

审核编辑:郭婷

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

    关注

    5017

    文章

    18497

    浏览量

    293279
  • ecu
    ecu
    +关注

    关注

    14

    文章

    835

    浏览量

    54049
收藏 人收藏

    评论

    相关推荐

    嵌入式系统怎么学?

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

    如何提升嵌入式编程能力?

    和使用。 9. 网络编程:嵌入式设备越来越多地连接到网络,因此学习TCP/IP、UDP、HTTP等网络协议是必要的。 10. 关注安全性:了解嵌入式系统的安全问题,学习如何编写安全的代码以保护
    发表于 06-21 10:01

    嵌入式软件工程师和硬件工程师的区别?

    嵌入式软件工程师和硬件工程师的区别? 嵌入式软件工程师 嵌入式软件工程师是
    发表于 05-16 11:00

    嵌入式系统软硬件基础知识大全

    嵌入式系统是现代科技发展的一个重要分支,广泛应用于工业控制、消费电子、医疗设备、汽车电子等领域。本文试图全面解析嵌入式系统的软基础知识,以期让读者对这一技术有更深入的了解。
    发表于 05-09 14:12

    嵌入式系统发展前景?

    嵌入式系统发展前景? 嵌入式系统,从定义上来说,是一种专用的计算机系统,它被设计用来控制、监视或者帮助操作一些设备、装置或机器。在过去的几年
    发表于 02-22 14:09

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

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

    嵌入式学习步骤

    嵌入式行业是一个涉及广泛领域的行业,嵌入式、物联网、人工智能、智能与科学、电子信息工程、通信工程、自动化工程、测控、计算机科学等专业在嵌入式系统中使得
    发表于 02-02 15:24

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧!
    发表于 12-05 15:17

    如何读取、修改嵌入式产品Flash中内容?

    如何读取、修改嵌入式产品Flash中内容?
    的头像 发表于 10-26 15:31 591次阅读
    如何读取、<b class='flag-5'>修改</b><b class='flag-5'>嵌入式</b>产品Flash中内容?

    什么是嵌入式Linux?

    Linux到底是什么呢? 嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。简单
    发表于 10-11 13:47

    从事嵌入式工作有哪些优势?

    。 那么从事嵌入式工作有哪些优势? 一是工作强度相对较低。开发企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都不同,开发人员往往疲于奔命,重复劳动
    发表于 10-08 15:05

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件
    发表于 09-28 06:59

    嵌入式软件好还是硬件好?

    嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要编写嵌入
    发表于 09-18 15:31

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件
    发表于 09-11 07:24

    保护设备的调试接口介绍

    的加密密钥或其他安全敏感信息 •未经许可修改设备固件 •使用受损设备攻击与其连接的其他系统 为了最大限度地降低安全风险,许多硅供应商在其产品中集成了安全措施 禁用未经
    发表于 08-02 08:21