故事所需的密碼學元素
**注意:**按照 Maarten Bodewes 的回答,我編輯了這篇文章以使其更清晰。
我正在寫一些東西,部分原因是需要破解一些加密文件。
這是故事中需要發生的事情:
有兩方試圖破解它們,甲方和乙方。甲方擁有它們四年,儘管嘗試了所有嘗試,但都失敗了。乙方後來得到了文件,並在不到兩個月的不間斷嘗試中設法破解了它們。
甲方擁有最先進的技術,但乙方是好人,這是一個科幻故事,所以他們擁有比其他任何人都好得多的技術*。*技術的細節與故事無關,所以我不需要建立它們。
乙方最終會成功;儘管如此,為了保持一點懸念,他們仍然有可能失敗。我的意思並不是說他們的作品中出現了問題。我的意思是,他們的解密嘗試,無論比乙方的更先進,都不能保證有效。換句話說,B 方不能只是坐下來等到他們正在做的任何事情都完成後,知道此時他們將擁有解密的文件。
這就是我需要的:
- 一種算法,如果您使用高熵密碼加密文件,則超出使用已知方法和技術的任何蠻力嘗試。(這就是 A 方失敗的原因。)我知道 AES-256 可能是我正在尋找的。
- **儘管如此,這種方法仍將使 B 方成功。**B 方擁有比地球上任何人都快得多的電腦這一事實是故事的核心,因此您可以假設。但是,如果暴力破解這些文件需要大量的精力或其他非常不切實際的東西,我不准備聲稱 B 方有任何這些。其他可以讓 B 方佔優勢的方法或情況——例如知道使用了什麼算法、能夠猜測密碼的詳細資訊或知道可能的密鑰文件——當然是我會考慮的選項。**如果量子電腦可以合理地破壞 AES,那是我會考慮的另一個選擇,**因為 B 方擁有它們並不太牽強。我只是不知道QC是否真的可以做到這一點。
儘管量子電腦符合要求,但我不確定它們是否是最佳選擇。能夠攻擊現代加密(RSA、AES)的通用量子電腦將對社會產生嚴重影響。它不僅適用於您正在破解的這個密碼。
是否必須是卓越的計算資源才能為好人提供優勢?因為我能想到幾個看似合理的故事情節,其中的優勢來自一個好主意。
選項 1:有關密碼的資訊。 如果好人了解如何選擇用於派生加密密鑰的密碼片語,他們可以輕鬆地將搜尋空間時間從幾千年縮短到幾個月。例如,密碼總是來自書中的行,其中一些單詞被第一個字母替換。或者是其他東西。學習這種模式的一種方法是破解由同一個人選擇的其他密碼,這些密碼使用較弱的加密進行加密。主人公認出了其他密碼中的模式,假設它可能是選擇密碼的常用方法,並開始對減少的空間進行暴力字典攻擊。
選項 2:一般密碼分析改進。 我們的英雄是一位密碼大師。並使用對 AES 的未知但似是而非的密碼分析攻擊來大大提高速度。這種攻擊可能會大大減少執行時間,並且它只能對一小部分密鑰起作用。可以發現,相當一部分密鑰具有一些不受歡迎的屬性,這使得高級攻擊成為可能(這仍然需要大量的計算資源),並且他們不確定密鑰是否恰好是如此弱的密鑰,他們很可能能夠提前量化他們的成功機率。
選項 3:辨識數據加密方式的缺陷 無論是 誰加密數據,都可能搞砸了。並且不小心留下了一條更容易攻擊它的路線。這可能類似於在加密前壓縮後應用糾錯(GSM 中的缺陷)。或者更直接導致攻擊的東西,比如保留密碼的簡單雜湊。英雄們發現了這個漏洞,並以此為基礎發動了更高效的蠻力。
選項4:攻擊消息而不是密鑰 輸出英雄根本不要嘗試破解加密。他們利用所使用的消息和壓縮系統的知識。並找出哪些可能的消息會產生所需的大小。雖然如果它只是大小,它只有在我們收集少量可能的消息並且攻擊會很快時才可行。例如,我們使用大小和時間來破譯單詞和片語而不破壞加密,就存在對語音的攻擊。
乙方最終會成功;儘管如此,為了保持一點懸念,他們仍然有可能失敗
一種能讓乙方成功的方法
對我來說,顯而易見的解決方案是 strategy 和HUMINT。
使用當時的算法,比如 bcrypt 和 AES-256,再加上一個高熵密碼,甲方將永遠要麼直接攻擊密鑰,要麼試圖暴力破解密碼。在他們成功之前,太陽真的會燃燒殆盡。因此,唯一的選擇是發現正確的密碼,或者非常接近,以便他們可以暴力破解從他們認為可能的密碼中得出的類似密碼。
因此最好的,可能唯一的選擇是使用情報收集、心理學、社會工程學等,試圖找出加密文件的人會使用什麼樣的密碼。也許他們在一個沒有使用好的密鑰派生 (md5) 的網站上使用了類似的密碼,也許這是他們過去的一些東西,比如最喜歡的報價。無論哪種方式,瘋狂地尋找情報收集,派人出去研究,與老朋友和同事交談,可能會成為一個引人入勝的故事情節。