提到的程式碼可以在我的 Github 中找到
在上一篇文章中,我做了 NodeJs 版本的種子短語產生器,在這裡 - 我們將創建它的瀏覽器版本。
身為開發人員,我們經常面臨挑戰,要求我們超越基本的程式設計概念來思考。今天,我想分享我建立安全種子短語產生器的經驗 - 加密貨幣和區塊鏈技術領域的重要工具。這個專案教會了我關於密碼學、使用者互動以及安全應用程式中隨機性重要性的寶貴經驗。
產生種子短語時,隨機性的品質至關重要。很久以前,我使用了 JavaScript 的 Math.random(),但我很快就意識到這對加密目的來說不夠安全。這是我降落的地方:
function generateCustomRandomBytes(byteLength, mouseMoves) { const customBytes = new Uint8Array(byteLength); window.crypto.getRandomValues(customBytes); const mouseHash = new Uint32Array(mouseMoves); for (let i = 0; i < byteLength; i++) { customBytes[i] ^= mouseHash[i % mouseHash.length] & 0xFF; } return customBytes; }
此函數將 window.crypto.getRandomValues() 中的加密安全隨機值與使用者透過滑鼠移動產生的熵結合。 XOR 運算確保兩個來源都有助於最終的隨機性。
我決定讓使用者參與隨機性生成過程。透過追蹤滑鼠移動,我們不僅增加了熵,還吸引了用戶,使他們成為安全過程的積極參與者。
為了讓使用者了解情況並參與其中,我實現了一個進度條,它反映實際的滑鼠移動而不僅僅是經過的時間:
function updateProgressBar() { const progress = Math.min((mouseMoves.length / 3) / requiredMoves * 100, 100); document.getElementById('progressBar').style.width = progress + '%'; if (progress >= 100 && collecting) { stopRandomCollection(); } else if (collecting) { requestAnimationFrame(updateProgressBar); } }
這種方法提供即時回饋,鼓勵使用者移動滑鼠,直到收集到足夠的熵。
一個重要的教訓是保護敏感資料的重要性。最初,我將滑鼠移動資料儲存在一個全域變數中,該變數可能會被惡意腳本存取。我透過使用閉包解決了這個問題:
(function() { let mouseMoves = []; // ... other variables and functions ... function stopRandomCollection() { // ... other code ... generateSeedPhrase(mouseMoves); mouseMoves = []; // Clear sensitive data after use } // ... rest of the code ... })();
這種方法將敏感資料封裝起來,並且無法在全域範圍內存取。
使用助記詞產生器最關鍵的方面之一是確保過程完全離線且安全。以下是有關如何安全運行此程式碼的逐步指南:
繼續之前,請先中斷電腦與網際網路的連線。這可確保在助記詞產生過程中不會傳輸任何資料。
在瀏覽器中執行檔案:
雙擊已儲存的 .html 檔案以在預設 Web 瀏覽器中將其開啟。種子短語產生器現在應該在您的電腦上本地運行。
產生您的種子片語:
請依照螢幕上的指示產生助記詞。
安全地儲存您的種子短語:
生成後,將您的助記詞寫在紙上。切勿以數位方式儲存它。
安全地錄製助記詞後,關閉瀏覽器並刪除 .html 檔案。
離線運行此程式碼至關重要,原因如下:
安全性:它可以防止您的助記詞透過網路進行任何潛在的傳輸。
隱私:它確保沒有第三方腳本或追蹤器可以乾擾該過程。
完整性:保證程式碼完全按照預期運行,無需任何外部修改。
請記住:您的助記詞是您數位資產的關鍵。生成和儲存它時始終優先考慮安全性。離線運行此產生器是保護您的資產的關鍵一步。
建立安全的種子短語產生器不僅僅是編寫程式碼。它涉及了解加密原理、重視用戶互動並始終優先考慮安全性。作為開發人員,此類專案促使我們批判性地思考我們編寫的每一行程式碼及其潛在含義。
這是 Github 的連結 - 可以免費複製
以上是建立您自己的安全種子短語產生器的詳細內容。更多資訊請關注PHP中文網其他相關文章!