Command Palette

Search for a command to run...

線上密碼產生器:建立實際上在攻擊中倖存下來的強密碼

線上密碼產生器:建立實際上在攻擊中倖存下來的強密碼

T
Toolz Team
|Jul 10, 2026|23 閱讀

安全 合集的一部分

以下建議如下 NIST SP 800-63B,它放棄了強制組合規則並強制旋轉,轉而採用長度和針對被破壞密碼的篩選。

2020 年左右的某個時候,在我的 WP Adminify 歲月裡,我花了很長的時間清理客戶' WordPress 網站,該網站已經悄悄向 Googlebot 提供藥品垃圾郵件三週了。入口點是'這是一個插件漏洞。它是't 零日。這是管理員帳戶 - 使用者名稱 admin密碼 Sumon1985@. 網站所有者'的名字和出生年份,上面有一個@bolted以滿足"特殊字元"規則。一個憑證填充機器人徑直走了進來 wp-login.php. 訪問日誌顯示,在登陸前四天內,有 11,000 多次登入嘗試。清除主題檔案和中註入的程式碼 wp_options 桌子帶我度過了週末的大部分時間。

這項工作改變了我對密碼的看法。不是因為攻擊很複雜--而是與複雜相反。這是一個用單字清單敲擊登入表單的腳本,而人類發明的密碼恰好位於單字清單預期的位置。人類的隨機性很差。我們認為 P@ssw0rd2024! 聰明的。地球上每一本破解字典的前幾千個條目都有這種模式,並配有 leetspeak 替換和年份後綴。

我'我也會承認自己的罪。在 Laravel 的一段尷尬的日子裡,我在三個暫存伺服器上重複使用了相同的密碼,因為 "他們'只是暫存,沒人在乎。"然後其中一個暫存盒最終提供了用於調試會話的生產資料副本,我意識到 I'一直在用密碼 I&#39 保護真實的使用者記錄; d 也在某個時候輸入了共享的 TeamViewer 會話。沒有發生任何壞事。那是運氣,不是能力。此後我完全停止發明密碼。

所以我在 toolz。dev 中建立了一個密碼產生器,它做了一件重要的事情:它把人類從循環中剔除。本指南介紹瞭如何在線上正確使用密碼產生器、將強密碼與裝飾密碼分開的熵數學,以及當隨機字串擊敗密碼時 - 使用實際數字,而不是振動。

TL;DR: 停止發明密碼--可以預見的是,人類在這方面做得很糟糕。使用 toolz。dev 密碼產生器 完全在瀏覽器中透過加密安全的 RNG 建立 16 多個字元的隨機密碼。您產生的任何內容都不會離開您的設備,長度比符號體操更重要。

主要特點

加密安全隨機性

這是最重要的功能,也是無人關注的功能。生成器使用 Web Crypto API's crypto.getRandomValues() - 由您的作業系統種子和#39;s 熵池 - 而不是 JavaScript's 種子化的加密安全偽隨機數產生器 (CSPRNG) Math.random(). 這種差異是#39;t 學術。 Math.random() 專為動畫計時和擲骰子演示而構建;如果攻擊者觀察到足夠的值,則可以預測其輸出,因為底層演算法(V8 中的 xorshift128+)從未被設計為抵抗預測。 CSPRNG 是。當密碼的全部意義是沒有人能夠猜到它時,隨機性來源就是其他一切的基礎。 I'看過&引用;密碼產生器和引用;堆疊溢位使用片段 Math.random() 獲得數百票贊成。 Don'複製這些。

長度最多 128 個字元

滑桿的純線路噪音從短而有風險到 128 個字元。對於密碼管理器會記住的任何內容,我都會產生 24 到 32 個字符,並且再也不會考慮它。對於長度上限較緊的系統 - 有些銀行仍然將上限限制為 16 或 20,這會告訴您有關其後端的資訊 - 您將其向下撥至欄位接受的任何內容。您添加的每個字元都會使攻擊者乘以#39;s 的工作量乘以字元集的大小。使用完整字元集從 12 到 16 個字元會增加大約 26 位元熵,這是 &quot 之間的差異;破解和引用成本高昂;和&引用;不會發生在太陽熄滅之前。&引用;長度是現有的最便宜的安全升級。

字元集切換

四個獨立開關:大寫、小寫、數字、符號。混合並匹配每個目標系統。這聽起來很瑣碎,直到您遇到拒絕的舊系統 & 因為某人&#39; 2009時代的消毒層被它窒息,或者是無聲截斷符號的Wi-Fi路由器韌體。我曾經燒掉了40多分鐘調試a&quot;錯誤的密碼&quot;在意識到他們的形式被剝奪之前,循環客戶端&#39;託管面板 <> 提交時,但不考慮帳戶創建。現在我只是切換曲折系統的符號並添加四個長度字元來補償。熵數學幾乎在同一個地方進行,沒有任何結果。

排除模糊字元

Il1|O0o 問題。如果你&#39;會從一個螢幕上讀取密碼並將其輸入到另一個螢幕上 - 電視、IPMI 伺服器控制台、路由器設定頁面、同事在通話中大聲朗讀密碼 - 模糊的字形是痛苦嗎?那是大寫 I 還是小寫 l 還是管道?取決於字體,字體總是會背叛您。排除不明確的切換會將常見的嫌疑犯從池中剔除。每個字元都會失去少量的熵 - 透過添加一兩個長度字元可以輕鬆恢復 - 而且您永遠不會再出現那種單空間字體瞇眼的參數。對於任何手工輸入的內容,我都會無一例外地打開它。

活強度和熵回饋

當您調整長度和字元集時,強度計會立即更新為真實的熵估計 - 而不是樸素的 &quot; 有一個符號,必須很強&quot;評分 P@ssw0rd! 作為優秀的。儀表反映了實際的密鑰空間:字元集大小提高到長度,以位元表示。這將抽象數學變成你可以感覺到的東西。拖曳長度滑桿並觀看位元爬升;切換符號並準確查看其成本。一旦你&#39;看過 16 個隨機字元的得分超過 10 個強制複雜性的字符,該課程比任何曾經管理過的政策文件都要好。

散裝

一批服務帳戶、一批路由器或種子團隊需要 20 個密碼&#39;s 憑證輪換?一次產生它們並複製該批次。每個都獨立於 CSPRNG - there&#39;它們之間沒有序列關係,因此知道它們不會告訴您下一個。我在配置時使用此:每個密碼一個 .env 秘密,每個資料庫用戶,每個隊列工作人員憑證,一次生成並直接貼到金庫中。它擊敗了替代的 I&#39;看過人們這樣做,即產生一個好的密碼,然後&quot;變化&引用;手動九次。那&#39;一個密碼,九套服裝。

100% 客戶端 - 沒有什麼可以離開您的瀏覽器

一切都在您的瀏覽器中運行。密碼由 JavaScript 在您的電腦上生成,顯示在您的電腦上,並從您的電腦複製。沒有 API 呼叫,沒有攜帶該值的分析事件,沒有可以記錄該值的伺服器。 Don&#39;相信我的話 - 打開 DevTools,觀看網路選項卡,然後錘擊生成按鈕。沒有任何火災。這是 toolz。dev 和 I&#39 上每個工具背後的相同架構原則;已經寫過為什麼&#39;不可協商 我關於線上工具中資料隱私的貼文. 透過伺服器往返密碼的線上密碼產生器是 #39;t 安全工具。 It&#39;是一個收集點。

如何使用密碼產生器

第 1 步:開啟工具

前往 密碼產生器. 在點擊按鈕之前沒有帳戶、沒有註冊牆、沒有 cookie 同意迷宮。它加載,它有效。如果您&#39;在您擁有的機器上&#39;完全信任 - 酒店商務中心,借來的筆記型電腦 - 請記住瀏覽器本身就是您的信任邊界:工具獲勝&#39;t 傳輸任何東西,但主機上的鍵盤記錄器不&#39;t care,其 JavaScript 產生字串。

第 2 步:設定您的長度

預設值是一個理智的起點,但對於任何重要的事情都會將其拖曳到至少 16,對於密碼管理器儲存的任何事情都會拖曳到 24+。長度是你擁有的最大的槓桿。如果目標系統強制執行最大值,請使用它允許的每個字元 - 在桌子上留下熵不會有任何獎勵。

第 3 步:選擇字元集

除非目標系統反對,否則請保持所有四組開啟。為處理不當的遺留表單和韌體切換符號;如果人類會手動轉錄密碼,請開啟排除模糊選項。切換時請觀察強度計 - 它會準確地向您顯示每個選擇的成本或以位元形式購買的內容。

第 4 步:產生、複製、儲存

點擊生成、點擊複製、將其直接貼到您的密碼管理器中 - 不是貼到文字檔案中,不是貼到您自己的 Slack DM 中,也不是貼到比您的文明更長久的便條上。根據您的喜好多次再生;每次點擊都是新的獨立抽獎。如果您需要批次,請使用批量模式並立即將每個批次儲存在其帳戶中,然後忘記哪個是哪個。 I&#39;犯了這個錯誤。一次。

是什麼讓密碼真正強大?熵數學

強度是&#39;關於看起來混亂。它&#39;大約是攻擊者必須搜尋的干草堆的大小,我們以熵的位元來測量該乾草堆。

公式很簡單。如果你的密碼是 length 從大小字元集中均勻隨機抽取的字元 charset,可能的密碼數量是 charset^length,以位為單位的熵為:

entropy = log2(charset^length) = length × log2(charset)

每增加一位,搜尋空間就會加倍。工作範例:

  • 12 個小寫字母: 字符集 26,log2 (26) q 4.70,因此 12 × 4.70 q 56 位元. 大約 7.2 × 10^16 的可能性。面對快速破解雜湊的現代 GPU 裝置感到不舒服。
  • 16 個字符,完整字符集 (26 + 26 + 10 + ~10 個符號 & 94,但稱為 95 可列印 ASCII):log2 (94) & 6.55,所以 16 × 6.55 & 105 位元. That&#39;s 大約 3.7 × 10^31 的可能性 - 56 位元空間的五億倍。
  • 24 個字符,完整字符集: . 157 位元. 此時限制因素是服務&#39;的雜湊,而不是您的密碼。

請注意公式獎勵的內容:長度相乘,複雜性只會推動對數項。從僅小寫變為完整字符集,將 log2(字符集)從 4.70 提升到 6.55 - 很好,每個字符多出約 39%。但將長度加倍會使位元數徹底加倍。這就是為什麼 20 個字元的小寫密碼(94 位元)擊敗 12 個字元的萬能湯密碼(79 位元)。長度獲勝。 I&#39;會死在這座山上。

一個關鍵的警告:該公式僅在繪製字元時才成立 均勻隨機. 人工挑選的密碼的熵遠小於其長度所暗示的熵,因為人類從一個微小的、可預測的子集中進行選擇--字典單字、鍵盤遊走、日期、名稱。破解者 don&#39;t 暴力破解完整的密鑰空間;他們按照損壞的規則行走機率排序的單字清單。 Sumon1985@ isn&#39;t 一個 10 個字元的搜尋問題。 It&#39;這是一個名字加年份的搜尋問題,而且這個空間很小。

均勻隨機性是 RNG 重要的地方。這裡&#39; JavaScript 中的錯誤方式和正確方式:

// WRONG — predictable PRNG, never for secrets
const bad = chars[Math.floor(Math.random() * chars.length)];

// RIGHT — CSPRNG via Web Crypto
const buf = new Uint32Array(1);
crypto.getRandomValues(buf);
const good = chars[buf[0] % chars.length];

Math.random() 是一個統計 PRNG:洗牌播放清單就好了,秘密就災難性了,因為它的內部狀態可以從觀察到的輸出中恢復。 crypto.getRandomValues() 從作業系統熵池中提取,即使對於看到其他輸出的觀察者來說也是不可預測的。

甚至&quot;right&quot;上面的例子有一個微妙的缺陷,值得知道: 模偏差. 如果您的字元集大小不為 &#39;t 均分 2^32, buf[0] % chars.length 使低索引字元的可能性稍微大一些。對於 94 個字元集,偏差很小,但仔細實現會使用拒絕採樣 - 丟棄高於字元集大小最大倍數的值並再次繪製 - 因此每個字元的可能性完全相同。它&#39;是兩行修復,它&#39;是將真實生成器與複製貼上片段分開的細節。

最後,標準與數學一致。 NIST SP 800-63B美國聯邦數位身分指南表示,驗證者應該更傾向於長度而不是組合規則(那些&引用;一個大寫,一個符號&引用;要求明顯推動用戶走向可預測的模式) 不是 強制定期輪換密碼,不得有任何洩漏證據,並應根據已知洩漏密碼清單篩選新密碼。這 OWASP 驗證備忘單 指向相同的方向:支援長密碼,允許包括空格在內的所有可列印字符,檢查違規語料庫,並將密碼與 MFA 和速率限制而不是複雜性劇院配對。當標準正文和算術都說&quot;使其長而隨機,&quot;爭論結束了。

常見用例

新服務註冊

每個新帳戶都會獲得一個新的、唯一的隨機密碼 - that&#39;一句話就是整個學科。憑證填充,攻擊我的客戶端&#39;wordpress 網站,之所以有效,是因為人們重複使用密碼:某個被遺忘的論壇上的漏洞會成為您電子郵件的密鑰。如果每個註冊都從生成器中獲取自己的 20 多個字元隨機字串,則任何位置都會包含漏洞。工作流程需要十秒鐘:產生 Toolz.dev/工具/密碼產生器,貼到註冊表中,儲存到密碼管理器。密碼&#39;工作是不令人難忘的。這對我來說曾經感覺像是個錯誤。 It&#39;s 功能 - 任何您能記住的東西,單字清單都可以預測。

WordPress 管理員和資料庫憑證

這個&#39;個人。清理完藥品垃圾郵件後,我的 WordPress 強化清單從憑證開始,而不是外掛程式:隨機 24+ 字元管理密碼,每個額外管理使用者的不同隨機密碼,隨機密碼 DB_PASSWORDwp-config.php,以及隨機鹽。資料庫密碼尤其是 - I&#39;審核了網站名稱加 &quot;123&quot;的網站,位於全球可讀的備份中 wp-config.php. WordPress 網站受到愚蠢、無情的自動化的打擊; wp-login.phpxmlrpc.php 請參閱網站上線後數小時內的登入嘗試。愚蠢的自動化被一件事擊敗:密碼在任何單字清單中都是 &#39;t。隨機字串,按結構,aren&#39;t。

API 金鑰、秘密和。env 檔案

當 I&#39;m 支撐 Laravel 或 Express 專案並需要 Webhook 簽章秘密、cron 端點令牌或兩個服務之間的一次性共享秘密時,我會產生一個長隨機字串 - 32 到 64 個字符,有時如果它&#39;將駐留在 URL 中 - 並將其放入 .env。 對於標識符,我需要是唯一的,但不是秘密的,即#39;是一個不同的工具: uuid 生成器 涵蓋這項工作。如果你&#39;正在檢查什麼&#39;實際上是在一個服務交給你的令牌內 中國航空解碼器 將將其從客戶端解壓縮。更多關於我的整個工作流程的資訊 編碼工具指南. 我遵循的規則:秘密被生成,從未發明,也從未在環境之間重複使用。問我是如何學到這一點的。 (分期伺服器。其中三個。)

共享團隊帳戶和密碼管理器

有些帳戶確實必須共享 - Twitter 公司,註冊商登錄,一個像它一樣按座位收費的 SaaS &#39;列印錢。共享憑證是人類發明的密碼最差的地方,因為它們針對 &quot 進行了最佳化;透過通話輕鬆告訴同事。&報價;修復的是儲存在共享密碼管理器金庫中的隨機生成的密碼,因此沒有人需要說話、輸入或記住它。當有人離開團隊時,重新生成並更新金庫條目 - 這是一件兩分鐘的苦差事,而不是尷尬的安全事件。批量一代在這裡很有幫助:一次旋轉每個共享憑證,而不是向自己承諾你&#39;下次衝刺就會到達其餘部分。你贏了&#39;t。我從來沒有這樣做過。

Wi-Fi 密碼

路由器設定是經典的排除歧義場景:you&#39;將在手機鍵盤、帶有方向鍵鍵盤的智慧電視以及 guest&#39 上輸入此密碼;當它們懸停在你的肩膀上時,我的筆記型電腦會產生 20 多個字元、關閉符號、排除不明確的字元(僅限字母和數字)。仍然比大多數家庭網路運行的街道名稱加年份強得多,因為 WPA2 握手可以在嘗試率巨大的情況下離線捕獲和破解。熵數學不&#39;關心它&#39;s&quot;只是 Wi-Fi。&quot; 62 個字母和數字的字元集仍然為每個字元提供 log2 (62) × 5.95 位元; 20 個字元約為 119 位元。沒有人會暴力破解,您的客人仍然可以在一分鐘內輸入它。

隨機密碼與密碼短語與人類模式

人們製造密碼的三種方式。其中只有兩個是可以防禦的。

方法 典型長度的熵 記憶力 在手機上打字 最好
隨機字串(生成器、16-24 個字元、完整字元集) ~105-157 位元 實際上是零 - 那&#39;沒問題 很痛苦,但你貼的是經理的 密碼管理器儲存的所有內容:帳戶、DB 憑證、API 機密
餐具密碼(5-6 個隨機單字) ~64-77 位元(7,776 字清單中的 12.9 位元/字) 真不錯 簡單-真實的文字,很少的符號 您必須記住的少數:管理器主密碼、作業系統登入、磁碟加密
人類發明的模式(Name+Year!,鍵盤走路) 看起來像 50 多位,針對單字清單的行為就像 20-30 位 很好,具有欺騙性 簡單的 沒有什麼。退役這些。

我的立場: 密碼管理器儲存的所有內容都是隨機字串,必須存在於您腦海中的兩三個秘密的骰子軟體密碼,以及毫無意義的人類發明模式。 一旦您注意到密碼與隨機的爭論服務於不同的工作,它們就會消失。 157 位元的 24 個字元的隨機字串在數學上比 77 位元的 6 個單字的密碼更強 - 但 you&#39;永遠不會從記憶體中輸入隨機的,而 you&#39;永遠不會忘記密碼。所以在每個獲勝的地方使用每個。唯一有密碼的規則:單字必須是 隨機選擇的 來自非您選擇的單字清單(骰子或 CSPRNG)。 correct-horse-battery-staple 選擇是因為您閱讀漫畫的熵接近零。用實際骰子擲出的四個單字有 51.7 位,與廣告中的完全相同。

常見問題

2026 年密碼應該要多久?

對於任何重要的事情,至少有 16 個字符,當密碼管理器進行記憶時,至少有 24 個或更多字符。 NIST SP 800-63B 強調長度而不是組合規則,熵數學支持它:16 個字符的全字符集隨機密碼攜帶大約 105 位,輕鬆超出了實際的暴力範圍。如果網站上限較短,請使用其允許的每個字符,並在那裡啟用雙重認證。

線上密碼產生器可以安全使用嗎?

他們&#39;當且僅當它們使用加密安全的 RNG 完全在客戶端運行時才安全。 toolz。dev 產生器使用 Web Crypto API 在瀏覽器中建立密碼,並且從不傳輸密碼;您可以在產生時透過查看網路標籤進行驗證,而不會觸發任何請求。避免任何在伺服器上產生密碼的產生器,因為 you&#39;會信任陌生人和#39;記錄您的秘密。

密碼比隨機密碼好嗎?

他們在不同的工作中獲勝。 24 個字元的隨機字串在數學上更強,但您可以&#39;t 記住它 - 非常適合密碼管理器儲存。 5-6 字的 diceware 密碼帶有 64-77 位,真正令人難忘 - 非常適合主密碼本身、作業系統登入和磁碟加密。對儲存的所有內容使用隨機字串,這是您腦海中必須存在的幾個秘密的密碼。

生成器如何產生隨機性?

它從 Web Crypto API 呼叫 crypto。getRandomValues (),這是一個由您的作業系統種子化的加密安全偽隨機數產生器&#39;s 熵池。與 Math。random () 不同,它的輸出可以&#39;t 根據先前觀察到的值進行預測,這是密碼從根本上依賴的屬性。仔細的實作還可以避免模偏差,因此您選擇的集合中的每個字元的可能性完全相同。

我應該每 90 天更改一次密碼嗎?

不--不在時間表上。 NIST SP 800-63B 特別建議不要強制定期輪換,因為強制更改會將人們推向攻擊者首先嘗試的密碼 1、密碼 2 等增量模式。當密碼被破壞時更改密碼#39;這是一個實際原因:服務被破壞、您不小心暴露了它、您在不受信任的機器上輸入了它,或者具有共享訪問權限的人離開了團隊。

我真的需要密碼中的符號嗎?

不像註冊表單所堅持的那樣。符號將每個字元的熵從大約 5.95 位元(字母加數字)提高到大約 6.55 位元(完整可列印集)--這很有幫助,但兩個額外的長度字元比符號購買更多。如果舊系統或路由器對符號處理不當,請關閉它們並添加長度。每次 20 個字元的字母數字密碼都會擊敗 14 個字元的符號密碼。

我的瀏覽器中產生的密碼可以被攔截嗎?

不是透過工具本身 - 客戶端產生器不會發出包含密碼的網路請求,因此沒有任何傳輸內容可供攔截。您自己的裝置上存在現實的風險:惡意軟體、鍵盤記錄器或具有頁面存取權限的受損瀏覽器擴充功能。保持您的電腦和擴充功能清潔,將產生的密碼直接貼上到密碼管理器中,並避免在您擁有的電腦上產生憑證#39;t 控制。

什麼&#39;是我能做的最強密碼?

實際上:目標系統接受的最長的完全隨機字串,使用所有四個字元集使用 CSPRNG 產生。滿字元集為 32 個字元 you&#39;超過 200 位,其中密碼不再完全是最弱的連結 - 服務和#39;雜湊、會話處理和您的裝置安全更重要。除此之外的追逐位是裝飾;花精力在各處啟用 MFA 和唯一密碼。

讓我的瀏覽器儲存密碼安全嗎?

比重複使用密碼更安全,不如專用管理器。 Chrome、Firefox 和 Safari 對作業系統登入後儲存的憑證進行加密,並透過加密通道同步它們,從而輕鬆擊敗電子表格或重複密碼。專用管理器會新增瀏覽器跳過的內容:跨瀏覽器存取、與團隊安全共用、漏洞監控以及儲存恢復程式碼和 API 金鑰等非密碼秘密。

攻擊者最常嘗試的密碼是什麼?

洩漏的密碼列表,不是暴力。破解工具會隨著每次突破的最大命中而打開 - 123456、密碼、qwerty - 然後鍵盤走路、年份、寵物名和帶有附加 &quot 的字典單字;123!&quot;或&引用;@&引用;交換。每個人類發明的模式都已經在這些單字清單中,這正是為什麼隨機產生的字串(完全不遵循任何模式)會迴避整個第一波攻擊的原因。

立即產生一個 - 那就不要再想它了

最好的密碼工作流程很無聊。打開 密碼產生器,拖長長度,生成,除了你的經理,繼續你的生活。沒有聰明,沒有助記系統,沒有出生年份,戴著@作為偽裝。每個密碼都是唯一的,每一個都是隨機的,它們都不存在於你的腦海中。週二我花了很多時間從客戶端抓取藥品垃圾郵件&#39;正是透過這個十秒的習慣,主題檔案是完全可以預防的。

如果您&#39;正在保護整個堆疊,則鄰居距離一個選項卡: 哈希產生器 對於校驗和和完整性驗證, uuid 生成器 對於需要唯一性而不是保密的標識符,以及 中國航空解碼器 用於檢查令牌而不將它們貼上到某個隨機站點中&#39;s 後端。所有客戶端,與生成器相同 - 該架構背後的原因在於 資料隱私貼文,更廣泛的工具包之旅就存在於 編碼工具指南.

一個習慣,十秒,背後的真實數學。那&#39;是整個球場。


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!