安全存储及加载固件的方法及电子装置与流程

文档序号:27424541发布日期:2021-11-17 19:15阅读:86来源:国知局
安全存储及加载固件的方法及电子装置与流程

1.本发明涉及一种固件安全存储及加载的机制,特别地涉及一种能够安全存储及加载固件的方法及电子装置。


背景技术:

2.目前物联网设备装置的应用非常普及。为了解决物联网设备可能出现的信息泄密、非法访问或恶意软件攻击等安全问题,传统技术解决方案是将系统运行环境划分为安全区与普通区。由于两者是独立的执行环境,普通区的程序在未被授权的情况下无法访问安全区的资源,因此能够保护芯片内部安全区的内容不受恶意软件的攻击。然而,物联网设备的固件程序一般均存储于属于普通区的非易失性存储器中,例如一个外部连接的闪速存储器,当物联网设备的系统启动之后会将该固件程序从该外部连接的闪速存储器复制加载至物联网设备内部的随机存取存储器中。由于外部连接的闪速存储器仍极易产生信息泄密、受到非法访问或恶意软件攻击,所以传统的技术解决方案并无法保证从普通区复制加载固件至安全区的整个启动程序是安全的。


技术实现要素:

3.因此本发明的目的之一在于提供了一种安全的固件复制加载的方法机制,可以安全地从外部存储器解密和加载固件至电子装置内部的安全存储区,从而避免在系统上运行受到窜改的固件。
4.根据本发明的实施例,其公开了一种安全存储及加载固件的方法,该方法包括:将电子装置的操作系统环境分为安全区与非安全区,该安全区包含有只读存储器与一次性可编程电路(one-time programmable circuit),该只读存储器与该一次性可编程电路是设置在该电子装置内部,而该非安全区包含有闪速存储器,该闪速存储器外接于该电子装置;在该电子装置的系统被供电之后,预设从只读存储器中的重启程序(reset handler)开始执行,它负责加载启动程序(boot loader)使用该启动程序代码,初始化解密引擎;从该一次性可程序设计电路获取密钥,将该密钥加载至经初始化的该解密引擎;从该闪速存储器读取出固件密文;通过该解密引擎与该密钥,来对该固件密文进行解密以产生固件明文;以及根据该固件密文以及该固件明文,确定安全启动是否成功。
5.根据本发明的实施例,其还公开了一种能够安全存储及加载固件的电子装置,该电子装置外接于闪速存储器,该闪速存储器属于该电子装置的操作系统环境的非安全区,以及该电子装置包含只读存储器、一次性可编程电路、解密引擎电路以及处理器。只读存储器用以存储特定启动程序代码,该只读存储器属于该电子装置的该操作系统环境的安全区。一次性可编程电路用以存储密钥,该一次性可编程电路属于该电子装置的该操作系统环境的该安全区。解密引擎电路用以解密固件,该解密引擎电路属于该电子装置的该操作系统环境的该安全区。处理器耦接至该只读存储器、该一次性可编程电路以及该解密引擎电路,该处理器用以在该电子装置的系统被供电之后,预设从只读存储器中的重启程序开
始执行,它负责加载启动程序,使用该启动程序代码初始化该解密引擎电路。该解密引擎电路在被初始化之后,从该一次性可编程电路获取该密钥并且加载和设定该密钥至经初始化的该解密引擎电路、从该闪速存储器读取出固件密文、通过该密钥来对该固件密文进行解密以产生固件明文以及根据该固件密文以及该固件明文,确定安全启动是否成功。
6.根据本发明的实施例,其还公开了一种能够安全存储及加载固件的电子装置,该电子装置外接于闪速存储器,该闪速存储器属于该电子装置的操作系统环境的非安全区,以及该电子装置包含只读存储器、一次性可编程电路以及处理器。只读存储器用以存储特定启动程序代码,该只读存储器属于该电子装置的该操作系统环境的安全区。一次性可编程电路用以存储密钥,该一次性可编程电路属于该电子装置的该操作系统环境的该安全区。处理器耦接至该只读存储器以及该一次性可编程电路,该处理器用以在该电子装置的系统被供电之后,预设从只读存储器中的重启程序开始执行,它负责加载启动程序,以及使用该启动程序代码初始化该解密引擎电路;其中该处理器系从该一次性可编程电路获取该密钥、加载并设定该密钥至解密引擎软件程序、从该闪速存储器读取出固件密文、通过该密钥与该解密引擎软件程序来对该固件密文进行解密以产生固件明文,以及根据该固件密文以及该固件明文,确定安全启动是否成功。
附图说明
7.图1是本发明一实施例能够安全存储及加载固件的电子装置的示意图。
8.图2是本发明的实施例图1所示的电子装置进行安全启动的一示例流程示意图。
9.图3是本发明另一实施例能够安全存储及加载固件的电子装置的示意图。
具体实施方式
10.本发明旨在于提供了一种实用的安全固件存储和加载的方法及机制,能够从外部存储器中读取被加密过的固件(firmware),在可信执行环境(trusted execution environment,tee)中将被加密过的固件快速且安全地解密之后加载到该可信执行环境中运行,使得其他装置、黑客或开放执行环境(rich execution environment,ree)中的程序均无法非法访问或窜改其内容,因而可保证固件的存储及加载的机密性和完整性。详细来说,本发明的方法机制先对将要运行在电子装置(例如电路芯片)上的固件进行加密,并且将加密过的固件存储在位于该电子装置外部的非易失性的存储器(例如闪速存储器,但不限定),之后当该电子装置被供电时,在可信执行环境下通过该电子装置的硬件解密引擎、软件解密引擎/程序或是软硬件兼具的解密引擎来对该加密过的固件进行解密并检查该固件的完整性及真实性,接着将解密后的固件数据内容通过安全的直接存储器存取通道及/或以存储器复制的方式传送至并存储在该可信执行环境中的安全存储区域。
11.此外,本发明中所涉及的解密操作的密钥(或称为秘钥)是存放在该电子装置内的该可信执行环境的一个一次性可编程电路(one-time programmable circuit)中,该密钥只能够被运行于该可信执行环境的受信任程序所见,任何通过该开放执行环境的程序或恶意软件均无法窃取或者窜改密钥。此外,本发明中所述的完整的固件加载过程,包括密钥的读取、解密运作及解密后的固件的数据传送等,其均在该可信执行环境中完成,因此可避免信息泄露。
12.实际操作中,请参照图1,图1是本发明实施例能够安全存储及加载固件的电子装置100的示意图。电子装置100例如是芯片电路,其操作系统环境可隔离分为并且包括安全区(secure world)以及非安全区(non-secure world)。本发明的该安全区是可信执行环境,例如是安谋控股公司(arm holdings)所提出的trustzone解决方案中所制定的安全区(但不限定)。而本发明的该非安全区是开放执行环境,例如是安谋控股公司所提出的trustzone解决方案中所制定的普通区(但不限定)。电子装置100内包括只读存储器(read-only memory,rom)105、一次性可编程电路110、解密引擎电路115、随机存取存储器(random access memory,ram)120以及处理器125,其中电子装置100的软硬件资源均被相应地划分至该安全区及该非安全区内。如图1所绘示的虚线区域所示,被划分至该安全区的资源仅有安全区的程序才能够访问。当安全区的程序运行时,该处理器125会处于安全区状态。而被划分至该非安全区的资源可以被所有的程序访问。当非安全区的程序运行时,该处理器125会处于非安全区状态。
13.此外,电子装置100系外部耦接于非易失性存储器(例如,闪速存储器130),其中该只读存储器105、一次性可编程电路110、解密引擎电路115均属于该电子装置100的操作系统环境的安全区,亦即该只读存储器105、一次性可编程电路110与解密引擎电路115均属于该安全区的资源,并且是无法被黑客恶意窃取或者窜改的电路组件,而该闪速存储器130属于该电子装置100的操作系统环境的非安全区,亦即该非安全区的资源,可能被黑客恶意窃取或者窜改;此外,电子装置100的该随机存取存储器120可被划分为两个区域,一部分的区域(例如称为安全存储区)属于该安全区的资源,而另一部分的区域(例如称为普通存储区)属于该非安全区的资源,该随机存取存储器120的安全存储区与及普通存储区的划分可参见于图1所标示的。
14.该闪速存储器130是用于存放已被加密过后的固件数据,亦即固件密文(cipher text),其中该已被加密过后的固件数据的产生可以由用户或操作人员通过实体非网际网路连线的方式(但不限定)来启动执行固件加密操作而获得。该固件加密操作例如是计算被加密前的固件数据(亦即固件明文(plain text))的哈希值(hash value)、接着通过加密算法来对该固件明文进行加密来产生该固件密文,其中该加密算法可以是对称加密算法或非对称加密算法,这并非是本发明的限制。
15.该一次性可编程电路110是用于存储该用户或操作人员对于该固件明文执行该固件加密操作的密钥。该密钥在写入该一次性可编程电路110之后即不可改写。该一次性可编程电路110属于该安全区的资源,仅有属于该安全区的程序能够读取该密钥,非安全区的程序没有权限可以读取、也无法窜改密钥。因此该一次性可编程电路110的使用可以保证密钥存储是安全的。
16.该只读存储器105用以存储特定启动程序代码(boot loader)。该解密引擎电路115用以解密固件。该处理器125耦接至该只读存储器105、该一次性可编程电路110以及该解密引擎电路115,在本实施例,该处理器125用以在该电子装置100的系统被供电之后,预设从该只读存储器105的重启程序(reset handler)(例如,固件模块)先开始执行启动(boot up),由该重启程序从该只读存储器105执行并加载该启动程序代码,以及使用该启动程序代码初始化该解密引擎电路115,而该解密引擎电路115在被初始化之后是从该一次性可编程电路110获取该密钥并加载、设定该密钥至经初始化的该解密引擎电路115、从该
闪速存储器130读取出固件密文、通过该密钥来对该固件密文进行解密以产生固件明文以及根据该固件密文以及该固件明文来确定安全启动程序是否成功。
17.此外,可通过安全的直接存储器存取通道及/或存储器复制的方式将该解密后的固件明文转移至并存储在该随机存取存储器120的安全存储区,其中安全的直接存储器存取通道是位于以硬件实现的解密引擎电路115或是位于直接存储器周边装置,该通道仅能由该安全区中受到信任的程序所访问及控制,而该非安全区中不受信任的程序均无法控制该直接存储器存取通道,因此,解密后的固件明文的转移及存储也是受到保护的。
18.请参照图2,图2是本发明的图1的实施例所示的电子装置100进行安全启动的一示例流程示意图。如图2所示,当该电子装置100在被供电之后,预设从该只读存储器105的重启程序开始运行(步骤205),并由该重启程序从该只读存储器105中加载并执行该启动程序,来依次验证和加载下一级的代码,例如该重启程序会验证该启动程序的真实性,当确认该启动程序未被窜改之后会将其加载到该随机存取存储器120的该安全存储区,接着跳转以执行该启动程序,这个过程的步骤被称为安全启动(secure boot),亦即步骤210。
19.实际操作中,步骤210包括多个子步骤(亦即步骤215至步骤255)。其中在步骤215时,该处理器125执行该特定启动程序代码以初始化该解密引擎电路115,以选择并设置指定的解密算法。该解密算法与前述加密操作所使用的算法一致,其中该解密算法例如是区块加密工作模式中的高级加密标准(advanced encryption standard)的密码块链接模式(cipher block chaining,cbc)所使用的解密算法,或是该高级加密标准的计数器模式(galois/counter mode,gcm)所使用的解密算法,然而这些均非本发明的限制。本发明亦可采用非对称加密标准来实现加解密的操作。在步骤220,该解密引擎电路115从该一次性可编程电路110获取得到该密钥并装载该密钥。在步骤225中,该解密引擎电路115从该闪速存储器130读取固件密文的一部分,例如读取该固件密文的第一部分。在步骤230中,该解密引擎电路115通过该密钥来对所读取出的该固件密文的一部分(亦即第一部分)进行解密以产生固件明文的一部分(例如固件明文的第一部分),依据目前已经解密出的固件明文的一个或多个部分来计算哈希值。在步骤235中,该解密引擎电路115将所解密出的该固件明文的该部分(亦即固件明文的第一部分)传送至并存储在该随机存取存储器120的安全存储区。
20.在步骤240,该解密引擎电路115判断是否已经读取完该固件密文的文件的末尾(亦即是否已经读取出最后一部分)。如果是,则流程进行步骤245。反之,如果还没有读取出最后一部分,则流程进行步骤225,使得解密引擎电路115接着再从该闪速存储器130读取固件密文的下一个部分,例如读取该固件密文的第二部分。通过该密钥来对所读取出的该固件密文的第二部分进行解密以产生固件明文的第二部分),依据目前已经解密出的固件明文的一个或多个部分来计算或更新该哈希值,以及将所解密出的该固件明文的第二部分传送至并存储在该随机存取存储器120的安全存储区。
21.因此,当该解密引擎电路115已经读取完、解密完该固件密文的文件时,该解密引擎电路115在步骤245中判断依据所解密出的固件明文的文件的全部所计算出或更新的哈希值是否等于或匹配于解密前的固件密文的原始文件所附加记载的哈希值。如果两哈希值是匹配的,则表示存储在该闪速存储器130中的固件密文的原始文件并没有被窜改,而流程将进行步骤250,表示安全启动的程序已经成功。反之,如果两哈希值是不匹配的,则表示存储在该闪速存储器130中的固件密文的原始文件是有被窜改的,流程将进行步骤255,表示
安全启动的程序是失败的,该电子装置100的系统将停止运作,而在此情况下,存储在该随机存取存储器120的安全存储区的被窜改后的固件明文将被清除。
22.而当安全启动的程序成功之后,该电子装置100例如(但不限定)会进入步骤260以启动并执行非安全启动程序(non-secure boot loader)以进行非安全启动程序。接着在步骤265时执行一个或多个应用程序。此外,步骤265与步骤270可受限地跳转切换,在步骤270中该电子装置100的系统可以执行固件以提供安全服务。
23.应注意的是,如图2所示,步骤260与步骤265均属于系统非安全区的资源的操作,而其他步骤(包括步骤205至步骤255以及步骤270)均属于系统安全区的资源的操作。
24.另外,固件密文的解密操作在其他实施例亦可采用硬件的解密引擎电路115部分搭配软件程序来实现。例如,该处理器125可以通过安全区的程序来读取该一次性可编程电路110中所存储的密钥,装载所读取出的密钥至该解密引擎电路115;由于硬件的解密引擎电路115与该一次性可编程电路110均属于安全区的资源,仅能够被一个或多个安全区程序访问,所以整个密钥读取、加载与硬件解密的过程都是安全的。
25.再者,固件密文的解密操作在其他实施例亦可采用纯软件的解密引擎程序来实现,而不采用硬件解密的方式。请参照图3,图3是根据本发明另一实施例的能够安全存储及加载固件的电子装置300的示意图。如图3所示,电子装置300不包含有图1所示的该硬件解密引擎115,纯软件的解密引擎程序存储在安全区内的非易失性存储器中,该处理器125通过安全区程序来加载存储在闪速存储器130中的固件密文,并读取该一次性可编程电路110中所存储的密钥,装载所读取出的密钥至该纯软件的解密引擎程序,以对所读取的固件密文执行解密运算以产生固件明文,以及将所产生的固件明文传送至并写入到随机存取存储器120的安全存储区。应注意的是,当以纯软件的解密引擎程序来进行解密运算时,图2所示的安全启动程序步骤210中的子步骤均是该处理器125执行该纯软件的解密引擎程序以执行解密运算。
26.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
27.附图标记说明
28.100,300:电子装置
29.105:只读存储器
30.110:一次性可编程电路
31.115:解密引擎电路
32.120:随机存取存储器
33.125:处理器
34.130:闪速存储器
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1