计算机系统及安全执行的方法与流程

文档序号:12278140阅读:259来源:国知局
计算机系统及安全执行的方法与流程

本申请主要关于安全执行的技术,特别有关于使用中国商用密码算法实现基于静态信任根(Static Root of Trust for Measurement,SRTM)或动态信任根(Dynamic Root of Trust for Measurement,DRTM)的安全开机以及安全执行系统软件的方法。



背景技术:

英特尔(Intel)的TXT技术,是可信执行技术(Trusted Execution Technology)的简称,直接从处理器的层级进行安全性的确认。明确来说,TXT技术主要使用了RSA或SHA-256加密算法构建信任链(chain of trust)来确保计算机系统的可信状态,包括确保安全开机、以及确保操作系统(Operating System,OS)及软件应用(Application,APP)的安全运行。

针对安全开机的部分,TXT技术首要从静态信任根开始创建静态信任链,对基本输入输出系统(Basic Input/Output System,BIOS)中的验证码模块(Authenticated Code Module,ACM)进行验证。

另外,针对操作系统及软件应用的安全运行,TXT技术是在操作系统的运行过程中,从动态信任根开始动态地创建动态信任链,对安全初始化验证码模块(SINIT ACM)进行验证。



技术实现要素:

本申请的第一实施例提供了一种计算机系统,其包括处理器以及存储器。上述处理器包括微码执行单元(microcode executing unit)、以及可编程熔丝(programmable fuse)用以储存由中国商用密码算法所预先产生的可信信息。上述存储器于操作上耦合至(operatively coupled to)上述处理器,且储存可信模块(trusted module)及上述可信模块的数字证书(Digital Certificate,DC)。其中上述微码执行单元使用中国商用密码算法并根据上述可信信息对上述数字证书进行验证,再根据验证通过的上述数字证书对上述可信模块进行验证。

本申请的第二实施例提供了一种安全执行的方法,适用于处理器。上述安全执行的方法包括以下步骤:从存储器读取可信模块及上述可信模块的数字证书;使用中国商用密码算法并根据由中国商用密码算法所预先产生的可信信息对上述数字证书进行验证,再根据验证通过的上述数字证书对上述可信模块进行验证;以及于上述可信模块验证通过后允许上述可信模块所关联的基本输入输出系统、操作系统、或软件应用的执行。

值得注意的是,本申请使用的是中国商用密码算法(例如SM2及SM3),且除了针对可信模块进行验证之外,还进一步对可信模块的数字证书(或安全性更高的证书链)进行验证,因此可提高安全性的检验。关于本发明其它附加的特征与优点,此领域的熟习技术人士,在不脱离本申请的精神和范围内,当可根据本案实施方法中所揭露的计算机系统及安全执行的方法做些许的更动与润饰而得到。

附图说明

图1为根据本申请一实施例所述的计算机系统的示意图。

图2A及图2B为根据本申请一实施例所述的安全执行方法的流程图。

图3为根据本申请一实施例所述的数字证书的验证流程图。

图4为根据本申请一实施例所述的证书链的示意图。

图5为根据本申请一实施例所述的证书链的验证流程图。

图6为根据本申请一实施例所述的可信模块的验证流程图。

图7为根据本申请一实施例所述以中国商用密码算法实现的信任链传递的示意图。

具体实施方式

本章节所叙述的是实施本申请的最佳方式,目的在于说明本申请的精神而非用以限定本申请的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。文中述及由中国国家密码管理局(Office of State Cryptography Administration)所制订的中国商用密码算法(例如SM2及SM3)的规格标准书仅用以协助表达本申请的精神,而非用以限制本申请的保护范围。

图1为根据本申请一实施例所述的计算机系统的示意图。计算机系统100包括处理器110以及存储器120,其中存储器120操作上耦合至处理器110。计算机系统100可为桌上型计算机、平板计算机、笔记型计算机、工作站、功能型手机、智能型手机、或任何电子计算装置。

在一实施例,存储器120可为非瞬时(non-transitory)的计算机可读取储存媒体,例如:闪存(Flash memory),用以储存可信模块(trusted module)以及可信模块的数字证书(Digital Certificate,DC)或证书链。在某些实施例中,为了增加辨识度,存储器120还储存用户身份信息,明确来说,用户身份信息可包括:使用者姓名或账号名、使用者性别、以及/或使用者所属工作单位名称等。在对辨识度要求不高的实施例中,可以使用默认的用户身份信息来参与可信模块的数字证书的验证(图3会详述)。

处理器110可为通用处理器、微处理器(Micro Control Unit,MCU)、应用处理器(Application Processor,AP)、或数字信号处理器(Digital Signal Processor,DSP)等。明确来说,处理器110包括储存装置10、微码执行单元(Microcode Executing Unit)20、电子熔丝存储器(efuse)30、以及微码只读存储器(Microcode Read-Only Memory,Microcode ROM)40。

储存装置10可为随机存取存储器或高速缓存,用以储存从存储器120读取出来的数据,例如:可信模块、可信模块的数字证书或证书链、以及/或用户身份信息。

微码执行单元20可包括各式电路逻辑,用以从储存装置10及电子熔丝存储器30中读取或写入数据、并加载并执行微码只读存储器40中所储存的微码,以提供本申请的安全执行方法。

本领域技术人员当可理解,微码执行单元20中的电路逻辑通常可包括多个晶体管,用以控制该电路逻辑的运作以提供所需的功能及操作。还进一步的,晶体管的特定结构及其之间的连结关系通常是由编译器所决定,例如:缓存器转移语言(Register Transfer Language,RTL)编译器可由处理器所运作,将类似汇编语言码的指令文件(script)编译成适用于设计或制造该电路逻辑所需的形式。

电子熔丝存储器30为可编程的熔丝结构存储器,用以储存由中国商用密码算法(例如SM2及SM3)所预先产生的可信信息,本发明利用这些可信信息以建立静态信任根(Static Root of Trust for Measurement,SRTM)或动态信任根(Dynamic Root of Trust for Measurement,DRTM)。明确来说,建立静态/动态信任根所需的可信信息至少包括:可信模块的数字证书的公钥哈希值(hash value)Hpubk、用户身份信息的哈希值HENTL_ID、以及可信模块的版本号Vn

微码只读存储器40用以储存由微码(microcode)所构成的软件模块,明确来说,软件模块包括:静态入口41、动态入口42、中国商用密码算法SM2模块43、中国商用密码算法SM3模块44、证书验证模块45、证书链验证模块46、以及可信模块验证模块47。

处理器110在重置(例如:计算机系统100开机时)之后,会直接进入静态入口41,透过静态入口41中所记录的默认值取得可信模块在存储器120中的起始地址、以及可信模块的数字证书在存储器120中的地址,并且将可信模块及其数字证书读取到储存装置10。值得注意的是,建立静态信任根是为了确保开机的安全性,因此此时可信模块为可信固件(trusted firmware),例如基本输入输出系统的验证码模块。

在软件(例如:操作系统或软件应用(APP))执行过程中,特定指令(例如:x86系统中的GETSEC指令)会触发处理器110进入特定模式并检查与该软件相配套的硬件平台设定(例如:芯片组的设定)是否满足建立动态信任根的前提条件,如果前提条件都满足了,则进入动态入口42,透过动态入口42接收该特定指令的参数所传递的信息,包括:可信模块在存储器120中的起始地址、以及可信模块的数字证书在存储器120中的地址,然后将可信模块及其数字证书读取到储存装置10。值得注意的是,建立动态信任根是为了保证软件(操作系统或软件应用)执行的安全性,因此这里的可信模块为操作系统或软件应用的可信功能区块之一。

中国商用密码算法SM2模块43为依据中国国家密码管理局所制订的规格标准书提供的加密算法,规格标准书例如包括:GM/T-0003-2012、GM/T-0009-2012、GM/T-0010-2012、以及GM/T-0015-2012。

中国商用密码算法SM3模块44为依据中国国家密码管理局所制订的规格标准书(例如:GM/T-0004-2012)提供的加密算法。值得注意的是,本说明书后面的叙述均采用中国商用密码算法SM2及SM3来验证数字证书、证书链以及可信模块本身,但本发明不限于此,即是说,中国商用密码算法SM2模块43 以及SM3模块44也可以采取其它密码算法。

证书验证模块45用以提供验证数字证书的功能,明确来说,其针对可信模块的数字证书进行验证以确保其可信状态。相关的验证流程将于图3作进一步说明。

证书链验证模块46用以提供验证证书链的功能,明确来说,其针对可信模块的证书链进行验证以确保其可信状态。相关的验证流程将于图5作进一步说明。

可信模块验证模块47用以提供验证可信模块的功能,明确来说,其针对可信模块进行验证以确保其可信状态。相关的验证流程将于图6作进一步说明。

虽未绘示,图1所示的计算机系统还可进一步包括其它功能组件,例如:显示装置(如:液晶显示器(Liquid-Crystal Display,LCD)、发光二极管(Light-Emitting Diode,LED)显示器、或电子纸显示器(Electronic Paper Display,EPD)等)、有线/无线网络接口、电源供应器、输入输出装置(如:按钮、键盘、鼠标、触碰板、视讯镜头、麦克风、以及/或喇叭等),且本申请的保护范围不在此限。

图2A及图2B为根据本申请一实施例所述的安全执行方法的流程图。首先,若是针对安全开机,则微码执行单元20于系统开机时进入静态入口,若是针对操作系统/软件应用的安全运行,则微码执行单元20于操作系统/软件应用执行时进入动态入口。透过静态入口或动态入口取得可信模块在存储器120中的起始地址、以及可信模块的数字证书/证书链在存储器120中的地址(步骤201),然后,微码执行单元20将可信模块及其数字证书读取到储存装置10(步骤202)。值得注意的是,「可信模块」在针对安全开机时指可信固件(例如:基本输入输出系统的验证码模块);「可信模块」在针对操作系统/软件应用安全执行时指可信功能区块(例如:操作系统或软件应用的功能区块之一)。

进一步说明,如果在存储器120中所储存的是证书链,则微码执行单元20仅先读取证书链中的根证书(root certificate)。

接着,微码执行单元20使用中国商用密码算法SM3计算出数字证书的公钥哈希值H’pubk(步骤203),然后把H’pubk与电子熔丝存储器30所储存的公钥哈希值Hpubk做比对(步骤204),若相同,则表示该公钥合法,并接续进行数字证书的验证(步骤205)。关于验证数字证书的详细流程将于图3进一步说明。反之,若公钥不合法,则中止(abort)系统开机的程序、或中止操作系统/软件应用的执行(步骤206)。

在根据数字证书的验证完成后,微码执行单元20决定其验证结果是否指示数字证书合法(步骤207),若是,则微码执行单元20从储存装置10读取数字证书的基本证书域(TBSCertificate),并从基本证书域中的扩展项(extension)读取该数字证书的证书链长度(Certificate Chain Length,CCL)(步骤208);反之,若数字证书不合法,则流程前往步骤S206。

接续步骤S208,微码执行单元20决定证书链长度等于1或大于1(步骤209),如果证书链长度大于1,则微码执行单元20执行证书链的验证(步骤210)。明确来说,证书链的验证依据证书链中的多个数字证书之间的顺序关系,由根证书往叶证书(leaf certificate)的方向一个证书一个证书逐级进行验证,关于验证证书链的详细流程将于图5进一步说明。反之,如果证书链长度等于1,则微码执行单元20从数字证书的扩展项中读取与可信模块对应的哈希值Htf及版本号V’n(步骤211)。

之后,微码执行单元20把V’n与电子熔丝存储器30所储存的Vn做比对(步骤212),若V’n旧于Vn,则表示可信模块已过期,则流程前往步骤S206。反之,若V’n新于或等于Vn,则微码执行单元20执行可信模块的验证(步骤213),然后流程结束。关于验证可信模块的详细流程将于图6进一步说明。

图3为根据本申请一实施例所述的数字证书的验证流程图。首先,微码执行单元20从电子熔丝存储器30读取HENTL_ID(步骤301),然后从存储器120读取用户身份信息,再使用中国商用密码算法SM3计算用户身份信息的哈希值H’ENTL_ID并储存至储存装置10(步骤302)。

接着,微码执行单元20把H’ENTL_ID与HENTL_ID做比对(步骤303),若相同,才继续执行数字证书的验证;若不同,则流程前往步骤S206。

接续步骤303,若H’ENTL_ID相同于HENTL_ID,则微码执行单元20根据预处理程序1计算出包含用户身份信息的哈希值Z(步骤304),预处理程序1例如为图1中的中国商用密码算法SM2模块43采用规格标准书GM/T-0009-2012所规定的预处理程序;然后将哈希值Z与数字证书的基本证书域进行拼接,并根据预处理程序2计算出哈希值H(步骤305),预处理程序2例如为图1中的中国商用密码算法SM2模块43采用规格标准书GM/T-0009-2012所规定的预处理程序。

之后,微码执行单元20根据中国商用密码算法SM2相关的数字签名验证算法及流程来验证数字证书的数字签名(步骤306),然后流程结束。这里的数字签名验证算法及流程例如为图1中的中国商用密码算法SM2模块43采用规格标准书GM/T-0003.2-2012所规定的数字签名验证算法及流程。也就是说,若数字签名通过验证即代表数字证书合法,反之,则代表数字证书不合法。

值得注意的是,在另一些对用户辨识度要求不高的实施例中,步骤S304可以直接使用默认的用户身份信息计算哈希值Z,而在步骤S305使用默认的用户身份信息计算的哈希值Z以对数字证书的基本证书域计算哈希值。在这种实施例中,存储器120中无需存储用户身份信息,因此无需执行步骤S301至S303的验证存储器120中的用户身份信息的步骤。

图4为根据本申请一实施例所述的证书链的示意图。在此实施例,所示为3级证书链,其中每一证书为采固定格式的证书,例如每一证书均为自签名X509V3证书且遵守规格标准书GM/T-0015-2012的规定。

如图4所示,根证书至少包含了根认证中心(Certificate Authority,CA)的标示名(Distinguished Name,DN)、根认证中心的公钥、以及根证书的数字签名。中级证书(intermediate certificate)至少包含了中级认证中心的标示名、中级认证中心的公钥、根认证中心的标示名、以及中级证书的数字签名。叶证书至少包含了叶认证中心的标示名、叶认证中心的公钥、中级认证中心的标示名、叶证书的数字签名、以及叶证书的扩展项,其中,叶证书的扩展项包含了可信模块的哈希值。

需特别说明的是,证书链所包括的三个数字证书之间的验证有特定的顺序关系:由根证书验证中级证书、由中级证书验证叶证书、由叶证书验证可信模块。其中,还进一步由中级证书回溯根证书、由叶证书回溯中级证书。

具体而言,首先根据根认证中心的公钥验证根证书的数字签名(如图2A的步骤S205,其具体步骤参考图3),如果根证书验证通过时(如图2A的步骤S207的“是”),并且中级证书中所包含的根认证中心的标示名与根证书的根认证中心的标示名匹配时,微码执行单元20根据验证通过的根证书中的根认证中心的公钥验证中级证书的数字签名(验证中级证书的的数字签名的具体步骤也可参考图3);当叶证书所包含的中级认证中心的标示名与中级证书的中级认证中心的标示名匹配时,微码执行单元20根据验证通过的中级证书中的中级认证中心的公钥验证叶证书的数字签名(验证叶证书的的数字签名的具体步骤也可参考图3)。也就是说,若一个一个来看,对当前的数字证书来说,其包含的公钥用以验证下一级证书的数字签名,此外,还能根据认证中心的标示名去回溯上一级证书。而对整条证书链来说,只有叶证书的扩展项包含了本申请特有的参数字段,具体来说,参数除了可信模块的哈希值之外,还可进一步包括:固件类型、证书链长度、以及可信模块的版本号等信息用于可信模块进行验证。验证可信模块的详细流程将于图6进一步说明。

本领域技术人员当可理解,本申请所述数字证书也可采用X509以外其它的已知规格、或任何自订的证书格式,且本申请的保护范围不在此限。

图5为根据本申请一实施例所述的证书链的验证流程图。由于根证书已于步骤S202完成读取了,所以在本流程首先,微码执行单元20从存储器120将证书链中剩余的数字证书都读取到储存装置10(步骤501),然后将当前的数字证书(以图4的范例来说,即指中级证书)视为证书x、将其上级的数字证书(以图4的范例来说,即指根证书)视为证书x-1(步骤502)。

接着,微码执行单元20从证书x-1取得用以验证证书x的公钥(步骤503),并根据证书x的认证中心、版本号、以及数字签名来验证证书x的合法性(步骤504)。明确来说,微码执行单元20可先比对证书x与证书x-1的认证中心的标示名是否相同,接着根据图3的步骤304~306的流程对证书x的数字签名进行验证。

根据验证结果,微码执行单元20决定证书x是否合法(步骤505),若否,则流程前往步骤S206;反之,若证书x合法,则决定证书x是否为证书链中的最后一个证书(步骤506)。

接续步骤S506,如果证书x不是证书链中的最后一个证书,则将x累加为x+1(步骤507),流程返回至步骤S503持续往下一级证书进行验证。

接续步骤S506,如果证书x是证书链中的最后一个证书,则微码执行单元20取得证书链中的最后一个数字证书(以图4的范例来说,即指叶证书)(步骤508),然后流程结束。

图6为根据本申请一实施例所述的可信模块的验证流程图。首先,微码执行单元20使用中国商用密码算法SM3计算出储存装置10中可信模块的哈希值H’tm(步骤601),然后将该哈希值H’tm与从数字证书的扩展项中取得的可信模块的哈希值Htm进行比对(步骤602)。

若比对结果是相同的,则微码执行单元20从储存装置10中的可信模块读取其与硬件平台相关的信息(步骤603),然后根据该信息决定可信模块是否符合计算机系统100的硬件平台规格(步骤604)。明确来说,可信模块中除了待执行的程序代码之外,还包括与硬件平台相关的信息,而微码执行单元20可根据这些信息来决定可信模块是否与计算机系统100的硬件平台规格相匹配,这些信息包括:适用的芯片组清单、以及版本号等信息。

接续步骤S604,如果符合,则决定可信模块通过验证并允许执行可信模块(步骤605),换句话说,即允许可信模块所关联的系统开机或操作系统/软件应用执行。反之,如果不符合,则流程前往步骤S206。

图7为根据本申请一实施例所述以中国商用密码算法实现的信任链传递的示意图。为了因应不同的使用场景,计算机系统中有的软/固件是要求防止被窜改的,而有的软/固件则允许视情况进行的更新或修改,为了方便说明,可将前者软/固件称为可信模块(Trusted Module,TM),后者则可称为非可信模块(Non-Trusted Module,NTM)。

在计算机系统开机或运行的过程中,可信模块与非可信模块可同时存在并组成一个链,以链为单位交错运行。对于由多个可信模块所构成的可信模块链来说,每一可信模块均可使用图2A及图2B所述的安全执行方法流程来验证,以建构基于中国商用密码算法的信任链,包括:静态信任链、及动态信任链。

如图7所示,在处理器通电后(意即计算机系统开机后),首先进行子信任链0的验证,由于子信任链0为静态信任链,其中,从根据可信信息建立静态信任根(如图2A及图2B所示的流程直至数字证书/证书链验证通过,则静态信任根建立)开始,再根据静态信任根对可信模块TM0_0进行验证,然后接着按可信模块之间的顺序关系,逐一由当前可信模块向下级可信模块进行验证。在子信任链0的验证结束后,接续的是非可信模块链0的执行,需了解的是,非可信模块由于不具备安全属性因此不会对其进行验证,但其为计算机系统100执行时的必要模块。

在非可信模块链0的执行结束后,接着进行子信任链1的验证,由于子信任链1为动态信任链,其中,从根据可信信息建立动态信任根(如图2A及图2B所示的流程直至数字证书/证书链验证通过,则动态信任根建立)开始,再根据动态信任根0对可信模块TM1_0进行验证,然后接着按可信模块之间的顺序关系,逐一由当前可信模块向下级可信模块进行验证。在子信任链1的验证结束后,接续的是非可信模块链1的执行。之后,多条动态信任链的验证持续往下,从子信任链2到子信任链m,其中再穿插非可信模块链2到非可信模块链m的执行。如前所述,本申请可根据触发指令(例如:x86系统中的GETSEC指令)创建出多条动态信任链。即是说,当处理器执行触发指令(例如x86系统中的GETSEC指令)时,处理器执行多个可信模块的第一个的验证,并逐一由多个可信模块的其中一个向下一个进行验证,从而建立动态信任链。每一动态信任链所包括的可信模块关联至操作系统或软件应用的功能区块,处理器在操作系统或软件应用被执行时,针对其每一功能区块分别建立不同的动态信任链。

在建构基于中国商用密码算法的信任链时,可能还需要利用可信密码模块(Trusted Cryptography Module,TCM)或可信平台模块(Trusted Platform Module,TPM)提供的可信储存功能,此功能需要使用中国商用密码算法对其储存的内容进行保护,而储存的内容可包括:用于验证某个模块的密钥、对某个模块的量测结果等。

根据上述图2A、图2B、图3、图5、图6、图7的实施例,当可理解的是,本申请的安全执行的方法,使用中国商用密码算法实现基于静态信任根或动态信任根的安全开机以及安全执行系统软件。值得注意的是,相较于英特尔的TXT技术,其使用的是RSA或SHA-256加密算法,且针对可信模块进行验证;而本申请使用的是中国商用密码算法(例如SM2及SM3),且除了针对可信模块进行验证之外,还进一步对可信模块的数字证书(或安全性更高的证书链)进行验证,当可提高安全性的检验。

本申请虽以各种实施例揭露如上,然而其仅为范例参考而非用以限定本申请的范围,任何本领域技术人员,在不脱离本申请的精神和范围内,当可做些许的更动与润饰。因此上述实施例并非用以限定本申请的范围,本申请的保护范围当视权利要求书所界定的为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1