【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般地涉及用于认证软件的系统和方法。更具体地说,本专利技术涉及使用位于计算机系统上的主密钥和隐含中间密钥来认证软件的系统和方法。
技术介绍
在现代社会中,软件正在日益成为最有价值的技术之一。软件控制着诸如家电、汽车、电话,尤其是计算机系统之类的设备。计算机系统以各种形式存在。这些形式包括传统的台式计算机和笔记本计算机,以及诸如移动电话和个人数字助理(PDA)之类的普及计算设备。此外,软件被用于娱乐目的,例如为个人计算机设计的游戏以及为专用游戏设备设计的游戏。大量的时间、金钱和资源被专用于创建软件。许多公司从创建软件来获得其全部或大部分收入。这些公司所出售的软件程序包括为特定环境或客户所编写的定制软件,以及旨在为更多用户组所编写的非定制软件。由于软件是如此有价值,并且由于计算机使创建程序的精确副本变得很容易,所以软件盗版是很普遍的。软件盗版的范围从个人计算机用户到从事被盗软件批发的专业人士。软件盗版在家庭、学校、公司以及政府中都存在。以前所采取的反盗版措施包括加密软件程序。以这种方式,将用于打开软件的“密钥”随加密的软件程序一起提供给用户。只有具有正确密钥的用户才能解密软件。但是,此方法的难题在于有经验的黑客能够分析包含已解密代码的可执行形式的存储器并创建非加密的版本。非加密的版本然后可以被分发给不再需要使用该“密钥”来打开软件的其他人。另一种反盗版措施是使用一种设备(通常被称作“加密狗”),其必须被使用以便使软件运行。该设备包括在软件将运行之前由软件检查的密钥。此方法的一个难题在于用户通常被强制具有若干在加载软件程序之前必须附加到计算机的设备 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】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的信息处理系统,其中为了生成所述种子值,所述软件加载器例程被实现成计...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。