文/林翔
互联网的发展,打破了时空障碍,使得信息的传递变得越来越快,范围越来越广。由于网络协议存在安全漏洞,因此信息在传输过程中有可能被篡改、伪造和泄漏等,这也给有心之人留下了可乘之机,他们通过网络实施诈骗、窃取公民隐私、进行网上非法交易等等犯罪行为。为了更好地保护通信过程中信息的安全和隐私权,实现保密通信,防止敏感信息被窃取或泄漏,需要对传输的信息进行预先处理,主要从信息源和信息传输途径两个方面考虑。
在信息源上采取加密技术,通过加密隐藏明文数据的内容,来实现对真实信息的掩盖,常用的算法有AES算法、MD5加密算法、RSA算法和CCEP算法等。在传输途径上可采用信息隐藏技术,利用人类视觉有限性的特点,将信息伪装在正常的载体上,载体可以是文件、视频、音频、图像等等,常见的方法有隐写术、数字水印、视觉密码、潜信道、隐匿协议等。目前,这些技术被分别应用在身份认证、数字版权保护、数据保密等方面。
本文设计的软件将这两类技术结合应用,各取所长,对通信过程中的信息进行加密和伪装,实现信息的保密通信。由于在加密技术中,AES高级加密标准属于对称密码体制中的分组密码技术,其算法设计简洁、高效、安全性高。而在信息隐藏载体中,图像的可藏容量较大,人的视觉系统又对图像的某些信息具有一定的掩蔽效应,图像是比较理想的伪装载体。因此,设计将AES加密算法和LSB图像隐写技术结合应用,利用无压缩的BMP图像为载体,对信息进行保密处理。
高级加密标准AES算法是一种对称分组算法,它的输入分组、输出分组以及加/解密过程中的中间分组都是128位,支持的密钥长度可为:128位、192位、256位,迭代轮数分别为10轮、12轮、14轮。AES算法的核心包含三个部分:密钥扩展、数据加密和数据解密。
2.1.1 密钥扩展
本方案实现的是AES-128算法,迭代数为10轮,因此需要扩展出10个子密钥,每个密钥长度为128位。首先将用户输入的密钥作为初始密钥,按列排成一个4×4的矩阵,每一列记为w[i],此时的i=0,1,2,3。而扩展子密钥w[4,43]按照公式(1)求解获得,其中逢4倍数的列需要特别处理。
图1:AES算法加密实现流程示意图
以求解w[4]为例,首先由w[3]列的数据(d0,d1,d2,d3)左移一个字节变成(d1,d2,d3,d0),再按照AES算法的S盒进行查表置换,获得新的数据(e1,e2,e3,e4),最后与AES算法32位常量(RC[i/4],0,0,0)进行异或运算,即w[4]=(e1,e2,e3,e4)XOR(1,0,0,0),RC={01,0 2,04,08,10,20,40,80,1B,36}。
2.1.2 数据加密
AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。加密流程示意图如图1所示,首先对明文消息进行128位分组,前9次的加密过程是一样的,需要经过S盒变换(字节替代)、行移位、列混淆和轮密钥加,而第10次的加密过程没有列混淆,列混淆的加密运算见公式(2),s(i,j)是第i行,第j列的字节数据。
2.1.3 数据解密
AES算法加密实现流程示意图如图1所示。解密过程是加密的逆过程,加密的四个操作都是可逆的,通过相反的过程进行解密就能恢复明文。加/解密过程的时候,每一轮操作的密钥分别由第一次的密钥的递归计算所得到,每一个运算都由经过转换的矩阵进行,此时列混淆的解密运算见公式(3)。
表1:24位BMP图像文件结构简明表
图2:文件安全传输流程
图3:基于Qt开发的软件图像界面
LSB(最低有效位)信息隐藏算法是图像空间域算法,它通过修改每个像素二进制位的最低位,将信息隐藏在像素字节的奇偶性中。数字图像经过采样量化后,每个像素由8位的二进制数表示,按照颜色划分不同的色阶,通过修改像素字节的最低位,使得每个像素能够至少隐藏1bit的信息,由此引起图片在色彩、明亮度上的改变是微乎其微的,由于对于人眼来说无法觉察,因此能够实现对加密信息的伪装,这便是LSB算法的核心思想。
具体嵌入信息的过程:首先,计算图像内容中每个像素字节的奇偶性,再和待隐藏信息的字节数据进行异或运算,最后将异或的结果写入每个像素字节数据的最低位。提取被隐藏信息的过程和嵌入过程是互逆的,因此不再重复描述。
本设计基于QT开发平台,利用AES算法对待保护信息进行加密,再将加密后的密文隐写在24位的BMP彩色图像中进行传输,应用的流程如图2所示。Qt开发平台是一个跨平台的图形用户界面应用程序,具有完善的C++图像库,十分便利,因此选择Qt creater作为图形界面设计的开发平台。
通过QT Creater(mingw编译器)软件搭建图形界面,如图3所示,窗口上设置了AES加/解密、密钥的输入、明文的输入、清空明文、清空密文、清空输入、读取BMP图片、保存BMP图片、隐写加密、隐写解密的功能。
基于QT平台,使用C++语言实现AES算法。首先从图形界面获得输入的key,作为初始密码,不足128位的部分填充0,按照密钥扩展的方法求解出10个子密钥,按照图1所示流程进行字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)的9轮运算,最后第10轮不进行列混淆,于是得到密文。解密时,首先需要获得LSB算法从图像中提取的密文,而后再由AES解密算法破解,获得明文。
图4:加密隐写成功界面
图5:隐写解密成功界面
BMP位图由于是无压缩的,因此可以精准的控制像素值,24位BMP彩色位图的文件结构如表1所示。
BMP文件头(bitmap-file header)(14字节)包含了图像类型、图像大小、图像数据存放地址和两个保留未使用的字段。位图信息头(bitmap-information header)(40字节)包含有BMP图像的宽、高、压缩方法,以及颜色定义等信息。位图数据(bitmap-data)的大小由BMP位图使用的位数决定,在24位图中直接使用RGB(红、绿、蓝三色)表示,三种颜色各用8个bit,每个像素需要3个字节才能表示完全。因此,按照LSB算法思想,每个像素可以至少隐藏3bit的信息。同时,由表1可知,为不改变BMP图像的文件格式,使其能够被系统正常识别和显示,需从第55个字节开始进行信息隐写。隐写时,首先构造密文的字节流,而后按照LSB算法,先计算BMP图像像素的RGB各字节的奇偶性,再将密文字节流和获得的奇偶性字节流进行异或运算,将运算结果逐个写入图像从第55字节开始的位置。结果如图4所示,例子中载体图像分辨率为884×842像素,大小约为16Mbit,按照一个像素嵌入3个bit的藏量,最大可藏入约2Mbit的信息。按照算法的逆过程,可以得到图5所示的对载体图像的解密结果。
安全性方面,由于对称性加密算法安全性依赖与分组长度、密钥长度,而AES算法的密钥长度可为128、192、256,轮密钥加的随机性强,有效密钥空间大,所以安全性较好,通过改变密钥的长度,也可提高算法的灵活性。
另外,由于AES加密后的信息显示为乱码,容易引起注意,遭受对抗攻击,因此,本设计在加密之后对其再进行图像隐写,将密文隐藏在正常图像中,从而躲避了视觉观察,避免引起注意和遭受攻击,给信息加上了多重保障,增强了信息的安全性。
从图像隐写前和隐写后对比,肉眼上看不出区别,实现了安全隐藏,但由于LSB算法的防篡改性能不佳,因此当图像遭受破坏时,密文也将无法提取。
随着互联网技术的发展,信息安全问题关系到个人、企业和国家,越来越多的企业花重金购买安全通信系统或产品,以维护自身权益或保护商业机密,而对于个人来说,在安全通信产品的价格和日益增长的个人隐私保护需求不匹配的情况下,为了帮助解决目前大多数信息“裸奔”的情况,本文提出并实现了一种结合加密和图像隐写技术的信息安全加密软件,为信息的安全传输提供了一种手段,通过测试,该方法能实现对信息的有效加密隐藏,具有伪装性和安全性,但随着加密技术和隐写技术的改进和发展,可以借鉴的算法越来越多,今后,还将继续对算法的改进做研究,以期提高该设计中算法的抗攻击能力。