Dapps
我應該如何保護我的 dapp 中的私鑰?
我們目前正在建構一個與區塊鏈互動的應用程序。它需要能夠自行在區塊鏈上進行交易——例如將地址添加到白名單中。這意味著它需要有權訪問允許它簽署交易的私鑰。儲存該私鑰的最佳做法是什麼?
為了澄清,我想知道如何保護 APP 的私鑰 - 而不是使用者的密鑰。
對此沒有通用的解決方案。
客戶端的可能方法是:
- 使用者將私鑰保存在加密的密鑰庫文件中。進入 DAPP 的“登錄”將是:(1)將密鑰庫文件上傳到本地,而不是伺服器,(2)輸入密碼以解鎖密鑰庫,(3)在 DAPP 中使用私鑰。這就是https://www.myetherwallet.com的工作方式。
- 使用者將他們的私鑰儲存在智能手機上的應用程序中。每次 DAPP 想要發送交易時,它都會顯示一個二維碼,由智能手機應用程序掃描。智能手機正在簽署交易並將其轉發到網路中。這就是 uPort 的工作原理。
- 使用瀏覽器外掛來管理您的密鑰庫。該外掛將 web3 上下文注入到頁面程式碼中。當應用程序需要發送交易時,通過外掛確認並簽署該交易。這就是 Metamask 的工作原理。
- 最後,您可以使用智能卡或硬體錢包來簽署交易,這是最安全的方法,但是,它需要額外的硬體。
伺服器端自動化的可能方法
- 使用儲存在文件系統中的未加密私鑰
- 將密鑰庫儲存在文件系統中,將密碼儲存在文件系統中。編寫解鎖密鑰庫的腳本。這僅比直接儲存未加密的密鑰稍微好一點。
- 使用智能卡解決方案(我讀到有支持添加到 geth,但我自己從來沒有測試過這個)。