CN117708897A - 用于保护嵌入式设备固件数据的方法以及嵌入式设备 - Google Patents

用于保护嵌入式设备固件数据的方法以及嵌入式设备 Download PDF

Info

Publication number
CN117708897A
CN117708897A CN202311739833.5A CN202311739833A CN117708897A CN 117708897 A CN117708897 A CN 117708897A CN 202311739833 A CN202311739833 A CN 202311739833A CN 117708897 A CN117708897 A CN 117708897A
Authority
CN
China
Prior art keywords
embedded device
signature
key
program
firmware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311739833.5A
Other languages
English (en)
Inventor
王豫新
徐春光
巫建刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Espressif Systems Shanghai Co Ltd
Original Assignee
Espressif Systems Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Espressif Systems Shanghai Co Ltd filed Critical Espressif Systems Shanghai Co Ltd
Priority to CN202311739833.5A priority Critical patent/CN117708897A/zh
Publication of CN117708897A publication Critical patent/CN117708897A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请公开了一种用于保护嵌入式设备固件数据的方法,该方法包括以下步骤:在嵌入式设备启动期间,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得:获取存储在嵌入式设备的非易失性存储器中的加载引导程序中的签名公钥,并根据存储在嵌入式设备的一次性可编程存储器中的签名公钥摘要对所述签名公钥进行验证;以及响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验;以及响应于加载引导程序签名校验通过,执行加载引导程序,以使得:根据签名公钥,对应用程序固件进行签名校验。本申请建立了完整地保护嵌入式设备的固件数据,防止非法篡改,在保护数据安全的同时,方便批量使能安全操作以及后续维护。

Description

用于保护嵌入式设备固件数据的方法以及嵌入式设备
技术领域
本申请涉及嵌入式技术领域,尤其涉及一种用于保护嵌入式设备固件数据的方法以及嵌入式设备。
背景技术
物联网终端是具备网络连接能力的嵌入式电子设备,可以实现与其他设备或云端的数据交换和控制。物联网终端的应用领域非常广泛,涵盖了智能家居、智慧工业和医疗保健等多个领域。物联网终端的核心部分是固件,即运行在物联网终端中的可执行程序,其负责协调***内部资源的调度以及与外部设备通信的功能。典型的固件数据包括运行在终端中的启动加载引导程序(bootloader),以及应用程序(app)两个部分。
固件数据的安全性对于物联网终端的开发人员,维护人员和用户都非常重要。一方面,固件数据定义了设备的功能,是物联网终端的核心竞争力。如果固件数据被窃取,可能导致同类竞争厂商可以复制该固件数据到自己的产品上,使得原产品的市场竞争力下降。另一方面,固件数据如果被破坏,可能导致设备功能异常,甚至被植入恶意程序威胁到用户的个人隐私和生活安全。例如,一些物联网终端可能涉及到用户的健康数据,位置信息,支付信息等敏感信息,如果这些信息被泄露或篡改,可能会给用户造成严重的损失。
为了保护固件的安全性,通常需要对固件数据进行以下方面的保护:
1)数据的完整性。这意味着固件数据在传输和存储的过程中不能丢失或损坏,以确保其数据是完整的。通常通过计算固件的摘要来检查固件数据的完整性。具体操作方法可简述为:开发人员在制作固件时,将固件数据与对应于固件数据的摘一起打包成附件,然后发送给设备端;设备端在应用固件数据前,重新计算固件数据的摘要,然后与附件中的摘要进行比较。如果两者相同,则说明固件数据是完整无损的。
2)数据的机密性。这意味着固件数据必须是以加密的方式进行传输和存储,不能被非指定的开发人员轻易获取或使用。通常通过数据加密计算来保护数据的机密性。具体的操作方法可简述为:在传输或存储固件数据时,对固件数据进行加密,使其无法被直接读取或修改。并且,在使用固件数据时,通过芯片内的专业硬件模块对固件数据进行解密,然后加载使用。
3)保护数据的合法性。这意味着固件数据必须是来自合法的数据发布机构的,而且固件数据中需要包含可以识别固件发布方的信息。通常通过数字签名算法来验证数据的合法性。常用的签名算法有RSA算法和DSA算法。签名算法是一种非对称算法,如图1所示,需要数据发布方生成一对私钥和公钥的密钥对。其中,私钥和公钥是有对应关系的密钥。数据发布方私钥可以对固件数据进行签名,生成一个签名信息,数据接收方(例如嵌入式设备端)可以使用公钥对签名信息进行校验,以判断固件数据是否是由匹配的私钥签名授权的。具体的操作方法可简述为:开发人员在制作固件时,先生成一对私钥和公钥,然后用私钥对固件数据进行签名,最后将固件数据和签名信息一起打包成附件,发送给设备端。设备端在应用固件数据前,先用预先烧录在设备中的公钥对固件数据和签名信息进行校验,如果校验通过,则说明固件数据是由合法的数据发布机构制作的。
目前的固件数据保护方案主要是保证数据在传输过程中的安全性,比如使用HTTPS加密传输协议来传输固件。但是对于存储在设备上的固件数据的安全性保护方案却很少。
固件数据通常存储在***的可编程存储器中,比如Flash、SD卡等存储介质中。当物联网终端开发完成后或设备出厂后,对固件的访问主要有以下三个方面:
1.读取终端上的固件数据。这主要是通过物联网终端预留的外设接口,比如UART接口,来读取存储器中的固件数据。
2.重写终端上的固件数据。这主要是通过预留的外设接口或者OTA远程固件更新的方式,来修改或替换存储器中的固件数据。
3.应用终端上的固件数据。这主要是CPU从存储器中读取固件数据到寄存器中,然后解析固件数据中的指令和数据,按照指令和数据执行相应的功能。
为了提高存储在设备端的固件安全性,一些设备厂商会采用一些安全方案,常见的有:
1.按照启动流程进行签名校验。常见的一些嵌入式设备通常有三个程序,分别是初始启动程序段(Rom Code)、加载引导程序(bootloader)和应用程序(app)。其中初始启动程序段是固定在芯片上的不可修改的数据,其会检查是否开启了签名校验的功能,如果开启了,则对下一个程序,也就是加载引导程序进行校验。如果校验成功,则加载加载引导程序运行。同样地,加载引导程序也会对应用程序进行签名校验,如果校验成功,则会加载应用程序运行。这样通过层层的签名校验,可以保证固件都是来自合法的发布方的。然而,现有的信任链机制中仍然存在信任根被篡改或破坏的风险。
2.固件加密。为了保证可以从设备上读取固件进行解密,一般会使用统一的密钥对固件进行加密,然后发送到设备上。所有的设备都使用相同的加密后的固件。也有一些方案让密钥在设备内部生成,这样外部不能知道密钥,也就无法解密设备上的固件,但是这样也会导致维护人员无法对设备上的固件进行解密。
3.关闭设备的数据读写接口。通过关闭物理访问接口,可以防止接触到设备的人通过类似串口的设备读写固件数据。但是这样也会牺牲设备的可维护性。为了更快地占领市场,发布新产品,设备厂商通常需要多次产品迭代,每当产品出现问题时,就需要对设备的固件进行反复的读写操作,用于确认和解决设备的软硬件问题。因此,这种方法在实际应用中会造成不便利,从而影响开发效率。
然而,上述这些常用的安全措施仍然存在许多问题,特别是:
1.使能设备的安全功能的机制比较复杂,导致开发人员不方便大批量使能安全功能。这样的操作对于大量的设备来说,非常麻烦和耗时。
2.安全方案不统一、不方便批量使用。尽管一些现有方案使用统一的密钥对固件进行加密,但这样的密钥如果泄露了会导致所有的设备都能被破解。而对于实现了一机一密的现有方案而言,虽然每个设备的密钥不一样,但是需要复杂的密钥管理策略,对每个设备提供专用的维护方案,这样的方案也不方便批量实施。
3.不方便维护。对于设备厂商,一些设备在开启这些安全功能后,就无法重新读取、写入设备上的数据,这给设备返厂维修带来了困难。因为维护人员需要读写设备上的数据来分析异常原因,但如果设备上的固件被加密了,而且密钥只存在于设备内部,那么维护人员就无法对设备上的固件进行解密,也就无法分析固件的问题。
4.对于用户,设备的安全性能不足,攻击者可能通过OTA或者物理烧录的方式,向嵌入式设备注入可执行的非法程序,从而篡改或窃取设备的固件数据和用户信息。比如,如果设备上的固件没有进行签名校验,那么攻击者就可以通过OTA的方式,发送一个伪造的固件,让设备加载运行,从而控制设备的行为。又例如,如果用于签名校验的密钥发生泄露,使得攻击者可以伪造签名数据,从而实施伪造的固件数据。
特别地,现有技术中如果想要实现一机一密,主要涉及到密钥管理和加密密钥以及加密固件的导入这两个问题。传统的密钥管理方法包括以下:(a)记录密钥:对每个设备进行编号,并记录编号与密钥的对应关系。设备数量有多少,则记录条数就有多少。这种方法中密钥维护繁琐。(b)采用统一密钥:一些开发者为了方便,经常会放弃一机一密,而选择为所有设备设置同一密钥。而且,由于开发者需要记录这些密钥,因此存在密钥泄露的风险。因此,这种管理方法虽然可以方便地导入密钥和导入加密固件,但密钥存在泄露风险。(c)设备内部随机生成密钥而不在主机端管理:一些技术方案中,让每个设备内部自动生成随机密钥,而外部不知道密钥信息。这种方法的优点是安全性高,管理简单,但是缺点是导入加密固件比较困难,且设备返厂维修时无法对设备固件进行解密分析和更新。因为密钥仅存在于设备内部,只能由设备自己对固件进行加密,即使能够导入一个未加密的固件让设备自己加密,也会面临嵌入式设备运行速度慢,加密过程耗时长,掉电打断等风险。一旦掉电打断加密过程,外部又不知道密钥,设备就可能需要手动修复甚至被完全损坏。由此可知,现有技术中目前尚缺乏一种既方便密钥管理又便于批量导入加密固件、且后期维护方便的实现一机一密的安全方案。
综上所述,嵌入式设备的固件安全是一个重要的问题,其涉及到数据的完整性、机密性、合法性等方面。为了保护固件的安全性,现有的技术方案主要有基于信任根的签名校验、数据加密、硬件的隔离等。但是,这些方案还存在一些问题,比如使能安全功能的机制复杂、安全方案不统一、不方便维护、安全性能不足等。因此,亟需一种新的技术方案,能够有效地提高嵌入式设备的固件安全性,同时又能方便地实施以尽快出厂,且在后期方便维护。
应理解,上述所列举的技术问题仅作为示例而非对本发明的限制,本发明并不限于同时解决上述所有技术问题的技术方案。本发明的技术方案可以实施为解决上述或其他技术问题中的一个或多个。
发明内容
为解决上述和其他问题,本申请提供了一种用于保护嵌入式设备固件数据的方法,该方法包括以下步骤:在嵌入式设备启动期间,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得:从OTP存储器读取交互模式标识符,交互模式标识符用于指示是否使能嵌入式设备的交互模式;以及,响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第一外部指令,获取外部密钥,并基于外部密钥和存储在OTP存储器中的嵌入式设备的唯一标识码生成对称密钥;其中,对称密钥用于对存储在非易失性存储器中的固件进行加密或解密。优选地,在生成对称密钥后,将其存储在OTP存储器中。优选地,还可以向OTP存储器写入所获取的外部密钥。
可选地,固件包括加载引导程序;该方法还包括执行初始启动程序段,以使得:响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥;以及,使用对称密钥解密非易失性存储器中的加载引导程序。
可选地,该方法还包括,执行初始启动程序段,以使得:响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第二外部指令,修改OTP存储器中的交互模式标识符,以开启或关闭嵌入式设备的交互模式。
进一步可选地,该方法还包括,执行初始启动程序段,以使得:在使用对称密钥解密非易失性存储器中的加载引导程序后,对加载引导程序进行完整性校验。
进一步可选地,该方法还包括,执行初始启动程序段,以使得:响应于加载引导程序通过完整性校验,获取存储在加载引导程序中的签名公钥,并根据存储在OTP存储器中的签名公钥摘要对签名公钥进行验证;以及,响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验。
可选地,固件包括应用程序,该方法还包括,执行加载引导程序,以使得:使用对称密钥解密固件中的应用程序;以及对应用程序进行完整性校验。可选地,该方法还包括执行加载引导程序,以使得:响应于应用程序通过完整性校验,根据签名公钥,对应用程序进行签名校验。
可选地,该方法还包括通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及根据加载引导程序中的签名公钥,对更新应用程序执行签名校验。
进一步可选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
本申请还提供了一种嵌入式设备,包括只读存储器(ROM)、非易失性存储器、一次性可编程(OTP)存储器以及加解密电路;其中,OTP存储器中存储有交互模式标识符和嵌入式设备的唯一标识码,非易失性存储器中存储有固件;嵌入式设备配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:从OTP存储器读取交互模式标识符;响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第一外部指令,获取外部密钥,并基于外部密钥和嵌入式设备的唯一标识码生成对称密钥;其中,对称密钥用于加解密非易失性存储器中的固件。优选地,在生成对称密钥后,将其存储在OTP存储器中。优选地,还可以向OTP存储器写入所获取的外部密钥。
优选地,固件包括加载引导程序,以及,嵌入式设备配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:响应于交互模式标识符指示关闭嵌入式设备的交互模式,加解密电路从OTP存储器读取对称密钥;以及加解密电路使用对称密钥解密非易失性存储器中的加载引导程序。
优选地,嵌入式设备还配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第二外部指令,修改OTP存储器中的交互模式标识符,以开启或关闭嵌入式设备的交互模式。
进一步优选地,嵌入式设备还配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:在使用对称密钥解密非易失性存储器中的加载引导程序后,对加载引导程序进行完整性校验。
进一步优选地,嵌入式设备还配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:响应于加载引导程序通过完整性校验,获取加载引导程序中的签名公钥,并根据OTP存储器中的签名公钥摘要对签名公钥进行验证;以及,响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验。
进一步优选地,固件包括应用程序,以及,嵌入式设备配置为在启动期间,执行加载引导程序,以使得:加解密电路使用对称密钥解密应用程序;以及,对应用程序进行完整性校验。可选地,执行加载引导程序还使得:响应于应用程序通过完整性校验,根据加载引导程序中的签名公钥,对应用程序进行签名校验。
进一步优选地,嵌入式设备配置为通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及根据加载引导程序中的签名公钥,对更新应用程序执行签名校验。
进一步优选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令;以及嵌入式设备还配置为:当执行该更新应用程序时,修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
本申请还提供一种非暂时性计算机可读介质,其上存储有用于在嵌入式设备中提供固件数据保护的计算机可读指令;计算机可读指令在由处理器执行时,使得嵌入式设备执行如上所述的任一方法。
此外,本申请还提供了一种用于保护嵌入式设备固件数据的方法,方法包括以下步骤:在嵌入式设备启动期间,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得:1)获取存储在嵌入式设备的非易失性存储器中的加载引导程序中的签名公钥,并根据存储在嵌入式设备的一次性可编程(OTP)存储器中的签名公钥摘要对签名公钥进行验证;以及响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验;2)以及,响应于加载引导程序签名校验通过,执行加载引导程序,以使得:根据签名公钥,对存储在非易失性存储器中的应用程序进行签名校验。
优选地,该方法还包括执行初始启动程序段,以使得:在对签名公钥进行验证之前,对加载引导程序进行完整性校验;以及响应于加载引导程序通过完整性校验,对签名公钥进行验证。
优选地,该方法还包括执行初始启动程序段,以使得:在对应用程序进行签名校验之前,对应用程序进行完整性校验;以及响应于应用程序通过完整性校验,对应用程序进行签名校验。
优选地,签名公钥摘要是在嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入OTP存储器中的。
优选地,该方法还包括执行初始启动程序段,以使得:从OTP存储器读取对称密钥;以及使用对称密钥对存储在非易失性存储器中的加载引导程序和/或引导标识和/或应用程序进行加密或解密。
进一步优选地,其中,从OTP存储器读取对称密钥还包括:从OTP存储器中读取交互模式标识符,其指示嵌入式设备是否处于使能交互模式;以及响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥。
进一步优选地,对称密钥是根据外部密钥和嵌入式设备的唯一标识码生成的,其中,外部密钥是在嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。优选地,外部密钥还可以写入OTP存储器中。
优选地,该方法还包括通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及根据签名公钥,对更新应用程序执行签名校验。
进一步优选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
此外,本申请还提供了一种嵌入式设备,其包括只读存储器(ROM)、非易失性存储器以及一次性可编程(OTP)存储器;其中,只读存储器(ROM)存储有初始启动程序段,OTP存储器中存储有签名公钥摘要,非易失性存储器中存储有加载引导程序和应用程序;嵌入式设备配置为在启动期间,执行初始启动程序段,以使得:1)获取加载引导程序中的签名公钥,并根据签名公钥摘要对签名公钥进行验证;以及响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验;2)以及,响应于加载引导程序签名校验通过,执行加载引导程序,以使得:根据签名公钥,对应用程序进行签名校验。
优选地,嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:在对签名公钥进行验证之前,对加载引导程序进行完整性校验;以及响应于加载引导程序通过完整性校验,对签名公钥进行验证。
优选地,嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:在对应用程序进行签名校验之前,对应用程序进行完整性校验;以及响应于应用程序通过完整性校验,对应用程序进行签名校验。
优选地,签名公钥摘要是在嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入OTP存储器中的。
优选地,嵌入式设备还包括加解密电路,以及嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:从OTP存储器读取对称密钥;以及,加解密电路使用对称密钥对存储在非易失性存储器中的加载引导程序和/或引导标识和/或应用程序进行加密或解密。
优选地,其中,从OTP存储器读取对称密钥还包括:从OTP存储器中读取交互模式标识符,其指示嵌入式设备是否处于使能交互模式;以及响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥
进一步优选地,对称密钥是根据外部密钥和嵌入式设备的唯一标识码生成的,其中,外部密钥是在嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。优选地,外部密钥还可以被写入至OTP存储器中。
优选地,嵌入式设备还配置为通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及根据加载引导程序中的签名公钥,对更新应用程序执行签名校验。
进一步优选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
此外,本申请还提供一种非暂时性计算机可读介质,其上存储有用于在嵌入式设备中提供固件数据保护的计算机可读指令;计算机可读指令在由处理器执行时,使得嵌入式设备执行如上所述的任一方法。
本发明提供了一种固件数据的保护方法和装置,通过在一次性可编程(OTP)存储器中设置交互模式标识符,用于管理是否允许通过串口等通信接口下发命令、读写一次性可编程存储区域中的安全数据以及读写非易失性存储器等,具有高安全性。在设备的开发阶段,可以通过设置交互模式标识符的值以关闭嵌入式设备的安全功能,从而方便开发人员的访问;而在设备功能开发完毕后、设备正式出厂前,通过更改交互模式标识符的值以使能问嵌入式设备的安全功能,可以实现快速批量使能多个嵌入式设备的安全功能。此外,根据本发明的方案,基于外部密钥和存储在OTP存储器中的设备唯一标识码生成唯一的对称密钥,可以实现一机一秘钥,开启安全功能后,仅设备知道自身用于加解密的对称密钥,外界无法知道。并且,由于用于加解密的对称密钥是基于外部密钥和设备唯一标识码生成的,即使外部密钥泄露(例如在主机端泄露),外界仍然无法获知本设备所使用的对称密钥。本发明的密钥管理方便,不管是签名校验还是固件加密,在主机端,维护人员仅需管理用于签名校验的签名密钥以及用于生成对称密钥的统一的外部密钥,即可实现一机一密秘钥。
在另一方面,本发明还根据在OTP存储器中存储的签名公钥摘要,从不可更改的初始启动程序段(ROM Boot)处开始,首先对初始启动程序段进行校验,然后对加载引导程序进行校验,最后对应用程序进行校验,从而形成从初始启动程序段、加载引导程序直至应用程序之间的完整信任链,而签名公钥摘要仅在嵌入式设备处于使能交互模式时才能进行写入。相比于现有技术,本发明中由于攻击者无法篡改签名公钥摘要,使得必须使用正确的签名公钥摘要才能正确进行后续的验证步骤,因此,即使信任根存在漏洞或者被篡改,嵌入式设备将在验证签名公钥时即发现问题,并及时停止引导后续的程序。进一步的,本发明结合了签名校验、完整性校验、数据加密技术,可以实现对固件数据的合法性、完整性、机密性三方面的完整的保护方案。
此外,本发明方便后期维护或返厂维修,可以通过OTA的方式更新固件,并在将新的固件数据自动以加密写入的方式写入到非易失性存储器中。执行新的固件以关闭安全功能,重新启用对嵌入式设备中的OTP存储器和非易失性存储器等的读写功能。新的固件只需要经过数字签名即可下发到设备上,设备将对其进行签名校验。
本发明的方法完整地保护嵌入式设备的固件数据,有效地防止窃取固件数据,防止非法篡改,同时保护用户的数据使用安全。本发明的安全性高,密钥管理方便,启用方便,方便后期维护,具有较强的实用价值和广阔的应用前景。本发明的保护方法和装置可应用于各种需要保护固件数据的嵌入式设备,如智能手机、平板电脑、智能电视、智能手表、智能音箱、智能路由器等。此外,本申请还提供了一种具有上述技术优点的嵌入式设备。
附图说明
在下文中,将基于实施例参考附图进一步解释本申请。
图1示意性地示出了数据发布方生成用于签名算法的密钥对的示意流程图;
图2示意性地示出了根据本发明的实施例的嵌入式设备的存储体系的示意图;
图3示意性地示出了本申请所提供的用于保护嵌入式设备固件数据的方法的一种具体实施方式的流程图;
图4示意性地示出了本申请所提供的用于保护嵌入式设备固件数据的方法的另一种具体实施方式的流程图;
图5示意性地示出了根据本发明的一个示例的用于保护嵌入式设备固件数据的方法的示意流程图;
图6示意性地示出了根据本发明的另一个示例的用于保护嵌入式设备固件数据的方法的示意流程图;
图7示意性地示出了根据本发明的一个示例的执行初始启动程序段的示意流程图;
图8示意性地示出了根据本发明的一个示例的执行加载引导程序的示意流程图;
图9示意性地示出了根据本发明的一个示例的嵌入式设备通过OTA更新应用程序的示意流程图,其由当前正在运行的应用程序执行;
图10示意性地示出了根据本发明的一个示例的通过主机端启用嵌入式设备的安全功能的示意流程图;
图11示意性地示出了根据本发明的一个示例的利用更新应用程序重启交互模式的方法的示意流程图。
具体实施方式
以下将结合附图和具体的实施方式,对本申请的方法和***进行详细说明。应理解,附图所示以及下文所述的实施例仅仅是说明性的,而不作为对本申请的限制。
图2示出了根据本发明的实施例的嵌入式设备的存储体系的示意图。其中包括三种类型:只读(ROM)存储器、一次性可编程(One-Time-Programmable,简称OTP)存储器和非易失性存储器(例如Flash)。具体地,ROM存储器是只读存储区域,用于存储制作芯片时的初级启动程序ROM Boot,该初级启动程序是不可更改的。OTP存储器是一次性编程的存储区域,该区域也在芯片内部,并且只能通过加载到芯片中的、正在运行中的可执行程序进行读/写。其中,可以加载到芯片内且对OTP存储器进行读/写操作的可执行程序包括ROMBoot、加载引导程序(Bootloader)、应用程序(app)。OTP存储器的特性是其中每个位(bit)只能写入一次,且一旦写入数据后就无法更改。OTP存储器常见的实现形式是固化在芯片内的一次性电融丝,一旦熔断,就不可恢复,如乐鑫产品ESP32上所使用的efuse。非易失性存储器,例如Flash存储器、SD卡、USB存储设备、NVRAM等,是可以多次读写数据的存储区域,用来存放加载引导程序、应用程序等。
实施例1
如图3所示,示出了本申请所提供的用于保护嵌入式设备固件数据的方法的一种具体实施方式的流程图。作为示例而非限制,固件可以存储在嵌入式设备的非易失性存储器中,用于控制嵌入式设备的基本功能。固件通常至少包括加载引导程序和应用程序。其中,固件中还包含引导标识,其独立于加载引导程序和应用程序,引导标识负责在加载引导程序执行结束后,从非易失性存储器(例如Flash)中读取启动标识,初始化操作***,然后跳转到指定的应用程序中运行。根据本发明的技术方案,固件数据中的引导标识部分可以进行加密,但通常不需要进行签名校验。应用程序用于执行设备的主要功能,如网络传输、网络认证,读写传感器的数据、设备OTA等。本领域技术人员可以理解,加载引导程序和应用程序都是可执行程序,其由源代码编译并生成,然后加载到处理器中运行。
参照图3,该方法具体包括以下步骤,其中,根据本公开的各种实施例,实线框中的操作是必须的,而虚线框中的操作是可选的。
S300:在嵌入式设备启动期间,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得执行以下S300(a)和S300(b)。
其中,初始启动程序段(ROM Boot)是存储在芯片中的ROM存储器中的初级启动程序,其负责初始化芯片的硬件资源,如时钟、电源、内存等。嵌入式设备上电后,将自动运行初始启动程序段。通常,初始启动程序段在嵌入式设备出厂前固化在芯片中的可执行数据,用户不可更改初始启动程序段中的数据,也不可以将初始启动程序段的数据读取到嵌入式设备外部。初始启动程序段只能由嵌入式设备中的芯片加载并执行。
S300(a):从OTP存储器读取交互模式标识符,交互模式标识符用于指示是否使能嵌入式设备的交互模式。
作为示例而非限制,交互模式标识符可以存储在OTP存储器中的一段定长的存储区域。通过读取这段定长存储区域中的数据,判断当前嵌入式设备是否处于使能交互模式或关闭交互模式。例如,可以定义交互模式标识符存储在OTP存储器中的一个长度为8bits的存储区域中,并且当该8bits中含有奇数个“1”时,表示关闭交互模式;而当该8bits中含有0个或偶数个“1”时,表示使能交互模式。应当理解的是,其中使能嵌入式设备的交互模式包括启用嵌入式设备的读写功能,使得可以接收外部命令并向嵌入式设备的内部存储区域,例如通过串口等通信接口下发命令并读写OTP存储器或者非易失性存储器。当确定嵌入式设备处于使能状态时,可选地,ROM Boot可以进一步通过判断芯片管脚的电平,决定是否进入嵌入式设备的交互模式。作为示例而非限制,OTP中存储的交互模式标识符仅可以由受信任的固件程序读取使用。本领域技术人员可以理解,由于交互模式标识符存储在OTP存储器中的一段定长的存储区域,可以根据这段定长存储区域的长度来设置可以重新启用交互模式的次数。例如,设置交互模式标识符存储在OTP存储器中的一个长度为7bits的存储区域中,并定义当其中含有奇数个“1”时代表禁止读写(即启用保护功能),当其中含有偶数个“1”时代表可以读写。初始状态交互模式标识码的值为“000 0000”,出厂时如果要禁止读写,则将该值修改为“000 0001”。如果要重新启用读写,例如返厂维修,则将该值改为“0000011”,以表示可以读写。在修改完成后,将其改为“000 0111”,以禁止读写。以此类推,当交互模式标识码的长度为7bits时,在出厂后一共可以重新启用3次。在具体应用中,可以根据需求在OTP存储器中预留适当的定长存储区域,以控制重新启用读写的次数。
S300(b):响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第一外部指令,获取外部密钥,并基于外部密钥和存储在OTP存储器中的嵌入式设备的唯一标识码生成对称密钥;其中,对称密钥用于对存储在非易失性存储器中的固件进行加密或解密。
作为示例而非限制,第一外部指令可以是由嵌入式设备的开发人员在主机端通过通信接口下发到嵌入式设备中的。其中,开发人员在主机端生成统一的外部密钥,并将其发送给不同的嵌入式设备。嵌入式设备进而基于该外部密钥以及其自身的唯一标识码生成本机唯一的对称密钥。示例而言,OTP存储器中设置有用于存储嵌入式设备唯一标识码的存储区域。该唯一标识码被预置在嵌入式设备OTP存储器中,只在特定的情况下可读,不可改写。此外,OTP存储器中还设置有与加密相关的存储区域,用于存储基于外部密钥和唯一标识码生成的对称密钥。可选地,OTP存储器中与加密相关的存储区域还可以存储外部密钥。在另外一些示例中,第一外部指令可以是包括在应用程序中的指令。
作为示例而非限制,可以按照嵌入式设备与主机端约定的规则,基于外部密钥和存储在OTP存储器中的嵌入式设备的唯一标识码以生成对称密钥。例如,约定的规则可以是将外部密钥与唯一标识码进行组合。举例而言,以对称密钥用于AES256加密算法为例,要求对称密钥的长度为32字节,因此,主机端生成24字节的随机数作为外部密钥,嵌入式设备端的唯一标识码为8字节,将二者拼接组合在一起,可以获得总长度为32字节的对称密钥。应理解的是,本发明对约定的规则并不做限制,可以采用任意规则基于外部密钥和唯一标识码进行组合以生成对称密钥。例如,也可以采用对二者进行加密以获得符合长度要求的对称密钥,或者采用压缩填充的方法对二者进行压缩以获得符合长度要求的对称密钥。根据本发明的方案,由于唯一标识码是存储在嵌入式设备的OTP存储器中,且外部不可读取该唯一标识码,因此根据唯一标识码和外部密钥生成的对称密钥也无法被外部获取。基于此,由于该固件数据是使用对称密钥加密后保存在非易失性存储器中的,即使外部窃取了嵌入式设备中的固件数据,也无法在其他设备上运行该加密的固件。因此,本发明的方案还可以实现固件反剽窃的功能,有效保护知识产权。本领域的技术人员可以理解,根据本发明的方案,可以支持一机一秘钥,在嵌入式设备开启安全功能后,仅设备自身知道用于加解密的对称密钥,而外界无法知道。通过这种实施方式,可以方便地在主机端管理密钥,并且容易实现产品批量使能安全功能。在嵌入式设备出厂前批量使能加密功能时,开发人员在主机端只需要使用同一外部密钥即可加密所有嵌入式设备,避免使用复杂的映射关系来记录不同的嵌入式设备所使用的密钥。相比之下,现有技术中的为了实现一机一密钥,通常面临无法批量使能安全功能、需要记录不同设备不同的密钥的难题。
进一步可选地,响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第二外部指令,修改OTP存储器中的交互模式标识符,以开启或关闭嵌入式设备的交互模式。通过修改交互模式标识符,开发人员可以便捷地启用或关闭嵌入式设备的安全功能。例如,在出厂时,可以修改该交互模式标识符以关闭交互模式,防止非法访问或数据篡改;在返修时,修改该交互模式标识符以开启交互模式,允许数据更新。作为示例,第二外部指令可以是包含在应用程序中的指令,或者是由主机端下发的指令。本领域技术人员可以理解,优选地,采用从主机端发送外部指令,以修改交互模式标识符,可以快速地批量对多个嵌入式设备设置关闭交互模式。在一些特殊情况下,也可以考虑使用OTA的方式更新应用程序,该应用程序中包含修改嵌入式设备的交互模式标识符的指令。
可选地,参照图3,该方法还包括执行初始启动程序段,以使得执行S300(c)和S300(d)。
S300(c):响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥;以及
S300(d):使用对称密钥解密非易失性存储器中的固件。可以理解的是,非易失性存储器中的固件数据可以包括加载引导程序、引导标识和应用程序。在本发明的实施例中,可以使用对称密钥对固件中的一部分数据进行加解密,例如,仅解密加载引导程序,以对其进行进一步验证以确定是否执行该程序,又例如,仅解密应用程序,以进一步验证是否执行该应用程序。
应理解的是,嵌入式设备在执行初始启动程序段时,当从非易失性存储器读取固件数据时可以自动应用该对称密钥进行解密,或者当向非易失性存储器中写入数据时自动应用该对称密钥进行加密,从而保证非易失性存储器中的关键数据均已加密。因此,根据本发明的方案,实现了在对非易失性存储器进行读写时应用对称密钥进行加解密,可以保护固件数据在在存储时或在加载执行时的机密性。
应理解的是,可选地,OTP存储器中还可以设置加密使能标识符。加密使能标识符存储在OTP存储器中一段定长的存储区域中,用于指示是否启动对非易失性存储器的解密读出数据、加密写入数据的读写方式。例如,加密使能标识符可以定义为长度为8bits,并且当该8bits中含有奇数个“1”时,表示实施上述对非易失性存储器的解密读出数据和加密写入数据的读写模式,例如通过启用嵌入式设备中的加解密电路实现;而当该8bits中含有0个或偶数个“1”时,表示直接对非易失性存储器进行读写操作而无需上述应用对称密钥进行加解密,例如通过关闭嵌入式设备中的加解密电路。
实施例2
如图4所示,示出了本申请所提供的用于保护嵌入式设备固件数据的方法的另一种具体实施方式的流程图。参照图4,该方法具体包括S402和S404:
S402:在嵌入式设备启动期间,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得执行以下S402(a)和S402(b)。
S402(a):获取存储在嵌入式设备的非易失性存储器中的加载引导程序中的签名公钥,并根据存储在嵌入式设备的一次性可编程(OTP)存储器中的签名公钥摘要对签名公钥进行验证。
应理解的是,可选地,签名公钥摘要是在嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入OTP存储器中的。作为示例而非限制,签名公钥摘要是签名公钥的摘要,其可以由开发人员在主机端制作、并从主机端发出命令,以指示嵌入式设备在接收到该命令时将签名公钥摘要写入OTP存储器中。值得注意的是,根据本发明的方案,可以设置仅当嵌入式设备处于使能交互模式的状态时才可以写入签名公钥摘要,从而可以有效地避免签名公钥摘要被攻击的风险。签名公钥摘要的作用是在加载引导程序时与签名公钥进行比对,如果不匹配,则说明签名公钥已经被篡改或替换,从而拒绝加载引导程序。这样,可以进一步增强加载引导程序的安全性和可靠性。本领域技术人员可以理解,OTP存储器实际是由一系列的一次性电熔丝组成,其不仅价格昂贵,且很容易占据芯片中的体积,如果过多使用OTP存储器将导致芯片体积变大、且成本增加。因此,作为本发明实施例的一个有益效果,通过在OTP存储器中存储签名公钥摘要,用于验证固件数据中的签名公钥,可以在只占用少量OTP存储器空间的情况下实现对签名公钥的验证,而不需要将数据量远大于该摘要的签名公钥直接存储在OTP存储器中。此外,由于嵌入式设备中并未直接存储签名公钥,即使嵌入式设备被攻击而泄露OTP存储器中的数据,攻击者也只能获取签名公钥摘要,而无法还原出签名公钥,从而大大地提高了安全性。同时,由于签名公钥并未存储在OTP存储器中,则完全可以避免公钥被篡改、进而影响设备安全的风险。
本领域技术人员可以理解,可以使用不同的实施方式获取签名公钥的摘要,例如,可以使用SHA256算法或其他完整性校验算法计算签名公钥的摘要。进一步地作为示例,可以获取加载引导程序中的签名公钥,并应用与主机端约定的校验算法计算该签名公钥的摘要,并将其与存储在OTP存储器中的签名公钥摘要进行比对。如果比对一致,则表明加载引导程序中的签名公钥通过验证,否则,则表明该签名公钥未通过验证。
S402(b):响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验。
作为示例而非限制,为了验证加载引导程序的合法性,本申请的方案可以使用通过验证的签名公钥对加载引导程序进行签名校验。如果签名校验成功,则表明该加载引导程序是经过合法的私钥签名的。本领域技术人员可以理解,主机端生成包含签名私钥和签名公钥的密钥对,并将签名公钥保存至家在引导程序中,具体的密钥生成方法可以是RSA签名算法、ECDSA签名算法或者其他任何可以用于签名校验的签名算法。
该方法还包括步骤S404:响应于加载引导程序签名校验通过,执行加载引导程序,以使得执行以下S404(a)。
S404(a):根据签名公钥,对存储在非易失性存储器中的应用程序进行签名校验。
应理解的是,可选地,OTP存储器中还可以设置签名校验使能标识符。签名校验使能标识符存储在OTP存储器中一段定长的存储区域中,用于指示是否启动对加载引导程序和/或应用程序的签名校验。例如,在一些示例中,如果签名校验使能标识符指示关闭签名校验,则跳过步骤S402(a)和S402(b)而直接执行加载引导程序,并且跳过步骤S404,由加载引导程序引导执行应用程序。相反地,如果签名校验使能标识符指示使能签名校验,则如上所述依次执行步骤S402(a)、S402(b)和S404。作为示例而非限制,签名校验使能标识符可以由开发人员在主机端通过向嵌入式设备发送命令的方式写入嵌入式设备的OTP存储器中。
可选地,在执行S402(a)和S402(b)之前,还包括:对加载引导程序进行完整性校验;以及,响应于加载引导程序通过完整性校验,对签名公钥进行验证。作为示例而非限制,主机端在制作固件时可以使用完整性校验算法计算获得加载引导程序的摘要,并将该摘要保存至嵌入式设备中。当初始启动程序段对加载引导程序进行完整性校验时,首先使用与主机端相同的完整性校验算法计算获得加载引导程序的摘要,并将其与保存的摘要进行比对,如果比对一致,则表明加载引导程序通过完整性校验。如本文所述的方案,其中,完整性校验算法可以是CRC32算法、SHA256算法或其他任意一种可以用于完整性校验的算法,以确保加载引导程序在传输或存储过程中没有被篡改或损坏,从而保证数据的完整性。
可选地,在执行S404之前,还包括:对应用程序进行完整性校验;以及,响应于应用程序通过完整性校验,对应用程序进行签名校验。作为示例而非限制,主机端在制作固件时可以使用完整性校验算法计算获得应用程序的摘要,并将该摘要保存至嵌入式设备中。当加载引导程序对应用程序进行完整性校验时,首先使用与主机端相同的完整性校验算法计算获得应用程序的摘要,并将其与保存的摘要进行比对,如果比对一致,则表明应用程序通过完整性校验。如本文所述的方案,其中,完整性校验算法可以是CRC32算法、SHA256算法或其他任意一种可以用于完整性校验的算法,以确保应用程序在传输或存储过程中没有被篡改或损坏,从而保证数据的完整性。
可选地,应理解的是,根据嵌入式设备是否使能加密或关闭加密,固件数据可以是加密的或者是未加密的。例如,例如通过OTP存储器中设置的加密使能标识符来指示嵌入式设备的加密使能状态。例如,当嵌入式设备使能加密,在执行步骤S402时,在嵌入式设备启动期间,执行初始启动程序段,以使得:从嵌入式设备的OTP存储器中读取对称密钥,以及,在从非易失性存储器读取固件数据时自动应用该对称密钥进行解密,以获得解密后的加载引导程序和/或引导标识和/或应用程序;或者,当向非易失性存储器中写入数据时自动应用该对称密钥进行加密,从而保证非易失性存储器中的关键数据均已加密。
作为示例而非限制,可选地,从OTP存储器读取对称密钥还包括:从OTP存储器中读取交互模式标识符,其指示嵌入式设备是否处于使能交互模式;以及,响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥。
作为示例而非限制,可选地,对称密钥是根据外部密钥和嵌入式设备的唯一标识码生成的,其中,外部密钥是在嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。优选地,外部密钥可以写入至OTP存储器中。
实施例3
如前所述,嵌入式设备在出厂前,为了保证设备的关键数据不被篡改和读取,可通过修改交互模式标识符来关闭嵌入式设备的交互模式,禁止读取OTP存储器中的数据(例如嵌入式设备的唯一标识码),并禁止读写非易失性存储器中的数据。但是,在出现返厂维修,例如需要定位产品问题的情况时,为了方便开发维护人员定位问题,需要重新启用嵌入式设备的交互模式,以方便开发人员获取设备的唯一标识码以及读写非易失性存储器上的数据。
为了解决这一问题,在本发明另一个实施例中,提供了一种通过OTA方式更新固件并重启嵌入式设备的交互模式。
可选地,根据本公开实施例的方法,还包括:通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及,根据签名公钥,对更新应用程序执行签名校验。作为示例而非限制,嵌入式设备可以通过无线通信方式或其他方式实现固件升级。
可选地,更新应用程序可以包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
更新应用程序通过完整性校验和签名校验,从而证明该更新应用程序是安全有效的,执行更改应用程序可以修改交互模式标识符,以重新切换至使能交互模式。因此,通过本发明的方案,可以通过一个安全可信的新应用程序,重新启用嵌入式设备的交互模式。
实施例4
根据本申请的另一个实施例,提供了一种嵌入式设备,参照图2,该嵌入式设备包括只读存储器(ROM)、非易失性存储器、一次性可编程(OTP)存储器以及加解密电路;其中,OTP存储器中存储有交互模式标识符和嵌入式设备的唯一标识码,非易失性存储器中存储有固件;嵌入式设备配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:从OTP存储器读取交互模式标识符;以及,问响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第一外部指令,获取外部密钥,并基于外部密钥和嵌入式设备的唯一标识码生成对称密钥;其中,加解密电路用于使用对称密钥对非易失性存储器中的固件进行加密或解密。
可选地,固件包括加载引导程序,并且嵌入式设备被配置为执行只读存储器(ROM)中的初始启动程序段,以使得:响应于交互模式标识符指示关闭嵌入式设备的交互模式,加解密电路从OTP存储器读取对称密钥;以及,加解密电路使用对称密钥解密非易失性存储器中的加载引导程序。
在本发明的另一个实施例中,嵌入式设备包括芯片和非易失性存储器,芯片中包括CPU、只读存储器、OTP存储器、加解密电路以及缓冲存储器(如RAM)。非易失性存储器用于存储固件数据,包括加载引导程序、引导标识和应用程序。根据本发明的一个实施例,加解密电路直接与RAM存储器连接,实现按需解密的功能。具体地,当需要运行固件数据时,只从非易失性存储器中读取相应的部分数据(例如加载引导程序或应用程序),该部分数据经过加解密电路解密后,传输至RAM存储器中。通过这种方式,本申请的方案无需对加密后的完整固件数据进行解密,并将其整体存入至RAM存储器中,而是仅在运行时按需读取并部分解密。在当下固件数据的体积越来越大的情况下,现有技术中将完整固件数据解密并存入RAM存储器中,不仅会导致需要容量更大且更昂贵的RAM存储器,而且将解密后的全部固件数据全部转存到RAM存储器会导致嵌入式设备的启动时间长、其可实施性一般。相比之下,本发明的实施例则可以节省RAM存储器的空间,且缩短了嵌入式设备的启动时间,具有很高的可操作性。
作为另一个替代性的实施示例,可选地,还可以在OTP存储器中设置加密使能标识符,以指示是否启用加解密电路。具体地,加密使能标识符对应于OTP存储器中的只能操作一次的电路,类似于电熔丝。当烧录该加密使能标识符时,使得其在嵌入式设备的芯片中的相应电路发生状态改变,例如断开或者桥接。例如,在一个示例中,设置当加密使能标识符指示启用加解密电路时,该对应电路被桥接,从而使加解密电路与嵌入式设备芯片内部的RAM存储器连通,后续从非易失性存储器到芯片的固件数据的读写操作都会自动经过加解密电路进行加密(当从芯片向非易失性存储器写数据时)或者解密(当从非易失性存储器读数据至芯片时)。而当加密使能标识符指示关闭加解密电路时,该相应电路被断开,从而使非易失性存储器与RAM存储器直接相连,不经过加解密电路。这样,通过设置加密使能标识符,可以灵活地设置嵌入式设备的安全措施,确定是否对固件数据进行自动加解密。
可选地,如果启用了加解密功能,则根据外部密钥和从OTP存储器中读取的嵌入式设备的唯一标识码,生成嵌入式设备的对称密钥,该对称密钥用于加解密固件数据;或者,如果已经将生成的对称密钥存储至OTP存储器中,则直接从OTP存储器中读取对称密钥。
进一步可选地,嵌入式设备还配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:在使用对称密钥解密非易失性存储器中的固件后,对加载引导程序进行完整性校验。
进一步可选地,嵌入式设备还配置为在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:响应于加载引导程序通过完整性校验,获取加载引导程序中的签名公钥,并根据OTP存储器中的签名公钥摘要对签名公钥进行验证;以及,响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验。
进一步可选地,固件包括应用程序,以及,嵌入式设备配置为在启动期间,执行加载引导程序,以使得:加解密电路使用对称密钥解密应用程序;对应用程序进行完整性校验。可选地,执行加载引导程序还使得:响应于应用程序通过完整性校验,根据加载引导程序中的签名公钥,对应用程序进行签名校验。
可选地,在启动期间,执行只读存储器(ROM)中的初始启动程序段,以使得:响应于交互模式标识符指示使能嵌入式设备的交互模式,根据接收的第二外部指令,修改OTP存储器中的交互模式标识符,以开启或关闭嵌入式设备的交互模式。
可选地,嵌入式设备配置为通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及根据加载引导程序中的签名公钥,对更新应用程序执行签名校验。
进一步可选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令;以及嵌入式设备还配置为:当执行更新应用程序时,修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
根据本发明实施例中,由于设备在出厂时在芯片上使能了安全功能,关闭了嵌入式设备的交互模式,除了通过OTA方式向设备注入新固件数据,外界完全没有办法读/写设备的固件数据。因此,本发明实施例的一个益处在于即使信任根(例如初始启动程序段)被篡改或破坏,也会因为无法通过签名公钥摘要的验证而停止后续验证步骤。此外,嵌入式设备在运行时,需将加密的固件数据加载到芯片内部才经过内部的加解密电路解密而使用,因此外界攻击者也无法从电气信号上分析数据。
实施例5
根据本申请的另一个实施例,提供了一种嵌入式设备,参照图2,该嵌入式设备包括只读存储器(ROM)、非易失性存储器以及一次性可编程(OTP)存储器;其中,只读存储器(ROM)存储有初始启动程序段,OTP存储器中存储有签名公钥摘要,非易失性存储器中存储有加载引导程序和应用程序;嵌入式设备配置为在启动期间,执行初始启动程序段,以使得:a)获取加载引导程序中的签名公钥,并根据签名公钥摘要对签名公钥进行验证;以及响应于签名公钥验证通过,使用签名公钥对加载引导程序进行签名校验;以及,b)响应于加载引导程序签名校验通过,执行加载引导程序,以使得:根据签名公钥,对应用程序进行签名校验。
可选地,嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:在对签名公钥进行验证之前,对加载引导程序进行完整性校验;以及响应于加载引导程序通过完整性校验,对签名公钥进行验证。
可选地,嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:在对应用程序进行签名校验之前,对应用程序进行完整性校验;以及,响应于应用程序通过完整性校验,对应用程序进行签名校验。
可选地,签名公钥摘要是在嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入OTP存储器中的。
可选地,嵌入式设备还包括加解密电路;以及嵌入式设备还配置为在启动期间,执行初始启动程序段,以使得:从OTP存储器读取对称密钥;以及,加解密电路使用对称密钥对存储在非易失性存储器中的加载引导程序和/或引导标识和/或应用程序进行加密或解密。
可选地,其中,从OTP存储器读取对称密钥还包括:从OTP存储器中读取交互模式标识符,其指示嵌入式设备是否处于使能交互模式;以及,响应于交互模式标识符指示关闭嵌入式设备的交互模式,从OTP存储器读取对称密钥。
可选地,对称密钥是根据外部密钥和嵌入式设备的唯一标识码生成的,其中,外部密钥是在嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。优选地,外部密钥可以写入至OTP存储器中。
可选地,嵌入式设备还配置为通过OTA远程方式接收更新应用程序;由当前正在运行的应用程序对更新应用程序执行完整性校验;以及,根据加载引导程序中的签名公钥,对更新应用程序执行签名校验。
可选地,更新应用程序包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改OTP存储器中的交互模式标识符,使得交互模式标识符指示使能嵌入式设备的交互模式。
本领域的技术人员可以理解,通常,OTP存储器是一种特殊的非易失性存储器。OTP存储器中的数据位只可以烧写一次,且当其被烧写后就无法再被烧写了,这就是OTP存储器的一次性烧写特性。OTP存储器中还提供有控制位,这些控制位用于控制对应数据位的读写权限,且这些控制位也只能烧写一次。因此,如果与OTP的某个数据位对应的控制位被烧写(例如从1写为0),则该控制位对应的电路就被破坏了,这就意味着该对应的数据位就再也不能进行写操作了。对于OTP存储器,可以将不同的数据信息分为不同的区块(block),对若干区块分别设置其读/写控制位,以此达到控制不同区块的读写权限不同的目的。例如,可以将一些敏感的数据,如唯一标识码,放在一个区块中,并将其读/写控制位烧写,使其只能被读取,而不能被写入、修改或者擦除。这样可以提高数据的安全性和可靠性。基于这一原理,作为示例而非限制,表1示例性地示出根据本申请的实施例的嵌入式设备的OTP存储器中的相应字段,并解释根据本发明的方案中,各个相应字段是否可读或者是否可写及其条件。其中字段可选表示OTP存储器中可以包括相应字段,也可以不包括相应字段。
表1
示例1
如图5所示,示出了根据本发明的一个示例的用于保护嵌入式设备固件数据的方法的示意流程图。
嵌入式设备在上电后,将自动运行存储在ROM中的初始启动程序段,初始启动程序段从OTP存储器中读取交互模式标识符,以确定是否使能嵌入式设备的交互模式。如果处于使能交互模式的状态,进一步地,初始启动程序段可以通过判断嵌入式设备的芯片的相应管脚(例如chip_status管脚)的电平高低决定是否立即进入交互模式。在使能交互模式的情况下,嵌入式设备可以接收外部指令,向OTP存储器中读写数据,以及读写非易失性存储器中的数据。在关闭交互模式的情况下,在执行初始启动程序段后,跳转至加载引导程序。加载引导程序负责读取非易失性存储器(例如Flash)中的启动标识,并初始化操作***。然后,在执行加载引导程序后,跳转到由引导标识指示的应用程序中运行。
进一步地,示例1中,加载引导程序、引导标识和应用程序可以被加密保存在非易失性存储器中。在执行加载引导程序和应用程序之前,还可以包括从OTP存储器中读取对称密钥,并使用该对称密钥解密非易失性存储器中的固件数据,该固件数据包括引导加载程序、引导标识和应用程序。
进一步地,示例1中,在执行加载引导程序和应用程序之前,还可以包括对加载引导程序进行完整性校验和/或签名校验,以及对应用程序进行完整性校验和/或签名校验。具体的完整性校验和签名校验执行方法参考上文所述,在此不再赘述。
示例2
如图6所示,示出了根据本发明的另一个示例的用于保护嵌入式设备固件数据的方法的示意流程图。
根据示例2,建立了从初始启动程序段到应用程序直至接收并执行更新应用程序的完整的固件安全方案。具体而言,在嵌入式设备启动期间,如图6中的步骤602所示,执行存储在嵌入式设备的只读存储器(ROM)中的初始启动程序段。接着,执行步骤604,获取存储在嵌入式设备的非易失性存储器中的加载引导程序中的签名公钥,并根据存储在嵌入式设备的一次性可编程(OTP)存储器中的签名公钥摘要对签名公钥进行验证。响应于签名公钥验证通过,执行步骤606,使用经过验证的签名公钥对加载引导程序进行签名校验。响应于加载引导程序签名校验通过,执行步骤608,执行加载引导程序。在加载引导程序执行完成后,继续执行步骤610,根据签名公钥对存储在非易失性存储器中的应用程序进行签名校验。响应于应用程序签名校验通过,执行步骤612,执行应用程序。可选地,当嵌入式设备接收到更新应用程序(例如通过OTA方式或者本地更新的方式接收),执行步骤614,根据签名公钥对更新应用程序进行签名校验。如果更新应用程序通过签名校验,则执行步骤616,以执行更新应用程序。
进一步地,示例2中,加载引导程序和应用程序可以被加密保存在非易失性存储器中。在执行加载引导程序和应用程序之前,还可以包括从OTP存储器中读取对称密钥,并使用该对称密钥解密非易失性存储器中的固件数据,该固件数据包括引导加载程序和应用程序。
进一步地,示例2中,在执行加载引导程序和应用程序之前,还可以包括对加载引导程序进行完整性校验,以及对应用程序进行完整性校验。具体的完整性校验执行方法参考上文所述,在此不再赘述。
优选地,签名公钥摘要是在嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入OTP存储器中的,当嵌入式设备开启安全功能(例如出厂时关闭交互模式)后,则无法对签名公钥摘要进行修改,可以有效防止外部攻击或篡改,保证了签名公钥的可信度。因此,本方案从初始启动程序段开始,首先根据签名公钥摘要对签名公钥进行验证,逐次验证加载引导程序和应用程序,只有验证通过的固件才会被加载和执行。通过以上的固件安全方案,本方案可以有效地保护嵌入式设备中的固件不被窃取,也不可被篡改、伪造或泄露,而且,通过对称密钥加密的方式,外部不可破解固件的明文数据,从而保证设备的安全性和可靠性。此外,本方案通过更新固件程序并对其验证,可以在保证更新固件程序是可信的基础上重新启用嵌入式设备的交互模式,方便后期维护。
根据本发明的方案,从不可更改的初始启动程序段处开始建立校验,通过存储在OTP存储器中的签名公钥摘要对签名公钥进行验证,并在签名公钥通过验证的基础上用于后续的签名校验,实现了对引导加载程序和应用程序的逐级验证,可以建立完整的信任链,方案的安全性高。此外,本发明的技术方案中实现了可编程的安全功能设置,即允许设备在出厂前选择启用哪些安全功能,例如,可选地应用完整性校验、固件加密措施等。其中,最高安全级别采用三重校验,即数据加密、完整性校验和签名校验,安全性能高。更进一步地,本发明的方案还实现了从初始启动程序段、加载引导程序、应用程序到更新应用程序的逐级信任模式,一方面真正实现了完整信任链的建立,另一方面创造性地可以通过更新应用程序重新开启交互模式,便于后期管理维护。
如上示例1和示例2的方法,可以实现高安全性。对于签名校验部分,由于嵌入式设备中只存储了签名公钥摘要,而从未保存签名公钥和签名私钥,因此外部攻击者无法从嵌入式设备中获取签名公钥或私钥以伪造签名数据。对于加密部分,实现了嵌入式设备的一机一密钥机制,并且用于加解密的对称密钥是在嵌入式设备内部结合外部密钥与存储在OTP存储器中的设备自身的唯一标识码而自动生成的,在使能加密后,即便主机端的外部密钥发生泄露,也因缺少唯一标识码而无法获得对称密钥,进而无法破解嵌入式设备中的加密的固件数据。而且,即便暴力地将嵌入式设备上的固件数据拷贝到其他设备上,由于缺少嵌入式设备的唯一标识码,其他设备也无法加载和运行该固件,因此起到了保护知识产权的作用。
示例3
如图7所示,示出了根据本发明的一个示例的执行初始启动程序段的示意流程图。如前所述,初始启动程序段(ROM Boot)是一种固化在芯片中的可执行数据,其在出厂前就已经写入,用户无法修改或导出,只能由芯片加载运行。根据本发明的方案,当嵌入式设备上电时,初始启动程序段会根据OTP存储器中的一些字段来决定是否执行一些功能。
参考图7,初始启动程序段的主要运行流程如下,其中,根据本公开的各种实施例,实线框中的操作是必须的,而虚线框中的操作是可选的:
读取OTP存储器中的交互模式标识符,判断是否使能嵌入式设备的交互模式。并且可选地,进一步判断是否进入交互模式,例如,可以通过判断芯片的相应引脚电平高低。如果确定进入交互模式,则主机端可以通过串口等通信接口向设备发送命令,并读写部分OTP存储器中的数据,以及读写非易失性存储器。
如果确定不进入交互模式,则继续执行初始启动程序段。可选地,从OTP存储器中读取加密使能标识符,判断是否启用加解密。如果启用了加解密功能,则根据外部密钥和从OTP存储器中读取的嵌入式设备的唯一标识码,生成嵌入式设备的对称密钥,该对称密钥用于加解密固件数据;或者,如果已经将生成的对称密钥存储至OTP存储器中,则直接从OTP存储器中读取对称密钥。然后,嵌入式设备可以在读写存储在非易失性存储器中的固件数据时,自动进行加密和解密,以保证非易失性存储器上的关键数据都是加密的,从而提高固件数据的机密性。在本示例中,可以使用对称密钥解密存储在非易失性存储器中的固件数据,以获取解密后的加载引导程序和应用程序。
可选地,进一步读取加载引导程序中的完整性校验码,并用与主机端相同的完整性校验算法重新计算加载引导程序的摘要,如果计算得到的摘要与完整性校验码一致,则说明加载引导程序的完整性校验通过。如果未通过完整性校验,则提示错误,并且驱动嵌入式设备重启。
可选地,读取OTP存储器中的签名校验使能标识符,判断是否启用签名校验。如果启用了签名校验功能,则先验证加载引导程序中的公钥是否正确。具体方法是用完整性校验算法(例如SHA 256算法)计算加载引导程序中的公钥的摘要,并与OTP存储器中预存的签名公钥摘要进行比较,如果一致,则认为该公钥是正确的。然后用该公钥对加载引导程序中的签名进行校验,如果校验通过,就说明该加载引导程序是由合法的私钥签名的,保证了该加载引导程序的合法性。相反的,如果确定计算的公钥的摘要与预存的签名公钥摘要不一致,则认为公钥不正确。在公钥不正确的情形下,或者在公钥正确、但加载引导程序未通过签名校验的情形下,提示错误,且驱动嵌入式设备重启。
参照下表2所示,示出了一个示例中的加载引导程序中的主要内容。
表2
示例4
如图8所示,示出了根据本发明的一个示例的执行加载引导程序的示意流程图。参考图8,加载引导程序的主要运行流程如下,其中,根据本公开的各种实施例,实线框中的操作是必须的,而虚线框中的操作是可选的:
可选地,读取应用程序中的完整性校验码,并用与主机端相同的完整性校验算法重新计算应用程序的摘要,如果计算得到的摘要与完整性校验码一致,则说明应用程序的完整性校验通过。如果未通过完整性校验,则提示错误。
可选地,读取OTP存储器中的签名校验使能标识符,判断是否启用签名校验。如果启用了签名校验功能,则使用加载引导程序中的公钥对应用程序中的签名进行校验,如果校验通过,就说明该应用程序是由合法的私钥签名的,保证了该应用程序的合法性。在应用程序未通过签名校验的情形下,提示错误。在另一个实施例中,直接读取加载引导程序中的签名公钥,并使用该签名公钥对应用程序中的签名进行校验。
优选地,如果应用程序的完整性校验或者签名校验失败,还可以标记该应用程序所在分区的数据为无效数据,并尝试在非易失性存储器中寻找其他可用的应用程序分区。依次对每个分区的应用程序,重复执行上述图8中的步骤,以执行校验。如果最终没有找到可用的应用程序,则认为嵌入式设备已经损坏或者遭受攻击,并驱动嵌入式设备重启。
参照下表3所示,示出了一个示例应用程序中的主要内容。
表3
示例5
根据本发明的方案,嵌入式设备可以通过OTA的方式来远程更新应用程序。为了确保通过OTA方式接收到的更新应用程序是安全的,当前运行的应用程序也会对更新应用程序进行校验。主机端根据签名私钥对编译生成的更新应用程序进行签名,并通过OTA方式下发至嵌入式设备。如图9所示,示出了根据本发明的一个示例的嵌入式设备通过OTA更新应用程序的示意流程图,其由当前正在运行的应用程序执行。其中,根据本公开的各种实施例,实线框中的操作是必须的,而虚线框中的操作是可选的。
嵌入式设备通过OTA下载更新引用程序,并将其写入至非易失性存储器中的相应分区中。
可选地,当前正在运行的应用程序读取更新应用程序中的完整性校验码,并用与主机端相同的完整性校验算法重新计算更新应用程序的摘要,如果计算得到的摘要与完整性校验码一致,则说明更新应用程序的完整性校验通过。如果未通过完整性校验,则提示错误。
可选地,读取OTP存储器中的签名校验使能标识符,判断是否启用签名校验。如果启用了签名校验功能,则使用加载引导程序中的公钥对更新应用程序中的签名进行校验,如果校验通过,就说明该更新应用程序是由合法的私钥签名的,保证了该更新应用程序的合法性。在更新应用程序未通过签名校验的情形下,提示错误。
优选地,如果更新应用程序通过校验,则把更新应用程序设置为下次重启时加载引导程序将要引导的应用程序。进一步地,可以驱动嵌入式设备设备重启,以执行更新应用程序。
如果更新应用程序的完整性校验或者签名校验失败,则提示错误,指示OTA失败。
根据本发明的方案,可以实现安全地更新应用程序。
示例6
上文已经详细介绍了根据本发明的嵌入式设备的安全固件功能的具体原理,在设备开发过程中可以根据这些具体原理实现对应的代码,生成包含上述功能的固件。通常,在设备的功能开发完成后,为了保护知识产权,同时保护用户隐私与设备安全,在设备出厂前,需要关闭设备的交互模式,以启用设备的安全功能。启用安全功能后,设备将按照前述的初始启动程序段、加载引导程序、应用程序中的校验流程执行校验和加解密。如图10所示,示出了根据本发明的示例的通过主机端启用嵌入式设备的安全功能的示意流程图。
主机端生成用于签名校验的密钥对,包括签名私钥和签名公钥。签名私钥的私密性是保证该方案的关键因素,因此开发维护人员在得到该签名私钥后,应保证该私钥存储在安全的位置,并仅由指定人员访问。
主机端编译生成固件数据,例如包括加载引导程序、引导标识和应用程序,并分别为加载引导程序和应用程序生成签名数据和完整性校验码。主机端进一步为加载引导程序附加签名数据、完整性校验码和签名公钥,并为应用程序附加签名数据和完整性校验码。
主机端重启嵌入式设备,并通过控制嵌入式设备的管脚电平,使嵌入式设备进入交互模式。
主机端生成签名公钥对应的摘要,并将该签名公钥摘要写入到嵌入式设备的OTP存储器中。
主机端向嵌入式设备发送命令,修改签名校验使能标识符,以启用签名校验功能。此时,嵌入式设备的OTP存储器中的校验使能标识符字段被设置为有效。
主机端向嵌入式设备发送命令,请求读取存储在OTP存储器中的嵌入式设备的唯一标识码。嵌入式设备向主机端返回嵌入式设备的唯一标识码。
进一步地,主机端生成外部密钥,与前述读取的唯一标识码按照约定的规则生成用于加解密的对称密钥。示例性地,此处以使用AES256加密算法作为加解密算法为例,其要求密钥长度为32bytes,因此,主机端可生成长度为24bytes的随机数作为外部密钥,并结合长度为8bytes的唯一标识码,获得总长度为32bytes的对称密钥。值得注意的是,本发明对具体的生成规则不作限定。
在计算获得对称密钥后,主机端使用该对称密钥根据与嵌入式设备约定的加密算法加密固件数据。其中,固件数据包括附加签名数据、完整性校验码和签名公钥的加载引导程序数据、引导标识、以及附加签名数据和完整性校验码的应用程序数据。可选地,主机端在完成固件加密后,可以将计算获得的对称密钥从主机端中删除。因此,本发明的一个技术优势在于不需要在主机端记录每个嵌入式设备的对称密钥,而仅嵌入式设备知道自身的对称密钥的情况下,实现一机一密钥的效果,从而实现高安全性。
主机端发送命令,将上述加密后的固件数据导入到嵌入式设备的非易失性存储器中。
随后,主机端发送命令,该命令中包含外部密钥的信息,以将前述生成的外部密钥发送给嵌入式设备。优选地,嵌入式设备在获得外部密钥后,可以使用外部密钥和设备自身的唯一标识码,按照与主机端约定的规定也生成同样的对称密钥。值得注意的是,由于采用外部密钥结合唯一标识码进一步生成对称密钥用于加密,外界无法知道对称密钥的存在,更无法访问嵌入式设备内部的OTP存储器以获取唯一标识码,当然也就无法基于外部密钥和唯一标识码生成对称密钥。另外,即使外界获知了外部密钥,也无法读取嵌入式设备的唯一标识码,因此仍无法生成得到完整的对称密钥,从而可以最大程度地保护了对称密钥的安全。而且,由于每个嵌入式设备的唯一标识码不同,本发明的方案可以在主机端采用统一的外部密钥发送至多个嵌入式设备,最终嵌入式设备上用于加解密时所使用的对称密钥各不相同,在方便配置的前提下实现了一机一密的效果。在设备出厂后,只有设备本身知道自己使用的对称密钥,这最大限度地保护了设备的安全性。
可选地,主机端还可以发送命令,将加密使能标识符修改为有效,以启用对非易失性存储器的加密读写。
完成上述设置之后,主机端发送命令,将交互模式标识符修改为关闭状态,以关闭嵌入式设备的交互模式。此时,外界无法读取OTP存储器中的数据,也不能对非易失性存储器进行读写,亦即设备启用了安全功能,可以出厂。本领域技术人员可以理解,需要保证设备出厂时已经处于关闭交互模式的状态,以实现安全目的,否则若设备仍处于使能交互模式时便出厂,则非法操作者有机会获取OTP存储器中的用于加密的信息,从而可能使得设备遭受攻击风险。
示例7
如上所述,例如根据示例6,嵌入式设备在出厂前,为了防止设备的关键数据被篡改和读取,可以通过修改交互使能标识符的值来关闭交互模式,以保护固件数据的安全。但是,如果设备出现故障需要返厂维修,为了帮助开发维护人员快速定位问题,就需要重新启用嵌入式设备的交互模式,以便开发人员能够获取更多信息。为了实现这一目的,本发明提供了一种通过OTA方式获得更新应用程序以重启交互模式的方法。如图11所示,示出了根据本发明的示例的利用更新应用程序重启交互模式的方法的示意流程图。
主机端首先生成更新应用程序,其中包括修改交互模式标识符的代码。如前所述,可以根据期望的可重启交互模式的次数,确定交互模式标识符的存储区域长度。进一步地,主机端使用签名私钥对该更新应用程序进行签名,并附加完整性校验码。可选地,主机端可以使用对称密钥加密该更新应用程序的数据。
主机端可以通过OTA方式下发该更新应用程序,嵌入式设备在接收到后使用本地的对称密钥进行解密,并按照如上述图9的示例对该更新引用程序进行校验。当更新应用程序通过校验后,代表该更新应用程序是安全有效的。因此,在嵌入式设备重启后,开始执行该更新应用程序。其中,更新应用程序中包括的代码使得修改OTP存储器中的交互使能标识符,以使能嵌入式设备的交互模式。进一步地,驱动嵌入式设备进行重启,以便于开发人员在使能交互模式的情况下,对嵌入式设备进行安全地读写操作。
本发明介绍了用于保护嵌入式设备的固件安全的多个实施例。在一方面,利用OTP存储器,实现了交互模式的使能和关闭状态的切换,可以方便地启用安全功能。通过设置交互模式标识符,启用安全功能方便,一般而言,在设备出厂时,仅通过图10所述步骤在主机端与嵌入式设备之间进行简单的交互,即可以快速批量使能安全功能,配置后嵌入式设备可立即出厂使用,节省了时间和成本。后续维护中,也可以方便地通过OTA方式更新固件,支持远程认证,且在设备开启安全功能后,新的固件只需要经过数字签名即可下发到设备上,设备将进行签名校验,并在写入数据到非易失性存储器时自动进行加密写入,简化了固件更新的流程和操作。并且,方便设备返厂维修,设备使能安全功能后,允许通过OTA获取安全的更新固件,重新启用设备的交互功能,方便查看、读写设备的信息,例如读写OTP存储器和读写非易失性存储器等,提高了设备维修的效率和质量。在另一方面,通过在OTP存储器中存储嵌入式设备的唯一标识码,支持一机一秘钥,开启安全功能后,仅设备自身知道自己的密钥,外界无法知道当前设备使用的密钥,有效防止密钥泄露。并且,密钥管理方便,不管是签名校验还是固件加密,在主机端,维护人员仅管理签名密钥和统一的外部密钥即可,而无需针对每个嵌入式设备分别保存相应的用于加解密的对称密钥,减少了密钥管理的复杂度和风险。在又一方面,从不可更改的初始启动程序段处开始建立校验,确保设备的安全性和可靠性。同时,可选地结合签名校验、完整性校验和数据加密技术,可以完整地保护固件数据的知识产权,防止竞争对手窃取固件,同时保护用户的数据安全,避免数据被篡改或窃取。本发明的多个实施例考虑了从策略、实施到后期维护等方面的安全机制设计,有效地解决了现有技术中存在的问题。
虽然出于本公开的目的已经描述了本申请各方面的各种实施例,但是不应理解为将本公开的教导限制于这些实施例。在一个具体实施例中公开的特征并不限于该实施例,而是可以和不同实施例中公开的特征进行组合。例如,在一个实施例中描述的根据本申请的方法的一个或多个特征和/或操作,亦可单独地、组合地或整体地应用在另一实施例中。本领域技术人员应理解,还存在可能的更多可选实施方式和变型,可以对上述***进行各种改变和修改,而不脱离由本申请权利要求所限定的范围。

Claims (19)

1.一种用于保护嵌入式设备固件数据的方法,其特征在于,所述方法包括以下步骤:
在所述嵌入式设备启动期间,执行存储在所述嵌入式设备的只读存储器(ROM)中的初始启动程序段,以使得:
-获取存储在所述嵌入式设备的非易失性存储器中的加载引导程序中的签名公钥,并根据存储在所述嵌入式设备的一次性可编程(OTP)存储器中的签名公钥摘要对所述签名公钥进行验证;以及
-响应于所述签名公钥验证通过,使用所述签名公钥对所述加载引导程序进行签名校验;
以及,响应于所述加载引导程序签名校验通过,执行所述加载引导程序,以使得:
-根据所述签名公钥,对存储在所述非易失性存储器中的应用程序固件进行签名校验。
2.如权利要求1所述的方法,其特征在于,所述方法还包括执行所述初始启动程序段,以使得:
-在对所述签名公钥进行验证之前,对所述加载引导程序进行完整性校验;以及
-响应于所述加载引导程序通过完整性校验,对所述签名公钥进行验证。
3.如权利要求1所述的方法,其特征在于,所述方法还包括执行所述初始启动程序段,以使得:
-在对所述应用程序固件进行签名校验之前,对所述应用程序固件进行完整性校验;以及
-响应于所述应用程序固件通过完整性校验,对所述应用程序固件进行签名校验。
4.如权利要求1所述的方法,其特征在于,其中,
所述签名公钥摘要是在所述嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入所述OTP存储器中的。
5.如权利要求1所述的方法,其特征在于,所述方法还包括执行所述初始启动程序段,以使得:
-从所述OTP存储器读取对称密钥;以及
-使用所述对称密钥对存储在所述非易失性存储器中的加载引导程序和/或引导标识和/或应用程序进行加密或解密。
6.如权利要求5所述的方法,其特征在于,其中,从所述OTP存储器读取对称密钥还包括:
-从所述OTP存储器中读取交互模式标识符,其指示所述嵌入式设备是否处于使能交互模式;以及
-响应于所述交互模式标识符指示关闭所述嵌入式设备的交互模式,
从所述OTP存储器读取对称密钥。
7.如权利要求5所述的方法,其特征在于,其中,
所述对称密钥是根据外部密钥和所述嵌入式设备的唯一标识码生成的,其中,所述外部密钥是在所述嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。
8.如权利要求1所述的方法,其特征在于,
所述方法还包括通过OTA远程方式接收更新应用程序固件;
由当前正在运行的应用程序固件对所述更新应用程序固件执行完整性校验;以及
根据所述签名公钥,对所述更新应用程序固件执行签名校验。
9.如权利要求8所述的方法,其特征在于,
所述更新应用程序固件包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改所述OTP存储器中的交互模式标识符,使得所述交互模式标识符指示使能所述嵌入式设备的交互模式。
10.一种嵌入式设备,其特征在于,
所述嵌入式设备包括只读存储器(ROM)、非易失性存储器以及一次性可编程(OTP)存储器;其中,只读存储器(ROM)存储有初始启动程序段,所述OTP存储器中存储有签名公钥摘要,所述非易失性存储器中存储有加载引导程序和应用程序;
所述嵌入式设备配置为在启动期间,执行所述初始启动程序段,以使得:
-获取所述加载引导程序中的签名公钥,并根据所述签名公钥摘要对所述签名公钥进行验证;以及
-响应于所述签名公钥验证通过,使用所述签名公钥对所述加载引导程序进行签名校验;
以及,响应于所述加载引导程序签名校验通过,执行所述加载引导程序,以使得:
-根据所述签名公钥,对所述应用程序固件进行签名校验。
11.如权利要求10所述的设备,其特征在于,
所述嵌入式设备还配置为在启动期间,执行所述初始启动程序段,以使得:
在对所述签名公钥进行验证之前,对所述加载引导程序进行完整性校验;以及
响应于所述加载引导程序通过完整性校验,对所述签名公钥进行验证。
12.如权利要求10所述的设备,其特征在于,
所述嵌入式设备还配置为在启动期间,执行所述初始启动程序段,以使得:
-在对所述应用程序固件进行签名校验之前,对所述应用程序固件进行完整性校验;以及
-响应于所述应用程序固件通过完整性校验,对所述应用程序固件进行签名校验。
13.如权利要求10所述的设备,其特征在于,
所述签名公钥摘要是在所述嵌入式设备处于使能交互模式的状态时根据接收到的外部指令写入所述OTP存储器中的。
14.如权利要求10所述的设备,其特征在于,
所述嵌入式设备还包括加解密电路;以及
所述嵌入式设备还配置为在启动期间,执行所述初始启动程序段,以使得:
-从所述OTP存储器读取对称密钥;以及
-所述加解密电路使用所述对称密钥对存储在所述非易失性存储器中的加载引导程序和/或引导标识和/或应用程序进行加密或解密。
15.如权利要求14所述的设备,其特征在于,其中,从所述OTP存储器读取对称密钥还包括:
-从所述OTP存储器中读取交互模式标识符,其指示所述嵌入式设备是否处于使能交互模式;以及
-响应于所述交互模式标识符指示关闭所述嵌入式设备的交互模式,
从所述OTP存储器读取对称密钥。
16.如权利要求14所述的设备,其特征在于,其中
所述对称密钥是根据外部密钥和所述嵌入式设备的唯一标识码生成的,其中,所述外部密钥是在所述嵌入式设备的交互模式使能时,根据接收的第一外部指令而获取的。
17.如权利要求10所述的设备,其特征在于,
所述嵌入式设备还配置为通过OTA远程方式接收更新应用程序固件;
由当前正在运行的应用程序固件对所述更新应用程序固件执行完整性校验;以及
根据所述加载引导程序中的签名公钥,对所述更新应用程序固件执行签名校验。
18.如权利要求17所述的设备,其特征在于,
所述更新应用程序固件包括用于重新启用嵌入式设备的交互模式的指令,当其被执行时修改所述OTP存储器中的交互模式标识符,使得所述交互模式标识符指示使能所述嵌入式设备的交互模式。
19.一种非暂时性计算机可读介质,其上存储有用于在嵌入式设备中提供固件数据保护的计算机可读指令,其特征在于,所述计算机可读指令在由处理器执行时,使得所述嵌入式设备执行如权利要求1-9中的任一项所述的方法。
CN202311739833.5A 2023-12-15 2023-12-15 用于保护嵌入式设备固件数据的方法以及嵌入式设备 Pending CN117708897A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311739833.5A CN117708897A (zh) 2023-12-15 2023-12-15 用于保护嵌入式设备固件数据的方法以及嵌入式设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311739833.5A CN117708897A (zh) 2023-12-15 2023-12-15 用于保护嵌入式设备固件数据的方法以及嵌入式设备

Publications (1)

Publication Number Publication Date
CN117708897A true CN117708897A (zh) 2024-03-15

Family

ID=90163387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311739833.5A Pending CN117708897A (zh) 2023-12-15 2023-12-15 用于保护嵌入式设备固件数据的方法以及嵌入式设备

Country Status (1)

Country Link
CN (1) CN117708897A (zh)

Similar Documents

Publication Publication Date Title
FI114416B (fi) Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
JP5079803B2 (ja) ゲーム装置を認証するシステムおよび方法
KR101795457B1 (ko) 보안 기능이 강화된 디바이스의 초기화 방법 및 디바이스의 펌웨어 업데이트 방법
JP4099039B2 (ja) プログラム更新方法
KR100746012B1 (ko) 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
RU2601862C2 (ru) Способ, аппарат и устройство обработки шифрования и дешифрования
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
US20080072068A1 (en) Methods and apparatuses for securing firmware image download and storage by distribution protection
KR20090109589A (ko) 프로세서 내에서의 보호된 리소스들로의 억세스에 대한 안전한 보호 방법
CN113656086A (zh) 安全存储及加载固件的方法及电子装置
CN113805908A (zh) 固件更新***和方法
US11270003B2 (en) Semiconductor device including secure patchable ROM and patch method thereof
CN109814934B (zh) 数据处理方法、装置、可读介质和***
US20230351056A1 (en) Sram physically unclonable function (puf) memory for generating keys based on device owner
CN105279441A (zh) 用于对数据进行加密和解密的方法和架构
US20230273977A1 (en) Managing ownership of an electronic device
CN116070217A (zh) 一种用于芯片模块的安全启动***及其启动方法
WO2023212178A1 (en) Sram physically unclonable function (puf) memory for generating keys based on device owner
KR101954439B1 (ko) 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
CN112231709B (zh) 一种带远程升级功能的***安全设计方法
JP6930884B2 (ja) Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム
KR20180059742A (ko) 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
KR20210097379A (ko) 보안 장치, 전자 장치, 보안 부트 관리 시스템, 부트 이미지 생성 방법 및 부트 체인 실행 방법
CN115357948A (zh) 一种基于tee及加密芯片的硬件防抄板加密方法及其装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination