保护信息的方法和设备的制作方法

文档序号:6509515阅读:282来源:国知局
专利名称:保护信息的方法和设备的制作方法
技术领域
本发明的背景技术软件或信息的盗版是指在未经该软件或信息的创作者或合法所有者的授权的情况下使用或拷贝该软件或信息的一种行为。盗版在计算机软件应用领域里最为盛行,人们频繁地制作没有许可的非法的软件应用的拷贝。这些应用拷贝后可以供个人使用、再生产和获取商业利益。其它类型的盗版包括拷贝信息,例如音乐唱片、文档的电子可读版本或电子书籍。总之,盗版造成了商业上每年上亿美元的损失。
软件和信息技术工业通过使用加锁方案来回应盗版的威胁。加锁方案包括软件锁机制、许可证和特殊的硬件设备来阻止软件、信息或整个电子设备的非法使用。这些模式企图阻止对手可以自由拷贝软件。
有很多种软件锁机制。例如,一个工厂可以使用唯一的密钥(key)加密部分软件程序。购买了该软件的客户得到密钥,该密钥允许该软件解密后运行。这种软件保护的机制的一个例子就是在购买软件程序时携带的”认证证书”,例如由华盛顿州RedMond微软公司制造的Microsoft Windows 98。认证证书指定一个唯一的产品号。在安装软件的过程当中,软件程序需要该产品号并且必须由用户正确地输入。如果输入的产品号和应用程序期望的号相匹配,这个应用程序的拷贝被认为是合法的并且可以被安装和正常使用。如果输入的号不正确,软件将不能被安装。
硬件盗版保护方案在处理器上附加一个设备,通常通过通讯端口来完成。这些类型的硬件设备通常被称之为”dongles”,硬件保护方案的一个例子是美国专利号3,996,449,该专利公开了一种方法判别运行在计算机上的程序或部分程序是否有效。在该系统里,哈希函数被应用在用户的身份代码或密钥上,以及在一个特殊加固的硬件检查设备里的程序自身的文本。检查设备比较哈希函数的结果值和一个验证值来判断程序文本是否正确,如果文本时正确的,程序可以在该设备上运行。
另外一个与硬件相关的方法是给每一执行程序的处理器分配一个唯一标识符。这样,使用指定的处理器的标识符的身份来给软件程序进行编码。如果没有给该软件提供其它的处理器标识符,它就不能运行在其它的处理器上。显而易见,当企图在一个和该软件没有关系的处理器上运行该软件时,这个系统可以提供使用上的限制。可以使用授权的网络来监控号码分配机制,该网络将一组软件和一个特定的处理器标识符向关联。
除了以上提到的电子硬件和计算机软件应用以及数据保护机制外,几乎没有太大的进展来保护对诸如唱片等可以被电子设备存取的其它类型的编码信息的盗版。本发明的简述本领域先有技术系统的特点以前关于保护软件和信息的非法使用碰到很多问题。使用身份认证或密钥的系统碰到的问题是一个密钥允许程序不受限制地被使用并且没有办法阻止对密钥的拷贝。正因为如此,软件拷贝的所有者可以将密钥或证书以及软件或信息一起传递给其他人,其他人可以使用该证书或密钥安装和运行软件或存取信息。如果一个密钥仅允许使用一次,那么可以解决拷贝的问题,但是每一次使用都必须输入不同的密钥。为了满足商业上的需求,大多数程序需要被使用多次。
在个人计算机里软件锁同样可以被轻易破解,因为机器的所有者有充分的条件和时间来破解软件锁。硬件保护方案缺乏灵活性是因为硬件的设计者需要在硬件设备生产之前就知道被保护的软件的特性。再者,如果使用不同硬件保护机制的不同软件需要运行,必须提供不同的单个硬件设备。定制硬件保护需要花费一定的成本,同时客户发现硬件保护方案使用起来困难;这些因素阻止了硬件保护机制的广泛推广。
硬件保护方案限制了将软件从一个设备移到另一个设备上的灵活性。用户可能不能在购买计算机设备之前购买软件,因为他们还不知道设备的标识信息。硬件制造商可能会欺骗用户,将一个标识分配个多台机器。最后,有经验的黑客可能会通过逆向工程技术来伪造硬件设备的标识或更改软件使其不能检查硬件的标识符。
本发明的实施方案的特点本发明克服了这些和其它问题。本发明提供了方法和设备,使得软件的所有者、代理商或分销商(在此和之后,均使用代理商名称来代指)可以保护他们的知识产权和其它权利。在此和之后,软件被定义为一个广义的概念,包括诸如计算机程序、文本、数据、数据库、音频、视频、图像、任何其它可以被数字化的或作为信号的信息,所述的软件被用户在诸如计算机设备或特殊设备等设备(在此和之后,使用用户设备或设备代指)上存取或使用。本发明也可以使软件代理商为每一个软件实体按照单份使用的基础来收取费用。
特别的是,本发明提供了系统的方法和设备监控软件在用户设备上的使用,并且在某种意义上阻止设备使用任何未经软合法代理商或软件所有者授权的软件实体。
对于特定的软件,代理商的权利可能被侵犯的方式很多,包括但不限于下面的情况一个用户可能将他购买的软件制作拷贝并将拷贝送给了其他的人(这在第一个用户的软件购买协议里是不允许的),其他的人在他们的设备上安装了该软件。一个企业购买或租赁代理商的软件并被授权制作和使用指定数量的拷贝时,该企业的使用数量超过了指定数目。一个盗版代理商非法拷贝和销售合法代理商的软件。一个盗版代理商修改了合法代理商的软件,例如,重新编译应用程序或改名,更改歌曲,并传播和销售侵权的软件。
本发明完成以上所提到的保护合法代理商在软件方面的权利并且阻止用户对这种权利的任何侵犯,不需要借助于对软件实体或软件实体的一部分进行加密,不需要用户在存取之前进行解密,不需要特殊的硬件设备或附件(”dongles”)或特殊的处理器,不需要生产厂商将标识符号码设计在硬件里。因此,通过本发明,和这些解决方案相关的弊端和弱点可以被避免。而且,本发明的方法和设备不会拒绝服务,即使不道德的对手企图使用系统的这种保护机制阻止合法用户存取软件(用户使用该软件符合合法代理商指定的权利(regime))。
使用本发明,软件代理商可以将一些软件(如,特定的应用程序、书籍或歌曲)以他希望的控制方式销售、租赁或传播给用户。企图在用户设备上安装或已经使用的软件的每一个特定拷贝都被引证为此软件的一个实体或一个软件实体。一般来讲,在用户设备上,软件可以被安装、被存取或被使用,这里的每一种存取形式在下文会被引证为使用或软件的使用。因此,举个例子,使用一个应用程序的软件的实体包括,但不局限于安装这个实体、阅读这个实体、拷贝这个实体或执行这个实体。对文本的使用包括,但不局限于在设备上安装文本、使用该设备阅读文本、拷贝设备上的部分文本或利用该设备拷贝文本。本发明的具体实施方案的步骤和组成具体而言,本发明提供一个系统来监控软件的使用。该系统包括一个生产软件实体的软件代理商和一台接受软件实体的标签服务器。标签服务器产生许多标签,每一个软件实体有一个标签,并且每一个标签唯一标识和它相关的软件实体。用户设备接收并且安装软件实体,同时也接收一个和该软件实体相关的唯一的一个标签。用户设备包括一个监控程序,它检测软件实体的使用并且在使用软件实体之前验证与之相关的标签的真实性。运行在用户设备上的监控程序验证标签的真实性,如果标签是真实的,监控程序在标签表里维护和存储标签,而且维护和存储软件的实体(优选的是在存储设备上)。如果与软件相关的标签不是真实的,监控程序拒绝软件实体的使用。
对于一个软件实体而言,一个标签优选的是唯一的。标签由认证服务器(authentication server)创建。标签包括至少一个软件实体的名称,软件实体的一个唯一编号,部分软件实体的哈希函数值。优选的是,软件实体的唯一编号是从稀疏数组里选择出来的。在其它的实施方案里,每一个标签进一步包含了监控程序的唯一标识信息。还有在另外一个实施方案里,每一个标签包括至少一个由该标签相关的软件实体的部分内容计算出来的指纹数据。
为了验证和决定一个标签是否是真实的,监控程序可以验证标签里的哈希函数值或标签里的数字签名。在另外一个实施方案里,监控程序验证在标签里的监控程序的唯一标识符和用户设备上的监控程序的标识符是相符合的。在使用指纹的实施方案里,监控程序验证与标签相关的软件实体和该标签中至少一个指纹满足相同地址指纹检查。相同地址指纹检查由监控程序在使用软件实体之前、当中和之后的每个阶段至少执行一次。
在使用指纹的实施方案里,每一个标签进一步包括至少一个地址列表(包含值,至少有一个指纹是从这些值里计算出来的)。监控程序验证与标签相关的软件实体和在地址中的软件(指定在至少地址的一个列表中)相关的至少一个指纹。可供选择的是,可以使用一般地址指纹。(在同地址指纹中,地址的共同序列中的两个指纹序列匹配的条件是第一个序列中的第一个指纹匹配第二个序列中的第一个指纹,第一个序列中的第二个指纹匹配第二个序列中的第二个指纹,以次类推。在一般地址指纹中,两个指纹序列匹配的条件是第一个序列中的每一个指纹匹配第二个序列中的某一个指纹并且第二个序列中的每一个指纹匹配第一个序列中的某一个指纹)。由于标签独立于软件实体,本发明在不需要修改软件的情况下提供对软件的保护。
根据本发明的另外一个方面,当软件实体在任何时候对任何数据文件进行存取的时候,和执行存取的软件实体相关的信息被存储在和数据文件相关的位置。和软件实体相关的信息可以是和软件实体相关的标签,也可以是软件实体执行的修改时间。优选的是,和执行存取的软件实体相关的信息被写在了一个安全的位置(只有监控程序可以存取)。从本质上讲,本发明的这个方面被用来跟踪使用共享软件数据的盗版软件。
在这个事例中,一个数据文件有相关的信息被存储在和该数据文件相关的位置,当软件的实体企图存取一个数据文件(也就是说,共享数据)时,监控程序测试存储的相关信息是否是当前软件实体企图存取的信息。如果是,监控程序决定该软件实体是否是一个盗版拷贝。为了实现这个目的,一方面,监控程序可以使用一个非别名哈希函数验证存储在和数据文件(当前正在被存储)相关的位置的相关信息。除次之外,监控程序可以使用上一次的修改时间。思路是检查写了该数据文件的那个软件实体是否有一个位于这个设备上的软件实体的标签,如果是,检查在这个设备上的软件实体事实上在上次修改时间写了那个数据文件。如果不是,拥有相同标签的至少两个软件实体在使用中,说明已经发生了盗版。
本发明另外一个实施方案包括一个监护中心。这个监护中心有一个带标签的软件数据库和一个验证程序。监护中心和用户设备之间定期进行通信,通过呼叫过程接收来自用户设备的标签。这些标签和用户设备上的被标记过的软件相关。验证程序检查从用户设备上接收到的每一个标签,将它和被标记过的软件数据库相比较,确保这些标签遵从至少单一用法监控规则。优选的是,用法监控规则和至少一个软件实体(和至少一个标签相关)相关。验证程序返回给用户设备一个延续消息。延续消息指示用户设备上的与每一个标签相关的软件实体遵从的动作。用户设备上的监控程序接收延续消息并且验证其真实性。如果验证通过,监护程序执行延续消息里指示的动作。在这种意义上,通过控制标签的使用状态,监护中心最终决定用户设备上的软件的使用权。
优选的是,在监护中心和用户设备之间的所有通信消息是在安全模式(该安全模式涉及公共密钥加密)了下传送的。
根据本发明的另外一个方面,至少一个软件代理商、标签服务器和监护中心和另外至少一个软件代理商、标签服务器和监护中心结合使用。
根据本发明的另外一个方面,当用户设备上的监控程序和监护中心进行通信时,这个过程被称为呼叫。在后续呼叫过程中的最大允许时间间隔是由以下至少一个可选的因素决定的在用户设备上花费的时间的结合,使用软件实体的次数和间隔,用户设备加电的次数和用户设备使用的计量。当用户设备在最大允许的时间间隔(自从上一次呼叫过程以来)里不能呼叫监护中心时,用户设备在一段时间里被禁止或者某个软件实体的使用在一段时间里被拒绝使用。优选的是,当一个软件实体第一次被使用(也就是说,被存取、安装或被检测)时,发生一次呼叫过程。可选的是,来自监护中心的请求可能触发呼叫。
根据本发明的一个方面,在呼叫过程中,监护程序测试延续消息的真实性。测试方法是验证延续消息中的标签表里的哈希函数值和从用户设备发出的呼叫消息中的标签表里的哈希函数值是否相等。测试方法也可能包括验证延续消息里的数字签名。
当用户设备在给监护中心发出呼叫消息之后没有接收到延续消息,用户设备可以重新发送一个呼叫消息,使用取消命令取消上一次的呼叫消息。这个方面允许用户设备再次发起呼叫。
在监控中心,用法监控规则可能和整个用户设备相关,监护中心在呼叫过程中与整个用户设备通信;或者,用户监控规则和用户设备的单个用户相关,监护中心在呼叫过程中和该用户设备的单个用户通信;或者,用法监控规则和用户设备的用法监控历史相关,监控中心在呼叫过程中和该用户设备的用法监控历史通信。
根据本发明的另外一个方面,监护中心在标记过的软件数据库里为每一个用户设备上的每一个软件实体维护一个标签数据结构。每一个标签数据结构包括一个软件实体的标签,和软件实体相关的用法监控规则,呼叫纪录的引用集合。在呼叫纪录集合里的每一个呼叫纪录代表了一次呼叫过程相关的信息。和呼叫过程相关的延续消息包括至少一个呼叫时间,在呼叫过程中传递给监护中心的一个标签表的表头,指示上一次呼叫过程的呼叫时间,在呼叫过程中传递给监护中心的标签表的哈希函数值,还有用户设备需要跟随的动作。保存以前呼叫纪录的原因是使得监护中心确保只有一个设备有一个给定的标签表的表头。否则,不同的物理设备有可能共享同一个软件实体,这和用法监控规则相冲突。
在一个可替代的或联合的监控中心的实现里,监控中心包括一个验证程序。根据这个方面,监控中心通过呼叫过程定期和用户设备通信。这些呼叫过程从用户设备上为用户设备监控程序接收一个唯一的标识符。验证程序检查这个唯一的标识符,保证一个监控程序至多只有一个标识符。这之后,验证程序给用户设备返回一个延续消息。延续消息指示用户设备上和每个标签相关的软件实体的任何企图的使用需要跟随的动作。用户设备上的监控程序验证延续消息的真实性,如果是真实的,执行延续消息中的动作。
根据监护中心的这个实施方案,监控程序标识符是在监护程序第一次被激活时产生的,这个标识符基于几乎没有重复的数字。优选的是,这个没有重复的数字来自于监控程序第一次被激活时的非常精确的时间值。可替换的是,没有重复的数字可以由监护中心提供。可替换的或组合的是,数字可以取决于一些内存地址的值。
根据本发明的另外一个系统,此系统同样也包含了一个未经标记的在用户设备上使用的软件实体。在这个系统里,监控程序检测未经标记的软件实体的使用,在未经标记的软件实体上执行指纹过程并且在用户设备上存储来自于指纹过程的指纹。用户设备上的监护程序进一步对使用在设备上的标记的软件实体执行指纹过程并在用户设备上存储来自于指纹过程的指纹。监护程序存储位置,在这里指纹被计算。指纹可能基于软件实体的内容。可选的是,指纹是基于软件实体的已知的行为序列。
根据系统中监护中心的实施方案,监护中心包括一个指纹数据结构和一个验证程序。监护中心和用户设备之间通过呼叫过程定期地通信。监护中心接收来自用户设备上的软件实体的全部指纹。验证程序比较每个从用户设备上接收来的指纹和指纹数据结构来决定在用户设备上正在使用的软件实体是否是侵权拷贝。如果验证程序检测出在监护中心的指纹数据结构里的指纹和接收到的用户设备上的指纹之间的匹配数目超过指定数目,验证程序指定一个带惩罚性质的动作,然后,验证程序给用户设备返回一个延续消息。延续消息指示用户设备执行这个带惩罚性质的动作。
软件代理商将侵权的软件实体的拷贝传送给监护中心,监护中心在这个拷贝上计算出指纹,合并计算出来的指纹并将它们存储在监护中心的指纹数据结构里。
根据本系统的一个方面,指纹匹配处理流程是一般地址指纹匹配的过程。为了提高速度,指纹匹配使用倒置的监护中心指纹表。
惩罚性的动作包括禁止用户设备在一段时间内使用,或者禁止和指纹(该指纹和监护中心的指纹数据结构里的指纹相匹配)相关的软件实体在一段时间内使用。惩罚性动作基于至少以下结合方式中的一种用户设备的行为历史,用户设备上的特定用户的行为历史和用户设备上的软件集合。
本发明的另外一个实施方案提供标签表数据结构,这个标签表数据结构以编码的方式存放在用户设备的只读介质(例如,计算机只读介质)上。标签表数据结构包括至少一个与软件实体唯一相关的标签,包括至少一个与标签表中的标签相关的字段,还包括至少一个与标签(此标签与软件实体相关)相关的指示用法状态的字段。这个字段也可能指示与标签相关的一个软件实体的使用统计。标签表也包括一个唯一标识这个标签表的表头。标签表表头可以包括涉及到用户设备使用统计的信息,也可以包括延续消息。标签表被用于存储涉及到在用户设备上使用软件实体的能力的信息。
本发明的设备和方法包括软件代理商,软件代理商包括软件生产机制,该机制产生软件实体并且每一个软件实体有至少一个名称和软件内容。每一个软件实体只有在和唯一标识该软件实体的标签一起使用时才是可用的。标签是唯一的不可伪造的信息的集合。这些信息涉及到和标签相关的软件实体以及包括至少软件的一个软件的名称,软件实体的一个唯一编号,软件内容局部产生的哈希函数值,使用该软件实体的用户设备上的监控程序的标识符,或者与该标签相关的软件实体的局部产生的指纹列。
根据本发明的一些实施方案,软件代理商可能包括侵权软件检测机制,该机制检测侵权的软件并将侵权软件的拷贝发送到监护中心,这样,可以实现用法监控来检测侵权软件在用户设备上的企图使用。
根据本实施方案的另外一个方面,监护中心可以使与侵权软件的实体相关的任何标签无效并且可以给任何已经使用了侵权软件实体的用户设备发送惩罚性动作。
本发明的另外一个实施方案是包括输入端口的用户设备。输入端口可以接收软件的实体,还接收与该软件实体唯一相关的标签,以及接收使用这个软件实体的请求。用户设备上的处理器执行监控程序。监控程序检测使用软件实体的请求,在允许该用户设备上使用这个软件实体之前,验证与该软件实体相关的真实性。监护程序同样验证标签的真实性并且在标签表里存储标签。如果标签是真实的,监护程序维护软件实体,如果与软件实体相关的标签是不真实的,监护程序拒绝软件实体。
根据用户设备的一个方面,监护程序计算出软件实体的哈希函数值,通过比较这个值和标签里的哈希函数值来决定这个标签是否是真实的并且和软件实体完全的相关。标签优选的是经过数字签名的,监护程序通过验证标签的数字签名来验证其真实性。
在用户设备里,标签表是保存在用户存储设备里的数据结构,标签表包括至少一个与软件实体唯一相关的标签,至少一个与标签表中的标签相关的字段,还包括至少一个与标签(此标签与软件实体相关)相关的指示用法状态的字段。监控程序定期或以别的方式根据呼叫规则的定义决定呼叫过程是否需要,同时监控程序执行呼叫过程更新存储在标签表里的用法状态。
监控程序也可以验证标记过的软件使用的每一个数据文件是否是由软件的合法实体生成的。
在呼叫过程中,监控程序通过耦合在用户设备上的互连机制安全传送用户设备上的标签表,等待延续消息返回用户设备,延续消息为标签表中的每一个标签指示下一步动作。同样,在呼叫过程中,监控程序通过耦合在用户设备上的互连机制安全传送用户设备上的标签表表头,等待延续消息返回用户设备,延续消息为标签表中的每一个标签指示下一步动作。
本发明的另外一个实施方案允许对未标记的软件进行控制。根据这个实施方案,用户设备包括用户设备上的未标记的软件实体。监控程序检测未标记的软件实体并且在未标记的软件实体上执行一个指纹进程,存储在用户设备上的指纹表里的指纹进程的结果。监控程序定期或以其他方式根据呼叫规则的定义决定呼叫过程是否需要,同时监控程序执行呼叫过程更新存储在用户设备里的未标记的软件实体的用法状态。因此,对未标记的软件的控制可能发生而不在乎标签软件的存在和控制。
在执行呼叫中,监控程序通过耦合在用户设备上的互连机制安全传送用户设备上的指纹表中的部分指纹,等待延续消息返回用户设备,延续消息为每一个未标记的软件实体指示下一步动作。
根据本发明的另外实施方案,监护中心包括带标签的软件数据库,在监控中心上的处理器上运行的远征程序。监护中心定期执行呼叫过程,通过互连机制接收软件实体的标签。验证程序检查每一个接收到的标签,将它和维护在监控中心的带标签地数据库,确保标签符合至少一个用法监控规则。验证程序通过互连机制传送延续消息。延续消息指示企图被使用的软件实体(与呼叫过程中监护中心接收到的标签相关)的下一步动作。
根据这个实施方案的几个方面,用法监控规则可能和与至少一个标签相关的每一个软件实体相关。同样,用法监控规则也可能与监护中心接收标签的用户设备相关。用法监控规则也可能与监护中心接收标签地用户设备上的单个用户相关。
监护中心在带标签的软件数据库里为每一个用户设备上的每一个软件实体相关的每一个标签维护一个标签数据结构,监护中心还接收从标签服务器新创建的与软件实体相关的标签,监护中心还接收来自于用户设备的标签表里的在该用户设备上使用的软件实体相关的标签。每一个标签数据结构包括至少一个软件实体的标签,软件实体的名称,软件实体的唯一编号,软件实体的哈希函数值,软件实体相关的用法监控规则和与所述的软件实体相关标签的相关呼叫纪录集合的引用。
呼叫纪录集合中每一个呼叫纪录代表涉及到一个呼叫过程的信息,也包括至少一个呼叫时间,在呼叫过程当中传送给监护中心的标签表表头,指示上前一次呼叫过程时间戳的最后呼叫时间,在呼叫过程当中传送给监护中心的标签表的哈希函数值,还有与呼叫过程相关的包含在延续消息里的用户设备上的下一个动作。
根据本发明许多监护中心包括指纹数据结构和执行验证程序的处理器。验证程序定期执行呼叫过程,用户设备通过互连机制接收用户设备上使用的软件实体的指纹。验证程序检查接收到的指纹和指纹数据结构,以次来决定用户设备上使用的未标记的软件实体是否是侵权的软件实体;如果是,验证程序准备一个带惩罚性的动作用于执行在用户设备上。
在一个实施方案中,所有的代理商软件都有指纹,在另外一个代理商的软件上侵权一个代理商的软件是基于一般地址指纹检测法来检测的。如果验证程序检测到指纹数据结构中的一个指纹和接收到的所有指纹中的一个指纹之间有足够多的匹配,验证程序指定要执行的惩罚性动作,然后,验证程序传送延续消息,这个延续消息指示延续消息的接收者要执行的惩罚性动作。足够多的匹配可能等于1,也可能大于1,也可能以匹配的加权和来计算,每一个匹配的权值决定于匹配的指纹。
根据本实施方案的其它方面,惩罚性动作可以指定禁止接收者,或者禁止与指纹数据结构中的指纹相匹配的指纹有关的软件实体。
在另外的一个方面,监护中心的验证程序通过互连机制接收侵权的软件实体的拷贝,在未标记的侵权的软件实体的拷贝上计算指纹,组合计算出的指纹并将指纹存储在指纹数据结构里。
本发明的实施方案也包括接收指定代理商软件的拷贝并产生多个标签,每个软件实体有一个标签,每个标签唯一标识与之相关的一个软件实体。每个标签优选地包括至少一个与之相关的软件的名称,与之相关的软件实体的唯一编号,还有与之相关软件实体的部分内容计算出来的哈希函数值。可以使用数字签名机制给标签进行数字签名,然后安全传送这些标签到目的接收者(例如,用户设备、监护中心或软件代理商)。
本发明的方法包括监控软件使用的方法。这个方法包括创建软件实体和创建与之唯一相关的标签的步骤。然后,这个方法分发软件实体,以安全方式给用户设备分发标签,接收用户设备上的软件实体和与之相关的标签。该方法还检测在用户设备上企图使用软件实体的操作,根据与这个软件实体相关的标签的状态决定以上操作是否允许。
在这个方法中,创建标签包括给软件实体分配唯一编号,根据软件实体的部分内容计算第一个哈希函数值。然后计算软件实体的第二个哈希函数值,第二个哈希函数值组合了软件的名称、软件实体的唯一编号,以及第一个哈希函数值。接下来,这个方法包括计算与软件实体唯一相关的标签(标签包括软件的名称、软件实体的唯一编号和第二个哈希值)的步骤。
创建标签这一步骤可能会创建数字签名的标签,通过在第二个哈希函数值上应用数字签名函数来产生签名并将签名包含在标签里。
给用户设备分发标签的步骤可能包括使用公共密钥加密方式把标签安全地分发到软件代理商和用户设备。
接收软件实体的步骤包括在用户设备端获得软件实体的步骤。在用户设备端接收标签的步骤包括安全获得与软件实体相关的标签,测定与软件实体相关的标签是否签名,如果是,利用哈希函数值验证标签里的签名,如果签名验证通过,在用户设备上安装软件,如果与软件实体相关的标签没有签名,在用户设备上安装软件。检测在用户设备上使用软件实体的步骤包括激活在用户设备上的监控程序,截获用户使用软件实体的请求。测定使用软件实体的操作是否被允许的步骤包括也可能包括测定基于呼叫规则的呼叫过程是否需要,如果是,执行一个呼叫过程验证真实性以及测定与软件实体相关的用法监控规则。其它步骤包括基于呼叫过程的结果更新用户设备里的的标签信息,检查与之相关的状态信息,测定与之相关的软件实体的使用是否是允许的。
执行呼叫过程的步骤包括从用户设备传送标签表(保存与软件实体相关的标签)和等待接收返回给用户设备的延续消息(为标签表里地每一个标签指示一个动作)。用户设备在等待延续消息的同时可以继续处理本地的执行请求。
该方法的具体实施方案也可能包括验证延续消息是否定位到指定的设备并且事件历史和该设备的事件历史相对应。
在该方法的实施方案中,执行呼叫过程的步骤可能包括接收标签表(包括与软件实体相关的标签),检查接收到的标签表中的每一个标签并对应已标记的软件数据库来保证标签表里的标签符合至少一个用法监控规则。包含在内的步骤还有传送延续消息,在检测到与每一个标签相关的软件实体的使用时,延续消息指示用户设备的下一步跟随操作。
在该方法的实施方案中,延续消息包括监控程序(延续消息发送的对象)标识符,延续消息的准备时间,还有标签表表头(出现在设备的呼叫里)的编码。
本发明还提供监控软件的使用的方法,此方法也包括步骤来检测用户设备上的未标记的软件实体的使用,然后在用户设备上创建和存储与未标记的软件实体相关的指纹。此方法检测用户设备上的未标记的软件实体的使用企图并且通过比较侵权指纹的指纹数据结构和未标记的软件实体相关的指纹来判断这种企图是否有效,如果发现有指纹相匹配,禁止使用未标记的软件实体。
以上的方法也包括步骤来检测用户设备上的已标记的软件实体,创建和存储用户设备上的已标记的软件实体相关的指纹。包含的步骤还有检测用户设备上的已标记软件实体的使用企图,通过比较侵权指纹的指纹数据结构和已标记的软件实体相关的指纹来判断这种企图是否有效,如果发现有指纹相匹配,禁止使用已标记的软件实体。
该方法的可能的补充步骤是软件代理商检测侵权软件的实体,给监护中心提交侵权软件的实体拷贝。包含的步骤还有在监护中心给侵权的软件实体计算指纹,组合这些指纹并将它们存储在指纹数据结构里。这个补充方法在不考虑已标记软件存在的情况下也可能是自身的替代实施方案。
本发明的另外一个实施方案包括可以唯一标识软件实体的方法,该方法包含的步骤有获得软件实体,给软件实体分配名称,给软件实体分配唯一编号。唯一编号不同于分配给同一个软件的另外一个实体的唯一编号。上述方法也包括在软件实体的部分内容上计算出一个哈希函数值,通过计算第二个哈希函数值来产生一个没有签名的可以唯一标识这个软件实体的哈希函数值,第二个哈希函数值是在软件实体的名称,软件实体的数量和第一个计算出的哈希函数值三者的串联基础上产生的。该方法接着使用密钥给没有签名的哈希函数值签名,为软件实体产生签过名的哈希函数值,之后创建一个唯一标识该软件实体的与之相关的标签,这个标签包括签过名的软件实体的哈希函数值、软件实体的名称、软件实体的唯一编号,以及软件实体的没有签过名的哈希函数值。
根据这个实施方案,获得软件实体的步骤和给软件分配名称是由软件代理商执行的,给软件实体分配唯一编号、计算第一个和第二个哈希函数值、签名第二个哈希值,以及创建标签的步骤是由标签服务器执行的。
本发明也包括与计算机只读介质有关的实施方案,这里的只读介质由程序指令编码而成,当指令被读或在处理器上运行的时候,执行如下步骤检测使用软件实体的请求,判定与软件实体相关的标签是否有相关的允许软件实体被使用的状态,定期执行呼叫过程验证标签的真实性并确保与标签相应的软件实体的使用符合用法监控规则。
本发明也包括在通讯介质上通过载体传播的繁衍信号的实施方案。这样的一个信号携带了编码的标签数据结构,该数据结构包括至少与一个软件实体唯一相关的一个标签,还包括至少一个与标签表里的标签相关的字段,至少一个指示与标签相关的那一个软件实体的使用控制状态。
另外这样的信号携带了编码后的延续消息,延续消息包含了指示该繁衍信号的接收方将要执行的动作,条件是当接收方检测到与上述动作相关的软件实体的使用企图。
本发明提供的另外一个方法确保软件程序还未被修改。这个方法的实施方案包括以下步骤根据软件程序的内容计算非别名哈希函数值,然后将它和先前保存的哈希值进行比较并判定结果是否相同,这样就指示出软件程序是否已被修改。在这种方法的一个版本里,操作系统计算非别名哈希函数值,软件程序是监控程序。
同样,本发明提供的方法可以确保数据还未被修改。这个方法根据数据的内容计算非别名哈希函数值,然后将它和先前保存的哈希值进行比较。在这个方法中,监控程序优选地计算非别名哈希函数值和监控程序使用的数据。本发明上述实施方案的运作方式的简述在给出上述实施方案的详细描述之前,提供了有关本发明各种实施方案的通用高级运作方式的简述,以助于读者理解发明实施方案中的某些复杂内容。
正如在上述实施方案中描述的那样,代理商特定软件的每一个实体由一个唯一的不能被伪造的标签代表。不论如何,同样软件的所有实体都是相同的,没有加密的,每个由特定软件的拷贝组成,也许,还包括了软件的名称。例如,特定应用程序软件的实体Spread包括电子表格应用的程序代码和名称″Spread″。因为本发明不需要特殊的硬件设备,任意种类的软件的实体可以放在共同的设备或不同的设备上使用。
软件代理商生产一些特定软件的实体(拷贝),发送该软件的一个实体给标签服务器,随之一起来的还有请求一定数量的该软件实体的标签。标签服务器产生请求数量的不同的唯一标签。代理商会把软件的一个实体和每个唯一标签联系起来,每一个标签将唯一标识与之相关的软件实体。用户设备接收代理商的软件实体并企图使用该实体,同时安全接收与那个软件实体唯一相关的标签。
用户设备包括运行在本设备上监控程序,它验证相关的标签的真实性,把标签存储在标签表里,把软件实体存储在存储设备上,如果标签是真实的,允许使用软件实体。如果与实体相关的标签是不真实的,监控程序拒绝软件的实体。标签表里的每个标签有一个状态,诸如“可用的“,“删除的“,或“按使用付费“,这些状态是由监控程序关联的。监护程序检测设备的命令,使用所述的软件实体并验证当前与标签(与这个软件实体相关)相关的状态是否允许使用该实体。
安全发送或接收数据或包含数据的对象意味着数据或对象在发送和接收过程中不允许数据或包含在对象中的数据被任何人修改或泄露给任何人(除了发送者和接收者之外)。例如,代理商可能会给用户设备以安全的方式在网络上发送标签,通过使用TETSISPEC或NETSCAPE SSL或任何其它的安全通信协议,或者代理商会给用户一张密封在防篡改信封里的磁盘。本发明使用了安全通信的目的是为了保护敏感信息不会暴露给窃听者,并且它不是本发明的保护机制的一部分。任何标准安全通信协议都可以达到这个目的。
正如以上实施方案所提到的,由标签服务器为软件实体创建的标签包括软件的名称,软件实体的唯一标识编号(在此及以后,引用为实例号),基于软件实体部分内容的哈希函数值,和一个组合所有以上数据的哈希函数值。本发明所用到的实例号可能是整数或任何符号的序列,这里所说的序列作为唯一标识符存在。可选的是,标签服务器可能会对上面提到的最后一个哈希函数值进行签名,并且把签名包含在标签中。
包含签名的标签在此或以后被引用为签名标签。不包括签名的标签将被引用为未签名标签。当为软件SW的实体INST SW准备未签名的标签时,标签服务器从一个安全的稀疏组(在此及以后,引用为安全稀疏组)里为实体选择一个与软件SW相关的唯一标识号。安全稀疏组里的编号可能,例如,由物理过程产生。
为了判定与软件实体INST相关的标签是否是真实的,设备(安装或使用该实体INST)上的监控程序从标签中提取实体INST的实例号NUM INST和软件的名称。监控程序在软件实体INST的内容里的一些指定的部分上计算哈希函数值。然后,监控程序根据实例号NUM INST、名称NAME SW和先前计算出的哈希函数值三者之间的组合计算出哈希函数值。监控程序比较计算出的哈希函数值和在标签中找出的哈希函数值。监控程序需要验证任何数字签名,该签名是签名标签的组成部分。未签名标签的真实性由监控程序进一步检查,在允许第一次或随后对相关软件实体的使用之前,通过安全发送标签给标签服务器或监护中心(下面描述)进行身份真实性验证。
如上所述,系统也包括监护中心,监护中心包括标记过的软件数据和验证程序。监护中心通过呼叫过程定期与用户设备进行通信,为安装在用户设备上的每一个软件实体接收所有的标签。验证程序检查接收于用户设备的每个标签和标记数据库,确保标签符合至少一个用法监控规则。验证程序给用户设备返回一个延续消息,延续消息根据用户设备上每个标签相关的软件实体的访问情况指示下一步跟随的动作。
用法监控规则可以和软件的单个实体相关,这个实体至少和一个标签相关,或者与整个用户设备(与监护中心通信)相关,或者与用户设备(与监护中心通信)的单个用户相关。
监护中心在标记的软件数据库中为每个用户设备上的每个软件实体的每个标签维护一个标签数据结构。每个标签数据结构包括软件实体的标签、软件实体的名称、软件实体的唯一编号、有关软件实体的哈希函数值、与软件实体相关的规则、和软件实体相关的一系列呼叫纪录。这一系列呼叫纪录中的每一个呼叫纪录代表一次呼叫过程的信息,也包括呼叫时间、在呼叫过程中传送给监护中心的标签表的表头、指示前一次呼叫过程时间戳的最后呼叫时间、在呼叫过程中传送给监护中心的标签表的哈希值、与呼叫过程相关的延续消息里所包含的在用户设备上需执行的动作。利用这些机制,监护中心可以为一些行为(例如,按照实体的使用付费)跟踪软件实体的使用统计。
根据本发明的另外一个方面,未标记的软件实体可能被安装在用户设备上。保护程序检测未标记的软件实体,在未标记的软件实体上执行指纹处理,然后将处理后的指纹存储在用户设备上的指纹表里。监护中心和用户设备之间定期通过呼叫过程通信,接收来自用户设备的每个未标记软件实体(安装在用户设备上)的指纹。验证程序检查每个来自用户设备的指纹和指纹数据库,判定未标记的软件实体是否是侵权的软件实体。通过这种形式,本发明可以检测使用修改过的软件(非法拷贝)。
如果验证程序检测到指纹数据库里的一个指纹和来自用户设备的所有指纹中的一个指纹相匹配,验证程序指定需要执行的惩罚性动作,然后验证程序返回一个延续消息给用户设备。在这种情况下,延续消息指示在用户设备上需要执行的这个惩罚性动作。这样,举例说,如果在用户设备上使用未标记的侵权软件,用户设备可以被禁止。
可选择的是,惩罚性的动作可能指定与指纹(和指纹数据库里的指纹相匹配)相关的未标记的软件实体应该被禁止使用。
为了在监控服务器上获得指纹,软件供应商把未标记的软件的侵权实体发送给监护中心,监护中心在此未标记的软件的侵权实体的拷贝上计算指纹并且把这些指纹存储在指纹数据库中。
本发明的另外一个实施方案提供存放在计算机只读介质上的经过编码的标签表数据结构。标签表结构包括至少一个唯一标识一个软件实体的标签、至少一个与标签表里的标签相关的字段。这个字段指示标签标识的软件实体的用法监控状态,也可能指示标签标识的软件实体的使用统计。标签表数据结构也可能包括标签表表头,该表头唯一标识此标签表,也唯一使标签表和一个用户设备相关联。标签表表头包括用户设备使用统计的信息和延续消息。延续消息指示惩罚性动作和与标签相关的软件实体的用法监控状态。
软件代理商作为本发明的一个方面包括创建有软件名称和内容的软件实体的软件开发机制。每个软件实体只有和唯一标识该软件实体的标签一起,才可以被运行。标签是唯一的不能伪造的信息集合,信息集合涉及到与标签相关的软件实体,包括软件的名称、软件实体的唯一编号和软件内容的哈希值。软件代理商也包括检测侵犯知识产权的侵权软件实体的侵权软件检测机制。软件代理商向监户中心传送侵权软件实体便于通过执行用法监控来检测侵权软件实体的使用企图。
本发明的可替代的实施方案提供软件代理商来生产至少一个软件实体,该软件实体在测试中组合设备标识符。测试在将是一个典型编程语言里的“如果语句”。测试包括比较组合的标识符和要使用软件实体的设备的标识符。如果组合的标识符等于设备标识符,那么这个软件实体可以正常使用,否则,设备上的监控程序执行惩罚性动作。对于深一步的保护,软件实体(包括组合的标识符)的哈希值的数字签名被发送,第二次测试判定此数字签名是否是真实的,之后,第三次测试判定签名后的值是否与软件实体的哈希值相同。如果不同,设备上的监控程序执行惩罚性动作。
正如上述实施方案结构章节所述,提供用户设备,包括接收软件实体的输入,安全地接收与这个软件实体相关的标签,接收来自用户设备上的用户存取软件实体的企图。用户设备上的处理器执行一个保护程序。这个保护程序检测存取软件实体的企图,在允许用户设备上的用户存取软件实体之前验证与软件实体相关的标签。保护程序判定一个呼叫过程(由呼叫规则定义)是必需的。保护程序然后执行呼叫过程更新存储在标签表里的标签的状态。在呼叫过程中,保护程序通过与用户设备相耦合的互连机制安全地传送用户设备上的标签表并且等待返回给用户设备的延续消息,延续消息为标签表里的每个标签指示需要执行的动作。在这个实现里,用户设备不需要设置用法监控规则,相反,仅仅维护对所有设备集中适用的规则。
对于用户设备上的未标记的软件实体,保护程序检测未标记的软件实体,在未标记的软件实体上执行指纹处理,把指纹处理得到的指纹存储在用户设备上的指纹表中。对于未标记的软件,在呼叫过程中,保护程序通过与用户设备相耦合的互连机制传送用户设备上的指纹表并且等待返回给用户设备的延续消息,延续消息为存储在用户设备上的每个未标记软件实体指示需要执行的动作。
对于未标记的软件,监护中心里的验证程序通过互连机制定期执行呼叫过程接收未标记软件实体的指纹。验证程序检查接收到的指纹和指纹数据库来判定未标记的软件实体是否是侵权的软件实体,如果是,验证程序为用户设备准备惩罚性动作。如果验证程序测出指纹数据库中的一个指纹匹配接收到的指纹,验证程序指定需要执行的动作,并给用户设备发送延续消息。延续消息指示在一个接收延续消息的用户设备上执行需要的动作。
本发明的另外一个实施方案中提供认证服务器,认证服务器实现接受软件实体和产生多个标签(每个标签一个软件实体)。每个标签唯一标识与之相关的软件实体,而且每个标签包括编码的信息,这些信息涉及到与标签相关的软件实体的名称、与标签相关的软件实体的唯一编号、与标签相关的软件实体上计算出来的哈希值。
在控制软件存取的方法里,执行创建软件实体的步骤。然后,与软件实体唯一相关的标签被创建了。软件实体和标签随后被发送到用户设备。这个方法接下来检测用户设备上的软件实体的使用,通过判定被存取的与软件实体相关的标签状态,判定存取软件实体是否有效。
为了创建标签,这个方法给软件实体分配一个唯一编号,根据软件实体的内容计算第一个哈希值。第二个哈希值是为软件实体计算的。第二个哈希值包括软件的名称、软件实体的唯一编号,软件实体的内容和第一个哈希值。最终,本方法计算与软件实体唯一相关的标签,此标签包括软件的名称、软件实体的唯一编号和第二个哈希值。
计算标签的步骤通过应用第二个哈希值的数字密钥签名函数产生签名哈希值并把它包含在标签里来创建数字签名的标签。这样可以安全地分发标签。可以使用公共密钥加密技术实现把标签安全分发到软件代理商和用户设备。
通过获得在用户设备上的软件实体来分发软件,以安全方式在用户设备上获得与软件实体相关的标签。用户设备可以判定与软件实体相关的标签是否被签名,如果是,可以验证在标签里的签名哈希值,如果验证通过,用户设备可就以安装软件。
为了检测存取用户设备上的软件实体的企图,本发明的方法包括在用户设备上激活保护程序来截获存取软件实体的用户请求。为了判定存取软件实体的企图是否有效,本方法判定基于呼叫规则的呼叫过程是否需要。本方法执行呼叫过程来验证真实性,判定与软件实体相关的标签使用规则,根据呼叫过程的结果更新用户设备里的标签信息。在用户设备上检查与标签相关的状态信息,判定存取与标签相关的软件实体是否有效,在这种情况下,软件得到了保护。
在呼叫过程当中,存储与软件实体相关的标签的标签表来自用户设备,用户设备等待返回给用户设备的延续消息,延续消息指示标签表里的每一个标签需要执行的动作。
监护中心接收包含与软件实体相关的标签的标签表,检查标签表里接收到的每一个标签和标记过的软件数据库来确保标签表里的标签和至少一个用法监控规则相一致。监护中心在检测到尝试使用与每一个标签相关的软件实体时发送延续消息,延续消息指示在用户设备上需要执行的动作。
本发明的其它实施方案包括含有以上处理过程编码的计算机只读介质,也包括在介质上通过载体传送的繁衍信号,该信号携带有上述的编码过的标签表数据结构。
使用这些机制,本发明的系统允许在软件实体方面有版权的合法代理商/所有者监控他们的权利。如果代理商发现其版权遭到侵犯,例如非法的、偷盗的、逆向工程的、更改的或反编译的软件实体,它在操作方面和这个代理商制造的软件的有本质上的相同之处,该系统可以监控这些软件的非法拷贝。
本发明的系统同时保护软件的合法使用,对于不诚实的企图通过创造假象来使用软件的当事人进行拒绝服务。
本发明同样允许在每一个用户设备上跟踪购买了以次使用版权的软件的按次计费统计。在呼叫过程中,监护中心可以判定按次计费的软件实体的使用统计,并能为软件代理商提供使用信息供计费使用。
如上所述,系统包括一个有标记软件数据库和验证程序的监护中心。每个用户设备必须定期和监护中心通过呼叫过程进行通信,对于每个安装或自从上一此呼叫过程以来在该设备上使用的代理商软件的实体,安全地发送与这个实体相关的标签。来自标签表的额外数据,涉及或包括整个标签表,也可能被监控程序在呼叫过程中安全地发送给监护中心。呼叫过程由监护中心或用户设备主动发起。监护中心的验证程序鉴别它收到的来自用户设备的每个标签。
本质上,验证程序检查每个标签和来自用户设备的与之相关的数据,对照标记软件数据库鉴别其真实性,确保此标签符合至少一个用法监控规则,此规则适用于与此标签相关的软件实体。例如,验证程序可能检查在呼叫过程中接收到的自上一次呼叫以来来自于同一个监控程序的标签是否在呼叫设备的标签表里处于可使用的状态,同时它也以可使用状态出现在其它设备的标签表里,这种情况的发生可能违反了用法监控规则。验证程序安全地返回延续消息给用户设备,同时利用在呼叫过程中接收到地标签和相关信息更新标记软件数据库。
当为软件实体创建一个未签名的标签时,标签服务器安全发送这个标签到监护中心,监护中心的验证程序把接收到的标签存储在标记软件数据库中。
在另外一个实现中,标签服务器发送所有新建的标签给监护中心,监护中心的验证程序把接收到的每个标签存储在标记软件数据库中。当监护中心在呼叫过程中接收到来自用户设备的标签时,监护中心的验证程序通过在标记软件数据库中查找此标签来鉴别此标签,在没有没有发现的情况下,如果所述的标签是未签名的标签,监护中心断言此标签的身份不真实。如果所述的标签是签名的标签,那么验证程序或者可以在标记软件数据库中找到它,或者验证所述的标签有正确的格式,进而验证标签里的数字签名。
监护中心给用户设备的延续消息由监护中心签名,该消息包括诸如时间戳的标识信息、标签表的哈希函数值以及其它在呼叫过程中来自于用户设备监控程序的数据。除此之外,延续消息包括给用户设备上的监控程序的命令,在此及以后称之为动作。
本发明使用的动作的例子包括但不局限于指示监控程序(1)允许软件实体的继续使用;或(2)拒绝在指定时间段内使用软件实体;或(3)拒绝在指定时间段内使用或安装具有给定名称或给定指纹列表的软件实体;(4)禁止在指定的时间段里使用用户设备。类型(2)到(4)的动作有时又称做惩罚性动作。
在呼叫过程中,当用户设备上的监控程序收到来自监护中心的延续消息时,监控程序检查监护中心的数字签名。监控程序进一步检查延续消息是否是当前设备的呼叫,通过比较延续消息里哈希函数值或其它数据和设备标签表的部分内容的哈希函数值,或者比较标签表的哈希函数值或标签表中的其它数据。
如果上述签名经验证是真实的并且上述比较出现匹配,监控程序接收延续消息,把它作为监护中心对当前呼叫过程的答复。这样,监控程序在标签表里存储延续消息,继续更新标签的状态,执行在所述的延续消息中出现的动作或惩罚性动作。
用法监控规则可以和单个已标记的软件实体相关,或与指定的软件相关,或与软件的类型相关,或与监护中心通信的整个用户设备相关,或与监护中心通信的用户设备的单个用户相关。
由软件实体的代理商定义的用法监控规则的例子包括但不限于以下及其组合。曾经在一个用户设备上使用的软件实体将不会被用在另外一个用户设备上。软件实体不能同时在两个用户设备上被使用或处于可用状态。软件实体仅可以在指定的用户设备上同时被使用或处于可用状态。软件实体在指定的时间后不能在被使用。只有当按次计费的费用交付到了指定的帐户上之后软件实体的使用才可以被使用。
关于实体的使用或一类软件实体的使用,本发明的方法和设备使得代理商或协会定义的任何用法监控规则的执行成为可能。
监护中心在标记软件数据库中为每个单个标签(与一些用户设备上的一些软件实体相关)维护一个标签数据结构,标签数据结构与标签自身相关,和任何特定的在呼叫过程中给监护中心发送标签的用户设备无关。每个标签数据结构包含软件实体的标签、软件(软件的实体是软件的一个拷贝)的名称、软件实体或实体部分内容的哈希函数值、与软件实体相关的用法监控规则、呼叫记录的引用集合、或与软件实体相关的呼叫记录集合。在上述呼叫记录集合的中的每一个呼叫记录代表了涉及一次呼叫过程的信息,可能包括呼叫时间、在呼叫过程中传送给监护中心的标签表表头或其它标识信息、指示上一次呼叫过程时间戳的最后呼叫时间、在呼叫过程中传送给监护中心的标签表的哈希函数值、在呼叫过程中发送给用户设备上的监控程序的延续消息。
利用呼叫过程当中收集和存储的数据,监护中心可以汇编每个软件实体的用法统计,为软件实体的按次计费提供费用清单。
未标记的软件实体可能安装或使用在用户上。监护程序检测到实体是没有标记的,并计算未标记的软件实体的选择部分的指纹,然后在用户设备上把这些指纹存储在指纹表中。根据这一方面,监护中心包括指纹数据结构。在上述提到的与用户设备的呼叫过程中,监护中心接收来自用户设备的所有指纹,这些指纹是指安装在用户设备上的每一个未标记的软件实体的指纹。验证程序比较接收到的每个来自于用户设备上的指纹和它的指纹数据结构里的指纹来判定在用户设备上的未标记的软件实体是否是侵权的软件实体。通过这种方式,本发明可以检测到使用的软件实体是已被删除标签的代理商软件的盗版拷贝,或是代理商软件盗版的派生之物。
如果验证程序检测出在监护中心的指纹数据结构里的指纹和接收到的用户设备上的指纹之间的匹配数目超过指定数目,验证程序指定一个带惩罚性质的动作,然后,验证程序给用户设备返回一个延续消息。根据这样一个惩罚性动作,如果监护中心发现到用户设备正在使用未标记的侵权软件,用户设备可能被禁止一端时间。
在另外的例子里,如果未标记的软件实体的指纹和监护中心的指纹数据结构里的指纹相匹配,惩罚性动作可能指定禁止该软件实体。
监护中心上的指纹数据结构是由软件代理商(检测到侵权软件的传播或将其作为未标记软件使用)的侵权软件的拷贝发送给监护中心后构成的。监护中心根据这个侵权软件的拷贝的部分内容计算指纹并将这些指纹组合后保存在指纹数据结构中。
通过计算任何标记或未标记的用户设备上的任何软件实体的选择部分的指纹并把这些指纹存储在设备的指纹表,提供对代理商软件权利的侵权保护。和以前一样,在呼叫过程中设备的监控程序发送指纹表里的指纹给监护中心,监护中心的验证程序在接收到的指纹和监护中心的指纹数据结构之间查找匹配。本发明的这个方面保护了合法代理商的权利,这主要通过盗版的代理商制作合法代理商软件的侵权版本,分发所述的侵权软件的有标记的实体。
标签数据结构被编码存放在供用户设备访问的设备的只读介质上。如果任何标记软件已经安装在设备上或被设备使用,标签表数据结构包括至少一个标签,这个标签和一个软件实体唯一相关并包括至少一个与标签表里的标签相关的字段。这个字段为与标签相关的一个软件实体指示用法监控状态,也可能包括与标签相关的一个软件实体的使用统计。标签表数据结构也可能包括标签表表头,这个表头唯一标识标签表并且它把一个用户设备或用户设备上的监护程序和标签表相关。标签表表头包括涉及到用户使用统计和延续消息的信息。延续消息指示与标签相关的软件实体的可能的动作和用法监控状态。
软件代理商提供创建软件(有名称和软件内容)实体的软件开发过程。每个代理商软件实体只有在和与这个软件实体相关的唯一标签的相结合的时候才是可以被存取和使用的。标签是唯一的不能被伪造的信息集合,该信息涉及到与标签相关的软件实体。标签包括软件的名称、软件实体的唯一标识编号以及软件部分内容的哈希函数值。软件代理商也包括侵权软件检测机制,该机制检测侵犯代理商知识产权或权利的软件实体。软件代理商把侵权软件实体发送到监护中心以便检测对侵权软件的使用尝试和访问,如果检测到,监护中心把惩罚性动作强加到有关系的用户设备。
用户设备包括一个输入端口来接收软件实体和与之唯一相关的标签。该设备也接收安装和使用软件实体的请求。用户设备上的处理器执行监控程序。验证程序检测安装和使用软件实体的尝试,在允许安装和使用该软件实体之前,验证与软件实体相关的标签的真实性或验证与此标签相关的状态。有时,监控程序根据呼叫规则的定义判定需要呼叫过程;它执行呼叫过程来更新存储在标签表里的标签的状态。
在呼叫过程中,监控程序通过耦合在用户设备上的互连机制安全传送用户设备上的标签表,等待延续消息返回用户设备,延续消息为标签表中的每一个标签指示下一步动作。在这种情况下,用户设备不需要涉及到设置用法监控规则,只需执行由代理商分发的软件实体相关的通用设备或代理商的用法监控规则。
由用户设备的监控程序实现的呼叫规则可能与该设备有关,或与所述设备上的特定软件实体相关,或与该设备的特定用户相关。呼叫规则的例子包括但不局限于下述情况。下一次呼叫用户设备的最新时间可能由最后一次呼叫以来经过的时间的组合决定。自最后一次呼叫以来设备被开启的次数,自最后一次呼叫以来设备被使用时间总计。同样地,与标签相关的或与该标签相关的软件实体相关的呼叫可能使用自最后一次呼叫以来经过的时间的函数来决定下一次呼叫的最新时间,软件实体使用的次数以及软件实体被使用的时间总计。与软件实体相关的另外一个呼叫规则可能指定在每一次用户设备上发生使用软件实体的尝试时执行呼叫。
本发明强制用户设备及其监控程序的行为符合应用到所述的用户设备或所述设备标签表里的任何标签的呼叫规则,万一不能呼叫监护中心并接收来自监护中心的延续消息。通过使监控程序在呼叫规则指定呼叫的最新时间之前执行指定的惩罚性动作。本发明确保用户设备的监控程序把在呼叫过程执行期间接收到的消息作为监护中心此次呼叫的延续消息来接受,只有在所述的消息事实上由监护中心为所述的呼叫作为延续消息来发送。实现途径是监护中心签名它的延续消息,在延续消息里包括把它和当前的用户监控程序的呼叫唯一相连的标识数据,正如在以前解释到的,监控程序验证所述的签名和所述的标识数据。本发明以上的预备阻止了用户或用户设备绕过本发明的保护,根据呼叫规则不呼叫监控中心或尝试创建使用不正确的延续消息。
在不能符合呼叫规则的情况下,所述设备的监控程序执行上面提到的惩罚性动作的例子包括但不局限于下面的内容。监控程序可能禁止设备在一段时间内从事除了执行呼叫过程之外的任何活动。如果与软件实体相关的呼叫规则出现违例,设备可能禁止软件实体在一段时间内的使用。
对于安装或使用在用户设备上的,监控程序到未标记的软件实体,执行指纹处理过程并把结果指纹存储在用户设备上的指纹表里。对于未标记的软件,在呼叫过程当中,验证程序通过互连机制传送用户设备上的指纹表给监护中心并等待接收来自监护中心的延续消息,所述的消息指示存储在用户设备上的未标记的软件实体需要执行的动作。
对于未标记的软件,用户设备的监控程序通过互连机制定期执行呼叫过程发送未标记软件实体的指纹。这个呼叫过程可能由用户设备的监控程序发起。监护中心的验证程序检查接收到的每个指纹和监护中心的指纹数据结构对照来判定未标记的软件实体是否是侵权的软件实体,如果是,验证程序为用户设备准备惩罚性动作。例如,如果验证程序检测到在指纹数据结构里的与一些指定软件相关的指纹和用户设备上未标记软件实体相关的指纹有足够多的匹配,验证程序指定需要执行的惩罚性动作,并给用户设备发送延续消息。延续消息指示接收延续消息的用户设备需要执行的动作。
前面提到的标签服务器通常接收指定软件的拷贝并产生一组标签,所述软件的每个实体有一个唯一的标签。每个标签唯一标识与之相关的软件实体,每个标签包含的信息涉及到软件实体名称、与该标签相关的软件实体的唯一编号以及哈希函数值,此值结合所述软名称、所述软件实体的唯一编号和根据与标签相关的软件内容计算的哈希函数值。
在监控软件使用的方法里,创建软件实体的步骤正如上面提到的一样被执行。然后标签被创建并与软件实体唯一相关。软件实体和标签接着被分发到用户设备上。本方法接着检测使用用户设备上的软件实体的尝试,通过判定与该软件实体相关的标签的状态来决定使用该软件实体的尝试是否可行。
为了创建标签,这个方法给软件实体分配一个唯一编号,根据软件实体的内容计算第一个哈希函数值。本方法然后计算第二个哈希函数值,第二个哈希值结合了软件的名称、软件实体的唯一编号和第一个哈希函数值。最终,本方法生成与软件实体唯一相关的标签。此标签包括软件的名称、软件实体的唯一编号和第二个提到的哈希函数值。
创建标签的步骤可以进一步通过把数字签名函数应用到第二个提到的哈希函数值上并把签名的哈希函数值包含在标签里的方法产生一个数字签名的标签。
通过获得在用户设备上的软件实体来分发软件和与软件实体相关的标签。用户设备可以判定与软件实体相关的标签是否被签名,如果是,可以验证在标签里的哈希函数值和在标签里的签名,如果所述的验证通过,用户设备可就以安装或使用软件实体。
为了检测存取用户设备上的软件实体的企图,本发明的方法包括在用户设备上激活监控程序来截获使用软件实体的用户请求。为了判定存取软件实体的企图是否有效,本方法判定基于呼叫规则的呼叫过程是否需要。本方法执行呼叫过程来验证真实性,判定与软件实体相关的标签的用法监控规则,根据呼叫过程的结果更新用户设备里的标签信息。在用户设备上检查与标签相关的状态信息,判定使用与标签相关的软件实体是否允许,在这种情况下,软件得到了保护。
在呼叫过程当中,存储与软件实体相关的标签的标签表从用户设备被安全地传送到监护中心,用户设备等待返回给用户设备的延续消息,该延续消息指示标签表里的每一个标签需要执行的动作。
监护中心接收包含与软件实体相关的标签的标签表,检查标签表里接收到的每一个标签和标记过的软件数据库对照来确保标签表里的标签和至少一个用法监控规则相一致。监护中心在检测到企图使用与每一个标签相关的软件实体时传送延续消息,该延续消息指示在用户设备上需要执行的动作。
本发明的其它实施方案包括含有以上处理过程编码的计算机只读介质,也包括在介质上通过载体传送的繁衍信号,该信号安全地携带着上述的标签表数据结构。
使用这些机制,本发明的系统允许在软件实体方面有版权的合法代理商/所有者监控他们的权利。如果代理商发现其版权遭到侵犯,例如非法的、偷盗的、逆向工程的、更改的或反编译的软件实体,它在操作方面和这个代理商制造的软件的有本质上的相同之处,该系统可以监控这些软件的非法拷贝。
本发明的系统同时保护软件的合法使用,对于不诚实的企图通过创造假象来非法使用软件的当事人进行拒绝服务。
本发明同样允许在每一个用户设备上跟踪购买了以次使用版权的软件的按次计费统计。在呼叫过程中,监护中心可以判定按次计费的软件实体的使用统计,并能为软件代理商提供使用信息供计费使用。
本发明图表的简要描述从下面更特定的有关本发明的优选实施方案的描述,前面所描述的以及其它的有关本发明的对象、功能和优势将会体现地显而易见,正如在所附的图表(在不同的视图里引用字符引用同一部分)中阐明的一样。图表没有必要按照比例绘制,相反,着重点放在阐明本发明的原理上。
从下面更特定的有关本发明的优选实施方案的描述,前面所描述的以及其它的有关本发明的对象、功能和优势将会体现地显而易见,正如在所附的图表(在不同的视图里引用字符引用同一部分)中阐明的一样。图表没有必要按照比例绘制,相反,着重点放在阐明本发明的原理上。


图1阐明了根据本发明的一个实施方案配置的信息系统。
图2阐明了根据本发明的一个实施方案配置的系统里的信息流的更详细的视图。
图3A阐明了根据本发明的一个实施方案的流程图,描述为软件实体创建签名标签的处理步骤。
图3B阐明了根据本发明的一个实施方案的流程图,描述为软件实体创建未签名标签的处理步骤。
图3C阐明了根据本发明的一个实施方案的流程图,描述为软件实体创建带指纹的未签名标签的处理步骤。
图4阐明了根据本发明的一个实施方案配置的用户设备体系结构。
图5阐明了根据本发明的一个实施方案的流程图,描述在用户设备上执行安装代理商软件的步骤。
图6阐明了根据本发明的一个实施方案的标签表的内容。
图7是根据本发明的一个实施方案的流程图,描述在用户设备上执行安装未标记软件的处理步骤。
图8是根据本发明的一个实施方案的流程图,描述本发明的系统实现软件用法监控的高层处理步骤。
图9阐明了根据本发明的一个实施方案配置的监护中心的体系结构。
图10阐明了根据本发明的一个实施方案,软件实体在监护中心的记录的内容。
图11是根据本发明的一个实施方案的流程图,描述了当代理商检测到侵犯了他的软件中的有关代理商的权利时监护中心执行的处理。
图12是根据本发明的一个实施方案的流程图,描述了当执行给监护中心的呼叫过程时用户设备的监控程序的处理步骤。
图13A和13B是根据本发明的一个实施方案的流程图,描述了监护中心执行呼叫处理的步骤。
图14描述了在本发明的一个实施方案里没有监护中心的呼叫时使用的数据结构。
图15是根据本发明的一个实施方案的流程图,描述了没有监护中心的呼叫时用户设备的监护程序的处理步骤。
本发明的详细描述图1阐述了一个根据本发明配置的信息系统样例109。图1描述了本发明的主要构件元素并一般性地描述了它们在本发明上下文之间的相互操作关系。信息系统109包括连接用户设备104至107、一个或多哥软件代理商101、标签服务器102,和监护中心103(其中的一个出现在这个样例实施方案中)的通信网落109。本发明的目的是监控信息(没有表现)的用法,信息在用户设备104至107中的一个设备的协助下阻止用户设备安装或使用任何信息在侵犯知识产权或所有者或分销商的权利。
本发明监控信息的使用,目的是保护知识产权或其它权利。信息可以是任何形式的以电子的、磁性的、光学的或其它代表的信息。信息的例子有计算机应用或程序、数据、网页、网站、可下载的应用程序(如Java Applet)、电子图书、图像、视频、录制的音乐或其它在压缩盘、磁盘或磁带上的信息,等等。一般来讲,本发明可以监控任何类型的在计算机或其它设备(例如,用户设备104至107)的协助下使用的信息的用法并保护这些信息的权利,不许考虑信息是什么或信息存储或传送在什么实际物理介质上。
任何这样的信息,以及任何其它类型的被本领域的技术人才认可的受到本发明保护的信息,在此或以后将被称为软件。定软件的任何单个拷贝,例如,特定应用程序的拷贝、特定书籍的拷贝或视频的拷贝,在此及以后将被称为软件的实体或软件实体。软件的所有者、代理商或分销商在此及以后将被称为代理商或软件代理商。通过设备或在设备上对软件的实体的安装、使用、执行、浏览、显示、播放、查阅、打印、拷贝、传送或存取在此及以后将被称为这个软件实体的使用。
用户设备104至107可能是用来使用软件的任何类型的设备,包括但不局限于计算机系统、书籍阅读器、音乐播放器(例如,磁带播放机、压缩盘(CD)播放机,小盘(MD)播放机)、录像带录制机、数字视频盘(DVD)播放机,特殊目的设备等等。任何这样的设备在此及以后将被称为用户设备或只是设备。
在本发明的优选的实施方案里,用户设备(也就是说,104至107中的一个)是一个计算机系统,信息是计算机应用程序或数据,本发明提供一个机制来监控计算机系统用户的软件或数据的用法以便保护代理商在软件上的权利。
通信网络100可能是任何类型的通信机制,该机制使得本发明的构件元素(101至107)可以交换信息,例如消息或信号。通信网络100的例子是计算机网络,诸如互联网、公共电话交换网(PSTN),无限网络(也就是说,蜂窝网络),或其它类型的计算机或信息网络。
根据本发明的一般操作,软件代理商100,和可能多于一个代理商,生产和分发软件实体(在图1中没有描述)。软件实体可以安装或使用在每一个用户设备104至107上。作为例子,如果软件是以音乐的形式存在于磁带上的,磁带(在图中表示为磁带播放机)可以安装在用户设备105上。可以以物理的或手动的方式从软件代理商101传输软件并将其安装在用户设备104至107(也就是说,正如物理磁带的情况一样)上,或可以通过通信网络100(也就是说,利用已知的数据传输机制以电子的形式散布并安装软件。
标签服务器102是一个耦合在通信网络100上的计算机系统,它为每一个软件实体创建或产生标签(在图1中没有描述)。典型地,指定软件地所有实体是相同的。优选地,单个标签是和与软件代理商101生产的软件的单个实体相关的。优选的是通过私有通信路径108标签服务器102可以存取由软件代理商101创建的软件,并且标签优选的是基于软件内容、名称和其它标签服务器产生的(诸如实体标号)或代理商提供的信息创建的。标签服务器102通过使用通信网络100也可以为做标记获得软件可替代的是,可能有单一软件代理商101销售不同软件的多个实体,可能有单一标签服务器102以及为那个单一软件代理商的一个监护中心103。标签服务器102和监护中心103可能是软件代理商的一部分(也就是说,包含在相同的计算机系统中)。可替代的是,可能有软件代理商101的协会,该协会依赖并且由一个或多个共同共享的标签服务器102和监护中心103提供服务。
一旦为软件实体创建了标签,标签被安全散布到用户设备104至107中的一个用户设备,该用户设备包含为那个标签安装的软件的相应实体。安全的标签散布优选地通过信息网络100以电子形式发生。例如,利用TETS iPSEC或NETSCAPE SSL协议实现安全通信。本发明的系统可能使用手动安全标签散布。手动安全标签散布的例子是在包含标签和可能的与之相关的软件实体的防篡改的包装里分发标签。
一旦在用户设备104至107上安装了软件实体和与之相关的标签,那个设备的用户(未描述)或设备本身可以尝试使用软件。然而,在允许软件实体使用之前,在用户设备104至107上的监控程序为用户或设备请求的软件实体验证有效的标签存在用户设备里。定期,每个设备和监护中心103通过通信网络100通信,确保与用户设备上地软件实体相关地所有标签是有效的并且它们的使用符合用法监控规则。
换句话说,本发明确保依靠软件实体的设备,使用和有效的相关标签连接在一起,通过用户设备和监护中心之间的通信为用法特征进行定期性的有效性验证和检查。强制的用法监控规则的例子是标签出现在唯一一个设备上。判定用户设备104至107是否可以使用软件实体是基于称为呼叫的标签处理过程(在用户设备和监护中心103之间执行的)。
在进一步详细解释本发明的实施方案之前,下面的表1提供了术语表帮助理解与本发明相关的各种元素。
表1术语定义
本发明技术术语的详细描述本发明的某些实施方案在本质上是复杂的。因此,下面为某些实施方案用到的一些技术术语提供了其它附加定义1.指纹或哈希函数F映射数据X到更小的数据F(X)的数学函数,如果X和Y相等,那么F(X)和F(Y)极有可能是相等的。作为哈希函数的例子,X可以是一个字节序列。除此之外,优选地随机选择一个数字p,在以后保持不变,64位素数。X的字节序列被看成是数字(写成256为基底,字节是那个数字的数位)并且F(X)=Xmod p(X对p取模)。因此,F(X)的值是64位字符串,无论X有多大。
2.无别名哈希函数H指纹函数有进一步的性质,如果给定X,计算H(X)很容易,但是产生X’是困难的,这样H(X)=H(X’)并且X和X’是不同的。术语“困难”是指根据目前的技术,以X的大小,需要的计算时间通常被认为是指数级的或实际上不可行的。
3.软件实体的使用安装、使用、执行、运行、连接、浏览、在其它方面从存储介质上获取或修改存储介质,显示、播放、查阅、打印、拷贝、传送或在设备上存取软件实体。
4.软件实体的部分内容包括那个实体的所有正文或数据,或者那个软件实体的正文或数据的部分组成的序列。这些部分不需要是相临的,相互之间可以重叠。
5.指纹处理给定数据数组的地址序列,计算那些地址上的值的某些函数值。例如,如果地址16,32,和64具有值3,4和17,那么指纹处理计算3,4和17的函数。这个函数可能简单地只是这些值的列表(这个例子里的三个数字)或可能是这些值的列表的哈希函数。在另外一个例子里,地址可能是I_1至j_1,I_2至j_2,直到i_k至j_k。指纹处理可能计算数组里的这些k序列的每个序列的哈希函数值,并列出k个计算的值。
6.指纹检查比较两个指纹序列的方法。本发明使用两种指纹检查同位指纹检查和一般指纹检查。在两种形式的指纹检查里,指纹列的计算是基于一列含有地址列表的值。例如,假定有三个指纹在列表f1,f2和f3里,f1是由地址10,20,30和40上的值计算得到的,f2是由地址30和60的值计算得到的,f3是由地址100和200的值计算得到的。我们称这个列表为发送列表。在两种形式的指纹检查里,发送列表的接收者基于相同地址列表的值计算指纹列。这个指纹列称为接收列表。
在同位指纹检查中,如果发送列表中的每个元素和接收列报中的相应元素相等,则申明匹配成功。也就是说,发送列表中的第一个元素和接收列表中的第一个元素相等,发送列表中的第二个和接收列表中的第二个元素相等,以次类推。
在一般指纹检查中,在不考虑地址的情况下如果发送列表和接收列表中有足够多数量的相同元素,则申明匹配成功。数量多少才是足够多取决于规则的考虑和获得指纹的数据正文的长度,此长度定义在参数k中。例如,如果k是50个字节,那么少到一个或小数量的匹配可能足够说明设备列表可能与监护中心指纹数据结构(图9,137)中的列表代表同一个软件。进一步讲,某些匹配比其它匹配具有更多的权值,所以更少量的高权值的匹配可能就足够了。
除了发送指纹的发送列表之外,发送者可能发送产生发送列表的地址列表的列表。这允许计算指纹取决于不可预之的随机处理。
7.不可伪造性标签具有不可伪造性,如果对手没有标签服务器(图1,102)根据代理商的请求使用的安全信息产生标签的知识,产生一个有效的标签在计算上是不可行的。本发明使用数字签名(图3A)和稀疏数组(图3B和3C)作为两个优选的方法达到标签的不可伪造性。
8.安全传送一种发送值X的方式以便只有目标接收者可以看到X,尽管其它代理可能观察网络协议或查看的X传输包。通过可靠的信使递交密封的信头是一种安全传送信头内容的的方式。利用TESTS IPSEC或NETSCAPE SSL协议实现安全通信发送消息是另外一种确保通过通信网络安全传送的方式。
9.事件历史记录所有尝试的使用、成功的使用、使用的间隔、和/或其它事件例如与标签表相关的开启的时间。对于两个设备不太可能有相同的事件历史,即使它们有相同的软件实体和相同的标识符。事件历史可能基于特定设备的一个或多个用户超时的使用记录。
现在返回讨论图表,图2更详细地阐明了根据本发明配置的系统109的体系结构。图2作为大纲使用,是本发明的整个操作的综合描述。贯穿这个描述,会有描述本发明的每一个方面的更详细的图表被引用。
在系统109的操作中,软件实体(INST_SW)111至114(标记为SW1,SW2,SW3,SW4)由软件代理商101创建并存储在代理商存储器中。可能有多于一个软件代理商101。软件代理商101的例子有出版社(创建可再生的表演唱片或电子只读书籍),计算机软件开发者(创建软件应用程序),数据收集公司(创建信息数据库),单个程序员等等。软件代理商101生产的软件(SW)代表了实际的包含信息、数据或代码的软件内容(SW)。软件(SW)可以有相关的名称(NAME_SW),典型地,此名称由软件代理商101分配。可以把每个软件实体(INST_SW)111-114认为是有名称的软件的独立的物理拷贝。也就是说,特定软件(SW)的每个软件实体(INST_SW)仅仅是具有相同名称(NAME_SW)和相同代码、数据或其它信息内容的那个软件的拷贝。
作为例子,如果一个字处理应用程序由软件代理商101创建并起名(NAME_SW)”Write”,二进制或可执行代码,数据或其它组成Write程序的信息是术语软件(SW)。Write软件(SW)的每个单个拷贝(例如,每个磁盘包含程序的一个拷贝)是那个软件的不同的实体(INST_SW)但具有同样的软件内容(SW)。因此在图2,每个实体111-114可能包含同样的软件内容(SW),在这种情况下,每个实体111-114会具有相同的名称(NAME_SW),或者,每个实体111-114可能代表不同软件(SW)的拷贝(也就是说,不同的数据、代码或其它信息)并且每个实体111-114的名称(NAME_SW)典型地会是不同的。
标签服务器(TS)102根据用户的请求为每一个软件实体111-114创建唯一的不可伪造的标签(TAG-INST_SW)120。在本发明的优选的实施方案里,单个唯一的标签是为软件实体准备的并且它和此实体相关。在其它实施方案里,多个唯一的标签可能和一个软件实体相关,但是,优选的是,两个不同的软件实体不能共享一个共同相关的标签。
为了创建请求的标签,标签服务器TS102(图1)为它即将创建的标签的软件实体获取(图3A,3B,和3C,步骤150)每个指定软件的一个拷贝。例如,它可能有一个”Write 7.2”的拷贝,Write 7.2是Write程序家族的版本或正式发布版。一般来讲,标签120是唯一的,不可伪造的和与特定软件实体相关的(INST_SW)(也就是说,111-114中的一个)数据位序列。正如即将解释的,根据本发明的实施方案,用户设备104在没有首先检查有效标签120(与软件实体111-114相关)的情况下不能使用软件实体111-114。
软件实体111-114的标签120优选的是存储在存储设备200(耦合在用户设备104或是该设备的集成部分)上的标签表210里。只有通过引用与软件实体(111-114中的一个)相关的存储在标签表210中的标签120才能在用户设备104上使用那个软件实体111-114,并且只有实体111-114相关的标签120有允许在或通过用户设备104使用软件实体的用法状态(在图6中的例子标签表,第二列指示用法状态)。也就是说,某些指定的软件包括这样的指示,那就是它只有在那个软件的实体的标签出现的时候才能运行。(盗版可能会删除这个指示,在这种情况下,未标记的软件的保护机制,下文详解,将会得到应用)。以这种形式,通过需要与软件实体指定相关的有效标签出现在用户设备104上,本发明的各个方面允许和提供控制软件在某些实施方案里的使用。
正如将进一步解释的一样,根据本发明配置的系统里的构件的能力(跟踪和管理标签的创建、有效性验证和强制)提供独特的优于以前系统在软件用法控制方面的优势。在进一步讨论图2中剩余的系统构件之前,先讨论标签创建的细节。
图3A,3B和3C是描述处理步骤的优选的实施方案的流程图。这个处理步骤发生在根据本发明配置的标签服务器102里创建标签的过程中。因为图表是相似的,它们很多的步骤编号是一样的,两个图表会同时得到解释。
在步骤150,标签服务器120从它的本地存储器里获取即将被标记的命名软件(NAME_SW,SW)的拷贝111-114。除此之外,标签服务器102从代理商101为标签(图2)获取请求。在步骤151A(图3A)和151B(图3B)和151C(图3C),标签服务器102产生唯一标号(NUM_INST_SW)。在图3A的步骤151A里,编号是完全唯一的。然而,在图3B的步骤151B里和图3C的步骤151C里,唯一标号(NUM_INST_SW)是从稀疏数组118(图2)里选择的。
稀疏数组118(图2)是一组保密编号,命名软件(NAME_SW,SW)的实体的实体标号(NUM_INST_SW)是从其中选择的。优选地,和可利用的编号范围(例如,如果特定的软件有1亿实体,由64位定义的范围超过10亿亿个可能的编号)相比,这样的标号相对比较少。因此,数组118被称为稀疏。
稀疏使得对手或软件盗版商产生有效的实体标号变得困难。所有软件可能有一个稀疏数组,或者由一组相关的实体定义的每个指定软件有不同的稀疏数组。在优选的实施方案中,一个稀疏数组118是所有软件使用的实体编号的来源。然而,每个指定软件拥有独立的稀疏数组118可能允许更简单地分布管理实体编号的产生。
例如,可能有与上面提到的”Write“应用软件相关的一组稀疏编号118,从中为Write软件的每个实体(INST_SW)选择实体编号(NUM_INST_SW)。因为安全原因,可能在需要时实现或产生稀疏数组的新成员,例如,通过存取物理处理过程诸如光电照相计数设备(本发明未表现)。
在步骤152(图3A和3B)中,标签服务器102在软件(SW)或SW内容的一部分上计算哈希函数值。在优选的实施方案里,如果超过一个包含相同软件内容SW的软件实体(INST_SW)111-114将要被标记,那么,因为每个实体111-114包含相同的代码、信息和/或数据(也就是说,具有相同SW内容),为软件(SW)只计算一次哈希函数值HASH_SW。再者,只有值HASH_SW才需要标签服务器102获取或产生一次,而不是为全部软件的每一个拷贝。当相同软件(SW)的许多实体需要被标记的时候,本发明的这个方面节省了标签创建的时间。在这些情况下,只需计算一次哈希函数值HASH_SW。在可替代的实施方案里,只在软件内容的一部分上计算哈希函数值可能是进一步的优化,因为这可能减少需要在标签服务器102和用户设备104-107上构建哈希函数值的时间。
在步骤153(图3A,3B,3C)里,计算第二个哈希函数值HASH_INST_SW,把它组合在与软件实体(INST_SW)相关的标签里。步骤153和步骤152的不同在于步骤152中计算的哈希值HASH_SW对于相同软件SW的所有实体INST_SW都是一样的,但是,在步骤153里,哈希函数值HASH_INST_SW对于相同软件的每一个NUM_INST_SW是唯一的。在一个实施方案里,第二个哈希函数值HASH_INST_SW结合了软件的名称(NAME-SW),软件实体的唯一编号(NUM_INST_SW),以及先前计算(步骤152)的哈希函数值HASH_SW。其它哈希函数值的结合诸如只有名称和软件,或只有软件和编号,或其它等,现在可能被认为是提供那些本领域技术人员可以理解的相似的功能。由哈希函数编码的数据的这种结合是在本发明的范围之内。
在为软件实体111-114计算了哈希值HASH_INST_SW之后,可能通过步骤154A和154B为那些实体111-114创建签名(图3)的或未签名(图3B和图3C)的标签。图3A的步骤154A里,为软件实体111-114创建了签名标签,然而在图3B和3C的步骤154B中为软件实体111-114创建了未签名的标签。签名标签通过数字签名准备好的标签的部分内容确保了标签是不可伪造的,即使实体编号是可预测的(例如,即使它们是连续编号)。未签名标签可能不能提供这个保护,但是因为在步骤154B里创建的未签名标签优选地包括从稀疏数组151B中选择的实体编号NUM_INST_SW,这个替代方法仍然保证了标签的不可伪造性。步骤154A中签名标签TAG_INST_SW的计算公式如下TAG_INST_SW=(NAME_SW,NUM_INST_SW,HASH_INST_SW,SIGN_TS(HASH_INST_SW))在这里,术语SIGN_TS是执行在哈希函数值HASH_INST_SW上的数字签名函数。数字签名SIGN_TS是由标签服务器102利用私有密钥PRIVATE_KEY_TS117产生的,该私有密钥是数字密钥,除了标签服务器102自身外,对于所有潜在的对手和图2中的所有实体(entities)它是保密的。
在步骤154B里计算未签名的标签TAG_INST_SW的方式如下TAG_INST_SW=(NAME_SW,NUM_INST_SW,HASH_INST_SW)
在标签服务器102创建标签TAG_INST_SW之后,标签优选地被安全传送(在图2中通过TAGS120表现,并在图13A和13B里的步骤156中解释)给请求的软件代理商101和监护中心103,在监护中心里标签存储在不同的标签数据库(在图9,129,138中解释)。
与软件实体(例如111)相关的标签120和标签服务器102准备标签120的方式在本发明中提供许多重要的目的(1)设备(例如104)不能使用代理商101的软件实体,除非设备104存储或可以存取相关的有效标签120,优选地,该标签维护在设备104地标签标210(在图6中详解)里并且除非相关标签120在标签表210里有用法状态(图6中第二列)允许或指示相关实体111的适当用法。
(2)通过委托统治的呼叫过程(图12,13A和B),以后详解,在设备(例如104)和监护中心103之间,监护中心103可以监控、验证身份、跟踪、验证和一般性控制标签属性并确保与标签120相关的软件实体111的使用符合代理商101关于该实体的用法监控规则(优选地在监护中心受到维护)。
(3)标签120的不可伪造性和标签120优选地以安全方式传送的事实确保了只有一个用户或用户设备104具有标签120,该用户或设备有权利从代理商101(或标签服务器102)获得标签120并且在符合代理商指定的关于软件实体111的用法监控规则(在图中没有表现)的情况下已经使用相关的软件实体111-114。本发明的这个方面阻止对手或盗版商企图创建和/或企图使用有效标签120的拷贝,根据本发明的机制,依次导致对对手/盗版商,合法用户或使用软件实体111以及相关标签120的用户设备进行惩罚性动作。
可以理解标签120的组成可能有几种选择。一种选择是在这里描述的字段的子集。特别地,哈希函数值HASH_INST_SW可能不包括在标签120里,因此在标签120里剩下NAME_SW和NUM_INST_SW。这个实施方案的优点是在系统构件(例如,101,102,103,104)和关于标签120的计算之间只需传送较少的数据。弊端可能是标签120的所有者可能企图将标签120和不同的指定软件实体111联系起来。这一点当HASH_INST_SW可用的时候得到阻止,因为值HASH_INST_SW取决于HASH_SW,而且可以使用HASH_SW验证在实体111里的软件SW是正确的或是未更改的。
另外一种标签的组成可能如下NAME_SW,NUM_INST_SW,HASH_SW。利用这个组成,每个标签120会和软件相关,该软件的内容(也就是说,SW)的哈希函数和HASH_ SW匹配。该方法的可能弊端是它可能允许这种可能性,那就是盗版商可能产生非法的似乎是正确的标签120。取决于选择保护软件使用的本发明实施方案的复杂性,在这里描述的系统被设计为减轻各种显著的问题。
作为另外的例子,第三种标签120的组成可能如下NAME_SW,NUM_INST_SW,HASH_SW,SIGN_TS(NAME_SW,NUM_INST_SW,HASH_SW)。在标签120的这个类型里,数字签名SIGN_TS阻止标签的伪造,因为优选地只有标签服务器102处理密钥SECRET_KEY_TS,该密钥对于签名函数地计算是必需的。
可能被删除的另外一个标签字段是字段NAME_SW。这个实施方案的优点是减少系统构件之间的数据传送量。名称也可以是不必要的,如果除了名称之外软件实体INST_SW通过一些手段指示为INST_SW的运行或使用哪一个标签必须出现。没有名称的标签可能工作,例如,如果软件代理商只是分发一种软件,在这种情况下,软件代理商101标识符可以作为那个代理商生产的软件的名称。可替代的是,在各种各样的软件里,NUM_INST_SW可能是全局唯一的,在这种情况下NAME_SW不是必需的。
可能被删除的另外一个标签字段是字段NUM_INST_SW。这个标签组成的优点是减少必须传送在网络100商的数据量,使用更简单的标签产生方法而不需要唯一编号选择过程(例如,在图3A,3B和3C中解释步骤步骤151)。可能的弊端是具有同一个NAME_SW(如果保留此字段)的不同标签可能变得无法区别,因此相同实体111-114是允许的。
标签的另外一种实施方案是包括额外的字段。例如,用户设备(例如104)的监控程序(在图4的209中详细讨论)的唯一标识符、指示的ID(SP)(图4中209-A),都可能从硬件标识符的结合计算出来。如果可用,设备104的监控程序209第一次被激活的时间,如果可用,设备监控程序209从监护中心103安全获取的唯一编号以及设备里至少一个内存地址的值。在后面的章节中会更详细地讨论这点,但在此提出的目的是给读者提供更综合的有关各种标签的创建过程。
把用户设备104-107的监控程序209的标识符ID(SP)209-A包括在与该设备上使用的软件实体111相关的标签120里,可能支持开销更低的监护中心103的呼叫(在下文中详解)。
可能被包括在可替代的标签以及本发明的标签创建实施方案里的额外字段是关于软件实体INST_SW里的数据指定地址的一组指纹。指纹在下文中有详解,但是正如它们的名称暗示的那样,指纹是从软件实体选择的一个或多个部分或数据区域的唯一编码。指纹的用法在图3的步骤151D和151E中有所阐述,在图中选择地址然后在这些地址上计算指纹并且在结果上计算哈希。把软件实体111的指纹包括在标签120(与实体相关)里允许用户设备104-107的监控程序(图4,209,存取软件)验证INST_SW和标签之间的关系是否正确,验证方法是在INST_SW上执行同位指纹检查(在下面的表1,图6中解释)并与相关标签里的这组指纹进行比较。使用指纹可能和HASH_SW的功能重叠,对于标签的相关性的正确性验证,它们允许更大的有效性。
对于软件的大实体INST_SW,例如,百科全书或视频,HASH_SW的计算,都需要监控程序扫描整个INST_SW,这将需要相当可观的时间。如果与INST_SW相关的标签包含由标签服务器计算的上述固定地址的指纹值,监控程序(图4中209)只需要存取在INST_SW里的这些地址,然后计算相应的指纹值。使用以上指纹会带来额外的保护受益,因为标签服务器在地址上计算指纹,这里的地址可能随着时间应答盗版袭击而改变。
如果标签服务器102只在SW指定的部分,而不是在整个SW上计算哈希函数值HASH_SW(图3A&B,步骤152),可以获得同样的效率和安全受益。在软件实体INST_SW111-114(标签服务器为每个实体计算指纹)里的指定地址可能显示地伴随指纹出现在标签120里,或包含在实体INST_SW里,或在设备104-107地监控程序(图4,209)里。把这些指纹地址组合在标签120里的优点是指纹可以为每个正在传送的实体INST_SW变化,指纹作为一种唯一的NUM_INST_SW并且允许软件代码变更的随机检查。
因此,由以下字段的结合组成的标签120全部在本发明的范围之中作为图3A,3B和3C里的处理结果产生的标签;任何以上字段结合再加上关于用户设备(例如,104)(诸如ID(SP),此值可能被结合在计算哈希函数值HASH_INST_SW里)的监控程序标识符209-A(图4)的格式;任何以上字段的结合加上与SW内容相关的一组指纹,在计算哈希函数值HASH_INST_SW里这些指纹的值可能被结合起来;以及上述字段的任何一种结合的任何超集。尽管上述的标签和处理过程描述了本发明实施方案的指定实现,那些本领域的技术人才应该理解本发明一般提供标签来唯一标识和控制软件的一个或多个实体。
一旦为软件实体111至114创建了标签120,在步骤156,标签120由标签服务器102安全传送到监护中心数据库(在图9,129,138中解释)或用户设备104,或软件代理商,或上述实体的任何一种结合。
返回到图2,标签服务器102安全分发标签120到一个或多个软件代理商101,监护中心103和用户设备104。如果标签服务器102安全传送标签120返回到软件代理商101但没有到104-107,那么软件代理商就会安全分发标签120和软件实体111-114到用户设备104-107。可选的是,用户设备104-107获得软件实体与获得标签120是分开的,用户设备可以直接或哦的标签120。可选的是,可以从一个或多个监护中心103获得标签120。
尽管软件实体111-114是在本发明的系统109的可选实施方案里,它们自己并不需要被分发。分发软件实体111-114可以通过许多方式实现。实体111-114可能通过通信网络100(图1)支持的下载机制从软件代理商处下载。下载机制的例子有文件传送协议(FTP),PUSH协议可以发送信息给接收者,TCP/IP和万维网(WWW)相关的协议,以及其它在计算机处理器之间通过总线传送数据的协议,或者其它类型的计算机网络诸如通信网络100,例如,可能是互连网(INTERNET)。
可选的是,用户设备104可能已经由用户设备制造商(没有表现)预装了软件实体111-114,此制造商可能或可能不是和软件代理商104的相同的实体。一个例子是软件实体111-114嵌入在用户设备的固件里。另外一个选择里,用户设备104的用户(在本图中没有表现)可能购买了用户设备只读介质上的软件实体111-114,诸如磁编码硬盘或软盘或者光学介质如CD-ROM,DVD碟,视频或音频磁带,全息图存储介质,或其它可以承载信息的介质。关于用户设备104-107获得软件实体111-114的每一个上述可选方式,根据本发明,需要使用相关的标签120,软件实体可以直接陪伴软件实体或者可以单独地或优选地被安全地传送到设备。
正如在图2中表现的那样,用户设备104包括对用户设备存储机制200的耦合。用户设备存储器有能力维护每个软件实体111-114,标签标210和指纹标126。指纹的目的和细节以及标签表126、210会在稍后得到详细解释。
图4根阐明了根据本发明配置的用户设备104的优选结构。用户设备104包括内部耦合用户设备存储器200的总线206,处理器201,内存202,互连机制203,以及用户输入/输出机制204。用户213使用用户设备104。用户213优选的是个人,尽管本发明可以应用到一些系统里,这些系统,正如在这里讲到的一样,用法监控在更大的非人工介入环境里是实现在电子构价。在本阐明中,用户213直接和软件实体111-114交互来强调本发明的目的。在实际中,用户213可能和用户输入/输出机制204交互,在处理器201控制之下。输入/输出机制间接提供输入/输出到或从软件实体111-114。
用户输入/输出机制204可能是一个或多个键盘,鼠标,麦克风,扬声器,监视器,多用途(heads-up)或虚拟现实显示器,或者其它到或从用户213或和用户设备104交互的其它机制(也就是说,非生命)通信信息的输入/输出设备。输入输出机制204也可能作为一种手段,通过它向用户设备104提供软件实体111-114。在这种情况下,输入/输出机制204可能包括可以用来向用户存储设备200加载信息的机制诸如CD-ROM或DVD驱动器,扫描仪,软盘,或者其它或内存202或缓冲区(在图4中没有表现),这些机制可能包括在或与用户设备(例如104)相关。
互连机制203是通信网络203的接口并且可能是诸如调制解条器,网络接口卡,无限收发器,或其它信息设备。
用户存储设备200用于维护本发明使用的各种各样的构件和数据,它可能是硬盘,软盘或光盘驱动器,RAID阵列,文件服务器,或其它读/写存储机制。指定的是,正如在本实施方案里阐明的一样,用户存储设备200维护软件实体111-114,标签标210,指纹表126,监控程序209(图4)和包括核心208的操作系统。操作系统207,正如本领域理解的那样,典型的是在启动的时候被加载到内存202里并且和处理器201一起执行来控制用户设备104的各种构件的全部操作。可选的是操作系统和本发明的构件可以嵌入在处理器结构或包含本发明的系统里。
用户设备104的例子是个人计算机或工作站。处理器201的例子是基于Intel的处理器诸如赛洋(Celeron),奔腾,奔腾II,奔腾III,或80×86系列或基于SPARC的RISC处理器或MIPS处理器。这些处理器的名字可能是商标或各自微处理器的制造厂商。操作系统207的例子是基于Windows的任何一种操作系统诸如Windows NT,Windows 98,Windows 95,Windows CE或Window 3.1(由华盛顿州RedMond的微软公司制造),或者操作系统207是,例如,基于UNIX的系统诸如加州Mountain View的Sun Microsystems公司的Solaris。用户设备104的其它实施方案可能是使用具有定制或嵌如操作系统207的特殊处理器201的专用设备。本领域的人可以理解用户设备104,正如上述一样,可能是任何类型的由微处理器控制的设备。本发明并不意味着局限于图4中用户设备104的结构。相反,任何可以为用户存取软件的设备都意味着在本发明的涉及范围内。
为了提供本发明的系统的用法监控方面,提供了监控程序(SP)209并且它和操作系统207,标签表210,软件实体111-114以及可选的指纹表126(图4)一起执行。监控程序(SP)209可选的是一个独立于操作系统207的实体,尽管它可能是其中的扩展。监控程序209优选的也是由任何一种编程语言(例如,C,C++,Java,汇编,或其它语言)编写的软件程序而且优选的是该程序使用操作系统207提供的应用编程接口(AP)来交互并控制操作系统207的某些功能。可选的是,在嵌入式系统的用户设备104里,操作系统207,监控程序(SP)209,以及其它数据或构件可能全部被嵌入或完全由电路表示或存储在内存中。
在本发明的优选实施方案里,每一此用户设备104启动(例如,加电)时,操作系统207,监控程序(SP)209和标签表210从用户存储设备200被读入内存。在用户设备104第一次启动的时候,优选的是,有关设备的监护程序209的标识符ID(SP)209-A被计算并且存储在安全的位置。这个标识符209-A,正如在以上的术语表(表1,ID(SP))里讨论的那样,是基于下面几项的一些结合计算出来的硬件标识符(如果有的话);以及设备104里的高精度记时器(例如,微秒)。在本发明的系统里,监控程序(SP)209是软件实体111-114和操作系统207之间的用法监控接口。在详细解释监护程序提供的用法监控的可操作方面,先讨论软件实体111-114和相关的标签120在用户设备104上的安装。
本图5阐明了根据本发明优选的实施方案涉及的在用户设备104上安装软件实体INST_SW和相关的标签TAG_INST_SW的步骤。可以通过用户输入/输出机制204将标签120和软件实体111-114加载到用户设备104上,或者可以通过互连机制203经过通信网络100的接收进行电子安装。图5中的步骤优选的是由执行本发明提供的监控程序(SP)209代码的处理器201完成的。监护程序209可以驻留在操作系统207里,例如,作为核心208的扩展,或者可以驻留和作为核心208和操作系统之上的单独进程执行。
在任何一种情况下,用户设备104(在这个例子里是个人电脑,但是在本发明的意义里本发明的规定应用于任何其它设备)在图5的步骤250里获得指定命名软件(NAME_SW,SW)的实体年十吨—。在步骤251里,用户设备104安全获得与步骤250里获得的命名软件实体相关的标签TAG_INST_SW。在步骤252里,本发明的系统判定标签TAG_INST_SW是否是签名的或未签名的标签。步骤252的执行可以通过检查接收到的标签信息判定SIGN_TS函数是否出现在标签TAG_INST_SW里。接下来,监护程序继续验证标签以及该标签和下面的软件实体的合理相关性。
在本发明优选的实施方案里标签服务器102根据图3A,3B或3C里的步骤创建标签,并且该标签对于签名的标签有步骤15A(图3A)产生的内容,对于未签名的标签具有154B(图3B和3C)。如果标签TAG_INST_SW是签名的标签,步骤(图5,253)激活部分监控程序(SP)来计算哈希函数值V=HASH(INST_SW)和哈希函数值U=HASH(NAME_SW,NUM_INST_SWV)。然后监控程序209比较值U和在标签TAG_INST_SW里找到的值HASH_INST_SW。如果两个比较的值不一致那么标签是无效的。如果值U和值V一致那么监控程序209通过使用标签服务器102的公共密钥PUBLIC_KEY_TS(图2,116)进一步验证存在于标签TAG_INST_SW里的SIGN_TS(HASH_INST_SW)上的数字签名。如果在SIGN_TS(HASH_INST_SW)里的标签服务器签名没有通过验证,那么标签是无效的。在步骤253里,当发现步骤250获得的命名软件(NAME_SW,SW)的实体和步骤251获得的无效标签TAG_INST_SW相关时,软件实体在步骤254里遭到拒绝。
如果标签TAG_INST_SW是未签名的标签,步骤257激活部分监控程序(SP)209为存在于标签TAG_INST_SW里的哈希函数值来验证哈希值,使用以上签名标签使用的相同步骤。如果HASH_INST_SW值没有合理地求值,那么标签TAG_INST_SW有错并且步骤250里获得的与无效标签TAG_INST_SW相关的命名软件(NAME_SW,SW)的实体在步骤254里遭到拒绝。
步骤254里的拒绝简单地意味着用户设备104放弃或删除或不允许使用软件实体INST_SW和步骤250以及252获得的与之相关的标签TAG_INST_SW。步骤256也可能被执行,它激活用户设备(例如,104)上的惩罚性动作。对于用户设备104而言惩罚性动作可能包括关机或者禁止设备的使用。惩罚性动作会在有关本发明的用法监控功能里得到详细讨论。
对于签名的标签,如果步骤253里哈希函数值和签名SIGN_TS(HASH_INST_SW)验证通过,或者对于未签名的标签,如果步骤257里哈希函数值HASH_INST_SW验证通过,那么步骤255把与该标签相关的软件实体INST_SW(图2中的111-114)存储在用户存储设备200,而且也把有关软件实体(例如,111)相关的标签TAG_INST_SW存储在标签表210里并把状态“已安装”附加在标签上(图6详细阐明了表210的第一列,在以后会有更全面的解释)。
在标签包含监控程序标识符ID(SP)209-A的可选实施方案里,监控程序209验证标签120里的监控程序标识符209-A是和存储在用户设备104上的监控程序209相同。在标签120包含基于软件内容SW上的指定地址的指纹列表的可选实施方案里,监控程序209验证指纹列表匹配软件SW里的相同指定地址计算的指纹,这里匹配是基于同位指纹检查,正如在以上定义中描述的和这里解释的一样。
图6阐明了一个例子标签表210的内容。一般地,标签表210包括监控程序需要的信息目的是为了判定用户设备104的用户213或者设备104本身是否允许使用软件实体111-114。通过马上就要解释的处理方式,监控程序209可以检测软件实体111-114的使用企图并且检查维护在标签表210里的信息来判定与请求的实体111-114相关的标签TAG_INST_SW的用法监控特性。
定期地,监控程序(SP)209会执行呼叫过程,呼叫过程是用户设备04和监护中心地接口。在呼叫过程中,监护中心103(图2)的验证程序(图,315)验证正在执行呼叫的用户设备104上安装的每一个软件实体111-114的标签表210里的标签信息以便指导用户设备104上的监控程序根据用户213请求使用的软件实体111做出用法监控的判定。
图6表现了在本发明优选的实施方案里的设备(例如,104)的标签表210。经由图5里的步骤251为每个已安装的软件实体111-114获得的每一个有效标签TAG_INST_SW120都被存储在标签表210里的标注有”TAGS”的第一列。标签表210里的TAGS列里的标签被标注为TAG_INST_SW1,TAG_INST_SW2,TAG_INST_SW3,TAG_INST_SW4和UNTAGGED_SW。标签表210的其它信息(会更详细地解释)包括关于每个标签的用法状态列表(第二列),动作时间(第三列),运行次数(第四列)以及使用时间(第五列)。监控程序209为每个标签条目(也就是说,每个标签表的行)使用标签表信息判定如何处理与各自标签TAG_INST_SW相关的每个软件实体111-114的使用请求。
简介地说,标签表210里的用户状态列指示监控程序209对于用户213或设备104-107软件实体111-114是否可用。如果软件地使用是允许的,状态列将指示“CONTINUED”或“INSTALLED”,然而如果使用被拒绝,“GC_DSABLED”。”INSTALLED”后跟有”REMOVED”状态词指示软件实体111-114的标签TAG_INST_SWn被正式安装在用户设备104上但是不能再进行安装因此不能使用。动作时间列指示由监护中心(SP)209(图2)执行的最后状态判定(例如,最后一此呼叫和标签验证过程的时间-下面解释)的时间戳(例如,日期和时间)。标签表210里的运行次数列指示与标签TAG_INST_SWn(这里n是1到4)相关的软件实体111-114在用户设备104-107上被使用的次数。最后,标签表210里的使用时间列指示自从设备和监护中心之间的上一次呼叫过程以来(在另外的实施方案里,自从安装以来),与标签TAG_INST_SWn相关的软件实体111-144被使用的全部占用时间。
本发明的系统使用与每个标签(列1)相关的各种字段(也就是说,行)的目的在这里给予解释。标签标识标签表210里的行是基于相关行的内容,监控程序209必须检查标签表209来判定给定的软件实体111-114是否可以合理或有效使用。选中行的当前用法状态字段决定是否可以使用软件实体(也就是说,在这个例子111-114中的一个)。
正如即将解释的,当允许使用软件实体时,监控程序(SP)209可以跟踪软件实体111-114的使用次数和使用次数。此信息可以被用来构建用户设备104-107的事件历史,并且也可以用于其它目的诸如跟踪按使用计费或按查阅计费的软件实体111-114。事件历史是所有企图的使用,成功的使用,使用的时间段,以及其它事件诸如设备的启动。即使两个设备由相同的软件实体和同样的标识符,它们也不可能具有相同的事件历史。
在一个实施方案里,没有两个设备具有相同的软件实体和同样的标签或监控程序或设备标识符。然而,有见识的软件盗版者可能企图完整地拷贝一个设备的磁盘映像到另外一个设备,在这种情况下,标签,设备和监护程序标识符可能完全被复制。本发明在某些实施方案里通过允许至少一个唯一标识符(也就是,一个软件标签120或监控程序标识符209-A)包含诸如硬件处理器标识号的信息(也就是,例如处理器序列号),该硬件标识号把那个标识符(例如,标签120(图6里的列1),SP ID209-A,设备ID)和特定处理器或设备主板关联起的方法达到避免这种盗版。也就是说,如果盗版商通过复制整个磁盘信息并将被复制的磁盘转移到另外的设备以次来绕过本发明的用法监控保护,本发明可以允许将硬件设备标识机制组合在标签信息里进而在标签有效性验证(也就是,在呼叫处理过程中-待解释)过程中可以相应地检查硬件标识信息。
应该明白这个实施方案补充了本发明使用维护在监护中心103的设备用法统计的机制,目的是跟踪企图使用相同标签信息的两个设备。也就是说,如果盗版商从合法设备104拷贝磁盘到另外一个设备(也就是,107),根据本发明的方面,对于盗版设备107的非法用户213来说在这种完全复制合法设备104的用法的情况下几乎不可能使用设备107。同样地,当每一个设备104,107执行呼叫监护中心103(图2)来验证标签时,监护中心103(图2)将会检测设备104,107中的一个是否具有不一致的用法或呼叫统计涉及另外一个设备(也就是,104,107中的另外一个)。因此,一旦每一个设备104,107发出呼叫,设备104,107中的一个将会以欺骗性地企图使用软件出现。在这一点上,本发明的系统可以执行包含在延续消息(稍后解释)里的惩罚性动作来禁止一个或全部设备、设备上的软件、设备的使用或者关于它们的任何一种结合。本发明也可以向授权机构报告非法使用的情况。
作为按使用计费或按次计费的例子,每一次使用按使用计费的软件实体111-114,监控程序(SP)209在标签表210的运行次数字段(列4)里为与该实体111-114相关的标签TAG_INST_SW记录这次使用。运行次数信息之后可以用在计费目的上。
包括在标签表210的还有头字段HEADER_TAG_TABLE,它唯一标识关于这个特定用户设备104的这个特定标签表210。头HEADER_TAG_TABLE可能在单个用户213或单个用户设备104的基础上是唯一的。如果标签210在单个用户213的基础上是唯一的,在用户设备104上的每一个用户帐号(也就是,登录帐号)对于用户213都有它自己的标签表210。单个用户标签表210为使用的软件实体111-114维护标签TAG_INST_SW,例如,仅仅那个用户213可能已经购买了该软件实体。换句话说,如果只有一个标签表210,本发明可以为许多用户213跟踪标签使用和用法监控,否则每一个用户拥有单独的标签表210。
HEADER_TAG_TABLE优选地包括指示有关此标签表210的唯一标识符的字段ID_TAG_TABLE。字段ID_TAG_TABLE优选地包括监控程序209的ID(SP)209-A。此外,它可能包括与此标签表210相关的用户213ID(USER)的标识符、用户设备104 ID(DEVICE)(例如,上述的序列号或机器id)的标识符、以及操作系统207 ID(OS)的标识符。
用户标识符ID(USER)的例子可能是用户名和/或密码的结合。用户设备ID(DEVICE)的标识符的例子可能包括机器名称、机器id,IP地址,序列号或其它硬件或设备的可以区别设备104和其它设备(例如,图1中104-107)的指定信息。
ID(SP)209-A,例如,可能包括设备104-107第一次加电的基于高精度时钟(图4中的205)的相关时间信息。如果高精度时钟205精确到毫秒级,那么不同设备的两个ID(SP)209-A将不会相等。为了减小ID(SP)相等的风险,ID(SP)209-A也可能包括可用的硬件序列号和来自监控中心103(图2)可用的编号。对于想成为盗版的人拷贝磁盘映像是可能的,在这种情况下两个设备有可能具有相同的ID(SP)。正如上面简述的以及接下来进一步解释的那样,在呼叫过程中,通过监护中心103(图2)可以捕获这种情况。操作系统207也可能具有唯一的标识信息诸如序列号或类似的可以用于字段ID_TAG_TABLE的标识符。
头字段HEADER_TAG_TABLE(图6中标签表210的第一行)也包括“上一次监护中心延续消息”字段LAST_GC_CM、“上一次呼叫时间”字段LAST_CALLUP_TIME、以及“设备启动次数”字段NUMBER_DEVICE_POWERUPS。除此之外,头字段包括两个和事件历史有关的字段当前事件历史HASH(EVENT_HISTORY)和最近一次呼叫的事件历史的哈希HASH(EVENT_HISTORY_AS_OF_MOST_RECENT_CALLUP)。
表头的LAST_GC_CM字段包含延续消息值,该值是来自监护中心(GC)103(图2)的不能伪造的消息,此消息包含标签表210更新信息的编码以及由监护中心GC103(图2)为用户设备监控程序SP指定动作和惩罚性动作。监控程序209使用标签表210表头的LAST_CALLUP_TIME结合其它标签表数据来判定何时需要根据CALL-UP_POLICY发起向GC103(图2)的呼叫。NUM_POWER_UPS被用在本地作为方法的一部分来判定何时需要呼叫。
事件历史可能包括信息诸如设备104-107上的软件实体111-114何时激活以及外部输入到用户设备104-107(也就是,用户213交互)可能何时发生。事件历史的目的是基于设备的过去行为或设备的使用来描述设备104-107。这可能是有用的因为诸如监控程序209-A和标签120等静态信息可能从一个设备104-107被拷贝到另外一个设备,但是象收录在事件历史里的动态信息对于即使有相同静态信息的设备104-107而言也是有差别的。因为事件历史会很大,需要维护事件历史的哈希函数值而不是事件历史自身。优选地,为了允许处理在呼叫过程中继续,保留两个事件历史哈希函数值。
就象在下文中解释的那样,延续消息CM(图2,212;图13B,423)优选地也被保存在标签表头(图6中的表210的第一行)的LAST_GC_CM字段里。CM 212是监护中心103(图2)在和用户设备104的呼叫过程中准备的消息并且优选地是由监护中心103(图2)把它安全传送到执行呼叫的设备104-107。延续消息CM 212包括信息以便用户设备104上的监控程序(SP)209可以判定哪些个软件实体111-114被允许继续使用或者因为使用不当而被禁止,也可以定义由设备监控程序209执行的其它动作或惩罚性动作。
LAST_CALLU_TIME字段包含上一次呼叫处理(待解释)发生的时间戳,NUM_DEVICE_POWER字段包括用户设备104启动的次数。就象在下文中解释的那样,在每个用户设备104上的监控程序(SP)209负责维护(尽管不必要产生)标签表210里的准确信息,包括诸如NUM_DEVICE_POWERUPS,LAST_CALL_TIME,和LAST_GC_CM延续消息等表头信息。也就是说,延续消息(CM)212(图2)是由监护中心103(图2)产生并且被安全地传递给用户设备104上的监控程序(SP)209。在收到的时候,监控程序(SP)209优选地负责分析延续消息(CM)(图2)以及更新标签表反映最近的用法监控信息(也就是,更新标签表字段)。
在头字段HEADER_TAG_TABLE里的信息可以唯一标识标签表210并且监控程序(SP)209使用它来更新安装在用户设备104上的每个软件实体111-114的用法监控信息。这个思路是有关每一个用户或者每一个用户和/或用户设备104相结合的标签表210可以经由其它用户213的其它标签表210或其它用户设备104或用户/用户设备的HEADER_TAG_TABLE是可标识的。
当新的软件实体111-114以及与之相关的标签120经由图5的步骤来获得和安装或者使用时,标签TAG_INST_SWn的标签表210的实体(也就是,标签表210里的行)把动作列值的值设置为INSTALLED来指示与此标签相关的软件实体111-114是新被加入或安装在用户设备104。动作时间值或者为空或者指示安装的时间。运行次数和使用时间列值被设置为零或者”0”或者为空。
根据本发明的另外一方面,可以为软件实体111-114提供用法监控,这些实体没有被创建相关的标签TAG_INST_SW(第一列)插入到表210里。任何这样的实体111-114被称为未标记软件实体或简单地称为未标记软件。未标记的软件的例子是用户213制作的软件。用户制作的软件可能是合法制作的,就象用户213编写或制作软件程序或歌曲的情况。用户制作的软件也可能非法地制作的,在这种情况下,被称为侵权软件INF_SW。允许用户设备104-107使用合法的未标记软件是需要的而且本发明的用法监控允许这样。然而,在此同时,根据本发明的机制,本发明检测和包括使用,如果需要,也可以在用户设备104-107上执行惩罚性动作,如果那个设备企图使用标记的或未标记的侵权软件。
例如,可能按照下面的方式制作侵权软件INF_SW。盗版商通过获得CD-ROM上的合法的指定软件实体111-114,诸如书籍或应用程序,从那个软件的自带的安装程序里删除任何所需标签120的所有引用。然后盗版商可能以不同的名称作为未标记的软件销售变更后的软件的拷贝(也就是,不在需要引用相关的标签)。另外一个无标签软件的例子是盗版商修改或继承合法代理商的软件SW而制作的侵权软件,例如,未授权把代理商的书籍翻译成另外一种语言或者应用程序重新编译的版本。本发明的系统阻止、跟踪和保护在用户设备104-107商的未授权软件的使用。
为了做到这一点,本发明引入被称为指纹法的概念。本质上讲,指纹法产生与软件实体相关的值,该值对于那个实体的软件内容是唯一的。如果可以获得非法制作的软件实体的拷贝的指纹,本发明提供一种方法检测其它用户设备104-107使用类似的非法制作的拷贝的企图。根据本发明,当用户213在用户设备104上企图安装或使用未标记软件时与特定软件相关的指纹是优选的。
图7阐明在用户设备(在该例中,讨论时使用用户设备104)上安装未标记软件的过程。在步骤330,用户213在用户设备104上安装(或制作)未标记的软件实体(也就是,未标记的实体111-114)。例如,未标记软件UN_TAGGED_SW可能简单的以二进制数据(STRING
)串的形式出现并且一开始没有相关的标签。在步骤31里,企图使用未标记软件111-114时,监控程序(SP)209检测到标签表210里不存在这个软件实体的标签进而监控程序(SP)209使用指纹函数FP获取未标记软件实体111-114的指纹。例如,指纹函数可能是哈希函数。
在步骤331,每个指纹Xi和指纹函数产生的值相等,指纹函数FP优选地在未标记软件的部分内容STRING[i,i+k-1]上计算,在此,对于固定标准k满足条件0<=I<=m-k+1。m是选择的索引。换句话说,指纹函数FP是在未标记软件数据STRING
的选择部分进行计算的,在此N是未标记软件按位计的总长度。优选的是,指纹函数产生许多指纹(m),逐个偏移。在步骤332,监控程序(SP)209在用户设备104的指纹表210里存储从Xi1到Xim的指纹。
在可选的实施方案里,指纹的产生是基于未标记软件的部分非连续内容。
在另外一个可选的实施方案里,指纹是在软件使用的时候基于软件的行为计算的。行为的例子可能是软件产生的一系列系统调用。例如游戏软件具有指定的写屏幕的方式。这些方式可能被组合到软件实体的指纹中。
最终,在步骤337,监控程序(SP)209在标签表210里创建未标记的标签实体UNTAGGED_SW用来指示用户设备104上的未标记的软件实体111-114的出现。标签表210里的UNTAGED_SW标签使用哈希函数或其它手段唯一将标签UNTAGGED_SW和已经获取过指纹的未标记的软件实体相关联。使用上述处理过程,任何在用户设备104上使用或安装未标记的软件实体111-114的企图都导致未标记的实体被取指纹,也导致在标签表210里创建标签UNTAGGED_SW。
正如稍后解释的那样,监护中心103(图2)使用指纹表126检测监护中心103(图2)已经意识到的侵权软件INF_SW的使用。有关本发明的指纹方面的细节稍后再详细讨论。
图8表现了当用户213企图使用在用户设备104上的软件实体(INST_SW)111-114的时候本发明的系统109执行的高级步骤。在步骤270,用户213通过使用软件实体111-114和用户设备104上的用户输入/输出机制204进行交互。在步骤271,监控程序(SP)209捕获软件激活使用实体111-114的调用。在这一点上,监控程序(SP)确保被请求的软件实体111-114在标签表210里具有指示”继续”状态的标签TAG_INST_SW。然而,在优选的实施方案里,在检查单个的标签TAG_INST_SWn之前,监控程序(SP)209确保标签表210自身是有效的或是在更新的状态。保持有效状态意味着标签表210是最新的并且在呼叫过程需要的时候更新它的内容。相应地,在步骤272,监控程序(SP)209存取标签表210来判定当前是否需要向监控中心103(图2)发起呼叫。
在可选的实施方案里,如果标签里包括指纹,监控程序SP209可能使用同位指纹法检查正在使用的软件实体是和这个标签合理相关。
本发明的系统定期执行呼叫处理,有效果地重新验证有效性同时强制标签表210里的每一个标签TAG_INST_SWn的用法监控规则。呼叫过程发生在监护中心103(图2)和用户设备104之间。可能有许多触发事件导致向监护中心103(图2)发起呼叫。
例如,在步骤272里做出的呼叫决定可以通过检查标签表头HEADER_TAG_TABLE里的LAST_CALL-UP_TIME字段来产生。如果LAST_CALL-UP_TIME里的时间戳已经超过某个过去的时间,那么需要发起到监护中心103(图2)的呼叫进而继续到步骤273里呼叫被执行。可选的是,标签表210自身可能有呼叫规则(CALL-UP_POLICY),该规则定义为了呼叫需要必须满足的一组规则或条件。
在其它实施方案里,有与单个软件实体111-114相关的呼叫规则。在这种情况下,步骤272可以检查与软件内容SW相关的呼叫规则的准则或标准或者步骤270里用户213请求存取的软件实体(INST_SW)111-114。在另外的实施方案里,如果用户设备104的用户213企图使用未标记的软件实体,步骤272可能要求呼叫是需要的。在另外的实施方案里,如果用户设备104的用户213第一次使用标记的软件,那么步骤272可能要求呼叫是需要的。在另外的实施方案里,连续的呼叫过程之间的最大允许间隔优选的是由用户设备104上的占用时间、软件实体111-114的使用次数和使用持续时间、设备104加电的次数,和/或其它与时间或设备104的使用有关系的方法。
呼叫处理稍后会详细讨论。然而,本质上讲,在呼叫处理当中,在用户设备上的监控程序(SP)209把标签表210的拷贝和指纹表126安全地传送到监护中心103(图2)。在验证之后,监护中心103(图2)比较在标签表210里的每个标签TAG_INST_SWn和一组危及安全的标签,监护中心103(图2)可以检测无效的或在某些形式下危及安全的标签。
监护中心103(图2)同样也检查与每个标签相关的用法监控规则POLICY(TAG_INST_SW)确保标签120(以及由此与这些标签相关的软件实体)的使用符号用法监控规则POLICY(TAG_INST_SW)。规则可能是整个用户设备104-107的或是以单个用户213或单个标签120为基础的。同样,对于未标记的软件,监护中心103(图2)比较指纹表126和指纹数据结构(稍后解释)来检测侵权软件INF_FW的使用。在结束分析标签表210和指纹表126之后,监护中心103(图2)准备并给用户设备104发送延续消息(CM)212(图2)。
在可选的实施方案里,也可以通过指纹法检查标记的软件。该实施方案阻止盗版商把侵犯知识产权或其它合法代理商权利的指定软件的实体作为标记的软件分发出去,也就是说,携带着从标签服务器102获得的合法标签。在这个实施方案里用户设备104-107的监控程序209也对标记的软件实体111-114执行指纹法处理,并且在它的指纹表126里存储计算的指纹。在呼叫过程中,从用户设备104-107上使用的标记软件实体111-114获得指纹也被发送给监护中心103(图2)供检测侵权软件的使用。
延续消息(CM)212(图2)包含各种各样的影响用户设备(例如,104)上的软件实体111-114的操的或用户设备104自身的操作的信息。例如,如果监护中心103(图2)在标签表210检测到关于用户设备104的无效标签TAG_INST_SWn,监控中心给用户设备104返回的延续消息可能导致用户设备104变得不可用或在指定时间段内或永久地禁止它。可选的是,延续消息(CM)212可能造成用户设备104不能使用与无效标签120相关的特定软件实体111-114。
用户设备104采取的动作定义在延续消息(CM)212的动作部分,这在稍后更详细地解释。延续消息212也被用户设备104里的监控程序(SP)209所使用来更新标签表210里的信息。例如,标签表210里的动作时间列可能由最近的延续消息(CM)212的时间戳来更新,由此提供指示说明监护中心103(图2)检查每个标签TAG_INST_SWn的最近时间。
继续描述图8中的处理过程,步骤273结束呼叫处理后,步骤277(也就是,通过延续消息202)更新用户设备104上的标签表210,之后处理过程返回步骤272。一旦用户设备104判定给监护中心103(图2)的呼叫此时不需要,处理过程继续步骤274判定步骤270里用户213请求使用的特定软件实体111-114的用法状态。
在步骤274,用户设备104里的监控程序(SP)209实质性地检查在标签表210里的与请求的软件实体111-114相关的标签TAG_INST_SWn的的用法状态列。如果用法状态列指示“继续”,那么监控程序(SP)209向操作系统207的核心208发送信号允许在步骤275里使用请求的软件实体111-114。如果在标签表210里的与请求的软件实体111-114相关的标签TAG_INST_SWn的的用法状态列指示“GC_DISABLED”或”删除“,那么监控程序(SP)209拒绝在步骤276里使用软件实体111-114。
如果允许使用请求的软件实体111-114,监控程序(SP)209把与请求的软件实体111-114相关的标签TAG_INST_SWn的运行次数列里的值增加1。监控程序(SP)209也跟踪请求的软件实体111-114的使用时间数量并相应地为此标签更新使用时间列。
图9阐明监护中心103(图2)的体系结构的优选的实施方案。监护中心103(图2)包括与处理器301耦合的总线306,内存302,互连机制303,时钟304以及监护中心授权数据库300。监护中心103(图2)优选的是高性能的计算机系统诸如可以同时执行多进程处理处理多个事务。例如,互连机制303是调制解调器组或一个或多个高速网络连接允许监护中心103(图2)通过通信网络100和许多用户设备104同时通信。
监护中心103(图2)授权数据库(GCDB)300优选的是大型数据库子系统或磁盘或具有存储海量信息的能力的RAID阵列。在这个实施方案里,GCDB包括已标记的为标记的软件实体保存数据的软件数据库138(图9),和指纹数据结构137。标记的软件数据库138(图9)包括有关每个用户设备104上的每个标记的软件实体的呼叫记录(图10,320,321)这些数据库137和138(图9)的内容和使用稍后将作详细解释。
在监护中心103(图2)的操作中,内存302用于存储验证程序(VRP)315,它和处理器301一起协作执行这里描述的监护中心的功能。内存302也存储用户设备标签表210和指纹表126,指纹表126在上述的呼叫过程当中被传送给监护中心103(图2)用于标签验证和用法监控判定。
图10描述了维护在监护中心103(图2)里的标记的软件数据库138(图9)里的有关每个标记的软件实体(例如,111-114)的数据结构320,321。标签数据结构320最初是由标签服务器102在为每个软件实体111-114创建标签120时提供给监护中心103(图2)的。标签服务器102提供标签120给监护中心103(图2)的方式优选的是在通信网络100之上经由电子的形式和安全的形式分发的。可选的是,软件代理商负责确保监护中心103(图2)一直知道有关分发给用户设备104-107的每个软件实体111-114的标签信息。
对于用户设备104上的每个使用的软件实体的标签数据结构320存在于标记的软件数据库138(图9)中。正如所阐明的那样,每个标签数据结构320包括许多的字段。这些字段包括有关那个软件实体TAG_INST_SW的标签,那个软件的用法监控规则POLICY(TAG_INST_SW),以及有关那个软件实体的一个或多个呼叫记录CALL-UP_RECORDSn321的一组引用。
与有关软件实体111-114的标签TAG_INST_SWn相关的规则PLICY(TAG_INST_SW)是由软件代理商或其它组织机构规定的,并为与那个标签相关的软件实体定义有关用法权利的保护或按使用计费的存取限制的准则和规则。例如,与指定软件实体111-114相关的标签数据结构320,POLICY(TAG_INST_SW)数据可能包括规则申明对于软件实体的每一次使用用户设备104必须支付规定的费用。
在呼叫处理当中(稍后解释),当监护中心103(图2)接收到来自用户设备104的标签表210,用户设备104已使用的特定软件实体111-114的次数可以由有关那个软件实体的标签表210里的标签TAG_INST_SWn的运行次数列来决定。然后监护中心103(图2)查找在标记的软件数据库138里(图9)里的有关与那个标签TAG_INST_SWn相关的标签数据结构320的规则POLICY(TAG_INST_SW)。监护中心103(图2)判定在标签表210里的运行次数字段指示的使用次数是否大于从上一次呼叫处理获得的前一个数字。如果是,监护中心103(图2)为计费目的记录这个信息以便将来发送给所有者或用户设备104的用户213。
可以定义其它的用法监控规则POLICY(TAG_INST_SW)以便监护中心103(图2)允许特定软件实体111-114只能使用某些次数。当使用的次数超过时,监护中心103(图2)引起在用户设备的标签表210里的用法状态字段的值被设置为”GC_DISABLED”,这个字段是与上述软件实体相关的标签相关联的。这个变化在用户设备104上生效是通过监护中心103(图2)在分析标签表201后发送给用户设备104的延续消息里指定合适的信息。当用户设备104企图使用与被禁止的标签TAG_INST_SWn相关的软件实体111-114时,正如在图7中解释的那样,使用将被拒绝。
监护中心103(图2)里的在标记的软件数据库138(图9)里每个标签数据结构320包括象图10中表现的对呼叫记录CALL-UP_RECORDn321的许多引用。呼叫记录CALL-UP_RECORDn321包括呼叫时间CALL-UP_TIME,来自呼叫用户设备104的标签表210的头字段HEADER_TAG_TABLE,标签表210HASH(TAG_TABLE)的可选的哈希函数值,以及动作字段。因此,不管发送标签的数目,每一个呼叫对应一个CALL-UP_RECORDS。
CALL-UP_TIME字段为当前CALL-UP_RECORDn指示呼叫的时间戳。HEADER_TAG_TABLE包括标签表210的标签表表头,标签表210包含有关这个标签数据结构320的TAG_INST_SWn,就象在呼叫过程n中接收到的来自呼叫用户设备104的一样。HASH(TAG_TABLE)字段包括无别名的在标签表210里的所有数据上计算的哈希函数值,标签表210包括与标签数据结构320相关的TAG_INST_SWn。最后,动作字段列出由监护中心在呼叫过程n当中规定的动作,为有关标签数据结构320的标签TAG_INST_SW相关的软件实体111-114执行这些动作。使用有关每个软件实体111-114的标签数据结构320,监护中心103(图2)为经由用户设备104使用的软件实体111-114维护与用法监控机制有关系的详细信息。
图11表现导致维护在监护中心103(图2)里的指纹数据结构137创建的处理步骤。就象先前关于图7所提到的和所解释的,当未标记的软件,也可能标记的软件,第一次在用户设备104上使用的时候,指纹被创建并且存储在每个用户设备104的指纹表126中。根据本发明,软件盗版商可能通过拷贝代理商软件并删除请求标签确认的那部分软件或者制作并分发合法软件的派生版本来侵犯合法代理商的权利。这样产生的软件被称为侵权软件INF_SW。在监护中心103里创建的指纹数据结构137会包括在侵权软件实体INF_SW上计算的指纹。
在图11中,步骤340里,软件代理商101检测侵权软件(INF_SW)的实体的存在性。在步骤341里,软件代理商101向监护中心103(图2)提交侵权软件INF_SW的实体的拷贝。侵权软件仅仅是一串二进制数位(比特)STRING
。在步骤342,监护中心在侵权软件实体上计算一组指纹Yi,使用和每个用户设备104上的监控程序(SP)209一样的指纹公式计算指纹。也就是说,一系列指纹Yi的计算公式如下Yi=FP(STRING_INF[i,i+k-1])在此0<=I<=n-k+1,n-k是要计算的指纹数目。接着,在步骤343,监护中心103(图2)把计算的每一个指纹Y1,...Yn-k+1组合到GCDB300里的指纹数据结构137里。在可选的实施方案里,在STRING_INF的非连续序列上计算指纹,这些序列对于INF_SW是唯一的或者几乎是唯一的。
指纹处理就这样在监护中心103(图2)结束,侵权软件INF_SW可能被放弃或者在这个或其它通信网络100上可用于其它地方的监护中心103(图2)。
在这点上,当用户设备104上的监控程序(SP)209检测到请求使用未标记(可能侵权)的软件实体UNTAGGED_SW111-114,监控程序(SP)209记录UNTAGGED_SW的指纹。之后当SP209执行呼叫过程给监护中心103(图2)传送标签表210和标签表126时,记录的UNTAGGED_SW的指纹将会被发送。在一个实施方案里,在用户设备104-107上的使用未标记的实体的存取请求可能引起呼叫的发生。使用一般地址指纹法,指纹表126里的指纹可能被与监护中心103(图2)上的指纹数据结构137里的指纹相比较。如果软件实体UNTAGGED_SW是监护中心103(图2)已经意识到的并且具有自己的指纹的侵权软件实体INF_SW的拷贝,这会被检测到而且经由返回的延续消息212惩罚性动作会在用户设备104上被执行。在另外的实施方案里,用户设备104上的UNTAGGED_SW的系统调用行为(也就是,系统调用的顺序)和监护中心103(图2)上的INF_SW期望的系统调用行为相比较。在另外的实施方案里,在最后两个段落里详术的步骤也同样适用于用户设备上请求标记软件的使用的情况。
除本发明的指纹法方面之外,在下面即将解释的呼叫过程当中,监护中心103(图2)里的验证程序315也读取并且比较标签表210里的信息和标签软件数据库138(图9)里的信息目的是做出用法监控决策。
图12阐明监控程序(SP)209执行的步骤,在本发明的优选实施方案里监控程序运行在用户设备104上执行呼叫过程。图12里的步骤在图8的步骤273里被执行。
在图12的步骤370里,监控程序(SP)209呼叫监护中心103(图2)。呼叫的含义是用户设备104上的监控程序通过通信网络100建立与监护中心103(图)的连接并交换消息。在优选的实施方案里,监控程序(SP)209给监护中心103(图2)发送HEADER_TAG_TABLE。监护中心103(图2)不会引起呼叫失败除非先前的延续消息包含设备的ID_TAG_TABLE,上一次呼叫LAST_CALLUP_TIME的时间和具有相同HEADER_TAG_TABLE的最近一次CALL_UP记录的CALLUP_TIME相等。该实施方案的优势是即使若干个设备104-107具有相同的ID_TAG_TABLE(图6中标签表210的行1)以及相同的标签210(通常由于盗版而发生的情况),那些相同的设备可能已经接收,但因为下面解释的原因将不会合理地接受相同的延续消息212,因此只有一个设备(也就是,104-17中的一个)将会发送特定的HEADER_TAG_TABLE。
为了响应用户在设备104-107上使用软件实体111-114的企图,正如上述的那样呼叫的产生是符合CALL-UP_POLICY或CALL-UP_POLICY(TAG_INST_SW)的。也就是说,当用户213企图使用软件实体111-114时,根据用户设备104或软件(SW)的CALL-UP_POLICY(TAG_INST_SW)那个实体在下一次呼叫之前允许的时间已经失效过期,在那个设备104-107上的监控程序209发起步骤370。在另外一个实施方案里,SP209在过期之前选择的时间执行呼叫过程,不管软件实体111-114的使用是否被请求。CALL-UP_POLICY可以维护在用户设备104上的监控程序209里。除此之外,呼叫有可能发生因为在执行但不管使用请求的监控程序209的一部分判定执行呼叫的时间已到。例如,某些呼叫可能发生因为用户设备104-107的BOOTUPS(加电)的确定次数已经发生或者未标记软件的第一次使用。
如果在步骤371里呼叫监护中心103(图2)失败,那么处理过程继续步骤376,在这一步用户设备104上的监控程序(SP)209可能执行惩罚性动作。在优选的实施方案里,监控程序(SP)209将执行新的呼叫,在开始惩罚性动作之前重试若干次。在步骤376需要惩罚性动作的情况下,惩罚性动作可能仅仅是通知用户213请求的软件实体111-114因为通信失败。临时不可存取。
如果呼叫成功并且从用户设备104建立了到监护中心103(图2)的连接,那么在步骤372里,监控程序(SP)209优选地安全地从用户设备104发送或传送标签表210给监护中心103(图2)。在可选的实施方案里,监控程序(SP)209也给监护中心103(图2)发送指纹表126。也就是说,为了检测用户制作或用户修改的侵权软件,本发明的指纹法方面可能或不可能被组合在实施方案里。
步骤372结束后,监控程序(SP)209进入等待状态直到延续消息被监护中心103(图2)发送而且接收到该消息。可选的是,监控程序(SP)209在步骤372结束之后可能进入睡眠状态并且跟在操作系统(OS)207的中断之后运行。在可选的实施方案,监控程序(SP)209继续处理来自用户的请求。监护中心103(图2)呼叫处理将会在稍后有关图13A和13B得到解释。当监护中心103(图2)已经结束它的呼叫过程处理,延续消息(CM)212被发送给用户设备104。
在步骤373里,监控程序(SP)209检查用户设备104的呼叫规则CALL-UP_POLICY定义的延续消息212的返回。作为在呼叫规则CALL-UP_POLICY里检查延续消息212的例子,步骤373可以确保在接收到延续消息(CM)212之前只是过了一部分时间。如果在接收延续消息212之前太多的时间过去了,呼叫规则可能违法。
也可以使用其它因素来判定呼叫违法是否存在,诸如没有能力验证延续消息212里的数字签名。另外一个判定呼叫违法的因素是延续消息212里的HASH(EVENT_HISTORY)字段和记录在用户设备104里的上一次呼叫时间的事件历史的哈希HASH(EVET_HISTORY_AS_OF_MOST_RECENT_CALLUP)是不相同的。这可能发生如果因为盗版有两个设备104-107具有相同的配置和ID_TAG_TABLE,但只有一个执行了呼叫。因为事件历史,设备104-107中只有一个设备会接受延续消息212。其它设备只能进行自己的呼叫进而造成呼叫失败因为HEADER_TAG_TABLE(图6中表210里行1)会匹配ID_TAG_TABLE但是不能匹配上面解释的呼叫时间。
如果CALL-UP-POLICY在步骤373里是违法的,处理继续步骤376并且惩罚性动作在用户设备104上被执行。在这种情况下,惩罚性动作可能包括通知用户213呼叫不能继续而且请求的软件实体111-114必须临时被决绝存取或被禁止。可选的是,可能使用户设备104在一段时间内无效。
如果步骤273判定延续消息(CM)212已被接收并且在CALL-UP_POLICY定义的限制之内是可以接受的,在步骤374,延续消息(CM)212被传递给监控程序(SP)209。接下来,在步骤375里监控程序(SP)209通过数字签名技术验证延续消息(CM)212并为用户设备104的标签表210里的每一个TAG_INST_SWn执行延续消息(CM)212里的动作。也就是说,监控程序(SP)209为标签表210里的每一个TAG_INST_SWn更新用法状态和动作时间列。以这种方式,本发明的系统109允许用户设备104从监护中心103(图2)定期获取标签表210的更新。
因为监控程序(SP)209作为用户213和用户设备104上的已安装的软件实体111-114之间的接口,优选地在用户设备104上监护程序209实现在此描述的用法监控机制。通过要求软件实体111-114的标签TAG_IINST_SWn处于“继续”用法状态,该状态只能在呼叫处理中被改变,监控程序(SP)209最终被一个或多个监护中心103(图2)管理。监护中心103(图2)负责按照为标签和指纹定义的每个规则判定用户设备104的标签表210里的标签是否应该处于“继续”或“GC_DISABLED”状态。
图13A和13B显示一个连续的流程图,根据本发明的优选的实施方案该图表现了在呼叫处理过程当中监护中心103(图2)里的验证程序(VRP)315执行的步骤。监护中心103(图2)意识到呼叫过程当用户设备104(也就是,监控程序209)在图12的步骤370里发起最初的呼叫处理连接或联系监护中心103(图2)。作为响应,图13A的步骤410里,验证监护中心103(图2)接收标签表210。如果用户设备104上已安装软件但是没有用标签表210里的标签TAG_NST_SWn将其标记,监护中心103(图2)也接收来自用户设备104的指纹表126。再者,本发明的指纹方面是可被的并且因为它们允许检测侵权软件,所以诶在本发明的优选的实施方案所提供。
在可选的实施方案里,监护中心103(图2)可能只接收标签表210的一部分,例如,标签表210里的HEADER_TAG_TABLE和标签(列1)的一部分。接收到的标签120可能是那些监护中心103(图2)请求的或者可能是被随机选择的或者可能仅仅是在那个时候用户设备需要使用软件实体的标签120。另外一个可能性是标签120可能响应那些按使用计费的或者具有固定使用次数的软件实体。这个选择的优势是它减少了通信成本和处理成本。
在另外一个选择的实施方案里,监护中心103(图2)仅仅接收HEADER_TAG_TABLE(图6里的标签210的第一行)。这个实施方案使得监护中心的呼叫成本降低并且就象在下面解释的那样当每个TAG_INST_SW包括ID_TAG_TABLE字段时可以运行顺利。
现在回到有关图13A的呼叫处理过程的描述,在步骤141里,监护中心103(图2)检查并确保呼叫符合与用户设备104相关的呼叫规则CALL-UP_POLICY。对于用户设备104-107的呼叫规则CALL-UP_POLICY优选的是维护在监护中心103(图2)里,并且/或者有时由软件代理商101或者用户设备制造商(没有表现)提供来指导监护中心103(图2)如何判定用户设备104必须呼叫来验证并更新它的标签表210的频率。
步骤411可能被执行是通过,例如,HEADER_TAG_TABLE信息字段诸如包含在ID_TAG_TABLE字段里的标签表210的唯一标识符。如果呼叫和CALL-UP_POLICY不相符合,当监护中心103(图2)返回延续消息(CM)212给用户设备104时步骤416准备指定的由监控程序(SP)209执行的惩罚性动作。
处理过程从步骤416和411继续下去到步骤412,在这里验证程序315验证在标签表210里的签名的和/或未签名的标签TAG_INST_SWn。在步骤412里执行的验证可能是有关标签表210里签名的标签TAG_INST_SW的数字签名验证。对于未签名的标签,HASH_INST_SW值可能被用来检查在标签TAG_INST_SW里的秘密数字NUM_INST_SW和那个标签的HASH_INST_SW是一致的。这是可能的因为HASH_INST_SW部分地是由NUM_INST_SW计算得到的哈希函数值。除此之外,NUM_INST_SW必须出现在SPARSE_SET并且必须和TAG_INST_SW的NAME_SW相关。
对于每个在步骤412里检测到的未验证的TAG_INST_SWn,步骤417准备指定的惩罚性动作,该动作基于与该未验证的标签TAG_INST_SWn的软件实体111-114相关的用法监控规则POLICY(TAG_INST_SW)。在这种情况下的惩罚性动作包括禁止用户设备104的指令。注意在步骤417里指定的惩罚性动作将会在它被传送到用户设备104之后被执行。
与软件实体111-114相关的用法监控规则POLICY(TAG_INST_SW)是维护在监护中心103(图2)上的,而且有时由软件代理商101提供来指导监护中心103(图2)如何处理有关软件代理商101制作的各种各样的软件实体111-114的用法监控。也就是说,软件代理商101可以提供软件实体111-114给104-107(例如为了费用)。为了强制那些实体111-114上的使用限制,软件代理商101可以为实体111-114创建规则POLICY(TAG_INST_SW)而且可以提供这些规则给监护中心103(图2)。在呼叫过程当中,监护中心强制或监督规则CALL_POLICY(TAG_INST_SW)。作为选择的实施方案,假设111和112具有相同的软件内容SW,一个软件实体(也就是,111)的规则可能不同于那个相同软件的另外一个实体(也就是,112)。例如,这使得本发明为同一个程序的两个用户强制不同的用法监控,因为每个实体具有它自己相关的标签而且呼叫规则被维护在实体对实体或用户对用户的基础之上。
在任何事件,在监护中心103(图2),在标签表210里的每一个标签TAG_INST_SW的真实性验证(步骤412)之后,或为每一个未验证的标签(步骤417)准备惩罚性动作之后,处理过程继续步骤413,在此标签表210里的每个验证的标签TAG_INST_SWn对应标记的软件数据库被检查。本质上,步骤413检查与用户设备104上使用的软件实体111-114相关的标签表210里的每一个标签TAG_INST_SWn(也就是,用户设备执行呼叫处理)的使用符合软件实体POLICY(TAG_INST_SW)的用法监控规则。在步骤413里测试每一个标签之后,处理过程继续步骤414。
在步骤413里执行的检查处理可以通过许多方式来实现。根据一个实施方案,标记的软件数据库138(图9)包括一组在标签TAG_INST_SWn和监控程序标识符(209-As)之间的关联关系和发现这些关联关系的次数。在此实施方案里,验证程序(VRP)315对照TAG_INST_SW-HEADER_TAG_TABLE-CALLUP_TIME关联关系列表比较标签表210里的标签来判定相同的标签120(表210列1)是否在两个设备104-107上。如果发现标签120和若干HEADER_TAG_TABLES相关,在步骤418里准备惩罚性动作。
在本发明的一个优选实施方案中,监护中心的验证程序VRP315使用与标签120 TAG_INST_SW相关的数据结构(图10,320,321),来检查与标签120相关的软件实体111-114在呼叫用户设备104上的使用是否符合为该软件实体111-114指定的用法监控规则POLICY(TAG_INST_SW)的。例如,如果用法监控规则指定相同的软件实体(也就是,同一个标签)一定不能出现在两个不同的用户设备中(例如104和105),同时处于可使用的状态(例如,USAGE STATUS=CONTINUED),标签的呼叫记录321的详细数据将会使VRP315对规则是否被违反进行检查。
在步骤413检测标签表210中的每个标签120TAG_INST_SWn后,210标签表中的标签120可能或者将不可能具有与这些标签相关的指定的惩罚性动作。如果惩罚性动作是依据一个不正确拷贝的标签或者不符合用法监控规则的标签来指定的,处理继续步骤420。在此步骤中,监护中心103(图2)中的验证程序VRP315准备指定的惩罚性动作并通过一个延续信息CM212传送给用户设备104。这样的延续信息)CM212是被用来对用户设备104实施惩罚性动作,并包含有关标签表210中所有的违反规则POLICY(TAG_INST_SW)的标签TAG_INST_SWn的USAGESTATUS字段的动作值″GC_DISABLED″。
注意,在此优选的实施方案中,如果至少一个标签TAG_INST_SW违反了用法监控规则POLICY(TAG_INST_SW),或者发现其存在于标签软件数据库138(图9)中的折衷标签列表中,那么在步骤418中就会对其指定惩罚性动作,并在步骤420中执行而且没有进一步的后续处理。在一个可选实施方案中,对每个折衷的或违反规则的标签TAG_INST_SW的惩罚性动作在步骤418中指定,之后处理过程可能转向步骤414。
作为标记软件的一个可选的处理方式,上述标签处理过程仅发生在一部分标签表中。例如,处理过程仅在那些用户设备104-107(也就是,用户设备上的监控程序209)请求存取(也就是,软件实体试图被使用)的标签上执行。在这种情况下,延续信息CM212将仅为监护中心103(图2)处理的那些标签的相关的软件实体指定继续或惩罚性的动作。
对于另一个可选的实施方案,在对于已经购买无限制使用的软件不需要进行标签处理,因此排除了与步骤372(图12)相关的活动。这样,只需要验证HEADER_TAG_TABLE。在这种情况下,HEADER_TAG_TABLE(图6最上面一行)包括ID_TAG_TABLE和事件历史记录(图6)。在此实施方案中,每个标签120除了包括HASH_SW和NAME_SW,NUM_INST_SW外,还包括ID_TAG_TABLE。ID_TAG_TABLE值将会在购买软件时写入标签120(第一列),而且它是得到HASH_INST_SW的图3A,3B和3C中步骤153的哈希函数的参数。由于ID_TAG_TABLE包括ID(SP)209-A而ID(SP)209-A是基于一个不重复的值,例如设备104第一次加电启动时的微秒级的时间值。在没有盗版的情况下,每个ID_TAG_TABLE值应该只出现在一台物理设备上。
采用拷贝磁盘映象的方式的盗版是可能到导致一个ID_TAG_TABLE值出现在多个物理设备的现象(制作“孪生”),但是,设备104的HEADER_TAG_TABLE中的LAST_CALLUP_TIME和监护中心103(Figure 2)中认证数据库138(图9)的CALLUP_RECORD的CALLUP_TIME在呼叫时间内无法匹配。这样一来,HEADER_TAG_TABLE的验证将会失败。如果从两个配置完全相同的设备104-107送回两个呼叫信息,监护中心103将会采取惩罚性行动。
另外,设备104-107中的任两个设备不能共享同一个呼叫过程,因为它们的HEADER_TAG_TABLE依各自的标签表210的HASH(EVENT_HISTORY)字段而不同。延续信息CM212中,哈希函数值被送传送,在设备104-107中只有唯一一台设备能正确地进行延续信息CM212。在这种情况下,如果两个设备重复动作,监控程序209将会识别这种拷贝,然后采取惩罚性动作。因此,每个ID_TAG_TABLE值将在设备104-107中的唯一一台设备上,或与其相关,否则,将会发生呼叫失败。当一个标签包含ID_TAG_TABLE,只有当此标签120的ID_TAG_TABLE值与适当的设备相匹配时,104-107中的一个设备上的监控程序209将允许使用与标签120相关的软件实体111-114。结果是,111-114中的每个软件实体将会被104-107中唯一的设备使用,而那个设备的ID_TAG_TABLE值是与标签120中的ID_TAG_TABLE值相匹配的。
在步骤414中,验证程序VRP315将判定在标签表210中是否存在未标记软件实体的条目。安装在用户设备104-107上的未标记软件实体在标签表210中的为未标记软件实体设立的列UNTAGGED_SW和USAGE STATUS中设为UNTAGGED。这个UNTAGGED_SW标签条目最好是在用户初次安装软件或初次使用时创建,此指纹处理过程最好是在用户设备104在初次检测未标记软件时执行,详见图7。
在图13A中,如果验证程序VRP315在步骤414检测到在标签表210的未标记条目,就会执行步骤415。此步骤是从指纹表126中得到指纹列表。而指纹表126是通过步骤410传送到监护中心103的。指纹表126包括每个未标记软件实体的指纹列表列表。运用上面解释过的一般地址指纹检验,验证程序VRP315将GCDB300中的指纹数据结构137的每个指纹列表Yi与指纹表126的每个指纹列表Xi相比较。如发现超过在指纹列表Xi和Yi之间发现超过特定数量的匹配项,监护中心将监测侵权软件的使用,并继续步骤420。在此步骤准备惩罚性的动作,并将其送往呼叫的用户设备104。制作侵权软件的防侵权版本的销售商101也将被通知。
如将指纹Xi中的每条与监护中心的每个指纹列表比较,计算相当繁重,而且由于这是呼叫中系统花销最多的操作,要完成这项工作一个实施方案有些困难。在这个实施方案中,一个叫做反向监护指纹表的指纹列表被构建成包括所有的侵权软件的指纹,但没有重复的指纹。运用这个反向监护指纹表,监护中心103检查每个列表Xi,然后确定在这个列表中有多少指纹和反向监护指纹表(存在指纹数据结构137中)匹配。如果找到的匹配项超过特定的数量,将会对照Yi对Xi做一个详细的检查,以确定指纹的数量是否非常接近。如果步骤415没检测出有任何指纹匹配,那么将执行步骤419,以确定在前面的步骤411和412中是否定义了惩罚性的动作。如果是,则执行前面描述过的步骤420。
如果在步骤419中没有定义任何惩罚性的动作,则执行步骤421。这个步骤处理所有的被监护中心认为是按使用付费的标签TAG_INST_SWn。这就是说,监护中心103能在标记软件数据库138(图9)内维护在按使用计费基础上说明的全部软件实体111-114的列表。步骤421为这些标签(第一列)检查标签表210,在检查一个或多个按使用计费标签时,步骤421将会使监护中心传送说明信息(未表现)给软件销售商101关于那个按次计费或按使用计费的实体111-114。标签表210的标签条目的RUN COUNT或USETIME字段可被用来确定按使用计费数据。如果一个按使用计费标签期满终止,在标签表210的软件实体的标签TAG_INST_SWn的USAGE_STATUS字段将被设为″GC_DISABLED″。这可通过对该标签的一个禁止动作(DISABLE ACTION)DISABLE(TAG_INST_SW)来实现。这个禁止动作可与延续信息212合成,可以很快执行。
在步骤421中的按使用计费的过程结束后,步骤422为每一个完全验证和未到期的标签TAG_INST_SW在标签表210中创建一个延续动作CONTINUE(TAG_INST_SW)。这个延续动作将与延续信息(CM)212合成。
步骤423中,验证程序315将准备一个延续信息CM212返回给用户设备104。这个延续信息包括一些字段。其中,TIME字段取自时钟304,可指明当前的时间,字段ID_TAG_TABLE可指明在呼叫过程中执行步骤410时,最初送到监护中心103的标签表210的唯一的标识信息,同时还有在呼叫HASH(EVENT_HISTORY)的时候产生的事件历史的编码。ACTIONS字段包括一系列动作ACTIONS=(ACTION1,ACTION2,….ACTIONN),这些动作是从为一个特定用户设备的104监控程序SP209提供的一系列动作中选择出来的。哈希函数值也包含在内并在动作HASH(ACTIONS)中计算。最后,还将包含一个延续信息212中全部内容的数字签名值,以确保延续信息212没有被网络100上的一个站点或主机假装以监护中心103的名义仿造。这个签名的值以下列方式出现SIGN_GC(TIME,ID_TAG_TABLE,HASH(ACTIONS),HASH(EVENT_HISTORY))一旦延续信息CM212的所有字段都完成后,验证程序315将安全地发送或传输延续信息CM212给步骤410中发起呼叫的用户设备104的监控程序SP209。在一个实施方案中,呼叫可用一个由设备提供的公共密钥。如果盗版建立两个有相同密钥的设备,根据本发明的实施方案,只有具有正确事件历史的一个设备可以继续延续信息CM212。
最后,在步骤425中,监护中心103将创建一个与呼叫过程相关的呼叫记录CALL-UP_RECORDn。监护中心103给与这个TAG_INST_SW相关的标签数据结构320(图10)的呼叫记录CALL-UP_RECORDn附加一个引用。引用是一个内存指针或是CALL-UP_RECORD唯一的标识符。呼叫记录的内容见上面有关图10的讨论。
下面,关于这一发明的有效性方面的一个例子将着重说明它的一些特征。例如,假设一个用户213购买了一年的软件实体111-114的使用权,一年后到期了,用户213没有重续使用权。因为用户213没有重续使用权,软件销售商101决定禁止用户213不再持有使用权的软件实体111-114。运用这个发明,销售商101能简单地在与软件实体111-114相关的监护中心103设置策略POLICY(TAG_INST_SW),禁止下次实体从安装了实体111-114的用户设备104的对监护中心的呼叫。用这种方式,动态用法监控不要求用户213交回他自己的软件实体111-114。如果用户213后来重新获得了使用权,销售商101只需在监护中心103改变规则POLICY(TAG_INST_SW),下一次的呼叫将会用该软件实体的一个″CONTINUED″状态标签TAG_INST_SW更新用户设备104上的标签表210。
延续信息CM212的各种不同的组件是由监护中心GC103准备的。上面提到的合并入CM212的数字签名在本发明的实施方案有多种用途。延续信息CM212指明接收用户设备的104监控程序209在设备的标签表中如何去更新USAGE STATUS列和去颁布那个惩罚性动作(如果有的话)。为了成功地完成要求的呼叫过程,确定哈希函数和CM212(图13B,423)中的其他值事实上使不诚实用户213去使用任何延续信息CM212成为不可能,由监护中心103为响应当前从用户设备(也就是104-107中的一个)来的呼叫而产生的除外。而且,对方代理或主机不会造成如通过送一个不合逻辑的CM212给设备104如104,来拒绝对用户设备104的服务。
正如上面描述的优选实施方案所提到的,本发明提供一个检测,控制,和监控软件实体用法的机制,这些软件实体,被创建并从软件销售商101分销出去,被盗版和非法销售出去,并试图从用户设备104访问。通过提供一个唯一识别每个软件实体111-114的不易遗忘的,可信的标签TAG_INST_SW,用法监控才得以实现。在优选的实施方案中,相同地址指纹法是用来验证TAG_INST_SW是否正确地与软件实体INST_SW相关。
指纹法也可用于些微不同的用途中。其中一个用途就是去检查操作系统207的文本的完整性。这个可以通过以前提过的指纹法过程,用一个程序的一部分或另一个程序来检查程序的另一部分。这样做可以阻止损坏监控程序209或操作系统207。在另一个实施方案中,一个外部的硬件设备比如电子可编程只读内存能够在机器或设备104-107加电时执行检查。在两种情况下,检查程序都在操作系统程序207的一部分上面计算提到的哈希指纹。例如,当它发现有不匹配的指纹,将会使设备停止工作。指纹法还可以被操作系统207用于检查监控程序209的文本。反过来,监控程序209可用事件历史的哈希做验证和真实性检查。
这个操作如下监控程序209能运用像MD5这样的增加的哈希(hash)函数方法在每次更新之后更新数据标签表210的哈希。在用一个新事件定期更新标签表210之前,监控程序209能验证它的哈希函数值与标签表中的哈希是否相等。如果有些检查出来不相等,监控程序209或操作系统207将采取惩罚性动作。用这种方法,本发明的各方面可用于检测设备和自己解决软件干扰。
指纹法可进一步用来验证向标签服务器102的软件实体111-114的标签120提交请求的特定销售商的软件,不是非法的拷贝或从合法销售商的软件SW处的拷贝。如果这么做是可行的,那么将允许盗版销售商销售另一个合法销售商的软件SW,这时关联的标签服务器可产生可信的标签120。通过对最新研制开发的软件指纹法和运用一般地址指纹法来对照现有软件比较新软件,查看最新提交的销售商的软件是否与合法销售商软件SW相似,本发明可杜绝这种盗版的可能性。
软件实体111-114可在它们安装或初次使用时检查标签。标签也可在以后检查(如通过哈希函数,特征图,或呼叫过程)。允许软件在初次使用后检查的原因是软件可能太大,在初次使用后检查比初次安装时检查系统开销要少。
失败后,设备的状态将不得不恢复以前的状态。这种情况下,用户213必须与监护中心103取得联系以告知需传送原来的HEADER_TAG_TABLE。对此特权的可疑的运用可被监护中心103很容易地跟踪。
图14显示由本发明可选实施方案使用的数据结构,此可选实施方案可消除监护中心呼叫软件产生共享数据文件的需要。字处理程序就是一个例子。熟人经常互相交换字处理文件和字处理软件。很典型,第一种情况是允许的,但互换应用软件是不允许的。为阻止这样的盗版,本发明的一个实施方案可改写与那个程序相关的TAG_INST_SW120来改变软件应用程序,同时,还有ID_TAG_TABLE,和上次访问每个共享文件的不可视地址的时间,如图14中的数据结构600所示。程序也可改写TAG_INST_SW和上次访问TAG_TABLE_601的时间,也如此图所示。
数据结构600存储在一个共享软件数据文件(例如一个文本文件,在这里指SSD)的不可视地址(就是说,对于用户来说是不可视的),它可放置于共享软件数据SSD文件的一个注释区域,能与哈希函数(更适宜使用三个自变量TAG_INST_SW,ID_TAG_TABLE,上次存取600的时间)共用。
图15列出上面提到的本发明实施方案的步骤,记录了软件侵权保护机制。在图15的步骤700中,当有一个ID_TAG_TABLE X的第一台用户设备(例如用户设备104)上的监控程序SP209检测到有人要访问一个共享软件数据SSD,监控程序209将检查共享软件数据SSD,并在共享软件数据SSD内的一个预先确定的单元记录下共享软件数据SSD被持有TAG_INST_SW T的软件实体(例如111-114之一)在一个特定的时间访问。然后,在步骤701,当一个软件实体(可能在另一个机器上或另一个用户设备上,例如105)试图执行或访问共享软件数据文件SSD,在用户设备105上的监控程序209检测到在共享软件数据文件SSD中数据结构600的存在,从SSD获得标签T,并检查用户设备105(设备得到共享文件,但文件SSD正在创建的设备不是必须的)上的标签表210,目的是看标签表210中是否有标签T。如果没有,那么去访问共享软件数据SSD的第二个设备105(得到共享数据的设备)使用的软件实体没有被拷贝,因此,允许访问继续步骤703。
反之,如果在步骤701,共享软件数据SSD范围内存储的数据结构600中确实存在标签T,那么执行步骤702。在步骤702,第二个设备105上的监控程序209将检验与标签T相关的软件实体(例如,第二个设备105上的实体111-114中之一)是否在嵌在SSD中的数据结构600指定的时间写共享软件数据文件。如果不是,就发生盗版了。监控程序209将在步骤704对第二个用户设备上执行惩罚性动作。如果在步骤702,确定第二个设备105的当前的软件实体111-114,确实根据嵌在SSD中的数据结构600指定的信息存取共享软件数据SSD,那么将执行步骤703。在此步骤将被允许存取共享软件数据。注意,此实施方案非常有优越性,它不需监护监护中心呼叫,可能在起购买或安装软件实体111-114时,或为检测侵权软件。
在本发明的另一个实施方案中,相同软件的不同软件实体依据设备标识符而不同。这种实施方案的优越性是可减少与监护中心的必须的交流,不利因素是每个软件实体必须不同(这与仅标签不同相反),且不能从一设备移到另一设备。在这个实施方案中,设备标识符是从一个处理器标识符构建来的,如果有的话(有些处理器如INTEL公司制造的P3有处理器标识符)。或者,设备标识符更适宜从监控程序标识符来,可以与上面提到的处理器标识符合并使用。每个软件实体在软件实体的代码中与在测试中使用该软件实体的设备的标识符合并。这个测试可用C语言表示为″如果语句(ifstatement)″。本测试将被合并的标识符与设备标识符比较。通过运行软件来执行本测试。如果比较成功,设备可用此软件实体,如果比较失败,设备就不能用此软件实体,然后通知监控程序实施惩罚性动作。一个可能的盗版者可能修改监控程序以使它不检查设备标识符。这与标记软件看似未标记的盗版类似。设备测试已被修改或被移走的软件可以由图13A中描述的指纹机制检测,从图13A的步骤414开始。
本实施方案的一个变体是由销售商传送给设备标识符和与设备标识符合并的软件实体的哈希(hash)的数字签名。
如下所示SIGN_VENDOR(HASH_INST_SW),Where HASH_INST_SW=HASH(SW,DEVICE_INENTIFIER)在此,SIGN_VENDOR是销售商的数字签名,HASH_INST_SW是由软件的内容(所有实体均不同)加上被合并的DEVICE_INENTIFIER计算而来。与设备标识符合并的软件实体最好将标识符置于软件内容的起始位置或结束位置以使哈希过程更为经济。第二个测试是验证数字签名SIGN_VENDOR是否可信。第三个测试是验证送来的HASH_INST_SW与软件过程执行哈希后的结果是否相等。两个测试均由用户设备上的监控程序执行。如果数字签名既不可信,HASH_INST_SW与软件过程执行哈希后的结果也不相等,那么,监控程序将采取惩罚性动作。
在如上的描述中,标签服务器102,监护中心103和销售商101都是分别描述的。可选实施方案中,这些角色可统一起来。例如,一个单独的站点,或网络中的主机或服务器可同时作为监护中心103和标签服务器102。软件销售商101也可同时承担这三个角色。另外,即使每个过程或角色是分开的,在上面的实施方案中,分布在一个成员(如标签服务器,监护中心,销售商)上的一些功能可由其他成员来执行。例如,相同地址指纹法过程可被销售商101而不是标签服务器102来执行。
尽管本发明是由这里引用的优选的实施方案来特定表现或描述的,本领域的技术人员完全可以理解在不违背附加权利要求定义的本发明的精神和范围的情况下可能出现的形式和细节方面的各种改变。
权利要求
1.一个监控软件使用的系统,包括软件代理商生产软件实体;标签服务器产生多个标签,一个标签对应一个软件实体,每个标签唯一地标识与此标签相关的软件实体;并且用户设备接收和安装软件实体并且安全地接收与软件实体唯一相关的标签,该用户设备包括监控程序,监控程序检测使用软件实体的企图并且在允许使用软件实体之前验证与软件实体相关标签的真实性。
2.根据权利要求1所述的系统,其中用户设备上的监控程序验证标签的真实性并且把标签维护在标签表中而且如果标签是真实的则维护软件实体并且如果与软件相关的标签不真实则拒绝软件实体。
3.根据权利要求2所述的系统,其中监控程序验证标签里的哈希函数值来判定标签是否真实并且是与软件实体合理相关。
4.根据权利要求2所述的系统,其中标签是被数字签名而且监控程序通过验证标签的数字签名来验证标签的真实性。
5.根据权利要求1所述的系统,其中由标签服务器创建的许多标签中的每一个都包括至少一个软件名称,软件实体的唯一编号和软件实体部分内容上的哈希函数值。
6.根据权利要求5所述的系统,其中软件实体的唯一编号选自于稀疏数组里的数字。
7.根据权利要求5所述的系统,每个标签进一步包括监控程序的唯一标识符。
8.根据权利要求7所述的系统,其中监控程序验证在标签里的监控程序的唯一标识符与用户设备上的监控程序的标识符是相同。
9.根据权利要求1所述的系统,其中每个标签包括至少一个与该标签相关的软件实体的部分内容计算出来的指纹。
10.根据权利要求9所述的系统,其中监控程序对照至少一个包括在与软件实体相关的标签里的指纹验证与标签相关的软件实体满足相同地址指纹检查。
11.根据权利要求10所述的系统,其中在至少一次软件实体的使用之前、使用当中以及使用之后监控程序执行相同地址指纹检查。
12.根据权利要求9所述的系统,其中每一个标签进一步包括至少一个地址列表,至少一个指纹是由这些地址所包含的值计算得到的而且监控程序对照在至少一个地址列表所指定的地址的与软件相关的指纹验证与每一个标签相关的软件实体满足相同地址指纹检查。
13.根据权利要求1所述的系统,其中无论何时软件实体存取任何一种数据文件,与软件实体相关的执行存取的信息被存储在与数据文件相关的位置。
14.根据权利要求13所述的系统,其中与软件实体相关的信息是与软件实体相关的标签。
15.根据权利要求13所述的系统,其中与软件实体相关的信息是由软件实体执行的修改时间。
16.根据权利要求13所述的系统,其中与软件实体相关的执行存取的信息被记录在监控程序单独可以存取的安全位置。
17.根据权利要求16所述的系统,其中监控程序可以验证当软件实体企图存取数据文件,该数据文件具有存储在与那个数据文件相关的位置的关联信息,监控程序验证存储的关联信息是与目前企图存取相关的信息。
18.根据权利要求16所述的系统,其中监控程序使用无别名的哈希函数验证存储在与当前存取正在进行的数据文件相关的位置里的关联信息。
19.根据权利要求1所述的系统,近一步包括监控中心包括标记的软件数据库;和验证程序;监护中心定期与用户设备相联系是通过呼叫过程从用户设备接收标签,所述的与用户设备上使用的标记软件的实体相关的标签,验证程序对照标记的软件数据库检查每个从用户设备上接收到的标签确保标签符合至少一个用法监控规则,并且验证程序给用户设备返回延续消息,延续消息指示与每个标签相关的在用户设备上的软件实体跟随的动作;并且,在用户设备上的监控程序验证延续消息的真实性,如果是真实的,执行延续消息里指定的跟随活动。
20.根据权利要求19所述的系统,其中至少一个软件代理商,标签服务器和监护中心与另外的至少一个软件代理商,标签服务器和监护中心相结合。
21.根据权利要求19所述的系统,其中连续呼叫过程当中之间的最大允许的时间间隔是由在用户设备上的占用时间、使用软件实体的次数和间隔,用户设备加电的次数,以及用户设备的使用措施的组合中的至少一个决定的。
22.根据权利要求21所述的系统,其中当用户设备不能和监护中心执行呼叫过程时,自从上一此呼叫过程在最大允许间隔结束之前,用户设备被禁止一段时间。
23.根据权利要求21所述的系统,其中当用户设备和监护中心之间自从上一此呼叫过程以来在最大允许间隔结束之前不能执行呼叫过程时,某些软件实体被拒绝一段时间。
24.根据权利要求19所述的系统,其中当软件实体在用户设备中第一次被使用时呼叫发生。
25.根据权利要求19所述的系统,其中由于监控中心的请求而发生呼叫。
26.根据权利要求19所述的系统,其中监控程序测试延续消息的身份真实性是通过验证在延续消息中的标签表的哈希函数值是和来自用户设备呼叫消息里的标签表的哈希函数值相同。
27.根据权利要求26所述的系统,其中延续消息的身份真实性测试是由监控程序通过验证延续消息里的数字签名是由监护中心所产生的来完成的。
28.根据权利要求19所述的系统,其中在给监护中心的呼叫消息之后没有接收到延续消息的用户设备重新发送呼叫消息命令取消先前的呼叫消息。
29.根据权利要求19所述的系统,其中至少一个用法监控规则与至少一个单个软件实体相关,该软件实体与至少一个标签相关。
30.根据权利要求19所述的系统,其中至少一个用法监控规则与全部用户设备相关,监护中心和该用户设备在呼叫过程中通信。
31.根据权利要求19所述的系统,其中至少一个用法监控规则与用户设备的单个用户相关,监护中心与该用户设备在呼叫过程中通信。
32.根据权利要求19所述的系统,其中至少一个用法监控规则与用法监控历史相关,监护中心与该用户设备在呼叫过程中通信。
33.根据权利要求19所述的系统,监护中心为每个用户设备上的与每个软件实体相关的每个标签在标记的软件数据库里维护标签数据结构。
34.根据权利要求33所述的系统,其中每个标签数据结构包括软件实体标签,与软件实体相关的用法监控规则和呼叫记录的引用集合。
35.根据权利要求34所述的系统,其中呼叫记录集合里的每个呼叫记录代表涉及一个呼叫过程的信息并且与呼叫过程相关的延续消息包括至少一个呼叫时间,呼叫过程中传送给监护中心的标签表表头,指示上一次呼叫过程时间戳的最后呼叫时间,呼叫过程当中传送给监护中心的标签表的哈希函数值,以及用户设备上需要执行的动作。
36.根据权利要求1所述的系统,其中进一步包含监护中心包括验证程序;该监护中心定期联络用户设备,经由呼叫过程从用户设备接收关于用户设备的监控程序的唯一标识符,验证程序检查此唯一标识符以确保最多一个监控秩序有此标识符,验证程序返回一个延续信息给用户设备,延续信息根据与用户设备上的每个标签相关的软件实体的使用企图指示需要执行的动作,用户设备的监控程序验证延续信息的真实性,如果具有真实性,执行延续信息中的的动作。
37.根据权利要求36所述的系统,其中监控程序标识符是在该监控程序第一次被激活时基于不会重复的数字产生的。
38.根据权利要求37所述的系统,其中不会重复的数字是当监控程序在机器上第一次被激活时的发生的非常精确的时间值。
39.根据权利要求37所述的系统,其中不会重复的事件是由监护中心提供的数字。
40.根据权利要求1所述的系统的进一步包含在用户设备上使用的没有标记的软件实体;其中监控程序检测未标记的软件实体的使用而且在未标记的软件实体上执行指纹法处理并将指纹处理得到的指纹储存在用户设备里。
41.根据权利要求40所述的系统,其中用户设备的监控程序进一步在设备上使用的未标记的软件实体上执行指纹处理并且将指纹处理得到的指纹储存在用户设备的指纹表里。
42.根据权利要求41所述的系统,其中监控程序储存指纹被计算的地址。
43.根据权利要求41所述的系统,其中指纹是基于软件实体的内容。
44.根据权利要求41所述的系统,其中指纹是基于软件实体行为的已知序列。
45.根据权利要求41所述的系统的进一步构成包含指纹数据结构和验证程序的监护中心;该监护中心定期联络用户设备,经由呼叫过程接收来自于用户设备的有关该用户设备上的软件实体的所有指纹。验证程序比较每一个来自用户设备的指纹对照指纹数据结构来以判定用户设备上使用的软件实体是否是侵权的软件实体。
46.根据权利要求45所述的系统,其中如果验证程序检测到在监护中心的指纹数据结构里的指纹和来自用户设备的指纹之间具有多于指定数目的匹配,验证程序指定要执行的惩罚性动作。验证程序给用户设备返回延续消息,该消息指示在用户设备上要执行的惩罚性动作。
47.根据权利要求46所述的系统,其中指纹匹配处理过程至少是通用地址或相同地址指纹处理中的一个匹配过程。
48.根据权利要求46所述的系统,其中指纹匹配使用一个转化的监控中心指纹表。
49.根据权利要求46所述的系统,其中惩罚性动作指定用户设备在指定的一段时间内不能工作。
50.根据权利要求46所述的系统,其中惩罚性动作指定与监护中心的指纹数据结构中的指纹相匹配的指纹相关的软件实体在指定的一段时间内不能工作。
51.根据权利要求46所述的系统,其中惩罚性动作取决于用户设备行为的历史记录,用户设备特定用户的行为历史记录,以及用户设备上的其它软件集合的至少一种结合方式。
52.根据权利要求45所述的系统,其中软件代理商给监护中心传送侵权软件实体的拷贝,监护中心在这个侵权软件实体的拷贝上计算指纹并把这些指纹存储在监护中心的指纹数据结构里。
53.一种在用户设备只读介质上经过编码的标签表数据结构,该标签表数据结构包括至少一个与软件实体唯一相关的标签并且包括至少一个与标签表中的标签相关的字段,还包括至少一个指示与软件实体相关标签的相关用法状态字段。
54.根据权利要求53所述的标签表数据结构,其中有至少一个字段指示为与此标签相关的这一个软件实体的使用统计。
55.根据权利要求53所述的标签表数据结构,进一步包括唯一标识此标签表的标签表头。
56.根据权利要求53所述的标签表数据结构,其中标签表头包括信息涉及用户设备使用统计并且包括延续消息。
57.软件代理商包括制作软件实体的软件制造机制,每一个软件实体具有至少一个名称和软件内容;每个软件实体只有在与唯一标识该软件实体的标签的协力下才能够被使用,该标签是唯一的不被伪造的信息集合,它涉及关联标签的软件实体并包括至少一个软件名称,一个软件实体的唯一编号和部分软件内容上的哈希函数值。
58.根据权利要求57所述的软件代理商,其中标签包含与软件实体在其上使用的用户设备相关的监控程序标识符。
59.根据权利要求57所述的软件代理商,其中标签包括标签与其相关的软件实体部分内容的指纹列表。
60.根据权利要求57所述的软件代理商,进一步包含侵权软件检测机制检测侵犯代理商权利的软件并将侵权软件的拷贝传送给监护中心,这样可以实现用法监控来检测用户设备上侵权软件实体的使用企图。
61.根据权利要求60所述的软件代理商,进一步包括侵权软件检测机制检测侵犯代理商权利的软件并将侵权软件的拷贝传送给监护中心,监护中心使与侵权软件有关的任何标签无效并发送惩罚性动作给由该监护中心检测到已经使用过侵权软件实体的任何用户设备。
62.一种用户设备包括输入端口接收软件实体并接收与该软件实体唯一相关的标签而且接收使用该软件实体的请求;处理器执行监控程序,监控程序检测软件实体的使用请求并在允许用户设备使用该软件实体之前验证与该软件实体相关的标签的真实性。
63.根据权利要求62所述的用户设备,其中监控程序验证标签的真实性并将标签存储在标签表中,而且维护软件实体如果标签是真实的否则拒绝软件实体如果与该软件相关的标签是不真实的。
64.根据权利要求63所述的用户设备,其中监控程序在软件实体上计算哈希函数值并比较计算的值和标签里的哈希函数值来判定标签是真实的并且是和软件实体合理相关的。
65.根据权利要求63所述的用户设备,其中标签是经过数字签名的并且监控程序通过验证标签的数字签名来验证标签的真实性。
66.根据权利要求63所述的用户设备,其中标签表是存储在用户设备上存储器中的数据结构并且它包括至少一个与软件实体唯一相关的标签和至少一个与标签表里的标签相关的字段,至少一个指示与该标签相关的软件实体用法状态的字段。
67.根据权利要求62所述的用户设备,其中监控程序根据呼叫规则的定义判定需要呼叫过程并且监控程序执行呼叫过程来更新存储在标签表里的标签的用法状态。
68.根据权利要求62所述的用户设备,其中监控程序验证每一个标记的软件使用的数据文件是由合法的软件实体产生的。
69.根据权利要求67所述的用户设备,其中在呼叫过程执行中,监控程序经由耦合在用户设备上的互连机制安全传送来自用户设备的标签表并等待接收返回给此用户设备的延续消息,延续消息指示为标签表里的每一个标签要执行的动作。
70.根据权利要求67所述的用户设备,其中在呼叫过程执行中,监控程序经由耦合在用户设备上的互连机制安全传送来自用户设备的标签表头并等待接收返回给此用户设备的延续消息,延续消息指示为标签表里的每一个标签要执行的动作。
71.根据权利要求62所述的用户设备进一步包括在用户设备上使用的未标记的软件实体;其中监控程序检测未标记的软件实体并在此未标记的软件实体之上执行指纹处理,将指纹处理得到的指纹存储在用户设备的指纹表中。
72.根据权利要求71所述用户设备,其中监控程序根据呼叫规则的定义判定需要呼叫过程并且监控程序执行呼叫过程来更新存储在用户设备上的未标记软件实体的用法状态。
73.根据权利要求72所述的用户设备,其中在呼叫过程执行中,监控程序经由耦合在用户设备上的互连机制安全传送来自用户设备的部分指纹表并等待接收返回给此用户设备的延续消息,延续消息指示为存储在用户设备上的每一个未标记的软件实体要执行的动作。
74.监护中心包括标记的软件数据;和在监护中心处理器上执行的验证程序;监控中心经由互连机制定期执行呼叫过程来接收软件实体的标签,验证程序对照维护在监护中心上的标记的软件数据库检查每一个接收到的标签确保这些标签符合至少一个用法监控规则,并且验证程序通过互连机制传送延续消息来指示在与呼叫过程当中监护中心收到的每一个标签相关的软件实体的使用企图之上要执行的动作。
75.根据权利要求74所述的监护中心,其中至少有一个用法监控规则是和软件的每一个实体相关的,至少有一个标签是和该软件实体相关的。
76.根据权利要求74所述的监护中心,其中至少有一个用法监控规则是和用户设备相关的,监护中心和该用户设备通信来接收标签。
77.根据权利要求74所述的监护中心,其中至少有一个用法监控规则是和用户设备的单个用户相关的,监护中心和该用户通信来接收标签。
78.根据权利要求74所述的监护中心,其中监护中心为每个与用户设备上的每个软件实体相关的标签在标记的软件数据库里维护标签数据结构,接收来自标签服务器的新创建的与软件实体相关的标签,还进一步接收与用户设备上使用的软件实体相关的来自用户设备的标签表里的标签。
79.根据权利要求78所述的监护中心,其中每个标签数据结构包括至少一个软件实体的标签,软件实体的名称,软件实体的唯一编号,软件实体上的哈希函数值,与软件实体相关的用法监控规则,和与所述软件实体相关的标签的相关的呼叫记录的引用集合。
80.根据权利要求79所述的监护中心,其中呼叫记录集合里的每一个呼叫记录代表信息涉及一个呼叫过程,包括至少一个呼叫时间,在呼叫过程当中传送给监护中心的标签表的表头,指示前一次呼叫过程的时间戳的最后呼叫时间,在呼叫过程当中传送给监护中心的标签表的哈希函数值,以及在用户设备上要执行的包含在与该呼叫过程相关的延续消息里的动作。
81.监护中心包括指纹数据结构;和执行验证程序的处理器;验证程序定期执行呼叫过程由用户设备通过互连机制接收用户设备上使用的软件实体的指纹,验证程序对照指纹数据结构检查每个接收到的指纹来判定用户设备上使用的未标记的软件实体是否是软件的侵权实体,如果是,验证程序准备在用户设备上要执行的惩罚性动作。
82.根据权利要求81所述的监护中心,其中所有代理商的软件被进行过指纹处理,基于至少一个相同地址或通用地址指纹检查的方法来检测一个代理商的软件对另外一个代理商的软件的侵犯。
83.根据权利要求81所述的监护中心,其中如果验证程序检测到在指纹数据结构里的指纹和接收到的指纹之间存在足够多数目的匹配,验证程序指定要执行的惩罚性动作,验证程序传送延续消息,延续消息指示在延续消息的接收者一方要执行的惩罚性动作。
84.根据权利要求83所述的监护中心,其中足够多数目是1。
85.根据权利要求83所述的监护中心,其中足够多数目大于1。
86.根据权利要求85所述的监护中心,其中足够多数目被作为匹配的加权总和来计算,在此,每个匹配的权值由匹配的指纹决定。
87.根据权利要求83所述的监护中心,其中指纹匹配技术通用地址指纹检查。
88.根据权利要求83所述的监护中心,其中惩罚性动作指定接收者的禁止。
89.根据权利要求83所述监护中心,其中惩罚性动作指定软件实体应该被禁止,该软件实体与指纹数据结构里的指纹相匹配的指纹相关。
90.根据权利要求81所述监护中心,其中验证程序通过互连机制接收侵权软件实体的拷贝并且在这个未标记的侵权软件实体的拷贝上计算指纹,组合指纹并将它们存储在指纹数据结构里。
91.一种标签服务器,接收指定代理商软件的拷贝并且产生许多标签,一个标签对应一个软件实体,每个标签唯一标识该标签关联的软件实体,每个标签包含至少一个与该标签相关的软件名称,与此标签相关的唯一编号,以及在与此标签相关的部分软件实体上计算的哈希函数值。
92.根据权利要求91所述标签服务器,进一步包括一个数字签名机制,被用于数字签名标签和安全传送标签给有意的接受者。
93.一种监控软件用法的方法,包括以下步骤创建一个软件实体;创建与软件实体唯一相关的标签;分发软件实体并安全分发标签给用户设备并接收软件实体和用户设备上的相关标签;检测用户设备上软件实体的使用企图;通过判定与将要使用的软件实体相关的标签的状态来决定使用软件实体是否是允许的。
94.根据权利要求93所述方法,其中创建标签的步骤包括分配唯一编号给软件实体;计算软件实体部分内容的第一个哈希函数值;计算软件实体第二个哈希函数值,第二个哈希函数值结合软件名称,软件实体唯一编号和第一个哈希函数值;计算与软件实体唯一相关的标签,标签包括软件名称,软件实体唯一编号第二个哈希函数值。
95.根据权利要求94所述方法,其中计算标签的步骤通过应用数字签名函数到第二个哈希函数值来产生签名并把此签名包括在标签中创建一个数字签名的标签。
96.根据权利要求93所述方法,其中分发标签给用户设备的步骤包括使用公共加密技术安全地分发标签给软件代理商和用户设备。
97.根据权利要求93所述方法,其中接收该软件实体包括以下步骤在用户设备上获得软件实体;其中在用户设备上接收标签的步骤包括安全地在用户设备上获得与软件实体相关的标签;判定与软件实体相关的标签是否被签名,如果是,验证标签里的哈希函数值上验证的签名,如果在此哈希函数值上的签名验证通过,在用户设备上安装软件,如果与该软件实体相关的标签没有签名,在用户设备上安装软件实体。
98.根据权利要求93所述方法,其中检测在用户设备上有使用软件实体的企图的步骤激活用户设备上的监控程序来截获用户使用该软件实体的请求;其中判定是否批准使用该软件实体的企图的步骤包括根据呼叫规则判定是否需要呼叫过程,如果是则执行以下三个步骤执行呼叫过程验证真实性并判定与软件实体相关的标签的用法监控规则;基于呼叫的结果在用户设备上更新标签信息;检查与标签相关的状态信息来判定是否允许使用与与标签相关的软件实体。
99.根据权利要求98所述方法,其中执行呼叫过程的步骤包括从用户设备上传送储存与软件实体相关的标签的标签表;等待接收返回给用户设备的延续消息,此消息为标签表里的每一个标签指示要执行的动作。
100.根据权利要求98所述方法,进一步包括验证延续信息被指向此设备并且历史记录与此设备上的历史记录相符合。
101.根据权利要求98所述方法,其中执行呼叫过程的步骤为接收包括与软件实体相关的标签的标签表,对照标记的软件数据库检查标签表里接收到的标签以确保标签表里的标签符合至少一个用法规则;在检测到与每个标签相关的软件实体的使用企图时传送延续消息,该消息指示用户设备要执行的动作。
102.根据权利要求101所述方法,其中延续消息包括接收延续消息的监控程序的监控程序标识符;延续消息的准备时间;跟随设备呼叫的标签表头的编码信息。
103.一种监控软件使用的方法包括检测在用户设备上使用未标记的软件实体;创建并存储与用户设备上的未标记的软件实体相关的指纹;检测在用户设备上使用未标记的软件实体的企图;并且通过比较与未标记的软件实体相关的指纹和侵权指纹的指纹数据结构来判定软件实体的使用企图是否有效,如果发现有指纹匹配,则禁止使用未标记的软件实体。
104.根据权利要求103所述方法,进一步包含如下步骤检测在用户设备上使用标记的软件实体;创建并存储与用户设备上的标记的软件实体相关的指纹;检测在用户设备上使用标记的软件实体的企图;并且通过比较与标记的软件实体相关的指纹和侵权指纹的指纹数据结构来判定软件实体的使用企图是否有效,如果发现有指纹匹配,则禁止使用标记的软件实体。
105.根据权利要求103所述方法,进一步包含如下步骤通过软件代理商检测侵权软件;给监护中心提交此侵权软件的拷贝;并且在监护中心计算出此侵权软件的指纹,组合指纹并将指纹存储在指纹数据结构。
106.一种唯一标识软件实体的方法,包含如下步骤获得软件实体;给软件实体分配名称;为软件实体分配唯一编号,该唯一编号不同于分配给相同软件的其它实体的任何唯一编号;在软件实体的部分内容上计算哈希函数值;串联软件实体的名称,软件实体的编号以及第一个计算出的哈希函数值计算第二个哈希函数值来产生未签名的哈希函数值,该值对软件实体是唯一的;使用密钥给未签过名的哈希函数值进行签名,为软件实体产生签名的哈希函数值;并且创建与此软件实体相关的唯一标识该软件实体的标签,这个标签包括软件实体的签名的哈希值,软件实体的名称,软件实体的编号,以及软件实体的未签名的哈希值。
107.根据权利要求106所述方法,其中获得软件实体和给软件实体分配名称的步骤由软件代理商执行,给软件实体分配唯一编号,计算第一个和第二个哈希函数值,给第二个哈希值签名,以及创建标签是由标签服务器执行的。
108.一种由指令编码的计算机只读介质,在处理器读或运行这些指令的时候执行以下步骤检测使用软件实体的请求;判定与软件实体相应的标签是否具有允许使用此软件实体相关状态;并且定期执行呼叫过程验证标签的真实性并确保与标签相应的软件实体的使用符合用法监控规则。
109.一种在通信介质上通过载体传送的繁衍信号,该信号携带编码过的标签表数据结构,此标签表数据结构包括至少一个与一个软件实体唯一相关的标签,还包括至少一个与标签表里的标签相关的字段,至少一个指示与此标签相关的一个软件实体的使用控制状态。
110.一种在通信介质上通过载体传送的繁衍信号,该信号携带编码过延续消息,此延续消息包括指示此信号的接收方要执行的动作,动作执行的条件是在接收方检测到与这些动作相关的软件实体的使用企图。
111.一种确保软件程序未被更改过的方法,包括以下步骤在软件程序的内容上计算无别名的哈希函数值;比较无别名的哈希函数值的结果和先前保留的哈希值的结果来判定结果是否相同,由此指示软件程序是否已经被变更。
112.根据权利要求111所述方法,其中操作系统计算无别名哈希函数值而且软件程序就是监控程序。
113.一种确保数据未被更改的方法,该方法是通过在该数据上计算无别名的哈希函数值并将该值与以前计算出的函数值进行比较。
114.根据权利要求113所述方法,其中监控程序计算无别名的哈希函数值和它使用的数据。
115.根据权利要求19所述,其中在监护中心和用户设备之间的所有消息以安全方式传递。
116.根据权利要求115所述,其中安全方式包括公共密钥加密。
117.根据权利要求38所述的系统,其中无重复编号进一步是基于至少一个内存地址的值。
118.根据权利要求80所述监护中心,其中监护中心检验记录在延续消息里的来自设备的最后一次呼叫时间是否和记录在监护中心上的有关该设备的最近一次呼叫记录的呼叫时间相匹配。
119.一种监控软件用法的系统包含软件代理商生产软件实体;用户设备接收和安装软件实体,此用户设备包括监控程序,在此用户设备上使用未标记的软件实体;其中监控程序检测未标记的软件实体的使用,在未标记的软件实体上执行指纹处理,在此用户设备上存储指纹处理结果。
120.根据权利要求119所述的系统,其中用户设备的监控程序进一步在未标记的软件实体上执行指纹处理,把指纹处理结果存储在此用户设备上的指纹表里。
121.根据权利要求120所述的系统,其中监控程序存储指纹被计算的地址。
122.根据权利要求120所述的系统,其中指纹是基于软件实体的内容。
123.根据权利要求120所述的系统,其中指纹是基于软件实体的行为的已知序列。
124.根据权利要求120所述的系统,进一步包括监护中心包括指纹数据结构;和验证程序;监护中心定期通过呼叫过程和用户设备联系接收来自用户设备的有关在此用户设备上使用的软件实体的所有指纹,验证程序对照指纹数据结构比较每一个来自用户设备的指纹判定在用户设备上使用的软件实体是否是侵权的软件实体。
125.根据权利要求124所述的系统,其中如果验证程序检测到监护中心的指纹数据结构中的指纹和接收到的用户设备的指纹之间的匹配大于指定数目的匹配,验证程序指定要执行的惩罚性动作,并且验证程序给用户设备返回延续消息,延续消息在用户设备上要执行的惩罚性动作。
126.根据权利要求125所述的系统,其中指纹匹配过程至少是通用地址或相同地址的指纹匹配中的一个。
127.根据权利要求125所述的系统,其中指纹匹配使用倒置的监护中心指纹表。
128.根据权利要求125所述的系统,其中惩罚性动作指定用户设备在指定的时间段内不能被使用。
129.根据权利要求125所述的系统,其中惩罚性动作指定与监护中心指纹数据结构中的指纹相匹配的指纹相关的软件实体在指定的时间段内不能被使用。
130.根据权利要求125所述的系统,其中惩罚性动作取决于以下至少一种结合方式用户设备行为的历史记录,用户设备上的特定用户行为的历史记录,还有用户设备上其它软件的集合。
131.根据权利要求124所述的系统,其中软件代理商给监控中心传送侵权软件实体的拷贝,监控中心在这个侵权软件实体的拷贝上计算指纹,组合指纹并把指纹储存在监护中心的指纹数据结构中。
132.软件代理商包括软件生产机制制作至少一个在测试中组合设备标识符的软件实体,用户设备接收并安装软件实体,测试包含比较组合的标识符和设备标识符,软件实体在此设备上使用;如果组合标识符和设备标识符相等,那么允许使用软件实体,否则设备上的监控程序执行惩罚性动作。
133.根据权利要求132所述的软件代理商,其中软件代理商发送软件实体的哈希的数字签名并且第二个测试判定数字签名是否真实,第三个测试判定签名的值是否和软件实体的哈希相等,其中如果数字签名是不真实的或者签名的值不同于软件实体,那么设备上的监控程序执行惩罚性动作。
134.根据权利要求131所述软件代理商,其中设备标识符被组合在软件实体的内容的开头或结尾。
135.一种监控软件用法的方法,包括在测试里制作组合设备标识符的软件实体,测试包含比较组合的标识符和设备标识符,软件实体在此设备上使用;给用户设备分发软件实体;通过执行该测试判定使用软件实体的企图是否允许,如果组合的标识符和设备标识符相等则允许使用该软件实体,否则执行惩罚性动作。
136.根据权利要求135所述的方法,包括其它步骤发送软件实体的哈希的数字签名;判定数字签名是否真实;判定签名的值是否和软件实体的哈希相等,其中如果数字签名是不真实的或签名的值不同于软件实体,那么监控程序执行惩罚性动作。
137.根据权利要求135所述的方法,其中在软件实体的开头或结尾处放置设备标识符。
全文摘要
可以使软件的所有者和代理商保护其知识产权并且可以通过按次计费的方式收取费用的方法和设备。该系统为每一个软件的实体产生一个唯一的标签。通过使用这个标签,每一个用户设备上运行的监控程序保证了没有软件实体被侵权使用。当安装或使用软件实体时,监控程序检查相关联的标签并存储该标签。当安装或使用未被标记过的软件时,监控程序针对软件中的部分内容采集指纹并且存储该指纹。用户设备的监控程序定期呼叫监护中心,或被监护中心呼叫。监护中心通过比较当前的呼叫数据和历史呼叫纪录来检测软件的非法使用。监护中心通过允许或禁止被监视的软件实体的进一步使用来结束呼叫。
文档编号G06F1/00GK1361882SQ00809527
公开日2002年7月31日 申请日期2000年5月2日 优先权日1999年5月5日
发明者迈克尔·O·罗宾, 丹尼斯·E·莎莎 申请人:迈克尔·O·罗宾, 丹尼斯·E·莎莎
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1