CN104050399B - 用户验证方法和装置以及盗版追踪方法和装置 - Google Patents
用户验证方法和装置以及盗版追踪方法和装置 Download PDFInfo
- Publication number
- CN104050399B CN104050399B CN201310081014.6A CN201310081014A CN104050399B CN 104050399 B CN104050399 B CN 104050399B CN 201310081014 A CN201310081014 A CN 201310081014A CN 104050399 B CN104050399 B CN 104050399B
- Authority
- CN
- China
- Prior art keywords
- watermark
- user
- secret information
- machine code
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004458 analytical method Methods 0.000 claims description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 6
- 238000000547 structure data Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 8
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 239000013589 supplement Substances 0.000 description 6
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000006854 communication Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003245 coal Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/16—Program or content traceability, e.g. by watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1063—Personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
用户验证方法和装置以及盗版追踪方法和装置。该用户验证方法包括:利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配;在当前机器码是授权机器码的情况下,允许用户使用该软件产品;在当前机器码不是授权机器码的情况下,确定该软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印;以及在存在与所输入的秘密信息相匹配的水印的情况下,允许用户使用该软件产品,否则不允许用户使用该软件产品。用户秘密信息是与嵌入在软件产品的程序结构中的水印相对应的秘密信息。
Description
技术领域
本申请涉及用户验证以及盗版追踪,更具体地,涉及用户验证方法和装置以及基于水印进行盗版追踪的方法和装置。
背景技术
随着计算机的广泛使用、网络技术的飞速发展以及计算机软件的迅速发展,软件被复制并遭受未经授权的次级发行、软件的算法被盗用、或者软件遭受恶意篡改等等情形越来越常见,软件产品的版权保护已经成为一个十分重要的问题。
一种用于保护软件版权的重要技术是软件水印技术。软件水印可以用来标识作者、发行者、所有者、使用者等,并且可以携带有版权保护信息和身份认证信息,从而能够鉴别出非法复制和盗用的软件产品。
软件水印是附加在软件程序上的冗余信息。现有的软件水印根据水印的加入位置可以分为代码水印和数据水印,代码水印隐藏在程序的指令部分,而数据水印则隐藏在包括头文件、字符串和调试信息等数据中。根据水印被加载的时刻,软件水印又可分为静态水印和动态水印,静态水印的存在不依赖于软件的运行状态,可以在存放、分发以及运行时被验证。这类水印在软件编码时或编码完成后被直接嵌入。动态水印保存在程序的执行状态中,而不是程序源代码本身。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
根据本发明的一个方面,提供一种用户验证方法,包括:利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配;在当前机器码是授权机器码的情况下,允许用户使用该软件产品;在当前机器码不是授权机器码的情况下,确定该软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印;以及在存在与所输入的秘密信息相匹配的水印的情况下,允许用户使用该软件产品,否则不允许用户使用该软件产品,其中,用户秘密信息是与嵌入在该软件产品的程序结构中的水印相对应的秘密信息。
根据本发明的另一个方面,提供一种用户验证装置,包括:机器码匹配部分,被配置为利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配;验证确定部分,被配置为在当前机器码是授权机器码的情况下,允许用户使用该软件产品;以及水印匹配部分,被配置为在当前机器码不是授权机器码的情况下确定该软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印,其中,验证确定部分还被配置为在存在与所输入的秘密信息相匹配的水印的情况下允许用户使用该软件产品,否则不允许用户使用该软件产品,并且其中,用户秘密信息是与嵌入在该软件产品的程序结构中的水印相对应的秘密信息。
根据本发明的再一个方面,提供一种基于水印的盗版追踪方法,包括:通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印;以及在找到与用户秘密信息相匹配的水印的情况下,根据该用户秘密信息确定盗版者。
根据本发明的又一个方面,提供一种用于基于水印进行盗版追踪的装置,包括:水印查找部分,被配置为通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印;以及盗版者确定部分,被配置为:在水印查找部分找到与用户秘密信息相匹配的水印的情况下,根据该用户秘密信息确定盗版者。
附图说明
本发明可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本发明的优选实施例和解释本发明的原理和优点。在附图中:
图1是示出根据本发明实施例的用户验证方法的过程示例的流程图;
图2是示出根据本发明实施例的用户验证方法的另一过程示例的流程图;
图3示出了用来构造水印的程序拓扑结构的示例;
图4示出了用来构造水印的程序数据结构的示例;
图5示出了用来构造水印的程序数据结构的另一示例;
图6示出了用来构造水印的程序数据结构的又一示例;
图7是示出根据本发明实施例的用户验证装置的配置示例的框图;
图8是示出根据本发明实施例的用户验证装置的另一配置示例的框图;
图9是示出根据本发明实施例的盗版追踪方法的过程示例的流程图;
图10是示出根据本发明实施例的盗版追踪装置的配置示例的框图;以及
图11是示出实现本申请的方法和设备的计算机的示例性结构的框图。
具体实施方式
下面将参照附图来说明本发明的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
根据本发明实施例的用户验证方法用于在用户要使用软件产品时对用户进行验证,以确定该用户是否为该软件产品的授权用户,从而确定该用户是否能够使用该软件产品。
如图1所示,根据本发明实施例的用户验证方法利用用户所输入的秘密信息来确定当前机器码是否与利用软件发行方提供的用户秘密信息加密的授权机器码相匹配(S110、S120)。其中,用于加密授权机器码的用户秘密信息是与嵌入在该软件产品的程序结构中的水印相对应的秘密信息。
具体地,例如以用户输入的秘密信息和所读取的当前机器码作为预定加密函数的输入,以获得加密的当前机器码,并且将加密的当前机器码与用同样方式加密的授权机器码(可以是一个或更多个授权机器码)进行比较。或者,可以使用用户输入的秘密信息对加密的授权机器码进行解密,并将当前机器码与解密的授权机器码进行比较。其中,加密的授权机器码例如可以被保存在软件头部分。
另外,授权机器码例如是在用户购买软件产品时被确定和加密保存的,或者可以是在授权用户安装或运行软件时从当前机器读取并加密保存的。
如图1所示,在确定当前机器码是授权机器码的情况下,允许用户使用该软件产品(S130),即允许运行软件并获得相应的功能输出。
另外,在确定当前机器码不是授权机器码的情况下,根据本申请实施例的用户验证方法可以进行多种处理。例如,可以要求用户重新输入秘密信息,可以记录或报告未被授权的当前机器码,或者可以进行其他的验证过程,例如下面将要描述的基于水印的验证过程。
根据本发明实施例的用户验证方法通过使用与嵌入在软件产品的程序结构中的水印相对应的秘密信息作为授权机器码的加密密钥,并使用用户输入的由软件发行方提供的用户秘密信息来进行机器码的匹配,使得不需要在软件产品中特别设置安全存储区以保存授权机器码的加密密钥。此外,在需要进行进一步的水印验证的情况下,由于用户所输入的该秘密信息也用于水印验证,因此不会额外地增加用户的操作负担。
接下来,参照图2说明根据本发明实施例的用户验证方法的另一处理示例。
图2中的步骤S210和S230与参照图1说明的步骤S110和S130类似,在此不再赘述。
当S220中确定当前机器码与授权机器码不匹配时,有可能是如下情况:用户输入的秘密信息正确(即用户是授权用户),但当前机器码未被记录为授权机器码。因此,根据本实施例的用户验证方法进一步进行水印验证,即确定软件产品的程序结构中是否存在与用户所输入的秘密信息相匹配的水印(S240),从而确认用户是否是授权用户。
在存在与所输入的秘密信息相匹配的水印的情况下,确定用户为授权用户,并且允许用户使用该软件产品(S250),否则不允许所述用户使用该软件产品(S260)。
另外,在水印验证通过的情况下,根据本发明实施例的用户验证方法还可以包括将当前机器码添加为授权机器码的步骤(S270)。例如,可以通过与已有授权机器码的加密方式相同的方式、使用用户秘密信息对当前机器码进行加密并保存。
接下来,对根据本发明实施例的用户验证方法中的水印验证进行说明。
作为水印嵌入的程序结构可以包括程序的拓扑结构,即程序指令的流程组成的结构。此外,可以基于程序块中的数据来构造水印。例如,作为嵌入的水印,可以是根据预定规则、由程序块中的数据构造的数据结构,其中数据结构例如包括数组、链表、队列、树、堆或者图,但不限于此。相应地,在进行水印验证时,可以通过对程序结构的分析,利用与嵌入水印的方式相对应的方式,逐个程序块地查找水印,直到找到水印或穷尽所有程序块为止,从而确定是否存在与所输入的秘密信息相匹配的水印。具体地,可以基于软件的程序块中的数据、按照与嵌入水印时所使用的预定规则相对应的规则构造数据结构,并且在所构造的数据结构与所输入的秘密信息具有预定对应关系的情况下确定存在匹配的水印。
在程序结构中嵌入的水印可以是通过对原始程序实施混淆而构建的,其中可以采用多种混淆手段,例如,插入支路、增加冗余操作数以及拆分变量或者拆分循环等,但不限于此。经过混淆的程序结构对于盗版者而言难以读懂,使得盗版者难以通过篡改程序结构来破坏水印,从而使得所构建的水印具有更高的鲁棒性。
另外,可以针对不同的授权用户实施不同的混淆以得到每个授权用户所特有的水印。在这种情况下,由于授权用户与其所获得的软件产品中嵌入的水印(相应地,与用户秘密信息)之间具有一一对应的关系,因此更加利于授权用户信息的维护以及版权保护。
可以根据预定方式确定与程序结构中嵌入的水印相对应的用户秘密信息。例如,可以按照预定规则由所构建的程序结构得到相应的值,即水印信息,并且将秘密信息确定为以该水印信息为结果的预定数学难题的解。在本文中,数学难题的“解”是指由于数学难题的难解性而较难算出的值,而数学难题的“结果”是指该数学难题的给定值或者说目标值。例如,在因子分解问题K=p·q中,在给定K的情况下较难求出p和q,因此将因子p和q称为以K为结果的因子分解问题的解。在实际应用中,可以先确定秘密信息,并相应地算出要嵌入的水印信息,然后例如通过实施混淆来构造与该水印信息相对应的程序结构,从而完成水印的嵌入。所应用的数学难题例如可以包括大数因子分解问题、离散对数问题、椭圆曲线离散对数问题或者幂因子分解问题,但不限于此。相应地,在进行水印验证时,确定程序结构中是否存在与所输入的秘密信息具有预定对应关系的结构,可以将该预定对应关系设置为:按照预定规则由数据结构得到相应的值,秘密信息对应于以该值为结果的预定数学难题的解。在实际应用中,可以根据用户输入的秘密信息,通过预定数学难题的逆运算得到数学难题的结果,并在程序中查找与该结果相对应的程序结构,当找到对应的结构时确定验证通过。在以数学难题的解作为秘密信息的情况下,即使在知道了水印信息的情况下也较难算出秘密信息,从而保证了秘密信息的安全性。另一方面,根据秘密信息较容易算出水印信息,从而保证了水印嵌入以及验证过程中较小的计算量。
下面,结合具体示例说明根据本发明实施例的利用数学难题和程序结构来构造水印的方式。相应地,在进行水印验证时,可以利用相应规则确定程序结构中是否存在与用户输入的秘密信息相对应的水印。
参照图3说明根据本发明的一个具体实施例的用大数素因子分解问题以及程序的图状拓扑结构来构造水印的方式。
图3示出了一个程序流程组成的图状拓扑结构的示例。该拓扑结构包含8个结点,其中箭头方向表示执行流走向。该拓扑结构例如可以是通过混淆来构建的。可以根据如下规则确定与该拓扑结构对应的水印信息:以图中各个环路根据所包含的边数进行排列,将包含边数多的环路的数量值排在高位,将包含边数少的环路的数量值排在低位,将该数值排列得到的值作为与该结构相对应的值。在确定环路数量时,约定自向环只计算一遍,且环路不能包含交叉点(自向环不是交叉点)。根据该规则,图中包含1条边的环路有1个(由结点4和1条边组成);包含2条边的环路有0个;包含3条边的环路有5个,分别是(1,6,2),(1,6,8),(1,3,2),(2,5,4)和(2,7,3);包含4条边的环路有2个,分别是(2,5,4,4,)和(6,2,7,1)(注意,(1,3,2,7,3,2)不可被计算为环路,因为有交叉点);图中不包含5个或更多边的环路。因此,以环路包含的边数为排列,环路包含4、3、2、1条边的环路的数量值分别为2、5、0、1。从而,与这个图状拓扑结构相对应的数值可以被确定为2501。
利用大数因子分解问题确定与该值相对应的秘密信息。大数因子分解问题可以被描述为:给定大数K,K=p·q,其中p和q是两个大素数,根据K求解p和q的问题即为大数素因子分解问题。对于上述数值,2501=41*61,因此用户秘密信息S为(41,61)。这里给出的具体素因子分解的示例仅仅是为了说明的目的,实际应用中的素因子可以取大素因子,并且构建相应的程序结构。相应地,在进行水印验证时,可以对程序块逐个进行分析以确定其拓扑结构,按照上述规则基于拓扑结构确定相应的值,并确定用户输入的秘密信息是否对应于以该值的因子分解问题的解。在找到匹配的拓扑结构时,确定验证通过。例如,在上面的示例中,当用户输入的秘密信息为(41,61)时,可以根据该秘密信息得到因子分解的逆运算,即相乘的结果为41*61=2501,因此,一旦在程序的拓扑结构中找到根据上述规则与2501相对应的结构,则验证通过。
接下来,参照图4说明一个用离散对数问题以及树状数据结构来构造水印的示例。
首先,简单描述离散对数问题:给定一个素数p和有线域Zp上的本原元a,对Zp上的整数b,寻找唯一的整数c,使得ac≡b(mod p)。一般地,如果仔细选择p使p-1至少有一个大的素数因子,则认为该问题是难解的。可见,在约定素数p以及本原元a的情况下,可将b作为水印信息,而c即为相应的秘密信息S。
图4给出了一个由12个结点组成的5层树状数据结构,该数据结构是一个排序二叉树,每个结点的值都小于自己右子树的值,大于自己左子树的值。该二叉树结构可以是通过将程序块中的数据按照被使用的顺序依次排入上述二叉树而得到的。该树状结构从上自下分别是第0层、1层、2层、3层和4层。用x·2i来表示每个结点,其中x是每个结点的值,i是每个结点所在的层次,则这个树状数据结构所代表的值可以被确定为x·2i对于树中的每个结点的求和。对于该示例数据结构,该求和值为:
(8+33)·24+(2+7+13)·23+(1+4+6+11)·22+(3+9)·21+5·20=949
即,这个树状数据结构嵌入的水印信息是949。
结合离散对数问题,约定p=2579,a=2,而2765≡949(mod 2579),即,该水印的秘密信息S=765。
相应地,在进行水印验证时,可以对程序块逐个匹配,根据程序块的数据确定排序二叉树,按照上述规则基于排序二叉树确定相应的值,并确定用户输入的秘密信息是否对应于该离散对数问题的解。在找到匹配的数据结构时,确定验证通过。例如,在上面的示例中,当用户输入的秘密信息为765时,可以根据该秘密信息得到离散对数问题的逆运算的结果为2765mod 2579=949,因此,一旦在程序的根据上述规则构造的数据结构中找到根据上述规则与949相对应的结构,则验证通过。
这里采用的规则约定和数值设置仅仅是为说明而给出的具体示例,本发明不限于此。
此外,根据本发明的一个实施例,可以根据数据排序和数据类型来构造数据结构。例如,除了根据程序块中的数据不论类型地生成的排序二叉树之外,可以按各个数据类型生成相应的补充排序二叉树,并将不论类型生成的排序二叉树与补充排序二叉树进行组合来构成图状数据结构。
参照图5描述根据数据排序和数据类型来构造数据结构的示例。其中,图5a所示的是不论类型生成的排序二叉树,其中包含整数(int)类型、字符(char)类型、浮点(float)类型以及双精度(double)类型的数据。图5b中粗线表示的是float类型的补充排序二叉树,图5c中粗线表示的是double类型的补充排序二叉树,图5d中粗线表示的是char类型的补充排序二叉树。通过将图5a所示的排序二叉树与各个补充排序二叉树进行组合,得到图5e所示的最终图状数据结构,作为根据该程序块构建的数据结构。
将根据该数据结构确定水印信息的方式设置为:以连接结点的边数为排列,连接边数多的排在高位,连接边数少的排在低位,将该排列得到的数值作为水印信息。具体地,在图5e的结构中,连接4、3、2、1条边的结点数分别为4、7、4、7,因此这个图状数据结构中嵌入的水印信息为4747。利用大数因子分解问题,4747=47*101,因此用户秘密信息为(47,101)。
这里采用的规则约定和数值设置仅仅是为说明而给出的具体示例,本发明不限于此。
相应地,在进行水印验证时,可以对程序块逐个匹配,根据程序块的数据排序和数据类型确定上述图状数据结构,按照上述规则基于数据结构确定相应的值,并确定用户输入的秘密信息是否对应于该值的因子分解问题的解。在找到匹配的数据结构时,确定验证通过。例如,在上面的示例中,当用户输入的秘密信息为(47,101)时,可以根据该秘密信息得到因子分解问题的逆运算的结果为47*101=4747,因此,一旦在程序的根据上述规则构造的数据结构中找到根据上述规则与4747相对应的结构,则验证通过。
下面参照图6描述用大数因子分解问题以及二维数组数据结构来构造水印的示例。其中,将二维数组的数据结构定义为一个包含程序块中所有数据的最小二维方阵,且该方阵中的空白处由0补齐。例如,一个程序块中按序用到14个数据(45,21,3,4,12,8,8,23,11,0,2,37,9,17),那么包含这14个数据的最小二维方阵是4*4的方阵,多余的两个位置补0,于是可以得到与之相对应的二维数组数据结构如图6所示。
将根据该数据结构确定水印信息的方式设置为:取该二维数据结构对角线元素以及反对角线元素的排列所得到的数。在图6的矩阵中,对角线元素和反对绞线元素的排列为(45,8,2,0,4,8,0,9),因此得到的值为458204809。而458204809=28109*16301,用户秘密信息即为(28109,16301)。相应地,在进行水印验证时,可以对程序块逐个匹配,根据程序块的数据排序确定上述二维方阵,按照上述规则基于而为方阵确定相应的值,并确定用户输入的秘密信息是否对应于该值的因子分解问题的解。在找到匹配的数据结构时,确定验证通过。例如,在上面的示例中,当用户输入的秘密信息为(28109,16301)时,可以根据该秘密信息得到因子分解问题的逆运算的结果为28109*16301=458204809,因此,一旦在程序的根据上述规则构造的数据结构中找到根据上述规则与458204809相对应的结构,则验证通过。
上述各个示例中描述的构建数据结构的方式、由程序结构确定相应的值(水印信息)的方式以及利用数学难题确定与水印信息相对应的秘密信息的方式可以进行适当变型的组合。特别地,虽然上述示例中分别描述了基于程序的拓扑结构和根据数据构建的数据结构来嵌入水印的示例,但是也可以利用拓扑结构和数据结构的组合来构建水印。然而,本发明并不限于上面所举的程序结构、数据结构和数学难题。在进行水印验证时,按照与嵌入水印的方式相应的方式,例如通过对软件的程序块逐个进行分析确定程序块的拓扑结构,或者利用上述规则基于程序块的数据构造数据结构,并按照预定方式确定与程序块的结构相对应的数值,当找到某个程序块与用户输入的秘密信息相匹配(例如用户输入的秘密信息对应于以该程序块的预定对应数值作为输入的数学难题的解)时,确定水印验证通过。
接下来,参照图7和图8说明根据本发明实施例的用户验证装置的配置示例。
如图7所示,根据本发明实施例的用户验证装置700包括机器码匹配部分710和验证确定部分720。
机器码匹配部分710被配置为利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配。其中,用户秘密信息是与嵌入在软件产品的程序结构中的水印相对应的秘密信息。
例如,机器码匹配部分710可以包括加密部分和比较部分(图中未示出),其中,加密部分可以被配置为以用户输入的秘密信息和所读取的当前机器码作为预定加密函数的输入,以获得加密的当前机器码,比较部分可以被配置为将加密的当前机器码与预先已加密的一个或更多个授权机器码进行比较。
或者,机器码匹配部分710可以包括解密部分和比较部分(图中未示出),其中,解密部分可以被配置为使用用户输入的秘密信息对加密的授权机器码进行解密,而比较部分被配置为将当前机器码与解密的授权机器码进行比较。
验证确定部分720被配置为在当前机器码是授权机器码的情况下,允许用户使用软件产品,例如允许运行软件并获得相应的功能输出。
另外,根据本发明实施例的用户验证装置还可以包括其他部件,以在确定当前机器码不是授权机器码的情况下进行相应的处理。例如,可以包括用于要求用户重新输入秘密信息的部件、用于保存或报告未授权机器码的部件、或者用于进行其他验证过程的部件。
如图8所示,根据本发明另一个实施例的用户验证装置800包括机器码匹配部分810、验证确定部分820、水印匹配部分830。
机器码匹配部分810和验证确定部分820与上面描述的机器码匹配部分710和验证确定部分720的配置类似,在此不再赘述。
水印匹配部分830被配置为在当前机器码不是授权机器码的情况下,确定软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印。
另外,验证确定部分820还被配置为:在水印匹配部分830确定存在与所输入的秘密信息相匹配的水印的情况下,允许用户使用该软件产品,否则不允许用户使用该软件产品。
具体地,水印匹配部分830可以被配置为在软件产品的程序结构中搜索所嵌入的水印以查找是否存在与用户输入的秘密信息相匹配的水印。其中,用于嵌入水印的程序结构可以包括程序的拓扑结构和基于程序块中的数据构造的数据结构。例如,水印可以被嵌入在根据预定规则、由程序块中的数据构造的数据结构中,其中数据结构例如包括数组、链表、队列、树、堆或者图,但不限于此。在程序结构中嵌入的水印可以是通过对原始程序实施混淆而构建的,其中可以采用多种混淆手段,例如,插入支路、增加冗余操作数以及拆分变量或者拆分循环等,但不限于此。相应地,根据本发明的一个实施例,水印匹配部分830被配置为基于程序块中的数据、按照预定规则构造数据结构并且在所构造的数据结构与用户输入的秘密信息具有预定对应关系的情况下,确定存在匹配的水印。此外,水印匹配部分830可以逐个程序块地查找水印,直到找到匹配的水印或查遍所有程序块为止。
与所嵌入的水印相对应的秘密信息是根据预定方式确定的。例如,可以以水印信息作为预定数学难题的输入,并将该数学难题的解作为用户秘密信息。所应用的数学难题例如可以包括大数因子分解问题、离散对数问题、椭圆曲线离散对数问题或者幂因子分解问题,但不限于此。相应地,根据本发明的一个实施例,水印匹配部分830可以被配置为根据由程序块的数据构造的数据结构与用户输入的秘密信息之间是否满足预定对应关系来进行水印匹配,其中该预定对应关系可以为:按照预定规则由数据结构得到相应的值,秘密信息是以该值为结果的预定数学难题的解。
具体的水印可以是通过与前面结合图3至图6描述的方式类似的方式构造的,但不限于此。相应地,根据本发明实施例的水印匹配部分可以采用相应方式查找匹配的水印,在此不再赘述。
可选地,根据本发明实施例的用户验证装置800还可以包括授权机器码添加装置840,被配置为在水印匹配部分810确定存在与所输入的秘密信息相匹配的水印的情况下,将当前机器码添加为授权机器码。
例如,授权机器码添加装置840可以通过与已有授权机器码的加密方式相同的方式、使用用户秘密信息对当前机器码进行加密并保存。
根据本发明实施例的用户验证装置通过使用与嵌入在软件产品的程序结构中的水印相对应的秘密信息作为授权机器码的加密密钥,并使用用户输入的由软件发行方提供的用户秘密信息来进行机器码的匹配,使得不需要软件产品中特别设置有安全存储区以保存授权机器码的加密密钥。此外,在需要进行进一步的水印验证的情况下,由于用户所输入的该秘密信息也可以用于水印验证,因此不会额外地增加用户的操作负担。
接下来,参照图9和图10说明根据本发明另一实施例的基于水印的盗版追踪方法和装置。盗版追踪的目的是,在发现了盗版软件的情况下,确定非法复制和传播软件拷贝的源头,例如提供软件产品以用于制作盗版软件的授权用户。
如图9所示,首先,通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印(S910)。根据本发明的一个实施例,该用户秘密信息是用于对正版软件产品的授权机器码进行加密的密钥信息。
具体地,可以针对提供给每个授权用户的用户秘密信息,在盗版软件的程序结构中查找与该授权用户的用户秘密信息相匹配的水印。
其中,用于嵌入水印的程序结构可以包括程序的拓扑结构和基于程序块中的数据构造的数据结构。例如,水印可以被嵌入在根据预定规则、由程序块中的数据构造的数据结构中,其中数据结构例如包括数组、链表、队列、树、堆或者图,但不限于此。在程序结构中嵌入的水印可以是通过对原始程序实施混淆而构建的,其中可以采用多种混淆手段,例如,插入支路、增加冗余操作数以及拆分变量或者拆分循环等,但不限于此。与所嵌入的水印相对应的用户秘密信息是根据预定方式确定的。例如,可以以水印信息作为预定数学难题的输入,并将该数学难题的解作为用户秘密信息。所应用的数学难题例如可以包括大数因子分解问题、离散对数问题、椭圆曲线离散对数问题或者幂因子分解问题,但不限于此。具体的水印可以是通过与前面结合图3至图6描述的方式类似的方式构造的。相应地,在根据本发明一个实施例的盗版追踪方法中,查找水印的步骤包括:基于盗版软件的程序块中的数据、按照预定规则构造数据结构,以及在所构造的数据结构与用户秘密信息具有预定对应关系的情况下,确定找到水印。其中,逐个程序块地查找水印,直到找到水印或穷尽所有程序块为止。另外,可以将上述预定对应关系设置为:按照预定规则由数据结构得到相应的值,用户秘密信息对应于以该值为结果的预定数学难题的解。
上述水印的鲁棒性使得水印不易被盗版者破坏,从而保证了能够成功地进行盗版追踪。
在找到与用户秘密信息相匹配的水印的情况下,根据用户秘密信息与授权用户的对应关系,可以确定盗版者(S920),即确定作为非法复制和传播软件拷贝的源头的授权用户。
如图10所示,根据本发明实施例的盗版追踪装置1000包括水印查找部分1010和盗版者确定部分1020。
水印查找部分1010被配置为通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印。根据一个实施例,用户秘密信息是用于对正版软件产品的授权机器码进行加密的密钥信息。
具体地,水印查找部分可以从存储了提供给授权用户的用户秘密信息的库(图中未示出)中逐一提取用户秘密信息,并且在盗版软件的程序结构中查找能够与该用户秘密信息相匹配的水印。其中,水印可以根据如上所述的方式嵌入在程序的拓扑结构和/或数据结构中。相应地,根据一个实施例,水印查找部分被配置为:基于盗版软件的程序块中的数据、按照预定规则构造数据结构,并且在所构造的数据结构与用户秘密信息具有预定对应关系的情况下,确定存在与该用户秘密信息匹配的水印,并且水印查找部分被配置为逐个程序块地查找水印,直到找到水印或穷尽所有程序块为止。另外,可以将上述预定对应关系设置为:按照预定规则由数据结构得到相应的值,用户秘密信息对应于以该值为结果的预定数学难题的解。
盗版者确定部分1020被配置为在水印查找部分1010找到与用户秘密信息相匹配的水印的情况下,根据该用户秘密信息确定盗版者。
作为一个示例,上述方法的各个步骤以及上述装置的各个组成模块和/或单元可以实施为软件、固件、硬件或其组合。在通过软件或固件实现的情况下,可以从存储介质或网络向具有专用硬件结构的计算机(例如图11所示的通用计算机1100)安装构成用于实施上述方法的软件的程序,该计算机在安装有各种程序时,能够执行各种功能等。
在图11中,运算处理单元(即CPU)1101根据只读存储器(ROM)1102中存储的程序或从存储部分1108加载到随机存取存储器(RAM)1103的程序执行各种处理。在RAM 1103中,也根据需要存储当CPU 1101执行各种处理等等时所需的数据。CPU 1101、ROM 1102和RAM1103经由总线1104彼此链路。输入/输出接口1105也链路到总线1104。
下述部件链路到输入/输出接口1105:输入部分1106(包括键盘、鼠标等等)、输出部分1107(包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等,和扬声器等)、存储部分1108(包括硬盘等)、通信部分1109(包括网络接口卡比如LAN卡、调制解调器等)。通信部分1109经由网络比如因特网执行通信处理。根据需要,驱动器1110也可链路到输入/输出接口1105。可拆卸介质1111比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器1110上,使得从中读出的计算机程序根据需要被安装到存储部分1108中。
在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质1111安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图11所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质1111。可拆卸介质1111的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)(注册商标))和半导体存储器。或者,存储介质可以是ROM 1102、存储部分1108中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。
本发明还提出一种存储有机器可读取的指令代码的程序产品。所述指令代码由机器读取并执行时,可执行上述根据本发明实施例的方法。
相应地,用于承载上述存储有机器可读取的指令代码的程序产品的存储介质也包括在本发明的公开中。所述存储介质包括但不限于软盘、光盘、磁光盘、存储卡、存储棒等等。
在上面对本发明具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以用相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在上述实施例和示例中,采用了数字组成的附图标记来表示各个步骤和/或单元。本领域的普通技术人员应理解,这些附图标记只是为了便于叙述和绘图,而并非表示其顺序或任何其他限定。
此外,本发明的方法不限于按照说明书中描述的时间顺序来执行,也可以按照其他的时间顺序地、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本发明的技术范围构成限制。
尽管上面已经通过对本发明的具体实施例的描述对本发明进行了披露,但是,应该理解,上述的所有实施例和示例均是示例性的,而非限制性的。本领域的技术人员可在所附权利要求的精神和范围内设计对本发明的各种修改、改进或者等同物。这些修改、改进或者等同物也应当被认为包括在本发明的保护范围内。
Claims (19)
1.一种用户验证方法,包括:
利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配;
在当前机器码是授权机器码的情况下,允许所述用户使用所述软件产品;
在当前机器码不是授权机器码的情况下,确定所述软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印;以及
在存在与所输入的秘密信息相匹配的水印的情况下,允许所述用户使用所述软件产品,否则不允许所述用户使用所述软件产品,
其中,所述用户秘密信息是与嵌入在所述软件产品的程序结构中的水印相对应的秘密信息。
2.根据权利要求1所述的方法,其中,在存在与所输入的秘密信息相匹配的水印的情况下,将所述当前机器码添加为授权机器码。
3.根据权利要求1所述的方法,其中,确定是否存在所述水印的步骤包括:
基于程序块中的数据、按照预定规则构造数据结构;以及
在所构造的数据结构与所述秘密信息具有预定对应关系的情况下,确定存在所述水印,
其中,逐个程序块地查找所述水印,直到找到所述水印或穷尽所有程序块为止。
4.根据权利要求3所述的方法,其中,所述数据结构包括数组、链表、队列、树、堆或者图。
5.根据权利要求3所述的方法,其中,所述预定对应关系为:按照预定规则由所述数据结构得到相应的值,所述秘密信息对应于以所述值为结果的预定数学难题的解。
6.根据权利要求5所述的方法,其中,所述数学难题包括大数因子分解问题、离散对数问题、椭圆曲线离散对数问题或者幂因子分解问题。
7.根据权利要求1或2所述的方法,其中,用所述用户秘密信息加密的授权机器码被保存在所述软件产品的软件头中。
8.一种用户验证装置,包括:
机器码匹配部分,被配置为利用用户所输入的秘密信息,确定当前机器码是否与利用软件产品的发行方提供的用户秘密信息加密的授权机器码相匹配;
验证确定部分,被配置为在当前机器码是授权机器码的情况下,允许所述用户使用所述软件产品;以及
水印匹配部分,被配置为:在所述当前机器码不是授权机器码的情况下,确定所述软件产品的程序结构中是否存在与所输入的秘密信息相匹配的水印,
其中,所述验证确定部分还被配置为:在存在与所输入的秘密信息相匹配的水印的情况下,允许所述用户使用所述软件产品,否则不允许所述用户使用所述软件产品,并且
其中,所述用户秘密信息是与嵌入在所述软件产品的程序结构中的水印相对应的秘密信息。
9.根据权利要求8所述的装置,还包括:
授权机器码添加部分,被配置为:在所述水印匹配部分确定存在与所输入的秘密信息相匹配的水印的情况下,将所述当前机器码添加为授权机器码。
10.根据权利要求8所述的装置,其中,
所述水印匹配部分被配置为:基于程序块中的数据、按照预定规则构造数据结构,并且在所构造的数据结构与所述秘密信息具有预定对应关系的情况下,确定存在所述水印,
其中,所述水印匹配部分逐个程序块地查找所述水印,直到找到所述水印或穷尽所有程序块为止。
11.一种基于水印的盗版追踪方法,包括:
通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印;以及
在找到与所述用户秘密信息相匹配的水印的情况下,根据该用户秘密信息确定盗版者。
12.根据权利要求11所述的方法,其中,所述用户秘密信息是用于对所述正版软件产品的授权机器码进行加密的密钥信息。
13.根据权利要求11或12所述的方法,其中,查找所述水印的步骤包括:
基于所述盗版软件的程序块中的数据、按照预定规则构造数据结构;以及
在所构造的数据结构与所述用户秘密信息具有预定对应关系的情况下,确定存在所述水印,
其中,逐个程序块地查找所述水印,直到找到所述水印或穷尽所有程序块为止。
14.根据权利要求13所述的方法,其中,所述数据结构包括数组、链表、队列、树、堆或者图。
15.根据权利要求13所述的方法,其中,所述预定对应关系为:按照预定规则由所述数据结构得到相应的值,所述用户秘密信息对应于以所述值为结果的预定数学难题的解。
16.根据权利要求15所述的方法,其中,所述数学难题包括大数因子分解问题、离散对数问题、椭圆曲线离散对数问题或者幂因子分解问题。
17.一种用于基于水印进行盗版追踪的装置,包括:
水印查找部分,被配置为通过对盗版软件产品的程序结构的分析来查找与正版软件产品的发行方提供的用户秘密信息相匹配的水印;以及
盗版者确定部分,被配置为:在所述水印查找部分找到与所述用户秘密信息相匹配的水印的情况下,根据该用户秘密信息确定盗版者。
18.根据权利要求17所述的装置,其中,所述用户秘密信息是用于对所述正版软件产品的授权机器码进行加密的密钥信息。
19.根据权利要求17或18所述的装置,其中,
所述水印查找部分被配置为:基于所述盗版软件的程序块中的数据、按照预定规则构造数据结构,并且在所构造的数据结构与所述用户秘密信息具有预定对应关系的情况下,确定存在所述水印,并且
所述水印查找部分被配置为逐个程序块地查找所述水印,直到找到所述水印或穷尽所有程序块为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081014.6A CN104050399B (zh) | 2013-03-14 | 2013-03-14 | 用户验证方法和装置以及盗版追踪方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081014.6A CN104050399B (zh) | 2013-03-14 | 2013-03-14 | 用户验证方法和装置以及盗版追踪方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050399A CN104050399A (zh) | 2014-09-17 |
CN104050399B true CN104050399B (zh) | 2018-06-12 |
Family
ID=51503219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310081014.6A Expired - Fee Related CN104050399B (zh) | 2013-03-14 | 2013-03-14 | 用户验证方法和装置以及盗版追踪方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104050399B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105825089A (zh) * | 2016-03-15 | 2016-08-03 | 上海斐讯数据通信技术有限公司 | 一种智能终端jni数据跟踪方法及系统 |
CN110968844B (zh) * | 2019-12-02 | 2021-12-17 | 卫盈联信息技术(深圳)有限公司 | 离线状态下的软件授权方法、服务器及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512756A (zh) * | 2002-12-27 | 2004-07-14 | ��ʽ���綫֥ | 数字水印嵌入装置和方法以及数字水印检测装置和方法 |
CN1682174A (zh) * | 2002-09-05 | 2005-10-12 | 松下电器产业株式会社 | 组形成/管理系统,组管理装置,以及成员装置 |
CN101051910A (zh) * | 2007-05-21 | 2007-10-10 | 中兴通讯股份有限公司 | 认证授权计费服务器识别客户端软件的方法和装置 |
CN101853361A (zh) * | 2009-04-01 | 2010-10-06 | 林伟波 | 文件加密方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060010430A1 (en) * | 2001-05-04 | 2006-01-12 | Thales | Device and process for the signature, the marking and the authentication of computer programs |
US7376624B2 (en) * | 2002-02-27 | 2008-05-20 | Imagineer Software, Inc. | Secure communication and real-time watermarking using mutating identifiers |
-
2013
- 2013-03-14 CN CN201310081014.6A patent/CN104050399B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1682174A (zh) * | 2002-09-05 | 2005-10-12 | 松下电器产业株式会社 | 组形成/管理系统,组管理装置,以及成员装置 |
CN1512756A (zh) * | 2002-12-27 | 2004-07-14 | ��ʽ���綫֥ | 数字水印嵌入装置和方法以及数字水印检测装置和方法 |
CN101051910A (zh) * | 2007-05-21 | 2007-10-10 | 中兴通讯股份有限公司 | 认证授权计费服务器识别客户端软件的方法和装置 |
CN101853361A (zh) * | 2009-04-01 | 2010-10-06 | 林伟波 | 文件加密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104050399A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shen et al. | Double DIP: Re-evaluating security of logic encryption algorithms | |
Koushanfar et al. | Behavioral synthesis techniques for intellectual property protection | |
JP4970279B2 (ja) | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 | |
JP2022507796A (ja) | ブロックチェーン上にデータを格納するコンピュータにより実施されるシステム及び方法 | |
EP3096309B1 (en) | Secret calculation method, secret calculation system, sorting device, and program | |
CN113765657A (zh) | 一种密钥数据处理方法、装置及服务器 | |
Chang et al. | A blind dynamic fingerprinting technique for sequential circuit intellectual property protection | |
Cui et al. | Ultra-low overhead dynamic watermarking on scan design for hard IP protection | |
Saha et al. | Secure public verification of IP marks in FPGA design through a zero-knowledge protocol | |
JP2019523492A (ja) | 難読化算術を実行するためのデバイス及び方法 | |
Karmakar et al. | A cellular automata guided finite-state-machine watermarking strategy for IP protection of sequential circuits | |
CN107273724A (zh) | 为白盒实施方案的输入和输出加水印 | |
JP2006311477A (ja) | 同種写像ベースの署名の生成および検証のためのシステムおよび方法 | |
CN109840401A (zh) | 针对数据文本的水印嵌入方法 | |
Qu | Publicly detectable watermarking for intellectual property authentication in VLSI design | |
CN104050399B (zh) | 用户验证方法和装置以及盗版追踪方法和装置 | |
US20170098089A1 (en) | Method of protecting secret data when used in a cryptographic algorithm | |
Huang et al. | Smart contract watermarking based on code obfuscation | |
EP2286610B1 (en) | Techniques for peforming symmetric cryptography | |
Biswas | Using pattern of on-off routers and links and router delays to protect network-on-chip intellectual property | |
Biswas | Network-on-Chip Intellectual Property Protection Using Circular Path--based Fingerprinting | |
Forbes | Digital Logic Protection Using Functional Polymorphism and Topology Hiding | |
Liang et al. | Study on IP protection techniques for integrated circuit in IOT environment | |
Liu et al. | A robust error control coding-based watermarking algorithm for FPGA IP protection | |
CN117155539B (zh) | 模拟射频电路网表的混淆及其复原方法、装置、终端及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180612 Termination date: 20210314 |