防止软件的未许可使用的制作方法

文档序号:6411127阅读:211来源:国知局
专利名称:防止软件的未许可使用的制作方法
技术领域
本发明涉及防止软件(尤其是免费分发的应用软件)未经版权拥有者同意下的使用,本发明尤其涉及一种预防在计算机上未经批准地使用软件的方法;一种准备软件以便仅当得到相应的授权后在计算机上使用的方法和设备;以及一种在计算机上允许批准使用按照本发明的一个方面准备的软件的方法和设备。
对于软件,尤其是对于适用于在个人计算机上运行的软件的非法复制对软件销售商是一个广泛的问题,每年耗费他们大量费用。例如通过为安装或者运行一个专用计算机程序或程序包设置口令的常规防止未经批准使用软件的方法不能提供足够的保护。因此,一种有可能仅当真正存在着版权拥有者的许可才使用某计算机程序或者计算机程序包的办法是非常重要的。
已经进行了数种尝试来建立在其中仅靠简单地键入所需的口令并不足以进入程序的办法。例如,为了有可能使用给定的程序已提出需要把专用硬件部件和计算机连接起来的系统。该部件例如可采取盲插头(blind plug)(还称为“dongle”)的形式,其和计算机的输入-输出端子中的一个直接连接,并且在内部存储器中存储着的固定表、识别号等,当出于本文的目的包含在所考虑的应用程序中的一个程控辅助例程提出请求时从该内部存储器读出信息。该部件也可采用读卡机等的形式,以在其中插入卡,卡上存储的内容原则上类似于上面的盲插头中的内容。检验过程通常涉及使程序的辅助例程例如直接对比程序标识以及存储表中存在的相应信息条目。
在已公开的DE专利申请44 19 115中说明这种办法的一个例子,其中读出存储在一个芯片卡中的内容,并且若存在所期望的内容,则把该事实看作是使用该程序的足够识别证明。可以在安装一个程序或者在其使用期间进行检验。已公开的DE专利申请42 39 865公开一种类似的系统,其附加地提供一种记录对软件进行安装的次数的办法,从而有可能限制对它的安装次数。
在软件中必须包括该辅助例程造成所有这样的已知部件的主要缺点。通过简单地去掉这样的例程软件会正常地运行,并且失掉对未经批准使用的防止。而且,在计算机的处理器和该部件的存储器或者卡之间的数据交换期间,有可能观察到信息,并且因为每次使用该程序该信息交换的过程是相同的,还有可能揭露存储在该外部存储器内的内容。即使以某种方法加密该存储器的内容,在通信接口上的这种重复有可能例如模拟对应的硬件部件,或者通过相对适度的计算能力“破译代码”。
在已公开的GB专利申请2 163 577中所说明的办法里,通过采取某些密码技术以及通过把其自身的几个存储装置以及处理器容纳在防篡改外壳内防止上述类型的硬件部件的一些缺陷。在外壳里的处理器利用存储在外壳内的译码密钥以及也存储在外壳内的指令由它本身对从和该外壳连接的主计算机所传送的加密应用程序或程序模块进行解密并执行。关于密码技术,根据GB专利申请2 163 577号的办法利用所谓的DES算法(DES-数据加密标准,美国标准局,1977)对应用软件加密,并且采用对应的逆DES算法对同一软件解密,从而对加密和解密使用一个相同的密钥。这里,DES标准是对称的,安全性仅在于密钥本身。因此,为了不失去其安全性,在该GB专利申请中还提出DES密钥自身的加密。出于这个目的,它采用所谓的RSA算法(RSA-Rivest,shamir,Adleman),该算法具有两个不同的密钥,即一个用于加密和另一个用于解密,并且从一个密钥推出另一个密钥在实际上是不可能的。因此,RSA密码系统是一个不对称的双密钥系统(也称为公用密钥/专用密钥密码系统)。并且在根据GB专利申请2 163 577号的办法的情况中,一个本身可知的密钥(公用密钥)仅用于加密DES密钥,而另一个不让用户知道的密钥(专用密钥或保密密钥)用于解密DES密钥。后一个密钥,即保密密钥,存储在防窜改外壳中的一个存储器里并且当需要解密加密的DES密钥时由该外壳中的处理器取出,每个保密密钥各属于一个加密的应用程序,用于可执行该应用程序的目的。
但是,在根据GB专利申请2 163 577的办法中,仍有可能监视该外部部件和主计算机之间的通信,并且每次执行相同的加密程序模块时的通信过程是相同的。因为全部的程序模块是加密的并且这些模块构成软件的相当大的部分,在通信接口上这种可预计的重复有助于识别有关程序模块,并且然后可容易地和软件的其余部分分离,以便出于对该加密程序模块解密一次的和再也不必解密的目的例如以脱机方式进行处理。此外,对全部应用程序模块的外部解密、存储和执行会需要难以接受的长的时间阶段,除非外壳中的电路具有足够高的数据处理能力并且这些程序模块引起的与主机的通信非常快。
本发明的一个目的是对软件的供应商和/或所有者提供一种可改进防止其产品的未许可使用的可能性的密码办法,并且以软件可以不受限制地复制和散发但除非存在必要的许可才可使用的方式从而不再具有现有技术的缺点。
本发明的另一个目的是提供一种通用性质的密码办法,其不仅可适应单个的软件模块而且可适应整个程序包,其中可按不同的等级,例如程序包的选定部分,指定使用许可。
从下面参照附图对本发明的最佳实施方式的例子的说明这些和其他目的将更为清楚。
本发明的第一个方面涉及一种在计算机中防止未经许可使用软件的方法,该方法包括步骤-按照第一算法至少加密所述软件的一部分,以及-按照第二算法解密该软件的加密部分,该第二算法和一个密钥存储在适应于和所述计算机连接的一个外部部件里,在对该软件的加密部分解密时使用该密钥,该外部部件包括至少一个计算机可读的存储媒体和一个它自己的处理器,该方法的特征在于,按照第二算法的所述解密是通过使用存储在所述外部部件的第二密钥进行的,第二密钥不同于按照第一算法对软件的所述部分执行加密中所使用的第一密钥。
本发明的另一个方面涉及一种准备软件的方法,尤其是准备打算免费分发的软件的方法,以便仅当相应授权下才可在计算机上使用,该方法包括按照第一算法加密所述软件的至少一部分并当在所述计算机中使用时对其按照第二算法解密,该方法特征在于在按照第一算法的所述加密中所使用的一个密钥是第一密钥,第一密钥不同于当按照第二算法执行对按照第一算法和第一密钥加密的软件部分的解密中所使用的第二密钥。
在该第二方面中,本发明还涉及一种用于准备,仅当相应授权下才能在计算机上使用的软件、尤其是打算免费分发的软件的设备,该设备包括-实现按照第一算法和第一密钥对所述软件的至少一部分加密的密码装置,以及-一个适应于和所述计算机连接的外部部件,该外部部件至少包括一个自身的处理器和一个用于存储第二算法和一个密钥的计算机可读的存储媒体并且用于按照所述第二算法和所述密钥对软件的加密部件执行解密,该设备的特征在于,它还包括发生器装置,以提供打算在按照第二算法的所述解密中使用的所述第二算法和第二密钥,第二密钥不同于在按照第一算法执行软件的所述部件的加密中由所述密码装置使用的第一密钥。
本发明的第三方面涉及一种在计算机中使软件、尤其是免费分发的软件能授权使用的方法,软件是按本发明的第二方面的方式准备的,该方法包括把一个外部部件和所述计算机连接,该外部部件至少包括一个计算机可读的存储媒体和一个它自身的处理器,并且在所述外部部件中存储在对软件的加密部分解密中所使用的第二算法和一个密钥。根据本发明该方法的特征在于,当计算机对按照第一算法加密的软件部分执行中遇到一个调用序列或者一条类似的指令时会造成转移到所述附加目标码的相应进入点,该计算机利用该目标码建立一条对该外部部件的通信信道,通过该信道该软件的加密部分按第一传送对话传送到该外部部件,以由该部件自身的处理器按照都存储在所述外部部件中的第二算法和第二密钥进行解密,该第二密钥不同于在按照第一算法对该软件的所述部分执行加密中所使用的第一密钥,其特征还在于接着在该外部部件中处理解密后的软件部分并且经过该通信信道以相反方向按第二传送对话传送结果以供该计算机中的进一步使用。
本发明的该第三方面中还涉及一种使通过由根据本发明的第二方面的设备准备过的软件,尤其是免费分发的软件,能授权使用的设备,该设备包括一个适应于充当一个外部部件的主计算机的计算机,该外部部件至少包括一个其自身的处理器和一个计算机可读的存储媒体,该外部部件预定和该主机连接以进行通信。根据本发明该设备的特征在于,所述外部部件包括适应于按照所述发生器装置产生的所述第二算法和所述第二密钥执行解密的解密装置,该第二密钥不同于所述密码装置在按照第一算法对该软件的所述部分执行加密时所使用的第一密钥。
通过根据本发明的方法和设备,得到一种如果不存在版权拥有者的许可特别难以使用例如计算机程序或计算机程序包形式的软件。如从下述说明以及本专利权利要求所显示的,根据本发明对非经批准的使用的阻止可以做成是更为可靠的,因此,如果没有必要的授权想要使用按照本发明的各种特性处理过的软件几乎是不可能的。
下面的说明参照下述附图。


图1表示根据本发明的最佳硬件配置,图2表示简化的根据本发明的总软件图,图3示意说明如何在不加密下生成普通的命令或执行文件(.EXE文件),图4和图5示意说明根据本发明如何可在源代码层上进行加密,图6示意说明将软件分别划分到磁存储盘和随机存取存储器(RAM)上,图7示意说明在计算机上使用受保护的软件,图8表示图4和图5中所示类型的加密处理的一个例子,图9示意说明在计算机上使用受保护的软件,图10示意说明一个包含着访问检查或授权的应用区,以及图11是一个流程图,示意说明包括着根据本发明的最佳实施方式的加密-解密以及编码(scrambling)-去编码的处理过程。
首先参照图1,图中说明本发明的最佳硬件配置,图中表示一个根据本发明的以工作站或个人计算机(PC)为形式的充当主机的计算机。该图中,一个根据本发明的外部部件表示成以读卡机或者处理器的形式,尤其是用于智能卡的带有商业上可买到的集成微处理器如CCA12103类型的读卡机,该部件包含在所示的计算机内或者设置为一个通过串行或并行连接和该计算机连接的分离设备部件。
图1还示出现在可通过和计算机建立连接的不同类型的数据网络如广域网(WAN)、局域网以及尤其是国际互联网分发安全的软件。此外,实际上可以在软盘和/或CD-ROM(只读压缩光盘)上分发软件。在任何情况下,可以不受限制地复制和安装该软件。
因为该软件是得到免受非经批准的使用的保护的,因此不需要任何类型的如在其它情况下的软件复制保护。这里,授权是固定在智能卡里的,除了自己把必要的解密算法和密钥设置在卡上的供应商之外任何人都不能得到该授权。因此,对某计算机程序的使用许可是在卡上得到的,而不是在各个程序中或者软件的其它部分上得到的。
图2表示一个简化的总图,可以看出根据本发明的办法包括1.防止非经批准使用的软件(但该保护不涉及对它的复制),2.含有用于对所涉及的软件进行解密的算法和密钥的智能卡(或类似物),以及3.用于在受保护的软件(1)和智能卡(2)之间通信的专用软件(即,权利要求书中所规定的附加目标码)。
该保护是通过在软件的不同位置处插入对智能卡或者对设置在卡上的专用软件的程序调用,以便得到为正确地继续执行受保护的程序所需的信息来提供的。例如,该信息可以是程序执行时所使用的某些参数,并且该信息是由希望保护他们的软件的人确定的。因为它们对于软件的正常工作是必需的,不能取消这样的程序调用。
被保护程序和智能卡的交互作用是由加密原始程序时进入到该程序的数据文件库的专用软件(目标码)控制的。该专用软件也可为计算机和智能卡之间的通信提供(加密)编码。
图3表示不加密下如何生成普通的命令或执行文件(.EXE文件);而图4和5各以自己方式表示根据本发明如何在源码级上实现加密。
图6表示软件本身放在磁存储盘上,而该专用程序(目标码或数据文件库)提供到计算机的随机存取存储器(RAM)中。
图7和9表示当在计算机上使用该受保护的软件时所发生的处理。
图8表示一个图4和5中所示类型的加密处理的一个例子。这里,假定源码是在高级程度设计语言例如Pascal、C、Modula等下出现的。源码是要被加密的,从而防止所谓的未经批准的使用的。在源码中选出一些参数以通过加密函数g加密。例如,未保护的源码中的一个命令中出现的表达式x=y+10可以表示为C=decrypt(g(10)+t),x=y+(C-T),其中,g(10)是一个加密的参数,以及T是一个变量,在本情况下它的随机值从智能卡中取出。
为了得到x的正确值,被保护的程序必须“达到”C值,该值必须等于10+T。解密程序位于该“专用软件”(附加的目标码)之中,后者是被保护软件的一部分(见图5)。该专用软件还包括编码和去编码函数,在本文中这些函数用f和f′表示,该专用软件还包括用于和智能卡(见图7)通信的程序。在和智能卡通信时,函数f和f′使用从智能卡中取出的密钥,智能卡本身包括-数字发生器,用于产生位于被保护软件中的变量T的随机值,-用于解密函数g-1的安全密钥,-用于解密函数g-1的算法,以及-用于函数f和f′的一个或多个密钥。
请注意重要的是加密函数g和解密函数g-1代表一个不对称的公用密钥密码系统。这意味着加密函数g使用一个可以知道的公用密钥,但是,该密钥并不足以得到解密函数g-1(既不能得到其算法也不能得到其密钥)。这样,解密函数g-1的算法和密钥是放在决不从中传送的智能卡上的。
要求函数f、f-1、g、g-1是可交换的(即,它们可不改变值地互换)。这意味着它们必须具有下述性质f′(g-1(f(g(x))))=x一旦在计算机里使用一个以这种方式保护的程序时,按通常那样地启动该程序的执行(图7)。通过和智能卡的通信,变量T的值和用于函数f或f′的密钥进入该软件。接着按通常地继续程序的执行。当执行到一个加密参数(该所示例子中的g(10))时,值(g(10)+T)被送到该专用软件,专用软件进行向智能卡传送f(g(10)+T-T)。在智能卡中计算g-1((10)+T-T)的值,并将该值回送给专用软件。通过专用软件接着计算f′(g-1((10)+T)-T))),这等于x和x+T,并把该结果作为参数C提供给被保护的程序供在该程序中使用。
具有根据本发明的这种类型的加密-解密办法,实现了下述优点和可能性-通过使用智能卡得到的巨大灵活性,-可由软件生产商雇用的进口商或代理商提供智能卡(即用户)的许可。从而一个智能卡可以含有在具有相同授权格式和算法的不同软件包的几个等级上的许可证或者准许。
-第一级加密采用非对称的双密钥加密办法(公用密钥/专用密钥密码系统),例如RSA密码系统,从而公用密钥只能由软件生产商得到,而专用密钥是一个保密密钥,它是由智能卡的制造商根据软件生产商给出的技术要求输入到智能卡的只读存储器(ROM)里的。对于每个程序包专用密钥可以是不同的。
-一个非对称加密的授权密钥当开始运行受保护的软件时被传送到智能卡中并在智能卡中通过0号专用密钥解密来启动智能卡中的授权处理。
-在源码级上的加密,它使本办法和操作系统无关。通过只加密例如命令文件的文件的小部分或者文件的片段,使得在对这些部分以种种方式施以破坏下难以辨别出正被加密的那部分软件。并且,容易把解密算法和密钥输入到智能卡上。
-利用第二级加密使得主机和智能卡之间的通信变成通过对它的记录难以从通信中跟踪出有意义的内容。所使用的算法位于被保护的权件以及智能卡中,并且加密密钥和解密密钥都位于智能卡中,即用户是不知道的。对于不同类型的软件,加密算法和密钥可以是不同的。
图10用于表明根据本发明的办法的应用范围还可扩展到包括例如访问检验或授权以及其它的可能性。在本发明的该实施方式中,被保护的软件可以带有一个利用所谓的公用密钥加密的授权密钥和一个用于所涉及的软件包的标识号。从而,例如智能卡的外部部件会含有最好被屏蔽编程的用于解密授权密钥的解密算法和0号专用密钥(在ROM中),以及包括可以按如下的表构造的访问表或授权表。
在该表中,PID代表软件的识别号,从而例如不同的程序赋有不一样的识别号,识别号还可以包含每个软件产品的版本号等。AcL代表访问等级或状态,例如-二个不同的等级,即允许访问和不允许访问。
-运行每个程序的有限次数。
-使用程序的时间限制,例如许可期满日期。
-仅访问该程序的缩短版本,例如所谓的演示版本。
该表的访问等级栏AcL中的项目例如是由该软件产品的进口商或代理商负责的。
在专用密钥PK栏中,软件生产商规定在对加密片段的解密中根据软件的识别号PID采用的保密密钥。在智能卡中这些保密密钥是屏蔽编程的并且其他人是不能得到的。
图11是一个流程图,示意说明根据本发明的最佳实施方式的主要的完整处理过程,步骤是-对源码进行加密(g1,k1),-对加密数据进行编码(g3,k3),
-把编码的加密数据传送到外部部件并对其去编码(g4,k4),-对所传送的并去编码的数据进行解密(g2,k2),-处理解密数据,对结果进行编码(g5,k5),-向主机传送编码结果,并对其去编码(g6,k6),以及-输出解密结果供进一步使用。
在所示的本发明的实施方式的各个例子中,智能卡构成后面的权利要求书中指出的外部部件的最佳实现。这是非常简单的,因为智能卡技术被认为是算法、密钥、安全工作区的最佳“防窜改”保护,根据本文附属的权利要求书必须把它们存储在外部部件或分离的物件中。世界上这种卡的制造商是少量的并且大量的这种卡(尤其是以支付交易卡的形式的卡)是广泛使用的,有力地构成这样的事实,即对于那些具有不道德意图的人不能容易地得到伪造这种智能卡所需的知识。但是,这并不阻碍可能去发展适合于本发明的目的的同样的或更好的新技术。从而,本发明的权利要求书意味着还覆盖着至少能提供和当前优选的智能卡相同安全度的在权利要求书中指出的那些未来的外部部件和分离物件。
权利要求
1.一种防止在计算机中未经批准地使用软件的方法,该方法包括-按照第一算法加密所述软件的至少一部分,以及-按照第二算法解密该软件的加密部分,在解密该软件的加密部分中所使用的第二算法以及密钥存储在适应于和所述计算机连接的一个外部部件中,该外部部件包括至少一个计算机可读的存储媒体和一个该部件自己的处理器,其特征在于按照第二算法(g2)的所述解密是通过使用存储在所述外部部件中的第二密钥(k2)执行的,第二密钥不同于按照第一算法(g1)执行对该软件的所述部分加密中所使用的第一密钥(k1)。
2.按照权利要求1的方法,其特征在于,按照第一算法(g1)的对该软件的所述部分的加密是在编译和链接之前或者在生成可执行程序的类似处理步骤期间对相应软件的源码执行的,并且同时依靠和该外部部件的通信在可执行程序的数据文件库中增添目标码。
3.按照权利要求1或2的方法,其特征在于,按照第二算法(g2)对该软件的加密部分执行所述解密是当计算机在执行所述软件遇到造成转移到相应进入点的对所述附加的目标码的调用序列或类似的指令时发生的,从而通过利用该附加的目标码建立该计算机和该外部部件之间的一条通信信道,通过该通信信道在第一传送对话中把该软件的加密部分传送到该外部部件以由该部件自己的处理器解密,在该外部部件中处理该解密后的软件部分,并在第二传送对话中经该通信信道反向地传送处理结果以供在该计算机中的进一步使用。
4.按照权利要求3的方法,其特征在于,该方法还包括-在所述第一传送对话之前对按照第一算法(g1)加密的所述软件部分按照第三算法(g3)和第三密钥(k3)进行编码的步骤,所述第三密钥(k3)是基于为每次传送对话随机选出的并且最好是由该外部部件生成的一个数字的,以及-对按照第一算法(g1)加密的和按照所述第三算法(g3)编码的并且在所述第一传送对话中传送到该外部部件的所述软件部分在该外部部件中按照第四算法(g4)和第四密钥(k4)进行去编码的步骤,所述第四密钥(k4)基于为所述第三密钥(k3)选出的所述随机数,并且所述第四算法(g4)是所述第三算法(g3)的逆算法。
5.按照权利要求3和4的方法,其特征在于,该方法还包括-在所述第二传送对话之前,对在该外部部件中基于按照所述第二算法(g2)解密后的软件部分所生成的所述结果按照第五算法(g5)和第五密钥(k5)进行编码的步骤,所述第五密钥(k5)基于为每次传送对话随机选出的并且最好是由该外部部件提供的一个数字,以及-对在该外部部件中基于按照所述第二算法(g2)解密的软件部分产生的和按照所述第五算法(g5)编码的并且在所述第二传送对话中传送到该计算机的结果在该计算机中按照第六算法(g6)和第六密钥(k6)进行去编码的步骤,所述第六密钥(k6)基于为所述第五密钥(k5)选出的所述随机数,并且所述第六算法(g6)是所述第五算法(g5)的逆算法。
6.按照权利要求4和5的方法,其特征在于,为第三和第四密钥(k3,k4)选出的所述随机数和为第五和第六密钥(k5,k6)选出的所述随机数是相同的数字。
7.一种准备软件尤其是打算自由分发的软件,以便仅当得到相应的授权才能在计算机上使用的方法,该方法包括按照第一算法加密所述软件的至少一部分,当由所述计算机使用时按照第二算法对该部分软件进行解密,该方法特征在于,在按照第一算法(g1)的所述加密中所使用的密钥是第一密钥(k1),第一密钥(k1)不同于按照第二算法(g2)对按照第一算法和第一密钥加密的软件部分执行解密时所使用的第二密钥(k2)。
8.按照权利要求7的方法,其特征在于,按照第一算法(g1)的对该软件的所述部分的所述加密是在对可执行的程序编译和链接之前或者在生成可执行程序的类似处理步骤期间对相应软件的源码本身执行的,并且同时依靠和一个适应于和所述计算机连接的外部部件的通信在可执行程序的数据文件库中增添目标码。
9.按照权利要求7或8的方法,其特征在于,在源码编译和/或链接成可执行程序中或者在生成可执行程序的类似处理步骤中插入在计算机中执行该可执行程序中可引起转移到相应进入点的对所述附加的目标码的调用序列或类似的指令,该附加的目标码用于在该计算机和一个在其中发生按照第二算法(g2)的所述解密的外部部件之间建立一条通信信道。
10.按照权利要求9的方法,其特征在于,还包括一个在按照第一算法(g1)加密的所述软件部分中插入第三密钥(k3)的步骤,所述第三密钥(k3)供用于在向所述外部部件传送前对所述软件部分进行编码的第三算法(g3)使用。
11.一种使按照权利要求9准备的软件尤其是免费分发的软件,在计算机上能被授权利用的方法,该方法包括把一个包括至少一个计算机可读的存储媒体以及其自身的处理器的外部部件连接到所述计算机,并且解密该软件的加密部分中所使用的第二算法和一个密钥存储在所述外部部件里,该方法特征在于,当该计算机在执行按照第一算法(g1)加密的软件部分中遇到产生对所述附加的目标码的对应进入点的转移的调用序列或类似的指令时,该计算机利用该目标码建立和该外部部件的通信信道,通过该信道在第一传送对话中把该软件的加密部分传送到该外部部件,以便按照都存储在所述外部部件中的第二算法(g2)和第二密钥(k2)由该部件自己的处理器解密,该第二密钥(k2)不同于按照第一算法(g1)执行对所述软件部分的加密中所使用的第一密钥(k1),并且接着在该外部部件中处理解密后的软件以及在第二传送对话中通过该通信信道按相反方向传送结果供在计算机中进一步使用。
12.按照权利要求11的方法,该方法使按照权利要求10准备的软件可授权使用,其特征在于-在对已连接的外部部件的所述第一传送对话之前,对按照第一算法(g1)加密的软件部分按照所述第三算法(g3)和所述第三密钥(k3)编码,第三密钥(k3)基于一个为每次传送对话随机选出的并且最好是由该外部部件提供的数字,以及-对按照第一算法(g1)加密的和按照所述第三算法(g3)编码的并且在所述第一传送对话中传送到该外部部件的所述软件部分在该外部部件中按照第四算法(g4)和第四密钥进行去编码,所述第四密钥(k4)基于为所述第三密钥(k3)选出的所述随机数,并且所述第四算法(g4)是所述第三算法(g3)的逆算法。
13.按照权利要求12的方法,其特征在于,该方法还包括-在所述第二传送对话之前,对在该外部部件中基于按照所述第二算法(g2)解密后的软件部分所生成的所述结果按照第五算法(g5)和第二密钥(k5)进行编码的步骤,所述第五密钥(k5)基于为每次传送对话随机选出的并且最好是由该外部部件提供的一个数字,以及-对在该外部部件中基于按照所述第二算法(g2)解密的软件部分产生的和按照所述第五算法(g5)编码的并且在所述第二传送对话中传送到该计算机的所述结果在该计算机中按照第六算法(g6)和第六密钥(k6)进行去编码的步骤,所述第六密钥(k6)基于为所述第五密钥(k5)选出的所述随机数,并且所述第六算法(g6)是所述第五算法(g5)的逆算法。
14.按照上述任一权利要求的方法,其特征在于,所述第一和第二算法(g1,g2)以及所述第一和第二密钥(k1,k2)是根据例如RSA密码系统的非对称、双密钥密码办法(公用密钥/专用密钥密码系统)确定的,第一密钥(k1)最好是已知的密钥(公用密钥)而第二密钥(k2)是该密码办法的保密密钥(专用密钥)。
15.按照上述任一权利要求的方法,其特征在于,被按照所述第一算法(g1)加密的该软件的所述部分是通过对于在计算机使用该软件完全是决定性的来选择的,并且最好包括一个命令或执行文件中,例如.C0M或.EXE文件中的一条或多条指令。
16.一种用于准备软件尤其是打算自由分发的软件以便仅当得到相应的授权才能在计算机上使用的设备,该设备包括-对所述软件的至少一部分按照第一算法和第一密钥实施加密的密码装置,以及-一个适应于和所述计算机连接的外部部件,该外部部件至少包括一个其自己的处理器和一个用于存储第二算法及一个密钥的计算机可读的存储媒体,该部件预定按照所述第二算法和所述密钥对该软件的加密部分执行解密,其特征在于,该设备还包括提供所述第二算法(g2)和第二密钥(k2)以便由按照第二算法的所述解密使用的发生器装置,第二密钥不同于所述密码装置在按照第一算法(g1)执行对所述软件部分加密中所使用的第一密钥(k1)。
17.按照权利要求16的设备,其特征在于,所述密码装置适应于在相应软件被编译和链接之前或者以任何方式转移成可执行的程序之中对该软件的源码本身按照第一算法(g1)执行对所述软件部分的所述加密,其特征还在于,所述密码装置同时依靠和所述外部部件的通信实施向该可执行程序的数据文件库增添目标码。
18.按照权利要求16或17的设备,其特征在于,所述密码装置适应于在把源码编译和/或链接成可执行程序的期间或者在类似的产生可执行程序的处理期间插入调用序列或类似的指令,在所述计算机内执行该可执行程序中调用序列或类似的指令提供向所述附加的目标码的进入点的转移,然后该计算机利用所述的附加目标码建立对已连接的该外部部件的通信信道。
19.按照权利要求18的设备,其特征在于,所述密码装置适应于输入按照第一算法(g1)加密的所述软件部分和第三密钥(k3),第三密钥由在把所述软件部分转送到所述外部部件之前对所述软件部分进行扰编的第三算法(g3)使用。
20.一种使通过按照权利要求16的设备准备的软件尤其是免费分发的软件可授权使用的设备,该设备包括一个适应于充当一个外部部件的主机的计算机,该外部部件至少包括一个其自身的处理器和一个计算机可读的存储媒体并且用于和该主机连接以进行通信,该设备特征在于,所述外部部件包括适应于按照所述发生器装置生成的所述第二算法(g2)和所述第二密钥(k2)执行解密的解密装置,该第二密钥不同于所述密码装置按照第一算法(g1)执行对所述软件部分执行加密中使用的第一密钥(k1)。
21.按照权利要求20的设备,其特征在于,所述解密装置适应于当所述主机在执行按照第一算法(g1)加密的软件部分中遇到造成对所述附加目标码的相应进入口的转移的调用序列等时执行按照第二算法(g2)的解密,从而主机接着利用该目标码建立对该外部部件的通信信道,通过该通信信道主机实施把加密的软件部分在第一传送对话中传送到该外部部件并且进行所述的解密,其特征在于,所述外部部件自身的处理器适应于处理解密后的软件部分并且实施通过该通信信道在第二传送对话中按反方向传送结果以在计算机中进一步使用该结果。
22.按照权利要求21的并且适应于使利用按照权利要求19的设备的准备的软件能授权使用的设备,其特征在于,该外部部件包括按照第四算法(g4)和第四密钥(k4)对按照第一算法(g1)加密的所述软件部分去编码的去编码装置,该加密的所述软件部分在第一传送对话之前由主机按照所述第三算法(g3)编码并且在所述第一传送对话中传送到该外部部件,主机在编码中使用的所述第三密钥(k3)是基于为每次传送对话随机选出的并且最好是由该外部部件中的数字发生器提供的一个数字,并且由该外部部件的去编码装置使用的所述第四密钥(k4)基于相同的用于所述第三密钥(k3)的选出随机数,所述第四算法(g4)是所述第三算法(g3)的逆算法。
23.按照权利要求21或22的设备,其特征在于,该外部部件还包括编码器装置,用于在第二传送对话之前按照第五算法(g5)和第五密钥(k5)对在该外部部件中基于该部件按照所述第二算法(g2)解密该软件部分生成的所述结果进行编码,该编码中编码器装置使用的所述第五密钥(k5)基于为各次传送对话随机选出的并且最好是由该外部部件中的数字发生器产生的一个数字,主机能够按照第六算法(g6)和第六密钥(k6)对该外部部件中生成的结果去编码以在主机中进一步使用,该结果在所述第二传送对话之前由该外部部件中的编码器装置根据第五算法(g5)编码并在该第二传送对话中传送到该计算机中,所述第六密钥(k6)基于相同的用于第五密钥(k5)的选出的随机数,并且所述第六算法(g6)是所述第五算法(g5)的逆算法。
24.按照权利要求16至23中任一权利要求的设备,其特征在于,所述外部部件包括适配器装置和一个分离的物件,最好是防窜改的,其内或其上设置着至少包括该外部部件的处理器和计算机可读的存储器的电路,并且构造成当把该物件插入到该适配器的槽中或者以任何其它方式和该适配器连接时可以在该分离物件的电路和所述主机之间建立通信信道,所述第二算法(g2)和所述第二密钥(k2)最好以除该分离物件的处理器之外的其它装置都不读出并且决不能在该分离物件之外得到的方式存储在所述存储器中。
25.按照权利要求24的设备,其特征在于,所述分离物件采取小基片板例如塑料卡的形式,具有普通信用卡或智能卡的尺寸,从而适配器装置包括用于所述基片板的读卡机,读卡机可以和该主机或者与主机连接的外围部件相结合。
26.按照权利要求24的设备,其特征在于,所述分离的物件采取电子电路卡的形式,其适应于放置到主机中的扩展卡所设置的卡位或卡槽中,在便携式主机情况下该电路卡是按照这种可插入卡设计的各种标准中的一种,例如PCMCIA标准,构形的。
27.按照权利要求24的设备,其特征在于,所述分离物件采取电子盲插头等的形式,而所述适配器装置包括主机的输入-输出端子。
全文摘要
一种对软件尤其是免费分发的应用软件在未得到版权拥有者许可下防止使用的办法。通过使用不同于解密中使用的密钥(k2)的密钥(k1)加密该软件,当把解密密钥保持为对用户是保密的时,得到更好地对未经批准的使用的防止。通过对使用该软件的计算机和存储解密密钥的外部部件之间的通信执行附加的编码-去编码得到进一步提高的安全性。此外,该外部部件设置成向主机回送它对从主机接收的数据的处理结果,然后把该结果用在相应程序的进一步执行中。
文档编号G06F21/12GK1192814SQ96196247
公开日1998年9月9日 申请日期1996年7月10日 优先权日1995年7月13日
发明者西格德·西格比约恩森, 马格纳·艾德·哈格伦德, 弗拉迪米·A·奥利查克 申请人:西格德·西格比约恩森
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1