一种基于国密算法的系统安全启动方法、装置和系统与流程

文档序号:17360140发布日期:2019-04-09 22:00阅读:282来源:国知局
一种基于国密算法的系统安全启动方法、装置和系统与流程

本公开涉及系统安全启动的方法、装置和系统,更具体地,本公开涉及一种基于国密算法的系统安全启动方法、装置和系统。



背景技术:

随着密码技术和计算的发展,rsa公钥密码算法正面临日益严重的安全威胁,国密sm2算法相比rsa具有如下优势:同等安全级别下,sm2算法签名速度快。为保障重要经济系统密码应用安全,防止出现非自主密码算法受到攻击导致重要经济系统敏感数据泄露,国密局推荐使用国产密码算法。

随着信息技术的发展,信息安全的形势日益严峻。保障信息安全的前提是信息系统本身是安全的,如果系统自身在启动时被恶意程序篡改,那么系统将进入一种不可信的状态,从而导致基于此系统的应用程序和上层安全机制都是不可信的。因此,系统的安全启动技术已逐步被引起重视。

为了确保系统启动安全,安全领域中采取了相应的保障机制,目前系统安全启动过程中,通过使用rsa或ecdsa算法来验签系统启动镜像。然而使用rsa或ecdsa算法,签名速度慢,且不符合国内自主可控的特点。



技术实现要素:

有鉴于上述情况,本公开提供了一种用于生成用于系统安全启动的文件的方法、装置和计算机系统,以及用于安全启动系统的方法、装置和计算机系统。

根据本公开的一方面,提供了一种用于生成用于系统安全启动的文件的方法,该方法包括:使用国密算法对系统启动文件进行哈希计算以生成系统启动文件哈希值;生成证书链,该证书链由两级以上的证书组成;基于用户标识、证书链中的最后一级证书和国密算法参数,通过国密算法生成与国密算法相关的z值;基于系统启动文件哈希值和z值,通过国密算法生成用于对系统启动文件进行签名的哈希值;以及使用证书链中的最后一级证书的私钥通过国密算法来对用于对系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值;基于系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链,生成用于系统安全启动的文件。

根据本公开的另一方面,提供了一种用于生成用于系统安全启动的文件的装置,该装置包括:证书链生成模块,被配置为生成证书链,该证书链由两级以上的证书组成;文件签名模块,被配置为:使用国密算法对系统启动文件进行哈希计算以生成系统启动文件哈希值;基于用户标识、证书链中的最后一级证书和国密算法参数,通过国密算法生成与国密算法相关的z值;基于系统启动文件哈希值和与国密算法相关的z值,通过国密算法生成用于对系统启动文件进行签名的哈希值;以及使用证书链中的最后一级证书的私钥通过国密算法来对用于对系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值;和文件生成模块,被配置为基于系统启动文件、系统启动文件哈希值、系统启动文件签名值、和证书链,生成用于系统安全启动的文件。

根据本公开的又一方面,提供了一种用于安全启动系统的方法,该包括:读取用于系统安全启动的文件,其中系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链被包括在用于系统安全启动的文件中;验证证书链,该证书链由两级以上的证书组成;响应于证书链的验证成功,使用证书链中的最后一级证书,基于系统启动文件签名值、系统启动文件哈希值和存储的与国密算法相关的z值通过国密算法来验签系统启动文件签名值;响应于系统启动文件签名值的验签成功,使用国密算法来计算系统启动文件的哈希值,并将所计算的哈希值与系统启动文件哈希值进行比较;以及响应于所计算的哈希值与系统启动文件哈希值匹配,基于系统启动文件启动系统。

根据本公开的又一方面,提供了一种用于安全启动系统的装置,该装置包括:读取模块,被配置为读取用于系统安全启动的文件,其中系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链被包括在用于系统安全启动的文件中;证书链验证模块,被配置为验证证书链,该证书链由两级以上的证书组成;文件验证模块,被配置为:响应于证书链的验证成功,使用证书链中的最后一级证书,基于系统启动文件签名值、系统启动文件哈希值和存储的与国密算法相关的z值通过国密算法来验签系统启动文件签名值;响应于系统启动文件签名值的验签成功,使用国密算法来计算系统启动文件的哈希值,并将所计算的哈希值与系统启动文件哈希值进行比较;和系统启动模块,被配置为响应于所计算的哈希值与系统启动文件哈希值匹配,基于系统启动文件启动系统。

根据本公开的又一方面,提供了一种计算机系统,该计算机系统包括处理器;和存储器,其上存储有指令,所述指令当由处理器运行时使得处理器执行本公开的用于生成用于系统安全启动的文件的方法。

根据本公开的又一方面,提供了一种计算机系统,该计算机系统包括处理器;和存储器,其上存储有指令,所述指令当由处理器运行时使得处理器执行本公开的安全启动系统的方法。

在附图和以下描述中阐述了本说明书的主题的一个或多个实施方式的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应该被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1a示出了应用本公开的实施例的一个示例系统;

图1b示出了应用本公开的实施例的另一个示例系统;

图2示出了根据本公开的实施例的签名和验签的示例过程;

图3示出了根据本公开的实施例的生成用于系统安全启动的文件的一个示例过程;

图4a示出了根据本公开的实施例的生成用于系统安全启动的文件的另一个示例过程;

图4b示出了根据本公开的实施例的生成用于系统安全启动的文件的又一个示例过程;

图5a示出了根据本公开的实施例的一个示例证书链;

图5b示出了根据本公开的实施例的另一个示例证书链;

图6示出了根据本公开的实施例的生成的用于系统安全启动的文件的示例组成;

图7示出了根据本公开的实施例的生成证书链的一个示例过程;

图8是根据本公开的实施例的安全启动系统的一个示例流程图;

图9a是根据本公开的实施例的验证证书链的一个示例流程图;

图9b是根据本公开的实施例的验证证书链的另一个示例流程图;

图10示出了根据本公开的实施例的用于生成用于系统安全启动的文件的装置的示例;

图11示出了根据本公开的实施例的用于安全启动系统的装置的示例;

图12示出了根据本公开的实施例的用于执行本公开的方法的计算机系统的示例。

具体实施方式

下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相同的标号和标记在下面的附图中表示相同的元素,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本公开将国密算法(sm2和sm3)应用到系统安全启动过程中,通过国密算法来建立两级以上的证书链和对系统启动文件进行签名,从而以更短的秘钥、更快的签名速度实现等同于rsa或ecdsa算法的安全级别、同时具有国内自主知识产权安全启动系统。另外,本公开建立两级以上的证书链和信任根,通过证书链和信任根的方式能够有效避免在系统升级过程中,启动固件被篡改或升级成非法固件的风险。

图1a示出了应用本公开的实施例的一个示例系统。

参考图1a,应用本公开的实施例的一个示例系统可以包括签名服务器110、目标服务器120和使得签名服务器110和目标服务器有线或无线地连接的网络100。签名服务器110和目标服务器120可以经由网络100相互传输数据。具体地,由签名服务器110生成的文件和存储的数据可以经由网络100而被传输到目标服务器120。

应该理解,图1a中的签名服务器110可以是用于生成证书链和对文件进行签名的任何电子设备,例如,使用risc(精简指令集)或epic(并行指令代码)并且主要采用unix和其它专用操作系统的服务器,例如各种大型机、小型机和unix服务器等;cisc(复杂指令集)架构服务器,例如各种pc服务器等;以及可用于生成证书链和对文件进行签名的其他任何类型的服务器。图1a中的目标服务器120可以是使用现有的、或未来研发的任何操作系统的电子设备,例如智能手机、平板个人计算机(pc)、移动电话、视频电话、电子书阅读器、台式pc、膝上型pc、上网本pc、个人数字助理(pda)、便携式多媒体播放器(pmp)、mp3播放器、移动医疗设备、相机、可穿戴设备(例如,头戴式设备(hmd)、电子衣服、电子牙套(brace)、电子项链、电子配件、电子纹身或智能手表)和/或其它。

还应该理解,图1a中的网络100可以是现有的或在未来研发出的任何类型的有线或无线网络,例如通过光纤、同轴电缆、双绞线等进行有线通信的有线网络,或者基于长期演进(longtermevolution,lte)、全球微波互操作性接入(worldwideinteroperabilityformicrowaveaccess,wimax、全球移动通信系统(globalsystemformobilecommunication,gsm)、码分多址(codedivisionmultipleaccess,cdma)、蓝牙、近场通信(nearfieldcommunication,nfc)、无线保真(wirelessfidelity,wi-fi)和射频识别(radiofrequencyidentification,rfid)等各种无线通信协议进行无线通信的无线网络。

图1b示出了应用本公开的实施例的另一个示例系统。与图1a不同的是,在图1b所示的系统中,签名服务器110和目标服务器120可以通过存储设备130来进行数据的传输。具体地,由签名服务器110签名的文件和生成的数据可以被存储在存储设备130中,然后目标服务器120可以从存储设备130中读取存储的经签名的文件和生成的数据。存储设备130可以是独立于签名服务器110和目标服务器120的独立的存储设备;可替代地,存储设备130也可以是签名服务器110的一部分或者是嵌入签名服务器110的存储设备。

应该理解,图1b所示的存储设备可以是任何类型非暂时性存储设备。例如,半导体存储器件,例如eprom、eeprom和闪存器件;磁盘,例如内部硬盘或可移动磁盘;磁光盘;cd-rom和dvd-rom盘等。

图2示出了根据本公开的实施例的签名和验签过程。

参考图2,根据本公开的实施例的签名过程包括:用根证书的秘钥对中秘钥来签名认证授权(certificateauthority,ca)认证证书(步骤200),用ca认证证书的秘钥对中的私密来验签认证证书(步骤202),用认证证书的秘钥对中的私密来验签系统启动文件(步骤204)。根据本公开的实施例的验签过程包括:用根证书的秘钥对中公钥来验签认证授权(certificateauthority,ca)认证证书的签名值(步骤206),用ca认证证书的秘钥对中的公钥来验签认证证书的签名值(步骤208),用认证证书的秘钥对中的公钥来验签系统启动文件的签名值(步骤210)。

通过步骤200、步骤202和步骤204可以生成包括根证书、ca认证证书和认证证书的三级证书链和由认证证书签名的系统启动文件,证书链通过逐级验证的方式,即步骤206和步骤208,可以防止用于验签系统启动文件的认证证书被篡改。然后使用验签通过的认证证书来验签系统文件,即步骤210,可以有效避免在系统升级的过程中,系统启动文件被篡改或被升级成非法系统启动文件的风险,从而增加了系统启动的安全性。

图3示出了根据本公开的实施例的生成用于系统安全启动的文件的一个示例过程。图3所示的示例过程是图2中所示的步骤200~步骤204的具体说明。

参考图3,根据本公开的实施例的生成用于系统安全启动的文件可以从步骤300开始。在步骤300处,签名服务器用国密算法对系统启动文件进行哈希计算以生成系统启动文件哈希值。在步骤302处,签名服务器生成由两级以上的证书组成的证书链(其将在后面参考图5a和图5b详细描述)。在步骤304处,签名服务器基于用户标识、在步骤302中生成的证书链中的最后一级证书和国密算法参数,通过国密算法生成与国密算法相关的z值,该z值用于与待签名的消息的哈希值进行再次哈希,从而得到用于国密sm2算法的哈希值h。在步骤306处,签名服务器基于在步骤300中生成的系统启动文件哈希值和在步骤304中生成的与国密算法相关的z值,通过国密算法生成用于对系统启动文件进行签名的哈希值。在步骤308处,签名服务器使用在步骤302中生成的证书链中的最后一级证书的私钥通过国密算法来对在步骤306中生成的用于对系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值。在步骤310处,签名服务器基于系统启动文件、步骤300中生成的系统启动文件哈希值、步骤308中生成的系统启动文件签名值和步骤302中生成的证书链,生成用于系统安全启动的文件。

通过图3所示的过程,使用国密算法来生成系统启动文件哈希值、使用国密算法来对系统文件进行签名并生成包括两级以上的证书的证书链除了可以防止系统文件被篡改之外,还可以具有国内自主可控的特点。

图4a示出了根据本公开的实施例的生成用于系统安全启动的文件的另一个示例过程。图4a所示的示例过程是图3所示的过程的进一步说明。

参考图4a,在步骤400处,签名服务器用国密sm3算法对系统启动文件进行哈希计算以生成系统启动文件哈希值。在步骤402处,签名服务器生成由两级以上的证书组成的证书链(其将在后面参考图5a和图5b详细描述)。在步骤404处,签名服务器基于用户标识、在步骤402中生成的证书链中的最后一级证书和国密sm2算法参数,通过国密sm3算法进行哈希计算生成国密sm2算法用的z值。具体地,z值可以通过以下公式计算得到:

z=sm3(entl||id||a||b||xg||yg||xa||ya)(1)

其中,entl为由2个字节表示的id的比特长度;id为用户身份标识,a,b为系统曲线参数;xg、yg为基点;xa、ya为最后一级证书的公钥。

在步骤406处,签名服务器通过国密sm3算法对在步骤400中生成的系统启动文件哈希值和在步骤404中生成的与国密算法相关的z值进行哈希计算,生成用于对系统启动文件进行签名的哈希值。具体地,用于对系统启动文件进行签名的哈希值可以通过以下公式计算得到:

h=sm3(z||m)(2)

其中m表示待签名消息,即系统启动文件哈希值,z是在步骤402中所生成的与国密算法相关的z值。

在步骤408处,签名服务器使用在步骤402中生成的证书链中的最后一级证书的私钥通过国密sm2算法来对在步骤406中生成的用于对系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值。在步骤410处,签名服务器将系统启动文件、步骤400中生成的系统启动文件哈希值、步骤408中生成的系统启动文件签名值和步骤402中生成的证书链拼接在一起,生成用于系统安全启动的文件。

另外地或可替代地,根据本公开的实施例的生成用于系统安全启动的文件的过程还可以包括生成原始镜像文件,即将引导装载程序(bootloader)编译成原始镜像文件。但是这不是限制性的。

应该理解,虽然在上面参考图4a的描述中,在步骤400处,对系统启动文件进行哈希计算;在步骤406处,对系统文件哈希值和与国密算法相关的z值进行哈希计算使用的是国密sm3算法,但是本公开对此没有限制。即在步骤400处和步骤406处可以使用现有的和/或在未来研发的任何可以进行哈希计算(即,摘要算法)的国密算法。类似地,虽然在上面参考图4a的描述中,在步骤408处,生成系统启动文件签名值使用的是国密sm2算法,但是本公开对此没有限制,即在步骤408处可以使用现有的和/或在未来研发的任何非对称的国密算法。

通过图4a所示的过程,使用国密算法sm3来生成系统启动文件哈希值、使用国密sm2算法来对系统文件进行签名并生成包括两级以上的证书的证书链除了可以防止系统文件被篡改之外,国密sm2算法相较于rsa算法而言还具有更短的密钥和更快的签名速度。

图4b示出了根据本公开的实施例的生成用于系统安全启动的文件的又一个示例过程。

为了简略,这里省去了与图4a重复的步骤的描述。参考图4b,与图4a不同的是,图4b还包括步骤412。在步骤412处,签名服务器将根证书的哈希值(其将在后面参考图5a、图5b和图7更详细的描述)和在步骤404中生成的z值固化在一次性可编程(onetimeprogrammable,otp)存储器中。

将根证书的哈希值和在步骤404中生成的z值固化在片内,例如otp存储器中可以防止根证书的哈希值和在步骤404中生成的z值被篡改。进而防止证书链被篡改,从而增加了系统启动的安全性。

根据本公开的实施例,应该理解,上面参考图3、图4a和图4b描述的系统启动文件可以是任何格式的系统启动文件,例如elf格式的系统启动文件。并且系统启动文件可以是用于启动现有的和/或在未来研发的任何系统的文件,包括例如,诸如macosx、windows、linux和bsd等用于个人计算机的操作系统(operatingsystem,os),诸如burroughsmcp--b5000、ibmos/360--ibmsystem/360和univacexec8--univac1108等用于大型机的操作系统,诸如vxworks、ecos、symbianos及palmos等的嵌入式操作系统,诸如systemv、bsd与linux等的类unix系统,以及android操作系统和麒麟操作系统(kylin)等的管理计算机硬件与软件资源的任何计算机程序。

图5a和图5b示出了根据本公开的实施例的示例证书链。

图5a示出了由根证书500和认证证书510组成的两级证书链,图5b示出了由根证书500、ca认证证书520以及认证证书510组成的三级证书链。证书链中的各级证书至少包括对应的公钥和签名值,并且证书链中的各级证书都可以是x509格式的证书。此外,图5a和图5b中所示出的根证书可以是自签名证书或者未签名证书。应该理解,虽然图5a和图5b分别示出了两级证书链和三级证书链,但是本公开对证书链的级数没有限制,即,根据本公开的实施例的证书链可以包括任何数量的级数的证书链。

图6示出了根据本公开的实施例的生成的用于系统安全启动的文件600的示例组成。

如图6所示,根据本公开的实施例生成的用于系统安全启动的文件600至少包括系统启动文件610、系统启动文件哈希值620、系统启动文件签名值630和证书链640。

图7示出了根据本公开的实施例的生成证书链的一个示例过程。

如图7所示,图7是以三级证书链为例来说明根据本公开的实施例的证书链的生成。参考图7,在步骤700处,签名服务器生成根证书、ca认证证书、认证证书的密钥对。另外地或可替代地,可以在签名服务器端的安全芯片内,由国密sm2算法引擎产生根证书、ca认证证书以及认证证书对应的sm2密钥对。另外地,签名服务器还将在步骤700中生成的密钥对中的公钥保存在对应的证书中。在步骤702处,签名服务器将在步骤700中生成的密钥对中的私钥存储在安全芯片内,使得片外无法读取秘钥对中的私密。在步骤704处,签名服务器用根证书的私钥通过国密sm2算法对ca认证证书进行签名。在步骤706处,签名服务器用ca认证证书的私钥通过国密sm2算法对认证证书进行签名。另外地或可替代地,在签名服务器内,可以由gmssl基于公钥和对应的厂商信息生成证书链,其中gmssl是支持sm2/sm3/sm4/sm9等国密(国家商用密码)算法、sm2国密数字证书及基于sm2证书的ssl/tls安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建pki/ca、安全通信、数据加密等符合国密标准的安全应用的密码工具箱。应该理解,本公开对密码工具箱没有限制,即现有的和/或未来研发的任何密码工具箱都可以用于本公开的实施例。虽然图7示出的是以三级证书链为例来说明根据本公开的实施例的证书链的生成,但是应该理解,可以类似地生成任何数量的级数的证书链。

通过国密sm2算法引擎来生成包括两级以上的证书的证书链,除了能够通过逐级验证的方式来确保证书链的可信任,防止用于验签系统启动文件的认证证书被篡改,提高系统启动的安全性之外,国密sm2算法相较于rsa算法而言还可以以更快的速度生成密钥对。另外,将生成的密钥对中的私钥存储在签名服务器的安全芯片内,片外无法读取,能够有效避免私钥被泄露的风险。

以上结合图3至图7描述的用于生成系统安全启动的文件的方法可以在图1a和图1b中的签名服务器110中实施,并且根据上面描述的实施例生成的用于系统安全启动的文件可以被存储在签名服务器110和存储设备130中的至少一个中,然后经由网络100被传输到目标服务器120或者由目标服务器从存储设备130中读取。

下面将结合图8至图9b来描述本公开的安全启动系统的方法。本公开的安全启动系统的方法可以在图1a和图1b中的目标服务器120中实施。

图8是根据本公开的实施例的安全启动系统的一个示例流程图。

参考图8,根据本公开的实施例的安全启动系统的流程可以从步骤800开始。在步骤800处,目标服务器可以读取用于系统安全启动的文件,其中该用于系统安全启动的文件至少包括系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链。应该理解,在步骤800处的读取可以是从存储有用于系统安全启动的文件的任何存储设备读取。例如,步骤800处的读取可以是图1a中的目标服务器120从存储设备130中读取。可替代地,步骤800处的读取也可以经由无线或有线网络从其他服务器读取。例如,步骤800处的读取可以是目标服务器120经由网络100从签名服务器110处读取。附加地,在步骤800处,目标服务器还可以读取与国密算法相关的z值和证书链中的根证书的哈希值。从存储设备或者其他服务器读取到用于系统安全启动的文件之后,前进到步骤802。在步骤802处,目标服务器解析读取的用于系统安全启动的文件中的证书链,并对解析的证书链进行验证(其将在后面参考图9a和图9b更详细的说明)。如果证书链的验证不通过,则前进到步骤810,即系统启动失败;否则前进到步骤804,在步骤804处,目标服务器解析并验签系统启动文件签名值。具体地,目标服务器可以使用解析的证书链中的认证证书来对系统启动文件签名值进行验签。如果系统启动文件签名值的验签不通过,则前进在步骤810;否则前进到步骤806。在步骤806处,目标服务器解析并验证系统启动文件哈希值。具体地,目标服务器对系统启动文件进行哈希计算以得到计算的系统启动文件哈希值,并将计算的系统启动文件哈希值与加载的系统启动文件哈希值进行比较。如果计算的系统启动文件哈希值与加载的系统启动文件哈希值相同,则系统启动文件的哈希值验证通过,否则系统启动文件的哈希值验证不通过。如果系统启动文件哈希值验证不通过,则前进到步骤810;否则前进到步骤808,在步骤808处,目标服务器基于系统启动文件启动系统。

上面参考图8描述的安全启动系统的方法通过验证两级以上的证书链、验签系统启动文件签名值和验证系统启动文件哈希值来启动系统,提高了系统启动安全性。其中,一级信任一级的方式来验签证书链中的各级证书,用验证通过的证书链中的认证证书来验签系统启动文件签名值能够有效确保系统启动文件的可靠性和合法性;通过验证系统启动文件哈希值能够保证系统启动文件的完整性。

附加地,在步骤800前,目标服务器可以进行一些其他的准备操作,例如,上电启动和硬件初始化等。附加地,系统启动失败后,目标服务器可以返回系统启动失败的指示,该指示可以指示系统启动失败的原因。例如,如果是步骤804处的步骤,即解析并验签系统启动文件签名值的验签不通过导致系统启动失败,则目标服务器可以返回指示解析并验签系统启动文件签名值失败的指示。

返回指示系统启动失败的原因的指示能够有利于对系统启动失败的原因定位。降低定位系统启动失败的原因难度并减少定位系统启动失败的原因的时间。

图9a是根据本公开的实施例的验证证书链的一个示例流程图。图9a是图8所示的安全启动系统的流程的进一步说明。

参考图9a,证书链的验证可以从步骤900处开始。在步骤900处,目标服务器验证根证书的哈希值。具体地,目标服务器计算根证书的哈希值,并将计算的根证书的哈希值与读取的哈希值进行比较。如果计算的根证书的哈希值与读取的根证书的哈希值不相同,则根证书的哈希值验证不通过,前进到步骤908,即证书链验证失败;否则前进到步骤902。在步骤902处,目标服务器用根证书验签ca认证证书。如果ca认证证书验签不通过,则前进到步骤908;否则,前进到步骤904。在步骤904处,目标服务器用ca认证证书验签认证证书。如果认证证书验签不通过,则前进到步骤908;否则,证书链验证通过。

参考图9a描述的验证证书链的流程以固化在片内的信任根为基础,通过一级信任一级的方式来验证证书链中的各级证书,从而保证了各级证书的合法性。

图9b是根据本公开的实施例的验证证书链的另一个示例流程图。

为了简略,这里省去了与图9a重复的步骤的描述。参考图9b,与图9a不同的是,图9b还包括步骤910。具体地,如果根证书是自签名证书,则证书链的验证还可以包括用过根证书验签根证书自己(步骤910)。

通过图9b中的步骤910,根证书验证根证书自己,可以进一步保证信任连的起点根证书的合法性,增强了系统启动的安全性。

应该理解,用根证书验签根证书不是必须的,即,即使根证书是自签名证书,也可以不验签根证书。

应该理解,虽然图9a和图9b是参考包括根证书、ca认证证书、认证证书的三级证书链来说明证书链的验证过程的,但是根据本公开的实施例的方法对证书链的级数没有限制,即根据本公开的实施例的方法可以用于验证任何数量的级数的证书链。

图10示出了根据本公开的实施例的用于生成用于系统安全启动的文件的装置1000的示例。

参考图10,根据本公开的实施例的用于生成用于系统安全启动的文件的装置1000可以至少包括证书链生成模块1010、文件签名模块1020和文件生成模块1030。

证书链生成模块1010可以被配置为生成由两级以上的证书组成的证书链。文件签名模块1020可以被配置为:使用国密算法对系统启动文件进行哈希计算以生成系统启动文件哈希值;基于用户标识、证书链中的最后一级证书和国密算法参数,通过国密算法生成与国密算法相关的z值;基于系统启动文件哈希值和z值,通过国密算法生成用于对系统启动文件进行签名的哈希值;以及使用证书链中的最后一级证书的私钥通过国密算法来对所述用于对系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值。文件生成模块1030被配置为基于系统启动文件、系统启动文件哈希值、系统启动文件签名值、和证书链,生成用于系统安全启动的文件。具体地,文件生成模块1030被配置为将系统启动文件、系统启动文件哈希值、系统启动文件签名值、和证书链拼接在一起来形成生成用于系统安全启动的文件。

图11示出了根据本公开的实施例的用于安全启动系统的装置1100的示例。

参考图11,根据本公开的实施例的用于安全启动系统的装置1100可以至少包括读取模块1110、证书链验证模块1120、文件验证模块1130和系统启动模块1140。

读取模块1110可以被配置为读取用于系统安全启动的文件,其中用于系统安全启动的文件至少可以包括系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链。另外地,读取模块1110还可以被配置为读取用于安全启动系统的其他数据,例如证书链中的根证书的哈希值和与国密算法相关的z值。证书链验证模块1120可以被配置为验证由两级以上的证书组成的证书链。文件验证模块1130可以被配置为:响应于证书链的验证成功,使用证书链中的最后一级证书,例如三级证书链中的认证证书,基于系统启动文件签名值、系统启动文件哈希值和与国密算法相关的z值通过国密算法来验签系统启动文件签名值;响应于系统启动文件签名值的验签成功,使用国密算法来计算系统启动文件的哈希值,并将所计算的哈希值与所述系统启动文件哈希值进行比较。响应于所计算的哈希值与系统启动文件哈希值匹配,系统启动模块1140可以被配置为基于系统启动文件启动系统。

图12示出了根据本公开的实施例的用于执行本公开的方法的计算机系统1200的示例。图12所示出的计算机系统1200可以对应于图1a和图1b中的签名服务器110或目标服务器120。

参考图12所示,根据本公开的实施例的用于执行本公开的方法的计算机系统1200至少可以包括处理器1210和存储器1220。存储器1220上存储有指令,该指令在由处理器1210运行时,使得处理器1210执行至少以下操作以生成用于系统安全启动的文件:使用国密算法对系统启动文件进行哈希计算以生成系统启动文件哈希值;生成由两级以上的证书组成的证书链;基于用户标识、证书链中的最后一级证书和国密算法参数,通过国密算法生成与国密算法相关的z值;基于系统启动文件哈希值和与国密算法相关的z值,通过国密算法生成用于对系统启动文件进行签名的哈希值;以及使用证书链中的最后一级证书的私钥通过国密算法来对用于对所述系统启动文件进行签名的哈希值进行签名以生成系统启动文件签名值;基于系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链,生成用于系统安全启动的文件。

替换地或另外地,存储器1220上存储的指令由处理器1210运行时,还可以使得处理器执行至少以下操作以安全启动系统:读取用于系统安全启动的文件,其中用于系统安全启动的文件至少可以包括系统启动文件、系统启动文件哈希值、系统启动文件签名值和证书链;验证由两级以上的证书组成证书链;响应于证书链的验证成功,使用证书链中的最后一级证书,基于系统启动文件签名值、系统启动文件哈希值和读取的与国密算法相关的z值通过国密算法来验签系统启动文件签名值;响应于系统启动文件签名值的验签成功,使用国密算法来计算系统启动文件的哈希值,并将所计算的哈希值与系统启动文件哈希值进行比较;以及响应于所计算的哈希值与系统启动文件哈希值匹配,基于系统启动文件启动系统。

应该理解,存储器1220可以是任何类型的计算机可读介质上,例如,诸如包括磁盘或硬盘驱动器的存储设备。计算机可读介质可以包括非暂时性计算机可读介质,例如,诸如像寄存器存储器、处理器高速缓存和随机存取存储器(randomaccessmemory,ram)那样的用于短时期间存储数据的计算机可读介质。计算机可读介质还可以包括非暂时性介质,诸如例如像只读存储器(readonlymemory,rom)、光盘或磁盘、光盘只读存储器(compact-discreadonlymemory,cd-rom)那样的次级或持久长期存储。计算机可读介质还可以是任何其他易失性或非易失性存储系统。例如,计算机可读介质可以被认为是计算机可读存储介质、有形存储设备或其他制品。

根据本公开的实施例的用于生成系统安全启动的文件的方法和/或安全启动系统的方法,将国密算法和证书链应用于其中,提高了签名速度和系统启动安全性,同时该方法具有自主可控的特点。通过证书链和信任根的方式,能够有效避免在系统升级过程中,系统启动文件被篡改或被升级成非法系统启动文件的风险。

在本公开中,以上参考附图描述了一些实施例。应该理解,以上所描述的实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。需要说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。

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