Security
如何在伺服器端安全地儲存比特幣?
我正在開發一個需要長時間持有使用者比特幣的網路應用程序(類似託管的場景),我想知道有哪些好的步驟/預防措施和原則(dos & dont’s)來安全地執行此操作。這主要是關於安全性,例如個人與單個伺服器端錢包等。到目前為止,我的想法是,我可能不應該將所有的雞蛋都放在一個籃子裡,所以就像為每個交易伺服器生成一個新的隨機錢包一樣 -側,並在將私鑰儲存到數據庫之前使用雙向算法對其進行加密,可能與使用者密碼結合使用,因此給定加密函式 ENCRYPT(password,data) 它將是:
ENCRYPT(HASH(hard-coded password+user password+random salt+pepper), private key)
.
從架構的角度來看,您可以採取的預防措施如下:
- 儲存私鑰或 HD 錢包種子的數據庫應該在單獨的實例上執行,並且只能通過應用程序伺服器訪問(AWS 允許您在虛擬私有云中進行大量配置,即 VPC 來完成此操作)。
- 密鑰已加密。正如您提到的,需要維護某種 2 路加密密鑰。此外,在發生違規行為時,您應該承擔最小的責任。所以用使用者密碼加密私鑰是一個好的開始。但是儲存純文字密碼顯然很愚蠢,因此通過網路從使用者那裡獲取密碼也是如此。https 解決了網路問題,但純文字密碼本身就是一個故障點。因此,您將不得不提出一個不同的方案,在這種方案中,您無法花費您的使用者資金。
- 採用相同的風險最小化方法,多重簽名將是這種情況下的最佳解決方案。但這將要求您的使用者在交易過程中更加活躍。Bitgo以安全的方式強制執行與 HD 相結合的多重簽名,以提供類似的服務。
總之,高畫質錢包將減少您必須儲存的密鑰數量,擁有一個單獨的私鑰伺服器實例並通過使用者密碼加密私鑰是一個很好的開始方式。多重簽名會使使用者的事情變得複雜,但會提供最大的安全性。