经典的JPEG隐密算法

在对图像使用隐密术的时候,需要考虑载体的格式特征。在JPEG的编码过程中,图像块的DCT变换和量化都是一个减少精度的有损过程,而熵编码是无损的。如果隐密算法选择在量化之前嵌入隐密信息,那么量化之后很可能导致信息的丢失,在信息提取过程中得不到原本的秘密信息。所以,现在的大多数JPEG隐密术都是将秘密信息负载到图像压缩量化过程之后的DCT系数的最低比特位上,提取时采用同嵌入过程相反的算法即可。
这里写图片描述

JPEG图像的秘密信息嵌入主要流程如图2.5所示,具体的操作为:
1. 对载体图像数据进行熵解码,获得量化后的DCT系数。
2. 按照隐密术的规则和原理,将对应的秘密信息嵌入到DCT系数之上。
3. 对获得的新的DCT系数再次进行熵编码,保存之后得到的就是载有秘密信息的隐密图像。
上述隐密流程步骤中的第二个步骤是隐密术的关键,不同的算法有不同的特点,也决定了秘密信息容量的大小和安全性,是广大隐密术研究者的关注热点。对于接收方,只需要采用相反的算法,即可从隐密图像中提取得到秘密信息,具体流程如图2.6。
这里写图片描述

2.2.1 Jsteg隐密算法

对于JPEG领域的隐密算法,最早是由D. Upham提出的Jsteg算法。该算法的主要原理是使用JPEG图像量化后的DCT系数的最低比特位来承载秘密信息,为了使算法有更强的安全性,外加规定要求不可以修改原始数值为1或者0的系数。

其算法步骤如下:
1.选择载体图像,并且将载体图像划分为连续的8×8的子块。
2.对每个子块使用离散余弦变换之后,用相应的质量因数的量化表量化,得到对应的8×8量化DCT子块。
3.将需要隐藏的信息编码为二进制数据流,对DCT子块系数进行Z字形扫描,并且使用秘密信息的二进制流替换非0和非1的DCT系数的最低比特位。
4.进行熵编码等,产生JPEG隐密图像。

在嵌入过程中,第一个需要确定的就是当前位置的系数不能为0或者1,不满足嵌入条件的则跳过,满足的话进行下一步操作;第二个关键的就是该位置的DCT系数的最低比特位是否与秘密信息比特位数值相同,相同的话就结束本次操作,不相同就使用秘密信息比特位替换。
Jsteg算法中对秘密信息的位置选择分为随机间隔嵌入和顺序嵌入。顺序嵌入的方法会使隐密图像的特征分为两个部分,隐密部分和未隐密部分的特征会有明显差异,很容易被像卡方攻击等统计分析方法检测,而且容量较低。但是该方法操作简单,方便。第二种随机间隔算法,该嵌入策略随机的选择两个嵌入位置之间的间距,使得秘密信息被随机的嵌入到整幅图像的DCT系数中,这样就可以避免图像的统计特征产生差异,跟顺序嵌入的方法相比有较高的安全性。

2.2.2 Outguess隐密算法

Provos提出的Outguess算法,是为了革除Jsteg算法能够被卡方检测的弊端而发展出的新算法[7]。 Outguess算法的创新点在于,在进行秘密信息嵌入过程之后,它还有一步纠错操作。在嵌入过程中,也是采用量化之后的DCT系数,该过程同Jsteg算法一样不修改AC系数为0或者1的位置,对于嵌入信息的位置的选择是随机的。在纠正的过程中,为了保持隐密图像与原始图像的DCT特征不变,其余未被修改过的DCT系数会被修改以消除在嵌入过程中造成的统计特征的变化。这样的操作使得DCT系数直方图保持原始的特征不变,从而可以抵抗卡方检测。但是该算法会对图像的块边界的连续性造成影响,而且秘密信息越多,这个影响越加的明显。

为了克服这个缺点,产生了Outguss0.2版本的隐密算法。新版算法在嵌入的过程中加入了用户密钥设置,在整幅图像中根据密钥的不同按照一定的原则挑选DCT系数进行修改,使得嵌入的信息随机化、难以被检测到。其抵抗检测的能力相对于有序的嵌入策略大幅度提高。嵌入操作的过程是基于PRNG产生的伪随机序列,对没有预先设定该项参数的程序或者毫不知情的分析者来说,难以检测到其中的秘密信息。只有拥有相同PRNG算法和密钥的接收者,才能够获得其中的信息。

2.2.3 F系列隐密算法

F3算法在Jsteg算法的基础上进行了小小的修改。Jsteg算法的原则就是对原始AC系数为0或1的位置不进行修改,而在F3算法中不修改系数的条件是一样的,但修改的方式变为将该系数的绝对值减少1,不是使用秘密信息比特进行替换。可想而知,当+1或-1位置需要修改时会变为0,从而无法进行信息提取,所以F3规定该情况下的嵌入不被计算在有效操作之内,需要顺延到下一位系数位置。其隐密规则如图所示:
这里写图片描述
显而易见F3的隐密算法会增加DCT系数中0的个数,而且由于绝对值减1的操作,会导致DCT直方图向中央靠拢。不过F3算法作为F系列算法的始祖,为接下来的新算法打下了铺垫。

F4算法在F3的基础上进行了略微的改动。在原有的基础上区分正值和负值的DCT系数, DCT系数是正值的情况下,系数的最低比特位与信息比特相同则不改变,不同的话则绝对值减1;当DCT系数是负值的话,规则变为相反,最低比特位相同则绝对值减1,不同则不变。在如此规则的情况下,无论嵌入的秘密信息比特是0还是1,都会产生无效的操作,都需要将嵌入操作顺延到下一位,一定程度上保持了DCT直方图的特征。其嵌入规则如下图:
这里写图片描述

F5算法在F4算法的基础上进行了进一步的强化,其应用了当时先进的矩阵编码和混洗技术,使得安全性得到了进一步的提升。与F4算法相比,F5的修改方法变回原来的绝对值减1,当AC系数为0时不进行嵌入。

F5使用了混洗技术,为的是将秘密信息随机的分布在整个图像之中,避免局部嵌入造成的显著影响。在嵌入秘密信息之前,先打乱原始图像的DCT顺序后重新排列,完成嵌入过程之后再将顺序恢复。F5算法的另一个突破点就是采用了Crandall提出的矩阵编码技术[35],在相同信息量的情况下可以减少修改的DCT系数的位数,提高了系统的安全性。

矩阵编码的原理是使用s个最低比特位代表z位比特的信息(s>z)。举例要嵌入的信息为x1,x2,而现在有3个最低比特位a1,a2,a3来嵌入秘密信息,使用矩阵编码的情况下只需要改变其中1个比特位。在嵌入过程中或遇到以下四种情况:

这里写图片描述

在上述的四种情况中,没有任何情况的修改超过了一个比特位。实际应用中,先将图像的DCT系数进行分组,然后使用矩阵编码技术在修改极少系数的情况下嵌入大量信息。F5隐密算法的大致步骤如下:

1.根据图像品质计算量化表,用于再次进行存储时压缩。
2.使用 用户设定的密钥初始化伪随机数字发生器PRNG。
3.用产生的随机数对DCT系数进行混洗,重新排列。
4.根据实际的容量和信息确定矩阵编码的参数。
5.使用矩阵编码算法嵌入秘密信息。
6.继续完成JPEG图像的压缩过程得到隐密图像。

F5算法性能较为优秀,使得对秘密信息的检测变得更加困难,尤其是在嵌入率较低时。虽然新技术使F5算法的安全性有所提升,但是由于它采用的还是绝对值减1的方法,所以直方图还是会向中央靠拢,造成收缩现象,给检测者提供了方向。

2.2.4 MB隐密算法

MB算法是由Shalee提出的基于统计模型的算法,旨在根据图像的统计信息规划嵌入策略,使图像隐密前后统计特征不变。因为其本身就是基于统计模型的,所以可以抵抗一般的统计攻击。MB算法也是将秘密消息嵌入到图像DCT系数的最低比特位,它先将秘密信息进行编码后再嵌入到量化后不为0的AC系数上,其嵌入机制见图2.9。
这里写图片描述

对于原始图像,MB算法使用有两个参数p和s的广义柯西分布的来拟合图像的AC系数模型:
这里写图片描述
这里写图片描述

1.给定载体图像和秘密消息,为图像的DCT系数计算低精度直方图,记为xα。
2.利用广义柯西分布来匹配这个直方图的特征分布。
3.为每个系数在它对应的低精度直方柱内的高精度相对值唯一指定一个符号,记作xβ。使用柯西分布函数来计算系数对应的每个符号的可能概率值。
4.使用伪随机数生成器来确定修改的系数的顺序。
5.秘密信息与确定的符号的概率结合起来,按照修改顺序输入到一个非自适应的算数解码器中,使得每个系数在柱中的位移,记得到的符号为xβ’。
6.使用xα和xβ’计算新的系数值。

总的来说,MB隐密算法很好的保存了原始图像的某些统计特征。因此,隐密图像与原始图像的统计特征是比较吻合的,在某些情况下它比F5算法更加安全可靠。但是,经过学者们的研究,发现了检测MB算法的切入点。MB算法在嵌入过程中使用柯西分布进行拟合,而实际的DCT系数的统计特性并不是严格满足这个关系的。

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值