用于进行代码验证的系统和方法技术方案

技术编号:2871580 阅读:153 留言:0更新日期:2012-04-11 18:40
一种用于代码验证的系统,包括:    一存储器寻址引擎,用来按步长值函数选择存储器的一部分,作为第一输入散列值;    一第二输入散列值;    一验证引擎,用来对存储器的该部分和第二输入散列值两者进行散列处理;以及    一比较电路,对验证引擎的输出和预期值进行比较。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术一般涉及引导控制机构,更具体言之,本专利技术涉及采用硬件签名的引导控制机构。
技术介绍
计算机系统中的安全是令人关心的。在计算技术系统中会发生代码或数据的非授权读取,或者是在计算机系统中代码或数据受到不小心或恶意的改变。针对引导代码过程的安全的通常的解决方案是采用软件密码锁,也称为软件密码签名。一般,在遇到可疑引导代码时,软件密码锁或软件密码签名通过执行一个函数,如散列函数,对一段引导代码进行分析。如经过散列函数计算的值是正确的(即软件“签名”是正确的),就认为可疑代码是安全的并容许其访问系统。然而,存在许多与软件散列系统相关联的问题。比如,对512位的块进行散列处理的计算复杂性可能很大。利用一台32位的RISC计算机,比如,一般可能要使用数千条指令对一个512位的输入数据决进行处理。结果,散列系统一般也就提供速度较低的验证过程。于是,需要一种至少能够克服通常的系统的一些缺陷的散列处理过程。
技术实现思路
本专利技术验证代码,如引导代码。一存储器寻址引擎按一步长值函数来选择存储器的一部分作为第一输入散列值。还提供第二输入散列值。可以应用验证电路来对所选择的存储器部分和第二输入散列值进行散列处理。也可应用比较电路来对验证电路的输出和预期值进行比较。附图说明为了更彻底的了解本专利技术及其优点,现在结合附图参考下面的详细描述,附图中图1示意地示出用于验证引导代码的散列系统。图2A和图2B示出应用散列系统的方法的流程图。图3示出应用散列逻辑硬件的方法的流程图。具体实施例方式在下面的讨论中,提出多个具体细节供彻底了解本专利技术。然而,本领域人士可以理解,本专利技术无需这些具体细节也可以实现。在其他场合,公知的元件以示意图或框图形式示出,以避免以不需要的细节掩盖本专利技术。此外,对于大部分而言,涉及网络通信、电磁信令技术等等的细节,已经尽可能省略,只要这些细节未被认为是彻底了解本专利技术所必需并且被认为是相关技术界人士所了解的。另外,还要注意,除非另有说明,此处所描述的所有功能既可以利用硬件或软件,也可以利用执行固件的微处理器,或其某种组合来完成。在一个实施方式中,采用的是用来完成这些功能的经过编码的专用集成逻辑电路。在另外一些实施方式中,完成这些功能利用的是处理器,如计算机或电子数据处理器,根据的是代码,如计算机程序代码,软件,和/或经过编程用来执行这种功能的集成电路,除非另有说明。下面参考图1,图中示出的是散列系统100。此散列系统100包括一个主存储器110。此主存储器110分割为16个存储字,存储字0至存储字15。在示出的实施方式中,主存储器是512位,并且每个存储字是32位,虽然本专业人士可以理解,其他的主存储器110大小也在本专利技术的范围之内。散列系统100包括一个非易失性存储器寄存器130。此存储器寄存器130包括初始化值INX(IN0至IN7),素数因子控制符,或“跳跃”值,SX(S0至S7),以及预期值EX(E0至E7)。这些数值即使在系统100断电时也存储于非易失性存储器寄存器130中,从而可以防止授权的个人企图改变这些数值和更改散列函数输出。一般讲,INX值是一个输入到验证引擎150的种子值。在验证引擎150内INX值与散列函数中的字0组合。之后验证引擎150对两个输入执行散列处理。正如技术人士可以理解的那样,散列一般可以定义为对输入执行的非交换的累积组合数学函数,从而创建一个硬件引导代码签名(“签名”)。一个良好的累积组合函数应该是这样一个函数,其中来自函数的前一个迭代结果的全部的位与输入的全部的位相组合而产生一个新结果。此外,此结果的全部位应该以某种方式取决于输入和前一个结果值。非交换函数是以这样的方式进行运算的函数,即两个相继迭代的结果也取决于其处理两个输入值的次序。例如,加法函数是交换函数,因为(A+B)与(B+A)相同,但减法函数是非交换函数,因为(A-B)与(B-A)不同(除非A和B具有相同的值)。在图1示出的实施方式中,由验证引擎150执行存储字的散列处理。一个散列结果160包括一个初始种子值和字0的函数。这产生一个输出到散列结果160的散列输出。之后,此输出通过反馈环路155反馈到散列函数的输入。实质上同时,第二个存储字也送入到验证引擎150的散列的输入,从而产生一个新的散列结果。之后,一个SX值从非易失性存储器寄存器130输入到存储器寻址引擎120。通常,存储器寻址引擎120按SX值的函数从主存储器110选择字。之后此选择的字输入到散列函数150,每个散列一个。由存储器寻址引擎120每次进行的新字选择都发生于在验证引擎150完成一个新散列之时。比如,如果SX=1,由存储器寻址引擎120选择存储字的次序是存储字0、存储字1、存储字2等等,验证引擎150完成的每个散列各一个。如果SX=3,按存储字0、存储字3、存储字6等等装入存储字0,验证引擎150完成的每个散列各一个。在一个实施方式中,装入的第一字定义作字0。在一个实施方式中,跳跃值相对待检测的存储器范围的数是素数。比如,在图1中,有16个待检测的存储字。16等于24。因此,在1和16之间的任何不是2的因数的数字都是可接受的素数并且可用作SX。存储字的选择顺序由存储器寻址引擎120通过从指定的存储器范围,如范围“0”,开始而进行。之后,加上SX值来确定下一个可接受的地址范围。表1 换言之,散列电路150在累积非交换的散列处理中使用由存储器寻址引擎120按跳跃值SX的函数选择的字。之后将每个非交换组合散列处理的结果回送到散列电路,以便与由存储器寻址引擎120选择的下一个字以非交换累积方式相组合。比如,如SX=3,第一个存储字0将从存储器寻址引擎120与种子值INX一起送入散列函数。之后,由验证引擎150完成的散列的输出通过反馈环路155回送到验证引擎150的散列中。之后存储器寻址引擎将另一个字,3,输出到验证引擎。这些在验证引擎150中都重新一起进行散列处理。这一新散列的输出作为进一步的输入通过反馈环路155与由存储器寻址引擎选择的字6一起送入验证引擎150的散列,等等。这一散列处理过程一直继续到全部存储器范围经过检测为止。在示出的实施方式中,散列电路150使用跳跃值SX一直到主存储器110中的所有的单元都被读出并且进行非交换组合。在示出的实施方式中,SX是素数,或是由不包含形成主存储器110的大小的素数因子构成。于是,对每个给定的SX存储器110的每个存储字都受到一次选择,如果SX的值由存储器寻址引擎120使用的次数等于主存储器110中的字数时。例如,如果SX=3,并且在存储器中有16个字,则当存储器寻址引擎120选择并传输字0、3、6、9等等16次时,主存储器110中所有的字都被存储器寻址引擎120选择并传输到验证引擎150进行散列处理。在示出的实施方式中,一旦由存储器寻址引擎120选择的字高于包含在主存储器内的字的计数,计数“回绕”变为零。比如,如SX值是“3”,并且存储器寻址引擎120所选择的最后的字是字15,则下一个选择的字是字2、字5等等。在一个实施方式中,由存储器寻址引擎进行的字的选择一直继续到选择数等于主存储器110中的字数为止。一旦所有的存储器范围都以给定的INX在组合中经受了检测时,就将给定的INX的最终本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:D·J·克拉夫特
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1