今年 6 月,曾經爆出「僅 3 天半就破解 DES」的大新聞,但原則上知道這的意義——如果成功減少密鑰長度,也可以使用 Brute Force Effort相當有效地找到密鑰- 這就是我們實際示範的。這個實驗的意思並不是說 DES 很危險,而是無論你使用哪一種密碼,你都必須永遠考慮實際的金鑰長度。
有多種方法可以提高加密強度,但它們的成本很高。安全,包括加密,可以說是從對資訊重要性分類開始的。
EFF 的 DES 破解器
今年 6 月,有報道 DES 在短短三天半內就被破解,這成為了頭條新聞。解決這個挑戰的人是一個叫做電子自由基金會(EFF)的組織,該組織花了一年半的時間建造了一台配備大量專用晶片的機器,並且能夠在三年半的時間內擊敗RSA的DES挑戰賽天。
為此使用了一種稱為純文字攻擊的方法。據說成本是250,000萬美元,其中80,000萬美元是人工成本,但當然,這不足以讓10個人兼職工作一年半,所以除此之外,他們還得支付一年半的時間,可以說是涉及到人工成本。
然而,也許 1,000,000 美元足以建造一台可以在幾天內發現 DES 金鑰的機器。這恰好是 DES,但對於其他加密實際上也可以說同樣的事情。 順便說一句,根據他們的計算,如果錢不是問題的話,製造一台可以在幾秒鐘內解決單個密鑰的機器相對容易。很長一段時間以來,人們都說 DES 是一種特殊的機制,可以讓政府更容易解決問題,但他們已經證明,可以用錢來解決,而不需要像我這樣做。
如何解決 DES(和其他分組密碼)
首先,我們來談談如何解決 DES(和其他密碼)。請注意,雖然這裡使用 DES 作為範例,但這同樣適用於其他分組密碼。 (順便說一句,流密碼似乎更容易解決。)
基本上分兩步驟解決。
第一步是硬件,排除明顯不同的按鍵。
然後,第二步是在軟體中搜尋剩餘的密鑰。
排除明顯不同的鍵的方法如下。
首先,將文字切成 16 個位元組的片段。將其分為兩部分,每部分8個位元組。我們從前 2 個位元組開始。
首先,使用給定金鑰解密前 1 個位元組。如果它“有趣”,則解碼下一個 1 位元組。這裡,「有趣」是指解碼結果在預期的字元代碼空間內。例如,假設原始文字僅包含兩個標點符號[AZ][az][0-9],則解碼結果有趣的機率僅為2/62=256/1。 (如果金鑰錯誤,將隨機出現 4 個字元。)如果這很有趣,請對下一個 256 位元組執行相同的操作。如果這也有趣,下次也做同樣的事情。當檢查 1 個位元組時,只有 8/(18)。對接下來的 8 個位元組執行相同的操作。兩者都感興趣的機率是 (1/(48))2 這將是。現在軟體需要檢查的按鍵數量是 224 已經成為了。 256與此相比,這是一個顯著的進步。
剩下的就是這2個了24 我們會將產生的文字與字典進行比較,以確定它是否正確。這是第二階段。此處理成為瓶頸,因此關鍵在於如何將其最小化。
結果,DES Cracker 在短短三天多的時間內成功解密了整個文字。 這種方法稱為純文字攻擊。
更有效的方法是已知的純文字攻擊。 這是當加密區塊具有一些預先已知的文字時。在這種情況下,上面的 62/256 就變成了 1/256。那麼,軟體必須檢查的按鍵數量是
((1/28)2)8*2128 = 1
這將是。也就是說,即使密鑰是128bit,也不需要用軟體來校驗。
(已知)純文字攻擊意義
這種(已知)純文字攻擊的影響是重大的。這是因為在許多情況下您已經知道特定文字片段的位置。例如,MS Word 文件以特定字串開頭,Web 上的請求以 GET 開頭。郵件通常以From開頭,這樣的例子不勝枚舉。換句話說,對每個訊息進行加密實際上可能沒有多大意義。
此外,在簡單隧道等情況下,IP標頭在資料部分被加密,因此可以對其套用明文攻擊。因此,隧道傳輸降低了加密的強度。隧道似乎更好,因為IP位址變得不可見,但如果你考慮加密機制,你會發現它恰恰相反。
換句話說,加密不是你可以做的事情。即使密鑰長度很長,如果實際密鑰空間很窄,也是沒有意義的。因此,說加密的強度只取決於密鑰的長度是無稽之談。順便說一句,實際的金鑰空間除了上述之外還取決於加密演算法。例如,RSA加密依賴分解的難度,目前可以正確分解100位元左右的數字。 2128 是一個39位元的數字,所以RSA加密中的128位元金鑰是完全不夠的。 (另一方面,IDEA等128位元是相當安全的。)
無論如何,透過加密保護安全是一個需要適當設計的領域。
我們該如何應對?
現在,從上面我們了解到,保護資料其實是相當困難的。當然,您的數據實際上被破解的可能性相當低。那裡的破解者不會投資一百萬美元到這樣的事情。因此,它被網路駭客破解的可能性極低。
預計以下人員將真正破解該系統。
- 企業間諜活動
- 政府(軍隊)
無論哪種方式,政府都會破解它。是否是租用線路並不重要。基本上美國允許的方式應該算是處於國防部可以隨時監控的狀態了,這個先放一邊吧。接下來是企業間諜活動,他們可能會創造出類似 DES Cracker 的東西。這相對來說很難檢測到。因為,與破解者不同,他們永遠不會宣布他們已經解決了這個問題。但是,如果你問我不通過公共網路是否安全,事實並非如此。如果一家公司花費 100 萬美元建造一台機器並破解它,他們可能會在另一家公司內部擁有內部供應商。而且既然他們會試圖利用他來獲取訊息,那最好還是加密一下。這是因為獲取資訊的成本不僅是支付給內部提供者的成本,還有破解代碼的成本。
還有一些方法可以讓程式碼本身難以破解。基本上,一種方法是增加金鑰長度,但還有一種稱為超級加密的方法作為變體。這是一種防止純文字攻擊的兩步驟加密方法。使用兩步加密時,第一步解出的文本是隨機文本,根本無法過濾。如果您應用 DES 兩次,您將獲得至少 2 位元的實際金鑰長度。所以三天半的時間想要解決問題是完全不可能的。 2 與純文字攻擊相比24難度要高出一倍,所以這可不是那麼容易解決的事情。如果要解決這個問題,最好為即將退休的主管提供諮詢工作。
你是否走得那麼遠取決於接收訊息的人可以從中受益多少。即使這些資訊對公司來說非常重要(例如,如果洩漏了,就會損害公司的聲譽),但沒有人會花錢買它,除非它能幫助別人賺錢。從這個意義上說,安全性(包括加密)始於對資訊的重要性進行分類。
