在网络环境中图像的传输越来越普遍,很容易遭受人为攻击,图像信息的保密性和安全性也变得日益重要,图像按照压缩方式分为无损压缩格式(PNG,TIFF,GIF,RAW,PCX,TAG,BMP)和有损压缩格式(JPEG,JPG,WMF)。流式网络图像(portable network graphic,PNG)格式是一种保证最不失真的位图文件存储格式,目前越来越多地应用在软件、网络以及手机。

以PNG为代表的无损压缩格式主要加密方式有:矩阵置乱加密、混沌加密、视觉密码加密等。这些加密方式很好地满足了图像加密中的一个重要指标——格式兼容性。

格式兼容加密(FCE)已经成为图像加密的重要加密方法,FCE使加密后的多媒体语法不受破坏,仍然能用标准的解码器进行解码。保留格式加密(FPE)是一种确保密文与明文属于同一消息空间的加密技术,保证了密文与明文格式的一致性。因此,对图像进行保留格式加密,加密后的图像可以满足格式兼容性。

本文针对FPE在PNG图像加密中的应用展开研究,概述了格式兼容加密的研究现状,分析了PNG图像的压缩编码过程与兼容加密的格式需求,进而基于FPE技术提出了一种全新的PNG图像的格式兼容加密方案,并深入探讨了所提出的方案在退化和保密两个方面的应用。

一、格式兼容加密

衡量图像加密技术的性能主要包括4个指标:格式兼容性、安全性、加密数据量、压缩率、格式兼容性是最重要的指标,它对于图像加密以及加密的图像在网络中的传输具有很现实的意义,格式兼容性使得密文继承了加密前文件的一些良好特性,如纠错能力、网络友好性、视频的随机访问、自适应带宽、视频转换等.具有如下优点:满足特定商业应用需求;保持多媒体对象的搜索功能;保持同步和容错功能;便于加密数据的定位;提高密码系统的安全性;便于网络中间结点的处理等。

格式兼容加密有多种实现方法,如JPEG2000图像的迭代加密方案、基于JPSEC框架的加密方案、针对MPEG-21视频压缩域的加密方案、FCE后H.264/SVC网络适应性的加密方案等。

2010年后,最新的研究热点FPE被应用到格式兼容加密领域,成为格式兼容加密的一种新的实现方式。Stutz以有限自动机描述了JPEG2000压缩流的包体部分j并运用了FPE的Cycle-walking方法,从而将这个加密问题转化为正则语言上的FPE问题。因此,现有的正则语言的FPE解决方案都可直接应用到JPEG2000压缩流包体数据的加密中.而无损的PNG图像本身也有格式限制,FPE同样能用于实现PNG的格式兼容加密。

二、PNG的保留格式加密方案

1、需求分析

(1)加密流程

PNG源图像的压缩过程为:重新排列PNG图像的像素,形成几个较小的图像,让图像渐进显示;将图像序列化成一个扫描线,像素在扫描线中从左到右排列,扫描线是有序的从上到下,形成像素矩阵;每个扫描线转化成一个过滤的扫描线;对所有过滤后的扫描线进行压缩编码;将压缩后的图像划分成合适大小的块;最后将块拼接形成数据流。

FPE加密作用于像素矩阵,运用在序列化之后,过滤压缩之前,FPE解密过程是加密过程的逆过程,运用在反过滤之后。

(2)FPE的基本算法

本方案中需要用到3个FPE基本算法:Prefix,Cycle-walking和Generalized-feistel。

Prefix方法是基于内存中建立的全明文集合置换表完成对数据的加解密,仅适合于较小有限域。Cycle-walking方法可简单描述为:要加密明文z∈(0,1,…,n-l),选用分组密码E(如AES),设y=Ek(x),若z∈{O,1,…,n-l}则返回y,否则循环执行y=Ek(z),直到有{0,1,…,n-l)范围内的密文y产生为止.Generalized-feistel方法利用Feistel网络构造分组密码,并结合Cycle-walking方法,理论上能对任意大小的整数集进行保留格式加密。

FPE的这几种方法都具有可证明的安全性,达到了伪随机置换(pseudo random permutation,PRP) 安全。

(3)格式要求

若对PNG图像压缩之后的码流进行加密,则无法保留其格式,加密后会使得图像不兼容。而PNG的格式要求在压缩前的像素矩阵上有很明显的体现,因此对像素矩阵进行保留格式加密尤为重
要.PNG图像像素矩阵的格式要求主要体现在颜色类型以及图像的宽度和高度上:

①加密后的图像类型与原来的图像类型保持一致;

②加密后图像的宽度、高度与原图像保持一致。

PNG图像类型分为灰度图像、真彩色图像、索引彩色图像、带口通道数据的灰度图像、带α通道数据的真彩色图像,压缩前的PNG图像是一个像素矩阵,各类型图像的像素具有不同的格式。如grey表示一个灰度样本值;RGB表示红、绿、蓝3个颜色样本值;index表示一个索引值;α表示像素的不透明度值(0代表一个完全透明的像素,最高数字代表完全不透明的像素)。不同图像类型的像素点格式如下所示。

①灰度图像:每一个像素点存放grey;

②真彩色图像:每一个像素点存放RGB;

③索引彩色图像:每一个像素点存放index;

④带口通道数据的灰度图像:每一个像素点存放grey和d;

⑤带α通道数据的真彩色图像:每一个像素点存放RGB和α。像素点的取值范围由Bitdepth确定。

2、方案描述

总体设计方案为:①灰度图像,Colortype为0以及真彩色图像,Colortype为2,行加密方法为FPE直接加密;

②索引彩色图像,Colortype为3,行加密方法为了解index的取值范围,FPE(结合Cycle-walking);

③带口通道数据的灰度图像,Colortype为4,行加密方法为将grey值和口值分别提取出来,用FPE直接加密grey值,α值设置成最大值,将grey值和d值分别写回到每个像素;

④带a通道数据的真彩色图像,Colortype为6,行加密方法为将RGB值和α值提取出来,加密RGB值,α设置成最大值,将RGB值和α值分别写回到每个像素。

对像素矩阵的每一行都进行保留格式加密,即可得到加密后的PNG像素矩阵.具体的实现方案用三元组F= (GEN,ENC,DEC)来描述。

算法GEN(W,params):初始化阶段主要定义以下几个方面的内容。

①PNG格式W一{Colortype,Bitdepth,Width,Height);

②产生必要的密钥忌、分组长度n和轮次数r等;

③建立必要的置换表;

④采集必要的样本。

算法ENC(S,ZF,SF):输人为PNG的格式W、密钥忌、分组长度n、轮次数r、置换表Z、像素矩阵,输出为加密后的像素矩阵。

建立算法元组ZF={ Enca,Encb,Encc),ZF为满足PNG的不同格式的需要所建立的算法元组;建立一个加密选择方案元组SF——{Degradation,Confidentiality},SF是根据不同的应用需求所建立的算法元组。用算法Select选择元组中的算法。

①选择ZF中的合适算法,加密算法是一个映射Enc,将明文Enc密文,Enca,Encb和Ence为针对不同格式图像的加密算法:对于不带α通道数据的图像(灰度图像、真彩色图像)选择Enca;对于索引图像选择Encb;对于带口通道数据的格式选择Encc。

②选择SF中的合适算法,Degradation,Confi-dentiality为针对不同应用需求的加密算法:对于退化的PNG图像采用加密方法Prefix;对于保密的PNG图像采用加密方法Generalized-eistel;不管要得到退化或是保密的PNG图像,对于索引图像类型都要使用Cycle-walking方法。

下面给出了算法Select,Enca,Encb,Encc。

Algorithm Select

输入:W,ZF

输出:Enc

if W[Ol=OIIW[0]=2

Enc= ZF[O] = Enca ;

else if W[0]=3

Enc= ZF[1] = Encb ;

else W[0l=4 11 W[0]=6

Enc= ZF[2] = Encb ;

Algorithm Enca

if apply=SF[O]

S'Prefix[S] ;

Algorithm Encb

输入:k,n,r,Z,S

输出:S'

if apply=SF[O],

if S'不满足 W

r _ S' <-Cycle-walking[Prefix[S]] ;

else if apply=SF[I]

S' Generalized-feistel [S] ;

Algorithm Ence

输入:k,n,r,Z,S

输出:S'

if apply= SF[O]

S1 非α值

S2 α值

S Prefix[Si];

S2 设置S2最大

S’ s1S2

else if apply= SF[I]

S1非α值

S2α值

S;Generalized-feistel [Si];

S设置d值;

s‘s1'||S’2

算法DEC(S’,ZF,SF):ENC的逆运算。

由于方案底层采用的都是FPE基本方法,安全性可以归结到FPE的安全性,即达到了PRP安全。

三、退化和保密

1、退化

图像退化( degradation)是指在一些商业的应用模式下,商家希望用户能够获得图像的一部分信息,从而能够知道图像的大致内容,但在没有授权的情况下不能看到更高质量的图像信息。

PNG图像退化加密算法的初始化和加密过程描述如下:

算法GEN:退化的PNG加密方案的初始化阶段的步骤如下:

①生成置换表,

②读取Colortype,判断是否为索引图像:若为索引图像,则需要确定其数值的取值范围;若不为索引图像,则判断是否为带α通道数据的图像;若带α,则需要将非α样本取出;若不带d通道数据,不需要处理。

③确定图像的Width和Height值。

算法ENC:输人为置换表、像素矩阵S、Colortype值、Bitdepth值、矩阵的Height、矩阵的Width。输出为加密后的像素矩阵。所使用的加密方法是置换表大小n-256的Prefix算法。

算法DEC:算法ENC的逆过程,由图1~图3看出,3种类型的图像都满足了所需要的退化效果,其中带α通道数据的真彩色图像的退化加密效果最佳,背景色仍然保持了原有的透明度;其次是真彩色图像的退化加密,背景颜色比较单一;效果最差的是索引图像的退化图像,背景色与图像的主要内容部分的颜色相似。

流式网络图像的保留格式加密

 

流式网络图像的保留格式加密

 

流式网络图像的保留格式加密

图4给出退化加密的效率分析,通过加密时间来分析效率。从图中可以看出,效率与图像类型有关,首先,真彩色图像的效率相对于带α通道数据的真彩色图像较高,真彩色图像只需对每个字节进行Prefix加密,较为简单,因此效率较高;由于带α通道数据的真彩色图像需要将像素的RGB值与α值分别提取出来进行处理,然后再写入像素,这个过程需要更多的时间,因此效率较低。其次,索引图像的加密效率较高不稳定。对于颜色不复杂图像,索引图像类型需要加密的数据量比真彩色图像要少得多,但是加密时需要使用Cycle-walking,Cycle-walking的效率具有不确定性,所以加密的效率曲线呈现不稳定,由于在Prefix的基础上使用Cycle-walking比较简单,效率较高,因此所需要的时间仍然比带口通道数据的真彩色图像要少得多。

流式网络图像的保留格式加密

2、保密

图像保密( confidentiality)是指为了防止涉及到商业、政治、军事及个人隐私的机密信息被未授权的第三方看到,因此保密的目的是要实现对图像内容的完全保护,非授权用户能够解码图像,但是看到的是与源图像内容完全不相关的图像。PNG图像保密加密算法的初始化和加密过程描述如下:

算法Gen:

①基础分组密码的密钥k、分组长度72和轮次数r等;

②读取Colortype,判断是否为索引图像;

③确定图像的Height和Width值。

算法Enc:输人为密钥k、分组长度n(n为31 B)、轮次数r(r取值为6,保证足够安全的基础上具有较高的效率)、像素矩阵、Colortype值、Bitdepth值、矩阵的Height、矩阵的Width。输出为
加密后的像素矩阵,使用的加密方法是Generalized-feistel。

算法DEC:算法ENC的逆过程,由图5~图7看出,3种类型的图像基本上满足了所需要的保密效果。其中,真彩色图像的保密加密效果最佳,其加密后的图像隐藏了源图像的颜色;其次是索引图像的保密加密,虽然加密后的图像很好的保密了源图像的内容,但是暴露了原图像的颜色信息;效果最差的是带通道数据的真彩色图像的保密加密,其稍微有一些退化效果,保密效果不佳。

流式网络图像的保留格式加密

图8给出保密加密的效率分析,通过加密时间来分析效率。保密加密的效率明显低于退化加密的效率,原因是退化加密要达到的加密要求比较低,所使用的Prefix方法比较简单,相比分组长度较大的Generalized-feistel方法,效率较高。

流式网络图像的保留格式加密

对于保密加密,同样的图像,因为图像类型不同,加密的时间也有明显的变化。首先,真彩色图像与带通道数据的真彩色图像的加密效率较接近,因为对于效率较低的Generalized-f eistel方法,将α值与RGB值分离的这个过程所消耗的时间不那么明显,所以两种类型图像加密的效率差值不大,其次,索引图像的加密效率不稳定,其明显低于其他图像类型,虽然索引图像需要加密的数据量比真彩色图像要少得多,但是加密时需要使用Cycle-walking,由于在Generalized-feistel的基础上使用Cycle-walking,需要循环的次数比较多,因此效率比较低;又因为Cycle-walking的效率具有不确定性,效率浮动较明显。

同时,对于保密加密,使用不同的分组长度,其效率也会有所不同,使用不同的分组长度对真彩色图像进行保密加密,其效率与分组长度的关系如图9所示。

流式网络图像的保留格式加密

保密加密的效率随着分组长度的增大而提高,小的分组长度进行分割和拼接运算比较复杂,以致于效率较低,使用较大分组加密时,效率较高。而使用分组过小时,保密效果越来越差,当分组长度为2B时则为退化效果,因此基于效率和保密效果的角度考虑,使用较大的分组较好。

小知识之PNG

PNG,图像文件存储格式,其目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。可移植网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序中,或网页或S60程序中是因为它压缩比高,生成文件容量小。