CN102426640B - 用于产品验证和激活的安全软件产品标识符 - Google Patents
用于产品验证和激活的安全软件产品标识符 Download PDFInfo
- Publication number
- CN102426640B CN102426640B CN201110367803.7A CN201110367803A CN102426640B CN 102426640 B CN102426640 B CN 102426640B CN 201110367803 A CN201110367803 A CN 201110367803A CN 102426640 B CN102426640 B CN 102426640B
- Authority
- CN
- China
- Prior art keywords
- information
- product key
- product
- key
- identification information
- 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.)
- Active
Links
- 230000004913 activation Effects 0.000 title description 104
- 238000012019 product validation Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 127
- 230000008569 process Effects 0.000 claims abstract description 100
- 238000013475 authorization Methods 0.000 claims abstract description 67
- 238000004422 calculation algorithm Methods 0.000 claims description 57
- 230000009471 action Effects 0.000 claims description 50
- 230000004044 response Effects 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 5
- 230000008520 organization Effects 0.000 abstract description 19
- 239000000047 product Substances 0.000 description 211
- 230000007246 mechanism Effects 0.000 description 23
- 238000009434 installation Methods 0.000 description 19
- 230000002708 enhancing effect Effects 0.000 description 16
- 238000012550 audit Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000003213 activating effect Effects 0.000 description 7
- 230000001976 improved effect Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 239000006227 byproduct Substances 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001737 promoting effect Effects 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 230000001771 impaired effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- ZJPGOXWRFNKIQL-JYJNAYRXSA-N Phe-Pro-Pro Chemical compound C([C@H](N)C(=O)N1[C@@H](CCC1)C(=O)N1[C@@H](CCC1)C(O)=O)C1=CC=CC=C1 ZJPGOXWRFNKIQL-JYJNAYRXSA-N 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000013569 fruit product Nutrition 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
用于生成和验证产品密钥的系统、方法和设备。在一些实施例中,产品密钥包括安全信息和用于识别软件产品的至少一个拷贝的标识信息。该标识信息可以用于访问来自除了产品密钥之外的至少一个来源的验证信息,并且该验证信息可被用于处理标识信息和安全信息,以便确定产品密钥是否有效。在其他的一些实施例中,安全信息包括要由第一验证机构使用第一验证信息处理的第一部分,以及要由第二验证机构使用第二验证信息处理的第二部分,其中第二验证信息与第一验证信息分离地存储。
Description
背景技术
诸如操作系统和应用程序之类的软件产品经常包含受版权法保护的材料,版权法授予原创作品(例如软件代码)的作者对作品的使用和分发的专有权。为了从拥有对软件产品的权利的卖方那里获取软件产品拷贝,用户典型地会与卖方订立许可协议,该协议规定了用户可以如何使用和/或分发软件产品。例如,许可协议可以限制用户可以安装软件的次数和/或可以安装该软件的计算机的数量。
软件产品的非授权拷贝可能对销售这些产品许可的卖方造成极大损害。为了防止使用非授权拷贝,软件卖方通常要求在尝试安装软件产品拷贝的时候完成“激活”过程。该过程可以被设计成确定拷贝是否被授权安装(例如用户是否以合法方式购买该拷贝)和/或所述安装是否符合一个或多个适用的许可协议(例如用户是否超出了最大的许可安装次数)。在软件产品是以多个版本的形式(例如专业版和家庭版)提供的情况下,该激活过程还可以识别用户购买的版本,并且根据识别的版本来有选择地启用软件产品中的一个或多个特征。
一些常规的软件激活技术使用了所谓的“产品密钥”,这种产品密钥是用户可以在以合法方式购买或以其他方式合法获取软件产品拷贝的时候得到的一条信息。在激活过程期间,用户提供产品密钥作为合法性“证明”。在这种证明被接受或验证了时,用户得到允许来完成安装,并且根据针对该特定安装而授予用户的一个或多个许可来启用软件产品中的适当特征。
发明内容
发明人业已认识并了解到软件产品验证和激活系统中的显著的设计限制,也就是说,产品密钥可局限于能被人类用户容易操纵(例如读取和/或拷贝)的大小(或长度)。发明人还认识并了解到与较短的产品密钥的使用相关的现有产品密钥实现方式的限制,例如安全性、性能、扩展性和/或可管理性方面的妥协。
相应地,在一些实施例中提供了用于软件产品验证和激活的改进系统、方法和设备,其并入了产品密钥附加标识信息(例如除序列号之外的信息),该信息可以用于促进产品密钥验证。例如,附加标识信息可以充当一个或多个索引,以便识别在验证产品密钥的过程中使用的加密算法和/或加密算法的参数。此类系统可更高效且更易于扩展,因为所述特定的加密算法和/或参数不需要被硬编码到产品密钥验证组件中。
发明人还认识并了解到,在将附加标识信息并入产品密钥时,激活系统和软件产品验证的安全性可以得到保持乃至增强。例如,通过至少部分在远程激活服务器上执行产品密钥验证,可以实现足够的安全等级,使得可以通过网络请求来减慢所企图的暴力攻击。这种激活服务器可能还能够记录每一个单独的产品密钥使用的次数。
发明人还认识并了解到,激活服务器可能是易受攻击的,因为激活服务器是可以从因特网访问的(例如,激活服务器可以接受web请求形式的激活请求)。由此,期望的是引入附加的安全层,例如通过把将要由除激活服务器之外的实体核实的附加安全信息并入到产品密钥中来引入附加安全层。相应地,在一些实施例中,除了激活服务器之外还可以提供用于验证产品密钥的增强的安全服务器。所述增强的安全服务器使用的信息可能对激活服务器而言是不可访问的,由此,即使当激活服务器被成功攻击时,所述增强的安全服务器也可以保持安全。如果在激活服务器处受到破坏,这种附加安全机制可以防止系统完全失效,由此给予系统开发人员更多时间来对所述破坏做出响应。
应该了解到的是,在下文中更详细论述的前述概念以及附加概念的所有组合(只要这些概念不是相互不一致的)都被认为是这里公开的发明主题的一部分。特别地,在本公开结尾出现的要求保护的主题的所有组合都被认为是这里公开的发明主题的一部分。
附图说明
附图不必按比例绘制。为了清楚起见,并不是每一个组件都会在每一个图中得到标记。
图1示出根据本公开的一些实施例的用于验证和激活软件产品的说明性系统。
图2示出根据本公开的一些实施例的用于验证和激活软件产品的另一个说明性系统。
图3A示出根据本公开的一些实施例的用于生成产品密钥的说明性过程。
图3B示出根据本公开的一些实施例的可以经由图3A所示的过程生成的产品密钥的示例。
图4示出根据本公开的一些实施例的可以由用户计算机上的安装程序响应于用户安装软件产品拷贝的尝试来执行的说明性过程。
图5示出根据本公开的一些实施例的可以由验证机构响应于接收来自用户尝试安装软件产品拷贝的计算机的激活请求来执行的说明性过程。
图6示出根据本公开的一些实施例的可以由审计机构响应于接收来自验证机构的审计请求来执行的说明性过程。
图7示意性示出了可以实现本公开的各种不同的发明方面的说明性计算机。
具体实施方式
发明人认识并了解到在实现用于使用产品密钥来验证和激活软件产品的鲁棒且安全的系统的过程中的很多挑战。这其中的一些挑战在下文中参考图1来解释。
图1示出了一个用于验证和激活软件产品的说明性系统100,在该系统中可以实现这里公开的各种不同发明方面。在本示例中,系统100包括产品密钥生成服务器110,它可以由软件卖方或是某个其他适当的第三方来操作。当用户120合法地购买或以其他方式合法获得诸如操作系统或应用程序之类的软件产品拷贝时,生成服务器110生成的产品密钥可以被传送给用户。例如,当所述拷贝经由诸如压缩盘(CD)之类的物理介质销售时,该产品密钥可被印刷在只能在购买之后才能访问(例如受收缩包裹保护)的包装材料的一部分上。
在一些实现方式中,产品密钥可以包括两个组件:用于识别软件产品的特定拷贝(或者如果是公司许可则是拷贝群组)的标识组件,以及可以用于核实产品密钥是由某个适当机构(例如软件卖方)生成和/或在分发过程中没有受到篡改的安全组件。例如,所述标识组件可以包括序列号,并且所述安全组件可以包括处于序列号之上用软件卖方的秘密密钥生成的电子签名。
当用户120尝试在用户计算机130上安装软件产品拷贝时,在用户计算机130上运行的安装程序可以提示用户120输入产品密钥。一旦接收到产品密钥,则安装程序可以处理该产品密钥,并且基于从处理产品密钥的过程中导出的信息来向激活服务器140发送激活请求。例如,根据特定的实现方式,安装程序可以完全或部分验证该产品密钥(例如通过使用软件卖方公钥来核实安全组件是在标识组件之上的有效签名)。可替代地或此外,安装程序可以向激活服务器140发送产品密钥和/或从中导出的信息(例如作为激活请求的一部分),使得激活服务器140也可以完全或部分验证该产品密钥。换句话说,产品密钥的验证可以用任何适当的方式分布在用户计算机130与验证服务器140之间。
为了验证产品密钥,用户计算机130和/或验证服务器140可以与产品密钥生成服务器110共享一些验证信息。在产品密钥包含序列号和序列号之上的电子签名的一个示例中,验证信息可以包括与用于生成电子签名的秘密密钥相关联的公钥。这个公钥可以使得用户计算机130和/或验证服务器140能够执行签名验证,以便确定电子签名是否可能使用相关联的秘密密钥来正确生成。
如果产品密钥通过验证,则激活服务器140可以选择一个或多个适用的许可,并且将选定许可通知给用户计算机130。例如,这些许可可以基于软件产品类型、软件产品版本、软件产品所属的软件产品系列、分发软件产品拷贝的渠道(例如零售,原始设备制造商或批发)和/或其他适当的信息而被选择。然后,用户计算机130可以将这些许可与所安装的软件产品拷贝相关联,并且根据许可来有选择地启用软件产品中的特征。
发明人认识并了解到在软件产品验证和激活系统中的显著的设计限制,即产品密钥的大小(或长度)。例如,参考图1所示的系统100,如果产品密钥是通过印刷介质(例如作为印刷在收缩包装的包裹内部的码)传播给用户120的,那么用户应该从该印刷介质上读取产品密钥,并且手动地将产品密钥输入计算机130。该过程可能是耗时的并容易出错,因此可能期望的是将产品密钥限制在可管理的大小(例如不超过20、25、30或40个字母数字字符或其他符号)。
发明人还认识并了解到与较短产品密钥的使用相关的现有产品密钥实现方式的限制。例如,在一些实现方式中,产品密钥中只有较少比特专用于产品密钥的安全组件(例如通过使用较短的数字签名),使得更多的信息可以被编码到身份(identity)组件。这种方法可能损害产品密钥的安全性,因为攻击者可能更易于通过重复尝试随机生成的适当长度的字符串来发现碰巧是有效产品密钥的字符串。在产品密钥的验证全都是在本地计算机(例如图1所示的用户计算机130)上进行的情况下,安全风险可能尤其严重,因为可以在该设置中实施暴力攻击而不用发起可能减慢所述攻击的任何网络请求。此外,在产品密钥的验证完全是在本地计算机上进行的情况下,本地计算机可能只能验证那些其可以为之使用足够验证信息的产品密钥。例如,在一些实现方式中,只有在本地计算机可以使用相应的签名验证算法和/或相应的公钥的情况下,本地计算机才能够验证包含数字签名的产品密钥。由此,用于生成产品密钥的安全机制的升级可涉及向众多本地计算机传播新的验证信息,例如新的加密算法和/或密钥,这种处理可能成本很高且会很麻烦,并且可能对采用改进的安全机制失去信心。
相比之下,在一些其他实现方式中,产品密钥中有更多的比特是专用于产品密钥的安全组件的(例如通过使用更长的数字签名),使得暴力攻击可能会变得更困难。但是,由于更少的信息被编码到产品密钥的标识组件中,因此,安全性的提升是以性能降低为代价的。例如,标识组件可以只携带用于软件产品的特定拷贝的序列号,而没有其他标识信息。结果,产品密钥可以不携带在验证过程中使用的所有信息。可以包含在产品密钥中的其他标识信息的示例是所谓“组ID”,它标识的是软件产品的类型、软件产品的版本、软件产品所属的软件产品系列、用以分发软件产品的拷贝的渠道和/或软件产品的其他相关特性。这些标识信息可以充当索引,用于检索要用以核实产品密钥中包含的电子签名的公钥。在没有直接访问此类信息的情况下,可以实施试错法(trial-and-error)验证过程以迭代遍历一组可能的公钥,直至遇到成功的证实或直到耗尽了这组可能的公钥(在这种情况下可以将产品密钥无效化)。这种迭代过程可能导致显著的性能降级,因为诸如签名验证之类的加密运算可能是计算密集型的。
由于可能存在可供从中取出有效序列号的一个或多个更小的范围,因此,限制产品密钥中携带的标识信息量可能具有进一步的缺点。例如,为了简化代码开发和数据管理,软件卖方可能希望采用某种编号规定,例如通过将一定范围的数字分配给每一个软件产品以及进一步通过将子范围分配给产品的相应版本来编号。如果序列号的大小有限,那么产品管理者可能希望更精密地预测每一个产品和/或版本需要的序列号总数(例如通过预料销售量),以便减小“被浪费的数字”的数量(例如为产品保留但是实际不与产品的任何拷贝相关联的潜在的序列号),并且由此接纳(accommodate)更多的产品。这种预测有可能是困难的并且本身是不精确的。如果意外地耗尽了分配的范围,那么可能在依赖于编号规定的不同系统组件上需要(例如,经由服务包)代码变化,这可能成本很高且非常麻烦。
简而言之,发明人认识并了解到需要用于软件产品验证和激活的改进系统,以便增强安全性、性能、可扩展性和/或可管理性。优选地,改进的系统可以是向后兼容的,例如能够与现有的产品密钥实现方式同时或联合部署,并且/或者允许在代码变化最小的情况下重新使用现有系统组件。
在一些实施例中,提供一种用于软件产品验证和激活的改进系统,该系统将附加标识信息(例如除序列号之外的信息)并入了产品密钥,该信息可以用于促进产品密钥的验证。例如,附加标识信息可以标识软件产品类型、软件产品版本、软件产品所属的软件产品系列、分发软件产品拷贝的渠道和/或软件产品的其他相关特性。这样的信息可以充当一个或多个索引,以用于识别在验证产品密钥的过程中要使用的加密算法和/或加密算法的参数。发明人认识并了解到,包含这种附加标识信息可以通过促进验证信息的容易检索来明显加速验证过程(例如无须常规的试错法过程)。此外,包含这种附加标识信息可以导致更易于扩展的系统,因为所述特定加密算法和/或参数可以不再被硬编码到产品密钥验证组件中。换言之,加密算法和/或参数的未来变化可以更易于实现,并且产品密钥验证组件中的代码变化很小或者没有变化。
发明人还认识并了解到,在将附加标识信息并入产品密钥时,软件产品验证和激活系统的安全性可以得到保持乃至增强。例如,如上所述,通过与网络请求相关的延迟,可以减慢暴力攻击。因此,通过至少部分在远程激活服务器处执行产品密钥验证(例如与完全在尝试安装软件的本地计算机处进行验证相反),可以实现足够的安全等级。此外,由于特定的加密参数未必为攻击者所知(例如攻击者未必能够有效地将附加标识信息映射到相应的加密参数),因此,攻击者可能更加难以猜测有效的产品密钥。由于这种安全性的增强,产品密钥中的更多比特可被分配给标识组件,而这又可扩大可用产品密钥的空间并且减小了对于产品密钥范围预测的需要或在超出这种预测时出现的问题。例如,在一些实现方式中,在产品密钥中有接近一半的比特可被分配给标识组件,从而使可用产品密钥的数量增加到1024(quadrillion)以上。
发明人还认识并了解到,由于激活服务器是可以从因特网访问的(例如,激活服务器可以接受web请求形式的激活请求),因此,该激活服务器是容易受到攻击的。对激活服务器的成功攻击可能导致可被攻击者用来生成有效密钥的信息受损。因此,可能期望的是引入附加的安全层,例如通过向产品密钥并入要由除激活服务器之外的实体核实的附加安全信息来完成。相应地,在一些实施例中,除了激活服务器之外还可以提供用于验证产品密钥的增强的安全服务器。所述增强的安全服务器使用的信息可能对激活服务器而言是不可访问的,并且因此可以甚至在激活服务器被成功攻击时也保持安全。如果激活服务器受到破坏,这种附加安全机制可以防止系统完全失效,由此给予系统开发人员更多时间来对所述破坏做出响应。
下文中更详细地描述了与用于软件产品验证和激活的本发明的系统、方法和设备相关联的各种概念及其实施例。应该了解的是,在上文中引入以及在下文中更详细论述的各种概念可以通过多种方式实现,因为所公开的概念并不局限于任何特定的实现方式。例如,本公开并不局限于各种不同的附图中示出的组件的特定设置,因为其他设置同样也是适合的。特定实现方式和应用的这种示例仅仅是出于说明目的而提供的。
图2示出用于验证和激活软件产品的说明性系统200的示例,在该系统中可以实现这里公开的各种不同发明的概念。与图1所示的示例相似,说明性系统200包括产品密钥生成服务器110、用户120、用户计算机130以及激活服务器140。此外,所述说明性系统200包括用于与激活服务器140协力验证产品密钥的增强的安全服务器250。
在一些实施例中,产品密钥生成服务器110可以由软件卖方或其他某个适当的机构操作,以便生成要分发给软件产品的合法用户的产品密钥。该产品密钥生成服务器110可以使用任何适当的技术或技术组合来生成产品密钥。例如,如上所述,产品密钥生成服务器110可以在产品密钥中包括标识组件,该标识组件可以包括将与软件产品的特定拷贝相关联的序列号以及标识软件产品的类型、软件产品的版本、软件产品所属的软件产品系列、用以分发软件产品拷贝的渠道和/或软件产品的其他相关特性的“组ID”。产品密钥生成服务器110还可以在产品密钥中包含安全组件,该安全组件可以用于核实标识组件的完整性和/或真实性。例如,在一些实施例中,安全组件可以包括处于部分或所有标识组件之上的电子签名,其中该电子签名是使用产品密钥生成服务器110的秘密密钥生成的。在其他的一些实施例中,安全组件可以包括通过使用产品密钥生成服务器110的秘密密钥加密部分或全部标识组件而生成的密文。任何适当的加密算法都是可以使用的,这其中包括但不局限于:诸如高级加密标准(AES)之类的对称加密算法、诸如椭圆曲线密码(ECC)加密算法之类的非对称加密算法和/或任何适当的算法组合。在其他一些实施例中,安全组件可以包括基于部分或所有标识组件以及产品密钥生成服务器110的秘密密钥生成的散列值。任何适当的散列算法都是可以使用的,这其中包括但不局限于MD4、MD5、SHA-1、SHA-256或SHA-512。在其他的一些实施例中,安全组件可以包括将要与标识组件相关联的随机或伪随机值。
为了增强安全性,在一些实现方式中,产品密钥的安全组件可以包括分别要由两个或更多单独的实体核实的两个或更多的安全值,从而避免系统中的单个故障点。例如,参考图2,产品密钥生成服务器110可以在产品密钥的安全组件中包括两个分别由激活服务器140和增强的安全服务器250核实的安全值。这两个安全值可以用任何适当的方式生成。例如,这些安全值可以使用一种或多种上述技术(例如签名、加密、散列和/或随机生成)基于标识组件中的相同部分或不同部分来生成。此外,安全值可以使用不同的技术或使用具有不同参数(例如不同的秘密密钥)的相同技术来生成。以此方式,即使一个验证机构(例如激活服务器140)受损,也可以避免完全的系统故障。例如,攻击者可能不能够随意激活软件产品的非法拷贝,因为未受损害的验证机构(例如增强的安全服务器250)仍旧能够使伪造的产品密钥失效。这可以给予系统开发人员更多时间来开发和分发一个或多个服务补丁,以便关闭攻击者使用的弱点。
以下结合图3A-B讨论用于生成产品密钥的说明性过程的更进一步的细节。应该了解的是,本公开中与产品密钥生成相关的方面并不局限于任何特定的生成技术。例如,产品密钥可以是使用上述技术和/或其他适当技术中的任何一种或是其组合生成的。此外,上述技术可以根据特定的实现方式而以任何适当的方式适应性调节和/或修改。例如,通过签名、加密和/或散列处理生成的安全值可以基于产品密钥中分配给所述安全值的空间量(例如比特数量)而被截短成某个适当的长度。
如上文中结合图1论述的那样,当用户120以合法方式购买或以其他方式合法获取了软件产品拷贝时,由产品密钥生成服务器110生成的产品密钥可以例如作为印刷在受收缩包裹保护的包装材料上的代码被传达给用户。可替代地,可以给予用户用于从web链接下载产品密钥的密码。其他的传播方法也是适当的。
当用户120尝试在用户计算机130上安装软件产品拷贝时,在用户计算机130上运行的安装程序可以提示用户120输入产品密钥。一旦接收到产品密钥,安装程序可以处理该产品密钥并且基于从处理该产品密钥导出的信息来向激活服务器140发送激活请求。如上所述,可以期望的是对除用户计算机130之外的实体将产品密钥验证过程的至少一部分推迟(defer),从而减慢可能的暴力攻击和/或防止可能会在验证完全在本地执行的情况下出现的其他攻击。相应地,在一些实施例中,至少一部分产品密钥验证过程可以由激活服务器140执行。用户计算机130上的安装程序可以不执行任何验证,或者可以执行某些初始检查来捕捉任何排字错误(例如通过执行校验和验证)。后一种方法可能是有利的,因为用户往往会在键入产品密钥的时候出错,并且可能期望的是在招致与激活服务器140的通信进一步延迟之前捕捉这种简单的错误。换言之,用户计算机130可以不向激活服务器140发送任何激活请求,除非初始检查指示产品密钥很可能已被正确键入。
对激活服务器140推迟验证的另一个优点可以是可以更容易地实现和/或保持用户计算机130上的安装程序。例如,在图2的示例中,安装程序可能不再需要存储和保持来自产品密钥生成服务器110的验证信息。这种验证信息的示例包括但不限于一种或多种加密算法(例如签名验证、解密和/或散列算法)和/或用于这些算法的一个或多个参数(例如在签名验证、解密和/或散列处理中要使用的密钥)。结果,针对验证信息的任何变化(例如更新至更安全的算法和/或刷新密钥)可以在对安装程序没有代码变化或有少量代码变化的情况下实现。
以下结合图4讨论由用户计算机上运行的安装程序执行的说明性过程的进一步细节。
再次参考图2,激活服务器140可以从用户计算机130接收激活请求,该激活请求可以包括用户120键入的产品密钥和/或从产品密钥中导出的信息。例如,在一些实施例中,激活服务器140可以经由激活请求来接收由用户计算机130从产品密钥中提取的序列号、组ID以及至少一个安全值。可替代地或此外,激活服务器140可以接收产品密钥,并且执行它自己的处理来恢复这些信息。
如上所述,从产品密钥中提取的信息(例如序列号和/或组ID)可用于识别和/或检索那些将要在验证产品密钥的过程中使用的验证信息(例如一个或多个加密算法和/或用于该加密算法的参数)。在图2所示的示例中,激活服务器140可以使用序列号和/或组ID来从存储器260中检索验证信息。例如,在基于电子签名的实现方式中,激活服务器140可以使用序列号和/或组ID来从存储器260中检索签名验证算法的标识和/或验证密钥。类似地,在基于加密的实现方式中可以检索解密密钥和/或解密算法的标识,在基于散列处理的实现方式中可以检索秘密密钥和/或散列算法的标识,以及在基于随机生成的实现方式中可以检索与特定产品密钥相关联的随机或伪随机生成值。
以此方式,激活服务器140可能能够以一种模块化方式来处理不同类型的安全机制,由此允许软件卖方更灵活地根据其特定需要来选择不同安全机制。例如在一些实施例中,不同的软件卖方可以共享总的产品密钥实现方式,但却使用不同的算法和/或参数。可替代地或此外,同一个软件卖方可以针对不同产品或是不同的版本、系列或其他适当的产品分类使用不同的算法和/或参数。例如,如果产品与高拷贝风险相关联(例如流行的视频游戏),那么可以选择更安全的算法,然而针对预计会生成大量激活请求的产品(例如流行的操作系统),可以选择更高效的算法。
在图2所示的示例中,产品密钥生成服务器110可以将一些或所有验证信息存入存储器260。例如,对于所生成的每一个产品密钥,产品密钥生成服务器110可以通过使用被编码到产品密钥中的标识信息(例如序列号和/或组ID)促进稍后访问的方式而将一些或所有相应的验证信息存入存储器260。可替代地,存储器260可以由中央机构管理,所述机构会针对各种不同的软件产品和/或软件产品群组选择适当的安全机制。在此类实施例中,产品密钥生成信息(例如签名生成、加密和/或散列算法和/或相关联的参数)以及验证信息(例如签名验证、解密和/或散列算法,和/或相关联的参数)可以以与某些标识信息(例如序列号和/或组ID)关联的方式存入存储器260,使得产品密钥生成服务器110可以使用该标识信息来访问适当的产品密钥生成信息,并且激活服务器140可以使用该标识信息来访问适当的验证信息。存储器260还可以存储随机、伪随机或以其他方式生成的与产品密钥的一个或多个标识组件相关联的值。
在下文中结合图5来讨论由激活服务器执行的用于验证产品密钥的说明性处过程的进一步细节。
如上所述,在一些实施例中,产品密钥可以包括要由诸如激活服务器140和增强的安全服务器250之类的不同实体单独核实的多个安全值。在图2所示的示例中,增强的安全服务器250可以实现为由激活服务器140调用的审计服务。例如,一旦成功核实了产品密钥中的两个安全值之一,激活服务器140可以决定审计是否是期望的,如果是的话,则其向增强的安全服务器250发送审计请求。作为响应,增强的安全服务器250可以基于这两个安全值中的另一个值来执行它自己的核实。与激活服务器140一样,增强的安全服务器250可以访问来自存储器260的验证信息,尽管增强的安全服务器250访问的验证信息可能不同于激活服务器140访问的验证信息。在一些实施方式中,增强的安全服务器250可以在线执行审计,并且将结果回送到激活服务器140,所述激活服务器只在这两个验证全都成功的情况下才会许可激活请求。在其他实现方式中,当激活服务器140自己的验证成功时,它可以许可激活请求,而增强的安全服务器250可以离线执行审计,并且可以追溯性地使产品密钥无效。
在下文中结合图6来论述由增强的安全服务器执行的用于验证产品密钥的说明性过程的进一步细节。
根据特定的实现方式,激活服务器140可以采用任何适当的方式来选择用于审计的产品密钥。例如,激活服务器140可以随机或伪随机地进行选择。另举一例,激活服务器140可以基于软件产品类型、软件产品版本、软件产品所属的软件产品系列、用以分发软件产品拷贝的渠道和/或其他那些可以用编码在产品密钥的标识组件中的信息访问的软件产品的相关特性来进行选择。作为又一个示例,激活服务器140可以基于如通过用户输入或通过自动检测一个或多个系统活动模式来指示的所感知的安全威胁等级来选择用于审计的产品密钥,所述系统活动模式例如是涉及特定产品或产品群组的请求的频率或者从特定用户或用户群组接收的请求的频率。
一旦验证了产品密钥(例如由激活服务器140单独验证或是由激活服务器140和增强的安全服务器250验证),激活服务器140可以选择一个或多个适用的许可,并且将选定的许可告知用户计算机130。然后,用户计算机130可以将这些许可与所安装的软件产品拷贝相关联,并且根据这些许可来有选择地启用软件产品中的特征。
应该了解的是,图2所示以及如上所述的特定实现方式仅仅是说明性的,因为这里公开的各种不同的发明概念不限于任何特定的实现方式。例如,在可替代的实现方式中,产品密钥生成服务器110和激活服务器140可以由同一实体操作和/或在相同的物理服务器上操作。作为另一个示例,增强的安全服务器250可以经由某个适当网络(企业网或因特网)持续地或在需要时(例如在激活服务器140受损或是因为其他原因不可用时)直接访问。此外,在一些情况中,用户120可以是个人用户,但在其他情况中,该用户也可以是公司用户,例如在零售计算设备之前在该设备上安装软件产品的原始设备制造商(OEM)。
转到图3A,该图示出用于生成产品密钥的说明性过程300,其中该过程可以由图2所示的产品密钥生成服务器110执行,以便生成产品密钥。在图3B中示出可以经由过程300生成的产品密钥350的示例。
在图3A所示的示例中,过程300始于识别软件产品序列号的动作305。在一些实施例中,该序列号可以从与软件产品相关联的号码范围中选择,例如通过在每次将序列号分配给新的软件产品拷贝时从所述范围的低端开始且递增一个(或者可替代地,从所述范围的高端开始且递减一个)来选择。选择序列号的其他方式也可以是适当的,例如随机或伪随机地从一组可用号码中选择。
如上所解释,单独的序列号可以不携带关于软件产品的足够信息以允许验证机构(例如图2所示的激活服务器)识别验证过程需要的信息。相应地,在一些实施例中,产品密钥可以包括可以促进产品密钥的高效验证的附加标识信息。例如,所述附加标识信息可以是与软件产品类型、软件产品版本、软件产品所属的软件产品系列,用以分发软件产品拷贝的渠道和/或软件产品的其它相关特性相关联的组ID。更一般地,组ID可以标识可以以与出于验证目的的类似方式(例如使用相同的加密算法和/或参数)处理的软件产品的任何群组。
在动作310处,可以使用适当的安全机制基于序列号和附加标识信息(例如组ID)生成第一安全值。例如,序列号和/或附加标识信息可用于确定安全机制,该安全机制可以基于签名、加密、散列、随机生成和/或其他密码学技术。作为更具体的示例,序列号和/或附加标识信息可用于确定对称加密算法和秘密密钥,并且第一安全值可以至少部分通过使用对称加密算法和秘密密钥加密所述序列号和附加标识信息来生成。作为另一个示例,序列号和/或附加标识信息可用于确定散列算法和秘密密钥,并且第一安全值可以至少部分通过散列所述序列号和附加标识信息生成,其中秘密密钥可以用作散列处理的参数。
在动作315处,可以基于序列号和附加标识信息生成第二安全值。在一些实施例中,第二安全值可以使用与用于生成第一安全值的机制不同的安全机制来生成。例如,第二安全值可以使用不同的加密算法或是具有不同密钥的相同加密算法生成。可替代地,第二安全值与第一安全值可以是用相同的安全机制生成的(例如使用相同的散列算法和秘密密钥)。
在动作320处,可以基于序列号、附加标识信息以及第一和第二安全值生成校验和。该校验和可以用循环冗余校验(CRC)校验和算法或某种其他适当的算法来生成。如上文结合图2所述,校验和可用于确定用户是否有可能在键入产品密钥时犯了排字错误。因此,校验和不需要安全抵抗暴力攻击,并且相对较少的比特(例如不超过10个)可能足够了。
在动作325处,可以通过某种适当的方式将序列号、附加标识信息、第一和第二安全值以及校验和封装在一起,从而形成产品密钥。例如,在一些实施例中,使用了字母表“BCDFGHJKMPQRTVWXY2346789”的base24编码可被用于对校验和、第一和第二安全值、附加标识信息、以及序列号的级联(concatenation)进行编码,并且不在用于编码的字母表中的特殊字符(例如字符“N”)可以被插入编码的串中的选定位置。然后,所得的产品密钥可被存储并且稍后与软件产品的拷贝相关联以及传达给用户。
如下文中结合图3B和4更详细的讨论,特殊字符(例如字符“N”)的位置的可被安装程序用以确定对特定产品密钥执行常规的还是改进的产品密钥验证。所述特殊字符的位置还可以指示产品密钥具有常规格式还是改进格式。由此,安装程序可以根据特殊字符的位置来以不同的方式解析产品。
在动作330处,与产品密钥相关联的验证信息可以通过促进一个或多个验证机构(例如图2所示的激活服务器140和增强的安全服务器)检索的方式存储。例如,验证信息可以以与产品密钥的序列号和/或附加标识信息(例如组ID)关联的方式存储,以使得验证机构可以通过提供序列号和/或附加标识信息来检索验证信息。
这里使用的“验证信息”通常是指任何可以在验证产品密钥时使用的信息。例如,验证信息可以包括要被用于验证产品密钥的一个或多个加密算法的标识和/或一个或多个相关联的参数(例如密钥)。优选地,与第一和第二安全值有关的验证信息可以作为独立单元存储,使得负责核实第一安全值的实体(例如图2所示的激活服务器140)不能访问与第二安全值有关的验证信息。以此方式,即使成功攻击了负责核实第一安全值的实体,与第二安全值有关的验证信息也可以保持安全。
作为另一个示例,验证信息可以包括安全值本身,使得可以简单地通过将提取自产品密钥的安全值与使用产品密钥序列号和/或附加标识信息检索的安全值相比较来执行验证。在随机或伪随机地生成安全值的实现方式中,或者在动作310和315处使用相同安全机制来生成第一和第二安全值的实现方式中,这种存储安全值本身的方法可能是适当的。在后一种情况中,可能期望的是不向验证机构(例如图2所示的激活服务器140)透露安全机制,从而防止在验证机构被成功的攻击的情况下损害所述安全机制。
图3B示出5x5格式的说明性产品密钥350,其中在25个字符中有24个字符是从具有24个字符“BCDFGHJKMPQRTVWXY2346789”的字母表中提取的,并且在第9个位置插入特殊字符“N”。该格式可以与同样使用5x5格式的现有产品密钥的实现方式兼容,并且特殊字符“N”的位置可以被安装程序用来确定执行常规的产品密钥处理还是依照本公开的一些实施例的新的产品处理。
在一些实施例中,通过移除特殊字符“N”,产品密钥350可被解码成如图3B中的表355所示的114比特的串。该比特串中的前50比特可以对应于产品密钥的标识组件,其中前20个比特表示组ID360且剩余的30比特表示序列号362。接下来的63比特可以对应于产品密钥的安全组件,其中分别为第一安全值364,第二安全值366以及校验和368分配了40、13和10比特。最后一比特370可以指示与产品密钥相关联的软件产品拷贝是经由零售渠道(也被表示为“FPP”)还是升级渠道(也被表示为“CCP”)分发的。
应该注意,在图3B所示的示例中,在产品密钥350中有接近一半比特(或是114比特中的50比特,大约45%或是超过40%)被分配给了标识组件。结果,有超出1024的号码(例如0到250-1)可用于组ID和序列号组合,这极大减小了对于预测精确的产品密钥范围的需要。
应该了解的是,图3A所示的过程300以及图3B所示的产品密钥350只是说明性的,因为在本公开的各种不同实施例中也可以使用生成产品密钥的其他方式和/或产品密钥的其他格式。例如,一些产品密钥实现方式可以利用携带了用于验证的足够信息的“自我核实”产品密钥,使得验证机构不必从单独的来源检索验证信息。
图4示出可以由用户计算机上的安装程序响应于用户激活软件产品拷贝的尝试而执行的说明性过程400。例如,过程400可以由图2所示的用户计算机130在为用户120安装软件产品拷贝的期间执行。
过程400可以始于向用户提示与所安装的软件产品拷贝相关联的产品密钥并且经由诸如键盘或鼠标之类的输入设备来接收产品密钥的动作405。在操作410处,过程400可以确定是用常规的产品密钥实现方式还是使用合并了本公开中描述的一个或多个发明概念的新的产品密钥实现方式来生成产品。例如,在一个实施例中,过程400可以针对诸如字母“N”之类的特殊字符扫描产品密钥。如果发现字母“N”在预定位置处(例如在产品密钥的安全组件或有效载荷开始的地方,比特偏移50处或是其附近),那么可以确定该产品密钥与新的实现方式相关联。否则,产品密钥可以与现有的实现方式相关联,并且该过程400可以作为子过程415来继续执行常规产品密钥验证。在另一个实施例中,仅存在诸如字母“N”之类的特殊字符可以指示产品密钥将与新的实现方式相关联,并且特殊字符在产品密钥内的位置可以提供能够用于验证产品密钥的附加信息。例如,除了用base24字母表编码的比特之外,可以使用特殊字符位置来编码一个或多个比特,从而有效提高产品密钥的信息承载能力。
如果确定产品密钥与新的实现方式相关联,那么过程400可以继续到动作420,以执行校验和核实。例如,参考图3B所示的实施例,该过程400可以将产品密钥解码成二进制格式,并且核实产品密钥中始于比特偏移103的10比特信息是否是产品密钥中的剩余部分或是其任何适当部分的正确校验和。例如,所述10比特校验和可以针对产品密钥的前103比特和/或升级比特来核实。
如果在动作420处确定校验和正确,那么用户有可能正确键入了产品密钥,并且过程400可以继续到动作425,以向适当的验证机构(例如图2所示的验证服务器140)传送激活请求。根据特定实施例,该激活请求可以包括产品密钥本身和/或与产品密钥的一个或多个组成部分相对应的比特串,例如组ID、序列号、第一安全值和/或第二安全值。
另一方面,如果在动作420处确定校验和不正确,那么该过程可以继续到动作430,以提示用户重新输入产品密钥,然后返回动作405,以处理用户下一次输入产品密钥的尝试。
在动作435处,过程400可以接收来自验证机构的关于在动作425处传送的激活请求的状态的通知。如果该请求被拒绝,则过程400可以继续到操作445,以向用户告知未能使用所提供的产品密钥完成安装。否则,该过程400可以继续到动作440,以识别验证机构给予的一个或多个许可,并且根据所给予的许可来启用软件产品中的一个或多个特征。
参考图5,该图示出说明性过程500,该过程可以由验证机构(例如图2所示的验证服务器140)响应于从用户尝试安装软件产品拷贝的计算机(例如图2所示的用户计算机130)接收激活请求来执行。
在本示例中,过程500始于接收激活请求的动作505,该请求可以包括整个产品密钥和/或产品密钥的各种相关部分,例如图3B所示的组ID、序列号、第一安全值和/或第二安全值。在动作510处,过程500可以使用一些来自产品密钥的标识信息(例如组ID)来访问与第一安全值相关的验证信息。例如,过程500可以使用在内部编码组ID的统一资源定位符(URL)来与验证信息的存储器(例如图2所示的存储器260)进行联系。
在获得了相关验证信息的情况下,过程500可以继续到动作515,以分析第一安全值。例如,在通过使用秘密密钥加密序列号和组ID来生成第一安全值的实施例中,过程500访问的验证信息可以包括与所用加密算法相对应的解密算法的标识(或可替代地,实现所述解密算法的程序代码)以及被用作解密算法参数的秘密密钥。在该情况下,过程500可以在动作520处使用所访问的验证信息来解密第一安全值,并且将结果与序列号和组ID相比较。如果序列号和组ID与经解密的第一安全值匹配,则可以认为产品密钥有效(至少临时有效),并且该过程500可以继续到动作530,以处理可能的审计。另一方面,如果确定序列号和组ID不与经解密的第一安全值相匹配,则过程500可以继续到动作525,以向发送激活请求的计算机通知所述激活请求已被拒绝。
可替代地或此外,过程500访问的验证信息可以包括所用加密算法的标识(或可替代地,实现加密算法的程序代码)以及用作加密算法参数的秘密密钥。在该情况中,过程500可以执行自己对于序列号和组ID的加密,并且在动作520处将结果与第一安全值相比较。如果第一安全值与过程500生成的密文匹配,则可以认为产品密钥有效(至少临时有效),并且该过程500可以继续到动作530,以处理可能的审计。另一方面,如果确定第一安全值不与过程500生成的密文相匹配,则过程500可以继续到动作525,以向发送激活请求的计算机通知所述激活请求已被拒绝。
在通过使用秘密密钥散列(hashing)序列号和组ID来生成第一安全值的另一个实施例中,过程500访问的验证信息可以包括所用散列算法的标识(或可替代地,实现该散列算法的程序代码)以及在生成第一安全值的过程中被用作参数的秘密密钥。然后,过程500可以在动作520处执行自己对于序列号和组ID的散列处理,并且将结果与第一安全值相比较。如果第一安全值与过程500生成的序列号及组ID的散列相匹配,则可以认为产品密钥有效(至少临时有效),并且该过程500可以继续到动作530,以处理可能的审计。另一方面,如果确定第一安全值不与过程500生成的序列号及组ID的散列相匹配,则过程500可以继续到动作525,以向发送激活请求的计算机通知所述激活请求已被拒绝。
如上所述,是否审计特定产品密钥的决定可以采用各种不同的方式做出,例如通过随机选择和/或基于所感知的安全威胁等级。如果在动作530处确定要审计产品密钥,则过程500可以继续到动作540,以向审计机构(例如图2所示的增强的安全服务器250)传送审计请求,并且在动作545处接收审计响应。如果审计成功,或者如果在动作530处确定不必审计,则过程500可以继续到动作535,以识别将要被授予的一个或多个许可并且将授予的许可通知发送激活请求的计算机。另一方面,如果审计失败,则过程500可以继续到动作525,以向发送激活请求的计算机通知所述激活请求已被拒绝。
参考图6,该图示出说明性过程600,该过程可以由审计机构(例如图2所示的增强的服务器250)响应于从验证机构(例如图2所示的激活服务器140)接收审计请求而执行。
在本示例中,过程600始于接收审计请求的动作605,该请求可以包括整个产品密钥和/或产品密钥的各种相关部分,例如图3B所示的组ID、序列号、第一安全值和/或第二安全值。在动作610处,过程600可以使用来自产品密钥的一些标识信息(例如组ID)来访问与第二安全值相关的验证信息。例如,过程600可以使用在内部编码组ID的统一资源定位符(URL)来与验证信息的存储器(例如图2所示的存储器260)进行联系。根据特定的实现方式,过程600可以提供附加证书信息以便访问与第二安全值相关的验证信息。这种附加证书信息可能对前端验证机构(例如图2所示的可以直接从因特网访问的激活服务器140)而言是不可用的,使得即使在前端验证机构的安全性受到破坏的情况下,与第二安全值相关的验证信息也可以保持安全。
在获得了相关验证信息的情况下,过程600可以继续到动作615,以分析第二安全值。例如,在通过使用秘密密钥散列所述序列号和组ID生成第二安全值的实施例中,过程600访问的验证信息可以包括与所用散列算法的标识(或可替代地,实现散列算法的程序代码)以及作为散列算法参数使用的秘密密钥。在该情况中,过程600可以执行自己对于序列号和组ID的散列处理,并且在动作620中将结果与第二安全值相比较。可替代地,过程600访问的验证信息可以包括随机或伪随机地生成的与序列号和/或组ID相关联的值,在这种情况下,过程600可以简单地将随机或伪随机生成的值与第二安全值相比较。
如果第二安全值匹配该散列值(作为验证信息的一部分被检索或由过程600使用检索到的验证信息生成),则可以认为产品密钥通过了审计机构的验证,并且过程600可以继续到动作625,以向发送审计请求的验证机构通知所述审计成功。否则,该过程600可以继续到动作630,以向验证机构通知所述审计失败。
图7示意性示出了可以实现本公开的各种不同发明方面的说明性计算机1000。例如,在这种计算机上可以实现在这里为图1-2中的产品密钥生成服务器110、用户计算机130、激活服务器140以及增强的安全服务器250描述的任何功能。计算机1000包括处理器或处理单元1001以及存储器1002,该存储器可以包括易失性和/或非易失性存储器。除了系统存储器1002之外,计算机1000还可以包括存储装置1005(例如一个或多个盘驱动器)。存储器1002可以存储一个或多个指令,以对处理单元1001进行编程来执行这里描述的任何功能。存储器1002还可以存储一个或多个应用程序和/或应用编程接口(API)函数。
计算机1000可以具有一个或多个输入设备和/或输出设备,例如图7所示的设备1006和1007。其中,这些设备可以尤其用于呈现用户接口。可用于提供用户接口的输出设备的示例包括用于视觉输出呈现的打印机或显示屏或用于听觉输出呈现的扬声器或其他声音生成设备。可用于用户接口的输入设备的示例包括键盘和指示设备,例如鼠标、触摸板和数字化板。另举一例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
如图7所示,计算机1000还可以包括一个或多个网络接口(例如网络接口1010),以便能够经由各种不同的网络(例如网络1020)来进行通信。网络的示例包括局域网或广域网,例如企业网或因特网。此类网络可以基于任何适当的技术,并且可以依照任何适当的协议工作,并且可以包括无线网络、有线网络或光纤网络。
在如此描述本发明的至少一个实施例的若干方面之后,应当理解,本领域技术人员将很容易想到各种不同的改变、修改和改进。这些改变、修改和改进被预期是本公开的一部分,并且预期在本发明的精神和范围内。相应地,以上描述和附图仅仅作为示例。
本发明的上述实施例可以采用多种方式中的任何一种来实现。例如,这些实施例可以使用硬件、软件或是其组合来实现。在使用软件实现时,软件代码可以在任一适当的处理器或处理器集合上执行,无论所述处理器是在单个计算机上提供还是分布于多个计算机之间。
此外,这里概述的各种不同的方法或过程可被编码成可在使用了多种操作系统中任意一种的一个或多个处理器或平台上执行的软件。此外,此类软件可以用多种适当的编程语言和/或编程或脚本工具中任意一种来编写,并且还可被编译成在主机或虚拟机上执行的可执行机器语言代码或中间代码。
在这个方面,本发明可以体现为使用了一种或多种程序编码的非瞬时计算机可读介质(或多个计算机可读介质)(例如计算机存储器、一个或多个软盘、压缩盘、光盘、磁带、闪速存储器、现场可编程门阵列或其他半导体设备中的电路配置、或其他非瞬时的有形的计算机存储介质),所述程序在一个或多个计算机或其他处理器上执行时,所述程序将会执行实现如上所述的本发明的各种不同的实施例的方法。一种或多种计算机可读介质可以是可传送的,使得其上存储的一个或多个程序可被载入一个或多个不同计算机或其他处理器中,以便实现如上所述的本发明的各种不同的方面。
这里使用的术语“程序”或“软件”在一般意义上是指可以用于对计算机或其他处理器进行编程以实现如上所述的本发明的各种不同的方面的任何类型的计算机代码或计算机可执行指令集。此外,应当理解,根据本发明的一个方面,在被执行时执行本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以采用模块化的方式分布在多个不同的计算机或处理器中,以便实现本发明的各种不同的方面。
计算机可执行指令可以采用多种由一个或多个计算机或其他设备执行的形式,例如程序模块。一般来说,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。典型地,在各种不同的实施例中可以根据需要来组合和分布程序模块的功能。
此外,数据结构可以通过任何适当的形式而被存入计算机可读介质。为了简化说明,数据结构可被示出为具有通过数据结构中的位置来进行关联的字段。这种关系同样可以通过为用于字段的存储装置分配计算机可读介质中在字段之间传递关系的位置来实现。但是,任何适当的机制均可用于在数据结构的字段中的信息之间建立关系,这其中包括通过使用在数据元素之间建立关联的指针、标签或其他机制。
本发明的各种不同方面既可以单独使用,也可以组合使用,或者采用上述实施例中没有具体讨论的多种设置使用,并且因此本发明并不仅限于被应用于上文的描述阐述的或在附图中图示的细节和组件设置。例如,在一个实施例中描述的方面可以采用任何方式与其他实施例中的方面组合。
此外,本发明可以体现为方法,并且已经提供了所述方法的示例。作为方法一部分执行的动作可以采用任何适当的方式排序。相应地,所述实施例可以被构造成其中的动作以与所示出的顺序不同的顺序来执行,其可以包括同时执行某些动作,即使这些动作在说明性实施例中被显示成顺序动作。
在权利要求中使用了例如“第一”、“第二”、“第三”等之类的顺序术语来修改权利要求要素,但这本身并不意味着任何优先级、优先权、一个权利要求要素超出另一个要素的顺序或是执行方法动作的时间顺序,而是仅仅用作标签来将具有某个名称的一个权利要求要素与另一个具有相同名称的要素区分开来(而不是用于顺序术语),以便区分所要保护的元素。
此外,这里使用的措辞和术语是用于描述目的,而不应该将其视为限制。这里使用的“包括”、“包含”、“具有”、“涉及”及其不同变体意指包含了其后列举的项目,及其等价物和附加项目。
Claims (10)
1.一种用于验证产品密钥(350)的设备(200),包括:
用于访问产品密钥(350)的装置,该产品密钥包括标识信息(360,362,370),所述标识信息用于识别软件产品的至少一个拷贝以及充当一个或多个索引,所述索引用于标识要在验证产品密钥(350)的过程中使用的加密算法和/或加密算法的参数,该产品密钥(350)还包括与标识信息(360,362,370)相关联的安全信息(364,366),其中所述安全信息至少包括第一安全值和第二安全值;
用于使用至少一些标识信息(360,362,370)来访问来自除了产品密钥(350)之外的至少一个来源的验证信息的装置;以及
用于使用该验证信息来处理标识信息(360,362,370)和安全信息(364,366),以便确定产品密钥(350)是否有效的装置;其中所述使用该验证信息来处理标识信息(360,362,370)和安全信息(364,366),以便确定产品密钥(350)是否有效包括:
确定第一安全值是否有效;
响应于确定第一安全值是有效的,确定第二安全值是否需要验证;以及
响应于确定第二安全值是需要验证的,将第二安全值传送给另一设备以供验证。
2.权利要求1的设备(200),其中安全信息(364,366)包括第一部分(364)和第二部分(366)。
3.权利要求2的设备(200),其中验证信息是第一验证信息,并且所述设备还包括:
用于至少部分基于标识信息(360,362,370)来访问第二验证信息的装置;以及
用于使用第二验证信息来核实安全信息的第二部分(366)的装置,其中第二验证信息不同于第一验证信息。
4.权利要求1的设备(200),其中产品密钥(350)包括与软件产品的至少一个拷贝相关联的序列号(362)以及不同于序列号(362)的附加标识信息(360),并且其中附加标识信息(360)被用于访问验证信息。
5.权利要求4的设备(200),其中附加标识信息(360)识别从包含下列各项的群组中选出的至少一项:
软件产品的类型;
软件产品的版本;
软件产品所属的软件产品序列;以及
用以分发软件产品拷贝的渠道。
6.一种用于生成产品密钥(350)的方法,包括以下动作:
访问标识信息(360,362,370),所述标识信息用于识别软件产品的至少一个拷贝,以及充当一个或多个索引,所述索引用于标识要在验证产品密钥(350)的过程中使用的加密算法和/或加密算法的参数;
生成与标识信息(360,362,370)相关联的安全信息(364,366),其中所述安全信息至少包括第一安全值和第二安全值;
至少部分基于安全信息(364,366)和标识信息(360,362,370)来生成产品密钥(350);以及
在至少一个存储设备中存储与至少一些标识信息(360,362,370)相关联的验证信息,所述验证信息在处理安全信息(364,366)的过程中被用于验证产品密钥(350);其中所述验证包括:
由第一计算设备确定第一安全值是否有效;
响应于第一计算设备确定第一安全值是有效的,确定第二安全值是否需要验证;以及
响应于确定第二安全值是需要验证的,将第二安全值传送给第二计算设备以供验证。
7.权利要求6的方法,其中安全信息(364,366)包括第一部分(364)和第二部分(366),并且验证信息是第一验证信息,以及其中该方法还包括以下动作:
在至少一个存储设备中存储与至少一些标识信息(360,362,370)相关联的第二验证信息,所述第二验证信息在处理安全信息中的第二部分(366)的过程中被用于验证产品密钥(350),所述第一和第二验证信息分别可以从至少一个存储设备访问。
8.权利要求6的方法,其中生成安全信息(364,366)的动作包括:基于标识信息(360,362,370)的至少一部分来生成至少一个散列值,并且其中该验证信息包括所述至少一个散列值。
9.权利要求6的方法,其中生成安全信息(364,366)的动作包括使用至少一种加密算法以及至少一个秘密密钥来加密标识信息(360,362,370)的至少一部分,以及其中该验证信息包括至少一个秘密密钥以及所述至少一种加密算法的标识。
10.权利要求6的方法,其中标识信息(360,362,370)包括与软件产品的至少一个拷贝相关联的序列号(362)以及不同于序列号(362)的附加标识信息(360,370),并且其中验证信息以与附加标识信息(360,370)关联的方式被存储。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/950777 | 2010-11-19 | ||
US12/950,777 US8984293B2 (en) | 2010-11-19 | 2010-11-19 | Secure software product identifier for product validation and activation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102426640A CN102426640A (zh) | 2012-04-25 |
CN102426640B true CN102426640B (zh) | 2015-11-18 |
Family
ID=45960619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110367803.7A Active CN102426640B (zh) | 2010-11-19 | 2011-11-18 | 用于产品验证和激活的安全软件产品标识符 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8984293B2 (zh) |
CN (1) | CN102426640B (zh) |
CA (1) | CA2815375C (zh) |
TW (1) | TWI557589B (zh) |
WO (1) | WO2012067888A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691860B2 (en) | 2009-02-24 | 2020-06-23 | Rambus Inc. | Secure logic locking and configuration with camouflaged programmable micro netlists |
US10476883B2 (en) | 2012-03-02 | 2019-11-12 | Inside Secure | Signaling conditional access system switching and key derivation |
US9800405B2 (en) * | 2012-03-02 | 2017-10-24 | Syphermedia International, Inc. | Blackbox security provider programming system permitting multiple customer use and in field conditional access switching |
JP6039364B2 (ja) * | 2012-10-26 | 2016-12-07 | キヤノン株式会社 | 画像形成装置、サーバー装置、情報処理方法及びプログラム |
DE102012220767A1 (de) * | 2012-11-14 | 2014-05-28 | Siemens Aktiengesellschaft | Verfahren und Vorrichtungen zum Installieren von Gebäudesteuerungssoftware |
US9292664B2 (en) * | 2013-03-01 | 2016-03-22 | Lenovo (Singapore) Pte. Ltd. | Key injection tool |
TWI505128B (zh) * | 2013-03-20 | 2015-10-21 | Chunghwa Telecom Co Ltd | Method and System of Intelligent Component Library Management |
US9703937B2 (en) * | 2013-04-10 | 2017-07-11 | Dell Products, L.P. | Method to prevent operating system digital product key activation failures |
US11341206B2 (en) | 2014-03-12 | 2022-05-24 | Akamai Technologies, Inc. | Intercepting not directly interceptable program object property |
US11314834B2 (en) | 2014-03-12 | 2022-04-26 | Akamai Technologies, Inc. | Delayed encoding of resource identifiers |
US10148735B1 (en) | 2014-03-12 | 2018-12-04 | Instart Logic, Inc. | Application layer load balancer |
US10747787B2 (en) | 2014-03-12 | 2020-08-18 | Akamai Technologies, Inc. | Web cookie virtualization |
US10474729B2 (en) | 2014-03-12 | 2019-11-12 | Instart Logic, Inc. | Delayed encoding of resource identifiers |
US11134063B2 (en) * | 2014-03-12 | 2021-09-28 | Akamai Technologies, Inc. | Preserving special characters in an encoded identifier |
CN105790931B (zh) * | 2014-12-26 | 2019-05-24 | 中国移动通信集团公司 | 一种密钥分发方法、网络设备、终端设备及系统 |
US9659155B2 (en) * | 2015-02-06 | 2017-05-23 | Macpaw Inc | System and method for software activation and license tracking |
US10706130B2 (en) * | 2015-02-06 | 2020-07-07 | Macpaw Inc. | System and method for software activation and license tracking |
US9965639B2 (en) * | 2015-07-17 | 2018-05-08 | International Business Machines Corporation | Source authentication of a software product |
US10558814B2 (en) * | 2016-07-29 | 2020-02-11 | Google Llc | Privacy aware intent resolution with external sources |
CN106339271A (zh) * | 2016-08-30 | 2017-01-18 | 惠州市源医科技有限公司 | 一种药品序列号的识别匹配方法和装置 |
KR20200000448A (ko) * | 2017-05-22 | 2020-01-02 | 맥퍼, 인크. | 소프트웨어 활성화 및 라이센스 추적을 위한 시스템 및 방법 |
TWI633444B (zh) * | 2017-06-13 | 2018-08-21 | 中華電信股份有限公司 | Encryption and decryption communication method and system based on voucher signature verification |
US11256799B2 (en) | 2017-08-29 | 2022-02-22 | Seagate Technology Llc | Device lifecycle distributed ledger |
CN107820128B (zh) * | 2017-11-10 | 2019-12-27 | 深圳创维-Rgb电子有限公司 | Usb录制功能定制方法、装置及计算机可读存储介质 |
CN108304735A (zh) * | 2017-12-28 | 2018-07-20 | 山东浪潮通软信息科技有限公司 | 一种授权序列号申请方法、系统及提货系统、应用服务器 |
WO2019175003A1 (en) * | 2018-03-14 | 2019-09-19 | Tetra Laval Holdings & Finance S.A. | Providing unique codes on packages for liquid food |
US11308194B2 (en) * | 2018-10-31 | 2022-04-19 | Seagate Technology Llc | Monitoring device components using distributed ledger |
JP7187351B2 (ja) * | 2019-02-27 | 2022-12-12 | キヤノン株式会社 | デバイス管理サーバー、その制御方法及びプログラム |
US11252570B2 (en) | 2019-11-22 | 2022-02-15 | John Junior Richardson | Computer system and method for software authentication and single application enforcement |
CN112837079B (zh) * | 2019-11-22 | 2023-06-09 | 上海哔哩哔哩科技有限公司 | 商品销量预测方法、装置、计算机设备 |
KR20210108279A (ko) * | 2020-02-25 | 2021-09-02 | 삼성전자주식회사 | 전자 장치의 서명 키 관리 방법 및 그 전자 장치 |
TWI759874B (zh) * | 2020-09-22 | 2022-04-01 | 明泰科技股份有限公司 | 分散式的軟體驗證系統 |
US11995158B2 (en) * | 2021-03-05 | 2024-05-28 | Adobe Inc. | Techniques for predicting leakage of a serial number |
CN113010123B (zh) * | 2021-03-12 | 2023-09-05 | 珠海奔图电子有限公司 | 设备监控方法、装置和服务器 |
US20220342655A1 (en) * | 2021-04-22 | 2022-10-27 | STMicroelectronics (Grand Ouest) SAS | Microcontroller, computer program product, and method for adding an additional function to a computer program |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3032788B2 (ja) | 1991-05-08 | 2000-04-17 | ディジタル イクイプメント コーポレイション | ライセンス管理システム |
US6029145A (en) | 1997-01-06 | 2000-02-22 | Isogon Corporation | Software license verification process and apparatus |
US7110984B1 (en) | 1998-08-13 | 2006-09-19 | International Business Machines Corporation | Updating usage conditions in lieu of download digital rights management protected content |
US6223291B1 (en) | 1999-03-26 | 2001-04-24 | Motorola, Inc. | Secure wireless electronic-commerce system with digital product certificates and digital license certificates |
US6996720B1 (en) | 1999-12-17 | 2006-02-07 | Microsoft Corporation | System and method for accessing protected content in a rights-management architecture |
KR100381416B1 (ko) | 2000-07-27 | 2003-04-23 | 삼성전자주식회사 | 컴퓨터 시스템 및 그 컴퓨터 시스템의 프로덕트 키 저장방법 |
US7149722B1 (en) | 2000-09-28 | 2006-12-12 | Microsoft Corporation | Retail transactions involving distributed and super-distributed digital content in a digital rights management (DRM) system |
US6898286B2 (en) | 2000-12-19 | 2005-05-24 | International Business Machines Corporation | Method and system verifying product licenses using hardware and product identifications |
US6993664B2 (en) | 2001-03-27 | 2006-01-31 | Microsoft Corporation | Method and system for licensing a software product |
EP1419438A2 (en) | 2001-07-02 | 2004-05-19 | BRITISH TELECOMMUNICATIONS public limited company | Program installation process |
US7444506B1 (en) * | 2001-12-28 | 2008-10-28 | Ragula Systems | Selective encryption with parallel networks |
US7747531B2 (en) * | 2002-02-05 | 2010-06-29 | Pace Anti-Piracy | Method and system for delivery of secure software license information |
US7742992B2 (en) | 2002-02-05 | 2010-06-22 | Pace Anti-Piracy | Delivery of a secure software license for a software product and a toolset for creating the software product |
US7698225B2 (en) | 2002-08-30 | 2010-04-13 | Avaya Inc. | License modes in call processing |
EP1396798A1 (en) * | 2002-09-03 | 2004-03-10 | Hewlett-Packard Company | A license file, a license management module and alicense management system |
JP4343542B2 (ja) | 2003-01-30 | 2009-10-14 | ソニー株式会社 | 情報処理システム、情報処理装置および情報処理方法、並びにプログラムおよび記録媒体 |
US20040268120A1 (en) | 2003-06-26 | 2004-12-30 | Nokia, Inc. | System and method for public key infrastructure based software licensing |
CN1816823A (zh) | 2003-08-11 | 2006-08-09 | 索尼株式会社 | 通信系统和通信方法 |
US20050195978A1 (en) | 2004-03-04 | 2005-09-08 | Miodrag Babic | Method and apparatus for encoding and selective distribution of licensed digital content |
US20050289072A1 (en) | 2004-06-29 | 2005-12-29 | Vinay Sabharwal | System for automatic, secure and large scale software license management over any computer network |
US20060195689A1 (en) | 2005-02-28 | 2006-08-31 | Carsten Blecken | Authenticated and confidential communication between software components executing in un-trusted environments |
JP4794242B2 (ja) * | 2005-08-30 | 2011-10-19 | 富士通株式会社 | 制御方法、制御プログラム及び制御装置 |
US7725396B2 (en) | 2006-04-19 | 2010-05-25 | Tellabs Operations, Inc. | Secure keys for software activation |
US20080114695A1 (en) | 2006-11-10 | 2008-05-15 | Semantic Components S.L. | Process for implementing a method for the on-line sale of software product use licenses through a data network, and software component which allows carrying out said process |
US20100250400A1 (en) | 2006-11-10 | 2010-09-30 | Media Patents, S.L. | Apparatus and methods for the sale of software products |
US8001383B2 (en) * | 2007-02-01 | 2011-08-16 | Microsoft Corporation | Secure serial number |
US8620818B2 (en) | 2007-06-25 | 2013-12-31 | Microsoft Corporation | Activation system architecture |
US9336369B2 (en) | 2007-09-28 | 2016-05-10 | Abbyy Development Llc | Methods of licensing software programs and protecting them from unauthorized use |
US20090094372A1 (en) | 2007-10-05 | 2009-04-09 | Nyang Daehun | Secret user session managing method and system under web environment, recording medium recorded program executing it |
US8145537B2 (en) | 2008-02-21 | 2012-03-27 | Digital River, Inc. | Integrated software network agent |
JP2010211784A (ja) | 2009-02-12 | 2010-09-24 | Ricoh Co Ltd | ライセンス管理装置、機器、ライセンス管理方法、プログラム、及びデータ構造 |
US20100293536A1 (en) * | 2009-05-12 | 2010-11-18 | Microsoft Corporation | Enhanced product functionality based on user identification |
US8549641B2 (en) | 2009-09-03 | 2013-10-01 | Palo Alto Research Center Incorporated | Pattern-based application classification |
US20110098030A1 (en) | 2009-10-27 | 2011-04-28 | Nokia Corporation | Method and apparatus for activating services |
-
2010
- 2010-11-19 US US12/950,777 patent/US8984293B2/en active Active
-
2011
- 2011-10-31 TW TW100139603A patent/TWI557589B/zh not_active IP Right Cessation
- 2011-11-08 CA CA2815375A patent/CA2815375C/en active Active
- 2011-11-08 WO PCT/US2011/059693 patent/WO2012067888A1/en active Application Filing
- 2011-11-18 CN CN201110367803.7A patent/CN102426640B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CA2815375A1 (en) | 2012-05-24 |
US20120131349A1 (en) | 2012-05-24 |
WO2012067888A1 (en) | 2012-05-24 |
TW201234208A (en) | 2012-08-16 |
TWI557589B (zh) | 2016-11-11 |
CA2815375C (en) | 2020-04-21 |
CN102426640A (zh) | 2012-04-25 |
US8984293B2 (en) | 2015-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102426640B (zh) | 用于产品验证和激活的安全软件产品标识符 | |
CN102419804B (zh) | 具有冗余安全性的可靠的软件产品验证和激活 | |
CN110493197B (zh) | 一种登录处理方法及相关设备 | |
US9847880B2 (en) | Techniques for ensuring authentication and integrity of communications | |
CN101689237B (zh) | 激活系统体系结构 | |
EP1407339B1 (en) | Firmware validation | |
US20060106729A1 (en) | Method and apparatus for restricting use of a computer program | |
US20120078798A1 (en) | Systems and methods for transmitting financial account information | |
KR100702499B1 (ko) | 메시지 무결성 보증 시스템, 방법 및 기록 매체 | |
CN101199159A (zh) | 安全引导 | |
CN101682612A (zh) | 受控的功能激活 | |
CN103946858A (zh) | 应用数据的解密和加密 | |
US8566952B1 (en) | System and method for encrypting data and providing controlled access to encrypted data with limited additional access | |
US9679117B2 (en) | System and method for obtaining an authorization key to use a product | |
CN103403729A (zh) | 唯一代码签名密钥的安全管理和个性化 | |
JP2009080772A (ja) | ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム | |
CN112000933B (zh) | 应用软件的激活方法、装置、电子设备及存储介质 | |
JP2004318645A (ja) | 無線タグセキュリティ拡張方法,id管理コンピュータ装置,代理サーバ装置,それらのプログラムおよびそれらのプログラムの記録媒体 | |
CN113595731A (zh) | 一种分享链接的防护方法、装置及计算机可读存储介质 | |
EP1733328B1 (en) | Non-algorithmic vectored steganography | |
CN116167020A (zh) | 一种软件授权方法及系统 | |
KR20090089223A (ko) | 공문서의 저장 및 이용 시 암호화/복호화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150616 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150616 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |