臨床信息交換中圖像文件加密的應(yīng)用

在臨床數(shù)據(jù)交換的過程中,圖像數(shù)據(jù)的通信成為交換中越來越重要的部分,在傳輸?shù)倪^程中,數(shù)據(jù)可能被截獲、修改或公開。因此,許多用以保護這些圖像的方法被提出來,防止其受到未授權(quán)的訪問或者篡改;然而,它們均有一定的局限性。為此,我們提出了一個結(jié)合RSA、AES和MurmurHash的加密框架,用來彌補這些局限性。

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

大多數(shù)圖像文件按照其圖像標(biāo)準(zhǔn),具有可以用來識別圖像類型的文件頭或標(biāo)記段。比如,PNG圖像有一個8位的文件署名以識別其文件類型,署名后是一系列的數(shù)據(jù)塊(Chuck),每一個數(shù)據(jù)塊包含了圖像的一些特定信息。其中四種類型是具有決定性的數(shù)據(jù)塊,文件頭數(shù)據(jù)塊(IHDR)和調(diào)色板數(shù)據(jù)塊(PLTE)決定了圖像數(shù)據(jù)塊(IDAT)的解讀方式。所以在文中,嘗試將除圖像數(shù)據(jù)塊之外的其余數(shù)據(jù)塊和圖像文件頭一起抽離出來,剩下的圖像數(shù)據(jù)塊就很難單獨用于圖像讀取。

為了保證解密圖像與原圖像完全一致,用MurmurHash3來校驗和比對。用AES來對圖像像素部分也就是圖像數(shù)據(jù)塊進行加密,然后把AES密鑰、初始向量、校驗值和抽離的數(shù)據(jù)塊一起用RSA公鑰加密。加密文件由RSA加密部分與AES加密部分組成。

1、加密算法與Hash函數(shù)

RSA是最成功的非對稱加密算法之一,加密的公鑰與解密的私鑰并不相同。明文可以分別通過以下兩個公式來加密和恢復(fù)。

1

盡管RSA不適合加密大體積的文件,但是因為其算法的不對稱性,只要保證私鑰的安全就能保證加密文件的安全,因此整體安全性較高。

AES是目前最安全、最常用的對稱算法之一。AES基于取代、置換和線性變換,每次操作對16字節(jié)的數(shù)據(jù)塊進行執(zhí)行。這些操作被操作多次,被稱為“Round”。每一輪中,唯一的roundkey通過密鑰計算出來。然而,AES算法是通過同一個密鑰來進行加密與解密,因此在任何情況下保證密鑰的安全并不容易。

MurmurHash是一個適用于一般的基于散列查找的非加密校驗函數(shù)。它是由奧斯汀艾波于2008年創(chuàng)建的,并且已經(jīng)使用在公共領(lǐng)域。與其他有名的校驗函數(shù)相比,最新版本的MurmurHash即MurmurHash3速度更快,并且在64位系統(tǒng)下性能相對更好。

2、提出的框架

RSA公鑰與私鑰已經(jīng)生成,發(fā)送方持有公鑰,接收方持有密鑰。提出方法的處理流程如圖1所示。

1

加密圖像的具體步驟如下:

第一步:通過MurmurHash3獲取原始圖像的校驗值,并將其值轉(zhuǎn)換為字節(jié);

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

第三步:通過圖像中的“文件署名”標(biāo)簽來識別圖像的類型,將圖像中的像素數(shù)據(jù)取出,并用生成的AES密鑰與初始向量以“CRC模式”對其進行加密;

第四步:將圖像剩余部分(除去圖像像素數(shù)據(jù))包括文件頭、調(diào)色板等重新整合,從而來確保后面的處理過程是可讀且是可逆轉(zhuǎn)的,將生成的AES密鑰、初始向量及校驗值拼到上述整合的部分;

第五步:將第四步得到的部分(也就是圖中的“文件頭”用RSA公鑰進行加密,然后將RSA加密部分與第三步得到的AES加密的部分組成的文件即是圖像對應(yīng)的加密文件。

解密流程如圖2所示。

1

加密后的文件結(jié)構(gòu)如圖3所示。

1

解密的具體步驟如下:

第一步:基于“File Offset”字節(jié),使用RSA密鑰對RSA加密部分進行解密。解密后的文件可以分成三個部分,即圖像信息部分、AES密鑰部分及校驗值部分。

第二步:通過分析“文件署名”標(biāo)簽來識別圖像的類型。將圖像信息部分作為新文件的文件頭。

第三步:從AES密鑰部分中分離出AES密鑰與初始向量,利用密鑰與向量對圖像像素加密部分進行解密(以“CBC”模式)。將解密后的圖像像素部分與新文件頭組成解密后的文件。

第四步:通過MurmurHash3獲取解密圖像的校驗值,并將其值與校驗部分進行比對。如果相同即說明解密圖像與原圖像完全相同,沒有受到任何更改。

二、測試與結(jié)果

在本文所做的測試中,對8種不同大小的圖像利用不同的方法進行加密,來驗證提出方法的有效性。整個測試過程在64位window 7系統(tǒng)下以C#編程來完成。

首先,可以通過比對校驗值來檢查文件是否被修改或損壞。記錄了RSA、AES和提出方法的加密時間和解密時間。

加密解密的速度比較如圖4、5所示。

1

通過分析這兩個圖,可以看出提出方法所用的時間比RSA用的時間少的多。隨著文件大小的增加,RSA加密的速度也越來越慢,也驗證了RSA不適合對大文件進行加密的事實。并且,提出的方法速度比AES要稍慢一些,兩者的差距可以忽略不計,因為提出的方法的加密強度更強,安全性相對更高。AES密鑰如果被破解,圖像像素加密部分可以被恢復(fù),但是沒有圖像文件頭,恢復(fù)的文件還是不可解讀的,只有RSA密鑰被破解才能破解整個文件。并且RSA密鑰被存儲在接收方的電腦上,只要接收方保護密鑰的強度足夠,而破解2048位的密鑰需要相當(dāng)長的時間,這也是RSA相對于AES的優(yōu)勢之一。MurmurHash的校驗比對進一步提高的接受文件的準(zhǔn)確性。

原始圖像與機密文件的大小比較如表1所示。

1

可以看出,AES的加密過程并不會改變文件的大小,而提出的方法可以基本上維持大小。這是因為使用RSA來加密頭文件而是加密后的文件比原圖像大了2-3kb。

小知識之PNG

PNG,圖像文件存儲格式,其設(shè)計目的是試圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。