CN112817619B - 电脑***及其安全管理方法以及电脑软件产品 - Google Patents
电脑***及其安全管理方法以及电脑软件产品 Download PDFInfo
- Publication number
- CN112817619B CN112817619B CN202011286772.8A CN202011286772A CN112817619B CN 112817619 B CN112817619 B CN 112817619B CN 202011286772 A CN202011286772 A CN 202011286772A CN 112817619 B CN112817619 B CN 112817619B
- Authority
- CN
- China
- Prior art keywords
- version
- self
- computer system
- indicator
- test
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种电脑***及其安全管理方法以及电脑软件产品,该电脑***包括一或多个存储器装置、多个非可重置存储器元件和处理器。第一存储器装置被配置以在一或多个存储器装置中储存(1)启动该电脑***的多级启动程序的第一版本,该多级启动程序包括测试该多级启动程序方自我测试程序;以及,(2)已知可信任的多级启动程序的第二版本。多个非可重置存储器元件被配置以储存多个非可重置指示器,该多个非可重置指示器包括至少一自我测试要求指示器和一自我测试通过指示器。处理器被配置以撷取多级启动程序的该第一版本,且当该第一版本至少为一最近可信任的第二版本时,使用第一版本和多个非可重置指示器安全地启动该电脑***。
Description
技术领域
本发明一般与电脑***的安全回复有关,特别是有关于电脑***的安全固件管理的方法和***。
背景技术
电脑***可能使用快闪存储器来储存非挥发性数据,例如,开机码。在有些情况下,快闪存储器为了重要功能,例如,安全性和电力管理,也提供持续储存支援。储存在快闪存储器的上述开机码被视为固件。
很多方法已被设计以验证固件的可靠性和保护上述固件免于危害。典型技术可被发现在,例如,“SECURITY REQUIREMENT FOR CRYPTOGRAPHIC MODULES,ImplementationGuidelines”NIST-FIPS 140-2,最初发布于2003年3月28日;“The keyed-Hash MessageAuthentication Code”FIPS PUB 198-1,2008年7月;“Secure Hash Standard(SHS)”NIST-FIPS 180-4,2015年8月;以及“UEFI(Unified Extensible Firmware Interface ForumForum)规格书”版本2.7(勘误表A),2017年8月。上述四种文件参照并入于本说明书中。
发明内容
本文所述的本发明实施例提供一种电脑***,包括一或多个存储器装置、多个非可重置存储器元件,和处理器。一或多个存储器装置,被配置以储存(1)用以启动该电脑***的启动程序的第一版本,该启动程序包括一自我测试程序;以及(2)已知可信任的启动程序的第二版本。多个非可重置存储器元件,被配置以储存多个非可重置指示器。多个非可重置指示器包括至少(1)一自我测试要求指示器,要求执行该自我测试程序,以及(2)一自我测试通过指示器,指示该自我测试程序是否通过或失败。处理器,被配置以撷取启动程序的该第一版本,且当第一版本至少为一最近可信任的第二版本时,使用第一版本和多个非可重置指示器启动该电脑***。
在有些实施例中,一或多个存储器装置包括第一存储器装置以储存第一版本,以及第二存储器装置以储存第二版本。在一实施例中,启动程序在执行期间会使得电脑***重置,而当电脑***进行重置时多个非可重置指示器仍保留数据。在一实施例中,当第一版本是比可信任的第二版本较旧时,处理器被配置以启动回复过程,复制可信任的第二版本以取代第一版本。在一揭露实施例中,当第一版本是比可信任的第二版本较新时,处理器被配置以读取自我测试通过指示器,以及当自我测试通过指示器被清除时,设定自我测试要求指示器且之后重置电脑***。
在一典型实施例中,当第一版本是比可信任的第二版本较新时,处理器被配置以读取自我测试通过指示器和自我测试要求指示器,以及当自我测试通过指示器被清除和自我测试要求指示器被设定时,运行自我测试程序,清除上述自我测试要求指示器,依据上述自我测试程序的结果设定或清除自我测试通过指示器,以及之后重置电脑***。
在一实施例中,非可重置指示器更包括更新认可指示器,以及当第一版本是比可信任的第二版本较新时,处理器被配置以读取自我测试通过指示器和更新认可指示器。当自我测试通过指示器被设定但更新认可指示器被清除时,阶层式认证启动程序的第一版本,依据第一版本的认证结果,设定或清除更新认可指示器,以及之后重置电脑***。在一揭露实施例中,非可重置指示器更包括更新认可指示器,以及当第一版本是比可信任的第二版本较新时,处理器被配置以读取自我测试通过指示器和更新认可指示器,以及当自我测试通过指示器和更新认可指示器两者被设定时,以第一版本取代可信任的第二版本,且之后重置电脑***。在一实施例中,在电脑***执行期间,至少一储存第二版本的存储器区域是写入保护的。
根据本发明的实施例,提供一种在电脑***中的安全管理方法。该方法包括在该电脑***的一或多个存储器装置中储存(1)启动该电脑***的启动程序的第一版本,启动程序系包括一自我测试程序;以及,(2)已知可信任的启动程序的第二版本。在电脑***的非可重置存储器元件中储存多个非可重置指示器,且多个非可重置指示器包括(1)一自我测试要求指示器,要求执行该自我测试程序,以及(2)一自我测试通过指示器,指示该自我测试程序是否通过或失败;以及利用电脑***的处理器,撷取启动程序的第一版本,且当第一版本至少为一最近可信任的第二版本时,使用第一版本和多个非可重置指示器安全地启动电脑***。
根据本发明的实施例,还提供电脑软件产品。该产品包括有形非暂态电脑可读取的媒体,多个程序指令被储存在该媒体,当多个指令被电脑***的处理器读取时,致使该处理器执行:在该电脑***的一或多个存储器装置中储存(1)启动该电脑***的启动程序的第一版本,该启动程序包括测试启动程序的自我测试程序;以及,(2)已知可信任的启动程序的第二版本。在该电脑***的非可重置存储器元件中储存多个非可重置指示器,无论重置该电脑***与否,上述多个非可重置指示器是保留的,且上述多个非可重置指示器包括(1)一自我测试要求指示器,要求执行该自我测试程序,以及(2)一自我测试通过指示器,指示该自我测试程序是否通过或失败;以及撷取启动程序的第一版本,且当第一版本至少为一最近可信任的第二版本时,使用第一版本和多个非可重置指示器安全地启动电脑***。
附图说明
图1所示为根据本发明的实施例,示意地阐述一电脑***的方块图。
图2所示为根据本发明的实施例,示意地描述快闪存储器的程序的时序波形图。
图3所示为根据本发明的实施例,示意地阐述一启动方法的流程图。
图4所示为根据本发明的实施例,示意地阐述一快闪回复方法的流程图。
图5所示为根据本发明的实施例,示意地阐述一快闪更新方法的流程图。
图6所示为根据本发明的实施例,示意地阐述一阶层式认证方法的流程图。
图7所示为根据本发明的实施例,示意地阐述一Linux层级认证方法的流程图。
图8所示为根据本发明的实施例,示意地阐述一Linux层级启动的流程图。
附图标记:
100~方块图
102~处理器
104~控制器
106~启动唯读存储器
108~第一序列周边介面快闪装置
110~第二序列周边介面快闪装置
122~非可重置指示器
200~正常程序化的时序波形
202~中止程序化的时序波形
300~启动方法流程
302~重置
304~确认开机
306~快闪恢复流程
308~确认快闪1标签
310~快闪更新流程
312~快闪0认证
314~设定开机
316~版本控制
318~自我测试通过
320~自我测试要求
322~锁定快闪1且去
324~确认更新认可
402~清除快闪0有效标签
404~复制快闪1到快闪0
406~设定快闪0有效标签
408~清除指示器
410~从快闪0设定开机
502~解锁快闪1到写入
504~清除快闪1有效标签
506~复制快闪1到快闪0
508~设定快闪1有效标签
510~清除指示器
512~从快闪0设定开机
600~阶层式认证方法流程
602~启动层级1
604~认证层级2
606~启动层级2
608~认证层级3
610~起动层级n-2
612~认证层级n-1
700~Linux层级认证方法流程
702~层级n-1启动
704~认证Linux层级
706~确认自我测试通过指示器
708~设定更新认可
710~从快闪0设定开机
712~清除且锁定
800~Linux层级启动流程
802~Linux启动
804~确认自我测试要求
806~Linux自我测试
808~清除自我测试要求
810~设定自我测试通过
812~从快闪0设定开机
814~认证DDR影像
816~复制影像到快闪0
具体实施方式
根据本发明的实施例,电脑***包括快闪存储器和唯读存储器(Read-Only-Memory,ROM)。在实施例中,开机程序可包括阶层式软件层,从小且最受信任的层0到较大而不受信任的外层(在本文所述和图式中,有时把开机层视为开机层级)。
当电脑***开机时,储存在ROM的初始开机码执行开机程序(即是层-0开机(“layer-0boot”)),且接着认证“层-1开机”程序,其中该认证是藉由加密密钥和数字签章典型地完成。其次,层-1开机执行,且认证下一层,该下一层可被储存在快闪或其他***存储器(典型地是非挥发性存储器)。上述过程层级地持续执行直到“层n-1开机”程序执行,以及认证“层-n开机”,层-n开机(layer-n boot)为最后开机级(final boot stage)。在有些实施例中,该电脑***是Linux***,且层-n开机被视为“Linux开机”。这类的层级式安全开机在例如,先前所引用的NIST-FIPS出版物180-4中已经叙明。上述多个“层-m开机”程序又称为多级启动程序。
根据本发明的有些实施例,电脑***可包括处理器,被配置以执行包括开机码的电脑程序;以及两个快闪存储器;其第一快闪存储器(下文将被视为“快闪0”)是用于启动,其第二快闪存储器(下文将被视为“快闪1”)用于储存最后的(换句话说,最近的)已知良好固件码,且用于数据回复。在本文中,术语“良好固件码”表示已被成功地认证且被认为可信赖和稳定的固件码。根据实施例,当从快闪0开机失败时,电脑***将尝试从快闪1开机。
电脑***还包括控制器,根据该控制器可能包括的“从快闪0/1开机暂存器位”,该控制器选择从处理器去快闪0或快闪1的快闪存取。当快闪0被以新固件码程序化时,该处理器认证该程序码。当该认证成功时,处理器复制新固件码到快闪1,且该电脑***从快闪0开机。当该认证失败时,处理器从快闪1到快闪0复制最后已知良好固件,如此,删除新固件。之后电脑***将从快闪0开机。
虽然本文所述的实施例大都使用快闪存储器。但本文中所揭露技术非限于快闪存储器,且其他实施例可使用任何其他合适的存储器装置。下文所述的内容,术语快闪存储器和存储器装置可互换使用。
在有些情况下,上述层级式认证过程所提供的保护可能不够。随者开机程序码大小的增加,该程序码的漏洞增加且安全性降低。此外,快闪程序可被电源故障或电源突波而中断,从而导致程序码不确定和可能不稳定。根据本发明的实施例中,提供了额外的保护。
根据本发明的实施例,存储器装置中一或多个位可被用以指示完成快闪程序化(本文下述将被视为“标签位”或“有效标签”),根据一实施例,快闪程序化以标签位的设定开始,将标签位设定至第一二进位值(例如,逻辑1),以表示快闪程序化已失败。惟当程序化成功地完成时,标签位设定为第二二进位值(例如,逻辑0),以表示快闪程序化已完成。如此,当电源故障发生时而此时快闪正在被程序化,该标签会表示程序化失败,并且采取适当的措施(以下将参照于典型实施例描述此类措施。)。
在有些实施例中,根据本发明,电脑***包括一或多个存储器元件,被配置为由处理器程序化(program)为二进位值,且只要处理器供应电压是在预定电压范围内(即使当处理器的其他存储器被重置时),上述存储器元件就会保留已程序化的二进位值。这类的存储器元件如下所述将被称为非可重置指示器(non-resettable indicator)。在一些实施例中,不同的开机操作可包括设定一或多个非可重置指示器,以及藉由重置处理器而结束。如此,当处理器开机,处理器可藉由读取一或多个非可重置指示器,继续执行在先前开机会话(previous boot session)启动的开机时序。应注意的是,在本文中非可重置指示器可表示一指示值或是储存此非可重置指示值的存储器元件;换句话说,储存此非可重置指示值的存储器元件可称之为非可重置指示器,而所谓”在非可重置存储器元件中储存非可重置指示器”是指在非可重置存储器元件中储存一指示值,使此非可重置存储器元件变成一非可重置指示器。
在一实施例中,开机程序的最高层级层包括验证开机码功能的自我测试程序。当电脑***从新开机码开机时(被储存在快闪0),非可重置指示器(如下所述将被视为“自我测试要求”指示器)可被设定,以表示要求自我测试。当开机码的最高层级层检测到自我测试要求指示器被设定时,处理器将执行自我测程序,并储存自我测试的结果在其他非可重置指示器(“自我测试通过”指示器),且之后重置。如此,虽然该固件的最高层级层很大并且易遭于危害,但在最高层级中可能引起暂存器值或挥发性存储器内容的任何干扰都将被重置;只有固件的自我测试部分的要求,将储存真正结果在非可重置自我测试通过指示器。
在有些实施例中,在高于最低层的开机层中,错误、恶意或意外,可能会错误地设定自我测试通过指示器。根据一实施例,只有当“更新认可非可重置指示器”被设定时,处理器将更新快闪1(亦即,从快闪0到快闪1复制开机程序)。在一实施例中,为避免自我测试完成后固件改变,处理器藉由层级式认证所有开机层,回应自我测试通过指示器,以反应成功认证,设定更新认可非可重置指示器,以及重置该处理器。
在有些实施例中,上述“从快闪0/1开机暂存器”是非可重置指示器,该非可重置指示器选择开机码来源到快闪0,或如果从快闪0开机失败,则选择到快闪1。在其他实施例中,“锁定快闪1写入”非可重置指示器防止写入到快闪1(该非可重置“从快闪0/1开机”和“锁定快闪1写入”指示器将参照于典型实施例而描述如下)
总之,在包括两个开机快闪装置、控制器和安全层级开机的电脑***,藉由非可重置指示器、储存在快闪装置中自我测试程序和有效标签,可被实现。
[***描述]
图1为根据本发明的实施例,示意地阐述一电脑***的方块图100。电脑***包括处理器102,控制器104,启动唯读存储器(Bootstrap ROM)106,第一序列周边介面(SerialPeripheral Interface,SPI)快闪装置108(以下内容中又称其为“快闪0”),第二SPI快闪装置110(以下内容中又称其为“快闪1”),以及非可重置指示器122。在实施例中,电脑***100可能包括其他未显示的子元件;其中包括(但非限于),周边,通信埠和存储器。
处理器102被配置以运行储存在存储器的程序,该程序包括可能储存在启动ROM106和第一SPI快闪装置108的启动程序(multi-stage bootstrap program)。控制器104经由SPI汇流排被耦合在第一SPI快闪装置和快闪-1。该汇流排包括晶片选择(Chip-Select,CS)CS0和CS1线。上述CS线各别控制第一SPI快闪装置和第二SPI快闪装置,在图1所示的典型实施例中,CS线的极性是负的(低态有效),因此,CS线被指定为CS0#和CS1#。
非可重置指示器122是当重置电脑***时用于维持逻辑值的暂存器。在根据本发明的实施例中,开机时序可能包括电脑***的一或多个重置,其中包括多个暂存器的重置,但是非可重置指示器,在重置期间保留上述暂存器和指示器值。
在根据本发明的实施例中,非可重置指示器可能包括:
“从快闪0/1开机指示器”,决定处理器从两个快闪装置中的哪一个运行开机码;
“锁定快闪1写入指示器”,当设定时防止所有写入到快闪1;
“自我测试要求指示器”,当由开机Linux层观察(observe)此指示器或检测到此指示器被设定时,会引起处理器运行自我测试程序;
“自我测试通过指示器”,指示自我测试成功地通过的较低开机层,以及
“更新认可指示器”,当由固件层级-0(level-0of the firmware)观察到此指示器或检测到此指示器被设定时,引起处理器以快闪0内容更新快闪1。
根据如图1所示的本典型范例,快闪1(即是第二SPI快闪装置110)储存已为良好的固件程序版本,而快闪0(即是第一SPI快闪装置108)储存为电脑***所用的固件码。在有些实施例中,固件码包括确认固件开机码的功能的自我测试程序。
在实施例中,当新固件在快闪0被程序化时,开机时处理器认证新固件且确认自我测试是否通过。当新固件认证失败时,或自我测试失败时,新固件被认为故障,且电脑***藉由复制快闪1到快闪0,以及删除新固件,将回复最后已知固件。
当认证成功且自我测试通过时,则新固件被认为良好,电脑***将复制新固件到快闪1,以取代最后已知良好固件。
根据本发明的实施例,启动程序的最高层虽然经过认证,但易遭于危害且可能为故障。因此,当执行固件最高层时,必须防止处理器免于改变快闪1的内容,上述快闪1的内容可能阻断任何回复选择。在实施例中,只有固件的较低层级(典型地基于ROM)会改变快闪1的内容。因此,限制了阶层式较高的已感染固件层级的危害。可以理解更新快闪1层级越低,解决方法越安全。在有些实施例中,层级1或其他低层级会更新快闪1,这样可能会较不安全,但仍然比让高层级固件更新快闪1安全。
运行自我测试后,固件必需重置电脑***,以及不做任何可能已引起的危害。因此,自我测试的结果会在非可重置指示器显示,将被较低层级固件使用。当较高层级固件的自我测试部分是相对小时,根据本发明的实施例,电脑***的安全性可能达到高。
如此,根据图1所示的典型实施例,电脑***藉由运行认证和自我测试,可能检测不安全或非功能的固件,自我测试后,电脑***重置,以及消除较高固件层级可能已引起的任何损害。自我测试的结果由非可重置指示器传至较低固件层级。当测试到不安全或非功能的固件时,电脑***藉由复制快闪1到快闪0还原到最后已知固件。当认证和自我测试通过时,则新固件被认为良好,且电脑***复制该固件到快闪1,以取代先前最后已知的良好固件。
如所认知,上述电脑***100的架构被做为示例。根据本揭露技术,电脑***非限于如上所述。在其他实施例中,例如,启动ROM 106及/或控制器104可被耦合在处理器102。在一实施例中,快闪0及/或快闪1藉由串联或并联SPI以外的汇流排,可被耦合在处理器102。在有些实施例中,快闪0及/或快闪1可被其他存储器技术,例如,铁电随机存取存储器(Ferro-Electric RAM,F-RAM)或磁阻式随机存取存储器(Magneto-resistive RAM,M-RAM),取代。
在一实施例中,超过快闪1的单一版本可能出现,已作为冗余之用。
图2为根据本发明的实施例,示意地描述快闪存储器的程序的时间波形。非挥发储存位(被视为“有效标签”),典型地储存于快闪存储器,用于显示快闪存储器的程序是有效的。
波形200阐述与正常快闪存储器程序化会话有关的时间波形。CPU清除有效标签位,以表示程序化已失败。之后处理器程序化快闪存储器,且只当程序化完成后,处理器设定标签,以表示程序化成功。
时间波形202阐述因电源故障而中止的快闪存储器程序化会话的时序波形图。在程序化前清除有效标签。在程序化期间,电源输入的电压下降从而中止程序化。有效标签仍然保持清除,以表示程序化失败。
如此,根据如上所述的典型实施例,参照于图2,一组有效标签表示快闪存储器程序化成功,以及任何程序化失败,其中包括不合时的中止,例如,因电源故障,将引起一清除有效标签和程序化失败的指示。
在实施例中,其中有效标签储存在快闪存储器,在抹除执行后可根据所选择的快闪存储器技术的逻辑值,决定清除和设定的有效标签的逻辑值。例如,当抹除执行引起设定快闪存储器位到逻辑0时,在逻辑1的有效标签将表示程序化成功。
图3根据本发明的实施例,示意地阐述一启动方法的流程图。该流程图被处理器102(图1)所执行。
当流程300开始时,快闪0可储存新开机固件,该固件不同于在快闪1的固件。上述情形会发生于:当新快闪装置被***于***时,或在执行中,在进行流程300的重置之前,新固件已在快闪0被程序化(以下将参照于图8描述此类情形)。另外,当快闪0的固件程序化未完成时(且可能在流程300继续执行,将如下所述),在快闪0的固件可能不同于在快闪1的固件。
流程在“重置步骤”302开始,其中电脑***是重置。须注意当电脑***是重置时,除了非可重置指示器之外,清除所有暂存器的内容,上述步骤被本揭露的开机方法所处理。如此,***重开机时,任何受损程序可能已创造的危害将被撤销。
“重置步骤”302后,处理器进入“从快闪1确认开机步骤”304,并确认非可重置“从快闪0/1开机”指示器的值。当在步骤304,非重置“从快闪0/1开机”指示器表示处理器应从快闪1开机时,处理器将进入“快闪回复流程”306,其中包括复制快闪1到快闪0,以及之后重新进入“重置步骤”302(以下将参照于图4描述“快闪回复流程”306)。须注意,当从快闪0/1开机指示器表示将从快闪1完成开机时,“快闪回复流程”306是从程序码运行,该程序码储存在快闪1。当指示器表示从快闪0开机时,进一步的开机指令将从快闪0运行(在有些案例中,ROM程序码可能管理整个回复流程,且复制程序码从快闪1到快闪0,以及之后重置***,为从快闪0开机)。
当在步骤304,指示器表示从快闪0开机时,处理器将进入“确认快闪1标签步骤”308,其中处理器确认快闪1有效标签的值。
当在步骤308,快闪1有效标签未被设定时(因此,没有表示快闪1已被成功地程序化),处理器将进入“快闪更新流程”310,该流程包括复制快闪0到快闪1,以及之后重新进入“重置步骤”302(以下将参照于图5描述“快闪更新流程”310)。
当在步骤308,快闪1有效标签被设定时(表示快闪1程序化成功),处理器进入“快闪0认证步骤”312,并认证固件层级1。当在步骤312,认证失败时,处理器将进入“从快闪1设定开机步骤”314,其中处理器将设定从快闪0/1开机指示器,以表示从快闪1开机,且之后重置。在有些实施例中,核心重置步骤314是与“重置步骤”302相同。在其他实施例中,在步骤314,重置可能是较短的过程,例如,“重置步骤”302可能包括重置时钟来源,如锁相回路,然而重置步骤314可能只包括暂存器重置。
当在步骤312,认证通过时,处理器将进入“版本控制步骤”316,其中处理器比较储存在快闪0的固件版本程序码和储存在快闪1的固件版本程序码。根据本发明的实施例,部分的固件程序码是版本识别码(“版本程序码”),上述识别码可能包括数值版本数字,或例如,时间印记。版本程序码应被建立,以便处理器可告诉哪两个固件版本是较新的。例如,当版本程序码是整数时,上述整数是在每个新版本中递增而得,带有算术上大于其他固件版本的版本程序码的固件程序码为较新的版本。
当在步骤316,快闪0版本程序码是小于快闪1版本程序码时,储存在快闪0的新固件不是最近的固件。在上述案例中,处理器将进入“从快闪1设定开机步骤”314。当在步骤316,快闪0和快闪1的版本程序码是一样时,新固件将被认可,且快闪1已被更新。在此案例中,处理器进入“锁定快闪1且去步骤”322,然而处理器设定非重置锁定快闪1写入指示器,且之后进行固件层级1(之后到较高层级直到执行Linux固件)。快闪1的锁定到写入可提高***的安全性,并防止来自较高层级的固件和任何应用对回复快闪存储器的危害。
当在步骤316,储存在快闪0的固件版本程序码是比储存在快闪1的固件版本程序码大时,快闪0储存新固件,上述新固件需被验证。之后处理器将进入“确认自我测试通过步骤”318,并确认是否设定自我测试通过非可重置指示器。当未设定自我测试通过指示器时,处理器将进入“设定自我测试要求步骤”320,并设定非重置自我测试要求指示器,以表示自我测试要求。之后处理器将进入“锁定快闪1且去步骤”322。在上述案例中,由于自我测试要求指示器被设定,当达到Linux固件层级时,Linux将执行自我测试,且之后重置(以下将参照于图8描述此情形)。
当在步骤318,自我测试通过非可重置指示器被设定时,处理器将进入“确认更新认可步骤”324,并确认是否设定非重置更新认可指示器。当指示器未被设定时,处理器将进入“锁定快闪1且去步骤”322。在此案例中,由于自我测试通过指示器被设定、且更新认可指示器未被设定,当达到Linux固件层级时,低于linux层级的上述层级将设定更新认可非可重置指示器,且之后重置(以下将参照于图8描述此情形)。
当在步骤324,更新认可指示器被设定时,处理器将进入“快闪更新流程”310。
在步骤322之后,处理器执行固件层级1,将如下所述,参照于图6。
图4为根据本发明的实施例,示意地阐述一快闪回复方法的流程(在图3的306)。当储存在于快闪0的新固件没有通过认证或自我测试时,快闪回复流程是由处理器102所执行(图1)。当从快闪0/1开机指示器表示从快闪1开机,则进入流程306,快闪回复流程的程序码是储存在快闪1的程序码。
流程从“清除快闪0有效标签步骤”402开始,其中处理器清除快闪0的有效标签,为快闪0程序化而准备。下一步,处理器进入“复制快闪1到快闪0步骤”404,其中储存在快闪1的固件是最后已知良好固件,被复制到快闪0,并清除新固件或损毁旧固件(已认证或自我测试失败)。
如所认知,步骤404可能包括多个步骤,其中含有但非限于抹除快闪存储器扇区,程序化快闪存储器的扇区,功能测试以及边际测试。所需的步骤根据选择快闪存储器技术可能有所不同,且超出本发明的范围。
步骤404后,处理器进入“设定快闪0有效标签步骤”406,并设定有效标签(validtag),用以表示快闪存储器程序化已被成功地完成,如上所述,参照于图2,即使在程序化期间电源被中断时,有效标签值将不会损毁。之后处理器进入“清除指示器步骤”408,并清除非重置自我测试要求指示器、自我测试通过指示器、以及更新认可指示器。根据快闪回复流程之前的步骤,每一在步骤408中进行清除的非可重置指示器可能在步骤408之前已经被清除或尚未被清除。
步骤408后,处理器进入“从快闪0设定开机步骤”410,并设定从快闪0/1开机指示器,以表示从快闪0开机,之后退出流程(例如图3的进入重置步骤302)。
图5为根据本发明的实施例,示意地阐述一快闪更新方法的流程(图3的步骤310)。该流程是由处理器102所执行(图1)。流程从“解锁快闪1到写入步骤”502开始,其中处理器清除非重置锁定快闪1写入指示器,以便快闪0可被复制到快闪1。下一步,处理器进入“清除快闪1有效标签步骤”504,其中处理器清除快闪1的有效标签,为快闪1程序化而准备。之后处理器进入“复制快闪1到快闪0步骤”506,并复制快闪0到快闪1的内容,以及更新最后已知良好固件。如所认知,步骤506可能包括多个步骤,其中含有但非限于删除快闪存储器扇区,程序化快闪存储器扇区,功能测试以及边际测试。所需的步骤根据选择快闪存储器技术可能有所不同,且超出本发明的范围。
在步骤506后,处理器进入“设定快闪1有效标签步骤”508,并设定有效标签,表示快闪存储器程序化已被成功地完成(如上所述,参照于图2,即使在程序化期间电源被中断时,有效标签值将不会损毁)。
之后处理器进入“清除指示器步骤”510,并清除非重置自我测试要求,自我测试通过,以及更新认可指示器(根据快闪回复流程之前的步骤,在步骤510中,每一清除的非可重置指示器可能或不能已被清除)。
步骤510后,处理器进入“从快闪0设定开机步骤”512,其中处理器设定非重置从快闪0/1开机指示器,以表示从快闪0开机,之后结束流程310(图3的处理器进入重置步骤302)。
图6为根据本发明的实施例,示意地阐述一阶层式认证方法的流程600。该流程是由处理器102所执行(图1),在步骤322后,该处理器进入流程。流程从“启动层级1步骤”602开始,其中处理器开始执行储存在快取0的层级1开机码。下一步,处理器进入“认证层级2步骤”604,其中处理器认证下一启动层(例如,藉由确认数字签章)。当认证失败时,或当看门狗计时器(Watchdog Timer,WDG)已过期时,处理器将执行核心重置。当在步骤604,已认证层级2时,处理器将进入“启动层级2步骤”606,并启动开机层级2,以及进入“认证层级3步骤”608。
启动层级、认证下一层级、以及之后启动下一层级的过程,将继续执行直到在“启动层级n-2步骤”610,处理器将启动层级n-2(n是启动层级总数)。之后处理器将进入“认证层级n-1步骤”612,认证层级n-1,以及当认证通过且WDG尚未过期时,进入层级n-1认证(参照于图7所述)。
图7为根据本发明的实施例,示意地阐述一Linux层级认证方法的流程700。流程700是被处理器102(图1所示)所执行,在步骤612(图6)之后接着执行。
流程700从“层级n-1启动步骤”702开始,其中处理器启动层级n-1(低于Linux层级)。下一步,处理器进入“认证Linux层级步骤”704,其中处理器认证该Linux层级(例如,藉由确认数字签章)。当认证失败时,或当看门狗计时器(Watchdog Timer,WDG)过期时,处理器将重置核心。当认证成功时,处理器将进入“确认自我测试通过指示器步骤”706。
当自我测试藉由Linux层级已成功地执行时,非重置自我测试通过指示器被设定。如上所述,一组自我测试通过指示器不应触发快闪1更新(在层级0),因Linux层级必需被认证。然而,在步骤706,Linux层级已被认证(步骤704),因此,当自我测试通过指示器被设定时,快闪1更新应被启动。因此,在步骤706,当自我测试通过被设定时,处理器将进入“设定更新认可步骤”708,并设定非重置更新认可指示器。之后,在“从快闪0设定开机步骤”710,设定从快闪0/1开机,以表示从快闪0开机,以及下一步,重置核心。
在步骤706,当自我测试通过指示器未被设定时,处理器将“进入清除且锁定步骤”712,其中处理器清除非重置更新认可指示器(根据执行最后重置之前的步骤,可能已被清除),并设定非重置锁定快闪1写入指示器(可能被设定),以及之后启动Linux层级(以下将参照于图8描述此情形)。
图8为根据本发明的实施例,示意地阐述一Linux层级启动的流程800。该流程图由处理器102所执行(图1)。如图8所示,流程800有两开始步骤。
上述流程在“Linux启动步骤”802,可以从Linux层级启动开始(在图7所示的步骤712之后执行)。下一步,在“确认自我测试要求步骤”804,处理器确认是否设定非可重置自我测试要求指示器。如果未设定自我测试要求指示器时,则完成开机,且处理器将开始运行Linux程序码(高于开机层级)。当设定自我测试要求指示器时,处理器将进入“Linux自我测试步骤”806,并执行嵌入于Linux开机码的自我测试。
当在步骤806,自我测试失败,或看门狗计时器过期时,处理器将重置。当自我测试成功时,处理器将进入“清除自我测试要求步骤”808,并清除非重置自我测试要求指示器,以及之后进入“设定自我测试通过步骤”810,并设定非重置自我测试通过指示器。最后,处理器将进入“从快闪0设定开机步骤”812,其中处理器设定非重置从快闪0/1开机指示器,以表示从快闪0开机,以及重置核心。
当处理器在运行中且得到新固件版本时,也可经由例如,网络,进入Linux流程800。新固件是被载入到RAM,以及之后处理器进入“认证DDR影像步骤”814,其中处理器认证储存在RAM的开机影像。下一步,处理器进入“复制影像到快闪0步骤”816,并复制RAM内容到快闪0,以及重置。重置后,如上所述的步骤,参照于图3,将发挥作用,并进一步认证新固件(如上所述,在Linux层级中完成的新固件的认证是不被信任的),以及如果认为良好时,则更新快取1。
综上所述,参照于图3到图8,本文所述的方法在电脑***中有助于安全开机。上述电脑***包括两个快闪存储器,有助于安全开机藉由使用非可重置指示器、增加自我测试条件以接受新固件、以及仅完全信任开机程序的层级0,尽管所有更高的层级是阶层式认证。应当理解本文所述的方法为典型实施例。在其他实施例中,可以使用具有不同步骤及/或顺序不同的步骤的其他合适的流程。
虽本文所述的实施例大都与Linux***有关,但本揭露技术可被应用比照于其他作业***,例如,安卓,iOS,以及其他***。
处理器102和控制器104的不同的元件,经由合适硬件,例如在一或多个特殊应用集成电路(Application-Specific Integrated Circuits,ASICs)或现场可程序化逻辑栅阵列(Field-Programmable Gate Array,FPGAs),藉由使用软件、硬件、或硬件或软件元件的结合,可被实现。
在有些实施例中,处理器102包括一或多个一般通用可程序化的处理器,该处理器在软件上以实行本文所述的功能而程序化。软件经由网络以电子形式可能被下载到处理器,或可能交互地或另外地被提供及/或储存在非暂态有形媒介,例如,磁能,光学,或电子存储器。
本文所述的实施例大都与配置有关,该配置有两个固件版本(一是已知良好固件版本,另一是为电脑***所用的固件版本),分别储存在各别的存储器装置。然而,该配置不是强制性的。在其他装置中,固件版本可被以不同形式储存在一或多个存储器装置,例如,封装在相同封装装置的两个存储器,或甚至在相同存储器中两个不同区域,其中一区域是被认为比另一区域更安全的。
虽然本文所述的实施例大都解决安全开机,但本文所述的方法和***可被使用在其他应用。
上述所描述的实施例只是范例,且本发明不限于上述所显示及描述者。而是,本发明的范围含有上述的各样特征的结合和子结合,且专业人士阅读先前描述和其未揭露现有技术时会想到其中变化和修正。参照并入于本专利申请案的文件被视为该申请案的一组成部分,除了被定义在该参照并入文件中且以与这些明示或暗示的定义有所冲突的任何术语之外,仅应考虑本说明书中的定义。
Claims (15)
1.一种电脑***,其特征在于,包括:
一或多个存储器装置,被配置以储存(1)用以启动该电脑***的启动程序的第一版本,该启动程序包括一自我测试程序;以及(2)已知可信任的该启动程序的第二版本;
多个非可重置存储器元件,被配置以储存多个非可重置指示器,所述多个非可重置指示器包括:
一更新认可指示器;
一自我测试要求指示器,被配置以要求执行该自我测试程序;以及
一自我测试通过指示器,被配置以指示该自我测试程序是否通过或失败;以及
一处理器,被配置以撷取该启动程序的该第一版本,且当该第一版本至少为一最近可信任的该第二版本时,使用该第一版本和所述多个非可重置指示器启动该电脑***;
其中当该第一版本是比可信任的该第二版本较新时,该处理器被配置以读取该自我测试通过指示器和该更新认可指示器,以及当该自我测试通过指示器被设定但该更新认可指示器被清除时,该处理器从启动程序的最小的启动层开始,以阶层式认证该启动程序的该第一版本,依据该第一版本的认证结果,设定或清除该更新认可指示器,以及之后重置该电脑***。
2.如权利要求1所述的电脑***,其特征在于,该一或多个存储器装置包括被配置以储存该第一版本的第一存储器装置,以及被配置以储存该第二版本的第二存储器装置,且该启动程序在执行期间会使得该电脑***重置,而当该电脑***进行重置时该多个非可重置指示器仍保留数据。
3.如权利要求1所述的电脑***,其特征在于,当该第一版本比可信任的该第二版本较旧时,该处理器被配置以开始一回复过程,复制可信任的该第二版本,以取代该第一版本。
4.如权利要求1所述的电脑***,其特征在于,当该第一版本是比可信任的该第二版本较新,并且该处理器读取到该自我测试通过指示器被清除时,设定该自我测试要求指示器且之后重置该电脑***。
5.如权利要求1所述的电脑***,其特征在于,当该第一版本是比可信任的该第二版本较新时,该处理器被配置以读取该自我测试要求指示器,以及当该自我测试通过指示器被清除且该自我测试要求指示器被设定时,该处理器执行该自我测试程序,清除该自我测试要求指示器,依据该自我测试程序的结果,设定或清除该自我测试通过指示器,以及之后重置该电脑***。
6.如权利要求1所述的电脑***,其特征在于,当该第一版本是比可信任的该第二版本较新,并且该处理器读取到该自我测试通过指示器和该更新认可指示器两者被设定时,该处理器用该第一版本取代可信任的该第二版本,且之后重置该电脑***。
7.如权利要求1所述的电脑***,其特征在于,在该电脑***运行期间,至少一储存该第二版本的存储器区域是写入保护的。
8.一种电脑***的安全管理方法,其特征在于,该方法包括:
在该电脑***的一或多个存储器装置中储存(1)启动该电脑***的多级启动程序的第一版本,该多级启动程序系包括测试该多级启动程序的自我测试程序;以及,(2)已知可信任的该多级启动程序的第二版本;
在该电脑***的非可重置存储器元件中储存多个非可重置指示器,无论重置该电脑***与否,所述多个非可重置指示器是保留的,且所述多个非可重置指示器包括(1)一自我测试要求指示器,要求执行该自我测试程序,以及(2)一自我测试通过指示器,指示该自我测试程序是否通过或失败,以及(3)一更新认可指示器;以及
利用该电脑***的处理器,撷取该多级启动程序的该第一版本,且当该第一版本至少为一最近可信任的该第二版本时,使用该第一版本和所述多个非可重置指示器安全地启动该电脑***;
其中当该第一版本是比可信任的该第二版本较新时,启动该电脑***,该电脑***包括读取该自我测试通过指示器和该更新认可指示器,以及当该自我测试通过指示器被设定但该更新认可指示器被清除时,该处理器从多级启动程序的最小的启动层开始,阶层式认证该启动程序的该第一版本,依据该第一版本的认证结果,设定或清除该更新认可指示器,以及之后重置该电脑***。
9.如权利要求8所述的方法,其特征在于,储存该第一版本和该第二版本包括储存在第一存储器装置的该第一版本,以及储存在第二存储器装置的该第二版本。
10.如权利要求8所述的方法,其特征在于,启动该电脑***包括,当该第一版本比可信任的该第二版本较旧时,开始一回复过程,复制可信任的该第二版本,以取代该第一版本。
11.如权利要求8所述的方法,其特征在于,当该第一版本是比可信任的该第二版本较新,并且该电脑***读取到该自我测试通过指示器被清除时,设定该自我测试要求指示器且之后重置该电脑***。
12.如权利要求8所述的方法,其特征在于,当该第一版本是比可信任的该第二版本较新时,启动该电脑***包括读取该自我测试要求指示器,以及当该自我测试通过指示器被清除且该自我测试要求指示器被设定时,执行该自我测试程序,清除该自我测试要求指示器,依据该自我测试程序的结果,设定或清除该自我测试通过指示器,以及之后重置该电脑***。
13.如权利要求8所述的方法,其特征在于,当该第一版本是比可信任的该第二版本较新,并且该电脑***读取到该自我测试通过指示器和该更新认可指示器两者被设定时,用该第一版本取代可信任的该第二版本,且之后重置该电脑***。
14.如权利要求8所述的方法,其特征在于,在该电脑***运行期间,至少一储存该第二版本的存储器区域是写入保护的。
15.一种电脑软件产品,该产品包括有形非暂态电脑可读取的媒体,多个程序指令被储存在该媒体,当所述多个指令被电脑***的处理器读取时,致使该处理器执行:
在该电脑***的一或多个存储器装置中储存(1)启动该电脑***的启动程序的第一版本,该启动程序包括一自我测试程序;以及,(2)已知可信任的该启动程序的第二版本;
在该电脑***的非可重置存储器元件中储存多个非可重置指示器,且所述多个非可重置指示器包括(1)一自我测试要求指示器,要求执行该自我测试程序,以及(2)一自我测试通过指示器,指示该自我测试程序是否通过或失败,以及(3)一更新认可指示器;以及
撷取该启动程序的该第一版本,且当该第一版本至少为一最近可信任的该第二版本时,使用该第一版本和所述多个非可重置指示器启动该电脑***;
其中当该第一版本是比可信任的该第二版本较新时,启动该电脑***,该电脑***包括读取该自我测试通过指示器和该更新认可指示器,以及当该自我测试通过指示器被设定但该更新认可指示器被清除时,该处理器从多级启动程序的最小的启动层开始,阶层式认证该启动程序的该第一版本,依据该第一版本的认证结果,设定或清除该更新认可指示器,以及之后重置该电脑***。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962936518P | 2019-11-17 | 2019-11-17 | |
US62/936,518 | 2019-11-17 | ||
US16/929,137 US11385902B2 (en) | 2019-11-17 | 2020-07-15 | Secure firmware management with hierarchical boot sequence using last known good firmware |
US16/929,137 | 2020-07-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817619A CN112817619A (zh) | 2021-05-18 |
CN112817619B true CN112817619B (zh) | 2023-07-28 |
Family
ID=75854288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011286772.8A Active CN112817619B (zh) | 2019-11-17 | 2020-11-17 | 电脑***及其安全管理方法以及电脑软件产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817619B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329631A (zh) * | 2007-06-21 | 2008-12-24 | 大唐移动通信设备有限公司 | 一种嵌入式***自动检测和恢复启动的方法及装置 |
TW201506675A (zh) * | 2013-04-23 | 2015-02-16 | Hewlett Packard Development Co | 修復受危害之系統啓動碼之技術 |
TW201715395A (zh) * | 2015-10-16 | 2017-05-01 | 廣達電腦股份有限公司 | 基板管理控制器的回復方法及基板管理控制器 |
JP2018022333A (ja) * | 2016-08-03 | 2018-02-08 | 富士通株式会社 | ストレージ制御装置および記憶装置管理プログラム |
TW201818253A (zh) * | 2016-11-11 | 2018-05-16 | 英業達股份有限公司 | 檢測系統及檢測方法 |
CN110096429A (zh) * | 2019-03-18 | 2019-08-06 | 深圳壹账通智能科技有限公司 | 测试报告生成方法、装置、设备及存储介质 |
CN110390201A (zh) * | 2018-04-18 | 2019-10-29 | 新唐科技股份有限公司 | 计算机***以及初始化计算机***的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI571800B (zh) * | 2011-04-19 | 2017-02-21 | 仁寶電腦工業股份有限公司 | 電腦開機之方法與電腦系統 |
US10936474B2 (en) * | 2017-12-13 | 2021-03-02 | Arm Limited | Software test program generation |
-
2020
- 2020-11-17 CN CN202011286772.8A patent/CN112817619B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329631A (zh) * | 2007-06-21 | 2008-12-24 | 大唐移动通信设备有限公司 | 一种嵌入式***自动检测和恢复启动的方法及装置 |
TW201506675A (zh) * | 2013-04-23 | 2015-02-16 | Hewlett Packard Development Co | 修復受危害之系統啓動碼之技術 |
TW201715395A (zh) * | 2015-10-16 | 2017-05-01 | 廣達電腦股份有限公司 | 基板管理控制器的回復方法及基板管理控制器 |
JP2018022333A (ja) * | 2016-08-03 | 2018-02-08 | 富士通株式会社 | ストレージ制御装置および記憶装置管理プログラム |
TW201818253A (zh) * | 2016-11-11 | 2018-05-16 | 英業達股份有限公司 | 檢測系統及檢測方法 |
CN110390201A (zh) * | 2018-04-18 | 2019-10-29 | 新唐科技股份有限公司 | 计算机***以及初始化计算机***的方法 |
CN110096429A (zh) * | 2019-03-18 | 2019-08-06 | 深圳壹账通智能科技有限公司 | 测试报告生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112817619A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI768544B (zh) | 電腦系統及其安全管理方法以及電腦軟體產品 | |
CN105122261B (zh) | 从遭到破坏的***启动代码中恢复的方法以及计算装置 | |
US9965268B2 (en) | Method and apparatus for preventing software version rollback | |
US20170090909A1 (en) | Secure patch updates for programmable memories | |
TWI643130B (zh) | 用於在uefi安全開機資料庫中自動註冊任選rom的系統以及方法 | |
EP3028147B1 (en) | Updating boot code | |
EP2745228B1 (en) | Secure recovery apparatus and method | |
EP2962243A1 (en) | A method for software anti-rollback recovery | |
EP3485416B1 (en) | Bios security | |
TWI775346B (zh) | 防止回滾攻擊之系統及方法 | |
CN113486360B (zh) | 基于risc-v的安全启动方法及*** | |
CN112347518A (zh) | 储存装置 | |
US20200159929A1 (en) | Basic input/output system updates | |
CN112817619B (zh) | 电脑***及其安全管理方法以及电脑软件产品 | |
EP4174698A1 (en) | Method and system for controlling the boot customization in a platform firmware resilience execution | |
CN111695164B (zh) | 电子设备及其控制方法 | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
CN112015582B (zh) | 自修正存储器***、提供错误修正至存储器内容的方法 | |
EP4287055A1 (en) | Apparatuses and methods with secure configuration update | |
KR102545102B1 (ko) | 차량용 제어기 및 그 업데이트 방법 | |
JP2024007617A (ja) | プロセッサ回路、バージョン管理方法およびバージョン管理プログラム |
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 |