专利名称:安全机器计数的制作方法
安全机器计数北旦 冃尿软件盗版是使软件厂商每年流失大量金钱的全球性问题。一种称为临时拷 贝的盗版形式是在多个计算机上共享和安装软件,这违反了终端用户许可协 议。产品激活是减少这类盗版的一种方法。产品激活通常依赖于向软件厂商提交安装标识代码和/或硬件标识符。作 为响应,软件厂商返回激活确认代码。在典型的零售应用程序的产品激活中, 为每个盒装软件封装提供唯一产品密钥。通常,在某一试用期(软件安装之后 在无需激活的情况下运行的时间段)之后或期间,顾客必须联系软件厂商以激 活他或她的软件副本。未能激活的后果通常是软件的停用或者软件功能的降 级。通常,使用唯一产品密钥来生成唯一产品标识代码,该代码可与散列的硬 件相关值组合以生成运行该软件的机器专用的安装标识代码。通常将允许该软 件运行的激活确认返回给客户。在这方面,激活确认也可以是许可文件,或者 表示许可的二进制文件。在每次登陆时,获许可软件都进行校验以查看它实际 上是运行在其被激活的同一硬件上。如果校验失败,则在软件再次运行之前需 要再次激活。公司客户一般购买批量许可,因为对于公司客户一在其域中可能具有成百 或上千台机器一而言对每个已安装软件副本联系软件厂商以获得机器专用激 活代码并不可行。因此通常,批量许可的持有者无需联系软件厂商来激活其软 件,因为当检测到批量许可密钥时,软件会绕过激活要求。这就是公知的"产 品激活旁路"。因此,同一批量许可密钥能够在许多不同计算机上使用,而无 需在试用期满之前或之后进行激活以便运行该软件。虽然该特征使批量许可密 钥对公司客户安装软件而言更加方便,但是它同样是吸引力的盗版目标。例如, 盗版者获得合法的批量许可介质并购买或盗取有效的批量许可产品密钥。可在 称为"商家对消费者"盗版通道的方案中将该介质和产品密钥重新目的化并向 不知情客户出售。因此,需要一种用于在网络化计算环境中阻止盗版而不会使合法客户过度 承担繁琐的反盗版要求的机制。本发明满足这一需要。概述针对以上缺点和不足,一实施方式将一种软件激活旁路机制纳入到批量许 可环境中。根据这一实施方式,向软件应用程序提供一种指定需要在客户网络 上出现以便进行软件应用程序的正确激活旁路的最少机器数的策略。将网络内 的一台计算机指定为绑定服务机,而要安装软件应用程序的其它计算机作为客 户机。在某一时刻,每一客户机尝试执行该软件的激活旁路。为此,该客户机 生成含有机器标识符、时间戳以及与该软件应用程序相关的信息的激活旁路消 息,并将该信息发送给绑定服务机。在收到激活旁路消息时,绑定服务机对照所有这些已收到的机器标识符的 列表检验该机器标识符。如果该机器标识符并未出现在信任存储中,则对其进 行添加。绑定服务机对列表中的唯一机器标识符的数量进行计数,并将该计数 输入到发送给客户机的绑定服务消息中。在收到绑定服务消息时,客户机判定 该计数是否满足策略,如果是,则该机器能够激活这一软件。提供本概述是为了以简化形式引入在以下详细描述中将进一步描述的概 念精选。本概述不旨在标识要求保护主题的关键特征和本质特征,也不只在用 于帮助确定要求保护主题的范围。附图简述结合附图进行阅读,能够更好地理解以上概述以及以下对较佳实施方式的 详细描述。出于对本发明进行说明的目的,附图中示出本发明的示例结构;然 而,本发明并不限于附图中所公开的具体方法和设备
图1是其中可实现本发明诸方面的示例计算环境;图2A是示出根据一实施方式的其中软件盗版可被阻止的示例网络的框图;图2B是可根据一实施方式使用的示例激活旁路消息的框图; 图2C是可根据一实施方式使用的示例绑定服务消息的框图;图3是示出根据一实施方式的允许软件激活旁路的示例客户机方法的流 程图;以及图4是示出根据一实施方式的激活软件的示例绑定服务方法的流程图。详细描述 总览一实施方式将软件激活旁路机制纳入到批量许可环境中。激活旁路机制无 需客户联系软件厂商。根据这一实施方式,向软件应用程序提供一种策略。该 策略指定需要出现在客户网络上以便进行该软件应用程序的正确激活旁路的 最少机器数。将网络内的一台计算机指定为绑定服务机。要安装软件应用程序 的其它计算机作为客户机。将该软件应用程序的副本安装在每台计算机(即, 例如绑定服务机和客户机)上,并且在某一时刻(例如登陆时),每一客户机 尝试执行该软件的激活旁路。为此,该客户机生成含有机器标识符、时间戳和 与该软件应用程序相关的信息的激活旁路消息,并将这一消息发送给绑定服务 机。在收到激活旁路消息时,绑定服务机对照含有所有这些已收到的机器标识 符的列表的信任存储来校验该机器标识符。如果该机器标识符未在信任存储中 出现,则对其进行添加。绑定服务机对信任存储中的唯一机器标识符的数量进 行计数,并将该计数输入到发送给客户机的绑定服务消息中。在收到该绑定服 务消息时,客户机判定该计数是否满足策略(即是否达到最少机器数)。如果 是,则该机器能够启用该软件的激活旁路。否则,该软件保持未激活,并且在 适用时继续在"试用"期内操作。使用满足法定要求的特性对本发明的主题进行描述。然而,描述本身并不 旨在限制本专利的范围。相反,发明人已经想到,结合其它现有或未来的技术, 要求保护的主题也可通过其它方式实施,以包含不同与本申请中所述的类似的 不同步骤或元素。此外,虽然在本文中,属于"步骤"可用于标识所使用方法 的不同方面,但是该属于不应被解释为暗示本文所公开的各个步骤之间的任何 特定次序,除非明示了各个步骤的次序。示例计算环境图1示出其上可实现本发明的合适计算系统环境100的示例。计算系统环境ioo只是合适计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。计算系统环境IOO不应被解释为具有与在示例计算系 统环境100中描述的组件中任一个或组合相关的任何依赖或要求。本发明可在许多其它通用或专用计算系统环境或配置中操作。适用于本发明的公知计算系统、环境和/或配置的示例包括,但不局限于个人计 算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理 器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计 算机、包括以上系统或设备中任一个的分布式计算环境等。本发明可在由计算机执行的诸如程序模块的计算机可执行指令的通用 上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类 型的例程、程序、对象、组件、数据结构等。通常可按照各个实施方式中 所述的,对程序模块的功能进行组合或分布。本发明还可以在其中由通过 通信网络链接的远程处理设备执行任务的分布式计算环境中实施。在分布 式计算环境中,程序模块位于包括存储器存储设备的本地和远程计算机存 储介质中。参照图1,用于实现本发明的示例系统包括计算机110形式的通用计 算设备。计算机110的组件可包括,但不局限于处理单元120、系统存储器130以及将包括系统存储器在内的各种系统组件耦合到处理单元120的 系统总线121。系统总线121可以是若干类型总线结构中的任一种,包括存 储器总线或存储器控制器、外围总线和使用各种总线架构中任一种的局域 总线。作为示例而非限制,这些架构包括工业标准架构(ISA)总线、微信 道架构(MCA)总线、增强的ISA (EISA)总线、视频电子技术标准协会(VESA)局域总线以及也被称为Mezzanine (夹层)总线的外围组件互连(PCI)总线。计算机IIO通常包括各种计算机可读介质。计算机可读介质可以是可 由计算机IIO访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存 储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的易失性 和非易失性、可移动和不可移动介质。计算机存储介质包括,但不局限于RAM、 ROM、 EEPROM、闪存或其它存储技术、CD-ROM、数字多功能盘 (DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁性存储设 备、或可用于存储所需信息并可由计算机110访问的任何其它介质。通信 介质通常具体化为诸如载波或其它传输机制的调制数据信号中的计算机可 读指令、数据结构、程序模块或其它数据,并可包括任何信息传输介质。 术语"调制数据信号"表示以在信号中编码信息的方式设置或改变其一个 或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直 接接线连接的有线介质,以及诸如声学、RF、红外线的无线介质和其它无 线介质。以上中任一种的组合也应包含在计算机可读介质的范围内。系统存储器130包括诸如只读存储器(ROM) 131和随机存取存储器 (RAM) 132的易失性和/或非易失性存储器形式的存储介质。包含在诸如 启动期间帮助在计算机110内元件之间传递信息的基本例程的基本输入/输 出系统133 (BIOS)通常存储在ROM 131中。RAM 132通常包含可由处理 单元120即时访问和/或正在其上操作的数据和/或程序模块。作为示例而非 限制,图1示出操作系统134、应用程序135、其它程序模块136和程序数 据137。计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存 储介质。仅作为示例,图l示出从不可移动、非易失性磁性介质读取或向 其写入的硬盘驱动器141、从可移动、非易失性磁盘152读取或向其写入的 磁盘驱动器151、和从诸如CDROM或其它光学介质的可移动、非易失性 光盘156读取或向其写入的光盘驱动器155。可用于示例性操作环境的其它 可移动/不可移动、易失性/非易失性计算机存储介质包括,但不局限于磁 带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。 硬盘驱动器141通常由诸如接口 140的不可移动存储器接口连接到系统总 线121,而磁盘驱动器151和光盘驱动器155则通常由诸如接口 150的可移 动存储器接口连接到系统总线121。以上描述和图1中示出的驱动器及其关联计算机存储介质为计算机 110提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程 序模块146和程序数据147。注意,这些组件可与操作系统134、应用程序 135、其它程序模块136和程序数据137相同或不同。在此对操作系统144、 应用程序145、其它程序模块146和程序数据147给出不同的附图标记至少 说明它们是不同的副本。用户可通过诸如键盘162和定点设备161 (通常指 的是鼠标、跟踪球或触摸垫)的输入设备向计算机110输入命令和信息。 其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、 扫描仪等。这些和其它输入设备通常由耦合到系统总线的用户输入接口 160 连接到处理单元120,但是也可由诸如并行端口、游戏端口或通用串行总线 (USB)之类的其它接口和总线结构连接。监视器191或其它类型的显示 设备也可经由诸如视频接口 190的接口连接到系统总线121。除了监视器之 外,计算机还可包括可以通过输出外围接口 195连接的诸如扬声器197和 打印机196的其它外围输出设备。计算机110可在使用到诸如远程计算机180的一个或多个远程计算机 的逻辑连接的网络化环境中操作-远程计算机180可以是个人计算机、服 务器、路由器、网络PC、对等设备或其它公共网络节点,并且通常包括以 上相关于计算机IIO描述的元件中的多个或全部,但在图1中仅仅示出了 存储器存储设备181。在图1中所描绘的逻辑连接包括局域网(LAN) 171 和广域网(WAN) 173,但是也可以包括其它网络。这种网络环境在办公 室、企业内部计算机网络、内联网和因特网中十分常见。当在LAN网络环境中使用时,计算机IIO通过网络接口或适配器170 连接到LAN171。当在WAN网络环境中使用时,计算机110通常包括调 制解调器172或用于在诸如因特网的WAN 173上建立通信的任何装置。或 为内置或为外置的调制解调器172可经由用户输入接口 160或其它适当机 制连接到系统总线121。在网络化环境中,相关于计算机IIO描述的程序模 块或其部分可存储在远程存储器存储设备中。作为示例而非限制,图l示 出驻留在存储器设备181上的远程应用程序185。应该理解,所示网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它装置。 示例分布式计算框架或体系结构由于个人计算技术和因特网的结合,已经和正在开发各种分布式计算框架。向个人和企业用户提供应用程序和计算设备的可无缝共同操作和启用web 的接口,从而使计算活动日益面向web浏览器或面向网络。例如,MICROSOFT⑧的.NET平台包括服务器、诸如基于web的数据存储 的构建块服务以及可下载设备软件。 一般而言,.NET平台提供(1)使计算设 备的全体一起工作并自动更新和同步全部设备上的用户信息的能力,(2)通 过更多地使用XML而非HTML实现web站点交互能力增加,(3)以定制访 问以及从管理诸如电子邮件的各种应用程序或诸如Office.NET的软件的中央 起始点到用户的产品和服务传送为特色的在线服务,(4)集中式数据存储, 增加访问信息的效率和便捷以及用户和设备之间的信息同步,(5)集成诸如 电子邮件、传真和电话的各种通信媒介的能力,(6)对于开发者,创建可再 使用的模块的能力,从而增加生产率并减少编程差错的数量,以及(7)许多 其它交叉平台集成特征。虽然在本文中相关于驻留在计算设备上的软件来描述示例实施方式,但是 本发明的一个或多个部分也可通过操作系统、API或协处理器与请求对象之间 的中间软件来实现,使得可由.NET语言和服务的全部以及其它分布式计算框 架来执行、支持或经由其访问服务。示例实施方式在以下讨论中,假设与在软件激活上下文中在计算机网络中的计算机之间 实现安全通信相关的细节是本领域技术人员已知的。因此,为简洁起见,在此 省略这些细节。在一实施方式中,提供具有关联策略的批量许可软件。该策略指定需要在 客户网络上出现以便进行软件的正确激活旁路的机器数目。该策略数据可被写 进例如可由客户网络中的机器进行认证的已签名的可扩展权限标记语言 (XrML)文件。将网络中的一台计算机指定为绑定服务机。这一指定可由例如客户、软件厂商、软件应用程序自身等作出。要安装软件应用程序的其它计 算机作为客户机。将该软件应用程序的副本安装在每台计算机(即例如绑定服 务机和客户机)上,并且在某一时刻(例如登陆时),每一客户机尝试激活该 软件。除了任何其它安全措施之外,可将诸如处理器标识符之类的唯一机器属性 用作机器标识符,以保护寻求软件激活旁路的计算机与提供启用这种激活旁路 的绑定服务的计算机之间的通信路径。寻求激活其软件副本的客户机生成包含 其机器标识符、时间戳、与该软件应用程序相关的信息以及机器认证码(MAC)的激活旁路信息,并将该消息发送给绑定服务机。通过使用MAC, 一实施方式使客户机和绑定服务的消息(以下详细描述)能够通过消息自身而得到认证。 以这种方式,这些消息的认证可以是自备的,而不需要依赖于客户机与绑定服 务之间的通信层。 一旦消息被传输到绑定服务,绑定服务就检査该消息以确保时间戳和MAC有效。在收到并验证该消息的真实性时,绑定服务对照已知机器队列校验该机器 标识符,并且如果未发现该机器标识符则将其添加到该队列。随后,绑定服务 对队列中的唯一机器标识符的数量进行计数,并向该客户机发送包含计数的已 认证回复消息。该客户机判定该计数是否满足策略(即是否已达到最少机器 数)。如果是,则该机器能够启用软件激活旁路。否则,该软件保持未激活, 并且在适用时继续在"试用"期中操作。因此,应该意识到, 一实施方式在允许进行批量许可软件应用程序的激活 旁路之前要求客户有效地验证该软件应用程序实际上是在计算机网络中使用。 一实施方式要求网络具有特定的最少机器数(软件在这些机器上进行激活旁 路),并使用机器专用标识符来获取准确计数。虽然一实施方式并不要求软件 安装在特定一组机器上,但是在网络上出现特定数量的机器的要求有效地阻止 了大多数软件盗版者的企图。即,软件盗版者不大可能只是为了非法运行软件 应用程序的目的就建立具有所要求机器数的网络,特别是在所要求机器数相当 多的情况下。这对不知情或其它购买盗版的软件应用程序副本的任何个人尤其 有效。应该意识到,如果将最少机器数被设置为固定数字,则需要在安全和用 户友好性之间作出某种折衷。例如,该数字设置得过小则不大可能会实现有益的安全效果,而如果该数字设置得过大则对合法客户造成麻烦。通过使用绑定服务机生成机器计数,客户机无法伪造计数来绕过激活要 求。此外,计数的使用是判定软件应用程序是否按需在计算机网络中使用的轻 便和可靠方法。如上所述, 一实施方式简单地校验目标网络内有特定数量的不 同计算机。结果,软件厂商可向不同客户销售同一软件,而无需更新或修改该 软件,如同将该软件针对特定网络进行了剪裁的情形一样。因此,在一实施方 式中,在高安全性和阻止盗版与在合法客户部分上安装和激活的简易性上达到 可感知的平衡。应该意识到,该平衡可根据厂商和/或客户需要而更改。图2A是根据一实施方式的其中软件盗版可被阻止的示例网络的框图。网络内的客户机220a-c可以是任何类型的计算设备。每个客户机220a-c包括软 件230的副本以及各自的机器属性222a-c。软件厂商可在诸如但不限于 CD-ROM的某种介质上或者直接通过诸如以上相关于图1所描述的网络向批 量许可持有者提供软件230的副本。软件230所附带的可以是企业专用或者批 量许可持有者专用的批量许可密匙(VLK)(未示出)。在一实施方式中,可 将VLK嵌入到称为许可文件的相对较大的文件中。相应客户机220a-c的机器 属性222a-c可以是标识与客户机220a-c相关联的硬件设备的任何类型的数据。 例如,机器属性222a可以是客户机220a的处理器标识符等等。在一实施方式 中,对每个客户机220a-c使用的机器属性222a-c的类型相同(例如每个客户 机220a-c使用其处理器标识符作为其机器属性222a-c)。在其它实施方式中, 每个客户机220a-c可使用不同的机器属性222a-c。如上所述,可将网络内的一台计算机指定为绑定服务机210。绑定服务机 210可以是独立的机器,或者还可以是客户机220。换言之,诸如客户机220a 的客户机与绑定服务机210可以主宿在同一机器中,或者可以在不同机器上。 绑定服务机210包含绑定服务212,该服务可以是例如在绑定服务机210内运 行以执行软件激活旁路的进程。此外绑定服务机210包含策略216,该策略指 定必须在网络中存在以进行软件激活旁路的最少唯一机器数。术语"机器"可 以指代网络中要安装软件230的任何设备。虽然"机器"通常指某种类型(例 如台式、膝上型等)的计算机,但是"机器"还可以指服务器、诸如PDA的 设备等。此外,这一机器无需一直连接到网络(例如膝上型设备)。策略216中设置的数字可被任意设置、在逐个情况的基础上变化、根据特 定客户类型(例如公司客户)设置、根据网络大小设置等。例如,可将该策略设置成要求在允许软件激活旁路之前在网络中存在25个唯一机器。信任存储 214包含已尝试激活软件的全部机器的队列。该队列可将机器表示成机器标识符(如以下所述),或者例如表示成包括机器标识符和附加信息的条目。这种附加信息可以是例如时间戳等。信任存储214可以是信任存储文件,该文件是 包含一个或多个加密密匙的密匙数据库文件。密匙可作为签名人证书存储并且 可用于各种目的,诸如使包含其中的数据生效。因此,信任存储214可以是机 器标识符和任何附加信息的安全"可信"位置。如上所述,为了激活其软件230的副本,客户机220a-c向绑定服务机210 发送激活旁路消息。任何类型的活动都可触发这种激活旁路,诸如事件发生(例 如登陆、启动软件230等)、用户引导、时间流逝之后等。在成功完成软件230 的激活旁路之前,软件230可在"试用"期中操作,其中在软件230的激活旁 路之前全部或部分功能将对用户可用。在一实施方式中,使用试用期是有用的, 因为在客户机激活旁路的数量尝试将信任存储214中的队列填充到所需机器数 之前可能需要一段时间。因此,在将队列构建到所需机器数期间,客户的用户 仍然能够使用软件230。因为在一实施方式中激活旁路进程可完全自动化,所 以试用期的使用可将激活旁路进程有效地呈现为对客户机220a-c之一的用户 不可见。图2B是可根据一实施方式使用的示例激活旁路消息240的框图。可根据 任何适当安全消息收发格式对激活旁路消息240进行格式化。激活旁路消息 240包括指定需要激活旁路的软件的软件标识符242。在一实施方式中,软件 标识符242可包含软件标识符、版本号等。因此,如果多个软件应用程序根据 一实施方式执行激活旁路,则可将每个应用程序的激活旁路进程保持独立,以 避免与其它激活旁路进程干扰。激活旁路消息240还可包括机器标识符244,例如,该标识符可从如上参 照图2A所述的机器属性222a-c形成。例如,机器属性222a-c可以是散列的、 加密的等,以形成机器标识符224。或者,机器标识符244可简单地包括机器 属性222a-c而不作进一步处理或更改。激活旁路消息240还可包括时间戳246。时间戳246可用于保护软件免受"重放"攻击等,因为由机器标识符244推进 的软件绑定很流行。最后,激活旁路消息240可包括可以例如通过消息认证码 (MAC)等执行的认证248。虽然为清楚起见在图2B中未示出,但是激活旁 路消息240还可包括诸如与策略216相关的信息的附加字段。图2C是可根据一实施方式使用的示例绑定服务消息250的框图。与以上 参照图2B所述的激活旁路消息240类似,绑定服务消息250包含软件标识符 242、机器标识符244 (标识客户机)、时间戳246 (例如在激活旁路消息240 中使用的时间戳)和认证248。认证248可以与激活旁路消息240的认证248 相同的方式执行,或者可根据不同的协议执行。此外,绑定服务消息250包括 计数252,如上参照图2A所述,该计数对应于在信任存储214的队列中列出 的唯一机器标识符的数量。虽然为清楚起见在图2C中未示出,但是绑定服务 消息250可包括其它字段,诸如与策略216相关的信息。图3是示出根据一实施方式的激活软件的示例客户机方法的流程图。应该 意识到,方法300在安装过程中启动和/或执行,或者可在后来(例如登陆)执 行。方法300可在例如无人照管文件的帮助下进行。无人照管文件是与软件安 装例程结合使用以绕过正常安装提示(以执行无人照管安装)的文本文件。例 如,无人照管文件可自动输入VLK,配置代理设置以及代表终端用户通过目 标机器的局域网(LAN)或经由因特网等来自动激活系统。激活旁路还可以在 安装之后使用命令行脚本执行。在步骤301,由客户机生成客户机激活旁路消息,诸如以上参照图2B所 述的激活旁路消息240。在软件最初安装时,或者在客户机判定已安装软件应 用程序的当前批量许可不再有效时等等,可生成客户机激活旁路消息。在步骤 302,将激活旁路消息发送到绑定服务机。步骤302可在步骤301之后立即进 行,或者一段延时之后进行。例如,如果客户机是当前从网络断开的膝上型计 算机,则可在用户启动该计算机时生成激活旁路消息。 一旦用户将客户端膝上 型计算机重新连接到网络,则激活旁路消息可被发送到绑定服务机。因此,以 上参照图2B所述的时间戳可对应于例如生成或发送激活旁路消息的时刻。在 步骤303,由客户端机器接收绑定服务消息,诸如以上参照图2C所述的绑定 服务消息250。以下参照图4讨论涉及绑定服务消息创建的示例方法。在步骤305,在任何必要的消息认证处理之后,从绑定服务消息提取计数(诸如计数252),并将其与关联于客户端的软件应用程序副本的预定计数进 行比较。应该意识到,预定计数可对应于以上参照图2A所述的策略216。在 步骤307,对所收到的计数是否等于或大于预定计数作出判定。应该意识到, 该策略可以指定需要匹配还是超过预定计数。如果所收到的计数并不适当地大于或等于预定计数,则在步骤309,方法 300结束。应该意识到,没有进行客户机软件副本的激活旁路,因为绑定服务 还未收到软件策略所要求的最少数量的唯一机器标识符。如果例如该软件包括 允许在给定时段中使用该软件而无需激活旁路的"试用期",则用户仍然可以 使用该软件。如果收到的计数大于或等于预定计数,则在步骤311,软件允许使用与绑 定机制协作的旁路标记而进行的激活旁路。该绑定机制确保激活旁路标记无法 被简单地拷贝并在另一机器上使用。在一实施方式中,绑定机制专用于每个单 独计算机。在一实施方式中, 一旦步骤311完成,则客户机就无需再为认证软 件应用程序的目的而联系绑定服务机。在一替换实施方式中,方法300还能够 以设定或可变的间隔重复。例如,如果包含在信任存储队列中的机器标识符可 以具有指定的使用期限,在该期限之后就将机器标识符从队列中删除。在这一 实施方式中,方法300可以以某一间隔重复以保持队列(及其相应计数)是当 前的。应该意识到,当第一次安装该软件时,在信任存储的队列中可能没有所列 出机器。例如,当第一客户机尝试执行其软件副本的激活旁路时,绑定服务会 访问信任存储以判定该客户机是否被列在包含其中的队列内。因为先前没有客 户机尝试对其软件副本执行激活旁路,所以在信任存储中没有列出客户机直到 第一客户机被添加。如果预定计数未达到,则客户端机器可继续在试用期中工 作。超过试用期,客户端机器可在功能减少的模式下工作,或者终端用户可以 向软件厂商请求延长。图4是示出根据一实施方式的执行软件激活旁路的示例绑定服务方法400 的流程图。在步骤401,接收激活旁路消息,诸如以上参照图2B所述的激活 旁路消息240。在任何适当的消息认证处理完成之后,在步骤403,将包含在激活旁路消息内的机器标识符与包含在绑定服务机器的信任存储的队列内的 任何机器标识符进行比较,以査看在该队列中是否存在该机器标识符。如果该 机器标识符已经存在,则方法400进行到步骤407,随后马上描述。或者,在使用时间戳的实施方式中,在进行到步骤407之前,可用刚收到的机器标识符 替换存储在列表中的机器标识符。以这种方式,列表将包含最近收到的机器标 识符。如果机器标识符并未存在,则在步骤405,将该机器标识符添加到该队 列。在某些实例中,可将附加信息连同机器标识符一起存储在队列中。例如, 可以存储时间戳以避免来自潜在软件盗版者的重放攻击。在步骤407,对队列中的机器标识符的数目进行计数。应该意识到,因为 方法400只在机器标识符并未存在的情况下将该机器标识符置于队列中,所以 队列持有唯一的机器标识符(即每个机器标识符被存储一次,不管特定客户机 已发送多少次激活旁路消息)。在步骤409,向发送在步骤401接收的激活旁 路消息的客户机发送包含计数的消息。在一实施方式中,可在预定时间之后将 机器标识符从队列中删除(未在图4中示出)。例如,软件应用程序的策略可 以规定,与一次性启用软件激活旁路不同,该软件应该周期性地重复激活旁路 进程以确保该用户仍然是客户网络的一部分。因此,通过周期性地删除机器标 识符,计数值可能会落到策略所要求的机器标识符数之下,除非网络上仍然存 在足够数量的客户机(并发送激活旁路消息)。应该意识到,在这一实施方式中,客户端机器应当被配置成周期性地尝试 重复激活旁路进程以确保机器标识符计数保持足够高。此外,如果客户机从不 尝试重复激活旁路进程,则即使机器标识符计数落到阈值以下该软件也可保持 激活。注意,以上示例仅为说明目的而提供,完全不能被解读为对本发明的限制。 同样注意,存在根据本发明使应用程序和服务能够获取许可信息的各种实现本 发明的方式,例如适当的API、工具箱、驱动代码、动态链接库(DLL)、操 作系统、控件、独立或可下载软件对象等。本发明的各个实施方式从API (或 其它软件对象)的角度、以及从结合本文所述的VLK许可技术进行通信的软 件或硬件对象的角度构想本发明的使用。因此,本文所述的本发明的各种实现 可能具有完全硬件、部分硬件和部分软件以及软件的多个方面。如上所述,虽然结合各种计算设备和网络架构描述了示例实施方式,但是 根本概念可应用于期望阻止盗版的任何计算设备或系统。因此,根据一实施方 式编码/解码数据的技术可用于各种应用程序和设备。例如, 一实施方式的算法 和硬件实现可应用于计算设备的操作系统,作为该设备上的独立对象、另一对 象的一部分、可重新使用的控件、可从服务器下载的对象、设备或对象与网络 之间的"中间人"、分布式对象、硬件、在存储器中、上述任一种的组合而提 供。虽然本文中选择示例编程语言、名称和示例作为各种选择的代表,但是这 些语言、名称和示例并不旨在作为限制。对于涉及使用控件实现本发明的实施 方式,本发明不限于提供.NET控件,相反,应该在根据本发明实现盗版阻止 目的的任何一个软件(和/或硬件)的更宽泛上下文中考虑。本领域技术人员应 该意识到,存在提供实现由本发明的各个实施方式实现的相同、类似或等效功 能的对象代码和命名的许多方法。实施方式可结合在线拍卖或投标站点实现。如上所述,本文所述的各种技术可结合硬件或软件或者在适当时结合两者 的组合来实现。因此,本发明的各个实施方式的方法和设备或其某些方面或部分可采用在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质的有形介质上具体化的程序代码的形式,其中当将程序代码加载到诸如计算机的 机器中并由其执行时,该机器变成用于实施本发明的设备。在可编程计算机上 执行程序代码的情形中,计算设备通常包括处理器、处理器可读的存储介质(包 括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。可例如通过使用数据处理API、可重用控件等使用本发明的盗版阻止 技术的一个或多个程序较佳地采用高级过程或面向对象编程语言实现,以与计 算机系统通信。然而,程序可以按需采用汇编或机器语言实现。在任一情形中, 语言可以是已编译或已解释语言,并与硬件实现相结合。本发明的各个实施方式的方法和设备还可经由以通过某种传输介质(诸如 通过电配线或敷设缆线、通过光纤、或经由任何其它形式的传输)发送的程序 代码形式具体化的通信来实施,其中当该程序代码被接收并加载到机器(诸如 EPROM、门阵列、可编程逻辑设备(PLD)、客户端计算机、摄像机等)中 并由其执行时,具有如上在示例实施方式中描述的信号处理能力的接收机器变 成用于实现本发明的设备。当在通用处理器上实现时,该程序代码与该处理器结合以提供用于调用本发明的功能的独特设备。此外,结合本发明使用的任何 存储技术可以始终是硬件和软件的组合。虽然结合各个附图的较佳实施方式对本发明进行描述,但是应该理解,可 使用其它类似的实施方式,或者可对所述实施方式进行添加以执行本发明的相 同功能而不与其相背离。例如,虽然在诸如对等网络化环境的网络化环境中对 本发明的示例网络环境进行了描述,但是本领域技术人员应该认识到,本发明 并不限于此,并且在本发明中描述的方法可应用于无线的或有线的任何计算设 备或环境,诸如游戏操纵台、手持式计算机、便携式计算机等,并且可用于经 由通信网络连接并在网络上交互的任何数量的这种计算设备。此外,要强调的 是,包括手持式设备操作系统和其它应用程序专用操作系统的各种计算机平台 都是可以预期的,尤其是随着无线网络化设备的数量不断激增。此外,本发明 还可以跨多个处理芯片或设备或者在其中实现,并且存储可类似地跨多个设备 实施。因此,本发明不应局限于任何单个实施方式,相反应该以根据所附权利 要求书的宽度和范围来解读。
权利要求
1.一种具有用于执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括生成激活旁路消息,其中所述激活旁路消息包括机器标识符和与进行激活旁路的软件应用程序相关联的软件标识符;将所述激活旁路消息发送到绑定服务机;从所述绑定服务机接收包括机器计数的绑定服务消息;将所述机器计数与预定计数进行比较;以及如果所述机器计数大于或等于所述预定计数,则允许所述软件应用程序的激活旁路。
2. 如权利要求1所述的计算机可读介质,其特征在于,所述激活旁路消 息还包括表明生成所述激活旁路消息的时刻的时间戳。
3. 如权利要求1所述的计算机可读介质,其特征在于,所述激活旁路消 息通过计算机网络发送,并且其中所述机器计数对应于在所述网络上存在的已 经向所述绑定服务发送至少一个激活旁路消息的机器的数量。
4. 如权利要求3所述的计算机可读介质,其特征在于,所述激活旁路消 息在要绕过所述软件应用程序的激活的机器登陆到所述计算机网络时发送。
5. 如权利要求4所述的计算机可读介质,其特征在于,所述机器标识符 是从要绕过所述软件应用程序的激活的机器的硬件属性导出的。
6. 如权利要求1所述的计算机可读介质,其特征在于,所述预定计数由 与所述软件应用程序相关联的策略来定义。
7. 如权利要求6所述的计算机可读介质,其特征在于,所述激活旁路消 息还包括所述策略。
8. 如权利要求6所述的计算机可读介质,其特征在于,所述策略作为与 所述软件应用程序相关联的已签名可扩展权限标记语言文件的一部分被存储。
9. 如权利要求8所述的计算机可读介质,其特征在于,所述生成和发送 步骤以预定间隔重复。
10. 如权利要求1所述的计算机可读介质,其特征在于,所述激活旁路消息还包括第一消息认证码,并且所述绑定服务消息还包括第二消息认证码,所 述步骤还包括使用所述第二认证码认证所述绑定服务消息。
11. 一种具有执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括从客户端机器接收激活旁路消息,其中所述激活旁路消息包括客户端机器 标识符和与具有要绕过的激活要求的软件应用程序相关联的软件标识符;判定所接收到的客户端机器标识符是否在机器标识符列表中;如果所接收到的客户端机器标识符不在所述机器标识符列表中,则将所接 收到的机器标识符添加到所述列表中;确定所述列表内机器标识符的数量;以及发送绑定服务消息,其中所述绑定服务消息包括唯一机器标识符的数量。
12. 如权利要求11所述的计算机可读介质,其特征在于,所述激活旁路 消息还包括第一消息认证码,且所述绑定服务消息还包括第二消息认证码,并 且所述步骤还包括使用所述第二认证码认证所述激活旁路消息。
13. 如权利要求11所述的计算机可读介质,其特征在于,还包括在预定 时间之后从所述列表删除所接收到的客户机标识符。
14. 如权利要求11所述的计算机可读介质,其特征在于,所述客户端机 器标识符是从所述客户端机器的硬件属性导出的。
15. 如权利要求11所述的计算机可读介质,其特征在于,所述激活旁路 消息还包括表明由所述客户端机器生成所述激活旁路消息的时刻的时间戳。
16. 如权利要求15所述的计算机可读介质,其特征在于,所述机器标识 符列表中的每个机器标识符被表示成包括所述机器标识符和关联时间戳的条 目。
17. 如权利要求16所述的计算机可读介质,其特征在于,还包括,如果 所接收到的客户端机器标识符在所述机器标识符条目列表中,则用对应于与最 近时间戳相关联的机器标识符的条目代替所述条目。
18. —种阻止批量许可环境中的盗版的方法,包括 在客户端机器处生成激活旁路消息,其中所述激活旁路消息包括机器标识符和与要绕过其激活的软件应用程序相关联的软件标识符;将所述激活旁路消息发送到绑定服务机;在所述绑定服务机处,判定所收到的客户端机器标识符是否在机器标识符 列表中;如果所收到的客户机机器标识符不在所述机器标识符列表中,则在所述绑定服务机处将所收到的客户机机器标识符添加到所述列表;在所述绑定服务机处,确定所述列表内机器标识符的数量; 向所述客户端机器发送绑定服务消息,其中所述绑定服务消息包括所述唯一机器标识符的数量;在所述客户端机器处,将所述机器计数与预定计数进行比较;以及 如果所述机器计数大于或等于所述预定计数,则允许所述软件应用程序的激活旁路。
19. 如权利要求18所述的计算机可读介质,还包括在所述绑定服务机处, 在预定时间之后从所述列表删除所收到的客户机标识符,并且在所述客户端机 器处,以预定间隔重复所述生成和发送步骤。
20. 如权利要求18所述的方法,其特征在于,所述激活旁路消息还包括 第一消息认证码,且所述绑定服务消息还包括第二消息认证码,并且所述方法 还包括在所述绑定服务机处,使用所述第一认证码认证所述激活旁路消息,并 且在所述客户端机器处,使用所述第二认证码认证所述绑定服务消息。
全文摘要
一种用于阻止批量许可环境中的软件盗版的方法和计算机可读介质。生成并发送激活旁路消息。将包含在激活旁路消息中的信息与机器标识符列表进行比较。绑定服务信息包含该列表中的机器标识符的计数。一旦该计数到达预定阈值,则可进行软件激活旁路。
文档编号G06F17/00GK101263489SQ200680033764
公开日2008年9月10日 申请日期2006年9月6日 优先权日2005年9月15日
发明者C·格恩亚克蒂, R·W·米勒, X·(M·)谭 申请人:微软公司