Encryption

現代加密是否不必要地複雜?

  • July 21, 2019

RSA、DES、AES 等都使用(相對)複雜的數學來用一些密鑰加密一些消息。對於這些方法中的每一種,多年來都發現了幾個記錄在案的漏洞。有些人甚至認為 AES 中存在一個只有 NSA 知道的漏洞。

另一方面,一次性墊不僅簡單得可笑,而且已被證明是不可能破解的(如果使用得當的話)。

假設您有一些消息要以長度 n 加密。只需生成一個長度為 m 的隨機字元串,其中 m 至少與 n 一樣大,然後將隨機字元串模組化添加到消息中。

只要隨機字元串是用足夠高質量的隨機數生成器生成的,而且只要不重複使用同一個一次性pad,應該是不可能破解的。

如果這是真的,我們需要完善的只是快速、加密安全的確定性隨機數生成器。使用密鑰作為 RNG 的起始種子,您將擁有一個強大的、不可破解的加密方案,該方案易於理解和實施。

Blum-Blum-Shub 是一種快速、加密安全的 PRNG,還有其他的。

我編寫了一個 C++ 程序,它為 Blum-Blum-Shub 使用兩個 2048 位素數(與必要的標準匹配),並使用使用者輸入的密碼 - 轉換為起始種子 - 執行逐字​​節模組化加法。這個過程是快速的、確定的,如果我讀過的文獻是正確的,那麼它應該是非常安全的。

那麼,當數學表明最簡單的往往是最好的時,為什麼要投入如此多的時間和精力來提出令人費解的加密密碼呢?

一次性墊的主要難點在於它需要預先安排。為了讓我使用一次性便箋簿與您交流,我們必須提前安排我們將使用的一次性便箋簿(必須與我們的通信一樣大),或者我們必須有某種安全的通信方式,使我們能夠就一次性使用達成一致。

如果我們有一個安全的溝通渠道,這樣我們就可以就一次性完成達成一致,那何必呢?讓我們通過安全通道進行通信。

如果我們沒有安全的渠道,那麼我們就無法進行秘密通信*,*因為我們不會同意一次性完成。

現在,如果您要通過偽隨機數生成器生成一次性密碼,您將如何獲得該一次性密碼?你必須告訴我你的種子(這樣我就可以生成相同的偽隨機序列並且我可以解碼消息),在這種情況下,我們又回到了你如何告訴我你的種子是什麼而沒有安全通信渠道的問題和。所以現在我們有兩個漏洞:我們用來交流的渠道,所以你可以給我種子;並且偽隨機數生成器並不是真正的隨機數生成器,因此也可能容易受到攻擊。

還有分配問題;為了有效地使用一次性護墊,任何護墊都不能多次使用。NSA 早在 50 年代就有攔截;當蘇聯人在 80 年代錯誤地使用相同的一次性密碼器對一些消息進行編碼時,這足以在兩種情況下都破解加密。這意味著每條消息都需要一個新的種子和一個新的密碼;所以每次你想交流時,你都需要一個新的種子/密鑰和一個新的密碼。失去資訊太容易了,或者錯誤地重新使用它,從而把整個事情洗乾淨。

One time pads 對預先建立的低頻寬通信通道有效;它們幾乎無法與您以前從未聯繫過的人發起遠端秘密通信,並且它們需要大量頻寬才能正確使用。

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