发明名称 一种基于多块依赖结构的安全脆弱水印方法
摘要 本发明公开了一种基于多块依赖结构的安全脆弱水印方法,包括水印嵌入和篡改定位两部分,水印嵌入具体包括以下几个步骤:步骤1.图像文件的分割,步骤2.水印生成,步骤3.水印嵌入,步骤4.经过上述三个步骤,得到含有水印的图像Y。图像认证具体包括以下几个步骤:步骤1.水印生成,步骤2.水印提取,步骤3.完整性认证。本发明能够准确地验证图像的完整性,并能实现篡改的精确定位。特别,对于传统算法检测不到的孤立块篡改,具有很好的检测及定位效果,而且,本发明对生成水印进行了加密,并且嵌入位置是通过密钥生成的混沌序列进行选取,提高了本发明的安全强度。
申请公布号 CN102270336B 申请公布日期 2013.04.24
申请号 CN201110188252.8 申请日期 2011.07.06
申请人 北京航空航天大学 发明人 王蕴红;李春雷;张兆翔;马彬;柳立宁;张广鹏;胡懋地
分类号 G06T1/00(2006.01)I 主分类号 G06T1/00(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 赵文利
主权项 1.一种基于多块依赖结构的安全脆弱水印方法,其特征在于,包括水印嵌入和图像认证两部分,具体为:一:水印嵌入具体包括以下几个步骤:步骤1.图像文件的分割将大小为M×N的原始图像X的最低有效位清零,得到图像<img file="FDA00002493012000011.GIF" wi="66" he="55" />将图像<img file="FDA00002493012000012.GIF" wi="40" he="48" />分割成互不重叠的尺寸为m×n的图像块,共(M/m)×(N/n)个,如公式(1)所示:<maths num="0001"><![CDATA[<math><mrow><mrow><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>=</mo><mo>{</mo><msub><mover><mi>X</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><msub><mi>N</mi><mi>b</mi></msub><mo>,</mo><mi>x</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo><mi>y</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>}</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:<img file="FDA00002493012000014.GIF" wi="162" he="59" />表示第个i图像块,i为图像块的序号,x,y表示像素在图像块中的位置,N<sub>b</sub>为分割后的图像块个数;步骤2.水印生成具体为:采用安全Hash函数,将每一个图像块<img file="FDA00002493012000015.GIF" wi="50" he="50" />映射为一个长度为m×n的Hash码,公式如(2):<maths num="0002"><![CDATA[<math><mrow><msub><mi>C</mi><mi>i</mi></msub><mo>=</mo><mi>H</mi><mrow><mo>(</mo><msub><mover><mi>X</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msub><mi>c</mi><mn>1</mn></msub><mo>,</mo><msub><mi>c</mi><mn>2</mn></msub><mo>,</mo><msub><mi>c</mi><mi>L</mi></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:C<sub>i</sub>表示对图像块<img file="FDA00002493012000017.GIF" wi="163" he="59" />执行Hash函数,生成的Hash码;<img file="FDA00002493012000018.GIF" wi="136" he="59" />表示Hash函数;c<sub>1</sub>,c<sub>2</sub>,...c<sub>L</sub>表示Hash码C<sub>i</sub>中的每一位,L为Hash码的码长;使用密钥k<sub>1</sub>生成随机二进制序列B,使用异或操作对Hash码进行加密,如公式(3)所示:<maths num="0003"><![CDATA[<math><mrow><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>B</mi><mi>j</mi></msub><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><msub><mi>N</mi><mi>b</mi></msub><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>L</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:w<sub>i,j</sub>表示生成的第i块中第j位水印信息,C<sub>i,j</sub>表示第i块中第j位Hash码,B<sub>j</sub>表示随机序列的第j位;对于第i个图像块生成的水印,表示为W<sub>i</sub>=W<sub>i,j</sub>,1≤i≤N<sub>b</sub>,j=1,2,...,L,然后将水印信息W<sub>i</sub>等分为K组,每一组表示为<img file="FDA000024930120000110.GIF" wi="85" he="54" />步骤3.水印嵌入通过密钥k<sub>2</sub>生成K个随机位置序列<img file="FDA000024930120000111.GIF" wi="399" he="62" />每一个图像块的K组水印信息按照随机位置序列选择其它K个待嵌入图像块,其中第i块第k组水印<img file="FDA000024930120000112.GIF" wi="56" he="56" />将对应着第s<sub>i</sub>个图像块中的第k部分,然后将水印信息嵌入到对应图像块的最低有效位;步骤4.经过上述三个步骤,得到含有水印的图像Y;二、图像认证包括以下几个步骤:步骤1.水印生成将大小为M×N的测试图像Y<sup>*</sup>的最低有效位清零,得到图像<img file="FDA00002493012000021.GIF" wi="67" he="62" />将图像<img file="FDA00002493012000022.GIF" wi="41" he="54" />分割成互不重叠的尺寸为m×n的图像块<img file="FDA00002493012000023.GIF" wi="70" he="67" />采用安全Hash函数,将每一个图像块<img file="FDA00002493012000024.GIF" wi="46" he="67" />映射为一个长度为L的Hash码<img file="FDA00002493012000025.GIF" wi="70" he="56" />使用密钥k<sub>1</sub>生成随机二进制序列B,如公式(3)使用异或操作对Hash码加密后生成水印信息<img file="FDA00002493012000026.GIF" wi="81" he="55" />然后将<img file="FDA00002493012000027.GIF" wi="53" he="55" />等分为K组,每一个为<img file="FDA00002493012000028.GIF" wi="87" he="55" />1≤i≤N<sub>b</sub>,k=1,2,...,K;步骤2.水印提取将大小为M×N的测试图像Y<sup>*</sup>分割成互不重叠的尺寸为m×n的图像块<img file="FDA00002493012000029.GIF" wi="59" he="55" />根据密钥k<sub>2</sub>生成K个随机位置序列<img file="FDA000024930120000210.GIF" wi="388" he="62" />k=1,2,...,K;每一个图像块<img file="FDA000024930120000211.GIF" wi="40" he="56" />分别对应K个随机位置<img file="FDA000024930120000212.GIF" wi="62" he="55" />根据K个位置,选取对应的其它K个含水印图像块,从K个含水印图像中,分别提取K组水印<img file="FDA000024930120000213.GIF" wi="93" he="68" />1≤i≤N<sub>b</sub>,k=1,2,...,K,则任意图像块<img file="FDA000024930120000214.GIF" wi="40" he="56" />都对应着一个提取水印W<sub>i</sub>′,该水印由K部分组成,每一个部分为<img file="FDA000024930120000215.GIF" wi="93" he="68" />1≤i≤N<sub>b</sub>,k=1,2,...,K;步骤3.完整性认证步骤1中每一个图像块<img file="FDA000024930120000216.GIF" wi="46" he="68" />得到K组水印信息,每一组为<img file="FDA000024930120000217.GIF" wi="98" he="56" />步骤2中每一个图像块<img file="FDA000024930120000218.GIF" wi="40" he="56" />得到提取水印W<sub>i</sub>′,包括K组水印<img file="FDA000024930120000219.GIF" wi="104" he="69" />对于相同位置的图像块<img file="FDA000024930120000220.GIF" wi="46" he="67" />和图像块<img file="FDA000024930120000221.GIF" wi="64" he="55" />对<img file="FDA000024930120000222.GIF" wi="70" he="55" />和<img file="FDA000024930120000223.GIF" wi="75" he="69" />进行比较,则对于每一个位置的测试图像块,得到K个篡改标志,如公式(4)所示:<maths num="0004"><![CDATA[<math><mrow><msubsup><mi>d</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><msubsup><mi>W</mi><mi>i</mi><mrow><mo>*</mo><mi>k</mi></mrow></msubsup><mo>=</mo><msubsup><mi>W</mi><mrow><msup><mi>s</mi><mi>k</mi></msup><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><mrow><mo>&prime;</mo><mi>k</mi></mrow></msubsup></mtd></mtr><mtr><mtd><mn>1</mn><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:<img file="FDA000024930120000225.GIF" wi="45" he="55" />表示第i个图像块中第k部分是否相等;则对于每一个测试图像块,如果K部分生成水印与对应的K个提取水印对应相等,则图像块保持完整,否则认为遭到篡改;篡改结果由如下公式(5)得到:<maths num="0005"><![CDATA[<math><mrow><msub><mi>D</mi><mi>i</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><msubsup><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></msubsup><msubsup><mi>d</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中:D<sub>i</sub>表示第i个图像块是否遭到篡改,如果为0,说明测试图像块保持完整,如果为1,则测试图像块遭到篡改。
地址 100191 北京市海淀区学院路37号