自然语言信息隐藏方法
技术领域
本发明涉及以自然语言作为载体的信息隐藏技术领域,尤其涉及一种可以通过多种自然语言处理技术相结合使用来提取和嵌入秘密信息、以达到提高文本中可以嵌入秘密信息容量的方法。
背景技术
当前,信息隐藏技术已经受到各方关注,其应用包括版权保护,信息认证,隐蔽通信等。所谓信息隐藏技术是指将有特殊意义的秘密信息,通过技术手段隐藏在各种载体中,包括数字图像,音频文件、视频文件以及文本文件等,一方面要求这些被隐藏的信息不易被感知,从而隐藏了通信过程,另一方面通过特定的技术手段可以将这些隐藏信息从藏有信息的载体中提取复原,同时隐藏的秘密信息又不容易被有意或无意的操作破坏。
目前信息隐藏技术已经广泛应用于数字产品的版权保护、内容认证与防伪、隐蔽通信等众多领域,但是以音频,视频,图像作为载体的信息隐藏技术已经比较成熟。但以文本作为载体的信息隐藏技术却因为诸多原因没有能够真正的被广泛应用。其中自然语言信息隐藏是指利用自然语言处理技术改变文本的句法信息或者语义信息等,以此来嵌入秘密信息到文本中,载体文本可以是无格式的。例如:Bolshakov利用词语搭配验证的方法改进的同义词替换法。自然语言信息隐藏又可以细分为基于词法的自然语言信息隐藏,基于句法的自然语言信息隐藏,基于语义的自然语言信息隐藏。该类方案鲁棒性相对于非自然语言信息隐藏技术来说具有隐蔽性和鲁棒性好的优势,但是可以嵌入的秘密信息容量上存在不足。因此,目前嵌入的秘密信息容量成为自然语言文本秘密信息隐藏技术的主要瓶颈,目前现有的自然语言信息隐藏方法均无法同时满足隐蔽性、鲁棒性和嵌入容量的要求,其主要原因主要表现在以下两个方面:
(1)文本中可以嵌入的秘密信息信息容量较小。例如:普度大学Atallah等人提出的通过句法变换嵌入秘密信息的方案,如果需要嵌入的信息为长度为一个字符,在实际嵌入和提取过程中,需要把这一个字符转换为8或16个二进制数字(具体情况取决于该字符在计算机中的编码方式,使用ASCII编码,则需要8个二进制数,如果使用Unicode编码,则需要16个)。每个比特的嵌入,至少需要两个句子(标志句和水印句),那么,嵌入一个字符至少需要16个或者32个句子。如果将该技术应用于版权保护领域,需要嵌入作者姓名作为秘密信息,按照姓名长度为30个字符计算,文本至少包含480或者960个句子。这仅仅是能够嵌入秘密信息的文本的最低要求,在实际应用中,考虑到有些句子不能通过变换来表示需要嵌入的信息,需要的句子数量将会更多。那么在英文新闻,单篇文章等较短文本中嵌入作者信息几乎是不可能的。所以目前文本中的可嵌入容量是现在自然语言文本秘密信息技术的瓶颈。
(2)对于不同的应用场景,现有自然语言信息隐藏方法,无法实现普遍适用。
例如,使用同义词替换算法在文学著作中嵌入秘密信息,则由于词语的语用存在少许差异,所以对于原文的表达力会造成影响,容易被察觉,从而使秘密信息的隐蔽性得不到保证。另外,对于攻击普遍存在的应用场景,例如网络文章在网络上传递,文本在转载引用等过程中会被大量修改,如果采用简单的从左向右向文本中嵌入秘密信息,则对于文本的简单修改(尤其是删除其中某些部分),就有可能打乱秘密信息的同步信息,比如将原先的“01000100”,改变为“1000100”,从而导致提取出来的秘密信息完全失去意义。
因此,如何更好地解决自然语言文本秘密信息隐藏技术的可嵌入信息容量并且拓宽自然语言文本秘密信息隐藏的应用场景将是众多学者们关注的技术焦点。
发明内容
针对上述背景技术存在的缺陷或不足,本发明目的在于提供一种提高自然语言信息隐藏算法嵌入容量,并且能够适用于多种应用场景的文本信息隐藏方法。该方法通过多种自然语言处理技术的使用,最大程度的利用文本中内容嵌入秘密信息。用户可以根据自身需要灵活选择不同的自然语言处理技术和隐藏编码技术,组成多种嵌入/提取解决方案,满足不同的鲁棒性、隐蔽性以及嵌入容量的要求,能够适用于多种应用场景。
为了实现上述技术任务,本发明采用如下技术方案予以解决:
一种自然语言信息隐藏方法,该方法通过计算机自然语言信息隐藏平台对秘密信息进行隐藏,所述的计算机自然语言信息隐藏平台至少包括:主体模块和接口定义模块;
主体模块包括输入子模块、数据处理子模块以及输出子模块,其中,输入子模块用于负责与用户进行交互,接受用户给定的载体文本、密钥、秘密信息以及含密文件,并判断用户需要嵌入秘密信息还是提取秘密信息;数据处理子模块,通过接口模块调用具体的载体操纵部件和编码部件,进行嵌入秘密信息或者提取秘密信息;输出子模块用于将嵌入或提取秘密信息的结果展示给用户;所述的输入子模块、数据处理子模块以及输出子模块依次相连;
接口定义模块由载体操纵接口、隐藏编码接口和载体单元接口组成,其中:
载体操纵接口,用于调用载体操纵部件,分析用户给定文本,得到用户给定文本中所包含的载体单元,生成载体单元的可行变换,将秘密信息嵌入至其对应载体单元,并最终从与其对应载体单元中提取出秘密信息;
隐藏编码接口,用于调用隐藏编码部件,确定载体单元的每个可行变换所表示的比特,对载体单元进行分组,对秘密信息进行编码和分组,再恢复编码后的秘密信息的原始顺序,并对编码后的秘密信息进行解码;
载体单元接口,用于明确载体单元应当具有的必要属性,即确定原始文本、原始文本的可行变换、每个可行变换所表示的比特、该载体单元与分组并编码后的秘密信息的对应关系以及该载体单元最大可嵌入的比特数量;
所述的载体操纵接口、载体单元接口以及隐藏编码接口分别均与主体模块相连,载体操纵接口与载体单元相连,自然语言信息隐藏过程包括以下步骤:
步骤一:在自然语言信息隐藏平台通过载体操纵接口、隐藏编码接口加载当前可用的载体操纵部件和可用的隐藏编码部件;
步骤二:用户根据需要选择一个或多个载体操作部件以及一个隐藏编码部件,然后用户对提取秘密信息和嵌入秘密信息操作进行选择。当用户选择进行提取秘密信息操作时,用户输入密钥和带有秘密信息的文本;当用户选择进行嵌入秘密信息操作时,用户输入密钥、原始文本、秘密信息;
步骤三:在自然语言信息隐藏平台主体模块中的数据处理子模块中创建一个空的载体单元集合,从带有秘密信息的文本或原始文本中从左到右选择一个文本片段,将文本按照句子划分为片段;
步骤四:对用户输入的带有秘密信息的文本或原始文本进行分析: 从用户选择的所有载体操纵部件中选择其中一个载体操纵部件;然后,调用该载体操纵部件对所输入的文本进行分析,得到其中包含的载体单元,并生成所有可行变换,将得到的载体单元加入载体单元集合;判断该载体操纵部件是否与用户选择的其他载体操纵部件相冲突,如果该载体操纵与用户选择的其他载体操纵部件相互冲突,则不再继续调用其他载体操纵部件对该文本片段进行分析; 如果该载体操纵与用户选择的其他载体操纵部件没有相互冲突,则继续选择用户选择的其他载体操纵部件对文本进行分析,重复上述步骤,直至整个文本所有文本片段完成文本分析为止;
步骤五:嵌入秘密信息或者提取秘密信息;
如果用户选择嵌入秘密信息,进行如下步骤:
(1)调用用户选择的隐藏编码部件,确定每个载体单元的每个可行变换所表示的比特;
(2)调用用户选择的隐藏编码部件,确定每个载体单元与分组并编码后的秘密信息的对应嵌入关系;
(3)调用用户选择的隐藏编码部件,根据嵌入前载体单元所表示的比特,对需要嵌入的秘密信息进行分组和编码;
(4)判断现有的载体单元数量是否不小于分组并编码后的秘密信息的长度,即判断现有载体单元数量是否满足嵌入该秘密信息要求,如果现有的载体单元数量不能满足嵌入秘密信息的要求,则结束嵌入秘密信息过程,否则继续进行;
(5)调用用户选择的隐藏编码部件,将分组和编码后的秘密信息比特进行重新排序,使得排序后的秘密信息比特与载体单元集合中的载体单元顺序的一一对应;
(6)回到原始文本开始部分,按从左到右顺序选择一个文本片段;
(7)从用户选择的载体操纵部件中选择一个未分析该文本片段的载体操纵部件;
(8)调用选定的载体操纵部件对文本片段进行文本分析,判断该文本片段中是否含有与所调用的载体部件相对应类型的载体单元,如果含有,则对于已找到对应类型的载体单元,调用与其载体单元类型相对应的载体操纵部件,按照每个载体单元与编码后秘密信息比特的对应关系改写载体将秘密信息嵌入至文本中;如果该文本片段不含有与载体操纵部件相对应类型的载体单元,直接执行步骤(10);
(9)判断所调用的载体操纵部件是否会在后续使用中会与用户选择的其他载体操纵部件发生冲突,如果所调用的载体操纵部件与其他载体操纵部件不存在冲突,则执行步骤(10);如果所调用的载体操纵部件与其他载体操纵部件存在冲突,则执行步骤(11);
(10)判断是否还有其他载体操纵部件对该文本片段进行处理,如果有,则返回至步骤(7);如果没有则继续进行;
(11)判断文本是否读入完毕,如果文本读入完毕,则退出嵌入秘密信息过程,如果文本没有读入完毕,则返回至原始文本片段选择,对没有读入的文本其文本片段按照步骤(7)—(10)进行处理。
如果用户选择提取秘密信息,则进行如下步骤:
(1)调用用户选择的隐藏编码部件,确定每个载体单元的每个可行变换所表示的比特;
(2)对于载体单元集合中的每个载体单元,调用对应类型的载体操纵部件,判断其表示的是比特0还是比特1,将提取出来的比特构成比特串。该比特串为与嵌入过程中经过重新排序的分组并编码后的秘密信息;
(3)调用用户选择的隐藏编码部件来确定每个载体单元与编码并分组后的秘密信息比特的对应关系;
(4)根据所确定的每个载体单元与编码并分组后的秘密信息比特的对应关系,调用用户选择的编码部件对分组并编码后的秘密信息比特的原始顺序进行恢复;
(5)调用用户选择的隐藏编码部件,对恢复分组并编码后的秘密信息比特的原始顺序进行解码,得到秘密信息;
步骤六:如果用户选择的是嵌入秘密信息,则输出带有秘密信息的文本;如果用户选择的是提取秘密信息,则输出秘密信息。
本发明还具有以下技术特点:
所述的载体操纵部件,使用自然语言处理技术对文本进行处理,具体包括以下步骤:
(1)分析文本,对于给定的文本片段,使用自然语言处理技术,分析给定的文本片段中是否含有载体单元,如果该文本片段含有载体单元,则记录该载体单元;
(2)对文本进行可行变换,对分析文本得到的载体单元,使用自然语言处理技术,对该载体单元进行保留语义的变换,变换的结果为若干个与原载体单元具有相同语义的文本;
(3)秘密信息嵌入,对于给定的载体单元,将它替换为可以表示相应比特的可行变换;
(4)秘密信息提取,用以确定含密文本中的载体单元中每个载体单元所表示的比特。
所述的编码部件,用于对秘密信息进行处理,计算秘密信息比特和载体单元之间的对应关系进行计算,具体包括以下步骤:
(1)利用由具体的隐藏编码部件给定的算法确定载体单元的每个可行变换表示的比特;
(2)对载体单元进行分组,以确定每个载体单元与分组并编码后的秘密信息比特的对应关系;
(3)对秘密信息进行分组和编码;
(4)恢复提取出的秘密信息比特的顺序;
(5)对秘密信息进行解码,即对已经恢复顺序的秘密信息的比特进行解码。
调用用户选择的载体操纵部件和编码部件,将秘密信息嵌入至原始文本包括以下步骤:
(a)分析文本,记录将经过不同自然语言处理技术处理后得到的所有载体单元;
(b)将所有载体单元经过不同语言处理生成所有可行变换;
(c)确定每个可行变换所表示的比特;
(d)通过执行用户选择的编码部件对载体单元进行分组;
(e)利用用户选择的编码部件对秘密信息进行分组并编码;
(f)根据利用用户选择的编码部件对载体单元和秘密信息比特之间的对应关系,将生成的可行变换与其对应的载体单元进行替换,并且确保替换后的可行变换的比特与秘密信息的比特相对应。
调用用户选择的载体操纵部件和编码部件,将秘密信息从带有秘密信息的文本中提取的过程,包括以下步骤:
(a)分析文本,记录将经过不同载体操纵部件处理后得到的所有载体单元;
(b)将所有载体单元经过不同载体操纵部件处理生成所有可行变换;
(c)确定每个可行变换所表示的比特;
(d)提取秘密信息比特;
(e)通过执行用户选择的编码部件对载体单元进行分组,确定载体单元与分组并编码后的秘密信息的对应关系;
(f)根据载体单元与分组并编码后的秘密信息的对应关系,调用用户选择的编码部件恢复编码后的秘密信息的顺序;
(g)通过调用用户选择的编码部件对秘密信息进行解密。
本发明相对于现有的其他自然语言信息算法,具有如下技术优势:
1)本发明通过抽象现有自然语言信息隐藏方法,提出了一种自然语言信息隐藏方法整体框架,实现了多种载体操纵技术的综合使用,相对于其他使用单一载体操纵技术的自然语言信息隐藏方法,充分利用了文本,有效的提高了文本中可以嵌入的秘密信息的容量;
2)本发明可以由用户选择不同载体操纵部件和编码部件的组合,可以对于不同的应用场景,灵活地搭配选择解决方案,可以适用于不用应用场景,具有良好的通用性;
3)本发明抽象出隐藏编码部件,相对于其他没有使用隐藏编码技术的自然语言信息隐藏方法,可以做到良好的鲁棒性与隐蔽性;
4)本发明通过对于现有算法的抽象,分析出其中关键步骤,并以此定义了载体操纵接口和编码接口,使得其他自然语言信息隐藏方法可以根据相应接口编写相应部件,从而移植到该发明中,这令本发明具有良好的扩充性;
5)由于自然语言信息隐藏研究方向属于交叉学科,既需要自然语言处理技术的应用,有需要隐藏编码技术的应用。研究者可以根据自身的特长,利用本发明对于载体操纵接口和编码接口的定义,编写相应的载体操纵部件或者隐藏编码部件,避免了由于对于自然语言处理技术或者隐藏编码技术的限制,而导致研究者研发出来的自然语言信息隐藏方法无法兼顾鲁棒性、隐蔽性和容量的要求。这是其他自然语言信息隐藏方法无法做到的;
6)本发明作为一种自然语言信息隐藏平台的同时,又可以作为自然语言信息隐藏的研发工具,有利于研究者研发自身的算法,和对比自身研究成果和他人研究成果的优劣。更进一步,本发明可以用于自然语言信息隐藏方法的测试和评估。
附图说明
图1是本发明的自然语言信息隐藏平台结构示意图。
图2是本发明的工作主流程图。
图3是本发明文本分析的流程图。
图4是本发明嵌入秘密信息的流程图。
图5是本发明提取秘密信息的流程图。
图6是本发明实施例中未嵌入秘密信息的文本片段。
图7是本发明实施例仅适用英文绝对同义词部件和随机隐藏编码部件嵌入秘密信息的文本片段。
图8为本发明实施例仅适用英文句式变换部件和随机隐藏编码部件嵌入秘密信息的文本片段。
图9为本发明实施例使用英文绝对同义词部件和英文句式变换部件和随机隐藏编码部件嵌入秘密信息的文本片段。
以下结合附图对本发明的具体内容作进一步详细说明。
具体实施方式
首先,本发明提出了载体单元的概念,它是指自然语言处理技术可以进行保留语义变换的最小文本片段。该概念的提出源自多种自然语言信息隐藏算法,是对多种自然语言信息隐藏算法中可以在文本中嵌入信息的位置进行抽象描述。该概念的提出,消除了多种自然语言信息隐藏算法对于可以嵌入秘密信息位置定义的不同。为多种自然语言处理技术同时使用提供了可能。
另外,本发明以载体单元的抽象概念为纽带,将自然语言信息隐藏的嵌入和提取过程分为载体操纵部件和隐藏编码部件两类部件,提出现有自然语言信息隐藏方法的关键步骤,以下给出各部件的具体操作步骤:
1)载体操纵部件。负责使用自然语言处理技术对文本的操作,包括下列关键步骤:
a) 分析文本片段。对于给定的文本片段,使用自然语言处理技术,分析其中是否含有载体单元,如果该文本片段含有载体单元,则记录该载体单元;
b) 将所有载体单元经过不同自然语言语言技术处理生成所有可行变换。例如:对于句式变换技术,“我把手机摔坏了。”的可行变换为“手机被我摔坏了。”,需要特别说明的是,载体单元本身也作为其一种可行变换,加入可行变换集合。即“我把手机摔坏了。”同样作为该句自身的一种可行变换;
c) 秘密信息嵌入。对于给定的载体单元,将之替换为可以表示相应比特的可行变换。需要嵌入的相应比特和该载体单元的每个可行变换所表示的比特需要隐藏编码部件给出;
d) 秘密信息提取。该步骤确定含密文本中的载体单元中每个载体单元所表示的比特。由于嵌入时对秘密信息进行了分组和编码,初步提取出来的比特序列,并非嵌入时嵌入的秘密信息。
2)隐藏编码部件,负责对于秘密信息进行处理,和处理秘密信息和载体单元之间的对应关系等的计算,具体包括以下关键步骤:
a) 确定给定载体单元的每个可行变换表示的比特,该步骤中,利用具体隐藏编码部件编写者给定的算法,确定载体操纵部件的进行可行变换过程中得到的所有可行变换表示的比特。例如:对于同义词类型的载体单元,“快乐”的可行变换有“愉快”、“欢快”和“开心”,则这4个词根据密钥随机分配 “00”,“01”,“10”,“11”;
b) 对载体单元进行分组,考虑到某些隐藏编码算法需要使用分组隐藏编码来嵌入秘密信息,因此需要对载体单元进行分组。对载体单元的分组方式,由具体的隐藏编码部件确定。基于鲁棒性考虑,分组方式与载体单元在文本中的顺序无关,载体单元应当散乱均匀的分布在不同分组中。如果对于载体单元按照其在文本中出现的顺序分组,则嵌入后,秘密信息会集中在文本的首部,攻击者可能通过篡改或统计分析等手段破坏或破解秘密信息,所以鲁棒性较差。如果具体算法并不需要使用分组编码方式,则可以看作每个分组中仅包含一个载体单元,同时下面对于秘密信息的分组同样每个分组仅包含一个比特。该步骤同时能够确定载体单元与分组并编码后的秘密信息比特之间的对应关系;
c) 分组并编码秘密信息,该步骤与b步骤中对于载体单元的对应,对秘密信息比特进行分组和编码。首先对秘密信息进行分组,例如利用(3,7)码的F5编码,将秘密信息每3个比特作为一个分组,与7个载体单元对应。对秘密信息分组之后,使用隐藏编码部件提供的的编码算法,参考嵌入秘密信息前的载体单元所表示的比特,对秘密信息进行编码,例如为了隐蔽性使用F5编码对秘密信息进行编码,或者为了鲁棒性使用扩频技术对秘密信息进行编码;
d) 解码秘密信息。该步骤在提取秘密信息过程中,对恢复顺序的秘密信息比特串进行解码;
e) 恢复分组并编码后秘密信息的比特顺序。该步骤在提取秘密信息过程中,由于嵌入过程总对于分组并编码后的秘密信息进行了重新排序,所以该步骤恢复提取出的秘密信息的顺序,恢复之后的信息为嵌入过程中分组并编码后的秘密信息的顺序。
参见图1,本发明的自然语言信息隐藏方法,该方法通过计算机自然语言信息隐藏平台对秘密信息进行隐藏,所述的计算机自然语言信息隐藏平台至少包括:主体模块和接口定义模块;主体模块又可以细分为如下三个子模块:
1、输入子模块,该模块负责与用户进行交互,包括:确定用户需要嵌入秘密信息还是提取秘密信息;接受用户给定的载体文本;接受用户给定的密钥;接受用户给定的秘密信息;接受用户给定的含密文件。
2、数据处理子模块,该模块通过接口模块调用具体的载体操纵部件和隐藏编码部件,进行具体的嵌入或者提取工作。具体进行的操作取决与输入子模块与用户交互时,用户的选择。
3、输出子模块,该模块将嵌入或提取的结果输出给用户。包括:嵌入秘密信息过程中,输出含密文件;提取秘密信息过程中,输出提取出来的秘密信息。
其中,输入子模块、数据处理子模块以及输出子模块依次相连。
接口定义模块,定义了载体操纵部件、隐藏编码部件需要完成的功能。其又可以细分为如下三个子模块:
1、载体操纵接口,它定义了载体操纵部件所需要的关键功能,包括:分析给定文本,得到其中包含的载体单元;生成载体单元的可行变换;最终将秘密信息嵌入对应载体单元;从给定载体单元中提取出秘密信息。
2、载体单元接口,保存嵌入、提取过程中的中间结果。本发明并没有直接完成载体单元的具体实现,而是在该接口定义模块中定义了载体单元都应当具有的必备属性,包括:原始文本;原始文本的可行变换;每个可行变换所表示的比特;该载体单元与分组并编码后的秘密信息的对应关系;该载体单元最大可嵌入的比特数量。
3、隐藏编码接口。它定义了隐藏编码部件需要完成的工作,包括:确定载体单元的每个可行变换所表示的比特;对载体单元进行分组;对秘密信息进行编码和分组;恢复编码后的秘密信息的原始顺序;对编码后的秘密信息进行解码。
所述的载体操纵接口、载体单元接口以及隐藏编码接口分别均与主体模块相连,载体操纵接口与载体单元接口相连;
参见图2,本发明的自然语言信息隐藏过程包括以下步骤:
步骤一:在自然语言信息隐藏平台通过载体操纵接口、隐藏编码接口加载当前可用的载体操纵部件和可用的隐藏编码部件;
步骤二:用户根据需要选择一个或多个载体操作部件以及一个隐藏编码部件,然后用户对提取秘密信息和嵌入秘密信息操作进行选择;当用户选择进行提取秘密信息操作时,用户输入密钥和带有秘密信息的文本;当用户选择进行嵌入秘密信息操作时,用户输入密钥、原始文本、秘密信息;
步骤三:在自然语言信息隐藏平台主体模块中的数据处理子模块中创建一个空的载体单元集合,从带有秘密信息的文本或原始文本中从左到右选择一个文本片段,一般为了尽量避免载体操纵部件间的冲突对于嵌入容量的影响,此处会将文本按照句子划分为片段,以下选择文本片段也采用相同方式,参见图3。
步骤四:对用户输入的带有秘密信息的文本或原始文本进行分析: 从用户选择的所有载体操纵部件中选择其中一个载体操纵部件;然后,调用该载体操纵部件对所输入的文本进行分析,得到其中包含的载体单元,并生成所有可行变换,将得到的载体单元加入载体单元集合;判断该载体操纵部件是否与用户选择的其他载体操纵部件相冲突,如果该载体操纵与用户选择的其他载体操纵部件相互冲突,则不再继续调用其他载体操纵部件对该文本片段进行分析; 如果该载体操纵与用户选择的其他载体操纵部件没有相互冲突,则继续选择用户选择的其他载体操纵部件对文本进行分析,重复上述步骤,直至整个文本所有文本片段完成文本分析为止,参见图3。
步骤五:判断用户选择的是嵌入秘密信息还是提取秘密信息。
如果用户选择嵌入秘密信息,进行如下的步骤(参见图4):
(1)调用用户选择的隐藏编码部件,确定每个载体单元的每个可行变换所表示的比特。
(2)调用用户选择的隐藏编码部件,确定每个载体单元与分组并编码后的秘密信息的对应嵌入关系。
(3)调用用户选择的隐藏编码部件,根据嵌入前载体单元所表示的比特,对需要嵌入的秘密信息进行分组和编码。
(4)判断现有的载体单元数量是否不小于分组并编码后的秘密信息的长度,即判断现有载体单元数量是否满足嵌入该秘密信息要求,如果现有的载体单元数量不能满足嵌入秘密信息的要求,则结束嵌入秘密信息过程,否则继续进行。
(5)调用用户选择的隐藏编码部件,将分组和编码后的秘密信息比特进行重新排序,使得排序后的秘密信息比特与载体单元集合中的载体单元顺序的一一对应。
(6)回到原始文本开始部分,按从左到右顺序选择一个文本片段。
(7)从用户选择的载体操纵部件中选择一个未分析该文本片段的载体操纵部件。
(8)调用选定的载体操纵部件对文本片段进行文本分析,判断该文本片段中是否含有与所调用的载体部件相对应类型的载体单元,如果含有,则对于已找到对应类型的载体单元,调用与其载体单元类型相对应的载体操纵部件,按照每个载体单元与编码后秘密信息比特的对应关系改写载体将秘密信息嵌入至文本中;如果该文本片段不含有与载体操纵部件相对应类型的载体单元,直接执行步骤(10)。
(9)判断所调用的载体操纵部件是否会在后续使用中会与用户选择的其他载体操纵部件发生冲突,如果所调用的载体操纵部件与其他载体操纵部件不存在冲突,则执行步骤(10);如果所调用的载体操纵部件与其他载体操纵部件存在冲突,则执行步骤(11)。
(10)判断是否还有其他载体操纵部件对该文本片段进行处理,如果有,则返回至步骤(7);如果没有则继续进行。
(11)判断文本是否读入完毕,如果文本读入完毕,则退出嵌入秘密信息过程,如果文本没有读入完毕,则返回至原始文本片段选择,对没有读入的文本其文本片段按照步骤(7)—(10)进行处理。
如果用户选择提取秘密信息,则进行如下步骤(参见图5):
(1)调用用户选择的隐藏编码部件,确定每个载体单元的每个可行变换所表示的比特;
(2)对于载体单元集合中的每个载体单元,调用对应类型的载体操纵部件,判断其表示的是比特0还是比特1,将提取出来的比特构成比特串。该比特串为与嵌入过程中经过重新排序的分组并编码后的秘密信息;
(3)调用用户选择的隐藏编码部件来确定每个载体单元与编码并分组后的秘密信息比特的对应关系;
(4)根据所确定的每个载体单元与编码并分组后的秘密信息比特的对应关系,调用用户选择的编码部件对分组并编码后的秘密信息比特的原始顺序进行恢复;
(5)调用用户选择的隐藏编码部件,对恢复分组并编码后的秘密信息比特的原始顺序进行解码,得到秘密信息;
步骤六:如果用户选择的是嵌入秘密信息,则输出带有秘密信息的文本;如果用户选择的是提取秘密信息,则输出秘密信息。
通过本发明的自然语言信息平台主模块中的输出模块提取输出的秘密信息和嵌入秘密信息的带有秘密信息的文本。
另外需要说明的是,在实现上述过程中,调用用户选择的载体操纵部件和编码部件,将秘密信息嵌入至原始文本包括以下步骤:
(a)分析文本,记录将经过自然语言处理技术处理得到的所有载体单元;
(b)将所有载体单元经过不同语言处理生成所有可行变换;
(c)确定每个可行变换所表示的比特;
(d)通过执行用户选择的编码部件对载体单元进行分组;
(e)利用用户选择的编码部件对秘密信息进行分组并编码;
(f)根据利用用户选择的编码部件对载体单元和秘密信息比特之间的对应关系,将生成的可行变换与其对应的载体单元进行替换,并且确保替换后的可行变换的比特与秘密信息的比特相对应。
调用用户选择的载体操纵部件和编码部件,将秘密信息从带有秘密信息的文本中提取的过程,包括以下步骤:
(a)分析文本,记录将经过自然语言处理技术处理得到的所有载体单元;
(b)将所有载体单元经过不同语言处理生成所有可行变换;
(c)确定每个可行变换所表示的比特;
(d)提取秘密信息比特;
(e)通过执行用户选择的编码部件对载体单元进行分组,确定载体单元与分组并编码后的秘密信息的对应关系;
(f)根据载体单元与分组并编码后的秘密信息的对应关系,调用用户选择的编码部件恢复编码后的秘密信息的顺序;
(g)通过调用用户选择的编码部件对秘密信息进行解密。
以下是发明人给出的实施例,将现有的载体操纵部件应用于本发明,但是本发明并不局限于实施例。
实施例:
本实施例选择英文绝对同义词部件和英文句式变换部件与本发明的载体操纵部件接口进行对接,采用随机编码部件或者F5隐藏编码部件与发明的隐藏编码部件接口进行对接。
以下是各本实施例各接口定义模块的具体实现过程:
1、载体操纵接口实现
a)英文绝对同义词部件
绝对同义词词典
通过在WordNet中提取各个义项完全相同的单词构成绝对同义集合,所有的绝对同义集合构成绝对同义词词典。
该载体操纵(英文绝对同义词)接口的实现
分析文本
该步骤及从需要分析的文本中寻找出现在绝对同义词词典中的单词,并用这些单词创建同义词类型的载体单元。其过程如下:
假设需要分析的文本为名为cover的字符串。
第一步,将cover按照标点符号和空格划分为单词集合wordSet;
第二步,对于wordSet中每个单词,在同义词集合Dictionary中查找;如果可以找到同义词条目,则跳至第三步,否则继续处理wordSet中下一个单词;
第三步,对于第二部中确定的具有同义词的单词,创建同义词类型的载体单元,同时将该载体单元的content赋值为该单词。这就创建了该单词的载体单元。
进行可行变换
该步骤即将给定的载体单元集合的同义词记录到该载体单元中。其具体步骤为:
第一步,将该单词的同义词记录到该载体单元的materialSet中。
第二步,对该载体单元的maxBit赋值为
。例如该单词具有3个同义词,则包括原单词在内,可以有4种可行变换,该位置即可嵌入2位秘密信息,分别为“00”,“01”,“10”,“11”,就将maxBit赋值为2。
秘密信息嵌入
该步骤对于给定的秘密信息序列(经过分组并编码),将之嵌入到给定的载体单元集合中。其具体步骤为:
第一步,将作为参数的文本片段按照单词分割为集合W。
第二步,从W中取出一个单词,判断其是否包含在载体单元集合中。
第三步,如果该单词包含在载体单元集合中,则将该单词替换为表示相应比特的同义词。例如需要在该载体单元中嵌入的比特为‘1’,则在该载体单元的materialSet中查找可以代表比特1的同义词(每个同义词表示的比特记录在该载体单元的bitSet中),使用该同义词替换原单词;如果该单词不包含在载体单元集合中,则不做处理。
第四步,重复第二步和第三步,直到对于W中每个单词均做完处理。
第五步,最终返回经过同义词替换(嵌入)之后的文本片段。
秘密信息提取
该步骤从给定的载体单元中提取出每个载体单元对应的文本(载体单元的content)表示的比特,并将之连接为一个比特串。其具体步骤为:
第一步,将需要提取的文本,按照单词划分为集合W。
第二步,从W中取出一个单词,判断其是否作为英文绝对同义词类型的载体单元包含在载体单元集合中。
第三步,如果该单词包含在载体单元集合中,则依据对应载体单元的bitSet和material中的记录,判断该单词表示的比特,并记录。如果该单词不在载体单元集合中,则不做处理。
第四步,重复第二步和第三步,直到对于W中每个单词均做完处理。
第五步,将记录下来的比特连接成一个比特串,并返回该比特串。
b)英文绝对同义词载体单元实现
遵循本发明载体单元接口的实现方法,即载体单元包含了以下属性:
1)字符串类型的原单词:string content。用以表示原始文本。
2)字符串数组类型的同义词集合:string materialSet[]。用以表示该文本片段的可行变换。
3)二维的字符数组类型的比特串集合,表示每种可行变换对应表示的比特串:char bit[][]。用以表示可行变换所表示比特。
4)整数类型的,记录该载体单元对应的嵌入秘密信息的分组:int groupID。用以表示该载体单元对应的分组并编码后的秘密信息位数。
5)整数类型的,记录该载体单元最多可以嵌入多少位的秘密信息:int maxBit。
c)英文句式变换部件
英文句式变化算法
该算法参考Atallah, M. J等人发表的论文《Natural Language Watermarking: Design, Analysis, and a Proof-of-Concept》实现,通过对英文句子进行句式变换完成嵌入秘密信息。使用的英文句法分析工具为斯坦福大学研发的stanford parser。分析文本与进行可行变换过程中使用的句式变换模板是从语料集Penn Treebank中整理得到。例如,强调句变一般句的变换模板如为:PRP+VBZ+[NP]+WDT+VBD+… = [NP]+VBZ+…。其中PRP为代词,VBZ为系动词,[NP]为在句法树中名词短语部分,WDT为副词,VBD为动词,变换的方式为去掉PRP、VBZ、WDT部分。该模板仅作为示意作用,在具体应用中会使用更加精确的模板。
该载体操纵(英文句式变换)接口的实现:
分析文本
该步骤在给定文本中寻找可以进行句式变换的句子,并根据找到的可以变换的句子构造句式变换类型的载体单元,其具体过程为:
第一步,将需要分析的文本片段按照“.””?”“!”划分为句子集合W。
第二步,对于W中的每个句子,与句式变换模板进行匹配。
第三步,如果该句可以匹配上句式变换模板中的一个或者几个,创建句式变换类型的载体单元,并将该载体单元的content赋值为该句子。如果无法匹配上句式变换模板中的任何一个,则对该句不做处理。
第四步,重复第二步和第三步,直到W中每个句子都经过了以上处理。
第五步,如果至少在该步骤中创建了一个句式变换类型的载体单元,并且在该部件之后,还将使用其他的载体操纵部件处理该文本,则返回“true”,表示该部件和能会与其他部件冲突。
进行可行变换
该步骤对于给定的载体单元进行句式变换,并将句式变换结果赋值到对应载体单元的materialSet中。具体步骤为:
第一步,从给定的载体单元结合中取出一个载体单元。
第二步,判断该载体单元的content与句式变换模板中的那些模板匹配,利用找到的变换模板,对content进行句式变换。
第三步,将变换结果记录到该载体单元的materialSet中。
秘密信息嵌入
该步骤对于给定的秘密信息序列(经过分组并编码),将之嵌入到给定的载体单元集合中。其具体步骤为:
第一步,将作为参数的文本片段按照单词分割为集合W。
第二步,从W中取出一个单词,判断其是否包含在载体单元集合中。
第三步,如果该单词包含在载体单元集合中,则将该单词替换为表示相应比特的同义词。例如需要在该载体单元中嵌入的比特为‘1’,则在该载体单元的materialSet中查找可以代表比特1的同义词(每个同义词表示的比特记录在该载体单元的bitSet中),使用该同义词替换原单词;如果该单词不包含在载体单元集合中,则不做处理。
第四步,重复第二步和第三步,直到对于W中每个单词均做完处理。
第五步,最终返回经过同义词替换(嵌入)之后的文本片段。
秘密信息提取
该步骤从给定的载体单元中提取出每个载体单元对应的文本(载体单元的content)表示的比特,并将之连接为一个比特串。其具体步骤为:
第一步,将需要提取的文本,按照单词划分为集合W。
第二步,从W中取出一个单词,判断其是否作为英文绝对同义词类型的载体单元包含在载体单元集合中。
第三步,如果该单词包含在载体单元集合中,则依据对应载体单元的bitSet和material中的记录,判断该单词表示的比特,并记录。如果该单词不在载体单元集合中,则不做处理。
第四步,重复第二步和第三步,直到对于W中每个单词均做完处理。
第五步,将记录下来的比特连接成一个比特串,并返回该比特串。
d)英文句式变换载体单元实现
遵循本发明载体单元接口的实现方法,即载体单元包含了以下属性:
1)字符串类型的原单词:string content。用以表示原始文本。
2)字符串数组类型的同义词集合:string materialSet[]。用以表示该文本片段的可行变换。
3)二维的字符数组类型的比特串集合,表示每种可行变换对应表示的比特串:char bit[][]。用以表示可行变换所表示比特。
4)整数类型的,记录该载体单元对应的嵌入秘密信息的分组:int groupID。用以表示该载体单元对应的分组并编码后的秘密信息位数。
5)整数类型的,记录该载体单元最多可以嵌入多少位的秘密信息:int maxBit。
6)由于英文句式变换载体单元需要记录英文句子的句法树,本载体单元由单独定义了句法树类SyntacticTree。
public class TreeNode
{
public string label;//结点对应的文本内容
public TreeNode lchild;//左孩子结点
public TreeNode rchild;//右孩子结点
}
public class SyntacticTree
{
public TreeNode root = null;//句法树根节点
private int nodeNum = -1;//结点的数量
}
并设置了该载体单元的SyntacticTree syntacticTree属性,即记录该载体单元对应句子的句法树。
e)随机隐藏编码部件
该编码部件仅仅依靠密钥作为参数构造伪随机数,通过对于载体单元的可行变换的随机值计算而完成计算其表示的比特的过程。不属于分组编码,即对于秘密信息和载体单元的分组中,对于每个分组的大小设置为1。
该隐藏编码部件(随机隐藏编码部件)接口的实现
确定载体单元的每个可行变换表示的比特
遍历载体单元集合,进行如下操作:
第一步,将密钥的各个位数值相加,得到整数seed。
第二步,使用seed作为随机数种子,创建伪随机数产生器。
第三步,对于该载体单元的每个可行变换,产生随机数。如果该数为奇数,则该可行变换表示比特‘1’,否则该可行变换表示比特‘0’。
第四步,每个可行变换表示的比特记录到载体单元的中。
对载体单元进行分组
由于该算法不是分组算法,所以可以看作载体单元的每个分组仅包含一个元素,对于载体单元进行分组的过程,其实仅仅是确定每个载体单元需要对应嵌入秘密信息哪个比特。其执行流程可以归纳如下:
第一步,使用约定的密钥作为种子,创建伪随机数产生器。
第二步,在每个载体单元中,利用伪随机数产生器随机选择一个元素。计算该元素的哈希值。
第三步,根据上一步中每个载体单元对应的哈希值,对载体单元排序。
第四步,每个载体单元排在第几位,则该载体单元需要对应嵌入秘密信息的哪一位。
分组并编码秘密信息
该算法对于秘密信息没有进行实质编码过程,即该过程返回原始的秘密信息比特。
解码秘密信息
由于该算法没有对秘密信息进行实质编码过程,所以不需要解码,即该过程直接返回恢复了顺序之后的秘密信息比特。
恢复秘密信息的原始顺序
该步骤恢复经过载体操纵部件提取出来的比特串,在分组与编码之后的秘密信息的顺序。
第一步,创建一个空白的,长度与未恢复顺序的秘密信息长度相同的比特序列R。
第二步,遍历载体单元集合,假设第L个载体单元中,记录其对应嵌入了分组并编码后的秘密信息的第I位,则将R的第I位赋值为未恢复顺序的秘密信息的第L位。
第三步,最终得到的比特序列R即为恢复顺序后的秘密信息。
f) F5隐藏编码部件
F5编码相对于其他隐藏编码方式的优势在于,在嵌入相同的秘密信息的情况下,F5编码对于原文的修改最小。本实施例仅以F5编码中的(3,7)码为例(即对于载体单元每7个分为一组,每组嵌入3比特秘密信息,最多修改1个载体单元)。
该隐藏编码部件(随机隐藏编码部件)接口的实现
确定载体单元的每个可行变换表示的比特
遍历载体单元集合,进行如下操作:
第一步 将密钥的各个位数值相加,得到整数seed。
第二步 使用seed作为随机数种子,创建伪随机数产生器。
第三步 对于该载体单元的每个可行变换,产生随机数。如果该数为奇数,则该可行变换表示比特‘1’,否则该可行变换表示比特‘0’。
第四步 每个可行变换表示的比特记录到载体单元的中。
对载体单元进行分组
其执行流程可以归纳如下:
第一步 使用约定的密钥作为种子,创建伪随机数产生器。
第二步 在每个载体单元中,利用伪随机数产生器随机选择一个元素。计算该元素的哈希值。
第三步 根据上一步中每个载体单元对应的哈希值,对载体单元排序。
第四步 每个载体单元排在第几位,则该载体单元需要对应嵌入分组并编码后的秘密信息的哪一位。
分组并编码秘密信息
第一步 将秘密信息每三个分为一组,按照对载体单元分组过程中确定的秘密信息与分组并编码后的秘密信息的对应关系,将载体单元排序。载体单元中每7个载体单元将对应嵌入秘密信息的3位。
第二步 计算当前每一组载体单元表示的比特。这7组载体单元在未嵌入秘密信息前,表示的3个比特分别为:
第一个比特:第1、4、6、7个载体单元对应的文本表示的比特的异或值。
第二个比特:第2、4、6、7个载体单元对应的文本表示的比特的异或值。
第三个比特:第3、5、6、7个载体单元对应的文本表示的比特的异或值。
第三步 记录下这7个载体单元当前表示的比特状态State,State为长度为7的比特数组。
第四步 按照这三个比特与当前需要嵌入的3位秘密信息不同的位数,按照下述规则,将State相应的位翻转(即如果原来该位置的比特位1,则翻转之后,该位置的比特变为0;如果该位置的比特位0,则翻转后,该位置的比特变为1)。
第1位不同:翻转第1位
第2位不同:翻转第2位
第3位不同:翻转第3位
第1、2位不同:翻转第4位
第1、3位不同:翻转第5位
第2、3位不同:翻转第6位
第1、2、3位不同:翻转第7位
第四步 根据上述过程,确定了这7个载体单元最终需要嵌入的秘密信息,即State中记录的秘密信息。
第五步 重复上述步骤,直至确定每个载体单元最终需要嵌入的秘密信息比特为止。此时每个载体单元需要嵌入的秘密信息连接在一起即为分组并编码后的秘密信息。
恢复分组并编码后的秘密信息的原始顺序
该步骤恢复经过载体操纵部件提取出来的比特串,在分组与编码之后的秘密信息的顺序。
第一步,创建一个空白的,长度与未恢复顺序的秘密信息长度相同的比特序列R。
第二步,遍历载体单元集合,假设第L个载体单元中,记录其对应嵌入了分组并编码后的秘密信息的第I位,则将R的第I位赋值为未恢复顺序的秘密信息的第L位。
第三步,最终得到的比特序列R即为恢复顺序后的秘密信息。
解码
解码过程,即编码过程的第二步。即将秘密信息每7个分为一组,每7个比特表示的3位秘密信息为:
第一个比特:第1、4、6、7个载体单元对应的文本表示的比特的异或值。
第二个比特:第2、4、6、7个载体单元对应的文本表示的比特的异或值。
第三个比特:第3、5、6、7个载体单元对应的文本表示的比特的异或值。
将当前未解码的秘密信息按照上述规则计算之后得到的秘密信息连接为一个比特串,即得到解码后的秘密信息。
遵循本发明的通过调用上述以实现的英文绝对同义词部件、英文句式变换部件中的一个部件或者两个部件,并选用上述一个隐藏编码部件或F5隐藏编码部件分别对图6中的文本进行嵌入秘密信息和提取秘密信息。其中嵌入秘密信息、提取秘密信息进行如下操作:
1) 加载可用的载体操纵部件,包括英文绝对同义词部件和英文句式变换部件。
2) 加载可用的编码部件,包括随机编码部件。
3) 用户选择英文绝对同义词部件和英文句式变换部件作为载体操纵部件。
4) 用户选择随机隐藏编码部件作为隐藏编码部件。
5) 用户选择嵌入秘密信息操作。
6) 用户输入密钥,例如“abc”;用户输入需要嵌入的秘密信息,例如“msg”;用户输入原始文本。
7) 分析文本。主体模块首先按照句子将用户提供的文本划分为若干文本片段。首先该过程定义一个不包含任何载体单元的载体单元集合,之后调用英文句式变换部件的分析文本片段过程,分析第一个文本片段。判断该文本片段中是否包含英文句式变换类型的载体单元。如果包含英文句式变换类型的载体单元,则调用英文句式变换部件的进行可行变换过程,对于找到的载体单元进行可行变换。将经过可行变换之后的载体单元放入载体单元集合。例如找到载体单元“Clear vision goes with the quick foot.”,对其生成所有可行变换为:“Clear vision goes with the quick foot.”、“It is clear vision goes with the quick foot.”,如果不包含,则继续。判断英文句式变换部件是否会与其他载体操纵部件(此处为英文绝对同义词部件)冲突,如果不会发生冲突,则判断是否还有其他的载体操纵部件未分析该片段。假设此次嵌入过程没有发生冲突,并发现还有载体操纵部件未分析该片段,选择英文绝对同义词部件对于该文本片段进行同样的处理。如果会发生冲突,则不再选择其他载体操纵部件对该文本片段进行分析;判断该文本中的片段是否都已经经过分析,如果还有片段未经过分析该文本片段,则选择下一个文本片段重复上述过程直到所有的片段都被分析完毕为止。此时得到了英文绝对同义词类型的载体单元和英文句式变换类型的载体单元构成的载体单元集合。
8) 判断用户选择的是嵌入秘密信息还是提取秘密信息。
9) 用户选择的是嵌入秘密信息,所以此时执行嵌入秘密信息过程。
a) 调用随机隐藏编码部件,对于载体单元集合进行分组,并确定每个载体单元与分组并编码后的秘密信息的对应关系。由于随机隐藏编码部件没有使用分组算法,所以该步对于载体单元的分组为每组一个元素。
b)调用随机隐藏编码部件,计算每个载体单元的每个可行变换所表示的比特。例如:“Clear vision goes with the quick foot.”表示比特1,“It is clear vision goes with the quick foot.”表示比特0。
c)调用随机隐藏编码部件,根据目前载体单元集合中,载体单元表示的比特,对于秘密信息”msg”的比特进行分组和编码。例如,原始秘密信息“msg”的比特为:“011011010111001101100111”,对其进行编码后,依旧为“011011010111001101100111”。
d) 判断载体单元的数量是否小于分组并编码后的秘密信息长度,如果小于,则表示该文本不足以嵌入“msg”。则结束嵌入过程。否则按照载体单元与分组并编码后的秘密信息的对应关系,对于分组并编码后的秘密信息重新排序,使得载体单元的顺序和分组并编码后的秘密信息的顺序相同。例如对于‘msg’的比特进行重新排序后,其顺序为“0x0x11xx1xx1x001010x01111xx1xx1xx0101x”,其中‘x’表示该位对应的载体单元不需要嵌入秘密信息。
e) 按照句子将用户提供的文本划分为文本片段。在其中选择第一个文本片段。
f) 选择英文句式变换部件的嵌入过程,该过程中英文句式变换部件,判断该文本片段中是否含有英文英文句式变换类型的载体单元。
g) 如果该判断中含有英文句式变换类型的载体单元,则在其中嵌入分组并编码后的秘密信息的对应位,由于d中对于分组并编码后的秘密信息的重新排序,此时只要嵌入还没有被嵌入的分组并编码后的秘密信息的第一位即可。例如,在载体单元“Clear vision goes with the quick foot.”处,需要嵌入比特0,则将之替换为表示比特0的可行变换“It is clear vision goes with the quick foot.”。
h) 判断英文句式变换换部件是否会与其他载体操纵部件冲突。如果没有冲突,则回到e,选择下一个文本片段。否则选择一个未处理该文本片段的载体操纵部件,重复f-h,此处选择英文绝对同义词部件重复该过程。如果冲突,则不再使用其他载体操纵部件处理该文本片段。
i) 判断该文本片段是否被处理完毕,如果还存在文本片段未被处理,则回到e,选择下一个文本片段进行处理,直到该文本中所有片段被处理完毕。
10) 将嵌入秘密信息的文本输出给用户。即最终输出的嵌入秘密信息的文本片段参见图9所示。
提取秘密信息
1) 载入可用的载体操纵部件,包括英文绝对同义词部件和英文句式变换部件。
2) 载入可用的编码部件,包括随机编码部件。
3) 用户选择英文绝对同义词部件和英文句式变换部件作为载体操纵部件。
4) 用户选择随机隐藏编码部件作为隐藏编码部件。
5) 用户选择提取秘密信息操作。
6) 用户输入密钥,带有秘密信息的文本。
7) 分析文本。主体模块首先按照句子将用户提供的文本划分为若干文本片段。首先该过程定义一个不包含任何载体单元的载体单元集合,之后调用英文句式变换部件的分析文本片段过程,分析第一个文本片段。判断该文本片段中是否包含英文句式变换类型的载体单元。如果包含英文句式变换类型的载体单元,则调用英文句式变换部件的进行可行变换过程,对于找到的载体单元进行可行变换。将经过可行变换之后的载体单元放入载体单元集合。例如找到载体单元“Clear vision goes with the quick foot.”,对其生成所有可行变换为:“Clear vision goes with the quick foot.”、“It is clear vision goes with the quick foot.”,如果不包含,则继续。判断英文句式变换部件是否会与其他载体操纵部件(此处为英文绝对同义词部件)冲突,如果不会发生冲突,则判断是否还有其他的载体操纵部件未分析该片段。假设此次嵌入过程没有发生冲突,并发现还有载体操纵部件未分析该片段,选择英文绝对同义词部件对于该文本片段进行同样的处理。如果会发生冲突,则不再选择其他载体操纵部件对该文本片段进行分析;判断该文本中的片段是否都已经经过分析,如果还有片段未经过分析该文本片段,则选择下一个文本片段重复上述过程直到所有的片段都被分析完毕为止。此时得到了英文绝对同义词类型的载体单元和英文句式变换类型的载体单元构成的载体单元集合。
8) 判断用户选择的是嵌入秘密信息还是提取秘密信息。
9) 用户选择的是提取秘密信息,所以此时执行提取秘密信息过程。
a) 调用随机隐藏编码部件,计算每个载体单元的每个可行变换所表示的比特。
b) 对于载体单元集合中的每个载体单元,调用相应类型的载体操纵部件,判断其表示的是比特0还是比特1。例如对于英文绝对同义词类型的载体单元,使用英文绝对同义词部件的秘密信息提取过程判断其表示的比特,对于英文句式变换类型的载体单元,使用英文句式变换部件的秘密信息提取过程,判断其表示比特。提取出来的比特构成比特串。该比特串为嵌入过程中经过重新排序的分组并编码后的秘密信息。
c) 调用随机隐藏编码部件,对于载体单元进行分组,并确定每个载体单元与分组并编码后的秘密信息的对应关系。
d) 调用随机隐藏编码部件,根据上一步确定的对应关系,还原分组并编码的秘密信息的原始顺序。例如将提取出来的秘密信息比特“00001110100110010101011110110011101010”还原为“01101101011100110110011101001000”.
e) 调用随机隐藏编码部件,对于恢复顺序后的秘密信息进行解码,就提取出了用户提供的带有秘密信息的文本中嵌入的秘密信息。
10) 输出提取出来的秘密信息即“msg]”,其中“msg”之后的‘]’为提出来的冗余信息,可以通过手工方式剔除。
遵循本发明的整体技术步骤,如果用户仅选用英文绝对同义词部件和随机隐藏编码部件时,对图6给出的文本进行秘密信息嵌入,得到秘密信息嵌入结果如图7所示。如果用户只选用英文句式变换部件和隐藏编码部件时,对图6给出的文本进行秘密信息嵌入,得到秘密信息嵌入结果图8所示。
由此可见,本发明将现有的多种载体变换技术是实现了综合利用,相对于使用单一算法嵌入/提取秘密信息,有效的提高了文本中可以嵌入的秘密信息的容量,同时该自然语言信息隐藏平台可以选择不同算法进行组合,灵活组织嵌入/提取解决方案,能够针对具体应用场景灵活地搭配选择有效方案。由于该平台对于现有算法的抽象和统一,同样有利于代码的复用。