使用隐含中间密钥来认证软件的系统和方法技术方案

技术编号:2855229 阅读:205 留言:0更新日期:2012-04-11 18:40
一种用于认证软件的计算机实现的方法,所述方法包括:    认证存储在可由计算机系统存取的非易失性存储区上的第一计算机文件,通过使用主密钥值散列所述第一软件程序来执行所述第一计算机文件的所述认证,所述主密钥值位于用户不可存取的所述计算机系统的非易失性存储器中;    在所述第一软件程序的所述散列过程中生成一个或多个中间密钥值;    将所述中间密钥值存储在所述用户不可存取的所述计算机系统的存储器中;以及    认证存储在所述非易失性存储区上的第二计算机文件,通过使用一个或多个所述中间密钥值散列所述第二计算机文件来执行所述第二计算机文件的所述认证。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般地涉及用于认证软件的系统和方法。更具体地说,本专利技术涉及使用位于计算机系统上的主密钥和隐含中间密钥来认证软件的系统和方法。
技术介绍
在现代社会中,软件正在日益成为最有价值的技术之一。软件控制着诸如家电、汽车、电话,尤其是计算机系统之类的设备。计算机系统以各种形式存在。这些形式包括传统的台式计算机和笔记本计算机,以及诸如移动电话和个人数字助理(PDA)之类的普及计算设备。此外,软件被用于娱乐目的,例如为个人计算机设计的游戏以及为专用游戏设备设计的游戏。大量的时间、金钱和资源被专用于创建软件。许多公司从创建软件来获得其全部或大部分收入。这些公司所出售的软件程序包括为特定环境或客户所编写的定制软件,以及旨在为更多用户组所编写的非定制软件。由于软件是如此有价值,并且由于计算机使创建程序的精确副本变得很容易,所以软件盗版是很普遍的。软件盗版的范围从个人计算机用户到从事被盗软件批发的专业人士。软件盗版在家庭、学校、公司以及政府中都存在。以前所采取的反盗版措施包括加密软件程序。以这种方式,将用于打开软件的“密钥”随加密的软件程序一起提供给用户。只有具有正确密钥的用户才能解密软件。但是,此方法的难题在于有经验的黑客能够分析包含已解密代码的可执行形式的存储器并创建非加密的版本。非加密的版本然后可以被分发给不再需要使用该“密钥”来打开软件的其他人。另一种反盗版措施是使用一种设备(通常被称作“加密狗”),其必须被使用以便使软件运行。该设备包括在软件将运行之前由软件检查的密钥。此方法的一个难题在于用户通常被强制具有若干在加载软件程序之前必须附加到计算机的设备。另一个难题在于有经验的黑客能够读取由附加设备提供的密钥并创建该设备的副本或使用另一软件程序来提供密钥值。图1是示出了现有技术中黑客如何监视系统总线以非法复制程序数据的方块图。计算机系统100包括使用系统总线125来互连的系统存储器110和处理核心130。系统存储器110是通常从非易失性存储区域(例如,磁盘驱动器或非易失性存储器)读取软件程序和数据120之后存储软件程序和数据120的场所。保护区130是一种封装组件,其包括一个或多个中央处理单元(CPU)135和小量存储装置140(用于程序存储装置145和数据存储装置150)。存储装置140可以包括寄存器、RAM以及其他类型的存储器。由于保护区封装的尺寸约束,存储装置140的容量通常远小于包括在系统存储器110中的存储器的容量,并且通常不足以包含软件程序和数据的完整工作副本。这要求软件代码和数据以可执行形式驻留在系统存储器110中。即使存储在系统存储器110中的软件的源被加密,程序和数据必须在其能够被CPU处理之前首先被解密。在此解密过程中,黑客可以使用入侵工具或窥探工具170以便捕获软件程序和数据的可执行形式。黑客的窥探工具监视在系统总线上从保护区流到系统存储器的已解密数据(步骤175)并复制该数据(步骤180),创建非法副本190。非法副本190是没有被加密的(即使原始程序是加密的)并可以在兼容该软件的任何计算机系统上执行。黑客能够查看使用加密或认证密钥的结果的次数越多,加密和认证密钥通常就越容易受到黑客的攻击。黑客能够使用算法和其他技术来确定仍是常数的加密密钥。当黑客有更多的结果来分析时,这些算法和技术趋于更加成功。因此,需要一种使用中间密钥来认证软件的系统和方法,所述中间密钥使用在隐含主密钥上执行的隐含算法来生成,以便限制黑客根据该主密钥来分析结果的能力。
技术实现思路
处理单元包括唯一的、随机的并且非平凡的只读加密密钥。软件被从非易失性存储装置加载到系统存储区中。所述系统存储区可以包括闪存、只读存储器(ROM)、随机存取存储器(RAM)或任何其他类型的存储器。驻留在系统存储区内的代码映像包括前缀值和后缀值。所述前缀值与来自所述处理单元的主密钥相结合,以便使用诸如异或(XOR)运算之类的数学运算来创建随机值。该随机数被用作诸如SHA-256之类的散列算法的“种子”或起始值。该种子值被用作所述散列算法中的初始结果。该种子值之后的软件代码以块(例如512字节的块)为单位被读取。所述散列算法使用带有签名的种子值来形成结果,所述签名从最新读取的代码块来形成。然后,所述散列算法使用此结果与下一个代码块一起来形成新的结果。过程循环经过每个代码块,同时读取块产生了新的中间结果值。最终,在最后的块被处理之后,将留下最终结果值作为整个散列运算的结果。来自所述散列算法的中间结果被存储在安全存储区以供诸如软件加载器之类的程序来使用。此外,中间结果可以与主密钥算术地相结合以便随后可以使用安全主密钥来认证中间密钥。当退出安全状态时,退出功能清除存储中间密钥的存储区,以便没有人能够分析密钥并攻击存储在处理单元的主密钥。在一个实施例中,“微加载器”被存储在半导体封装的保护区(即,ROM)中,同时主密钥被存储在半导体封装内的非易失性存储区中。微加载器被用来认证使用主密钥的更完全功能的软件加载器。从在完全功能软件加载器上执行的散列算法产生的一个或多个中间密钥被存储在半导体封装内的存储区(例如寄存器、非易失性存储器等)中。完全功能软件加载器使用所述中间密钥来认证其他软件模块。以这种方式,只有完全功能软件加载器被使用主密钥来认证,而其他软件模块被使用没有暴露主密钥的中间密钥来认证。当完全功能加载器完成了分析软件模块时,中间密钥被从存储器清除,以便黑客在其搜寻以发现系统主密钥的过程中不能查看到密钥。此外,虽然不修改(即,替换)半导体封装就不能更改微加载器,但是通过向计算机系统提供新的或升级版本的完全功能加载器以及用于该新版本加载器的前缀和后缀值,可以替换所述完全功能加载器。以上只是概要并且根据需要包含简化的、概括的以及省略的细节;因此,本领域的技术人员将理解,所述概要只是示例性的并且并非旨在以任何方式进行限制。由权利要求单独限定的本专利技术的其他方面、专利技术特征以及优点在以下所述的非限制性详细描述中将变得显而易见。附图说明通过参考附图可以更好地理解本专利技术,并且本专利技术的许多目标、特征以及优点对本领域的技术人员将变得显而易见,这些附图是图1是示出了现有技术中黑客如何监视系统总线以非法复制程序数据的方块图;图2是示出了本专利技术防止副本在其他设备上执行的方块图;图3是能够实现本专利技术的计算设备的方块图;图4是示出了使用在处理器核心之外不可存取的受保护主密钥来初始化硬件所采取的步骤的流程图;图5是示出了将设备和软件分发给客户以便客户加载软件所采取的步骤的高层流程图;图6是示出了分发带有认证数据的软件所采取的步骤的流程图;图7是示出了在客户设备处加载使用主密钥认证的软件所采取的步骤的流程图;图8是示出了根据散列结果认证软件所采取的步骤的流程图;图9是示出了用来将软件加载器加载到处理单元的保护区中的微加载器的系统示意图;图10是示出了使用微加载器和写入处理核心的保护区的主密钥的硬件初始化的流程图;图11是示出了利用存储在保护处理区中的微加载器和由所述微加载器认证的加载器来分发设备和软件所采取的步骤的高层流程图;图12是示出了使用微加载器、加载器以及认证密钥来分发设备所采取的步骤的流程图;图13是示出了分发适合于由使用微加载器和加载器的设备来加载的软件所采本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于认证软件的计算机实现的方法,所述方法包括认证存储在可由计算机系统存取的非易失性存储区上的第一计算机文件,通过使用主密钥值散列所述第一软件程序来执行所述第一计算机文件的所述认证,所述主密钥值位于用户不可存取的所述计算机系统的非易失性存储器中;在所述第一软件程序的所述散列过程中生成一个或多个中间密钥值;将所述中间密钥值存储在所述用户不可存取的所述计算机系统的存储器中;以及认证存储在所述非易失性存储区上的第二计算机文件,通过使用一个或多个所述中间密钥值散列所述第二计算机文件来执行所述第二计算机文件的所述认证。2.根据权利要求1的方法,其中所述第一计算机文件是加载器软件模块,所述加载器软件模块的所述认证进一步包括从所述非易失性存储区读取前缀值和后缀值,所述前缀值和后缀值对应于所述加载器软件模块;使用所述加载器的前缀值和所述主密钥值来生成种子值;使用所述种子值来播种用于认证所述加载器软件模块的所述散列算法;使用所述加载器的后缀值和所述主密钥值来生成预期散列值;检索从所述加载器软件模块的所述散列产生的散列结果;以及将所述预期散列值与所述散列结果相比较。3.根据权利要求2的方法,其中通过计算所述主密钥值与所述前缀值之间的异或值来执行所述种子值的所述生成。4.根据权利要求2的方法,其中由微加载器模块来执行所述加载器软件模块的所述认证。5.根据权利要求4的方法,其中所述微加载器被存储在只读存储器上,并且其中所述计算机系统的处理器、所述只读存储器、所述非易失性存储器以及所述存储器全部被封装在公用半导体封装内。6.根据权利要求5的方法,其中所述加载器软件模块、所述后缀值以及所述前缀值各自位于所述非易失性存储区上,其中所述非易失性存储区在所述公用半导体封装之外。7.根据权利要求1的方法,其中所述非易失性存储器是包括在半导体封装内的锁定的非易失性存储区,所述半导体封装还包括一个或多个处理器。8.根据权利要求1的方法,进一步包括在所述第二计算机文件的所述认证之后清除所述中间密钥值。9.根据权利要求1的方法,其中所述第一计算机文件是加载器软件模块并且所述第二计算机文件是软件程序,所述软件程序的所述认证进一步包括从所述非易失性存储区读取前缀值和后缀值,所述前缀值和后缀值对应于所述软件程序;使用所述软件程序的前缀值和所述中间密钥值中的一个中间密钥值来生成种子值;使用所述种子值播种用于认证所述软件程序的所述散列算法;使用所述软件程序的后缀值和所述中间密钥值来生成预期散列值;检索从所述软件程序的所述散列产生的散列结果;以及将所述预期散列值与所述散列结果相比较。10.根据权利要求9的方法,其中在所述软件加载器模块已被认证和加载后,由所述软件加载器模块来执行所述软件程序的所述认证。11.根据权利要求9的方法,其中通过计算所述中间密钥值中的一个中间密钥值与所述软件程序的前缀值之间的异或值来执行所述种子值的所述生成。12.根据权利要求9的方法,其中微加载器被存储在只读存储器上,并且其中所述计算机系统的处理器、所述只读存储器、所述非易失性存储器以及所述存储器全部被封装在公用半导体封装内,所述方法进一步包括调用所述微加载器使用所述主密钥值、加载器前缀值以及加载器后缀值来认证所述加载器软件模块;加载和调用所述加载器软件模块以响应所述加载器软件模块被所述微加载器所认证,其中所述软件程序由所述加载器软件模块使用所述软件模块的前缀和后缀值结合至少一个所述中间密钥值来认证;以及加载和执行所述软件程序以响应所述软件程序被所述加载器软件模块所认证。13.一种提供适合于认证软件代码的设备的方法,所述方法包括生成主密钥值;将所述主密钥值写入非易失性存储器,其中所述非易失性存储器、基于ROM的微加载器模块以及一个或多个处理器被包括在所述设备内的公用半导体封装中;锁定所述非易失性存储器;将加载器软件映像存储在所述公用半导体封装之外可由所述处理器存取的非易失性存储设备上,其中所述加载器软件映像包括加载器前缀值、加载器后缀值以及加载器软件模块;以及将所述主密钥值、所述加载器前缀值以及设备标识符记录在数据库中。14.根据权利要求13的方法,其中所述设备标识符是唯一地标识所述设备的序列号。15.根据权利要求13的方法,进一步包括将所述设备运送给客户;接收来自所述客户的软件程序的定单,所述定单包括所述设备标识符和所述软件程序标识符;根据包括在所述定单中的所述设备标识符,从所述数据库检索所述主密钥值和所述加载器前缀值;根据所述检索到的主密钥值和前缀值以及对应于所述程序标识符的所述软件程序来创建软件映像;以及将所述软件映像发送给所述客户。16.根据权利要求15的方法,其中所述创建所述软件映像进一步包括生成随机数;生成所述中间密钥值,所述中间密钥值的所述生成进一步包括组合所述检索到的主密钥值和前缀值以形成种子值;使用所述种子值播种散列算法;使用所述已播种的散列算法来散列所述软件加载器模块;在所述散列处理期间检索来自所述散列算法的中间结果;以及生成所述软件映像,所述软件映像的所述生成进一步包括生成对应于所述软件程序的前缀值,所述软件程序的前缀值的所述生成包括将所述中间结果与随机数进行组合;使用所述随机数来播种第二散列算法;使用所述第二已播种的散列算法来散列所述软件程序;检索所述第二散列算法的最终散列结果;生成对应于所述软件程序的后缀值,所述软件程序的后缀值的所述生成包括将所述最终散列结果和所述中间密钥进行组合;以及其中所述软件映像的所述创建包括将所述软件程序的前缀值和后缀值以及所述软件程序封装到所述软件映像中。17.一种信息处理系统,所述系统包括半导体封装,所述半导体封装包括一个或多个处理器、存储区以及锁定的非易失性存储器,其中所述锁定的非易失性存储器包括主密钥值并且其中所述锁定的非易失性存储器从所述半导体封装以外是不可存取的;系统存储器,所述系统存储器使用总线与所述处理器互连;软件加载器映像,所述软件加载器映像包括加载器前缀值、软件加载器例程以及加载器后缀值,其中所述软件加载器例程适合于认证和加载计算机数据文件,其中所述软件加载器映像位于所述半导体封装以外;以及微加载器例程,所述微加载器例程位于所述半导体封装内,其从所述半导体封装以外也是不可存取的,其中所述微加载器适合于通过使用所述主密钥值和所述软件加载器的前缀和后缀值来认证和加载来自所述系统存储器的所述软件加载器例程,并生成一个或多个存储在所述半导体封装的存储区中的中间密钥值。18.根据权利要求17的信息处理系统,进一步包括这样的系统,其中所述微加载器被实现成读取来自非易失性存储区的所述前缀值和后缀值;使用所述软件加载器的前缀值和所述主密钥值来生成种子值;使用所述种子值播种用于认证所述加载器软件模块的散列算法;使用所述加载器的后缀值和所述主密钥值来生成预期散列值;检索从所述加载器软件模块的所述散列产生的散列结果;以及将所述预期散列值与所述散列结果相比较。19.根据权利要求18的信息处理系统,其中为了生成所述种子值,所述微加载器被进一步实现成计算所述主密钥值与所述前缀值之间的异或值。20.根据权利要求17的信息处理系统,其中所述锁定的非易失性存储器是可编程熔断器阵列。21.根据权利要求17的信息处理系统,其中所述软件加载器例程被实现成从所述系统存储器读取前缀值和后缀值,所述前缀和后缀值对应于所述计算机数据文件中的一个计算机数据文件;使用所述软件程序的前缀值和所述中间密钥值中的一个中间密钥值来生成种子值;使用所述种子值播种用于认证所述计算机数据文件的散列算法;使用所述计算机数据文件的后缀值和所述中间密钥值来生成预期散列值;检索从所述计算机数据文件的所述散列产生的散列结果;以及将所述预期散列值与所述散列结果相比较。22.根据权利要求21的信息处理系统,其中在所述软件加载器例程已被所述微加载器认证和加载后,由所述软件加载器例程来执行所述计算机数据文件的所述认证。23.根据权利要求21的信息处理系统,其中为了生成所述种子值,所述软件加载器例程被实现成计...

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

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

1