指紋信息加密技術(shù)如何實(shí)現(xiàn)電子病歷加密

隨著國(guó)內(nèi)“數(shù)字化醫(yī)院”建設(shè)的蓬勃發(fā)展,各醫(yī)療部門對(duì)電子病歷系統(tǒng)的需求也迅速增長(zhǎng)。為了建立更成熟的電子病歷系統(tǒng),有效的安全措施是必不可少的。為此提出一種指紋信息的電子病歷(EMR),利用指紋的唯一性等特征,設(shè)計(jì)出一種基于指紋信息的電子病歷XML文檔加密方法。

一、如何獲取指紋信息

近年來(lái),自動(dòng)指紋識(shí)別系統(tǒng)(AFIS)迅速發(fā)展,由于其唯一性、永久性和可采集性等顯著優(yōu)點(diǎn),已被廣泛用于銀行等行業(yè)領(lǐng)域中的個(gè)人身份認(rèn)證。在EMR系統(tǒng)設(shè)計(jì)時(shí)融AAFIS技術(shù),醫(yī)生在登陸電子病歷系統(tǒng)時(shí)只需輸入自己指紋就可以查看、修改有自己電子簽名的電子病歷。但是,EMR系統(tǒng)設(shè)計(jì)者通常缺少對(duì)指紋識(shí)別算法的深人研究,過(guò)于依賴第三方算法平臺(tái)提供者,會(huì)增加醫(yī)院的維護(hù)和使用成本。為避免這些問(wèn)題,我們?cè)谠O(shè)計(jì)EMR系統(tǒng)時(shí),對(duì)近幾年提出的指紋識(shí)別算法進(jìn)行了充分的研究和分析,提出了一個(gè)在EMR系統(tǒng)中綜合應(yīng)用指紋識(shí)別技術(shù)的解決方案。AFIS有兩種模式工作:驗(yàn)證,即1:1模式;辯識(shí),即1:N模式。它由指紋圖像采集、圖像評(píng)估、圖像預(yù)處理、特征提取等幾個(gè)功能模塊構(gòu)成。 指紋的細(xì)節(jié)特征是指紋的端點(diǎn)和分叉點(diǎn)。端點(diǎn)是指一條紋線的終結(jié)點(diǎn),而分叉點(diǎn)是指一條紋線在某點(diǎn)分成兩條或多條紋路。如圖1所示。? 無(wú)論是指紋圖像還是指紋分類,都需要提取指紋的有效特征值,為了保證圖像特征值的可靠性,必須對(duì)獲取的指紋圖像進(jìn)行預(yù)處理,以減少噪聲干擾。

1、圖像質(zhì)量評(píng)估

在圖像預(yù)處理之前加入一種新的圖像質(zhì)量評(píng)估的方法。指紋圖像評(píng)估是指紋識(shí)別中的一個(gè)圖像預(yù)處理子模塊。通常指紋采集器采集的指紋圖像質(zhì)量比較小,易受外界環(huán)境干擾。為了保證整個(gè)系統(tǒng)的可靠性和穩(wěn)定性,需要排除不能滿足要求的指紋,特別是在指紋登記過(guò)程中,一定要保證指紋模板的可靠性。低質(zhì)量指紋圖像,如濕手指、偏手指、干手指等。

2、指紋圖像分割

圖像分割是將圖像中有意義的特征或需要應(yīng)用的特征提取出來(lái)。指紋特征分割的主要目的是把指紋圖像中質(zhì)量差的、在后續(xù)處理中很難恢復(fù)的圖像區(qū)域與有效區(qū)域分開(kāi)來(lái),使后續(xù)處理能夠集中在有效區(qū)域。

3、指紋圖像增強(qiáng)

圖像增強(qiáng)用于圖像不清晰的部分,依據(jù)某些條件,改善這些區(qū)域的質(zhì)量,以保證后續(xù)處理的可靠性。對(duì)于指紋圖像的增強(qiáng)只要根據(jù)脊線垂直方向的灰度變化呈正弦波的假設(shè),設(shè)計(jì)各種具有方向性的濾波器。 采用基于Gabor濾波器的紋理濾波算法,該類算法利用Gabor濾波器具有頻率和方向的選擇特性,增強(qiáng)紋線和脊線之間的對(duì)比度,以達(dá)到同時(shí)在時(shí)域和頻域獲得最佳局部化。同時(shí)Gabor濾波器具有頻率選擇性和相位選擇性,空域和頻域中具有適當(dāng)?shù)穆?lián)合分辨率,采用聯(lián)合參數(shù)作為帶通濾波器可以保證指紋脊線和谷線結(jié)構(gòu)的真實(shí)性。 Gahor濾波器如下式所示:

其中θ表示紋線的方向,f標(biāo)準(zhǔn)紋線頻率,σx2、σy2為高斯包絡(luò)常量。

4、指紋圖像二值化

指紋圖像的二值化是通過(guò)設(shè)定的閾值,將一幅圖像的灰度值由兩種級(jí)別表示的黑白圖像,黑像素代表指紋的前景區(qū),白像素表示指紋的背景區(qū)。采用自適應(yīng)動(dòng)態(tài)閾值法,該算法首先假定該閾值能夠?qū)^(qū)域像素劃分?jǐn)?shù)量相等的兩個(gè)集合,然后根據(jù)統(tǒng)計(jì)規(guī)律來(lái)選擇合適判定閡值,將對(duì)應(yīng)區(qū)域的指紋圖像劃分為大致相等兩個(gè)區(qū)域:前景區(qū)和背景區(qū)。算法如下:首先將增強(qiáng)后的指紋圖像進(jìn)行分成wxw的小塊計(jì)算區(qū)域內(nèi)的灰度均值,并把此均值作為區(qū)域圖像的二值化閾值;

其中Tawg(i,j)在區(qū)域(i,j)灰度平均值,I(i,j)為區(qū)域在點(diǎn)(i,j)像素點(diǎn)的值; 然后通過(guò)(2)式來(lái)逐步判定,實(shí)現(xiàn)指紋圖像的二值化;

其中,I(i,j)為二值化后的指紋圖像的像素值。

5、指紋圖像細(xì)化

指紋圖像的快速細(xì)化算法的基本原理是通過(guò)一種逐次去除邊界點(diǎn)進(jìn)行多次迭代的算法??焖偌?xì)化算法具體描述:設(shè)己知目標(biāo)點(diǎn)標(biāo)記為1,背景點(diǎn)標(biāo)記為0,邊界點(diǎn)定義為本身標(biāo)記為1,其中8個(gè)鄰域至少有一個(gè)點(diǎn)標(biāo)記為0。如圖2所示:

其中任意像素點(diǎn)P,P的8鄰點(diǎn)是以P為中心3x3的矩陣中8個(gè)鄰域的點(diǎn)即P1-P8,P的8鄰點(diǎn)是為P1,P3,P5,P7。通過(guò)搜索整個(gè)指紋用像,以確定指紋閣像紋線的邊界點(diǎn),對(duì)邊界點(diǎn)定義麗個(gè)特征量S1和S2,同時(shí)滿足:S1=2且S1≠1,且S1<6則可以刪除該點(diǎn),通過(guò)S1和S2條件判斷此邊界點(diǎn)是否滿足刪除條件:對(duì)下一個(gè)邊界點(diǎn)繼續(xù)掃描,直到?jīng)]有發(fā)現(xiàn)可以刪除的點(diǎn)為止。

6、特征點(diǎn)提取

在細(xì)化圖像上脊線由單像素寬線條表示,尋找細(xì)節(jié)點(diǎn)是逐行掃描脊線上的像素點(diǎn),對(duì)每個(gè)像素點(diǎn)的8鄰點(diǎn)計(jì)算,設(shè)Cn(P)為交叉數(shù)。Sn(P)為8鄰域像素:

當(dāng)Cn(P)=1,Sn(P)=1,稱為端點(diǎn),Cn(P)=3,Sn(P)=3,稱為叉點(diǎn)。圖3所示為指紋特征提取的過(guò)程圖。

根據(jù)不同手指以及手指的按壓位置的不同,提取后的指紋模板信息量在800bit一1300bit。

二、指紋信息對(duì)電子病歷加密算法研究

1、Rijndael算法結(jié)構(gòu)描述

一個(gè)word為32比特?cái)?shù)據(jù),所以128比特的數(shù)據(jù)信息分為4word,128比特密鑰也為4word,定義Nb為數(shù)據(jù)信息列數(shù),Nk為密鑰word數(shù),Nr為循環(huán)加密次數(shù)。 表1為不同密鑰的Nb、Nk、Nr的關(guān)系。

Rijndael算法把數(shù)據(jù)塊的128bit輸入分組用以字節(jié)為單位的矩陣方陣描述,該數(shù)組被復(fù)制到State數(shù)組中。加密過(guò)程分為四個(gè)階段:密鑰擴(kuò)展、輪密鑰加、Nr-1輪變換及最后一輪變換。相關(guān)過(guò)程如下:

(1)Static:指明文分組及每次變換的中間結(jié)果,是一個(gè)4xNb的矩陣.Nb為數(shù)據(jù)塊長(zhǎng)度除以32;

(2)字符代換:用一個(gè)簡(jiǎn)單的查表操作代替了基于矩陣乘法的復(fù)雜仿射變換。S盒是一個(gè)16 x16字節(jié)矩陣,包含8bit值所能表達(dá)的256種可能的變換;把State中每個(gè)字節(jié)的高4位作為行值,低4位作為列值,取出S盒中對(duì)應(yīng)行列的元素作為新的字節(jié)輸出;

(3)行變換:State的第一行保持小變,第2、3、4行分別循環(huán)左移1、2、3個(gè)字節(jié);

(4)列變換:將狀態(tài)看作伽羅華域GF(2^8)上的4位向量并被伽羅華域GF(2^8)上的一個(gè)固定逆方陣A乘,即對(duì)各個(gè)字節(jié)進(jìn)行伽羅華域的乘法異或操作;Rijndael算法程序流程圖如圖4所示。? 2、基于指紋信息的電子病歷加密算法

XML是一種元語(yǔ)言,它采用層次化結(jié)構(gòu)的、面向?qū)ο蟮姆椒枋鰯?shù)據(jù)對(duì)象的結(jié)構(gòu),通過(guò)XML的標(biāo)記來(lái)定義電子病歷的數(shù)據(jù)對(duì)象,非常適合描述含有復(fù)雜內(nèi)容的病歷文檔,而XML具有平臺(tái)無(wú)關(guān)性,適合在不同平臺(tái)下進(jìn)行病歷數(shù)據(jù)的交換,在不同環(huán)境下進(jìn)行系統(tǒng)開(kāi)發(fā)。在臨床醫(yī)療中,需要方便地實(shí)現(xiàn)數(shù)據(jù)交換,數(shù)據(jù)處理以及多種數(shù)據(jù)視圖,XML具有數(shù)據(jù)和表現(xiàn)樣式相分離的特點(diǎn),XML文件本身可以只包含數(shù)據(jù)信息,而與數(shù)據(jù)相對(duì)應(yīng)的樣式文件表現(xiàn)其顯示格式,通過(guò)兩者的結(jié)合,生成包含數(shù)據(jù)和樣式的文件,不同的樣式文件可以得到不同的數(shù)據(jù)視圖。 本文中利用XML技術(shù)首先將電子病歷生成XML文檔形式,Rijindael算法是對(duì)稱加密算法,其加密和解密使用同一密鑰,加密時(shí)先將讀入的明文依次分組,用加密密鑰將明文加密后寫入文件中,解密時(shí)用解密密鑰將文件中的密文解密后將明文寫入結(jié)果文件中。其加密算法如下所示:

(1)獲取電子病歷的XML文檔并數(shù)據(jù)化,如圖5;

(2)對(duì)XML文檔以128bit塊進(jìn)行分組,對(duì)不夠塊的內(nèi)容予以擴(kuò)展以達(dá)到塊分組的要求;

(3)獲取指紋模板信息并數(shù)據(jù)化,通過(guò)安全散列SHA256提取指紋信息的256bit作為初始密鑰,并進(jìn)行移位和查找S盒操作計(jì)算下一個(gè)密鑰以此類推,總共需要14個(gè)圈密鑰;

(4)用初始密鑰對(duì)XML文檔進(jìn)行對(duì)稱加密,并保存為其它或自定義格式保存。 生成的XML文檔的可讀性強(qiáng),且XML具有平臺(tái)無(wú)關(guān)性,適合在不同平臺(tái)下進(jìn)行數(shù)據(jù)交換。電子病歷的XML文檔:

<?xml version-"'1.0"?>

<Patient xmlns:xsi="http://www.w3.org/2001/XML

Schema-instance"

xmlns:xsd="http://www.w3.org/2001/X M LSchemat'>

<Name>李斯</Name>

<Sex>男 </Sex>

<A ge>26</Age>

<Nation>漢族</Nation>

<Marry>否<,Marry>

<HospitiaITiine>2012年1 2月1日</Hospitial-Time>

<ContactMethod>江蘇鎮(zhèn)江市學(xué)府路301號(hào)

</Contact Meth"d>

<Height>178</Height>

<Weighc>75</Weight>

<Pulse>120<f Pulse>

<Blrx)dPressure>2000</Blood Pressure>

<Temperature>39.3</Temperatu re>

<Symptome>腹瀉、嘔吐,呼吸困難,臉色蒼白,四肢無(wú)力</Symptome>

<MedicaIHistory>曾患過(guò)蕁麻疹,青霉索過(guò)敏

</MedicaJ History>

</Patient>

三、電子病歷的指紋信息加密設(shè)計(jì)

1、電子病歷加密設(shè)計(jì)

在本文中加密的密鑰即為指紋信息,在指紋模板提取過(guò)程中,即使是同一手指,因?yàn)槭种赴磯旱奈恢?、潮濕程度等都?huì)使提取的指紋模板不一樣,因此,其特征信息也不一樣,本文在.net平臺(tái)下實(shí)現(xiàn)了加密設(shè)汁并使用SQL Server 2008作為數(shù)據(jù)庫(kù),用于存儲(chǔ)指紋模板信息。 由于對(duì)稱加密使用同一密鑰,因此密鑰需使用同一的指紋數(shù)據(jù),首先將指紋的模板信息數(shù)據(jù)化并存儲(chǔ)在數(shù)據(jù)庫(kù)中,并且該模板信息保存有醫(yī)生的姓名和手指類型等相關(guān)信息,用指紋信息對(duì)文檔進(jìn)行加密。如圖6所示電子病歷的指紋信息加密設(shè)計(jì)流程圖。

對(duì)電子病歷XML文檔加密,設(shè)計(jì)時(shí)需要一定的緩沖空間,并且指紋模板信息需要經(jīng)過(guò)散列SHA256得到256hit初始的密鑰,然后循環(huán)得到剩下的密鑰。

byte[]IV=GenerateByte.s(16);

byte[]salt=GenerateBytes(16);

SymmetricAlgorithm aes=CreateRijndael (strKey,salt);

aes.IV=IV; HashAlgorithm h&sher=SHA256.CrPate();

CryptoStream cout=new CryptoStream (fout, aes.CreateEncryptor(),CryptoStreiunMode.Write), chash=new CryptoStream(Stream.Null, hasher, CryptoStreamMode.Write);

2、電子病歷加密

加密前首先獲取電子病歷和醫(yī)生的相關(guān)信息,包括姓名、手指類型及指紋信息等,同樣在數(shù)據(jù)庫(kù)中也應(yīng)當(dāng)有相應(yīng)的字段對(duì)這些基本信息進(jìn)行存儲(chǔ),然后對(duì)XML文檔進(jìn)行加密,如圖7所示。

加密后的XML文檔內(nèi)容為亂碼,辨識(shí)不清,如圖8所示。

3、電子病歷驗(yàn)證

若醫(yī)生查看自己填寫的電子病歷及做出相應(yīng)修改等操作則必須進(jìn)行驗(yàn)證,驗(yàn)證的方式輸入個(gè)人信息以及指紋為依據(jù),只有當(dāng)提取的指紋特征與數(shù)據(jù)庫(kù)中的指紋模板匹配成功時(shí)才能使加密后的XML文檔的解密,此時(shí)查看電子病歷內(nèi)容。

小知識(shí)之電子病例

電子病歷(EMR,Electronic Medical Record)也叫計(jì)算機(jī)化的病案系統(tǒng)或稱基于計(jì)算機(jī)的病人記錄(CPR,Computer-Based Patient Record)。它是用電子設(shè)備(計(jì)算機(jī)、健康卡等)保存、管理、傳輸和重現(xiàn)的數(shù)字化的病人的醫(yī)療記錄,取代手寫紙張病歷。它的內(nèi)容包括紙張病歷的所有信息。美國(guó)國(guó)立醫(yī)學(xué)研究所將定義為:EMR是基于一個(gè)特定系統(tǒng)的電子化病人記錄, 該系統(tǒng)提供用戶訪問(wèn)完整準(zhǔn)確的數(shù)據(jù)、警示、提示和臨床決策支持系統(tǒng)的能力。