保护信息及私人权利的方法和设备的制作方法

文档序号:6475309阅读:216来源:国知局
专利名称:保护信息及私人权利的方法和设备的制作方法
背景技术
软件盗版或信息盗用是在未取得软件或信息的发明者或合法拥有者的授权情况下对软件或信息的复制及使用活动。盗版现象在计算机软件应用行业中十分普遍,人们经常对应用软件进行未经许可的非法复制。软件可在熟人圈中复制,或者为了再生产和商业利益而复制。其他的盗版活动包括诸如复制音乐录音、电子版本的可读文件或电子书籍这样的行为。在所有的盗版情况中,每年给合法生意造成的利益损失数以十亿美元计。
软件和信息技术行业已经使用锁码方式来对付盗版造成的威胁。锁码方法中包括软件锁码机理、许可证以及专用的硬件装置,这些可防止对软件、信息或整个电子装置的非授权使用。这些方法目的在于防止对手能够自由地复制软件。
软件锁码的方式有多种类型。举例而言,生产者可使用专门与某一拷贝件相关的密码钥匙对软件程序拷贝件的部分进行加密。购买该软件的用户会获得相应的解码钥匙,这一钥匙可允许对这一软件进行解密和使用。保护软件的另一种方式是随购买的软件拷贝一起提供一份“授权证书”。该授权证书含有专门用于这一拷贝件的一组数码。在安装软件的拷贝件时,需要使用这一数码,用户必须正确地输入这一数码。如果输入的数码与要装程序所需的相一致,则该软件的拷贝件被认为是合法的,该软件拷贝件可以合法地进行安装和运行。如果输入的数码不正确,则软件不能进行正确的安装。然而,上述方法中没有一种可以完全保护软件不受非法的复制和使用。对于使用加密的方法而言,如果最初的购买者有意非法散布复制软件的话,该购买者只需将软件与解密钥匙一起输出即可。同样的是,软件的最初购买者通过将软件连同授权证书一起交于其他用户可以绕过授权证书所提供的保护作用。
防止盗版的方法经常利用到用户装置操作系统中的某些特性。因此,保护操作系统不被修改非常重要,对操作系统的修改会绕过保护作用。通过硬件方式可以确保操作系统不能加以修改。美国3,996,449号专利给出了一个保持操作系统完整性的硬件保护方式实例,该专利介绍了一种判定当一个程序或程序的某一部分在计算机上运行时是否是不可修改的方法。在该系统中,一个随机函数随同专用防破坏硬件检验装置中的该程序文本一起用于用户的标识码或钥匙。检验装置将随机函数所产生的值与校验值进行比较以验证该程序文本是否是正确的。如果该文本是正确的,则允许该程序在这一装置上运行。
使用硬件来防止盗版的方式必然会使装置与处理器发生联系,这一联系通常是通过用户装置的通讯端口实现的。这些类型的硬件装置经常被称为“软件锁”。保护方法可通过多种方式来使用软件锁。举例而言,软件可带有与软件相关的专用软件锁,该软件锁中储存有专门对应于这一软件的信息或数码。软件将定期地通过索取这一信息或数码来校验通讯端口是否存在软件锁。一个软件锁随一套软件一同售出。由于假定软件锁不能被复制,所以可运行的软件数量与售出的软件锁数量相同。在软件锁防止软件盗版的其他应用中,软件锁是一个附属处理器,该软件锁执行该用户不可访问的某些应用程序。再者,没有与用户装置相连的软件锁,该程序就不可能被执行。但通过软件锁进行的保护有诸多严重的缺陷。第一,对于每个受保护的程序用户都需要一个软件锁,并且需要在转换程序时连接及更换软件锁。第二,只有当软件锁是抗破坏以及破坏者接触不到软件锁内部的算法和数据时,软件锁才是有效的。在以往的许多情况中,狡猾的蓄意盗版者侵犯了这些规定。第三,在许多情况下,通过软件锁防盗版的软件被做了手脚,从而除去了对软件锁的查询并由此绕过了保护功能。最后,在未来的年代中,软件更多的是通过互联网下载到用户那里,但与软件相伴的物理装置,如软件锁是不可能被下载的,因此软件锁成为了软件销售的一个负担。
另一种与硬件相关的方法是给执行软件的每个处理器赋予一个专用的标识。为某一用户装置所购买的软件包括该装置处理器的标识。当用户的装置执行这一软件时,软件中所含的标识会与装置处理器中的标识进行比较。只有当这二个标识一致时,操作才可以执行。这种方法有诸多不便之处。盗版者或其非法的用户可用安装软件的处理器标识来替换原始的标识,这样可以对合法的软件进行改变,而在软件的基础版本中,却没有防止盗版者这样做的功能。此外,这种方法不可避免地将软件的拷贝件与用户的某一单一装置连接起来。这就使软件不可能改装到用户的另一装置上;例如,当用户对其计算机升级时,这种方法使用户不能将软件从原来的机器上挪到新机器上。最后,对用户的装置使用专一的处理器标识还招致了对用户私人权利受到侵害的严重担忧,因为用户所购软件使用同一数码进行识别,而对所购软件的监控有可能侵害用户的私人权利。
数字波纹标记是一种将不可见或不可听的识别数据放入某些类型存储信息中的一种技术,这些存储信息可从根本上对存储信息售予的用户进行识别。如果在别处发现相同的存储信息,则最初的购买者涉嫌参与盗版活动。
在理想情况下,波纹标记是持久不变的,如果不对存储信息进行降级,波纹标记是不能被移动或更改的。虽然这些技术有助于发现盗窃行为,但这些技术并不能防止存储信息被复制;所以这些方法需要合法的干涉以防止版权受到不断地侵犯。此外,对这样的系统也有许多攻击存在。
发明概述在本发明中提供了某种将第一软件模块与第二软件模块连接起来的方法。在第一软件模块中储存有一个公用钥匙。拥有者使用数字标注的公用钥匙的存根部分,这一存根部分与第二软件模块相连。第二软件模块计算出一个随机函数值,一旦使用所述的公用钥匙确认了存根部分上的数字特征以及确认计算出的随机函数值后,则第一软件模块与第二软件模块相连在一起。
第二软件模块是多个被连接软件模块中的一个,第一软件模块含有多个预先连接的软件模块。随机函数值的计算和校验可由一个专用的处理器执行。
此外,通过将第一随机函数值储存在第一软件模块中,并计算出第二软件模块某部分内容的第二随机函数值,一旦确认第二随机函数值与第一随机函数值相等,则将第一软件模块与第二软件模块连接起来。第二软件模块是多个被连接的软件模块之一。第一软件模块含有多个预先连接的软件模块。随机函数值的计算及校验可由专用的处理器执行。
在某一实施方案中,用户的装置含有第一存储模块和第二存储模块,软件模块储存在这二个存储模块之中。检验软件储存在第一存储模块中。检验软件通过计算软件模块某一部分的随机函数值,并将计算所得的随机函数值与存储在检验软件中的随机函数值进行比较来检验所述的软件模块是否是经过授权的。
通过软件工具很难对第一存储模块进行修改。用户的装置还可以在第一存储模块中含有一个公用钥匙以及另外一个检验软件;在第二存储模块中可含有与公用钥匙相衔接的具有数字特征的存根部分。具有数字特征的存根部分与第二软件模块相连。附加的检验软件计算出所述第二软件模块某一部分的随机函数值,并使用所述的公用钥匙检证具有数字特征的存根部分含有计算出的随机函数值的数字特征。
在另一实施方案中,用户装置包括第一存储模块。公用钥匙和检验软件存储在第一存储模块中。该用户装置还包括第二存储模块,软件模块存储于该第二存储模块中。检验软件对所述软件模块的某一部分计算一个随机函数值,并使用所述的公用钥匙确认与所述第二软件模块相连的具有数字特征的存根部分含有计算出的随机函数值的数字特征。用户装置在第一存储模块内还含有一个随机函数值。检验软件还通过计算第二软件模块某一部分的随机函数值并将计算出的随机函数值与存储在检验软件中的随机函数值进行比较来确认所述的第二软件模块的这一部分是否是经过授权批准的。
软件锁程序含有某一数值、某一计算函数以及通过对软件模块中的地址序列函数进行计算并将计算结果与这一数值进行比较来确认存储在内存中软件模块的工具。
该函数可以是随机函数,确认工具计算出地址序列的随机函数值并将计算结果与所存储的值进行比较。
软件锁程序含有监控操作以及根据比较结果执行所述监控操作的方法。监控操作可中断软件锁程序正在其上面运行的用户装置的操作。
软件锁程序可包括多个监控操作和工具,这些工具根据比较产生的结果来执行至少一项监控操作。
软件锁程序可包括执行必备检验测试的工具以及根据必备检验测试的结果来确定是否执行软件模块中地址序列函数的工具。
软件锁程序可包括多个地址序列、多个存储值、多个监控操作以及工具;这些工具根据多个地址序列函数计算结果与存储值的比较结果来执行至少一种监控操作。软件锁程序还包括多个内存地址、选择软件模块的工具以及将所述软件模块的执行开始时间以及执行结束时间储存在所述内存地址的工具。
软件锁程序可以是存储在另一程序内监控区中的子程序。这一子程序根据所述的另一程序被加载时的条件而被放置在某一地址监控区内。在所述子程序加载之后,所述子程序的地址发生改变。这一子程序的调用地址根据所述另一程序被加载时的条件而定。在所述子程序加载之后,该子程序的调用地址发生变化。监控操作包括在监控区内移动其他监控了程序。
标识表含有标识表标志、某一软件拷贝的标识以及具有数字特征的信息;其中标识表标志带有某一数值。软件拷贝标识包含所述标识表的标识值、所述软件拷贝某一部分的随机函数值以及由标识表标识值和随机函数值构成的数字特征信息。该标识还包括使用规定,所述的数字特征信息也包括使用规定。该标识还包括名称,所述的数字特征信息也包括名称。标识表还包括中央防护单元在以前呼叫中所发出的标识表的随机函数值。该标识表还包括一个集中区,该集中区含有中央防护单元在以前呼叫中所发出的连续信息。该标识表还可包括软件拷贝的使用统计数字。
现在说明购买软件的方法。购买者建立一个数据结构。该数据结构包括与用户装置中标识表相关的标识值以及该软件的标识。购买者计算出该数据结构的随机函数值,并向出售者发送一个信息。该信息包含这一随机函数值以及该软件的标识。
一旦收到这一信息,出售者对这一信息进行数字特征标注,并将标注的信息返给购买者。一个对用户装置进行监督的程序使用出售方的公用钥匙对该标注信息上的数字特征进行确认,并确认标注的信息含有购买者发出的信息。软件某一部分的随机函数值可以存储在该软件的标识中。监督程序检证软件标识中的随机函数值是否等于该软件某一部分的随机函数值。监督程序可在标识表中存储该软件的标识。该标识含有标识表标识值、购买者创建的数据结构以及出售者标注的信息。在发送信息前,可在购买者和出售者之前建立一个安全的通讯通道。数据结构可含有使用规定,信息也含有该使用规定。用户创建的数据结构可含有随机选择的只出现一次的数值。信息中可含有对该软件进行付款的证明。
现在说明将用户装置中的软件拷贝件作废的方法。监督程序可从用户装置的标识表中删除与该软件拷贝件相关的标识。该标识包括数字特征部分以及标识表标识值。在用户装置和出售方之间有通讯通道存在。用户装置通过该通讯通道将该标识发送给出售方。出售方使用出售方的公用钥匙对数字标注部分上的数字特征进行确认,出售方读取标识表的标识值。
出售方向标识的购买方发出信用证书。出售方向中央防护单元发送标识的数字标注部分以及标识表的标识值。中央防护单元将该标识的数字标注部分存储起来,并将该标识的数字标注部分与标识表的标识值连接起来。
中央防护单元向用户装置中的监督程序发送继续信息,该继续信息含有该标识的数字标注部分以及标识表的标识值。监督程序确认带有标识表标识值的该标识的数字标注部分没有存储在该标识表中。
现在说明对软件在用户装置上的使用进行监督的方法。用户装置上的监督程序计算出标识表的第一随机函数值,并向中央防护单元发出呼叫信息。该呼叫信息含有第一随机函数值、该标识表的标识值以及前一次呼叫信息中所发出的该标识表的第二随机函数值。中央防护单元确认前一次呼叫信息中发出的该标识表的随机函数值是中央防护单元在随机函数数值表中最近一次所存储的值,并确认这一值与该标识表的标识值相关。一旦确认成功,则中央防护单元将所收到的标识表第一随机函数值附加在与标识表标识值相关的随机函数表中,并向监督程序发出一个数字标注的继续信息,该继续信息是呼叫信息组成部分。
监督程序确认中央防护单元继续信息的数字标注部分与呼叫信息中发送的相应部分相一致。如果确认过程失败,则该监督程序向中央防护单元发出新的呼叫。中央防护单元将最后收到的呼叫信息以及最后发送的继续信息存储起来,并将存储的信息与标识表的标识值相关联。一旦中央防护单元收到来自监督程序的呼叫信息,则中央防护单元在确认所收到的呼叫信息与所存储的呼叫信息相等后发送所储存的继续信息。
一旦确认失败,则防护中央单元向正在发出呼叫的监督程序发送一个数字标注的信息以表明确认失败。一旦收到来自防护中央单元的数字标注信息,则监督程序将标识表作废。
一旦确认失败,中央防护单元将拒绝含有该标识表标识值的再次呼叫。
在标识表中,监督程序使用当前呼叫信息所发出的标识表随机函数值来取代前一次呼叫信息所发出的标识表随机函数值。监督程序将标识表中前一次呼叫所收到的继续信息替换为当前呼叫所收到的继续信息。
每当操作系统和监督程序加载到用户装置的内存上时,都有可能向中央防护单元发出呼叫。
监督程序使用一个或多个事件记数器测定第一次呼叫中央防护单元和第二次呼叫中央防护单元之间的时间间隔。正如时钟所记录的,事项记数器定期进行更新。中央防护单元将当前时间值存储在继续信息中,监督程序将事项记数器设定为所述继续信息中所收到的当前时间。
用户装置表征值可存储在标识表中。监督程序可存储多个标识表。该标识表含有该标识表的标识值,其随机函数值在最近多次的呼叫中发送给中央防护单元。中央防护单元将最近多次呼叫中所接收到的多个标识表随机函数值储存在继续信息中。一旦收到这一继续信息,则监督程序计算出所储存的多个标识表的随机函数值,并进一步确认该随机函数值是否与继续信息中的相应值相等。监督程序检查最近多次呼叫所发送的用户装置表征值是否属于多个用户装置,并在多个标识表中搜寻两个连续的标识表,这两个标识表含有用户装置表征值,这些值在相应值的特定数字上有所不同。监督程序通过在标识表中搜寻第一标识表、第二标识表和第三标识表来进行检验。发送第二标识表的呼叫位于发送第一标识表的呼叫之后。发送第三标识表的呼叫位于发送第二标识表的呼叫之后。第一标识表和第二标识表中所储存的用户装置表征值的不同之处大于相应数值的特定数字,第一标识表和.第三标识表所存储的用户装置表征值的不同之处小于相应数值的特定数字。监督程序向中央防护单元提交确认的结果,中央防护单元在确定最近的多次呼叫所发送的标识表属于多个用户装置的基础上取消含有标识表标识值的未来呼叫信息。呼叫信息含有只出现一次的新的随机选取值。继续信息含有一个超级校验程序。
中央防护单元计算出超级校验程序某一部分的随机函数值,该超级校验程序存储在以前的呼叫发送到监督程序的继续信息以及该继续信息中。中央防护单元将该随机函数值存储在发往监督程序的继续信息中。监督程序确认存储在该用户装置中超级校验程序相应部分的随机函数值以及继续信息中所含有的随机函数值与所收到的随机函数值是否相等。监督程序将新的超级校验程序附加到用户装置所存储的超级校验程序上。中央防护单元还确认收到的时间在中央防护单元时钟的指定误差之内,并确认此次发出的呼叫信息的到达时间与前次呼叫信息到达时间之间的间隔是否超过了规定的最大间隔值;或者此次发出的呼叫信息的到达时间与前次呼叫信息到达时间之间的间隔是否低于规定的最小间隔值。
一旦接收到继续信息,监督程序将确认当前标识表中所有各项的时间总用量是否超过以前呼叫信息的标识表中所有各项的时间总用量。
用户装置中含有用户装置表征值以及监督程序。监督装置记录该用户装置的表征值。
用户装置表征值可含有处理器识别信息、非易失存储装置识别信息、目录结构识别信息或文件识别信息。
现在介绍软件检验程序,该检验程序包括超级校验程序、中央防护单元和监督程序。超级校验程序含有数据和计算机程序。中央防护单元向用户装置发送某一软件拷贝的多个超级校验程序。用户装置将这些超级校验程序存储起来。监督程序在用户装置上运行。
超级校验程序含有软件拷贝的名称。该软件拷贝的名称表明了要被检验的软件拷贝。超级校验程序含有一个加权值,该加权值决定了使用超级校验程序对软件拷贝进行检验的频率。超级校验程序含有软件拷贝某一部分的随机函数值表以及某一随机函数。超级校验程序含有解密程序。超级校验程序含有监控程序,该监控程序监控软件拷贝的操作特性。超级校验程序还含有销售者提供的与该软件拷贝相关的公用钥匙。
中央防护单元将数字标注信息中的超级校验程序发送给监督程序。监督程序对数字特征进行确认,并在确认成功后将超级校验程序存储起来。
现在介绍对用户装置中所用的软件拷贝进行检验的方法。本发明中提供多个超级校验程序。每个超级校验程序含有一个数值、一个程序、一种条件以及地址信息。该程序在软件拷贝的某一部分上执行。这一部分以软件拷贝内容的地址信以及超级校验程序中的数值为基础。对计算值和含有值进行确认以决定它们是否满足超级校验程序中的条件。
在超级校验程序中存有一个加权值。根据该加权值来选择进行测试的超级校验程序。出售方至少提供一个标识,该标识由出售方用数字进行标注。这一与用户装置所用软件拷贝相关的标识被加以确认。
在超级校验程序中的条件确认成功以及相关的标识确认失败后,可以采取处罚性操作。或者,在超级校验程序中的条件确认成立以及用户装置上没有任何标识的情况下可采取惩罚性操作。相关的标识含有软件拷贝的名称或者该软件拷贝某一部分的随机函数值。
该程序含有随机函数,该数值是随机函数值表,对超级校验程序中条件的确认还包括对通用地址随机函数值时行检验。
超级校验程序中的程序可以是某一随机函数,超级校验程序中的数值是随机函数值表,对超级校验程序中条件的确认还包括对同一地址随机函数值的核对。
超级校验程序中的程序可以对所用软件拷贝的操作进行监控,这一数值含有操作表,对条件的确认还包括将监控的操作与该操作表进行比较。
该程序可对软件产生的中间结果进行评价,该值包括结果表,对条件的确认还包括将评价的中间结果与该表进行比较。
软件的拷贝可以是某一计算机程序,地址信息规定了从该计算机程序起始处开始的字节计数顺序。
软件拷贝可以是某个计算机程序,该数值是含有指令的表。非操作指令不在计数之列。超级校验程序中的地址信息可以不包括某些部分的指令。被排除在外的指令部分可含有内存地址或注册地址。
本文对检验用户装置所用软件拷贝的方法进行说明,并对超级校验程序进行说明。超级校验程序含有使用软件拷贝的程序。该程序对软件拷贝进行追踪并记录下使用的日期。
本文对允许使用软件拷贝的方法进行说明,其中的软件拷贝含有用户装置的标识。该标识从用户装置中的标识表中获得。该软件拷贝的某一部分的随机函数值被计算出来,计算出来的随机函数值与该标识中的随机函数值进行比较。如果确认这二个随机函数相等,则允许对软件拷贝进行使用。随机函数值的比较过程还包括另一检查步骤,即通过将软件拷贝的使用与标识中存储的使用规定进行比较而决定是否允许使用软件拷贝,确认过程包括检查的成功完成。比较过程还包括将标识中含有的标识表标识值同标识表的标识值进行比较。允许使用软件的过程包括对软件使用的统计数字进行记录。
用户装置中存储超级校验程序被检验是否与软件拷贝相匹配。一旦确认是相配的,则确定超级校验程序中含有的出售方名称和公用钥匙是否与标识中含有的出售方名称及公用钥匙相一致。如果确定失败的话,则取消对软件拷贝的使用许可。
用户装置中存储的超级校验程序被检验是否与软件的拷贝相配。一旦确认不相配,则允许使用该软件拷贝。
本文对在用户装置上运行软件的监督方法进行说明。用户装置中含有标识表。该标识表含有标识表的标识值。用户装置向中央防护单元发出呼叫信息。该呼叫信息含有标识表的标识值。中央防护单元确认此次呼叫信息时间与上次呼叫信息时间之间的间隔是否超过规定的最小间隔值;其中的呼叫信息含有标识表的标识值。
一旦确认成功,中央防护单元则生成一个数字标注的继续信息。该数字标注的继续信息含有呼叫信息。中央防护单元对呼叫信息进行储存,并向用户装置发出该数字标注的继续信息。中央防护单元通过计算用户装置上记录的呼叫信息时间与中央防护单元所记录的时间之间的间隔来进行确认过程。
中央防护单元所发出的数字标注继续信息含有超级校验程序某一部分的随机函数值,该随机函数值是中央防护单元在回应以往的呼叫信息时发出的,其中呼叫信息含有标识表的标识值。继续信息含有中央防护单元新提供的超级校验程序。用户装置对中央防护单元的特征以及继续信息所含有的标识表标识值进行确认。
用户装置上所记录的用户装置时间存储在呼叫信息中。该时间存储在继续信息中,这一时间被确认早于用户装置接收继续信息的时间,且该时间小于规定的值。
用户装置确认超级校验程序以前所发送的该部分的随机函数值等于继续信息中含有的随机函数值,其中超级校验程序存储在用户装置中。
中央防护单元所发送的数字标注继续信息还包括超级校验程序某一部分的随机函数值,该随机函数值是中央防护单元在回答以往呼叫信息时发出的;其中呼叫信息含有标识表的标识值以及继续信息所发出的超级校验程序。用户装置确认中央防护单元以往发送的超级校验程序某一部分的随机函数值以及用户装置中所存储的随机函数值与继续信息中所含有的了随机函数值相等。
用户装置将新的超级校验程序安装在标识表中。
本文对确保用户指定的用户装置标识值只出现在一个用户装置上的方法进行说明。信息从用户装置发送到某一接收方。该信息包括与用户相关的装置标识值。某一识别检验过程确定该用户装置标识值是否储存在另一用户装置上。一旦确定某一用户装置标识值出现在多个用户装置上,则上面提到的接收方将该用户装置的标识值作废。
图示简介前面所述的及本发明其他的目的、特点及优势通过以下优选实施方案的更具体说明将会十分明确,这些优选实施方案附有图示加以说明,在这些图示中相同的参考字符在不同的图形中表示相同的部分。这些图形不一定是按比例绘制的,为了表明本发明的基本原理,在某些地方进行了强调。


图1表明的是保护信息及私人权利的系统,系统中包括出售方、中央防护单元以及用户装置。
图2表明的是图1所示的用户装置的软件结构,其中包括用户空间、操作系统、引导盘以及引导可编程只读内存。
图3表明的是在本发明的某一实施方案中加载过程所使用的部件。
图4是一个流程图,它表明了操作系统部分加载过程所执行的步骤。
图5表明的是执行操作系统之外某些软件的加载过程所用的部件。
图6A表明的是软件锁结构图6B表明的是软件锁对操作系统202的模块和监督程序提供的保护。
图6C表明的是软件锁对指定内存地址内容进行检验的步骤。
图6D表明的是图6B中任一一个软件锁的信息组。
图6E表明的是软件锁子程序以及用户装置中程序内软件锁子程序的调用。
图7表明的是监督程序以及该监督程序与标识表的关系。
图8表明了购买或租用(以下合称为购买)软件拷贝的步骤。在购买过程中,购买方的私人权利受到保护。
图9表明的是废除某一标识的步骤。
图10表明的是图7所示标识表的另一实施方案。
图11A和图11B表明的是保护私人权利呼叫的步骤。
图12表明的是对用户装置表征值进行检验的流程。
图13A-B表明的是进行私人权利保护性呼叫的另一种方法。
图14表明的是时钟的组件。
图15表明的是检验某一软件拷贝可否使用的确认步骤。
图16A-B表明的是进行呼叫的另一种方法中所用到的步骤。
本发明的详细说明以下是本发明优选实施方案的说明。
根据本发明,软件拷贝应用于用户装置上。用户装置包括一个或多个通用或专用处理器,或与一个或多个通用或专用处理器相连。这些处理器共同承担对某一软件拷贝的执行操作以及共同执行本发明的所有保护机制。
图1表明的是信息及私人权利的保护系统。该系统包括出售方110、中央防护单元130和用户装置140。用户装置140有多个,这些装置由企图对软件进行盗版的用户所操作。当用户装置140的某一用户(未在图中表明)购买软件时,用户装置140向出售方110发出购买订单101。如果该购买订单通过了某些测试,则出售方签署这一购买订单,并将签署后的购买订单102发回给用户装置140。用户装置140将签署过的购买订单102以及其他信息做为一个标识安装到标识表中。该标识表将在本文的后面部分中结合图2进行说明。
在本文中,软件被认为是数字信息;软件包括计算机程序、文本文件、数据文件、数据库、视频文件、音频文件、图像文件或任何其他可由数字或信号表现出来的信息,但软件的种类并不局限于此,软件可被计算机或专用设备所访问,或者在计算机或专用设备上运行。对软件拷贝的使用包括阅读、显示、存储、修改、播放或执行该软件,但对软件的使用并不局限于此。
用户装置140定期地发出呼叫103,在呼叫103中用户装置140向中央防护单元130发送信息。如果呼叫103发往中央防护单元130的信息通过了本文下面将要说明的一些测试,则中央防护单元130向用户装置发回一个继续信息104。在用户装置140中所收到的继续信息104被用来生成进一步的测试,并在呼叫103之后来防止用户装置140在侵犯出售方合法权利的情况下使用软件拷贝。标识的详细结构、呼叫信息103、中央防护单元130和用户装置140所进行的测试以及继续信息的内容将在本文以后的部分进行说明。在本发明中,当使用“信息”这一词语时,应该理解的是信息可以分成几部分发送,每条标注的信息可分部分进行发送,每个部分可分别进行标注。
图2表明的是图1所示用户装置140的软件结构。用户装置140系统中包括用户空间201、操作系统202、引导盘软件203以及根引导可编程序只读内存204。图2还表明了操作系统202含有的组件。监督程序211是操作系统202的一部分,但监督程序211不是操作系统202的必须组成部分。同样,软件锁212也包括在操作系统202中。然而,软件锁212也可以在用户空间201中。用户可对用户空间201进行任意修改。在本发明的某一实施方案中,操作系统202还包括一个或多个标识表213和一组超级校验程序215。在本发明的另一实施方案中,标识表213和/或超级校验程序215存储在用户空间201中。正常情况下,操作系统202不能被修改,但盗版者试图使用“补丁”来修改操作系统。补丁可以替代机器语言编码。补丁可能是一个新的装置驱动程序、装置驱动程序的其中一段或者基于用户命令的操作系统核。本发明含有消除补丁这种危害的机制。引导可编程序只读内存204加载引导盘软件203。引导盘软件203负责加载操作系统202。
在操作系统202中有核210,它执行多种功能,例如安排处理操作、控制文件系统以及其他操作。正如系列号为09/305,572的美国专利申请所说明的,监督程序211通过将标识表213所储存标识中的区域与软件拷贝进行比较以及通过进行超级校验程序检验来确认用户装置140上所使用的软件拷贝是否是合法的;超级校验程序的核对将在以下进行说明。上述美国专利申请是Michael O Rabin等人于1999年5月5日提交的,其标题为“用于私人信息的方法和设备”,该专利申请在此通过引证被并入本文。监督程序211被结合到用户装置140中去。监督程序211具有对在用户装置140上运行的软件拷贝进行监督的功能。监督程序211是操作系统202的一个组成部分。正如前面所说明的,这并不是强制性的规定,只要软件锁212可以确保监督程序211的完整性,并且监督程序211可以履行本文所述的功能即可。有可能对软件进行盗版的盗版者无法控制出售方110或中央防护单元130,这二者完全由防盗版系统所控制。但为了绕开保护,盗版者可能试图改变用户装置140。在用户装置140内的保护系统组件包括监督程序211、标识表213以及软件锁212。
由于防盗版功能涉及对用户装置140的操作进行某些监测和控制,所以出现了对用户的私人权利以及可能某些行动自由遭受侵犯的担心。本发明提供多种机制确保用户的私人权利不致受到侵犯。同时,本发明可防止用户装置140使用盗版软件并可防止用户装置140使用合法购买或租用的但与购买或租用协议不一致的软件。然而,本发明不对用户装置140构成其他的限制。
一个或多个软件锁212可确保含有监督程序211的操作系统202模块不被修改。在操作系统202中分散着一个或多个软件锁212。软件锁212对操作系统202的其他部分进行检验。软件锁212将在本文的以后部分中进行说明。
在本发明的某一实施方案中,某些方法涉及到软件模块的加载,在使用所加载的软件模块时同样使用到了这些方法。在另一实施方案中,这些方法被某一专用处理器所使用,该专用处理器使用随机函数值匹配检验或存根检验来检查每项连接。正如上面所述的引导可编程序只读内存204一样,这一专用处理器将一个或多个公用钥匙刻在它的硬件中。
根据加载过程来保护操作系统的完整性一致性加载本发明具有确保储存在用户装置内存中的软件拷贝是一致性软件的功能。如果与出售方生产的原始软件相同,则出售方的软件是经过授权的。一般而言,软件的拷贝是从二级存储装置或从远端地址加载到内存中。在本文中,将一致性的拷贝加载到内存中的过程被称为软件拷贝的一致性加载。一致性加载软件的模块会得到一致性的软件模块,即在内存中存储了经过授权的软件拷贝。在本段文字中,将对有效执行操作系统或其部分一致性加载的机制进行说明。然而,这些机制并不局限于操作系统的一致性加载,这些机制适用于对任何软件的一致性加载。
图3表明了本发明某一实施方案中操作系统202加载过程中的组件。本文将在以后部分中介绍这些组件及其功能。加载过程包括一种被称为关联保护的方法,该方法执行操作系统202I、202N中一个或多个操作系统的一致性加载。关联保护方法并不局限于执行操作系统202I、202N的一致性加载,该方法还适用于任何其他软件的一致性加载。
引导程序的起始部分或起始模块储存在可编程序只读内存204中,可编程序只读内存存在于用户装置140之内或与用户装置140相连。起始部分还可以储存在其他类似的存储装置中,例如储存在内存的不可修改部位或储存在某个处理器中。引导程序是某种软件,它通过将操作系统202或操作系统202的适当部分加载到内存中来起动用户装置140。可编程序只读内存204是存有数据或程序文本的存储装置,这些数据和程序文本只能写一次,之后只能读取。就当前的技术而言,可编程序只读内存被认为是难于通过软件方式加以修改,从这一意义上讲,在用户装置140上通常没有软件可用来修改可编程序只读内存中的内容。对可编程序只读内存的修改只有使用必须与用户装置140相连的专用硬件才能实现。
引导可编程序只读内存204存储着执行引导操作初始阶段的软件。引导操作包括通过加载操作系统或操作系统的一些部分来使用户装置140做好操作的准备。引导盘软件203还含有用于引导操作的软件,引导盘软件203从本地或远程存储装置(未表明)加载到内存中。然后,在其内容通过了某些测试后,操作系统202I、202N的一个或多个部分被加载;本文将在以后对这些测试进行说明。操作系统的某一部分或软件的拷贝是指全部的相应文本或数据、或者是文本各部分的顺序或软件拷贝中数据的顺序。这些部分不必是连续的,相互间可有重叠。
通过随机函数匹配检验、存根检验或随机函数匹配检验与存根检验相结合的方式可进行一致性的加载过程。软件模块是软件拷贝的一部分。通过随机函数值匹配检验来一致性加载软件模块P2可通过使用已经存在于内存中的一致性软件模块P1有效地进行。模块P1至少含有一个随机函数值,该随机函数值是通过从所周知的随机函数计算出来的(在其他实施方案中,该随机函数值是由P1指定的随机函数计算出来的)。对模块P2的检验包括计算P2的随机函数值,或计算P2指定部分的随机函数值,并将所得到的计算值与P1中存在的至少一个随机函数值进行比较。只有当两个值相等时,P2才可以加载,引导操作才可以继续进行。
存根检验法是另一种用来确保内存中所存储及加载的软件模块P2是一致性软件模块的方法。存根检验法使用到数字标注的存根,该存根是由软件制造者或本发明系统内的某些其他授权方使用数字进行标注的存根。该数字标注的存根与软件模件P2相连,并含有足以对软件模块内容进行专门辩识的信息。该存根的数字特征通过软件模块P1中含有的公用钥匙进行确认,该软件模块P1已经一致性地加载或储存到了可编程序只读内存或其他不可修改的内存中,其中可编程序只读内存或其他不可修改的内存存在于用户装置之内或与用户装置相连。在某一实施方案中,充足的信息是软件模块P2中内容的随机函数值。存根检验过程包括计算软件模块P2的识别信息、对计算出的信息和P2存根中的信息进行比较以及使用上述一致性软件模块P1中的公用钥匙来确认该存根上的数字特征。在随机函数值匹配检验以及存根检验中,如果所有的比较值都是相等的,则确认是成功的;所有数字特征确认证明了所述特征的真实性。
通过存根检验进行一致性加载会使一致性软件系统的扩展或修改具有灵活性。由于合法的软件模块P1含有确认制造方或出售方数字特征所需的公用钥匙,所以制造方或出售方可使用经制造方或出售方同意的合法存根在任何时间创建新的软件版本或下一个软件模块P2。通过存根检验过程,使用P1中的公用钥匙可对新的软件模块进行一致性的加载。通过随机函数值检验进行一致性加载的过程通常比通过存根检验进行一致性加载的过程快。然而,随机函数值检验法没有存根检验法那样的灵活性和扩展性。
图4是一张流程图,它表明了进行操作系统一致性加载的初始步骤。图4与图3结合在一起进行说明。
在步骤401,用户装置140或计算机系统被启动或重新启动。操作接下来继续进行步骤402。
在步骤402,存储在引导可编程序只读内存204中的软件根据储存的随机函数316进行随机函数值匹配检验,并通过这一检验将引导磁盘软件203中的数据一致性加载到内存中(未表明)。在本发明的另一实施方案中,可编程序只读内存210所存储的引导程序还含有多个公用钥匙3181-318N,一个或多个公用钥匙被用来通过存根检验来对引导磁盘程序进行一致性的加载。为了进行软件的一致性加载,存储在可编程序只读内存204中的引导程序确保加载到计算机内存中的软件模块是经过授权的合法软件模块。由系统或应用软件出售方提供的合法软件模块与出售方110生产的原始软件模块是相同的。
引导磁盘软件203含有多个公用钥匙3181-318N,每个钥匙被用于对现有的或未来的操作系统2021-202N进行一致性的加载。此外,引导磁盘程序203含有多个随机函数值316,通过随机函数值匹配检验,每个随机函数值被用来对现有的操作系统2021-202N进行一致性的加载,或对其他现有的的软件模块进行一致性的加载。软件出售方110和/或第三安全保证方持有与公用钥匙3181-318N相对应的私用钥匙。出售方110使用私用钥匙建立一个与软件模块或系统相关的授权存根。软件的接收方使用相应的公用钥匙3181-318N通过存根检验来进行软件的一致性加载。操作接下来继续执行步骤403。
在步骤403,引导可编程序只读内存通过随机函数值匹配检验来确定确认过程是否取得成功。如果确认取得成功,则继续执行步骤404。如果确认不成功,则继续执行步骤409。
在步骤404,一旦引导磁盘软件203全部或部分地一致性加载到内存中,则该引导磁盘软件向用户装置140的用户提供一个选择,用户装置140的用户可从操作系统2021-202N中选择一个或多个操作系统,或者通过缺省方式选择预定的操作系统2021-202N。操作接下来执行步骤405。
在步骤405,所选择的操作系统软件的模块被读入内存中,例如操作系统N202N被读入内存中。如果这一模块被表示为OS_N_1310,且这一模块含有由操作系统出售方OS_N的私用钥匙所标注的存根322;则在某一实施方案中,存根322的形式为Stub_OS_N_1=SGN_OS_NCHASH(OS_N_1)。SGN_OS_N是与操作系统OS_N202N相关的公用钥匙数字特征函数。HASH是引导盘软件203指定的随机函数316。操作接下来进行步骤406。
在步骤406,引导盘软件203计算被加载到内存中的OS_N202N中第一模块OS_N_1310的随机函数值HASH(OS_N_1)。使用与操作系统OS_N202N相关的公用钥匙PK_N318来调用随机函数值H,操作系统OS_N202N储存在引导盘软件203中。引导盘软件203将公用钥匙应用于H以确认特征值SGN_OS_N(H),这一特征值是从与第一模块OS_N_1310相关的存根322中读取的。操作接下来进行步骤407。
在步骤407,引导盘软件203将检验确认过程是否取得成功。
如果确认取得成功,则操作继续执行步骤408,否则操作继续执行步骤409。
在步骤408,引导操作的第一相位是成功的。用户装置140是否处于可用状态取决于指定的操作系统OS_N202N。对某些操作系统而言,要使用户装置处于可用状态还要再加载另外一些模块。随后OS_N310中的某些模块有可能被使用到,这些模块的一致性加载是经一致性检验过程后由OS_N302N执行的。一致性检验过程使用到随机函数值匹配检验和存根检验。通过在含有多个软件模块的软件系统设计过程中同时加入随机函数值匹配检验和存根检验,可使这两种检验方法具有速度及可扩展性方面的优势。OS_N320中的软件模块含有多个公用钥匙PK_N_1、PK_N_2......,以及多个随机函数值H_1、H_2、......。OS_N中下一个要加载的模块是OS_N_1_5,这一模块由用户或OS_N_1选定。OS_N_1_5的一致性加载即可以通过存根检验方法由与软件模块OS_N_1_5以及已经一致性加载的OS_N_1中某一公用钥匙相连的存根执行,也可以通过随机函数值匹配检验法由OS_N_1中存在的某一随机函数值执行。在本发明的另一实施方案中,在软件模块一致性加载过程所使用到的某些公用钥匙以及随机函数值可存在于引导可编程序只读内存程序或引导盘程序中。
在步骤409,引导过程失败。
上述对软件模块进行一致性加载的过程可重复进行多次,其中通过使用一致性检验过程,利用公用钥匙或已一致性加载的模块中含有的随机函数值来加载每一个另外的模块OS_N。
因此,引导盘软件203是经过授权的合法软件,因为对引导可编程序只读内存204使用了随机函数值匹配检验。在操作系统中已经合法的模块所执行的一致性性检验基础上,操作系统中其后加载的模块是一致性的。对于每个操作系统2021_202N而言,操作系统的出售方110仍然持有对任何一个操作系统或全部操作系统进行修改的灵活性,并允许通过一致性性检验过程使用已经存在的公用钥匙3181_318N、存根、随机函数和/或模块中含有的随机函数值来对这些模块进行一致性的加载。
由于只有出售方才拥有的计算一致性加载过程中所用数字特征函数SGN_OS_N()所需的私用钥匙PK_N,所以只有操作系统出售方才可确定以一致性方式加载的操作系统中模块的版本。私用钥匙是一个私用密码钥匙,出售方使用私用钥匙生成数字特征。如果一个新的出售方要发售新的操作系统软件,则新的出售方分配到未被使用过的公用钥匙,这些公用钥匙存在于引导盘软件203中。与公用钥匙相对应的私用钥匙存放在可信的第三方手中,并在需要时确保交付给新的出售方。出于工作效率的考虑,在对出售方操作系统的模块进行一致性性检验时可以决定是使用存根检验法还是使用随机函数值匹配检验法。
在一致性加载的另一实施方案中,要加载模块中只对某些子部分进行随机函数值的计算。这可以使操作系统的出售方在不中断模块一致性加载过程的条件下,不时地随意改变操作系统的某些部分。具体可变的部分比如可以是数据区。
标准化的操作系统一致性加载过程可对任何软件或数据(一般是文本)进行一致性的加载。在这种标准化方法中,引导可编程序只读内存204及其中所存储的数据可由委托方授权的任何数据和/或程序编码所替换。其他模块可以是按本发明的概念所广泛认定的随机软件模块。
图5表明了某些软件一致性加载过程的组成部分,这些软件不必是操作系统。文本的引导部分存储在模块804中。文本的引导部分要从根本上确保其一致性性。通过随机函数值匹配检验和存根检验可实现与模块804的连接。执行随机函数值匹配检验或存根检验所需的程序存在于已经一致性加载过的软件之中。正如所示的,模块803和802中存储的文本使用随机函数值匹配检验法,模块830中存储的文本使用存根检验法。模块803对模块810和820中存储的文本使用存根检验法。因此,模块804可对某些文本使用随机函数值匹配检验法,而对其他文本使用存根检验法。此后加载到模块804上的每个软件模块都可以通过使用已一致性加载的软件模块中的随机函数值或公用钥匙进行一致性的加载。
上述方法的进一步标准化使用到某种协议,在该协议中只有使用已经加载的模块(未表明)中含有的多个存根和/或随机函数值进行一致性性检验之后,某一模块M才能被加载。举例而言,模块M1含有公用钥匙P1,可以有某一存根与M相关,该存根由P1的拥有者进行标注。此外,模块M2含有随机函数值H2。这两者都用于模块M的一致性加载过程。
在使用已加载软件模块的过程中,也可以使用到与软件模块一致性加载相关的这些方法。举例而言,某一专用的处理器可使用这些方法,该处理器通过随机函数值匹配检验或存根检验定期地对每一连接进行检查。
在运行过程中保护操作系统的完整性软件锁保护即使在使用一致性加载对软件进行加载之后,在软件在用户装置140运行期间继续确保这一软件是一致性的仍然十分重要,其中软件存储在用户装置140的内存中。对当前使用的某些操作系统存在着两种可能的攻击,这些攻击包括在系统调用期间强制缓冲寄存装置过载,或者安装不正确的核芯驱动程序。
软件锁保护功能提供加强型的安全保护。软件锁保护包括软件锁212和软件锁检验过程。软件锁212是嵌入的程序编码和数据;在优选情况下,这些程序编码和数据是以难以检测的方式嵌入到软件模块中去的。
图6A表明的是软件锁结构530。软件锁结构530含有一个地址序列、多个随机函数以及多个随机函数值538;其中地址序列不必是连续的,该序列用于对534进行检验,随机函数用于地址536中的内容。要被检验的地址534可含有绝对内存地址、相对内存地址以及文件名称。软件锁结构530还包括一项可选功能和软件锁操作530,这一可选功能可对测试532进行检验。
图6B表明的是用于保护操作系统202的模块以及用于保护监督程序211的软件锁。然而,软件锁的保护功能并不局限于操作系统,软件锁212a-c可用于对任何程序的完整性进行保护,包括对用户应用程序的保护。
图6B中所说明的关系检验方案可以容易地对含有任何数量软件模块、软件锁以及检验关系的软件系统进行标准化。
在图6B中有三个软件锁212a-c。软件锁212a-c间相互检验,并对操作系统202的模块2021以及监督程序211的模块520进行检验以检测这些模块是否已被修改过。软件锁212a-c的每个箭头都表示一种检验关系。因此,一个软件锁可以检验一个以上的软件模块。正如图6B中所示的,软件锁212a检验模块510和520。软件锁之间还相互检验。正如图6B所示的,软件锁212b和212c相互检验。
图6c是一张流程图,它表明了软件锁对指定内存地址中内容进行检验的步骤。
正如图6B所示的,软件锁对编码的多个部分进行检验。每次检验都重复进行图6c中所说明的过程。
在步骤901,对软件模块进行运行。当遇到软件锁编码时,操作继续进行步骤903。
在步骤903,软件锁协议根据软件锁编码中指定的条件进行必备检验532,从而确定是否有哪些地址应该由软件锁211进行检验。一种可能的情况是,每当遇到软件锁编码时,所有在软件锁结构530中列出的地址534都被检验。如果必备检验确定软件锁没有运行,则操作继续执行步骤908。举例而言,只有当装置的时钟时间值为偶数并且指定的内存地址在指定的范围内时软件锁212a_c才执行检验过程。有一种安排具有优势,在这种安排中软件锁检验次数少,软件锁以及它的地址和操作不易被攻击者所探测到。
在必备检验测试532确定了要检验的地址534的子集后,操作继续执行步骤904。
在步骤904,地址子集的内容被读取,软件锁结构530所指定的适当随机函数536被用来计算地址内容的随机函数值。操作接下来继续执行步骤907。
在步骤907,计算出的随机函数值与软件锁子程序530中所列的适当随机函数值进行比较。如果这些值不相等,则操作继续执行步骤909。如果这些值相等,则操作继续执行步骤908。
在步骤908,嵌入的软件继续运行。在另一实施方案中,软件锁212a-c并不是检验这些值是否相等,软件锁检验的是两个内存地址之间是否存在某些关系。举例而言,设定某些关键的过程耗时不到一毫秒。还可设定软件记录在MLL1开始执行过程的时间以及记录软件在MLL2结束该过程的时间。在这种情况下,软件锁212a-c可检验L2的时间值是否只比L1的时间值高几毫秒。这些软件锁212a-c被称为数据型软件锁。另一种软件锁检测是否存在一致性的编码。因此,步骤904和907可被其他的步骤所替换,这些步骤确定某些指定内存地址是否含有一致性的数值。
在步骤909,软件锁a-c根据软件锁各自的作用确定应采取那些操作。举例而言,软件锁a-c在指定的比较过程中发现有不相等的情况时,软件锁对软件模块或数据模块非法修改进行检测,软件锁可以中止嵌入软件的运行。软件锁编码规定了在对非法修改或非法编码检测的基础上所采取的操作,这些操作被软件锁操作540所调用(图6A)。
在另一实施方案中,软件锁212a-c还可含有执行匹配检验及比较检验之外的检验程序。例如,软件锁中所含有的这种程序可以监视软件锁212a-c所保护软件系统的操作特性,并将所观察到的特性与软件锁中所存储的数据进行匹配比较。指定的程序库及子系统的操作特性调用正在操作的程序、调用的频率以及触发这些调用的条件。对于选择恰当的特征而言,如果监视的操作特性偏离软件锁中所列的数据超过一个参数值,则软件锁采取措施540。
软件锁措施的另一个实例是在执行编码中插入一个误码,这一误码在软件锁检验完成其运行后发挥作用。这一措施可以中止程序的运行。
在某一实施方案中,为了躲开检测,可用操作系统码分散软件锁执行的过程。包括英特尔公司生产的奔腾III在内的大多数处理器的指令组中都含有子程序调用指令.这一指令含有子程序码起始的内存地址,这一地址被称为调用地址。子程序是某一程序的一部分,该程序执行某些功能,然后对子程序调用指令之后的指令进行控制。
许多处理器的指令组同样含有非操作指令。当非操作指令运行时,非操作指令不改变处理器的状态。因此,取消非操作指令不会影响计算所产生的值。
图6D表明的是软件锁212a-c的软件锁信息组。软件锁子程序630位于软件锁信息组620中,软件锁信息组620比容纳软件锁子程序630所需的要大一些。举例而言,如果软件锁子程序630需要100字节,则软件锁信息组的大小可以是1000字节。在加载期间,软件锁子程序630被放置在软件锁信息组620的某些连续地址上,例如放置在70字节至169字节之间的位置上,放置的位置取决于加载期间的条件,例如取决于加载时间以及某些内存地址的值。软件锁信息组620中的其他字节604、642可以放置非操作指令或完全不加以使用。
图6E表明的是软件锁子程序630以及用户装置140中程序202对软件锁子程序的调用。相对于软件锁子程序630的起始地址而言,对软件锁子程序630的所有子程序调用6311、6312在加载期间有它们的调用地址组。在不同的加载过程中,软件锁子程序630在软件锁信息组620中的位置可以发生改变,所以软件锁202a-c被称为“滑动装置”。在操作系统202以及所含的软件锁212a-c加载之后,可以实现软件锁212a-c的滑动功能。在本发明的另一实施方案中,软件锁含有使软件锁212a-c进行滑动并将软件锁212a-c拷贝到软件锁信息组620中可用连续地址上的程序。
根据加载时的条件,软件锁子程序的子程序调用指令631被放置在可能地址的子集中(图6D)。在本发明的某一实施方案中,可能地址的子集即可含有子程序调用指令6311、6312,也可含有非操作指令。
软件锁程序212a-c不必放置在要进行检验的用户装置140上。在本发明的另一实施方案中,当用户装置140向某一位置发出请求时,该位置的软件锁程序要求用户装置计算用户装置140中某一地址序列的某一函数,并随后将计算值返回到该位置。该位置然后对返回值与软件锁程序212a-c储存的值进行比较。如果这两个值不相等,则该位置向用户装置140发出信息,指示该用户装置中受保护的程序已被废弃。此外,在这一实施方案中,该地址上的软件锁还可执行前面所述的功能以及由软件锁212a-c所执行的其他功能。
标识表图7表明的是监督程序211及其与标识表601的关系。标识表是一种数据结构,该数据结构中每个软件拷贝都有自己的标识605(其内容在软件拷贝的购买过程中指定),其中购买或租用的软件拷贝在用户装置140上运行。对于标识表601中所含的每个标识605而言,标识表601中至少含有一个区域,这一区域表明软件拷贝的使用状态。使用状态信息组609还可表明与标识605相关的软件拷贝的使用统计数据。标识表601还含有标识表表头603,该表头对标识表601进行特殊的标记。标识表表头603可含有有关用户装置使用统计数据的信息,并可含有继续信息104。标识表表头603还含有标识表标识值ID604。用户装置140可有一个或多个标识表,每个标识表都有自己的标识值ID604。标识表601、602储存有允许软件拷贝在用户装置140运行的信息,并记录软件使用的统计数据,软件的出售方或出租方根据这些统计数据进行收费。
可保护私人权利的购买方式在本发明中,软件的购买方、租用方及用户(以下统称为购买方)即没有在软件的购买过程也没有在软件的使用过程中透露过他们的身份,软件的购买方意在保护他们的隐私权。
标识表601是储存在用户装置140中的表格或文件,它含有与软件拷贝标识605相关的信息以及与软件拷贝使相关的信息。
标识表标识值ID604是标识表的识别值(图8),该识别值储存在标识表601中。标识表标识值ID604或由硬件生成、或由用户指定、或由像热干扰这样的物理过程生成、或由多种方式结合在一起生成。标识表标识值ID604的特点是第三方无法使这一标识值与软件拷贝的购买者建立联系。在本发明的某一实施方案中,购买方可使用匿名通道进行所有的通讯联系,并使用匿名通道为用户装置140上的标识表601、602建立标识值ID604。例如,购买方可使用加拿大蒙特利尔零知识系统公司提供的产品进行通讯和标识值设定。匿名通道是一个通讯通道,该通道不会泄露使用该通道发送信息者的身份。
图8是流程图,它表明了在保护购买者私人权利的前提下购买或租用(以下统称为购买)软件拷贝的步骤。图9将结合图8进行说明。购买软件的交易可由购买者用户装置中的监督程序211执行,或者由购买者用户装置或某些用户装置140中的专用购买程序205执行。
在步骤1101,例如可使用Netscape公司提供的SSL协议在购买者和出售者110之间建立起安全的通讯连接。安全通讯是发送数值X的一种方法,使用这一方法发送X时,只有预定的接收者才能以解密方式看到X值,而其他的人员只能观察到网络协议或看到传送X值的数据包。使用可靠的信使程序发送密封邮件是对邮件内容进行安全传送的一种方法。通过匿名通道进行通讯101和102可以避免泄露购买者的网络身份。使用NETSCAPE SSL协议进行信息发送是在通讯网络上确保安全通讯的一种方法。购买者可依据使用规定USAGE POLICY使用任何可接受的付款方式通过安全连接通道来支付购买或租用软件拷贝的费用,例如使用信用卡(优选的私人权利保护方式)或某些匿名现金方式支付购买费用。匿名现金支付方式是一种电子支付方式,这种方式不会泄露支付者的身份。像AmericanExpress Corporation这些信用卡公司提供某些有限形式的匿名信用卡,用这种匿名信用卡付款时,出售方不知道购买方是何身份,但American Express Corporation知道付款者的身份。软件拷贝SW的使用规定是出售方或某些组织为管理软件拷贝的使用方式而制定的一组规章制度。具体的规定可包括非限定性使用、200次的使用或从购买之日起为期一个月的使用期限,但具体的规定并不局限于这些种类。在本发明中,与软件拷贝SW相关的使用规定是由监督程序211强制执行的。操作接下来执行步骤1102。
在步骤1102,购买者建立软件拷贝识别结构S=(NAME_SW,ID,HASH(SW),USAGE_POLICY,NONCE),但购买者不泄露结构S。NAME_SW是所购或所租用软件拷贝SW的名称。ID是标识表标识值604。SW是本发明特别保护的出售方软件拷贝;例如,SW是被称为Spread的程序编码。HASH(SW)是指定的随机函数H对软件SW指定部分计算出的随机函数值。软件拷贝SW的部分是指组成SW的文本或数据,或者是这些文本或数据的集合;这些文件的数据不一定是连续的,并且可以有重叠。NONCE被用来在同一软件被再次购买时保护购买者的私人权利。一个NONCE是一个随机选择的数字或数字串,该数字或数字串只出现一次。这一数字或数字串的选择要求在足够大的数据组中进行,这样就避免了重复的可能性。NONCE可通过诸如英特尔公司奔腾III结构所提供的热干扰方法来生成,或者NONCE可以取决于用户装置中某些内存地址的值。操作接下来执行步骤1103。
在步骤1103,购买者向出售方发出购买软件SW拷贝的订单SPO_SW,该订单包括(HASHCS,NAME_SW,HASH(SW),USAGE_POLICY)。NONCE和标识表标识值ID604被随机函数值HASH(S)所标注,NONCE和标识表标识值ID604不会泄露给出售方110。操作接下来继续执行步骤1104。
在步骤1104,出售方110决定是否同意将名称为NAME_SW的软件拷贝售出或租出,该软件拷贝的使用规定为USAGE_POLICY;在安全通讯过程中,软件SW为购买方生成随机函数值HASH(SW)。在本发明的另一实施方案中,购买方向出售方110发出付款证明。操作接下来执行步骤1105。
在步骤1105,如果确认成立,则接着执行步骤1106,否则继续执行步骤1110。
在步骤1106,出售方110对所收到的信息进行数字标注,由此生成SGN_Vendor(HASH(S),NAME_SW,HASH(SW),USAGE_POLICY),并将数字标注的这一信息发送给购买方。操作接下来执行步骤1107。
在步骤1107,一旦收到出售方110创建的数字标注信息,购买方用户装置中的监督程序211使用出售方的公用钥匙318来确认所收到的信息是经出售方数字标注的,并且与发给出售方的信息是相一致的。如果此前的确认全部成功的话,则监督程序211将软件识别结构S、出售方名称以及出售方数字标注的信息存储在标识表601中。与此同时,出售方名称、出售方标注的信息构成了与用户装置中SW的拷贝相关的标识605。对标注信息上数字特征的确认过程是使用标注者的公共特征开关进行的计算过程,当生成指定的结果时,这一确认可以证明这一数字特征是由所述的标注者所生成的,在这种情况下,这一确认过程被认为是成功的。如所有应该产生相等结果和所有应该产生不相等结果的比较分别达到了预期的结果,则两条信息间相应部分或这些部分的顺序间相等性或不等性的状态确认被认为是成功的。操作到此全部完成。购买方和出售方之间的安全通讯通道关闭。
在步骤1110,购买协议结束。操作全部完成。在建立的上述保护私人权利性的购买协议中,由于使用的是匿名通道以及匿名的付款方式,所有出售方即不知道购买方的名称,也不知道用户装置140上标识表601中的标识表标识值ID604。由于标识表标识值ID604包含在软件识别结构S中,而出售方只能收到软件识别结构的随机函数值,因此这隐去了标识表标识值ID604,从而保证了出售方不知道标识表标识值ID604。同时,借助于本文下面所描述的机理,出售方可以确保所购的带有标识605的软件拷贝将只能在用户装置140上运行,因为只有用户装置140的标识表标识值ID604与该标识的软件识别结构中的值相匹配。
废除和还回软件拷贝的标识在软件SW的使用过程中,有可能出现将软件拷贝还给出售方110,并取回返还软件的押金。软件的使用包括在用户装置140上安装、使用、执行、运行、连接、阅读、显示、观看、打印、复制、发送或访问软件拷贝,或用软件拷贝进行游戏,或从存储介质中检索信息或对存储介质进行修改;但软件的使用并不局限于这些方面。
当软件拷贝的拥有方希望将该软件转移到具有另一标识表标识值604的用户装置140上时,该拥有者需要将该软件返还给出售方。拥有方将软件返还给出售方110,并获得可用于购买新一套软件的信用证。
假定涉及到的软件被称为NAME_SW,这一软件拷贝的相关标识为TAG_SW605。用户装置140含有标识表601。标识表601含有标识表标识值ID604。标识TAG_SW存储在带有标识表标识值ID604的用户装置140的标识表601中。在购买软件过程中所用的软件识别结构是S。
图9表明的是废除标识605的步骤。
在步骤1201,用户装置140中的监督程序211从带有标识表标识值ID604的标识表601中删除标识TAG_SW605。操作接下来执行步骤1202。
在步骤1202,用户装置140通过安全通道呼叫出售方110,并发送标识TAG_SW605以及软件识别结构S。该呼叫即可由监督程序211进行,也可由在用户装置140上运行的购买程序205进行。操作接下来继续执行步骤1203。
在步骤1203,出售方110确认TAG_SW605和软件识别结构S是否正确地反应了软件购买过程所创建的数据。出售方对TAG_SW605中储存的数字特征进行确认,并确认随机函数值HASH(S)是否等于数字标注的TAG_SW605中所含有的相应值。出售方还将从软件识别结构S中读取标识表标识值ID604。
在步骤1204,如果所有这些确认是成功的,则继续执行步骤1206。如果确认失败,则继续执行步骤1205。
在步骤1205,协议被废除。操作全部完成。
在步骤1206,出售方110向用户装置140发送信用证,该信用证可换取经双方同意的货币数量,或换取某些指定的物品或换取某些服务。操作接下来继续执行步骤1207。
在步骤1207,将从用户装置140收到的TAG_SW604以及标识表标识值ID604发送给中央防护单元130。中央防单元将TAG_SW605存储在与标识表标识值ID604相关的表格中。
标识表601含有标识表标识值ID604,用户装置140含有标识表601,在用户装置140后来发出的至少一次呼叫中,中央防护单元130将要求监督程序211确认标识TAG_SW604是否真的已从标识表601中删除。本文将在以后对用户装置140所发出的后来呼叫进行说明。如果监督程序211的检验失败,则中央防护单元130废除标识表标识值ID604。
保护私人权利的呼叫由监督程序211启动并执行的用户装置140对中央防护单元130的呼叫会经常发生。根据软件拷贝是否已有一定的使用量,或者自上一次呼叫后是否已过了一定的时间,或者当网络建立起连接时,或者上述情况共同发生时,按照呼叫规定来启动对中央防护单元130的呼叫。在监督程序211起动后,也可很快要求进行呼叫。当绝对时间计数器所测得的时间与SGN(HASH(Immediately Previous Tag Table Time of ImmediatelyPrevious Call-Up,ID)中存储的时间差值超过了呼叫规定中所规定的值后,可以要求进行呼叫。这里的SGN_GC表示中央防护单元130的数字特征函数。HASH(Immediately Previous TT)表示监督程序211在最近一次呼叫中发给中央防护单元130的用户装置标识表的随机函数值。ID是这一标识表的标识表标识值604。
图10表明的是图7所示的标识表601的另一实施方案。在这一实施方案中,标识表601含有一个存储上面数字标注信息SGN_GC(HASH(Immediately Previous Tag Table),Time ofImmediately Previous Call-Up,ID)的区域(未画出);这一信息是中央防护单元在最近一次呼叫中发往用户装置140的。上一次的标识表在这里被称为TT_PREV601a,这一标识表也被存储起来,并是可以应用的。如果不存在含有标识表601a标识值ID604的上一次标识表,则监督程序211执行特殊的初始呼叫,该特殊呼叫创建含有标识表标识值ID604的标识表601。标识表头603还含有表明用户装置(内部)环境特征的区域,用户装置表征值610将规定这些特征。具体的用户装置表征值610包括用户装置处理ID的专用系列号、从用户装置数据结构衍生出来的特征值和数字值;这些值说明了文件系统的物理结构以及存储装置中的其他数据,但具体的用户装置表征值并不局限于这些方面。在用户装置的使用过程中,用户装置表征值610只在慢慢地改变。此外,所选择的用户装置表征值610不可能随着时间的变化而从一种设置值C变化到另一种差别很明显的设置值C_1,然后再从C_1变回到设置值C。
为了保护呼叫方网络地址的隐私权,呼叫可以使用匿名通道,例如使用加拿大蒙特利尔零知识系统公司提供的一种匿名通道进行呼叫。保护隐私权的呼叫绝对不会泄露用户装置140所使用的软件与用户装置140拥有者或使用者身份之间的关系。
图11A-B是表明执行保护隐私权呼叫步骤的流程图。图11A和图11B将结合图10进行说明。
首先参见图11A,在步骤1500,例如可使用Netscape公司提供的SSL协议在用户装置140和中央防护单元130之间建立起安全通讯通道。操作接下来继续执行步骤1502。
在步骤1502,在用户装置140上运行的监督程序211C通过安全通讯通道进行呼叫,并向中央防护单元130发送下列数据当前标识表601的随机函数值HASH(TT)、上一次呼叫中标识表601的随机函数值HASH(TT_PREV)以及标识表标识值ID604。操作接下来继续执行步骤1503。
在步骤1503,中央防护单元130检验HASH(TT_PREV)是否与上一次的HASH(TT)值相等,HASH(TT)是中央防护单元130从与标识表标识值ID604相关的用户装置140处接收到的数据。如果它们相等,则继续执行步骤1505。如检验结论为“否”,则在不同用户装置140上的两个标识表601共有相同的标识表标识值ID604,这表明有可能出现了盗版,操作接下来执行步骤1504。
在步骤1504,中央防护单元130发出数字标注信息SGN_GC(“present identifier is bad”,HASH(TT_PREV),HASH(TT),ID)。一旦收到这一信息,监督程序211将确认中央防护单元的数字特征,并确认数字标识信息中所含的随机函数值以及标识表标识值ID604是否等于监督程序211在当前呼叫中所发出的相应值。如果确认成功,则监督程序211宣布含有标识表标识值ID604的整个标识表601是无效的。在宣布无效后,软件识别结构中含有标识表标识值ID604的标识605不能用于软件的使用。中央防护单元130拒绝来自用户装置140的任何再次呼叫,该用户装置140含有标识表601,标识表601中含有标识表标识值TD604。操作到此全部完成。
在步骤1505,中央防护单元130使用在当前呼叫中接收到的HASH(TT)值替换其储存的与标识表标识值ID604相关的HASH(TT)值。操作接下来继续执行步骤1506。
在步骤1506,中央防护单元130向用户装置140发出数字标注的继续信息,该继续信息含有接收到的信息组SGN_GC(HASH(TT),TIME OF CALL_UP,ID)。操作接下来继续执行步骤1507。
现在继续说明图11B,监督程序211希望在规定的时间内收到继续信息104,例如在1分钟内收到继续信息104。在步骤1511,监督程序211检验是否在该时间期限内收到继续信息104。如果是,则操作继续执行步骤1507。如果不是,则操作继续执行步骤1510。
在步骤1507,一旦收到数字标注的继续信息,则监督程序211确认从中央防护单元130收到的HASH(TT)的值是否等于监督程序211在其呼叫信息中所发出的相应值。监督程序211还确认继续信息中收到的ID值是否等于标识表601中的标识表标识值ID604。还可以进行其他的检验,这些检验将结合图13A-13B进行更详细的说明。
此外,监督程序211使用中央防护单元的公用钥匙对从中央防护单元130继续信息104中收到的数字特征进行确认。公用钥匙318被数据的接收方用来检验和判别这一特征的真伪。如果上述所有确认是成功的,则操作继续执行步骤1509。如果确认失败,则操作继续执行步骤1510。
在步骤1509,监督程序211使用HASH(TT)替换HASH(TT_PREV),并允许使用软件。用户装置140中监督程序211与中央防护单元130之间的安全通讯通道被关闭。操作全部完成。
在步骤1510,监督程序211重新发送其继续信息,操作接下来继续执行步骤1500。
呼叫有可能没有完成,例如由于用户装置140与中央防护单元130之间的通讯中断而造成呼叫的停止。在这种情况下,为了正确保存中央防护单元130和监督程序211的HASH(TT)以及HASH(TT_PREV),在本发明的实施方案中采用了如下规则。一旦中央防护单元130发出了继续信息104,则中央防护单元130就为HASH(TT_PREV)设定一个新的值,不必等待来自监督程序211对收到该信息的确认。只有收到继续信息104后,监督程序211才对用于呼叫的HASH(TT)和HASH(TTPREV)值进行更新。如果监督程序211没有收到继续信息104,则监督程序211将重新发出原始呼叫信息1510。一旦收到最近的呼叫信息,则中央防护单元130将重新发出它已发过的继续信息104。为标识表601进行的呼叫虽已发出,但这一呼叫并未完成,监督程序211是否允许继续使用与标识表601中标识相关的软件在上面的呼叫规定中指定。
含有标识表标识值ID604的标识605与软件拷贝之间建立的联系提供了保护机制,对这些保护机制的攻击方式是使几台用户装置同时带有标识表601,而这些标识表601含有相同的标识表标识值ID604。如果某个潜在的软件盗版者这样做的话,该盗版者就可在多台用户装置140上使用与标识605相关的软件拷贝。图11A-11B所说明的呼叫过程可阻止这样的直接攻击,因为中央防护单元130对监督程序211所发出的随机函数值HASH(TT_PREV)与中央防护单元130中所存储的相应值之间的比较可以避免同一标识表标识值ID604从不同用户装置140进行的呼叫穿插出现;其中中央防护单元130所存储的相应值来自于标识表标识值ID604的上一次呼叫。
上述的攻击方法可通过使上述每一个企图盗版的用户装置140将其随机函数值传递给下一个用户装置140来加以改进,而下一个用户装置140被要求对同一标识表标识值ID604进行呼叫。本发明提供多种方法来防止这种方式的攻击。
在本发明的某一实施方案中,标识表头603含有用户装置专用表征值610。具体的用户装置表征值包括从用户装置文件系统衍生出的数据、从用户装置B型树状结构衍生出的数据或者其他与用户装置专用数据结构以及在磁盘或其他存储介质上数据相关的参数和数据。但具体的表征值610并不局限于这些类型的数据。在生成用户装置表征值610中所用到的特征值的性质是这些特征值是用户装置专用的,并且变化很慢或根本不发生改变。如果用户装置的处理器或其他硬件或软件组件含有唯一的系列号或其他唯一的可读标识,则出现在用户装置标识表头603中的用户装置表征值610可含有一些或全部这些系列号或标识。
在这一实施方案中,监督程序211在以往K次为标识表标识值ID604所进行的呼叫中发送了标识表601TT_PREV_1...,TTPREV_K,监督程序211在用户装置140中储存并更新标识表601的指定数字K,例如K=5。中央防护单元130存储并更新相应的随机函数值H_1=HASH(TT_PREV_1),...,H_K=HASH(TTPREV_K)表。
现在返回到图11A,在步骤1502,在呼叫期间,监督程序211向中央防护单元130发送下列数据当前标识表601的随机函数值HASH(TT)、上一次呼叫中标识表601的随机函数值HASH(TT_PREV_1)以及标识表标识值ID604。操作接下来继续执行步骤1503。
在步骤1503,一旦接收到来自监督程序211的呼叫信息,则中央防护单元130确认所收到的随机函数值HASH(TT_PREV1)是否等于中央防护单元130存储的值H_1。如果确认失败,则操作继续执行步骤1504。如果上述确认成功,则操作继续执行步骤1505。
在步骤1505,中央防护单元130通过将当前接收到的值放置在表格的顶端并除去表格中最下面的值来更新随机函数值表格。操作接下来继续执行步骤1506。
在步骤1506,中央防护单元130向监督程序211发出数字标注的继续信息104,该继续信息包括SGN_GC(H_1,...,H_K,TIME OF CALL_UP,ID)。
由于中央防护单元130已经更新了它所接收的随机函数值表,所以现在的H_1等于在该呼叫中接收到的随机函数值HASH(TT)。操作接下来继续执行步骤1511。
现在继续参见图11B,在步骤1507,一旦收到上面的继续信息104,则监督程序211使用在以往K次呼叫中发送的标识表确认H_1是否等于HASH(TT),H_2是否等于HASH(TT_PREV1),...,H_K是否等于HASH(TT_PREV_K-1)。如果确认成功,则继续执行步骤1508;否则,则继续执行步骤1510。
在步骤1507,中央防护单元130对继续信息104上的数字特征进行确认。如果确认失败,则操作继续执行步骤1510;否则,操作继续执行步骤1509。
在步骤1509,监督程序211对用户装置140储存的标识表头TT、TT_PREV_1、TT_PREV_K-1中所含有的用户装置表征值610进行确认。然后,监督程序211执行用户装置表征值检验。
在步骤1510,所收到的继续信息104与当前的呼叫不相符,监督程序211重新启动呼叫过程。
图12表明的是用户装置表征值的检验过程。在步骤1000,如果用户装置表征值所规定的某一数值在两次连续呼叫的时间间隔中不希望发生改变,则监督程序211不对以往连续发送的标识表头601中所含有的这一规定值进行检测,则用户装置表征值检验失败。同样,如果监督程序211对以往发送的三个标识表601检测,并发现第一个标识表头含有的用户装置表征值设定值为C,第二个标识表601所存储的相应值却是明显不同的C_1,而第三个标识表601所存储的相应值又回到了设定值C,则用户装置表征值检验失败,确认过程随之失败。
在步骤1003,监督程序确定是否有其中一种状态成立。如果有,则操作继续执行步骤1004,如果没有,则操作继续执行步骤1005。
在步骤1004,用户装置表征值检验失败,操作继续执行步骤1508(图11B)。
在步骤1005,用户装置表征值检验成功,操作继续执行步骤1508(图11B)。
现在回到图11B,在步骤1508,如果用户装置表征值确认失败,则操作继续执行步骤1510。如果用户装置表征值成功,则操作继续执行步骤1509。
在步骤1510,监督程序重新发出呼叫。在本发明的另一实施方案中,监督程序可以宣布含有标识表标识值ID604的整个标识表601无效。有标识表601被宣布无效之后,在软件识别结构中没有带有标识表标识值ID604的标识可被用来批准对软件拷贝的使用。
加强型的保护私人权利呼叫图13A-B表明的是另一种进行保护私人权利呼叫的方法。图16A-B所示的方法在图11A-B所示的实施方案中加入了其他的机制。
现参见图13A,在步骤1600,监督程序211通过匿名通道启动呼叫。操作接下来继续执行步骤1602。
在步骤1602,监督程序211发出呼叫信息,该信息包括当前标识表601中的随机函数值HASH(TT)、前一次呼叫中标识表601所含的随机函数值HASH(TT_PREV)、标识表标识值ID604、用户装置140中时钟的当前时间读数以及其他一些信息组;这些信息组将在以后加以说明。操作接下来继续执行步骤1603。
在步骤1603,中央防护单元130确定该呼叫信息是否与已经收信的某一信息相同。如果相同,操作继续执行步骤1604。如果不同,则操作继续执行步骤1605。
在步骤1604,中央防护单元130重新发送以往发送过的继续信息。至此,操作全部完成。
在步骤1605,中央防护单元130检验所收到的当前时间是否与中央防护单元时钟的时间相一致。中央防护单元还将检验该标识表标识值ID604的当前呼叫时间与上次呼叫时间的时间差是否与中央防护单元所记录的差值相符,并检测该时间差值是否超过了呼叫时间规定允许的最大间隔值,或是是否小于呼叫间规定允许的最小间隔值。中央防护单元还将检验HASH(TT_PREV)是否等于HASH(TT)的最新值;这一最新值是中央防护单元从用户装置140接收到到的,并与标识表标识值ID604相关。操作接下来执行步骤1606。
在步骤1606,如果所有的确定都成功,则操作继续执行步骤1608。如果不是,则操作继续执行步骤1607。
在步骤1607,中央防护单元发出一则信息,该信息表明正在发送的标识表标识值ID604是无效的。操作至此全部完成。
在步骤1608,中央防护单元使用它在当前呼叫中接收到的HASH(TT)来替换它存储的与标识表标识值ID604相关的HASH(TT)。操作接下来继续执行步骤1609。
在步骤1609,中央防护单元向用户装置140发出数字标注的继续信息104,该继续信息包括所有当前和以往发送的超级校验程序序列的随机函数值HASH、当前和以往标识表H_1,...,H_K的随机函数值序列、标识表标识值ID604、中央防护单元时钟的时间读数以及标识表标识值TD604的失效标识(如果有);超级校验程序将在以后进行说明。继续信息104的未标注部分是当前发送的新超级校验程序表,本文将在以后对此进行说明。
现在继续说明图13B,在步骤1610,一旦收到继续信息104,则监督程序211将确认在继续信息104中所接收到的标识表标识值ID604是否等于此次呼叫中标识表601所含的标识表标识值ID604。监督程序211还将使用在以往K次呼叫中发出的标识表601来确认H_1是否等于HASH(TT),H_2是否等于HASH(TT_PREV_1),...,H_K是否等于HASH(TT_PREV_K_1)。监督程序211还将根据这些标识表中的用户装置表征值进行用户装置表征值检验。监督程序211还将确认继续信息104中所含的失效标识不在当前的标识表TT中。监督程序211还检验标识表610在时间变化的过程中表明了一个非降低的耗用量,即与每个标识相关的标识表601中的使用值是非降低性的(即或者增加或者保持不变)。最后,监督程序211使用用户装置140中存储的中央防护单元公共数字特征钥匙来对继续信息104中标注部分上的中央防护单元数字特征进行确认。操作接下来执行步骤1611。
在步骤1611,如果所有确认是成功的,则操作继续执行步骤1613,如果不是,则操作继续执行步骤1612。
在步骤1612,呼叫信息被再次发出。在本发明的另一实施方案中,可将标识表标识值ID作废,从而使软件不能在用户装置140上使用。
在步骤1613,监督程序211将HASH(TT)赋予HASH(TTPREV),并将超级校验程序表更新,同时将用户装置的时钟设定为所收到的当前时间。操作至此全部完成。
时钟图14表明了时钟部分的组件。在呼叫过程中所执行一个标准,该标准规定自上一次呼叫发生之后经过的时间为一特定值。盗版者有时通过重新设置系统时钟来绕过这一标准。阻止这一攻击的机理是向多方面传送时钟的前进情况。举例而言,可以假定两次呼叫间的最大时间间隔为N分钟。每当用户装置140中的系统时钟1420走过这一限度值时就会生成一个事项,该事项将使时间事项计数器1410的计数值增加。在收到继续信息104后,时间事项计数器1410被重新设置为0。根据这种方式,即使盗版者将时钟重新设置成以前的时间,时间事项计数器1410也将记录下每一分钟(或最大分钟数)。可以使用不以分钟计时的时间间隔来对其他的事项计数器进行更新。
在本发明的另一实施方案中,中央防护单元发往用户装置140的继续信息104包括从中央防护单元时钟读取的当前时间值。一旦收到并确认了继续信息104,监督程序211将用户装置140中的时间事项计数器1410设定为所收到的当前时间值。此后时间事项计数器1410按上面所述的向前运行。
超级校验程序的使用和下载用户可在用户装置140上写入用户自己的软件、接收其他免费的软件并安装这些与标识605无关的这些软件拷贝。但在取消了它们的标识605之后,用户装置140有可能在用户自编或免费软件的伪装下安装某些出售方所生产软件的盗版软件。此外,没有道德的出售商可能对软件进行盗版,在对软件进行修改后,将带有盗版出售商标识的盗版软件销售出去。在本文中任何形式的盗版软件都被称为“侵权软件”。除了使用侵权软件之外,用户装置140有可能通过不按照该软件拷贝标识中所包括的使用规定使用该软件拷贝来对合法购买或租用软件拷贝的使用权进行侵权,这种侵权被称为“对软件使用的侵权”。一个具体侵犯使用权的实例是,租来的游戏盘规定只能玩五次,但用户装置140企图玩六次。侵犯使用权的另一实例是,当软件拷贝是一幅数字图像时,该软件拷贝的使用规定不允许将该图像打印成硬拷贝,但用户装置140试图将图像打印出来。在本发明中,通过使用超级校验程序机制可以检测到所有上述侵权行为。
在本发明中,超级校验程序是数据和某些计算机程序的集合体,超级校验程序的目的在于能对用户装置140上的侵权软件以及侵犯使用权的行为进行检测并阻止侵权的发生。在本发明的某一实施方案中,超级校验程序还包括地址信息,该地址信息被用来指定软件拷贝的某些组成部分,而超级校验程序中所含有的某个程序要对这些指定的部分计算出一个数值。具体的地址信息例如是对含有“加”或“乘”运算符号的每条指令进行的说明。超级校验程序中所含的程序首先根据地址信息从软件拷贝中提取软件拷贝中含有“加”和“乘”运算符号的指令的顺序,然后对这一顺序执行例行程序,但将指令中的地址或注册部分剔除出来。在本发明的某一实施方案中,超级校验程序还含有某一数值或某一条件,该数值或条件将超级校验程序中程序对软件拷贝某一部分所计算出的值与超级校验程序中所含有的某一数值发生联系。举例而言,超级校验程序中含有的值为15和32,所含的条件是检测的“加法”指令数量超过15,“乘法”指令的数量超过15但小于32。超级校验程序中的程序确认所指定的条件是否成立。出售方或出售方的代理方可以发现在用户中存在的对出售方权利造成侵犯的软件拷贝。出售方可对这些侵权软件的使用实施合法的禁止。使用本文下面将要说明的部分或全部机制,出售方可准备适当的超级校验程序,并将超级校验程序存放在中央防护单元中。在用户装置140向中央防护单元发出呼叫期间,中央防护单元向用户装置140发出该超级校验程序。用户装置140中的监督程序211执行超级校验程序中指定的计算和检验,并检测是否有侵权软件的使用。当存在侵权使用的情况时,超级校验程序将中止该侵权使用。相似的是,出售方可以准备好用于检测并阻止合法软件被侵权使用的超级校验程序,并将它存放在中央防护单元中。用户装置140在呼叫期间接收超级校验程序,用户装置140中的监督程序211使用该超级校验程序对软件拷贝的侵权使用行为进行检测并中止这些侵权使用行为。
超级校验程序中所含的一种类型数据就是针对侵权软件SW某些部分所计算出的随机函数值表。H是超级校验程序中指定的随机函数。LHSH(SW)是用指定的随机函数H对软件SW指定部分所计算出的随机函数值表。软件SW的某一部分是指构成SW的文本或数据,或者是指构成软件SW的文本或数据部分的集合,其中这些部分不一定连续的,它们可以有重叠。
随机函数F是将数据X影射到数据F(X)上的数学函数,这样情况下,如果X和Y是相等的,则很可能F(X)和F(Y)是不等的。在一个具体的随机函数中,X可以是一个字节序列。P是一个任意选定的64位素数,但选定之后就保持不再改变。字节序列X被看作是一个数字(写到基数256,其中字节是该数字的位数),F(X)=Xmodp。因此,无论X有多长,F(X)都是一个64位的数字串。另一个具体的随机函数是特征函数I(X)=X,这一函数只是简单地复制数字串X。
如果LHASH(SW)是中央防护单元发往用户装置140的超级校验程序中所含有的随机函数值表,则监督程序211使用这一表通过进行随机函数值检验来检测是否有侵权的软件或对软件的侵权使用。在同一地址随机函数值检验中,监督程序211使用超级校验程序中指定的随机函数H来计算用户装置140所使用软件SW_1中某些部分的随机函数值,SW_1这些部分与SW的部分是相互对应的,而SW这些部分的随机函数值在准备LASH(SW)时已被计算过了。举例而言,如果SW是一个文字矩阵,SW的某一部分被指定是SW某些词第一个字母组成的序列,这些词开始于第1000个词终于第2000词;则SW_1中相对应的部分是SW_1中始于第1000个词终于第2000个词的每个词第一个字母组成的序列。SW_1被计算出的同一地址随机函数值表是LHASH(SW_1)。通过比较在相应地址中LHASH(SW)和LHASH(SW_1)所含的随机函数值可继续进行同一地址的随机函数值检验,即LHASH(SW)中的第一值与LHASH(SW_1)中的第一值进行比较,第二个值与第二个值进行比较,以此类推。如果这些比较值的超级校验程序中所指定的数字有一个以上是相等的,则监督程序继续操作,并认为SW和SW_1是相等的,或者SW_1是SW稍加改变的形式。
在通用地址随机函数值检验中,监督程序211根据超级校验程序中的规定选择用户装置140上运行软件SW_1的某些部分,并使用H计算出所选择部分的随机函数值L(SW_1)。举例而言,所选择的部分可以是SW_1中一系列连续单词的第一个字母组成的序列,其中每个系列由1000个词组成。通过对LHSAH(SW_1)和L(SW_1)共有的随机函数值进行计数可以继续进行通用地址随机函数值检验;这些共有的随机函数值与这些表中的地址无关。然后监督程序211检验所得到的计数是否大于超级校验程序中所规定的数值;如果是,则监督程序211在假定SW和SW_1是相等的或SW_1只是SW稍加变更的形式的基础上继续执行操作。
超级校验程序还包括加权值和某些规定,这些规定表明了监督程序211应在何时执行超级校验程序中所含有的各种检验。如果用户装置140中储存的两个超级校验程序SPT_1和SPT_2分别与加权值W=1和W=7相对应,则该用户装置140所含的监督程序211每执行SPT_2所含的检验7次以及运行SPT_2中所含程序7次,监督程序211才执行SPT_1一次。如果超级校验程序包括程序P,则超级校验程序中的规定可以指定当运行超级校验程序时监督程序要执行P所要遵从的条件。一个具体的规定是,只有当被判别是否是侵权软件的SW_1大小大于规定的数值时,才能执行P。
超级校验程序还包括由监督程序211调用的计算机程序,监督程序211调用该计算机程序是为了检测用户装置140上所用的软件SW_1是否为侵权软件,或者是为了检测用户装置140上使用的合法软件是否没有按其使用规定使用。具体的检测软件包括以下软件,但具体的检测软件并不局限于此某个实施盗版的出售方通过获取另一出售方的合法软件SW并以SW_1的解密版销售软件SW来侵犯另一出售方的权利,其中每套安装的软件拷贝是由不同的解密钥匙进行解密。这种攻击会突破上述随机函数值检验机制。为了反击这种攻击,合法的出售方建立某种超级校验程序,该超级校验程序含有适当的软件SW某些部分的随机函数值表LHASH(SW)以及解密程序。当用户装置140使用侵权软件SW_1时,监督程序211调用解密程序,该程序可识别用于将SW_1转成可执行状态的解密钥匙。一旦SW_1被解密,则监督程序211按上面所述的方式使用超级校验程序中所含的LHASH(SW)执行随机函数值检验。
超级校验程序中所含的其他类型的程序对用户装置140中所用软件拷贝SW_1的操作特征进行监测,并将观测到的特征与超级校验程序中所含的数据进行匹配检验。应用程序具体的操作特征包括该应用程序正在实施的专有程序库调用、这些调用的频率以及触发这些调用的条件。对于选择适当的特征而言,如果所观察到的软件SW_1操作特征比超级校验程序中规定的参数值更接近于合法出售方软件SW的操作特性,则证明SW_1是对SW的侵权软件。
另一对侵权进行检测的程序是用于对可视游戏软件侵权的检测。在这一实例中,合法的游戏SW含有一幅龙的画面。侵权的软件SW_1是游戏SW的改写版;对用户而言,这二个软件看起来是一样的。因此,SW_1所展现的龙与SW所展现的龙是同样的,或者几乎是同样的。在这一情况下,超级校验程序所含的侵权检测程序对在用户装置140上运行的游戏软件SW_1的执行过程进行监测,并捕捉到SW_1所生成的帧缓冲内容。侵权检测程序将捕捉到的帧缓冲内容与超级校验程序中所储存的像素矩阵进行比较,该像素矩阵代表游戏软件SW中龙的图像。如果帧缓冲内容和超级校验程序中所储存的像素矩阵相互的接近程度超过了超级校验程序中所规定的参数,则侵权检测程序认定SW_1是侵权软件,并继续进行工作。
在本发明的另一实施方案中,超级校验程序可包括另一程序,该程序将检验软件拷贝C是否是受保护软件SW的变化版本。具体的这种程序可对软件SW的某些统计性质进行计算,例如对SW的迭代数量、过程数量或浮点指令数量进行计算;然后确定软件拷贝C是否具有相同的数量。如果有相同的数量,则证明软件C是受保护软件SW的异形版本。
中央防护单元在继续信息140中发送超级校验程序。这些被发送的超级校验程序被称为新超级校验程序。以前发送的超级校验程序或已安装在用户装置中的超级校验程序被称为旧超级校验程序。这二种超级校验程序被合称为总超级校验程序。中央防护单元还计算总超级校验程序的随机函数值,这一随机函数值被标记为HASH(总超级校验程序)。
不可变随机函数H是一个校验函数;该函数的性质是,在给定X的情况下很容易计算H(X),但该函数使难在X与Y不同的情况下产生H(X)=H(Y)的结果。“使难”一词是指在目前的技术水平下,对X这样大小的变量进行计算所需的时间实际上是不可行的。联邦信息处理标准SHA_1可提供具体的不可变随机函数实例,该标准由国家标准协会出版。在这一实施方案中,公开的不可变随机函数被简称为HASH。
只有当随机函数值与所接收的超级校验程序的随机函数值计算结果以及用户装置中已存在的超级校验程序的随机函数值计算结果相等时,监督程序211才接受继续信息104。在本发明的另一实施方案中,HASH(新超级校验程序)被发送,中央防护单元指示用户装置140删除以前储存的超级校验程序。在这种情况下,只有当接收到的随机函数值HASH(总超级校验程序)与所接收的超级校验程序的随机函数值计算结果相等时,监督程序211才接受继续信息104。
在本发明中还含有这些机理的其他变化形式。一种变化是在超级校验程序中略去加权值,这样监督程序211选择执行的所有超级校验程序具有等同的条件概率。
在另一种变化形式中,用户装置上的监督程序211可根据软件拷贝SW正在被侵权的迹象要求中央防护单元发送用户装置140所用软件拷贝SW的超级校验程序。这种变化形式只有当被认为不会对私人权利造成侵犯的情况下才可使用,因为这种变化形式识别用户装置140正在非法使用的软件。
在另一种变化形式中,当对某一计算机程序建立超级校验程序时,随机函数值计算结果可以处理几种等同的运算符号。当不同的运算符号基于自变量有基本相同的函数功能时,随机函数值计算结果的这种功能是十分有用的。此外,与超级校验程序相关的程序可以忽略某些非操作性指令,或者忽略某些指令的某些部分;比如忽略指令中所含的内存地址或注册地址。
一旦检测到用户装置上使用了侵权软件或者检测到对合法软件的侵权使用,监督程序211可采取行动中止软件的使用。对用户装置140上侵权软件所采取的行动具有多种方式,在09/305,572号美国专利申请中对这些行动方式做了说明,该美国专利申请于1999年5月5日提交,在此通过引证被并入本文。这些行动包括向用户装置140发出警告信息直至关闭用户装置140。一种变化形式是要求中央防护单元进行引导。在本发明的某一实施方案中,不可能对使用侵权软件的用户采取合法的行动,因为在中央防护单元呼叫期间每个用户装置140是处于匿名状态的。此外,对用户装置140存在有侵权软件的检测只在用户装置140内有效,这一检测不被泄露给任何外部的实体。
惩罚性措施在某些时间用户装置140没有遇到中央防护单元(中央防护单元是高度分散的,所以当出现网络故障时可发生这种情况)。在这些情况下,即使用户装置140在应该发出呼叫时没能发出呼叫,监督程序211所采取的措施也不能通过增加措施的力度来中止用户装置140上的操作过程。监督程序211可实施下列惩罚性措施(1)使装置的硬盘失能;(2)使显示单元的颜色失效;(3)减少虚拟内存的空间;(4)用许多小文件充满磁盘。
对于这些惩罚性措施而言,解除惩罚性措施的方法存在被称为LOCFILE的文件中,该文件使用中央防护单元中的公用钥匙进行解密。所进行的下一次呼叫中,中央防护单元对LOCFILE进行解密,并将它做为继续信息104的一部分发回。监督程序211使用LOCFILE中的解除方法使用户装置140回到最大操作负荷状态。
批准对软件拷贝的使用图15表明的是确认步骤的流程图,这些步骤将检验软件拷贝是否可以被使用。
在步骤1301,用户装置140使用软件拷贝SW(举例而言,如果该软件是一个程序,则用户装置140执行该程序)。操作接下来继续执行步骤1302。
在步骤1302,用户装置140中的监督程序211使用用户装置140中所储存的一个或多个超级校验程序对软件拷贝SW进行检验。如果超级校验程序中规定的随机函数值检验以及超级校验程序中所含程序的执行结果证明SW是一套侵权软件拷贝或者证明SW是出售方提供的合法软件,则该超级校验程序被认为是与软件拷贝SW相匹配的。如果超级校验程序不相配,则操作继续执行步骤1303。
在步骤1303,进行一项检验以确定与软件拷贝SW相关的标识605是否存在于用户装置标识表601中。如果不存在,操作继续执行步骤1306。如果在步骤1303中找到了与软件拷贝SW相关的标识,则继续执行步骤1307。
在步骤1304,进行一项检验以确定与软件拷贝SW相关的标识605是否存于用户装置标识表601中。如果不存在,则操作继续执行步骤1305。如找到了与软件拷贝SW相关的标识,则继续执行步聚1310。
在步骤1305,监督程序批准对软件拷贝SW的使用。操作过程至此全部完成。
在步骤1306,软件拷贝被认作是侵权软件,不允许对此软件进行使用。操作至此全部完成。
在步骤1307,标识中所含的出售方的名称(或标识中用于签署购买订单的数字特征的拥有方)与所有相匹配的超级校验程序中所含的出售方名称进行校验。如果这些名称中有任何一个不匹配,则软件拷贝SW被附上了错误的标识,操作接下来继续执行步骤1306。如果匹配的超级校验程序中所含有的所有出售方名称与标识中所含的出售方名称相等,则操作继续执行步骤1310。
在步骤1310,要进行几项测试。首先是计算软件拷贝SW的随机函数值,并将计算结果与标识中所含的随机函数值进行比较。其次是对标识中的使用规定进行检验以确认当前对软件拷贝的使用是经过允许的。操作接下来继续执行步骤1315。
在步骤1315,对测试的结果进行确认。如果所有的确认成功,则操作继续执行步骤1305。如果不是,则操作继续执行步骤1306。
操作系统之外的监督程序在本发明的某一实施方案中,监督程序211或是操作系统的一部分,或是与操作系统相连。在本发明的另一实施方案中,一个或多个监督程序211可寄存在操作系统之外。监督程序211必须存在,这可以在用户装置140上使用本发明所保护的软件拷贝。通过将某些进程加入到软件拷贝所需的监督程序211中即可实现这一点。举例而言,监督程序211中的进程可以执行使用软件拷贝所需的多个操作系统调用。此外,每个监督程序211都进行标识检验过程。由于购买和收回独立于操作系统,所以这二事项不会改变。
零信息呼叫图16A-B是表明另一种呼叫方法步骤的流程图。
在图16A-B所示的本发明另一实施方案中,呼叫期间所发出的信息量比图11A-B所示的实施方案中呼叫所发出的的信息量少。在图16A-B所示的实施方案中,在呼叫期间用户装置140发向中央防护单元的信息与用户装置140中所安装的软件以及数据状态无关。
该实施方案认定已经存在监督程序211可安全读取的标识表标识值ID604。该标识表标识值ID604来自于稀疏组,其作用是避免对服务攻击的拒绝。呼叫按上述的呼叫规定进行。购买、撤回以及软件拷贝使用的生效均按上述进行。唯一可以改变的协议就是呼叫本身。与保护私人权利的呼叫相似,零信息呼叫也是通过安全的匿名通讯通道进行。
对该协议的一个特殊的概念是“早期呼叫”概念。早期呼叫是在针对同一标识表标识值ID604所发出的上一次呼叫信息后不到MinDif分钟内出现的带有标识表标识值ID604呼叫信息的呼叫,其中MinDif是呼叫规定中的参数。
现在参见图16A,在步骤1700,可使用图11A-B所示的SSL协议在用户装置140和中央防护单元之间建立起安全通讯通道。操作接下来继续执行步骤1702。
在步骤1702,用户装置140中的监督程序211向中央防护单元发出标识表标识值ID6014和当前时间值CurT。监督程序211保留这一当前时间值CurT。在本发明的另一实施方案中,监督程序211还可发送NONCE值N。操作接下来继续执行步骤1703。
在步骤1703,中央防护单元确认时间值CurT是否与中央防护单元中所记录的时间相近,并确认中央防护单元上一次收到带有标识表标识值ID604呼叫信息的时间不是太近,即上一次的呼叫时间至少比CurT早MinDif分钟,其中MinDif是呼叫规定中的参数。如果是这样,操作继续执行步骤1706。如果不是,则操作继续执行步骤1704。
在本发明的另一实施方案中,即使当前带有标识表标识值ID604的呼叫是早期呼叫,操作仍可继续执行步骤1706。在这一实施方案中,每台用户装置140都会分配到早期呼叫,例如每天分配到5次早期呼叫。如果早期呼叫的次数不超过分配值,则中央防护单元不将其当做早期呼叫处理,中央防护单元继续执行步骤1706。
在步骤1704,中央防护单元不向用户装置140返回继续信息104。操作至此全部完成。
在步骤1706,中央防护单元记录下当前呼叫的时间,并将该时间与标识表标识值ID604相连。中央防护单元生成数字标注信息SGN_GC(ID,CurT,N,HASH(总超级校验程序)),其中总超级校验程序是由扇区超级校验程序使用和下载方法所规定。中央防护单元发往监督程序211的继续信息包括数字标注信息和新超级校验程序。操作接下来继续执行步骤1707。
现在继续参见图16B。在步骤1707,一旦收到继续信息104,监督程序211使用中央防护单元中的公用钥匙318来确认在继续信息104中所收到的中央防护单元的数字特征。监督程序211确认来自中央防护单元的标识表标识值ID604、NONCE值N以及CurT是否等于监督程序211在创建其呼叫时创建的相应值。监督程序211还可选择检验CurT是否接近于监督程序211所记录的时间。最后,监督程序211计算其已收到的所有超级检验程序的随机函数值,其中包括计算当前收到的新超级校验程序的随机函数值。监督程序211还将确认继续信息104中的第4信息组HASH(总超级校验程序)是否等于计算出的随机函数值。操作接下来继续执行步骤1708。
在步骤1708,如果上述确认全部成功,则操作继续执行步骤1709。如果确认失败,则操作继续执行步骤1710。
在步骤1709,监督程序211将新超级校验程序附加在标识表601的现有超级校验程序上,并继续执行操作。
在步骤1710,监督程序211采取惩罚性措施,监督程序211和中央防护单元之间的安全通讯通道被关闭。
如果监督程序211从未收到呼叫信息的回应继续信息104,则监督程序211只是简单地再发出带有当前时间CurT的新呼叫信息(与保护私人权利呼叫方法的情况不同,这里并不是重复以前的呼叫信息)。当使用这种协议时,唯一在呼叫失败时需要保存的数据是购买方所购买的标识表标识值604和标识605。在这种情况下,下一次的呼叫信息含有一个说明,该说明指出由于所有旧的超级校检程序已经丢失,监督程序211需要全套的超级校验程序。对于标识表标识值ID604而言,可以分配给一定的呼叫失败次数。
虽然本发明是结合优选实施方案进行具体说明和描述的,但应该理解的是,在不脱离和超过本文所附权利要求所界定的本发明范围的情况下,本技术领域的技术人员可以对本发明实施方案的形式和细节做出各种修改。
权利要求
1.一种将第一软件模块与第二软件模块连接起来的方法,该方法包括以下步骤在所述的第一软件模块中存储公共钥匙;将所述公共钥匙拥有方使用数字方式标注的存根与第二软件模块关联起来;计算出所述第二软件模块某一部分的随机函数值;一旦使用所述的公共钥匙对所述存根上的数字特征进行了确认,并确认所述的随机函数计算值与所述数字标注存根所含的随机函数值相等后,将所述第一软件模块与所述第二软件模块连接起来。
2.如权利要求1中的方法,其中所述的第二软件模块是多个要进行连接的软件模块中的一个,所述的第一软件模块含有多个以前连接的软件模块。
3.如权利要求1中的方法,其中计算及确认步骤由专用的处理器执行。
4.一种将第一软件模块与第二软件模块连接起来的方法,该方法包括以下步骤在所述的第一软件模块中存储第一随机函数值;对所述第二软件模块所述内容的某一部分计算出第二随机函数值;在确认所述的第二随机函数值与所述的第一随机函数值相等后,将所述的第一软件模块与所述的第二软件模块连接起来。
5.如权利要求4中的方法,其中所述的第二软件模块是多个要进行连接的软件模块中的一个,所述的第一软件模块含有多个以前连接的软件模块。
6.如权利要求4中的方法,其中计算及确认步骤由专用的处理器执行。
7.一种用户装置,其包括如下第一存储模块;第二存储模块,软件模块储存在第二存储模块中,检验软件存储在所述的第一存储模块中,检验软件通过计算所述部分的随机函数值,并将计算出的随机函数值与检验软件中所存储的随机函数值进行比较来确认所述软件模块的某一部分是否是经过授权的。
8.如权利要求7中的用户装置,其中所述的存储模块很难通过软件工具加以修改。
9.如权利要求7中的用户装置,其还包括位于所述第一存储模块内的公共钥匙;位于所述第一存储模块内的另一检验软件;位于所述第二存储模块内的数字标注存根,该存根与所述的第二软件模块相关,所述的另一检验软件使用所述的公共钥匙对所述第二软件模块的某一部分计算出随机函数值,所述的数字标注存根含有计算随机函数值上的数字特征。
10.一种用户装置,其包括如下第一存储模块,其内部储存有公用钥匙和检验软件;第二存储模块,第二存储模块储存有软件模块以及与所述第二软件模块相关的数字标注存根。所述的检验软件使用所述的公共钥匙计算出所述第二软件模块某一部分的随机函数值;与所述第二软件模块相关的数字标注存根含有计算出随机函数值上的数字特征。
11.如权利要求10中的用户装置,其还包括位于所述第一存储模块中的随机函数值,其中所述的检验软件还通过计算所述部分的随机函数值,并将计算出的随机函数值与所述检验软件中所储存的随机函数值进行比较来确认所述第二软件模块的某一部分是否是经过授权的。
12.一种软件锁程序,其包括如下某个数值;某个进行计算的函数;对内存中所储存的软件模块进行检验的工具;这些工具通过使用所述的函数对所述软件模块的地址序列进行计算并对计算结果和所述的数值进行比较来执行检验过程。
13.如权利要求12中的软件锁程序,其中所述的函数是随机函数,所述的检验工具计算所述地址序列的随机函数值,并将计算结果与所述的数值进行比较。
14.如权利要求12中的软件锁程序,其还包括软件锁措施;实施软件锁措施的工具,这些工具根据所述比较的结果来执行软件锁中的措施。
15.如权利要求14中的软件锁程序,其中软件锁程序正在用户装置上面运行,所述的软件锁措施包括中止用户装置的操作。
16.如权利要求12中的软件锁程序,其还包括多个软件锁措施;至少执行一种措施的工具,这些工具根据所述比较的结果来执行软件锁中的措施。
17.如权利要求12中的软件锁程序,其还包括执行必备检验的工具;根据必备检验的结果来决定是否对所述软件模块的地址序列进行函数计算的工具。
18.如权利要求12中的软件锁程序,其还包括多个地址序列;多个存储的数值。
19.如权利要求18中的软件锁程序,其还包括多个软件锁措施;至少执行一种所述措施的工具,这些工具根据所述函数对所述多个地址序列计算出的值与所述储存进行比较的结果来执行所述的措施。
20.如权利要求18中的软件锁程序,其还包括多个内存地址;选择软件模块的工具;对所述内存地址中软件模块的运行开始时间和运行结束时间进行存储的工具。
21.如权利要求12中的软件锁程序,其中所述的软件锁程序是另一程序的软件锁区域中所存储的某个子程序。
22.如权利要求21中的软件锁程序,其中所述的子程序根据所述另一程序加载时的条件而被存储在某一地址的软件锁扇区内。
23.如权利要求21中的软件锁程序,其中所述子程序的地址在所述的子程序加载之后发生改变。
24.如权利要求21中的软件锁程序,其中对所述子程序的调用取决于所述另一程序加载时的条件。
25.如权利要求21中的软件锁程序,其中在所述子程序加载之后,对所述子程序的调用发生改变。
26.如权利要求14中的软件锁措施,其中所述的软件锁措施包括在软件锁区域内移动其他的软件锁子程序。
27.一种标识表,其包括如下标识表的标识,该标识带有某个数值;软件拷贝的标识,所述的标识含有所述的标识表标识值以及所述软件拷贝某一部分的随机函数值;数字标注信息,所述的数字标注信息含有所述的标识表标识值和随机函数值。
28.如权利要求27中的标识表,其中所述的标识还包括使用规定,所述的数字标注信息还包括使用规定。
29.如权利要求27中的标识表,其中所述的标识还包括名称,所述的数字标注信息还包括名称。
30.如权利要求27中的标识表,其还包括中央防护单元在中央防护单元以前呼叫中发出的标识表的随机函数值。
31.如权利要求27中的标识表,其还包括一个表头,所述的表头含有中央防护单元在中央防护单元以前呼叫中发出的继续信息。
32.如权利要求27中的标识表,其还包括所述软件拷贝的使用统计数字。
33.一种购买软件的方法,该方法包括以下步骤由购买者创建某一数据结构,该数据结构包括与用户装置中标识表相关的标识表标识值以及所述软件的标识;由所述的购买者计算出所述数据结构的随机函数值;购买者向出售者发出信息,所述的信息含有随机函数值以及所述软件的标识。
34.如权利要求33中的方法,其还包括以下步骤一旦收到所述的信息,所述的出售方使用数字对所述的信息进行标注,并将所标注的信息返回给所述的购买者;监督程序使用所述出售方的公用钥匙对所述标注信息上的数字特征进行确认;监督程序确认所述的标注信息含有所述购买者发出的所述信息。
35.如权利要求33中的方法,其还包括以下步骤在发送所述信息前,在所述购买方和所述出售方之间建立安全通讯通道。
36.如权利要求34中的方法,其还包括以下步骤在所述软件标识中存储所述软件某一部分的随机函数值;使用所述的监督程序确认所述软件标识中的所述随机函数值等于所述软件所述部分的随机函数值计算值。
37.如权利要求34中的方法,其还包括以下步骤使用所述的监督程序将所述软件的标识存储在所述的标识表中;其中所述的标识含有标识表标识值、所述的购买者创建的数据结构以及所述的标注信息。
38.如权利要求33中的方法,其中所述数据结构还包括使用规定,所述的信息还包括所述的使用规定。
39.如权利要求33中的方法,其中所述的数据结构还包括只出现一次的新随机选取值。
40.如权利要求33中的方法,其中所述的信息还包括对所述软件进行付款的证明。
41.一种取消用户装置中软件拷贝的方法,该方法包括以下步骤使用监督程序取消所述用户装置内标识表中与所述软件拷贝相关的标识,所述的标识含有数字标注部分以及标识表标识值;在所述用户装置与出售方之间建立通讯通道;所述的用户装置通过所述的通讯通道向所述的出售方发送所述的标识;所述的出售方使用出售方的公用钥匙对所述数字标注部分上的所述数字特征进行确认;由所述的出售方读取所述的标识表标识值。
42.如权利要求41中的方法,其还包括以下步骤所述的出售方向所述标识的购买方发出信用证书。
43.如权利要求41中的方法,其还包括以下步骤所述的出售方向中央防护单元发送所述的数字标注部分以及所述的标识表标识值;中央防护单元存储所述标识的数字标注部分;所述的中央防护单元将所述标识的数字标注部分与所述的标识表标识值连接起来。
44.如权利要求43中的方法,其还包括以下步骤所述的中央防护单元向所述的用户装置中所述监督程序发送继续信息,所述的继续信息包括所述标识的所述数字标注部分以及所述的标识表标识值。
45.如权利要求44中的方法,其还包括以下步骤所述的监督程序确认带有所述标识表标识值的标识中的所述数字标注部分不存储在所述的标识表中。
46.一种对用户装置上的软件使用进行监督的方法,该方法包括以下步骤所述用户装置中的监督程序计算标识表的第一随机函数值;所述的监督程序向中央防护单元发送呼叫信息,所述的呼叫信息含有所述的第一随机函数值、所述标识表的标识值以及在以前呼叫信息中发送的所述标识表的第二随机函数值;所述的中央防护单元确认在所述以前呼叫信息中所发送的所述随机函数值是所述中央防护单元所存储的随机函数值表中最近所存储的值,并确认该随机函数值与所述标识表的标识值相关;一旦中央防护单元的确认成功,则将所收到的第一标识表随机函数值附在所述的随机函数值表后,所述的随机函数值表与所述标识表的标识值相关;所述的中央防护单元向所述的监督程序发送数字标注的继续信息,所述的继续信息包括所述的呼叫信息。
47.如权利要求46中的方法,其还包括以下步骤所述的监督程序确认所述中央防护单元的数字标注信息与所述呼叫信息中的相应部分是相等的。
48.如权利要求47中的方法,其还包括以下步骤一旦所述的确认失败,所述的监督程序向所述的中央防护单元发出新的呼叫。
49.如权利要求46中的方法,其中所述的中央防护单元将所收到的呼叫信息和所述的继续信息存储起来,并将所存储的这些信息与所述的标识表标识值联系起来。
50.如权利要求49中的方法,其还包括以下步骤一旦收到来自监督程序的信息,并在确认所收到的呼叫信息等于所存储的呼叫信息后,所述的中央防护单元发出所储存的继续信息。
51.如权利要求46中的方法,其中所述的确认步骤还包括以下步骤一旦所述的确认失败,所述的中央防护单元向正在发出呼叫的监督程序发出数字标注的信息以表明确认出现失败。
52.如权利要求51中的方法,其还包括以下步骤一旦收到来自所述中央防护单元的数字标注信息,监督程序将对所述的标识表进行作废处理。
53.如权利要求46中的方法,其中确认还包括以下步骤一旦所述的确认出现失败,所述的中央防护单元拒绝含有所述标识表标识值的未来呼叫。
54.如权利要求47中的方法,其还包括以下步骤所述的监督程序使用所述当前呼叫信息所发送标识表中的所述随机函数值来替换所述标识表中以前呼叫信息所发送的所述随机函数值。
55.如权利要求47中的方法,其还包括以下步骤所述的监督程序使用在当前呼叫中所收到的所述继续信息来替换所述标识表在以前呼叫中所收到的继续信息。
56.如权利要求46中的方法,其中所述的发往中央防护单元的呼叫是在操作系统或所述的监督程序每次被加载到所述用户装置的内存中时发生的。
57.如权利要求47中的方法,其还包括以下步骤所述的监督程序使用一个或多个事项计数器测定第一次呼叫中央防护单元和第二次呼叫中央防护单元之间的时间间隔。
58.如权利要求57中的方法,其中所述的事项计数器按时钟的记录定期进行更新。
59.如权利要求57中的方法,其还包括以下步骤所述的中央防护单元储存所述继续信息中的当前时间值;所述的监督程序将事项计数器设定为所述的当前时间。
60.如权利要求47中的方法,其还包括以下步骤在所述的标识表中存储用户装置表征值;所述的监督程序存储多个标识表,所述的标识表含有标识表标识值,这些标识表的随机函数值是在最近多次的呼叫中发往所述的中央防护单元;所述的中央防护单元在所述的继续信息中存储所述标识表的多个随机函数值,这些随机函数值是在最近多次的呼叫中发送的;一旦收到所述的继续信息,所述的监督程序计算出所储存的多个标识表的随机函数值,并确认所述的随机函数值与所述继续信息中的相应值是否相等。
61.如权利要求60中的方法,其还包括以下步骤所述的监督程序检验所述最近多次呼叫中所发送标识表中的用户装置表征值是否属于多个用户装置。
62.如权利要求61中的方法,其中检验还包括以下步骤在所述的多个标识表中寻找两个连续的标识表,这两个标识表中所含用户装置表征值的差异超过了相应的规定值。
63.如权利要求62中的方法,其中检验还包括以下步骤在所述的标识表中寻找第一标识表、第二标识表和第三标识表,发送第二标识表的呼叫晚于发送第一标识表的呼叫,发送第三标识表的呼叫晚于发送第二标识表的呼叫。其中存储在第一标识表和第二标识表中的用户装置表征值差异超过了对这一差别的规定值,存储在第二标识表和第三标识表中的用户装置表征值差异小于对这一差别的规定值。
64.如权利要求61中的方法,其还包括以下步骤所述的监督程序向所述的中央防护单元提交所述确认的结果;一旦确认最近多次呼叫中所发送的标识表属于多个用户装置,则中央防护单元废除含有所述标识表标识值的未来呼叫信息。
65.如权利要求47中的方法,其中所述的呼叫信息含有只出现一次的新的随机选取值。
66.如权利要求46中的方法,其中所述的信息含有超级校验程序。
67.如权利要求66中的方法,其还包括以下步骤所述中央防护单元计算在以前呼叫中发往所述监督程序的继续信息中所含超级校验程序某一部分的随机函数值,并计算所述继续信息中超级校验程序某一部分的随机函数值;所述的中央防护单元将所述的随机函数值储存在发往所述监督程序的所述继续信息中;所述的中央防护单元确认所述超级校验程序相应部分的随机函数值以及所述继续信息中所含的随机函数值与所接收到的随机函数值相等;所述的监督程序将所述新的超级校验程序附加在所述用户装置所存储的超级校验程序之后。
68.如权利要求46中的方法,其中所述的呼叫信息包括所述用户装置上的当前用户装置时间。
69.如权利要求68中的方法,其中确认还包括以下步骤所述的中央防护单元确认所述的当前用户装置时间是否在所述中央防护单元时钟的规定误差之内。
70.如权利要求46中的方法,其中确认还包括以下步骤所述的中央防护单元确认所述呼叫信息的到达时间与所述以前呼叫信息到达时间的间隔大于最小规定值。
71.如权利要求46中的方法,其中确认还包括以下步骤所述的中央防护单元确认所述呼叫信息的到达时间与所述以前呼叫信息到达时间的间隔小于最大规定值。
72.如权利要求47中的方法,其还包括以下步骤一旦收到所述的继续信息,所述的监督程序确认标识表中所有项目上列出的总用量超过以前呼叫信息所发送标识表中所有项目上列出的总用量。
73.一种用户装置,该用户装置包括用户装置表征值;监督程序,监督程序记录着所述的用户装置表征值。
74.如权利要求73中的用户装置,其中所述的用户装置表征值含有处理器识别信息。
75.如权利要求73中的用户装置,其中所述的用户装置表征值含有非易失存储装置识别信息。
76.如权利要求73中的用户装置,其中所述的用户装置表征值含有目录结构识别信息。
77.如权利要求73中的用户装置,其中所述的用户装置表征值含有文件识别信息。
78.一种软件检验系统,该检验系统包括超级校验程序,所述的超级校验程序含有数据和计算机程序;中央防护单元,所述的中央防护单元向用户装置发送用于软件拷贝的多个超级校验程序;监督程序,该监督程序在所述的用户装置上运行,用户装置存储有多个超级校验程序。
79.如权利要求78中的软件检验系统,其中所述的超级校验程序还包括软件拷贝的名称,所述软件拷贝的名称表明了要被检验的软件拷贝。
80.如权利要求78中的软件检验系统,其中所述的超级校验程序还包括一个加权值,所述的加权值决定了所述超级校验程序在检验所述软件拷贝时的使用频率。
81.如权利要求78中的软件检验系统,其中软件拷贝某一部分的随机函数值表。
82.如权利要求81中的软件检验系统,其中的超级校验程序还包括一个随机函数。
83.如权利要求78中的软件检验系统,其还包括存在于所述超级校验程序中的解密程序。
84.如权利要求78中的软件检验系统,其中所述的超级校验程序含有一个监测程序,该监测程序对软件拷贝的操作特性进行监测。
85.如权利要求78中的软件检验系统,其中所述的超级校验程序还含有出售方的公用钥匙,该公用钥匙与所述的软件拷贝相关。
86.如权利要求78中的软件检验系统,其中所述的中央防护单元在数字标注信息中向所述的监督程序发送超级校验程序。
87.如权利要求86中的软件检验系统,其中所述的监督程序确认所述数字特征,如果确认成功,则所述的监督程序储存所述的超级校验程序。
88.一种对用户装置中使用的软件拷贝进行检查的方法,该方法包括以下步骤提供多个超级校验程序,超级校验程序含有某个值、某个程序、某个条件以及地址信息;对软件拷贝内容的某一部分执行所述的程序,并计算出某个数值,所述的部分由所述的地址信息指定;确认所述的计算值和所述的存储值满足所述的条件。
89.如权利要求88中的方法,其还包括以下步骤在所述的超级校验程序中储存一个加权值;根据所述的加权值来选择执行检测的超级校验程序。
90.如权利要求88中的方法,其还包括以下步骤提供至少一个标识,该标识由出售方以数字方式加以标注;确认用户装置使用的的软件拷贝含有相关的标识。
91.如权利要求90中的方法,其还包括以下步骤根据所述条件确认的成功以及对含有相关标识的软件拷贝确认的失败来采取某种惩罚性措施。
92.如权利要求88中的方法,其还包括以下步骤根据所述条件的成功确认以及确认所述的用户装置没有任何标识来采取惩罚性措施。
93.如权利要求90中的方法,其中所述的相关标识含有所述软件拷贝的名称。
94.如权利要求90中的方法,其中所述的相关标识含有所述软件拷贝某一部分的随机函数值。
95.如权利要求88中的方法,其中所述的程序含有随机函数,所述的值是随机函数值表,对所述条件的确认步骤还包括对通用地址随机函数值的检验。
96.如权利要求88中的方法,其中所述的程序含有随机函数,所述的值是随机函数值表,对所述条件的确认步骤还包括对同一地址随机函数值的检验。
97.如权利要求88中的方法,其中所述的程序对所述软件拷贝的操作进行监测,所述的值含有一个措施表,对所述条件的确认还包括将所监测到的操作情况与所述的表进行比较。
98.如权利要求88中的方法,其中所述的程序对软件生成的中间结果进行评估,所述的值含有一个结果表,对所述条件的确认还包括对评估中间结果和所述的表进行比较。
99.如权利要求88中的方法,其中所述的软件是计算机程序,所述的地址信息指定起始于所述计算机程序开始部分的字节计数顺序。
100.如权利要求88中的方法,其中所述的软件拷贝是计算机程序,所述的值是含有指令的表。
101.如权利要求99中的方法,其中非操作指令不包括在所述的计数之内。
102.如权利要求100中的方法,其中所述超级校验程序中的地址信息不含有某些指令。
103.如权利要求102中的方法,其中所述的不被包括在内的指令含有内存地址。
104.如权利要求102中的方法,其中所述的不被包括在内的指令含有注册地址。
105.一种对用户装置中使用的软件进行检验的方法,该方法包括以下步骤提供超级校验程序,所述的超级校验程序包括使用所述软件拷贝的程序;所述的程序对所述软件拷贝的使用进行追踪,并记录下与所述使用相关的数据。
106.一种允许在用户装置上使用软件拷贝的方法,所述的软件拷贝含有一个标识,该方法包括以下步骤从所述用户装置中标识表中获得所述的标识;计算所述软件拷贝某一部分的随机函数值;将计算出的随机函数值与所述标识中存储的随机函数值进行比较;一旦确认所述的随机函数值相等,则允许对所述的软件拷贝进行使用。
107.如权利要求106中的方法,其中比较还包括以下步骤通过将所述的使用与所述标识中所存储的使用规定进行比较来检验是否允许使用该软件拷贝;所述的确认还包括所述检验的成功。
108.如权利要求106中的方法,其中比较还包括以下步骤将所述标识中所含有的标识表标识值与所述标识表的标识表标识值进行比较。
109.如权利要求106中的方法,其中允许还包括以下步骤记录下所述软件拷贝的使用统计数据。
110.如权利要求106中的方法,其还包括以下步骤检验所述用户装置中存储的超级校验程序是否与所述的软件拷贝相匹配;一旦检验到是匹配的,则确认所述超级校验程序中所存储的出售方名称以及公共钥匙是否与所述标识中所含有的出售方名称以及公共钥匙相一致;一旦所述的确认失败,则禁止对所述软件拷贝的使用。
111.如权利要求106中的方法,其还包括以下步骤检验所述用户装置中存储的超级校验程序是否与所述的软件拷贝相匹配;一旦发现不相匹配,则允许对该软件拷贝的使用。
112.一种对软件在用户装置上的使用进行监督的方法,该方法包括以下步骤在所述的用户装置中提供标识表,所述的标识表含有标识表标识值;所述的用户装置向中央防护单元发送呼叫信息,所述的呼叫信息含有所述的标识表标识值;所述的中央防护单元确认所述呼叫信息的发送时间与上次呼叫信息的发送时间之间的时间差是否超过了所规定的最小限制值;其中呼叫信息含有标识表标识值。
113.如权利要求112中的方法,其还包括以下步骤一旦中央防护单元的确认成功,则中央防护单元生成一条数字标注的继续信息,所述的数字标注继续信息包含所述的呼叫信息;所述的中央防护单元存储所述的呼叫信息;所述的中央防护单元向所述的用户装置发送数字标注的继续信息。
114.如权利要求112中的方法,其中确认还包括以下步骤计算所述呼叫信息中含有的用户装置时间记录值与所述中央防护单元时间记录值之间的差值。
115.如权利要求113中的方法,其中由所述中央防护单元所发送的数字标注继续信息还含有所述中央防护单元在以前回答呼叫信息时所发出超级校验程序某一部分的随机函数值。
116.如权利要求113中的方法,其中所述的继续信息包含由所述中央防护单元提供的新超级校验程序。
117.如权利要求113中的方法,其还包括以下步骤所述的用户装置确认所述中央防护单元的数字特征,并对所述继续信息中所含的标识表标识值进行确认。
118.如权利要求117中的方法,其还包括以下步骤在所述呼叫信息中存储所述用户装置记录下的用户装置时间值;在所述继续信息中存储所述的用户装置时间值;通过检验所述的时间是否小于用户装置的规定值来确认所述的时间是否早于开始接收所述继续信息的时间。
119.如权利要求115中的方法,其还包括以下步骤所述的用户装置确认所述以前发送的超级校验程序某一部分的随机函数值与所述继续信息中所含的随机函数值相一致;所述以前发送的超级校验程序某一部分的随机函数值存储于用户装置中。
120.如权利要求116中的方法,其中所述中央防护单元发送的所述数字标注继续信息还包括所述中央防护单元在以往回答呼叫信息时所发出的超级校验程序某一部分的随机函数值以及所述继续信息所发送的超级校验程序某一部分的随机函数值;其中呼叫信息含有标识表标识值。
121.如权利要求120中的方法,其还包括以下步骤所述的用户装置确认中央防护单元以往发送超级校验程序某一部分的随机函数值以及储存在所述用户装置中的随机函数值与所述继续信息中所含的随机函数值相一致。
122.如权利要求116中的方法,其还包括以下步骤所述的用户装置在所述的标识表中安装新的超级校验程序。
123.一种确保用户指定的用户装置表征值只出现在一个用户装置中的方法,该方法包括以下步骤从所述的用户装置向接收方发送信息,所述的信息含有与所述用户装置相关的装置识别值;所述的接收方寻找与每一个可能的用户装置识别值相关的数据结构;标识检验过程确定所述的用户装置识别值是否存储在另一用户装置中。
124.如权利要求123中的方法,其还包括以下步骤一旦确认在多个用户装置上存在有同一用户装置识别值,则所述的接收方将所述的用户装置识别值作废。
全文摘要
本文涉及购买软件拷贝标识的机理,这一机理确保所购标识中所含的某一标识表标识值的购买者身份不会被泄漏。本文涉及用户装置呼叫中央防护单元的机理,这一机理确保一个标识值只显现在一个用户装置上,并确保标识表中所含的数据以及用户装置中储存的目的在于保护销售方和拥有者关于软件权利的其他数据不会被修改。
文档编号G06F1/00GK1592875SQ01819565
公开日2005年3月9日 申请日期2001年11月1日 优先权日2000年11月3日
发明者迈克尔·O·罗宾, 丹尼斯·E·莎莎 申请人:迈克尔·O·罗宾, 丹尼斯·E·莎莎
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1