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

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

Info

Publication number
CN103516522A
CN103516522A CN201310473868.9A CN201310473868A CN103516522A CN 103516522 A CN103516522 A CN 103516522A CN 201310473868 A CN201310473868 A CN 201310473868A CN 103516522 A CN103516522 A CN 103516522A
Authority
CN
China
Prior art keywords
watermark
information
core
verifier
certifier
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.)
Granted
Application number
CN201310473868.9A
Other languages
English (en)
Other versions
CN103516522B (zh
Inventor
梁伟
徐建波
盛勇
赵博文
刘照
钱鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University of Science and Technology
Original Assignee
Hunan University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan University of Science and Technology filed Critical Hunan University of Science and Technology
Priority to CN201310473868.9A priority Critical patent/CN103516522B/zh
Publication of CN103516522A publication Critical patent/CN103516522A/zh
Application granted granted Critical
Publication of CN103516522B publication Critical patent/CN103516522B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Editing Of Facsimile Originals (AREA)
  • Storage Device Security (AREA)
  • Image Processing (AREA)

Abstract

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

Description

一种基于零知识证明协议的芯核水印盲检测方法
技术领域
本发明属于FPGA水印检测技术领域,尤其涉及一种基于零知识证明协议的芯核水印盲检测方法。
背景技术
目前,检测IP非法侵权的证据主要是关注芯核水印系统自身的安全性和可验证性,然而仅依赖这些性能是远远不够的。
现有的FPGA水印检测方案通常由第三方机构来验证水印,这样验证尽管可行,但是在实际的验证过程中要保证验证机构中所有成员的可信是很难的,因此,由第三方验证机构公布的验证结果并不能让IP购买者可信,如果验证者通过公开水印信息,就能够不需要指定第三方进行验证,那么验证者就可以向使用者验证自己的结果是可信的,然而在公开水印信息验证的时候,证明者需要向验证者提供敏感信息(如水印内容和水印嵌入的位置等),一旦这些敏感信息泄露,非法攻击者就会很容易将水印从IP中移除然后重新出售,这对于水印技术应用的安全性是一个严重的挑战。
新发布的知识产权保护联盟VSI推出了公开密码保护标准后,Qu G.等人相继提出了一种新的公开可验证的芯核水印方法,基本思想是建立一个加密的伪随机水印,并将特定的约束嵌入到原始的设计中并予以公开,这样能够满足公众应用系统的安全需要,但是该方法通过图着色以及布尔可满足性证明等方法容易对它进行检测,随后,人们开始将零知识水印的思想应用于芯核的公开水印方案,Goldwasser等人首次提出了一种零知识证明(Zero-Knowledge Proof,ZKP)的概念,至今这项技术已经被成功运用到一些安全认证和鉴别协议中,ZKP是一个包括证明者和验证者的交互式证明系统,在这种技术的基础上,D.Saha等人在2009年首次提出了基于零知识协议的公钥鲁棒水印验证方案,该方案可以在不泄露任何除公开信息外的任何信息的情况下,证明者可以表明他对芯核的所有权,在此基础上,D.Saha等人相继又在2012年提出了关于芯核交易过程中双方权限管理的零知识公钥验证协议,该协议为IP复用交易双方互相认证提供了一个完整的框架,并且用具体的方法实现了该协议,在其实现过程中,双方在芯核交易过程中,他们分别扮演着两个不同角色,即证明者和验证者,在芯核不同阶段的设计过程中,该协议都能在不泄露除公开信息的情况下解决买卖双方间的所有权认证问题,该协议在实现过程中采用了“复合映射”的机制和“R-轮询问”机制,这两者结合起来增加了系统的时间开销,尽管这种方法使得认证双方的密钥信息达到了较好的安全性,但是这种技术将导致芯核水印检测系统在检测过程中带来较大的开销。
现有的检测技术主要依赖于可信任的其他用户,并把其作为可信第三方,不能直接用于芯核盲水印设计过程中。
目前,FPGA水印检测方案很难保证第三方机构验证机构中所有成员是可信的,如果验证者通过公开水印信息进行验证则易泄漏敏感信息,无法保证水印技术应用的安全性;芯核交易过程中双方权限管理的零知识公钥验证协议可使认证双方的密钥信息达到较好的安全性,但增加了系统的时间开销,实时性差。
发明内容
本发明实施例的目的在于提供一种基于零知识证明协议的芯核水印盲检测方法,旨在解决目前验证芯核水印的方法安全性低,算法的时间复杂度高,实时性差的问题。
本发明实施例是这样实现的,一种基于零知识证明协议的芯核水印盲检测方法,该基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
步骤一,运用零知识证明的思想,对芯核水印检测首先进行零知识认证协议预处理;
步骤二,将含有零知识水印的签名信息经过水印信息预处理后由嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
步骤三,在零知识协议检测方法的基础上,可以由水印提取器将水印信息从含有水印的比特文件中提取;
步骤四,方法中为了能够进一步的提高水印的安全性能,通过引入可变因子,进行Hilbert曲线进行整体置乱和分块置乱处理;
步骤五,通过初始化、质询、应答和验证,让买家从内核的配置文件中能够盲检测出拥有者水印的版权信息。
进一步,步骤一的初始化方法为:
选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,
Figure BSA0000096059840000031
且使得
Figure BSA0000096059840000032
成立,通过
Figure BSA0000096059840000033
便可计算出私钥d的值,确定待嵌入水印的位置信息,将位置信息数字化处理后得到位置信息m′,计算公钥M,m是最终需要嵌入的水印信息,m包含IP designer的信息也包含了IP buyer者信息,t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d。
进一步,在步骤二和步骤三中,芯核水印算法的步骤为通过零知识协议,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而水印提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证。
进一步,水印生成的方法为:
将芯核所有者的标识信息作为标识嵌入到芯核,先转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱后,密钥为SKey,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L,签名信息就转换成了数字水印的形式。
进一步,水印嵌入的方法为:
m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,随机数e的范围
Figure BSA0000096059840000041
用私钥e对明文m进行加密得到I,I的值I=memodQ,I是加密后的水印密文,计算t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中。
进一步,水印提取的方法为:
步骤一,芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
步骤二,通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m。
进一步,在步骤四中,引入一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,其中β含有两个参数Δ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),整体置乱算法步骤如下:
输入:D,L
输出:D′,L′
第一步,将D中的网格依次编号做为二维数组Array[n][m]行标与列标;
第二步,将D中网格内容依次存入Array[n][m];
第三步,使用Hilbert曲线进行空间填充,对于n≠m的情况;
第四步,由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
Figure BSA0000096059840000051
第五步,将D′和L′返回给证明者,将D′返回给验证者。
进一步,在步骤四中,分块置乱的过程为,针对D′上的敏感信息块进行进一步置乱处理:
第一步,假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
输入:D′,B(x,y),L′
输出:D″,L″;
第二步,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″。
进一步,在第三步中,置换操作的具体算法如下:
第一步,所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk
第二步,对Tk中的每个成员中的块数超过1的成员执行第三-六步;
第三步,Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
第四步,对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
第五步,循环执行d直到Arr_a中没有任何成员为止;
第六步,用Arr_b中的成员块依次替换Arr_a中的成员块。
进一步,在步骤五中,水印检测的具体过程为:
步骤一,证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L;
证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
步骤二,证明者动态产生分块信息对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一起发给验证者,请求验证;
步骤三,验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
如果验证者选择的是块信息验证方式,则需要随机选取一个整数numnum∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
步骤四,证明者接收验证者要求的验证方式;如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,D″num表示D″中的第num块信息,如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
步骤五,验证者接收证明者发送过来的信息,如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E表示提取第num块的信息,如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算
Figure BSA0000096059840000071
然后再利用公钥信息对K验证p=t-1αymod n;如果验证通过,就返回第二步继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
本发明提供的基于零知识证明协议的芯核水印盲检测方法,通过把芯核水印信息零知识协议中的密钥阀值作为某个水印信息安全认证的凭据,同时可向公众实时公开零知识证明协议中密钥阀值信息以及版权所有者的身份信息,水印在无需原始载体的情况下便能对水印信息进行有效的盲取证操作,极大的提高了芯核版权所有者抵抗各种常规攻击的能力;本发明采用移位寄存器加密技术对芯核逻辑设计过程中的资源配置信息进行了加密,进一步保护了配置信息被非法攻击者截获和破解的隐患;本发明将零知识芯核水印信息融合到已有的公钥加密方案中,弥补了其它芯核水印方案没有考虑在公共场合进行公开水印取证的缺陷。本发明实现了对芯核资源的开销影响较小,具有很好的透明性、安全性以及鲁棒性。
附图说明
图1是本发明实施例提供的基于零知识证明协议的芯核水印盲检测方法的流程图;
图2是本发明实施例提供的Hilbert曲线进行置乱示意图;
图3是本发明实施例提供的CLB分块结构示意图;
图4是本发明实施例提供的CLB块分组结构示意图;
图5是本发明实施例提供的双方验证的交互过程模型示意图;
图6是本发明实施例提供的三种方法检测的曲线图;
图7是本发明实施例提供的不同水印嵌入率下的检测虚警率比较图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明提供的基于零知识证明协议的芯核水印盲检测方法流程。为了便于说明,仅仅示出了与本发明相关的部分。
本发明实施例的基于零知识证明协议的芯核水印盲检测方法,该基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
步骤一,进行零知识认证协议预处理;
步骤二,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
步骤三,在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取;
步骤四,通过引入可变因子,进行Hilbert曲线进行整体置乱和分块置乱处理;
步骤五,通过初始化、质询、应答和验证,让买家从内核的配置文件中检测出拥有者的水印版权信息。
作为本发明实施例的一优化方案,步骤一的初始化方法为:
选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,
Figure BSA0000096059840000091
且使得成立,通过
Figure BSA0000096059840000093
便可计算出私钥d的值,确定待嵌入水印的位置信息,将位置信息数字化处理后得到位置信息m′,计算公钥M,
Figure BSA0000096059840000094
m是最终需要嵌入的水印信息,m包含IP designer的信息也包含了IP buyer者信息,t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d。
作为本发明实施例的一优化方案,在步骤二和步骤三中,芯核水印算法的步骤为通过零知识协议,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而水印提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证。
作为本发明实施例的一优化方案,水印生成的方法为:
将芯核所有者的标识信息作为标识嵌入到芯核,先转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱后,密钥为SKey,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L,签名信息就转换成了数字水印的形式。
作为本发明实施例的一优化方案,水印嵌入的方法为:
m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,随机数e的范围
Figure BSA0000096059840000095
用私钥e对明文m进行加密得到I,I的值I=memod Q,I是加密后的水印密文,计算t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中。
作为本发明实施例的一优化方案,水印提取的方法为:
步骤一,芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
步骤二,通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m。
作为本发明实施例的一优化方案,在步骤四中,引入一个可变因子β,在β因子的作用下,经过一系列平移后,可以得到唯一的置乱序列,其中β含有两个参数Δ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),整体置乱算法步骤如下:
输入:D,L
输出:D′,L′
第一步,将D中的网格依次编号做为二维数组Array[n][m]行标与列标;
第二步,将D中网格内容依次存入Array[n][m];
第三步,使用Hilbert曲线进行空间填充,对于n≠m的情况;
第四步,由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
Figure BSA0000096059840000101
第五步,将D′和L′返回给证明者,将D′返回给验证者。
作为本发明实施例的一优化方案,在步骤四中,分块置乱的过程为,针对D′上的敏感信息块进行进一步置乱处理:
第一步,假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
输入:D′,B(x,y),L′
输出:D″,L″;
第二步,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″。
作为本发明实施例的一优化方案,在第三步中,置换操作的具体算法如下:
第一步,所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk
第二步,对Tk中的每个成员中的块数超过1的成员执行第三-六步;
第三步,Tk中的CLB的块用数组Arr_a表示,另外准备一个空数组Arr_b,准备一个映射文件Map;
第四步,对于数组Arr_b中的每个成员,从Arr_a中随机找一个成员来填充,然后删掉Arr_a中的该成员,并将该成员从Arr_a映射到Arr_b的映射关系写入到Map文件;
第五步,循环执行d直到Arr_a中没有任何成员为止;
第六步,用Arr_b中的成员块依次替换Arr_a中的成员块。
作为本发明实施例的一优化方案,在步骤五中,水印检测的具体过程为:
步骤一,证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L;
证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
步骤二,证明者动态产生分块信息对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一起发给验证者,请求验证;
步骤三,验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
如果验证者选择的是块信息验证方式,则需要随机选取一个整数numnum∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
步骤四,证明者接收验证者要求的验证方式;如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,D″num表示D″中的第num块信息,如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
步骤五,验证者接收证明者发送过来的信息,如果验证者选择的是块信息验证的方式,那么验证者只需要验证E(D″(B(x,y)))num=D″num是否成立,E(D″(B(x,y)))num表示利用分块信息对B(x,y)对D″分块后使用分块置乱算法,E表示提取第num块的信息,如果验证者选择的是水印信息验证方式,则先利用L″从D″中提取出用RSA加密后的水印信息I,计算
Figure BSA0000096059840000131
然后再利用公钥信息对K验证p=t-1αymod n;如果验证通过,就返回第二步继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
下面结合附图及具体实施例对本发明的应用原理作进一步描述。
如图1所示,本发明实施例的基于零知识证明协议的芯核水印盲检测方法包括以下步骤:
S101:进行零知识认证协议预处理;
S102:将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件;
S103:在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取;
S104:通过引入可变因子,进行Hilbert曲线进行整体置乱和分块置乱处理;
S105:通过初始化、质询、应答和验证,让买家从内核的配置文件中检测出拥有者的水印版权信息。
本发明的具体实施例为:
第一步,水印零知识认证的初始化阶段,首先选择一个大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,
Figure BSA0000096059840000132
且使得
Figure BSA0000096059840000133
成立,通过便可计算出私钥d的值,然后确定待嵌入水印的位置信息,将位置信息数字化处理后得到位置信息m′,计算公钥M,
Figure BSA0000096059840000135
m是最终需要嵌入的水印信息,m包含IP designer的信息也包含了IP buyer者信息(水印提取是可用于鉴定buyer是否非法将未经授权芯核重售给其它用户使用),t为公钥信息,通过式子t=αmmod n我们可计算出t,最后选择零知识认证协议的公钥为(α,t,n,M,e,q),私钥为d,至此,零知识认证协议的预处理阶段完成;
第二步,芯核水印算法中,所有者的签名信息通过水印生成器得到一串0和1的数字信号,将这些数字信号以不影响设计功能的方式添加到芯核设计之中,从而产生水印后的芯核设计,芯核水印算法的设计包括三个关键步骤,即水印生成器、水印嵌入器及水印提取器的设计,通过上节零知识协议设计的基础,用户的签名信息首先由零知识证明协议与水印生成器共同组成;然后,将含有零知识水印的签名信息经过水印嵌入器嵌入到芯核的比特文件中,得到含有水印的比特流文件,而提取过程则是在零知识协议检测方法的基础上,由水印提取器将水印信息从含有水印的比特文件中提取出来,最终实现其水印的验证;
水印生成过程:芯核所有者的标识信息往往是以商标、签名等形式存在,若以其作为标识嵌入到芯核设计,则必须将其转换成数字信号,如果所有者的签名信息为Sig,首先通过加密算法进行加密处理,得到密文Csig,密钥为Key,利用置乱算法对Csig进行置乱(密钥为SKey)后,进行水印切片处理,最终得到一组待嵌入的水印片段Wsig,水印片段数为L.至此,签名信息就转换成了数字水印的形式,接下来的工作就是要将这一组水印片段在不影响正常功能的情况下嵌入到芯核设计;
水印嵌入过程:m是待嵌入的水印明文信息,选择大素数n(n>21024),α是n的生产元,且满足gcd(α,n)=1,然后选择大素数p,q,并且令Q=pq,接着选取一个随机数e,
Figure BSA0000096059840000141
用私钥e对明文m进行加密得到I(I=memod Q),I是加密后的水印密文,计算t=αImod n,其中K为公钥信息对,由(t,n,α)组成,然后利用私钥Kc作为单向散列函数F的输入得出水印嵌入的Location,生成原始的水印位置信息L,利用水印嵌入算法将水印密文I嵌入到bitfile中;
水印提取过程:在水印信息嵌入完成后,得到了一份带有水印的芯核设计,水印提取过程通常发生在芯核所有者与非法用户发生版权纠纷时用到,若非法用户得到了带有水印的芯核设计,在未经版权所有者允许的情况下用于自己的电路系统中,芯核所有者便可以申请进行版权验证,水印提取过程具体如下:
步骤1:芯核所有者利用其私钥d对公钥M进行解密得到数字化处理后位置信息m′,将数字化处理后的Location再信息转换为水印位置的信息Wpos;
步骤2:通过水印提取算法,得到01数字串水印信息,去掉校验位得到数字化水印信息m;
第三步,整体置乱过程在水印验证开始之前,水印信息的整体置乱操作是整个验证过程中必不可少的一个步骤,在零知识协议验证过程中,需要验证者从D″中提取出被加密后的水印信息I,毫无疑问需要告诉验证者水印的位置信息L″,如果验证者能由L″推导出L,等价于告诉了验证者水印的实际位置,有违零知识验证的要求,所以,在验证开始之前,有必要对D进行一次整体置乱,将L→L′,掩盖水印的实际位置,并且由L′→L将是NP问题,整体置乱算法有多种实现方式,下面将介绍基于Hilbert曲线的整体置乱算法;
考虑到FPGA与Bitfile的特殊结构,引入了两个概念:“网”和“格”,如图2(a)所示,将FPGA中CLB的布局抽象成二维网格,每个网格代表一个CLB并且用唯一的坐标进行标示,每个网格内部仍然使用网格来区别CLB中的每一个SLICE,通常情况下,每个CLB内部包含4个SLICE,我们将二阶Hilbert曲线映射到网格的模型;
如果只是简单利用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)所示,整体置乱算法步骤如下:
输入:D,L
输出:D′,L′
(1)将D中的网格依次编号做为二维数组Array[n][m]行标与列标,
(2)将D中网格内容依次存入Array[n][m],
(3)使用Hilbert曲线进行空间填充,对于n≠m的情况按照如图2(c)所示处理。
(4)由零知识验证工具随机产生一个平移因子β,对验证者和证明者都保密,进行如下映射
Figure BSA0000096059840000161
(5)将D′和L′返回给证明者,将D′返回给验证者;
分块置乱过程:针对D′上的敏感信息块进行进一步置乱处理,本发明设计了分块置乱算法,该算法可得到的映射关系为:
Figure BSA0000096059840000163
其中的L″将作为水印信息发送给验证者,实际上分块置乱算法和块信息验证均是为了让验证者相信验证者和证明者手上使用的是同一个D,从而防止证明者拿另为一个D来欺骗验证者的一种防御措施,分块置乱算法的步骤如下:
假设每块CLB长度为x,每块CLB的高为y,原始水印所在位置序列为L′,FPGA的原始CLB的长,宽分别为X,Y,
输入:D′,B(x,y),L′
输出:D″,L″;
(1)CLB矩阵分块,CLB矩阵的长宽为X,Y,所以CLB矩阵的行将被分成Xb=(X+x-1)÷x份,列将被分成Yb=(Y+y-1)÷y份,所以CLB矩阵被分成了B=Xb×Yb块,分块的结果将可能出现四种不同的情况,如下图3所示:
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;
(2)查找水印信息所在的位置,水印信息位置具体到了CLB中的LUT,所以需要对位置信息进行定位,得到水印信息位置序列L′中的每个成员所属于的CLB,得到的非重复的CLB序列记为:l;
(3)含水印块集合的集合内置换,将含有水印的块集合l在所在的集合内采用随机置换的算法做一个置换操作,操作的具体算法如下,如下图4所示:
1)所有的CLB块用Arr表示,将Arr按照每块大小的不同分组,最多有4组,最少有一组,小组记做Tk,如图4所示;(其中1≤k≤4);
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)循环执行d直到Arr_a中没有任何成员为止;
6)用Arr_b中的成员块依次替换Arr_a中的成员块;
4)水印块置换完成,生成置换后原水印所在序列:根据所生成的映射文件Map可以很快的由原始水印位置序列L′得到置换后的水印位置序列L″;
第四步,水印检测过程,在零知识证明协议的基础下,IP拥有者在不泄露水印内容和水印位置信息的前提下,可以让IP买家从IP内核的配置文件(bitfile)中检测出IP拥有者的水印版权信息,从而达到零知识检测的目的,在该协议中,IP拥有者扮演证明者,IP买家扮演验证者,双方验证的交互过程的基本流程可以如图5中所示:
步骤一:(初始化)
(1)证明者使用私钥Kc作为单向哈希函数F的种子序列,得到原始嵌入了水印的IP内核配置文件D中的水印位置信息L,
(2)证明者和验证者同时使用整体置乱算法对D中的CLB单元进行重新布局,整体置乱后D→D′,L→L′,使用整体置乱算法是用来掩盖水印实际的位置信息,即使验证者知道了L′,也无法推出L;
步骤二:(验证开始)
(1)证明者动态产生分块信息对B(x,y),其中参数x、y分别代表块长为x个CLB和块宽为y个CLB,并且计算出按照B(x,y)分块后的总块数NUM;
(2)L′在B(x,y)下对应一个唯一的块号序列S,而这些块号所对应的内容上集成了水印信息,将其S称为敏感信息;
(3)使用上节中的分块置乱算法E,针对D′上的敏感信息进一步进行重新布局,分块置乱后L′→L″,D′→D″;
(4)证明者利用公钥信息对K,计算p=αrmod n,其中r=x+y;
(5)证明者将D″、p和NUM一起发给验证者,请求验证;
步骤三:(质询)
(1)验证者接收到D″、p和NUM后,随机选择验证方式发送给证明者,要求证明者能给予应答,验证方式有两种,第一种称为块信息验证方式,第二种称为水印信息验证方式;
(2)如果验证者选择的是块信息验证方式,则需要随机选取一个整数numnum∈[1,NUM],作为块号信息发送给证明者;如果验证者选择的是水印信息验证方式,则无需发送任何数据;
步骤四:(应答)
(1)证明者接收验证者要求的验证方式;
(2)如果证明者接收的是块信息验证方式,就把分块信息对B(x,y)、分块置乱算法E和D″num发送给验证者,(其中D″num表示D″中的第num块信息);如果证明者接收的是水印信息验证方式,就把r和L″发送给验证者;
步骤五:(验证)
(1)验证者接收证明者发送过来的信息;
(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;
(3)如果验证通过,就返回步骤二继续执行,直到达到了双方事先约定好的轮数或者双方互相信任为止;如果验证不通过,就退出程序,验证失败,该证明者不可信。
结合一下验证对本发明做进一步的说明:
1、零知识完备性,公正性和零知识性证明:
零知识证明协议通常必须具备完备性,公正性和零知识性,下面将对零知识协议的完备性、公正性以及零知识性进行证明,以此说明协议是有效性和可靠性;
(1)完备性
零知识证明中的数据完备性是协议完成的重要保障,如果Prover和Verifier按协议完成了全部步骤,那么Verifier总是能接受Prover的身份证明;
证明:因为
Figure BSA0000096059840000192
t=αrmod n则即完备性得证;
(2)公正性
Prover在不知道m的情况下,并不能在多项式时间内解决离散对数m=indα,n(t)问题,也就是能够通过已知的α,t求得m,则其能够求出m的概率是n-1/2,此时如果Prover和Verifier按协议完成了全部步骤,则接受Verifier能够通过Prover的认证;
证明:假设Prover能在较高概率情况下欺骗Verifier,由于Prover不知道m,且不能在多项式时间内有效地通过α,t来计算得到m,所以他无法在第(3)步中利用m来计算出y;而在已知条件下要想计算出y就必须知道m,要通过解m=indα,n(t)来求得,即在n足够大的情况下解决离散对数问题,而在多项式时间内求解离散对数的概率很低,即使能够求出来,其花费的时间也不能够被接受,这与假设中能够在较高概率情况下欺骗Verfier矛盾,若Prover要对k的信息进行预测,那么便可计算
Figure BSA0000096059840000201
Prover能够正确得出k的可能性是
Figure BSA0000096059840000202
这在多项式时间内同样不可行,通过上面的分析,可以充分证明该协议是公正的;
(3)零知识性
如果Prover和Verifier按上节中的协议进行了
Figure BSA0000096059840000203
次,在循环了i次后的整个协议是零知识证明的;
证明:在每一轮交互式证明过程中,若Prover对k具有可预测性,那么可以通过计算
Figure BSA0000096059840000204
作为应答发送给Verifier,则Verifier将接受Prover的证明,但预测k的概率为
Figure BSA0000096059840000205
因此,在循环i次后,Verifier将接受Prover欺骗的概率为若Prover想通过计算离散对数问题来求解m其成功的概率为n-1/2,综上分析,可知整个协议的零知识证明是有效的;
2、为了能够对本文中零知识协议的性质进行有效评估,下面将从完全性、稳健性以及零知识性等三个方面对芯核水印的零知识认证协议进行了分析;
(1)完全性:协议在验证过程中,证明者向验证者提供两种质询方式,验证分块布局和验证布局中所含内容I,且每一轮都是如此,证明者在事先不知道验证者所作出的选择情况下对验证者得质询作出回答,若协议的每一步都被正确执行,如此往复进行R轮,一个诚实的验证者总能判断证明者是否存在欺骗行为,
(2)稳健性:假设证明者在应答过程中存在欺骗,由于每一轮验证者都有两个质询的选择,那么在证明者事先不知道验证者选择的质询条件下成功回答验证者的质询的概率是1/2,R轮证明者都能成功欺骗验证者的概率就为1/2R,其欺骗失败的概率则为1-1/2R,在R足够大的情况下,如果验证者是诚实的,则证明者成功欺骗他几乎是不可能的,协议满足稳健性条件;
(3)零知识性:如果协议每一轮执行的步骤都正确,那么证明者将向诚实的验证者提供位置置乱后的水印位置和参数r,妄图欺骗的验证者想通过置乱后的水印位置和r得出原始的水印嵌入位置L和水印明文m,解出m需要解决离散对数难题,由于每一轮bitfile core的布局都发生了变化,要想R轮后还能准确的推导出L的难度是非常大的,因此,可以认为在有限的时间和资源的条件下,验证者如果不能成功的获得任何信息,那么本发明在基于零知识证明协议下的IP盲检测系统是可以实现的;
3、针对芯核水印算法进行了一系列实验,为了更好地评估算法的性能,本发明选用加密芯核RSA、MD5、SHA及DES,分别在Virtex II Pro XC2VP4FPGA平台上进行实验;
水印检测稳定性分析:
首先对四种嵌入32bit,256bit以及512bit水印信息的加密芯核载体进行检测实验,其中W表示检测稳定性,X表示的是图中曲线的下面面积,实验得出的水印稳定性的变化情况,稳定性曲线是对芯核电路中水印的正确检测率和对原始芯核载体的虚警率结合而成,其中X的面积越大,也就是W的值越大,也就说明芯核水印检测的性能越好,所用的检测稳定性来评估芯核水印检测算法的检测性能,其定义为:
W=2X-1....................................................(6.1)
表6.1水印嵌入后检测稳定性比较
Figure BSA0000096059840000211
从表6.1中可以看出,采用的四种加密芯核占用的资源数具有一定的不同,然而对于水印检测算法的评估也具有一定的代表性,通过嵌入32bit,256bit的水印信息,四种加密芯核在嵌入32bit水印信息时,门数越大的芯核电路的检测稳定性反而较小,也就是说门数越大的芯核电路在本文算法中水印的检测稳定性反而变弱;
为了更好地评估提出算法在资源和延时方面的性能,本发明所提出的水印算法与文献QU G.和Saha D中的水印方法进行比较;下面在MD5芯核设计中分别嵌入100%、75%、50%以及25%的水印信息之后,得到三种水印方法在含水印载体中的检测稳定性和虚警率方面的关系,由图6中的实验对比结果可知:随着水印嵌入率的增加,三种水印方法中的虚警检测率均发生了一定的变化,随着水印嵌入率的增加,本发明的方法相对QU G.和Saha D的方法而言,本发明方法的正确检测概率很快就趋向于1的状态,这说明在水印嵌入率较高的情况下,该方法对检测算法的稳定性是很高的;
安全分析:
(1)水印检测概率
在基于零知识协议的芯核水印检测算法评估中,该算法中采用检测虚警率Ps对零知识协议的水印检测算法的安全性进行评估,检测虚警率Ps是无检测水印设计碰巧带有水印检测的概率,根据算法的思想,版权信息一系列步骤转换成待嵌入的水印片段,设l为待嵌水印片段的数目,n为所有未用查找表的数目,从n个未用位置检测到m个水印位置的概率为
Figure BSA0000096059840000222
而所选择的位置恰好包含待检测水印片段的概率假设为Ps,那么巧合概率可以由式子6.2计算:
P s = 1 C n m ( P 0 ) n 0 ( P 1 ) ( n - n 0 ) . . . ( 6.2 )
为了达到较好的安全效果,检测虚警概率Ps趋向于0,为了对芯核水印算法的安全性进行评估,本发明对三个加密芯核上的检测虚警率Ps和水印嵌入率Q进行了测试实验,实验中以EDS芯核为载体,通过本发明的方法对DES中的水印信息进行检测,实验结果如图6所示:当水印嵌入率越大时,本发明中Ps值的下降幅度要明显大于文献Saha D中Ps值的下降幅度,因此,随着嵌入率的增大,本发明的检测概率Ps很快趋近向于0,这表明本发明的水印检测虚警率比文献Saha D中的水印检测虚警率要小,即本发明的水印检测算法的安全性能就越高;
水印检测虚警率与水印嵌入虚警率没有必然的联系,但与水印嵌入方式相关联,通常情况下,嵌入率高的方法更容易检测,嵌入率低的方法更难检测;而基于量化的芯核嵌入方式相对于基于替换或交换的水印嵌入方式而言,水印嵌入率较低,从上图7中可以得知:本发明在嵌入水印容量为32bit,嵌入率为100%时,本发明的嵌入方式相对于文献Saha D中的嵌入方式在芯核水印检测巧合率具有一定的优势;
表6.2芯核水印检测性能比较
从上述表6.2中可知:由于三种芯核载体在不同的水印嵌入率的情况下,本发明的方案由于构造了整体置乱算法,相比于文献Saha D中的Z字置乱算法,本发明的方法对水印的位置变换的运算量较小,所用计算时间也相对较短,这样就会节省水印检测时间,因此,本发明的方法相对于文献Saha D中的方法而言,本发明的算法更加适合于芯核水印实时检测的情况,同时从表6.2中也可看出,本发明的方法在检测算法的稳定性和检测虚警率方面也具有较好的优势;
(2)抗多重嵌入攻击性能
多重嵌入攻击的方法是攻击者在别人含有水印的图像中再次加入自己水印的方法,这种方法将会导致芯核载体的电路性能有一定程度的下降,但是这种方法可以使得攻击者在嵌入水印后来迷惑版权拥有者;
在本发明的方案中,我们主要采用的Hash函数SHA-1的函数值来对验证方进行随机询问,这样将使得非法多重嵌入攻击者不能进行有效的信息伪装,通常,Hash函数的设计均是在随机假设条件下进行的,如果验证者对签名值r的承诺值为Z,那么在离散对数困难的假定下,Z的公开是不会泄漏有关r的有用信息,使用零知识证明的思想对芯核水印的认证具有不可传递性,证明中的公钥Y通过公钥证书是与证明者的身份信息捆绑在一起,且只有签名者才可以构造以上的零知识证明,这样防止了验证者利用证明者所拥的DSA数字签名信息M来分发给其他用户,在芯核知识版权保护中,可以在零知识证明中加入验证者的身份信息,这样可使证明者的证明不仅是对验证者本身的证明,也可作为证明者对验证者合法使用该作品的唯一授权证明,这样本发明的方案在抵抗多重嵌入攻击下是安全的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310473868.9A CN103516522B (zh) 2013-10-12 2013-10-12 一种基于零知识证明协议的芯核水印盲检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310473868.9A CN103516522B (zh) 2013-10-12 2013-10-12 一种基于零知识证明协议的芯核水印盲检测方法

Publications (2)

Publication Number Publication Date
CN103516522A true CN103516522A (zh) 2014-01-15
CN103516522B CN103516522B (zh) 2016-10-12

Family

ID=49898604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310473868.9A Expired - Fee Related CN103516522B (zh) 2013-10-12 2013-10-12 一种基于零知识证明协议的芯核水印盲检测方法

Country Status (1)

Country Link
CN (1) CN103516522B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021465A (zh) * 2016-05-17 2016-10-12 浪潮集团有限公司 一种FPGA bitfile的压缩方法
CN107483456A (zh) * 2017-08-25 2017-12-15 北京元心科技有限公司 身份认证方法及装置
CN109379195A (zh) * 2018-12-18 2019-02-22 深圳前海微众银行股份有限公司 零知识证明电路的优化方法、装置、设备及可读存储介质
CN110334487A (zh) * 2019-06-12 2019-10-15 中国舰船研究设计中心 一种基于数字水印的虚拟机镜像版权保护方法
CN110995438A (zh) * 2019-10-24 2020-04-10 南京可信区块链与算法经济研究院有限公司 一种非交互零知识证明方法、系统及存储介质
CN112632888A (zh) * 2020-08-18 2021-04-09 上海致居信息科技有限公司 电路合成方法、设备、介质和数据存储证明系统
US11177957B2 (en) 2019-06-12 2021-11-16 International Business Machines Corporation Hardware security modules for executing zero-knowledge proofs
CN113783705A (zh) * 2021-11-12 2021-12-10 北京华云安信息技术有限公司 密钥的零知识证明方法、验证端、设备以及存储介质
CN116232770A (zh) * 2023-05-08 2023-06-06 中国石油大学(华东) 一种基于sdn控制器的企业网络安全防护系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030077857A (ko) * 2002-03-27 2003-10-04 이형우 디지털 워터마크에 대한 영지식 증명 기반 검증 방법
CN102890760A (zh) * 2012-10-30 2013-01-23 南京信息工程大学 一种基于非对称加密的文本零知识水印检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030077857A (ko) * 2002-03-27 2003-10-04 이형우 디지털 워터마크에 대한 영지식 증명 기반 검증 방법
CN102890760A (zh) * 2012-10-30 2013-01-23 南京信息工程大学 一种基于非对称加密的文本零知识水印检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIANG WEI ETC: "An FPGA-Based Intellectual Property Protection Method At Physical Design Level", 《2012 INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND INFORMATION PROCESSING(CSIP)》 *
刘永亮等: "基于离散对数的水印检测协议", 《计算机辅助设计与图象学学报》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021465A (zh) * 2016-05-17 2016-10-12 浪潮集团有限公司 一种FPGA bitfile的压缩方法
CN107483456A (zh) * 2017-08-25 2017-12-15 北京元心科技有限公司 身份认证方法及装置
CN109379195A (zh) * 2018-12-18 2019-02-22 深圳前海微众银行股份有限公司 零知识证明电路的优化方法、装置、设备及可读存储介质
CN110334487A (zh) * 2019-06-12 2019-10-15 中国舰船研究设计中心 一种基于数字水印的虚拟机镜像版权保护方法
US11177957B2 (en) 2019-06-12 2021-11-16 International Business Machines Corporation Hardware security modules for executing zero-knowledge proofs
CN110995438A (zh) * 2019-10-24 2020-04-10 南京可信区块链与算法经济研究院有限公司 一种非交互零知识证明方法、系统及存储介质
CN110995438B (zh) * 2019-10-24 2022-07-12 南京可信区块链与算法经济研究院有限公司 一种非交互零知识证明方法、系统及存储介质
CN112632888A (zh) * 2020-08-18 2021-04-09 上海致居信息科技有限公司 电路合成方法、设备、介质和数据存储证明系统
CN113783705A (zh) * 2021-11-12 2021-12-10 北京华云安信息技术有限公司 密钥的零知识证明方法、验证端、设备以及存储介质
CN116232770A (zh) * 2023-05-08 2023-06-06 中国石油大学(华东) 一种基于sdn控制器的企业网络安全防护系统及方法

Also Published As

Publication number Publication date
CN103516522B (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
CN103516522B (zh) 一种基于零知识证明协议的芯核水印盲检测方法
CN103414690B (zh) 一种可公开验证云端数据持有性校验方法
CN102339370B (zh) 电子文档的保全方法、保全系统和验证系统
CN103581173B (zh) 一种基于工业以太网的数据安全传输方法、系统及装置
Zhang et al. Publicly verifiable watermarking for intellectual property protection in FPGA design
CN104065487A (zh) 一种基于数字指纹随机密值ibc身份认证方法
CN102509034A (zh) 一种软件许可控制装置及其方法
CN101296075A (zh) 一种基于椭圆曲线的身份认证系统
CN113708935B (zh) 基于区块链和puf的物联网设备统一认证方法及系统
CN109040079A (zh) 直播链接地址的组建和验证方法及相应装置
CN107743132A (zh) 基于标识密码的物联网可信身份识别与控制方法
CN109766672A (zh) 一种芯核版权匿名认证方法
Fischer et al. A public randomness service
CN109785217A (zh) 基于fpga技术的差错控制芯核水印方法
JP2015512109A (ja) 身分認証方法、装置及びシステム
CN102291396B (zh) 可信平台远程证明的匿名认证算法
JP2009272737A (ja) 秘匿認証システム
CN108390866A (zh) 基于双代理双向匿名认证的可信远程证明方法
US8954728B1 (en) Generation of exfiltration-resilient cryptographic keys
CN104917615B (zh) 一种基于环签名的可信计算平台属性验证方法
Chernyi et al. Security of electronic digital signature in maritime industry
Krzywiecki et al. Security of okamoto identification scheme: a defense against ephemeral key leakage and setup
CN104518880A (zh) 一种基于随机抽样检测的大数据可信性验证方法及系统
WO2023041212A1 (en) Method of verification for machine learning models
Shi et al. An obfuscatable designated verifier signature scheme

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161012