一种基于数字图像的安全信息传输方案

  • 投稿Chri
  • 更新时间2016-06-02
  • 阅读量904次
  • 评分4
  • 20
  • 0
 0 引 言 
  计算机科技水平的迅速提高和密码学技术的飞速发展,为信息隐藏领域的研究提供了广阔的发展空间。计算机网络涉及我们生活的方方面面,其中重要信息的安全传输已成为国家,企业甚至我们人与人之间面临的严重问题。国家机密需要安全传输,各国之间信息通信都需要绝对保密,在各国的法律中,泄漏国家机密者会遭到严惩;企业文件需要安全传输,如果企业信息遭到恶意泄漏可能会对企业造成不可估量的损失甚至导致企业破产;人与人之间的信息传递有时也需要安全传输,个人信息的泄漏可能会给我们带来很多不必要的麻烦。因此在我们的生活中,在传输前对重要信息加密已是必不可少的手段。但是传统加密技术对多媒体内容的保护和完整性认证仍具有很大的局限性。如果仅对传输信息进行简单加密,生成的密文在传输过程中很容易引起攻击者的注意,并可能被恶意破解,而且一旦加密信息被成功破解,传输的信息就会完全暴露。 
  早期的信息安全传输主要在信息源和信息传输途径两大方面下功夫。在信息源上,主要采取一些加密措施,比如用于数据加密的MD5加密算法,广泛应用于用户的登陆密码方面;既可以用于数据加密也可以用于数字签名的RSA加密算法至今未被完全攻破;由IBM公司设计的被美国国家标准局采纳作为非机密数据的正式数据加密标准的DES加密算法是目前比较流行的一种加密算法。在传输途径上,信息隐藏技术具有良好的不可察觉性、鲁棒性和大信息量的特点,信息隐藏技术在信息安全保障领域的诸多方面发挥着重要作用,主要应用于数据保密通信、身份认证、数字作品的版权保护和盗版追踪以及对于数字作品的完整性、真实性的鉴定与内容恢复等方面[1,2]。 
  信息隐藏技术则是利用人类感官系统的不敏感,将隐秘信息隐藏在特定的载体中,使之不被察觉或者不易被注意,隐藏的载体可以是图像、声音或者文本等数字信号。图片具有良好的不易察觉性和隐蔽性[3,4]。 
  因此,本方案提出将需要传输信息通过AES加密后利用LSB算法和DCT变换将密文嵌入图片中,隐藏了信息的存在形式,不易引起攻击者的注意,从而避免了被攻击的危险。即使传输文件被攻击者发现,信息被提取出来,恶意攻击者得到的也只是被加密后的密文,若想得到真正的信息,仍需要攻克AES加密算法来提取信息[5]。 
  1 相关知识 
  1.1 AES加密算法 
  在本文中,AES加密算法的密钥长度分为128 b,192 b和256 b三种不同类型。算法相应的进行10轮,12轮和14轮运算。AES加密算法共分为密钥扩展,数据加密和数据解密三大部分。 
  1.1.1 密钥扩展 
  AES输入密钥为可选的128 b,192 b或256 b,相应要进行10轮,12轮和14轮加解密运算。不失一般性,我们以128 b,10轮运算为例。密钥是生成算法的输入为4 word的密钥,输出为初始4 word密钥加密以及后10轮加密所需的共44 word的密钥。 
  1.1.2 数据加密[6] 
  (1)字节替换:依据S置换表对状态矩阵中的数字进行置换。 
  (2)行位移:应用枚举法对状态矩阵中的各行数据进行循环移位运算。 
  (3)列混淆:对状态矩阵实施列混合运算。 
  (4)密钥加:对状态矩阵做轮密钥加法变换。 
  通过S盒替换可得到4×6字节矩阵,其中Si,j是第i行第j列的字节,0≤i≤3,0≤j≤5。轮密钥加法变换(Add Round Key)作为加解密的核心算法为AES编程提供了极大方便,该运算的原理实际上是在GF(28)域上实行的多项式间的运算。分别为乘法(*)和异或()运算。加密解密中所用到的常数共6个:0x02、0x03、0x09、0x0b、0x0d和0x0e。加密的核心公式,即列混合运算[7]见式(1): 
  1.1.3 数据解密 
  数据解密使用字节替换函数(Inv Shift Rows)、行位移函数(Inv Sub Bytes)、列混淆函数(Inv Mix Columns)以及轮密钥加法函数(Add Round Key)分别实现解密操作,各函数功能和加密的功能类似,在这里就不重复说明,解密的核心算法如公式(2)所示。 
  1.2 LSB算法 
  LSB算法又叫做最低有效位算法,旨在修改载体信息的最低有效位以达到信息嵌入的目的。将目标文本信息嵌入到bmp图像中[8,9]并提取出来。 
  1.2.1 嵌入文本信息 
  由于每个汉字在计算机内存储时占两个字节,其余字符等都只占一个字节。因此以两个字节(即16位)为一个单元进行文本信息整理。对于输入的文本,开辟(S+2)个单元,即(16×(S+2))位。将第一个和最后一个单元分别作为标记位,从低到高,取‘0001’与‘#’的对应位做取模运算并依此移位。对于要隐藏的文本信息进行相似的取模及移位处理,所不同的是,此处要用文本信息流来与‘0001’进行运算。如此就完成了文本信息的处理。