通过对大量的不同大小的BMP文件和不同格式的秘密信息文件做实验,都得到了相同的结论,从而验证了算法4.3和4.4的正确性和可行性。
与传统LSB算法比较可知,改进算法具有以下优点:
1. 隐蔽性强。经过两次随机,增加了秘密信息隐藏的隐藏位置的随意性,也增加了攻击的难度,由于秘密信息都是隐蔽在载体图像每个字节的低4位,载体图像在隐藏秘密图像之前和隐藏之后很难区分。
2. 容量明显提高。若载体图像的人小为N个字节,则可以隐藏的秘密信息文仆的大小约为N/4。
3.实用性好。本算法中的秘密信息可以是任何格式的文件,从而增加了隐藏的质量和性能。
4.秘密信息的提取容易。只需提供两组随机的序列,即可从隐藏了秘密图像的载体像中提取秘密信息。
(a)载体图像 (b)秘密信息文本
(c)隐藏信息后的图像 (d)提取的秘密文本
图4.5 载体图像和秘密信息文本
23
第五章 置乱技术的信息隐藏算法
图像置乱作为一种图像加密技术,已经成为数字图像安全传输和保密存储的重要手
段之一。所谓置乱,就是运用一定的规则搅乱图像中像素的位置或颜色,使之变成一幅杂乱无章的图像。与加密保证安全性不同的是,将置乱的图像作为秘密信息再进行隐藏,可以很大限度地提高载体图像的鲁棒性,所以图像置乱是信息隐藏中常用的一项技术。
5.1图像置乱方法介绍
目前,人们用得比较多的置乱技术有Arnol变换、分形Hilbert曲线、混码变换等方法。文献[2]提出了一类基于行列式计算思想的图像置乱加密算法,文献[8]提出对原始图像的位置和灰度级进行不同类型的置乱。本文再介绍三种置乱方法:变换模板形状的图像置乱算法、幻方变换、图像的Hash置乱算法。
5.1.1交换模板形状的图像置乱算法 变换模板形状的图像置乱算法的思想如下:
(1)对图像选取一个固定的模板,模板中像素的排列如图5.1中的(a)所示; (2)做一个与元图像模板不同的置乱模板,如(b)所示,在置乱模板中把图像模板中的像素位置按一定次序填入(在(b)的模板中按从上到下、左到右的次序依次填入);
(3)将置乱模板中的像素位置再按照一定的次序填回到原图像模板中就到了置乱后的图像模板((c)中的模板是按照从左到右、从上到下的次序依次读取置乱模板中像素位置)。
(a)原始模板 (b)置乱模板 (c)置乱后的模
图5.1 变换后模板形状的图像
5.1.2 图像的幻方变换
所谓幻方变换,就是将n2个不同的数填入n阶方阵的n2个方格中,如果n行n列及两条主对角线的数都等于一个常数c,则称此为n阶幻方,c为n阶幻方的和。幻方的
24
置乱具有标准的对合性。假设记n阶图像块I的幻方置乱I1=Magic(I),则对应的对I1再进行幻方置乱得到I2=Magic(I1),依次类推。一般地有In2=Magicn2(I)=I,图像还原。图5.2是3阶标准幻方9次交换复原的流程图。
1 8 3
5 4 2
9 7 2 5 3 1 4 8 6 8 6 1 4 2 9 3 7 5 3 1 5 8 6 4 1 2 9 6 9 7 2 9 4
7 5 3 6 1 8 4 2 6 5 3 7 7 5 9
9 7 5 1 8 6 3 1 8
8 3 1 9 4 2 2 6 4
图5.2 3阶标准幻方9次变换原始图像
6 4 8 2 9 7 1 5 3 5.1.3 图像的Hash置乱
前面介绍的两种置乱算法都是对图像分块进行的,而且其共同的问题是密钥控制并不得力。对于有m×n个像素点,要求随机置换m×n个,就完成了图像的Hash置乱。鉴于该算法具有无冲突和强密钥控制的特点,显然是一个很好的图像置乱算法。需要说明的是这种算法是不对合的,所以在实现上教前两种复杂一些。另外,该算法执行起来也比较费时间。
5.2 约瑟夫环图像置乱算法 5.2.1约瑟夫环遍历问题
编号为1,2?,n的n个人按顺时针方向围坐一圈,每人持有一个密码m,一开始任选一个正整数作为报数上限值m,从任意一个s开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。对于任意给定的人数n、开始报数s和报数上限m,均可得到这n个人的出列次序。图5.3给出了约瑟夫
25
环的示例图,其中n=8,,秘密依次为30、26、17、60、80、36、73、82,假如报数上限为m=5,s=2,也即从第二个人(N02)开始报数。
图5.3 约瑟夫环算法示例
5.2.2约瑟夫环图像置乱
文献[10]把约瑟夫环问题应用到图像置乱中:采用位置置乱和灰度置乱相结合的方法,而且在进行位置置乱的同时将图像的每一像素与某一数字异或来实现。本节对约瑟夫环问题作出一定的变换,然后应用到图像置乱技术中。
首先对约瑟夫环应用到图像置乱中做出如下说明:报数上限m和每个像素的密码相同,均为固定值,图像数据值作为出列的编号。算法的基本思想如下:
假定图像的大小为p×q,即图像可以看成一个p行q列的二维矩阵。先对p行做约瑟夫环变换,每行的报数上限为M1,再对q列做约瑟夫环变换,每列的报数上限为M2,,其中M1和M2均为随机数,每行或每列的报数的起点S可以任意。图像还原时,先按列做N2次约瑟夫环变换,再对行N1次约瑟夫环变换,N1和N2可以由M1、M2 和S来确定。图5.4是该算法的执行过程,图a是原始数据,图b把是图a按照行进行约瑟夫环变换后的数据,图c是把图b按照列进行约瑟夫环变换后的数据。假定每一行和每一列的都从第一个数据开始报数,即S=1,报数上限M1 =3,M2 =4。由M1、M2 和S可以得到N1 =4,N2 =5,这两个数将作为密钥。图像还原时,先对图c的每一列做5次约瑟夫环交换,得到图b,再对图b做4次约瑟夫环变换,即可还原原始数据。从图a和图c可以看出,数据所在的位置发生了很大的变化,置乱效果良好。
26

