APP下载

基于多重用户数字水印系统的研究与实现

2023-07-25刘枳岑

科技与创新 2023年11期
关键词:子块数字水印二进制

刘枳岑,徐 明

(扬州大学信息工程学院,江苏 扬州 225127)

随着科学技术的飞速发展,计算机在人们生活中的应用越来越普遍,各单位颁布工作文件的方式也渐渐由传统的纸质文件印刷及分发,转变为电子文件传送形式[1]。文件发布方式的革新意味着科技的进步,但问题也随之而来。一方面,文件在内部流转的过程中由多人经手查阅,文件内容容易被泄密,而泄露之后对于文件泄密过程的追踪和相关人员的定责往往含糊不清、真伪难辨[2];另一方面,网络技术的进步也导致文件造假事件频频发生,网民随意伪造相关单位文件,并发布到网络上,最终引起轩然大波的案例屡见不鲜。基于当今文件发布的现状和对已发布文件确保真实性的识别要求,采用数字水印方式对文件加密以及实现对文件的动态跟踪和溯源,已经成为文件安全发布和文件可靠传递的一种必备的重要手段。

数字水印技术是由信息隐藏技术发展而来的,它凭借不可感知性和鲁棒性,被广泛应用于防伪溯源、版权保护、隐藏标识、认证和安全隐蔽通信领域[3]。利用数字水印隐蔽性强、不易被察觉的特点,在文件发布或传递过程中,为每位用户设计生成独特的水印图片,将多张水印图片嵌入到发布的图片文件中,最终形成一个具有预防图片文件泄密、能追踪管理文件流转过程、具备文件防伪认证功能的多重用户数字水印系统。

数字水印技术最早出现在1993 年TIRKEL 等撰写的《Electronic Watermark》文章中[3]。该思路一经提出,因它在信息安全和经济上不可估量的地位,在学术论坛上风靡一时,从而引起了许多专业领域杰出人才的兴趣,最终推动相关技术的研究并取得了优异的成果[4]。为了促进国际学术界的交流,1996 年,在英国剑桥召开了第一届国际信息隐藏学术研讨会(International Information Hiding Workshop,IHW),标志着信息隐藏学的诞生,直至2009 年,该研讨会共举办了十一届[4]。1999 年,国内关于数字水印技术的研究开始发展起来,同年举办了全国信息隐藏学诗研讨会,作为信息安全领域的学术交流活动,一定意义上促进了中国数字水印技术的研究与发展。

当今数字水印处理方式主要采用单重显式数字水印处理技术,即只能对图片文件实施一次水印处理,水印内容清晰易读。但在实际文件发布及传阅过程中,多用户阅读文件更具普遍性和一般性。如何对图片文件实施多重水印处理,最终能够对多重水印图片准确单独分离、逆向提取出每个用户的个人信息;为了确保发布内容安全可靠、发布单位的权威和可信度,文件的水印标识手段应更具隐蔽性和不可阅读性等,这些正是目前水印处理面临的技术难点,也是本文解决问题的关键所在。

本文提出了一个基于多重用户的数字水印系统,经过本系统处理后的文件具有以下特性:在文件内容发生泄露时,能够识别出每个用户的阅读痕迹,从而对文件实施准确追踪并定责;在文件实施水印处理后,可以通过对水印标识的隐式处理和逆还原,辨别文件真伪。由此可知,对文件进行不露痕迹的跟踪标记是数字水印的核心,而多重数字水印技术又是实现多重用户系统的重中之重[3]。

1 系统功能设计与实现

1.1 系统功能设计

本系统利用MATLAB 和Visual Studio 共同开发,利用MATLAB 对图像强大的处理功能设计水印模块处理函数,生成dll 动态链接库,嵌入ASP.NET 中供C#调用。通过Visual Studio 搭建系统网页基本框架,在网页运行中,调用水印处理模块的dll 动态链接库,从而形成基于多重用户的数字水印系统。

本系统生成水印图片时首先要求用户输入姓名,连接数据库并获取用户信息,最终生成包含该用户信息的水印图片,然后将水印图片嵌入文件中。图片文件要求后缀名是jpg、png、bmp 的格式(单通道、三通道图均可)。如需嵌入多位用户水印,重复上述操作即可。

本系统提取用户水印,要求输入同样是后缀名为jpg、png、bmp 的图片文件(单通道图),将图片分块提取水印,并将提取出的水印可视化。若提取出的水印与本系统设计的水印相同,则此图片文件表示已发布文件,且图片内含有相应的用户信息,可记录图片分块编号。

本系统水印信息提取时,要求用户输入被嵌入图片的分块编号,系统自动提取水印中被嵌入的用户数字信息。系统功能设计流程如图1 所示。

图1 水印系统功能设计流程图

1.2 功能模块实现

1.2.1 水印图片生成模块

水印图片中嵌入的信息包含用户ID 和username(用户中文姓名),连接SQL Server 数据库获取,用户ID 为十进制数字。这里规定用户姓名为二/三/四个汉字(考虑复姓)。系统在生成水印时,将ID 和username 转化为80 位二进制字符串生成水印图片。

具体步骤为:①将十进制数字ID 直接转化为16位二进制字符串(即用户数容量为256×256);②username 在转换为二进制过程中,统一按照4 个汉字数设置,若username 不足4 个汉字,用‘UU’(对应的二进制字符串为‘0101010101010101’)作为1个汉字数补充,直至username 补齐至4 个汉字长度;③将统一长度的username 转化为对应ASCII 码,再将ASCII 码(4×2=8)转化为对应的64 位(8×8=64)二进制字符串;④将得到的80 位二进制字符串保存到对应的二维数组中,利用二维离散余弦变换原理生成水印图片,像素为(640,640)。

水印图片生成代码如下:

shading_img1=double(255*ones(640,640)); %水印分块,用户嵌入一个用户信息

id_1=allinall; %用户ID 和username 生成的二进制字符串

for ii=1:80

ms=str2double(id_1(ii)); %判断读取的那个bit

for jj=1:80

blocktemp=255*ones(8,8); %每8*8 像素嵌入一个bit,这里直接每个bit 水印信息嵌入80 遍

bldct=dct2(blocktemp);

if ms==1

bldct(2,3)=50;

else

bldct(3,2)=50;

end

blockmark=idct2(bldct);

shading_img1(ii*8-7:ii*8,jj*8-7:jj*8)=blockmark;

end

end

shading_img1=uint8(shading_img1); %嵌入结果

水印样例如图2 所示。采用嵌入16 次、每8×8像素嵌入1 bit 的水印图片样例,效果图与系统中嵌入80 次的水印效果图类似;对应嵌入二进制字符串为0101010101010101。

图2 水印样例图

1.2.2 多重数字水印嵌入模块

本系统中采用图片切割分块,每个分块对应用户ID 编号,根据二维离散余弦变换原理在图片分块中分别嵌入单重数字水印,从而实现多重水印嵌入。

具体步骤为:①用户上传载体图片,系统自动将水印图片进行二值化处理、载体图片灰度化处理;②载体图片像素设置标准为640×4×3,若载体图片为RGB 图片,则先转化为灰度图片再设置像素大小;③将载体图片分割为3×3 个像素为(640×4、640×4)子块(原则上可以分为N×N(N≤256))个子块,这里为了程序运行方便快捷,将N设置为3,即可嵌入用户为9 位),给9 个子块图片编号(1-9);④获取SQL Server 数据库中要嵌入用户ID(1-9),读取用户ID 对应编号的子块图片,根据二维离散余弦变换原理嵌入水印,将嵌入水印的子块块图片替代原子块图片;⑤将所有子块图片无损合并,生成嵌入多重数字水印后的图片。

载体图片分块代码如下:

block1=1;

for i=0:(highsplit-1) %控制行

for j=0:(widesplit-1) %控制列

R1=imcrop(I,[i*wide+1 j*high+1 wide-1 high-1]); %( i*wide+1, j*high+1)为切割起点,(wide-1,high-1)为切割范围

imwrite(R1,['E:分块嵌入 ' num2str(block1)'.jpg']); %按编号保存载体图片分块

block1=block1+1;

%disp(block1);

end

end

嵌入数字水印的代码,代码略。

1.2.3 多重数字水印提取模块

多重水印提取时,将图片文件再次切割分块,检测每一个分块能否提取出用户水印图片,若含有嵌入水印的分块,则提取文件为系统使用单位发布且根据提取出的水印信息能够实施文件流转路径反向追踪。

具体步骤为:①用户上传嵌入多重数字水印的图片,系统读取图片;②在确保提取图片像素(640×4×3、640×4×3)不变的情况下,再次将图片分割为3×3 的子块(640×4,640×4);③分别对每一个子块提取水印,按编号保存提取出的水印图像,若各子块提取出的水印图片有与本系统生成的水印图片样式一致的,则水印图片提取成功且文件认证成功;④记录嵌入用户水印的分块编号,方便水印信息的提取。

1.2.4 水印信息提取模块

水印信息提取时,输入已知的含有水印信息的图片子块编号,系统自动读取水印中含有的多个用户信息。具体步骤如下:①用户输入含有水波纹水印的图片编号;②系统按次序提取各水印图片含有的信息,每张水印图片可提取出80 位二进制字符串;③取80位二进制字符串的前16 位逆转化为十进制用户ID,后64 位判断含有汉字个数转化为用户姓名,从而得到完整的用户信息。

2 不可感知性评价

本文的不可感知性评价主要是从用户的主观感受进行评价的,主观评价指的是参与观察评价的人根据自身视觉感官等对嵌入水印后的图片文件进行评价。ITU-R BT.500 建议中对测试环境、测试素材、测试条件的范围和锚定、观察者的选择等电视图像提供了明确的评价过程和标准。其中有一个分级量表,采用的是5 级损伤量表,即:5(不可察觉的质量损伤)、4(可察觉的质量损伤,但不令人讨厌)、3(稍微令人讨厌的质量损伤)、2(令人讨厌的质量损伤)和1(很令人讨厌的质量损伤)[5]。由于观察者本身视力水平等身体素质的差异,如果要得到一个客观公正的评价,就需要进行大量的实验研究。

经多个用户使用评价,本系统水印的不可感知性评价为4。

3 结束语

基于多重用户数字水印系统在开发研究中,经过长时间的背景调研、需求分析、系统设计、代码编写和系统测试,已经取得了一定的进展。目前,系统已实现水印图片生成、不可感知多重水印的嵌入、图片文件中多重数字水印提取和水印图片信息读取4 个模块功能,能够通过嵌入数字水印对发布文件的用户经手过程进行跟踪管理及认证,基本满足使用单位的需求。

猜你喜欢

子块数字水印二进制
基于八叉树的地震数据分布式存储与计算
用二进制解一道高中数学联赛数论题
基于特征值算法的图像Copy-Move篡改的被动取证方案
基于网屏编码的数字水印技术
有趣的进度
二进制在竞赛题中的应用
基于波浪式矩阵置换的稀疏度均衡分块压缩感知算法
基于FPGA的数字水印提取系统设计研究
基于分布式ICA-PCA模型的工业过程故障监测
基于数字水印的人脸与声纹融合识别算法