加密個人健康檔案

作為醫(yī)療衛(wèi)生領(lǐng)域的一個新的關(guān)注對象——個人健康檔案來說,其在衛(wèi)生信息化平臺中的面向互聯(lián)網(wǎng)應用的安全傳輸是當前需要解決的問題之一。因個人健康檔案攜帶有大量敏感信息,為了使其能在公共網(wǎng)絡中傳輸交換,所以要保證個人健康檔案的安全性首當其沖,故對個人健康檔案實現(xiàn)安全、高效地加密即是本文的目的。

一、個人健康檔案的組成

1、個人健康檔案

個人健康檔案持續(xù)記錄了一個人一生中的各種健康狀態(tài),它必須是收集、存儲每個人終身的各種健康信息并在得到授權(quán)的情況下可供指定的對象查詢。個人健康檔案包括的內(nèi)容如下:

(1)個人基本信息例如姓名、年齡、聯(lián)系方式等;

(2)各種影像診斷資料;

(3)每個階段體檢情況的記錄、亞健康檢查等。

(4)各種病史例如用藥史、過敏史,注射疫苗史等病史;

(5)各種住院出院小結(jié);

通過以上內(nèi)容我們可知個人健康檔案包括個人基本信息、個人健康信息以及住院信息等。這意味著個人健康檔案的信息種類和來源都很復雜而且信息量龐大,更為重要的是其包含敏感的個人信息。

2、個人健康檔案的格式

個人健康檔案的信息來源于多個方面,數(shù)據(jù)具有異構(gòu)性。因此所有的數(shù)據(jù)定義必須遵循衛(wèi)生機構(gòu)頒布的醫(yī)院基本數(shù)據(jù)集的相關(guān)規(guī)定,即數(shù)據(jù)結(jié)構(gòu)必須擁有統(tǒng)一的規(guī)范和標準。近年來,作為醫(yī)療信息行業(yè)標準制定的組織機構(gòu),HL7組織將XML技術(shù)和醫(yī)療行業(yè)標準相結(jié)合推出了HL7V3和CDA標準,實現(xiàn)了數(shù)據(jù)交換,為醫(yī)療信息共享打下了基礎(chǔ)。在我國醫(yī)療體系的平臺中,病史、住出院小結(jié)及體檢的格式一般參照的是HL7 CDA( Health Level 7 Clinical DocumentArchitecture)標準,影像診斷資料參考的格式是DICOM( Digital Imaging and Commumcations in Medi-cine)標準。另外,個人健康檔案要求能在一個異構(gòu)平臺上進行傳輸、交換,由于XML文檔具有可擴展性、可讀性、平臺無關(guān)性等特點,能夠很好地解決個人健康檔案傳輸過程中的信息共享問題。同時,為了保證數(shù)據(jù)的一致性和避免非法數(shù)據(jù)的產(chǎn)生,一般采用XML Schema描述及驗證XML文檔的結(jié)構(gòu)及格式。XML是跨平臺的,面向Internet環(huán)境的、只依賴于內(nèi)容的技術(shù),在處理結(jié)構(gòu)化文檔方面具有很大優(yōu)勢。

在DICOM文件中,數(shù)據(jù)元素是基本單元并通過相應的標簽唯一確定,同時數(shù)據(jù)元素構(gòu)成了所有的數(shù)據(jù)集。對于基于XML格式的個人健康檔案,可以將DICOM格式的醫(yī)學影像轉(zhuǎn)換成XML格式并添加到文檔中,即依據(jù)DICOM中的IOD(Information ObjectDefinition)標準對影像的頭部分進行組合,同時,以Base64編碼圖像部分,最后將頭信息和圖像一起添加到XML格式文檔中。如下是一個帶有醫(yī)學影像的個人健康檔案的XML片段:

< ImageDocument >

< Patient >

< Name >

< lastname > zhang < /lastname >

< Firstname > cheng < /Firstname >

< /Name >

< Sex > male

< Age > 32

< /Patient >

< Device > CT

< Image > 4AAQSkZJR--,

< /lmageDocument >

其中從< Patient>元素到元素是頭信息部分,而< Image>元素中包含的即為Base64編碼后的圖像數(shù)據(jù)。

二、個人檔案加密方法

因個人檔案一般采用XML Schema描述及驗證XML文檔的結(jié)構(gòu)及格式,所以我們就來看一下xml格式是如何加密的。

1、XML加密特點

XML加密最大的特點是可以選擇多種加密方式,即它可以按照加密粒度的不同分別對整個文檔加密、對加密文檔中的某些元素加密和對某些元素的內(nèi)容加密。與現(xiàn)在網(wǎng)絡上一些主流安全協(xié)議(例如IP安全性IPSec、傳輸層安全性TLS、安全套接字層SSL)只能對文件中的所有數(shù)據(jù)加密,而不能對某些數(shù)據(jù)元素加密,使得加密粒度過粗相比,XML不僅可以加密整個文件的數(shù)據(jù),而且可以對指定的子元素數(shù)據(jù)進行加密,而對其它不重要的數(shù)據(jù)不加密,因此解決了不同類型的安全性問題。

2加密文檔結(jié)構(gòu)

在W3G(World Wide Web Consortium規(guī)范中,對基于XML格式的文檔或數(shù)據(jù)進行加密后,按照< EncryptedData>元素的結(jié)構(gòu)創(chuàng)建新元素,替換掉原文中相應的部分,因此得到的加密文檔格式仍然是XML格式。其中,EncryptedData元素作為XML加密文檔部分的根元素,它又包含若干子元素。EncryptedData元素的語法結(jié)構(gòu)如下:

< EncryptedData ld? Type? MimeType? Encoding? >

< EncryptionMethocV>?

< ds:Keylnfo>

< EncryptedKey>?

< AgreementMethod>?

< ds:KeyName>>?

< ds: RetrievaIMethod>?

< /ds : Keylnfo >

< CipherData >

< CipherValue > ?

< CipherReference URL? > ?

< /CipherData>

< EncryptionProperies>?

< /EncryptedData>

對上述語法結(jié)構(gòu)作簡要說明,“?”表示可以出現(xiàn)一次或不出現(xiàn),“*”代表可以出現(xiàn)多次或不出現(xiàn)。

(1)EncryptedData元素是根元素,代表整個被加密的數(shù)據(jù)部分,由EncryptionMethod、ds:Keylnfo、CipherData和EncryptionProperties等子元素組成。

(2) EncryptionMethod元素提供了對加密對象加密所使用的加密算法。

(3) ds: Keylnfo元素包含了加密算法的密鑰相關(guān)信息,該元素具有很大靈活性,根據(jù)通信雙方約定,可能是一個密鑰名稱、密鑰值、數(shù)字證書,甚至是獲得密鑰的轉(zhuǎn)換方法,目的是確保密鑰的安全性,該元素包括EncryptedKey AgreementMethod、ds: KeyName和ds:RetrievalMethod等4個子元素。

(4) CipherData元素包含CipherValue和CipherReference兩個子元素,當加密數(shù)據(jù)信息保存在XML文檔中時,直接使用CipherValue子元素密封加密后的數(shù)據(jù);如果加密后的數(shù)據(jù)置于文檔外部的某一個URL地址時,則將CipherReference子元素表示該URL地址。

(5) EncryptionProperties元素提供了加密數(shù)據(jù)和密鑰的附加信息,比如時間戳、加密序列號等。

3、加密方式和算法

XML加密采用了對稱算法和非對稱算法,前者用于XML數(shù)據(jù)的加密,后者用于管理對稱算法的密鑰。這樣就集成了兩類加密算法的優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。一般來說,非對稱加密算法RSA和ECC,建議采用1024位,對稱加密算法3DES和AES采用128位即可Q W3C在其XML加密規(guī)范中規(guī)定了多達11種加密算法,具體可參見《XML Encryption Syntax andProcessing》中的相關(guān)規(guī)范。本文中的具體加密方式為AES對稱加密算法與RSA非對稱算法的結(jié)合,就是采用RSA算法來加密AES算法的密鑰,采用AES算法來加密XML的數(shù)據(jù),以達到兼顧速度與安全兩方面的目的。

4、XML加密流程

首先,接收方R通過非對稱加密算法RSA生成一對非對稱密鑰,分別為公鑰PUK和私鑰PRK,并將生成的公鑰PUK和非對稱加密算法RSA傳給發(fā)送方;接著,發(fā)送方將XML明文數(shù)據(jù)轉(zhuǎn)換為文檔對象模型,提取要加密的對象(包括整個文檔、特定的元素或內(nèi)容);同時,發(fā)送方根據(jù)對稱加密算法AES生成一個秘密的對稱密鑰SMK,并使用對稱密鑰SMK對XML文檔中的預定對象進行加密;將加密后的信息仍以XML數(shù)據(jù)格式給出,替換原有的XML數(shù)據(jù),同時用接收到的公鑰PUK和非對稱加密算法RSA對對稱密鑰SMK加密;最后,發(fā)送方將加密的數(shù)據(jù)、加密的對稱密鑰SMK以及其它信息結(jié)合在一起,生成一個新的加密XML文檔,并將新的XML文檔發(fā)送給接收方。

5、xml解密流程

接收方解析收到的XML文檔,取出加密的數(shù)據(jù)、加密的對稱密鑰SMK和需要的附加信息,使用相應的非對稱算法RSA和私鑰PRK解密獲得對稱密鑰SMK,之后使用SMK解密XML文檔中被加密的部分得到XML明文文檔。

XML加解密流程如圖1所示。

XML加解密流程

三、個人檔案加密實現(xiàn)與結(jié)果分析

1、個人檔案加密實現(xiàn)平臺

本文采用C#語言在Visual Studio. NET 2008環(huán)境下實現(xiàn)基于XML的個人健康檔案的加密。由于微軟公司不斷完善其,NET平臺下的XML的各種技術(shù),對XML的加密可以使用其類庫來編程,實現(xiàn)了完全的內(nèi)部支持。在.NET Framework的XML加密技術(shù)中有兩個重要的命名空間,即System. Xml與System.Security. Cryptography,它們中的一些類可以為加密程序?qū)崿F(xiàn)提供有力的支持,例如直調(diào)用接Cryptography、RSA類來生成RSA非對稱密鑰,并以XML文檔形式分別保存私鑰與公鑰。

2、實現(xiàn)結(jié)果

對< Image>元素進行加密,得到的部分結(jié)果如下:

< Name >

< lastname > zhang < /lastname >

< Firstname > cbeng < /Firstname >

< Sex > male < /Sex>

< Age >32< /Age >

< Device > CT< /Device >

-< EncryptedData Type = " http ://www. w3. org/2001/04/xmlenc#Element" >

< EncryptionMethodAl~;onthm = .. http://wwwi w3. org/2001/04/xrnlenc#aes128 -cbcl~ / >

< ds : Keylnfo xmlns : ds = " http ://www. w3. org/2000/09/xmldsig#" >

< ds : Keylnfo>

< ds : KeyName > RSAKey< /ds : KeyName >

< /ds : Keylnfo >

< CipherData >

< CipherValue >

< EncryptedSymmetncKey > Nb4A43dH6 ,

< /EncryptedSymmetricKey >

< EncryptedSymme.tricIV > RQsKljIEBtV--

<< /CipherValue >

< /CipherData >

< /ds : Keylnfo >

< CipherData > --

< C ipherValue > DlbIB + rBYWip2Fxll c6BQg.;.-.- < /Ci-pherValue >

< /CipherData >

< /EncryptedData >

< /ImageDocument >

其中,< EncryptedData>元素部分就是對醫(yī)學影像部分進行XML加密后的內(nèi)容顯示,其格式仍然是XML下面對其中一些元素作必要的說明:

(1)子元素,使用URI來唯一標識所采用的加密算法,其目的是確保通信雙方可以在加密算法上保持一致。

(2)子元素,表達了加密時所使用的密鑰信息,它可以根據(jù)通信雙方的約定,記錄密鑰名稱、密鑰值、數(shù)字證書,甚至獲得密鑰轉(zhuǎn)換方法的描述。從而確保密鑰的安全性。

(3)子元素,說明被加密了的數(shù)據(jù)。

(4)子元素,描述加密數(shù)據(jù)和密鑰的附加信息,例如時間戳、加密序列號等。

發(fā)送者對XML文檔元素加密時,將創(chuàng)建符合以上結(jié)構(gòu)的< EncryptedData>元素;接收者根據(jù)從元素中得到的解密所需的加密算法、參數(shù)和密鑰信息,正確地進行解密。

3、安全與效率分析

本文的加密采用的是對稱加密和非對稱加密相結(jié)合的混合加密方式a其中,對稱加密采用的是128位AES加密方法,在對稱加密中AES是目前公認的最好的大數(shù)據(jù)量加密標準,128位也足以滿足現(xiàn)在的安全要求,當然隨著計算機的快速發(fā)展256位AES將成為日后主流選擇。另外,非對稱加密算法使用的是RSA,RSA和ECC是非對稱加密算法的代表,由于在相同的安全強度下,ECC較RSA具有空問需求小、運算速度快、帶寬資源需求低等優(yōu)點,因此ECC更多運用在數(shù)字簽名方面,菲對稱加密一般則采用的是RSA。

同時,實驗實現(xiàn)的圖像文檔加密速率達到IOM/s,如果再采用基于小波變換的JPEC-2000有損壓縮算法,對影像進行20:1的有效壓縮,那么對壓縮圖像的加密效率將大大提高。因此,對于幾十兆,甚至是幾百兆的醫(yī)學影像文檔加密所需時間將控制在幾秒以內(nèi)a故RSA和AES的混合加密方式不僅為數(shù)據(jù)安全多加了一道保險,同時也保證了加密效率,滿足實際使用時的要求。

小知識之健康檔案健康檔案,是記錄每個人從出生到死亡的所有生命體征的變化,以及自身所從事過的與健康相關(guān)的一切行為與事件的檔案。具體的內(nèi)容主要包括每個人的生活習慣、以往病史、診治情況、家族病史、現(xiàn)病史、體檢結(jié)果及疾病的發(fā)生、發(fā)展、治療和轉(zhuǎn)歸的過程等。