专利名称:将软件包绑定到对允许硬件改变的计算机系统的简明硬件标识的制作方法
技术领域:
本发明涉及用于为给定计算机系统的产生简明硬件标识(compacthardwareidentification,CHWID)的系统和方法。简明硬件标识(CHWID)能根据对计算机系统的硬件改变程度,控制在给定的计算机系统上的软件使用。简明硬件标识(CHWID)能在如电话那样的有限带宽介质上以电的形式发送。
背景技术:
近年来已作了相当大的努力来防止或尽量减少计算机软件的非法使用。由于其可复制性和易散布性,在超过许可证协定的范围外的计算机软件的盗版和非法使用是经常发生的,这大大的侵害了软件制作者。
为了努力在减少超过许可证协定的范围外的计算机软件的盗版和非法使用,已经发展了许多方法。然而,那些方法常常以消费者不方便的方式对合法的软件购买者和用户产生了问题。例如,升级她/他的计算机的用户应能够合法的在升级的机器上重新安装软件产品。然而,现在可用的方法或者(i)不允许软件被安装,或者(ii)强迫用户(他很不满)打电话给软件制作者请求帮助。
因而,需要改进的针对盗版和非法使用的技术方案,但此方法还考虑到并适应合法的软件购买者和用户的需要和实践。
发明内容
通过发现了一种改进的计算机系统改善的硬件标识,本发明解决了上面讨论的某些困难和问题。本发明的硬件标识提供了尽量减少或防止超过许可证协议范围的计算机软件的盗版和非法使用的方法,同时考虑了合法软件用户的机器升级。
本发明的硬件标识(这里称为“简明硬件标识”(CHWID))识别(1)通常用于建立对计算机系统的硬件配置的若干组件类别,和(2)特定的计算机系统给定的组件类别中的单个组件设备或实例。通过考虑在选定个数的组件类别中的单个组件设备或实例,产生特定计算机系统安全可靠的简明硬件标识(CHWID),同时使得特定计算机系统的硬件配置的组件能有一定程度的改变。
如果在一开始装载软件产品到计算机时有有限量的空间能用于识别特定的硬件,就可以使用简明硬件标识(CHWID)。能存储简明硬件标识(CHWID)为以后使用,比如(i)当相同软件产品在相同计算机或相同计算机的变化上运行时,或(ii)当相同软件产品重新装载到相同计算机的变化或完全不同的计算机上时。例如,当相同软件产品在相同计算机或相同计算机的变化上运行时产生第二简明硬件标识(sCHWID),并与(1)以前存储的简明硬件标识(iCHWID)或(2)以前存储的详备硬件标识(VHWID)比较,所述详备硬件标识还将在下面描述。若在第二简明硬件标识(sCHWID)的组件类别与(1)以前存储的简明硬件标识(iCHWID)或(2)以前存储的详备硬件标识(VHWID)的对应组件类别之间存在所希望的匹配数,则本发明的方法允许软件产品运行。然而,若在第二简明硬件标识(sCHWID)的组件类别与(1)以前存储的简明硬件标识(iCHWID)或(2)以前存储的详备硬件标识(VHWID)的对应组件类别之间不存在所希望的匹配数,则本发明不允许运行该软件产品,因为对原始硬件系统的改变超越了所希望的限度。
因而本发明针对简明硬件标识(CHWID),和产生简明硬件标识(CHWID)的方法。本发明还针对另一个方法,若试图运行软件产品产生的新的简明硬件标识(CHWID)时,由于对原始计算机系统一次或多次硬件改变,在与(1)以前存储的简明硬件标识(iCHWID)或(2)以前存储的详备硬件标识比较时,CHWID超出了限度,则禁止软件在该计算机系统上使用。
在阅读了所揭示的实施例的详细描述和附后的权利要求之后,本发明的这些或其它特征和优点将变得一目了然。
图1是为实现本发明的示例性操作环境的某些主要组件的流程图;图2描绘出包含8个组件类别和分布在这8个组件类别中的总共19个组件设备实例的示例性硬件配置;图3描绘出对图2中所示的示例性硬件配置的可能的详备硬件标识(VHWID)和对应的简明硬件标识(CHWID);图4-8是流程图,示出在确定硬件配置的简明硬件标识(CHWID)时的示例性步骤;和图9-10是流程图,示出通过比较产生的简明硬件标识(CHWID)与(1)以前存储的简明硬件标识(iCHWID)或(2)以前存储的详备硬件标识(VHWID),判断软件产品是否能在计算机硬件系统上使用的示例性步骤。
具体实施例方式
为促进本发明的原理的理解,进行本发明的特定实施例的描述,且用特定的语言描述该特定实施例。然而应理解,不试图通过使用特定语言限止本发明的范围。
对与本发明有关专业的普通人士,所讨论的本发明的原理的变更、进一步修改和进一步应用都被认为是正常的。
本发明针对由简明硬件标识(CHWID)识别给定计算机系统的硬件配置的方法。本发明还针对通过识别在选定数目的组件类别中的每一个中单个组件实例产生简明硬件标识(CHWID)的方法。本发明还针对使用简明硬件标识(CHWID)判断软件产品是否能在某一计算机硬件配置上使用的方法。
对包括各种硬件组件的计算机系统能产生简明硬件标识(CHWID)。示例性计算机系统能包括若干硬件组件,它们被分组成不同类别,包括但不限于硬盘驱动器、光盘驱动器、网卡、显示适配器、只读存储器(ROM)、随机存取存储器(RAM)和基本输入/输出系统(BIOS)。下面描述用于实现本发明的示例性计算机系统和示例性操作环境。
示例性操作环境下面将参考附图描述本发明的示例性实施例,其中相同的序号表示类似的单元。图1示出为实施本发明的示例性操作环境。示例性操作环境包括以传统的个人计算机20形式的通用计算设备。通常,个人计算机20包括处理单元21、系统存储器22和将包括系统存储器22的各种系统组件耦接到处理单元21的系统总线23。系统总线23能是若干类型总线结构的任一种、包括存储总线或存储控制器、外围总线,和使用各种总线体系结构中的任一种的本地总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。包含帮助(如在起动期间)在个人计算机20的各单元之间传输信息的基本例行程序的基本输入/输出系统(BIOS)26存储在ROM24中。
个人计算机20还包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移磁盘29的磁盘驱动器28和用于读写如CD-ROM或其它光介质的可移光盘31的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接系统总线23。虽然这里描述的示例性实施例采用硬盘27、可移磁盘29和可移光盘31,本专业熟练人士知道,在示例性操作环境中也能使用其它类型能存储由计算机访问的数据的计算机可读介质,如盒式磁带、闪存卡、数字视频盘、伯努利式盒带、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。除监视器外,个人计算机通常包括如扬声器和打印机等其他外围输出设备(未示出)。
使用到一个或多个远程计算机49的逻辑连接,个人计算机20能在网络环境中操作。远程计算机49可以是另外的个人计算机、服务器、客户机、路由器、网络PC、对等设备或其它公共网络节点。虽然远程计算机49通常包括以上与个人计算机20有关的单元中的多个或所有,在图1中只示出存储设备50。图1中描绘出的逻辑连接包括局域网(LAN)51和广域网(WAN)52。那样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
在LAN网络环境使用时,个人计算机20通过网络接口或适配器53连到局域网51。在WAN网络环境使用时,个人计算机20通常包括调制解调器54或其他装置,用于建立经过如因特网那样的WAN52上的通讯。内置或外接的调制解调器54经串行接口46连结系统总线23。在网络环境中,相对于个人计算机画出的程序模块或其一部分能存储在远程存储设备50。可以理解,示出的网络连接是示例性的,可以使用在计算机之间建立通讯链路的其它装置。
此外,本领域普通技术人员知道,本发明能在其它计算机系统配置中实现,包括手持式设备、多处理器系统、基于微处理器的或可编程的消费型电子设备、网络个人计算机、小型机、大型主机等。本发明也能在分布式计算机环境中实现,其中任务通过经通讯网络链接的远程处理设备完成。在分布式计算机环境中,程序模块能位于本地和远程存储设备中。
本发明的示例性实施例的实现如上所述,计算机系统通常包括多种类别的硬件组件。此外,计算机系统能包括再每个硬件组类别中的多个组件(如二个硬盘驱动器)。
本发明的简明硬件标识(CHWID)考虑在用于确定CHWID的每个希望的类别的硬件组件中的单个组件设备(这里也能称为“实例”)。本发明的简明硬件标识(CHWID)也能考虑在计算机硬件系统的给定的组件类别中不存在的组件设备。例如,在检查给定的计算机硬件配置之前能作出用于识别给定的计算机硬件配置的组件类别的判断。计算机硬件配置可以包括或可以不包括对用于产生计算机硬件配置的简明硬件标识(CHWID)的每个选定的组件类别的组件实例。
下面给出用于产生简明硬件标识(CHWID)的示例性方法。此外,下面还描述了使用简明硬件标识(CHWID)作为反盗版工具的本发明的示例性方法。
I.对计算机系统产生简明硬件标识(CHWID)下面给出示例性简明硬件标识(CHWID)的各部分的描述。
A.简明硬件标识(CHWID)给定计算机系统的简明硬件标识(CHWID)希望包括两个不同的部分(1)可选的版本组件和(2)散列组件。每个可能的简明硬件标识(CHWID)部分能从给定计算机系统的硬件配置导出。图2中示出计算机硬件配置和在每个组件类别中的实例的例子。
如图2所示,示例性计算机硬件配置20包括8个不同的组件类别21-28,在组件配备21-28中分布着总共19个组件实例200。CDRom组件类别21包括4个组件实例;IDE组件类别22包括2个组件实例;驱动器组件类别23包括1个组件实例;显示组件类别24包括1个组件实例;SCSI组件类别25包括2个组件实例;盘组件类别26包括6个组件实例;网卡组件类别27包括1个组件实例;处理器(即CPU)组件类别28包括2个组件实例。图2中的行29列出一串数字,表示在8个组件类别21-28的每一个中组件实例的个数。
需要指出的是,在给定组件类别中的组件实例的数能在0和表示给定硬件配置所需要的个数之间变化,尽管在一种实现中也能任意的限止每个组件类别的组件实例数。通常,给定的硬件配置对每个组件类别包括0到约6个组件实例。如下所述,即使一组件类别不包含组件实例,在组件类别中不存在组件实例也提供了一段信息加入到简明硬件标识(CHWID)中。
图3示出示例的简明硬件标识(CHWID)。图3的示例性简明硬件标识(CHWID)35是一种识别图2示出的计算机硬件配置的可能方式。如上讨论,简明硬件标识(CHWID)35可希望包括两个独立的组件版本组件31’和散列组件33’。图3中描绘出简明硬件标识(CHWID)35的两个独立部分中的每一个。
头部部分31的版本组件310用于识别详备硬件标识(VHWID)34及其相应的简明硬件标识(CHWID)35的特定的版本,详备硬件标识(VHWID)34及其相应的简明硬件标识(CHWID)35被用来标识给定计算机系统。例如,通过使用一组参数创建版本1,同时使用独立的不同的一组参数创建版本2,详备硬件标识(VHWID)或简明硬件标识(CHWID)的特定版本(如版本“1”)能不同于详备硬件标识(VHWID)或简明硬件标识(CHWID)的另外版本(如版本“2”)。能使用各种参数创建详备硬件标识(VHWID)及其对应的简明硬件标识(CHWID)的给定版本。合适的参数包括但不限于(1)在简明硬件标识(CHWID)35中表示的组件类别的数目;(2)用于创建详备硬件标识(CHWID)34的组件类别的最大和/或最小数目;(3)在给定的VHWID组件类别中所需考虑的组件实例的最大和/或最小数目;(4)用于对详备硬件标识(VHWID)34中的每个组件实例产生散列值的第一散列函数;(5)用于形成详备硬件标识(VHWID)34的每个散列结果的长度;(6)详备硬件标识(VHWID)34的最大长度;(7)用于创建简明硬件标识(CHWID)35的组件类别散列结果的最大和/最小数目;(8)用于对每个组件实例产生第二散列值的第二散列函数;(9)用于形成简明硬件标识(CHWID)35的每个第二散列结果的长度;和(10)简明硬件标识(CHWID)35的最大长度。
某些组件类别不能具有多个组件实例,它们被确定为单实例类别。总的系统RAM就是单实例类别的一个例子。单实例类别的数据被散列并在需要时被截断,然后存入头部部分31的截断数值部分312。在头部中表示的每个单实例类别具有相关的截断数值部分312。
希望的是简明硬件标识(CHWID)35的版本组件31’有固定的长度,它对所有具有特定版本类型(如版本1的CHWID)的简明硬件标识是一致的。
计数部分32包括一串n个数字,表示在用于准备详备硬件标识(CHWID)34的n个组件类别的每一个中的组件实例数。如图3所示,计数部分32包括数字串“42112612“,对应于图2中示出的组件类别21-28中组件实例。应注意,若一个组件类别不包含组件实例,对该特定的组件类别计数部分32包含“0”。
用于创建详备硬件标识(VHWID)34的散列部分33包括表示在图2中示出的组件类别21-28中19个组件实例的每一个的第一散列值的级联串,每个独立的散列值能具有最多约160比特的散列结果。希望的是,每个独立的散列结果具有从约10个到20个比特的长度,更希望的是大约16比特。
详备硬件标识(VHWID)34的散列部分33的长度根据给定硬件配置的n个组件类别中的组件实例数而改变。散列部分33的总长度等于组件实例的个数乘以对每个组件实例散列结果所希望的散列结果长度。在此例中,详备硬件标识(VHWID)34的最终散列部分33具有希望的304比特(即19×16=304)的总长度。
简明硬件标识(VHWID)35的散列部分33’不同于用于创建详备硬件标识(VHWID)34的散列部分33。在本发明的一个示例性实施例中,简明硬件标识(CHWID)35的散列部分33’包括每个组件类别的一个组件实例第二散列值,它是从在每个组件类别的一个组件实例第一散列值上执行第二散列函数得到的。组件实例第一散列值从用于创建详备硬件标识(VHWID)34的散列部分33的n个组件类别中的一个或多个选择。在将要进一步通过第二散列函数处理的散列部分中选择组件实例第一散列值的方法是(i)借助随机选择过程或(ii)借助预定的方法。一个示例性预定方法包括,如图3所示在每个组件类别中选择第一实例。
简明硬件标识(CHWID)35的最终散列部分33’包括由在散列部分33的选择组件实例第一散列值上执行第二散列函数而得到的组件实例第二散列值(v’x)的级联串。每个独立的组件实例第二散列值能具有最多约16比特的长度。希望的是,每个分别的组件实例第二散列值具有总共8比特的长度,更希望的是从约3比特到约6比特。组件实例第二散列值(v’x)示于图3,并通过在下列第一散列值的串上执行第二散列函数得到v1、v5、v7、v8、v9、v11、v17和v18,以产生组件实例第二散列值v’1、v’5、v’7、v’8、v’9、v’11、v’17和v’18。
简明硬件标识(CHWID)35的散列部分33’通常具有小于约64比特的长度。散列部分33’的长度能根据下列而变化(i)用于创建散列部分33’的组件实例第一散列值的数目,和(ii)对每个单独的组件实例第二散列值的第二散列值长度。
如图3所示,详备硬件标识(VHWID)34能由头部部分31、计数部分32和散列部分33的级联串表示。类似的,简明硬件标识(CHWID)35能由版本组件31’和散列部分33’的级联串表示。下面描述对计算机硬件配置确定详备硬件标识(VHWID)34和简明硬件标识(CHWID)35的示例性方法。
应注意,本发明的简明硬件标识(CHWID)可以只包括上述部分之一。在本发明的一个示例性实施例中,给定计算机硬件配置的简明硬件标识(CHWID)35只包括散列部分33’。在此实施例中,简明硬件标识(CHWID)35不包括版本组件31’。
不管用于创建简明硬件标识(CHWID)35的组件,简明硬件标识(CHWID)35希望地具有小于约256比特的总长度。在本发明的示例性实施例中,简明硬件标识(CHWID)35具有从约32比特到约64比特的总长度。
B.对计算机系统确定详备硬件标识(VHWID)本发明的VHWID能由在图4-6中示出的示例性方法确定。示例性方法的步骤能由在客户计算机上(类似于上述参考图1描述的计算机20)的软件产品中的软件代码实现。如图4-6所示,对给定的计算机硬件配置(这里称为“HW1”)的VHWID的示例性确定从步骤401开始,其中选择组件类别数n以识别给定的计算机硬件配置HW1。如上讨论,给定的计算机系统能包括各种硬件组件和硬件组件的类别。示例性硬件组件类别包括但不限于硬盘驱动器、逻辑盘分区、光盘、网卡、显示适配器、只读存储器(ROM)、随机存取存储器(RAM)、IDE设备、声卡、视频卡、处理器、SCSI设备和系统BIOS。希望的是,硬件组件类别的个数n是从2到约16的整数。通常,为了(i)更准确地识别给定的计算机系统,和(ii)更精确地度量给定计算机系统的限度,希望n尽可能大。
在步骤401选择组件类别的个数n之后,在步骤402识别每个组件类别。组件类别可以包括如硬盘驱动器类别那样上述组件类别的任一个。在下面表1中给出用于识别样本硬件配置HW1的组件类别的示例性列表。
表1.用于识别样本硬件配置HW1的硬件组件类别的示例性列表
如表1所示,在此例中n等于8,识别的硬件组件类别包括(1)CdRom类别;(2)IDE设备类别;(3)驱动器类别;(4)显示适配器设备类别;(5)SCSI设备类别;(6)盘类别;(7)网卡类别;和(8)CPU处理器类别。
在步骤402识别每个组件类别后,在步骤403识别在每个硬件组件类别中的所有设备或实例。在步骤403还确定“计数”(即在每个组件类别中的组件设备或实例的个数)。希望在特定组件类别中的每个实例由与该实例相关的最唯一的识别串识别。例如,硬件配置能包含由NEC公司制造并具有识别串“NECCDRW24 S15”的CdRom。用于判断给定实例的最唯一的识别串的可用方法能在本发明中使用。在步骤404示出对每个组件实例赋予识别串的步骤。
一旦对每个组件实例赋予识别串,在步骤405准备详备硬件标识(VHWID)的头部部分。在步骤406,详备硬件标识(VHWID)的特定版本被输入到头部以形成头部部分310(如图3所示)。如上所述,版本号能表示用于确定详备硬件标识(VHWID)及其对应的简明硬件标识(CHWID)的一个或多个参数。
在步骤407,识别在头部表示的组件类别。通常,能只具有单个组件实例的组件类别,即单实例类别,在VHWID的头部部分表示。能在VHWID的头部部分表示的合适的组件类别包括但不限于存储器组件类别、计算机可检修能力的组件类别(即计算机是否可检修)、BIOS或其组合。在本发明的示例性实施例中,VHWID的头部部分包括从硬件配置单个组件类别来的信息。
方法从步骤407进到判断框409。在判断框409作出判断,即形成头部的一部分的组件实例标识串是否来源于一个散列函数。识别串能来源于一个散列函数或被截断成希望的比特数。虽然作为一种选择未在图5中示出,应注意只要识别串小于字符的希望最大值,识别串能逐字地使用,但通常不大于16比特的。
若识别串来源于一个散列函数,方法进行到步骤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,但不限于这些,所有这些都为本领域普通技术人员公知。合适的散列函数及其描述能在Bruce Schneier的“应用密码学(Applied Cryptography)”中找到,它由John Wiley & Sons(ISBN#0471117099)出版,其揭示内容整体地引入这里。
在本发明的实施例中,在对给定的组件实例执行第一散列函数之前,一个“盐值(salt value)”能加到组件实例标识符。在此实施例中,加入盐值使能基于同一计算机硬件配置产生不同的VHWID。在运行不同应用或不同过程时,同一硬件配置的不同VHWID是有益的。下面讨论对同一硬件配置的不同VHWID是有益的情况的例子。
例如,若用户激活从同一经销商来的多个软件包,有可能使用VHWID联系独立的激活记录,以建立该用户软件购买的习惯的图。为预防此情况,通过使用如hashx=MD5[(盐值(salt value))x+ID String]那样的散列函数(其中对每个软件包盐值是不同的)构造每个独立的散列,使从相同机器来的不同的VHWID看来是无联系的。
在步骤416,对每个组件实例的第一散列结果被级联,以形成详备硬件标识(VHWID)34的散列部分33(如图3所示)。在步骤417,通过级联头部部分31、计数部分32和散列部分33来组装最终的详备硬件标识(VHWID)34。
在步骤418,存储最终的对硬件配置HW1的详备硬件标识,为以后使用。对硬件配置HW1的详备硬件标识(VHWID)能存储在本地(如在寄存器,文件系统,或安全存储中),在可访问的远处(如数据库),或发送到交换所服务器,用于获取许可证。
虽然上述示例性方法产生包含头部31、计数部分32和散列部分33的详备硬件标识(VHWID),在本发明的某些实施例中,对硬件配置HW1的详备硬件标识(VHWID)可以只包含(i)仅仅散列部分33或(ii)与散列部分33结合的计数部分32,如使VHWID包括与散列部分33级联的计数部分32。
C.对计算机系统确定简明硬件标识(CHWID)本发明的简明硬件标识(CHWID)能如图7-8所示那样确定。用于形成简明硬件标识(CHWID)的示例性方法的步骤能由在客户计算机(类似于参考图1描述的计算机20)上的软件产品中的软件代码执行。如图7-8所示,形成对硬件配置HW1的一个可能的简明硬件标识(CHWID)的示例性方法开始于步骤420。
在步骤420,第二散列函数在一个组件实例第一散列值上执行,后者来自于从用于创建详备硬件标识(VHWID)34的散列部分33的一个或多个组件类别(n个)中选择的q个组件类别的每一个。如上所述,第二散列函数能在一个或多个组件实例第一散列值上执行,其中从n个组件类别的一个或多个中选择组件实例第一散列值的方法通过(i)随机选择过程或(ii)预定方法完成。希望地,一个组件实例散列值从至少(n-5)组件类别中选择,更希望地,从至少(n-3)个组件类别选择,进一步希望地,从至少(n-2)个组件类别选择。在本发明的示例性实施例中,从所有n个组件类别中选择一个组件实例第一散列值,以形成对应的组件实例第二散列值。
在用于形成详备硬件标识(VHWID)34的散列部分33的第一散列函数的场合,在本发明中能使用任何已知的散列函数,只要该散列函数能接受最多约160比特的组件实例第一散列值,并产生具有小于约32比特的固定长度的组件实例第二散列值。合适的第二散列函数的例子包括如上讨论为本专业普通人士众知的散列函数算法HAVAL、MD2、MD4、MD5和SHA-1,但不限于这些。
在本发明的实施例中,在对给定的组件实例第一散列值执行第二散列函数之前,可将“盐值(salt value)”加到组件实例第一散列值。在此实施例中,加入盐值使得能根据相同的计算机硬件配置产生不同的简明硬件标识(CHWID)。对相同硬件配置不同的简明硬件标识(CHWID)在运行不同应用或不同过程时是有益的。下面讨论对相同硬件配置的不同的CHWID是有益的情况的一个例子。
例如,若用户激活从同一经销商来的多个软件包,有可能使用CHWID联系分别的激活记录,以建立该用户软件购买的习惯的图。为预防此情况,通过使用如hashx=MD5[(盐值(salt value))x+ID String]那样的散列函数(其中对每个软件包盐值是不同的)构造每个独立的散列,使从不同机器来的不同的CHWID看来是无联系的。
在步骤421,级联组件实例第二散列值,以形成简明硬件标识(CHWID)35的散列部分33’(如图3所示)。
在步骤427,简明硬件标识(CHWID)的版本组件31’与简明硬件标识(CHWID)的散列部分33’级联以形成对硬件配置HW1的最终简明硬件标识(CHWID)。然后方法进到步骤428。回到上述判断框425,若简明硬件标识(CHWID)不包括版本组件31’,方法直接进到步骤428。
在步骤428,存储对硬件配置HW1最终的简明硬件标识(CHWID),为以后使用。如下所述,对硬件配置HW1的简明硬件标识(CHWID)能存储在本地(如在寄存器、文件系统、或安全存储中)、或在可访问的远处(如数据库)。
如上讨论,在本发明的某些实施例中,对硬件配置HW1的简明硬件标识(CHWID)可以只包含散列部分33’。
H.使用简明硬件标识(CHWID)使得能在计算机系统上使用软件产品本发明还针对使用简明硬件标识(CHWID)使得能在具有给定的计算机硬件配置的计算机系统上使用软件产品的方法。在本发明的实施例中,使用简明硬件标识(CHWID)使得能在具有给定的计算机配置的计算机系统上使用软件产品的方法在以下情况被启用(1)除了初始安装以外在计算机上软件的任何安装期间,(ii)在运行已经存在于计算机硬件配置中的组件上的软件产品或应用期间,或(iii)两者。在图9-10中描述使用简明硬件标识(CHWID)的示例性方法。示例性方法的步骤能由在客户计算机(类似于参考图1描述的计算机20)上的软件产品中的软件代码实行。
如图9的步骤501所示,软件产品在具有硬件配置HW2的计算机上装载或起动。计算机硬件配置HW2(i)能与用于产生初始的详备硬件标识(称之为iVHWID)或初始的简明硬件标识(称之为iCHWID)的硬件配置相同,或(ii)能是完全不同的计算机。
在步骤502,对计算机硬件配置HW2产生新的简明硬件标识(称之为nCHWID)。能如上所述并如图4-8所示地对计算机硬件配置HW2产生新的简明硬件标识(nCHWID)。一旦对计算机硬件配置HW2产生了新的简明硬件标识(nCHWID),在步骤503检索存储的详备硬件标识(VHWID)或存储的简明硬件标识(CHWID)。通常,存储的详备硬件标识(VHWID)是初始的详备硬件标识(iVHWID),它在软件产品初始安装到第一计算机硬件配置HW1期间在HW1上产生。类似地,存储的简明硬件标识(CHWID)通常是初始的简明硬件标识(iCHWID),它在软件产品初始安装到第一计算机硬件配置HW1期间在HW1上产生。
在判断框504作出判断,以前存储的硬件标识是否为存储的简明硬件标识(CHWID)。若以前存储的硬件标识是存储的简明硬件标识(sCHWID),方法进到步骤505,其中硬件配置HW2的新简明硬件标识(nCHWID)与硬件配置HW1的以前存储的简明硬件标识(sCHWID)相比较。若以前存储的硬件标识是存储的详备硬件标识(sVHWID),方法进到步骤509。在步骤509,新的简明硬件标识(CHWID)与存储的详备硬件标识(VHWID)比较。对在存储的详备硬件标识(VHWID)的每个组件类别中的每个第一散列值执行第二散列函数,且其结果与在新的简明硬件标识(CHWID)中每个组件类别相关的第二散列值比较。方法随后进到判断框506。
在判断框506作出判断,组件类别匹配的个数是否等于或超过为了能在硬件配置HW2上使用软件产品所必需的组件类别匹配数m。若组件类别匹配数等于或超过所需的组件类别匹配数m,方法进到步骤507,其中方法使得能在硬件配置HW2上使用该软件产品。若组件类别匹配数小于所需的组件类别匹配数m,方法进到步骤508,其中该方法使得不能在硬件配置HW2上使用该软件产品。
在步骤505,硬件配置HW2的新简明硬件标识(nCHWID)与(1)硬件配置HW1以前存储的简明硬件标识(CHWID)或(2)硬件配置HW1的以前存储的详备硬件标识(VHWID)作比较,这里后两者一起称为“硬件配置HW1的硬件标识(HWID)”,此比较涉及一个或多个规则,用于判断对给定的组件类别是否存在匹配。希望地,使用简明硬件标识(CHWID)使得能使用软件产品的方法包括一个或多个下列规则,用于确定在对硬件配置HW2新产生的简明硬件标识(nCHWID)与硬件配置HW1的简明硬件标识(CHWID)或详备硬件标识(VHWID)之间的组件类别匹配数(i)在表示在硬件配置HW2的一个或多个组件类别中的选择组件实例的新简明硬件标识(nCHWID)中的每个组件实例第二散列结果与在硬件配置HW1的简明硬件标识(CHWID)中的或从HW1的详备硬件标识(VHWID)推导出的对应的一个或多个组件类别中的每个组件实例第二散列结果进行比较;(ii)当在对硬件配置HW2的新的简明硬件标识(nCHWID)的组件类别中的一个第二组件实例散列结果与在硬件配置HW1的简明硬件标识(CHWID)中的或从HW1的详备硬件标识(VHWID)推导出的对应的组件类别中的任何一个第二组件实例散列结果匹配时,则在硬件配置HW2的组件类别与硬件配置HW1的对应组件类别之间存在匹配;(iii)当在用于形成对硬件配置HW2的新简明硬件标识(nCHWID)的组件类别中的一个第二组件实例散列结果与在用于形成硬件配置HW1的详备硬件标识(VHWID)的对应组件类别中二个或多个导出的第二组件实例散列结果相匹配时,在硬件配置HW2的组件类别和硬件配置HW1的对应组件类别之间存在单个匹配;(iv)当在硬件配置HW2中的组件类别不包含第二组件实例散列结果,且在硬件配置HW1中对应的组件类别的确包含第二组件实例散列结果时,在硬件配置HW2的组件类别和硬件配置HW1的对应组件类别之间不存在匹配;(v)当硬件配置HW2中的组件类别包含单个第二组件实例散列结果,且在硬件配置HW1中的对应组件类别不包含第二组件实例结果时,在硬件配置HW2的组件类别和硬件配置HW1的对应的组件类别之间不存在匹配;和(vi)当在硬件配置HW2中的组件类别不包含第二组件实例散列结果,且在硬件配置HW1中的对应组件类别中不包含第二组件实例散列结果时,在硬件配置HW2的组件类别和硬件配置HW1的对应组件类别之间存在匹配;和(vii)在硬件配置HW2和硬件配置HW1之间的所需组件类别匹配数m可以是预定的并嵌入到给定的软件产品的代码中。
需要的组件类别匹配的数m根据对硬件配置组件改变所要求的限度进行选择。所需组件类别匹配数m可以是(i)与在确定详备硬件标识(VHWID)期间考虑的组件类别的总数n一样大,或(ii)与在确定简明硬件标识(CHWID)期间考虑的选择组件类别的总数q一样大,或(iii)象1那样小。当m增加时,对计算机硬件配置改变的富余程度减少。例如,若组件类别的总数n等于10而m等于7,为使得能加载或运行软件产品,10个组件类别中的7个必须匹配至少一个组件实例。若组件类别匹配的数小于7,该软件产品将不能在该计算机硬件配置上运行或加载。
所需的组件类别匹配数m可以由软件制造商预定,并编码到用于产生简明硬件标识(CHWID)的软件产品代码中。在本发明的一个示例性实施例中,希望地,m等于(n-3)。更希望地,m等于(n-2)。在本发明的另外示例性实施例中,希望地,m等于(q-3)。更希望地,m等于(q-2)。然而,如上指出,m能从1到n。
上面所描述并示于图4-10的方法步骤能在本地或远处执行。通常,客户购买能在如图1所示的计算机20那样的给定计算机上运行的软件产品。软件产品能是具有存储在可运输的计算机可读介质(如CD-ROM或软盘)上的软件程序的热塑料包装的产品。另选地,软件产品能在网络(如局域网(LAN)51,或广域网(WAN)52)上电子地传递。客户将软件产品作为存储在系统存储器22上的程序加载到计算机20上。
在软件产品安装期间,通常提示用户输入软件产品的软件产品标识(PID)的一部分到计算机20。例如,PID能从印刷在热塑料包装袋的标签上的CD密钥得到。客户输入与该软件产品的软件程序有关的PID。PID存在计算机20本地和/或远程地存在可由第三方(如激活机构)访问的位置,该位置既可以在局域网(LAN)51上也可以在广域网(WAN)52上。
如上所述,在安装或激活软件产品期间,还利用在软件产品中的代码生成或由软件产品的安装触发详备硬件标识(VHWID)和/或简明硬件标识(CHWID)。由本发明的方法产生的详备硬件标识(VHWID)和/或简明硬件标识(CHWID)与软件产品标识(PID)有关,并与软件产品标识一起存在本地计算机20上和/或远程地存在可由第三方(如激活机构)访问的位置,该位置既可以在局域网(LAN)51上也可以在广域网(WAN)52上。
作为安装过程的一部分,需要客户用激活机构来激活该软件产品。例如,此机构可以是产品制造者或授权的第三方。激活过程意在强迫客户激活软件产品(I)在特定计算机上安装和使用或(ii)按产品许可证的协定安装和使用。这样的激活过程详细描述在转让予Microsoft Corporation(Redmond,WA)的美国NO.6,243,468专利中,其内容整体引入这里作为参考。
由本发明的方法产生的详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和软件产品标识(PID)能本地存在计算机20上和/或远程地存在可由激活机构访问的位置,该位置既可以在局域网(LAN)51上也可以在广域网(WAN)52上。希望地,该软件产品(i)在计算机20上存储(a)详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和(b)有关的软件产品标识(PID),以及(ii)在广域网(WAN)52上电子地发送(a)详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和(b)相关的软件产品标识(PID)到激活服务器。希望地,该软件产品在首次起动时自动地显示图形用户界面(UI)对话窗口,它提示用户起动与激活服务器的连接以便激活。激活服务器维持一个数据库,存储(a)接收到的详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和(b)有关的软件产品标识(PID)。
对给定软件产品的详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和相关的软件产品标识能被存储无限长时间,直到软件产品被重新安装到另外计算机或在第一台计算机(即在初始安装期间使用的计算机)上起动。当同样的软件产品在另外计算机重新安装或在第一台计算机上起动时,根据本发明,在软件产品上的代码起动产生新的简明硬件标识(CHWID)的方法。软件产品还从本地计算机20或经局域网(LAN)51或广域网(WAN)52从远处检索以前存储的(a)详备硬件标识(VHWID)和/或简明硬件标识(CHWID)和(b)软件产品的相关的软件产品标识(PID)。如上所述,在新的简明硬件标识(CHWID)与以前存储的简明硬件标识(CHWID)之间作出比较。
在作为替换的手动情形,客户通过电话向服务代表提供简明硬件标识(CHWID),而服务代表根据该简明硬件标识(CHWID)向客户提供确认标识(CID)。客户通过UI窗口输入确认标识(CID)。
当由于第一台计算机(即在初始安装期间使用的计算机)的硬件配置中的重大改变,使得软件产品的使用被拒绝时,向客户提供一个对话框,说明该软件产品的使用被拒绝,能从给定的源获得有关该软件产品进一步使用的信息。
III.简明硬件标识(CHWID)的其它使用本发明的简明硬件标识(CHWID)也能用于除上述以外的其它目的。在本发明的一个实施例中,使用简明硬件标识(CHWID)来创建半唯一的安装ID以跟踪机器。在本发明的另外实施例中,当授予在客户机上使用软件的许可证时,在交换所服务器上使用简明硬件标识(CHWID 。
虽然已参考特定的实施例作了详细说明,本领域普通技术人员在理解了以上描述之后应容易地想象出对这些实施例的更改、变化和等效物。因而,本发明的范围应被评估为附后的权利要求及其等效物的范围。
权利要求
1.一种对具有第一硬件配置的第一计算机系统产生简明硬件标识(CHWID)的方法,该方法包括选择n个组件类别;确认n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中该多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中该多个组件实例第二散列结果包括在一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数而得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一计算机系统的简明硬件标识(CHWID)。
2.如权利要求1的方法,其特征在于包括级联(i)版本组件和(ii)简明硬件标识(CHWID)的散列部分,以形成对第一计算机系统的简明硬件标识(CHWID)。
3.如权利要求1的方法,其特征在于n是最大约16的整数。
4.如权利要求2的方法,其特征在于版本组件包括版本号。
5.如权利要求1的方法,其特征在于n个组件类别的至少一个包含两个或更多组件实例。
6.如权利要求1的方法,其特征在于n个组件类别的每一个包含从0到14个组件实例。
7.如权利要求1的方法,其特征在于每个组件实例第一散列结果被截断成16比特的数。
8.如权利要求1的方法,其特征在于每个组件实例第二散列结果被截断成少于8比特的数。
9.如权利要求1的方法,其特征在于对第一计算机系统的简明硬件标识(CHWID)具有最多256比特的长度。
10.如权利要求9的方法,其特征在于对第一计算机系统的简明硬件标识(CHWID)具有从约32到约64比特的长度。
11.如权利要求1的方法,其特征在于该方法在加载软件产品到第一计算机系统的步骤期间起动。
12.一种计算机系统,所述系统包括至少一个能在该计算机系统上使用的应用模块的,其中所述至少一个应用模块包括用于执行权利要求1的方法的应用程序代码。
13.一种计算机可读介质,具有存储其上用于完成权利要求1的方法的计算机可执行指令。
14.一种判断软件产品是否能在具有第二硬件配置的第二计算机系统上使用的方法,其中第二计算机系统与具有第一硬件配置的计算机系统相同或不同,所述软件产品初始安装在第一计算机,其中该方法包括对第二硬件配置产生第二简明硬件标识(sCHWID);将对第二硬件配置的第二简明硬件标识(sCHWID)与(i)对第一硬件配置的第一简明硬件标识(fCHWID)或(ii)对第一硬件配置的第一详备硬件标识(fVHWID)进行比较;若在第二硬件配置的组件类别和第一硬件配置的对应的组件类别之间存在若干匹配,且匹配数等于或超过需要的组件类别匹配数m,加载软件产品到第二计算机系统,和若匹配数小于m,阻止软件产品加载到第二计算机系统。
15.如权利要求14的方法,其特征在于第二简明硬件标识(sCHWID)由一个方法产生,该方法包括选择第二硬件配置的n个组件类别;确认在第二硬件配置的n个组件的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第二硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第二硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数所得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第二硬件配置的第二简明硬件标识(sCHWID)。
16.如权利要求14的方法,其特征在于第一简明硬件标识(fCHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;确认在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第一硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一简明硬件标识(fCHWID)。
17.如权利要求14的方法,其特征在于第一详备硬件标识(fVHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;确认在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;和级联多个第一散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一详备硬件标识(fVHWID)。
18.如权利要求14的方法,其特征在于当在对第二硬件配置的第二简明硬件标识的组件类别中的一个第二组件实例散列结果匹配(i)对第一硬件配置的第一简明硬件标识(fCHWID)的或(ii)从对第一硬件配置的详备硬件标识(fVHWID)的第一组件实例散列推导出的对应的组件类别中的第二组件实例散列结果的任一个时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
19.如权利要求14的方法,其特征在于当在对第二硬件配置的第二简明硬件标识(sCHWID)的组件类别中的一个第二组件实例散列结果匹配在对第一硬件配置的第一详备硬件标识(fVHWID)的对应的组件类别中从第一组件实例散列中推导的二个或更多第二组件实例散列结果时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在单个匹配。
20.如权利要求14的方法,其特征在于(a)当在第一硬件配置中的组件类别不包含组件实例,且在第二硬件配置中的对应组件类别包含组件实例,和(b)当在第一硬件配置中的组件类别包含单个组件实例,且在第二硬件配置中的对应组件类别不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间不存在匹配。
21.如权利要求14的方法,其特征在于当在第一硬件配置中的组件类型不包含组件实例,且在第二硬件配置中的对应组件类型不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
22.如权利要求14的方法,其特征在于m等于(n-3),其中n表示在用于形成第二简明硬件标识(sCHWID)的第二硬件配置中的组件类别数。
23.一种计算机系统,所述系统包括至少一个能在该计算机系统上使用的应用模块的,其中所述至少一个应用模块包括用于执行权利要求14的方法的应用程序代码。
24.一种计算机可读介质,具有存储其上用于完成权利要求14的方法的计算机可执行指令。
25.一种计算机可读介质,其上存储有计算机可执行指令,该计算机可执行指令执行对具有第一硬件配置的第一计算机系统产生简明硬件标识(CHWID)的一种方法,其中该方法包括选择n个组件类别;确认n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中该多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中该多个组件实例第二散列结果包括在一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数而得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一计算机系统的简明硬件标识(CHWID)。
26.如权利要求25的计算机可读介质,其特征在于还包括级联(i)版本组件和(ii)简明硬件标识(CHWID)的散列部分,以形成对第一计算机系统的简明硬件标识(CHWID)。
27.如权利要求25的计算机可读介质,其特征在于n是最大约16的整数。
28.如权利要求27的计算机可读介质,其特征在于版本组件包括版本号。
29.如权利要求25的计算机可读介质,其特征在于n个组件类别的至少一个包含两个或更多组件实例。
30.如权利要求25的计算机可读介质,其特征在于n个组件类别的每一个包含从0到14个组件实例。
31.如权利要求25的计算机可读介质,其特征在于对第一计算机系统的简明硬件标识(CHWID)具有最多256比特的长度。
32.如权利要求25的计算机可读介质,其特征在于该方法在加载软件产品到第一计算机系统的步骤期间起动。
33.一种计算机可读介质,其上存储有计算机可执行指令,该计算机可执行指令用于执行判断软件产品是否能在具有第二硬件配置的第二计算机系统上使用的一种方法,其中第二计算机系统与具有第一硬件配置的计算机系统相同或不同,所述软件产品初始安装在第一计算机,其中该方法包括对第二硬件配置产生第二简明硬件标识(sCHWID);将对第二硬件配置的第二简明硬件标识(sCHWID)与(i)对第一硬件配置的第一简明硬件标识(fCHWID)或(ii)对第一硬件配置的第一详备硬件标识(fVHWID)进行比较;若在第二硬件配置的组件类别和第一硬件配置的对应的组件类别之间存在若干匹配,且匹配数等于或超过需要的组件类别匹配数m,加载软件产品到第二计算机系统,和若匹配数小于m,阻止软件产品加载到第二计算机系统。
34.如权利要求33的计算机可读介质,其特征在于第二简明硬件标识(sCHWID)由一个方法产生,方法包括选择第二硬件配置的n个组件类别;确认在第二硬件配置的n个组件的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第二硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第二硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数所得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第二硬件配置的第二简明硬件标识(sCHWID)。
35.如权利要求33的计算机可读介质,其特征在于第一简明硬件标识(fCHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;确认在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第一硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一简明硬件标识(fCHWID)。
36.如权利要求33的计算机可读介质,其特征在于第一详备硬件标识(fVHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;识别在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;和级联多个第一散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一详备硬件标识(fVHWID)。
37.如权利要求33的计算机可读介质,其特征在于,其特征在于当在对第二硬件配置的第二简明硬件标识的组件类别中的一个第二组件实例散列结果匹配(i)对第一硬件配置的第一简明硬件标识(fCHWID)的或(ii)从对第一硬件配置的详备硬件标识(fVHWID)的第一组件实例散列推导出的对应的组件类别中的第二组件实例散列结果的任一个时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
38.如权利要求33的计算机可读介质,其特征在于当在对第二硬件配置的第二简明硬件标识(sCHWID)的组件类别中的一个第二组件实例散列结果匹配在对第一硬件配置的第一详备硬件标识(fVHWID)的对应的组件类别中从第一组件实例散列中推导的二个或更多第二组件实例散列结果时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在单个匹配。
39.如权利要求33的计算机可读介质,其特征在于(a)当在第一硬件配置中的组件类别不包含组件实例,且在第二硬件配置中的对应组件类别包含组件实例,和(b)当在第一硬件配置中的组件类别包含单个组件实例,且在第二硬件配置中的对应组件类别不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间不存在匹配。
40.如权利要求33的计算机可读介质,其特征在于当在第一硬件配置中的组件类型不包含组件实例,且在第二硬件配置中的对应组件类型不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
41.如权利要求33的计算机可读介质,其特征在于m等于(n-3),其中n表示在用于形成第二简明硬件标识(sCHWID)的第二硬件配置中的组件类别数。
42.一种计算机系统,所述系统包括至少一个能在该计算机系统上使用的应用模块的,其中所述至少一个应用模块包括用于执行一种对具有第一硬件配置的第一计算机系统产生简明硬件标识(CHWID)的方法的应用程序代码,该方法包括选择n个组件类别;确认n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中该多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中该多个组件实例第二散列结果包括在一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数而得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一计算机系统的简明硬件标识(CHWID)。
43.如权利要求42的计算机系统,其特征在于还包括级联(i)版本组件和(ii)简明硬件标识(CHWID)的散列部分,以形成对第一计算机系统的简明硬件标识(CHWID)。
44.如权利要求42的计算机系统,其特征在于n是最大约16的整数。
45.如权利要求43的计算机系统,其特征在于版本组件包括版本号。
46.如权利要求42的计算机系统,其特征在于n个组件类别的至少一个包含两个或更多组件实例。
47.如权利要求42的计算机系统,其特征在于n个组件类别的每一个包含从0到14个组件实例。
48.如权利要求42的计算机系统,其特征在于对第一计算机系统的简明硬件标识(CHWID)具有最多256比特的长度。
49.如权利要求42的计算机系统,其特征在于该方法在加载软件产品到第一计算机系统的步骤期间起动。
50.一种计算机系统,所述系统包括至少一个能在该计算机系统上使用的应用模块的,其中所述至少一个应用模块包括用于执行一种判断软件产品是否能在具有第二硬件配置的第二计算机系统上使用的方法的应用程序代码,其中第二计算机系统与具有第一硬件配置的计算机系统相同或不同,所述软件产品初始安装在第一计算机,其中该方法包括对第二硬件配置产生第二简明硬件标识(sCHWID);将对第二硬件配置的第二简明硬件标识(sCHWID)与(i)对第一硬件配置的第一简明硬件标识(fCHWID)或(ii)对第一硬件配置的第一详备硬件标识(fVHWID)进行比较;若在第二硬件配置的组件类别和第一硬件配置的对应的组件类别之间存在若干匹配,且匹配数等于或超过需要的组件类别匹配数m,加载软件产品到第二计算机系统,和若匹配数小于m,阻止软件产品加载到第二计算机系统。
51.如权利要求50的计算机系统,其特征在于第二简明硬件标识(sCHWID)由一个方法产生,该方法包括选择第二硬件配置的n个组件类别;确认在第二硬件配置的n个组件的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第二硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第二硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数所得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第二硬件配置的第二简明硬件标识(sCHWID)。
52.如权利要求50的计算机系统,其特征在于第一简明硬件标识(fCHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;确认在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;产生多个组件实例第二散列结果,其中多个组件实例第二散列结果包括在第一硬件配置的一个或多个选择组件类别中的选择组件实例第一散列结果上执行第二散列函数得到的第二散列结果;和级联多个第二散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一简明硬件标识(fCHWID)。
53.如权利要求50的计算机系统,其特征在于第一详备硬件标识(fVHWID)由一个方法产生,该方法包括选择第一硬件配置的n个组件类别;确认在第一硬件配置的n个组件类别的每一个中的所有组件实例;产生多个组件实例第一散列结果,其中多个组件实例第一散列结果包括对每个组件实例的第一散列结果和对第一硬件配置的n个组件类别的至少一个第一散列结果;和级联多个第一散列结果以形成散列部分,其中散列部分形成对第一硬件配置的第一详备硬件标识(fVHWID)。
54.如权利要求50的计算机系统,其特征在于当在对第二硬件配置的第二简明硬件标识的组件类别中的一个第二组件实例散列结果匹配(i)对第一硬件配置的第一简明硬件标识(fCHWID)的或(ii)从对第一硬件配置的详备硬件标识(fVHWID)的第一组件实例散列推导出的对应的组件类别中的第二组件实例散列结果的任一个时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
55.如权利要求50的计算机系统,其特征在于当在对第二硬件配置的第二简明硬件标识(sCHWID)的组件类别中的一个第二组件实例散列结果匹配在对第一硬件配置的第一详备硬件标识(fVHWID)的对应的组件类别中从第一组件实例散列中推导的二个或更多第二组件实例散列结果时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在单个匹配。
56.如权利要求50的计算机系统,其特征在于(a)当在第一硬件配置中的组件类别不包含组件实例,且在第二硬件配置中的对应组件类别包含组件实例,和(b)当在第一硬件配置中的组件类别包含单个组件实例,且在第二硬件配置中的对应组件类别不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间不存在匹配。
57.如权利要求50的计算机系统,其特征在于当在第一硬件配置中的组件类型不包含组件实例,且在第二硬件配置中的对应组件类型不包含组件实例时,在第二硬件配置的组件类别和第一硬件配置的对应组件类别之间存在匹配。
58.如权利要求50的计算机系统,其特征在于m等于(n-3),其中n表示在用于形成第二简明硬件标识(sCHWID)的第二硬件配置中的组件类别数。
全文摘要
揭示了对给定计算机系统产生简明硬件标识(CHWID)的系统和方法。简明硬件标识(CHWID)能用于根据对计算机系统硬件改变的程度,控制软件在给定计算机系统的使用。简明硬件标识(CHWID)能在如电话那样的有限带宽介质上以电的形式发送。
文档编号G06F12/00GK1530790SQ200410028648
公开日2004年9月22日 申请日期2004年3月3日 优先权日2003年3月3日
发明者C·古尼亚克迪, F·J·阿拉布拉巴, A·T·休斯, C 古尼亚克迪, 休斯, 阿拉布拉巴 申请人:微软公司