CN109997140B - 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 - Google Patents
使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 Download PDFInfo
- Publication number
- CN109997140B CN109997140B CN201980000536.4A CN201980000536A CN109997140B CN 109997140 B CN109997140 B CN 109997140B CN 201980000536 A CN201980000536 A CN 201980000536A CN 109997140 B CN109997140 B CN 109997140B
- Authority
- CN
- China
- Prior art keywords
- firmware
- hash
- write
- boot loader
- embedded device
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种低功耗嵌入式设备,其使用一次写入寄存器从设备的睡眠状态加速安全启动。本申请的目的是找到在低功耗嵌入式设备中参考哈希的安全存储,该参考哈希可以在该设备处于睡眠周期时维持存储,能够更新这些设备的固件,并且对存储器的未授权访问必须禁止,可以通过嵌入式设备解决,该嵌入式设备包括:专用计算系统;用于存储设备固件的结构;以及引导加载程序,用于验证固件的完整性和真实性,该引导加载程序根据参考哈希检查固件的固件哈希,其中参考哈希存储在一次写入寄存器中,该一次写入寄存器是嵌入式设备的持续供电域的一部分。
Description
相关申请的交叉引用
本申请要求享有于2018年9月10日提交的、申请号为18193411.8、名称为“使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备(low power embeddeddevice using a write-once register to speed up the secure boot from sleepstates of the device)”的欧洲申请的优先权,该申请通过引用整体并入本文。
技术领域
该申请公开了一种低功耗嵌入式设备,其使用一次写入寄存器从该设备的睡眠状态加速安全启动。
背景技术
安全启动是嵌入式系统的重要特征。安全启动是由PC行业成员开发的安全标准,用于帮助确保设备仅使用原始设备制造商(OEM)信任的软件启动。当PC启动时,固件会检查每个启动软件的签名,包括统一可扩展固件接口(UEFI)固件驱动程序(也称为扩展ROM)、可扩展固件接口(EFI)应用程序和操作系统。如果签名有效,则PC会启动,并且固件会将控制权移交操作系统。因此,仅经认证(可信)的代码允许在这样的系统上执行。
上述安全启动可以通过引导加载程序来确保,引导加载程序是代码的不可变部分。存储在只读存储器(ROM)中的引导加载程序是信任的根。该代码始终在系统启动时执行。该代码在固件运行之前验证实际固件(主要存储在闪存中)的完整性和真实性。
通过在固件映像上计算哈希(例如sha256)以及与参考哈希进行比较来验证固件的完整性。为了确保真实性,参考哈希必须在工厂编程期间存储在不可变存储器(如一次性可编程存储器)中,或者必须在固件启动时通过数字签名算法(DSA)进行验证。
具有固件更新功能的安全嵌入式系统始终使用DSA对新固件映像进行身份验证。
DSA公共根密钥存储为引导加载程序的一部分,固件映像使用相应的私钥进行签名。
具有有限能量资源(如电池)的低功耗嵌入式设备通常大部分时间处于断电状态以节省能量,而在某些事件上唤醒。
要检测固件的未经授权的更改,引导加载程序必须根据参考哈希检查固件哈希。
使用安全DSA计算参考哈希是计算密集型的,其应该尽可能地在这样的系统上减少。因此,期望在低功耗嵌入式设备中找到参考哈希的安全存储。对安全存储的要求可以总结如下:参考哈希必须在设备的睡眠周期中保持存储,必须能够更新这些设备的固件,并且对存储器的未授权访问必须禁止。
发明内容
本申请的目的将通过一种低功耗嵌入式设备来实现,该嵌入式设备包括:专用计算系统;用于存储设备固件的结构;以及引导加载程序,用于验证固件的完整性和真实性,该引导加载程序根据参考哈希检查固件的固件哈希,其中参考哈希存储在一次写入寄存器中,该一次写入寄存器是嵌入式设备的持续供电域的一部分。
一次写入寄存器由引导加载程序写入,之后不能修改。使用一次写入寄存器的优点是通过跳过参考哈希的计算来在唤醒嵌入式设备后加速启动过程。只需计算固件上的哈希,并且可以将其与存储的参考哈希进行比较。固件映像的固件哈希被理解为针对存储的当前固件计算的校验和。参考哈希被理解为固件开发者在安全环境中计算的原始(未被篡改)固件的校验和。因此,降低了启动过程的功耗。另一个优点是,仅需要非常小的硬件开销来将参考哈希存储在一次写入寄存器内。不需要巨大的公私钥硬件加速器,因为参考哈希的计算只需进行一次。因此,嵌入式设备的系统/微芯片可以更小和更便宜。
低功耗嵌入式设备在消费、商业、汽车、工业和医疗保健市场中具有广泛的应用。通常,嵌入式设备的操作系统只运行单个应用程序,这有助于设备完成其工作。嵌入式设备的示例包括洗碗机、银行ATM机、路由器、销售点终端(POS终端)和蜂窝电话。
在本发明的低功耗嵌入式设备的一个实施例中,一次写入寄存器在完成编程后被自动锁定并被保护免受篡改。只有具有持久的引导加载程序的处理器才能访问该寄存器。一次写入寄存器的防篡改是本申请的主要优点。
在本发明的嵌入式设备的另一个实施例中,一次写入寄存器具有与参考哈希相同的位数。对于安全哈希算法,例如sha256只需要将256位存储在一次写入寄存器中。这样做的优点是只有少数触发器必须在持续供电域内被供电。这实现了最小的功耗。
在本发明的嵌入式设备的优选实施例中,只有上电复位或软件复位可以访问一次写入寄存器。这是重写一次写入寄存器的仅有的两种可能性。只有这两个事件,即上电复位或软件复位,才能复位该寄存器。在其中一个事件之后,寄存器被清除、解锁并准备好进行编程。编程后,寄存器被自动锁定并防止被篡改。
在上电复位时,持久的引导加载程序开始执行,定位固件映像并使用存储的数字签名算法公共根密钥验证固件映像的参考哈希,而验证的参考哈希存储在一次写入寄存器中,然后引导加载程序计算固件映像的固件哈希并将其与验证的参考哈希进行比较,而如果哈希值匹配则引导加载程序执行固件,否则指示错误状态。上电复位过程是允许重写一次写入寄存器的两个事件之一。上电复位是设备上电时发生的复位(第一个事件)。如果执行上电复位,则嵌入式设备初始上电,寄存器未被锁定且可被编程。任何失败的签名验证或任何失败的哈希比较都表明固件映像已损坏或被篡改,并且需要引导加载程序的特殊处理。
在软件复位时,持久引导加载程序开始执行,定位新的固件映像并使用存储的数字签名算法公共根密钥验证新固件映像的新的参考哈希,而新的验证的参考哈希存储在一次写入寄存器中,然后引导加载程序计算新的固件映像的固件哈希并将其与新的参考哈希进行比较,而如果哈希值匹配则引导加载程序执行新固件,否则指示错误状态。软件复位过程是允许重写一次写入寄存器的第二个事件。软件复位是可以通过软件发出的系统复位(所有状态/寄存器被设置为其初始值),例如通过向寄存器写入特殊值。如果执行软件复位,则首先存储更新的固件,而寄存器未被锁定并且可以被编程。任何失败的签名验证或任何失败的哈希比较都表明固件映像已损坏或被篡改,并且需要引导加载程序的特殊处理。
如果应该将本发明的低功耗嵌入式设备从睡眠周期中唤醒时,则非常优选地,持久的引导加载程序开始执行,从一次写入寄存器加载验证的参考哈希,然后引导加载程序计算固件映像的固件哈希并将其与存储的参考哈希进行比较,而如果哈希值匹配则引导加载程序执行固件,否则指示错误状态。由于一次写入寄存器是持续供电域的一部分,因此采用其优点是在设备处于睡眠周期时上存储参考哈希是有优势的。没有必要一次又一次地重新计算参考哈希。因此,系统/微芯片可以更小和更便宜。任何失败的哈希比较都表明固件映像已损坏或被篡改,并且需要引导加载程序的特殊处理。
将使用示例性实施例更详细地解释本申请。
附图说明
附图示出了:
图1是使用一次写入寄存器的本发明的嵌入式设备;以及
图2是在上电复位、软件复位和唤醒之后使用低功耗嵌入式设备的过程的流程图。
附图标记列表:
1 低功耗嵌入式设备;
2 处理器;系统CPU;
3 一次写入寄存器;
4 总线结构;
5 复位模块;
6 ROM引导加载程序;以及
7 固件内存。
具体实施方式
图1示出了使用一次写入寄存器3的本发明的嵌入式设备1的示意图。系统CPU 2可以通过总线结构4访问嵌入式设备1的组件,例如复位模块5、ROM引导加载程序6、固件内存7和一次写入寄存器3。复位模块5可以执行上电复位、软件复位,尤其是固件复位。
图2示出了使用一次写入寄存器3对低功耗嵌入式设备1执行的不同过程的示例性流程图,用于加速所述低功耗嵌入式设备1的安全启动过程。
如果低功耗嵌入式设备1处于将要执行上电复位的状态,则嵌入式设备1初始上电,并且寄存器未被锁定并且可被编程。因此,持久的引导加载程序6开始执行。引导加载程序6定位嵌入式设备1的固件映像,并用存储的数字签名算法公共根密钥验证所述固件映像的参考哈希。持久的引导加载程序6将验证的参考哈希存储在一次写入寄存器3中,该一次写入寄存器3未被锁定且可被编程。然后,引导加载程序6计算固件映像的固件哈希并将其与验证的参考哈希进行比较,而如果哈希值匹配则引导加载程序6执行固件,否则指示错误状态。任何失败的固件签名验证都表明固件映像受损坏或被篡改,并且需要引导加载程序6的特殊处理。
如果低功耗嵌入式设备1处于将要执行固件更新的状态,则嵌入式设备1初始上电,并且存储更新后的固件映像。新固件替换现有固件或存储在现有固件旁边。这是在发出软件复位之前完成的。软件复位触发ROM引导加载程序6以选择新固件并开始验证,因为软件复位解锁了一次写入寄存器。持久的引导加载程序6开始执行。引导加载程序6定位新固件映像并使用存储的数字签名算法公共根密钥验证新固件映像的新参考哈希。持久的引导加载程序6将新的验证的参考哈希存储在一次写入寄存器中,该一次写入寄存器未被锁定且可被编程。然后,引导加载程序6计算新的固件映像的固件哈希并将其与新的参考哈希进行比较,而如果哈希值匹配则引导加载程序执行新固件,否则指示错误状态。任何失败的签名验证或任何失败的哈希比较都表明固件映像已损坏或被篡改,并且需要引导加载程序6的特殊处理。
如果低功耗嵌入式设备1处于在较长的睡眠期之后将要执行设备唤醒的状态,则处理器2唤醒但是参考哈希寄存器的状态不变化,因此一次写入寄存器3仍然被锁定。持久的引导加载程序6开始执行。引导加载程序6从一次写入寄存器3加载验证后的参考哈希,然后引导加载程序6计算固件映像的固件哈希并将其与存储的参考哈希进行比较。只有在哈希值匹配时,引导加载程序6才会执行固件,否则将指示错误状态。由于一次写入寄存器3属于设备中持续供电域的一部分,因此采用其在设备处于睡眠周期时存储参考哈希是有优势的。没有必要一次又一次地重新计算参考哈希。因此,系统/微芯片可以更小和更便宜。任何失败的哈希比较都表明固件映像已损坏或被篡改,并且需要引导加载程序6的特殊处理。
Claims (4)
1.一种嵌入式设备,包括:
专用计算系统;
用于存储所述设备的固件的结构;以及
引导加载程序,用于验证所述固件的完整性和真实性,所述引导加载程序根据参考哈希检查固件哈希,其中所述参考哈希存储在一次写入寄存器中,所述一次写入寄存器是所述嵌入式设备的持续供电域的一部分;
其中所述一次写入寄存器在完成编程后被自动锁定并被保护免受篡改,仅上电复位或软件复位可以访问所述一次写入寄存器;
其中所述一次写入寄存器具有与所述参考哈希相同的位数。
2.根据权利要求1所述的嵌入式设备,其中在上电复位时,所述引导加载程序开始执行,定位固件映像并使用存储的数字签名算法公共根密钥验证所述固件映像的参考哈希,所述验证的参考哈希存储在所述一次写入寄存器中,然后所述引导加载程序计算所述固件映像的固件哈希并将其与所述验证的参考哈希进行比较,如果哈希值匹配则所述引导加载程序执行固件,否则指示错误状态。
3.根据权利要求1所述的嵌入式设备,其中在软件复位时,所述引导加载程序开始执行,定位新的固件映像并使用存储的数字签名算法公共根密钥验证所述新的固件映像的新参考哈希,而所述新的验证的参考哈希存储在所述一次写入寄存器中,然后所述引导加载程序计算所述新的固件映像的固件哈希并将其与所述新的参考哈希进行比较,如果哈希值匹配则所述引导加载程序执行新固件,否则指示错误状态。
4.根据权利要求1所述的嵌入式设备,其中在将所述嵌入式设备从睡眠中唤醒时,所述引导加载程序开始执行,从所述一次写入寄存器加载验证的参考哈希,然后所述引导加载程序计算固件映像的固件哈希并将其与所述存储的参考哈希进行比较,如果哈希值匹配则所述引导加载程序执行所述固件,否则指示错误状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18193411.8 | 2018-09-10 | ||
EP18193411.8A EP3620944B1 (en) | 2018-09-10 | 2018-09-10 | Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device |
PCT/CN2019/075728 WO2020052202A1 (en) | 2018-09-10 | 2019-02-21 | Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109997140A CN109997140A (zh) | 2019-07-09 |
CN109997140B true CN109997140B (zh) | 2023-03-24 |
Family
ID=67136918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980000536.4A Active CN109997140B (zh) | 2018-09-10 | 2019-02-21 | 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200089507A1 (zh) |
CN (1) | CN109997140B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11361080B2 (en) * | 2020-04-13 | 2022-06-14 | Cisco Technology, Inc. | Reducing the secure boot time of full network operating system images using a combination of partitioning, staging and amortized verification techniques |
US11474579B2 (en) * | 2020-04-29 | 2022-10-18 | Intel Corporation | Verified high-power transition and fast charging with pre-boot scaling |
WO2022055486A1 (en) * | 2020-09-10 | 2022-03-17 | Harman International Industries, Incorporated | Vehicle bootloader authentication system |
CN112329023B (zh) * | 2020-11-13 | 2024-05-24 | 南京百敖软件有限公司 | 一种利用英特尔QuickAssist技术加速启动时间的方法 |
CN114625431B (zh) * | 2022-03-03 | 2023-08-29 | 上海先楫半导体科技有限公司 | 低功耗模式下的芯片唤醒方法、系统及芯片 |
FR3134640A1 (fr) * | 2022-04-19 | 2023-10-20 | Lvmh Swiss Manufactures Sa | Mécanisme de flashage pour mettre à jour un ou plusieurs appareils électroniques |
US12039339B1 (en) * | 2022-06-28 | 2024-07-16 | Amazon Technologies, Inc. | System configuration control through locking of control registers |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305668B2 (en) * | 2002-07-31 | 2007-12-04 | Intel Corporation | Secure method to perform computer system firmware updates |
US9171161B2 (en) * | 2006-11-09 | 2015-10-27 | International Business Machines Corporation | Trusted device having virtualized registers |
US7971048B2 (en) * | 2008-03-27 | 2011-06-28 | Intel Corporation | System and method for establishing a trust domain on a computer platform |
US9613215B2 (en) * | 2008-04-10 | 2017-04-04 | Nvidia Corporation | Method and system for implementing a secure chain of trust |
US9262637B2 (en) * | 2012-03-29 | 2016-02-16 | Cisco Technology, Inc. | System and method for verifying integrity of platform object using locally stored measurement |
GB2508895A (en) * | 2012-12-14 | 2014-06-18 | Ibm | Bootloader for booting a computer into a second operating system that is hidden from a first host operating system |
CN103914658B (zh) * | 2013-01-05 | 2017-02-22 | 展讯通信(上海)有限公司 | 终端设备的安全启动方法及终端设备 |
CN103927490A (zh) * | 2014-04-25 | 2014-07-16 | 华为技术有限公司 | 操作系统安全启动方法及装置 |
US10248428B2 (en) * | 2014-04-28 | 2019-04-02 | Intel Corporation | Securely booting a computing device |
US11157265B2 (en) * | 2017-12-11 | 2021-10-26 | Microsoft Technology Licensing, Llc | Firmware update |
-
2019
- 2019-02-21 CN CN201980000536.4A patent/CN109997140B/zh active Active
- 2019-11-22 US US16/693,198 patent/US20200089507A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200089507A1 (en) | 2020-03-19 |
CN109997140A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109997140B (zh) | 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 | |
US11520894B2 (en) | Verifying controller code | |
US9880908B2 (en) | Recovering from compromised system boot code | |
US9881162B2 (en) | System and method for auto-enrolling option ROMS in a UEFI secure boot database | |
EP3028147B1 (en) | Updating boot code | |
US8880898B2 (en) | Anti-roll-back mechanism for counter | |
JP5767751B2 (ja) | Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
US9990255B2 (en) | Repairing compromised system data in a non-volatile memory | |
US8566815B2 (en) | Mechanism for updating software | |
CN103093150A (zh) | 一种基于可信芯片的动态完整性保护方法 | |
US10803176B2 (en) | Bios security | |
US9928367B2 (en) | Runtime verification | |
CN113614723A (zh) | 更新信号 | |
US20230418590A1 (en) | Instruction updates | |
EP3620944B1 (en) | Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device | |
US20200143058A1 (en) | Operational verification | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |