CN1262919C - 通过散列的绑定 - Google Patents

通过散列的绑定 Download PDF

Info

Publication number
CN1262919C
CN1262919C CNB018138179A CN01813817A CN1262919C CN 1262919 C CN1262919 C CN 1262919C CN B018138179 A CNB018138179 A CN B018138179A CN 01813817 A CN01813817 A CN 01813817A CN 1262919 C CN1262919 C CN 1262919C
Authority
CN
China
Prior art keywords
subassembly
inventory
hash
cited
module
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.)
Expired - Fee Related
Application number
CNB018138179A
Other languages
English (en)
Other versions
CN1535417A (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 CN1535417A publication Critical patent/CN1535417A/zh
Application granted granted Critical
Publication of CN1262919C publication Critical patent/CN1262919C/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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

提供了一种用于确保在运行期间由应用程序(136,232)所使用的组件或组合件(10、20、30、70、80、90)的安全性的系统和方法。组合件(10、20、30、70、80、90)携带了可以用于实施由应用程序(136,232)描述的版本规则的版本信息。在运行时,把应用程序(136,232)所请求的版本号与实际找到的组合件(10、20、30、70、80、90)的版本号进行比较。除了比较版本号外,本发明提供了基于加密散列的更严格的版本检查形式。组合件(10、20、30、70、80、90)配置有模块信息,该信息含有组成该组合件(10、20、30、70、80、90)的文件列表。所记录的有关每个模块(14、45、50、96、98)信息的一部分是在建立清单时模块内容的散列。引用另一组合件(80,90)的组合件(70)计算被引用组合件(80,90)的清单(82、94)的散列。组合件清单(82、94)可以包括依赖信息,该信息是关于该组合件所依赖或引用的其他组合件的信息。

Description

通过散列的绑定
技术领域
本发明涉及计算机系统,尤其涉及一种用于在应用程序运行时确保其使用的组件完整性的系统和工具。
背景技术
过去,应用程序由单个整体二进制文件组成。一旦编译程序产生了该应用程序,该应用程序就不会改变,直到重新编译和发送下一版本。操作系统、硬件和市场需求的变化都要依赖于等待下一版本完成和再次编译才能体现。现今,应用程序由若干组件构成—另外,在运行时这些组件中的许多还彼此链接。这些组件包括动态链接库(DLL)和其他可以由不同应用程序共享的文件。这些DLL在运行时链接的应用组件的表中罗列。操作系统将在加载程序搜索路径、应用程序目录、操作系统目录或用户指定路径中搜索动态链接库的名字,以便将DLL代码加载到存储器中执行。因为这些DLL可以由不同的应用程序共享,因此针对某个应用程序对DLL的改变会引起另一应用程序停止工作。
而且,在操作系统(例如Microsoft的Windows操作系统)上运行的许多应用程序使用共享的操作系统组件。而在目前Microsoft的Windows操作系统平台上的管理员和开发者所面临的主要问题之一就是不能对一组确切的动态链接库和其他作为已部署的应用程序一部分来运行的文件进行控制。这在安装某个应用程序时,将其他应用程序所依赖的文件覆盖从而对这些程序产生影响的情况中非常常见。不幸地是,在Microsoft的Windows操作系统所提供的内建的支持中并没有建立一种机制在应用程序依赖的文件改变时进行检测。
现在,还没有一种方法对用于构造和测试应用程序的组装进行跟踪。过去,如果组件改变且该改变并不影响应用程序的功能,那么该应用程序还是会继续运行。例如,如果组件的发布者对组件中的微小差错进行修正,该应用程序还是会运行且不出问题。同样,如果发布者进行版本升级且该组件是向下兼容的,则该应用程序也可以没有问题地继续运行。但如果发布者在对新版本进行与先前版本的向下兼容中出现差错,就无法保护应用程序避免组件发布者进行的版本升级。并且,如果该组件被不能信赖的第三方替换,这些代码的执行就有可能损坏应用程序所运行的软件和硬件环境。某些代码在组件名字中包括版本信息(例如:fool.dll和kernel2.dll)。因为应用程序通过名字来引用这些组件,因此,名字的改变会引起应用程序终止其操作或使用驻留在系统中的旧版本组件。
因此,本领域存在一种还未实现的需求,需要一种在运行期间确保和验证由应用程序所使用的组件完整性。还需要一种在运行时验证组件完整性的工具。
发明内容
本发明涉及一种为在运行期间由应用程序所使用的组件和组合件(例如包括元数据的组件)提供安全性并促进其完整性的系统和方法。本发明使用加密技术以简化组件之间的关系。管理员和开发者可以利用该系统和方法以便于使一组确切的动态链接库(DLL)和已经一起经过测试的其他文件能在它们被配置后实际上一起运行。组合件携带了版本信息,这些信息可以用于实施应用程序所定义的版本规则。运行时,将应用程序所请求的版本号与实际找到的那些组合件版本号进行比较。除了比较版本号外,本发明还基于加密散列(hash)提供更加严格的版本检验形式。
可以为每个组合件提供一个清单,该清单含有组成该组合件的文件或模块的列表。记录有关每个文件的信息部分是在建立清单时文件内容的散列。该散列是在整个文件的内容上计算。发表清单的代码通常是编译程序或后链工具,它负责计算该散列。本发明使用多种散列算法,例如安全散列算法(sha-1)、MD5或任何在计算散列时可接受加密的散列算法。在本发明的一个方面,清单的创建程序可以规定该创建程序使用哪个散列算法。当组合件安装到全局组合件高速缓冲存储器中时,且在每次从盘中加载文件时,可以验证文件的散列。
上述文件散列有助于可配置单元(例如组合件)的完整性。然而,大多数应用程序是由几个组合件构成。因此,为确保整个应用程序的完整性,就必须不仅要确认各个组合件都没有改变,还要确认运行时该应用程序所使用的该组组合件与先前建立和测试的是同一组组合件。在本发明的另一方面,引用另一组合件的一个组合件对被引用的组合件的清单散列进行计算。组合件清单可以包括依赖信息,这些信息是有关于该组合件所依赖或引用的其他组合件的信息。部分作为依赖信息而存储的信息是被引用的组合件清单的散列。被引用的组合件清单的散列是充分的,因为该清单依此包括其所有组成文件的散列。通过这些文件的散列,有关所引用的组合件清单的散列可以通过发布该清单的工具来计算。
根据本发明的一个方面,提供了一种方法,用于促进在运行期间可由应用程序配置的组合件的完整性。为组合件提供了一种清单,它包含了组成该组合件的模块的列表,并且为该清单提供了模块列表中至少一个模块的内容散列。
本发明的另一方面涉及一种用于促进在运行期间应用程序可使用的多个组合件的完整性。为组合件提供了一种清单,它包含了该组合件所依赖的被引用组合件的列表,并且为该清单提供了被引用组合件列表中至少一个被引用组合件的清单散列。
在本发明的又一方面,提供了一种计算机可读媒体,具有至少一个运行时应用程序可使用的计算机可执行组件。该计算机可读媒体包括具有清单的组合件,该清单含有组成该组合件的模块列表以及模块列表中至少一个模块的内容散列。
本发明的另一方面涉及一种计算机可读媒体,具有至少一个运行时应用程序可使用的计算机可执行组件。该计算机可读媒体包括具有清单的组合件,该清单含有该组合件所依赖的至少一个被引用组合件的列表以及至少一个被引用组合件清单的内容散列。
根据本发明的另一方面,提供了一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于提供组合件清单的第一组件。该清单具有组成组合件的模块列表。该系统还包括适用于提供具有模块列表中至少一个模块的散列清单的第二组件。
在本发明的另一方面,提供了一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于提供组合件清单的第一组件。该清单包括至少一个被引用组合件。该系统还包括第二组件,适用于提供具有该至少一个被引用组合件的清单散列的清单。
本发明的另一方面涉及一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于将具有相关组合件列表的清单与一个组合件相联系的装置,以及用于提供具有这些相关组合件中一个清单或至少一个组合件清单的散列。
为了实现前述及相关目标,本发明包括了随后将完整描述并在权利要求书中特别指出的这些特征。下面的描述和附图详细阐述了本发明的某个说明实施例。这些实施例是指导性的,但也可以在本发明的原理中存在一些变化,本发明包括所有这样的实施例和其等价物。通过结合附图的下述详细描述,本发明的其他目标、优势和新颖特征将显而易见。
附图说明
图1说明了一种组合件框图,该组合件引用了具有如本发明一方面所述多个模块的一个组合件。
图2说明了具有如本发明一方面所述多个模块的一个组合件的详细框图。
图3说明了一种组合件的详细框图,该组合件引用了如本发明一方面所述多个组合件。
图4说明根据本发明环境的计算机系统框图。
图5说明根据本发明的环境详细框图。
图6说明一种特定方法论的流程图,该方法用于促进如本发明一方面的组合件的完整性。
图7说明另一种方法论的流程图,该方法用于促进如本发明一方面的组合件的完整性。
具体实施方式
现在引用附图来描述本发明,其中图中相同的标号字符在整个说明中对应于同一单元。本发明通过引用一种促进在运行期间由应用程序所使用的组件的完整性的系统和方法。这些组件通常是动态链接库(DLL),但也可以包括运行时链接到应用程序的定义文件、说明文件和可执行文件。根据本主题发明至少一个方面的组合件在此定义为一些组件,这些组件包括定义组合件的元数据,描述组成该组合件的组件的元数据以及描述该组合件所依赖的组合件的元数据。本发明使用了加密技术,例如散列,以确保应用程序所使用组合件的完整性。另外,本发明允许将较大的DLL文件分成几个较小的文件,同时还可确保DLL的完整性。
图1说明根据本发明的组合件的关系。第一组合件10包括顶组合件12(例如,具有元数据段的文件或清单)以及模块或子组合件14。组合件10可以包括顶组合件和任意数量的组成组合件10的模块。顶组合件定义作为包括有元数据段或清单的组合件。元数据段或清单可以包括定义该组合件的身份信息,定义与其他组合件依赖性的组合件引用以及定义到模块或子组合件链接的模块引用。在顶组合件12中提供元数据段16,它包括有关第一组合件10的信息。该元数据段16包括身份信息组件17以及文件确认摘要组件18。身份信息组件17包括有关第一组合件10的信息,而文件确认摘要组件18包括有关模块14的信息。除了许多其他有关第一组合件10的信息类型外,身份信息组件17可以包括如下这些信息:简名、版本信息、操作系统或处理器信息、发布商信息。文件确认摘要组件18可以包括模块14的散列。
身份信息组件17中的信息可由其他方访问,而文件确认摘要组件18中的信息不能被其他方访问,但可以在运行前或运行时使用以验证该组合件没有被修改。顶组合件摘要19可以配置在顶组合件12的端部。该顶组合件摘要19可以含有顶组合件12的内容散列。顶组合件散列可以用于验证顶组合件12的内容是否已经被修改,而文件确认摘要组件18中的散列可以用于验证模块14是否经修改。
需要说明,大多数应用程序都由几个组合件构成,它们中的某些要引用正在执行的其他组合件。因此,图1还说明配置了第二组合件20,它依赖于第一组合件10。在第二组合件20中配置元数据段22,它包括有关第二组合件20的信息以及有关第一组合件10的信息,在运行时,组合件20引用该组合件10。元数据段22包括身份信息组件24以及引用确认摘要组件26。身份信息组件24包括有关第二组合件24的信息,而引用确认摘要组件26包括有关第一组合件10的信息。除了许多其他有关第二组合件20的信息类型外,身份信息组件24可以包括以下这些信息:简名、版本信息、操作系统或处理器信息、发布商信息。参考确认摘要组件26可包括第一组合件10的顶组合件12的元数据段16的散列。
身份信息组件24中的信息可由其他方访问,而文件确认摘要组件26中的信息不能被其他方访问,但可以在运行前或运行时使用以验证第一组合件10和第二组合件20没有被修改。因为元数据段16包括模块14的散列,因此就不需要在第二组合件20的元数据段22中配置散列以验证模块14是否经修改。引用确认摘要26可任选地包括顶组合件12的散列值。然而,这并不是必需的,因为顶组合件摘要19中的顶组合件散列可以与顶组合件12的实际散列值进行比较,该值在运行前或运行时确定。
图2说明根据本发明的组合件的详细构成。组合件30由顶组合件40、第一模块45和第二模块50构成。顶组合件40包括作为组合件清单的元数据段42。组合件清单42包括具有下述信息的身份信息:创建者名字、场所、主版本号、次版本号、修订版、编译和模块信息。在身份清单中还可放置其他信息(例如操作系统)。该模块信息是组成组合件30的模块列表和每个模块文件内容的散列。在运行前或运行时,组合件清单42中的模块散列可与第一模块45和第二模块50的实际散列通过使用同一散列算法进行验证,以确定组合件30的完整性。或者,顶组合件40可包括位于文件端部的顶组合件散列43。可使用顶组合件散列来确定在顶组合件40中是否发生什么变化。如果组合件30已改变,调用该组合件30的应用程序可以选择中断。在本发明的另一方面中,应用程序可选择复查身份信息以确定这种改变是否由值得信赖的源所调用。该应用程序可随后选择是中断还是允许执行组合件30。
图3说明了根据本发明的引用另一组合件的组合件的详细构造。引用组合件70(标记为组合件B)引用了第一被引用组合件80(标记为组合件C)和第二被引用组合件90(标记为组合件D)。引用组合件70包括组合件清单72,该清单具有模块信息,类似于图2中描述的顶组合件40模块信息。组合件清单72还包括依赖信息,例如在运行时,引用组合件70所依赖的组合件列表。依赖信息还包括每个被引用组合件的顶组合件清单的散列。第一被引用组合件80具有组合件清单82(包括身份信息和依赖信息)以及可任选的顶组合件摘要83。依赖信息存在告知应用程序第一被引用组合件80也依赖至少一个其他组合件。第一被引用组合件80不具有任何模块,因此并不存在任何模块信息或任意模块的散列。第二被引用组合件90具有包含模块信息的组合件清单94,但没有任何依赖信息。因而,由于第二引用组合90在不具有任何依赖信息,它并不需要依赖任何其他组合件而执行。在第二被引用组合件90的端部也可以配置可任选的顶组合件摘要95。第二被引用组合件90由顶组合件92、第一模块96和第二模块98组成。模块信息包括组合件90的模块列表以及每个模块的整体内容散列。组合件70、80和90的整体内容可在运行时加载到计算机系统的高速缓存中,并且在运行前或运行时,将通过散列校验的散列存储在清单中。
图4和下面的描述意在提供对一种可以实现本发明的合适计算环境的简明概括的描述。而本发明将在计算机程序的计算机可执行指令的通用环境中进行描述,该计算机程序在个人或服务器计算机上运行,本领域的熟练技术人员可以认识到本发明也可以结合其他程序模块来实现。程序模块包括执行特定任务或实现特定抽象数据类型的例行程序、程序、组件、数据结构等。而且,本领域的熟练技术人员将知道本发明还可通过其他计算机系统配置来实现,包括单或多处理器计算机系统,微型计算机、大型计算机、手持计算设备,基于微控制器或可编程消费电子产品等。本发明的说明实施例在分布式计算环境中实现,在这种环境中,由通过通信网络链接的远端处理装置来执行任务。但本发明的一些实施例可以在独立的计算机上实现。在分布式计算环境中,在本地和远端存储器存储装置中都配置有程序模块。
参照图4,一种实现本发明的示范系统包括常规的个人或服务器计算机120,该计算机包括处理单元121、系统存储器122和将各种系统部件连接在一起(包括将系统存储器122连接到处理单元121)的系统总线123。处理单元可以是各种商业上可用的处理器,包括Intel的X86,Pentium和与Intel等兼容的微处理器,包括Cyrix、AMD和Nexgen;Digital的Alpha;MIPS科技、NEC、IDT、Siemens等的MIPS;以及IBM和Motorola的PowerPC。也可将双微处理器和其他多处理器体系作为处理单元121。
系统总线可以是下述几种总线结构中的任意一种:存储总线或存储器控制器,外围总线和使用诸如PCI、VESA、Microchannel、ISA和EISA之类的各种常规总线结构的本地总线。系统存储器包括只读存储器(ROM)124和随机访问存储器(RAM)125。基本输入/输出系统(BIOS)存储在ROM 124中,含有基本的例行程序来帮助(例如在启动期间)在计算机120中的单元之间传送信息。
计算机120进一步包括硬盘驱动器127、磁盘驱动器128,例如从可移动盘129读取或写入该盘,以及光盘驱动器130,例如用于读取CD-ROM盘131或从其他光媒体中读取或写入其他光媒体。硬盘驱动器127、磁盘驱动器128和光盘驱动器130通过硬盘驱动接口132、磁盘驱动接口133和光盘驱动接口134分别与系统总线123相连。这些驱动器和它们相关的计算机可读媒体为服务器计算机120提供了非易失数据存储、数据结构和计算机可执行指令等。虽然,上述计算机可读媒体的描述是指硬盘、可移动磁盘和CD,但本领域的熟练技术人员可以理解其他类型的计算机可读媒体,例如磁带、闪存卡、数字视频盘、伯努里盒(Bernoulli cartridges)等也可以在示范操作环境中使用。
许多程序模块可以存储在驱动器和RAM 125中,包括操作系统135、一个或多个应用程序136,其他程序模块137和程序数据138。在所说明的计算机中的操作系统135可以是Microsoft Windows NT Server操作系统以及前面提到的Microsoft Transaction Server、Microsoft Windows 95、MicrosoftWindows 98或Microsoft Windows 2000。
用户可以通过键盘和定点设备(例如鼠标142)将命令和信息输入到计算机120中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星式圆盘、扫描仪等。这些和其他输入设备通常通过串行接口146与处理单元121连接,该接口与系统总线耦合。但还可以通过其他接口相连,例如并行端口、游戏端口或通用串行总线(USB)。监视器147或其他类型的显示设备也通过一种接口(例如视频适配器148)连接到系统总线123。除了监视器外,计算机通常包括其他外围输出设备(未示出),例如扬声器和打印机。
计算机120可以在联网环境中工作,该网络环境使用逻辑连接与一个或多个远端计算机连接,例如远端服务器或客户计算机149。远端计算机149可以是工作站、服务器计算机、路由器、对等设备或其他公共网络节点,并且虽然在图4中仅说明了存储器存储设备150,但通常还包括与计算机120相关描述的许多或所有单元。图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可以在应用程序和组合件的最初配置和测试期间以及由管理员在随后插入这些散列。散列组件260可以是应用程序接口(API),作为操作系统275的一部分驻留。然而,散列组件260可以是应用程序232的一部分。而且,散列组件260可以由许多不同的组件组成,例如,用于散列和版本功能的单独组件。
将应用程序232调度并加载入高速缓存230(例如,记忆所有已经加载组合件的存储器内的高速缓存)。应用程序232与加载程序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可以随后决定是否要中断。在本发明的另一方面,确认组件270可以依据绑定组件280设定的绑定策略来检验版本和发布者信息。这些版本和发布者信息可用于基于散列确认来判定即使发现有改变,应用程序是否应执行该组合件。在本发明又一方面,确认组件保留一张组合件散列表,这些组合件在应用程序的初始调度和测试期间将使用。随后,确认组件可以在组合件上运行散列,并将散列和在表中找到的散列进行比较。确认组件270可以是作为操作系统275的一部分驻留的应用程序接口(API)或可以是应用程序232的一部分。
应该理解上述组件实例仅作为说明目的而单独描述。应该理解在保持上述功能性的前提下,还可以在其他组件中集成各种组件来实现。而且,上面的描述是一个描述这些组件如何能交互执行本发明的实例,并且其他实例也可用于执行本发明。
图6说明了确保和确认具有模块的组合件完整性的一种特定方法论。在步骤300,配置了一种具有至少一个模块的组合件。在步骤310,组合件的顶组合件配置了具有身份信息和模块信息的组合件清单。在步骤320中,通过调用散列组件260在模块信息中配置至少一个模块的完整文件内容的散列。应用程序232和应用程序所使用的组合件现在就可以加载入高速缓存230执行。在步骤330,将模块信息中至少一个模块的散列值与至少一个模块中的实际散列值进行比较。在步骤340,做出该组合件内容是否经改变的判定。如果该组合件没有改变(否),就在步骤345中执行该组合件。如果该组合件已改变(是),通常就会返回一个错误,并且应用程序将中断。在步骤350中,依据绑定组件280中定义的特定绑定策略配置检验身份信息的任选项步骤。在步骤360,由确认组件275做出是否是值得信赖的发布者完成了该修改的判断。如果该发布者是值得信赖的(是),该组合件就在步骤365中执行。如果该发布者不是值得信赖(否),就向该应用程序232返回一个错误,并随后在步骤370中中断。
图7说明了一种对由其他组合件引用的组合件的完整性进行确保和校验的特定方法。在步骤400中,配置组合件以引用至少一个其他组合件。在步骤410,该组合件配置有组合件清单,该清单具有身份信息和依赖信息。该依赖信息包括至少一个被引用的组合件的列表。在步骤420中,通过调用散列组件260将至少一个被引用组合件的清单散列配置作为依赖信息的一部分。应用程序232和应用程序所使用的组合件现在可以由加载程序250加载到高速缓存230中以便执行。在步骤430,通过使用确认组件270,将在依赖信息中的至少一个被引用组合件的散列值与至少一个被引用组合件的清单的实际散列值进行比较。在步骤440,做出任何被参考的组合件的内容是否经修改的判断。如果没有被参考的组合件已被改变(否),该被参考组合件将在步骤445中执行。如果有任何被引用组合件已被改变(是),通常就返回一个错误,并且应用程序将中断。在步骤450中,依据绑定组件280中定义的特定绑定策略配置检验身份信息的一个任选项步骤。在步骤460,做出是否是由值得信赖的发布者完成了修改的判断。如果该发布者是值得信赖的(是),该被引用组合件就在步骤465中执行。如果该发布者不是值得信赖(否),就向该应用程序返回一个错误,并随后在步骤470中中断。
已经引用编程方法和/或计算机结构和特定实例描述了本发明,然而应该知道,可以使用各种适用于执行本发明的编程方法和/或计算机结构,并且这些方法和结构都落在附加权利要求的范围中。
已经引用本发明的较佳方面对本发明进行了描述。显然,本领域技术人员在阅读和理解前面的详细描述时会发现可以有其他修改和替代。而本发明的目的是要包括所有这种修改替换和其等价形式。
工业应用
本发明在计算机和计算机软件领域具有工业应用性。

Claims (18)

1.一种促进在运行期间由应用程序可使用的组合件的完整性的方法,其特征在于,包括:
为组合件配置清单,该清单含有组成该组合件的模块列表;
为清单配置所述模块列表中至少一个模块内容的散列;
通过确定模块列表中至少一个模块内容的实际散列并将该实际散列与驻留在组合件清单中的模块列表中至少一个模块内容的散列进行比较来确定组合件的内容是否已被修改;以及
如果组合件已被修改就确定组合件发布者是否值得信赖。
2.如权利要求1所述的方法,其特征在于,所述为清单配置具有所述模块列表中至少一个模块内容的散列的步骤包括下述步骤:为清单配置构成该组合件的模块列表中每个模块的散列。
3.如权利要求1所述的方法,其特征在于,进一步包括在组合件的清单中配置身份信息的步骤。
4.如权利要求3所述的方法,其特征在于,所述身份信息包括发布者信息和版本信息。
5.如权利要求1所述的方法,其特征在于,进一步包括在组合件的末尾配置组合件内容散列的步骤。
6.如权利要求1所述的方法,其特征在于,所述如果组合件已被修改就确定组合件发布者是否为值得信赖的步骤包括下述步骤:检验驻留在组合件清单中的版本信息和发布者名字信息。
7.如权利要求1所述的方法,其特征在于,进一步包括为清单配置所述组合件所依赖的至少一个其他组合件的清单散列的步骤。
8.一种促进在运行期间由应用程序可使用的组合件的完整性的方法,其特征在于,包括:
为组合件配置清单,该清单含有所述组合件所依赖的被引用组合件列表;
为清单配置所述被引用组合件列表中至少一个被引用组合件清单的散列;以及
通过确定所述被引用组合件列表中至少一个被引用组合件内容的实际散列并将该实际散列与驻留在组合件清单中的所述被引用组合件列表中至少一个被引用组合件内容的散列进行比较来确定至少一个被引用组合件的内容是否已被修改;
如果所述至少一个被引用组合件已被修改就确定该至少一个被引用组合件的发布者是否是值得信赖的。
9.如权利要求8所述的方法,其特征在于,所述为清单配置所述被引用组合件列表中至少一个被引用组合件清单的散列的步骤包括下述步骤:为清单配置被引用组合件列表中每个被引用组合件的散列。
10.如权利要求8所述的方法,其特征在于,进一步包括在组合件的清单中配置身份信息的步骤。
11.如权利要求10所述的方法,其特征在于,所述身份信息包括发布者信息和版本信息。
12.如权利要求8所述的方法,其特征在于,进一步包括在组合件末尾配置组合件内容散列的步骤。
13.如权利要求8所述的方法,其特征在于,所述如果所述至少一个被引用组合件已被修改就确定该至少一个被引用组合件的发布者是否是值得信赖的步骤包括下述步骤:检验驻留在该至少一个被引用组合件清单中的版本信息和发布者名字信息。
14.一种促进在运行期间由应用程序可使用的组合件的完整性的系统,其特征在于,该系统包括:
散列组件,用于为组合件提供清单,所述清单具有模块列表中至少一个模块的散列,所述模块列表中的这些模块组成了所述组合件;以及
确认组件,通过将所述至少一个模块的散列与所述至少一个模块的实际散列值进行比较以确定对所述组合件是否进行了修改,并且进一步确定如果对所述组合件进行了修改,是否要中止执行所述组合件。
15.如权利要求14所述的系统,其特征在于,所述清单包括身份和版本信息,并且所述第三组件适用于如果清单中的至少一个模块散列和该至少一个模块的实际散列值不同时,依据创建者和版本信息的复查来确定该组合件是否应该执行。
16.如权利要求14所述的系统,其特征在于,进一步包括绑定组件,适用于提供绑定策略信息,用于如果另一具有相同名字的组合件驻留在系统上,就判定应用程序将运行的组合件版本。
17.一种促进在运行期间由应用程序可使用的组合件的完整性的系统,其特征在于,该系统包括:
散列组件,用于为组合件提供清单,所述清单具有列出在该清单中的至少一个被引用组合件的散列;以及
确认组件,通过将所述清单中至少一个被引用组合件的散列与所述至少一个被引用组合件的实际散列值进行比较以确定对所述被引用组合件是否进行了修改,并且进一步对所述被引用组合件的版本和发布者进行分析,确定如果对所述被引用组合件进行了修改,应用程序是否要执行所述被引用组合件。
18.如权利要求17所述的系统,其特征在于,进一步包括绑定组件,以提供具有绑定策略信息的确认组件。
CNB018138179A 2000-06-28 2001-04-30 通过散列的绑定 Expired - Fee Related CN1262919C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/604,987 2000-06-28
US09/604,987 US7124408B1 (en) 2000-06-28 2000-06-28 Binding by hash

Publications (2)

Publication Number Publication Date
CN1535417A CN1535417A (zh) 2004-10-06
CN1262919C true CN1262919C (zh) 2006-07-05

Family

ID=24421818

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018138179A Expired - Fee Related CN1262919C (zh) 2000-06-28 2001-04-30 通过散列的绑定

Country Status (10)

Country Link
US (1) US7124408B1 (zh)
EP (1) EP1399808B1 (zh)
JP (1) JP4263476B2 (zh)
CN (1) CN1262919C (zh)
AT (1) ATE460702T1 (zh)
AU (1) AU2001259808A1 (zh)
BR (1) BR0112029A (zh)
DE (1) DE60141541D1 (zh)
HK (1) HK1064757A1 (zh)
WO (1) WO2002001351A2 (zh)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001285161A1 (en) * 2000-08-21 2002-03-04 United States Postal Services Delivery point validation system
US8065394B2 (en) 2001-08-20 2011-11-22 Bally Gaming, Inc. Local game-area network method
US9555322B2 (en) 2001-08-20 2017-01-31 Bally Gaming, Inc. Local game-area network method
EP1343286A1 (en) * 2002-03-04 2003-09-10 BRITISH TELECOMMUNICATIONS public limited company Lightweight authentication of information
US7664731B2 (en) * 2002-03-21 2010-02-16 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
WO2003081440A1 (en) * 2002-03-21 2003-10-02 Snapp Robert F Method and system for storing and retrieving data using hash-accessed multiple data stores
US7159119B2 (en) * 2002-09-06 2007-01-02 United States Postal Service Method and system for efficiently retrieving secured data by securely pre-processing provided access information
US7895224B2 (en) 2002-12-10 2011-02-22 Caringo, Inc. Navigation of the content space of a document set
US7263521B2 (en) * 2002-12-10 2007-08-28 Caringo, Inc. Navigation of the content space of a document set
CN100474285C (zh) * 2002-12-20 2009-04-01 高通股份有限公司 用于在装置上自动处理组件的方法和设备
US7290250B2 (en) * 2003-02-28 2007-10-30 Bea Systems, Inc. System and method for determining when an EJB compiler needs to be executed
US8784195B1 (en) 2003-03-05 2014-07-22 Bally Gaming, Inc. Authentication system for gaming machines
US9240888B2 (en) 2003-03-05 2016-01-19 Bally Gaming, Inc. Authentication system for gaming machines
DE10311249A1 (de) * 2003-03-14 2004-09-23 Robert Bosch Gmbh Mikroprozessorsystem und Verfahren zum Erfassen des Austauschs von Bausteinen des Systems
US7275244B1 (en) * 2003-03-18 2007-09-25 Microsoft Corporation System and method for incrementally saving web files to a web server using file hash values
US7065650B2 (en) * 2004-05-10 2006-06-20 Aladdin Knowledge Systems Ltd. Method for indicating the integrity of a collection of digital objects
EP1643336A1 (de) * 2004-09-30 2006-04-05 Siemens Aktiengesellschaft Eindeutige Produktidentifikation
KR20070074617A (ko) * 2004-10-11 2007-07-12 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 데이터 로드 방법, 데이터 처리 장치, 데이터 항목의무결성 보호 방법 및 데이터 항목의 무결성 검증 방법
US8627086B2 (en) * 2004-10-11 2014-01-07 Telefonaktiebolaget Lm Ericsson (Publ) Secure loading and storing of data in a data processing device
EP1645931A1 (en) * 2004-10-11 2006-04-12 Telefonaktiebolaget LM Ericsson (publ) Secure loading and storing of data in a data processing device
CN100489728C (zh) * 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
US7451435B2 (en) * 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
EP1672486A1 (en) * 2004-12-15 2006-06-21 Sony Ericsson Mobile Communications AB Method and device for permitting secure use of program modules
US7664323B2 (en) * 2005-01-28 2010-02-16 Microsoft Corporation Scalable hash-based character recognition
US8060860B2 (en) * 2005-04-22 2011-11-15 Apple Inc. Security methods and systems
JP4698285B2 (ja) * 2005-05-19 2011-06-08 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
JP4397354B2 (ja) * 2005-06-28 2010-01-13 富士通株式会社 テスト記録方法、テスト記録装置、およびテスト記録プログラム
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
JP4822544B2 (ja) 2006-04-26 2011-11-24 株式会社リコー 複数のモジュール構成情報を管理できる画像形成装置
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US8296758B2 (en) * 2006-09-20 2012-10-23 Sap Ag Deployment and versioning of applications
EP1918839A1 (de) * 2006-11-03 2008-05-07 Siemens Aktiengesellschaft Modifizieren eines Softwarestands einer Steuergerätesoftware für ein Steuergerät und Erkennen einer solchen Modifikation
US8006281B2 (en) * 2006-12-21 2011-08-23 Microsoft Corporation Network accessible trusted code
AU2008200752B2 (en) * 2007-03-29 2010-10-28 Aristocrat Technologies Australia Pty Limited A storage method for a gaming machine
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8555070B2 (en) * 2007-04-10 2013-10-08 Abbott Medical Optics Inc. External interface access control for medical systems
US8555410B2 (en) * 2007-04-10 2013-10-08 Abbott Medical Optics Inc. External interface access control
US8321933B2 (en) * 2007-11-14 2012-11-27 Caterpillar Inc. Securing electronic control unit code
US8484752B2 (en) * 2007-11-14 2013-07-09 Caterpillar Inc. Verifying authenticity of electronic control unit code
WO2009132261A1 (en) 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
US8214646B2 (en) * 2008-05-06 2012-07-03 Research In Motion Limited Bundle verification
US20090327405A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Enhanced Client And Server Systems for Operating Collaboratively Within Shared Workspaces
US8918873B1 (en) * 2009-07-02 2014-12-23 Symantec Corporation Systems and methods for exonerating untrusted software components
WO2012037270A1 (en) * 2010-09-15 2012-03-22 Myspace, Inc. Dynamic native binding for managed assemblies
US9244673B2 (en) * 2012-06-08 2016-01-26 Apple Inc. System and method for updating application archive files
CN102867061B (zh) * 2012-09-20 2015-08-19 北京奇虎科技有限公司 系统管理方法和装置
US9547657B2 (en) 2014-02-18 2017-01-17 Black Duck Software, Inc. Methods and systems for efficient comparison of file sets
US10256977B2 (en) 2014-02-18 2019-04-09 Synopsys, Inc. Methods and systems for efficient representation of file sets
US10318262B2 (en) 2015-03-25 2019-06-11 Microsoft Technology Licensing, Llc Smart hashing to reduce server memory usage in a distributed system
RU2635271C2 (ru) * 2015-03-31 2017-11-09 Закрытое акционерное общество "Лаборатория Касперского" Способ категоризации сборок и зависимых образов
US9367686B1 (en) * 2015-07-21 2016-06-14 AO Kaspersky Lab System and method for antivirus checking of native images of software assemblies
CN105786498A (zh) * 2016-02-25 2016-07-20 广州阿里巴巴文学信息技术有限公司 用于修改应用程序的方法、设备和电子设备
US10083029B2 (en) * 2016-11-09 2018-09-25 Red Hat, Inc. Detect application defects by correlating contracts in application dependencies
JP6759169B2 (ja) * 2017-09-11 2020-09-23 株式会社東芝 情報処理装置、情報処理方法、および情報処理プログラム
CN108959455B (zh) * 2018-06-15 2020-12-04 未鲲(上海)科技服务有限公司 单页Web应用实现方法、装置、计算机设备和存储介质
JP7020384B2 (ja) * 2018-11-29 2022-02-16 日本電信電話株式会社 アプリケーション動作制御装置、アプリケーション動作制御方法、および、アプリケーション動作制御プログラム
US11303628B2 (en) * 2019-11-15 2022-04-12 Sap Se Software deployment certification
US11321064B1 (en) * 2021-10-04 2022-05-03 CTRL IQ, Inc. Systems and methods for trusted and secure application deployment via collective signature verification of the application artifacts
US20240111872A1 (en) * 2022-09-30 2024-04-04 General Electric Company Devices, systems, and methods for securely loading embedded software using a manifest

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU662805B2 (en) * 1992-04-06 1995-09-14 Addison M. Fischer A method for processing information among computers which may exchange messages
US5581760A (en) * 1992-07-06 1996-12-03 Microsoft Corporation Method and system for referring to and binding to objects using identifier objects
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
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
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
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
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
US6182279B1 (en) * 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
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
US6510516B1 (en) * 1998-01-16 2003-01-21 Macrovision Corporation System and method for authenticating peer components
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing 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
US6324637B1 (en) * 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index
US6748538B1 (en) * 1999-11-03 2004-06-08 Intel Corporation Integrity scanner

Also Published As

Publication number Publication date
JP4263476B2 (ja) 2009-05-13
WO2002001351A3 (en) 2003-12-31
CN1535417A (zh) 2004-10-06
EP1399808B1 (en) 2010-03-10
BR0112029A (pt) 2006-05-02
HK1064757A1 (en) 2005-02-04
ATE460702T1 (de) 2010-03-15
AU2001259808A1 (en) 2002-01-08
US7124408B1 (en) 2006-10-17
DE60141541D1 (de) 2010-04-22
JP2004513412A (ja) 2004-04-30
WO2002001351A2 (en) 2002-01-03
EP1399808A2 (en) 2004-03-24

Similar Documents

Publication Publication Date Title
CN1262919C (zh) 通过散列的绑定
CN1201248C (zh) 共享名
US11385890B2 (en) Shared software libraries for computing devices
CN101223522B (zh) 调用表值函数的查询的有效评估系统和方法
US8438543B2 (en) Discovering multi-component software products
US9460306B1 (en) System and method for controlling access of machine code to operating system resources
CN109858286B (zh) 针对可信计算平台的安全策略管理系统
CN101046838A (zh) 用于在软件应用中设置安全参数的方法和系统
CN1467632A (zh) 基于映像的软件安装
CN1627258A (zh) 内核模式填补的驱动程序专用上下文
KR20080013862A (ko) 전자 소프트웨어 다운로드를 위한 분할 다운로드
CN1776679A (zh) 栈式文件系统和方法
KR102550596B1 (ko) 스마트 컨트랙트 코드 취약점 분석 장치 및 방법
CN1652077A (zh) 面向对象编程语言和工具中的版本化支持
CN110334031B (zh) 内存分配代码检测方法、装置、计算机设备及存储介质
US20050229162A1 (en) Systems and methods for providing multi-environment test automation
US7287251B1 (en) Source engine for transferring a resource to local secure cache
US7702668B2 (en) Asset composition
US7549015B2 (en) Systems and method for controlling directory capacities with an accuracy tolerant ratio
EP1312077A1 (en) Input device for voice recognition and articulation using keystroke data.
US11954007B2 (en) Tracking usage of common libraries by means of digitally signed digests thereof
US20100083288A1 (en) Method and system for application program management platform
CN116737169A (zh) 编译方法、芯片、电子设备及存储介质
CN114731277A (zh) 发送控制方法、发送控制程序以及信息处理装置
GB2306710A (en) Software version control facility

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: 20150504

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

Effective date of registration: 20150504

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

Granted publication date: 20060705

Termination date: 20190430

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