Rsa

RSA(理論上)可以用作分組密碼嗎?

  • February 19, 2022

假設 AES 受到破壞性攻擊,使其無法使用。是否有可能以一種可以批量加密數據的安全方式使用 RSA?

我看不出如何在普通分組密碼模式下使用 RSA(假設為 OAEP 填充)。它的輸出可能不是偽隨機的,所以它不能用於 CTR、OFB 或 CFB 模式。它的輸出太大,無法回饋進去,所以不能在CBC模式下使用。在 ECB 模式下使用它會遇到塊可以移動、複製、刪除和替換的問題,就像在普通塊密碼上使用 ECB 一樣。

我以前見過這樣的問題,但答案始終是“RSA 不是分組密碼,所以你不應該”。這不會在實踐中使用,它只是一個思想實驗。

不可以。假設RSA 公鑰是公開的(假設),RSA 不能用作分組密碼的通用替代品。

主要問題是 RSA 加密要麼

  • 公共職能;那是在應用原始公鑰函式之前對消息進行確定性和可逆轉換的時候 $ x\to x^e\bmod N $ 通常用於加密(包括在大多數教科書 RSA 變體中的從位串到整數的大端轉換);因此,在使用假設的基於 RSA 的分組密碼在CTROFBCFB操作模式下建構密碼時,加密和解密都使用加密模式下的分組密碼,任何人都可以破譯。如果我們嘗試通過對塊加密使用 RSA 解密來解決這個問題,我們會遇到其他問題,包括任何人都可以在CBC操作模式下解密密碼。
  • 不是(確定性)函式;那是在RSAES-OAEPRSAES-PKCS1-v1_5中存在隨機填充的時候。它遵循在 CTR、OFB 和 CFB 模式下不可能解密。

還有其他問題,包括 $ n $ -bit 消息上的 RSA 最多可以加密 $ n-1 $ 位入 $ n $ -位;但那一個可以通過騎自行車來解決。


更新:另一個問題是我們是否可以建構基於 RSA 的安全密碼,而無需分組密碼。我們可以,因為 RSA 可以在沒有分組密碼的情況下是安全的(這可能是安全 RSA 加密中使用的散列和遮罩生成函式的一部分,也許是偽裝的)。例如,我們將消息分成 190 個八位字節的塊,除了最後一個可以更短,然後使用 RSAES-OAEP 加密每個塊,在填充和 MGF 中使用 2048 位密鑰和 SHA-256(RSAES-OAEP 的最大以八位字節為單位的模數大小的消息容量,減去兩個雜湊值,減去 2 個八位字節,我們的參數就是 190 個八位字節)。這是一種安全的(未經身份驗證的)密碼,但只能模糊地與 ECB 模式下的分組密碼相媲美:

  • 大小成本超過 25%,而使用 ECB 的大型消息則沒有;
  • 當 ECB 不是時,它在選擇明文攻擊下是安全的;
  • 當 ECB 中需要訪問加密預言機時,任何人都可以使用任何內容(包括未知但真實的消息的某些部分,如果需要)對任何消息進行加密。

我看不出如何在普通分組密碼模式下使用 RSA(假設為 OAEP 填充)。它的輸出可能不是偽隨機的,所以它不能用於 CTR、OFB 或 CFB 模式。它的輸出太大,無法回饋進去,所以不能在CBC模式下使用。在 ECB 模式下使用它會遇到塊可以移動、複製、刪除和替換的問題,就像在普通塊密碼上使用 ECB 一樣。

您對 CBC、OFB 和 CFB 模式是正確的。無論如何,使用 RSA 作為替代品會很麻煩,因為除了 fgrieu 已經提到的安全相關問題之外,它還會遇到實際問題。填充模式會與如此大的塊大小兼容嗎?會實施嗎?創建的緩衝區與純文字輸入的大小大致相同怎麼辦?

在我看來,歐洲央行擁有最好的牌。ECB 的主要問題是重複明文塊將被攻擊者視為重複明文塊。但是,如果您將 RSA 與 OAEP 填充一起使用,則不會出現此問題。OAEP 填充已經有一個隨機組件,因此您將無法看到重複模式。

您還聲明歐洲央行允許“移動、複製、刪除和替換”塊。然而,這不僅僅是歐洲央行模式的屬性;它是不包括完整性保護和身份驗證的任何模式的屬性。您可以通過使用數字簽名(MAC 的非對稱等效物)驗證密文來簡單地消除此問題。如果您假設您已將完整的密鑰對分發給雙方,您甚至可以使用相同的密鑰對,因為填充可以保護您免受大多數(如果不是全部)攻擊。


在 ECB/OAEP 模式下使用 RSA 在性能、密鑰管理和成本方面當然有很大的缺點。它還可能耗盡系統的安全隨機發生器。此外,在安全性方面,像 AES 這樣的對稱密碼似乎更適合它。因此,您可能會降低安全級別而不是升級它。


所以是的,歐洲央行是有可能的。如果不是,您應該無法加密多條消息。但是,任何實施這種方案的人都會被加密社區認為是瘋了——這是正確的。


在評論中,您進一步解釋說

…但我們的想法是像我們今天使用分組密碼一樣使用它,以避免#1。

這是不可能的。原始/教科書 RSA 非常不安全。你必須執行填充。在塊操作模式下使用密碼不起作用。此外,輸入的最高位存在問題。使用 RSA,您可以確定性地加密某些大小N - 1N - 1不會有點邊界。這意味著您將始終有一點成本。因此,即使可以創建安全模式,您仍然不能將其用作替代品。

教科書 RSA 的 ECB 模式通常用於教科書範例中的 RSA 加密非常小的素數。綜上所述,我希望我不必解釋這種模式是多麼不安全。它不僅違反了一項規則,而且違反了所有規則。

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