在考虑下述详细说明之后,熟练技术人员将清楚认识到,可以在要求发送者生成指定报文之加密签名的、各种应用的任意应用中,利用本发明的技术。我们的发明特别(并不仅仅)适用于:在为从公共发送者,即签名者,发出的一连串的特有报文生成签名的情况中使用。各结果签名不仅提供较高的安全性,即不能进行密码分析,而且还可以验证是从唯一的公共签名者发出的。在这点上,通过使用作为有效签名集之成员的公开密钥,可以公开验证上述各签名,此外,也可以使用保密密钥,来秘密地唯一验证各签名。其优点在于,通过使用我们的发明,即使第三方(不是预定的签名者)通过密码分析,确定了违法生成对其接收者而言看似有效的签名的方法,第三方将仍然不能正确验证其接收者的特定签名。为了简化以下讨论,我们将在下述范围内讨论我们的发明,生成将在相应标记内使用的签名,以便在诸如客户个人计算机(PC)上的安装过程中,验证特定副本,其中该标记本身与某个软件产品的给定副本唯一关联。
A.使用环境
考虑图1,该图表示CD-ROM生产系统5的高级的简化框图。利用其基本形式表示的上述系统,包含计算机10,CD刻录机50和打印机60。此系统生产包含共同实现某个应用程序之完整副本所需的所有文件的CD-ROM,如用于包含在软件产品包中的内含物。例如,该产品可以为:字处理程序,电子表格程序,共同提供的此类程序的套件,操作系统,或其生产商作为一个整体生产、分发的任意其他软件产品包。
系统5不仅复制实现给定副本所需的所有文件,而且此系统还生成一个字母数字标记,通常将此标记印刷在一张标签上,然后粘贴到装有该CD-ROM的容器、或放置该CD-ROM的包装盒上。此标记实现两种功能:(a)它唯一标识与其有关的特定CD-ROM,以及(b)通过本发明,以密码方式验证它是该特定CD-ROM而不是其他CD-ROM的标记。至于后一种功能,在将此产品从特定CD-ROM安装到PC(后面将连同图2一起大致说明此过程,然后连同图5一起详细说明此过程)上时,每当提示用户输入该标记时,作为安装程序的一部分而执行的验证过程,将连同该CD-ROM上存储的特定信息(包括公开密钥和保密密钥),以密码方式确定用户刚刚输入标记是否为生产商发布的,以及此特定CD-ROM是否可信。
尽管生产商可以生成有效标记的一个大集供其使用,或者在生产该产品期间,以安全方式,向第三方磁盘复制者分发该集合,但是,对于给定的产品副本,可以唯一验证系统5而为其相应的产品副本生成的各个标记。这样,如果第三方获得该软件的非法副本,其中包括所有的应用程序和安装文件,而不管该副本驻留的介质,则即使第三方拥有有效标记的列表,也不可能生成能够正确验证特定副本的标记。
具体参照图1,计算机10局部存储并执行应用程序20,特别是软件副本发生器程序30。在相应的范围内,程序30例如控制CD-ROM的生产过程,其中CD-ROM存储共同实现软件产品包之副本所需要的所有文件的副本。这些文件包括,在例如客户PC之类的远程计算机上完全安装、并实现该产品所需要的所有程序(包括有关的数据文件,若有的话)和安装文件。在计算机10内,这些文件全部驻留在程序存储器15上,如本地硬盘,也可以利用到达远程文件服务器的网络连接,用作备择实施方式。通过在软件副本发生器程序30内执行的常规文件复制程序32,顺序下载这些文件,如直线17所示。程序32指定要下载的特定文件,按次序从程序存储器15中访问各文件,并将各文件下载到CD刻录机50,同时命令将该文件写到随后插入刻录机内的CD-ROM上。正如下面说明,特别是连同图4一起讨论的那样,标记生成过程400生成字母数字标记75,其长度通常为25位,该标记与正在将文件写到其上的特定CD-ROM关联。一旦过程400生成了该标记,此过程就向图1所示的打印机60提供该标记,后者将此标记打印到一张标签上。在将所有文件复制到该CD-ROM上之后,如虚线55所示,将其插入到诸如CD-ROM容器之类的合适包装70中。然后如虚线65所示,将该标签粘贴到此包装的外表面上。可以执行过程400,以至标记的生成与将程序文件写到CD-ROM上大致同时发生,或者与它的时间具有交错关系。尽管为了简便起见,仅用包含一台计算机、一台CD-ROM刻录机以及一台打印机的形式,表示系统5,但实际上,系统5可以包含多台计算机—通常利用网络连接到远程文件服务器,多台刻录机和多台打印机,以实现所需的流水线并行程序复制操作。
正如图示80所示,标记75包含字段83和87,这些字段包含一个标识符(ID),然后是根据该标识符生成的签名,即SIGN(ID)。正如该标记之图示90详细表示的那样,该标识符包含报文M,后者具有一个值,该值对软件生产商生产的各产品的各个副本是唯一的。作为示例,当转换为二进制时,此报文为一个32位的二进制序列号,只有该生产商生产的所有产品中之某个软件产品的唯一一个副本,才有该序列号。当转换为二进制时,签名包含一个说明性的长度为83位的值,该值是两个值r和s的连接(用“°”表示连接操作),其中将在下面详细讨论r和s,并且通过本发明,生产商使用该标识符生成r和S。
图2表示典型客户计算机200的高级框图,其中客户计算机在例如从图1所示的系统5生产的CD-ROM中安装程序时,说明性地利用本发明。
此时,为了从CD-ROM中安装程序,如直线207所示,用户将该CD-ROM,插入到与客户计算机200关联的CD-ROM驱动器中。该用户或者手工命令计算机200开始执行该CD-ROM上存储的安装程序220(通常命名为“setup.exe”或“install.exe”),或者此程序将通过诸如与程序220有关并在操作系统上实现的常规“自动运行”能力,自动执行,然后在客户计算机上执行。安装程序220将以应用程序210的方式执行,然后在此客户机上执行。实现该产品之预定安装过程的,并且在从CD-ROM上将该产品之所有程序文件传输到本地海量存储器之前的程序220,将执行验证过程500。此过程(将在下文中连同图5详细说明),将提示用户输入与正在从其上安装程序的特定CD-ROM有关的标记。作为对此提示的响应,用户通常通过与计算机200有关的键盘,手工输入与此特定CD有关的25位的字母数字标记。一旦用户表示他(她)已经通常利用鼠标单击与计算机200有关的本地显示器上显示的正确按钮,完全输入了此标记,验证过程500就使用该标记中包含的信息,特别是如下文所述该CD-ROM中存储的M、r和s的值以及特定的数据值,确定用户输入的标记是否可信,即该标记是否是生产商发布的,以及此特定CD-ROM是否可信。
如果验证过程500成功验证了用户输入的标记,则此过程将通知安装程序220(如图2所示),该安装程序再继续进行安装过程,随后,从CD-ROM上将所有合适程序文件复制到客户计算机200上。然而,如果过程500不能验证该标记,则过程500将提前终止安装过程,并且不会将任何程序文件复制到客户计算机200上。根据是否验证了该标记,验证过程500生成并向用户显示适当消息,如直线230所示。无论该标记验证与否,此消息均可以隐含在生成过程中,并分别在该安装过程的验证后阶段中,显示下一个继续屏幕,或者显示一条警告消息,指出不授权该用户使用正在安装的副本,并因此终止安装过程。
图3表示客户计算机(PC)200的框图。
如图所示,客户计算机200包括输入接口(I/F)320,处理器340,通信接口350,存储器330和输出接口360,并按照惯例,都利用总线370进行互连。存储器300通常包括多种形式,例如:随机存取存储器(RAM)332,用于临时数据和指令存储;磁盘驱动器334,用于按照各用户命令利用软盘交换信息;非易失海量存储器335,利用具有天然磁性的硬盘实现;以及CD-ROM驱动器336。尽管在使用CD-ROM分发软件产品的范围内说明本发明,但本发明同样适用于在其他海量介质(如软盘)上分发软件产品,其中在该种情况中,要将该介质插入到合适的驱动器中,如磁盘驱动器334中,并从该驱动器上读取安装程序,然后执行。海量存储器335还可以包含其他光介质读取设备(未示出)(或写设备),以便从合适的光存储介质上读取信息(或将信息写到该介质上)。此外,海量存储器335还存储操作系统(O/S)337和应用程序210的可执行指令和有关数据。程序210包括安装程序220,其中一旦在软件安装过程中加载了安装程序,其本身就包含本发明的验证过程500(参见图5)。可以利用诸如WINDOWSNT(“WINDOWS NT”为位于华盛顿州Redmond的微软公司的注册商标)之类的常规操作系统,实现图3中所示的O/S 337。我们将不讨论O/S 337任何组件,因为它们与本发明无关。只需说明在O/S的控制下执行作为应用程序210之一的安装程序220,就足够了。
其优点在于,当将本发明的技术嵌入到软件产品中使用时,除要求用户输入正在安装的特定产品副本的标记之外,并不需要其他明显的用户交互。
如图3所示,输入信息可以从两个示意性的外部来源产生:网络提供的信息,例如通过到达网络接口350的网络连接355,来自因特网和/或其他连网设备,或者经由路径310,从专用的输入源,到达输入接口320。专用输入可以从各种各样的数据源发起,这些数据源与本发明没有任何特定关系。尽管在从CD-ROM进行本地安装的范围内说明本发明,但也可以在将该产品网络安装到计算机200的过程中使用本发明,如通过因特网或其他连网设备(如内联网)。在该情况下,生产商或站点许可管理员,一旦收到产品副本的电子支付或被许可副本的合适授权请求,就可以从远程网络文件服务器上,下载包含该产品副本之对应标记的文件。如果在该文件服务器上远程执行相关安装程序,则该服务器将访问存储在客户机上、包含有标记的文件,并在将所有程序文件下载到计算机200上之前,验证该标记。作为选择,如果在本地执行安装程序,则一旦从服务器下载了所有程序和安装文件,该服务器(或者用户在稍后的某个时间内)将开始在本地执行安装程序。此程序将本地访问包含标记的文件,接着验证产品副本。
输入接口320包含适当电路,以提供将输入信息之各种不同的专用源,物理连接并对接到计算机系统200所需要的必要的对应电子连接。在操作系统的控制下,应用程序210经由网络连接335或路径310,与外部源交换命令和数据,以传输并接收程序执行过程中通常由用户请求的信息。
此外,输入接口320还将诸如键盘和鼠标之类的用户输入设备395,电子连接并对接到计算机系统200。分别通过线路363和367,将诸如常规彩色显示器之类的显示器380,以及诸如常规激光打印机之类的打印机385,连接到输出接口360。输出接口提供需要的电路,以将显示器和打印机,电子连接并对接到计算机系统。一般而言,正如人们理解的那样,本发明的技术可以运行,以生成几乎各种类型的报文的唯一的、安全的、可验证签名,并不仅仅只能生成产品副本标记,而与客户计算机200获得、存储和/或交换报文的形式无关。
此外,由于除实现本发明的模块之外的计算机系统200的特定硬件组件,以及存储器335中存储的软件的各个方面,为众所周知的常规部件,因此不再详细讨论。一般而言,计算机10具有与客户计算机200类似的体系结构。
B.发明技术
通过本发明,若给定某个报文,如数字产品副本标识符,则基于公开密钥加密系统,并且通过使用从有限域上面的椭圆曲线上的各点中选择的一个发生器值,生成该报文的可信签名。我们的技术依赖于使用该发生器值连同示例签名者A的三种密钥,即公开密钥(PA)、私有密钥(SA)和保密密钥(KA)一起,生成可信签名。
正如在公开密钥加密技术中那样,由签名者A生成报文(M)的签名,签名为报文以及签名者的公开密钥和私有密钥的函数,即:
Sign(M,PA,SA)→SIGNATURE_A(M)。
此报文的接收者B,可以按照报文、其签名以及其签名者公开密钥的函数,即Vefiry(M,SIGNATURE_A(M),PA),验证他(她)接收的报文的签名。验证结果通常为是/否指示,以表示该签名是否有效。如果该签名有效,则将其看作通过使用签名者的特定公开密钥和私有密钥(“密钥对”)产生的签名。如果第三方或者通过密码分析该报文以及有关签名,或者通过诸如盗窃密钥之类手段的非法获得,获得了此密钥对的知识,则第三方可生成新的签名报文对,即报文和各报文的有效签名。
通过要求不仅根据签名者的公开密钥和私有密钥,还要根据该签名者的保密密钥,生成可信签名,本发明的技术大大增加了与签名有关的安全性:
Authentic_Sign(M,PA,SA,KA)→AUTHENTIC_SIGNATURE_A(M)。
通过使用本发明,在当前的可能领域内,并且在不了解保密密钥的情况下,仅仅知道公开密钥和私有密钥,远不能生成包含可信签名的新的签名报文对。我们相信,若给定许多报文以及其可信签名,则根据签名的报文对,即仅仅根据报文和可信签名,恢复保密密钥是完全不可能的。在这点上,我们估计,对于一个83位的二进制可信签名,在不了解保密密钥的情况下,生成此类可信签名的概率的数量级为(0.5)30—这是一个无穷小的数量,接近与随机猜测有关的概率。
本质上,根据本发明的技术,给定特定椭圆曲线上的所有点,选择该曲线上某个点的值作为发生器值。私有密钥是随机选择的。公开密钥定义为发生器的值和私有密钥的预定函数,特别是用私有密钥取发生器值的幂。保密密钥用于生成一个伪随机数。然后,通过该发生器、伪随机数以及一个报文(诸如随机选择的产品副本标识符)的预定函数,生成可信签名的第一部分。具体而言,首先用伪随机数值取发生器的幂,以产生一个值,然后再将该值与报文连接在一起。接着,通过预定的散列函数处理由连接产生的数,从而产生可信签名的第一部分。根据该第一部分、伪随机值以及私有密钥的预定函数,生成可信签名的剩余部分。最后,通过将签名的两个部分连接起来,生成完整的可信签名。
当使用本发明实现产品副本标记时,将公开密钥和发生器值存储在其产品副本中的适当文件内,以便在客户计算机(如图2所示的客户计算机200)上安装时,供验证副本使用。
在安装该产品副本时,首先通过在客户计算机上,使用发生器值、公开密钥和完整标记,特别是用户输入的标记和签名,计算签名的第一部分,来验证用户输入的签名;然后,确定上述第一部分的值是否与用户输入的签名中相同部分的值完全匹配。如果上述匹配存在,则输入的签名可信,并且继续安装此副本;否则,签名不可信,提前终止安装过程。
使用三个不同阶段实现本发明,并生成产品副本标记:(a)只进行一次的初始化,通常由软件生产商进行,以生成各种参数值;(b)标记生成(后面将连同图4一起详细说明过程400),使用初始化过程中生成的参数值,在介质复制场所重复进行,以生成各不同产品副本的包含可信签名的相应标记,以便与该副本一起使用;以及(c)验证(后面将连同图5一起详细说明过程500),在执行安装程序期间,分别在用户场地(客户计算机)相继发生,以便验证用户输入的、与该用户试图安装的特定产品副本有关的标记中的签名,从而继续安装该副本或取消安装。
既然通过使用公开密钥,能够以常规方式验证利用本发明生成的可信签名,因此,为了简明起见,我们将省略具体实现验证的所有细节。
1.定义和初始化方面
我们将首先定义本发明技术所使用的各种变量,以及初始化本技术所使用的步骤。
首先,定义有限域(K),最好在加罗瓦域上定义,即K=GF(p),其中p非常大,如384位或更大,并且p=1(mod 4)。作为选择,可以将该域定义为K=GF(2m)。
接着,在此域上定义椭圆曲线E。根据本发明的技术,我们利用其上存在复数加法和复数乘法的椭圆曲线,以允许本发明技术中使用的参数和生成的标记较短,同时仍能提供防止某些形式的加密攻击所需要的安全性—如果不使用椭圆曲线,则对于如此短的参数,其安全性是不可能的。一般而言,椭圆曲线包含满足以下形式曲线的点(x,y):y2=ax3+bx2+cx+d,其中a、b、c和d为预定义的系数。通过改变上述四个系数的值,该曲线上的点数将相应改变。尽管我们可以使用一般形式的椭圆曲线,但我们更愿说明性地选择有限域K上的曲线y2=x3+x,同时有限域K允许按下述方式计算曲线E上的点数|E|。如果p=α2+β2,其中α=1(mod 4),则|E|=p+1-2α=(α-1)2+β。因此,通过据此选择α和β,可以设置该曲线上的点数。
选择一个大素数q,其长度至少约为60位,并且据此设置α和β,以确保q均匀划分|E|,同时满足1(mod 4)。
一旦据此选择了q的值,就在曲线E上为阶为q的子群定义发生器的值g,通常为一个随机点。其典型实现方法是,重复选择曲线E上的随机点作为g,并测试其属性,即该数是否满足以下等式G={g,2g,3g,...,(q-1)g}且|G|=q,直至找到一个相配数。
一旦选择了发生器的适当值,就选择一个随机数作为专用指数X。数X成为私有密钥。参数gpow是公开密钥,并按照等于gX的形式计算。
最后,将保密密钥KA定义为两个预定义部分A1和A2的连接,即KA=(A1°A2)。
一旦定义了上述参数,就存储参数q、g、gpow和X,以便在随后执行标记生成过程400时使用,执行该过程的目的在于,为生产商随后生产的各种软件产品的各个不同副本,生成一个标记,该标记包含一个唯一标识符和相关的可信签名。此外,如下文所述,以数据形式,将参数g和gpow的值,以及HASH函数的说明,都存储在各产品副本内,以供在安装此产品副本时,特别是在验证(即,在执行下文详细说明的验证过程500时)用户在安装此副本时手工输入的标记时,访问并使用它们。
2.标记生成过程400
图4为标记生成过程400的流程图。如上所述,由计算机10分别执行此过程,并由驻留在其存储器(未示出)上的适当存储的程序(可执行)指令实现此过程,以生成各相继产品副本的唯一标记。此过程使用保密密钥KA、q、g、gpow和专用指数X的值。
一进入过程400,就首先进行到块410。当执行此块时,该块随机指派下一后继(尽管未使用)值,作为当前产品副本的标识符(此处为M),其中(232-1)>M>0。作为选择,也可以顺序指派上述标识符。此时,对于某个软件生产商发布的所有产品副本,以及所有不同产品,指派第一个值作为第一产品副本的标识符,指派第二个值作为第二产品副本的标识符,等等。无论如何,各产品副本均具有唯一标识符。如果在使用本发明的技术生成产品标记时,软件生产商希望生产大于232个副本的软件产品,则可以采用熟练技术人员显而易见的方式修改本技术,以使用更长的标识符,以及由此产生的更长的密钥和参数值。
一旦块410按照上述方式指派了一个适当值,作为当前产品副本的标识符,执行就进行到块420。此块使用保密密钥和指派给当前产品副本的标识符M,生成指数的伪随机值k,其中k在[1,q-1]范围内。一般而言,k=G_MS(M),其中G_MS是伪随机数发生器。最好采用众所周知的常规安全散列函数,特别是SHA_1,实现伪随机数发生器。此散列函数将任意长度的数字输入数,映射为一个160位的值,以至不可能定位任意的等长数值对(x,y),其中SHA_1(x)=SHA_1(y),其需要的运算次数超过280。特别是如上所述,保密密钥KA说明为两个预定义部分A1和A2的连接,即KA=(A1°A2),并且一旦生成,就在生成所有产品副本标记时,保持不变。为了计算k,块420首先将保密密钥解析为部分A1和部分A2,然后按照下面的式(1)和式(2),使用多次散列操作计算指数k,式(1)和式(2)为:
h=SHA_1(A1°M) (1)
k=SHA_1[(A2°M)]h (2)
为了获得更多的安全性,可以将通过式(1)和式(2)产生的值k,作为另一个伪随机函数的种子,进行处理,以产生一个新的伪随机值k,其中作为选择,可以在生成当前产品副本之标记的剩余步骤中,使用新值,代替按上述等式生成的值。
正如上文所述,一旦按上述方式确定了当前产品副本的值k,就执行块430,以计算gk。此后,进行到块440,该块使用验证方了解的HASH函数,根据式(3),确定作为gk和M之函数的参数r的值。作为示例,此散列函数为SHA_1函数。
r=HASH(gkoM) (3)
接着,块450执行,以根据式(4),计算作为k、X、r和q之函数的参数s。
s=k-Xr(mod q) (4)
一旦计算出s,执行就进行到块460,该块形成作为M、r和s连接的115位的二进制标记,其中可信签名本身为r和s的连接。在形成二进制标记后,块470将此标记转换为25位的字母数字形式,然后将以上生成的字母数字标记作为输出值,应用于诸如打印机60之类的设备(参见图1),以便与当前产品副本一起使用。为了减少混乱,以及用户手工输入该标记时可能造成的错误,从而提供增强的可用性,块470(图4所示)最好不使用某些字母数字字符,如用户看起来很相似的(取决于印刷标记所使用的字体)字母I和字母O(无论是大写还是小写),数字0,L的小写以及数字1等等。此外,可能将看起来很形似的字符,如“L”的小写和数字“1”,映射为一个共同字符,即数字“1”。
我们估计,通过本发明并给定一个公开/私有密钥对,在当前可用PC上,能够在一秒的处理时间内,生成83位的可信签名,给出32位的标识符。
3.验证过程500
图5为一个流程图,说明在图2和图3所示的客户计算机200中执行验证过程500。如上所述,当在客户计算机上安装给定的产品副本时,此过程验证用户手工输入的该副本的标记。要在此验证过程中使用的g和gpow的值以及HASH函数的说明,均存储在给定的产品副本内,并且对该软件生产商的所有产品副本是通用的。尽管为了简化,我们将参数g和gpow的值以及HASH函数的说明说成是,对指定软件生产商的所有产品的所有副本通用,但是,为了更多的安全性,上述参数值以及HASH函数的说明,可以是只对该生产商的特定产品的所有副本通用的,可以是只对该产品的特定副本集通用的,或者只是各副本特有的。
一进入过程500,首先进行到块510。该块读取用户手工输入的、他(她)试图在其客户计算机,即图2和图3所示的客户计算机200,上安装的特定产品副本的字母数字标记。一旦读取了此标记,块520就开始执行,以首先将此字母数字标记转换为二进制序列,然后抽取该标记中的参数M、r和s的值。此后,进行到块530,该块从其产品副本中,读取要在验证中使用的、其本身存储的参数g和gpow的值,以及特定散列函数的说明。
一旦块530读取了上述参数值以及散列函数的说明,就进行到块540,当执行块540时,该块使用从标记中抽取的值r和s,计算g
r和g
pow r的值。一旦计算出上述值,就执行块550和560,以共同验证标记,其方法是,首先计算可信签名的第一部分,即参数r(此处,用
表示重新计算的部分),然后比较其值与从标记中抽取的同一参数值。具体而言,块550根据下面的等式(5)计算
其中:HASH为在验证过程中使用的产品副本中确定的散列函数。此函数通常为SHA_1函数。
在计算出值
之后,进行到判定框560,该框对照从用户输入的标记中抽取的值r,测试上述值。如果两个值相同(匹配),则验证了标记中的签名。因此,该过程经由YES路径563,从验证过程500退出,以继续安装此产品副本。另一方面,如果两个值不同,则该标记,特别是它包含的签名是不可信的。因此,不授权该用户安装此产品副本。在此实例中,判定框560经由NO路径567,到达块570。当执行块570时,该块在本地显示器(即图3所示的显示器380)上显示一条适当消息,声明不授权该用户安装此产品副本。一旦显示了此条消息,就从过程500中退出(如图5所示),但是其退出方式是,提前终止进一步安装此产品副本。
到目前为止,熟练技术人员将认识到,尽管我们将本发明的技术描述为,用于生成作为部分标记的安全可信签名,以便在用户计算机上安装时,与软件产品副本一起使用,但是,每当用户建立与软件生产商操作的服务器的网络连接时,能够使用本发明,以很安全的方式,来串行化先前安装的产品副本。具体而言,如果在客户计算机上运行的O/S的用户,建立与该O/S生产商之网站的因特网连接,则web服务器能够生成一个安装号,例如上文论述的包含可信签名的标记,然后下载该安装号,以存储到客户计算机上(当然,我们假设,将在客户计算机上执行的web浏览器设置为:接受“cookies”,即接受此下载)。然后,生产商可以使用该安装号,去唯一地、安全地标识特定的O/S安装。随后,每当用户建立与该生产商之网站的因特网连接时,通过访问并验证客户计算机上存储的安装号,生产商可以轻而易举地识别该O/S的特定安装。通过成功验证存储的安装号,生产商可以区分经过授权的O/S安装,和未经授权的O/S安装。因此,生产商可以仅向授权安装提供产品支持、升级、推销和/或其他服务,而拒绝向未经授权安置提供上述服务。同样,生产商可以为先前安装,并且该生产商希望随后标识的其他类型的软件程序副本,例如应用程序,生成并下载唯一的安装号。
而且,尽管该标记利用产品副本标识符,作为用于生成可信签名的报文,但此报文并不如此被限定。此报文可组成需要电子加密并且从一方传送到另一方的任意形式的数字信息。因此,本发明可以提供很高的安全机制,以验证在发送方和接收方之间传送的加密报文通信流中的各报文。
另外,尽管我们将本发明技术描述为,使用安全散列函数,以在标记生成过程和验证过程(特别是图4中的块440和图5中的块550)中,生成参数r和
但也可以使用其他安全函数,其前提是,在两个过程中采用同一函数,并且在相关产品副本中存储该函数的说明,同时在安装特定副本时由验证过程读取。
此外,尽管我们以下述方式示意说明本发明,即与32位的报文(此处,用产品副本标识符说明)和83位的可信签名一起使用,但是,给定预期的应用,可以轻而易举地修改本发明,以容纳更长的报文和签名,或者在能够容忍较少安全性的应用中,采用更短的报文和签名。
尽管本文详细展示并说明了体现本发明技术的具有各种更改的实施方式,但熟练技术人员可以轻易作出仍然利用上述技术的许多其他
实施方式。