首页 / 专利库 / 版权及相关权 / 版权所有者 / 一种基于零知识证明协议的芯核水印盲检测方法

一种基于零知识证明协议的芯核印盲检测方法

阅读:925发布:2020-08-25

专利汇可以提供一种基于零知识证明协议的芯核印盲检测方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于零知识证明协议的芯核 水 印盲检测方法,包括以下步骤:进行零知识认证协议预处理;将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;在零知识协议检测方法的 基础 上,由水印提取器将水印信息从含有水印的比特文件中提取;通过引入可变因子,进行Hilbert曲线进行整体置乱和分 块 置乱处理;通过初始化、质询、应答和验证,让买家从 内核 的配置文件中检测出拥有者的水印 版权 信息。本发明将零知识芯核水印信息融合到已有的公钥加密方案中,弥补了其它芯核水印方案没有考虑在公共场合进行公开水印取证的 缺陷 ,具有很好的透明性、安全性以及鲁棒性。,下面是一种基于零知识证明协议的芯核印盲检测方法专利的具体信息内容。

1.一种基于零知识证明协议的芯核印盲检测方法,其特征在于,该基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
步骤一,运用零知识证明的思想,对芯核水印检测首先进行零知识认证协议预处理;
步骤二,将含有零知识水印的签名信息经过水印信息预处理后由嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
步骤三,在零知识协议检测方法的基础上,可以由水印提取器将水印信息从含有水印的比特文件中提取;
步骤四,方法中为了能够进一步的提高水印的安全性能,通过引入可变因子,进行Hilbert曲线进行整体置乱和分置乱处理;
步骤五,通过初始化、质询、应答和验证,让买家从内核的配置文件中能够盲检测出拥有者水印的版权信息。
2.如权利要求1所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,步骤一的预处理方法为:
选择一个大素数n,n>21024,α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e, 且使得 成立,通过
便可计算出私钥d的值,确定待嵌入水印的位置信息,将位置信息数字化处
理后得到位置信息m',计算公钥M, m是最终需要嵌入的水印信息,m包含IP 
designer的信息也包含了IP buyer者信息,t为公钥信息,通过式子t=αmmodn我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d。
3.如权利要求1所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,在步骤二和步骤三中,芯核水印算法的步骤为通过零知识协议,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而水印提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现水印的验证。
4.如权利要求3所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,水印生成的方法为:
将芯核所有者的标识信息作为标识嵌入到芯核,先转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱后,密钥为SKey,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L,签名信息就转换成了数字水印的形式。
5.如权利要求3所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,水印嵌入的方法为:
1024
m是待嵌入的水印明文信息,选择大素数n,n>2 ,α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,随机数e的范围 用私钥e对明文m进行加密得到I,I的值I=memodQ,I是加密后的水印密文,计算t=αImodn,K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中。
6.如权利要求3所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,水印提取的方法为:
步骤一,芯核所有者利用私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
步骤二,通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m。
7.如权利要求1所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,在步骤四中,引入一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,β含有两个参数Δx和Δy,分别表示水平位移分量和垂直位移分量,假设n阶Hilbert曲线路径以数组形式表示,L[i]=(xi,yi),i=0,1,2…,4n-1,xi,yi∈{0,1,2…,2n-1},若将此路径做β(Δx,Δy)平移,则平移后的路径可以表示为L′[i]=((xi+Δx)mod2n,(yi+Δy)n
mod2 ),整体置乱算法步骤如下:
输入:D,L
输出:D′,L′
其中D为IP内核配置文件,L为水印位置信息;
第一步,将D中的网格依次编号做为二维数组Array[n][m]行标与列标;
第二步,将D中网格内容依次存入Array[n][m];
第三步,使用Hilbert曲线进行空间填充,对于n≠m的情况;
第四步,由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
第五步,将D′和L′返回给证明者,将D′返回给验证者。
8.如权利要求7所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,在步骤四中,分块置乱的过程为,针对D′上的敏感信息块进行进一步置乱处理:
第一步,假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L',FPGA的原始CLB的长,宽分别为X,Y,
输入:D′,B(x,y),L′
输出:D″,L″;
其中B(x,y)为分块信息对,参数x、y分别代表块长为x个CLB和块宽为y个CLB;
第二步,CLB矩阵分块,CLB矩阵的长宽为X,Y,所以CLB矩阵的行将被分成Xb=(X+x-1)÷x份,列将被分成Yb=(Y+y-1)÷y份,所以CLB矩阵被分成了B=Xb×Yb块,分块的结果将可能出现四种不同的情况;
1)X%x=0且Y%y≠0时:分块的最后一行块中的块高yl=Y%y;
2)X%x=0且Y%y=0时:所有块的大小相等;
3)X%x≠0且Y%y≠0时:分块的最后一列的块长xl=X%x,最后一行的块高yl=y%y;
4)X%x≠0且Y%y=0时:分块的最后一列的块长xl=X%x;
第三步,查找水印信息所在的位置,水印信息位置具体到了CLB中的LUT,所以需要对位置信息进行定位,得到水印信息位置序列L′中的每个成员所属于的CLB,得到的非重复的CLB序列记为:l;
第四步,含水印块集合的集合内置换,将含有水印的块集合l在所在的集合内采用随机置换的算法做一个置换操作;
第五步,水印块置换完成,生成置换后原水印所在序列:根据所生成的映射文件Map可以很快的由原始水印位置序列L′得到置换后的水印位置序列L″;
在第四步中,置换操作的具体算法如下:
1),所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk;
2),对Tk中的每个成员中的块数超过1的成员执行第3)–6)步;
3),Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
4),对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
5),循环执行直到Arr_a中没有任何成员为止;
6),用Arr_b中的成员块依次替换Arr_a中的成员块。
9.如权利要求1所述的基于零知识证明协议的芯核水印盲检测方法,其特征在于,在步骤五中,水印检测的具体过程为:
(1),证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L;
证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
(2),证明者动态产生分块信息对B(x,y),参数x、y分别代表块长为x个CLB和块宽为y个CLB,并且计算出按照B(x,y)分块后的总块数NUM;L′在B(x,y)下对应一个唯一的块号序列S,块号所对应的内容上集成了水印信息,将序列S称为敏感信息;使用分块置乱算法E,针对D′上的敏感信息进一步进行重新布局,分块置乱后L′→L″,D′→D″;证明者利用公钥信息对K,计算p=αrmodn,其中r=x+y;证明者将D″、p和NUM一起发给验证者,请求验证;
(3),验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
如果验证者选择的是块信息验证方式,则需要随机选取一个整数numnum∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
(4),证明者接收验证者要求的验证方式;如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,D″num表示D″中的第num块信息,如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
(5),验证者接收证明者发送过来的信息,如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E()num表示提取第num块的信息,如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算然后再利用公钥信息对K验证p=t-1αymodn;如果验证通过,就返回第
(2)步继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。

说明书全文

一种基于零知识证明协议的芯核印盲检测方法

技术领域

[0001] 本发明属于FPGA水印检测技术领域,尤其涉及一种基于零知识证明协议的芯核水印盲检测方法。

背景技术

[0002] 目前,检测IP非法侵权的证据主要是关注芯核水印系统自身的安全性和可验证性,然而仅依赖这些性能是远远不够的。
[0003] 现有的FPGA水印检测方案通常由第三方机构来验证水印,这样验证尽管可行,但是在实际的验证过程中要保证验证机构中所有成员的可信是很难的,因此,由第三方验证机构公布的验证结果并不能让IP购买者可信,如果验证者通过公开水印信息,就能够不需要指定第三方进行验证,那么验证者就可以向使用者验证自己的结果是可信的,然而在公开水印信息验证的时候,证明者需要向验证者提供敏感信息(如水印内容和水印嵌入的位置等),一旦这些敏感信息泄露,非法攻击者就会很容易将水印从IP中移除然后重新出售,这对于水印技术应用的安全性是一个严重的挑战。
[0004] 新发布的知识产权保护联盟VSI推出了公开密码保护标准后,Qu G.等人相继提出了一种新的公开可验证的芯核水印方法,基本思想是建立一个加密的伪随机水印,并将特定的约束嵌入到原始的设计中并予以公开,这样能够满足公众应用系统的安全需要,但是该方法通过图着色以及布尔可满足性证明等方法容易对它进行检测,随后,人们开始将零知识水印的思想应用于芯核的公开水印方案,Goldwasser等人首次提出了一种零知识证明(Zero-Knowledge Proof,ZKP)的概念,至今这项技术已经被成功运用到一些安全认证和鉴别协议中,ZKP是一个包括证明者和验证者的交互式证明系统,在这种技术的基础上,D.Saha等人在2009年首次提出了基于零知识协议的公钥鲁棒水印验证方案,该方案可以在不泄露任何除公开信息外的任何信息的情况下,证明者可以表明他对芯核的所有权,在此基础上,D.Saha等人相继又在2012年提出了关于芯核交易过程中双方权限管理的零知识公钥验证协议,该协议为IP复用交易双方互相认证提供了一个完整的框架,并且用具体的方法实现了该协议,在其实现过程中,双方在芯核交易过程中,他们分别扮演着两个不同色,即证明者和验证者,在芯核不同阶段的设计过程中,该协议都能在不泄露除公开信息的情况下解决买卖双方间的所有权认证问题,该协议在实现过程中采用了“复合映射”的机制和“R-轮询问”机制,这两者结合起来增加了系统的时间开销,尽管这种方法使得认证双方的密钥信息达到了较好的安全性,但是这种技术将导致芯核水印检测系统在检测过程中带来较大的开销。
[0005] 现有的检测技术主要依赖于可信任的其他用户,并把其作为可信第三方,不能直接用于芯核盲水印设计过程中。
[0006] 目前,FPGA水印检测方案很难保证第三方机构验证机构中所有成员是可信的,如果验证者通过公开水印信息进行验证则易泄漏敏感信息,无法保证水印技术应用的安全性;芯核交易过程中双方权限管理的零知识公钥验证协议可使认证双方的密钥信息达到较好的安全性,但增加了系统的时间开销,实时性差。

发明内容

[0007] 本发明实施例的目的在于提供一种基于零知识证明协议的芯核水印盲检测方法,旨在解决目前验证芯核水印的方法安全性低,算法的时间复杂度高,实时性差的问题。
[0008] 本发明实施例是这样实现的,一种基于零知识证明协议的芯核水印盲检测方法,该基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
[0009] 步骤一,运用零知识证明的思想,对芯核水印检测首先进行零知识认证协议预处理;
[0010] 步骤二,将含有零知识水印的签名信息经过水印信息预处理后由嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
[0011] 步骤三,在零知识协议检测方法的基础上,可以由水印提取器将水印信息从含有水印的比特文件中提取;
[0012] 步骤四,方法中为了能够进一步的提高水印的安全性能,通过引入可变因子,进行Hilbert曲线进行整体置乱和分置乱处理;
[0013] 步骤五,通过初始化、质询、应答和验证,让买家从内核的配置文件中能够盲检测出拥有者水印的版权信息。
[0014] 进一步,步骤一的初始化方法为:
[0015] 选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e, 且使得 成立,通过便可计算出私钥d的值,确定待嵌入水印的位置信息,将位置信息数字化处
理后得到位置信息m′,计算公钥M, m是最终需要嵌入的水印信息,m包含IP 
designer的信息也包含了IP buyer者信息,t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d。
[0016] 进一步,在步骤二和步骤三中,芯核水印算法的步骤为通过零知识协议,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而水印提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证。
[0017] 进一步,水印生成的方法为:
[0018] 将芯核所有者的标识信息作为标识嵌入到芯核,先转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱后,密钥为SKey,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L,签名信息就转换成了数字水印的形式。
[0019] 进一步,水印嵌入的方法为:
[0020] m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,随机数e的范围用私钥e对明文m进行加密得到I,I的值I=memodQ,I是加密后的水印密文,计算t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中。
[0021] 进一步,水印提取的方法为:
[0022] 步骤一,芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
[0023] 步骤二,通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m。
[0024] 进一步,在步骤四中,引入一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,其中β含有两个参数Δx和Δy,分别表示水平位移分量和垂直位移分量,假设n阶Hilbert曲线路径以数组形式表示,L[i]=(xi,yi),i=0,1,2…,4n-1,xi,yi∈{0,1,2…,2n-1},若将此路径做β(Δx,Δy)平移,则平移后的路径可以表示为L′[i]=n n((xi+Δx)mod2,(yi+Δy)mod2 ),整体置乱算法步骤如下:
[0025] 输入:D,L
[0026] 输出:D′,L′
[0027] 第一步,将D中的网格依次编号做为二维数组Array[n][m]行标与列标;
[0028] 第二步,将D中网格内容依次存入Array[n][m];
[0029] 第三步,使用Hilbert曲线进行空间填充,对于n≠m的情况;
[0030] 第四步,由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
[0031] 第五步,将D′和L′返回给证明者,将D′返回给验证者。
[0032] 进一步,在步骤四中,分块置乱的过程为,针对D′上的敏感信息块进行进一步置乱处理:
[0033] 第一步,假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
[0034] 输入:D′,B(x,y),L′
[0035] 输出:D″,L″;
[0036] 第二步,CLB矩阵分块,CLB矩阵的长宽为X,Y,所以CLB矩阵的行将被分成Xb=(X+x-1)÷x份,列将被分成Yb=(Y+y-1)÷y份,所以CLB矩阵被分成了B=Xb×Yb块,分块的结果将可能出现四种不同的情况;
[0037] 1)X%x=0且Y%y≠0时:分块的最后一行块中的块高yl=Y%y;
[0038] 2)X%x=0且Y%y=0时:所有块的大小相等;
[0039] 3)X%x≠0且Y%y≠0时:分块的最后一列的块长xl=X%x,最后一行的块高yl=y%y;
[0040] 4)X%x≠0且Y%y=0时:分块的最后一列的块长xl=X%x;
[0041] 第二步,查找水印信息所在的位置,水印信息位置具体到了CLB中的LUT,所以需要对位置信息进行定位,得到水印信息位置序列L′中的每个成员所属于的CLB,得到的非重复的CLB序列记为:l;
[0042] 第三步,含水印块集合的集合内置换,将含有水印的块集合l在所在的集合内采用随机置换的算法做一个置换操作;
[0043] 第四步,水印块置换完成,生成置换后原水印所在序列:根据所生成的映射文件Map可以很快的由原始水印位置序列L′得到置换后的水印位置序列L″。
[0044] 进一步,在第三步中,置换操作的具体算法如下:
[0045] 第一步,所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk;
[0046] 第二步,对Tk中的每个成员中的块数超过1的成员执行第三-六步;
[0047] 第三步,Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
[0048] 第四步,对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
[0049] 第五步,循环执行d直到Arr_a中没有任何成员为止;
[0050] 第六步,用Arr_b中的成员块依次替换Arr_a中的成员块。
[0051] 进一步,在步骤五中,水印检测的具体过程为:
[0052] 步骤一,证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L;
[0053] 证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
[0054] 步骤二,证明者动态产生分块信息对B(x,y),其中参数x、y分别代表块长为x个CLB和块宽为y个CLB,并且计算出按照B(x,y)分块后的总块数NUM;L′在B(x,y)下对应一个唯一的块号序列S,块号所对应的内容上集成了水印信息,将序列S称为敏感信息;使用分块置乱算法E,针对D′上的敏感信息进一步进行重新布局,分块置乱后L′→L″,D′→D″;证明者利用公钥信息对K,计算p=αrmod n,其中r=x+y;证明者将D″、p和NUM一起发给验证者,请求验证;
[0055] 步骤三,验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
[0056] 如果验证者选择的是块信息验证方式,则需要随机选取一个整数num num∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
[0057] 步骤四,证明者接收验证者要求的验证方式;如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,D″num表示D″中的第num块信息,如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
[0058] 步骤五,验证者接收证明者发送过来的信息,如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E表示提取第num块的信息,如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算然后再利用公钥信息对K验证p=t-1αymod n;如果验证通过,就返回第二步继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
[0059] 本发明提供的基于零知识证明协议的芯核水印盲检测方法,通过把芯核水印信息零知识协议中的密钥值作为某个水印信息安全认证的凭据,同时可向公众实时公开零知识证明协议中密钥阀值信息以及版权所有者的身份信息,水印在无需原始载体的情况下便能对水印信息进行有效的盲取证操作,极大的提高了芯核版权所有者抵抗各种常规攻击的能;本发明采用移位寄存器加密技术对芯核逻辑设计过程中的资源配置信息进行了加密,进一步保护了配置信息被非法攻击者截获和破解的隐患;本发明将零知识芯核水印信息融合到已有的公钥加密方案中,弥补了其它芯核水印方案没有考虑在公共场合进行公开水印取证的缺陷。本发明实现了对芯核资源的开销影响较小,具有很好的透明性、安全性以及鲁棒性。附图说明
[0060] 图1是本发明实施例提供的基于零知识证明协议的芯核水印盲检测方法的流程图
[0061] 图2是本发明实施例提供的Hilbert曲线进行置乱示意图;
[0062] 图3是本发明实施例提供的CLB分块结构示意图;
[0063] 图4是本发明实施例提供的CLB块分组结构示意图;
[0064] 图5是本发明实施例提供的双方验证的交互过程模型示意图;
[0065] 图6是本发明实施例提供的三种方法检测的曲线图;
[0066] 图7是本发明实施例提供的不同水印嵌入率下的检测虚警率比较图。

具体实施方式

[0067] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0068] 图1示出了本发明提供的基于零知识证明协议的芯核水印盲检测方法流程。为了便于说明,仅仅示出了与本发明相关的部分。
[0069] 本发明实施例的基于零知识证明协议的芯核水印盲检测方法,该基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
[0070] 步骤一,进行零知识认证协议预处理;
[0071] 步骤二,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
[0072] 步骤三,在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取;
[0073] 步骤四,通过引入可变因子,进行Hilbert曲线进行整体置乱和分块置乱处理;
[0074] 步骤五,通过初始化、质询、应答和验证,让买家从内核的配置文件中检测出拥有者的水印版权信息。
[0075] 作为本发明实施例的一优化方案,步骤一的初始化方法为:
[0076] 选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e, 且使得 成立,通过便可计算出私钥d的值,确定待嵌入水印的位置信息,将位置信息数字化处
理后得到位置信息m′,计算公钥M, m是最终需要嵌入的水印信息,m包含IP 
designer的信息也包含了IP buyer者信息,t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d。
[0077] 作为本发明实施例的一优化方案,在步骤二和步骤三中,芯核水印算法的步骤为通过零知识协议,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而水印提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证。
[0078] 作为本发明实施例的一优化方案,水印生成的方法为:
[0079] 将芯核所有者的标识信息作为标识嵌入到芯核,先转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱后,密钥为SKey,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L,签名信息就转换成了数字水印的形式。
[0080] 作为本发明实施例的一优化方案,水印嵌入的方法为:
[0081] m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,随机数e的范围用私钥e对明文m进行加密得到I,I的值I=memod Q,I是加密后的水印密文,计算t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中。
[0082] 作为本发明实施例的一优化方案,水印提取的方法为:
[0083] 步骤一,芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
[0084] 步骤二,通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m。
[0085] 作为本发明实施例的一优化方案,在步骤四中,引入一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,其中β含有两个参数Δx和Δy,分别表示水平位移分量和垂直位移分量,假设n阶Hilbert曲线路径以数组形式表示,L[i]=(xi,yi),i=0,1,2…,4n-1,xi,yi∈{0,1,2…,2n-1},若将此路径做β(Δx,Δy)平移,则平移后的路径可以表示为L′[i]=((xi+Δx)mod2n,(yi+Δy)mod2n),整体置乱算法步骤如下:
[0086] 输入:D,L
[0087] 输出:D′,L′
[0088] 第一步,将D中的网格依次编号做为二维数组Array[n][m]行标与列标;
[0089] 第二步,将D中网格内容依次存入Array[n][m];
[0090] 第三步,使用Hilbert曲线进行空间填充,对于n≠m的情况;
[0091] 第四步,由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
[0092] 第五步,将D′和L′返回给证明者,将D′返回给验证者。
[0093] 作为本发明实施例的一优化方案,在步骤四中,分块置乱的过程为,针对D′上的敏感信息块进行进一步置乱处理:
[0094] 第一步,假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
[0095] 输入:D′,B(x,y),L′
[0096] 输出:D″,L″;
[0097] 第二步,CLB矩阵分块,CLB矩阵的长宽为X,Y,所以CLB矩阵的行将被分成Xb=(X+x-1)÷x份,列将被分成Yb=(Y+y-1)÷y份,所以CLB矩阵被分成了B=Xb×Yb块,分块的结果将可能出现四种不同的情况;
[0098] 1)X%x=0且Y%y≠0时:分块的最后一行块中的块高yl=Y%y;
[0099] 2)X%x=0且Y%y=0时:所有块的大小相等;
[0100] 3)X%x≠0且Y%y≠0时:分块的最后一列的块长xl=X%x,最后一行的块高yl=y%y;
[0101] 4)X%x≠0且Y%y=0时:分块的最后一列的块长xl=X%x;
[0102] 第二步,查找水印信息所在的位置,水印信息位置具体到了CLB中的LUT,所以需要对位置信息进行定位,得到水印信息位置序列L′中的每个成员所属于的CLB,得到的非重复的CLB序列记为:l;
[0103] 第三步,含水印块集合的集合内置换,将含有水印的块集合l在所在的集合内采用随机置换的算法做一个置换操作;
[0104] 第四步,水印块置换完成,生成置换后原水印所在序列:根据所生成的映射文件Map可以很快的由原始水印位置序列L′得到置换后的水印位置序列L″。
[0105] 作为本发明实施例的一优化方案,在第三步中,置换操作的具体算法如下:
[0106] 第一步,所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk;
[0107] 第二步,对Tk中的每个成员中的块数超过1的成员执行第三-六步;
[0108] 第三步,Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
[0109] 第四步,对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
[0110] 第五步,循环执行d直到Arr_a中没有任何成员为止;
[0111] 第六步,用Arr_b中的成员块依次替换Arr_a中的成员块。
[0112] 作为本发明实施例的一优化方案,在步骤五中,水印检测的具体过程为:
[0113] 步骤一,证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L;
[0114] 证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
[0115] 步骤二,证明者动态产生分块信息对B(x,y),其中参数x、y分别代表块长为x个CLB和块宽为y个CLB,并且计算出按照B(x,y)分块后的总块数NUM;L′在B(x,y)下对应一个唯一的块号序列S,块号所对应的内容上集成了水印信息,将序列S称为敏感信息;使用分块置乱算法E,针对D′上的敏感信息进一步进行重新布局,分块置乱后L′→L″,D′→D″;证明者利用公钥信息对K,计算p=αrmod n,其中r=x+y;证明者将D″、p和NUM一起发给验证者,请求验证;
[0116] 步骤三,验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
[0117] 如果验证者选择的是块信息验证方式,则需要随机选取一个整数num num∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
[0118] 步骤四,证明者接收验证者要求的验证方式;如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,D″num表示D″中的第num块信息,如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
[0119] 步骤五,验证者接收证明者发送过来的信息,如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E表示提取第num块的信息,如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算然后再利用公钥信息对K验证p=t-1αymod n;如果验证通过,就返回第二步继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
[0120] 下面结合附图及具体实施例对本发明的应用原理作进一步描述。
[0121] 如图1所示,本发明实施例的基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
[0122] S101:进行零知识认证协议预处理;
[0123] S102:将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
[0124] S103:在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取;
[0125] S104:通过引入可变因子,进行Hilbert曲线进行整体置乱和分块置乱处理;
[0126] S105:通过初始化、质询、应答和验证,让买家从内核的配置文件中检测出拥有者的水印版权信息。
[0127] 本发明的具体实施例为:
[0128] 第一步,水印零知识认证的初始化阶段,首先选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,且使得 成立,通过 便可计算出私钥d的值,然后确定待嵌入水印的位置信息,将位置信息数字化处理后得到位置信息m′,计算公钥M,m是最终需要嵌入的水印信息,m包含IP designer的信息也包含了IP 
buyer者信息(水印提取是可用于鉴定buyer是否非法将未经授权芯核重售给其它用户使用),t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d,至此,零知识认证协议的预处理阶段完成;
[0129] 第二步,芯核水印算法中,所有者的签名信息通过水印生成器得到一串0和1的数字信号,将这些数字信号以不影响设计功能的方式添加到芯核设计之中,从而产生水印后的芯核设计,芯核水印算法的设计包括三个关键步骤,即水印生成器、水印嵌入器及水印提取器的设计,通过上节零知识协议设计的基础,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证;
[0130] 水印生成过程:芯核所有者的标识信息往往是以商标、签名等形式存在,若以其作为标识嵌入到芯核设计,则必须将其转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱(密钥为SKey)后,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L.至此,签名信息就转换成了数字水印的形式,接下来的工作就是要将这一组水印片段在不影响正常功能的情况下嵌入到芯核设计;
[0131] 水印嵌入过程:m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,e用私钥e对明文m进行加密得到I(I=m mod Q),I是加密后的水印密文,计算
t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中;
[0132] 水印提取过程:在水印信息嵌入完成后,得到了一份带有水印的芯核设计,水印提取过程通常发生在芯核所有者与非法用户发生版权纠纷时用到,若非法用户得到了带有水印的芯核设计,在未经版权所有者允许的情况下用于自己的电路系统中,芯核所有者便可以申请进行版权验证,水印提取过程具体如下:
[0133] 步骤1:芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
[0134] 步骤2:通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m;
[0135] 第三步,整体置乱过程在水印验证开始之前,水印信息的整体置乱操作是整个验证过程中必不可少的一个步骤,在零知识协议验证过程中,需要验证者从D″中提取出被加密后的水印信息I,毫无疑问需要告诉验证者水印的位置信息L″,如果验证者能由L″推导出L,等价于告诉了验证者水印的实际位置,有违零知识验证的要求,所以,在验证开始之前,有必要对D进行一次整体置乱,将L→L′,掩盖水印的实际位置,并且由L′→L将是NP问题,整体置乱算法有多种实现方式,下面将介绍基于Hilbert曲线的整体置乱算法;
[0136] 考虑到FPGA与Bitfile的特殊结构,引入了两个概念:“网”和“格”,如图2(a)所示,将FPGA中CLB的布局抽象成二维网格,每个网格代表一个CLB并且用唯一的坐标进行标示,每个网格内部仍然使用网格来区别CLB中的每一个SLICE,通常情况下,每个CLB内部包含4个SLICE,我们将二阶Hilbert曲线映射到网格的模型;
[0137] 如果只是简单利用Hilbert曲线进行置乱,那么验证者很容易被非法用户进行逆向分析攻击,为此,引入了一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,其中β含有两个参数Δx和Δy,分别表示水平位移分量和垂直位移分量,假设n阶Hilbert曲线路径以数组形式表示,L[i]=(xi,yi),i=0,1,2…,4n-1,xi,yi∈{0,1,2…,2n-1},若将此路径做β(Δx,Δy)平移,则平移后的路径可以表示为L′[i]=((xi+Δx)mod2n,(yi+Δy)mod2n),比如:二阶Hilbert曲线做β(Δx=2,Δy=0)平移后的结果如图2(b)所示,整体置乱算法步骤如下:
[0138] 输入:D,L
[0139] 输出:D′,L′
[0140] (1)将D中的网格依次编号做为二维数组Array[n][m]行标与列标,
[0141] (2)将D中网格内容依次存入Array[n][m],
[0142] (3)使用Hilbert曲线进行空间填充,对于n≠m的情况按照如图2(c)所示处理。
[0143] (4)由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
[0144] (5)将D′和L′返回给证明者,将D′返回给验证者;
[0145] 分块置乱过程:针对D′上的敏感信息块进行进一步置乱处理,本发明设计了分块置乱算法,该算法可得到的映射关系为: 和 其中的L″将作为水印信息发送给验证者,实际上分块置乱算法和块信息验证均是为了让验证者相信验证者和证明者手上使用的是同一个D,从而防止证明者拿另为一个D来欺骗验证者的一种防御措施,分块置乱算法的步骤如下:
[0146] 假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
[0147] 输入:D′,B(x,y),L′
[0148] 输出:D″,L″;
[0149] (1)CLB矩阵分块,CLB矩阵的长宽为X,Y,所以CLB矩阵的行将被分成Xb=(X+x-1)÷x份,列将被分成Yb=(Y+y-1)÷y份,所以CLB矩阵被分成了B=Xb×Yb块,分块的结果将可能出现四种不同的情况,如下图3所示:
[0150] 1)X%x=0且Y%y≠0时:分块的最后一行块中的块高yl=Y%y;
[0151] 2)X%x=0且Y%y=0时:所有块的大小相等;
[0152] 3)X%x≠0且Y%y≠0时:分块的最后一列的块长xl=X%x,最后一行的块高yl=y%y;
[0153] 4)X%x≠0且Y%y=0时:分块的最后一列的块长xl=X%x;
[0154] (2)查找水印信息所在的位置,水印信息位置具体到了CLB中的LUT,所以需要对位置信息进行定位,得到水印信息位置序列L′中的每个成员所属于的CLB,得到的非重复的CLB序列记为:l;
[0155] (3)含水印块集合的集合内置换,将含有水印的块集合l在所在的集合内采用随机置换的算法做一个置换操作,操作的具体算法如下,如下图4所示:
[0156] 1)所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk,如图4所示;(其中1≤k≤4);
[0157] 2)对Tk中的每个成员中的块数超过1的成员执行第3)-6)步;
[0158] 3)Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
[0159] 4)对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
[0160] 5)循环执行d直到Arr_a中没有任何成员为止;
[0161] 6)用Arr_b中的成员块依次替换Arr_a中的成员块;
[0162] 4)水印块置换完成,生成置换后原水印所在序列:根据所生成的映射文件Map可以很快的由原始水印位置序列L′得到置换后的水印位置序列L″;
[0163] 第四步,水印检测过程,在零知识证明协议的基础下,IP拥有者在不泄露水印内容和水印位置信息的前提下,可以让IP买家从IP内核的配置文件(bitfile)中检测出IP拥有者的水印版权信息,从而达到零知识检测的目的,在该协议中,IP拥有者扮演证明者,IP买家扮演验证者,双方验证的交互过程的基本流程可以如图5中所示:
[0164] 步骤一:(初始化)
[0165] (1)证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L,
[0166] (2)证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
[0167] 步骤二:(验证开始)
[0168] (1)证明者动态产生分块信息对B(x,y),其中参数x、y分别代表块长为x个CLB和块宽为y个CLB,并且计算出按照B(x,y)分块后的总块数NUM;
[0169] (2)L′在B(x,y)下对应一个唯一的块号序列S,而这些块号所对应的内容上集成了水印信息,将其S称为敏感信息;
[0170] (3)使用上节中的分块置乱算法E,针对D′上的敏感信息进一步进行重新布局,分块置乱后L′→L″,D′→D″;
[0171] (4)证明者利用公钥信息对K,计算p=αrmod n,其中r=x+y;
[0172] (5)证明者将D″、p和NUM一起发给验证者,请求验证;
[0173] 步骤三:(质询)
[0174] (1)验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
[0175] (2)如果验证者选择的是块信息验证方式,则需要随机选取一个整数num num∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
[0176] 步骤四:(应答)
[0177] (1)证明者接收验证者要求的验证方式;
[0178] (2)如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,(其中D″num表示D″中的第num块信息);如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
[0179] 步骤五:(验证)
[0180] (1)验证者接收证明者发送过来的信息;
[0181] (2)如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,(其中E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E表示提取第num块的信息);如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算 然后再利用公钥信息对K验证p=t-1αymod n;
[0182] (3)如果验证通过,就返回步骤二继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
[0183] 结合一下验证对本发明做进一步的说明:
[0184] 1、零知识完备性,公正性和零知识性证明:
[0185] 零知识证明协议通常必须具备完备性,公正性和零知识性,下面将对零知识协议的完备性、公正性以及零知识性进行证明,以此说明协议是有效性和可靠性;
[0186] (1)完备性
[0187] 零知识证明中的数据完备性是协议完成的重要保障,如果Prover和Verifier按协议完成了全部步骤,那么Verifier总是能接受Prover的身份证明;
[0188] 证明:因为 t=αrmod n则 即完备性得证;
[0189] (2)公正性
[0190] Prover在不知道m的情况下,并不能在多项式时间内解决离散对数m=indα,n(t)问题,也就是能够通过已知的α,t求得m,则其能够求出m的概率是n-1/2,此时如果Prover和Verifier按协议完成了全部步骤,则接受Verifier能够通过Prover的认证;
[0191] 证明:假设Prover能在较高概率情况下欺骗Verifier,由于Prover不知道m,且不能在多项式时间内有效地通过α,t来计算得到m,所以他无法在第(3)步中利用m来计算出y;而在已知条件下要想计算出y就必须知道m,要通过解m=indα,n(t)来求得,即在n足够大的情况下解决离散对数问题,而在多项式时间内求解离散对数的概率很低,即使能够求出来,其花费的时间也不能够被接受,这与假设中能够在较高概率情况下欺骗Verfier矛盾,若Prover要对k的信息进行预测,那么便可计算 Prover能够正确得出k的可能
性是 这在多项式时间内同样不可行,通过上面的分析,可以充分证明该协议是公正的;
[0192] (3)零知识性
[0193] 如果Prover和Verifier按上节中的协议进行了 次,在循环了i次后的整个协议是零知识证明的;
[0194] 证明:在每一轮交互式证明过程中,若Prover对k具有可预测性,那么可以通过计算 作为应答发送给Verifier,则Verifier将接受Prover的证明,但预测k的概率为 因此,在循环i次后,Verifier将接受Prover欺骗的概率为 若Prover
想通过计算离散对数问题来求解m其成功的概率为n-1/2,综上分析,可知整个协议的零知识证明是有效的;
[0195] 2、为了能够对本文中零知识协议的性质进行有效评估,下面将从完全性、稳健性以及零知识性等三个方面对芯核水印的零知识认证协议进行了分析;
[0196] (1)完全性:协议在验证过程中,证明者向验证者提供两种质询方式,验证分块布局和验证布局中所含内容I,且每一轮都是如此,证明者在事先不知道验证者所作出的选择情况下对验证者得质询作出回答,若协议的每一步都被正确执行,如此往复进行R轮,一个诚实的验证者总能判断证明者是否存在欺骗行为,
[0197] (2)稳健性:假设证明者在应答过程中存在欺骗,由于每一轮验证者都有两个质询的选择,那么在证明者事先不知道验证者选择的质询条件下成功回答验证者的质询的概率是1/2,R轮证明者都能成功欺骗验证者的概率就为1/2R,其欺骗失败的概率则为1-1/2R,在R足够大的情况下,如果验证者是诚实的,则证明者成功欺骗他几乎是不可能的,协议满足稳健性条件;
[0198] (3)零知识性:如果协议每一轮执行的步骤都正确,那么证明者将向诚实的验证者提供位置置乱后的水印位置和参数r,妄图欺骗的验证者想通过置乱后的水印位置和r得出原始的水印嵌入位置L和水印明文m,解出m需要解决离散对数难题,由于每一轮bitfile core的布局都发生了变化,要想R轮后还能准确的推导出L的难度是非常大的,因此,可以认为在有限的时间和资源的条件下,验证者如果不能成功的获得任何信息,那么本发明在基于零知识证明协议下的IP盲检测系统是可以实现的;
[0199] 3、针对芯核水印算法进行了一系列实验,为了更好地评估算法的性能,本发明选用加密芯核RSA、MD5、SHA及DES,分别在Virtex II Pro XC2VP4FPGA平台上进行实验;
[0200] 水印检测稳定性分析:
[0201] 首先对四种嵌入32bit,256bit以及512bit水印信息的加密芯核载体进行检测实验,其中W表示检测稳定性,X表示的是图中曲线的下面面积,实验得出的水印稳定性的变化情况,稳定性曲线是对芯核电路中水印的正确检测率和对原始芯核载体的虚警率结合而成,其中X的面积越大,也就是W的值越大,也就说明芯核水印检测的性能越好,所用的检测稳定性来评估芯核水印检测算法的检测性能,其定义为:
[0202] W=2X-1....................................................(6.1)[0203] 表6.1水印嵌入后检测稳定性比较
[0204]
[0205] 从表6.1中可以看出,采用的四种加密芯核占用的资源数具有一定的不同,然而对于水印检测算法的评估也具有一定的代表性,通过嵌入32bit,256bit的水印信息,四种加密芯核在嵌入32bit水印信息时,数越大的芯核电路的检测稳定性反而较小,也就是说门数越大的芯核电路在本文算法中水印的检测稳定性反而变弱;
[0206] 为了更好地评估提出算法在资源和延时方面的性能,本发明所提出的水印算法与文献QU G.和Saha D中的水印方法进行比较;下面在MD5芯核设计中分别嵌入100%、75%、50%以及25%的水印信息之后,得到三种水印方法在含水印载体中的检测稳定性和虚警率方面的关系,由图6中的实验对比结果可知:随着水印嵌入率的增加,三种水印方法中的虚警检测率均发生了一定的变化,随着水印嵌入率的增加,本发明的方法相对QU G.和Saha D的方法而言,本发明方法的正确检测概率很快就趋向于1的状态,这说明在水印嵌入率较高的情况下,该方法对检测算法的稳定性是很高的;
[0207] 安全分析
[0208] (1)水印检测概率
[0209] 在基于零知识协议的芯核水印检测算法评估中,该算法中采用检测虚警率Ps对零知识协议的水印检测算法的安全性进行评估,检测虚警率Ps是无检测水印设计碰巧带有水印检测的概率,根据算法的思想,版权信息一系列步骤转换成待嵌入的水印片段,设l为待嵌水印片段的数目,n为所有未用查找表的数目,从n个未用位置检测到m个水印位置的概率为 而所选择的位置恰好包含待检测水印片段的概率假设为Ps,那么巧合概率可以由式子6.2计算:
[0210]
[0211] 为了达到较好的安全效果,检测虚警概率Ps趋向于0,为了对芯核水印算法的安全性进行评估,本发明对三个加密芯核上的检测虚警率Ps和水印嵌入率Q进行了测试实验,实验中以EDS芯核为载体,通过本发明的方法对DES中的水印信息进行检测,实验结果如图6所示:当水印嵌入率越大时,本发明中Ps值的下降幅度要明显大于文献Saha D中Ps值的下降幅度,因此,随着嵌入率的增大,本发明的检测概率Ps很快趋近向于0,这表明本发明的水印检测虚警率比文献Saha D中的水印检测虚警率要小,即本发明的水印检测算法的安全性能就越高;
[0212] 水印检测虚警率与水印嵌入虚警率没有必然的联系,但与水印嵌入方式相关联,通常情况下,嵌入率高的方法更容易检测,嵌入率低的方法更难检测;而基于量化的芯核嵌入方式相对于基于替换或交换的水印嵌入方式而言,水印嵌入率较低,从上图7中可以得知:本发明在嵌入水印容量为32bit,嵌入率为100%时,本发明的嵌入方式相对于文献Saha D中的嵌入方式在芯核水印检测巧合率具有一定的优势;
[0213] 表6.2芯核水印检测性能比较
[0214]
[0215]
[0216] 从上述表6.2中可知:由于三种芯核载体在不同的水印嵌入率的情况下,本发明的方案由于构造了整体置乱算法,相比于文献Saha D中的Z字置乱算法,本发明的方法对水印的位置变换的运算量较小,所用计算时间也相对较短,这样就会节省水印检测时间,因此,本发明的方法相对于文献Saha D中的方法而言,本发明的算法更加适合于芯核水印实时检测的情况,同时从表6.2中也可看出,本发明的方法在检测算法的稳定性和检测虚警率方面也具有较好的优势;
[0217] (2)抗多重嵌入攻击性能
[0218] 多重嵌入攻击的方法是攻击者在别人含有水印的图像中再次加入自己水印的方法,这种方法将会导致芯核载体的电路性能有一定程度的下降,但是这种方法可以使得攻击者在嵌入水印后来迷惑版权拥有者;
[0219] 在本发明的方案中,我们主要采用的Hash函数SHA-1的函数值来对验证方进行随机询问,这样将使得非法多重嵌入攻击者不能进行有效的信息伪装,通常,Hash函数的设计均是在随机假设条件下进行的,如果验证者对签名值r的承诺值为Z,那么在离散对数困难的假定下,Z的公开是不会泄漏有关r的有用信息,使用零知识证明的思想对芯核水印的认证具有不可传递性,证明中的公钥Y通过公钥证书是与证明者的身份信息绑在一起,且只有签名者才可以构造以上的零知识证明,这样防止了验证者利用证明者所拥的DSA数字签名信息M来分发给其他用户,在芯核知识版权保护中,可以在零知识证明中加入验证者的身份信息,这样可使证明者的证明不仅是对验证者本身的证明,也可作为证明者对验证者合法使用该作品的唯一授权证明,这样本发明的方案在抵抗多重嵌入攻击下是安全的。
[0220] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈