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