??????? 最近尝试了一个融合了多功能隐写的项目,参考了一些现有的资料和相关的开源库,并最终集成到了可视化UI当中。这篇文章讲述了实现的几项隐写技术的原理以及最终呈现的效果,后续会在“隐私保护”以及“ui”的专栏中继续更新详细的ui设计思路以及隐写代码的具体编写过程,项目完整资源,此外我们将该项目最终进行打包,因此也会更新有关Docker的使用。
隐写技术是一项能够将一种类型的数据嵌入到另一种类型的数据中,而不引起明显的变化,从而实现信息隐藏功能的技术。隐写技术的应用领域非常广泛,包括信息安全、数字水印、数字版权保护等。在本作品中,我们不再局限于一种隐写方案,而专注于集成多种不同的隐写功能,从而满足用户多样化的需求,实现更为灵活和综合的信息隐写操作,为多媒体信息的安全传输提供了更多选择。
在本作品中,我们集成了三种具有不同功能的隐写方案,分别是将文本隐写入wav格式的音频文件、将文本隐写入png格式的图像文件以及将图像隐写入图像文件(无载体图像隐写)。前两种方案都是通过最低有效位LSB隐写技术来实现的。LSB是一种简单而常见的隐写技术。这种方法通过将秘密信息嵌入到载体文件的最低有效位中,以减小对原始文件的影响,使得嵌入的信息难以被察觉到。
最后一种方案,我们使用了最近提出的基于无载体的、可控、鲁棒和安全的图像隐写框架CRoSS。这是首次将扩散模型引入到图像隐写领域的尝试,扩散模型具有两个特性,即无需训练即可实现两张图像之间的转换以及对噪声数据有天然的鲁棒性。这些特性可以用来增强图像隐写任务中的安全性和鲁棒性。与基于载体图的图像隐写方法相比,CRoSS在可控性、鲁棒性和安全性方面具有显著优势,而且这些优势是在不进行额外训练的情况下获得的,为未来在图像隐写领域的深入研究提供了一些有趣的思路。
与此同时,为了满足用户个性化的需求,本作品还在各种隐写方案中增加了一些的创新点,比如在前两种隐写方案中,可以指定LSB的位数,并且提供分析载体文件和要隐藏的文本文件字节数以及边界检查的功能,如果要隐藏的文本数据较大,我们可以增加LSB的位数来满足需求。另外,我们还设置了压缩参数,可以按照用户的不同需求来输出隐写后的载体文件,例如可以让生成载体文件的速度最快或者让其大小最小,来实现更为人性化的隐写功能。
另外,本作品还提供了易于使用的用户UI界面,以方便用户进行多功能的隐写操作。并且提供了隐写和恢复的双向功能,更能模拟日常生活的使用场景,实现秘密数据的安全传输。
关键词:多功能隐写,LSB,扩散模型,CRoSS,UI界面
隐写技术是一种信息隐藏的方法,它允许将一种类型的数据嵌入到另一种类型的数据中,而不引起明显的变化。这种技术的主要目标是隐藏信息的存在,使其对未经授权的人不可察觉,从而保护信息的安全。图一形象地阐明了隐写术的基本原理与实现过程。隐写术的背景可以追溯到古代,但随着数字技术的发展,尤其是计算机和互联网的普及,隐写技术变得更为复杂,其应用也变得非常广泛,主要涉及到信息安全、数字水印、数字版权保护等领域。
隐写技术可以分为许多类别,包括文本隐写、图像隐写、音频隐写、视频隐写等。在本作品中,我们集成了三种隐写方案,分别是
将文本隐写入wav格式的音频文件
将文本隐写入png格式的图像文件
将图像隐写入图像文件。
前两种方案都是通过最低有效位(Least Significant Bit,LSB)来实现的。LSB是一种简单而常见的隐写技术。这种方法通过将秘密信息嵌入到载体文件的最低有效位中,以减小对原始文件的影响,使得嵌入的信息难以被察觉到。
对于每个音频文件(载体),我们使用需要隐藏的文本数据去覆盖其最低有效位。在隐写的过程中,我们可以指定要使用的最低有效位的位数,程序会自动输出在使用指定位数的LSB时所能隐藏的最大字节数,然后读取文本数据,将文本的字节数与最大字节数比较,符合要求则将其隐写入载体音频文件中。同时,我们还提供了恢复隐写数据的功能。在恢复数据的过程中,我们需要指定使用的LSB位数以及隐藏数据的字节数,从而可以在载体音频文件中恢复出隐写数据。
我们实现隐写功能的方法与第一种方案大同小异。对于载体图像文件中每个像素点的每个颜色通道(例如,R、G 和 B),我们使用需要隐藏的文本数据去覆盖颜色值的最低有效位。为了更容易恢复这些数据,我们还将输入文件的文件大小隐藏在图像的前几个颜色通道中。同样,我们也提供了文件分析功能(查看载体文件使用指定位数的LSB时所能隐藏的最大字节数以及文本数据的字节数)、隐写功能以及恢复功能。此外,我们还提供了压缩参数c(整数范围:1-9)供选择,当c为1时,表明我们使用最快的速度完成隐写过程;当c为9时,表明我们需要让隐写后的载体文件大小最小。
当前的图像隐写技术主要集中在基于载体图的方法上,这些方法通常存在泄露隐藏图的风险和对退化容器图不鲁棒的风险。受到最近扩散模型(diffusion models)发展的启发,我们发现扩散模型具有两个特性,即无需训练即可实现两张图像之间的转换以及对噪声数据有天然的鲁棒性。这些特性可以用来增强图像隐写任务中的安全性和鲁棒性。对于扩散模型的选择,我们选择开源的文生图大模型Stable Diffusion,并充分利用了来自开源社区的最新工具,如LoRA和ControlNet,以提高容器图像的可控性和多样性。
我们使用了一种基于无载体的、可控、鲁棒和安全的图像隐写框架CRoSS(Controllable, Robust and Secure Image Steganography),与基于载体图的图像隐写方法相比,在可控性、鲁棒性和安全性方面具有显著优势。而且这些优势是在不进行额外训练的情况下获得的。同时,这也是首次将扩散模型引入图像隐写领域的尝试。
同时本作品还提供了易于使用的用户UI界面,以方便用户进行多功能的隐写操作。另外,我们提供了隐写和恢复的双向功能,更能模拟日常生活的使用场景,满足用户的多样化需求,实现秘密数据的安全传输。
在前两种隐写方案中,我们都使用到了最低有效位(LSB)隐写技术,在这里我们详细地介绍一下LSB的实现原理。
我们以图片文件为例,图片中的图像像素一般是由RGB三原色(红绿蓝)组成,每一种颜色占用8位,取值范围为0x00 - 0xFF,即有256种颜色,一共包含了256的3次方的颜色,即16777216种颜色。而人类的眼睛可以区分约1000万种不同的颜色,这就意味着人类的眼睛无法区分余下的颜色大约有6777216种。
每个像素点的颜色可以用十进制0 - 255的数值表示,那么上图中的RGB(218,150,149)表示成二进制为:
LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,每个像素点可以携带3比特的信息。我们仅对RGB中的最低位进行修改,如当前像素位点最后一位修改成1,1,0,则上述RGB变成:
上述变化很难用肉眼察觉到,而且每个像素点可以携带3比特的信息,而这些比特信息则可以转化为ASCII字符,从而达到隐写信息的目的。
我们使用了一个专门用于隐写操作的stego-lsb库,根据它提供的API接口来实现将需要隐藏的文本数据隐写入wav音频文件的操作。在输入隐写命令的过程中,我们可以指定要使用的最低有效位的位数,程序会自动输出在使用指定位数的LSB时所能隐藏的最大字节数,然后读取文本数据,将文本的字节数最大字节数比较,符合要求则将其隐写入载体音频文件中。同时,我们还提供了恢复隐写数据的功能。在恢复数据的过程中,我们需要指定使用的LSB位数以及隐藏数据的字节数,从而可以在载体音频文件中恢复出隐写数据。以下是命令行参数的介绍以及隐写和恢复指令的示例:
同样,我们也是使用stego-lsb库,根据它提供的API接口来实现将需要隐藏的文本数据隐写入png图像文件的操作。在这种方案中,我们提供了三大功能,分别是分析、隐写与恢复功能。首先是分析功能,输入分析指令,我们可以查看载体图像文件的分辨率、载体图像文件使用指定位数的LSB时所能隐藏的最大字节数、要隐藏的文本数据的字节数以及文件大小的标签。
其次是隐写功能,在输入隐写指令时,我们可以指定LSB的位数以及压缩参数c。压缩参数c的范围是1 - 9(整数),当c为1时,表明我们使用最快的速度完成隐写过程;当c为9时,表明我们需要让隐写后的载体文件大小最小。
最后是恢复功能,在输入恢复指令时,我们需要指定LSB的位数,位数要与隐写过程的位数保持一致,才能成功恢复出隐藏数据。以下是命令行参数的介绍以及分析、隐写和恢复指令的示例:
我们使用了一种基于无载体的、可控、鲁棒和安全的图像隐写框架CRoSS。将扩散模型引入到图像隐写领域,利用扩散模型的两个特性,即无需训练即可实现两张图像之间的转换以及对噪声数据有天然的鲁棒性,来增强图像隐写任务中的安全性和鲁棒性。对于扩散模型的选择,选择开源的文生图大模型Stable Diffusion,并充分利用了来自开源社区的最新工具,如LoRA和ControlNet,以此提高容器图像的可控性和多样性。
首先简单介绍一下什么是DDPM和DDIM。去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)在没有对抗训练的情况下实现了高质量的图像生成,但其需要多步模拟马尔可夫链(Markov chain)才能生成样本。为加速采样,研究人员提出了去噪扩散隐式模型(Denoising Diffusion Implicit Models, DDIM),这是一类更有效的迭代隐式概率模型。DDIM和DDPM有相同的训练目标和训练过程,但是它不再限制扩散过程必须是一个马尔卡夫链,这使得DDIM可以采用更小的采样步数来加速生成过程,DDIM的另外是一个特点是从一个随机噪音生成样本的过程是一个确定的过程(中间没有加入随机噪音)。
融合了DDIM确定性采样以及扩散模型本身无需训练的图像转换能力,CRoSS无载体隐写框架的实现过程如上图所示。
在藏图阶段(hide process),我们通过两个不同的文本描述(又叫做private key和public key)实现隐藏图到容器图的转换,这也就相当于无需载体地将隐藏图藏匿到了容器图中。
在解图阶段(reveal process),我们利用藏图阶段的两个扩散过程的DDIM逆过程尝试从容器图逆转回原隐藏图。
在整个框架中,DDIM的确定性可逆采样保证了隐藏图和解码图(revealed image)的一致性;而前后两个阶段的文本描述又可以认为具有公钥和私钥的作用,公钥可以公开给网络上的所有用户,但是一旦不知道私钥的文本描述是什么,则无法解码出正确的隐藏图。
实验环境 | |
操作系统 | Windows 10 |
CPU型号 | 11th_Gen_Intel(R)_Core(TM)_i5-1135G7_@_2.40GHz |
内存 | 16G |
python版本 | Python 3.9 |
1.文本隐写入音频
以下是命令行参数的介绍以及隐写和恢复指令的示例:
(4)在终端输入隐写命令,stegolsb wavsteg -h -i test.wav -s 1.txt -o sound_steg.wav -n 1(-n参数可以指定LSB的位数),将1.txt的文本内容写入到test.wav音频文件中,隐写后要检查生成的载体文件sound_steg.wav是否变化或受损。
【分析】:程序输出使用指定位数的LSB我们能隐藏的最大字节数,同时记录了读取文件、隐写2319字节(文本内容的字节数)以及生成隐写后的载体文件的时间。
【分析】:程序记录了读取文件、恢复2319字节(文本内容的字节数)以及生成恢复后的文本文件的时间。通过对比1.txt和output.txt文件的文本内容发现,两者内容完全一致,隐写和恢复过程成功,实现了秘密信息的安全传输。
2.文本隐写入图片
以下是命令行参数的介绍以及分析、隐写和恢复指令的示例:
(1)首先创建一个txt文件,写入要隐藏的文本内容。
(2)选择一个载体图像文件,注意需要是png格式的图像文件。
(3)安装stego-lsb库,配置好隐写操作的实验环境。
(4)在终端输入分析命令,stegolsb steglsb -a -i test.png -s 1.txt -n 2(-n参数可以指定LSB的位数)
【分析】:程序输出载体图像的大小(分辨率)、使用指定LSB位数能隐藏的最大字节数、要隐藏的文本文件的字节数以及文件大小标签,帮助我们进一步分析载体文件和文本文件。
(4)在终端输入隐写命令,stegolsb steglsb -h -i test.png -s 1.txt -o steg.png -n 2 -c 1(-n参数可以指定LSB的位数,-c是压缩参数),将1.txt的文本内容隐写入到test.png图像文件中,隐写后要检查生成的载体文件steg.png是否变化或受损。
【分析】:程序记录了读取文件、隐写2319字节(文本内容的字节数)以及生成隐写后的载体文件的时间。
1、在终端输入恢复命令,stegolsb steglsb -r -i steg.png -o output2.txt -n 2,我们需要指定LSB的位数(和隐写时保持一致),然后生成output2.txt文件,存储恢复的内容。
【分析】:程序记录了读取文件、恢复2319字节(文本内容的字节数)以及生成恢复后的文本文件的时间。通过对比1.txt和output2.txt文件的文本内容发现,两者内容完全一致,隐写和恢复过程成功,实现了秘密信息的安全传输。
(6)另外,我们还实现了批处理功能,用户可以将多个不同的文本文件压缩成一个zip格式的压缩文件,然后将压缩文件隐写入载体图像文件中。同时,我们也提供了恢复功能,可以从隐写图像中恢复出压缩文件,从而得到多个不同文本文件的内容。
3.图像隐写入图像
(1)输入pip install -r requirements.txt命令安装所需的库,配置好实验环境
1、在藏图阶段,我们通过两个不同的文本描述(又叫做private key和public key)实现隐藏图到容器图的转换,这也就相当于无需载体地将隐藏图藏匿到了容器图中。此处private key和public key分别是cat和dog,借助Stable Diffusion模型,我们可以将图像中的猫转换成狗。设置更多的采样步骤通常会产生更好的结果。
?????????
2、在解图阶段,我们利用藏图阶段的两个扩散过程的DDIM逆过程尝试从容器图逆转回原隐藏图。??????????????
【分析】:在整个框架中,DDIM的确定性可逆采样保证了隐藏图和解码图(revealed image)的一致性;而前后两个阶段的文本描述又可以认为具有公钥和私钥的作用,公钥可以公开给网络上的所有用户,但是一旦不知道私钥的文本描述是什么,则无法解码出正确的隐藏图。
5.UI界面及功能测试
(1)文本隐写入音频功能测试
【分析】:成功将hello文本隐写入音频文件并成功恢复出隐写数据hello
(2)文本隐写入图像功能测试
【分析】:成功将hello文本隐写入图像文件并成功恢复出隐写数据hello
(3)图像隐写入图像功能测试
【分析】:通过两个不同的文本描述private key和public key,成功实现了隐藏图到容器图的转换,隐藏图是猫的图片,容器图是狗的图片,并成功将从容器图逆转恢复回原隐藏图。
本作品在设计与实现的过程中,主要有以下几个方面的创新:
1.集成多种隐写功能:为了满足用户的多样化需求,本作品共设计了三种不同的隐写方案,分别是文本隐写入音频,文本隐写入图片以及无载体图像隐写。每种方案均提供隐写和恢复功能,更能模拟日常生活的使用场景,实现更为灵活和综合的信息隐写操作,为多媒体信息的安全传输提供了更多选择。
2.选择LSB位数及文件分析功能:在使用LSB隐写技术实现前两种隐写方案的过程中,我们可以选择使用LSB的位数,程序能够自动分析载体文件,输出在使用指定位数的LSB时所能隐藏的最大字节数。另外,还提供边界检查功能,程序会自动分析要隐藏的文本内容的字节数,与载体文件能隐藏的最大字节数进行比较,当满足要求时,才能将文本内容隐写入载体文件。
3.载体文件压缩功能:在第二种方案中,文字隐写入图片的过程中,为了满足不同用户对于隐写后的载体文件的要求,我们提供了一个压缩参数c。压缩参数c的范围是1 - 9(整数),当c为1时,表明我们使用最快的速度完成隐写过程;当c为9时,表明我们需要让隐写后的载体文件大小最小,使得隐写的操作更具有个性化。
4.批处理和自动化:在第二种方案,将文本隐写入图像文件中,为了满足用户隐藏多个不同文本的需求,引入了批处理和自动化功能。用户可以将多个不同的文本文件压缩成一个zip格式的压缩文件,然后将压缩文件隐写入载体图像文件中。同时,我们也提供了恢复功能,可以从隐写图像中恢复出压缩文件,从而得到多个不同文本文件的内容。这一功能的引入,不仅提高了操作效率,也使得系统更适用于需要处理大量隐写内容的应用场景。
5.设计用户友好的UI界面:通过编程设计,打造了一个直观且易于使用的用户界面,旨在让用户能够轻松进行各种隐写与恢复操作。这个用户界面功能划分清晰,以确保操作的简便性和直观性,使得即便是初学者也能够轻松上手。
6.安全性:在第三种方案中,我们使用了基于无载体的、可控、鲁棒和安全的图像隐写框架CRoSS。由于CRoSS是无载体的图像隐写方法,所以其容器图中几乎没有任何可以作为检测的线索存在,所以在对抗检测算法的安全性指标上有极大的优势,具有很高的安全性。
7.鲁棒性:另外,CRoSS框架在面对遭受多种退化的容器图时依然表现了极强的鲁棒性,不论是主观结果还是客观指标上都有着明显的优势,这得益于扩散模型本身对噪声数据的强大鲁棒性,详细的实验结果见图2和表2。
通过这些创新性的功能,多功能隐写融合系统能够为用户提供更为全面、便捷、安全的隐写体验,不仅仅局限于基本的隐写操作,更注重满足用户多样化的需求,为多媒体信息的安全传输提供了更多选择。
在多功能隐写融合系统的设计与实现的过程中,我们不仅仅掌握了各种隐写技术的原理和实现方法,集成多种隐写方案来满足用户的多样化需求,更在实际的系统中融入了创新性的元素,使得系统具备更为全面、实用和创新的特点。
在前两种隐写方案中,我们是通过最低有效位LSB隐写技术来实现的。LSB是一种简单而常见的隐写技术,这种方法通过将秘密信息嵌入到载体文件的最低有效位中,以减小对原始文件的影响,使得嵌入的信息难以被察觉到。同时,我们可以指定LSB的位数,程序能够自动分析载体文件,输出在使用指定位数的LSB时所能隐藏的最大字节数。另外,还提供了边界检查功能,程序会自动分析要隐藏的文本内容的字节数,与载体文件能隐藏的最大字节数进行比较,当满足要求时,才能将文本内容隐写入载体文件。
在此基础上,我们还设计了两个创新之处,分别是载体文件压缩功能以及批处理功能。在第二种方案中,文字隐写入图片的过程中,为了满足不同用户对于隐写后的载体文件的要求,我们提供了一个压缩参数c。压缩参数c的范围是1 - 9(整数),当c为1时,表明我们使用最快的速度完成隐写过程;当c为9时,表明我们需要让隐写后的载体文件大小最小,使得隐写的操作更具有个性化。同时,为了满足用户隐藏多个不同文本的需求,引入了批处理和自动化功能。用户可以将多个不同的文本文件压缩成一个zip格式的压缩文件,然后将压缩文件隐写入载体图像文件中。当然,我们也提供了恢复功能,可以从隐写图像中恢复出压缩文件,从而得到多个不同文本文件的内容。这一功能的引入,不仅提高了操作效率,也使得系统更适用于需要处理大量隐写内容的应用场景。
在第三种隐写方案中,我们使用了一种基于无载体的、可控、鲁棒和安全的图像隐写框架CRoSS。这是首次将扩散模型引入图像隐写领域,利用扩散模型的两个特性,即无需训练即可实现两张图像之间的转换以及对噪声数据有天然的鲁棒性,来增强图像隐写任务中的安全性和鲁棒性。各种实验结果表明,CRoSS在安全性和鲁棒性上都有着明显的优势,这得益于扩散模型本身强大的特性,也为未来在图像隐写领域的研究提供了新思路