信息隐藏浅学
1. 伪随机序列生成算法
真正的随机数符合正态分布且其生成不能重现。但如果一个随机数能够被重现的几率很小,由此可以认为其为伪随机数。常见的伪随机序列生成算法主要有:
1.1 线性同余发生器
随机数序列产生公式为:
参数取值需要满足三个标准:函数在重复前应该产生0-m之间的所有数;产生的序列应该显得随机;生成函数可以用计算机方便地实现。
满足条件的参数选择如下:
m一般取素数,且要求很大,对于32位机一般取值为2^{31}-1;
a的可取值不多,当a=7^5 = 16807时满足以上标准。
该算法的缺点是,在参数确定后,伪随机序列只与X_0有关,容易被破解,有一种改进的办法就是每隔N个数就以时钟值对m取模作为新的种子来产生新的序列;还有一种方法就是直接将随机数加上时钟值再对m取模。
使用matlab仿真模拟此算法:
产生20个随机数的结果:
结果表明,本伪随机数生成器生成的序列符合均匀性与随机统计特性。
1.2 BBS发生器
产生过程如下:
首先,选择两个大素数p和q,且要求p\equiv q\equiv 3(mod ,4),令n=p*q,接着选择一个随机数s,要求s与n互素,然后按照以下算法产生位B_i序列:
X_0 =s^2;mod ;n
for ; i=0;to,\infty
X_i=(X_{i -1})^2,mod ,n
B_i=X_i,mod;2
BBS发生器是产生安全伪随机数的普遍算法,是特意构造算法中密码强度有最强公开证明的一个,被称为密码安全伪随机数发生器。
BBS的安全性是基于对n的因子分解困难性上的(大整数难分解问题)。
matlab实现BBS伪随机序列生成器核心代码:
测试结果:
结果表明,BBS伪随机序列生成算法产生的随机序列(0-1序列)具有随机统计特性与均匀分布性。
1.3 RC4流密码
RC4是Ron Rivest在1987年设计的流密码,密钥长度可变,使用面向字节流的操作。
RC4算法步骤如下:
S向量原状态:
S=[0,1,2,……,255]
用二进制字节方式表示为:
S=[00000000,00000001,……,11111111]
创建临时向量T(256位),如果密钥K的长度为256位,则直接将K赋值给T,否则一直重复复制K,直到填满256位的向量T。对于keylen长度的密钥K,产生S向量和T向量的伪代码如下:
接下来使用T向量来产生S的初始排列。此过程是从S[0]开始一直处理到S[255],同时对每个S[i],根据T[i]指定的方案将S[i]与S的另一个元素进行交换:
密码流产生。一旦S向量的初始排列完成后,密钥就不再被使用。接下来就是使用S自身来不断输出伪随机密码流:
加密:将第四步中获得的随机字节k与明文的下一字节做异或运算,产生的字节即为对应的密文字节。
解密:由于加密只是使用密码流对明文做了异或运算,因此解密过程只需要使用相同步骤产生密码流并对密文进行同样的异或运算即可得到加密前的明文。
matlab代码:
测试结果:
结果表明:RC4流密码符合伪随机序列的随机统计特性与均匀分布性。
2. 混沌映射
混沌系统 是指在一个确定性系统中,存在着貌似随机的不规则运动,其行为表现为不确定性、不可重复、不可预测,这就是混沌现象。混沌是非线性动力系统的固有特性,是非线性系统普遍存在的现象。
2.1 Logistic映射
Logistic混沌序列的遍历统计特性近似于零均值白噪声,具有良好的随机性、相关性和复杂性。其表达式为:
matlab代码如下:
实验结果:
直方图:
u=3.8:
u=3.0:
u=3.99:
可以发现,当u越靠近4时,整幅图像呈现一种伪随机分布的情况,与[0,1]均匀分布很像。而当u处于其他范围时,函数会收敛到某个值。
3. LSB算法
LSB(Least Significant Bit),最低有效位,该算法的基本原理是将载体图像的LSB篡改为信息者想要发送的秘密信息的二进制位。LSB隐写算法是一种简单且高效的信息隐藏技术。LSB隐写通过修改灰度值分量的最低二进制位来实现。
3.1 LSB顺序替换算法实现
LSB顺序替换算法进行信息隐藏代码:
程序运行结果展示,这里是给8位bit的后三位进行信息隐藏填充。
隐藏结果:
载密图像的8个比特平面位结果:
载体图像与载密图像直方图:
隐藏的数据为:
载密图像与载体图像的图象质量对比(PSNR,MSE,SSIM(结构相似性))指标如下:
分析:
这里的PSNR为30.9087,属于可接受范围。
分析:通过实验结果可以发现,LSB算法的嵌入容量较小,当我对每个像素位的后三位都嵌入秘密信息时,载密图像与载体图像直方图对比明显,不符合信息隐藏的不可检测性。因此,在实际运用此算法进行信息隐藏时,应注意嵌入容量。
3.2 LSB 随机替换算法
LSB随机替换算法进行信息隐藏代码:
原图像的灰度值:
随机替换后的图像灰度值:
随机替换算法与顺序替换的实验结果相差不大,此处不在展示其结果
4. 隐写分析
隐写分析(Steg Analysis)是指在已知或未知嵌入算法的情况下,从观察到的数据检测判断其中是否存在秘密信息,分析数据量的大小和数据嵌入的位置,并最终破解嵌入内容的过程。
