陳俊杰,周豫蘋,,周小方
(1.閩南師范大學粒計算重點實驗室,福建漳州 363000;2.閩南師范大學計算機學院,福建漳州 363000)
無線體域傳感網[1](Wireless Body Area Sensor Network,WBASN或BAN)作為無線傳感器網絡(Wireless Sensor Network,WSN)的一個分支,是人體上的生理參數收集傳感器或移植到人體內的生物傳感器共同形成的一個無線網絡,這些傳感器節點能夠采集身體重要的生理信號(如溫度、血糖、血壓等)、人體活動或動作信號以及人體所在環境信息,處理這些信息并將它們傳輸到身體外附近的本地基站。

圖1 遠程醫療系統服務流程圖
目前,WBASN被廣泛應用到遠程醫療系統,遠程醫療系統的信息采集傳感器終端可部署在病人家中或移動穿戴在病人身上,所采集的生理參數將通過遠程醫療系統及時傳輸給醫生。醫生可根據實時監測生理指標獲知病人們的健康狀況,并及時給出診斷報告。遠程醫療系統的服務流程如圖1所示。
然而,隨著遠程醫療系統的逐步普及,醫療數據的安全和隱私性問題越來越嚴峻。例如,遠程醫療系統很容易受到中間人攻擊[2],致使醫療數據被截取、篡改。這將嚴重影響病人隱私,也可能會影響醫生準確診斷與治療。另一方面,病人不想讓醫生知道自身隱私(例如姓名與身份證號),只想匿名地享受遠程醫療系統的服務。
近年來,大量以傳統密碼學為基礎的無線體域網中數據傳輸的隱私保護方案被提出。Jang C[3]等對無線體域網的安全需求進行總結并詳細地分析無線體域網所面臨的安全威脅,以此為依據提出了無線體域網的安全框架;高鵬[4]指出無線體域網安全傳輸隱私保護協議設計是基于密碼算法和認證機制保證敏感信息的機密性、完整性、新鮮性、可靠性、可用性以及消息認證等安全特性;張建安[5]利用AES與ECC混合密碼構建的混合密碼層,設計出一種具有較高的強度和較快的速度的網絡安全傳輸模型,可滿足無線體域網中對資源有嚴格限制的安全性要求。董曉蕾[6]指出應重視密文醫療數據的訪問控制問題,即僅被授權的醫生或醫療服務結構才能正確恢復病人的個人健康信息;利用假名和其他隱私保護技術來構造匿名認證方案也有許多相關成果;曹進[7]提出的方案可以在用戶出現緊急情況時,通過群管理員揭示用戶的真實身份,給予用戶及時的診療。
以上方案在安全性方面存在著一定的局限性。這些方案不支持傳感器節點的安全秘鑰更新。一旦秘鑰被破解,數據傳輸時的隱私將全部被暴露。
本文整合了以上方案的優點,提出遠程醫療系統在安全性方面的具體要求包括:①匿名性[8],非授權用戶不能把醫療數據和病人的身份聯系起來;②保密性,中間人在遠程醫療監護系統監聽時,無法直接獲知醫療數據的真實內容。傳感器節點可以對部分通信的秘鑰做變更;③完整性,保障醫療數據在信道傳輸的過程中沒有被篡改;④真實性,在病人與醫護服務器之間,在醫生與醫護服務器之間,可以互相驗證醫療數據來源是否正確;⑤可跟蹤性,允許系統的高級用戶來揭露用戶的真實身份信息。方案在保證遠程醫療診斷系統整體安全可靠的同時,利用臨時身份對病人進行匿名保護,實現病人的匿名問診,保護了病人在遠程醫療系統中的隱私。


ElGamal算法[10]可用于數據加密,其安全性依賴于計算有限域上離散對數這一難題。對于有限域GF(q)(或Fq),q是一個大素數(為了保證加密安全,p-1要有大的素因子),g是模q的一個原根,選擇x(0 ElGamal的加密過程為:①選擇隨機數k(0 遠程醫療系統的參與方包括病人(Patient,pID)、醫護服務器(Medical Server,sID)、醫生(Doctor,dID)以及私鑰生成器(Private Key Generator,PKG),遠程醫療系統框架如圖2所示。 圖2 遠程醫療系統框架 表1 安全需求分析表 在系統中,醫護服務器無法獲悉病人的診斷結果,而醫生無法知道接收的醫療數據所屬病人的真實身份。本系統假設醫護服務器和醫生是兩個相互獨立的部分,他們都是誠實的,雖然有可能遭到外部攻擊,但是不會出現聯合攻擊的問題。 系統初始化的主要工作是密鑰預分配,步驟如下: 步驟二:PKG用事先共享[11]的方式將步驟一的密鑰對配送給與之對應的病人、醫護服務器以及醫生。 為實現病人的匿名問診,系統在采集數據之前先對病人身份做匿名化處理。遠程醫療系統由病人發起診斷請求。醫療數據先從病人提交給醫護服務器,再從醫護服務器提交給醫生。而診斷結果將先從醫生返回醫護服務器,再從醫護服務器返回病人。本文協議的具體執行如圖3所示。 在系統中,病人、醫護服務器以及醫生都會充當數據的發送者和接收者。一般化的數據發送者與數據接收者間的通信流程如圖4所示。 圖3 遠程醫療系統的消息流 圖4 一般化的數據發送者與數據接收者間的通信流程圖 圖3消息流:①病人→醫護服務器:{DR,{pID}PKsID,δ1}. 遠程醫療診斷的操作由病人發起。病人對pID進行數字簽名,如公式(1)(2)所示。 h=H(pID). (1) (2) 圖3消息流:②醫護服務器→病人:{{tID}PKpID,δ2}. 醫護服務器在接收到{DR,{pID}PKsID,δ1}后,通過解密{pID}PKsID得到pID來確定提出DR的病人身份。接著計算h=H(pID)并驗證等式(3)是否成立。 (3) 如果等式成立,簽名驗證通過,則說明診斷請求確實來自病人本人,可繼續操作,否則忽視該診斷請求。 為了對病人身份做匿名化,醫護服務器為病人分配臨時身份tID,使用PKsID加密{tID,pID}得到{tID,pID}PKsID,并在本地保存{tID,pID}PKsID。利用公式(4)(5)對tID做數字簽名,得到簽名δ2。 h=H(tID). (4) (5) 圖3消息流:③病人→醫護服務器:{{tID,PKtID}PKsID,δ3}. 病人在接收到{{tID}PKpID,δ2}后,通過解密{tID}PKpID獲取tID,接著計算h=H(tID)并驗證等式(6)是否成立。 (6) 如果等式成立,簽名驗證通過,則說明tID確實來自醫護服務器,可繼續操作,否則舍棄信息tID。 (7) h=H(tID,PKtID). (8) (9) 醫護服務器在接收到{{tID,PKtID}PKsID,δ3}后,解密{tID,PKtID}PKsID,得到tID與PKtID。接著計算h=H(tID,PKtID)并驗證等式(10)是否成立。 (10) 如果等式成立,則說明信息{tID,PKtID}具備真實性和完整性,操作繼續,否則舍棄信息{tID,PKtID}。醫護服務器用PKsID加密{tID,PKtID}得到{tID,PKtID}PKsID,并在本地保存{tID,PKtID}PKsID。 (11) (12) (13) (14) (15) 圖3消息流:⑥醫生→醫護服務器:{{tID,{result}PKtID}PKsID,δ6}. (16) h=H(tID,{result}PKtID). (17) (18) 圖3消息流:⑦醫護服務器→病人:{{tID,{result}PKtID}PKtID,δ7}. 醫護服務器在接收{{tID,{result}PKtID}PKsID,δ6}后,解密{tID,{result}PKtID}PKsID,得到tID和{result}PKtID;接著計算h=H(tID,{result}PKtID)并驗證等式(19)是否成立。 (19) 如果等式成立,簽名驗證通過,操作繼續,否則舍棄信息{tID,{result}PKtID}。通過PKsID加密{tID,{result}PKtID}獲得信息{tID,{result}PKtID}PKsID。通過公式(20)(21)對{tID,{result}PKtID}做數字簽名。 h=H(tID,{result}PKtID). (20) (21) 病人在接收到{{tID,{result}PKtID}PKtID,δ7}后,解密{tID,{result}PKtID}PKtID,得到tID、{result}PKtID。接著計算h=H(tID,{result}PKtID)并驗證等式(22)是否成立。 (22) 如果等式成立,簽名驗證通過,操作繼續,否則舍棄信息{tID,{result}PKtID}。通過SKtID解密{result}PKtID,得到診療結果result。 遠程醫療系統的安全性主要體現在匿名性、保密性、完整性、真實性、可追蹤性。 5.1.1 匿名性 遠程醫療統能保證病人在通信信道以及醫生端不會暴露真實身份。 在協議中每個病人都與醫護服務器約定了一個病人臨時身份tID,病人以臨時身份向醫護服務器提交醫療數據,醫護服務器同樣以病人臨時身份向醫生轉發醫療數據,而臨時身份對應的真實身份對醫生保密,從而對通信信道的監聽者以及醫生隱藏病人的真實身份信息pID,能保證病人的數據被匿名地傳輸。 5.1.2 保密性 只有授權用戶能解密并獲取信息,非授權用戶因沒有密鑰而無法解密信息。 在協議中運用ElGamal公鑰算法對傳輸的醫療數據以及診斷結果進行加密。ElGamal算法的安全性依賴于在有限域上計算離散對數的困難性,有較強的安全性,保證了信息在通信信道中的保密傳輸;在系統中,PKG負責生成部分的密鑰對,而在遠程醫療診斷過程中,病人為自己生成臨時身份的密鑰對(PKtID,SKtID),醫護服務器知道病人的臨時身份tID,而不知道tID對應的SKtID。在醫生向醫護服務器提交診斷結果時,使用tID對應的公鑰PKtID來加密診斷結果,可以保證醫護服務器無法獲知醫生做出的診斷結果,使得醫護服務器和醫生彼此權利分散。 5.1.3 完整性 醫療數據和診斷結果在傳輸的過程中保證不被篡改。 在協議中運用了單向散列函數的抗碰撞性,散列函數根據醫療數據與診斷結果的內容計算出散列值,進而用來檢查醫療數據和診斷結果的完整性。這種算法對辨別篡改非常有效。 5.1.4 真實性 確保醫療數據以及診斷結果在整個傳輸過程中來源的真實性。 協議中病人、醫護服務器、醫生在傳輸數據給其他參與方的時候,均使用自己的私鑰對信息進行數字簽名,同時他們在接收到信息時均使用雙線性對來驗證簽名是否真實,以確保信息來源正確和信息發送者的不可否認。 5.1.5 可跟蹤性 信息接收者可以獲知信息來自哪個真實參與方,并使信息發送者及接受者對信息操作具有不可否認性。在發生醫患糾紛時可以保障病人和醫生各自的權益。 本協議運用了數字簽名技術,數字簽名可以認證數據來源的真實身份信息,使得系統參與方無法否認他們傳輸過的信息。 系統性能從計算開銷、通信開銷兩個方面分析。 5.2.1 計算開銷 忽略協議中的模乘和散列函數。用BP、E分別表示雙線性映射運算、指數運算。設系統有1個病人、1個醫護服務器與1個醫生同時在線,系統計算開銷如表2所示。 表2 系統計算開銷統計表 在一次遠程醫療過程中,病人的計算開銷為9E+4BP,醫生的計算開銷為4E+2BP。醫護服務器的計算開銷為9E+8BP。因為病人的計算開銷較小,所以可以符合無線體域網低能耗的要求。 5.2.2 通信開銷 表3 系統通信開銷統計表 本文提出了一種無線體域網中隱私保護的遠程醫療診斷系統。系統應用臨時身份匿名技術,ElGamal算法和基于雙線性映射的數字簽名技術保障病人的身份匿名性、診斷結果的保密性和傳輸信息的完整性、真實性與可跟蹤性。系統的可跟蹤性這一安全特性可以在特殊情況下保障病人和醫生的權益。安全性和性能分析證明系統能有效保護用戶的隱私并具有較小計算開銷和通信開銷,符合無線體域網資源受限的場景。 未來的研究將考慮進一步減少系統的計算開銷與通信開銷。例如,運用混合密碼系統解決公鑰密碼速度慢的問題,運用橢圓曲線,以更小的密鑰量達到相同的安全性,運用無線體域網節點數據壓縮節能算法[12],減少數據采集量和傳輸量,有效地降低WBAN節點能耗。3 系統模型








4 方案設計


4.1 病人發起診斷請求

4.2 對病人身份做匿名化



4.3 病人將醫療數據傳輸給醫護服務器



4.4 醫護服務器將醫療數據傳輸給醫生

4.5 醫生將診斷結果傳輸給醫護服務器

4.6 醫護服務器將診斷結果傳輸給病人

4.7 病人查閱診斷結果
5 安全性和性能分析
5.1 安全性分析
5.2 性能分析




6 結語