CN1449527A - 共享名 - Google Patents

共享名 Download PDF

Info

Publication number
CN1449527A
CN1449527A CN01814704A CN01814704A CN1449527A CN 1449527 A CN1449527 A CN 1449527A CN 01814704 A CN01814704 A CN 01814704A CN 01814704 A CN01814704 A CN 01814704A CN 1449527 A CN1449527 A CN 1449527A
Authority
CN
China
Prior art keywords
assembly
public
key
key cryptography
hashed value
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
CN01814704A
Other languages
English (en)
Other versions
CN1201248C (zh
Inventor
S·帕塔撤拉蒂
S·J·普拉斯齐纳
C·T·辛克莱
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1449527A publication Critical patent/CN1449527A/zh
Application granted granted Critical
Publication of CN1201248C publication Critical patent/CN1201248C/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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

提供了一种系统和方法,用于向在运行时间由应用程序(136,232)使用的组件(26)或组装件(10,20,30,70,80,90)提供安全性。本发明使用数字签名密钥来确保被发行的组装件名是唯一的,因为组装件(10,20,30,70,80,90)是用出版商的公开密钥发行的。这就防止了其它人发行组装件(10,20,30,70,80,90)的更新版本并宣称是由同一出版商发行的。本发明保证名字的唯一性并防止了名字的窜改,因为只有原始出版商具有与发行的组装件有关的公开密钥匹配的私人密钥。由于这一事实即公开密钥被存储在每个引用中,调用程序可以确认调用程序在运行时间要绑定的组装件(10,20,30,40,70,80,90)是来自拥有私人密钥的同一出版商。

Description

  共享名
技术领域
本发明涉及计算机系统,特别是涉及在运行时间向由应用程序使用的组件提供安全性的系统和方法。
背景技术
在过去,应用程序是由单个单一的二进制文件组成。编译器一旦生成该应用程序,该应用程序不再改变,直到下一版本被重新编译并销售。操作系统、硬件和市场需求的变化均取决于下一版本的实现和重新编译。如今,应用程序由若干组件构成——另外,许多这些组件是在运行时间被链接的。这些组件包括可由不同应用程序共享的动态链接库(DLL)和其它文件。这些DLL在运行时间链接的应用组件列表中列出。操作系统将在加载程序搜索路径、应用程序目录、操作系统目录或用户指定的路径中搜索动态链接库名,以使DLL代码可被加载入内存用于执行。由于这些DLL可由不同的应用程序共享,为了一个应用程序而对DLL的改变可以造成另一个应用程序停止工作。
更何况,在诸如MicrosoftWindows操作系统之类的操作系统上运行的许多应用程序使用共享操作系统组件。管理人员和开发人员关于当前MicrosoftWindows操作系统平台所面临的一个议题是精确控制作为使用的应用程序一部分的一组动态链接库和其它文件的不可能性。一个应用程序的安装改写了其它应用程序所依赖的文件而影响了这些应用程序是极平常的。不幸的是在MicrosoftWindows操作系统中没有内建的支持来检测何时应用程序所依赖的一个文件已改变。
在某些情况下,组件可以更改,如果该更改的完整性可依赖的话则应用程序仍可选择运行。例如,如果组件的出版商纠正了组件中的一个次要的差错,应用程序仍可工作而无问题。还有,如果由委托的出版商发生了版本的升级,应用程序会期望接受版本升级并执行该组件。然而,如果组件已被未委托的第三方更改过,执行代码可以造成对应用程序正在操作的环境的软件和硬件的损坏。某些代码在组件名中包含了版本信息(例,fool.dll,kernel2.dll)。由于应用程序用名字引用这些程序,名字的改变将使应用程序终止其操作或使用驻留在系统中的组件的旧版本。
组件标识的一部分是简单、友好的文本名(例,My401KApp)。这些名字是开发商在编制组件时给予组件的。这些名字称为简单名。简单名不能保证唯一且在运行时间中没有任何工具或任何东西可阻止复制名字以避免冲突。组件的简单名简单易用且在许多情况下是足够了。特别是,个体开发商或小开发商店不必需要较复杂的名命方案。然而,许多情况下开发商必须能够保证他们为他们的组件选用的名字在全局上是唯一的。在COM中,通过给每个组件指定唯一的GUID而确保唯一性。但是,GUID有不少缺陷。特别是虽然GUID生成时是唯一的,但是没有东西能防止其它开发商重新使用该GUID并用他们的代码“替代”其他人的代码。
因此,本领域中迫切需要有一种系统和方法可用于确保和验证应用程序在运行时间期间所使用组件的完整性。还需要一种工具用于在运行时间验证组件的完整性。也需要保证这些组件名的唯一性并防止名字欺诈。
本发明的揭示
本发明涉及对由应用程序在运行时间期间使用的组件或组装件(例,包括元数据的组件)提供安全性及有利于完整性的系统和方法。本发明使用密码学技术来方便组件间的关系。本发明使用数字签名密钥来确保发行的组装件名是唯一的,因为发行的组装件带有出版商的公开密钥。这就防止了其它出版商发行组装件的升级版并声称该升级版是由同一出版商发行的。本发明保证了名字的唯一性并防止了名字的欺诈,因为原始出版商是具有与发行的组装件有关的公开密钥匹配的私人密钥的唯一出版商。由于公开密钥存储在每个引用中这一事实,调用程序可以确保在运行时间该调用程序在绑定的组装是来自拥有私人密钥的同一出版商。
在许多情况下,应用程序可以选择用已被改变的组装件文件进行操作。例如,构建修正的改正可包括用于纠正文件中出错或缺陷的组装件修改文件。如果发生了对次要缺陷的修复,则要求组装件具有与原始性态一样的应用程序可能不工作了。而且,如果发生了主要或次要修正,则应用程序可选择工作,倘若这些应用程序确实正从它们所期望的出版商处获得了组装件。
在本发明的一个方面,公开密钥成为组装件文件的表征或名字空间的一部分。对组装件的整个内容计算一散列值。然后用与公开密钥匹配的私人密钥加密该散列值。将该加密或编码后的代码存储在组装件文件的末尾。另一种方式是可将指向该经加密或编码的代码的指针在加密前存储在组装件中的任何地方。然后将该加密或编码代码存储在该指针所引用的内存位置。另外,引用该组装件文件的组装件将该组装件文件的公开密钥标记存储在它自己的表征或名字空间中。该标记是公开密钥散列值的一个缩减数据集。在运行时间,将该标记与目标组装件中的密钥比较以确定目标组装件是否来自同一出版商。使用已署名组装件的表征中存储的密钥在安装时完成签名的验证。这保证了目标组装件来自所期望的出版商。
每个组装件的表征都带有标识信息,包含了构成组装件的文件列表。关于每个文件的记录信息的一部分是表征建立时文件内容的散列值。散列值是对整个文件内容计算的。发出该表征的程序代码通常可以是一个负责计算散列值的编译器或后链接工具。本发明可以使用安全散列算法(sha-1)计算散列值。然而,本发明可使用各种散列算法计算散列值。当组装件被安装到总体组件高速缓存中时以及每次从盘片加载文件时就会验证文件的散列值。
按照本发明的一个方面,提供了一种简化可由应用程序在运行时间使用的组装件的安全名空间的方法。该方法包括提供一对具有公开密钥和私人密钥的密钥对以及提供具有包含公开密钥的表征的组装件。接着对组装件求散列值并用私人密钥加密散列值。然后将加密的散列值附加到组装件上。
在本发明的另一个方面,提供了一种计算机可读媒体,具有在运行时间应用程序可使用的至少一个计算机可执行组件。计算机可读媒体包括了包括表征的组装件,该表征含有公开密钥和用与公开密钥匹配的私人密钥加密的组装件内容散列值。加密的散列值被附加到组装件上。媒体还可进一步由一网络组成。
按照本发明的另一个方面,提供了一种系统,用于简化在运行时间可由应用程序使用的组装件的安全名空间。该系统由第一组件和第二组件构成,第一组件适合于在组装件内提供—带有公开密钥的表征,而第二组件适合于对组装件的内容计算散列值并用与公开密钥匹配的私人密钥加密散列值。
本发明的另一个方面涉及一种系统,用于简化在运行时间期间可由应用程序使用的组装件的安全名空间。该系统包括用于提供一对具有公开密钥和私人密钥的密钥对的装置、用于在组装件的表征中插入公开密钥的装置、用于计算组装件散列值的装置、用于用私人密钥加密组装件散列值的装置以及用于将加密的散列值与组装件关联的装置。
为了达到上述目的和相关目的,本发明然后包括了下文中充分描述的且特别是在权利要求中指出的特点。下面的描述和附图详细提出了本发明的某些说明性实施例。然而这些实施例仅只表明了可以使用本发明原理的一些不同方式,而本发明的意向是要包括所有这些实施例及其等效实例。从结合附图考虑本发明的详细描述中本发明的其它目的,优点和新颖特点将变得更明显。
附图简述
图1示出了根据本发明的一个方面引用具有多重模块的组装件的一个组装件的框图。
图2示出了根据本发明的一个方面具有多重模块的一个组装件的详细框图。
图3示出了根据本发明的一个方面引用多重组装件的一个组装件的详细框图。
图4示出了根据本发明的环境的计算机系统的框图。
图5示出了根据本发明的环境的详细框图。
图6示出了根据本发明的一个方面有利于组装件完整性的一种特定方法的流程图。
图7示出了根据本发明的一个方面有利于组装件完整性的另一种方法的流程图。
图8a示出了根据本发明的一个方面用于生成共享名使用的密钥对的API。
图8b示出了根据本发明的一个方面用于把密钥二进制大型对象(blob)安装入共享名CSP内的API。
图8c示出了根据本发明的一个方面用于从CSP中删除密钥对的API。
图8d示出了根据本发明的一个方面用于释放由共享名函数分配的内存的API。
图9a示出了根据本发明的一个方面用于检索公共密钥二进制大型对象的API。
图9b示出了根据本发明的一个方面用于从图9a所示的API返回的公共密钥二进制大型对象。
图9c示出了根据本发明的一个方面用于生成数字签名的API。
图10a示出了根据本发明的一个方面用于从组装件中提取的公开密钥生成标记的API。
图10b示出了根据本发明的一个方面用于从公开密钥结构生成标记的API。
图10c示出了根据本发明的一个方面用于验证共享名签名的API。
实现本发明的模式
现在参考附图描述本发明,其中相同标号在全文中用于指示相同的元件。本发明的描述涉及在运行时间期间有利于由应用程序使用的组件完整性的系统和方法。这些组件典型的是动态链接库(DLL),但也可包括在运行时间链接到应用程序的定义文件、宣称文件和可执行文件。按照主题发明的至少一个方面的组装件这里定义为包括了描述该组装件的元数据的组件或包括了描述一个组装件所依赖的该组装件的元数据的组件。本发明使用密码术技术,例如散列和数字签名来创建随应用程序使用的安全组装件。本发明使用数字加密和签名技术。本发明使用公开密钥密码术技术,如Schneier,Bruce著,“Applied Cryptography Second Edition:Protocols,Algorithms,and SourceCode in C;New York:John Wiley & Sons,1996,通过引用结合于此。本发明使用RSA(Rivest,Shamir and Adlemen)公开密钥算法用于数字签名,并结合了称之为SHA(安全散列算法)的散列算法,然而也可使用其它公开密钥签名方案。公开密钥密码术的基本概述是这样的,给予每个开发商一对包括私人密钥和公开密钥的密钥对。密钥可以是一种接收文件的各比特并从文件中的各比特产生数值序列的算法。私人密钥是分配给开发商的唯一密钥并希望由开发商加以保密。公开密钥通常可供开发商和用户使用。公开密钥可用于验证接收数据文件上的数字签名是真实的(例如,数字签名是用私人密钥建立的)。文件可用私人密钥加密而公开密钥用于对密文解码。本发明提供关于组装件的顶层组装件文件的RSA加密的SHA散列值以及存储在顶层组装件的元数据中的用于验证组装件完整性的公开密钥。
本发明还使用标准公开密钥加密术解决在运行时间名字的唯一性和名字安全性问题。用密钥对加密的名字称之为共享名。特别是,籍助于唯一的密钥对并防止他人“接管名字空间”,共享名保证了名字的唯一性,因为只有组装件的开发商具有该组装件的私人密钥,使得无人对其它组装件生成相同的名字。
图1示出了组装件和按照本发明使用带有数字签名加密法的关系。第一组装件10包括一顶层组装件12和一模块14。元数据部分16提供在顶层组装件12内,包括了与第一组装件10有关的信息。元数据部分16包括标识信息组件17和文件验证摘要组件18。标识信息17包括有关第一组装件10的信息,同时文件验证摘要组件18包括有关模块14的信息。标识信息组件17可包括发行信息、公开密钥、版本信息、操作系统信息以及关于第一组件10的许多其它类型信息。公开密钥形成了可以在运行时间验证的组装件名字的一部分。文件验证摘要组件18可包括模块14的散列值。标识信息组件17和文件验证摘要组件18中的信息可用于在运行时间前或运行时间时验证该组装件未被修改。组装件摘要19提供在顶层组装件12的末尾。顶层组装件摘要19可包含该顶层组装件12内容的散列值。随后用与位于标识信息组件17中的公开密钥匹配的私人密钥对顶层组装件加密。加密的散列值可用于验证顶层组装件12的内容尚未被修改,同时文件验证摘要组件18中的散列值可用于验证模块14尚未被修改。
可以理解大部分应用程度是由若干组装件构成。其中一些在运行时引用其它组装件。因而,图1还示出了提供的第二组装件20要依赖于或引用第一组装件10。元数据部分22提供在第二组装件20中,它包含了关于第二组件20的信息,以及还有在运行时间第二组装件要引用的有关第一组装件10的信息。元数据部分22包括标识信息组件24和公开密钥标记摘要组件26。标识信息组件24包括有关第二组装件20的信息,同时引用验证摘要组件26包括有关第一组装件10的信息。标识信息组件24可包括发行信息、公开密钥、版本信息、操作系统信息以及有关第二组装件20的许多其它类型信息。
公开密钥标记摘要组件26包括第一组装件10的公开密钥的缩减散列值。典型地,使用安全散列算法(sha-1)的散列值是160比特的字。本发明使用该散列值的前64比特或8字节来验证第一组装件10的公开密钥与存储在第二组装件20中的公开密钥相匹配。公开密钥标记摘要组件26中的信息在运行时间前或在运行时间时用于验证第二组装件20是来自所期望的(例该私人密钥拥有者)的出版商。因而,如果信息组件17中的公开密钥的前64比特与公开密钥标记摘要26中的公开密钥标记匹配,就有某种程度的确定性认为第一组装件10的确来自匹配该公开密钥的私人密钥的拥有者。
图2更详细示出了按照本发明的一个组装件的组件。组装件30由顶层组装件40、第一模块45和第二模块50组成。顶层组装件40包括被称为组装件表征的元数据部分42。组装件表征42包括标识信息,诸如下列项:公开密钥、主版本、次版本、修订版、构成和模块信息。其它信息也可放在标识信息中(例如,操作系统,地点)。模块信息是构成该组装件30的模块以及每个模块文件内容散列值的列表。在运行时间前或运行时间时,可使用相同的散列算法把文件散列值和模块散列值与第一模块45和第二模块50的实际散列值相校验,以确定组装件30的完整性。顶层组装件40包括位于文件末尾的顶层组装件散列值43。顶层组装件散列值用与标识信息中公开密钥相匹配的开发商私人密钥加密。标识信息中的公开密钥可用于将顶层组装件散列值43解码成可与文件其余内容的实际散列值相比较的散列值。然后可以确定顶层组装件40是否出现由未授权来源所作的任何改变。如果组装件30已改变,调用组装件30的应用程序可选择自动中止。
图3更详细示出了按照本发明的引用另一组装件的一个组装件的构成。引用组装件70(标为组装件B)引用第一被引用组装件80(标为组装件C)及第二被引用组装件90(标为组装件D)。引用组装件70包括组装件表征72,具有的标识信息类似于图2所述的顶层组装件标识信息。组装件表征72还包括了从属信息,该信息包括了引用组装件70在执行期间所依赖的各组装件的列表。该组件列表还包括了用于每一组装件的公开密钥标记,它是在被引用组装件表征中公开密钥的缩减散列值。第一被引用组装件80具有组装件表征82,包括标识和从属信息以及组装件摘要83。从属信息的存在通知应用程序第一被引用组装件80还依赖于至少一个其它组装件(未示出)。第一被引用组装件80不具有任何模块并且因而标识信息不包括用于任何模块的散列值。
第二被引用组装件90具有组装件表征94,它包括了标识信息,但不具有任何从属信息。因而,第二被引用组装件90不依赖于任何其它组装件而执行。第二被引用组装件90由顶层组装件92、第一模块90及第二模块98组成。标识信息包括组装件90的模块以及每一模块整个内容的散列值的列表。组装件摘要95提供在顶层组装件92的末尾。组装件摘要包括顶层组装件92的其余文件内容的散列值。该散列值用组装件作者的私人密钥加密。组装件表征94中的私人密钥和公开密钥形成了一对具有唯一数学关系的密钥对。组装件70、80和90的整个内容可在运行时间被加载到计算机系统的一个高速缓存中,而引用组装件中的公开密钥标记可用于验证被引用组装件中的公开密钥。组装件摘要中的加密标记可使用组装件表征中的公开密钥来解码并随后与顶层组装件中运作的散列值比较以验证该组装件尚未被窜改过。
图4和以下的讨论旨在提供对可实现本发明的适当的计算机环境的简要的一般描述。虽然将在可在个人计算机或服务器计算机上运行的计算机程序的计算机可执行指令的一般内容中描述本发明,但本领域的技术人员将认识到本发明也可与其它程序模块组合而实现。通常,程序模块包括例程、程序、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。而且,本领域的技术人员还将认识到本发明也可用其它的计算机系统配置来实现,包括单处理器或多处理器计算机系统、微型计算机、大型计算机、手持计算装置、基于微处理器或可编程消费电子设备及类似产品。本发明所展示的实施例还可在分布式计算环境中实现,其中任务是由通过通信网络链接的远程处理设备来实现的。可是,本发明的某些实施例可由独立的计算来实现。在分布式计算环境中,程序模块可位于本地和远程存储器两者的存储装置中。
参考图4,用于实现本发明的一个示例系统包括一台常规的个人计算机或服务器计算机120,它包括处理单元121、系统存储器122和系统总线123,系统总线123把包括系统存储器在内的各种系统组件耦合到处理单元121。处理单元可以是任何各种商用处理器,包括来自Intel和其它公司(包括Cyrix、AMD和Nexgen)的Intel X86、奔腾和兼容微处理器;来自Digital的Alpha;来自MIPS Technology、NEC、IDT、Siemens及其它公司的MIPS;以及来自IBM和Motorola的PowerPC。双微处理器和其它多处理器结构也可用作处理单元121。
系统总线可以是若干种总线结构中的任何一种,包括存储器总线或存储器控制器、外设总线以及使用各种常规总线结构,诸如PCI、VESA、Microchannel、ISA和EISA(只列出几个)中任何一种的局部总线。系统存储器包括只读存储器(ROM)124以及随机存取存储器(RAM)125。ROM 124中存储了基本输入/输出系统(BIOS),它包含了例如在启动期间帮助在计算机120内各元件间转移信息的基本例行程序。
计算机120进一步还包括了硬盘驱动器127、例如对可移动盘129读写的磁盘驱动器128、以及例如用于从CD-ROM盘131读取或对其它光媒体读写的光盘驱动器130。硬盘驱动器127、磁盘驱动器128以及光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光盘驱动器接口134与系统总线123相连。驱动器和它们相关的计算机可读媒体为服务器计算机120提供了对数据、数据结构、计算机可执行指令等的非易失性存储。虽然上述计算机可读媒体指的是硬盘、可移动磁盘及CD,本领域的技术人员应当理解计算机可读的其它种类媒体,诸如磁带盒、快闪存储卡、数字视频盘、Bernoulli盒式存储器及类似存储器也可用于示例的操作环境中。
一些程序模块也可存储在驱动器和RAM 125中,包括操作系统135、一个或多个应用程序136、其它程序模块137及程序数据138。所示计算机中的操作系统可以是Microsoft Windows NT服务器操作系统,加上前面提到的Microsoft事务服务器、Microsoft Windows 95,Microsoft Windows 98或Microsoft Windows 2000。
用户可以通过键盘140或指点设备如鼠标142将命令和信息输入计算机120。其它输入设备(未示出)还可包括话筒、操纵杆、游戏板、卫星转盘、扫描器及类似装置。这些或其它输入设备常通过耦合到系统总线的串行端口接口146连接到处理单元121,但也可以通过其它接口,例如平行端口、游戏端口或通用串行总线(USB)来连接。监视器147或其它类型显示设备也通过接口,例如视频适配器148连接到系统总线123。除了监视器外,计算机通常还包括其它外输出装置(未示出),例如扬声器和打印机。
计算机120也可工作在联网环境中,使用逻辑连接与一个或多个远程计算机,例如远程服务器或客户机计算机149相连。远程计算机149可以是工作站、服务器计算机、路由器、对等装置或其它公共网络节点,并且典型地包括了许多或所有的上述与计算机120相关的元件,虽然图4中仅展示了存储器存储装置150。图4所示的逻辑连接包括局域网(LAN)151及广域网(WAN)152。这样的组网环境在办公室、企业内计算机网络、内联网及因特网中是常见的。
当用于LAN网络环境中时,计算机120通过网络接口或适配器153连接到局域网151。当用于WAN网络环境中时,服务器计算机120典型地包括了调制解调器154、或连接到LAN上的通信服务器,或具有用于在广域网152,例因特网上建立通信的其它装置。调制解调器154可以是内置式或外置式的,通过串行端口接口146连接到系统总线123。在联网环境中,所述的与计算机320或它的几个部分有关的程序模块可以存储在远程存储器存储装置中。将会理解所示的网络连接是示例性的,且还可以使用在计算机之间建立通信链路的其它装置。
根据本领域熟练的计算机编程人员的实践,本发明下面的描述将参照由计算机120执行的动作和操作的符号表示而进行,除非另外指出。这类动作和操作有时被称为是被计算机执行的。将理解这些动作和符号表示的操作包括由处理单元121对代表数据比特的电信号的操作,产生电信号表示的最终变换或压缩,以及对计算机存储系统(包括系统存储器122、硬驱动器127、软盘129及CD-ROM 131)中存储器位置处的数据比特的维护并由此重新配置或以不同的方式改变计算机系统的操作,以及其它的信号处理。数据比特被维护的存储器位置是具有与数据比特对应的特定电、磁或光特性的物理位置。
图5更详细说明了关于本发明的环境。处理器200通过总线225耦合到存储媒体220。处理器还通过网线215耦合到网路210。网络210能使处理器用其它远程计算机检索和发送组装件及其它组件。存储器媒体220包括独立于存储器其余部分的高速缓冲存储器230。高速缓冲存储器230是应用程序232执行的地方。应理解到其余的存储器可以是二级高速缓存、ROM、RAM或一些固定或软盘媒体。散列组件260驻留在存储器媒体220上用于在组装件开发阶段插入组装件的散列值。然而散列组件260可以在应用程序和组装件初始使用和测试期间或由管理员在随后时间插入散列值。
数字签名组件265提供用于建立组装件的密钥对。数字签名组件265还将公开密钥插入被开发的组装件的表征中。数字签名组件265使用散列组件260求出组装件内容的散列值并随后用私人密钥对该散列值加密,私人密钥与存储在组装件表征中的公开密钥一起组成密钥对。散列组件260和数字签名组件265可以是作为操作系统275一部分驻留的应用程序接口(API)。然而,散列组件260和数字签名组件265可以是应用程序232的一部分。更进一步,散列组件260和数字签名组件265可以由一些不同的组件组成,例如独立的用于散列、版本、密钥对创建和插入功能的组件。
应用程序232被部署并加载到高速缓存230中。应用程序232与加载器250通信,加载器250定位由应用程序232指定的并由应用程序232在运行时间使用的组装件,同时将这些组装件加载到高速缓存230中。在本例中,第一组装件234(标为组装件A)及第二组装件236(标为组装件B)被加载到高速缓存230中。第二组装件236包括第一模块238和第二模块240,它们也被加载到高速缓存230中。第一组装件234和第二组装件236可以作为操作系统275的一部分的共享组装件驻留、可以作为库文件驻留在远程计算机上、可以作为应用程序232的一部分驻留在目录中或驻留在其它应用程序内。
绑定组件280也驻留在存储器媒体220中。绑定组件280提供绑定的策略并用于对处理共享组装件的应用程序进行管理。绑定组件280可决定是否绑定到组装件的原始版、升级版或标准版。例如,第一组装件234和第二组装件236可具有相同的组装件名,其中第二组装件236是第一组装件234的升级版。而且两种组装件都可由加载器250加载到高速缓存230中。绑定组件280随后可确定根据绑定组件280中定义的绑定策略是将应用程序232绑定到第一组装件234还是绑定到第二组装件236。绑定组件280可以允许具有相同名字的组装件并列驻留在系统中并且给予应用程序232、开发商或管理员控制作出关于要遵循何种合适绑定策略的决策能力。
验证组件270驻留在存储器媒体220中。调用验证组件以读取组装件中的表征、将密钥值与密钥标记比较、使用公开密钥解码加密的散列值以及调用可用于组装件散列值的散列算法。验证组件270然后将组装件上已解码的加密散列值与组装件上运行的实际散列值比较。验证组件270随后通知应用程序232组装件的作者是否是私人密钥拥有者或者组装件是否发生了任何变化。验证组件270接着决定是否要根据由绑定组件280设定的绑定策略校验版本和出版商信息。在本发明的另一种方面,验证组件保留了一张应用程序在初始部署和测试期间使用的组装件的数字签名和散列值的表。验证组件随后可运行组装件上的散列值并将该散列值与表中找到的散列值比较。验证组件270可以是作为操作系统一部分驻留的应用程序接口(API)或者可以是应用程序232的一部分。
应理解上述组件的例子描述为是独立的仅出于说明的目的。应懂得各种组件可以集成在其它组件中而仍保持上述的功能性。而且以上描述只是组件如何互动以实现本发明的一个例子,其它的例子也可以用于实现本发明。
图6示出了用于确保和验证具有模块的组装件的完整性的方法。在步骤300,提供的组装件至少具有一个模块。在步骤310,为组装件的顶层组装件提供了包括公开密钥的标识信息并且该公开密钥还被存储在存储媒体中。在步骤320中,提供顶层组装件的整个文件内容的散列值,然后用与公共密钥一起构成密钥对的私人密钥对该散列值加密并且将加密后的值附加到组装件的末尾。应用程序232和由应用程序使用的组装件现在可以加载到高速缓存230中用于执行。在步骤330,从顶层组装件的标识信息中读取公开密钥并用于解码加密的散列值,这样解码所得的散列值就可与顶层组装件中的实际散列值比较。在步骤340,确定组装件的内容是否已改变。如果该组装件已改变(YES),应用程序在步骤345处中止。如果组装件未改变(NO),在步骤350将表征中的公开密钥与存储媒体中存储的公开密钥比较。公开密钥的比较也可以在解决一个组装件对另一个组装件的引用时进行。在步骤360,验证组件275确定公开密钥是否匹配。如果出版商不是同一出版商或原始出版商(N0),应用程序在步骤365处中止。如果出版商是同一出版或或原始出版商(YES),在步骤370求出模块的散列值并用存储在标识信息中的散列值对该值校验,执行该组装件。
图7示出了用于确保和验证由其它组装件引用的组装件的完整性的特定方法。在步骤400,提供的组装至少引用一个其它组装件。在步骤410,向被引用的组装件提供包括公开密钥的标识信息。在步骤420,提供被引用组装件的散列值并用与公开密钥匹配的私人密钥加密该散列值,并将加密后的散列值附加在被引用组装件的末尾。在步骤430,向组装件提供从属信息,从属信息包括了所有被引用组装件及与每个被引用组装件对应的公开密钥的公开密钥标记的列表。现在可由加载器250将应用程序232和应用程序使用的组装件加载到高速缓存230中用于执行。在步骤440,读入被引用组装件的公开密钥并用公开密钥对加密的散列值解码,并且将解码后的加密散列值与被引用组装件上运行的实际散列值比较。在步骤450,确定任何被引用组装件的内容是否已改变。如果至少一个被引用组装件已改变(YES),应用程序在步骤455中止。如果没有任何被引用的组装件有改变(NO),在步骤460,将引用组装件中的公开密钥标记与被引用组装件中的公开密钥比较。在步骤470,验证组件275确定被引用组装件的出版商是否同一出版商或原始出版商。如果出版商不是原始出版商(NO),应用程序在步骤475中止。如果出版商是原始出版商(YES),在步骤480验证每个被引用组装件的模块并执行组装件。
图8-10描述了适用于提供必要的加密术功能以利于跨工具实现共享名的简单API以及运行时间。当前的例子移去了许多与使用密码术服务提供器(CSP)、密钥管理和数字签名/验证操作相关的复杂性。当前的API例子还代表了一组可以移植到各种不同平台的API。
共享名生成要求在开发平台上对公开/私人密钥对生成、散列、数字签名及签名验证的支持。运行时间平台仅要求散列和签名验证。API分成允许适合于对开发系统的支持和对运行时间系统的支持。当前API的例子假设对所有加密操作(例“Microsoft Base Cryptographic Provider Vl.0”)实现预指定CSP、RSA签名算法和SHA-1散列算法。CryptoAPI函数可以被提供为非管理的C代码接口,如果成功该函数返回TRUE,如果出错则返回FALSE。
当前的API例子可以支持由编译器销售商来生成和管理密钥。当前API的例子被设计成为普通开发情景提供所需的灵活性然而仍是容易使用的。使用这些API,编译器有可能生成共享名加密密钥对,并检索可被容易地跨开发平台存储和移动的一种表示(可移值密钥二进制大型对象)。还可能使共享名密钥加密对与项目关联,并将它用于共享名生成。密钥对不必永久地安装在用于共享名生成的加密服务提供器(CSP)中,这样就可容易地适应让每个项目使用不同的密钥对。此外,例子API提供了确信:共享名密钥操作将不会因用户机器上的其它操作而影响加密功能的使用。
图8a示出的函数用于为共享名使用创建新密钥对并将该密钥对输出给调用程序。容器名是用户定义的串。该函数允许用户定义名字使得可以管理多重共享名密钥对(例如,project 1对project 2,test对deploy)。参数dw Flags被用于控制任选项动作。对这一版本仅有的定义标志是SN_LEAVE_KEY(值为1)。如果设定,则安装的密钥对将留在共享名CSP中。图8a中的函数会尝试用所提供的前缀为“SNK”的容器名来创建一新的签名密钥对。前缀SNK对于调用应用程序将是不可见的并被用于提供一种好的确信,即所提供的容器名将不会与不同应用程序所用的容器名发生冲突。可以使用另外的前缀而不脱本发明的范围。生成的密钥将被标记成可供输出(如果受CSP支持),而且公开/私人密钥在未加密的密钥二进制大型对象(keyblob)中被输出。这密钥被返回给调用程序。该keyblob可以用对调用应用程序方便的任何方式来存储。如果被修改,它将不再能使用。
图8b示出的函数可用于将可移值的密钥二进制大型对象(keyblob)安装在机器CSP中。其目的是要支持缺省共享名密钥的安装。这一函数试图用所提供的容器名将密钥二进制大型对象中提供的密钥对安装到共享名CSP中。正如上面说明的,容器名可透明地加入前缀“SNK”以最小化与其它应用程序密钥发生冲突的可能性。如果容器名已存在或提供了一不合法的密钥二进制大型对象,返回一错误。
图8c示出的函数可用于从CSP中删除共享名密钥对。如果在密钥生成时SN_LEAVE_KEY选项被选中,或该密钥随后被安装到CSP中,这函数将是仅有的需要。这函数将获取带有标志CRYPT_DELETEKEYSET的给定密钥容器名的共享名CSP环境。所供给的容器名可在这一操作前冠以前缀“SNK”以避免与其它应用程序发生潜在的名字冲突。图8d示出的函数用于释放由图8a中所示的共享名函数所分配的存储器。
在安全地定义一共享名名字空间中,包含组装件元数据的可移植可执行(PE)文件用与定义名字空间的公共密钥对应的私人密钥来签名。开发环境可执行在生成一共享名中所需的操作。首先,检索出共享名公开密钥二进制大型对象。在元数据部分保留出空间以存放该密钥二进制大型对象并将它插入。可任选地,共享名公开密钥二进制大型对象可被项目系统存储,使得在其它组装件中创建引用时可利用该二进制大型对象。其次,检索出共享名签名二进制大型对象的大小。在PE文件中分配空间以容纳该签名。随后可将PE文件保存到盘片上。然后生成共享名签名二进制大型对象。该调用程序将提供PE文件和共享名密钥以供使用。签名函数将计算签名,并可任选地将它插入到PE文件中被定义的部分。图9a-9c示出了支持上述操作的各种API。在每个函数中,共享名密钥对可作为可移值密钥二进制大型对象,或作为对早已安装在共享名CSP中的密钥对的容器名引用而被提供。共享名CSP、散列算法和签名算法可基于默认的机器设置。
图9a示出了支持对公开密钥二进制大型对象检索的方法。该函数将试图获取带有所提供的szContainer名的共享名CSP环境。正如对于前面所述的API那样,容器名将被悄然冠上前缀“SNK”。如果pbKeyBlob为NULL(空),则认为密钥对已安装在CSP中,所以容器必定存在且它必定包含了与签名算法相关联的公共密钥对。如果pbKeyBlob为non-Null(非空),则用CRYPT_NEWKEYSET获取CSP。在这种情况下,如果存在容器名则返回一出错信息。如果成功地获取了CSP,则可输入密钥二进制大型对象中的密钥对。在这种情况下,将在函数返回前删除密钥对。图9b示出了经编码的返回的PublicKeyBlob。
图9c示出了支持签名操作的API。它可被用于检索签名二进制大型对象的大小,这样就可以分配PE文件中的空间。然后可把它用于生成签名。该函数可任意地将签名直接写入PE文件或将签名二进制大型对象返回给调用程序。这一函数将试图获取带有所提供的szContainer名的共享名CSP环境。正如前面所讨论的,容器名可以被悄然冠上前缀“SNK”。如果pbKeyBlob为NULL,则认为密钥对已安装在CSP中,故容器已存在且它包含了与签名算法相关联的公开密钥对。如果pbKeyBlob为non-NULL,则用CRYPT_NEWKEYSET获取CSP。在这种情况下,容器名应该不存在。如果成功获取CSP,则输入密钥二进制大型对象中的密钥对。在这种情况下,将在函数返回前删除密钥对。如果szFilePath为NULL,它指示出只返回签名二进制大型对象的大小。这大小被返回到由*pcbSignatureBlob指向的位置内。如果szFilePath为non-NULL,则对PE文件求散列值并且用私人密钥对该散列值签名。如果ppbSignatureBlob为NULL,这个函数将把签名二进制大型对象插入PE的保留部分中并执行任何所需的PE修整(例CRC)。如果调用程序希望处置签名二进制大型对象和它在PE文件中的插入,则ppbSignatureBlob应当是一个有效的指向一指针变量的指针。
图10a-10c示出了创建-固定大小的“标记”以引用共享名名字空间和进行签名验证。这可用来自与名字空间相关的公开密钥的散列值来计算。这一散列操作用于缩减与密钥大小相关的标记的大小,提供具有高度确信的唯一标记(统计上唯一)使得伪造共享名极其困难。SHA-1散列函数具有所希望的特性且可供使用,因为我们在生成共享名中已采用了它的用法。SHA-1的一个缺点是它生成一个160比特的值。这远小于典型的RSA签名密钥(512比特或更大),但是大于某些其它算法例如ECC之类通常使用的密钥大小。为了缩减标记的大小,低数量级64比特的SHA-1散列值将被用作标记值。图10a示出了一个用于创建标记的函数,其中公共密钥二进制大型对象是从PE文件中被引用的组装件表征(元数据中的PublicKeyBlob)中提取的。图10b示出了希望从公开密钥二进制大型对象结构生成该标记的一个函数。
图10c示出的一个验证函数,它使用共享名公开密钥来验证共享名签名二进制大型对象。这一操作要求对包含组装件表征的PE文件的引用。如果这一函数返回TRUE,则签名被验证,否则它返回FALSE且应不予考虑该共享名。szFilePath应当是对PE文件的合法引用,且它应该包含元数据中的一个PublicKeyBlob结构和PE文件中为此目的保留的部分中的一个共享名签名blob。该函数使用在SharedNameSignatureGeneration()中所用的相同算法来计算PE文件的散列值。
验证涉及对散列值、签名和公开密钥的操作,这些都依赖于所用的算法。工具(tools)使用加密帮助软件API和组装件元数据API将共享名指定给组装件。对具有共享名的组装件的引用(AssemblyRefs)包含了一个“标记”,该“标记”代表了用于生成被引用组装件中的共享名所用的公开密钥。这一标记在绑定时有助于定位所需的组装件。
当组装件被放置在本地组装件高速缓存中时可由运行时间来验证共享名签名。由于验证是在高速缓存加载时完成,绑定到具有共享名的组装件仅要求密钥等效性校验。作为被引用的一部分所记录的共享名标记可以被包括在高速缓存查找表中。另一种方式,如果对于该特定密钥已有定义在共享名上的规定代码访问安全政策则可在加载时验证签名。
本发明已就编程方法和/或计算机结构和以特定的例子作了说明,然而应当理解可以使用适合于实现本发明的各种编程方法和/或计算机结构且都应包括本所附权利要求的范围内。
本发明已参照了本发明的较佳方面作了描述。很明显一旦阅读和理解了前面的详细描述可以作出其它的修改和变动。本发明应当解释为包括所有此类修改,变动及其等价品。
工业应用
本发明在计算机和计算机软件领域具有工业应用性。

Claims (24)

1.一种在运行时间期间有利于应用程序使用的组装件的安全名字空间的方法,其特征在于,包括下述步骤:
提供具有公开密钥和私人密钥的密钥对;
向该组装件提供一包含有所述公开密钥的表征;
对该组装件求散列值;
用所述私人密钥加密该组装件的散列值;以及
将该加密的散列值与该组装件相联系。
2.如权利要求1所述的方法,其特征在于,进一步包括了提供一引用组装件的步骤,该引用组装件所引用的组装件具有包含一公开密钥标记的表征。
3.如权利要求2所述的方法,其特征在于,进一步包括下述步骤:通过用公开密钥对加密的散列值进行解码以确定该组装件的内容是否已被修改,确定该组装件内容的实际散列值,并将解码后的加密散列值与实际散列值比较。
4.如权利要求3所述的方法,其特征在于,进一步包括确定该组装件的出版商是否是所述私人密钥的拥有者的步骤。
5.如权利要求4所述的方法,其特征在于,确定组装件的出版商是否是密钥对的原始拥有者的步骤包括将引用组装件中的公开密钥标记与存储在组装件的表征中的公开密钥进行比较的步骤。
6.如权利要求1所述的方法,其特征在于,进一步包括下述步骤:通过用公开密钥对加密的散列值进行解码以确定该组装件的内容是否已被修改,确定该组装件内容的实际散列值,并将解码后的加密散列值与实际散列值比较。
7.如权利要求6所述的方法,其特征在于,进一步包括确定该组装件的出版商是否是所述密钥对的原始拥有者的步骤。
8.如权利要求7所述的方法,其特征在于,确定组装件的出版商是否是密钥对的原始拥有者的步骤包括将公开密钥存储在存储媒体中,并将存储媒体中的公开密钥与所述表征中的公开密钥进行比较的步骤。
9.一种计算机可读媒体,具有至少一个在运行时间可由应用程序使用的计算机可执行组件,其特征在于,它包括:
一个包括表征的组装件,该表征包含一公开密钥和由私人密钥加密的所述组装件内容的散列值,私人密钥和公开密钥形成一密钥对,加密的散列值是对该组装件的引用。
10.如权利要求9所述的计算机可读媒体,其特征在于,进一步包括一引用该组装件的引用组装件,该引用组装包括一包含所述组装件的公开密钥标记的表征。
11.如权利要求9所述的计算机可读媒体,其特征在于,所述组装件是一动态链接库。
12.一种在运行时间有利于应用程序使用的组件的安全名字空间的系统,其特征在于,该系统包括:
第一组件,适合于在组装件中提供一带有公开密钥的表征;以及
第二组件,适合于对所述组装件内容求散列值并用与公开密钥匹配的私人密钥加密该散列值。
13.如权利要求12所述的系统,其特征在于,进一步包括一第三组件,适合于向引用所述组装件的引用组装件的表征提供公开密钥标记。
14.如权利要求13所述的系统,其特征在于,进一步包括一验证组件,适合于用公开密钥对加密散列值解码并将解码后的加密散列值与在该组装件上运行的实际散列值比较。
15.如权利要求14所述的系统,其特征在于,该验证组件还适合于将组装件表征中的公开密钥与引用组装件表征中的公开密钥的标记作比较。
16.如权利要求12所述的系统,其特征在于,进一步包括适合于生成密钥对的密钥对生成组件。
17.如权利要求12所述的系统,其特征在于,进一步包括一绑定组件,适合于提供绑定策略信息,用于在有相同名字的另一个组装件驻留在系统上时确定应用程序将运行的组装件的版本。
18.如权利要求12所述的系统,其特征在于,进一步包括一验证组件,适合于用公开密钥对加密散列值解码并将解码后的加密散列值与组装件上运行的实际散列值比较。
19.一种在运行时间有利于应用程序使用的组装件的安全名字空间的系统,其特征在于,该系统包括:
用于提供具有公开密钥和私人密钥的密钥对的装置;
用于将公开密钥插入组装件的表征中的装置;
用于求组装件的散列值的装置;
用于用私人密钥对组装件的散列值进行加密的装置;以及
用于将加密的散列值与组装件相联系的装置。
20.如权利要求19所述的系统,其特征在于,进一步包括提供关于公开密钥的标记的装置,和用于将该标记插入引用所述组装件的引用组装件的表征中的装置。
21.如权利要求20所述的系统,其特征在于,进一步包括用于确定该组装件是否已被修改的装置。
22.如权利要求21所述的系统,其特征在于,用于确定组装件是否已被修改的装置包括用公开密钥对加密散列值进行解码的装置,用于生成实际散列值的装置,以及用于将生成的散列值与解码后的加密散列值进行比较的装置。
23.如权利要求22所述的系统,其特征在于,进一步包括将引用组装件中的标记与组装件中的公开密钥进行比较的装置。
24.如权利要求19所述的系统,其特征在于,组装件和引用组装件中的至少一个是动态链接库。
CNB018147046A 2000-06-28 2001-04-30 共享名 Expired - Fee Related CN1201248C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/605,602 US7117371B1 (en) 2000-06-28 2000-06-28 Shared names
US09/605,602 2000-06-28

Publications (2)

Publication Number Publication Date
CN1449527A true CN1449527A (zh) 2003-10-15
CN1201248C CN1201248C (zh) 2005-05-11

Family

ID=24424392

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018147046A Expired - Fee Related CN1201248C (zh) 2000-06-28 2001-04-30 共享名

Country Status (7)

Country Link
US (1) US7117371B1 (zh)
EP (1) EP1311920A2 (zh)
JP (1) JP4510373B2 (zh)
CN (1) CN1201248C (zh)
AU (1) AU2001259809A1 (zh)
BR (1) BR0112106A (zh)
WO (1) WO2002001332A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101010904B (zh) * 2004-08-26 2012-04-25 索尼株式会社 信息处理设备、信息记录介质、信息处理方法、和计算机程序
CN101689989B (zh) * 2007-07-13 2012-07-04 微软公司 用于创建和确认密码保护文档的方法和装置
CN102842005A (zh) * 2011-06-21 2012-12-26 国民技术股份有限公司 一种基于tsm的tspi接口的csp模块和csp实现方法
US11392671B2 (en) * 2015-01-21 2022-07-19 Canon Kabushiki Kaisha Delivery management server and delivery management method for delivering updated application

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001293290A1 (en) 2000-09-21 2002-04-02 Integrity Pc Innovations, Inc. An automatic real-time file management method and apparatus
US20030126454A1 (en) * 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus
EP1343286A1 (en) * 2002-03-04 2003-09-10 BRITISH TELECOMMUNICATIONS public limited company Lightweight authentication of information
KR20050061545A (ko) * 2002-10-18 2005-06-22 코닌클리케 필립스 일렉트로닉스 엔.브이. Tv-애니타임의 메타데이터 보호를 위한 방법 및 시스템
JP4512331B2 (ja) * 2003-07-11 2010-07-28 株式会社リコー カプセル化文書作成装置
CN107797953B (zh) * 2003-04-11 2021-10-08 富意科技公司 一种可实现自动运行的集成电路存储设备或方法
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7568195B2 (en) 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7614051B2 (en) 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7305672B2 (en) 2004-01-06 2007-12-04 International Business Machines Corporation Dynamic software update system, method and program product
FR2867929B1 (fr) * 2004-03-19 2007-03-02 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
US7814491B1 (en) * 2004-04-14 2010-10-12 Oracle America, Inc. Method and apparatus for managing system resources using a container model
US7716494B2 (en) * 2004-07-15 2010-05-11 Sony Corporation Establishing a trusted platform in a digital processing system
US20060015732A1 (en) * 2004-07-15 2006-01-19 Sony Corporation Processing system using internal digital signatures
US7552326B2 (en) 2004-07-15 2009-06-23 Sony Corporation Use of kernel authorization data to maintain security in a digital processing system
US20060015860A1 (en) * 2004-07-15 2006-01-19 Sony Corporation And Sony Electronics, Inc. System and method for storing attributes in a file for processing an operating system
US7568102B2 (en) * 2004-07-15 2009-07-28 Sony Corporation System and method for authorizing the use of stored information in an operating system
JP4591755B2 (ja) * 2004-08-17 2010-12-01 ソニー株式会社 インストールプログラム、記憶媒体、コンテンツ再生装置及び耐タンパモジュール更新方法
US20060048222A1 (en) * 2004-08-27 2006-03-02 O'connor Clint H Secure electronic delivery seal for information handling system
US7610273B2 (en) * 2005-03-22 2009-10-27 Microsoft Corporation Application identity and rating service
US7792289B2 (en) * 2005-06-28 2010-09-07 Mark Ellery Ogram Encrypted communications
FR2895545B1 (fr) * 2005-12-23 2008-05-30 Trusted Logic Sa Procede d'authentification d'applications d'un systeme informatique
US8209548B2 (en) * 2006-02-06 2012-06-26 International Business Machines Corporation Secure caching technique for shared distributed caches
US20080104403A1 (en) * 2006-09-29 2008-05-01 Shay Gueron Methods and apparatus for data authentication with multiple keys
US20080163375A1 (en) * 2006-12-28 2008-07-03 Savagaonkar Uday R Embedding and patching integrity information in a program file having relocatable file sections
US8341616B2 (en) * 2007-03-28 2012-12-25 International Business Machines Corporation Updating digitally signed active content elements without losing attributes associated with an original signing user
US8045995B2 (en) * 2007-05-31 2011-10-25 Yahoo! Inc. Centralized location broker
US8490078B2 (en) * 2007-09-25 2013-07-16 Barclays Capital, Inc. System and method for application management
US8468366B2 (en) 2008-03-24 2013-06-18 Qualcomm Incorporated Method for securely storing a programmable identifier in a communication station
US8984296B1 (en) * 2009-03-29 2015-03-17 Cypress Semiconductor Corporation Device driver self authentication method and system
US8522227B2 (en) * 2009-08-24 2013-08-27 Microsoft Corporation Runtime activation and version selection
DE102009052457A1 (de) * 2009-11-09 2011-05-26 Siemens Aktiengesellschaft Verfahren und System zum Auslösen eines Namenskonfliktes
US10043029B2 (en) 2014-04-04 2018-08-07 Zettaset, Inc. Cloud storage encryption
US10298555B2 (en) * 2014-04-04 2019-05-21 Zettaset, Inc. Securing files under the semi-trusted user threat model using per-file key encryption
US10873454B2 (en) 2014-04-04 2020-12-22 Zettaset, Inc. Cloud storage encryption with variable block sizes
US10284646B2 (en) * 2014-12-17 2019-05-07 International Business Machines Corporation Application multi-versioning in a traditional language environment
DE102017204218A1 (de) 2017-03-14 2018-09-20 Robert Bosch Gmbh Verfahren und Vorrichtung zum Absichern eines Gerätes
US11232199B2 (en) * 2019-12-27 2022-01-25 Mcafee, Llc Methods and apparatus to defend against DLL side-loading attacks

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
EP0578207B1 (en) 1992-07-06 1999-12-01 Microsoft Corporation Method for naming and binding objects
AU683038B2 (en) 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US5432852A (en) * 1993-09-29 1995-07-11 Leighton; Frank T. Large provably fast and secure digital signature schemes based on secure hash functions
US5701462A (en) 1993-12-29 1997-12-23 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US5689565A (en) 1995-06-29 1997-11-18 Microsoft Corporation Cryptography system and method for providing cryptographic services for a computer application
US5805899A (en) 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5657390A (en) 1995-08-25 1997-08-12 Netscape Communications Corporation Secure socket layer application program apparatus and method
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5802368A (en) 1995-09-29 1998-09-01 Informix Software, Inc. Dynamic Library Task Switching
US5692047A (en) 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US5848274A (en) 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5978484A (en) 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5924094A (en) 1996-11-01 1999-07-13 Current Network Technologies Corporation Independent distributed database system
US6021491A (en) 1996-11-27 2000-02-01 Sun Microsystems, Inc. Digital signatures for data streams and data archives
US5958051A (en) 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5892904A (en) 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
GB9626200D0 (en) * 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US6381741B1 (en) 1998-05-18 2002-04-30 Liberate Technologies Secure data downloading, recovery and upgrading
US5974421A (en) 1996-12-23 1999-10-26 Microsoft Corporation Cache-efficient object loader
WO1998037467A1 (fr) 1997-02-19 1998-08-27 Mitsubishi Denki Kabushiki Kaisha Unite de commande numerique incorporee a un ordinateur personnel, et procede de transfert d'images pour ladite unite de commande numerique
US6212673B1 (en) 1997-03-31 2001-04-03 International Business Machines Corporation Component-neutral builder interface
US6149318A (en) 1997-04-15 2000-11-21 Samuel C. Kendall Link-time and run-time error detection, and program instrumentation
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US6182279B1 (en) 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
US5937411A (en) * 1997-11-21 1999-08-10 International Business Machines Corporation Method and apparatus for creating storage for java archive manifest file
US6044467A (en) 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
RU2000115287A (ru) 1998-01-16 2002-07-27 Медиадна Система и способ для подтверждения подлинности равноправных компонентов
US6560706B1 (en) * 1998-01-26 2003-05-06 Intel Corporation Interface for ensuring system boot image integrity and authenticity
US6189096B1 (en) * 1998-05-06 2001-02-13 Kyberpass Corporation User authentification using a virtual private key
US6374266B1 (en) 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US6230184B1 (en) 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6308320B1 (en) 1999-01-15 2001-10-23 Hewlett-Packard Company Method and apparatus for incremental selective compilation of intermediate code files during computer system compilation and linking
US6647494B1 (en) * 1999-06-14 2003-11-11 Intel Corporation System and method for checking authorization of remote configuration operations
US6748538B1 (en) 1999-11-03 2004-06-08 Intel Corporation Integrity scanner

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101010904B (zh) * 2004-08-26 2012-04-25 索尼株式会社 信息处理设备、信息记录介质、信息处理方法、和计算机程序
CN101689989B (zh) * 2007-07-13 2012-07-04 微软公司 用于创建和确认密码保护文档的方法和装置
CN102842005A (zh) * 2011-06-21 2012-12-26 国民技术股份有限公司 一种基于tsm的tspi接口的csp模块和csp实现方法
CN102842005B (zh) * 2011-06-21 2015-06-10 国民技术股份有限公司 一种基于tsm的tspi接口的csp模块和csp实现方法
US11392671B2 (en) * 2015-01-21 2022-07-19 Canon Kabushiki Kaisha Delivery management server and delivery management method for delivering updated application

Also Published As

Publication number Publication date
US7117371B1 (en) 2006-10-03
WO2002001332A3 (en) 2003-03-06
BR0112106A (pt) 2003-10-28
AU2001259809A1 (en) 2002-01-08
WO2002001332A2 (en) 2002-01-03
JP4510373B2 (ja) 2010-07-21
EP1311920A2 (en) 2003-05-21
JP2004502233A (ja) 2004-01-22
CN1201248C (zh) 2005-05-11

Similar Documents

Publication Publication Date Title
CN1201248C (zh) 共享名
US7278131B2 (en) Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes
CN101443774B (zh) 优化完整性验证过程的方法和系统
EP1469369B1 (en) Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
US7540018B2 (en) Data security for digital data storage
US7302709B2 (en) Key-based secure storage
US7395551B2 (en) Method and apparatus for managing software use
US20090327733A1 (en) Data Security Method and System
US8086856B2 (en) Disabling on/off capacity on demand
GB2331381A (en) System for managing files, with alteration preventing/detecting function
JP2006504309A (ja) 装置鍵
JP2009516871A (ja) 安全なデータカートリッジ
KR101036701B1 (ko) 하드웨어 변경의 허용 범위를 갖는 컴퓨터 시스템에 비밀을 연계시키는 시스템
US7257712B2 (en) Runtime digital signatures
US20040025028A1 (en) Method, program, and apparatus for managing certification management environment
US20090119744A1 (en) Device component roll back protection scheme
CN116186645A (zh) 一种基于容器化的产品授权部署方法及装置
CN118245990A (zh) 多层级的离线授权方法及系统
CN112286553A (zh) 用户锁的升级方法、装置、系统、电子设备和存储介质

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

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

Granted publication date: 20050511

Termination date: 20190430