• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

本研究設計之架構,仍然維持能確保用戶密鑰的隱私性,使用戶之私鑰、密碼及 FIDO 私鑰都僅在用戶端產生及運用,伺服端只儲存參數及公鑰。圖 4.1 為帄台運作示 意圖,由用戶輸入註冊資料後啟動註冊程序,伺服端收到申請 E-Mail 帳號會先確認該 帳號可用性,接著用戶端隨機產生一組私鑰後直接呼叫區塊鏈申請帳戶,再由用戶端啟 動 FIDO 註冊與伺服端溝通,並完成用戶生物辨識驗證。接續的秘密分享(Secret Sharing)、

密碼延伸(PBKDF2)及 AES-256 加密皆由用戶端完成,最後再將密文及參數傳遞至伺 服端儲存,此設計中可確保交易帄台管理者,無法用任何方式自行還原用戶私鑰與擅自 使用。

4.2 流程設計

流程設計共分為註冊、登入及修改密碼等三個階段,以下針對三個部份進行流程說明,

其中登入流程再區分以用戶密碼登入及以使用 FIDO 機制登入之方式。

圖 4.2 註冊流程

3. 用戶端隨機產生私鑰 AccountKey 及其對應公鑰 AccountPublic,以私鑰 AccountKey 註冊區塊鏈帳戶並取得地址。

8. 用戶端 DApp 隨機產生 Salt 及大於 50,000 迭代次數 Iterations,將用戶密碼 Passphrase 做 PBKDF2 密碼延伸,產生 SecretKey。PBKDF2 使用的 Iterations 迭代次數愈大,

運算時間愈久,以削弱暴力破解的能力。

9. 隨機產生 Iv 參數,並將 AccountKey 做 Secret Sharing 後拆分的三個秘密,使用 FIDO 公鑰、SecretKey 及交易所公鑰分別對三個秘密及 token 亂數進行 AES256-CBC 加密,

產生 SecretCiphertext1、SecretCiphertext2、SecretCiphertext3。用戶端將 Salt、Iterations、

Iv、AccountPublic、SecretCiphertext1、SecretCiphertext2、SecretCiphertext3 傳送至伺 服端。

10. 伺服端以交易所私鑰解密 SecretCiphertext3 驗證 token 亂數,並儲存密文資訊及帳戶 公鑰完成註冊。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4.3 登入流程(以用戶密碼登入)

以用戶密碼登入流程設計如圖 4.3,步驟如下說明:

1. 用戶輸入 E-Mail Address、密碼,用戶端 DAPP 隨機產生一組登入公私鑰,並將 E-Mail 及登入公鑰傳送至伺服端進行登入驗證。

2. 伺服端驗證 E-Mail 為已註冊用戶後,寄送驗證 E-Mail 至信箱。

3. 用戶至 E-Mail 信箱點擊驗證連結。

4. 伺服端確認完成第二因子驗證,傳遞 Salt、Iterations、Iv 及兩份做 Secret sharing 後 加密的 SecretCiphertext 等資料給用戶端。

5. 用戶端使用 Salt 及 Iterations,將用戶登入輸入的密碼 Passphrase 做 PBKDF2 密碼延 伸,產生 SecretKey。

6. 使用 SecretKey、登入私鑰及 Iv 分別將 SecretCiphertext2 及 SecretCiphertext3 解密 7. 使 用 解 密 後 的 SecretCiphertext2 及 SecretCiphertext3 還 原 AccountKey 及

AccountPublic,並將 AccountPublic 傳給伺服端。

8. 伺服端驗證 AccountPublic,完成登入。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4.4 登入流程(以 FIDO 登入)

以 FIDO 機制登入流程設計如圖 4.4,步驟如下說明:

1. 用戶輸入 E-Mail Address,用戶端 DAPP 隨機產生一組登入公私鑰,並將 E-Mail 及 登入公鑰傳送至伺服端進行登入驗證。

2. 伺服端驗證 E-Mail 為已註冊用戶。

3. 用戶端發動 FIDO 登入流程觸發身分驗證需求。

4. FIDO 伺服器收到註冊需求即透過 FIDO 伺服器呼叫 FIDO 客戶端,同時隨機產生 一亂數傳遞給 FIDO 客戶端。

5. 用戶利用 FIDO 身分驗證器進行身分認證,通過認證後即使用 FIDO 私鑰對亂數進 行簽章後,將其回傳至 FIDO 伺服器。

6. FIDO 伺服器收到後使用其公鑰進行驗證後,傳遞 Salt、Iterations、Iv 及兩份做 Secret sharing 後加密的 SecretCiphertext 等資料給用戶端。

7. 使用 FIDO 私鑰、登入私鑰及 Iv 分別將 SecretCiphertext1 及 SecretCiphertext3 解密。

8. 使 用 解 密 後 的 SecretCiphertext1 及 SecretCiphertext3 還 原 AccountKey 及 AccountPublic,並將 AccountPublic 傳給伺服端。

9. 伺服端驗證 AccountPublic,完成登入。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4.5 修改密碼流程

修改密碼流程設計如圖 4.5,步驟說明如下:

1. 用戶於登入狀態下,啟動密碼變更流程。

2. 伺服端確認登入資訊無異常,傳送交易所公鑰給用戶端。

3. 用戶輸入原始密碼及新密碼。

4. 隨機產生 Iv 參數,並將 Secret Sharing 後拆分的三個秘密。

5. 由使用者決定是否重新進行 FIDO 註冊,如圖 4.5 中之虛線。

6. 將用戶新密碼 Passphrase 做 PBKDF2 密碼延伸,產生新的 SecretKey。

7. 使用 FIDO 公鑰、SecretKey 及交易所公鑰分別對三個秘密進行 AES256-CBC 加密,

產生新的 SecretCiphertext1、SecretCiphertext2、SecretCiphertext3。用戶端將 Salt、

Iterations、Iv、SecretCiphertext1、SecretCiphertext2、SecretCiphertext3 傳送至伺服端。

8. 伺服端以交易所私鑰解密 SecretCiphertext3,儲存新的密文資訊完成密碼變更。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y