CN101777103B - 验证计算机程序的方法、提供计算机程序的方法及其装置 - Google Patents

验证计算机程序的方法、提供计算机程序的方法及其装置 Download PDF

Info

Publication number
CN101777103B
CN101777103B CN201010121290.7A CN201010121290A CN101777103B CN 101777103 B CN101777103 B CN 101777103B CN 201010121290 A CN201010121290 A CN 201010121290A CN 101777103 B CN101777103 B CN 101777103B
Authority
CN
China
Prior art keywords
computer program
hashed value
hash array
hash
digital signature
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.)
Active
Application number
CN201010121290.7A
Other languages
English (en)
Other versions
CN101777103A (zh
Inventor
佩里·基特赖伯
迈克尔·布劳沃
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN101777103A publication Critical patent/CN101777103A/zh
Application granted granted Critical
Publication of CN101777103B publication Critical patent/CN101777103B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本发明公开了一种用于验证计算机程序的方法、提供计算机程序的方法及其装置。本发明首先以增量方式用数字签名来加封计算机程序。具体地说,计算机程序被分解为一组页面,并且为每一个页面计算一个散列值。散列值的集合被形成为一个散列值阵列,然后用数字签名来加封散列值阵列。接着,计算机程序连同散列值阵列和数字签名一起分发。为了验证计算机程序,接收者首先通过数字签名和公钥来验证散列值阵列的真实性。一旦散列值阵列已经被验证,接收者随后可通过计算待装载的一个页面的散列值,然后与已验证的散列值阵列中的一个相关散列值进行比较,来验证计算机程序的每个页面的真实性。如果散列值不匹配,则停止执行。

Description

验证计算机程序的方法、提供计算机程序的方法及其装置
本申请是申请日是2004年9月10日、申请号是200480021611.9、发明名称为“用于增量代码签署的方法和装置”的发明专利申请的分案申请。
技术领域
本发明涉及计算机安全领域,特别是,本发明公开了一种用于证实未经授权方没有篡改计算机程序代码的系统。
背景技术
计算机安全是计算机软件生产商所面临的最迫切的问题之一。随着因特网的普及浪潮的兴起,几乎每一个个人计算机系统都在这一点或那一点上联网。这种巨大的连接能力已经给个人计算机带来许多好处。然而,它也已经给计算机用户带来许多新问题。最大的问题之一就是从因特网传送的病毒、蠕虫、特洛伊木马和其它恶意的程序。
恶作剧的计算机编程者,有时被称为“黑客”,经常尝试去侵入计算机系统以便窃取信息或者作出未经授权的改动。黑客使用多种不同类型的攻击,企图侵入计算机系统。计算机黑客使用的一般方法包括特洛伊木马(一种表面上为良性的计算机程序,里面含有隐藏的议程),计算机病毒(一段软件,它能在宿主程序内复制它本身),计算机蠕虫(一段软件,它能在计算机网络上复制它本身),以及社会工程(用授权代码来欺骗人,使其泄露那些已授权的代码)。
这些恶作剧的计算机编程者经常通过添加程序代码来改变现有合法程序以执行未经授权的功能。通过在合法程序内放置这样的已授权程序代码,所述恶作剧的计算机编程者由此将未经授权的程序代码隐藏起来。因此,未经授权的代码能长期驻留在人们的个人计算机系统内而不被人察觉。未经授权的程序代码可以破坏有价值的数据,浪费计算机资源(CPU周期、网络带宽、存储空间等等),或者窃取保密信息。
为了保护合法程序免遭这样的未经授权的搀杂,某些软件制造商生成所述程序代码的校验和。校验和是使用所述程序代码作为输入值而计算出来的值,使得每一个不同的计算机程序都趋向于具有一个不同的校验和值。然后,软件制造商用私钥对校验和进行数字“签署”。在运行所述计算机程序代码之前,用户必须验证所述程序代码。具体地说,用户用软件制造商的公钥对所述程序代码进行解密之后,让个人计算机系统计算所述程序代码的校验和,然后将计算出来的校验和值与软件制造商计算出来的校验和进行比较。如果这两个校验和匹配,则所述计算机程序被认为是真实的。
这些现有的基于校验和的保护系统已经被认为工作得很好。然而,为了验证大型计算机程序,这些现有的基于校验和的保护系统可能要用很长的时间。因此,人们希望提供一种用于验证大型计算机程序的更快的系统。
发明内容
本发明公开了一种用于快速地和容易地验证大型计算机程序的方法。本方法是这样运行的:首先以增量方式用数字签名来加封计算机程序。具体地说,所述计算机程序被分为一组程序块,并且为每一个程序块计算一个散列值。所述散列值的集合被形成为一个散列值阵列,然后用数字签名来加封所述散列值阵列。接着,所述计算机程序连同所述散列值阵列和所述数字签名一起分发。为了验证所述计算机程序,接收者首先通过数字签名和公钥来验证散列值阵列的真实性。一旦所述散列值阵列已经通过验证,接收者随后通过计算待装载的一个程序块的散列值,然后与已验证的散列值阵列中的一个相关散列值进行比较,来验证每一个计算机程序块的真实性。如果这两个散列值不匹配,则可以停止执行。
在随后的实施例和附图所描述和图示的本发明的实施方式中,将达到上述和其它目标。
附图说明
通过以下的结合附图的详细说明,将使本发明变得易于理解,其中,相同的参考数字表示相同的结构元件,在附图中:
图1是表示如何用数字签名来加封计算机程序的概念图。
图2是流程图,说明计算机系统在执行所述计算机程序之前,如何验证用数字签名加封的计算机程序。
图3是描述如何使用增量代码签署通过数字签名来加封计算机程序的概念图。
图4是流程图,说明如何使用增量代码签署通过数字签名和散列值阵列来加封计算机程序。
图5是流程图,说明计算机系统如何验证并执行已经通过增量代码签署加封的计算机程序。
具体实施方式
表示法和术语表
在以下的关于本发明的详细说明中,陈述了许多专门的细节,以便提供对本发明的透彻理解。然而,对本领域的技术人员来说,显而易见的是,没有这些专门的细节,也可以实施本发明。在其它实例中,对众所周知的方法、过程、部件和电路不进行详细说明,以避免不必要地使本发明的一些方面变得含糊不清。
下面,本发明的详细说明在很大程度上以过程、步骤、逻辑块、处理和描述被连接到网络的数据处理装置的其它符号表示的形式来提供。这些过程描述和表示是本领域的技术人员用来向本领域的其它技术人员最有效地传递它们的工作内容的方法。下面详细说明的方法和装置是导致所期望的结果的过程或步骤的一个首尾一贯的序列。这些步骤或过程是各种物理量的所需的物理操作。通常,虽然不一定是这样,这些量采取可以被存储、传送、组合、比较、显示以及可以在计算机系统或电子计算装置中进行其它操作的电信号的形式。它证明经常都是方便的,主要地由于通用的原因,把这些信号表示为比特、数值、元素、符号、运算、消息、项、数目等。应当记住,所有这些相似的术语都跟适当的物理量有关,并且是被施加到这些量的仅有的方便的标记。除了像下面的明显描述那样另有说明的情形以外,应当理解,本发明从头到尾都利用诸如“处理”或“计算”或“验证”或“显示”等那样的术语,指的都是一个计算装置的动作和过程,上述计算装置把在所述计算装置的寄存器和存储器中被表示为物理量的数据操作和变换为在所述计算装置或其它电子装置中类似地被表示为各种物理量的其它数据。
采用数字签名的计算机程序安全
为了保护计算机程序免遭未经授权的篡改,软件制造商可以为计算机程序生成一种特殊的“封条”,在程序被执行之前,必须对所述封条进行测试。如果所述封条或计算机程序代码已经被篡改,则测试将失败,从而拒绝执行所述程序。
生成这样一种封条的通用方法就是使用众所周知的“公钥”加密技术。下面将参照图1和2来说明使用公钥加密技术的这样一个系统。
数字加封计算机程序
现在参照附图,在所有的图中,相同的数字指相同的部件,图1从概念上说明为计算机程序100生成数字封条或数字签名的过程。首先,使用一个散列函数110为整个计算机程序100计算一个散列值,从而计算程序散列值120。所述程序散列值120是从所述计算机程序100导出的一个小的代表,诸如校验和。然后,使用数字签名函数130用可信实体的私钥140对所述程序散列值120进行数字签署,生成用于程序散列的数字签名150。用于程序散列的数字签名150就是当程序被分发时与之相伴随的数字封条(或数字签名)。
验证数字加封的计算机程序的真实性
图2是流程图,说明在图1中用于程序散列的数字签名150如何被用来验证程序的真实性。参照图2,在步骤210,使用计算机程序100的计算机系统首先装载整个计算机程序100。然后,在步骤220,计算机系统为整个计算机程序100计算一个程序散列值(如同在图1中由散列函数110所做的那样)。
其次,在步骤230和240,所述计算机系统使用生成数字签名的可信实体的公知公钥235,将与计算机程序100相伴随的用于程序散列的数字签名150与来自步骤220的已计算的程序散列值进行比较。具体地说,由数字签名函数用公钥235来处理用于程序散列的数字签名150,然后将其结果与来自步骤220的已计算的程序散列值进行比较。
如果来自步骤220的已计算的散列函数匹配于用公钥235处理之后的用于程序散列的数字签名150,则计算机系统进入步骤250,程序在此开始执行。然而,如果来自步骤220的已计算的散列函数不匹配于用公钥235处理之后的用于程序散列的数字签名150,则计算机系统进入步骤260,并且拒绝执行计算机程序100。
图1和2的验证系统对小型程序来说工作得很满意,然而它不适用于大型的计算机程序。在图2的流程图的步骤210和220中,可以发现图1和2的验证系统存在的一个重大问题。步骤210和220要求把整个计算机程序100装入存储器,然后在整个计算机程序100上计算一个散列值。对大型程序来说,这个过程将占用十分长的时间。因此,用户被迫等待耗时的整个装载和计算过程。今天的不耐烦的计算机用户将简单地不能耐受这样长的装载时间。
需要保护的一个特别大的计算机程序就是用于计算机系统的操作系统。操作系统有权控制所有的计算机输入/输出设备,诸如盘驱动器、网络连接、显示器、备份系统等。因此,人们非常希望能有一个计算机程序验证系统,它能快速地和有效地保护一个计算机操作系统。
增量代码签署
本发明引入了一种对计算机程序进行数字签署用于安全的改进方法,它不引入在现有系统中出现的长装载时间。本发明通过把计算机程序分解为一些被单独验证的较小单元来进行工作。
通过增量代码签署数字加封计算机程序
图3和图4表示本发明的系统如何为程序生成数字封条,使之能够以更快和更有效的方式被使用。图3表示如何生成数字封条的概念图。图4是详细的流程图,说明用于生成数字封条的方法。
参照图3和图4,在步骤410中,本发明首先将计算机程序300分解为许多“页面”(380至389)。大多数计算机系统已经使用分页存储器组织来实现虚拟存储器系统。因此,本发明可以使用由特定的处理器和/或操作系统提供的现有存储器分页系统。存储页面的大小典型地为4千字节(4k)或8k。
其次,在步骤420和430中,所述系统使用散列函数310,为计算机程序300的每一个存储页面计算一个散列值。散列函数310可以是任何散列函数,诸如公知的SHA或MD5散列函数。如图3所示,散列函数310将为计算机程序300的每一个存储页面(380至389)生成一个相关的散列值(390至399)。在一个实施例中,输出散列值的大小为20字节。然而,可以使用多种不同大小的散列值。
在步骤440中,本发明的系统将计算的散列值(390至399)安排到被称为散列值阵列373的散列值阵列中。然后,在步骤450中,所述系统使用散列函数370为整个散列值阵列373计算一个阵列散列值360。在一个实施例中,散列函数370相同于散列函数310。然而,可以使用不同的散列函数。
然后,在步骤460中,加封程序的可信实体使用签名函数330,通过它的私钥340对阵列散列值360进行数字签署,以便生成用于散列值阵列的数字签名350。最后,在步骤470,散列值阵列373以及用于散列值阵列的数字签名350,连同计算机程序300一起被存储。散列值阵列373以及用于散列值阵列的数字签名350也随同计算机程序300一起被分发,使得计算机程序300的任何接收者都能验证其真实性。
验证数字加封的计算机程序的真实性
一旦为一段计算机程序生成一个散列值阵列373以及用于散列值阵列的数字签名350,就可以向用户分发所述计算机程序,使用户可以快速地和有效地验证所述计算机程序。图5是流程图,说明已经通过增量代码签署数字加封的计算机程序的接收者如何验证并执行已经数字加封的计算机程序。
参照图5,在步骤510,接收者的个人计算机系统首先装载伴随所述计算机程序的散列值阵列。在步骤515,计算机系统为整个散列值阵列计算一个散列值。由于散列值的阵列不是很大,所以这种特定的散列计算可以非常迅速地完成。
其次,在步骤520和525,所述计算机系统使用加封所述计算机程序的可信实体的公知公钥,比较计算的散列值和伴随所述计算机程序100的散列值阵列的数字签名。
如果所述数字签名不匹配于从散列值阵列计算的散列值,则计算机系统进入步骤580,在此它拒绝执行所述计算机程序。由于未经授权的实体已经损坏了数字签名和/或散列值阵列,所以执行被拒绝。
回到步骤525,如果所述数字签名匹配于从散列值阵列计算的散列值,则计算机系统进入步骤530,在此它装载计算机程序的一个页面。然后,在步骤540,所述计算机系统为装载的计算机程序页面计算一个散列值。可以在计算机的操作系统的存储器分页机构内进行此种计算。在步骤550和555,比较针对已装载计算机程序页面的已计算散列值与特定存储页面相关的散列值阵列中的散列值。
如果针对已装载计算机程序的已计算散列值不匹配于来自散列值阵列的相关散列值,则计算机系统进入步骤580,在此它拒绝继续执行。此种拒绝继续执行可以被实现为所述计算机系统的虚拟存储器系统内的页面故障。告知此种失败的其它可能的方法可以是指出所述页面不可读、已经出现验证差错,或者简单地中止。
回到步骤555,如果针对已装载的计算机程序页面的已计算散列值匹配于来自散列值阵列的相关散列值,则计算机系统进入步骤560,在此开始执行所述程序的已装载页面。最后,所述程序将完成所述已装载的页面(以及先前已装载的页面)中的代码的执行,并将完全地完成执行,或者需要计算机程序的另一个页面,如步骤570所述那样。如果所述程序已被完全地完成执行,则计算机简单地进入步骤590,在此它已被完成。
在步骤570,如果需要计算机程序的另一个页面,则计算机系统返回到步骤530,以便装载计算机程序的所需页面。新装载的页面必须通过步骤540、550和555被验证。
要注意的是,计算机系统利用先前已验证的散列值阵列来进一步地验证装载的每一个存储页面。因此,计算机必须保证在程序执行过程中,已验证的散列值阵列没有受到损坏。例如,如果操作系统将已验证的散列值阵列交换到受保护的存储器以外,则一旦所述散列值阵列被装回,它必须被重新验证以保证其真实性。
该书面的说明书和附图已经足够详细地公开了本发明,并且带有一定程度的特殊性。本领域的技术人员应当理解,已经作出的各实施例的公开内容仅借助于实例,并且在各部件的安排、组合和步骤方面可以作出各种各样的改变而不离开所主张的本发明的精神实质和范围。因此,本发明的范围由所附的权利要求书来规定,而不是由前面的实施例的说明来规定。

Claims (17)

1.一种用于验证计算机程序的方法,所述计算机程序基于执行所述计算机程序的特定处理器的存储器分页系统被划分成多个单元,所述方法包括:
通过为散列值阵列计算一个散列值并比较所计算的散列值与散列值阵列的数字签名来验证所述散列值阵列,所述散列值阵列与所述计算机程序一起分发,用于验证所述计算机程序的多个单元,其中散列值阵列中的每个值是计算机程序的不同单元的散列值;以及
针对所述计算机程序的每个单元,迭代地执行:
装载所述计算机程序的一个单元;
通过比较存储在所述散列值阵列中的单个散列值和为所装载的单元新计算的散列值,验证所述所装载的单元;以及
在新计算的散列值匹配于存储在所述散列值阵列中的所述单个散列值时,在装载所述计算机程序的不同单元之前执行所述计算机程序的所述所装载的单元。
2.如权利要求1所述的方法,其中,所述方法在存取存储在所述散列值阵列中的散列值中的任一个之前,验证所述散列值阵列。
3.如权利要求1所述的方法,其中,数字签名包括为所述散列值阵列以前生成的散列值,所述以前生成的散列值用可信实体的私有密钥进行数字签名,其中比较所计算的散列值与所述数字签名包括确定所计算的散列值是否匹配于使用所述可信实体的公共密钥为所述散列值阵列以前生成的散列值。
4.如权利要求1所述的方法,还包括:
当确定所述所装载的单元不真实时,停止迭代地执行所述单元的装载、验证和执行。
5.如权利要求1所述的方法,进一步包括:
在已经验证了所有单元之后,执行所述计算机程序。
6.如权利要求1所述的方法,其中,所述计算机程序的多个单元具有相同的大小。
7.如权利要求1所述的方法,其中,仅验证执行所述计算机程序所需的特定单元组。
8.如权利要求1所述的方法,进一步包括:
当确定至少一个单元不真实时,产生一个错误。
9.如权利要求1所述的方法,其中所述计算机程序的至少一个特定单元的大小是基于存储器分页系统中的存储器的大小。
10.如权利要求1所述的方法,其中,在存储器分页系统中执行所述为所装载的单元计算所述散列值的步骤。
11.如权利要求1所述的方法,进一步包括:
将所述散列值阵列装载入受保护的存储器系统中。
12.如权利要求1所述的方法,其中,所述数字签名是加密的所述散列值阵列的散列值。
13.如权利要求12所述的方法,其中,比较所计算的散列值与所述数字签名包括:解密加密的所述散列值阵列的散列值。
14.一种用于存储计算机程序以供分发的方法,所述方法包括:
接收计算机程序;
基于执行所述计算机程序的特定处理器的存储器分页系统将所述计算机程序分解为多个相同大小的单元以便验证所述计算机程序;
为所述多个单元计算多个散列值,每个散列值用于验证计算机程序的与所述散列值相对应的单元;
将所述多个散列值存储在散列值阵列中;
为散列值阵列计算散列值,并利用所计算的散列值为散列值阵列创建数字签名;以及
存储散列值阵列和数字签名以用于与所述计算机程序一起分发。
15.如权利要求14所述的方法,其中创建数字签名包括
用私有密钥签名函数数字签名所述散列值阵列。
16.如权利要求14所述的方法,其中所述计算机程序的所述多个相同大小的单元的大小基于所述存储器分页系统中的存储页面的大小。
17.一种包括用于执行根据权利要求1-16中的任一个所述的方法的装置的设备。
CN201010121290.7A 2003-09-18 2004-09-10 验证计算机程序的方法、提供计算机程序的方法及其装置 Active CN101777103B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/666,847 2003-09-18
US10/666,847 US7103779B2 (en) 2003-09-18 2003-09-18 Method and apparatus for incremental code signing
CN2004800216119A CN1842757B (zh) 2003-09-18 2004-09-10 用于增量代码签署的方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2004800216119A Division CN1842757B (zh) 2003-09-18 2004-09-10 用于增量代码签署的方法和装置

Publications (2)

Publication Number Publication Date
CN101777103A CN101777103A (zh) 2010-07-14
CN101777103B true CN101777103B (zh) 2017-03-01

Family

ID=34313207

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2004800216119A Active CN1842757B (zh) 2003-09-18 2004-09-10 用于增量代码签署的方法和装置
CN201010121290.7A Active CN101777103B (zh) 2003-09-18 2004-09-10 验证计算机程序的方法、提供计算机程序的方法及其装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2004800216119A Active CN1842757B (zh) 2003-09-18 2004-09-10 用于增量代码签署的方法和装置

Country Status (8)

Country Link
US (3) US7103779B2 (zh)
EP (3) EP1695169B1 (zh)
JP (2) JP4373442B2 (zh)
CN (2) CN1842757B (zh)
AU (2) AU2004275264B2 (zh)
CA (3) CA2632076C (zh)
HK (1) HK1092234A1 (zh)
WO (1) WO2005029223A2 (zh)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US7548986B1 (en) * 2003-03-17 2009-06-16 Hewlett-Packard Development Company, L.P. Electronic device network providing streaming updates
US7103779B2 (en) 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
US7831838B2 (en) * 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
KR20080013940A (ko) * 2005-06-01 2008-02-13 마츠시타 덴끼 산교 가부시키가이샤 전자기기, 갱신 서버장치, 키 갱신장치
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US7669242B2 (en) * 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US8839450B2 (en) * 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
JP4792876B2 (ja) * 2005-08-30 2011-10-12 株式会社日立製作所 情報処理装置及び情報処理方法
JP4527640B2 (ja) * 2005-09-15 2010-08-18 株式会社ソニー・コンピュータエンタテインメント データ読出装置
JP4947978B2 (ja) * 2006-01-05 2012-06-06 株式会社アルファシステムズ 認証システム及び認証方法
US7574479B2 (en) * 2006-01-24 2009-08-11 Novell, Inc. Techniques for attesting to content
KR100746033B1 (ko) * 2006-02-17 2007-08-06 삼성전자주식회사 무결성 측정 장치 및 방법
US8364965B2 (en) * 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
JP4767057B2 (ja) * 2006-03-27 2011-09-07 富士通株式会社 ハッシュ値生成プログラム、ストレージ管理プログラム、判定プログラム及びデータ変更検証装置
CN100428261C (zh) * 2006-05-22 2008-10-22 北京易恒信科技认证有限公司 基于cpk的可信认证系统
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
JP5002205B2 (ja) * 2006-07-10 2012-08-15 任天堂株式会社 データ認証方法およびデータ認証システム
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
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
JP4288292B2 (ja) * 2006-10-31 2009-07-01 株式会社エヌ・ティ・ティ・ドコモ オペレーティングシステム監視設定情報生成装置及びオペレーティングシステム監視装置
EP2053533A4 (en) * 2006-11-09 2011-03-23 Panasonic Corp FAKE DETECTION SYSTEM, FAKE DETECTION METHOD, FAKE IDENTIFICATION PROGRAM, RECORDING MEDIUM, INTEGRATED CIRCUIT, DEVICE FOR GENERATING AUTHENTICATION INFORMATION AND FAKE DETECTION DEVICE
US8375458B2 (en) 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US8209540B2 (en) * 2007-06-28 2012-06-26 Apple Inc. Incremental secure backup and restore of user settings and data
GB0719250D0 (en) * 2007-10-02 2007-11-14 Iti Scotland Ltd Anti-hack method
IL187039A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure overlay manager protection
US8099718B2 (en) * 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
ATE527614T1 (de) * 2008-01-20 2011-10-15 Nds Ltd Sichere datenbenutzung
US9143329B2 (en) * 2008-01-30 2015-09-22 Adobe Systems Incorporated Content integrity and incremental security
KR101426270B1 (ko) * 2008-02-13 2014-08-05 삼성전자주식회사 소프트웨어의 전자 서명 생성 방법, 검증 방법, 그 장치,및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로읽을 수 있는 기록매체
KR101252921B1 (ko) * 2008-03-04 2013-04-09 애플 인크. 사업자에게 부여된 자격들에 기초하여 장치 내의 소프트웨어 코드의 실행을 인가하는 시스템 및 방법
US20090228868A1 (en) * 2008-03-04 2009-09-10 Max Drukman Batch configuration of multiple target devices
AU2009222007A1 (en) * 2008-03-04 2009-09-11 Apple Inc. System and method of authorizing execution of software code based on accessible entitlements
WO2009111405A1 (en) * 2008-03-04 2009-09-11 Apple Inc. System and method of authorizing execution of software code based on a trusted cache
WO2009111408A1 (en) * 2008-03-04 2009-09-11 Apple Inc. System and method of authorizing execution of software code based on at least one installed profile
US9081962B2 (en) 2008-04-30 2015-07-14 Graeme Harkness Anti-tamper techniques
JP2010146110A (ja) * 2008-12-16 2010-07-01 Ricoh Co Ltd 情報処理装置、プログラム実行方法及びプログラム
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
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
KR101685633B1 (ko) * 2009-01-05 2016-12-12 삼성전자주식회사 메모리 시스템
US9805196B2 (en) 2009-02-27 2017-10-31 Microsoft Technology Licensing, Llc Trusted entity based anti-cheating mechanism
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US9336410B2 (en) * 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US9202015B2 (en) 2009-12-31 2015-12-01 Intel Corporation Entering a secured computing environment using multiple authenticated code modules
US8453237B2 (en) * 2010-06-03 2013-05-28 International Business Machines Corporation Verification of a segmented program on a parallel processing computing system
JP5616528B2 (ja) * 2010-07-22 2014-10-29 ナグラビジョン エス アー ソフトウェアの完全性を保証するためのプロセッサにより実施される方法
DE102010033229A1 (de) * 2010-08-03 2012-02-09 Siemens Aktiengesellschaft Verfahren und System zur manipulationssicheren Übertragung von Steuerdaten
GB2485241A (en) 2010-11-05 2012-05-09 Bluecava Inc Incremental browser-based fingerprinting of a computing device
US9111099B2 (en) * 2011-05-31 2015-08-18 Red Hat, Inc. Centralized kernel module loading
JP4894970B2 (ja) * 2011-06-10 2012-03-14 株式会社日立製作所 情報処理装置
US20120328148A1 (en) * 2011-06-27 2012-12-27 Grey William Doherty Method and system for secure image management
CN102314578B (zh) * 2011-09-26 2015-10-28 浪潮(北京)电子信息产业有限公司 一种实现软件保护的系统及方法
CN104054084B (zh) 2011-10-17 2017-07-28 英特托拉斯技术公司 用于保护和管理基因组及其它信息的系统和方法
US20130138969A1 (en) * 2011-11-28 2013-05-30 Mocana Corporation Preventing glitching of a firmware image using one or more layers of randomness
JP5315422B2 (ja) * 2012-01-10 2013-10-16 任天堂株式会社 データ認証方法およびデータ認証システム
JP2015084006A (ja) * 2012-02-13 2015-04-30 三菱電機株式会社 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法
WO2013161371A1 (ja) * 2012-04-27 2013-10-31 日本電気株式会社 プログラム提供装置、システム、プログラム提供方法およびプログラム
US8972715B2 (en) * 2012-07-13 2015-03-03 Securerf Corporation Cryptographic hash function
CA2789936C (en) 2012-09-14 2020-02-18 Ibm Canada Limited - Ibm Canada Limitee Identification of sequential browsing operations
JP5574550B2 (ja) * 2012-11-22 2014-08-20 京セラドキュメントソリューションズ株式会社 情報秘匿化方法および情報秘匿化装置
US9424200B2 (en) 2013-03-15 2016-08-23 Freescale Semiconductor, Inc. Continuous run-time integrity checking for virtual memory
KR101434860B1 (ko) * 2013-08-16 2014-09-02 (주)잉카엔트웍스 해시를 이용한 동적코드의 무결성 검증 방법
JP6244759B2 (ja) * 2013-09-10 2017-12-13 株式会社ソシオネクスト セキュアブート方法、半導体装置、及び、セキュアブートプログラム
EP2913772A1 (de) * 2014-02-28 2015-09-02 Wibu-Systems AG Verfahren und Computersystem zum Schutz eines Computerprogramms gegen Beeinflussung
CN105632330B (zh) * 2014-10-27 2019-03-19 上海锐帆信息科技有限公司 一种可视化数字封条装置
CN104506503B (zh) * 2014-12-08 2019-11-05 北京北邮国安技术股份有限公司 一种基于广电单向传输网络的安全认证系统
EP3299986A4 (en) 2015-05-20 2018-05-16 Fujitsu Limited Program verification method, verification program, and information processing device
BR112018010120B1 (pt) * 2015-11-19 2023-12-05 Nagravision S.A Método e sistema para verificar a integridade de execução de uma aplicação em um dispositivo alvo
CN106953730B (zh) * 2016-01-07 2021-01-05 格尔软件股份有限公司 物理隔离网络环境下实现含时间戳的Windows代码签名的安全方法
US10637877B1 (en) * 2016-03-08 2020-04-28 Wells Fargo Bank, N.A. Network computer security system
CN106372505B (zh) * 2016-08-23 2018-12-28 北京航空航天大学 一种针对嵌入式系统代码攻击的快速恢复方法
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
CN108257197A (zh) * 2016-12-28 2018-07-06 航天信息股份有限公司 一种用于在电子文档分页处设置骑缝章的方法及系统
WO2019151013A1 (ja) * 2018-02-02 2019-08-08 日本電気株式会社 情報処理装置、情報処理方法及び記録媒体
EP3667505B1 (en) * 2018-12-14 2021-11-10 Nxp B.V. Memory system with an incremental hashing operation and method
JP7270511B2 (ja) * 2019-09-10 2023-05-10 ボッシュ株式会社 制御装置及び方法
US20210382706A1 (en) * 2020-06-03 2021-12-09 Vmware, Inc. Automated configuration of attestation nodes using a software depot
US20220300452A1 (en) * 2021-03-18 2022-09-22 Sony Group Corporation Fixity data processing
CN113239330A (zh) * 2021-06-10 2021-08-10 杭州安恒信息技术股份有限公司 一种基于散列算法的反调试方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0752786A1 (en) * 1995-07-07 1997-01-08 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitted applications in an interactive information system
CN1224903C (zh) * 1999-05-27 2005-10-26 太阳微系统公司 逐模块验证

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868877A (en) 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5454000A (en) * 1992-07-13 1995-09-26 International Business Machines Corporation Method and system for authenticating files
FR2731163B1 (fr) 1995-03-03 1997-06-20 Air Liquide Procede et installation de separation d'un melange gazeux par permeation
US6202203B1 (en) * 1995-12-06 2001-03-13 International Business Machines Corporation Method of, system for, and computer program product for providing global value numbering
US5673316A (en) 1996-03-29 1997-09-30 International Business Machines Corporation Creation and distribution of cryptographic envelope
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
JP4187285B2 (ja) 1997-04-10 2008-11-26 富士通株式会社 認証子付与方法および認証子付与装置
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US6560706B1 (en) * 1998-01-26 2003-05-06 Intel Corporation Interface for ensuring system boot image integrity and authenticity
US6263348B1 (en) * 1998-07-01 2001-07-17 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
AU2998100A (en) * 1999-02-18 2000-09-04 Sun Microsystems, Inc. Data authentication system employing encrypted integrity blocks
EP1081871A4 (en) 1999-02-24 2004-06-23 Mitsubishi Electric Corp RADIOCOMMUNICATION TERMINAL
JP4049498B2 (ja) 1999-11-18 2008-02-20 株式会社リコー 原本性保証電子保存方法、装置及びコンピュータ読み取り可能な記録媒体
US6785815B1 (en) * 1999-06-08 2004-08-31 Intertrust Technologies Corp. Methods and systems for encoding and protecting data using digital signature and watermarking techniques
JP2001034470A (ja) * 1999-07-22 2001-02-09 Fujitsu Ltd 管理自動化機構を有するサーバ
WO2001010076A2 (en) * 1999-07-29 2001-02-08 Intertrust Technologies Corp. Systems and methods for protecting secure and insecure computing environments using cryptography
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6658556B1 (en) * 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6324637B1 (en) 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US20010034839A1 (en) * 1999-12-24 2001-10-25 Guenter Karjoth Method and apparatus for secure transmission of data and applications
GB0003920D0 (en) * 2000-02-21 2000-04-05 Ncipher Corp Limited Computer system
US6986046B1 (en) * 2000-05-12 2006-01-10 Groove Networks, Incorporated Method and apparatus for managing secure collaborative transactions
US6954747B1 (en) * 2000-11-14 2005-10-11 Microsoft Corporation Methods for comparing versions of a program
CA2414281C (en) 2000-11-17 2009-06-02 Bitfone Corporation System and method for updating and distributing information
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
JP2002353960A (ja) 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7729495B2 (en) * 2001-08-27 2010-06-01 Dphi Acquisitions, Inc. System and method for detecting unauthorized copying of encrypted data
US7310821B2 (en) * 2001-08-27 2007-12-18 Dphi Acquisitions, Inc. Host certification method and system
US20040030909A1 (en) * 2001-09-14 2004-02-12 Yoichiro Sako Recording medium reproduction method and reproduction apparatus, and recording medium recording method and recording apparatus
US20030084298A1 (en) * 2001-10-25 2003-05-01 Messerges Thomas S. Method for efficient hashing of digital content
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7240205B2 (en) * 2002-01-07 2007-07-03 Xerox Corporation Systems and methods for verifying documents
JP2003202929A (ja) 2002-01-08 2003-07-18 Ntt Docomo Inc 配信方法および配信システム
US7529929B2 (en) * 2002-05-30 2009-05-05 Nokia Corporation System and method for dynamically enforcing digital rights management rules
DE10239062A1 (de) * 2002-08-26 2004-04-01 Siemens Ag Verfahren zum Übertragen von verschlüsselten Nutzdatenobjekten
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
FR2845493A1 (fr) * 2002-10-04 2004-04-09 Canal Plus Technologies Logiciel embarque et procede d'authentification de celui-ci
US7165076B2 (en) * 2002-11-15 2007-01-16 Check Point Software Technologies, Inc. Security system with methodology for computing unique security signature for executable file employed across different machines
US7491122B2 (en) 2003-07-09 2009-02-17 Wms Gaming Inc. Gaming machine having targeted run-time software authentication
GB2404488B (en) 2003-07-31 2006-05-31 Sony Uk Ltd Access control for digital content
GB2404489A (en) 2003-07-31 2005-02-02 Sony Uk Ltd Access control for digital storage medium content
US7103779B2 (en) 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US20050071274A1 (en) * 2003-09-27 2005-03-31 Utstarcom, Inc. Method and Apparatus in a Digital Rights Client and a Digital Rights Source and associated Digital Rights Key
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US20060259781A1 (en) 2005-04-29 2006-11-16 Sony Corporation/Sony Electronics Inc. Method and apparatus for detecting the falsification of metadata
US8364965B2 (en) 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0752786A1 (en) * 1995-07-07 1997-01-08 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitted applications in an interactive information system
EP0752786B1 (en) * 1995-07-07 2000-02-16 OpenTV, Inc. Apparatus and method for authenticating transmitted applications in an interactive information system
CN1150762C (zh) * 1995-07-07 2004-05-19 开放电视公司 交互信息系统中鉴别发送应用的装置和方法
CN1224903C (zh) * 1999-05-27 2005-10-26 太阳微系统公司 逐模块验证

Also Published As

Publication number Publication date
JP2007506187A (ja) 2007-03-15
US8880897B2 (en) 2014-11-04
CA2632076C (en) 2015-09-08
EP1695169A4 (en) 2011-03-02
US20130111216A1 (en) 2013-05-02
AU2009233685A1 (en) 2009-11-26
JP4664398B2 (ja) 2011-04-06
EP1695169B1 (en) 2014-11-19
JP2008293033A (ja) 2008-12-04
EP2634960A3 (en) 2013-10-16
JP4373442B2 (ja) 2009-11-25
EP2634960B1 (en) 2016-01-13
CA2531363A1 (en) 2005-03-31
US8341422B2 (en) 2012-12-25
US7103779B2 (en) 2006-09-05
EP2634959A2 (en) 2013-09-04
CN101777103A (zh) 2010-07-14
AU2009233685B2 (en) 2011-08-25
EP2634960A2 (en) 2013-09-04
CA2894105A1 (en) 2005-03-31
CN1842757A (zh) 2006-10-04
EP2634959B1 (en) 2015-07-15
CA2894105C (en) 2019-02-26
EP1695169A2 (en) 2006-08-30
AU2004275264B2 (en) 2009-11-19
US20050066169A1 (en) 2005-03-24
CA2531363C (en) 2009-03-10
WO2005029223A2 (en) 2005-03-31
WO2005029223A3 (en) 2006-02-23
CN1842757B (zh) 2013-09-18
HK1092234A1 (en) 2007-02-02
CA2632076A1 (en) 2005-03-31
EP2634959A3 (en) 2013-10-09
US20060288223A1 (en) 2006-12-21
AU2004275264A1 (en) 2005-03-31

Similar Documents

Publication Publication Date Title
CN101777103B (zh) 验证计算机程序的方法、提供计算机程序的方法及其装置
CN100456200C (zh) 多令牌密封和解封
US6148401A (en) System and method for providing assurance to a host that a piece of software possesses a particular property
US6647494B1 (en) System and method for checking authorization of remote configuration operations
CN1689269B (zh) 保证软件完整性的系统和方法
JP2003501716A (ja) コンピューティングプラットフォームにおけるデータイベントの記録
CN108629206A (zh) 一种安全加密方法、加密机及终端设备
US7562214B2 (en) Data processing systems
Mainka et al. Shadow Attacks: Hiding and Replacing Content in Signed PDFs.
CN110837634A (zh) 基于硬件加密机的电子签章方法
Cao et al. Design and implementation for MD5-based data integrity checking system
JP4512697B2 (ja) デジタルフォレンジック保全装置
Andi et al. Securing Medical Records of COVID-19 Patients Using Elliptic Curve Digital Signature Algorithm (ECDSA) in Blockchain
zu Selhausen Security of pdf signatures
CN112825093A (zh) 安全基线检查方法、主机、服务器、电子设备及存储介质
CN117150575B (zh) 可信工控系统操作日志防篡改方法、系统、设备及介质
Heinl et al. AntiPatterns regarding the application of cryptographic primitives by the example of ransomware
Platforms P3156™/D2
Tolk et al. Verification of operating software for cooperative monitoring applications
AU720583B2 (en) A method for protecting data
CN117574403A (zh) 一种基于可信计算的光伏嵌入式系统访问控制方法及系统
House nShield™ Family of Hardware Security Modules Firmware Version 2.33. 60
CN117828557A (zh) 一种基于一次性程序的外包计算结果保护方法
Birmé Document Management System Security
Batten Trusted execution: applications and verification

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant