1.3 Kerckhoff原則:只有密鑰保密
設計一個密碼算法(就像我們前面提到的對稱加密原語)是一件簡單的事情,但是設計一個安全的密碼算法并非易事。雖然本書很少涉及構造這樣的密碼原語,但是本書會教大家判別一個密碼算法優劣的方法。這做起來可能有點困難,因為對于一個給定的任務,我們可能有許多密碼算法可以選擇。不過,我們可以從密碼學歷史和密碼學社區吸取他人的經驗教訓,并從中得到一些啟示。通過回顧歷史,我們可以了解到如何將一個密碼算法變成安全可信的算法。
數百年后,依靠信件傳遞消息的Alice和Bob已經成為歷史,紙質信件不再是我們的主要交流方式,取而代之的是更好、更實用的通信技術。如今,我們可以使用功能強大的計算機和互聯網。當然,這意味著我們以前面臨的惡意信使也變得更加強大。惡意信使無處不在:它可以是咖啡店里的Wi-Fi發射器,也可以是組成互聯網并轉發信息的服務器,還可以是運行我們算法的計算機。我們的敵手(惡意信使)現在也有能力觀察到更多的信息,例如向網站發出的每一個請求都可能通過錯誤的線路傳遞,并在幾納秒內被更改或復制,而這一切可能不會有人察覺到。
回顧歷史,我們可以清晰地看到密碼算法存在漏洞、被一些組織或獨立研究人員破解、不能真正地保護消息和未實現設計者所聲稱功能的例子比比皆是。通過從這些錯誤中總結經驗教訓,慢慢地我們知道了設計良好密碼算法的方法。
注意:
攻破一個密碼算法的方法有很多種。對于加密算法,我們可以通過以下方法來攻擊這個算法:將密鑰泄露給攻擊者、在沒有密鑰的情況下解密消息、僅僅通過觀察加密的消息就可以知道消息本身等。任何對算法假設的削弱也可以認為算法被攻破。
密碼學的發展經歷了漫長的試錯過程,而一個更成熟的觀點也在這個過程中產生:為了對密碼學原語的安全性獲得足夠的信心,每個密碼原語必須由密碼專家對其進行公開分析。若做不到這一點,密碼原語的可靠性只能依賴于含糊不清的安全性說明,而歷史證明了其效果不盡如人意。這就是密碼學家(Cryptographer,密碼原語設計者)長期以來需要密碼分析者(Cryptanalyst,又稱“密碼原語分析者”)幫助他們分析所構造密碼原語安全性的原因(見圖 1.5)。因此,密碼學家也常常是密碼分析者,反之亦然。

圖1.5 密碼分析者的主要工作就是幫助密碼學家分析所構造密碼學原語的安全性
我們以高級加密標準(Advanced Encryption Standard,AES)加密算法為例。AES算法是一個由美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)組織的國際競賽的產物。
注意:
NIST是一個美國的標準和指南制定機構,其提出的標準主要供美國政府相關職能部門、其他公共和私人組織使用。NIST對許多像AES算法這樣應用廣泛的密碼原語進行了標準化。
AES加密算法競賽持續了數年之久,其間有許多來自世界各地的密碼分析者參與嘗試攻擊各種各樣的候選算法。歷經數年的公開分析,人們對候選算法產生了足夠的信心,最終將一個最具競爭力的算法提名為AES算法。如今,人們普遍認為AES算法是一個可靠、應用廣泛的加密算法。例如,我們每天瀏覽網頁就會用這個算法加密。
以公開方式構造密碼算法標準的思路與Kerckhoff原則有關,該原則可以理解為:依靠保密算法來實現安全是不明智的,因為敵手很容易知道我們所使用的密碼算法。因此,我們會選擇公開密碼算法。
如果Alice和Bob的敵手知道他們加密信息的算法,那么他們的加密算法還怎么保證安全呢?答案是密鑰。協議的安全依賴密鑰,而與算法本身是否保密無關。無論是我們將要學習的密碼算法,還是在現實世界中使用的密碼算法,我們通常都可以自由地進行研究和使用,這是本書涉及的密碼算法的共性。只有作為這些算法輸入的密鑰才需要保密。就像吉恩·羅伯特·杜卡萊特(Jean Robert du Carlet)所說:“即使對大師來說,藝術也是一個秘密。”在1.4節中,我們將討論一種完全不同的密碼原語。現在,讓我們用圖1.6來匯總目前已學到的內容。

圖1.6 AES是一個對稱加密算法實例,對稱加密算法是對稱密碼體系中的一類算法
- Node Security
- CTF實戰:技術、解題與進階
- Mastering Kali Linux for Advanced Penetration Testing
- INSTANT Windows PowerShell
- Preventing Digital Extortion
- Kali Linux Wireless Penetration Testing Cookbook
- 網絡安全技術與實訓(第4版)(微課版)
- 從0到1:CTFer成長之路
- 網絡安全設計、配置與管理大全
- 編譯與反編譯技術實戰
- Mastering Linux Security and Hardening
- 功能型密碼算法設計與分析
- 網絡攻防實戰研究:MySQL數據庫安全
- 云計算安全:關鍵技術、原理及應用
- Practical Mobile Forensics