譯者 | 陳峻
審校 | 重樓
為了訪問自己的數字賬戶,我們通常需要用到密碼或口令。不過,正如現實生活中開鎖的鑰匙可能并不總是牢靠一樣,并非所有的密碼都是安全的。為了加強在線防御,安全專家開發了一系列技術和方法,來提高密碼的安全性。這些方法包括:散列(Hashing)、加鹽(Salting)、摻雜(Peppering)和密鑰擴展(Key Stretching)等。下面,讓我們來探討一下密鑰擴展的重要性,以及它是如何大幅提高在線安全性的。
什么是密鑰擴展?
作為一種加密技術,密鑰擴展可被用于增強密碼和口令的安全性,尤其是在原始密碼的隨機性或長度不足以抵御各種攻擊(如:蠻力攻擊或字典攻擊)的情況下??傮w而言,密鑰擴展會通過對密碼或密鑰進行多次散列處理,來實現更強大的安全性。
密鑰擴展也被稱為密鑰強化,通常是將一個相對較弱、較短的密碼或加密密鑰,應用某種加密函數或算法,以生成一個更強且更長的密鑰。新生成的密鑰輸出又作為后續的輸入,如此反復進行,直到能夠輸出所需的密鑰。從根本上說,此舉的目的在于:使得攻擊者即使獲得了原始密鑰的散列或加密版本,也需要耗費大量的計算成本和時間,才可能恢復原始密鑰。
目前,密鑰擴展在在線賬戶、金融交易、以及數據保護等具有高安全性要求的應用中,發揮著至關重要的作用。它是確保已存密碼和加密密鑰安全性的重要組成部分,并最終可以保障用戶賬號與數據可信。
密鑰擴展是如何工作的?
為了理解密鑰擴展是如何將弱密碼轉換成強大安全的密碼,讓我們來看一個簡單的例子:想象一下,您有一個類似"iloveyou"這樣再普通不過的密碼。那么對于攻擊者來說,該密碼可能都稱不上什么秘密。他們很容易通過暴力破解單詞表和字典的方式,打開這扇“大門”。而事實上,攻擊者的確只需 30 秒,就能破解并訪問該賬戶。
而密鑰擴展會對這個易受攻擊的密碼進行散列處理,以創建更長、更復雜的密碼。例如:"iloveyou"會變成"e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae"。不過,整個擴展過程并未就此結束。
接著,這個新密碼通過再次散列,就變成了:"bc82943e9f3e2b6a195bebdd7f78e5f3ff9182ca3f35b5d415cf796ab0ce6e56"。
而將其繼續做一次散列,就會得到:"46e95d6374c00c84e4970cfe1e0a2982b2b11b1de9343a30f42675a2154a28f5"。以此類推,您可以根據需求執行多次此類操作。
那么,我們是否需要自己從頭開始寫代碼,以實現整個過程呢?顯然不需要。目前,業界已有一些用于密鑰擴展的代碼庫,可以為您完成此類繁重的工作。其中,較為典型和流行的密鑰擴展算法有:PBKDF2、scrypt、Argon2和bcrypt。其中當屬bcrypt和PBKDF2最廣為人知。
具體而言,bcrypt采用blowfish密碼進行多輪散列,使之成為保護密碼安全的可靠選擇。而PBKDF2(Password-Based Key Derivation Function,基于密碼的密鑰推導函數2)是另一種增強密鑰或密碼安全性的可靠選擇。這些工具都可以確保即使是最微弱的密碼,也能夠得到極大限度的屏蔽,以防止未經授權的訪問。
密鑰擴展與加鹽
密鑰擴展和加鹽都是密碼安全領域的重要技術,它們在增強密碼強度等方面,各自發揮著獨特的作用。
如上所述,密鑰擴展主要是對密碼進行多輪散列處理,從而有效地將弱密碼轉化為更安全的版本。因此,執行的次數越多,密碼就越安全。而密碼加鹽則提供了額外的一層防御。它需要在應用散列過程之前,在密碼中添加一串不同的字符,即,通過增加復雜性,來提高密碼的強度。
在實際中,這兩種技術可以被協同使用,以增強密碼的整體強度。不過,需要注意的是,加鹽并非事后補救之法,而應當從一開始便融入其中,從而在弱密碼進行散列處理之前,就對其進行增強。從本質上講,密鑰擴展和加鹽就像一個協作團隊,共同為您的敏感信息提供額外的保護。
密鑰擴展的重要性
密鑰擴展通常被用于基于密碼的加密和身份驗證系統。它有助于降低弱口令或易猜密碼的風險性,使得攻擊者即使獲得了原始口令的散列或加密版本,也很難恢復其經歷了高昂計算代價的原始信息。在諸如:保護已存密碼和加密密鑰等各種實際應用場景中,我們時常可以用到它。下面,我為您總結了密鑰擴展的4項典型安全功能:
- 增強安全性:密鑰擴展的主要目的就是為了大幅提高密碼或加密密鑰的安全性。為此,它會將那些脆弱的、易被猜測的密碼轉化為強大的、復雜的密鑰,使其更能夠抵御蠻力和字典攻擊等攻擊。
- 抵御彩虹表:彩虹表又被稱為預計算表。此類表格是預先生成的散列密碼對應表。攻擊者可以利用它們來快速地查找相應的密碼。而加鹽和密鑰擴展等方法恰好可以使這種表格喪失功效。
- 降低弱密碼影響:在實際操作中,用戶通常會選用便于記憶、但易受攻擊的弱密碼。而密鑰伸展功能則提供了一個額外的安全層面,在用戶和服務之間實施安全保護。
- 減緩攻擊者的速度:密鑰擴展的復雜計算大幅降低了攻擊者破解密碼的速度。顯然,每一次額外的迭代都會使得破解過程更加耗時,進而讓攻擊者望而卻步。
使用密碼強化技術確保資產安全
雖然密碼是安全的第一道防線,但是如果過于簡單,被破解就只是時間問題了。如今,攻擊者正變得越來越狡猾,破解水平也在持續增強。因此,若想在這場“貓鼠游戲”中保持領先,密鑰的處理機制就需要“多走一步”。例如采取上文提到的密鑰擴展、加鹽和摻雜等先進技術,就能夠很好地協助用戶將弱密碼轉化為可以抵御潛在威脅的堅固之盾。
譯者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
原文標題:What Is Key Stretching? Here's How Your Passwords Can Be Kept Secure,作者:CHIOMA IBEAKANMA