• 沒有找到結果。

雲端儲存系統中個人健康紀錄之安全存取控制-使用屬性加密機制

N/A
N/A
Protected

Academic year: 2021

Share "雲端儲存系統中個人健康紀錄之安全存取控制-使用屬性加密機制"

Copied!
59
0
0

加載中.... (立即查看全文)

全文

(1)

資訊科學與工程研究所

雲端儲存系統中個人健康紀錄之安全存取

控制-使用屬性加密機制

Secure Access Control of Personal Health Records in

Cloud Computing Using Attribute-Based Encryption

研 究 生:戴靜瑤

指導教授:曾文貴 教授

(2)

雲端儲存系統中個人健康紀錄之安全存取控制-使用屬性加密

機制

Secure Access Control of Personal Health Records in Cloud

Computing Using Attribute-Based Encryption

研 究 生:戴靜瑤 Student:Ching-Yao Dai

指導教授:曾文貴 Advisor:Wen-Guey Tzeng

國 立 交 通 大 學

資 訊 科 學 與 工 程 研 究 所

碩 士 論 文

A Thesis

Submitted to Institute of Computer Science and Engineering College of Computer Science

National Chiao Tung University in partial Fulfillment of the Requirements

for the Degree of Master

in

Computer Science June 2013

Hsinchu, Taiwan, Republic of China

(3)

I

雲端儲存系統中個人健康紀錄之安全存取控制-使用屬性加密機制

學生:戴靜瑤 指導教授:曾文貴

國立交通大學資訊科學與工程研究所碩士班

摘要

Personal Health Record (PHR)是一種醫療資訊紀錄,其來源包含病人紀

錄的個人健康資訊如飲食型態、家族病史、醫生處方籤等,由病人所擁有並

且管理。近年來雲端技術的蓬勃發展,各式各樣的雲端應用服務應運而生,

其中雲端儲存系統提供了使用者便利的資料儲存服務,而病人將 PHR 存放

在雲端儲存系統帶來了許多好處,像是有利於他集中管理、節省儲存空間以

及方便分享給其他使用者,然而此種做法卻衍生了新的問題:病人要如何對

儲存在雲端的 PHR 達到安全的存取控制?一旦病人將儲存 PHR 的任務交

由雲端儲存服務供應商幫忙處理,病人便無法即時監控他的 PHR 是否遺失

抑或是遭到竊取甚至濫用。換句話說,雲端儲存服務供應商並不保證 PHR

的是否被安全存取以及 PHR 的隱密性,病人的隱私資料未得到妥善的保護。

在與其他使用者共享 PHR 的部分,病人對其 PHR 理應擁有絕對的控制權,

要如何讓病人能夠針對不同層級的使用者給予相對的權限來存取他的 PHR

亦是一個重要的議題。因此,在病人將 PHR 存放在雲端儲存系統之前,需

要透過一套安全且有效率的加密技術用以保護病人的隱私不致洩漏,本篇

研 究 提 出 一 個 PHR 系 統 的 框 架 , 利 用 Decentralizing Attribute-Based

Encryption (DABE)的技巧來加密病人的 PHR,達成在雲端儲存服務上,對

PHR 安全的存取控制與共享的目標,進而提升對病人隱私資料的保護。而

我們所提出的框架也會滿足細粒度存取控制、資料隱私與可拓展性等安全

需求。最後我們實作了一個雲端化的 PHR 系統,展示我們的系統是可行的。

(4)

II

Secure Access Control of Personal Health Records in Cloud Computing Using

Attribute-Based Encryption

Student:Ching-Yao Dai Advisor:Dr. Wen-Guey Tzeng

Institute of Computer Science and Engineering

College of Computer Science,

National Chiao Tung University

Abstract

Personal Health Record (PHR) is an information related to the care of a patient

himself and is maintained and managed by patient. PHR contains variety of health

data such as a patient’s diet, family history, and prescription record etc. Nowadays

with the emergence of cloud computing, many cloud services are provided,

including the cloud storage which enables people to store and manage their data

in remote storage conveniently. Deploying cloud computing platform in PHR

system is not only inexpensive but also provides wide-area access and large

storage capability for a patient, who can control and share his PHR with other

people. However migrating PHR to cloud storage incurs new security problem:

how does patient enforce secure access control of his PHR? Although cloud

delivers many resources as a service, unfortunately it also gives attackers new

possibilities to launch attacks. On the other hand, cloud service provider does not

promise the security and confidentiality of PHR. Besides, patient may share his

PHR with many people under different access policy. Therefore, we propose a

framework of PHR system, which leverages Decentralizing Attribute-Based

Encryption (DABE) to encrypt PHR and enforce access control policy. This

framework satisfies several security properties such as fine-grained access control,

data privacy and scalable access. And we implement a PHR system to display that

this system is effective.

(5)

III

誌 謝

時光荏苒,研究所兩年的生活轉眼就接近尾聲,在研究所求學的期間,一路上受到 許多人的幫助,本篇論文能夠順利完成,首先要感謝我的指導老師曾文貴教授,在研究 上對我的指導與提點,從老師的身上學到的無論是在研究上或是待人處事上都應認真以 對的態度,而在報告上老師也總是提醒我們要能意簡言賅,清楚地表達自己想法讓聽眾 得以理解,這兩年的學習令我獲益匪淺。 感謝口試委員蔡錫鈞教授與孫宏民教授能夠撥冗前來,你們給的建議讓我能夠改進 我的論文,並思考其他的可能,使我的論文更加完整。 感謝實驗室的學長姊們,總是不吝解答我的疑問,讓我不管是在課業上或是報告上 都能不斷改進,感謝你們這兩年來的照顧。感謝實驗室的同學們,研究所的生涯有你們 一起互相幫助互相砥礪使我能夠更堅定地走過這一段日子。 最後,感謝始終在背後默默支持我的父母與家人,因為有你們我才有動力走到現在, 非常感謝你們的關懷與鼓勵。也感謝所有在這兩年的時光中幫助我的人,你們的幫助都 讓我感念在心,謝謝你們。

(6)

IV

摘要 ... I ABSTRACT ... II 誌 謝 ... III 目 錄 ... IV 表 目 錄 ... VI 圖 目 錄 ... VII 第一章、緒論 ... 1

1.1 PERSONAL HEALTH RECORD (PHR) ... 1

1.2 PHR 在雲端儲存系統的存取控制與安全性議題 ... 1 1.3 研究目標 ... 3 1.3.1 傳統上的加密機制與其限制 ... 3 1.3.2 利用 ABE 於雲端化 PHR 存取控制系統 ... 4 1.4 貢獻 ... 6 1.5 全文架構 ... 6 第二章、相關研究 ... 8 第三章、數學背景 ... 12 3.1 BILINEAR PAIRING ... 12

3.2 存取結構(ACCESS STRUCTURE) ... 12

3.3 LINEAR SECRET-SHARING SCHEME ... 12

第四章、ATTRIBUTE-BASED ENCRYPTION ... 15

4.1 ATTRIBUTE-BASED ENCRYPTION (ABE) ... 15

4.2 KEY POLICY ATTRIBUTE-BASED ENCRYPTION (KP-ABE) ... 15

4.3 CIPHERTEXT POLICY ATTRIBUTE-BASED ENCRYPTION (CP-ABE) ... 18

4.4 MULTI-AUTHORITY ATTRIBUTE-BASED ENCRYPTION (MA-ABE) ... 20

第五章、利用 ABE 達成存取控制之 PHR 系統 ... 22 5.1 問題闡述 ... 22 5.2 系統架構 ... 22 5.3 安全模型 ... 23 5.4 系統框架 ... 23 5.4.1 金鑰設定 ... 24 5.4.2 PHR 的存取規則 ... 25 5.4.3 系統設定與金鑰發送 ... 25 5.4.4 PHR 的加密與儲存 ... 26 5.4.5 PHR 的解密與存取 ... 27 5.5 PHR 系統-使用 DABE 做存取控制 ... 27 5.5.1 DABE ... 27 5.5.2 系統流程 ... 29

(7)

V 5.6 安全分析 ... 30 第六章、實作 ... 32 6.1 DABE 實作 ... 32 6.1.1 開發環境設定 ... 32 6.1.2 JPBC 函式庫[22] ... 32 6.1.3 實作 ... 33

6.2 BOOLEAN FORMULA 到 LSSS MATRICES 的轉換... 34

6.3 PHR 系統實作 ... 36 6.4 效能評估 ... 45 第七章、結論與未來展望 ... 47 7.1 結論 ... 47 7.2 未來展望 ... 47 參考文獻 ... 48

(8)

VI

表 1 NIST 建議的金鑰長度 ... 32 表 2 𝜌 函數 ... 35

(9)

VII

圖 1 雲端儲存系統架構 ... 2

圖 2 PATIENT-CONTROLLED SYSTEM ... 9

圖 3 使用 CP-ABE 的 PHR 系統架構 ... 10

圖 4 HIERARCHICAL的 PHR 系統 ... 10

圖 5 使用 MA-ABE 的 PHR 系統 ... 11

圖 6 GENERATING MATRIX ... 13

圖 7 KP-ABE 中的ACCESS TREE ... 16

圖 8 多屬性授權中心 ... 20 圖 9 系統架構 ... 23 圖 10 存取規則 ... 25 圖 11 金鑰授權 ... 26 圖 12 加密之 PHR 格式 ... 26 圖 13 PHR 解密與下載 ... 27 圖 14 程式架構 ... 33 圖 15 ACCESS TREE ... 34 圖 16 PHR 系統架構圖 ... 36 圖 17 (A)註冊,(B)登入 ... 37 圖 18 金鑰授權 ... 38 圖 19 使用者透過信箱收到主金鑰圖 ... 38 圖 20 上傳 PHR ... 39 圖 21 雲端伺服器上的 PHR ... 40 圖 22 已上傳的 PHR 頁面 ... 40 圖 23 金鑰授權頁面 ... 41 圖 24 被授權者收到私密金鑰圖 ... 41 圖 25 下載 PHR ... 43 圖 26 (A)PHR 解密成功(B)PHR 解密失敗 ... 44 圖 27 初始設定時間 ... 45 圖 28 金鑰產生時間 ... 45 圖 29 加密時間 ... 46 圖 30 解密時間 ... 46

(10)

1

第一章、緒論

1.1

Personal Health Record (PHR)

在台灣,電子化病歷(Electronic Health Record, EHR)已經行之有年,使用電子化病歷 的優點是能夠節省紙張成本、減少錯誤率、有助於病歷的紀錄與流通,進而改善醫療服 務的效率,提升醫療品質。但是這些病歷資料皆由各家醫療機構所保存管理,資料無法 互通,民眾的病歷資訊分散在各個醫療機構,使得民眾的病歷資訊都是片段的,缺乏完 整性,更造成醫療資源上整合與管理上的困難。有鑒於此,在二〇一二年九月,行政院 衛生署與微軟(Microsoft)攜手合作,開始推動 Personal Health Record(PHR)與雲端系統 結合的計畫,這個計畫是透過雲端平台,整合民眾在健康、醫療、保險等相關機構所持 有的個人健康紀錄,提供民眾自主管理個人健康資訊的功能。 PHR 是一種醫療資訊紀錄,來源包含病人紀錄的個人健康資訊如飲食型態、運動習慣、 自行量測的血壓資料等,或是門診用藥紀錄、醫療保險、疫苗施打等資料,PHR 涵蓋了 民眾一生中所有與個人健康相關的資訊與紀錄,民眾可經由行動裝置登錄雲端平台管理 他們的 PHR,隨時隨地依其需求存取 PHR,並與他人分享個人的健康醫療資訊。也就是 說,PHR 是一種由民眾個人自主管理的資料,具有高度隱私性,民眾對於自身的 PHR 擁有最高的管理權限,依其意願與需求決定哪些人可以存取他的 PHR。 總而言之,PHR 的推動與普及除了讓民眾個人的健康醫療紀錄趨於完善,亦讓一般民 眾能夠更加便利地管理他們的健康紀錄,有助於他們掌控自身的健康狀況,另一方面, 醫護人員能獲得更完整的健康資訊作為診斷的依據,避免重複檢驗,提升醫療品質,同 時也減少醫療資源的浪費。

1.2

PHR 在雲端儲存系統的存取控制與安全性議題

近年來雲端技術的蓬勃發展,各式各樣的雲端應用服務應運而生,其中雲端儲存系統 提供了使用者便利的資料儲存服務,常見的雲端儲存服務有 Dropbox、Amazon S3、Google Drive 等,使用者毋須負擔建置儲存設備的成本,雲端儲存服務提供了大量的儲存空間 與彈性的資料存取,如圖 1 所示,使用者可以將以往習慣存在單機電腦中的個人資料夾 存放到遠端的設備中,通過網路能夠即時上傳、下載與管理各種型態的資料,使用者不 需要煩惱資料同步與攜帶的問題,並且可以透過雲端平台與其他使用者共享資料。

(11)

2 PHR 與雲端系統的結合帶來了幾項好處,存放在雲端平台的 PHR 有利於集中管理、 節省儲存空間,雲端化的 PHR 能提供民眾即時的病歷資訊並且不受時間與地點的限制, 民眾可隨時調閱 PHR,並且將這些資訊分享給醫護人員、保險公司或是家人朋友等,民 眾亦可以根據其需求授權其他使用者去存取他的 PHR,利用雲端平台便利地與其他人共 享資料,然而此種做法卻衍生了新的問題:民眾要如何對儲存在雲端的 PHR 達到安全 的存取控制? 過去人們將資料儲存在個人的電腦上時,所有的安全責任都歸屬在自己身上,一旦民 眾將儲存 PHR 的任務交由雲端儲存服務供應商幫忙處理,那麼 PHR 若是遺失或是遭到 竊取,甚至被有心人士濫用誰又該負起責任呢?換句話說,雲端儲存服務供應商並不保 證 PHR 是否被安全存取,也不保證 PHR 的隱密性,就連雲端儲存服務供應商本身也不 一定是完全可信任的,他們只提供一個儲存空間,民眾的 PHR 未獲得妥善的保護,這 些含有個人隱私的資料面臨洩漏出去或遺失的風險。 此外,在與其他使用者共享 PHR 的部分,民眾對其 PHR 理應擁有絕對的控制權,要 如何讓民眾能夠針對不同層級的使用者給予相對的權限來存取他的 PHR 亦是一個重要 的議題,由於 PHR 是具有高度隱私性的資料,除了被授權者准許存取之外,其他不正 當的存取行為都應該被避免,因此,民眾在將 PHR 存放在雲端儲存系統之前,需要經 由一套安全且有效率的加密技術來對 PHR 進行加密,用以保護病人的隱私不致洩漏, 同時在 PHR 加密的情況下,如何讓民眾能夠對 PHR 達到安全的存取控制也是一個值得 深思的問題。 圖 1 雲端儲存系統架構

(12)

3

1.3

研究目標

1.3.1

傳統上的加密機制與其限制

有鑑於上一段所提到的 PHR 在雲端系統上存取的安全性問題,在將 PHR 傳送出去 到雲端伺服器之前,勢必得經過一些加密處理,避免隱私資料在雲端上被洩漏出去或是 被不正當的存取。在一般的資料存取控制系統中,傳統上最常使用的技巧是以下兩種:

 對稱式加密系統(Symmetric Key Cryptography, SKC)

這種加密技巧,較著名的有 AES、DES 等,對稱式加密系統在加解密的過 程中都是使用同一把金鑰,故在加解密時非常有效率,但若是想要將此種技巧 應用在對 PHR 的存取控制上的話,還需要引入額外的方法才能達成。此種加 密法最大的問題在於加解密都是使用同一把金鑰,假使使用者的金鑰遭攻擊者 所攔截,攻擊者即可解密所有的 PHR,對於 PHR 保護也隨之瓦解,使用者的 隱私也洩漏出去了。

 公開金鑰加密系統(Public Key Cryptography, PKC)

這種加密技巧,較著名的有 RSA、ElGamal 等,系統中每個人都有一把公 開金鑰與一把私密金鑰,它是利用公鑰來加密資料,擁有對應私鑰的人則可以 成功解密,所以它比對稱式加密還要安全,但是要將此種加密法應用在 PHR 的 存 取 控 制 上 得 付 出 龐 大 的 金 鑰 管 理 成 本 , 需 要 有 一 個 Public Key Infrastructure(PKI)來發送與管理金鑰,面對大量的 PHR,每一份 PHR 對應到 不同的使用者都擁有不同的存取規則,對於使用者來說,金鑰管理是一個讓人 很頭痛的問題,這種加密法所需的運算量也會非常可觀,因此,要運用在 PHR 存取系統上不但不切實際,而且管理金鑰的成本所費不貲。 上述的兩種傳統加密技巧都不適合運用在雲端系統上資料存取控制上,目前最適合 套用在這種存取系統的加密方法是屬性加密機制(Attribute-Based Encryption, ABE),此 種加密方法可以支援高精度的資料存取控制,使用者可以依個人需求替 PHR 制定一些 存取規則,符合規則的人就允許去存取使用者的部分 PHR,換言之,PHR 只能夠被某些 符合其存取規則的特定使用者存取,其他無法滿足存取規則的使用者即使竊取到了 PHR 也無法窺視其內容,ABE 提供了更富有彈性且更加精緻的存取控制方法。故在雲端化的 PHR 系統架構中,使用 ABE 來實現對 PHR 安全的存取控制是一套可行的方案。

(13)

4

1.3.2

利用 ABE 於雲端化 PHR 存取控制系統

儘管將 PHR 的存放轉移到雲端儲存系統的同時帶來了更便利的資料存取與共享模 式,然而這種將資料傳送到遠端伺服器管理的方式使得雲端服務提供者也同樣掌握了使 用者的資訊,因而使用者不再能完全控制 PHR 的存取與流向,要如何維護 PHR 的安全 性就顯得格外重要。因此,我們主要的研究目標主要是希望在雲端化 PHR 存取控制系 統中,藉由 ABE 來達成對 PHR 的安全存取控制。ABE 提供更具彈性的存取規則及安全 的加密機制,使用者能透過這套系統輕鬆管理他的 PHR。最重要的是,在我們所提出的 系統框架下,讓使用者能夠安全地將 PHR 分享給其他人,無需憂慮自己的隱私會暴露 於危險之中,唯有通過使用者授權的人能夠合法存取他的 PHR。 在我們的日常生活中,每個人根據他的職業、工作場所等都有足以彰顯自己身分的 屬性(attribute),譬如在 A 醫院中工作的外科醫生,就被賦予“A 醫院”、“外科”與 “醫生”這三種屬性,透過 ABE,使用者可以加密他的 PHR,並將存取規則訂為“A 醫 院”AND “外科”AND “醫生”,如此一來,只要是符合這三個條件的醫生就可以存 取該使用者的 PHR。由上例可知,對於使用者而言,最大的益處莫過於是不需要知道每 個被授權者的身分,這意味著他不必記錄每份 PHR 的使用者存取清單,畢竟隨著使用 者與 PHR 的數量遞增,這份使用者存取清單也會愈來愈複雜與龐大,造成使用者管理 上的困難與不便,故利用 ABE 來加密 PHR 的話,使用者除了無須對所有 PHR 都記錄 存取清單外,PHR 亦只需要加密一次,不僅減輕使用者管理上的負擔與運算成本,還提 升了系統的可拓展性。 在 PHR 的系統中,由於資料的存取是由使用者自主管理,隨著使用者授權的人數 增加,該使用者管理金鑰的負擔也會愈來愈重,但是如果將金鑰管理的任務全部託付給 一個中央的授權中心(central authority, CA),萬一授權中心被惡意侵入,所有的金鑰就 被破解了。因此,在我們的系統架構中,我們著重在多授權中心(multi-authority)的 ABE。 將部分金鑰授權的任務交付給其他的授權中心幫忙處理,多授權中心的 ABE 不但分散 了金鑰管理的風險,使用者本身也僅需管理部分的金鑰,比起傳統的 SKC 與 PKC,被 授權者所需要的金鑰數量也會降低。 而在我們所提出的系統框架下,要達成的目標有以下幾點:  資料隱密性(Data confidentiality): 由於 PHR 中含有民眾個人敏感性的資料,假如洩漏出去的話將會對民眾造成 莫大的傷害與困擾,因此我們首要達成的目標即是對 PHR 隱密性的保護,避免未

(14)

5 經授權的使用者揭露 PHR 的內容,確保 PHR 在傳遞及儲存時的隱密性,除了惡意 的使用者外,雲端服務提供者亦無法得知 PHR 的內容,所以在上傳到雲端伺服器 之前,PHR 必須先經過加密再傳送。  以病人為中心(Patient-centric): 近年來,人們的個人意識抬頭,對自身隱私的保護也日益重視,而 PHR 的內 容皆是人們私密的醫療資料,基於對個人隱私的保護,人們有權決定自身的隱私資 料該如何管理與授權,所謂“以病人為中心”的觀念即根植於此,PHR 的服務彙整 所有病人私人的醫療資料集中存放在網路上的儲存空間,允許病人透過網路自己產 生與管理個人的 PHR,讓病人擁有完全控制自己醫療資料的權利,並且有權決定要 釋出哪一部分的 PHR 給其他人觀看,充分尊重病人自身的意願與保護他的隱私。  細粒度存取控制(Fine-grained access control):

使用者在將 PHR 的資訊分享給其他的使用者之際,也許會根據其他使用者的 身分來判斷要授權給他哪一部分的 PHR 存取權限,而 ABE 在加密時能夠讓使用者 自行替 PHR 設定彈性化的存取規則,針對不同層級的使用者授予不同的存取權限, 每一份 PHR 僅有被授予解密金鑰的使用者方可存取,杜絕其他不懷好意的使用者

的惡意存取,方便使用者對其 PHR 的管理並且增進了 PHR 使用上的彈性。

 抵禦同謀攻擊(Resistant to collusion attack):

同謀攻擊指的是在使用者授權給其他人 PHR 的解密金鑰時,這些被授權者彼 此之間或許會互相串謀起來,提供彼此的解密金鑰組合出一把新的金鑰,意圖存取 不在自己權限之內的 PHR,ABE 的加密機制則可以抵禦同謀攻擊,使得被授權者 無法將金鑰互相結合,阻絕被授權者間的不法存取,維護 PHR 的隱密性。  可拓展性 (Scalability): 在 PHR 的系統中,每個使用者可能會與各式各樣的人分享他的 PHR,這些人 也許是他的家人或朋友,也有可能是醫療機構或保險公司等,換句話說,與使用者 共享 PHR 的人可能為數眾多,而且使用者的 PHR 以常理來說也會隨著時間增加, 傳統的 SKC 以及 PKC 由於對於資料皆是一對一的加密,無法應付龐大的 PHR 與 使用者共享系統,因此在我們系統中會利用 ABE 來支援這種無法預測使用者數量 的 PHR 共享。此外,我們的系統亦支援新的授權中心加入系統,授權金鑰給使用 者。

(15)

6

1.4

貢獻

1. 我們提出了一個以 ABE 來做存取控制的 PHR 系統之框架,在此框架之下,是以病 人為中心,將 PHR 儲存於雲端系統上,使用者可以自主管理他的 PHR。利用多屬 性授權中心的 ABE,讓使用者可以安全地與他人分享 PHR。由於系統中金鑰的管 理是分散在各個授權中心,因此我們可以減少其管理金鑰的負擔。此外,透過 ABE 的加密機制保證使用者 PHR 的安全問題,而我們的系統中亦無需一個中央的授權 中心,解決金鑰集中的問題。 2. 在我們的系統中,透過多屬性授權中心的 ABE,讓每個授權中心分別控制互斥的屬 性集合,這些屬性是代表人們的身分或是職業,而我們也讓使用者成為一個授權中 心,控制與 PHR 種類相關的屬性集合,要注意的是,我們將大部分的金鑰管理分散 給其他授權中心負責,使用者則負責一小部分的金鑰管理,讓使用者可以根據其需 求即時授權給其他使用者。在加密 PHR 時,使用者可決定那些身分的人有資格存 取他的 PHR,並選擇 PHR 的種類做加密,因此在我們的系統框架中,提供了更富 有彈性的存取規則,讓使用者管理調度上能夠更符合現實上的需求,進而達到對 PHR 細粒度存取控制。 3. 我們也實作了一個 PHR 的系統,在此系統之下,使用者可以經由我們的介面來上 傳並加密他的 PHR,提供使用者一個方便及友善的操作介面來管理他的 PHR,而 我們在效能分析的部分也會展示我們的系統是可行的。

1.5

全文架構

本論文其餘的章節部分整理如下:在第二章的部分會介紹目前利用 ABE 來做加密 的 PHR 系統,並說明在我們的系統框架中欲改善的部分,第三章則是本系統會用到的 相關數學背景,像是 Bilinear pairing 與 ABE 的存取結構。第四章由最基本的 ABE 開始, 介紹各種不同形式的 ABE,像是 Ciphertext Policy Attribute-Based Encryption(CP-ABE), Key Policy Attribute-Based Encryption(KP-ABE)等以單一授權中心為基礎的 ABE,以及 本系統會使用到的 Decentralizing Attribute-Based Encryption (DABE),第五章則進入我 們所提出的系統框架,詳細介紹我們的 PHR 系統中的建構方法,各種情境與流程,此 外,並分析 PHR 系統的安全性。第六章是系統實作的部分,我們藉由一些實驗來檢測

(16)

7

我們的系統在加解密或是產生金鑰時所需的時間,並且展示實作的系統介面與功能。最 後,第七章為全篇總結與未來展望。

(17)

8

第二章、相關研究

電子病歷的推動與普及是目前醫療界的趨勢,以電子病歷取代紙本病歷的好處除了 減少錯誤率與節省資源,也提高了病歷的可用性,促進醫療品質。以醫事人員或醫療研 究者的角度而言,病歷電子化使得他們可以便利地的取得病人的醫療資訊,進而紀錄與 分析,增進看診與研究的效率;對病人來說更是減少了重複檢驗的麻煩,不必每次到新 的醫院就得重新填寫病歷,電子病歷亦更便於攜帶與傳遞。 以病人為中心的概念是始於 Szolovits et al. [18],他們提出一套個人醫療系統,整合 病患個人所有醫療相關資訊,其後一個以病人為中心的健康管理系統 Indivo 被提出來 [19],使用者可以在這套系統上管理與保存他的健康資訊,Indivo 提供一套安全機制讓 使用者能夠對其健康資料做加密並制定存取規則,唯有取得使用者私密金鑰的人可以解 密。 PHR 的服務允許使用者透過網路集中管理他的 PHR,像是微軟的 Health Vault [21] 及 Google Health [20] 即是將 PHR 系統建置於雲端環境之上,提供使用者自主管理 PHR 的服務,但隨之而來的問題是,使用者該如何安心的將 PHR 儲存在第三方並做到對資 料的完全控制與分享?使用者不僅在乎 PHR 使用上是否便利,更關心他們的 PHR 之安 全與隱密性。舉例來說,假若使用者患有某些特殊疾病(如:愛滋病、痲瘋病等),而他 的 PHR 中隱含有這項資訊卻被洩漏出去的話,可能會導致使用者遭到社會上的歧視與 排擠,因此,維護使用者 PHR 的隱私絕對是首要注意的議題。 為了解決醫療資料存取的安全性問題,近幾年來有許多學者提出了解決的方法, Lee et al. [16] 利用對稱式加密系統與電子簽章的技巧來管理金鑰,他們的方法是運用智 慧卡 (smart card) 來儲存使用者的私密金鑰,當醫生需要病人的醫療資訊,必須徵求病 人同意之後,病人再以私密金鑰解密,這種技術雖然很安全,智慧卡也便於攜帶,但是 為了滿足緊急狀況,這個方法將所有的私密金鑰一併存放在 TA (Trusted Authority),以 便緊急狀況時醫生能夠去擷取病人的資料,此舉無疑造成了金鑰集中的安全性問題,TA 隨時隨地可以存取病人的資料。而此系統需要智慧卡的技術來達成,每一個病人皆須配 有一張智慧卡,在解密的時候病人必須在場提供智慧卡,醫生才能觀看病人的病歷,對 於醫生來說是很不方便的,病歷也無法與其他人共享。 與傳統公開加密系統相較之下,使用 ABE 於 PHR 這種多人存取的系統是一套可行 的解決方案。Hupperich et al. [17] 提出了一套由病人自我控制的 EHR 系統,使用 ABE

(18)

9

來做加密,這套系統需要智慧卡來儲存 transaction code (TAC),如圖 2 所示,加密 EHR 時,病人利用其智慧卡通過 TAC 服務認證取得 TAC,再將 TAC 及 ID 傳送給醫生 1, 醫生 1 產生 EHR 後利用這兩個屬性將 EHR 加密,若醫生 2 想存取病人的 EHR,則需 病人給予 TAC,醫生 2 再依此 TAC 與病人 ID 向 PKG 要求私密金鑰,並以私密金鑰解 密病人的 EHR。但是此系統依賴一個 TAC 服務來產生金鑰,同樣存在金鑰集中的問題, 另一個問題是,EHR 的加密是由醫生執行,病人無法確保醫生在加密時是否會新增存取 規則,使得醫生本身能夠自由存取該 EHR,如此一來病人的隱私便無從保證。 圖 2 Patient-Controlled System [10][11][12][13][14][15] 皆是以 CP-ABE 為基礎來做資料的存取,儘管在這幾個系 統中,不像[17] 是將加密交由醫生來執行,而是病人自己制定存取規則並加密,但同樣 系統中只有一個屬性授權中心,如圖 3 所示,此授權中心管理所有的屬性,產生公開金 鑰,之後病人再利用這些公開金鑰制定存取規則並上傳到雲端伺服器,而醫生須事先向 授權中心要求私密金鑰方可存取病人之 PHR,[10][11][12][13][14][17] 同樣都將金鑰集 中在一個授權中心之下,將金鑰管理的責任全部交託給一個授權中心管理,無疑讓授權 中心掌握過大的權限,使得他可以任意去存取病人的 PHR,另外一個問題是,負責產生 與管理所有的金鑰對於授權中心而言負載太重。

(19)

10

圖 3 使用 CP-ABE 的 PHR 系統架構

[9]的系統則是一個多層的架構,首先利用 KP-ABE,病人將 EHR 以種類作為屬性 來加密,利用 IBE 來傳送 KP-ABE 的金鑰給醫院,保證金鑰傳輸的安全,在醫院之下的 人如醫生、護士等,依其身分使用 CP-ABE 產生私密金鑰,由醫院決定那些身分的人可 以存取 EHR,並定義存取規則使用 CP-ABE 將 KP-ABE 的金鑰加密,簡言之,此系統 裡用 KP-ABE 來分類 EHR,再使用 CP-ABE 來篩選可以存取 EHR 的使用者。如圖 4 所 示。

(20)

11 為了解決金鑰集中的問題,[8]首先提出多屬性授權中心的 PHR 存取控制系統,作 者將被授權者分成公開領域與私人領域兩部分,對於公開領域的人是以 MA-ABE 來做 存取控制;私人領域則是以 KP-ABE 來做存取控制,參考圖 5。換句話說,在公開領域 之中,有多個屬性授權中心分別管理一些屬性,這些屬性與身分或職業相關,被授權者 透過請求從授權中心取得私密金鑰,病人利用屬性中心的公開金鑰來加密 PHR,制定存 取規則決定誰可以解密他的 PHR,然而,在他們的系統中,授權中心的數量是固定的, 新的授權中心出現整個系統必須重新設定,使用者所能制定的規則也必須是 CNF,並且 加密時一定要從每一個屬性授權中心至少選擇一個屬性來做加密,使得規則沒有彈性, 被授權者亦必須從所有的授權中心取得金鑰才能滿足存取規則。另外,私人領域的部分 則是運用 KP-ABE,將 PHR 根據其分類的屬性加密,將存取規則定義在被授權者的私密 金鑰上。 圖 5 使用 MA-ABE 的 PHR 系統 …

(21)

12

第三章、數學背景

3.1

Bilinear Pairing

令𝐺1為一個秩(order)為質數 𝑃 的加法循環群,𝐺2為一個秩同樣為 𝑃 的乘法循環 群,𝑔 是在𝐺1底下的生成元(generator),則存在一線性映射函數 𝑒: 𝐺1× 𝐺1 → 𝐺2 此映射函數符合以下的條件:  雙線性(Bilinear): ∀ 𝑃, 𝑄 ∈ 𝐺1, ∀ 𝑎, 𝑏 ∈ 𝑍𝑝∗𝑒(𝑎𝑃, 𝑏𝑄) = 𝑒(𝑃, 𝑄)𝑎𝑏  非退化性(Non-Degenerate): ∃ 𝑃, 𝑄 ∈ 𝐺1, 𝑒(𝑃, 𝑄) ≠ 1  可計算性(Computability): ∀ 𝑃, 𝑄 ∈ 𝐺1, 𝑒(𝑃, 𝑄)可以有效率地被運算出來。

3.2

存取結構(Access Structure)

Definition 3.2.1 (Access Structure)

令{𝑃1, … , 𝑃𝑛}為一個 party 的集合,假如對 ∀ 𝐵, 𝐶 ∶ 𝑖𝑓 𝐵 ∈ 𝔸 𝑎𝑛𝑑 𝐵 ⊆ 𝐶 𝑡ℎ𝑒𝑛 𝐶 ∈ 𝔸 成立 則一個存取結構 𝔸 ⊆ 2{𝑃1,…,𝑃𝑛}是單調性(monotone)的。而一個單調性的存取結構是在 {𝑃1, … , 𝑃𝑛}下的一個非空子集合的 collection 𝔸,也就是𝔸 ⊆ 2{𝑃1,…,𝑃𝑛}\{}。在 𝔸 中的集 合則稱作被授權的集合(authorized sets),反之,不在 𝔸 中的集合被稱作是非授權的 集合(unauthorized sets)。

3.3

Linear Secret-Sharing Scheme

Definition 3.3.1 (Linear Secret-Sharing Schemes, LSSS)

在一組 party 的集合 𝒫 之下的一個 secret sharing scheme П 如果是線性的,會滿足 以下條件:

(22)

13

2. 存在一個矩陣 A,A 稱作是П的 share-generating matrix。矩陣 A 有 𝑙 個列

與 𝑛 個行。對於所有𝑥 = 1, … , 𝑙,第 𝑥 個在 A 中的列會被 party 𝜌(𝑥)所標示。

(𝜌:{1, … , 𝑙} → 𝒫)若有一組行向量 𝑣 = (𝑠, 𝑟2, … , 𝑟𝑛),𝑠 ∈ 𝑍𝑝為 secret,而

𝑟2, … , 𝑟𝑛 ∈ 𝑍𝑝為隨機選擇的變數,則 𝐴𝑣 會產生一組有 𝑙 個 share 的向量對應到

П,。每一份 share (𝐴𝑣)𝑥 屬於 party 𝜌(𝑥)。參考圖 6。

圖 6 generating matrix

Linear reconstruction property:

假設 П 是一個對應到存取結構 𝔸 的 LSSS。令 S 為 authorized set,並且定義 𝐼 ⊆ {1, … , 𝑙},𝐼 = {𝑥|𝜌(𝑥) ∈ 𝑆}。向量 (1,0, … ,0) 可以經由 A 的列做線性組合所生成出來, 定義所有生成這組向量的列的index 之集合為 𝐼 。由於 П 是 LSSS,因此存在一組常 數集合 {𝜔𝑥 ∈ 𝑍𝑝}𝑥∈𝐼 ,任何對應到 П 的合法 share 之集合 {𝜆}𝑥,我們可以找到一組 子集合使得:∑x∈I𝜔𝑥𝜆𝑥 = s,而且這些常數集合 {𝜔𝑥} 可以在多項式的時間內被運算出 來,找出這些常數 {𝜔𝑥} 所需的時間與 sharing-generating matrix A 的大小有關。

Example 3.3.1 [Shamir t-out-of-n threshold scheme]

假設有一組 party {𝑃1, … , 𝑃𝑛},1 ≤ t ≤ n,t, n ∈ N。定義存取結構為 A = {S ⊆

{𝑃1, … , 𝑃𝑛}| |S| ≥ t},dealer 以 s ∈ 𝐹𝑝 作為 secret,接者 dealer 任意選擇 t-1 個在 𝐹𝑝 之

下的數,𝑟1, … , 𝑟𝑡−1作為多項式的係數,利用 secret s 以及這些係數定義一個 degree 為

t-1 的多項式:

p(x) = 𝑟𝑡−1𝑥𝑡−1+ 𝑟

𝑡−2𝑥𝑡−2+ ⋯ + 𝑟1𝑥 + s

設定 p(0) = s。Dealer 將 share p(i) 分給 party 𝑃𝑖 (i ∈ 𝐹𝑝),只要有至少 t 個 share 就

可以重建回此多項式 p(x)。意即是任意 authorized set S 就可以利用 Lagrange interpolation

(23)

14 Theorem 3.3.1 [Lagrange interpolation]

給定 t 個相異的點{𝑥𝑖, 𝑦𝑖},1 ≤ i ≤ t,這些點由方程式 f(x) = y 所產生,f(x) 的 degree 不超過 t 。則此 f(x) 可以表示成: f(x) = ∑ 𝑦𝑖 𝑡 𝑖=1 ∏ 𝑥 − 𝑥𝑗 𝑥𝑖− 𝑥𝑗 1≤𝑗≤𝑡 𝑖≠𝑗 令S = {𝑥1, … , 𝑥𝑡},定義 Lagrange coefficient ∆𝑥𝑖,𝑆= ∏ 𝑥−𝑥𝑗 𝑥𝑖−𝑥𝑗 𝑥𝑗∈𝑆,𝑥𝑗≠𝑥𝑖 ,我們可以利用 Lagrange interpolation,代入 x = 0 ,即可算出 f(0) = s 。

(24)

15

第四章、Attribute-Based Encryption

4.1

Attribute-Based Encryption (ABE)

ABE [2]是 Sahai 與 Waters 在一九九五年所提出,ABE 最早的原型可以追朔到 Shamir 在一九八五年的時候提出的 Identity-Based Encryption(IBE)[1],在 IBE 中,使用者能夠 以他由一個可信的 Private Key Generator(PKG)在驗證使用者身分後產生。然而,無論是 IBE 或是傳統的公開加密系統,它們的加密都是一對一的加密,換言之,每一份加密的 資料只對應到一把解密的金鑰,假若想要把資料分享給多個使用者,同一份資料就必須 利用各個使用者的公開金鑰進行多次的加密,使得金鑰管理不易且沒有彈性,因此,IBE 跟公開加密系統都不適用於一對多的使用者模式。

而 ABE 的出現解決了上述的問題,Sahai 和 Water 提出了 Fuzzy Identity-Based Encryption,也就是廣為人知的 ABE。使用者在加密資料時所定義的存取規則,並非考 慮接收者的身分,而是由接收者手上所握有的屬性(attribute)來決定該接收者是否符合 他的存取規則,符合的話接收者則得以解密資料。ABE 可視作 IBE 的延伸,只是將原本 用來識別使用者身分轉變成一個屬性的集合。也就是說,ABE 與傳統上的加密系統最大 的差別在於它是一種一對多的加密,正是基於這樣的特性,使得 ABE 可以對資料達到 細粒度存取控制,與傳統公開加密系統相較之下更富有彈性,同時也降低使用者管理上 的複雜度。

在這之後,陸續又有學者提出了 Ciphertext-Policy Attribute Based Encryption (CP-ABE)與 Key-Policy Attribute-Based Encryption (KP-ABE),這是 ABE 最主要的兩種類別, 此兩種的差異在於存取規則是嵌在金鑰抑或是密文之中。另外,CP-ABE 與 KP-ABE 皆 是單授權中心的屬性加密系統(single authority),在近來的研究中,也有許多人探討多授 權中心的屬性加密系統(multi-authority),以下小節會一一詳細介紹這些 ABE 加密演算 法。

4.2

Key Policy Attribute-Based Encryption (KP-ABE)

KP-ABE 最早是由 Goyql et al. [3] 所提出,在這個加密系統中,是將存取規則與私 密金鑰(Private key)做連結,密文則與一組屬性作連結。例如:假設有一份健康資料 A 以 {“2012”,“心臟病”,“血液檢查”} 這組屬性加密,另一份健康資料 B 以

(25)

16 {“2012”,“高血壓”,“血液檢查”} 這組屬性來做加密,如果 Alice 手中的私密金鑰 中所連結的存取規則是“2012”AND “心臟病”,則 Alice 可以存取所有在 2012 年與 心臟病相關的健康資料,但無法存取資料 B。而若另一個人 Bob 的私密金鑰所連結的存 取結構是 2012”AND “血液檢查”,則 Bob 可以存取資料 A 與 B。 定義 access tree

在 KP-ABE 中,是將一個存取規則以 access tree 表示,每一個非葉的子節點是一個 k-out-of-n 的 threshold gate,n 是該節點的子節點數,k 是 threshold value,若 k=1,n=2 時, 此節點是一個 OR gate,k=2,n=2 時,此節點是一個 AND gate。每一個葉節點分別代表 一種屬性,以下定義三種函式:

1. 𝑝𝑎𝑟𝑒𝑛𝑡(𝑥) 回傳節點 𝑥 的父節點。

2. att(x) 回傳該葉節點所連結的屬性。

3. index(x) c 回傳節點 𝑥 的 index。

圖 7 是一個 access tree 的範例,在此例中的存取規則是 (Attr1 And Attr2) OR (2 of (Attr3,Attr4,Attr5)),

圖 7 KP-ABE 中的 access tree

KP-ABE 是建立在 symmetric bilinear pairing,e: 𝐺1 × 𝐺1 → 𝐺𝑇,𝐺1的 order 是質數 𝑝 ,

𝑔 為𝐺1 的一個生成子。

(26)

17 Setup 定義一個 attribute universe 𝒰 = {1,2, … , n},替每一個在 𝒰 中的屬性 i 選擇一個值 𝑡𝑖,𝑡𝑖 ∈ 𝑍𝑝,並且選擇一個 y ∈ 𝑍 𝑝,則公開金鑰為: PK = (𝑇1 = 𝑔𝑡1, … , 𝑇𝑛 = 𝑔𝑡𝑛, Y = 𝑒(𝑔, 𝑔)𝑦) 主金鑰(Master key)為: MK = (𝑡1, … , 𝑡𝑛, y) Encryption 選擇一個 secret s,s ∈ 𝑍𝑝,將一組屬性的集合 γ 與信息 𝛭 做加密,密文為: E = (γ, 𝐸′ = 𝑀𝑌𝑠, {𝐸 𝑖 = 𝑇𝑖𝑠}𝑖∈𝛾) Key generation 此演算法會回傳一個私密金鑰,該金鑰與存取結構 A 做連結。

首先會先將存取規則轉換成 access tree,對每一個在 access tree 中的非葉節點 𝑥 ,選定

一個多項式 𝑝𝑥 ,而此多項式的 degree 為 𝑡𝑥− 1,對根節點 R 設定 𝑝𝑅(0) = 𝑦,其他 的節點 𝑥 設定為 𝑝𝑥(0) = 𝑝𝑝𝑎𝑟𝑒𝑛𝑡(𝑥)(𝑖𝑛𝑑𝑒𝑥(𝑥)),再選擇 𝑡𝑥− 1 個任意常數來完成這個 多項式,最後,令 𝑆 為 access tree 中葉節點之集合,對每一個屬性所連結的葉節點,產 生私密金鑰: 𝐷𝑥 = 𝑔 𝑝𝑥(0) 𝑡𝑎𝑡𝑡(𝑥) 𝑓𝑜𝑟 𝑥 ∈ 𝑆 Decryption

首先定義一個遞迴演算法 DecryptNode(CT, SK, x),對每一個在 access tree 中的葉節點

𝑥 , DecryptNode(CT, SK, x) = {𝑒(𝐷𝑥, 𝐸𝑖) = 𝑒 (𝑔 𝑝𝑥(0) 𝑡𝑖 ), 𝑔𝑠𝑡𝑖) = 𝑒(𝑔, 𝑔)𝑠𝑝𝑥(0) 𝑓𝑜𝑟 𝑖 = 𝑎𝑡𝑡(𝑥) ∈ γ ⊥ 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 由於 𝑝𝑥(0) = 𝑝𝑝𝑎𝑟𝑒𝑛𝑡(𝑥)(𝑖𝑛𝑑𝑒𝑥(𝑥)),對每個節點 𝑥 ,利用內插法得到 e(g, g)sp𝑥(0),一 直重複次演算法直至遇到根節點,最後可得對根節點 R, e(𝐷𝑅, 𝐸𝑖) = e (𝑔𝑝𝑅𝑡(0)𝑖 ), 𝑔𝑠𝑡𝑖) = 𝑒(𝑔, 𝑔)𝑠𝑝𝑅(0) = 𝑒(𝑔, 𝑔)𝑠𝑦 = 𝑌𝑠 即可得明文: M = 𝐸′ 𝑌𝑠

(27)

18

4.3

Ciphertext Policy Attribute-Based Encryption (CP-ABE)

CP-ABE 是由 Bethencourt et al [4]等人所提出,與 KP-ABE 相反,CP-ABE 是將密文 與存取規則連結,私密金鑰則與一組屬性作連結。例如:有一份健康資料加密時,制定 存取規則為“A 醫院”AND (“醫生”OR“護士”),表示 A 醫院的醫生或是護士可以 根據他們所持有的屬性來存取這份健康資料,其他像是 B 醫院或是 C 醫院則由於不符 合存取規則而無法存取該資料。

CP-ABE 是建立在 symmetric bilinear priring,e: 𝐺1× 𝐺1 → 𝐺𝑇,𝐺1的 order 是質數 𝑝 ,

𝑔 為𝐺1 的一個生成子,並定義一個雜湊函數 𝛨:{0,1}∗ → 𝐺1。 以下是 CP-ABE 的四個演算法: Setup 選擇兩個變數 α, β ∈ 𝑍𝑝 ,則公開金鑰為: PK = (𝐺1, g, h = 𝑔𝛽, f = 𝑔 1 𝛽, 𝑒(𝑔, 𝑔)𝛼) 主金鑰(Master key)為: MK = (β, 𝑔𝛼) Encryption 此演算法會將信息 M 加密於存取結構 A 之下,首先會先將存取規則轉換成 access tree, 由根節點 R 開始,選定一個多項式 𝑝𝑅 ,而此多項式的 degree 為 𝑡𝑅 − 1,選擇一個 secret s,s ∈ 𝑍𝑝,設定 𝑝𝑅(0) = 𝑠,再選擇 𝑡𝑅− 1 個任意常數來完成這個多項式。其他 的節點 𝑥 設定為 𝑝𝑥(0) = 𝑝𝑝𝑎𝑟𝑒𝑛𝑡(𝑥)(𝑖𝑛𝑑𝑒𝑥(𝑥)),同樣地,再選擇 𝑡𝑥− 1 個任意常數來 完成這個多項式 𝑝𝑥。令 X 為 access tree 中所有葉節點的集合,則密文為: CT = (A, 𝐶̃ = 𝑀𝑒(𝑔, 𝑔)𝛼𝑠, 𝐶 = ℎ𝑠 ∀x ∈ X ∶ 𝐶𝑥= 𝑔𝑝𝑥(0), 𝐶 𝑥′ = 𝐻(𝑎𝑡𝑡(𝑥))𝑝𝑥(0)) Key generation 此演算法會輸入一組屬性集合 𝑆 ,最後輸出一組金鑰對應到此集合 𝑆 。首先任意選取 一亂數 r ∈ 𝑍𝑝,針對每個屬性 j ∈ S ,任意選取一個亂數 𝑟𝑗 ∈ 𝑍𝑝 ,最後運算出私密金 鑰為: 𝑆𝐾 = (𝐷 = 𝑔𝛼+𝑟𝛽 ∀j ∈ S: 𝐷𝑗 = 𝑔𝑟𝐻(𝑗)𝑟𝑗, 𝐷𝑗′= 𝑔𝑟𝑗)

(28)

19 Decryption 對於每個非葉節點 𝑥 ,令 i = attr(x),若 i ∈ S ,則: DecryptNode(CT, SK, x) = 𝑒(𝐷𝑖, 𝐶𝑥) 𝑒(𝐷𝑖, 𝐶 𝑥′) =𝑒(𝑔 𝑟𝐻(𝑖)𝑟𝑖, ℎ𝑝𝑥(0)) 𝑒(𝑔𝑟𝑖, 𝐻(𝑖)𝑝𝑥(0)) = 𝑒(𝑔, 𝑔)𝑟𝑝𝑥(0) 若 i ∉ S : DecryptNode(CT, SK, x) =⊥ 若 𝑥 為非葉節點,考慮遞迴的情況: 令 z 為 𝑥 的子節點,呼叫DecryptNode(CT, SK, z),輸出 𝐹𝑧 ,令 𝑆𝑥 為大小為 𝑡𝑥 的 任意集合,收集這些子節點 z,使得 𝐹𝑧 ≠⊥ ,如果 𝑆𝑥 不存在,則 DecryptNode(CT, SK, x) =⊥。 𝐹𝑥 = ∏ 𝐹𝑧 △𝑖,𝑆𝑥′(0) 𝑧∈𝑆𝑥 , 𝑤ℎ𝑒𝑟𝑒 𝑖 = 𝑖𝑛𝑑𝑒𝑥(𝑧), 𝑆𝑥′ = {𝑖𝑛𝑑𝑒𝑥(𝑧): 𝑧 ∈ 𝑆𝑥} = ∏(𝑒(𝑔, 𝑔)𝑟𝑝𝑧(0))△𝑖,𝑆𝑥′(0) 𝑧∈𝑆𝑥 = ∏ (𝑒(𝑔, 𝑔)𝑟𝑝𝑝𝑎𝑟𝑒𝑛𝑡(𝑧)(𝑖𝑛𝑑𝑒𝑥(𝑧)))△𝑖,𝑆𝑥′(0) 𝑧∈𝑆𝑥 = ∏(𝑒(𝑔, 𝑔)𝑟𝑝𝑥(𝑖))△𝑖,𝑆𝑥′(0) 𝑧∈𝑆𝑥 = 𝑒(𝑔, 𝑔)𝑟𝑝𝑥(0) 將根節點 𝑅 入此遞迴演算法,可得 DecryptNode(CT, SK, R) = 𝑒(𝑔, 𝑔)𝑟𝑝𝑅(0)= 𝑒(𝑔, 𝑔)𝑟𝑠,最後可算出明文: M = 𝑒(𝐶, 𝐷)𝐶̃ 𝑒(𝑔, 𝑔)𝑟𝑠 ⁄ = 𝐶̃ 𝑒(ℎ𝑠, 𝑔𝛼+𝛽𝛾 ) 𝑒(𝑔, 𝑔)𝑟𝑠 ⁄

(29)

20

4.4

Multi-Authority Attribute-Based Encryption (MA-ABE)

[2][3][4] 的 ABE 皆是建立在單屬性授權中心(attribute authority)之下,意即是系統 中只有一個授權中心負責金鑰的產生與授權。然而,在現實生活中,存在許多的授權中 心,這些授權中心各別掌管一些屬性,譬如由圖 8 所示,在一個醫療的系統中,一個在 A 醫院服務的內科醫生,經醫療機構認證後取得“physician”這個屬性,而“internal medicine”這個屬性也許是從醫療學會取得,“Hospital A”則是服務的醫院所給予,這 些授權中心各自獨立運作,每個人可以個別到這些授權中心經由驗證取得所需的屬性。 圖 8 多屬性授權中心 Chase [5] 於二〇〇七年發表了一篇 KP-ABE 的多授權中心加密系統,其中,每一 個使用者擁有一個獨特的識別碼(GID),利用此識別碼,使用者可將從不同屬性授權中 心取得的金鑰連結在一起,這個系統需要一個中央的授權中心(central authority)來控制 主金鑰,並且透過他來將從其他授權中心取得的金鑰整合在一起之後,產生一把新的金 鑰再授權給使用者,但是,這樣導致中央授權中心控制了所有金鑰,使得他有權去解密 所有的資料,反倒變成了安全上容易被攻擊的目標。而 Chase 提出的機制有一項限制是 在存取規則上只支援 Conjunctive normal form(CNF),系統中的授權中心數量也是在一 開始系統設定時就必須決定好,無法彈性增減。

之後,Chase et al. [6] 提出了改進的方法,利用分散式虛擬亂數函數(distributed pseudo-random function)的技巧,移除了中央授權中心,儘管如此,這個方法除了在存取

(30)

21

規則上同樣只支援 CNF 之外,授權中心的數量同樣是在系統設定時就被固定,無法讓 新的授權中心動態加入系統。

二〇〇九年,Lewko et al. [7] 提出了 DABE,此為 CP-ABE 的多屬性授權中心加密 機制,在此機制之下,每個使用者都有一個識別碼,同樣是用來連結來自不同授權中心 的金鑰。不過這個系統不需要一個中央的授權中心,故不會遭遇因金鑰集中所造成的安 全性問題。除此之外,在系統初始化之後,任何的使用者依然可以隨時加入系統,成為 新的授權中心,在存取規則上更是支援了所有的 Boolean formula,使用者可以選擇某些 授權中心所管理的屬性任意組合來制定存取規則,在制定存取規則上極富彈性。因此, 我們選擇 Lewko 所提出的加密機制來實現我們的 PHR 系統,而詳細的演算法會在第五 章介紹。

(31)

22

第五章、利用 ABE 達成存取控制之 PHR 系統

在這個章節,介紹我們所提出的,以病人為中心的 PHR 系統框架,此 PHR 系統 是建立於雲端環境,我們將闡述如何利用 ABE 來實現對 PHR 於雲端架構之下的安全 共享。

5.1

問題闡述

在 PHR 系統中,存在數以千計的 PHR 擁有者與使用者,在此我們稱系統中 PHR 的 擁有者為病人,而存取 PHR 的人稱為被授權者或使用者,亦即是需經由病人授權許可, 被授權者始能存取該病人之 PHR,每一個病人對其 PHR 有絕對的控制權,他可以產生、 管理與刪除他的 PHR。所有病人的 PHR 皆儲存在雲端伺服器上,被授權者可能來自各 行各業,也許是醫事人員、醫療研究者或是病人的家人、朋友等。這些被授權者透過網 路連結雲端伺服器取得病人的 PHR,被授權者可以依其權限存取來自不同病人之 PHR, 同樣一份 PHR,每位被授權者的存取權限有所差別,與病人所定義的存取規則息息相關。

5.2

系統架構

在我們的系統架構中,主要有四個角色:屬性授權中心(Attribute Authority, AA)、 病人、被授權者(也就是 PHR 系統中的使用者)與雲端伺服器。 如圖 9 所示,屬性授權中心各別掌管一個屬性集合,這些屬性可以用來代表使用者 的身分與職業,授權中心並替其所控制的屬性產生公開金鑰與私密金鑰,公開金鑰的部 分,授權中心會將其公告在網頁上;私密金鑰的部分是使用者提出要求,經授權中心驗 證使用者身分之後才授權給該使用者。而在我們的系統中,病人本身也是一個授權中心, 其所掌管的屬性是以 PHR 的分類為主,假若病人想分享某部分的 PHR 給某一使用者, 可以即時授權一把私密金鑰給該使用者。被授權者則是通過屬性中心取得符合其身分的 私密金鑰,再從雲端伺服器下載他想存取之 PHR,依其取得之私密金鑰解密該份 PHR。 病人從授權中心所產生的公開金鑰中選擇一部分金鑰來加密他的 PHR,之後再將 PHR 上傳到雲端伺服器儲存。雲端伺服器則是負責接受使用者上傳與下載的請求,並提供空 間儲存 PHR。

(32)

23

圖 9 系統架構

5.3

安全模型

在我們的系統中,假設雲端伺服器是誠實但好奇的(honest but curious),他們提供使 用者儲存的服務,讓使用者能夠正常上傳與下載檔案,遵循我們的演算法運作,但是他 們會窺探使用者的檔案內容,意圖從中獲取使用者的私密資訊。而各個屬性加密中心我 們則假設都是完全可信任的,這些中心各自管理一些屬性並產生公開金鑰供使用者加密 時使用,使用者們可以向這些授權中心提出要求,通過驗證之後取得含有屬性的私密金 鑰。最後,我們假定使用者會試圖去存取不在其權限內的檔案,換言之,若是其私密金 鑰無法滿足解密檔案所需的存取規則的話,使用者們或許會串謀起來,將各自擁有的私 密金鑰結合起來用以滿足更多檔案的存取規則,藉此存取權限外的檔案。

5.4

系統框架

我們提出此框架的目的在於提供使用者一個安全存取 PHR 的結構與減輕其管理金 要的負擔,主要的想法是將系統中大部分的金鑰管理交由屬性授權中心負責,被授權者 被劃分成兩部分:公開領域(public domain)與私人領域(personal domain),以病人視角來

(33)

24 說,公開領域使用者的身分為醫生、護士、醫療人員等具有專業身分之人物;而在私人 領域的使用者則是病人熟識或是信任的人,譬如家人或朋友等。在此兩種領域中,我們 利用 ABE 來定義 PHR 的存取規則,以使用者的身分與 PHR 的種類作為屬性,藉此分 配每一個使用者的存取權限。病人毋須記錄使用者存取清單,通過 ABE 加密 PHR,允 許病人對他的 PHR 做更細緻化的存取控制,依據不同的角色與需求制訂更有彈性的存 取規則。同時,病人本身僅需管理私人領域之使用者的私密金鑰與 PHR 種類相關的金 鑰。就使用者數量而言,公開領域之使用者所涵蓋的範圍遠遠大於私人領域,故我們將 與公開領域使用者身分相關之屬性金鑰交由屬性授權中心管理,大大減輕病人管理金鑰 的負擔。

5.4.1

金鑰設定

在我們的系統中,屬性的種類包含被授權者的身分與 PHR 的種類,前者像是醫生、 護士、藥師等,後者則像是病人的過敏記錄、各科處方簽、手術紀錄等。而在公開領域 中,由屬性授權中心來管理與發送金鑰,這些屬性授權中心分別控制與使用者身分職業 相關的屬性,並產生公開金鑰與私密金鑰,公開金鑰的部分可以公布在該授權中心的網 頁上供病人下載;私密金鑰的部分則由使用者向授權中心提出請求,經由授權中心驗證 之後取得。譬如說一個具有醫生身分的使用者可向醫生公會請求私密金鑰,待醫生公會 審核通過之後方可取得含有醫生屬性的金鑰,使用者若是在 A 醫院任職的話也可以向 醫院請求私密金鑰,也就是使用者可以向多個授權中心請求與其身分相符的私密金鑰, 最後這個使用者手中可能握有“醫生”、“內科”、“A 醫院”這些屬性的私密金鑰。 另一方面,病人主要負責管理與其 PHR 種類相關的屬性與少部分私人領域中的使 用者屬性。系統中事先定義一些屬性來分類 PHR,像是手術紀錄、血液測試等,此外, 還定義朋友、家人屬性,讓病人能夠管理在私人領域中的使用者。當病人註冊進入系統 後,會替這些屬性分別產生公開金鑰與主金鑰,病人可依其家人、朋友身分給予相對應 的私密金鑰。此外,在公開領域的部分,我們首先利用身分的屬性來過濾那些人可以存 取病人的 PHR,接著透過病人即時授權一把與 PHR 種類相關的私密金鑰來決定該使用 者可以存取病人哪一類的資料。舉例來說,當病人到醫院看病時,可以即時授權一把私 密金鑰給醫生,此私密金鑰含有手術紀錄這個屬性,若病人將其 PHR 的存取規則訂為 “A 醫院”AND “醫生” AND “手術紀錄”的話,則 A 醫院中的醫生,且有被病人

(34)

25

即時授權“手術紀錄”這個屬性的醫生可以存取病人的 PHR,但 A 醫院中的其他醫生 則無法滿足該 PHR 的存取規則,因而無權去對該病人之 PHR 做存取之動作。

5.4.2

PHR 的存取規則

存取規則能夠以 Boolean formula 來表示,其中的每一項代表一種屬性,例如: (𝑎1 𝐴𝑁𝐷 𝑎2 ) 𝑂𝑅 𝑎3 𝑂𝑅 𝑎4,𝑎1, 𝑎2, …為屬性,而一個 Boolean formula 亦可以一棵 access

tree 來表示,所有葉節點分別代表一個屬性,非葉節點與根節點則是代表 AND 跟 OR。 而在加密時我們會將 Boolean formula 轉換成一個 LSSS matrix,詳細過程在 6.2 節會介 紹。 為了同時讓公開領域與私人領域的使用者可以存取病人的 PHR,在制定存取規則 時,病人可以將存取規則定義為如圖 10 所示: 圖 10 存取規則 也就是將公開領域與私人領域中使用者的身分屬性以 OR 連結在一起,如此一來,無論 是 A 醫院的醫生護士,或是病人的家人朋友,滿足存取規則的人都可以存取該份 PHR, 病人只要在加密時定義好 PHR 的存取規則,即可讓公開領域與私人領域中符合權限的 使用者存取 PHR,換言之,病人不僅無需針對不同領域的使用者設定不同的存取規則, 更不需要重複加密 PHR。另外,若是要支援病人在緊急狀況時也能提供 PHR 給醫療人 員使用的話,可將“緊急狀況”這個屬性利用 OR 加入存取規則中。

5.4.3

系統設定與金鑰發送

系統最初會定義一組與 PHR 種類相關的屬性,像是診所處方簽、手術紀錄等,當 一個病人加入系統之際,病人根據這組屬性產生公開金鑰與私密金鑰,公開金鑰可公布 在病人個人的網頁上,私密金鑰則由病人自己保存。而各個屬性授權中心加入系統之際 會定義一組與使用者身分相關的屬性,同樣對每一個其所管理的屬性產生公開金鑰與私 密金鑰,在我們的系統中,由於病人本身亦管理部分的金鑰,故可將病人視為一個屬性 授權中心。

(35)

26 假如使用者想要取得私密金鑰的話,他必須向屬性授權中心提出請求,並證明自己 的身分,屬性授權中心驗證後會回傳一把與其身分相符之私密金鑰,如圖 11 所示,我 們假設這些請求與金鑰的傳遞都是在一個安全的通道上。爾後使用者即可以此把金鑰作 為身分的證明,只要身分符合病人 PHR 中存取規則所規範,使用者就能存取病人儲存 在雲端上的 PHR。 圖 11 金鑰授權

5.4.4

PHR 的加密與儲存

PHR 產生的途徑可能是來自於病人的個人資料、血壓紀錄或是診所處方簽等,當病 人取得 PHR 後,可將 PHR 傳送到雲端伺服器儲存,與其他使用者共享,而在上傳前, 必須先加密 PHR,以保障 PHR 資料的隱密性。但是在這裡並非直接以 ABE 對 PHR 加 密,因為 PHR 的資料可能很龐大,直接用 ABE 加密所花費的時間會非常可觀,因此在 進行加密時,會先產生一把 AES 的金鑰,先以此金鑰加密 PHR,接著再以 ABE 加密此 把 AES 金鑰,並定義存取規則。加密結束後,使用者才將已加密的 PHR 連同經 ABE 加 密的 AES 金鑰上傳至雲端伺服器存放,其存放格式如下圖 12: 圖 12 加密之 PHR 格式

FID 為該 PHR 之識別碼,k 為 AES 金鑰,ABE(k)是以 ABE 加密之 AES 金鑰,𝐸𝑘(𝑃𝐻𝑅)

(36)

27

5.4.5

PHR 的解密與存取

如圖 13 所示,使用者透過網路,向雲端伺服器提出請求,傳送他想要下載的 PHR 之 FID 給雲端伺服器,雲端伺服器再根據 FID 找出對應的 PHR 及其 AES 金鑰並回傳給 使用者。使用者獲得 PHR 與 AES 金鑰後,假若他手中所持有的私密金鑰與存取規則相 符合的話,則使用者可以解出 AES 金鑰,並用此把金鑰解密 PHR,取得明文的資訊, 反之,若其私密金鑰無法滿足存取規則時,將無法正確解回 AES 金鑰,換句話說,使用 者並無存取該 PHR 之權限,無法將 PHR 正確解密回來。 圖 13 PHR 解密與下載

5.5

PHR 系統-使用 DABE 做存取控制

5.5.1

DABE

本研究所提出的框架主要是運用 DABE 來達成對資料的存取控制,DABE 中每一個 使用者都會被賦予一個全域識別碼 GID,GID 為該使用者所獨有,用來連結使用者從不 同授權中心所取得之私密金鑰,防止使用者之間互相串謀,將彼此之私密金鑰連結起來。 而 DABE 主要分成五個演算法: Global setup 在這個演算法中定義系統中全域的初始設定。選定一個 bilinear pairing e: 𝐺1 × 𝐺1 → 𝐺𝑇,𝐺1、𝐺𝑇的序為質數 N ,而 𝑔1 為 𝐺1 底下的一個生成子。此外,定義一個雜湊函 數 Η: {0,1}∗ → 𝐺 1,g、N、Η 為公開的參數,在初始設定後公布給全系統的使用者。 Authority Setup

(37)

28 授權中心對於每一個他所掌管的屬性 i ,為其選擇兩個任意的常數 𝛼𝑖、𝑦𝑖 ∈ 𝑍𝑁 , 公開金鑰為 PK = {𝑒(𝑔1, 𝑔1)𝛼𝑖, 𝑔1𝑦𝑖 ∀i},而主金鑰為 MK = {𝛼𝑖, 𝑦𝑖 ∀i}。 Encryption 加密演算法讀入欲加密的信息 M 與存取規則,首先會將存取規則轉換成一個 n × l 的 LSSS matrix A 與一個函數 𝜌,𝜌 將 LSSS matrix 中的列對應到屬性。接著隨機選 擇一個常數 s ∈ 𝑍𝑁,以及一個隨機的向量 v ∈ 𝑍𝑁𝑙,v = {s, 𝑣1, … , 𝑣𝑙−1}, 𝑣𝑖 ∈ 𝑍𝑁,運算 s 的 share,A ∙ v = {𝜆1, … , 𝜆𝑛},再隨機選擇一個向量 w ∈ 𝑍𝑁𝑙,w = {0, 𝑢1, … , 𝑢𝑙−1}, 𝑤𝑖 ∈ 𝑍𝑁, 得 A ∙ w = {𝑤1, … , 𝑤𝑛}。對每一個在存取矩陣中的列 𝐴𝑥,選定 𝑟𝑥𝑅 𝑍𝑁,則可算出密文 為: 𝐶0 = 𝑀𝑒(𝑔1, 𝑔1)𝑠, 𝐶1,𝑥 = 𝑒(𝑔1, 𝑔1)𝜆𝑥𝑒(𝑔 1, 𝑔1)𝛼𝜌(𝑥)𝑟𝑥, 𝐶2,𝑥 = 𝑔1𝑟𝑥, 𝐶3,𝑥 = 𝑔1𝑦𝜌(𝑥)𝑟𝑥𝑔 1𝑤𝑥 ∀𝑥 KeyGen 授權中心針對某個使用者,其全域識別碼為 GID,對每一個欲授權的屬性 i,授權 中心產生私密金鑰為: 𝐾𝑖,𝐺𝐼𝐷 = 𝑔1𝛼𝑖𝐻(𝐺𝐼𝐷)𝑦𝑖 Decryption 假設密文是被加密在 LSSS matrix (𝐴, 𝜌) 之下。解密者首先利用他的全域識別碼算 出H(GID),倘若解密者所持有的私密金鑰 {𝐾𝜌(𝑥),𝐺𝐼𝐷} 對應到存取矩陣的列 𝐴𝑥,使得 (1,0, … ,0) 可以由這些列的子集合所生成,則對於每一個屬性 𝑥,解密者可算出: 𝐶1,𝑥∙ e(H(GID), 𝐶3,𝑥) e(𝐾𝜌(𝑥),𝐺𝐼𝐷, 𝐶2,𝑥)= 𝑒(𝑔1, 𝑔1)𝜆𝑥𝑒(𝐻(𝐺𝐼𝐷), 𝑔1)𝑤𝑥 然後,解密者選擇一組常數 𝑐𝑥∈ 𝑍𝑁,使得 ∑𝑥 𝑐𝑥𝐴𝑥= (1,0, … ,0),接著再算出: ∏(𝑒(𝑔1, 𝑔1)𝜆𝑥𝑒(𝐻(𝐺𝐼𝐷), 𝑔 1)𝑤𝑥)𝑐𝑥 𝑥 = 𝑒(𝑔1, 𝑔1)𝑠 最後可以得到明文為: M = 𝐶0 𝑒(𝑔1, 𝑔1)𝑠 ⁄

(38)

29

5.5.2

系統流程

以下我們利用 DABE 來建構我們的系統,主要會用到前一節所介紹到的五個演算 法,Global Setup、Authority Setup、KeyGen、Encrypt、Decrypt:

系統初始

1. 系統開始運作之初,執行 Global Setup 定義 bilinear pairing 𝑒 以及雜湊函數 H,公

開參數為 N、g、H。 2. 屬性授權中心最初先定義其所管理之屬性,並執行 Authority Setup,產生公開金鑰 與主金鑰,並將公開金鑰公布給系統中所有使用者,主金鑰則妥善保存用以授權。 3. 每一個加入系統的使用者皆會賦予一個獨特的全域識別碼 GID,由使用者所保管, 於要求授權金鑰時使用。 金鑰產生與授權(屬性授權中心) 1. 使用者傳送請求給授權中心,告知授權中心欲被授權之屬性與其 GID。 2. 經屬性授權中心審核通過之後,執行 KeyGen,產生與使用者所要求之屬性相對應 的私密金鑰,並回傳給使用者。 3. 使用者儲存從屬性授權中心所取得之金鑰,待解密 PHR 時使用。 金鑰產生與授權(病人) 1. 使用者傳送請求給病人,告知授權中心欲被授權之屬性與其 GID。 2. 病人根據想要授權給使用者之 PHR 種類,執行 KeyGen 產生與該種類相對應的屬 性之私密金鑰,並即時授權給使用者。 3. 此後,使用者可運用此私密金鑰去存取該病人之 PHR,假若使用者所持有之私密金 鑰符合 PHR 之存取規則即可成功解密。 PHR 加密 1. PHR 之產生:病人由醫院、醫療機構取得健康資料或是個人紀錄量測之血壓與飲食 紀錄等。 2. 假使病人想將 PHR 的資料與其他使用者共享,首先他先選擇一把 AES 金鑰,將 PHR 以 AES 作加密。

(39)

30

3. 經由 AES 加密後,再訂定存取規則,根據存取規則中會使用到的屬性,選取屬性授

權中心的公開金鑰與自己所管理之公開金鑰,執行 Encrypt 將 AES 金鑰加密。 4. Encrypt 會先將存取規則由 Boolean formula 轉換成一個 n × l 的 LSSS matrix,𝑛

為屬性的數量,並定義映射函數 𝜌,𝜌(𝑥) 代表存取矩陣中每一列 𝑥 所映照到的屬 性。加密後的 PHR 包含密文、LSSS matrix 與 𝜌。 5. 接著再為 PHR 選擇一個 FID,此 FID 不可與系統中其他 PHR 重複。 6. 最後,病人將加密的 PHR 及 AES 金鑰上傳到雲端伺服器。 PHR 解密 1. 使用者提供要下載之 PHR FID 給雲端伺服器,雲端伺服器依照 FID 傳回 PHR 與 AES 金鑰。 2. 首先找出使用者私密金鑰中與 PHR 存取規則相對應之屬性,運算在存取矩陣中是 否可找出一子集可以線性組合出 (1,0, … ,0),若存在這樣的子集的話,使用者再執 行 Decrypt。 3. 若使用者提供的金鑰正確的話即可解回 AES 金鑰,否則 Decrypt 會回傳 ⊥。 4. 解回 AES 金鑰後即可將 PHR 解密,若使用者提供的私密金鑰中之 GID 一致,則可 正確解密 PHR,否則將解密失敗。

5.6

安全分析

在[7]中有 DABE 詳細的安全證明。在我們的 PHR 系統中,所要達到的安全性包含 PHR 的隱密性與抵禦使用者間的同謀攻擊。不論是未經授權的使用者或是雲端供應商, 即使他們獲得 PHR 密文也無法解密。 一個經授權的使用者唯有在其所擁有的屬性滿足存取規則的情況下方可解密,換句 話說,由存取結構轉成的 LSSS matrix 中,我們可以找出一個屬性的子集合 X,選擇一 組常數 𝑐𝑥∈ 𝑍𝑁,使得 ∑𝑥∈𝑋𝑐𝑥𝐴𝑥= (1,0, … ,0),如此才能算出: ∏ (𝑒(𝑔𝑥 1, 𝑔1)𝜆𝑥𝑒(𝐻(𝐺𝐼𝐷), 𝑔1)𝑤𝑥)𝑐𝑥= 𝑒(𝑔1, 𝑔1)𝑠 (1) 而未經授權的使用者所擁有的屬性無法找出一組列的集合使得其作線性組合之後為 (1,0, … ,0),故不能算出 𝑒(𝑔1, 𝑔1)𝑠。

(40)

31 接著我們討論使用者間的同謀攻擊,也就是使用者並非單獨使用其所被授權的金鑰 來作解密,而是與其他使用者聯合起來,意圖存取不在其權限之內的 PHR。假設這些同 謀者之中可以找出一組屬性的子集合 X,使得 ∑𝑥∈𝑋𝑐𝑥𝐴𝑥= (1,0, … ,0),儘管看起來這些 使用者的私密金鑰滿足了存取規則,但是在解密時,由 (1)的式子可看到必須算出 𝑒(𝐻(𝐺𝐼𝐷), 𝑔1)𝑤𝑥,然而,每一個使用者的私密金鑰中的 GID 都是相異的,因此最後仍然 無法正確算出 𝑒(𝑔1, 𝑔1)𝑠,這些同謀者無法解密成功。而雲端伺服提供商亦無法解密, 這是因為他並未被授權任何私密金鑰,即使與其他使用者串通起來,由於上述的理由, 雲端伺服器提供商還是無法解密 PHR 獲取任何資訊。 所以利用 DABE,讓使用者可以對 PHR 達到細粒度的存取控制,並且保證了資料 的隱密性與抵禦同謀攻擊,而在屬性授權中心的部分,假設有 N 個屬性授權中心,DABE 最多可達到 N-1 個屬性授權中心同謀攻擊的安全性,換言之,除非所有的屬性授權中心 都串謀起來或是全被攻擊者擊潰,否則無法產生出系統中所有使用者的私密金鑰。

(41)

32

第六章、實作

系統實作的部分,我們會介紹建構 PHR 系統所需的工具與環境,實作 DABE 的演 算法,並提供使用者一個操作介面用以管理他的 PHR。

6.1

DABE 實作

6.1.1

開發環境設定

DABE 主要包含五個演算法,在實現這些演算法上,我們使用的開發語言是 Java, 開發軟體為 Ellipse 4.2.0,程式運行於 2.4 GHz Intel core i5 的 CPU 之上,作業系統為 Windows 7,此外,為了實現 DABE 中 bilinear pairing 的運算,我們引入 Java Pairing-Based Cryptography(JPBC)套件。

6.1.2

JPBC 函式庫[22]

JPBC 函式庫係由 Ben Lynn 所開發,他將原本由 C 語言撰寫的 Pairing-Based Cryptography(PBC)改成 java 的 porting。JPBC 支援 symmetric 與 asymmetric pairing 的 運算,主要分為六個種類:Type A、Type A1、Type D、Type E、Type F、Type G,我們 選擇 Type A 來做 paring 的運算。Type A 建立在橢圓曲線 E: 𝑦2 = 𝑥3+ 𝑥 之上,E 是

一個 supersingular curve,因此 Type A 為 symmetric pairing,field 的大小為 512 bit, embedding degree 為 2,而群的序是一個 160 bit 的質數。根據表 1,我們所選擇的型態 其安全強度與 RSA 1024 bit 的安全強度相等。

Symmetric key size RSA Elliptic curve key size

80 1024 160 112 2048 224 128 3072 256 192 7680 384 256 15360 521 表 1 NIST 建議的金鑰長度

(42)

33

6.1.3

實作

本節描述我們如何實作 DABE,程式主要的架構如圖 14:

圖 14 程式架構

由 command 讀入指令,DABEHandler 判斷目前要執行哪一種演算法,而在 DABE 中 包含以下五個程式:

GlobalSetup

產生 pairing 以及生成子 g。

Setup

指令格式:set <pkFile> <mkFile> <attribute1> <attribute2>...

輸入一組屬性,此程式會對每一個屬性產生公開金鑰與主金鑰,並分別寫入到公開金鑰 與主金鑰檔案之中。

KeyGen

指令格式:key <gid> <skFile> <mkFile> <attribute1> <attribute2>...

首先讀入使用者的 GID,接著再讀取授權中心主金鑰檔案,以及要授權給使用者屬性清 單,最後將產生給使用者的私密金鑰寫入檔案。

Encrypt

指令格式:enc <file> <encFile> <accessPolicy> <authority1> <authority2>...

程式讀入定義好的存取規則,此存取規則以 Boolean formula 表示,再讀入存取規則中所 需要使用到的授權中心之公開金鑰。接著將 Boolean formula 的運算式轉為前序的運算

(43)

34

式,再建立 access tree,根據 access tree,產生 LSSS matrix,再以 LSSS matrix 做加密, 最後將結果輸出至檔案。

Decrypt

指令格式:dec <gid> <file> <aesKeyFile> <decFile> <skFile1> <skFile>...

解密時,讀入要解密的檔案及其 AES 金鑰,使用者必須輸入其 GID 與其所持有之私密 金鑰,解密成功的話,程式會成功將檔案解密並寫入新的檔案,反之,解密失敗的話程 式會出現錯誤訊息並終止。

6.2

Boolean formula 到 LSSS matrices 的轉換

存取規則可以用 monotonic Boolean formula 來描述,而 LSSS 的存取結構亦可由 Boolean formula 轉換而成。有許多標準的技巧可以執行此一轉換。其中一種像是可以將 Boolean formula 表示成 access tree,內部的節點為 AND 與 OR 這兩種邏輯閘,而葉節點 則對應到各個屬性。LSSS 中列的個數與 access tree 中葉節點的個數相同。

假設有一個 Boolean formula:“( A AND B ) OR ( C AND D ) OR E”,在實作上我 們會先將此 Boolean formula 轉成前序式表示:“OR OR AND A B AND C D E”,接著 再建造 access tree,如圖 15 所示:

數據

表 目 錄
圖  3  使用 CP-ABE 的 PHR 系統架構
圖  6    generating matrix
圖  7 是一個 access tree 的範例,在此例中的存取規則是  (Attr1 And Attr2) OR (2 of  (Attr3,Attr4,Attr5)),
+7

參考文獻

相關文件

 Request.Cookies[ &#34;Cookie 名稱&#34; ].Value –取得使用者所傳送的 Cookie 內容. 

Principles of and types of irrigation systems灌溉系統的原理和類型 Collection, storage, and use of rainwater收集,儲存和使用雨水 Use, installation, and maintenance of

33 (3) 對需考慮資訊安全的公司或單位,下列何者是屬於進出公司 必要進行安全管制的可攜式設備或可攜式儲存媒體?手

下列何者不歸屬於系統呼叫的行程控制(Process

最後特別提出說明,本研究用戶端作業系統為 Win 2000 Professional,伺服 器端作業系統為 Windows 2000 Server 並啟動 Active Directory

RiOs 是生產第三型 (Type III)純水的純水系統。Elix Essential 是生產第二型 (Type II)純水的純水系統。如果安裝有純水儲水桶,產水可儲存在純水儲水桶中。. 總而言之,Elix

圖4 1 整合資訊系統風險 圖4.1 整合資訊系統風險..

 附錄 2:在 Windows XP 中將 Tera Term 設定為預設 Telnet 用戶端..  附錄