发明名称 机密信息的游动编码隐藏方法
摘要 本发明涉及一种机密信息的游动编码隐藏方法。本方法包括发送方的秘密信息嵌入过程和接收方的秘密信息提取过程,图1是本发明的总流程框图。发送方将秘密信息和载体数据都作为比特流处理,即每个秘密比特位可由一系列的连续载体位表示;接收方收到含密图像后,根据发送方与接收方拥有共同的密钥,提取秘密数据。本发明可用于以灰度、彩色等数字图像为载体的信息隐藏,是一种高效而安全的信息隐藏方法。
申请公布号 CN102315931B 申请公布日期 2015.02.25
申请号 CN201110171393.9 申请日期 2011.06.24
申请人 上海大学 发明人 施柳;栗风永;张新鹏;钱振兴;王朔中
分类号 H04L9/00(2006.01)I 主分类号 H04L9/00(2006.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 何文欣
主权项 一种机密信息的游动编码隐藏方法,包括发送方的秘密信息嵌入过程和接收方的秘密信息提取过程,其特征在于,具体操作步骤如下:1)发送方秘密信息嵌入过程:定义系统的传输率为<i>k</i>,<i>k</i>=载体最低位比特数/秘密信息的比特数,并认为它是一个正整数,而且总是大于1;假设现有<i>L</i>位待嵌入的秘密信息表示为:<b>X</b>= [x<sub>1</sub>,x<sub>2</sub>,…,x<i><sub>L</sub></i>],向量<b>X</b>为二进制序列, 即x<i><sub>i </sub></i>∈{0,1},<i>i</i>=1,2,…,<i>L</i>;将可供嵌入秘密数据的载体像素的最低比特位表示成: <img file="783491dest_path_image001.GIF" wi="151" he="79" />,这里,<i>b<sub>i,j</sub></i>的值为0或者1,表示像素的最低比特位,下标<i>i</i>、<i>j</i>表示像素所在位置,且<i>i</i>=1,2,…,<i>L </i>,<i>j</i>=1,2,…,<i>k</i>;构造一个二进制生成矩阵<b>G</b>,矩阵大小为(<i>t</i>+1)×<i>k</i>:<img file="965074dest_path_image002.GIF" wi="230" he="81" />,其中,<img file="154747dest_path_image003.GIF" wi="80" he="28" />,要求生成矩阵<b>G</b>第一行元素为全1,并且所有列向量互不相同;计算出载体空间每个象素点的更改代价值Δ, <img file="867619dest_path_image004.GIF" wi="89" he="50" />(1),这里<i>p<sub>i,j</sub></i>为载体图像中某点的像素值,则与它相邻的四个点的像素值可表示为:<i> p<sub>i,j‑</sub></i><sub>1</sub>,<i> p<sub>i,j+</sub></i><sub>1</sub>,<i> p<sub>i‑</sub></i><sub>1<i>,j</i></sub>,<i> p<sub>i+</sub></i><sub>1<i>,j</i></sub>,计算出这相邻四点的平均值<i>p</i><i>’</i>,对位于图像边缘的像素点,求平均值时则相应地减少点的计算个数;再由公式(1)得到像素点<i>p<sub>i,j</sub></i>的更改代价值,对所有的载体元素都进行相同的计算,就生成了一个代价矩阵<b>C</b>,如果(1)式的分母为零,则令此时的Δ=10,下面矩阵元素<i>c<sub>i,j</sub></i>表示更改载体<i>b<sub>i,j</sub></i>的代价值,<img file="433730dest_path_image005.GIF" wi="151" he="78" />;利用游动编码的思想,使得插入和提取的每个秘密位由一系列的连续载体位表示,每个可用载体位又涉及到几个连续的秘密位,由原始载体数据<i>b<sub>i,j</sub></i>和生成矩阵<b>G</b>计算出关联值<i>y<sub>s</sub></i>,对每个载体<i>b<sub>i,j</sub></i>计算<i>y<sub>s</sub></i>,得到关联向量<b>Y</b>: <img file="797715dest_path_image006.GIF" wi="342" he="48" />(2),这里如果<i>s‑i+</i>1<i>≤</i><i>0</i>,则令b<sub>s‑i+1,j</sub>=0;引入向量<b>Z</b>来表示嵌入某秘密信息时对应的载体数据是否需要翻转修改,即0变成1或者1变成0,使之满足下式:<img file="158289dest_path_image007.GIF" wi="228" he="51" />(3),即<img file="545408dest_path_image008.GIF" wi="74" he="20" />,得到向量<img file="728259dest_path_image009.GIF" wi="124" he="27" />;运用树形扫描法搜索最佳的编码路径,扫描向量<b>Z</b>并假设<i>z<sub>s</sub></i>为其中的第一个非零元素,那么,此时翻转{<i>b<sub>s,</sub></i><sub>1</sub><i>,b<sub>s,</sub></i><sub>2</sub><i>…</i><i>b<sub>s,k</sub></i>}中任意一个数都可以使得<i>z<sub>s</sub></i>=0,同时记下相应的代价值即{<i>c<sub>s,</sub></i><sub>1</sub><i>,c<sub>s,</sub></i><sub>2</sub><i>…</i><i>c<sub>s,k</sub></i>};接下来继续扫描到<i>z<sub>s+</sub></i><sub>1</sub>,由上一步骤可知,已经为<i>z<sub>s+</sub></i><sub>1</sub>预留数值,若<i>z<sub>s+</sub></i><sub>1</sub>与预留的数值相等,则不必做修改,继续扫描到下一个数,在这一步的代价即为零;若两个数不相同,则需要修改,修改的方式同样有<i>k</i>种,并记下相应的代价值;倘若计算的深度为d,即扫描到<i>z<sub>s+d‑</sub></i><sub>1</sub>,最多产生<i>k<sup>d‑</sup></i><sup>1</sup>种情况,实际上小于这个数,每种情况都对应一个<i>b<sub>i,j</sub></i>的组合,和一个相应的<i>c<sub>i,j</sub></i>组合,对每组<i>c<sub>i,j</sub></i>求和,取代价和最小的那种情况,由此决定最初的<i>z<sub>s</sub></i>选择哪一种情况,并舍弃其他的情况; 继续到下个数<i>z<sub>s+d</sub></i>,同样地,由<i>z<sub>s+</sub></i><sub>1</sub>仍然有不同的路径抵达<i>z<sub>s+d</sub></i>,比较每组<i>c<sub>i,j</sub></i>的和,选择代价和最小时的<i>z<sub>s+</sub></i><sub>1</sub>,并舍弃其余的情况;以此类推,直至扫描到即确定<b>Z</b>向量中的最后一个数,求此时剩下的每组<i>c<sub>i,j</sub></i>的和,代价和最小时对应的<i>b<sub>i,j</sub></i>的组合就是我们所要嵌入秘密信息的安全位置组合;在此过程中,记录下的所有<i>b<sub>i,j</sub></i>就是载体最低比特位嵌入秘密信息<b>X</b>时需要翻转的位置,再由此得到含密图像;2)接收方秘密信息提取过程:接收方收到含密图像后,将含密图像的最低比特位提取成数据流,并改写成矩阵形式<b>B</b><b>’</b>,然后根据双方约定的公共密钥得到生成矩阵<b>G</b>,由下列公式(4)计算出的结果即所隐藏的秘密信息<b>X</b>,<img file="954490dest_path_image002.GIF" wi="527" he="75" />(4)。
地址 200444 上海市宝山区上大路99号