線上產生的密碼安全嗎?看懂亂數來源,以及長度為什麼比複雜度重要
用網頁產生密碼會不會被記錄下來?說明密碼在哪裡產生、什麼樣的亂數才算安全,以及為什麼「16 位純字母」通常比「8 位混symbol」更難破解,還有排除易混淆字元的實際用途。
本文介紹的工具:密碼產生器
用網頁產生密碼,最合理的疑慮是:這組密碼會不會被對方記下來?
這個問題有明確的答案,取決於密碼是在哪裡產生的。
關鍵在「密碼有沒有離開你的電腦」
有兩種做法:
- 伺服器產生:你按下按鈕,網站在自己的主機上算出密碼再傳給你。對方理論上看得到你拿到什麼
- 瀏覽器產生:密碼在你自己的電腦上算出來,全程沒有送出去
密碼產生器 屬於後者——密碼在你的瀏覽器裡產生,不會傳到任何伺服器。你可以在斷網的情況下測試:拔掉網路,頁面照樣能產生密碼。
亂數品質也有差別
同樣是「隨機」,來源不一樣:
- 一般的隨機函式(程式語言內建的那種)是可預測的偽隨機,設計目的是速度不是安全。拿來產生密碼並不恰當
- 瀏覽器另外提供加密等級的亂數來源,專為金鑰、密碼這類用途設計
本工具用的是後者。這件事從外觀看不出來,但它決定了產出的密碼是不是真的難以猜測。
長度比你想的更重要
很多網站規定「必須包含大小寫、數字、符號」,讓人以為複雜度最重要。實際上:
每多一個字元,破解難度是倍數成長;而字元種類只是把基數變大。
| 密碼 | 難度來源 |
|---|---|
| 8 位、四種字元都有 | 基數大但太短 |
| 16 位、只有英文字母 | 通常遠比上面更難破解 |
實務建議:
- 長度至少 16(本工具預設就是 16,可以再往上調)
- 網站有規定就依規定加符號,但不要為了加符號而縮短長度
- 重要帳號直接用更長的,反正是複製貼上,長一點不影響你
「排除易混淆字元」什麼時候該開
有個選項是排除長得像的字元,例如數字 0 與字母 O、數字 1 與字母 l。
- 需要用看的、用手打的密碼 → 建議開啟。例如要印出來交給同事、要在電視盒或印表機上用遙控器輸入
- 只在密碼管理員裡複製貼上 → 不用開,讓字元集越大越好
產生之後怎麼保管
這是整件事最脆弱的一環:再強的密碼,記在便條紙或存在通訊軟體裡都沒有意義。
- 用密碼管理員保存
- 每個網站用不同密碼——這比密碼多強更重要。單一網站外洩時,共用密碼會讓所有帳號一起淪陷
- 重要帳號一律加開兩步驟驗證
常見問題
產生的密碼會被記錄嗎?
不會。密碼在你的瀏覽器裡產生,沒有送到伺服器,網站端不存在這筆資料。
重新整理會拿到一樣的密碼嗎?
不會,每次都是重新產生的。所以產生後要先複製保存,離開頁面就找不回來了。
產生器可以離線使用嗎?
可以。斷網狀態下頁面照樣能運作,這也反過來證明了密碼確實是在本機產生的。
密碼強度顯示要看到什麼程度才夠?
強度指示是參考用的綜合評分(長度與字元種類),長度足夠時自然會落在高分區。與其追求滿分,不如確保長度夠、而且每個網站都不同。
相關工具
- 密碼產生器:本文使用的工具
- 雜湊計算:計算文字的雜湊值
- UUID 產生器:產生唯一識別碼
- Base64 編碼解碼:編碼不是加密,別拿來藏密碼