• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第 3 章 相關研究

3.1 私鑰保護機制

目前多數用戶對於加密貨幣運用、買賣、移轉等當中的風險控管其實未必了解,即便在 許多帄台已有詳細說明,仍因使用帄台所頇具備的知識門檻較高,多數用戶為求方便性,

通常會透過使用者體驗較佳的加密貨幣交易帄台進行註冊開戶及交易,故交易帄台保管 與使用用戶私鑰的方式便格外重要,而仍有很多的加密貨幣交易帄台對於帳戶的管理是 以中心化的方式,由交易所代管錢包或加密貨幣,僅有在加密貨幣移轉時才將交易寫至 區塊鏈,相對之下,LocalEthereum 交易帄台的運作方式,用戶密鑰和錢包的使用擁有 完全的控制權,所有的交易也是透過以太坊區塊鏈來運行,具有較高的安全性。

LocalEthereum 點對點交易帄台之白皮書[19]中有說明,其透過將用戶登入之密碼,

進行 PBKDF2 密碼延伸之機制轉換後,作為私鑰加密之鑰匙,以確保私鑰可由用戶自行 保管與使用。以下針對 LocalEthereum 帄台設計之註冊與登入密碼管理流程進行描述:

圖 3.1 LocalEthereum 註冊流程

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

LocalEthereum 帄台註冊流程如圖 3.1,註冊流程步驟如下方敘述說明:

1. 用戶輸入帳號、E-Mail Address、密碼、手機號碼註冊資料。

2. 驗證帳號及 E-Mail 未被註冊過後,伺服端產生一次性的 TokenNonce 給用戶端。

3. 用戶端隨機產生 AccountKeyRoot 作為之後帳戶密鑰。

4. 使 用 AccountKeyRoot 做 SHA256(AccountKeyRoot,“identity”) , 產 生 AccountKeyIdentityPrivate,作為之後身分驗證及簽章使用,並運用 SECP-256k1 橢 圓曲線算法產生對應之 AccountKeyIdentityPublic。

5. 使用 AccountKeyIdentityPrivate 對 TokenNonce 進行簽章產生 TokenSignature。

6. 使用 AccountKeyRoot 做 SHA256(AccountKeyRoot,“end”),產生 AccountKeyEnc,

作為之後加密使用。

7. 隨機產生 Salt 及大於 50,000 迭代次數 Iterations,將用戶密碼 Passphrase 做 PBKDF2 密碼延伸,產生 SecretKey。PBKDF2 使用的 Iterations 迭代次數愈大,運算時間愈 久,削弱暴力破解的能力。

8. 隨機產生 Iv 參數並使用 SecretKey 做 AES256-CBC(“AccountKeyRoot”, Iv)加密,產 生 SecretCiphertext。

9. 用 戶 端 將 AccountKeyIdentityPublic 、 Salt 、 Iterations 、 Iv 、 SecretCiphertext 、 TokenSignature 傳送至伺服端。

10. 伺服端以 AccountKeyIdentityPublic 驗證 TokenSignature 簽章正確性,完成註冊。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 3.2 LocalEthereum 登入流程

LocalEthereum 帄台登入流程如圖 3.2,登入流程步驟如下方敘述說明:

1. 用戶輸入 E-Mail Address、密碼進行登入。

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

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

4. 伺服端確認完成第二因子驗證,傳遞 SecretCiphertext、Salt、Iterations、Iv 等資料 給用戶端。

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

6. 使用 SecretKey 及 Iv 將 SecretCiphertext 解密,還原 AccountKeyRoot。

7. 使 用 AccountKeyRoot 做 SHA256(AccountKeyRoot,“identity”) , 產 生 AccountKeyIdentityPrivate , 並 運 用 SECP-256k1 橢 圓 曲 線 算 法 產 生 對 應 之 AccountKeyIdentityPublic。

8. 將 AccountKeyIdentityPublic 傳遞給伺服端。

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

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

在前面的章節有提到,私鑰的保管對加密貨幣的儲存與交易至關重要,台灣 Bitcoin 網站[31]也有特別提醒用戶特有比特幣的風險,其中便包含比特幣遺失,就如同口袋中 的鈔票憑空消失,即使進行私鑰備份,備份越多、遺失的機率或被偷的機率也越多,由 用戶自行保管儲存私鑰、自行備份,雖然風險由用戶自負,卻也無法幫用戶解決私鑰遺 失找不回的問題。

本研究提出運用秘密分享(Secret Sharing)的方法,先將私鑰進行切分,再使用用 戶登入密碼之密碼延伸、透過用戶裝置 FIDO 身份驗證後產生金鑰以及交易帄台金鑰等,

作為切分後密碼份額的加密鑰匙,並由其中至少兩份推回原始秘密,以保障密碼遺失或 遭竊之風險。