劉西林 嚴(yán)廣樂
(上海理工大學(xué)管理學(xué)院 上海 200093)
隨著互聯(lián)網(wǎng)+技術(shù)的廣泛應(yīng)用和醫(yī)院信息化的不斷發(fā)展,電子病歷已成為醫(yī)院信息化進(jìn)程中的必然結(jié)果,保證病歷信息的真實(shí)性、完整性和對患者隱私信息的保護(hù)已成為當(dāng)前電子病歷中的熱點(diǎn)問題[1]。隨著健康信息技術(shù)的發(fā)展,醫(yī)院之間可能就相關(guān)醫(yī)患信息進(jìn)行傳遞、交流,減少患者重復(fù)檢驗(yàn)、檢查及用藥,提升醫(yī)療資源運(yùn)用效率[2]。這在另一方面也增加了電子病歷在操作、存儲和傳遞方面的風(fēng)險,使得電子病歷越來越容易被盜取、復(fù)制、外泄、篡改。因此,對電子病歷加密的研究具有重大意義。
由于圖像具有冗余度高、數(shù)據(jù)量大、像素間相關(guān)性強(qiáng)等特點(diǎn),傳統(tǒng)的加密算法不太適用于圖像加密,圖像加密需要使用快速的方法[3]。為了提高數(shù)字圖像的安全度,近年來對數(shù)字圖像加密的研究很多[4],但有的存在密鑰空間小的問題,有的存在信息熵偏差大的問題。電子病歷圖像作為攜帶病人信息的圖像,目前對它的加密研究很少,而周廣彬等[7]提出的混沌加密電子病歷雖然達(dá)到了加密電子病歷圖像的效果,但是僅使用了Henon混沌算法進(jìn)行加密。Henon作為簡單的二維非線性混沌系統(tǒng),有著低維混沌系統(tǒng)密鑰空間小、安全性不高的缺點(diǎn)[8]。而且周廣彬等對電子病歷信息使用的是MD5算法產(chǎn)生的病歷摘要,但是MD5算法已經(jīng)被破解,從而使得安全性存在問題。
本文通過對電子病歷圖像使用SHA-1算法生成160 bit的哈希值作為病歷摘要來監(jiān)測電子病歷傳播的安全性;使用二維圖像展成一維向量的無重復(fù)置亂和GF(24)域乘法的兩次不同的擴(kuò)散算法對電子病歷圖像進(jìn)行加密,而后生成密文圖像;三維Lorenz混沌映射產(chǎn)生密碼。傳輸密文圖像就達(dá)到了傳播電子病歷的目的,這樣可以有效防止電子病歷外泄,實(shí)現(xiàn)了對電子病歷的隱秘傳輸[9]。這也使得不法分子看到的是密文圖像,并不能看到真實(shí)的電子病歷圖,另一方面解密后的秘密圖像再次經(jīng)過SHA-1算法編碼產(chǎn)生的病歷摘要和發(fā)送方的病歷摘要匹配,可以檢查電子病歷是否在傳播過程中被私自篡改。這些方法使電子病歷在傳播中得到了多重保護(hù)。
SHA算法是密碼散列函數(shù)家族,是經(jīng)過FIPS所認(rèn)證的安全散列算法。SHA-1算法就是其中一個,它可以將明文信息轉(zhuǎn)換成字符串,再進(jìn)行補(bǔ)位操作,然后附加長度通過函數(shù)計(jì)算得出唯一的160 bit的信息摘要[10]。圖像的明文信息出現(xiàn)任何微小的變化經(jīng)過SHA-1編譯的哈希值即病歷摘要都會發(fā)生顯著的變化。每張電子病歷經(jīng)過使用SHA-1算法相當(dāng)于擁有了“指紋”。
本文采用的是Lorenz系統(tǒng)映射。其具體的動力學(xué)方程如下所示:
(1)
式中:a、b、c、w、r為混沌系統(tǒng)的參數(shù),當(dāng)a=10,b=8/3,c=28,-1.52≤r≤-0.06時,式(1)處于混沌狀態(tài)[11]。
在密碼學(xué)中,GF(p)即伽羅華域,是一個非常重要的有限域,并且域中必須有單元。GF(p)即modp,p為素?cái)?shù),結(jié)果是有限域中元素。在實(shí)際應(yīng)用中,為了防止數(shù)據(jù)丟失,引入了GF(pw),其中p為素?cái)?shù),通常為2。伽羅華域的元素可以通過該域上的本原多項(xiàng)式生成,通過本原多項(xiàng)式得到的域,其加法單元是0,乘法單元是1。在GF(24)域中取既約多項(xiàng)式m(x)=x4+x+1。
方案設(shè)計(jì)流程圖如圖1所示。
圖1 方案設(shè)計(jì)圖
將電子病歷圖像轉(zhuǎn)換成灰度圖像,再經(jīng)過SHA-1算法產(chǎn)生的哈希值作為病歷摘要,值為42817e38ab192
e6b3bb2491578ab3cf65a5cf7ec。發(fā)送方保存該病歷摘要,隨后與接收方解密電子病歷圖像再經(jīng)過SHA-1算法編碼產(chǎn)生的哈希值進(jìn)行匹配。
本文提出的加密算法首先對原始圖像的像素點(diǎn)的位置進(jìn)行置亂操作;然后改變圖像的灰度值進(jìn)行正向擴(kuò)散與逆向擴(kuò)散;混沌Lorenz系統(tǒng)的參數(shù)和初始值作為密鑰,產(chǎn)生對應(yīng)的密碼。解密過程是加密過程的逆過程。假設(shè)原始圖像矩陣大小為M×N,具體加密步驟如下:
1) 給定密鑰K的值即混沌Lorenz系統(tǒng)的各個變量的值(初值x0、y0以及z0和參數(shù)值w0)。迭代超混沌系統(tǒng)產(chǎn)生長度為M×N浮點(diǎn)數(shù)形式的偽隨機(jī)序列。
2) 將明文圖像矩陣按行展開成一維向量,記作A。借助于混沌系統(tǒng)產(chǎn)生的M×N的偽隨機(jī)序列xi,i=1,2,…,M×N,X中重復(fù)出現(xiàn)的偽隨機(jī)數(shù)只保留第一個,將{1,2,…,M×N}中沒有X中的數(shù)值按從小到大的順序添加到X的末尾,最后交換A(xi)與A(xMN-i+1)的位置,從而完成了二維圖像展成一維向量的無重復(fù)置亂算法。
3) 置亂算法之后對像素點(diǎn)的灰度值采用GF(24)域乘法運(yùn)算的擴(kuò)散算法,本文采用的是正向擴(kuò)散與逆向擴(kuò)散相結(jié)合的方法。正向擴(kuò)散和逆向擴(kuò)散如下所示:
(2)
(3)
式中:P為明文展開成的一維向量,C、S為密碼向量,初值C0、S1來自于密鑰,i=1,2,…,MN。H表示數(shù)據(jù)的高4位,L表示數(shù)據(jù)的低4位。
經(jīng)過一次置亂和正向與逆向兩次不一樣的擴(kuò)散,從而得到了電子病歷圖像的密文圖像。解密是加密的逆過程,不再贅述。
在MATLAB 7.1環(huán)境下對本文提出的算法進(jìn)行仿真實(shí)驗(yàn),得出結(jié)果。原始電子病歷明文圖像如圖2所示,加密后電子病歷密文圖像如圖3所示,正確密鑰解密密文圖像如圖4所示,錯誤密鑰解密密文圖像如圖5所示。
圖2 電子病歷明文圖像圖3 電子病歷密文圖像
圖4 正確密鑰解密密文圖像 圖5 錯誤密鑰解密密文圖像
接收方收到電子病歷圖像密文經(jīng)過解密操作,再使用SHA-1算法編碼產(chǎn)生的哈希值為:42817e38ab192
e6b3bb2491578ab3cf65a5cf7ec。若在傳播中圖像有改動再次編碼得出的哈希值為:b3df52208a35ba5a0ada56
862a07a7a0b7f9d3bb(改動位置不同,哈希值不同)。
接收方將得到的哈希值與發(fā)送方的病歷摘要進(jìn)行匹配,若存在差異,說明該病歷圖像在傳播中存在被篡改的行為;若相同,則說明病歷圖像安全傳輸。
加密可以將明文圖像轉(zhuǎn)換成噪聲從而隱藏信息。直方圖與直方圖的x2檢驗(yàn)可以描述圖像的相關(guān)性。一般情況下,圖像像素灰度的直方圖越服從均勻分布,x2檢驗(yàn)值越小,越能有效地抵抗統(tǒng)計(jì)分析的攻擊。電子病歷圖像明文直方圖如圖6所示,電子病歷圖像密文直方圖如圖7所示,電子病歷圖像明文與密文的x2值如表1所示。從圖與表可知密文圖像的像素灰度值更接近于均勻分布,說明加密效果比較好。
圖6 明文直方圖 圖7 密文直方圖
圖像x2值明文3.244 2e+06密文267.321 9
明文圖像相鄰像素之間有很強(qiáng)的相關(guān)性,而這些相關(guān)性內(nèi)部存在著明文的部分信息,若被不法分子發(fā)現(xiàn)利用,很可能會造成圖像的泄露[12]。好的加密算法能夠使得圖像的像素之間的相關(guān)性變?nèi)?。本文從明文與密文圖像中隨機(jī)挑選了2 000對相鄰像素點(diǎn),繪畫出相關(guān)性圖像如圖8所示,計(jì)算出了它們在水平、垂直、正對角與反對角的相關(guān)系數(shù)如表2所示。從圖與表可以看出加密后圖像像素之間的相關(guān)性明顯降低,有效地保護(hù)了圖像信息。相關(guān)系數(shù)的計(jì)算公式為:
(4)
式中:N為任取的相鄰像素點(diǎn)的對數(shù),它們的灰度值為(ui,vi),i=1,2,…,N,向量u={ui},向量v={vi}。
明文水平方向(a) 密文水平方向(b)
明文垂直方向(c) 密文垂直方向(d)
明文的正對角方向(e) 密文的正對角方向(f)
明文的反對角方向(g) 密文的反對角方向(h)圖8 相關(guān)性圖像
圖像水平垂直正對角反對角明文0.274 10.775 50.117 90.142 5密文0.015 2-0.028 60.003 80.007 1
信息熵反映的為圖像信息的不確定性,一般認(rèn)為,圖像信息熵越大,信息量越大,事件的隨機(jī)性越大[11]。為了體現(xiàn)本文算法的優(yōu)越性,不僅計(jì)算出電子病歷圖像的明文與密文的信息熵,而且用本文算法加密經(jīng)典圖像Lena與其他文獻(xiàn)進(jìn)行對比,具體的結(jié)果如表3所示。信息熵的計(jì)算公式為:
(5)
式中:L為圖像灰度等級數(shù),P(i)表示灰度值i出現(xiàn)的概率。
對于L=256的灰度圖像,信息熵H理論值為8,因?yàn)榉抡鎸?shí)驗(yàn)得到電子病歷的圖像密文的信息熵幾乎為8。又經(jīng)過本文算法、文獻(xiàn)[4]算法和文獻(xiàn)[6]算法加密同一幅圖像Lena計(jì)算信息熵,對比可以看出本算法的信息熵更接近8,表示本加密算法更能有效地抵抗數(shù)據(jù)攻擊[13]。
表3 信息熵結(jié)果
密鑰空間是指所有合法密鑰的集合,加密算法越好,密鑰空間越大[14]。本文的密鑰為Lorenz系統(tǒng)的初始值,即K={x0,y0,z0,w0},其中x0∈(-40,40)、y0∈(-40,40)、z0∈(1,81)、w0∈(-250,250),x0、y0和z0的步長為10-13,w0的步長為10-12,可得密鑰空間大約為2.56×1059,密鑰空間約為197 bit,而文獻(xiàn)[5]的密鑰空間大小為(1016)2,因此,本算法的密鑰空間更大,抵抗暴力攻擊更有效。
密鑰敏感性分析旨在將密鑰做微小變化后,再加密同一圖像得到的密文圖像,若密文圖像存在顯著差別,則稱密鑰敏感性強(qiáng),反之,密鑰敏感性則弱[11]。衡量大小相同圖像差別有幾個常用指標(biāo):NPCR記錄不同的像素點(diǎn)個數(shù)占全部像素點(diǎn)的比例,具體公式如下:
P2(i,j))|×100%
(6)
UACI記錄兩幅圖像相應(yīng)像素點(diǎn)的差值與最大差值(255)比值的平均值,具體公式如下:
(7)
BACI首先求得兩幅圖像的差圖像的絕對值,然后將圖像分解,計(jì)算全部小圖像任意兩個像素點(diǎn)的差值的絕對值的平均值與像素最大差值(255)的比值,具體公式如下(假設(shè)圖像大小為M×N的P1和P2兩幅圖像):
(8)
式中:m為小圖像塊,i=1,2,…,(M-1)(N-1)。
本文從密鑰空間中隨機(jī)選取1 000個值,分別對x0、y0與z0改變10-13,w0改變10-12,計(jì)算的1 000個NPCR、UACI與BACI的平均值如表4所示。本文計(jì)算指標(biāo)的結(jié)果很接近它們的理論期望值99.609 4%、33.463 5%與26.771 2%,說明密鑰發(fā)生微小的變化后,密文相差很大,也進(jìn)一步說明本加密算法密鑰敏感性強(qiáng),具有很強(qiáng)的抗差分能力。
表4 密鑰敏感性分析結(jié)果 %
本文針對電子病歷傳輸中的安全性問題提出了基于混沌映射與GF(24)域乘法運(yùn)算的電子病歷圖像的加密算法。該算法通過對傳輸?shù)碾娮硬v圖像進(jìn)行加密與監(jiān)測相結(jié)合的方法,增強(qiáng)了傳輸中電子病歷圖像的安全性與可靠性。實(shí)驗(yàn)結(jié)果表明,本算法密鑰空間大,能有效抵抗暴力、統(tǒng)計(jì)以及差分攻擊。該算法以后會有很強(qiáng)的潛在應(yīng)用價值,但在提高加密與解密效率的問題上需要進(jìn)一步提高,這個問題是今后需要研究的方向。