发明名称 可在浏览器上定位篡改位置的网页水印生成与认证方法
摘要 本发明公开了一种可在浏览器上定位篡改位置的网页水印生成与认证方法,它结合浏览器显示的字符块对网页源代码分块,使子块含有浏览器显示字符,然后提取各子块的非标签部分和标签中的属性值部分,生成12比特水印信息,采用颜色属性方法随机嵌入另一子块中,检测时通过比较子块提取水印与其重构水印的一致性,判定子块篡改与否。最后在检测出篡改块的标签中,用标示属性替换其所有属性,块内所有在浏览器上的显示字符都用提示信息替换。该方法能在网页的部分内容被篡改时,保持Web服务不中断,未篡改的信息继续得到利用,且能及时阻止错误信息的传播,降低网页篡改对企事业单位的信誉和业务造成负面影响和损失。
申请公布号 CN102831570A 申请公布日期 2012.12.19
申请号 CN201210297582.5 申请日期 2012.08.21
申请人 西南交通大学 发明人 陈帆;张玉梅;和红杰;翟东海
分类号 G06T1/00(2006.01)I;G06F17/30(2006.01)I 主分类号 G06T1/00(2006.01)I
代理机构 成都博通专利事务所 51208 代理人 陈树明
主权项 1.一种可在浏览器上定位篡改位置的网页水印生成与认证方法,包括如下步骤:A、网页分块将原始网页源文件F,F={f<sub>r</sub>|r=1,2,...,N},按浏览器显示的字符块将原始网页源文件F分为首尾相连的M个文本块F<sub>i</sub>,即F={F<sub>i</sub>|i=1,2,…,M};F<sub>i</sub>={f<sub>r</sub>|r=d<sub>i</sub>+1,d<sub>i</sub>+2,...,d<sub>i</sub>+s<sub>i</sub>},其中,f<sub>r</sub>表示原始网页源文件F中的第r个字符,N为原始网页源文件F包含的字符数,F<sub>i</sub>表示第i个文本块,M为原始网页源文件F包含的文本块个数,s<sub>i</sub>为文本块F<sub>i</sub>包含的字符数,d<sub>i</sub>为文本块F<sub>i</sub>首字符前驱的位置,即d<sub>i</sub>=d<sub>i-1</sub>+s<sub>i-1</sub>;B、水印生成与嵌入B1、预处理:找出文本块F<sub>i</sub>(i=1,2,..M-1)中末字符对应的尾标签T<sub>i</sub>,如尾标签T<sub>i</sub>中存在颜色属性:style=”XXXX:#C<sub>i,1</sub>C<sub>i,2</sub>C<sub>i,3</sub>C<sub>i,4</sub>C<sub>i,5</sub>C<sub>i,6</sub>”,将其颜色属性中的RGB分量低位C<sub>i,2</sub>C<sub>i,4</sub>C<sub>i,6</sub>置0;否则,在文本块F<sub>i</sub>中的&lt;/T<sub>i</sub>&gt;代码前加入子元素“&lt;spanstyle=″color:#000000″&gt;&amp;zwj;&lt;/span&gt;”;其中“&amp;zwj;”为在浏览器中不显示的字符,span标签用于组合并格式化文档中的行内元素,得到预处理文本块F<sub>i</sub><sup>p</sup>,但对最后一个文本块F<sub>M</sub>不操作;B2、水印生成:将预处理文本块F<sub>i</sub><sup>p</sup>(i=1,2,..M-1)的非标签部分及标签中的属性值部分构成文本块F<sub>i</sub>的核心代码串h<sub>i</sub>,利用密钥k<sub>1</sub>和Hash函数生成核心代码串h<sub>i</sub>的160比特摘要信息X<sub>i</sub>={x<sub>i,1</sub>,x<sub>i,2</sub>,...,x<sub>i,160</sub>},X<sub>i</sub>=Hash(h<sub>i</sub>,k<sub>1</sub>),(i=1,2,…,M-1);然后,将摘要信息X<sub>i</sub>乘以矩阵R生成基于文本块F<sub>i</sub>内容的12比特水印信息W<sub>i</sub>=(w<sub>i,1</sub>,w<sub>i,2</sub>,...,w<sub>i,12</sub>)(i=1,2,..M-1);W<sub>i</sub>=(X<sub>i</sub>·R)mod 2,(i=1,2,…,M-1)其中,R为利用密钥k<sub>1</sub>生成的大小为160×12的二值伪随机矩阵,·为矩阵点乘运算,mod为模运算;B3、水印嵌入:利用密钥k<sub>2</sub>置乱长度为M-1的一维顺序数组(1,2,3,...,M-1)生成文本块嵌入位置数组P={p<sub>i</sub>|i=1,2,...,M-1};令j=p<sub>i</sub>,将基于文本块F<sub>i</sub>内容生成的水印信息W<sub>i</sub>=(w<sub>i,1</sub>,w<sub>i,2</sub>,...,w<sub>i,12</sub>)(i=1,2,…,M-1)嵌入到预处理文本块F<sub>j</sub><sup>p</sup>生成含水印文本块F<sub>j</sub><sup>w</sup>;水印嵌入是通过修改预处理文本块F<sub>j</sub><sup>p</sup>的尾标签T<sub>j</sub>的属性style=”XXXX:#C<sub>j,1</sub>C<sub>j,2</sub>C<sub>j,3</sub>C<sub>j,4</sub>C<sub>j,5</sub>C<sub>j,6</sub>”实现的,具体如下:<maths num="0001"><![CDATA[<math><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi>j</mi><mo>,</mo><mn>2</mn></mrow></msub><mo>=</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>2</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>3</mn></mrow></msub><mo>&times;</mo><mn>2</mn><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>4</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi>j</mi><mo>,</mo><mn>4</mn></mrow></msub><mo>=</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>5</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>6</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>7</mn></mrow></msub><mo>&times;</mo><mn>2</mn><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>8</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi>j</mi><mo>,</mo><mn>6</mn></mrow></msub><mo>=</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>9</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>10</mn></mrow></msub><mo>&times;</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>11</mn></mrow></msub><mo>&times;</mo><mn>2</mn><mo>+</mo><msub><mi>w</mi><mrow><mi>i</mi><mo>,</mo><mn>12</mn></mrow></msub></mtd></mtr></mtable></mfenced></math>]]></maths>对最后一个文本块F<sub>M</sub>,令F<sub>M</sub><sup>w</sup>=F<sub>M</sub>,则所有含水印文本块F<sub>i</sub><sup>w</sup>(i=1,2,…,M)依序首尾相连即得到含水印的网页源文件F<sup>w</sup>={F<sub>i</sub><sup>w</sup>|i=1,2,…,M};C、水印提取与检测按步骤A将待检测网页源文件FT分为首尾相连的M个待检测文本块F<sub>i</sub><sup>t</sup>,<maths num="0002"><![CDATA[<math><mrow><msup><mi>F</mi><mi>T</mi></msup><mo>=</mo><mo>{</mo><msubsup><mi>F</mi><mi>i</mi><mi>t</mi></msubsup><mo>|</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>M</mi><mo>}</mo><mo>;</mo></mrow></math>]]></maths>C1、水印提取:对待检测文本块<img file="FDA00002036719800023.GIF" wi="456" he="64" />根据其尾标签<img file="FDA00002036719800024.GIF" wi="53" he="59" />的颜色属性style=”XXXX:#C<sub>i,1</sub><sup>t</sup>C<sub>i,2</sub><sup>t</sup>C<sub>i,3</sub><sup>t</sup>C<sub>i,4</sub><sup>t</sup>C<sub>i,5</sub><sup>t</sup>C<sub>i,6</sub><sup>t</sup>”,提取嵌入在待检测文本块<img file="FDA00002036719800025.GIF" wi="60" he="59" />中的水印信息<maths num="0003"><![CDATA[<math><mrow><msubsup><mi>E</mi><mi>i</mi><mi>t</mi></msubsup><mo>=</mo><mo>{</mo><msup><msub><mi>e</mi><mrow><mi>i</mi><mo>,</mo><mi>z</mi></mrow></msub><mi>t</mi></msup><mo>|</mo><mi>z</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mn>12</mn><mo>}</mo><mo>,</mo></mrow></math>]]></maths><img file="FDA00002036719800031.GIF" wi="1209" he="341" />C2、水印重构:将待检测文本块<img file="FDA00002036719800032.GIF" wi="60" he="59" />的尾标签的颜色属性值C<sub>i,2</sub><sup>t</sup>,C<sub>i,4</sub><sup>t</sup>,C<sub>i,6</sub><sup>t</sup>置0,得到预处理后的待测文本块<img file="FDA00002036719800033.GIF" wi="93" he="59" />再对预处理后的待测文本块<img file="FDA00002036719800034.GIF" wi="94" he="59" />利用密钥k<sub>1</sub>进行步骤B2的水印生成操作,重构出基于待检测文本块<img file="FDA00002036719800035.GIF" wi="60" he="59" />中非标签部分及标签中的属性值部分生成12比特水印信息<img file="FDA00002036719800036.GIF" wi="80" he="59" />C3、篡改判断:利用密钥k<sub>2</sub>,按步骤B3生成文本块嵌入位置数组P={p<sub>i</sub>|i=1,2,...M-1};令j=p<sub>i</sub>,将第i个待检测文本块<img file="FDA00002036719800037.GIF" wi="60" he="59" />重构的12比特水印<img file="FDA00002036719800038.GIF" wi="66" he="59" />与从第j个待检测文本块<img file="FDA00002036719800039.GIF" wi="60" he="67" />提取的12比特水印信息<img file="FDA000020367198000310.GIF" wi="61" he="67" />进行比较,如果<img file="FDA000020367198000311.GIF" wi="66" he="59" />与<img file="FDA000020367198000312.GIF" wi="61" he="67" />相同,则判定待检测的文本块<img file="FDA000020367198000313.GIF" wi="60" he="59" />未被篡改,不进行D步骤的操作;否则,判定待检测的文本块<img file="FDA000020367198000314.GIF" wi="60" he="59" />被篡改,进行D步骤的操作;D、篡改定位与标示D1、篡改定位:对判定为篡改的文本块<img file="FDA000020367198000315.GIF" wi="75" he="59" />其篡改位置为其起始到终止字符中的任意水印生成字符,即块中非标签部分和标签中的属性值部分;D2、浏览器的标示:用设定的标示属性替换判定为篡改的文本块<img file="FDA000020367198000316.GIF" wi="60" he="59" />中尾标签<img file="FDA000020367198000317.GIF" wi="53" he="59" />的所有属性,以在浏览器上突出显示篡改块;并用提示信息覆盖判定为篡改的文本块<img file="FDA000020367198000318.GIF" wi="61" he="59" />中所有在浏览器上显示的字符。
地址 610031 四川省成都市二环路北一段111号