從 PRNG 建構關鍵流
我正在閱讀一本關於密碼學的介紹書,作者試圖解釋為什麼使用偽隨機數生成器容易受到攻擊。
給定 PRNG 方程;
$$ \begin{align} S_0 &= \text{seed}\ S_{i+1} &\equiv A\cdot S_i + B \mod m, i = 0,1,\ldots \end{align} $$
我們選擇的地方 $ m $ 長度為 100 位,並且 $ S_i,A,B \in {0,1,\ldots,m−1}. $ 由於這是一個流密碼,我們可以加密
$$ y_i \equiv x_i + s_i \mod 2 $$
在正文中進一步:
但奧斯卡可以輕鬆發動攻擊。假設他知道明文的前 300 位(這只是 300/8=37.5 字節),例如文件頭資訊,或者他猜測明文的一部分。因為他當然知道密文,所以他現在可以將密鑰流的前 300 位計算為:(等式 1) $ s_i \equiv y_i + x_i \mod m, ; i=1,2,\ldots,300 $
關於上面的段落有幾件事我不明白。
- 首先,Oscar 可以通過什麼機制獲得前 300 位明文?Alice(試圖與 Bob 安全通信的人)將加密和純文字一起發送是沒有意義的。
- 有沒有出現這種情況?
- Oscar 是如何準確預測密文的單詞和位置的?
其次,我不明白公式 1是如何得出的?
我很感激任何幫助。
- 首先,Oscar 可以通過什麼機制獲得前 300 位明文?Alice(試圖與 Bob 安全通信的人)將加密和純文字一起發送是沒有意義的。
這稱為已知明文攻擊 (KPA)。在一些現實世界的例子中,這種攻擊是有道理的。此外,我們希望我們的密碼能夠抵抗 KPA,我們不依賴於無法找到已知明文的攻擊者。
為什麼 Alice 會將明文與密文一起發送?如果是這樣,加密的目的是什麼?
- 有沒有出現這種情況?
這取自馬克伯內特的回答
範例:我們使用舊的 pkzip 加密方法看到了這一點。在這種情況下,如果您在存檔中有任何未加密的文件,您可以使用它來獲取破解其余文件的密鑰。
此外,在某些軍隊中,資訊必須以
FROM: Name_of_the_Sender TO: Name_of_the_Receiver
如果您正在攔截加密消息,這意味著您至少知道第一行加上明文中的另外 3 個字元。
- Oscar 是如何準確預測密文的單詞和位置的?
如果你知道上下文,你可以猜測明文。然後你需要求解位置方程 $ i $ 得到鑰匙。找到候選密鑰後,解密其餘密文以查看它不是誤報密鑰。如果誤報,請嘗試下一個猜測,如果不是很好。
密碼分析不是一件容易的工作,但一旦成功,就會帶來很多樂趣。