在临床数据交换的过程中,图像数据的通信成为交换中越来越重要的部分,在传输的过程中,数据可能被截获、修改或公开。因此,许多用以保护这些图像的方法被提出来,防止其受到未授权的访问或者篡改;然而,它们均有一定的局限性。为此,我们提出了一个结合RSA、AES和MurmurHash的加密框架,用来弥补这些局限性。

一、RSA、AES和MurmurHash的加密方法

大多数图像文件按照其图像标准,具有可以用来识别图像类型的文件头或标记段。比如,PNG图像有一个8位的文件署名以识别其文件类型,署名后是一系列的数据块(Chuck),每一个数据块包含了图像的一些特定信息。其中四种类型是具有决定性的数据块,文件头数据块(IHDR)和调色板数据块(PLTE)决定了图像数据块(IDAT)的解读方式。所以在文中,尝试将除图像数据块之外的其余数据块和图像文件头一起抽离出来,剩下的图像数据块就很难单独用于图像读取。

为了保证解密图像与原图像完全一致,用MurmurHash3来校验和比对。用AES来对图像像素部分也就是图像数据块进行加密,然后把AES密钥、初始向量、校验值和抽离的数据块一起用RSA公钥加密。加密文件由RSA加密部分与AES加密部分组成。

1、加密算法与Hash函数

RSA是最成功的非对称加密算法之一,加密的公钥与解密的私钥并不相同。明文可以分别通过以下两个公式来加密和恢复。

1

尽管RSA不适合加密大体积的文件,但是因为其算法的不对称性,只要保证私钥的安全就能保证加密文件的安全,因此整体安全性较高。

AES是目前最安全、最常用的对称算法之一。AES基于取代、置换和线性变换,每次操作对16字节的数据块进行执行。这些操作被操作多次,被称为“Round”。每一轮中,唯一的roundkey通过密钥计算出来。然而,AES算法是通过同一个密钥来进行加密与解密,因此在任何情况下保证密钥的安全并不容易。

MurmurHash是一个适用于一般的基于散列查找的非加密校验函数。它是由奥斯汀艾波于2008年创建的,并且已经使用在公共领域。与其他有名的校验函数相比,最新版本的MurmurHash即MurmurHash3速度更快,并且在64位系统下性能相对更好。

2、提出的框架

RSA公钥与私钥已经生成,发送方持有公钥,接收方持有密钥。提出方法的处理流程如图1所示。

1

加密图像的具体步骤如下:

第一步:通过MurmurHash3获取原始图像的校验值,并将其值转换为字节;

第二步:生成256位的AES密钥与初始向量;

第三步:通过图像中的“文件署名”标签来识别图像的类型,将图像中的像素数据取出,并用生成的AES密钥与初始向量以“CRC模式”对其进行加密;

第四步:将图像剩余部分(除去图像像素数据)包括文件头、调色板等重新整合,从而来确保后面的处理过程是可读且是可逆转的,将生成的AES密钥、初始向量及校验值拼到上述整合的部分;

第五步:将第四步得到的部分(也就是图中的“文件头”用RSA公钥进行加密,然后将RSA加密部分与第三步得到的AES加密的部分组成的文件即是图像对应的加密文件。

解密流程如图2所示。

1

加密后的文件结构如图3所示。

1

解密的具体步骤如下:

第一步:基于“File Offset”字节,使用RSA密钥对RSA加密部分进行解密。解密后的文件可以分成三个部分,即图像信息部分、AES密钥部分及校验值部分。

第二步:通过分析“文件署名”标签来识别图像的类型。将图像信息部分作为新文件的文件头。

第三步:从AES密钥部分中分离出AES密钥与初始向量,利用密钥与向量对图像像素加密部分进行解密(以“CBC”模式)。将解密后的图像像素部分与新文件头组成解密后的文件。

第四步:通过MurmurHash3获取解密图像的校验值,并将其值与校验部分进行比对。如果相同即说明解密图像与原图像完全相同,没有受到任何更改。

二、测试与结果

在本文所做的测试中,对8种不同大小的图像利用不同的方法进行加密,来验证提出方法的有效性。整个测试过程在64位window 7系统下以C#编程来完成。

首先,可以通过比对校验值来检查文件是否被修改或损坏。记录了RSA、AES和提出方法的加密时间和解密时间。

加密解密的速度比较如图4、5所示。

1

通过分析这两个图,可以看出提出方法所用的时间比RSA用的时间少的多。随着文件大小的增加,RSA加密的速度也越来越慢,也验证了RSA不适合对大文件进行加密的事实。并且,提出的方法速度比AES要稍慢一些,两者的差距可以忽略不计,因为提出的方法的加密强度更强,安全性相对更高。AES密钥如果被破解,图像像素加密部分可以被恢复,但是没有图像文件头,恢复的文件还是不可解读的,只有RSA密钥被破解才能破解整个文件。并且RSA密钥被存储在接收方的电脑上,只要接收方保护密钥的强度足够,而破解2048位的密钥需要相当长的时间,这也是RSA相对于AES的优势之一。MurmurHash的校验比对进一步提高的接受文件的准确性。

原始图像与机密文件的大小比较如表1所示。

1

可以看出,AES的加密过程并不会改变文件的大小,而提出的方法可以基本上维持大小。这是因为使用RSA来加密头文件而是加密后的文件比原图像大了2-3kb。

小知识之PNG

PNG,图像文件存储格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。