一种基于加密和自然语言生成的信息隐藏方法与流程

文档序号:15700349发布日期:2018-10-19 19:44阅读:268来源:国知局

本发明涉及密码学技术和信息隐藏技术领域,更具体地,涉及一种基于加密和自然语言生成的信息隐藏方法。



背景技术:

在当今高度发达的信息社会中,信息安全一直是不容忽视的一个问题,并且越来越受到人们的重视。在许多领域,人们都对秘密通信(即在通信过程中第三方无法知晓通信的内容甚至存在)有需求。现在人们用来保证秘密通信安全的技术手段主要有两种:密码学技术和信息隐藏技术。密码学技术主要使用密钥加密通信内容,从而使得没有密钥的第三方无法知晓通信的内容。但是经过密钥加密后的通信内容往往是杂乱无章的乱码数据,很容易引起第三方的注意,暴露了秘密通信的事实,从而容易引起攻击者针对性的监视和攻击。信息隐藏技术则是将通信内容隐藏到某种正常的公开载体中,使得藏有通信内容的载体与正常载体相似,然后将藏有通信内容的载体当作伪装的通信内容来传输,使得第三方不易发现秘密通信的存在。信息隐藏技术克服了加密后的通信内容容易引起第三方的注意这一弊端。但是,现在信息隐藏技术的理论安全性远不如密码学的那样强壮。

AES是由美国国家标准与技术研究院(NIST)发布的高级加密标准,属于对称加密算法中的一种。在对称加密算法中,通信双方共享同一个密钥,使用这个密钥加密信息,并且这个密钥不能被第三方获取。对称加密算法的安全性依赖于密钥的保密。对称加密算法的优点是运行速度快,适合对大量数据加密,因此选择对称加密算法来加密秘密通信的内容是比较合适的。

RSA算法是一种非对称加密算法。非对称加密算法需要两个密钥:公钥和私钥。公钥与私钥是一对。公钥可以对外公开,但是私钥只能被密钥所有者一个人知道。如果使用公钥对数据进行加密,那么只有用对应的私钥才能解密;如果使用私钥对数据进行加密,那么只有用对应的公钥才能解密。在数学理论上,在一对公私钥中,由公钥推出私钥是不可能的,或者说是极其困难的。

MD5算法是一种散列算法。MD5算法的输入是任意长度的信息,输出是长度固定为128比特的散列值。MD5散列算法具有一个性质:很难找到两个不同的输入信息,使得它们的MD5散列值相同。也就是说,如果两段信息不同,那么它们通过MD5算法计算出的散列值在很大概率上是不同的。隐藏有加密后的通信内容的载密载体在通信过程中会受到噪声的影响,甚至可能会被篡改,导致通信接收方还原出的通信内容不正确。

信息隐藏载体的主要类型有:图像、音频、视频、文本等。虽然文本载体的冗余空间和嵌入率都相对其它载体类型较低,但是人们之间的通信更多使用的是文字,而不是图像、视频等载体,在互联网高度发达的今天,海量的文本信息在网络中传输,使得秘密通信之外的第三方更难从中分辨出载密文本;并且现在信息隐藏领域的研究主要以图像载体为主,使用文本载体隐藏信息受到的关注相对较少,因此载密文本在传输的过程中更不容易引起第三方的注意,隐蔽性相对较高。

基于文本载体的信息隐藏技术主要可以分为3种类型:基于格式的文本信息隐藏、基于语义的文本信息隐藏和基于统计特征的文本信息隐藏。基于格式的文本信息隐藏通过对格式化文本的格式进行微调来隐藏信息。这种方法虽然算法比较简单,但其弊端在于秘密信息的嵌入率低,易被检测,并且鲁棒性较低。基于语义的文本信息隐藏指的是:表达同一件事或者同一个含义,可以有不同的表述方式,对不同的表述方式进行编码,就可以在保证载体文本语义不变的情况下,通过不同表述方式之间的替换来嵌入秘密信息。这种方法虽然鲁棒性较高,但其弊端在于嵌入率依旧较低,正常文本中可嵌入秘密信息的地方往往不多,并且有时不同表述方式之间不适当的替换还会引起载密文本语义上的异常和不连贯,导致载密文本容易被秘密通信之外的第三方检测出来。基于统计特征的文本信息隐藏是根据秘密信息来生成与正常文本统计特征相似的载密文本。这种方法的优势在于秘密信息的嵌入率比前两种方法大大提高,并且它可以较好地躲过通信之外的第三方对载密文本在统计维度的检测,但是它的弊端在于生成的载密文本往往不符合自然语言的语法,也几乎没有语义,容易引起通信之外的第三方的注意。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种较安全且效率较高基于加密和自然语言生成的信息隐藏方法。

为解决上述问题,本发明提供的技术方案为:一种基于加密和自然语言生成的信息隐藏方法,其特征在于,包括以下步骤:

S1. 将秘密信息S编码为二进制流S';

S2. 使用AES加密算法,生成一个随机密钥K;然后使用密钥K加密S1步骤中得到的二进制流S',得到加密后的二进制流E(S');

S3. 使用RSA算法,为秘密信息接收者B生成一对公私钥;B的公钥为PbB,B的私钥为PrB;

S4. 使用RSA算法和S3步骤中得到的秘密信息接收者B的公钥PbB,加密S2步骤中得到的密钥K,得到加密后的密钥E(K);

S5. 将S2步骤中得到的E(S')和S4步骤中得到的E(K)相连,并在E(S')和E(K)之间加入一串足够长的特定二进制序列Sepa1,得到二进制流ES'K;然后使用MD5函数计算出ES'K的MD5值M(ES'K);

S6. 将S5步骤中得到的ES'K和M(ES'K)相连,并在ES'K和M(ES'K)之间加入一串足够长的特定二进制序列Sepa2,得到二进制流I';在I'前面加入表示I'长度信息的二进制序列L,并在L和I'之间加入一串足够长的特定二进制序列Sepa3,得到二进制流I;

S7. 根据一段正常的自然语言文本构造一个无歧义的上下文无关文法(CFG);本发明在基于统计特征的文本信息隐藏方法的基础上,引入了上下文无关文法(CFG),使得生成的载密文本符合自然语言语法,并且在语义可理解程度方面有了较大提升,提高了载密文本在传输过程中的隐蔽性;

S8. 根据S7步骤中得到的CFG的每个非终结符号的每个产生式的概率,使用Huffman压缩编码算法为CFG的每个非终结符号生成一棵Huffman二叉树,每个非终结符号的每个产生式就是这个非终结符号的Huffman树的一个叶子节点;如果在这棵二叉树的所有左侧分支路径上标注0,在其所有右侧分支路径上标注1,那么每个产生式对应着一个二进制编码,即从这棵二叉树的根走到每个产生式叶节点的路径所对应的二进制序列;

S9. 开始扫描S6步骤中得到的二进制流I,并从S8步骤中的CFG的开始符号出发,根据扫描到的二进制流,不断展开当前的非终结符号,直到扫描完二进制流I;如果所有非终结符号已经全部展开为终结符号但二进制流I仍未扫描完毕,那么以当前的扫描位置为开始,重复步骤S9;如果还有非终结符号未被展开但二进制流I已经扫描完毕,那么可以为余下的非终结符号随机选择产生式展开,直到所有非终结符号全部展开为终结符号;最终生成的终结符号串就是隐藏有秘密信息的自然语言文本,即载密文本,载密文本在统计特征和语法语义方面均与S7步骤中所述的正常自然语言文本相似。

在本发明中,在所述步骤S6中加入了表示所述二进制流I'长度信息的二进制序列L,原因是:在所述步骤S9中,如果所述二进制流I已经扫描完毕但还有非终结符号未被展开,在为余下的非终结符号随机选择产生式展开的过程中,就相当于在所述二进制流I的后面添加了额外的一些二进制序列;提前在二进制流I中加入表示二进制流I'长度信息的二进制序列L,就可以将含有秘密信息的I'与额外的二进制序列区别开来。

在本发明中,本发明在根据秘密信息生成载密文本的过程中,使用了Huffman编码算法。Huffman算法是一种编码长度可变的算法。它的编码过程是将特定字符集中的字符编码成长度不同的二进制编码,使得在字符集中出现频率越高的字符拥有越短的编码长度;解码过程是根据字符集中每个字符的二进制编码,将经过Huffman编码后的二进制流解码为字符集。Huffman算法可以使得由秘密信息生成的载密文本在统计特征上与正常文本保持相似。本发明使用Huffman算法对正常文本中的字符进行编码,然后对经过二进制化处理的秘密信息使用Huffman解码算法:根据正常文本中每个字符的Huffman二进制编码,将秘密信息比特流解码为由正常文本中的字符构成的载密文本。假设经过二进制化处理的秘密信息比特流是完全随机分布的,那么在秘密信息比特流中,长度越短的特定二进制序列出现的概率越大,也就是说在由秘密信息比特流经过Huffman解码而生成的载密文本中,拥有越短二进制编码的字符,出现的概率越大;由此生成的载密文本的这一统计特征与正常文本的保持一致。本发明对秘密信息采用加密措施的另一个重要目的就是增强秘密信息比特流分布的随机性,提高生成的载密文本与正常文本的统计相似度。

在本发明中,根据秘密信息生成载密文本的过程中,引入了CFG。CFG是一种形式文法。形式文法是一种描述语言的工具。CFG包含3个部分:终结符号、非终结符号和产生式。终结符号往往是语言中的词、短语或句子。产生式是一组规则,这些规则指定了每个非终结符号可以推导出哪些由终结符号和非终结符号组成的符号串。非终结符号中有一个特定的开始符号。CFG可以从开始符号出发,不断应用产生式规则推导并展开,最终生成一个语言文本。如果不引入CFG,本发明根据秘密信息生成的载密文本只是正常文本中字符的堆砌与组合,不符合自然语言语法,也几乎没有语义,容易引起通信之外的第三方的注意。因此,本发明引入了描述正常文本的CFG,使用Huffman算法对CFG中的产生式编码;这样,根据秘密信息生成载密文本的过程,也就是选择产生式的过程;在这个过程中,非终结符号不断被推导并展开,最终会生成由终结符号(即正常文本中的词、短语或句子)组成的载密文本;由此生成的载密文本不仅在统计特征上与正常文本相似,而且符合正常文本的语法,并且在语义可理解程度方面有了较大提升,在传输过程中的隐蔽性也提高了。

进一步地,所述的一串足够长的特定二进制序列Sepa1、Sepa2和Sepa3为一种起分隔作用的二进制序列;Sepa1、Sepa2和Sepa3应当在所述秘密信息传输之前由秘密信息发送者和所述秘密信息接收者确定。Sepa1、Sepa2和Sepa3足够长,使得在所述二进制流E(S')、E(K)、M(ES'K)和L中出现另一个与这种特定二进制序列相同的二进制序列是一个极小概率事件;Sepa1、Sepa2和Sepa3应当在所述秘密信息传输之前由秘密信息发送者和所述秘密信息接收者确定;Sepa1、Sepa2和Sepa3的分布应当尽量随机化,使得在所述步骤S9中扫描所述二进制流I中的Sepa1、Sepa2和Sepa3这3个部分时,生成的载密文本在统计特征上与所述正常文本更加相似。

进一步地,所述的S7步骤中CFG的终结符号为S7步骤中所述正常的自然语言文本中的词、短语或句子,CFG的每个非终结符号的每个产生式都有一个确定的概率,并且每个非终结符号的所有产生式的概率和为1。

进一步地,所述步骤S9中“根据扫描到的二进制流,不断展开当前的非终结符号”具体为:在展开每一个非终结符号时,从当前非终结符号对应的Huffman树的根开始,逐位扫描当前的二进制流,来进行左右分支路径的选择,逐层向下,最后会确定一个唯一的产生式,将当前的非终结符号按照这个产生式展开。

与现有技术相比,有益效果是:

1. 本发明使用AES算法加密秘密信息,为秘密通信加多一层强有力的保护;同时,对秘密信息进行加密,使得其变为分布趋于随机化的二进制流,有助于提高根据秘密信息生成的载密文本在统计特征上与正常文本的相似度;

2. 本发明使用RSA算法加密AES密钥,有效且高效地保证了AES密钥在通信双方之间的安全共享;

3. 本发明引入了MD5散列算法,可以校验秘密通信接收方接收到的秘密信息的完整性;

4. 本发明使用Huffman编解码算法来根据秘密信息生成载密文本;相对于其它类型的基于文本载体的信息隐藏方法,这一方法提高了秘密信息的嵌入率,并且这一方法所生成的载密文本与正常文本具有统计相似性,提高了载密文本的隐蔽性;

5. 本发明引入了CFG,使得生成的载密文本符合正常文本的语法,并且在语义可理解程度方面有了较大提升,大大增加了载密文本与正常文本的相似度,从而进一步提高了载密文本的隐蔽性;

6. 本发明使用加密算法为秘密信息加多了一层强有力的保护,提供了秘密信息的完整性校验信息,并且提高了载密文本在统计特征和语法语义方面与正常文本的相似度,提高了载密文本的隐蔽性和秘密信息的嵌入率。

附图说明

图1是本发明中的总体步骤流程图。

图2是本发明中使用的正常文本的上下文无关文法示意图。

图3是本发明中使用的上下文无关文法非终结符号的Huffman树的示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略,对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。附图中描述位置关系仅用于示例性说明,不能理解为对本专利的限制。

实施例1

本发明的实施例1介绍了使用几种密码学技术对秘密信息进行加密并加入校验信息,最后得到二进制形式的待隐藏信息的具体过程。具体步骤包括:

S1: 将秘密信息S按照特定编码方式编码为二进制流S';例如,英文文本形式的S可以通过ASCII编码方法被编码为二进制形式,中文文本形式的S可以通过汉字编码方法被编码为二进制形式等等;

S2:选择一个长度为128比特的AES初始密钥K,然后使用AES的密钥扩展算法扩展K,生成加密所用的扩展密钥K';使用扩展密钥K'对步骤S1中的二进制流S'进行多轮AES加密,得到加密后的二进制流E(S');

S3:使用RSA的密钥生成算法,为秘密信息接收者B生成一对公私钥;B的公钥为PbB,B的私钥为PrB;

S4:使用RSA的加密算法,用步骤S3中得到的秘密信息接收者B的公钥PbB,加密步骤S2中的初始密钥K,得到加密后的密钥E(K);

S5:将步骤S2中得到的E(S')和步骤S4中得到的E(K)相连,并在E(S')和E(K)之间加入长度为30比特的随机生成的一串特定二进制序列Sepa1,得到二进制流ES'K;然后使用MD5散列算法计算出ES'K的MD5值M(ES'K);

S6:将步骤S5中得到的ES'K和M(ES'K)相连,并在ES'K和M(ES'K)之间加入长度为30比特的随机生成的一串特定二进制序列Sepa2,得到二进制流I';在I'前面加入表示I'长度的一个二进制数L,并在L和I'之间加入长度为30比特的随机生成的一串特定二进制序列Sepa3,得到二进制流I,即二进制形式的待隐藏信息。

实施例2

本发明的实施例2介绍了根据一段二进制秘密信息和正常文本的上下文无关文法(CFG)来生成载密文本的具体过程。假设待隐藏的二进制秘密信息为0101101,某段正常文本的CFG如图2所示,其中,每个产生式后括号内的数为该产生式在正常文本中出现的概率。具体步骤包括:

S1:根据CFG的每个非终结符号的每个产生式的概率,使用Huffman压缩编码算法为CFG的每个非终结符号生成一棵Huffman二叉树,每个非终结符号的每个产生式就是这个非终结符号的Huffman树的一个叶子节点;如果在这棵二叉树的所有左侧分支路径上标注0,在其所有右侧分支路径上标注1,那么每个产生式对应着一个二进制编码,即从这棵二叉树的根走到每个产生式叶节点的路径所对应的二进制序列;CFG的5个非终结符号S、A、B、C和D的Huffman树如图3所示;

S2:从CFG的开始符号S出发,同时扫描待隐藏二进制秘密信息0101101,得到第1位是0,则从开始符号S的Huffman树的根开始,选择左侧分支,即确定使用AB来展开S,生成文本“AB”;

S3:继续扫描秘密信息,并继续展开当前非终结符号A;从A的Huffman树的根开始,根据扫描到的二进制信息10,最终可以确定使用Ron来展开A,生成文本“Ron B”;

S4:继续扫描秘密信息,并继续展开当前非终结符号B;从B的Huffman树的根开始,根据扫描到的二进制信息11,最终可以确定使用peacefully D来展开B,生成文本“Ron peacefully D”;

S5:继续扫描秘密信息,并继续展开当前非终结符号D;从D的Huffman树的根开始,根据扫描到的二进制信息0,最终可以确定使用waved to the companion.来展开D,生成文本“Ron peacefully waved to the companion.”;

S6:此时CFG的所有非终结符号已经全部展开为终结符号但秘密信息仍未扫描完毕;继续扫描秘密信息,同时再从CFG的开始符号S出发展开非终结符号;扫描到秘密信息的最后一位是1,确定使用AC来展开S,生成文本“Ron peacefully waved to the companion. AC”;

S7:此时还有CFG的非终结符号未被展开但秘密信息已经扫描完毕;为余下的非终结符号随机选择产生式展开,直到所有非终结符号全部展开为终结符号;最终生成的载密文本为“Ron peacefully waved to the companion. Hermione smiled.”。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1