一种基于BMC和TCM进行完整性度量的方法和服务器与流程

文档序号:11251297阅读:598来源:国知局
一种基于BMC和TCM进行完整性度量的方法和服务器与流程

本发明涉及计算机技术领域,特别涉及一种基于bmc和tcm进行完整性度量的方法和服务器。



背景技术:

随着服务器在各行各业应用越来越深入,使得服务器的安全性问题得到广泛的关注。尤其是在服务器启动过程中,很容易受到攻击,因此,对服务器进行完整性度量,以保证服务器的安全启动则显得尤为重要。

目前,完整性度量的方是主要是,把静态核心度量根crtm存储于bios中,这样默认crtm为可信的,则由bios中的crtm控制整个的启动过程,在服务器启动过程中,crtm并不会将控制权释放给下一阶段的被度量部件,并不能实现信任传递。



技术实现要素:

本发明实施例提供了一种基于bmc和tcm进行完整性度量的方法和服务器,实现了信任传递。

一种基于bmc和tcm进行完整性度量的方法,通过spi总线构建基板管理控制器bmc与bios之间的连接,通过lpc总线构建所述bmc与可信密码模块tcm之间的连接,并在所述tcm中存储sm3杂凑算法和基准值;还包括:

所述bmc通过所述spi总线收集所述bios中的关键代码;

通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量,得到度量值;

判断所述度量值与所述tcm中存储的基准值是否一致,如果是,则发送控制信号给cpu,以控制所述cpu上电,并将信任链传递给所述bios中的关键代码;否则,禁止所述cpu启动。

优选地,上述方法进一步包括:在所述bmc中构建非易失存储器flash,并在所述tcm中存储sm4加密算法;

在所述通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量之后,在所述判断所述度量值与所述tcm中存储的基准值是否一致之前,进一步包括:

生成度量日志信息,并调用所述tcm中存储的sm4加密算法对所述度量日志信息进行加密;

将加密后的度量日志信息存储到所述bmc中的flash中,所述度量日志信息,包括:度量时间和所述度量值。

优选地,上述方法进一步包括:设置初次启动标识信息;

在所述tcm中存储基准值之前,进一步包括:

当读取到所述初次启动标识信息时,调用所述sm3杂凑算法,对所述关键代码进行杂凑运算,得到256bit的基准值。

优选地,在所述判断所述度量值与所述tcm中存储的基准值是否一致之后,在所述发送控制信号给cpu之前,进一步包括:

所述bmc和所述tcm对所述度量值进行数字签名,并利用签名后的度量值生成可信控制信号;

所述发送控制信号给cpu,包括:将所述可信控制信号发送给所述cpu。

优选地,上述方法进一步包括:

隐藏所述bmc和所述tcm的地址空间,并为所述bmc和所述tcm的地址空间设置对应的指令集;

外部通过解析所述指令集对所述bmc和所述tcm进行访问。

优选地,上述方法进一步包括:设置临时数据的失效时间;

当所述临时数据达到所述失效时间时,所述bmc和所述tcm分别清除自身运行过程中产生的临时数据。

一种服务器,包括:基板管理控制器bmc、bios、可信密码模块tcm及cpu,其中,

所述bmc通过spi总线与所述bios连接,并通过lpc总线与所述tcm连接;

所述tcm,用于存储sm3杂凑算法和基准值;

所述bmc,用于通过所述spi总线收集所述bios中的关键代码,并通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量,得到度量值;判断所述度量值与所述tcm中存储的基准值是否一致,如果是,则发送控制信号给cpu,以控制所述cpu上电,并将信任链传递给所述bios中的关键代码;否则,切断禁止所述cpu启动。

优选地,所述bmc,包括:加密单元和非易失存储器flash,其中,

所述tcm,进一步用于存储sm4加密算法;

所述加密单元,用于生成度量日志信息,并调用所述tcm中存储的sm4加密算法对所述度量日志信息进行加密,将加密后的度量日志信息发送给所flash中,所述度量日志信息,包括:度量时间和所述度量值;

所述flash,用于存储所述加密后的度量日志信息。

优选地,

所述bmc,进一步用于设置初次启动标识信息,当读取到所述初次启动标识信息时,调用所述tcm中存储的所述sm3杂凑算法,对所述bios中的关键代码进行杂凑运算,得到256bit的基准值。

优选地,

所述tcm,进一步用于对所述度量值进行数字签名;

所述bmc,进一步用于对所述度量值进行数字签名,并利用签名后的度量值生成可信控制信号,将所述可信控制信号发送给所述cpu。

优选地,

所述bmc,进一步用于为自身产生的临时数据设置失效时间,当所述临时数据达到所述失效时间时,清除自身运行过程中产生的临时数据;

所述tcm,进一步用于为自身产生的临时数据设置失效时间,当所述临时数据达到所述失效时间时,清除自身运行过程中产生的临时数据。

本发明实施例提供了基于bmc和tcm进行完整性度量的方法和服务器,bmc通过spi总线收集bios中的关键代码,并通过lpc总线调用tcm中存储的sm3杂凑算法,对关键代码进行度量,得到度量值;当述度量值与tcm中存储的基准值一致,则发送控制信号给cpu,以控制cpu上电,并将信任链传递给bios中的关键代码,整个度量过程通过bmc和tcm完成,并将完成的信任链传递给bios,从而实现了信任传递。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种基于bmc和tcm进行完整性度量的方法的流程图;

图2是本发明另一个实施例提供的一种基于bmc和tcm进行完整性度量的方法的流程图;

图3是本发明一个实施例提供的服务器的结构示意图;

图4是本发明另一个实施例提供的服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种基于bmc和tcm进行完整性度量的方法,该方法可以包括以下步骤:

步骤101:通过spi总线构建基板管理控制器bmc与bios之间的连接,通过lpc总线构建所述bmc与可信密码模块tcm之间的连接;

步骤102:在所述tcm中存储sm3杂凑算法和基准值;

步骤103:所述bmc通过所述spi总线收集所述bios中的关键代码;

步骤104:通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量,得到度量值;

步骤105:判断所述度量值与所述tcm中存储的基准值是否一致,如果是,则执行步骤106;否则,执行步骤107;

步骤106:发送控制信号给cpu,以控制所述cpu上电,并将信任链传递给所述bios中的关键代码,并结束当前流程;

步骤107:禁止所述cpu启动。

在图1所示的实施例中,bmc通过spi总线收集bios中的关键代码,并通过lpc总线调用tcm中存储的sm3杂凑算法,对关键代码进行度量,得到度量值;当述度量值与tcm中存储的基准值一致,则发送控制信号给cpu,以控制cpu上电,并将信任链传递给bios中的关键代码,整个度量过程通过bmc和tcm完成,并将完成的信任链传递给bios,从而实现了信任传递。

在本发明一个实施例中,为了保证度量结果的安全性,上述方法进一步包括:在所述bmc中构建非易失存储器flash,并在所述tcm中存储sm4加密算法;在所述通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量之后,在所述判断所述度量值与所述tcm中存储的基准值是否一致之前,进一步包括:

生成度量日志信息,并调用所述tcm中存储的sm4加密算法对所述度量日志信息进行加密;将加密后的度量日志信息存储到所述bmc中的flash中,所述度量日志信息,包括:度量时间和所述度量值。则在进行后续判断过程中通过解密度量日志信息得到度量值,以准确的判断度量值与tcm中存储的基准值是否一致。

在本发明一个实施例中,为了获得比较准确的基准值,上述方法进一步包括:设置初次启动标识信息;在所述tcm中存储基准值之前,进一步包括:当读取到所述初次启动标识信息时,调用所述sm3杂凑算法,对所述关键代码进行杂凑运算,得到256bit的基准值。即以初次启动度量得到的度量值作为基准值,保证整个度量过程的一致性,同时保证基准值的准确性。

在本发明一个实施例中,为了进一步保证度量过程的安全性,在所述判断所述度量值与所述tcm中存储的基准值是否一致之后,在所述发送控制信号给cpu之前,进一步包括:所述bmc和所述tcm对所述度量值进行数字签名,并利用签名后的度量值生成可信控制信号;所述发送控制信号给cpu,包括:将所述可信控制信号发送给所述cpu,由于可信控制信号被进行数字签名,使得可信控制信号不能被任意更改,从而保证度量过程的安全性。

在本发明一个实施例中,为了进一步保证bmc和tcm的安全性,上述方法进一步包括:隐藏所述bmc和所述tcm的地址空间,并为所述bmc和所述tcm的地址空间设置对应的指令集;外部通过解析所述指令集对所述bmc和所述tcm进行访问。

在本发明一个实施例中,为了进一步保证bmc和tcm的安全性,上述方法进一步包括:设置临时数据的失效时间;当所述临时数据达到所述失效时间时,所述bmc和所述tcm分别清除自身运行过程中产生的临时数据,从而避免bmc和tcm中的临时数据被恶意攻击,从而进一步保证了bmc和tcm的安全性。

如图2所示,本发明实施例提供了一种基于bmc和tcm进行完整性度量的方法,该方法可以包括以下步骤:

步骤201:通过spi总线构建基板管理控制器bmc与bios之间的连接,通过lpc总线构建所述bmc与可信密码模块tcm之间的连接;

步骤202:在所述bmc中构建非易失存储器flash,并在所述tcm中存储sm4加密算法;

该步骤的sm4加密算法采用32轮非线性迭代结构。加密算法对应解密算法,该加密算法和对应的解密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。在下述进行判断的过程需要通过解密算法对加密后的基准值进行解密。

步骤203:设置初次启动标识信息,并在所述tcm中存储sm3杂凑算法;

该初次启动标识信息是为了实现对基准值的度量,一旦服务器启动过,则该初次启动标识信息将会被更改,在后续启动过程中则不会再次被发现。例如:设置初次启动标识信息为first_boot_flag=1;一旦服务器启动,则将所述标识信息修改为first_boot_flag=0;即当启动时读取到first_boot_flag=0时,则表明服务器为非初次启动。

上述sm3杂凑算法主要是对长度为l(l<264)bit的消息m,经过填充和迭代压缩,生成杂凑值,杂凑值长度为256bit。

其中,sm3杂凑算法的填充过程为:

假设消息m的长度为lbit。首先将bit“1”添加到消息的末尾,再添加k个“0”,k是满足l+1+k≡448mod512的最小的非负整数。然后再添加一个64位比特串,该比特串是长度l的二进制表示。填充后的消息m′的比特长度为512的倍数。

迭代压缩过程:

将填充后的消息m′按512bit进行分组:m′=b(0)b(1)···b(n-1)

其中n=(l+k+65)/512。

对m′按下列方式迭代:

fori=0ton-1

v(i+1)=cf(v(i),b(i))

endfor

其中cf是压缩函数,v(0)为256bit初始值iv,b(i)为填充后的消息分组,迭代压缩的结果为v(n)

然后,

将消息分组b(i)按以下方法扩展生成132个字w0,w1,···,w67,w′0,w′1,···,w′63,用于压缩函数cf:

a)将消息分组b(i)划分为16个字w0,w1,···,w15。

b)forj=16to67

endfor

c)forj=0to63

endfor

令a,b,c,d,e,f,g,h为字寄存器,ss1,ss2,tt1,tt2为中间变量,压缩函数vi+1=cf(v(i),b(i)),0≤i≤n-1。

计算过程描述如下:

abcdefgh←v(i)

forj=0to63

ss1←((a<<12)+e+(tj<<j))<<7

tt1←ffj(a,b,c)+d+ss2+w′j

tt2←ggj(e,f,g)+h+ss1+wj

d←cc←b<<9

b←a

a←tt1

h←g

g←f<<19

f←e

e←p0(tt2)

endfor

abcdefgh←v(n)

输出256bit的杂凑值y=abcdefgh。

步骤204:当读取到所述初次启动标识信息时,调用所述sm3杂凑算法,对所述关键代码进行杂凑运算,得到256bit的基准值;

步骤205:将256bit的基准值存储到tcm中;

该过程中要是为了保证基准值的安全性。

步骤206:所述bmc通过所述spi总线收集所述bios中的关键代码;

步骤207:通过所述lpc总线调用所述tcm中存储的sm3杂凑算法,对所述关键代码进行度量,得到度量值;

步骤208:生成度量日志信息,并调用所述tcm中存储的sm4加密算法对所述度量日志信息进行加密;

步骤209:将加密后的度量日志信息存储到所述bmc中的flash中,所述度量日志信息,包括:度量时间和度量值;

该flash为bmc的非易失存储器,其大小可为1m字节。可用来存储度量时间和度量值。

步骤210:判断所述度量日志信息中的度量值与所述tcm中存储的256bit的基准值是否一致,如果是,则执行步骤211;否则,执行步骤213;

在该过程中需要将上述步骤208和步骤209加密后的度量值进行解密,该解密过程是通过sm4加密算法对应的sm4解密算法实现。

步骤211:所述bmc和所述tcm对所述度量值进行数字签名,并利用签名后的度量值生成可信控制信号;

步骤212:将所述可信控制信号发送给所述cpu,以控制所述cpu上电,并将信任链传递给所述bios中的关键代码,并结束当前流程;

该步骤的实现主要是因为,bmc作为系统平台的可信度量根,同时具有主板监控管理功能。另外,在bmc中通过可编程逻辑实现主板的上电时序控制,在服务器接通电源时通过主板电源组件控制bmc和tcm先加电,cpu先不加电启动;只有当度量完成bios确保可信后cpu才加电。

步骤213:禁止所述cpu启动。

另外,在上述实施例所述的整个度量过程或者服务器使用过程中,均隐藏所述bmc和所述tcm的地址空间,并为所述bmc和所述tcm的地址空间设置对应的指令集;则外部通过解析所述指令集对所述bmc和所述tcm进行访问,例如:bios或者cpu对bmc进行访问时,则是通过解析指令集来完成访问,从而保证了bmc和tcm的安全性。

另外,在上述实施例的度量过程中,bmc和tcm均会产生临时数据,为了避免临时数据被攻击,还可以为bmc和tcm设置临时数据的失效时间,那么,当所述临时数据达到所述失效时间时,所述bmc和所述tcm分别清除自身运行过程中产生的临时数据。

如图3所示,本发明实施例提供一种服务器,包括:基板管理控制器bmc301、bios302、可信密码模块tcm303及cpu304,其中,

所述bmc301通过spi总线与所述bios302连接,并通过lpc总线与所述tcm303连接;

所述tcm303,用于存储sm3杂凑算法和基准值;

所述bmc301,用于通过所述spi总线收集所述bios302中的关键代码,并通过所述lpc总线调用所述tcm303中存储的sm3杂凑算法,对所述关键代码进行度量,得到度量值;判断所述度量值与所述tcm303中存储的基准值是否一致,如果是,则发送控制信号给cpu304,以控制所述cpu304上电,并将信任链传递给所述bios302中的关键代码;否则,切断禁止所述cpu304启动。

如图4所示,在本发明另一个实施例中,所述bmc301,包括:加密单元401和非易失存储器flash402,其中,

所述tcm303,进一步用于存储sm4加密算法;

所述加密单元401,用于生成度量日志信息,并调用所述tcm303中存储的sm4加密算法对所述度量日志信息进行加密,将加密后的度量日志信息发送给所flash402中,所述度量日志信息,包括:度量时间和所述度量值;

所述flash402,用于存储所述加密后的度量日志信息。

在本发明又一实施例中,所述bmc301,进一步用于设置初次启动标识信息,当读取到所述初次启动标识信息时,调用所述tcm303中存储的所述sm3杂凑算法,对所述bios302中的关键代码进行杂凑运算,得到256bit的基准值。

在本发明另一实施例中,所述tcm303,进一步用于对所述度量值进行数字签名;

所述bmc301,进一步用于对所述度量值进行数字签名,并利用签名后的度量值生成可信控制信号,将所述可信控制信号发送给所述cpu304。

在本发明另一实施例中,所述bmc301,进一步用于为自身产生的临时数据设置失效时间,当所述临时数据达到所述失效时间时,清除自身运行过程中产生的临时数据;

所述tcm303,进一步用于为自身产生的临时数据设置失效时间,当所述临时数据达到所述失效时间时,清除自身运行过程中产生的临时数据。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

根据上述方案,本发明的各实施例,至少具有如下有益效果:

1.bmc通过spi总线收集bios中的关键代码,并通过lpc总线调用tcm中存储的sm3杂凑算法,对关键代码进行度量,得到度量值;当述度量值与tcm中存储的基准值一致,则发送控制信号给cpu,以控制cpu上电,并将信任链传递给bios中的关键代码,整个度量过程通过bmc和tcm完成,并将完成的信任链传递给bios,从而实现了信任传递。

2.通过生成度量日志信息,并调用所述tcm中存储的sm4加密算法对所述度量日志信息进行加密,将加密后的度量日志信息存储到所述bmc中的flash中,所述度量日志信息包括:度量时间和所述度量值,保证度量日志信息中度量值的安全性。

3.通过设置初次启动标识信息,当读取到初次启动标识信息时,调用sm3杂凑算法,对关键代码进行杂凑运算,得到256bit的基准值,保证基准值与度量值度量过程的一致性,同时保证基准值的准确性。

4.通过bmc和tcm对度量值进行数字签名,并利用签名后的度量值生成可信控制信号,将可信控制信号发送给cpu,从而保证可信度量过程的安全性。

5.通过隐藏所述bmc和所述tcm的地址空间,并为所述bmc和所述tcm的地址空间设置对应的指令集,外部通过解析所述指令集对所述bmc和所述tcm进行访问,从而保证bmc和tcm的安全性。

6.通过设置临时数据的失效时间,当临时数据达到所述失效时间时,所述bmc和所述tcm分别清除自身运行过程中产生的临时数据,避免临时数据被恶意攻击,从而进一步保证了bmc和tcm的安全性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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