Cryptanalysis

密文是否會洩露有關其算法創建者的資訊?

  • January 15, 2020

如果對手擁有數千個使用相同密碼加密的加密文件,他能否確定文件使用了哪種密碼方法?假設對手沒有關於加密環境的先驗知識。

詳細資訊:假設我有一個加密程序,允許我從 5 種完善且實施良好的加密算法中選擇 1 種。我使用該程序加密數千個文件,始終使用相同的分組密碼,同時遵循適當的加密程序(例如,每加密的 n 個文件使用不同的密碼)。這些文件儲存在異地,攻擊者可以獲取這些文件。我想知道通過選擇一個不太常見的算法,例如 Serpent,我是否會將對手的工作量增加 5 倍,或者加密算法確實會洩漏一些資訊,一些重複的屬性,這將有助於對手辨識我擁有的加密方法用過的?

一個好的分組密碼應該與隨機排列沒有區別(否則它被認為是損壞的)。這樣做的結果是兩個好的分組密碼彼此無法區分(最多使對手的優勢翻倍)。

在您的場景中,這意味著找到一種方法來成功學習使用了哪種算法意味著找到對您正在考慮的至少一種算法的密碼分析攻擊。

$$ Note that this answer disregard any implementation flaw in your program that would leak the algorithm being used. $$

請注意,分組密碼不是加密算法。這是一個積木。要獲得加密,您需要一種使用該分組密碼的操作模式。例如 CBC 模式下的 AES-128(即使在這裡,也不清楚 IV 是如何生成的)。

許多加密算法公開洩露其身份。有些有包裝,他們把 IV 放在一個奇怪的地方,他們使用填充物。無論如何掩蓋所使用的算法並不是安全要求。

現在我們可以以不同的方式重新解釋您的問題,並說:“假設您獲取一個 128 位分組密碼列表,並生成一個包含 10 億個隨機 128 位明文的列表,並使用隨機密鑰對每個密碼進行加密,其中的每個分組密碼列表。你能通過檢查密文來判斷哪個密碼是哪個密碼嗎?換句話說,某些分組密碼的輸出是否具有“簽名格式”?不,這是不可能的。因為分組密碼是排列(給定一個固定的密鑰),所以擔心“分組密碼 XYZ 傾向於輸出更多的 1 而不是 0”是不可能發生的。

引用自:https://crypto.stackexchange.com/questions/9956