包括安全可修补rom的半导体装置及其修补方法

文档序号:735117 发布日期:2021-04-20 浏览:18次 >En<

阅读说明:本技术 包括安全可修补rom的半导体装置及其修补方法 (Semiconductor device including secure repairable ROM and method of repairing the same ) 是由 金祺倬 裵基晳 玄镇修 于 2020-07-15 设计创作,主要内容包括:提供了包括安全可修补ROM的半导体装置及其修补方法。一种用于通过使用加载到第一存储器上的固件来修补编程在半导体装置的ROM中的可修补函数的方法包括:接收加密和数字签名的固件映像;通过使用公钥验证固件映像来生成验证结果;根据验证结果通过使用私钥来对固件映像进行解密;将从固件映像解密的固件加载到第一存储器上;和当可修补函数被调用时,运行与包括在固件中的可修补函数的标识符对应的替换函数。(A semiconductor device including a secure repairable ROM and a method of repairing the same are provided. A method for patching a patchable function programmed in a ROM of a semiconductor device by using firmware loaded onto a first memory includes: receiving an encrypted and digitally signed firmware image; generating a verification result by verifying the firmware image using the public key; decrypting the firmware image by using a private key according to the verification result; loading the firmware decrypted from the firmware image onto the first memory; and executing a replacement function corresponding to an identifier of the patchable function included in the firmware when the patchable function is called.)

包括安全可修补ROM的半导体装置及其修补方法

本申请要求于2019年10月18日在韩国知识产权局提交的第10-2019-0130091号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。

技术领域

在此公开的发明构思的至少一些示例实施例涉及半导体装置,具体地,涉及通过加载到随机存取存储器(RAM)上的函数可安全地修补的只读存储器(ROM)半导体装置及其修补方法。

背景技术

构成移动系统(例如,智能电话、平板电脑、平板手机、可穿戴电子装置等)的半导体装置中的一些可独立于应用程序或操作系统(OS)像硬件一样通过固件来驱动。固件或函数(或称为功能)主要被编程在只读存储器(ROM)中并且在启动或被调用时执行。因此,不需要更新的基本固件或函数被编程在半导体装置的ROM中。

然而,即使在半导体装置启动之后,为了稳定的性能和错误修复,也可能需要将固件或函数更新到新版本。例如,编程在ROM中的函数可能发生错误或者可能需要应用在制造半导体装置时未考虑的项目。为了应对这种情况,各种用于更新ROM的函数的技术正在被提出。这种技术可被称为修补、更新或替换ROM。

对包括半导体芯片的系统的安全攻击正在增加,并且攻击技术也在进步。因此,出于安全考虑,对修补或替换ROM的要求不断增加。

发明内容

发明构思的至少一些示例实施例提供了一种在通过使用加载到随机存取存储器(RAM)的固件来修补只读存储器(ROM)的函数时防止攻击或错误的半导体装置及其修补方法。

根据发明构思的至少一个示例实施例,一种用于通过使用加载到第一存储器上的固件来修补编程在半导体装置的ROM中的可修补函数的方法包括:接收加密和数字签名的固件映像;通过使用公钥验证固件映像来生成验证结果;根据验证结果通过使用私钥来对固件映像进行解密;将从固件映像解密的固件加载到第一存储器上;和当可修补函数被调用时,运行与包括在所述固件中的可修补函数的标识符对应的替换函数。

根据发明构思的至少一个示例实施例,一种半导体装置包括:ROM,编程有至少一个可修补函数;RAM,加载有具有用于替换所述至少一个可修补函数的替换函数的固件;中央处理器(CPU),通过运行编程在ROM中的固件验证和解密函数来对所述固件执行用户认证并且当所述至少一个可修补函数被调用时通过使用所述固件来运行替换函数;安全存储器,存储用于用户认证的公钥和电子签名以及用于对所述固件进行解密的私钥;和验证结果寄存器,存储用户认证的结果,并且固件包括用于映射所述至少一个可修补函数和替换函数的查找表。

根据发明构思的至少一个示例实施例,一种运行编程在ROM中的第一函数的半导体装置的修补方法包括:接收将被加载到RAM上以替换第一函数的加密和数字签名的固件映像;对固件映像执行用户认证;根据用户认证的结果,对固件映像进行解密并且将解密的固件映像加载到RAM上;和当第一函数被调用时,根据用户认证的结果来运行包括在固件中的第二函数。

附图说明

通过参照附图详细描述发明构思的示例实施例,发明构思的示例实施例的以上和其他特征以及优点将变得更清楚。附图意在描绘发明构思的示例实施例并且不应被解释为限制权利要求的预期范围。除非明确指出,否则不应将附图视为按比例绘制。

图1是示出根据发明构思的至少一个示例实施例的半导体装置的配置的框图。

图2是示出图1的ROM的可修补函数的框图。

图3是示出图2的固件的映像结构的示图。

图4是示出发明构思的解密的固件的结构的示图。

图5是示出根据发明构思的至少一个示例实施例的修补ROM的函数的步骤的流程图。

图6是示出根据发明构思的另一实施例的半导体装置的框图。

图7是示出图6的ROM的可修补函数的框图。

图8是示出发明构思的固件结构的示图。

图9是示出根据发明构思的至少一个示例实施例的修补ROM的函数的步骤的流程图。

图10是示出发明构思的另一实施例的框图。

具体实施方式

如发明构思的领域中传统的那样,在附图中以功能块、单元和/或模块来描述和说明实施例。本领域技术人员将理解,这些块、单元和/或模块由可使用基于半导体的制造技术或其他制造技术形成的电子(或光学)电路(诸如,逻辑电路、分立元件、微处理器、硬连线电路、存储器元件、布线连接等)物理地实现。在块、单元和/或模块由微处理器或类似物实现的情况下,它们可使用软件(例如,微代码)来编程以执行在此讨论的各种功能,并且可以可选地由固件和/或软件驱动。可选地,每个块、单元和/或模块可由专用硬件来实现,或者实现为用于执行一些功能的专用硬件和用于执行其他功能的处理器(例如,一个或多个编程的微处理器和相关联的电路)的组合。此外,在不脱离发明构思的范围的情况下,实施例的每个块、单元和/或模块可物理上分离成两个或更多个交互的和离散的块、单元和/或模块。此外,在不脱离发明构思的范围的情况下,实施例的块、单元和/或模块可物理上组合成更复杂的块、单元和/或模块。

以下,包括在半导体装置或半导体芯片中的ROM或RAM可用作用于描述发明构思的特征和功能的组件。然而,根据这里公开的内容,本领域技术人员可容易地理解发明构思的至少一个示例实施例的其他优点和性能。发明构思可通过其他实施例来实现或应用。另外,在不脱离发明构思的权利要求、范围和精神以及任何其他目的的情况下,可根据视点和应用来改变或者修改具体实施方式。此外,以下可使用术语“修补(或称为打补丁)”、“更新”和“替换”。然而,所有术语可用作指示执行(或运行)加载到RAM上的替换函数而非在ROM中实现的函数的操作的含义。

以下,发明构思的至少一些示例实施例可被详细和清楚地描述到本领域普通技术人员容易地实现发明构思这样的程度。

图1是示出根据发明构思的至少一个示例实施例的半导体装置100的框图。参照图1,半导体装置100包括中央处理器(CPU)110、ROM 120、RAM130、安全存储器140、验证状态寄存器150和互连器160。半导体装置100可通过以上组件通过使用加载到RAM 130上的函数或固件来替换编程在ROM 120中的函数。这里,半导体装置100可用一个芯片或一个半导体封装件来实现。然而,可很好地理解,半导体装置100的范围不限于以上示例。在本说明书中被描述为由固件、函数、或者固件或函数的元件执行的操作可由执行用于使处理器执行操作的计算机可执行指令的处理器(例如,以下将分别参照图1、图6和图10更详细地讨论的CPU110、CPU 210和/或CPU 310)来执行。

CPU 110可执行将在半导体装置100中执行的软件或应用(例如,应用程序、操作系统或装置驱动器)。根据发明构思的至少一个示例实施例的CPU 110可运行(或执行)编程在ROM 120上的固件、函数或代码、或者加载到RAM 130上的固件或代码。CPU 110可根据启动序列运行在ROM 120中编程的函数或固件。特别地,在从ROM 120调用可修补(patchable)函数(例如,122)的情况下,CPU 110可运行来自ROM 120的固件验证和解密函数126。因此,CPU110对为修补而提供的固件执行验证(或认证)。当验证完成时,CPU 110对为修补而提供的固件进行解密,并将解密的固件加载到RAM130上。在这种情况下,CPU 110可运行加载到RAM130上的替换函数而非ROM 120的可修补函数。以下将参照附图详细描述所述操作。

用于驱动或控制半导体装置100的代码、固件或函数可被编程在ROM 120中。例如,用于执行为了特定目的而制造的半导体装置100的基本函数的固件可被编程在ROM 120中。可选地,定义在启动半导体装置100的处理中(即,在启动中)将执行的序列的代码(诸如,启动加载器)可被编程在ROM 120中。具体地,根据发明构思的至少一个示例实施例,可修补函数122和124被存储在ROM 120中。可修补函数122和124表示将被修补(或替换)的函数或固件。此外,用于替换或更新可修补函数122和124的固件验证和解密函数126可被编程在ROM120中。

可修补函数122和124可以是将用加载到RAM 130上的函数替换的函数或固件。即,可修补函数122和124的代码(例如,计算机可执行指令)可不被改变。然而,当为修补而提供的替换函数存在于RAM 130中时,可修补函数122和124可被替换。例如,替换函数的代码(例如,计算机可执行指令)可代替可修补函数122和/或124的代码(例如,计算机可执行指令)来执行。当可修补函数122和124被调用时,固件验证和解密函数126可执行对为修补而提供的固件进行验证并且对验证的固件进行解密的功能。

用于控制和操作半导体装置100的各种基本函数或代码可被编程在ROM 120中。ROM 120可利用掩模ROM、可编程ROM(PROM)、可擦除PROM(EPROM)和电可擦除PROM(EEPROM)中的至少一个来实现,但是根据发明构思的至少一个示例实施例的ROM 120不限于此。

RAM 130可用作半导体装置100的工作存储器。用于控制半导体装置100的软件(或固件)或数据可加载到RAM 130上。存储的软件和数据可由CPU 110来驱动或处理。根据发明构思的至少一个示例实施例,解密的固件132可被加载到RAM 130上。解密的固件132可以是用于修补编程在ROM 120中的函数或固件的函数。解密的固件132可在被加载到RAM 130上之前通过使用公钥和电子签名来认证。可修补函数122和124可通过使用加载到RAM 130上的固件132来替换或更新。

安全存储器140被提供为半导体装置100的非易失性存储介质。用于对固件132进行认证的公钥/电子签名142可存储在安全存储器140中。固件132作为加密映像数据提供给半导体装置100。因此,在由固件验证和解密函数126进行解密之后,解密的固件132被加载。用于对固件132进行解密的解密密钥144可存储在安全存储器140中。

除CPU 110之外的其余组件对存储在安全存储器140中的公钥/电子签名142和解密密钥144的访问可被阻止。安全存储器140可用非易失性存储器来实现。例如,安全存储器140可用非易失性存储器(诸如,闪存、PRAM、MRAM、ReRAM或FRAM)、一次编程(OTP)存储器或熔丝(fuse)来实现。

验证状态寄存器150存储对加载到RAM 130上的解密的固件132进行认证或验证的结果。因为验证状态寄存器150存储为修补在ROM 120中实现的函数或固件而提供的固件132的认证结果,所以验证状态寄存器150可不需要以非易失性存储器来实现。例如,验证状态寄存器150可以以在制造半导体装置100时功能被预先定义的特殊功能寄存器(SFR)来实现。

互连器160可以是用于在半导体装置100的内部硬件组件之间提供网络的总线或通道。互连器160可包括例如数据总线、地址总线和控制总线。数据总线是通过其传输数据的路径。数据总线可主要提供通过其访问RAM 130的存储器访问路径。地址总线提供硬件组件之间的地址交换路径。控制总线提供通过其在硬件组件之间传送控制信号的路径。然而,互连器160的配置不限于以上描述。例如,互连器160还可包括用于有效管理的仲裁(arbitration)装置。

根据发明构思的至少一个示例实施例,可通过加载到RAM 130上的固件或函数来修补编程在ROM 120中的固件或函数。特别地,将要加载到RAM 130上的固件或函数可能需要在修补处理中进行认证。仅通过认证而验证的固件或函数可被解密并且加载到RAM 130上。因此,根据发明构思的至少一个示例实施例的半导体装置100可提供对抗在修补ROM120的处理中可能发生的攻击或错误的高安全性能。此外,根据发明构思的至少一个示例实施例的半导体装置100可以以安装在移动应用处理器、车辆半导体装置或物联网(IoT)上的半导体芯片来实现。

图2是示出图1的ROM的可修补函数的框图。参照图2,可修补函数122可包括替换标志检查器122a、固件状态检查器122b、替换调用逻辑122c和函数体122d,其每个可由例如可修补函数122中的计算机可执行指令来实现。可修补函数122的以上配置可以是用于通过使用加载到RAM 130上的固件来修补ROM 120的函数的最小配置。

替换标志检查器122a检查包括在固件132中的替换标志的值。当从CPU 110调用可修补函数122时,首先,替换标志检查器122a检查可修补函数122是否能够被加载到RAM 130上的固件132替换。指示包括在加载到RAM 130上的固件132中的替换函数是否能够替换ROM120的对应函数的替换标志必须存在于固件132的特定字段中。替换标志检查器122a检查写入固件132中的替换标志的值,并且可确定是否能替换可修补函数122。

固件状态检查器122b检查存储在验证状态寄存器150中的固件验证状态。当固件验证状态的值对应于验证通过时,固件状态检查器122b使用固件132执行修补操作。相反,当固件验证状态的值对应于验证失败时,固件状态检查器122b可停止使用固件132的全部操作。固件状态检查器122b可设置全部序列,使得预先编程在ROM 120中的函数体122d被运行。

替换调用逻辑122c监测可修补函数122是否被CPU 110调用。当编程在ROM 120中的代码或函数被调用时,可修补函数122可被调用,或者不支持修补函数的函数可被调用。当可修补函数122被调用时,替换调用逻辑122c可启用用于修补函数或固件的序列。

函数体122d是出于执行可修补函数122的原始函数的目的而编程在ROM 120中的函数。即使可修补函数122被调用,当加载到RAM 130上的固件132的认证失败时或者当不需要替换可修补函数122时,函数体122d也可被执行。

以上简要描述了包括在可修补函数122中的最小信息。然而,可很好地理解,根据认证方式或权限级别,各种函数还被添加到可修补函数122。

图3是示出图2的固件的映像结构的示图。参照图2,固件映像131可包括映像头131a、映像体131b和映像脚131c。固件映像131是出于更新或修补编程在ROM 120中的可修补函数122或124的目的而从半导体装置100的外部提供的映像数据。

映像头131a包括在固件映像131被加载到RAM 130之前要执行的认证处理中使用的信息。例如,映像头131a可包括用于验证固件映像131是否从允许的供应商被合法地提供的公钥133a和电子签名133b。公钥133a可与存储在安全存储器140中的公钥/电子签名142中包括的公钥进行比较。在公钥133a与存储在安全存储器140中的公钥不匹配或者电子签名133b与存储在安全存储器140中的电子签名不匹配的情况下,固件映像131的认证失败。

映像体131b与用于替换图2的函数体122d的固件的主要信息对应。然而,映像体131b可被加密;当认证通过时,映像体131b可在被解密之后加载到RAM 130上。映像脚131c可包括固件映像131的各种类型的标签信息。

当接收到固件映像131时,根据发明构思的至少一个示例实施例的半导体装置100通过使用公钥133a和电子签名133b来执行认证。在为修补而提供的替换函数中实现的函数可仅由合法用户形成。原因是由恶意用户形成的替换函数威胁安全系统。因此,必须对固件映像131进行编码和数字签名。用于加密和电子签名两者的密钥必须存储在半导体装置100的安全存储器140中,并且必须仅由上述CPU 110来访问和使用。

当固件映像131的认证失败时,CPU 110可停止修补处理,并且可运行编程在ROM120中的可修补函数122的函数体122d。当认证成功时,CPU 110可根据修补处理对映像体131b进行解密,并且可将解密的结果存储在RAM130中作为用于修补的固件132。

图4是示出根据本发明构思的至少一个示例实施例的解密的固件的结构的示图。参照图4,加载到RAM 130上的解密的固件132可包括查找表132a以及替换函数132b和132c。

当ROM 120的可修补函数122或124运行时,查找表132a向CPU 110提供关于替换是否可行的信息以及关于替换函数132b和132c在RAM130上的位置的信息。查找表132a(例如,位于地址Addr_0)包括关于函数标识符(ID)、替换标志和替换函数的位置的信息。例如,假设ROM120的可修补函数122由CPU 110运行。当可修补函数122的函数标识符是“ID_1”时,可参考与函数标识符“ID_1”对应的查找表132a的信息来执行可修补函数122的修补。针对查找表132a的函数标识符“ID_1”,替换标志的值对应于“是”,并且替换函数的位置对应于RAM130的地址Addr_1。因此,可通过加载在RAM130的地址Addr_1处的替换函数132b对可修补函数122进行修补。

相反,针对查找表132a的函数标识符“ID_2”,替换标志的值对应于“否”。因此,在运行与函数标识符“ID_2”对应的函数的情况下,可不执行使用加载到RAM130上的函数或固件的修补。与函数标识符“ID_n”对应的替换标志的值为“是”。因此,当运行与函数标识符“ID_n”对应的函数124时,可通过加载在RAM 130的地址Addr_n处的替换函数132c对可修补函数124进行修补。

图5是示出根据发明构思的至少一个示例实施例的修补ROM的函数的步骤的流程图。参照图5,在调用编程在ROM120(参照图1)中的可修补函数或固件的情况下,根据本发明构思的至少一个示例实施例的半导体装置100(参照图1)对加载到RAM130(参照图1)上的固件执行验证和解密。可参考存储在RAM130中的查找表132a(参照图4)来检查替换是否可行或者替换函数的位置。

在操作S110中,CPU 110获取或接收加密和数字签名的固件映像131(参照图3)。固件映像131可从半导体装置100的外部输入。例如,固件映像131可从被提供以更新半导体装置100的固件的存储装置或更新设备被提供。

在操作S120中,CPU 110对加密的固件映像131进行验证。例如,CPU 110可将包括在固件映像131中的公钥133a和电子签名133b与包括在半导体装置100中的安全存储器140中存储的公钥/电子签名142进行比较。当比较结果指示公钥不匹配或者电子签名不匹配时,可确定加密的固件映像131的验证失败。此外,CPU 110将加密的固件映像131的验证结果存储在验证状态寄存器150中。

在操作S125中,CPU 110根据加密的固件映像131的验证结果执行操作分支。当确定加密的固件映像131的验证失败(否)时,步骤进行到操作S180。相反,当确定加密的固件映像131的验证成功(是)时,步骤进行到操作S130。

在操作S130中,CPU 110对加密的固件映像131进行解密。例如,CPU 110可通过使用存储在安全存储器140中的解密密钥144(参照图1)对加密固件映像131进行解密。解密的固件132可被加载到RAM130上。在解密处理中,CPU 110可生成查找表132a并且可生成每个替换函数在RAM130上的地址Addr_i(i是自然数)。在解密的固件132被加载到RAM 130上之后,每当调用ROM 120的可修补函数时,可使用查找表132a。

在操作S140中,CPU 110调用可修补函数。例如,可调用多个可修补函数中的一个可修补函数122。可修补函数的调用事件可在启动期间发生或者可在半导体装置100操作时发生。

在操作S150中,CPU 110出于确定固件132的有效性的目的检查验证状态寄存器150。也就是说,为了参考在操作S120中执行的验证的结果,CPU 110读取存储在验证状态寄存器150中的验证结果。当验证状态寄存器150的值对应于验证失败时,步骤进行到操作S180。相反,当验证状态寄存器150的值对应于验证通过时,步骤进行到操作S160。

在操作S160中,CPU 110检查包括在查找表132a中的替换标志。例如,在操作S140中调用的可修补函数122的情况下,可以在查找表132a中检查与函数标识符ID_1对应的替换标志。当替换标志的值对应于指示“可替换”的“是”时,步骤进行到操作S170。相反,当替换标志的值对应于指示“不可替换”的“否”时,步骤进行到操作S180。

在操作S170中,CPU 110运行加载到RAM 130上并且用于替换所调用的可修补函数的替换函数。例如,可运行与函数标识符ID_1相关联的地址Addr_1所对应的替换函数132b而非在操作S140中调用的可修补函数122。

在操作S180中,CPU 110可运行原始存储在ROM 120中的函数122。也就是说,在加密固件映像131的验证失败的情况下或者在替换标志的值对应于指示“不可替换”的“否”的情况下,CPU 110必须运行存储在ROM 120中的可修补函数122的函数体122d。

根据发明构思的至少一个示例实施例,以上简要描述了出于替换ROM 120中存在的固件或函数的目的验证加载到RAM 130上的固件的方法。

图6是示出根据发明构思的至少一个其他示例实施例的半导体装置200的框图。参照图6,半导体装置200包括CPU 210、ROM 220、RAM 230、安全存储器240、验证状态寄存器250和互连器260。半导体装置200可通过以上组件通过使用加载到RAM 230上的函数或固件来替换ROM 220的函数。特别地,在根据发明构思的至少一个示例实施例的半导体装置200的情况下,ROM 220的函数中不必要的函数可被设置,使得在启动时排除不必要的函数并且使得函数的先前修补版本不被使用。

CPU 210可执行将要在半导体装置200中运行的软件或应用(例如,应用程序、操作系统或装置驱动器)。CPU 210可根据启动序列来运行编程在ROM 220中的函数或固件。在ROM 220的可修补函数(例如,222)被调用并且运行的情况下,CPU 210可运行固件验证和解密函数226。当固件验证和解密函数226运行时,CPU 210可验证或认证为修补而提供的函数或固件。CPU 210可运行加载到RAM 230上的替换函数而非要修补的ROM 220的函数。

用于驱动或控制半导体装置200的代码、固件或函数可被编程在ROM 220中。例如,用于执行为了特定目的而制造的半导体装置200的基本函数的固件可被编程在ROM 220中。可选地,定义在启动半导体装置200的处理中(即,在启动中)将执行的序列的代码(诸如,启动加载器)可被编程在ROM 220中。具体地,根据发明构思的至少一个示例实施例,可修补函数222和224被编程在ROM 220中。可修补函数222和224表示稍后将被更新的函数或固件。此外,用于替换或更新可修补函数222和224的固件验证和解密函数226可被编程在ROM 220中。ROM 220可以以掩模ROM、可编程ROM(PROM)、可擦除PROM(EPROM)和电可擦除PROM(EEPROM)中的至少一个来实现。

RAM 230可用作半导体装置200的工作存储器。用于控制半导体装置200的软件(或固件)或数据可加载到RAM 230上。存储的软件和数据可由CPU 210驱动或处理。根据发明构思的至少一个示例实施例,可将用于修补ROM 220的函数或固件的固件232加载到RAM 230上。固件232可在被加载到RAM 230上之前通过使用公钥/电子签名242来认证。认证的固件232可被解密并且加载到RAM 230上。可修补函数222和224可通过使用加载到RAM 230上的固件232来替换或更新。

安全存储器240被提供为半导体装置200的非易失性存储介质。用于对固件232进行认证的公钥/电子签名242可存储在安全存储器240中。固件232作为加密数据提供给半导体装置200。因此,固件232在由固件验证和解密函数226进行解密之后被加载。用于对固件232进行解密的解密密钥244可存储在安全存储器240中。

安全存储器240还可包括回滚计数器(rollback counter)246、禁用标志248和权限密钥249。回滚计数器246指示固件232的修补版本。例如,根据发明构思的至少一些示例实施例,回滚计数器246存储修补版本信息。例如,当用于修补而生成的固件232的版本与编程在回滚计数器246中的计数值不匹配时,可阻止固件232的执行。可通过回滚计数器246来防止使用固件232的先前版本的恶意攻击的企图。禁用标志248是用于在启动中禁用ROM220中存在的函数或固件之中的错误的或不必要的函数或固件的标志值。权限密钥249可根据用于认证(或验证)的用户权限来提供权限密钥。

验证状态寄存器250存储对加载到RAM 230上的固件232进行认证或验证的结果。因为验证状态寄存器250存储为了修补在ROM 220中实现的函数或固件而提供的固件232的认证结果,所以验证状态寄存器250可以以易失性存储器来实现。

互连器260被提供为用于在半导体装置200的内部硬件组件之间提供网络的总线或通道。

根据依照发明构思的至少一个示例实施例的半导体装置200,编程在ROM 220中的固件或函数可通过加载到RAM230上的固件或函数来修补。特别地,固件或函数可需要修补步骤中的用户认证处理。仅通过认证而验证的固件或函数可被解密并且加载到RAM 230上。此外,可通过应用回滚计数器246来阻止具有不匹配版本的固件的执行。可通过使用禁用标志248来阻止ROM 220的固件或函数之中的错误的或不必要的固件或函数。因此,根据发明构思的至少一个示例实施例的半导体装置200可提供对抗在易于受安全性影响的ROM 220的修补的处理中可能发生的攻击或错误的高安全性能。

图7是示出图6的ROM的可修补函数的框图。参照图7,可修补函数222可包括替换标志检查器222a、固件状态检查器222b、替换调用逻辑222c、禁用标志检查器222d、权限检查器222e和函数体222f,其每个可由例如可修补函数222内的计算机可执行指令来实现。替换标志检查器222a检查包括在固件232中的替换标志的值。当从CPU 210调用可修补函数222时,首先,替换标志检查器222a检查可修补函数222是否能够被加载到RAM 230上的函数或固件232替换。指示加载到RAM 230上的函数是否能够替换ROM 220的对应函数的替换标志存在于固件232的特定字段中。替换标志检查器222a检查写入解密的固件232中的替换标志的值,并且可确定是否能替换可修补函数222。

固件状态检查器222b检查存储在验证状态寄存器250中的固件232的验证结果。当固件验证状态的值对应于验证通过时,固件状态检查器222b使用固件232执行修补操作。相反,当固件验证状态的值对应于验证失败时,固件状态检查器222b可停止使用固件232的全部操作。固件状态检查器222b可设置全部序列,使得预先编程在ROM 120中的函数体222f被运行。

替换调用逻辑222c监测可修补函数222是否被CPU 210调用。当编程在ROM 220中的代码或函数被调用时,可修补函数222可被调用,或者不支持修补函数的函数可被调用。当可修补函数222被调用时,替换调用逻辑222c可启用用于修补函数或固件的序列。

禁用标志检查器222d参考禁用标志248来阻止记录在ROM 220上的固件或函数之中的错误的或不必要的固件或函数的执行。权限检查器222e可根据包括在固件232的查找表中的权限级别来提供修补权限。

函数体222f是可修补函数222的第一编程形式的函数。即使调用了可修补函数222,当加载到RAM 230上的固件232的认证失败时或当不需要替换时,函数体222f也可被运行。

以上简要描述了包括在可修补函数222中的多条信息。然而,可很好地理解,根据认证方式或权限级别,各种函数还被添加到可修补函数222。

图8是示出根据发明构思的至少一个示例实施例的固件结构的示图。参照图8,加载到RAM 230上的固件232可包括查找表232a以及替换函数232b和232c。

当ROM 220的可修补函数222或224运行时,查找表232a向CPU 210提供关于替换是否可行的信息以及关于替换函数232b和232c在RAM 230上的位置的信息。查找表232a包括关于函数标识符(ID)、替换标志、权限级别和替换函数的位置的信息。例如,假设ROM 220的可修补函数222被运行。当可修补函数222的函数标识符是“ID_1”时,可参考与“ID_1”对应的查找表232a的信息来执行可修补函数222的修补。替换标志的值对应于“是”,并且替换函数的位置对应于RAM 230的地址Addr_1。此外,权限级别对应于“根(root)”的情况是指需要修补或替换的用户具有系统的根权限。因此,可通过加载在RAM 230的地址Addr_1处的替换函数232b来对可修补函数222进行修补,并且理解的是,需要修补的用户是具有根权限的用户。

相反,针对查找表232a的函数标识符“ID_2”,替换标志的值对应于“否”。因此,在运行与函数标识符“ID_2”对应的函数的情况下,可不执行使用加载到RAM 230上的函数或固件的修补。与函数标识符“ID_n”对应的替换标志的值为“是”。因此,当运行与函数标识符“ID_n”对应的函数时,可通过加载在RAM 230的地址Addr_n处的替换函数232c来对可修补函数224进行修补。

图9是示出根据发明构思的至少一个示例实施例的修补ROM的函数的步骤的流程图。参照图9,在调用编程在ROM220(参照图6)中的可修补函数或固件的情况下,根据发明构思的至少一个示例实施例的半导体装置200(参照图1)对加载到RAM230上的固件映像执行用户认证和解密。可参考存储在RAM230中的查找表232a(参照图8)来检查替换是否可行或者替换函数的位置。

在操作S210中,CPU 210检查回滚计数。CPU 210可确定写入安全存储器240中的回滚计数器246的值与加载到RAM230上的固件232的修补版本是否匹配。当回滚计数器246的值与固件232的修补版本不匹配(失败)时,终止步骤。当回滚计数器246的值与固件232的修补版本匹配(通过)时,步骤进行到操作S215。

在操作S215中,CPU 210获取或接收加密和数字签名的固件映像。固件映像可从半导体装置200的外部输入。例如,固件映像可从被提供以更新半导体装置200的固件的存储装置或更新设备被提供。

在操作S220中,CPU 210对加密的固件映像执行认证或验证操作。例如,CPU 210可将包括在固件映像中的公钥和电子签名与存储在安全存储器240中的公钥/电子签名242进行比较。当比较结果指示公钥不匹配或者电子签名不匹配时,可确定加密的固件映像的验证失败。另外,CPU 210将加密的固件映像的验证结果存储在验证状态寄存器250中。

在操作S225中,CPU 210根据加密的固件映像232的验证结果执行操作分支。当确定加密固件映像的验证失败(否)时,步骤进行到操作S280。相反,当确定加密固件映像的验证成功时(是),步骤进行到操作S230。

在操作S230中,CPU 210对加密的固件映像进行解密。例如,CPU 210可通过使用存储在安全存储器240中的解密密钥244来对加密的固件映像进行解密。解密的固件232可被加载到RAM230上。在解密处理中,CPU 210可生成查找表232a,并且可生成RAM230上的每个替换函数的地址。在解密的固件232被加载到RAM230上之后,每当调用ROM220的可修补函数时,可使用查找表232a。

在操作S240中,CPU 210调用可修补函数。例如,可调用可修补函数222。可修补函数的调用事件可在启动期间发生或者可在半导体装置200操作时发生。

在操作S250中,CPU 210检查禁用标志248。当禁用标志248的值对应于“禁用”时,可终止步骤。相反,当禁用标志248的值对应于“启用”时,步骤进行到操作S255。

在操作S255中,CPU 210出于确定解密的固件232的有效性的目的检查验证状态寄存器250。也就是说,为了参考在操作S220中执行的验证的结果,CPU 210读取存储在验证状态寄存器250中的验证结果。当验证状态寄存器250的值对应于验证失败时,步骤进行到操作S280。相反,当验证状态寄存器250的值对应于验证通过时,步骤进行到操作S260。

在操作S260中,CPU 210检查包括在查找表232a中的替换标志。例如,在操作S240中调用的可修补函数222的情况下,可在查找表232a上检查与函数标识符ID_1对应的替换标志。当替换标志的值对应于指示“可替换”的“是”时,步骤进行到操作S265。相反,当替换标志的值对应于指示“不可替换”的“否”时,步骤进行到操作S280。

在操作S265中,CPU 210检查包括在查找表232a中的权限级别。当权限级别指示“允许”时,步骤进行到操作S270。然而,当权限级别指示“不允许”时,步骤进行到操作S280。

在操作S270中,CPU 210运行加载到RAM230上并且用于替换所调用的可修补函数的替换函数。例如,可运行与函数标识符ID_1相关联的地址Addr_1所对应的替换函数232b,而不是在操作S240中调用的可修补函数222。

在操作S280中,CPU 210可运行原始存储在ROM 220中的函数222。也就是说,在加密的固件映像的验证失败、替换标志的值对应于“否”或者权限级别指示“不允许”的情况下,CPU 210可执行原始存储在ROM 220中的函数222。

根据发明构思的至少一个示例实施例,以上简要描述了出于替换ROM 220中存在的固件或函数的目的验证加载到RAM 230上的固件或函数的方法。

图10是示出发明构思的至少另一示例实施例的框图。参照图10,根据发明构思的至少一个示例实施例的半导体装置300可使用未嵌入的RAM 400作为工作存储器。因此,半导体装置300可通过使用存储器控制器330来控制和访问RAM400。除了RAM 400放置在半导体装置300的外部之外,图10的半导体装置300的操作与图1的操作基本相同。例如,图1中的CPU 110、ROM 120、安全存储器140和互连器160可分别对应于图10中的CPU 310、ROM 320、安全存储器340、和互连器350。此外,验证状态寄存器在图10中未示出。因此,这里将不重复其详细描述。

根据发明构思的至少一个示例实施例,当利用加载到RAM上的固件或函数来修补ROM时,可提供高安全性能。因此,在半导体装置的ROM中实现的固件或函数被稳定地更新。

尽管已经参照发明构思的示例性实施例对发明构思进行了描述,但是本领域普通技术人员将清楚,在不脱离在权利要求中阐述的发明构思的精神和范围的情况下,可对发明构思做出各种改变和修改。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种应用于HID设备数据传输系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类