吴少华,宋致虎,胡 勇
(四川大学 电子信息学院,四川 成都610064)
随着互联网技术的飞速发展,互联网已成为人们最重要的通信手段。特别是大数据时代,海量数据广泛分布,随之而来的个人信息安全也越来越引起人们的重视,如何加强个人信息安全和隐私保护是摆在我们面前的一个重要课题。信息加密和信息隐藏是保护私密信息安全的两种基本方法。信息加密是指对私密信息内容加密,由于加密后的信息无法直接读取,因此易引起攻击者的注意,截获并破解,甚至破坏加密信息,信息的完整性很容易遭到破坏[1]。信息隐藏技术主要是指将特定的信息嵌入数字化宿主信息(如文本,数字化的声音、图像、视频信号等)中,信息隐藏保证隐藏的信息不引起监控者的注意和重视,从而减少被攻击的可能性。如在此基础上再使用密码技术可以极大地加强隐藏信息的安全性。文献[2]研究了信息隐藏的分类和技术特征,并根据信息隐藏的宿主信息形式进行了分析。由于图像文件本身占用空间较大,存在较大的可用空间,再加上人眼对图像存在视觉冗余,因此,图像数字图像文件就成为了信息隐载体的最佳选择。基于BMP图像的LSB算法是最具代表性的信息隐藏算法。文献[3]对LSB算法进行了仿真和分析,验证了LSB算法的特性,引入伪装密钥增强了算法的鲁棒性和安全性。为了提高在非授权情况下提取信息的难度与信息隐藏的效率,文中实现了改进的LSB算法:一是将控制信息也当作信息嵌入到BMP文件的图像数据区,而不是放到位图文件的保留字节;二是在信息隐藏前对私密信息进行了信息分割、RSA加密预处理;三是实现了改进的LSB算法。
BMP文件是Windows操作系统中标准的图像文件格式,它将内存或显示器的图像数据直接按位存存储到磁盘文件中,扩展名为BMP,称为BMP位图。BMP图像文件包括4部分:位图文件头、位图信息头、颜色表和位图数据[4]。
24位BMP图像文件的结构特点:
1)文件头由54个字节的数据段组成,包含图像文件头和图像信息头两部分,文件头表明了该图像文件的类型、大小、图像及打印格式等信息。
2)图像数据部分从第55个字节开始,以图像的左下角为起点,每个像素点用连续的3个字节表示,分别代表蓝、绿、红三基色在该像素中的亮度。
此外,还需要注的是Windows系统规定每个扫描行所占的字节数必须位4的整数倍,不足4的倍数的则要对其进行扩充。比如有一个W×H大小的位图,其中W为位图的宽度、H为位图的高,每像素占N个比特,则扫描行所占的真实字节数为:
DataSizePerLine=(W×N/8+3)/4×4
在不压缩情况下位图数据的大小为:
biSizeImage=DataSizePerLine ×H1.2 BMP 文件中LSB应用
LSB(Least Significant Bit,最低比特位嵌入技术)是将私密信息嵌入BMP图像文件的像素值的最低的1~3 bit,当嵌入的比特数不大于3时对载体图像的品质影响最小,图像质量不会明显下降。在信息还原时只需知道嵌入比特数和具体比特位置便可将信息还原出来。对于BMP位图文件,在不改变图像的质量的情况下,根据亮度公式I=0.299R+0.587G+0.114B,以及人眼视网膜细胞对绿色最敏感,对蓝色最不敏感的理论。对于每个BMP位图像素,如果改变一个字节的最低有效位,其误差率≤1/255。根据亮度公式,分别改变R、G、B各分量的最低2位、1位、3位,人眼仍不能明显感觉到图像的变化。因此,对于一幅24位位图,其每像素可隐藏6 bit的信息。
信息分割的主要目的是为了增加信息隐藏技术的不可逆性,将私密信息随机分割,记录下分割顺序后,将分割后的文件名通过MD5加密算法进行加密,私密信息分割后用信息接收方的公钥进行RSA加密,信息只有接收方才能解密,因此大大增加了系统的安全性。信息分割流程如图1所示。
图1 文件分割流程Fig.1 Document segmentation procedure
2.2.1 RAS 加密算法流程
1)选两个保密的大素数 p和 q[5]。
2)计算 n=pq,m=(p-1)(q-1),其中 m 是 n的欧拉函数值。
3)选一整数 e,满足1<e<m,且 gcd(m,e)=1。
4)计算 d,满足 de≡1modm。
5)以{e,n}为公钥,{d,n}为私钥。
6)将明文P,加密为密文C,计算方法为:c≡P^emodn。
7)将密文C解密为明文P,计算方法为:P≡C^dmodn。
2.2.2 私密信息RSA加密算法描述
通常LSB算法是采用直接转换载体图像的最低位方法来隐藏私密信息。比如利用LSB算法置最低k位实现在一个M×N大小的载体图像中隐藏私密信息,则私密信息的提取公式为:
其中,m为提取的私密信息值,x'为按照LSB算法置换后的该像素点的值。根据模的性质,假设A mod B=C,且 A≥B,则(A-B)mod B=C。基于这一性质,文献[1]对传统的LSB算法进行了改进。
设x表示置换前该点的像素值,d为置换前后像素值的变化量,则:
d的范围可分为如下三个区间:
对于第一种条件下,当x'<256-2k时,令x'=x'+2k,其余情况 x'不变。
对于第二种条件,x'保持不变。
对于第三种条件,当x'≥2k时,令 x'=x'-2k,其余情况x'不变。
流程图如图2所示。
图2 LSB算法流程Fig.2 Procedure of LSB algorithm
比如当x=247时,其二进制代码为11110111,待隐藏的私密信息的二进制代码为001,采用LSB算法置换低三位,那么 x'=241,二进制代码为11110001。此时d=6,k=3,属于第一种条件,将x'的值重新置为249,二进制代码为11111001,由此可见,采用改进的LSB算法相对于原像素的值仅改变了2个单位,而提取私密信息的结果并不会改变。
如图3所示,系统设计流程如下:
加密过程如下:
1)首先读取隐藏信息获取隐藏信息的大小,将隐藏信息进行分割处理,分割数量根据秘密文件的大小以及载体文件的最大隐藏值决定,不论隐藏信息大小如何,其分割数量不得小于5个,另外分割后的文件需要按进行序号标注,序号采用MD5进行加密。
2)将分割后的秘密文件分别运用RSA加密算法进行加密。
3)根据分割文件数量载入掩护BMP图像文件,将每个隐藏信息块分别隐藏到相应的掩护BMP图像文件中。
4)将所有已加密隐藏后的图像文件生成一个统一的压缩包,压缩包内是所有的隐藏图像文件。
解密过程正好与之相反。
图3 系统流程Fig.3 System procedure
程序运行界面如图4所示,首先点击“浏览”按钮选择待加密的私密文件,然后再选择所使用密钥,最后点击加密按钮,程序即按照文中所阐述的原理对私密文件进行加密和隐藏。
图4 程序运行界面Fig.4 Program interface
相对于传统的LSB算法,实现了一种改进的算法,使得文中的信息隐藏具有更好的隐藏效果,具体体现在以下几点:
改进LSB算法复杂度低,仅对信息进行加或减运算,提高了信息隐藏效率;
对于24位BMP图像文件,每个像素用3个字节来表示,其中的6个比特可以用作隐藏信息,而文中改进后LSB算法可以利用其中的8个比特隐藏信息,扩充了可隐藏信息的容量,提高了隐藏效率,而载体图像质量并没有明显改变。
通过信息分割、RSA加密预处理,大大提高了在非授权情况下提取信息的难度。
[1]冯雪峰.改进 LSB算法及其在 BMP图像中的应用[J].信息技术,2006(01):30 -32.FENG Xue-feng.An Improved LSB Algorithm for BMP Files[J].Information Technology,2006(01):30 - 32.
[2]王衍波,张凯泽,端木庆峰,等.广义信息隐藏技术分类研究[J].军事通信技术,2007,28(04):45-50.WANG Yan-bo,ZHANG Kai-ze,DUANMU Qingfen,WANG Jing-yu.Classification of Generalized Information Hiding Technology[J].Journal of Military Communications Technology,2007,28(04):45 -50.
[3]赵曼,张卫党.基于图像的信息隐藏技术的实现[J].通信技术,2008,41(05):128-129.ZHAO Man,ZHANG Wei- dang.Realization Based on Images Information Hiding Technology[J].Communications Technology.2008,41(05):128 -129.
[4]张维谷.图像文件格式(上)windows编程[M].北京:清华大学出版社,1996:40-82.ZANG Wei-gu.Image File Format Windows Programming[M].BeiJing,Tsinghua University Press,1996:40 -82.
[5]斯托林斯.密码编码学与网络安全[M].北京:电子工业出版社,2011:266-300.William Stallings.Cryptography and Network Security[M].BeiJing,Pulishing House of Electronics Industry,2011:266-300.