CN1745377A - 使用隐含中间密钥来认证软件的系统和方法 - Google Patents

使用隐含中间密钥来认证软件的系统和方法 Download PDF

Info

Publication number
CN1745377A
CN1745377A CNA2003801094646A CN200380109464A CN1745377A CN 1745377 A CN1745377 A CN 1745377A CN A2003801094646 A CNA2003801094646 A CN A2003801094646A CN 200380109464 A CN200380109464 A CN 200380109464A CN 1745377 A CN1745377 A CN 1745377A
Authority
CN
China
Prior art keywords
value
software
loader
prefix
master key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2003801094646A
Other languages
English (en)
Other versions
CN100424678C (zh
Inventor
D·J·克拉夫特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1745377A publication Critical patent/CN1745377A/zh
Application granted granted Critical
Publication of CN100424678C publication Critical patent/CN100424678C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices

Abstract

一种包括只读加密密钥(394)的处理单元(300)。加载器代码映像(250)被从非易失性存储装置(270)加载到系统存储器(205)。加载器代码映像(250)包括前缀值(225)和后缀值(235)。前缀值(225)被与来自处理单元(300)的主密钥(394)组合以创建是散列算法的种子的随机值。所述散列算法使用该种子值以及从代码块形成的签名来形成结果。在散列算法过程中,生成中间密钥值并将其存储在用户不可存取的存储区中。在加载器已被认证和加载后,由加载器代码来使用所述中间密钥值。加载器将一个或多个中间密钥值与对应于其他软件模块的前缀和后缀值相组合以使用散列算法来认证软件,并且一经认证,就加载所述软件。

Description

使用隐含中间密钥来认证软件的系统和方法
技术领域
本发明一般地涉及用于认证软件的系统和方法。更具体地说,本发明涉及使用位于计算机系统上的主密钥和隐含中间密钥来认证软件的系统和方法。
背景技术
在现代社会中,软件正在日益成为最有价值的技术之一。软件控制着诸如家电、汽车、电话,尤其是计算机系统之类的设备。计算机系统以各种形式存在。这些形式包括传统的台式计算机和笔记本计算机,以及诸如移动电话和个人数字助理(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是示出了分发适合于由使用微加载器和加载器的设备来加载的软件所采取的步骤的流程图;
图14是示出了准备带有认证信息的软件映像以便传送给客户所采取的步骤的流程图;
图15是示出了客户设备使用由微加载器和加载器进行的认证来加载软件所采取的步骤的流程图;
图16是示出了认证并加载生成副密钥的加载器软件所采取的步骤的流程图;以及
图17是示出了使用副密钥来认证和加载软件所采取的步骤的流程图。
具体实施方式
以下旨在提供本发明的一个实例的详细描述,并且不应被用来限制发明本身。相反,任意数量的变型可以落入在所述描述之后的权利要求中限定的本发明的范围之内。
图1是示出了现有技术中黑客如何监视系统总线以非法复制程序数据的方块图。参见以上背景部分以获得关于现有技术的详细内容。
图2是示出了本发明防止副本在其他设备上执行的方块图。计算机系统200包括使用系统总线201来互连的系统存储器205和处理核心240。系统存储器205是通常从非易失性存储区域(例如,磁盘驱动器或非易失性存储器)读取软件代码和数据230之后存储软件代码和数据230的场所。系统存储器可以包括闪存210、只读存储器(ROM)215以及随机存取存储器(RAM)220。与现有技术不同,存储在系统存储器205中的软件映像包括用于认证软件的前缀225和后缀235。
保护区240是一种封装组件,其包括一个或多个中央处理单元(CPU)245和小量存储装置255(用于程序存储装置260和数据存储装置265)。存储装置255可以包括寄存器、RAM以及其他类型的存储器。由于保护区封装的尺寸约束,存储装置255的容量通常远小于包括在系统存储器205中的存储器的容量。存储装置255还包括少量诸如非易失性RAM或可编程熔断器(电子熔断器)之类的非易失性存储器270。用于认证软件的主密钥275被存储在非易失性存储器中。主密钥275被设计成唯一的(每个保护封装一个)、非平凡的并且具有足够长度(例如,256位)的随机数以实现强认证。由于主密钥被包含在保护封装中,黑客能够读取主密钥的唯一方法将是从封装物理地除去层以便暴露主密钥的值,在此过程中破坏了保护区。因此,虽然黑客可以获得特定计算机中的主密钥的值,但是该计算机将被黑客的过程所破坏,并且得到的主密钥将与存储在其他计算机中的主密钥不同。
保护区240还包括加载器250。加载器250是一个专用过程,用于加载软件并使用主密钥275来认证该软件。由于加载器250和主密钥275都位于保护封装240内,主密钥不会在总线201上或在任何离开保护封装的总线或通信线路上传送。
黑客使用入侵工具或窥探工具280以便试图复制软件程序和数据。黑客的窥探工具监视数据,这些数据包括前缀值,软件代码和数据,以及在系统总线上从系统存储器流到保护区的后缀值(步骤285),并复制数据(步骤290),创建副本295。但是,由于从不在总线上传送主密钥,所以黑客无法获得主密钥值。由于主密钥值优选地是唯一的非平凡的随机数,黑客的软件副本将只能在从其进行复制的计算机系统上运行。重要的是,由于其他计算机具有将不能用于所述副本的不同主密钥,复制的数据(前缀值、软件代码和数据以及后缀值)将不会在不同的计算机上运行。参见以下对图5的描述,以获得关于认证过程如何使用前缀和后缀值来工作的细节。
图3示出了信息处理系统301,其是能够执行此处所述的计算操作的计算机系统的一个简化实例。计算机系统301包括处理单元300,其被封装在半导体封装内并被连接到主机总线302。受保护处理单元包括一个或多个处理器391、用于加载和执行来自主存储器308的软件程序的处理器存储装置392、用于认证和加载软件程序的软件加载器393,以及用于存储主密钥(其仅可从处理单元300内存取并且不会在主机总线302上传送)的锁定非易失性存储区394。处理单元300与主机总线302相连。二级(L2)高速缓冲存储器304也与主机总线302相连。主机至PCI桥306(与主存储器308相连)包括高速缓冲存储器和主存储器控制功能,并提供总线控制来处理PCI总线310、处理器300、L2高速缓冲存储器304、主存储器308以及主机总线302之间的传输。主存储器308与主机至PCI桥306以及主机总线302相连。由主机处理器(多个)300单独使用的设备(例如局域网卡330)与PCI总线310相连。服务处理器接口和ISA访问通透312提供了PCI总线310与PCI总线314之间的接口。以这种方式,PCI总线314被与PCI总线310隔离。诸如闪存318之类的设备与PCI总线314相连。在一种实现中,闪存318包括BIOS代码,所述BIOS代码包含用于各种低层系统功能和系统引导功能的必需的处理器可执行代码。
PCI总线314为由主机处理器(多个)300和服务处理器316所共享各种设备(包括例如闪存318)提供了接口。PCI至ISA桥335提供了总线控制(用来处理PCI总线314与ISA总线340之间的传输)、通用串行总线(USB)功能345、电源管理功能355,并且可以包括其他没有示出的功能组件,例如实时时钟(RTC)、DMA控制、中断支持以及系统管理总线支持。非易失性RAM 320被连接到ISA总线340。服务处理器316包括JTAG和I2C总线322以便与L2高速缓冲存储器304、主机至PCI桥306以及主存储器308通信,并提供了处理器、服务处理器、L2高速缓冲存储器、主机至PCI桥以及主存储器之间的通信路径。服务处理器316还可以访问系统电源,以便关闭信息处理设备301的电源。
外围设备和输入/输出(I/O)设备可以被连接到各种接口(例如,与ISA总线340相连的并行接口362、串行接口364、键盘接口368以及鼠标接口370)。可替代地,许多I/O设备可以通过连接到ISA总线340的超级I/O控制器(未示出)来提供。
为了将计算机系统301连接到另一计算机系统以便通过网络复制文件,局域网卡330被连接到PCI总线310。类似地,为了将计算机系统301连接到ISP以便使用电话线连接与因特网相连,调制解调器375被连接到串行端口364和PCI至ISA桥335。
虽然图3中描述的计算机系统能够执行此处所述的过程,但是此计算机系统只是计算机系统的一个实例。本领域的技术人员将理解,许多其他计算机系统设计都能够执行此处所述的过程。
图4是示出了使用在处理器核心之外不可存取的受保护主密钥来初始化硬件所采取的步骤的流程图。过程开始于400,生成随机的、唯一的、非平凡的主密钥值(步骤405)。在步骤410,过程尝试将生成的主密钥值写入正在被初始化的计算机的受保护处理器区415中的非易失性存储单元。该受保护处理器区包括非易失性存储器,例如可编程的“电子熔断器”阵列420。向其写入主密钥值的所述非易失性存储单元是可以锁定的,以便一旦主密钥值被写入非易失性存储单元并且被认证,主密钥就不能被更改或移除。锁定密钥位425包括一旦设置就不能被改变的位。如果锁定密钥已被设置,则用于写入非易失性存储区420的路径变得不起作用。
判定向其写入主密钥值的非易失性存储单元是否已经被锁定(决策435)。如果非易失性存储单元已经被锁定,则决策435转移到“是”分支445,返回错误以指示非易失性存储单元已经被锁定(步骤445)并且过程结束于490。
另一方面,如果非易失性存储单元尚未被锁定,则决策435转移到“否”分支455,设置控制存取非易失性存储单元的锁定密钥位(步骤460),永久地锁定非易失性存储单元。被初始化的计算机的序列号连同主密钥值一起被记录在安全数据库480中(步骤470)。主密钥值被存储在安全数据库(即,使用加密进行保护并且网络黑客不能渗入的数据库)中,以便黑客和其他个人不能存取主密钥值,所述主密钥值将允许黑客绕过通过使用主密钥来提供的软件可靠性。此后过程结束于490。
图5是示出了将设备和软件分发给客户以便客户加载软件所采取的步骤的高层流程图。分发设备过程开始于500,使用唯一的主密钥(其存储在锁定的非易失性存储单元中)和加载器(其被编程为根据所述主密钥来加载和认证软件)来建立设备(即,计算机)(步骤503)。如图4所示,主密钥值和设备标识符(即,序列号)被存储在安全数据库512中。在步骤506,设备515(带有被包括的主密钥和加载器)被运送给客户。此后分发设备过程结束于509。
客户过程开始于518,客户接收带有嵌入的主密钥的设备(步骤521)。在步骤524,客户通过发送定货单527给软件发行商或零售商来定购用于设备的软件。定货单527可以是电子的(即,因特网定购)、基于纸的(即,邮寄的表格)、电话定购或在零售场所定购。
分发软件过程开始于530,软件发行商接收订单以及客户设备的设备标识符(即,序列号)(步骤533)。从安全数据库512检索(步骤536)对应于设备的主密钥值。根据检索到的主密钥创建前缀值(步骤539)。在一个实施例中,在随机值与检索到的主密钥之间执行“异或”(XOR)运算以创建所述前缀值。
使用用于生成前缀值的随机数来“播种”散列算法(例如SHA-256)(步骤542)。播种散列算法将散列算法的初始结果设置为种子值,在其上散列算法使用该结果以及软件代码的全部或部分散列来生成附加结果。然后生成后缀值(步骤545)。在一个实施例中,来自散列算法(散列所请求的程序代码)的最终结果被与主密钥“异或”以创建所述后缀值。包括所述前缀值、软件代码以及后缀值的软件映像被一起封装到软件映像550中并被传送给客户(步骤548)。此后,分发软件过程结束于551。
返回客户过程,客户在步骤560接收创建的软件映像。当用户想要使用该软件时,他安装和/或加载该软件并调用该软件(步骤563)。在某些计算环境中,首先通过将软件映像复制到诸如硬盘之类的非易失性存储设备来安装软件。在其他环境中(通常与游戏控制台一起使用),软件程序被封装到插入游戏控制台的模块中,在该模块上软件被自动调用。
在加载过程中,加载器(位于设备的保护区)根据包括在软件映像中的前缀值和主密钥来确定用在散列算法中的种子值(步骤566)。在一个实施例中,所述前缀值被与所述主密钥“异或”以生成种子值。散列算法(例如,SHA-256)被使用该种子值来播种并散列包括在软件映像中的软件代码(步骤569)。检索来自所述散列算法的最终结果(步骤572)。使用所述主密钥来生成预期结果值以检验所述最终结果。在一个实施例中,通过在从软件映像读取的后缀值与主密钥上执行“异或”运算来生成所述预期结果(步骤575)。
判定来自散列算法的结果是否等于所述预期结果(决策578)。如果值相等,则决策578转移到“是”分支581,软件代码在步骤584由处理器加载(即,执行)。另一方面,如果值不相等(指示该软件已被改变或该软件没有用在为其定购该软件的设备上),则决策578转移到“否”分支587,绕过步骤584中示出的加载操作。此后客户过程结束于590。
图6是示出了分发带有认证数据的软件所采取的步骤的流程图。分发过程开始于600,在步骤608,接收用于特定软件产品的定单604。定单604包括客户的唯一设备标识符(例如序列号)以及对应于所请求的软件产品的标识符。在步骤612,从安全主密钥数据存储616检索对应于客户设备的主密钥。
在步骤620,根据所述主密钥来创建前缀值。在一个实施例中,通过将一个随机数与所述主密钥“异或”来创建所述前缀值。在步骤628,根据所述前缀值和主密钥,使用一个值来播种散列算法(例如SHA-256)。在一个实施例中,使用用来创建所述前缀值的随机数来播种散列算法。通过将种子值(例如,随机数)存储为散列结果(存储单元632)的初始值来播种散列算法。
在步骤636,所请求的软件位于软件库640。在所示出的实例中,所请求的软件是软件模块648。在步骤652,从所请求的软件模块648读取软件代码的第一个块。在步骤656,读取的软件代码的块被传送给散列算法(例如SHA-256)。在步骤660,所述散列算法接收软件代码的块和存储在结果632中的种子值。散列算法的结果被存储在结果632中,覆盖先前的(种子)结果值。
判定在软件代码上是否已经到达文件结尾(决策664)。如果尚未到达文件结尾,则决策664转移到“否”分支668,其循环返回以读取软件代码的下一个块并使用散列算法来处理该下一个块。此时,散列算法使用所述读取的数据块以及来自先前散列运算的结果来散列代码块。此循环一直继续,直到在软件代码648上到达文件结尾为止,在该处决策664转移到“是”分支672。
在步骤676,根据对应于设备的主密钥和来自散列算法的最终结果来创建后缀值。在一个实施例中,通过将来自散列算法的最终结果与所述主密钥“异或”来创建所述后缀值。
在步骤684,通过将所述前缀值、软件代码(即,软件模块648)以及后缀值封装到软件映像文件中来创建软件映像688,并将该软件映像文件发送给客户。此后分发过程结束于695。
图7是示出了在客户设备处加载使用主密钥认证的软件所采取的步骤的流程图。加载器是一个嵌入设备内受保护半导体封装中的程序。所述半导体封装还包括一个或多个处理器和所述主密钥。以这种方式,加载器能够检索和使用所述主密钥,而从不在受保护半导体封装之外的系统或存储器总线上传输所述主密钥。
过程开始于700,接收用于特定软件组件的加载请求(步骤705)。在步骤710,从锁定的非易失性存储区715检索对应于设备的主密钥720。在一个实施例中,所述锁定的非易失性存储区是一组可编程熔断器(电子熔断器),其在设备创建期间使用主密钥成功地加载之后被锁定(通过设置防止所述主密钥被改变或移除的锁定位)。
在步骤725,从存储在位于受保护半导体封装之外的非易失性存储设备730(例如,硬盘或非易失性存储器)上的软件映像732检索用于被加载的软件模块的前缀值735。软件映像732包括前缀值735、软件代码745以及后缀值750。
在步骤755,根据所述前缀值和所述主密钥,使用一个值来播种散列算法(例如SHA-256)。在一个实施例中,使用用于创建所述前缀值的随机数来播种散列算法。在一个实施例中,通过将所述主密钥与所述前缀值“异或”来生成种子值。通过将所述种子值(例如,随机数)存储为散列结果(存储单元765)的初始值来播种所述散列算法。
在步骤770,从所请求的软件模块745读取软件代码的第一个块。在步骤775,读取的所述软件代码块被传送给散列算法(例如SHA-256)。在步骤780,所述散列算法接收所述软件代码块和存储在结果765中的种子值。散列算法的结果被存储在结果765中,覆盖先前的(种子)结果值。
判定在软件代码上是否已到达文件结尾(决策782)。如果尚未到达文件结尾,则决策782转移到“否”分支784,其循环返回以读取软件代码的下一个块并使用所述散列算法来处理该下一个块。此时,散列算法使用读取的数据块以及来自先前散列运算的结果来散列所述代码块。此循环一直继续,直到在软件代码745上到达文件结尾为止,在该处决策782转移到“是”分支786。
判定软件是否已被改变或为其创建软件的所述主密钥是否不同于包括在所述设备中的主密钥(预定过程790,参见图8和对应文字以了解过程细节)。此后,加载器过程结束于795。
图8是示出了根据散列结果认证软件所采取的步骤的流程图。如图7所示,此例程从预定过程790来调用。
加载器的检查散列结果过程开始于800,在步骤805,从包括在受保护半导体封装中的非易失性存储区810来检索主密钥815。在步骤820,检索用于正在被加载的软件的后缀值840。该后缀值是软件映像828的一部分。软件映像828被存储在受保护半导体封装之外的存储区(例如系统存储器)。软件映像还包括前缀值830和软件代码835。
根据检索的后缀值和主密钥来计算预期结果值(步骤845)。在一个实施例中,通过将主密钥与后缀值“异或”来生成所述预期结果。在步骤855,从位于受保护半导体封装内的存储单元检索来自散列运算的实际结果(结果860)。使用图7所示的过程在先前生成该实际结果。
判定所述预期结果是否等于所述实际结果(决策870)。如果预期结果与实际结果相等,则决策870转移到“是”分支875,由处理器在步骤880执行软件代码。另一方面,如果结果不相同,则决策870转移到“否”分支885,在步骤890返回错误并且不执行软件代码。当预期结果与实际结果不相同时,或者软件代码被改变,或者软件被创建用于不同的设备(带有与从其发出加载请求的设备不同的主密钥)。此后,加载器的检查散列结果过程在895返回调用例程。
图9是示出了用来将软件加载器加载到处理单元的保护区中的微加载器的系统示意图。计算机系统900包括无保护的存储装置905(例如系统存储器,磁盘设备等)和受保护的半导体封装955(其包括不使用总线在封装内互连的封装的半导体组件)。无保护的存储装置905和受保护的半导体封装955使用一个或多个总线950来彼此通信。
无保护的存储装置905存储软件加载器映像910和应用程序映像930。每个这些软件映像都包括前缀值(915和935,分别地)、软件代码(920和940,分别地)以及后缀值(925和945,分别地)。
受保护的半导体封装955包括一个或多个处理器960以及存储装置965。存储装置965包括微加载器代码970的只读存储器(ROM)。该微加载器是被编写成认证和加载软件加载器910的缩小比例的加载器。软件加载器是被设计成加载诸如应用930之类的应用程序的更健壮的加载器。此外,微加载器970被存储在只读存储器中,并且因此在不替换受保护半导体封装的情况下,不能被更改或改变。另一方面,软件加载器910被存储在可改变的存储装置(例如硬盘)中,因此,如果在加载器中发现错误或者当创建了对加载器的增强或其他修改时,加载器可以被更新。
存储装置965还包括程序存储装置975,在程序存储装置975中,软件加载器910和应用程序930分别被加载到存储区980和985中,以便由处理器来执行。存储装置进一步包括用于存储中间密钥990(在加载软件加载器时由微加载器生成)的存储单元。最后,存储装置965包括锁定的非易失性存储器992,例如可编程熔断器(电子熔断器)。非易失性存储器992从受保护半导体封装之外是不可存取的。非易失性存储器992被用来存储主密钥995,其是具有足够长度(例如,256位)的唯一的、随机的、非平凡的值。在设备被创建以及主密钥被存储到非易失性存储器中之后,非易失性存储器被锁定,由此防止进一步的操作改变或移除所述主密钥。
图10是示出了使用微加载器和写入处理核心的保护区的主密钥的硬件初始化的流程图。硬件初始化开始于1000,在步骤1004,生成具有足够长度(例如,256位)的随机的、唯一的、非平凡的主密钥值。生成的主密钥被存储在存储单元1008中。
在步骤1012,根据生成的主密钥创建前缀值并将其存储在存储单元1016中。在一个实施例中,通过将生成的主密钥与另一个随机数“异或”来创建所述前缀值。在步骤1020,使用基于所述前缀值的值(例如用于生成所述前缀值的随机数)来播种散列算法(例如SHA-256)。种子值被用作散列算法的初始结果1024。
在步骤1028,读取软件加载器代码的第一个块。软件加载器代码是由微加载器加载的软件加载器。在步骤1032,读取的所述软件代码块被传送给散列算法(例如SHA-256)。在步骤1036,所述散列算法接收软件加载器代码的块和存储在结果1024中的种子值。散列算法的结果被存储在结果1024中,覆盖先前的(种子)结果值。
判定在软件加载器代码上是否已到达文件结尾(决策1040)。如果尚未到达文件结尾,则决策1040转移到“否”分支1042,其循环返回以读取软件加载器代码的下一个块并使用所述散列算法来处理该下一个块。此时,所述散列算法使用读取的软件加载器代码块和来自先前散列运算的结果来散列代码块。此循环一直继续,直到在软件加载器上到达文件结尾为止,在该处决策1040转移到“是”分支1044。
在步骤1048,根据所述主密钥和从所述散列算法产生的最终结果来创建后缀值并将其存储在存储单元1052中。在一个实施例中,所述主密钥和最终结果被“异或”以创建所述后缀值。在步骤1056,通过封装加载器代码以及前缀和后缀值来创建软件加载器映像1078并将其进行存储。软件加载器映像1078被存储在非易失性存储设备1076(例如磁盘驱动器或非易失性存储器)中,所述非易失性存储设备1076可从受保护处理核心1064来存取并被包括在信息处理系统1060中。受保护处理核心1064还包括存储在ROM中的微加载器软件,其被编程为使用主密钥来加载并认证包括在加载器映像1078中的加载器代码。
在步骤1080,生成的主密钥被写入位于受保护处理核心1064内的非易失性存储器1070中。非易失性存储器1070还被使用锁定密钥1072来锁定。锁定该非易失性存储器防止了任何过程改变或移除所述主密钥。
在步骤1084,正在被初始化的硬件的唯一标识符(例如序列号)连同设备的主密钥值以及存储在设备的非易失性存储设备上的软件加载器(加载器映像1078)的版本一起被写入安全数据库1088。此后,硬件初始化过程结束于1095。
图11是示出了利用存储在保护处理区中的微加载器和由所述微加载器认证的加载器来分发设备和软件所采取的步骤的高层流程图。用于分发设备和软件的供货商过程开始于1100。使用包括在受保护处理器核心区中的唯一主密钥来构建设备(预定过程1110,参见图12以及对应文字以了解过程细节),并且所述主密钥值和设备标识符被写入安全数据库1115。在步骤1120,设备(设备1125)被发送给客户。
客户过程开始于1130,在步骤1135,客户接收主密钥嵌入其受保护处理器核心区的设备。在步骤1140,客户定购用于设备的软件并将定单1145传送给软件的生产者。
返回生产者过程,生产者接收包括唯一标识符(例如设备序列号)的客户的定单1145。生产者从数据库1115检索出对应于该设备的主密钥值以便创建软件映像1170(预定过程1150,参见图13和14以及对应文字以了解过程细节)。此后,生产者过程结束于1160。
返回客户过程,客户在步骤1175接收对应于所定购软件的软件映像。当客户使用设备加载软件时,由微加载器来加载软件加载器(预定过程1180,参见图15和16以及对应文字以了解过程细节)。一旦软件加载器被加载并被认证,软件加载器就加载并认证软件程序(预定过程1190,参见图15以及对应文字以了解过程细节)。此后,用户过程结束于1195。
图12是示出了使用微加载器、加载器以及认证密钥来分发设备所采取的步骤的流程图。从图11所示的预定过程1110来调用图12所示的过程。
设备创建过程开始于1200,在步骤1205,生成唯一的、随机的、非平凡的主密钥并将其存储在存储单元1210中。在步骤1215,所述主密钥被存储在位于设备1220内的处理器核心的受保护区1225之内的非易失性存储区中。在主密钥被存储后,受保护区中的非易失性存储区被锁定以便主密钥不能被改变或移除。
在步骤1240,微加载器程序1235被存储在处理器核心内的ROM中。从设备的受保护区之外不能读取或改变该微加载器。在步骤1245,生成另一个随机数。根据生成的随机数和所述主密钥来计算前缀值(步骤1250)。在一个实施例中,通过将所述主密钥与所述随机数“异或”来计算该前缀。
在步骤1255,使用步骤1245中生成的随机数来播种散列算法(例如SHA-256)并且使用所述散列算法来散列软件加载器1260。然后,在步骤1265,通过将所述散列算法的结果与所述主密钥组合来计算后缀值。在一个实施例中,主密钥和来自散列算法的结果被“异或”以创建所述后缀值。在步骤1270,使用所述前缀值、后缀值以及加载器代码来创建加载器映像1275。所述加载器映像被存储在设备1220内可由受保护处理器核心存取的未保护区(例如磁盘驱动器或其他非易失性存储单元)中。
在步骤1280,设备标识符(即,序列号)与设备的主密钥值、加载器版本以及前缀值一起被存储在安全数据库1285中。此后,设备创建过程在1295返回。
图13是示出了分发适合于由使用微加载器和加载器的设备来加载的软件所采取的步骤的流程图。从图11所示的预定过程1150来调用图13所示的过程。
软件分发过程开始于1300,从安全数据库1310检索(步骤1305)对应于客户设备的主密钥、加载器版本以及加载器前缀值。在步骤1315,使用基于所述加载器前缀和所述主密钥的值来播种散列算法(例如,SHA-256)。在一个实施例中,通过将所述主密钥与所述加载器前缀值“异或”来创建种子值。通过将所述种子值(例如,从“异或”运算产生的随机数)存储为散列结果(存储单元1320)的初始值来播种所述散列算法。
在步骤1325,检索副密钥计数。该副密钥计数指示在当前结果被用作副密钥值之后执行的散列算法的重复数。例如,如果副密钥计数是“10”,则在散列算法重复10次之后,无论结果存储区1320中的结果为何,都被软件加载器用作副密钥。在步骤1330,用来记录重复次数的计数器被初始化为零。
在步骤1335,从存储区1340读取安装在客户设备上的加载器代码的第一个块。在步骤1345,递增计数器以指示散列算法已被执行一次,并且在步骤1350,使用所述散列算法来处理所述代码块。在步骤1355,散列算法接收所述软件代码块和存储在结果1320中的种子值。所述散列算法的结果被存储在结果1320中,覆盖先前的(种子)结果值。
判定计数器是否等于副密钥计数常数(决策1360)。如果计数器尚未达到副密钥计数,则决策1360转移到“否”分支1365,过程循环返回以处理加载器代码的下一个块并递增计数器。此循环一直继续,直到计数器等于副密钥计数为止,在该点决策1360转移到“是”分支1370。
在步骤1375,副密钥值被设置为从散列算法的多次重复产生的当前结果。然后,使用所述副密钥值来处理诸如应用程序或游戏软件之类的软件应用(预定过程1380,参见图14以及对应文字以了解过程细节)。此后,过程在1395返回调用过程。
图14是示出了准备带有认证信息的软件映像以便传送给客户所采取的步骤的流程图。从图13所示的预定过程1380来调用图14所示的过程。
创建所请求软件的映像的过程开始于1400,在步骤1410生成随机数。根据所述随机数和副密钥值(步骤1420,参见图13以了解关于创建副密钥值的细节)来确定前缀值。在一个实施例中,在所述随机值与所述副密钥值之间执行“异或”(XOR)运算以创建所述前缀值。在步骤1425,使用基于所述前缀值的值(例如用于生成所述前缀值的随机数)来播种散列算法(例如SHA-256)。该种子值被用作散列算法的初始结果1430。
在步骤1435,读取用户所请求的软件代码1438的第一个块。在步骤1440,读取的所述软件代码块被传送给散列算法(例如SHA-256)。在步骤1445,所述散列算法接收所述软件代码块和存储在结果1430中的种子值。所述散列算法的结果被存储在结果1430中,覆盖先前的(种子)结果值。
判定在软件代码上是否已到达文件结尾(决策1450)。如果尚未到达文件结尾,则决策1450转移到“否”分支1455,其循环返回以读取软件代码的下一个块并使用所述散列算法来处理该下一个块。此时,所述散列算法使用读取的所述软件代码块和来自先前散列运算的结果来散列所述代码块。此循环一直继续,直到在软件代码上到达文件结尾为止,在该处决策1450转移到“是”分支1460。
在步骤1470,根据副密钥和从散列算法产生的最终结果来创建后缀值。在一个实施例中,所述副密钥和最终结果被“异或”以创建所述后缀值。在步骤1475,通过封装软件代码以及前缀和后缀值来创建软件映像1480。在步骤1490,或者通过因特网在非易失性介质上或者以任何其他方式将软件映像1480发送给客户。此后,过程在1495返回调用例程。
图15是示出了客户设备使用由微加载器和加载器进行的认证来加载软件所采取的步骤的流程图。从图11所示的预定过程1180和1190来调用图15所示的过程。
在客户设备上加载软件的过程开始于1500,位于设备运行核心内的锁定的非易失性存储区中的主密钥1515被用来认证和加载软件加载器映像1520并生成副密钥1525(预定过程1510,参见图16以及对应文字以了解过程细节)。
判定加载器是否被微加载器所认证(决策1530)。如果加载器没有被认证,则决策1530转移到“否”分支1535并且过程在1540结束。另一方面,如果加载器被微加载器所认证,则决策1530转移到“是”分支1545,使用加载器软件和副密钥值来认证并加载由客户请求执行的软件(映像1560)(预定过程1550,参见图17以及对应文字以了解过程细节)。
判定软件是否被认证(决策1570)。如果软件没有被认证,则决策1570转移到“否”分支1574,副密钥值被从处理器核心存储存储器移除(清除)(步骤1590)。另一方面,如果软件被认证,则决策1570转移到“是”分支1578,由处理器在步骤1580执行软件代码并且副密钥在步骤1590被从处理器核心存储存储器移除(清除)。此后,过程在1595返回调用例程。
图16是示出了认证并加载生成副密钥的加载器软件所采取的步骤的流程图。从图15所示的预定过程1510来调用图16所示的过程。
用于认证和加载软件加载器的微加载器过程开始于1600,在步骤1605,微加载器从锁定的非易失性存储器检索用于设备的主密钥1615并且从无保护区(例如,系统存储器)检索对应于软件加载器映像1610的前缀值。
在步骤1620,使用基于所述加载器前缀和所述主密钥的值来播种散列算法(例如SHA-256)。在一个实施例中,通过将所述主密钥与所述加载器前缀值“异或”来创建所述种子值。通过将所述种子值(例如,从“异或”运算产生的随机数)存储为散列结果(存储单元1625)的初始值来播种所述散列算法。
在步骤1630,检索副密钥计数。该副密钥计数指示在当前结果被用作副密钥值之后执行的散列算法的重复数。例如,如果副密钥计数是“10”,则在散列算法重复10次之后,无论结果存储区1625中的结果为何,都被软件加载器用作副密钥。在一个实施例中,从用来存储所述主密钥的锁定的非易失性存储区来检索所述副密钥计数。在步骤1635,用来记录重复次数的计数器被初始化为零。
在步骤1640,从加载器映像1610读取安装在客户设备上的加载器代码的第一个块。在步骤1645,递增计数器以指示散列算法已被执行一次,并且在步骤1650,使用所述散列算法来处理所述代码块。在步骤1655,散列算法接收所述软件代码块和存储在结果1625中的种子值。所述散列算法的结果被存储在结果1625中,覆盖以前的(种子)结果值。
判定计数器是否等于副密钥计数常数(决策1660)。如果计数器尚未达到副密钥计数,则决策1660转移到“否”分支1662,过程循环返回以处理加载器代码的下一个块并递增计数器。此循环一直继续,直到计数器等于副密钥计数为止,在该点决策1660转移到“是”分支1668,在步骤1669,副密钥值被设置为从所述散列算法的多次重复产生的当前结果。
判定是否已到达软件加载器文件的结尾(决策1670)。如果尚未到达文件结尾,则决策1670转移到“否”分支1672,过程循环返回以使用所述散列算法来处理来自所述软件加载器的下一个代码块。此循环一直继续,直到到达文件结尾为止,在该点决策1670转移到“是”分支1674。
在步骤1675,根据所述后缀值和所述主密钥来确定预期结果。在一个实施例中,通过将所述主密钥与所述后缀值“异或”来计算所述预期结果。判定从散列算法产生的结果是否等于所述预期结果(决策1680)。如果从散列算法产生的结果等于所述预期结果,则决策1680转移到“是”分支1685,软件加载器在步骤1690被执行。另一方面,如果从散列算法产生的结果不等于所述预期结果(指示或者加载程序被改变或者在设备上找到的加载程序是与原先随设备一同发送的加载程序不同的加载程序),则决策1680转移到“否”分支1692,绕过软件加载程序的执行。此后,过程在1695返回调用例程。
图17是示出了使用副密钥来认证和加载软件所采取的步骤的流程图。在使用图16所示的过程确定了副密钥之后,从图15所示的预定过程1550来调用图17所示的过程。
在图17中,使用副密钥值来认证和加载软件的过程开始于1700。在步骤1710,副密钥值(使用图16所示的过程来确定并被存储在受保护处理核心内的存储区中)连同用于软件映像1725的前缀值一起被检索。
在步骤1725,使用基于所述前缀值的值(例如用于生成所述前缀值的随机数)来播种散列算法(例如SHA-256)。所述种子值被用作散列算法的初始结果1740。在一个实施例中,在副密钥1720与所述前缀值(产生最初被用来创建前缀值的随机数)之间执行“异或”运算。此随机数被用来播种所述散列算法。
在步骤1750,读取包括在软件映像1725中的软件代码的第一个块。在步骤1755,读取的所述软件代码块被传送给散列算法(例如SHA-256)。在步骤1760,所述散列算法接收所述软件代码块和存储在结果1740中的种子值。所述散列算法的结果被存储在结果1740中,覆盖先前的(种子)结果值。
判定在软件代码上是否已到达文件结尾(决策1765)。如果尚未到达文件结尾,则决策1765转移到“否”分支1768,其循环返回以读取软件代码的下一个块并使用所述散列算法来处理所述下一个块。此时,散列算法使用读取的软件代码块和来自先前散列运算的结果来散列所述代码块。此循环一直继续,直到在软件代码上到达文件结尾为止,在该处决策1765转移到“是”分支1770。
在步骤1775,使用来自软件映像1725的后缀值以及副密钥值1720来创建预期结果值。在一个实施例中,这两个值被“异或”以生成所述预期结果。判定从散列算法产生的结果是否等于所述预期结果(决策1780)。如果从散列算法产生的结果等于所述预期结果,则决策1780转移到“是”分支1785,软件程序在步骤1790被执行。另一方面,如果从散列算法产生的结果不等于所述预期结果(指示或者软件程序被改变或者在设备上找到软件程序是为使用不同密钥组的不同设备创建的),则决策1780转移到“否”分支1792,绕过软件程序的执行。此后,过程在1795返回调用例程。
本发明的一个优选实施方式是客户应用,即,可以例如驻留在计算机随机存取存储器内的代码模块中的一组指令(程序代码)。直到被计算机所请求为止,该组指令可以存储在其他计算机存储器中,例如,在硬盘驱动器中,或在诸如光盘(以最终用于CD ROM中)或软盘(以最终用于软盘驱动器中)之类的可移动存储器中,或通过因特网或其他计算机网络来下载。因此,本发明可以被实现为计算机程序产品以便在计算机中使用。此外,尽管所描述的各种方法可在由软件有选择地激活或重新配置的通用计算机中方便地实现,但是本领域的技术人员还将认识到,此类方法可以在硬件、固件或在被构造成执行所需的方法步骤的更为专用的装置中实现。
使用单词“前缀”和“后缀”来描述此处所使用的认证值并非暗示这些值需要位于相对于对应软件代码的任何特定区域内。相反,此类术语被用来描述这些值何时被与认证过程结合使用。所述前缀值被用来确定用于认证过程的种子值,而所述后缀值被用来生成与来自散列算法的结果相比较的预期结果。实际的前缀和后缀值可以与其各自的软件模块一起存储,也可以单独存储在与软件模块不同且分离的位置。
虽然示出并描述了本发明的特定实施例,但是对本领域的技术人员显而易见的是,根据此处的教导,可以在不偏离本发明及其更宽广方面的情况下做出更改和修改。因此,所附权利要求旨在在其范围内包含所有在本发明的真实精神和范围之内的此类更改和修改。进而应该理解,本发明由所附权利要求来单独限定。本领域的技术人员将理解,如果特定数量的引入权利要求要素是预期的,则此意图在该权利要求中将被明确地重申,并且没有此重申则此限制不存在。对于非限定性实例(作为对理解的帮助),以下所附权利要求包含引入权利要求要素的引导短语“至少一个”和“一个或多个”的用法。但是,这些短语的使用不应该被解释为暗示由不定冠词“a”或“an”引入的权利要求要素将任何包含此类引入权利要求要素的特定权利要求限制为仅包含一个此类要素的发明,即使当同一权利要求包括引导短语“一个或多个”或“至少一个”以及不定冠词“a”或“an”;这同样适用于在权利要求中定冠词的使用。

Claims (41)

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的信息处理系统,其中为了生成所述种子值,所述软件加载器例程被实现成计算所述中间密钥值中的一个中间密钥值与所述计算机数据文件的前缀值之间的异或值。
24.根据权利要求21的信息处理系统,其中为了认证和加载所述计算机数据文件中的一个计算机数据文件,所述微加载器被调用并被实现成:
使用所述主密钥值、所述加载器前缀值以及所述加载器后缀值来认证所述软件加载器例程;
创建并存储在所述软件加载器例程的所述认证过程中生成的所述中间密钥值;
调用所述软件加载器例程以响应所述软件加载器例程被所述微加载器所认证,其中所述软件加载器例程在被调用时被实现成:
使用所述计算机数据文件的前缀和后缀值结合至少一个所述中间密钥值来认证所述计算机数据文件;以及
加载所述计算机数据文件以响应所述计算机数据文件被所述加载器软件模块所认证。
25.根据权利要求24的信息处理系统,其中所述计算机数据文件是软件程序,并且所述软件加载器例程进一步被实现成在所述软件程序被加载后执行所述软件程序。
26.一种存储在计算机可操作介质中用于认证软件的计算机程序产品,所述计算机程序产品包括:
这样的装置,所述装置用于认证存储在可由计算机系统存取的非易失性存储区上的第一计算机文件,由用于使用主密钥值散列所述第一软件程序的装置来执行所述第一计算机文件的所述认证,所述主密钥值位于用户不可存取的所述计算机系统的非易失性存储器中;
这样的装置,所述装置用于在所述第一软件程序的所述散列过程中生成一个或多个中间密钥值;
这样的装置,所述装置用于将所述中间密钥值存储在所述用户不可存取的所述计算机系统的存储器中;以及
这样的装置,所述装置用于认证存储在所述非易失性存储区上的第二计算机文件,由用于使用一个或多个所述中间密钥值散列所述第二计算机文件的装置来执行所述第二计算机文件的所述认证。
27.根据权利要求26的计算机程序产品,其中所述第一计算机文件是加载器软件模块,所述加载器软件模块的所述认证进一步包括:
这样的装置,所述装置用于从所述非易失性存储区读取前缀值和后缀值,所述前缀值和后缀值对应于所述加载器软件模块;
这样的装置,所述装置用于使用所述加载器的前缀值和所述主密钥值来生成种子值;
这样的装置,所述装置用于使用所述种子值来播种用于认证所述加载器软件模块的所述散列算法;
这样的装置,所述装置用于使用所述加载器的后缀值和所述主密钥值来生成预期散列值;
这样的装置,所述装置用于检索从所述加载器软件模块的所述散列产生的散列结果;以及
这样的装置,所述装置用于将所述预期散列值与所述散列结果相比较。
28.根据权利要求27的计算机程序产品,其中由用于计算所述主密钥值与所述前缀值之间的异或值的装置来执行所述种子值的所述生成。
29.根据权利要求27的计算机程序产品,其中由微加载器模块来执行所述加载器软件模块的所述认证。
30.根据权利要求29的计算机程序产品,其中所述微加载器被存储在只读存储器上,并且其中所述计算机系统的处理器、所述只读存储器、所述非易失性存储器以及所述存储器全部被封装在公用半导体封装内。
31.根据权利要求30的计算机程序产品,其中所述加载器软件模块、所述后缀值以及所述前缀值各自位于所述非易失性存储区上,其中所述非易失性存储区在所述公用半导体封装之外。
32.根据权利要求26的计算机程序产品,其中所述非易失性存储器是包括在半导体封装内的锁定的非易失性存储区,所述半导体封装还包括一个或多个处理器。
33.根据权利要求26的计算机程序产品,进一步包括:
这样的装置,所述装置用于在所述第二计算机文件的所述认证之后清除所述中间密钥值。
34.根据权利要求26的计算机程序产品,其中所述第一计算机文件是加载器软件模块并且所述第二计算机文件是软件程序,所述软件程序的所述认证进一步包括:
这样的装置,所述装置用于从所述非易失性存储区读取前缀值和后缀值,所述前缀值和后缀值对应于所述软件程序;
这样的装置,所述装置用于使用所述软件程序的前缀值和所述中间密钥值中的一个中间密钥值来生成种子值;
这样的装置,所述装置用于使用所述种子值播种用于认证所述软件程序的所述散列算法;
这样的装置,所述装置用于使用所述软件程序的后缀值和所述中间密钥值来生成预期散列值;
这样的装置,所述装置用于检索从所述软件程序的所述散列产生的散列结果;以及
这样的装置,所述装置用于将所述预期散列值与所述散列结果相比较。
35.根据权利要求34的计算机程序产品,其中在所述软件加载器模块已被认证和加载后,由所述软件加载器模块来执行所述软件程序的所述认征。
36.根据权利要求34的计算机程序产品,其中由用于计算所述中间密钥值中的一个中间密钥值与所述软件程序的前缀值之间的异或值的装置来执行所述种子值的所述生成。
37.根据权利要求34的计算机程序产品,其中微加载器被存储在只读存储器上,并且其中所述计算机系统的处理器、所述只读存储器、所述非易失性存储器以及所述存储器全部被封装在公用半导体封装内,所述计算机程序产品进一步包括:
这样的装置,所述装置用于调用所述微加载器使用所述主密钥值、加载器前缀值以及加载器后缀值来认证所述加载器软件模块;
这样的装置,所述装置用于加载和调用所述加载器软件模块以响应所述加载器软件模块被所述微加载器所认证,其中所述软件程序由所述加载器软件模块使用所述软件模块的前缀和后缀值结合至少一个所述中间密钥值来认证;以及
这样的装置,所述装置用于加载和执行所述软件程序以响应所述软件程序被所述加载器软件模块所认证。
38.一种提供适合于认证软件代码的设备的计算机程序产品,所述计算机程序产品包括:
这样的装置,所述装置用于生成主密钥值;
这样的装置,所述装置用于将所述主密钥值写入非易失性存储器,其中所述非易失性存储器、基于ROM的微加载器模块以及一个或多个处理器被包括在所述设备内的公用半导体封装中;
这样的装置,所述装置用于锁定所述非易失性存储器;
这样的装置,所述装置用于将加载器软件映像存储在所述公用半导体封装之外可由所述处理器存取的非易失性存储设备上,其中所述加载器软件映像包括加载器前缀值、加载器后缀值以及加载器软件模块;以及
这样的装置,所述装置用于将所述主密钥值、所述加载器前缀值以及设备标识符记录在数据库中。
39.根据权利要求38的计算机程序产品,其中所述设备标识符是唯一地标识所述设备的序列号。
40.根据权利要求38的计算机程序产品,进一步包括:
这样的装置,所述装置用于将所述设备运送给客户;
这样的装置,所述装置用于接收来自所述客户的软件程序的定单,所述定单包括所述设备标识符和所述软件程序标识符;
这样的装置,所述装置用于根据包括在所述定单中的所述设备标识符,从所述数据库检索所述主密钥值和所述加载器前缀值;
这样的装置,所述装置用于根据所述检索到的主密钥值和前缀值以及对应于所述程序标识符的所述软件程序来创建软件映像。
41.根据权利要求40的计算机程序产品,其中所述用于创建所述软件映像的装置进一步包括:
这样的装置,所述装置用于生成随机数;
这样的装置,所述装置用于生成所述中间密钥值,所述中间密钥值的所述生成进一步包括:
这样的装置,所述装置用于组合所述检索到的主密钥值和前缀值以形成种子值;
这样的装置,所述装置用于使用所述种子值播种散列算法;
这样的装置,所述装置用于使用所述已播种的散列算法来散列所述软件加载器模块;
这样的装置,所述装置用于在所述散列处理期间检索来自所述散列算法的中间结果;以及
这样的装置,所述装置用于生成所述软件映像,所述软件映像的所述生成进一步包括:
这样的装置,所述装置用于生成对应于所述软件程序的前缀值,所述软件程序的前缀值的所述生成包括用于将所述中间结果与随机数进行组合的装置;
这样的装置,所述装置用于使用所述随机数来播种第二散列算法;
这样的装置,所述装置用于使用所述第二已播种的散列算法来散列所述软件程序;
这样的装置,所述装置用于检索所述第二散列算法的最终散列结果;
这样的装置,所述装置用于生成对应于所述软件程序的后缀值,所述软件程序的后缀值的所述生成包括将所述最终散列结果和所述中间密钥进行组合;以及
其中所述软件映像的所述创建包括用于将所述软件程序的前缀值和后缀值以及所述软件程序封装到所述软件映像中的装置。
CNB2003801094646A 2003-06-19 2003-12-15 使用隐含中间密钥来认证软件的系统和方法 Expired - Fee Related CN100424678C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/464,884 2003-06-19
US10/464,884 US6961852B2 (en) 2003-06-19 2003-06-19 System and method for authenticating software using hidden intermediate keys

Publications (2)

Publication Number Publication Date
CN1745377A true CN1745377A (zh) 2006-03-08
CN100424678C CN100424678C (zh) 2008-10-08

Family

ID=33563711

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801094646A Expired - Fee Related CN100424678C (zh) 2003-06-19 2003-12-15 使用隐含中间密钥来认证软件的系统和方法

Country Status (9)

Country Link
US (1) US6961852B2 (zh)
EP (1) EP1636715A4 (zh)
KR (2) KR100896625B1 (zh)
CN (1) CN100424678C (zh)
AU (1) AU2003300926A1 (zh)
CA (1) CA2525376C (zh)
IL (1) IL172519A0 (zh)
TW (1) TWI315627B (zh)
WO (1) WO2005006109A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102306418A (zh) * 2007-11-28 2012-01-04 冲电气工业株式会社 核对值确认方法以及装置
WO2013135064A1 (zh) * 2012-03-12 2013-09-19 苏州阔地网络科技有限公司 一种软件绑定硬件的方法及系统
CN112306037A (zh) * 2019-07-31 2021-02-02 株式会社电装天 信息处理装置

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2381090B (en) * 2001-10-17 2005-02-02 Bitarts Ltd Software loading
US7475254B2 (en) * 2003-06-19 2009-01-06 International Business Machines Corporation Method for authenticating software using protected master key
US7591021B2 (en) * 2003-09-05 2009-09-15 Microsoft Corporation Object model document for obfuscating object model therein
US7831838B2 (en) * 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
US7266661B2 (en) * 2004-05-27 2007-09-04 Silverbrook Research Pty Ltd Method of storing bit-pattern in plural devices
US20060143454A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Storage of multiple keys in memory
US7243193B2 (en) * 2004-05-27 2007-07-10 Silverbrook Research Pty Ltd Storage of program code in arbitrary locations in memory
US20060020810A1 (en) * 2004-07-24 2006-01-26 International Business Machines Corporation System and method for software load authentication
US7490245B2 (en) * 2004-07-24 2009-02-10 Lenovo (Singapore) Pte. Ltd. System and method for data processing system planar authentication
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
JP2006050504A (ja) * 2004-08-09 2006-02-16 Canon Inc 画像処理装置およびその方法
US7779269B2 (en) * 2004-09-21 2010-08-17 Ciena Corporation Technique for preventing illegal invocation of software programs
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7509250B2 (en) * 2005-04-20 2009-03-24 Honeywell International Inc. Hardware key control of debug interface
KR20130095855A (ko) * 2005-05-11 2013-08-28 퀄컴 인코포레이티드 분산 처리 시스템 및 방법
US8839450B2 (en) * 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
US7669242B2 (en) * 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US7953980B2 (en) 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US8015606B1 (en) 2005-07-14 2011-09-06 Ironkey, Inc. Storage device with website trust indication
US8335920B2 (en) * 2005-07-14 2012-12-18 Imation Corp. Recovery of data access for a locked secure storage device
US8321953B2 (en) * 2005-07-14 2012-11-27 Imation Corp. Secure storage device with offline code entry
US7814330B2 (en) * 2005-08-01 2010-10-12 Oracle International Corporation Method and apparatus for facilitating multi-level computer system authentication
US20070067620A1 (en) * 2005-09-06 2007-03-22 Ironkey, Inc. Systems and methods for third-party authentication
US20070060373A1 (en) * 2005-09-12 2007-03-15 Bigfoot Networks, Inc. Data communication system and methods
US9455844B2 (en) * 2005-09-30 2016-09-27 Qualcomm Incorporated Distributed processing system and method
US7389426B2 (en) 2005-11-29 2008-06-17 Research In Motion Limited Mobile software terminal identifier
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
US20070162733A1 (en) * 2006-01-06 2007-07-12 Dell Products L.P. Secure CMOS
US8370928B1 (en) * 2006-01-26 2013-02-05 Mcafee, Inc. System, method and computer program product for behavioral partitioning of a network to detect undesirable nodes
US8438658B2 (en) * 2006-02-02 2013-05-07 International Business Machines Corporation Providing sealed storage in a data processing device
KR20070082405A (ko) * 2006-02-16 2007-08-21 삼성전자주식회사 암호화 데이터 재생 장치 및 암호화 데이터 재생 시스템
US20070300031A1 (en) * 2006-06-22 2007-12-27 Ironkey, Inc. Memory data shredder
EP2047373A4 (en) * 2006-07-17 2017-03-29 Qualcomm Incorporated Host posing network device and method thereof
US8874780B2 (en) * 2006-07-17 2014-10-28 Qualcomm Incorporated Data buffering and notification system and methods thereof
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US20080107275A1 (en) * 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US7908364B2 (en) * 2007-01-26 2011-03-15 Bigfoot Networks, Inc. Method storing socket state information in application space for improving communication efficiency of an application program
US8001383B2 (en) * 2007-02-01 2011-08-16 Microsoft Corporation Secure serial number
US20080222733A1 (en) * 2007-03-08 2008-09-11 Ddtic Corporation, Ltd. Anti-pirate memory card
WO2008118522A1 (en) * 2007-03-23 2008-10-02 Bigfoot Networks, Inc. Distributed processing system and method
WO2008118807A1 (en) * 2007-03-26 2008-10-02 Bigfoot Networks, Inc. Method and system for communication between nodes
KR101427646B1 (ko) * 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
EP2181393A4 (en) * 2007-07-20 2013-08-21 Qualcomm Inc DEVICE AND METHOD FOR CLIENT AUTHENTICATION
EP2176755A4 (en) 2007-07-20 2013-01-23 Qualcomm Atheros Inc TELEDIAGNOSTIC DEVICE AND METHODS
US8099718B2 (en) * 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
KR101561716B1 (ko) * 2007-11-29 2015-10-19 퀄컴 인코포레이티드 원격 메시지 라우팅 디바이스 및 이의 방법들
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
JP4998314B2 (ja) * 2008-02-19 2012-08-15 コニカミノルタホールディングス株式会社 通信制御方法および通信制御プログラム
WO2009137371A2 (en) * 2008-05-02 2009-11-12 Ironkey, Inc. Enterprise device recovery
WO2009158538A1 (en) * 2008-06-27 2009-12-30 Wms Gaming, Inc. Authenticating components in wagering game systems
US8255692B2 (en) * 2008-07-11 2012-08-28 Rosemount Inc. Method of providing secure tamper-proof acquired data from process instruments
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
EP2401866A4 (en) * 2009-02-24 2012-10-24 Beyond Broadband Technology Llc SECURE CABLE TELEVISION COMMUNICATION SYSTEM FOR UNIDIRECTIONALLY RESTRICTED ACCESS
US8745365B2 (en) 2009-08-06 2014-06-03 Imation Corp. Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system
US8683088B2 (en) * 2009-08-06 2014-03-25 Imation Corp. Peripheral device data integrity
US8577809B2 (en) * 2011-06-30 2013-11-05 Qualcomm Incorporated Method and apparatus for determining and utilizing value of digital assets
CN103237005A (zh) * 2013-03-15 2013-08-07 福建联迪商用设备有限公司 密钥管理方法及系统
CN103220271A (zh) * 2013-03-15 2013-07-24 福建联迪商用设备有限公司 密钥下载方法、管理方法、下载管理方法及装置和系统
US9424443B2 (en) 2013-08-20 2016-08-23 Janus Technologies, Inc. Method and apparatus for securing computer mass storage data
US9992171B2 (en) * 2014-11-03 2018-06-05 Sony Corporation Method and system for digital rights management of encrypted digital content
EP3040896A1 (en) * 2014-12-30 2016-07-06 Gemalto Sa Secure element
US9697359B2 (en) * 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
EP3509003B1 (en) * 2018-01-04 2021-04-21 Shenzhen Goodix Technology Co., Ltd. Method and apparatus to protect code processed by an embedded micro-processor against altering
KR102190727B1 (ko) * 2018-12-27 2020-12-14 아주대학교산학협력단 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법
US11782610B2 (en) * 2020-01-30 2023-10-10 Seagate Technology Llc Write and compare only data storage
US11528135B2 (en) 2020-03-31 2022-12-13 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit (IC) signatures with random number generator and one-time programmable device
TWI781544B (zh) * 2020-03-31 2022-10-21 台灣積體電路製造股份有限公司 積體電路裝置以及產生用於積體電路裝置的安全密鑰的方法及系統
US11962693B2 (en) 2020-03-31 2024-04-16 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit (IC) signatures with random number generator and one-time programmable device
US11416621B2 (en) * 2020-06-18 2022-08-16 Micron Technology, Inc. Authenticating software images
CN114553399B (zh) * 2020-11-18 2022-10-11 澜起电子科技(上海)有限公司 芯片内置密钥的派生方法及其装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2601795B1 (fr) * 1986-07-17 1988-10-07 Bull Cp8 Procede pour diversifier une cle de base et pour authentifier une cle ainsi diversifiee comme ayant ete elaboree a partir d'une cle de base predeterminee, et systeme pour la mise en oeuvre
US5535276A (en) * 1994-11-09 1996-07-09 Bell Atlantic Network Services, Inc. Yaksha, an improved system and method for securing communications using split private key asymmetric cryptography
US6091819A (en) * 1996-08-16 2000-07-18 Telcordia Technologies, Inc. Accelerating public-key cryptography by precomputing randomly generated pairs
DE69724235T2 (de) * 1997-05-28 2004-02-26 Siemens Ag Computersystem und Verfahren zum Schutz von Software
US6760441B1 (en) 2000-03-31 2004-07-06 Intel Corporation Generating a key hieararchy for use in an isolated execution environment
CN1147793C (zh) * 2001-05-30 2004-04-28 深圳市朗科科技有限公司 使用半导体存储设备的数据安全存取方法和系统
US6925557B2 (en) 2001-10-26 2005-08-02 International Business Machines Corporation Method and system for a clean system booting process

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102306418A (zh) * 2007-11-28 2012-01-04 冲电气工业株式会社 核对值确认方法以及装置
WO2013135064A1 (zh) * 2012-03-12 2013-09-19 苏州阔地网络科技有限公司 一种软件绑定硬件的方法及系统
CN112306037A (zh) * 2019-07-31 2021-02-02 株式会社电装天 信息处理装置

Also Published As

Publication number Publication date
AU2003300926A8 (en) 2005-01-28
EP1636715A4 (en) 2009-03-25
TW200509636A (en) 2005-03-01
CN100424678C (zh) 2008-10-08
IL172519A0 (en) 2006-04-10
CA2525376C (en) 2014-02-04
AU2003300926A1 (en) 2005-01-28
WO2005006109A2 (en) 2005-01-20
KR100974161B1 (ko) 2010-08-04
KR100896625B1 (ko) 2009-05-08
WO2005006109A8 (en) 2005-09-29
CA2525376A1 (en) 2005-01-20
WO2005006109A3 (en) 2005-03-03
EP1636715A2 (en) 2006-03-22
KR20060026024A (ko) 2006-03-22
US6961852B2 (en) 2005-11-01
TWI315627B (en) 2009-10-01
KR20090045340A (ko) 2009-05-07
US20050010767A1 (en) 2005-01-13

Similar Documents

Publication Publication Date Title
CN1745377A (zh) 使用隐含中间密钥来认证软件的系统和方法
US7770021B2 (en) Authenticating software using protected master key
CN1097772C (zh) 在安全存储区中保护应用程序数据的方法和装置
US7188241B2 (en) Protecting software from unauthorized use by applying machine-dependent modifications to code modules
EP1469369B1 (en) Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
TWI514186B (zh) 用以設定保護平台免受惡意軟體之政策的使用者可控制平台層級觸發技術
US20030221116A1 (en) Security framework for protecting rights in computer software
CN1610888A (zh) 存储防盗版密钥加密(sake)设备以便控制用于网络的数据存取的方法和装置
CN1860471A (zh) 数字权限管理结构、便携式存储装置以及使用该便携式存储装置的内容管理方法
CN1276363C (zh) 借助半导体存储装置实现数据安全存储和算法存储的方法
CN1647443A (zh) 初始化、维护、更新和恢复利用数据访问控制功能的集成系统中的安全操作
CN1914849A (zh) 受信移动平台体系结构
CN101040275A (zh) 内容加密方法、系统和利用该加密方法通过网络提供内容的方法
CN1350670A (zh) 公共密钥控制单元及其系统
EP1025503A2 (en) Reconfigurable secure hardware apparatus and method of operation
TWI598764B (zh) 透過線上伺服器與在安全作業系統中執行程式碼的內容保護
US20050005103A1 (en) System and method for securing code and ensuring proper execution using state-based encryption
CN1633777A (zh) 用于安全分配程序内容的方法和装置
TWI526869B (zh) 用以致能耦接至客戶端之儲存系統之加值儲存服務的方法、裝置、系統及非暫時性機器可讀媒體
CN101042721A (zh) 使用临时许可临时访问内容的方法和设备
TW201346612A (zh) 使用儲存裝置以實施數位版權管理保護之方法及設備
US8385554B2 (en) Preventing execution of pirated software
US20040199766A1 (en) Keyed-build system for controlling the distribution of software
US7197144B1 (en) Method and apparatus to authenticate a user's system to prevent unauthorized use of software products distributed to users
Hoff et al. System and software security via authentication handshake in EPROM

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081008

Termination date: 20181215

CF01 Termination of patent right due to non-payment of annual fee