首页> 中国专利> 基于Unicode编码利用不可见字符隐藏信息的方法

基于Unicode编码利用不可见字符隐藏信息的方法

摘要

本发明提出了一种基于Unicode编码的利用不可见字符隐藏信息的方法,主要包括消息嵌入算法和消息提取算法。通过利用不可见字符的Unicode编码特点来隐藏秘密信息,在保证安全性的前提下提高秘密信息的嵌入容量。利用本发明,能够在采用Unicode编码的含有空格等不可见字符的文本载体上隐藏秘密信息;能够根据编码表灵活地改变秘密信息的嵌入形式来保证信息的安全;能够有效提高秘密信息的嵌入容量。

著录项

  • 公开/公告号CN104504342A

    专利类型发明专利

  • 公开/公告日2015-04-08

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201410733815.0

  • 申请日2014-12-04

  • 分类号

  • 代理机构北京君尚知识产权代理事务所(普通合伙);

  • 代理人余长江

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2023-12-17 04:57:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-03

    授权

    授权

  • 2015-05-06

    实质审查的生效 IPC(主分类):G06F21/62 申请日:20141204

    实质审查的生效

  • 2015-04-08

    公开

    公开

说明书

技术领域

本发明涉及一种基于Unicode编码的利用不可见字符隐藏信息的方法,属于信息隐藏技 术领域。

背景技术

随着计算机应用的普及和互联网的迅猛发展,人们对网络通信安全提出了更高的要求。 与信息加密技术不同,信息隐藏技术通过掩盖传输消息行为的存在性来保障通信安全性。当 前,随着文本文档的应用越来越广泛,利用文本文档隐藏秘密消息成为信息安全领域的一个 研究方向。在计算机科学领域,Unicode编码是一种通用字符集编码标准,被广泛地应用于现 代操作系统。几乎所有的文字处理软件都支持对文本数据进行Unicode编码、解析和存储。

不可见字符指文档打印时不可见的字符集合,包括空格、制表符和换行符等。通常地, 利用不可见字符来隐藏秘密消息具有不易察觉、操作简单和隐蔽性强等优势。WbStego4软件 是一款利用不可见字符进行隐藏信息的开源工具,它支持TXT、HTML、PDF等多种数据格 式。但是它不支持中文文本数据载体的信息隐藏,并且信息嵌入容量较为有限,在实际应用 中存在很大的局限性。

发明内容

本发明所要解决的技术问题是克服现有WbStego4软件技术的不足,提供一种基于 Unicode编码的利用不可见字符隐藏信息的方法,适用于基于Unicode编码的含有不可见字符 的中英文文本载体来隐藏消息,在保证安全性前提下提升隐藏信息的容量,能够较好地满足 隐蔽通信的要求。

本发明的技术解决方案是一种基于Unicode编码的利用不可见字符隐藏信息的方法,它 主要包括消息嵌入算法和提取算法两个部分:

消息嵌入算法,根据编码表对载体对象中的不可见字符进行重新编码,将秘密消息嵌入 到载体对象中,其中载体对象是基于Unicode编码的中英文文本数据,不可见字符包括半角/ 全角空格和制表符(对应的Unicode码表示分别为0x20 00、0x00 30和0x09 00)。嵌入算法 的输入数据有载体对象、秘密消息和编码表,输出数据是带秘载体。

消息提取算法,是嵌入算法的逆向算法,它根据编码表从带秘载体中恢复出秘密消息。 提取算法的输入数据有带秘载体和编码表,输出数据是秘密消息。

本发明的基于Unicode编码的利用不可见字符隐藏信息的方法,通过利用不可见字符的 编码特点在文本载体中隐藏秘密消息,本方法包括以下步骤:

(1)发送发和接收方协定秘钥,并分别根据秘钥构造编码表;

(2)发送方选择载体对象,根据步骤(1)中生成的编码表,通过信息嵌入将秘密消息 嵌入到载体对象中,得到带秘载体;

(3)发送方将步骤(2)中得到的带秘载体通过通信信道传输到接收方;

(4)接收方根据步骤(1)中生成的编码表,通过提取算法从步骤(3)中接收到的带秘 载体中将秘密消息提取出来,得到秘密消息。

本发明与现有技术相比的有益效果在于:

(1)本发明中,载体对象的选择更宽泛。适用于隐藏秘密消息的载体对象可以选择基于 Unicode编码的文本数据,以满足实际应用的需求。

(2)本发明中,通过利用秘钥生成器所生成的秘钥来保证算法的安全性。秘钥可控制编 码表的生成,在保证信息隐藏算法安全的前提下,将消息嵌入/提取操作与消息加密/解密操作 联合起来,降低了实际应用中操作的复杂性和能量消耗。

(3)本发明中,通过利用编码表以提升嵌入信息的容量。在编制码表时,利用Unicode 码中冗余的不可见字符码字设计了由256个一一映射关系组成的编码表,其中编码表的映射 关系受到秘钥的控制。编码表将每次嵌入信息率从1比特提升到每次可嵌入8比特。

附图说明

图1是本发明方法实施例的实现流程图;

图2是本发明方法中消息嵌入算法的实施流程图;

图3是本发明方法中消息提取算法的实施流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图, 对本发明做进一步说明。

如图1所示,是本发明的实现流程示意图,该信息隐藏方法可以表示为一个六元组,即 ∑=<C,S,Tk,C',Ek,Dk>,其中C为载体对象集合、S为秘密消息集合、Tk为根据秘钥k构造 的编码表、C′为载体对象隐藏秘密消息后所得到的带秘载体集合、Ek为消息嵌入算法、Dk为 消息提取算法。在信息隐藏方法Σ中,包括2个主要的算法模块:消息嵌入算法模块和消息 提取算法模块,分别由发送方和接收方调用。各模块的功能描述如下:

1、消息嵌入算法

发送方根据秘钥k构造编码表Tk,将发送方输入的秘密信息S嵌入到所选择的载体对象C 中,输出带秘载体C′。然后,发送方将该带秘载体C′通过通信信道传输到接收方。执行消息 嵌入算法Ek的过程可以表示为:

Ek:C×M×Tk→C′

2、消息提取算法

接收方根据提取秘钥k构造编码表Tk,将从发送方处得到的带秘载体C′通过提取算法提 取出秘密信息M。执行消息提取算法Dk的过程可以表示为:

Dk:C′×Tk→M

如图1所示,本发明的具体实现过程如下:

1、编码表构造

本发明通过发送方和接收方共享的秘钥k控制编码表Tk的生成,在保证编码安全性的前 提下提高隐藏信息的容量,以满足实际应用的要求。构造编码表的具体实现步骤为:

(1)密钥k必须是2048比特的二进制字符串,以十进制的方式可以表示成

k=(n0,n1,…,ni,…,n255),ni∈N∩[0,255],i=0,1,…255

此外,密钥k的每个分量ni还必须满足如下条件

i,j{0,1,...,255},ijninj

以上描述表明:密钥k可以表述为0到255整数序列的一个置换,如下式所示

k=perms(0,1,2,…,255)

其中perms()为置换函数。

(2)根据Unicode码的特征,发送方和接收方事先查找出256个不可见字符的可选码字, 作为双方共享的编码表的构造基础(每个码字必须是2个字节的Unicode编码)。如表1所示 给出了一个256个可选码字的十六进制表示示例。

(3)根据步骤(1)和步骤(2),建立从密钥到可选码字的编码表Tk。表1给出的即是 在密钥k=(0,1,2,…,255)时所构造出的编码表。

表1.编码表

m 码字 m 码字 m 码字 m 码字 m 码字 m 码字 m 码字 00 00 D8 25 01 E4 4A 02 F8 6F 04 E3 94 05 F7 B9 07 E2 DE 08 F6 01 00 D9 26 01 E5 4B 03 D8 70 04 E4 95 05 F8 BA 07 E3 DF 08 F7 02 00 DA 27 01 E6 4C 03 D9 71 04 E5 96 06 D8 BB 07 E4 E0 08 F8 03 00 DB 28 01 E7 4D 03 DA 72 04 E6 97 06 D9 BC 07 E5 E1 09 D8 04 00 DC 29 01 F0 4E 03 DB 73 04 E7 98 06 DA BD 07 E6 E2 09 D9 05 00 DD 2A 01 F1 4F 03 DC 74 04 F0 99 06 DB BE 07 E7 E3 09 DA 06 00 DE 2B 01 F2 50 03 DD 75 04 F1 9A 06 DC BF 07 F0 E4 09 DB 07 00 DF 2C 01 F3 51 03 DE 76 04 F2 9B 06 DD C0 07 F1 E5 09 DC 08 00 E0 2D 01 F4 52 03 DF 77 04 F3 9C 06 DE C1 07 F2 E6 09 DD 09 00 E1 2E 01 F5 53 03 E0 78 04 F4 9D 06 DF C2 07 F3 E7 09 DE 0A 00 E2 2F 01 F6 54 03 E1 79 04 F5 9E 06 E0 C3 07 F4 E8 09 DF 0B 00 E3 30 01 F7 55 03 E2 7A 04 F6 9F 06 E1 C4 07 F5 E9 09 E0 0C 00 E4 31 01 F8 56 03 E3 7B 04 F7 A0 06 E2 C5 07 F6 EA 09 E1 0D 00 E5 32 02 D8 57 03 E4 7C 04 F8 A1 06 E3 C6 07 F7 EB 09 E2 0E 00 E6 33 02 D9 58 03 E5 7D 05 D8 A2 06 E4 C7 07 F8 EC 09 E3 0F 00 E7 34 02 DA 59 03 E6 7E 05 D9 A3 06 E5 C8 08 D8 ED 09 E4 10 00 F0 35 02 DB 5A 03 E7 7F 05 DA A4 06 E6 C9 08 D9 EE 09 E5 11 00 F1 36 02 DC 5B 03 F0 80 05 DB A5 06 E7 CA 08 DA EF 09 E6 12 00 F2 37 02 DD 5C 03 F1 81 05 DC A6 06 F0 CB 08 DB F0 09 E7 13 00 F3 38 02 DE 5D 03 F2 82 05 DD A7 06 F1 CC 08 DC F1 09 F0 14 00 F4 39 02 DF 5E 03 F3 83 05 DE A8 06 F2 CD 08 DD F2 09 F1 15 00 F5 3A 02 E0 5F 03 F4 84 05 DF A9 06 F3 CE 08 DE F3 09 F2 16 00 F6 3B 02 E1 60 03 F5 85 05 E0 AA 06 F4 CF 08 DF F4 09 F3 17 00 F7 3C 02 E2 61 03 F6 86 05 E1 AB 06 F5 D0 08 E0 F5 09 F4 18 00 F8 3D 02 E3 62 03 F7 87 05 E2 AC 06 F6 D1 08 E1 F6 09 F5 19 01 D8 3E 02 E4 63 03 F8 88 05 E3 AD 06 F7 D2 08 E2 F7 09 F6 1A 01 D9 3F 02 E5 64 04 D8 89 05 E4 AE 06 F8 D3 08 E3 F8 09 F7 1B 01 DA 40 02 E6 65 04 D9 8A 05 E5 AF 07 D8 D4 08 E4 F9 09 F8 1C 01 DB 41 02 E7 66 04 DA 8B 05 E6 B0 07 D9 D5 08 E5 FA 0A D8 1D 01 DC 42 02 F0 67 04 DB 8C 05 E7 B1 07 DA D6 08 E6 FB 0A D9 1E 01 DD 43 02 F1 68 04 DC 8D 05 F0 B2 07 DB D7 08 E7 FC 0A DA 1F 01 DE 44 02 F2 69 04 DD 8E 05 F1 B3 07 DC D8 08 F0 FD 0A DB 20 01 DF 45 02 F3 6A 04 DE 8F 05 F2 B4 07 DD D9 08 F1 FE 0A DC 21 01 E0 46 02 F4 6B 04 DF 90 05 F3 B5 07 DE DA 08 F2 FF 0A DD 22 01 E1 47 02 F5 6C 04 E0 91 05 F4 B6 07 DF DB 08 F3     23 01 E2 48 02 F6 6D 04 E1 92 05 F5 B7 07 E0 DC 08 F4     24 01 E3 49 02 F7 6E 04 E2 93 05 F6 B8 07 E1 DD 08 F5    

在本发明中,编码表是作为消息嵌入算法模块和提取算法模块的输入,且发送方和接收 方通过秘钥k构造的编码表是相同的,所以输入到嵌入算法模块的编码表Tk与输入到提取算 法模块的编码表Tk一致。

2、消息嵌入

本发明中消息嵌入算法模块执行嵌入算法E()可以表示成

c′=E(c,m,Tk)

其中,模块输入参数有载体对象c、待嵌入的秘密消息m和嵌入秘钥k生成的编码表Tk, 模块输出是包含秘密消息的带秘载体c′。此外,本发明要求嵌入信息的载体c为基于Unicode 编码的文本数据,包括TXT格式文本和Word、PDF、XML、HTML复合文档中的文本数据; 并且在嵌入模块中m作为字节流方式进行处理,所以m可以是TXT文本数据和JPEG图像数 据。

嵌入算法的实施流程图如图2所示,具体实现步骤为:

(1)对输入的载体对象c进行预处理,用0x2000替换c中出现在编码表Tk的码字;

(2)顺序地读取c的2个字节数据xx,并判断xx值是否为0x0000;

(3)如果步骤(2)中结果为no,则执行步骤(4),否则执行步骤(12a);

(4)判断xx是否为不可见字符,包括半角/全角空格和制表符,它们对应的Unicode码 表示分别为0x2000、0x0030和0x0900;

(5)如果步骤(4)中结果为no,则跳转到步骤(2),否则执行步骤(6);

(6)对输入的秘密消息s,读取1个字节数据y;

(7)判断y值是否为EOF;

(8)如果步骤(7)中结果为no,则执行步骤(9),否则执行步骤(12b);

(9)对输入的编码表Tk,查找Tk中y值对应的码字zz;

(10)使用步骤(9)中的zz值替换步骤(5)所得到c中的xx值;

(11)重复执行步骤(2);

(12a)输出载体嵌入容量不足的提示信息。

(12b)输出改变后的c,即为带秘载体c′。

3、消息提取

本发明中消息提取算法模块执行提取算法D(),可以表示成

m=D(c′,Tk′)

其中,模块输入参数有含秘密消息的带秘载体c′和提取秘钥k′生成的编码表Tk′,模块输 出是提取得到的秘密消息m。特别地,为了保持编码表Tk和Tk′的一致性,本发明中嵌入秘钥 k与提取密钥k′是相同的。

提取算法的实施流程图如图3所示,具体实现步骤为:

(1)对输入的带秘载体c′,读取2个字节数据yy;

(2)判断yy值是否为EOF;

(3)如果步骤(2)中结果为no,则执行步骤(4),否则执行步骤(8);

(4)根据输入编码表Tk′,判断步骤(2)中的yy值是否为Tk′中的码字;

(5)如果步骤(4)中结果为no,则跳转到步骤(1),否则执行步骤(6);

(6)查找Tk′,获得yy值所对应的m值;

(7)重复执行步骤(1);

(8)输出秘密消息m。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可 以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保 护范围应以权利要求所述为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号