1.一种基于网络拓扑结构图的隐写方法,其特征在于,包括:
(1)准备步骤:建立载体库,即收集大量的互不相同的网络拓扑结构图,对其进行加密存储,使其仅对发送方隐写算法可见;通信双方预先约定网络拓扑结构图中涉及的各图元的隐写特征集,即对各图元Ei,根据其可隐藏特性,分别建立载体特征集φi={bi,1,bi,2,…,bi,t},其中,t是该图元所能隐藏的总的比特位数;约定标识载体隐写顺序信息的位数为l1,且该信息隐藏于各载体的第x个图元;约定嵌入信息的最初l2位标识隐秘信息的总长度L;
约定用于生成载体选择顺序和生成图元嵌入顺序的伪随机数生成器;约定所采用的加密算法,隐写密钥key,生成加密密钥和图元嵌入顺序伪随机序列种子的哈希算法H;
(2)嵌入隐秘信息步骤:发送方利用约定的哈希算法H生成密钥k1=H(key),并用以对隐秘信息M进行加密得到M*,再将加密的隐秘信息M*的长度L与密钥k1的前l2位g(k1,l2)作按位异或运算得到 进而得到待嵌入信息M’=L*+M*;随机选择若干个拓扑结构图,作为载体拓扑结构图序列F={f1,f2,…,fr},使得待嵌入信息M’能够被全部嵌入;
对于序列F中的每个载体拓扑结构图fi(i=1,2,…,r),将其序号i与密钥k1的前l1位g(k1,l1)作按位异或运算得到载体嵌入顺序标识序列 按顺序将待嵌入信息M’隐藏到F中的各个载体拓扑结构图:对于每个载体拓扑结构图fi,利用约定的哈希算法H生成图元嵌入顺序伪随机序列的种子 并通过约定的伪随机数生成器生成图元的嵌入顺序序列Oi={oi,1,oi,2,…,oi,n},并按此顺序将所有待嵌入信息隐藏到各图元中,其中,对于约定的第x个图元,需首先嵌入该载体拓扑结构图fi的载体嵌入顺序标识序列I*;在所有信息嵌入完成后,将所有载密网络拓扑结构图发送给接收方;其中, 表示按位异或运算,r表示载体拓扑结构图的个数,n表示载体fi中图元的个数;
(3)提取隐秘信息步骤:接收方收到所有载密网络拓扑结构图后,首先利用约定的哈希算法H生成密钥k1=H(key);从约定的各载密拓扑结构图的第x个图元中提取出前l1位的载体嵌入顺序标识序列I*,并取载体密钥k1的前l1位g(k1,l1),与I*作按位异或运算得到嵌入顺序 将各载密拓扑结构图按其嵌入顺序进行排列得到载密拓扑结构图序列F*={f*1,f*2,…,f*r};按顺序从各载密拓扑结构图中提取嵌入的信息M’:对于每个载密拓扑结构图f*i,利用约定的哈希算法H生成图元嵌入顺序伪随机序列的种子并通过约定的伪随机数生成器生成图元的嵌入顺序序列Oi={oi,1,oi,2,…,oi,n},并按此顺序提取所有图元中隐藏的信息,其中对于第一个载密拓扑结构图中提取的前l2位信息L*,取密钥k1的前l2位g(k1,l2),与之作按位异或运算后得到加密隐秘信息M*的长度 当已提取的加密隐秘信息M*的总长度等于L时,结束提取,并将提取的加密隐秘信息M*以密钥k1解密得到所需传递的隐秘信息M;其中,r表示载密拓扑结构图的个数,接收方收到的载密拓扑结构图个数应与发送方发送的载体拓扑结构个数一致,故以r同时表示载体拓扑结构图和载密拓扑结构图个数;
所述的嵌入隐秘信息步骤包括如下过程:
(2.1)嵌入准备:发送方利用约定的哈希算法H生成密钥k1=H(key),并用以对隐秘信息M进行加密得到M*,再将加密的隐秘信息M*的长度L与密钥k1的前l2位g(k1,l2)作按位异或运算得到 进而得到待嵌入信息设定嵌入信息索引e初始值为0,即e=0;执行过程(2.2);
(2.2)确定载体嵌入顺序标识序列:在隐秘信息嵌入之前,随机选择若干个拓扑结构图,作为载体拓扑结构图序列F={f1,f2,…,fr},使得待嵌入信息M’能够被全部嵌入;对于序列F中的每个载体拓扑结构图fi(i=1,2,…,r),将其序号i与密钥k1的前l1位g(k1,l1)作按位异或运算得到该载体的嵌入顺序标识序列 执行过程(2.3);
(2.3)确定载体拓扑结构图中图元的嵌入顺序:对于各载体拓扑结构图fi,利用约定的哈希算法H生成图元嵌入顺序伪随机序列的种子 并通过约定的伪随机数生成器生成图元的嵌入顺序序列Oi={oi,1,oi,2,…,oi,n},其中oi,j(j=1,2,…,n)表示载体fi中第j个用于嵌入的图元的编号;执行过程(2.4);
(2.4)嵌入隐秘信息:按照过程(2.3)得到的序列Oi将所有待嵌入信息隐藏到各载体拓扑结构图中;令k=oi,j,对于第i个载体拓扑结构图fi的第oi,j个图元,将待嵌入信息隐藏到其载体特征集φk={bk,1,bk,2,…,bk,t}的过程为:当oi,j=x时,先将载体拓扑结构图fi的嵌入顺序标识序列I*嵌入到该图元的前l1个载体比特中,再从该图元特征集φk的第l1+1个载体比特开始嵌入隐秘信息:计算待嵌入的隐秘信息长度λ=l2+L-e;当λ>t-l1时,该图元中嵌入信息的过程可形式化表述为其中,⊙表示替换操作,⊙(α,β)表示用α替换β;嵌入完成后,更新嵌入信息索引e=e+t-l1;重复步骤(2.4);当λ
当λ=t-l1时,该图元中嵌入信息的过程可形式化表述为
嵌入完成后,更新嵌入信息索引e=l2+L并结束嵌入过程,执行过程(2.5);
当oi,j≠x时,从该图元特征集φk的第1个载体比特开始嵌入隐秘信息;计算待嵌入的隐秘信息长度λ=l2+L-e;当λ>t时,该图元中嵌入信息的过程可形式化表述为嵌入完成后,更新嵌入信息索引e=e+t;重复步骤(2.4);当λ
(2.5)发送载密拓扑结构图:将嵌入完成后的载密拓扑结构图全部发送给接收方;
所述的提取隐秘信息步骤包括如下过程:
(3.1)提取准备:接收方收到所有载密拓扑结构图后,利用约定的哈希算法H生成密钥k1=H(key);设定提取信息索引e初始值为0,即e=0;执行过程(3.2);
(3.2)确定载密拓扑结构图的嵌入顺序:对于各载密拓扑结构图,从约定的第x个图元中提取载体嵌入顺序标识序列,即从第x个图元对应的载体特征集φ*x={b*x,1,b*x,2,…,b*x,t}中提取出前l1位的嵌入顺序标识序列: 并取载体密钥k1的前l1位g(k1,*l1),与I作按位异或运算得到嵌入顺序 将各载密拓扑结构图按其嵌入
顺序i进行排列得到载密拓扑结构图序列F*={f*1,f*2,…,f*r};执行过程(3.3);
(3.3)确定载密拓扑结构图中图元的嵌入顺序:对于每个载密拓扑结构图f*i,利用约定的哈希算法H生成图元嵌入顺序伪随机序列的种子 并通过约定的伪随机数生成器生成图元的嵌入顺序序列Oi={oi,1,oi,2,…,oi,n},其中oi,j(j=1,2,…,n)表示载体f*i中第j个用于嵌入的图元的编号;执行过程(3.4);
(3.4)提取载密拓扑结构图中的隐秘信息:按照过程(3.3)得到的序列Oi提取载密拓扑结构图f*i各图元中隐藏的信息;对于载密拓扑结构图f*i的第oi,j个图元,如oi,j=x,因为其前l1个比特已用于隐藏表示载体嵌入顺序的标识序列,所以从该图元的载体特征集φ*k={b*k,1,b*k,2,…,b*k,t}的第l1+1个载体比特开始提取信息;否则,从其载体特征集φ*k的第1个载体比特开始提取信息;其中k=oi,j;具体过程为:对于第一个拓扑结构图载体中第一个用于隐藏信息的图元,即i=1且j=1时,须首先从其特征集φ*k中提取约定的前l2位长度信息L*:将提取到的L*与密钥k1的前l2位g(k1,l2)作按位异或运算得到所嵌入信息M*的总长度继而顺序提取该图元中嵌入的隐秘信息:计算待提取的隐秘信息长度λ=L-e;如oi,j=x,从该图元特征集φ*k的第l1+l2+1个载体比特开始提取嵌入的隐秘信息:当λ>t-l1-l2时,该图元中提取隐秘信息的过程可形式化表述为提取完成后,更新提取信息索引e=e+t-l1-l2;重复步骤(3.4);当λ
对于其他图元,即i≠1或j≠1时,直接提取所嵌入的隐秘信息;计算待提取的隐秘信息长度λ=L-e;当oi,j=x时,从该图元特征集φ*k的第l1+1个载体比特开始提取嵌入的隐秘信息:当λ>t-l1时,该图元中提取隐秘信息的过程可形式化表述为提取完成后,更新提取信息索引e=e+t-l1;重复步骤(3.4);当λ
*
(3.5)解密所提取的隐秘信息:对于过程(3.4)所提取得到的加密隐秘信息M ,以密钥k1解密,得到所传递隐秘信息的明文形式M。