CN1530791A - 用于将软件包捆绑到具有硬件改变容限的计算机***的长硬件标识 - Google Patents

用于将软件包捆绑到具有硬件改变容限的计算机***的长硬件标识 Download PDF

Info

Publication number
CN1530791A
CN1530791A CNA2004100286594A CN200410028659A CN1530791A CN 1530791 A CN1530791 A CN 1530791A CN A2004100286594 A CNA2004100286594 A CN A2004100286594A CN 200410028659 A CN200410028659 A CN 200410028659A CN 1530791 A CN1530791 A CN 1530791A
Authority
CN
China
Prior art keywords
class
component
hardware configuration
computer
hash
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
CNA2004100286594A
Other languages
English (en)
Other versions
CN100371845C (zh
Inventor
F��J�������
F·J·阿拉布拉巴
A·T·胡格赫斯
���Ǿ�
C·古恩亚克笛
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 Corp
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 CN1530791A publication Critical patent/CN1530791A/zh
Application granted granted Critical
Publication of CN100371845C publication Critical patent/CN100371845C/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
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1011Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Multi Processors (AREA)

Abstract

揭示用于为给定计算机***生成长硬件标识(VHWID)的***和方法。可使用长硬件标识(VHWID)根据对计算机***的硬件改变的程度控制在给定计算机***上软件的使用。

Description

用于将软件包捆绑到具有硬件改变 容限的计算机***的长硬件标识
技术领域
本发明涉及用于为给定计算机***生成长硬件标识(VHWID)的***和方法。长硬件标识(VHWID)可用以根据对计算机***的硬件改变程度控制在给定计算机***上软件的使用。
背景技术
在防止或最小化计算机软件的非法使用上,最近几年已经有了相当大的成就。由于其可重复性和易于分发,计算机软件盗版和计算机软件超越许可证协议范围的非法使用普遍发生,严重伤害了软件生产商。
已开发了多种方法以努力降低计算机软件盗版的发生和计算机软件超越许可证协议范围的非法使用。但是,这样的方法常常给合法的软件购买者和用户带来以消费者不方便为形式的问题。例如,已升级他/她的计算机的用户应能合法地在升级后的机器上重装软件产品。但是,现行可用的方法可能或者(i)不允许重装软件,或者(ii)迫使用户(现在已经不满意了)要求软件生产商的帮助。
因而,存在针对盗版和非法使用的改进技术的解决方案的需求,但还要认同和适应合法软件购买者和用户的需要和习惯。
概述
本发明通过用于计算机***的改进的硬件标识的发明致力于以上讨论的难点与问题。本发明的硬件标识提供了最小化或防止软件盗版和计算机软件超越许可证协议范围的非法使用,同时允许合法软件用户的机器升级。
本发明的硬件标识,在此被称为“长硬件标识”(VHWID),标识(1)一般用于构建计算机***硬件配置的多个组件类,以及(2)对于特定计算机***在给定组件类内的每个组件设备或实例。通过考虑在选定数量的组件类中的每个组件或实例,为特定计算机***生成安全而可靠的长硬件标识(VHWID),同时能够对特定计算机***的硬件配置的组件改变允许有一容许度。
长硬件标识(VHWID)可用于在最初将软件产品载入计算机时标识特定的硬件配置。可为将来的使用而存储长硬件标识(VHWID),诸如(i)当同样的软件产品在同一计算机或同一计算机的变体上启用时,或者(ii)当同样的软件产品重载入同一计算机变体或完全不同的计算机时。例如,当同样的软件产品在同一计算机或同一计算机的变体上启用时,生成第二长硬件标识(sVWHID)并与初始长硬件标识(iVHWID)相比较。如果在第二长硬件标识(sVHWID)的组件类与初始长硬件标识(iVHWID)的组件类之间存在期望数量的匹配,则本发明的方法允许启用软件产品。但是,如果在第二长硬件标识(sVHWID)的组件类与初始长硬件标识(iVHWID)的组件类之间不存在期望数量的匹配,由于原始硬件***的改变超过了期望阈值,本发明的方法将不允许软件产品启用。
因而,本发明专注于长硬件标识(VHWID)以及生成长硬件标识(VHWID)的方法。本发明还专注于一方法,用于如果启用软件产品的尝试生成了一新的长硬件标识(VHWID),而它在与原始长硬件标识(VHWID)比较时由于对原始计算机***的硬件的一个或多个改变超出容许范围之外,则防止在计算机***上使用软件。
本发明的这些或其它特点和优点,将在下列所揭示的实施例的详细描述和所附权利要求书的查阅后变得显而易见。
附图说明
图1是用于实现本发明的示例性运行环境的一些主要组件的方框图;
图2示出了一个示例性硬件配置,它包含八个组件类和分布在八个组件类中的总共19个组件设备或实例;
图3描述了图2示出的示例性硬件配置的一个可能的长硬件标识(VHWID);
图4-6是一流程图,示出为硬件配置确定长硬件标识(VHWID)的示例性步骤;
图7是一流程图,示出在下述过程中的示例性步骤:通过将新生成的长硬件标识(VHWID)与先前生成的长硬件标识(VHWID)比较,判定软件产品能否用于计算机硬件***。
详细说明
为促进对本发明原理的理解,随后为本发明的特定实施例的描述,且使用特定的语言描述这些特定实施例。不过要理解,使用特定语言不是要对本发明的范围进行限制。所讨论的本发明原理的变更、进一步的修改以及这种进一步应用,预期对于本发明所属领域的熟练技术人员会正常发生的。
本发明专注于一种方法,用于通过长硬件标识(VHWID)标识给定计算机***的硬件配置。本发明还专注于一种方法,用于通过标识在选定数量的组件类内的所有组件实例,生成长硬件标识(VHWID)。本发明还专注于一种使用长硬件标识(VHWID)判定软件产品能否在一计算机硬件配置上使用的方法。
可为包括各种各样的硬件组件的计算机***生成长硬件标识(VHWID)。典型计算机***可包括许多分组成类的硬件组件,包括但不限于硬盘驱动器、光盘驱动器、网卡、显示适配器、只读存储器(ROM)、随机存取存储器(RAM)以及基本输入/输出***(BIOS)。下面描述用于实施本发明的示例性计算机***和示例性运行环境。
示例性运行环境
本发明的典型实施例将在下文参考附图描述,其中贯穿几幅图中相同的数字表示相同的元件。图1示出用于实现本发明的示例性运行环境。示例性运行环境包括以常规的个人计算机20形式的通用计算设备。通常,个人计算机20包括处理单元21、***存储器22和连接包括***存储器22在内的各种***部件至处理单元21的***总线23。***总线23可以是几种总线结构类型的任何一或多种,包括存储器总线或存储控制器、外部设备总线和使用多种多样总线结构的任何一个的局部总线。***存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出***(BIOS)26,包含帮助在个人计算机20内各部件之间,诸如在起动期间传送信息的基本例程,被存储于ROM24。
个人计算机20还包括用于读写硬盘的未示出的硬盘驱动器27、读写可移动磁盘29的磁盘驱动器28,和读写可移动光盘31诸如CD-ROM或其它光介质的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接到***总线23。尽管在此所述的示例性环境使用了硬盘27、可移动磁盘29和可移动光盘30,那些本领域熟练技术人员应该理解,其它类型的计算机可读介质也可用于示例性运行环境,这些介质能存储可由计算机访问的数据,诸如盒式磁带、闪存卡、数字视频盘、伯努利盒(Bernoulli catridge)、RAM、ROM等等。驱动器及其相关的计算机可读介质为个人计算机20提供计算机可执行指令、数据结构、程序模块和其它数据的非易失性的存储。例如,一或多个数据文件60(未示出)可存储在个人计算机20的RAM25和/或硬盘27中。
许多程序模块可存储在硬盘27、磁盘29、光盘31、ROM24或RAM25上,包括操作***35、应用程序模块36、其它程序模块37和程序数据38。程序模块包括,但不限于,例程、子例程、程序、对象、组件、数据结构等,它们完成特定任务或实现特定抽象数据类型。本发明的诸方面可实现为应用程序模块36的完整部分或另一程序模块37的一部分。
用户可通过诸如键盘40和指点设备42的输入设备来输入命令和信息到个人计算机20中。其它输入设备(未示出)可包括话筒、游戏杆、游戏垫、卫星式转盘、扫描仪等等。这些和其它输入设备常常通过连接到***总线23的串行接口46连接至处理单元22,但是也可以通过其它接口连接,诸如并行端口、游戏端口或通用串行总线(USB)等等。监视器47或其它类型的显示设备也可通过一个接口诸如视频适配器48连接至***总线23。除监视器之外,个人计算机一般包括其它外部输出设备(未示出),诸如扬声器和打印机。
个人计算机20可在一个使用逻辑连接至一个或多个远程计算机49的网络化环境中运行。远程计算机49可以是另一台个人计算机、服务器、客户机、路由器、网络PC、对等设备或其它公共网络节点等等。尽管远程计算机49一般包括上面相对于个人计算机20所述的部件的许多或全部,但在图1中只示出了存储器设备50。图1中所描述的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络环境在办公室、企业级计算机网络、内部互联网和因特网中是很普通的。
当在LAN网络环境中使用时,个人计算机20通过网络接口或适配器53连接到局域网51。当在WAN网络环境中使用时,个人计算机20通常包括调制解调器54或其它在诸如因特网的广域网52上建立通信的设备。调制解调器54,它可以是内置或外置的,通过串行接口46连接到***总线23。在网络环境中,关于个人计算机20描述的程序模块,或其部分,可存储在远程存储器设备50中。要意识到所示的网络连接是示例性的,且可使用其它在计算机之间建立通信链路的方法。
此外,那些本领域熟练技术人员将意识到本发明可在其它计算机***配置中实现,包括手持设备、多处理器***、基于微处理器或可编程消费类电子产品、网络个人计算机、小型机、大型计算机等等。本发明还可在分布式计算环境中实施,在该环境中任务由通过通信网络连接的远程处理设备完成。在分布式计算环境中,程序模块可位于本地和远程存储器设备中。
本发明示例性实施例的实现
如上所述,计算机***一般包括多类硬件组件。此外,计算机***可在每类硬件组件内包括多个组件(例如,两个硬盘驱动器)。
本发明的长硬件标识(VHWID)考虑到了用于确定VHWID的预期的每类硬件组件内的每个组件设备(这里也称为每个“实例”)。本发明的长硬件标识(VHWID)还可考虑到了计算机硬件***的给定组件类内组件设备的不存在。例如,可在检查给定计算机硬件配置之前,做出要用于标识给定计算机硬件配置的组件类的决定。对于用于产生计算机硬件配置的长硬件标识(VHWID)的每个选择的组件类,计算机硬件配置可以包含或不包含其组件实例。
下面给出用于生成长硬件标识(VHWID)的本发明示例性方法。此外,下面还描述了用于将长硬件标识(VHWID)用作反盗版工具的本发明示例性方法。
I.为计算机***生成长硬件标识(VHWID)
下面给出示例性长硬件标识(VHWID)的组件的描述。
A.长硬件标识(VHWID)
给定计算机***的长硬件标识(VHWID)希望包括三个部分:(1)首部组件,(2)计数组件,以及(3)散列组件。每个可能的长硬件标识(VHWID)部分可从给定计算机***的硬件配置导出。图2示出了计算机硬件配置和每个组件类内的实例的例子。
如在图2中所示,示例性计算机硬件配置20包括八个不同的组件类21-28,具有分布在组件类21-28中的总共19个组件实例200。CDROM组件类21包含四个组件实例;IDE组件类22包含两个组件实例;驱动器组件类23包含一个组件实例;显示组件类24包含一个组件实例;SCSI组件类25包含两个组件实例;磁盘组件类26包含六个组件实例;网卡组件类27包含一个组件实例;以及处理器(即cpu)组件类28包含两个组件实例。图2的行29描述了一串数字,它表示八个组件类21-28的每一个组件类内的组件实例数量。
应该注意给定组件类内的组件实例的数量可从零到与表示给定硬件配置所要求的那样多的数量之间变化,尽管一个实现可任意限制每个组件类的组件实例的数量。一般地,给定硬件配置每个组件类包含从零到大约六个组件实例。如下所述,甚至当组件类不包含组件实例时,组件类内组件实例的不存在也贡献了一则信息,它被包括在长硬件标识(VHWID)中。
在图3中示出示例性长硬件标识(VHWID)。图3的示例长硬件标识(VHWID)33是标识在图2中所示的计算机硬件配置的一个可能的方法。如上所述,长硬件标识(VHWID)34希望包括至少三个独立的部分:首部部分31、计数部分32和散列部分33。在图3中示出长硬件标识(VHWID)34的三个独立部分的每一个。首部部分31希望包括版本组成310及截取数字部分312。
首部部分31的版本组成310标识用于标识给定计算机***的长硬件标识(VHWID)34的特定版本。例如,长硬件标识(VHWID)的特定版本(例如,版本“1”)可以不同于长硬件标识(VHWID)的另一个版本(例如,版本“2”),通过使用一组参数创建版本1,而用独立的、不同的一组参数创建版本2。可使用各种各样的参数创建长硬件标识(VHWID)的给定版本。适当的参数包括,但不限于,(1)在长硬件标识(VHWID)34的首部部分31中表示组件类的数量;(2)用于构成首部部分31的一个或多个组件实例的标识串是否经历过散列函数或一些其它数据处理(例如截取标识串);(3)用于创建长硬件标识(VHWID)34的组件类的最大数量和/或最小数量;(4)在给定组件类内要考虑的组件实例的最大数量和/或最小数量;(5)用于为每个组件实例产生散列值的散列函数;(6)用于形成长硬件标识(VHWID)34的每个散列结果的长度;以及(7)长硬件标识(VHWID)34的总长度和/或最大长度。
一些组件类不能具有多个组件实例,并被称为单实例类。整个***RAM是单实例类的一个例子。如果必要则散列或截取单实例类的数据,然后存储在首部部分31的截取数字部分312中。每个在首部中表示的单实例类将具有一个关联的截取数字部分312。
希望地,长硬件标识(VHWID)34的首部部分具有固定长度,它对所有具有特定版本类型(例如版本1VHWID)的长硬件标识是一致的。例如,长硬件标识(VHWID)34的首部部分31可具有从大约10到大约24字节的固定长度,其中总字节数分布在版本组成310和截取数字部分312。
计数部分包括一串数字,它们表示在用于准备长硬件标识(VHWID)34的每个组件类内的组件实例的数量。如图3所示,计数部分32包括数字串:“42112612”,它相应于在图2中所示的组件类21-28内的组件实例。应该注意,如果组件类不包含组件实例,计数部分32包含对于该特定组件类的“0”。
与上述首部部分31一样,希望长硬件标识(VHWID)34的计数部分32具有固定长度,它对于所有具有特定版本类型的长硬件标识是一致的。计数部分32总是具有等于n的长度,即用于创建长硬件标识(VHWID)34的组件类的数量。一般地,长硬件标识(VHWID)34的计数部分32具有大约6到大约16个字符的固定长度。
散列部分33包括一个串接的散列值的串,这些散列值表示图2示出的组件类21-28内的19个组件实例的每一个。每个独立的散列结果可有一个最多到大约160位的长度。希望地,每个独立的散列值具有从大约10到大约20位的长度,更希望地约为16位。在这个例子中,长硬件标识(VHWID)34的作为结果的散列部分具有期望的大约304位的总长(即19×16=304)。
长硬件标识(VHWID)34的散列部分一般具有一长度,它根据给定硬件配置的n个组件类内组件实例的数量而变化。散列部分33的总长等于组件实例数乘以每个组件实例散列值的期望散列结果长度。
如在图3中所示,长硬件标识(VHWID)34可由首部部分31、计数部分32和散列部分33的串接串表示。下面描述为计算机硬件配置确定长硬件标识(VHWID)34的示例性方法。
应该注意,本发明的长硬件标识(VHWID)可以只包括一个部分。在本发明的一个示例性实施例中,给定计算机硬件配置的长硬件标识(VHWID)只包含散列部分33。在这个实施例中,长硬件标识(VHWID)不包含首部部分31或计数部分32。在本发明的一个另外的实施例中,长硬件标识(VHWID)只有与散列部分33结合的计数部分32。在本发明另一个实施例中,长硬件标识(VHWID)只包括首部部分31和散列部分33,这样地构造使得计数部分是隐含的。
B.为计算机***确定长硬件标识(VHWID)
本发明的VHWID可以由图4-6所示的示例性方法确定。示例性方法的步骤可由类似于以上参考图1所述的计算机20的消费者计算机上的软件产品内的软件代码完成。如图4-6所示,对于给定计算机硬件配置(这里称为“HW1”)的VHWID的示例性确定始于步骤401,其中选择组件类的数目n来标识给定计算机硬件配置HW1。如上所述,给定计算机***可包括各种各样的硬件组件和硬件组件类。示例性硬件组件类包括,但不限于,硬盘驱动器、逻辑盘分区、光盘、网卡、显示适配器、只读存储器(ROM)、随机存取存储器(RAM)、IDE设备、声卡、视频卡、处理器、SCSI设备和***BIOS。希望地,硬件组件类的数量n是范围从大约2到大约16的整个数。通常,希望n尽可能大,以便(i)更准确地标识给定计算机***,以及(ii)更精确地测量给定计算机***的容许度。
在步骤401选择组件类的数目n后,在步骤402标识每个组件类。组件类可包括任意上述的组件类,诸如硬盘驱动器类。下面的表1给出用于标识示例硬件配置HW1的组件类的示例性列表。
表1.用于标识实例硬件配置HW1的组件类的示例性列表
组件类编号 类说明 类标识符
    1 CDROM CDROM设备标识符
    2 IDE设备 IDE设备标识符
    3 硬盘驱动器 驱动器分区序列号
    4 显示适配器设备 标识符
    5 SCSI设备 SCSI设备标识符
    6 盘设备 盘设备标识符
    7 网卡 MAC地址
    8 处理器 处理器设备标识符
如表1所示,在这个例子中,n等于8,且所标识的硬件组件类包括:(1)CDROM类;(2)IDE设备类;(3)驱动器类;(4)显示适配器设备类;(5)SCSI设备类;(6)盘类;(7)网卡类;以及(8)CPU处理器类。
在步骤402标识每个组件类后,在步骤403标识在每个硬件组件类内的所有设备或实例。“计数”(即每个组件类的组件设备或实例的数量)也在步骤403确定。希望地,特定组件类内的每个实例可由关联于该实例的最独特的标识串标识。例如,硬件配置可包含由NEC公司生产的并具有标识串“NEC CDRW24 S15”的CDROM。确定给定实例的最独特标识串的任何可用方法都可用于本发明。为每个组件实例分配标识串的步骤示于步骤404。
一旦为每个组件实例分配了标识串,就在步骤405准备长硬件标识(VHWID)的首部部分。在步骤406,将VHWID的特定版本输入首部以构成如图3所示的首部部分310。如上所述,版本号可表示用于确定长硬件标识(VHWID)的一或多个参数。
在步骤407,标识要在首部中表示的组件类。一般地,在VHWID的首部部分中表示能够只具有单一组件实例的组件类或单实例类。可在VHWID的首部部分中表示的适当的组件类包括,但不限于,存储器组件类、计算机船坞组件(computer dockability component)类(即,计算机是否船坞式的)、***BIOS或它们的组合。在本发明的一个典型实施例中,VHWID的首部部分包括来自硬件配置的单一组件类的信息。
在判定框409中,做出要包括在首部中的单实例类的标识串是否经历散列函数的判定。可包括逐字地经历散列函数和/或按期望的位数截取的标识串。
如果标识串将要经历散列函数,则方法继续至步骤411,其中在组件实例的标识串上执行散列函数。希望地,截取散列结果到大约16位的长度。在步骤412,将散列结果输入到首部部分31的截取数字部分312(如图3所示)。如果标识串不经历散列函数,则方法继续至步骤410,其中截取标识串到期望的长度并输入到首部部分31的截取数字部分312。希望地,截取标识串到小于大约16位的长度。
一旦来自步骤412的截取散列结果或来自步骤410的截取标识串被输入进首部部分31的截取数字部分312,方法就继续至判定框413。在判定框413,做出是否向VHWID的首部部分31添加另一组件类的细节的判定。如果另一组件类的附加细节要加入VHWID的首部部分31,方法返回步骤407并如上所述继续执行。如果没有另外的信息要加入到VHWID的首部部分31,则方法继续至步骤414,在其中准备VHWID的计数部分32。如上所述,VHWID的计数部分32包括n个数的数字串,它表示用于构成VHWID的n个组件类的每一个组件类内的组件实例的数量。(见图3的计数部分32。)
在步骤415,对于VHWID的计数部分32中表示的每个组件实例,在标识串上执行散列函数。如果给定组件类不包含组件实例,可生成一特定的散列结果以在在VHWID中使用,其中特定散列结果指示给定组件类不包含组件实例。可供选择,没有散列值可存储,且计数部分32的相应于缺少的组件类的部分将被设置为零,指示该组件类不存在。每个组件实例的散列结果可被截取到期望的长度。在本发明的一个示例性实施例中,每个散列函数结果被截取到大约10到大约20位的长度,最希望地大约为16位。
任何已知的散列函数都可用于本发明,只要散列函数能够接收任意长度的标识串并产生具有少于或等于大约160位的固定长度的散列输出或结果。适当的散列函数的例子包括,但不限于,散列函数算法HAVAL、MD2、MD4、MD5和SHA-1,所有这些对于那些本领域普通技术人员是众所周知的。用于本发明的其它适当的散列函数在由John Wiley & Sons出版的(ISBN#0471117099)、BruceSchneier的“Applied Crypography”(实用密码学)中揭示,通过整体地引用将其揭示包括在此。
在本发明的一个实施例中,“盐值(salt value)”可在对给定组件实例执行散列函数之前加到组件实例标识符上。在这个实施例中,添加盐值使基于同一计算机硬件配置产生不同VHWID成为可能。对于同一计算机硬件配置的不同VHWID在运行不同应用或不同遍(pass)时是有益的。对于同一硬件配置的不同VHWID可能有益的情况的一个例子在下面讨论。
例如,如果用户激活来自同一个销售商的多个软件包,使用VHWID来联系独立的激活记录以构建用户软件购买习惯的图象是可能的。为保护这一点,通过使用散列函数构造每个独立的散列可得到来自同一机器的不同VHWID以显得无关,散列函数诸如hashx=MD5[(盐值)x+ID串],其中每个软件包的盐值不同。
在步骤416,每个组件实例的散列结果可串接起来构成如图3所示的长硬件标识(VHWID)34的散列部分33。在步骤417,最后的长硬件标识(VHWID)34通过串接首部部分31、计数部分32和散列部分33装配起来。
在步骤418,为将来的使用存储用于硬件配置HW1的作为结果的长硬件标识(VHWID)。用于硬件配置HW1的长硬件标识(VHWID)可存储在本地(例如,在寄存器、文件***或安全存储中)或在可访问的远程位置(例如,数据库)或者发送到用于许可证获取的交换所(clearinghouse)服务器。
如上所述,在本发明的一些实施例中,用于硬件配置HW1的长硬件标识(VHWID)可只包含(i)散列部分33或(ii)与散列部分33结合在一起的计数部分32,诸如VHWID包括与散列部分33串接的计数部分32。
II.使用长硬件标识(VHWID)允许在计算机***上使用软件产品
本发明还致力于使用长硬件标识(VHWID)允许在具有给定计算机硬件配置的计算机***上使用软件产品的方法。在本发明的一个实施例中,使用长硬件标识(VHWID)允许在具有给定计算机硬件配置的计算机***上使用软件产品的方法在下列情况下被起动:(i)在软件产品在计算机上不是初次安装的任何安装期间;(ii)在已经存在于计算机硬件配置的组件上的软件产品或应用的开始启用期间;或者(iii)两者同时。使用长硬件标识(VHWID)的示例性方法在图7中描述。示例性方法的步骤可由在类似于以上参考图1所描述的计算机20的消费者计算机上的软件产品内的软件代码执行。
如图7的步骤501所示,在具有硬件配置HW2的计算机上,或者载入或者开始启用软件产品。计算机硬件配置HW2可能与用于产生初始长硬件标识(这里称为iVHWID)的硬件配置HW1相同,也可能是完全不同的计算机。在步骤502中,为计算机硬件配置HW2生成新的长硬件标识(这里称为nVHWID)。计算机硬件配置HW2的长硬件标识(nVHWID)可如上所述并如图4-6所示地生成。一旦为计算机硬件配置HW2生成新的长硬件标识(nVHWID),则在步骤503检索所存储的长硬件标识(VHWID)。一般地,所存储的长硬件标识(VHWID)是初始长硬件标识(iVHWID),它在初始软件产品安装到HW1期间或稍后时在第一计算机硬件配置HW1上生成。
在步骤504,将硬件配置HW2的新长硬件标识(nVHWID)与硬件配置HW1的长硬件标识(iVHWID)比较。方法继续至判定框505。在判定框505,做出组件类的匹配数是否等于或超过所要求的组件类匹配数m的判定,m是允许在硬件配置HW2上使用软件产品所需要的。如果组件类匹配数等于或超过所要求的组件类匹配数m,则方法继续至步骤506,其中该方法允许在硬件配置HW2上使用软件产品。如果组件类匹配数小于所要求的组件类匹配数m,则该方法继续至步骤507,其中该方法禁止在硬件配置HW2上使用软件产品。
在步骤504,硬件配置HW2的新长硬件标识(nVHWID)与硬件配置HW1的初始长硬件标识(iVHWID)的比较可包括用于确定是否存在对于一个给定组件类的匹配的一个或多个规则。希望地,使用长硬件标识(VHWID)来允许使用软件产品的方法包括下列确定在新生成的长硬件标识与先前存储的长硬件标识之间匹配的组件类的数量的规则的一或多个:
(i)将表示硬件配置HW2的组件类内的组件实例的新长硬件标识(nVHWID)内的每个散列结果与表示硬件配置HW1中相应组件类的初始长硬件标识(iVHWID)内的每个散列结果比较;
(ii)当表示硬件配置HW2的组件类内的组件实例的新长硬件标识(nVHWID)内的一个散列结果与表示硬件配置HW1中相应组件类的初始长硬件标识(iVHWID)内的任何一个散列结果匹配时,一个匹配存在于硬件配置HW2的组件类与硬件配置HW1的对应的组件类之间;
(iii)当表示硬件配置HW2的组件类内的两个或多个组件实例的新长硬件标识(nVHWID)内的两个或多个散列结果与表示硬件配置HW1中相应组件类的长硬件标识(iVHWID)内的任何两个或多个散列结果匹配时,一个单一匹配存在于硬件配置HW2的组件类与硬件配置HW1的对应的组件类之间;
(iv)当硬件配置HW2中的组件类不包含组件实例且硬件配置HW1中相应组件类却包含组件实例时,没有匹配存在于硬件配置HW2的组件类与硬件配置HW1的对应组件类之间;
(v)当硬件配置HW2中的组件类包含单组件实例且硬件配置HW1中相应组件类不包含组件实例时,没有匹配存在于硬件配置HW2的组件类与硬件配置HW1的对应的组件类之间;
(vi)硬件配置HW2与硬件配置HW1之间所要求的组件类匹配数m可预先确定并嵌入在给定软件产品的代码中。
所要求的组件类匹配数m,是根据对于硬件配置组件改变所期望的容许度来选择的。所要求的组件类匹配的数量m可大到在确定长硬件标识(VHWID)期间所考虑的组件类的总数n,也可小到1。当m增大时,对计算机硬件配置改变的容许度降低。例如,如果组件类总数n等于10且m等于7,则10个组件类中的7个必须匹配至少一个组件实例以允许载入或运行软件产品。如果组件类匹配数小于7,则软件产品将不能在计算机硬件配置上运行、被载入或被许可运行。
所要求的组件类匹配的数量m,可由软件生产商预先确定,并编码到用于生成长硬件标识(VHWID)的软件产品代码中。希望地,m等于或大于(n-3),更希望地,m等于或大于(n-2)。不过,如上所指出的,m可在从1到n变动。
上述和示于图4-6和7的方法步骤可以在本地或在远程位置上执行。一般地,消费者购买了能在诸如图1所示的计算机20的给定计算机上运行的软件产品。软件产品可以是具有存储在诸如CD-ROM或软盘的可传输计算机可读介质上的软件程序的用收缩性薄膜包装(shrink-wrap)的产品。可供选择,软件产品也可在诸如局域网(LAN)51或广域网(WAN)52的网络上以电子方式递送。消费者将软件产品作为***存储器22中存储的程序载入到计算机20上。
在软件产品安装期间,一般提示消费者为软件产品进入计算机20输入软件产品标识符(PID)的一部分。例如从印刷在用收缩性薄膜包装的标签上的CD序列号,可以导得PID。消费者输入与软件产品的软件程序相关联的PID。将PID在本地存储在计算机20中和/或远程地存储在可访问的位置,或者存储在具有诸如激活授权当局(activation authority)的第三方的局域网(LAN)51或者广域网(WAN)52上。
如上所述,在软件产品的安装或激活期间,长硬件标识(VHWID)还可用软件产品内的代码生成或由软件产品的安装触发。由本发明方法生成的长硬件标识(VHWID)与软件产品标识(PID)相关联,并与软件产品标识(PID)一起存储在本地的计算机20和/或远程的可访问位置,或者在具有诸如激活授权当局的第三方的局域网(LAN)51或广域网(WAN)52上。
作为安装过程的一部分,可要求消费者与激活授权当局一起激活软件产品。这个当局可以是,例如,产品生产商或经授权的第三方。激活过程意在强迫消费者激活软件产品(i)用于在特定计算机上安装和使用或(ii)用于按照产品许可协议的条款安装和使用。这样一种激活过程详细描述于归属于微软公司(Redmond,WA)的美国专利No.6,243,468,通过引用将其内容整体地包括在此。
可将由本发明方法生成的长硬件标识(VHWID)和软件产品标识(PID)在本地存储在计算机20上和/或远程地存储在可访问的位置,或者存储在具有激活当局的局域网(LAN)51或广域网(WAN)52上。希望地,软件产品(i)将长硬件标识(VHWID)和相关软件产品标识(PID)两者存储在计算机20上,以及(ii)以电子方式通过广域网(WAN)52发送长硬件标识(VHWID)和相关的软件产品标识(PID)至激活服务器。希望地,当第一次启用软件产品时,它自动显示图形用户界面(UI)对话窗口,该窗口提示用户起动与激活服务器的连接以激活这个软件产品本身。激活服务器维护一数据库,以存储接收到的长硬件标识(VHWID)及其相关的软件产品标识(PID)。
长硬件标识(VHWID)及相关的用于给定软件产品的软件产品标识(PID)可存储无限长的时间,直到该软件产品被重装在另一台计算机上或在第一计算机上(即,在初始安装期间使用的计算机)开始启用。当同一软件产品被重装在另一台计算机上或在第一计算机上开始启用时,软件上的代码起动依照本发明生成新的长硬件标识(VHWID)的方法。软件产品还或者从本地计算机20上,或者从经由局域网(LAN)51或广域网(WAN)52的远程位置,检索先前存储的与软件产品的软件产品标识(PID)相关联的长硬件标识(VHWID)。如上所述,进行在新的长硬件标识(VHWID)与先前存储的长硬件标识(VHWID)之间的比较。
当软件产品的使用由于第一计算机(即,在初始安装期间使用的计算机)的硬件配置中的巨大改变而被拒绝时,可向消费者提供对话框,指示该软件产品的使用被拒绝,并可从一给定来源获得关于将来使用该软件产品的进一步信息。
III.长硬件标识(VHWID)的其它使用
本发明的长硬件标识(VHWID)还可用于除以上所述之外的其它用途。在本发明的一个实施例中,长硬件标识(VHWID)用于生成半唯一的(semi-unique)安装ID来跟踪机器。在本发明的另一实施例中,当授予在消费者计算机上使用软件的许可时,在交换所服务器上使用长硬件标识(VHWID)。
尽管已经相对于其特定实施例详细地描述了本说明书,但是应该理解,那些本领域熟练技术人员,在获得前面内容的理解时,可容易地设想对这些实施例的改变、这些实施例的变体和等价体。因而,应该按所附权利要求书和其任何等价要求评估本发明的范围。

Claims (53)

1.一方法,为具有第一硬件配置的第一计算机***生成一长硬件标识(VHWID),其特征在于,所述方法包括:
选择n个组件类;
标识在所述n个组件类的每一个内的所有组件实例;
生成多个散列结果,其特征在于,所述多个散列结果包括用于每个组件实例的一个散列结果和用于所述n个组件类的至少一个散列结果;以及
串接所述多个散列结果以构成一散列部分,
其中,所述散列部分形成用于所述第一计算机***的所述长硬件标识(VHWID)。
2.如权利要求1所述的方法,还包括:
串接(i)一首部部分,(ii)一计数部分,以及(iii)所述长硬件标识(VHWID)的所述散列部分,以形成用于所述第一计算机***的所述长硬件标识(VHWID)。
3.如权利要求1所述的方法,其特征在于,n是一个最大到大约16的整个数。
4.如权利要求2所述的方法,其特征在于,所述首部部分包括(a)一版本号,以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
5.如权利要求4所述的方法,其特征在于,串接组成(a)和(b)以形成所述首部部分。
6.如权利要求2所述的方法,其特征在于,所述首部部分包括(a)一版本号以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
7.如权利要求2所述的方法,其特征在于,所述计数部分包括一个n个数字的串接,其特征在于,每个数字表示在所述n个组件类内的组件实例的数量。
8.如权利要求1所述的方法,其特征在于,至少一个组件类包含两个或多个组件实例。
9.如权利要求1所述的方法,其特征在于,每个组件类包含从0至大约14个组件实例。
10.如权利要求1所述的方法,其特征在于,将每个散列结果截取成一16位数字。
11.如权利要求4所述的方法,其特征在于,将所述散列结果截取成一16位数字。
12.如权利要求1所述的方法,其特征在于,在将一软件产品载入所述第一计算机***的步骤期间,起动所述方法。
13.一方法,判定一软件产品能否在具有第二硬件配置的第二计算机***上使用,其中,所述第二计算机***与所述第一计算机***相同或不同,其特征在于,所述方法包括:
为所述第二硬件配置生成一第二长硬件标识(sVHWID);
将用于所述第二硬件配置的所述第二长硬件标识(sVHWID)与所述由权利要求1的所述方法生成的用于第一硬件配置的第一长硬件标识(VHWID)相比较;
如果在所述第二硬件配置的组件类与所述第一硬件配置的相应组件类之间存在多个匹配,以及匹配的数量等于或超过要求的组件类匹配的数量m,则将所述软件产品载入所述第二计算机***;以及
如果匹配的数量小于m,则阻止所述软件产品被载入所述第二计算机***。
14.如权利要求13所述的方法,其特征在于,当表示在所述第二硬件配置的一组件类内一组件实例的一个散列结果匹配来自在所述第一硬件配置中相应组件类的所述散列结果中的任何一个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一个匹配。
15.如权利要求13所述的方法,其特征在于,当表示在所述第二硬件配置的一组件类内的两个或多个组件实例的两个或多个散列结果匹配来自在所述第一硬件配置中相应组件类的两个或多个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一个单一的匹配。
16.如权利要求13所述的方法,其特征在于,(i)当所述第一硬件配置中一组件类不包含组件实例,而在所述第二硬件配置中相应的组件类却包含一组件实例时,以及(ii)当在所述第一硬件配置中所述组件类包含一单个组件实例,并且在所述第二硬件配置中相应的组件类不包含组件实例时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间不存在匹配。
17.如权利要求13所述的方法,其特征在于,m等于(n-3)。
18.一计算***,包含可在所述计算机***上可使用的至少一个应用模块,其特征在于,所述至少一个应用模块包括用于执行权利要求1所述的方法的应用代码。
19.一计算机可读介质,具有存储在所述计算机可读介质上的、用于执行权利要求1的所述方法的计算机可执行指令。
20.一计算机可读介质,具有存储在所述计算机可读介质上的、用于执行为具有第一硬件配置的第一计算机***生成一长硬件标识(VHWID)的方法的计算机可执行指令,其特征在于,所述方法包括:
选择n个组件类;
标识在所述n个组件类的每一个内的所有组件实例;
生成多个散列结果,其中,所述多个散列结果包括用于每个组件实例的一散列结果和用于所述n个组件类的至少一个散列结果;以及
串接所述多个散列结果以形成一散列部分,
其中,所述散列部分形成用于所述第一计算机***的所述长硬件标识(VHWID)。
21.如权利要求20所述的计算机可读介质,其特征在于,所述方法包括:
串接(i)一首部部分,(ii)一计数部分,以及(iii)所述长硬件标识(VHWID)的所述散列部分,以形成用于所述第一计算机***的所述长硬件标识(VHWID)。
22.如权利要求20所述的计算机可读介质,其特征在于,n是一个最大到大约为16的整个数。
23.如权利要求21所述的计算机可读介质,其特征在于,所述首部部分包括(a)一版本号,以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
24.如权利要求23所述的计算机可读介质,其特征在于,串接组件(a)和(b)以构成所述首部部分。
25.如权利要求21所述的计算机可读介质,其特征在于,所述首部部分包括(a)一版本号以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
26.如权利要求21所述的计算机可读介质,其特征在于,所述计数部分包括一个n个数字的串接串,其特征在于,每个数字表示在所述n个组件类内的组件实例的数量。
27.如权利要求20所述的计算机可读介质,其特征在于,至少一个组件类包含两个或多个组件实例。
28.如权利要求20所述的计算机可读介质,其特征在于,每个组件类包含从0至大约14个组件实例。
29.如权利要求20所述的计算机可读介质,其特征在于,将每个散列结果截取成一16位数字。
30.如权利要求23所述的计算机可读介质,其特征在于,将所述散列结果截取成一16位数字。
31.如权利要求20所述的计算机可读介质,其特征在于,在将一软件产品载入所述第一计算机***的步骤期间,起动所述方法。
32.一计算机可读介质,具有存储在所述计算机可读介质上的、用于执行一方法的计算机可读指令,所述方法判定一软件产品能否在具有第二硬件配置的第二计算机***上使用,其中,所述第二计算机***与所述第一计算机***相同或不同,其特征在于,所述方法包括:
为所述第二硬件配置生成一第二长硬件标识(sVHWID);
将用于所述第二硬件配置的所述第二长硬件标识(sVHWID)与所述由权利要求20的所述方法生成的用于第一硬件配置的第一长硬件标识(VHWID)相比较;
如果在所述第二硬件配置的组件类与所述第一硬件配置的相应组件类之间存在多个匹配,以及匹配的数量等于或超过要求的组件类匹配的数量m,则将所述软件产品载入所述第二计算机***;以及
如果匹配的数量小于m,则阻止所述软件产品被载入所述第二计算机***。
33.如权利要求32所述的计算机可读介质,其特征在于,当表示在所述第二硬件配置的一组件类内一组件实例的一个散列结果匹配来自在所述第一硬件配置中相应组件类的所述散列结果中的任何一个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一个匹配。
34.如权利要求32所述的计算可读介质,其特征在于,当表示在所述第二硬件配置的一组件类内的两个或多个组件实例的两个或多个散列结果匹配来自在所述第一硬件配置中相应组件类的两个或多个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一单个的匹配。
35.如权利要求32所述的计算机可读介质,其特征在于,(i)当所述第一硬件配置中一组件类不包含组件实例,而在所述第二硬件配置中相应的组件类却包含组件实例时,以及(ii)当在所述第一硬件配置中所述组件类包含一单个组件实例,并且在所述第二硬件配置中相应的组件类不包含组件实例时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间不存在匹配。
36.如权利要求32所述的计算机可读介质,其特征在于,m等于(n-3)。
37.一计算***,包含可在所述计算机***上可使用的至少一个应用模块,其特征在于,所述至少一个应用模块包括用于执行一方法的应用代码,所述方法为具有第一硬件配置的第一计算机***生成一长硬件标识(VHWID),其特征在于,所述方法包括:
选择n个组件类;
标识在所述n个组件类的每一个内的所有组件实例;
生成多个散列结果,其特征在于,所述多个散列结果包括用于每个组件实例的一散列结果和用于所述n个组件类的至少一个散列结果;以及
串接所述多个散列结果以形成一散列部分,
其中,所述散列部分形成用于所述第一计算机***的所述长硬件标识。
38.如权利要求37所述的计算***,其特征在于,所述方法还包括:
串接(i)一首部部分,(ii)一计数部分,以及(iii)所述长硬件标识(VHWID)的所述散列部分,以形成用于所述第一计算机***的所述长硬件标识(VHWID)。
39.如权利要求37所述的计算***,其特征在于,n是一个最大到大约16的整个数。
40.如权利要求38所述的计算***,其特征在于,所述首部部分包括(a)一版本号,以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
41.如权利要求40所述的计算***,其特征在于,串接组件(a)、(b)和(c)以形成所述首部部分。
42.如权利要求38所述的计算***,其特征在于,所述首部部分包括(a)一版本号以及(b)下列各项之一:(i)从在一单实例类的一标识串上执行一散列函数的步骤中得到散列结果,(ii)一截取的用于一单实例类的标识串,以及(iii)用于一单实例类的一标识串。
43.如权利要求38所述的计算***,其特征在于,所述计数部分包括一个n个数字的串接串,其特征在于,每个数字表示在所述n个组件类内的组件实例的数量。
44.如权利要求37所述的计算***,其特征在于,至少一个组件类包含两个或多个组件实例。
45.如权利要求37所述的计算***,其特征在于,每个组件类包含从0至大约14个组件实例。
46.如权利要求37所述的计算***,其特征在于,将每个散列结果截取成一16位数字。
47.如权利要求40所述的计算***,其特征在于,将所述散列结果截取成一16位数字。
48.如权利要求37所述的计算***,其特征在于,在将一软件产品载入所述第一计算机***的步骤期间,起动所述方法。
49.一计算***,包括可在所述计算机***上使用的至少一个应用模块,其特征在于,所述至少一个应用模块包括用于执行一方法的应用代码,所述方法确定一软件产品能否在具有第二硬件配置的第二计算机***上使用,其中,所述第二计算机***与所述第一计算机***相同或不同,其中,所述方法包括:
为所述第二硬件配置生成一第二长硬件标识(sVHWID);
将用于所述第二硬件配置的所述第二长硬件标识(sVHWID)与所述由权利要求37的所述方法生成的用于第一硬件配置的第一长硬件标识(VHWID)相比较;
如果在所述第二硬件配置的组件类与所述第一硬件配置的相应组件类之间存在多个匹配,以及匹配的数量等于或超过要求的组件类匹配的数量m,则将所述软件产品载入所述第二计算机***;以及
如果匹配的数量小于m,则阻止所述软件产品被载入所述第二计算机***。
50.如权利要求49所述的计算***,其特征在于,当表示在所述第二硬件配置的一组件类内一组件实例的一个散列结果匹配来自在所述第一硬件配置中相应组件类的所述散列结果中的任何一个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一个匹配。
51.如权利要求49所述的计算***,其特征在于,当表示在所述第二硬件配置的一组件类内的两个或多个组件实例的两个或多个散列结果匹配来自在所述第一硬件配置中相应组件类的两个或多个散列结果时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间存在一单个匹配。
52.如权利要求49所述的计算***,其特征在于,(i)当所述第一硬件配置中一组件类不包含组件实例,而在所述第二硬件配置中相应的组件类却包含组件实例时,以及(ii)当在所述第一硬件配置中所述组件类包含一单个组件实例,并且在所述第二硬件配置中相应的组件类不包含组件实例时,在所述第二硬件配置的所述组件类与所述第一硬件配置的相应组件类之间不存在匹配。
53.如权利要求49所述的计算***,其特征在于,m等于(n-3)。
CNB2004100286594A 2003-03-03 2004-03-03 用于将软件包捆绑到具有硬件改变容限的计算机***的长硬件标识 Expired - Fee Related CN100371845C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/378,346 US7290149B2 (en) 2003-03-03 2003-03-03 Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
US10/378,346 2003-03-03

Publications (2)

Publication Number Publication Date
CN1530791A true CN1530791A (zh) 2004-09-22
CN100371845C CN100371845C (zh) 2008-02-27

Family

ID=32908205

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100286594A Expired - Fee Related CN100371845C (zh) 2003-03-03 2004-03-03 用于将软件包捆绑到具有硬件改变容限的计算机***的长硬件标识

Country Status (20)

Country Link
US (1) US7290149B2 (zh)
EP (1) EP1469369B1 (zh)
JP (1) JP4652702B2 (zh)
KR (1) KR101021386B1 (zh)
CN (1) CN100371845C (zh)
AT (1) ATE381050T1 (zh)
AU (1) AU2004200682B2 (zh)
BR (1) BRPI0400379A (zh)
CA (1) CA2458769A1 (zh)
DE (1) DE602004010563T2 (zh)
DK (1) DK1469369T3 (zh)
ES (1) ES2297289T3 (zh)
HK (1) HK1069240A1 (zh)
MX (1) MXPA04002025A (zh)
MY (1) MY143063A (zh)
PL (1) PL1469369T3 (zh)
PT (1) PT1469369E (zh)
RU (1) RU2345405C2 (zh)
TW (1) TWI339334B (zh)
ZA (1) ZA200401492B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103814355A (zh) * 2011-03-15 2014-05-21 耶德托公司 使用误差-校正编码方案在计算环境中生成用于资产集合的标识符的容忍变化方法
CN101404573B (zh) * 2008-10-27 2014-11-19 北京大学 一种授权方法、***及装置
CN104951714A (zh) * 2014-03-27 2015-09-30 恩智浦有限公司 基于系列的设备绑定
CN110109706A (zh) * 2018-01-31 2019-08-09 Emc知识产权控股有限公司 在平台中实现组件库存和合规性的***和方法
US20200220865A1 (en) * 2019-01-04 2020-07-09 T-Mobile Usa, Inc. Holistic module authentication with a device

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278131B2 (en) * 2003-03-03 2007-10-02 Microsoft Corporation Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes
WO2005104686A2 (en) * 2004-04-14 2005-11-10 Ipass Inc. Dynamic executable
US20060064488A1 (en) * 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
US8738822B2 (en) * 2005-05-03 2014-05-27 Flexera Software Llc System and method for controlling operation of a component on a computer system
US9425958B2 (en) * 2005-08-05 2016-08-23 Hewlett Packard Enterprise Development Lp System, method and apparatus for cryptography key management for mobile devices
US8495389B2 (en) * 2005-12-16 2013-07-23 Safenet, Inc. Locking changing hard disk content to a hardware token
ZA200807344B (en) 2006-02-27 2009-07-29 It Crimes Cc Method and system for registering a device
IL174619A (en) * 2006-03-29 2013-12-31 Nds Ltd Password protection
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US8839451B1 (en) * 2006-08-07 2014-09-16 Moka5, Inc. Activation and security of software
US20100332400A1 (en) * 2009-06-24 2010-12-30 Craig Stephen Etchegoyen Use of Fingerprint with an On-Line or Networked Payment Authorization System
ES2782329T3 (es) * 2009-09-22 2020-09-14 Amadeus Sas Proceso para asegurar la comunicación de un archivo digital a través de una red de comunicación
US9235399B2 (en) * 2010-01-15 2016-01-12 Dell Products L.P. System and method for manufacturing and personalizing computing devices
US9256899B2 (en) * 2010-01-15 2016-02-09 Dell Products, L.P. System and method for separation of software purchase from fulfillment
US10387927B2 (en) * 2010-01-15 2019-08-20 Dell Products L.P. System and method for entitling digital assets
US9100396B2 (en) * 2010-01-29 2015-08-04 Dell Products L.P. System and method for identifying systems and replacing components
US8170783B2 (en) 2010-03-16 2012-05-01 Dell Products L.P. System and method for handling software activation in entitlement
EP2686806B1 (en) * 2011-03-15 2019-09-11 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment using a secret sharing scheme
US9246882B2 (en) 2011-08-30 2016-01-26 Nokia Technologies Oy Method and apparatus for providing a structured and partially regenerable identifier
DE102011054842A1 (de) 2011-10-27 2013-05-02 Wincor Nixdorf International Gmbh Vorrichtung zur Handhabung von Wertscheinen und/oder Münzen sowie Verfahren zur Initialisierung und zum Betrieb einer solchen Vorrichtung
US8949401B2 (en) 2012-06-14 2015-02-03 Dell Products L.P. Automated digital migration
US9779219B2 (en) 2012-08-09 2017-10-03 Dell Products L.P. Method and system for late binding of option features associated with a device using at least in part license and unique ID information
WO2015102513A1 (en) * 2013-12-30 2015-07-09 Limited Liability Company Mail.Ru Systems and methods for assisting user in software application crashes
US10063445B1 (en) * 2014-06-20 2018-08-28 Amazon Technologies, Inc. Detecting misconfiguration during software deployment
FR3048528B1 (fr) 2016-03-07 2018-09-21 Idemia France Procede de verification de l'integrite d'un dispositif electronique, et dispositif electronique correspondant
DE102017214591A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
DE102017214584A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
US10496153B2 (en) * 2017-10-27 2019-12-03 EMC IP Holding Company LLC Method and system for binding chassis and components
US10514907B2 (en) 2018-03-28 2019-12-24 EMC IP Holding Company LLC System and method for out-of-the-box solution-level management via logical architecture awareness
US10693722B2 (en) 2018-03-28 2020-06-23 Dell Products L.P. Agentless method to bring solution and cluster awareness into infrastructure and support management portals
US10754708B2 (en) 2018-03-28 2020-08-25 EMC IP Holding Company LLC Orchestrator and console agnostic method to deploy infrastructure through self-describing deployment templates
US11086738B2 (en) 2018-04-24 2021-08-10 EMC IP Holding Company LLC System and method to automate solution level contextual support
US10795756B2 (en) 2018-04-24 2020-10-06 EMC IP Holding Company LLC System and method to predictively service and support the solution
US11599422B2 (en) 2018-10-16 2023-03-07 EMC IP Holding Company LLC System and method for device independent backup in distributed system
US11093656B2 (en) * 2018-11-14 2021-08-17 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment
US10862761B2 (en) 2019-04-29 2020-12-08 EMC IP Holding Company LLC System and method for management of distributed systems
US11301557B2 (en) 2019-07-19 2022-04-12 Dell Products L.P. System and method for data processing device management

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61220030A (ja) * 1985-03-26 1986-09-30 Toshiba Corp ソフトウエア識別方式
US4688169A (en) * 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
JPS63296136A (ja) * 1987-05-27 1988-12-02 Nec Corp プログラムの正当性確認方法
US5757907A (en) 1994-04-25 1998-05-26 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for generating a machine-dependent identification
US5734819A (en) 1994-10-12 1998-03-31 International Business Machines Corporation Method and apparatus for validating system operation
JPH1027035A (ja) * 1996-07-12 1998-01-27 Fujitsu Ltd 情報処理装置
US6148407A (en) * 1997-09-30 2000-11-14 Intel Corporation Method and apparatus for producing computer platform fingerprints
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6044471A (en) * 1998-06-04 2000-03-28 Z4 Technologies, Inc. Method and apparatus for securing software to reduce unauthorized use
US6792113B1 (en) * 1999-12-20 2004-09-14 Microsoft Corporation Adaptable security mechanism for preventing unauthorized access of digital data
US6952770B1 (en) * 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US6931545B1 (en) * 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
JP3840399B2 (ja) 2000-12-05 2006-11-01 健太 堀 ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体
US20030061488A1 (en) * 2001-09-25 2003-03-27 Michael Huebler Cloning protection for electronic equipment
GB2381087A (en) * 2001-10-15 2003-04-23 Simon Alan Spacey Method for the secure distribution and use of electronic media
US7302590B2 (en) * 2003-01-06 2007-11-27 Microsoft Corporation Systems and methods for providing time-and weight-based flexibly tolerant hardware ID

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404573B (zh) * 2008-10-27 2014-11-19 北京大学 一种授权方法、***及装置
CN103814355A (zh) * 2011-03-15 2014-05-21 耶德托公司 使用误差-校正编码方案在计算环境中生成用于资产集合的标识符的容忍变化方法
CN103814355B (zh) * 2011-03-15 2017-11-28 爱迪德技术有限公司 使用误差‑校正编码方案在计算环境中生成用于资产集合的标识符的容忍变化方法
US9967089B2 (en) 2011-03-15 2018-05-08 Irdeto B.V. Change-tolerant method for generating identifier for collection of assets in computing environment using error-correction code scheme
CN104951714A (zh) * 2014-03-27 2015-09-30 恩智浦有限公司 基于系列的设备绑定
US9953144B2 (en) 2014-03-27 2018-04-24 Nxp B.V. Constellation based device binding
CN110109706A (zh) * 2018-01-31 2019-08-09 Emc知识产权控股有限公司 在平台中实现组件库存和合规性的***和方法
CN110109706B (zh) * 2018-01-31 2022-09-09 Emc知识产权控股有限公司 在平台中实现组件库存和合规性的***和方法
US20200220865A1 (en) * 2019-01-04 2020-07-09 T-Mobile Usa, Inc. Holistic module authentication with a device

Also Published As

Publication number Publication date
JP4652702B2 (ja) 2011-03-16
AU2004200682B2 (en) 2009-12-10
CA2458769A1 (en) 2004-09-03
KR101021386B1 (ko) 2011-03-14
TWI339334B (en) 2011-03-21
PL1469369T3 (pl) 2008-05-30
HK1069240A1 (en) 2005-05-13
BRPI0400379A (pt) 2005-01-04
RU2004106184A (ru) 2005-08-10
DE602004010563T2 (de) 2008-12-11
KR20040078592A (ko) 2004-09-10
MXPA04002025A (es) 2005-02-17
DK1469369T3 (da) 2008-05-05
US20040177168A1 (en) 2004-09-09
PT1469369E (pt) 2008-02-08
ZA200401492B (en) 2004-12-20
RU2345405C2 (ru) 2009-01-27
TW200426576A (en) 2004-12-01
ES2297289T3 (es) 2008-05-01
EP1469369A2 (en) 2004-10-20
AU2004200682A1 (en) 2004-09-23
CN100371845C (zh) 2008-02-27
MY143063A (en) 2011-02-28
EP1469369B1 (en) 2007-12-12
JP2004295871A (ja) 2004-10-21
US7290149B2 (en) 2007-10-30
ATE381050T1 (de) 2007-12-15
DE602004010563D1 (de) 2008-01-24
EP1469369A3 (en) 2004-11-03

Similar Documents

Publication Publication Date Title
CN1530791A (zh) 用于将软件包捆绑到具有硬件改变容限的计算机***的长硬件标识
CN1530790A (zh) 将软件包绑定到对允许硬件改变的计算机***的简明硬件标识
CN1097772C (zh) 在安全存储区中保护应用程序数据的方法和装置
EP1638031B1 (en) System and method for secure execution of program code
CN1103968C (zh) 受托编译中性结构程序版本产生特定结构的***和方法
CN1308832C (zh) 防御恶意代码而对计算机程序和数据进行保护的方法和装置
CN1661551A (zh) 代码重写
AU2017262658B2 (en) Method and apparatus for dynamic executable verification
CN1808455A (zh) 安全许可证管理
CN103530563A (zh) 用于更新经授权软件的***和方法
CN1975679A (zh) 用于优化分段资源分配的方法和设备
US8060865B2 (en) Build-time enforcement of architectural partitioning in computer application
EP2270703B1 (en) Systems and methods for providing conditional authorization to operate licensed software
JP2005259126A (ja) コードのメータリングされた実行
CN1678967A (zh) 多令牌密封和解封
CN1808379A (zh) 作为操作***原语的应用程序对象
CA2607492A1 (en) System and method for controlling operation of a component on a computer system
CN1542583A (zh) 用于将机密捆绑到具有硬件变化容限的计算机***的***
CN114503103A (zh) 用于许可工具链的方法
KR20150087363A (ko) 펌웨어-구현형 소프트웨어 라이선싱
CN1266619C (zh) 计算机安全***及其实现方法
US11928371B2 (en) 3D printing verification using audio snippets

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080227

Termination date: 20130303