臨床信息交換中圖像文件加密的應(yīng)用
在臨床數(shù)據(jù)交換的過程中,圖像數(shù)據(jù)的通信成為交換中越來越重要的部分,在傳輸?shù)倪^程中,數(shù)據(jù)可能被截獲、修改或公開。因此,許多用以保護(hù)這些圖像的方法被提出來,防止其受到未授權(quán)的訪問或者篡改;然而,它們均有一定的局限性。為此,我們提出了一個(gè)結(jié)合RSA、AES和MurmurHash的加密框架,用來彌補(bǔ)這些局限性。
一、RSA、AES和MurmurHash的加密方法
大多數(shù)圖像文件按照其圖像標(biāo)準(zhǔn),具有可以用來識(shí)別圖像類型的文件頭或標(biāo)記段。比如,PNG圖像有一個(gè)8位的文件署名以識(shí)別其文件類型,署名后是一系列的數(shù)據(jù)塊(Chuck),每一個(gè)數(shù)據(jù)塊包含了圖像的一些特定信息。其中四種類型是具有決定性的數(shù)據(jù)塊,文件頭數(shù)據(jù)塊(IHDR)和調(diào)色板數(shù)據(jù)塊(PLTE)決定了圖像數(shù)據(jù)塊(IDAT)的解讀方式。所以在文中,嘗試將除圖像數(shù)據(jù)塊之外的其余數(shù)據(jù)塊和圖像文件頭一起抽離出來,剩下的圖像數(shù)據(jù)塊就很難單獨(dú)用于圖像讀取。
為了保證解密圖像與原圖像完全一致,用MurmurHash3來校驗(yàn)和比對(duì)。用AES來對(duì)圖像像素部分也就是圖像數(shù)據(jù)塊進(jìn)行加密,然后把AES密鑰、初始向量、校驗(yàn)值和抽離的數(shù)據(jù)塊一起用RSA公鑰加密。加密文件由RSA加密部分與AES加密部分組成。
1、加密算法與Hash函數(shù)
RSA是最成功的非對(duì)稱加密算法之一,加密的公鑰與解密的私鑰并不相同。明文可以分別通過以下兩個(gè)公式來加密和恢復(fù)。
盡管RSA不適合加密大體積的文件,但是因?yàn)槠渌惴ǖ牟粚?duì)稱性,只要保證私鑰的安全就能保證加密文件的安全,因此整體安全性較高。
AES是目前最安全、最常用的對(duì)稱算法之一。AES基于取代、置換和線性變換,每次操作對(duì)16字節(jié)的數(shù)據(jù)塊進(jìn)行執(zhí)行。這些操作被操作多次,被稱為“Round”。每一輪中,唯一的roundkey通過密鑰計(jì)算出來。然而,AES算法是通過同一個(gè)密鑰來進(jìn)行加密與解密,因此在任何情況下保證密鑰的安全并不容易。
MurmurHash是一個(gè)適用于一般的基于散列查找的非加密校驗(yàn)函數(shù)。它是由奧斯汀艾波于2008年創(chuàng)建的,并且已經(jīng)使用在公共領(lǐng)域。與其他有名的校驗(yàn)函數(shù)相比,最新版本的MurmurHash即MurmurHash3速度更快,并且在64位系統(tǒng)下性能相對(duì)更好。
2、提出的框架
RSA公鑰與私鑰已經(jīng)生成,發(fā)送方持有公鑰,接收方持有密鑰。提出方法的處理流程如圖1所示。
加密圖像的具體步驟如下:
第一步:通過MurmurHash3獲取原始圖像的校驗(yàn)值,并將其值轉(zhuǎn)換為字節(jié);
第二步:生成256位的AES密鑰與初始向量;
第三步:通過圖像中的“文件署名”標(biāo)簽來識(shí)別圖像的類型,將圖像中的像素?cái)?shù)據(jù)取出,并用生成的AES密鑰與初始向量以“CRC模式”對(duì)其進(jìn)行加密;
第四步:將圖像剩余部分(除去圖像像素?cái)?shù)據(jù))包括文件頭、調(diào)色板等重新整合,從而來確保后面的處理過程是可讀且是可逆轉(zhuǎn)的,將生成的AES密鑰、初始向量及校驗(yàn)值拼到上述整合的部分;
第五步:將第四步得到的部分(也就是圖中的“文件頭”用RSA公鑰進(jìn)行加密,然后將RSA加密部分與第三步得到的AES加密的部分組成的文件即是圖像對(duì)應(yīng)的加密文件。
解密流程如圖2所示。
加密后的文件結(jié)構(gòu)如圖3所示。
解密的具體步驟如下:
第一步:基于“File Offset”字節(jié),使用RSA密鑰對(duì)RSA加密部分進(jìn)行解密。解密后的文件可以分成三個(gè)部分,即圖像信息部分、AES密鑰部分及校驗(yàn)值部分。
第二步:通過分析“文件署名”標(biāo)簽來識(shí)別圖像的類型。將圖像信息部分作為新文件的文件頭。
第三步:從AES密鑰部分中分離出AES密鑰與初始向量,利用密鑰與向量對(duì)圖像像素加密部分進(jìn)行解密(以“CBC”模式)。將解密后的圖像像素部分與新文件頭組成解密后的文件。
第四步:通過MurmurHash3獲取解密圖像的校驗(yàn)值,并將其值與校驗(yàn)部分進(jìn)行比對(duì)。如果相同即說明解密圖像與原圖像完全相同,沒有受到任何更改。
二、測(cè)試與結(jié)果
在本文所做的測(cè)試中,對(duì)8種不同大小的圖像利用不同的方法進(jìn)行加密,來驗(yàn)證提出方法的有效性。整個(gè)測(cè)試過程在64位window 7系統(tǒng)下以C#編程來完成。
首先,可以通過比對(duì)校驗(yàn)值來檢查文件是否被修改或損壞。記錄了RSA、AES和提出方法的加密時(shí)間和解密時(shí)間。
加密解密的速度比較如圖4、5所示。
通過分析這兩個(gè)圖,可以看出提出方法所用的時(shí)間比RSA用的時(shí)間少的多。隨著文件大小的增加,RSA加密的速度也越來越慢,也驗(yàn)證了RSA不適合對(duì)大文件進(jìn)行加密的事實(shí)。并且,提出的方法速度比AES要稍慢一些,兩者的差距可以忽略不計(jì),因?yàn)樘岢龅姆椒ǖ募用軓?qiáng)度更強(qiáng),安全性相對(duì)更高。AES密鑰如果被破解,圖像像素加密部分可以被恢復(fù),但是沒有圖像文件頭,恢復(fù)的文件還是不可解讀的,只有RSA密鑰被破解才能破解整個(gè)文件。并且RSA密鑰被存儲(chǔ)在接收方的電腦上,只要接收方保護(hù)密鑰的強(qiáng)度足夠,而破解2048位的密鑰需要相當(dāng)長(zhǎng)的時(shí)間,這也是RSA相對(duì)于AES的優(yōu)勢(shì)之一。MurmurHash的校驗(yàn)比對(duì)進(jìn)一步提高的接受文件的準(zhǔn)確性。
原始圖像與機(jī)密文件的大小比較如表1所示。
可以看出,AES的加密過程并不會(huì)改變文件的大小,而提出的方法可以基本上維持大小。這是因?yàn)槭褂肦SA來加密頭文件而是加密后的文件比原圖像大了2-3kb。
PNG,圖像文件存儲(chǔ)格式,其設(shè)計(jì)目的是試圖替代GIF和TIFF文件格式,同時(shí)增加一些GIF文件格式所不具備的特性。














