CN109997140B - 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 - Google Patents

使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 Download PDF

Info

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
Application number
CN201980000536.4A
Other languages
English (en)
Other versions
CN109997140A (zh
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.)
Shenzhen Goodix Technology Co Ltd
Original Assignee
Shenzhen Goodix Technology 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
Priority claimed from EP18193411.8A external-priority patent/EP3620944B1/en
Application filed by Shenzhen Goodix Technology Co Ltd filed Critical Shenzhen Goodix Technology Co Ltd
Publication of CN109997140A publication Critical patent/CN109997140A/zh
Application granted granted Critical
Publication of CN109997140B publication Critical patent/CN109997140B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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所述的嵌入式设备,其中在将所述嵌入式设备从睡眠中唤醒时,所述引导加载程序开始执行,从所述一次写入寄存器加载验证的参考哈希,然后所述引导加载程序计算固件映像的固件哈希并将其与所述存储的参考哈希进行比较,如果哈希值匹配则所述引导加载程序执行所述固件,否则指示错误状态。
CN201980000536.4A 2018-09-10 2019-02-21 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 Active CN109997140B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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