基于不可见字符的隐写技术研究
2021-02-27张思博
◆张思博
基于不可见字符的隐写技术研究
◆张思博
(北华航天工业学院 河北 065000)
本文针对仅增加加密算法的密钥长度来达到增强安全性已经无法满足数据安全的需求,本文对不可见字符的隐写术进行研究,通过在文本中嵌入经过编码的不易被发现的不可见的秘密信息,并嵌入在公开的普通载体中利用现有即时通讯工具进行传输,对隐蔽通信的内容还采用高级加密标准(Advanced Encryption Standard,AES)算法进行加密对秘密信息进行了双层保护,最后实现了一个基于客户端服务器端(Client/Server,C/S)架构的通信系统。其中,服务器端分为用户信息管理和响应客户端请求两个模块;客户端分为用户登录、发送公开消息、发送文件、不可见字符隐写四个模块,支持将包括汉字、英文字符和标点符号在内的各种符号编码为不可见字符。系统的功能具有安全性和实用性,能使人们在日常通信中的信息安全得到一定的保护。
数据安全;隐写术;不可见字符;AES加密
1 引言
随着全球数字化和信息化的发展,信息安全和网络安全问题近几年得到高度关注。计算机软硬件的快速发展,以及基于网络的具有并行计算能力的破解技术的日渐成熟,使得仅仅通过增加加密算法的密钥长度来达到增强安全性[1],已经无法满足数据安全的需求。隐写术能够隐藏秘密信息的存在,将秘密信息隐藏在公开信息中进行传输无疑为信息安全技术的探索打开了新的大门。本文研究的系统在文本中嵌入经过编码的不易被发现的不可见的秘密信息,并嵌入在公开的普通载体中通过现有即时通讯工具进行传输,支持将包括汉字、英文字符和标点符号在内的各种符号编码为不可见字符。对隐蔽通信的内容还采用AES加密算法进行加密,使得恶意用户即使知道公开文本中藏有秘密信息,在不知道密钥的情况下也无法破解,以确保系统的安全性和实用性。
2 系统总体设计
系统功能模块分为服务器端和客户端,服务器端又分为用户信息管理模块和响应客户端请求模块,客户端又分为用户登录模块、发送公开消息模块、发送文件模块、不可见字符隐写模块。不可见字符编码采用Unicode编码当中的不可见字符对应16进制ASCII码,Unicode为了满足某些地区的文本阅读习惯而内置了一些用于格式控制的特殊编码[2],而这些字符只显示为普通空格。通过不可见字符编码能够完整表达全部的英文字母,常见汉字以及常见符号,为每种语言中的每个字符设定了统一并且唯一的二进制编码,满足了跨语言、跨平台进行文本转换、处理的要求,具体系统设计如图1。
图1 系统总体设计结构图
3 隐写信息的嵌入与提取算法
3.1 隐写信息的编码
编码算法首先应获取秘密信息每一位的ASCII码,之后把ASCII码转换为十六进制数,最后用Unicode编码字符表示从ASCII码转换过来的十六进制数。考虑的中文ASCII编码的特殊性,中文一个字符占两个字节,则我们将每个字节分别转为对应的ASCII码,即一个英文字符用两个不可见字符表示,而一个中文字符用四个不可见字符表示。
3.2 隐写信息的嵌入
接下来是嵌入算法,第一步是获取公开文档或信息Ci,找到Ci中的‘.’字符;之后将Ci以字符‘.’为界截成Ca和Cb两部分,并且‘.’字符在Ca中,最后以Ca、不可见字符串、Cb的顺序形成新的字符串,不可见字符串的末尾需要加一个空格用来把它和Cb分隔开。这样就生成了最终信息。
3.3 隐写信息的提取
秘密信息的提取算法流程图2所示,首先获取到前面编码时带有不可见字符的文档或公开信息Ci;之后判断Ci的ASCII码是否与“.”的ASCII码“46”相同,这个步骤作为一个循环步骤,直到找到这样的“.”,才算找到了嵌入的起始位置;第三步以“.”为界限截取Ci中“.”之后内容Si,此时Si中可能包含秘密信息;接下来判断是否包含秘密信息,即判断Si是否存在一个空格,这个空格也是之前编码时做的一个标记,这个步骤也需要循环判断直到找到第一个空格进而也就找到了嵌入的结束位置;最后,完成对秘密信息的提取,把第二步找到的‘.’和上一步找的空格之间的内容Mi做一个截取。
图2 秘密信息提取算法
3.4 隐写信息的解码
字符的解码算法,首先应对Mi的内容进行读取;之后对每一个字符逆的Unicode编码找到对应的ASCII编码;最后,根据ASCII码转换出相应的实际字符;如果遇到中文字符,会自动根据编码规则将四位不可见字符编码转为ASCII码后合并为一个中文字符。
4 AES加密算法
相对于其他传统加密算法,AES在扩散性、混淆性和数据加解密效率、安全性等方面具有较为明显的优势。目前已经成为广泛应用的高级加密规范,尤其在数据信息的传输加密方面,已经逐步取代了传统数据加密标准算法[3]。
AES为分组密码,首先将明文分成长度相同的组,一次加密一组数据,AES将128位的输入明文分组和输入密钥都被分成16个字节[3],明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。本系统使用的AES分组长度为 128 bit,密钥的长度也使用128位。接下来进行10轮加密,前九轮变换相同,按字节代替、行移位、列混合和轮密钥加为序进行运算[4]。其中,字节代替是指根据AES定义的S盒和逆S盒进行相应字节的替换;行移位是进行一个循环左移位操作;列混合是将经行移位后的状态矩阵与固定的矩阵相乘来得到混淆后的状态矩阵;轮密钥加是指128位轮密钥同状态矩阵中的数据进行逐位异或操作[5]。在算法的每一轮中,状态矩阵的内容不断发生变化,最后,将结果作为密文输出。而AES解密算法其实是AES加密算法轮函数的一个逆过程。
5 系统效果展示
本系统基于C/S架构实现了一个应用隐写技术的通信系统,客户端利用本系统互相发送文件或公开信息。客户端具备普通通信系统的登录、聊天、个人主界面以及个人设置界面等功能界面,隐写信息的嵌入和提取界面为本系统的主功能界面,包括文本信息的嵌入和提取以及文本文件中隐写信息的嵌入和提取。如图3所示,客户端可以通过隐写技术在文本消息中将可见的秘密信息转换为不可见字符,在公开信息文本框和秘密信息文本框分别输入公开信息和隐写信息,用户可自行选择是否需要AES加密并手动输入密钥,一键导入功能可以将嵌入隐写信息的文本传送到聊天窗体;本系统还支持可以在常见的各类文本文件中嵌入或提取不可见字符。
6 总结与展望
本文对不可见字符的隐写术进行研究,应用并实现了一个基于C/S架构的通信系统。本系统使用Unicode中的不可见字符映射秘密信息,为每种语言中的每个字符设定了统一并且唯一的二进制编码,满足了跨语言、跨平台进行文本转换、处理的要求,将转换后的不可见字符嵌入到公开信息中进行传输。从增加信息的安全性角度出发,实现了利用AES加密算法对秘密信息进行双层保护。系统具有隐蔽性好、信道容量大等优点,实现了英文文本、常见字符以及汉字文本的隐写。
下一步的研究方向重点在于研究改进的隐写算法来扩展文本的类型,拓宽隐写信息的传播渠道,从而打破隐写数据传输的限制进一步增强隐私保护的安全性;另外,还将从提高人们的安全意识出发,拓宽隐写技术的应用领域,使隐写技术适应于更多的传输载体,在大数据时代为信息安全保驾护航。
图3 隐写信息在文本中的嵌入
[1]谢锦生.数字图像水印技术研究[D].合肥工业大学,2007.
[2]Mir N.Copyright for web content using invisible text watermarking[J].Computers in Human Behavior,2014,30(30):648-653.
[3]高家奇,李斌勇,等. 高级加密AES算法研究及性能分析[J]. 网络安全技术与应用,2019(010):28-30.
[4]陈晓宇. AES算法中轮变换改进研究[J]. 电脑知识与技术,2020,16(08):239-241.
[5]于游,付钰,吴晓平. 基于AES加密存储的磁盘销毁策略[J]. 网络与信息安全学报,2018,004(004):72-76.