三重 DES 是否與 RSA 相似,因為消息大小僅限於密鑰大小?
Triple DES 是否與 RSA 相似,因為您可以加密的消息大小是有限的(與 AES 不同)?
是的,您可以將消息大小分成幾部分並應用它,但我對此不感興趣,所以我想知道 Triple DES 是否具有與 RSA 相同的“限制”?
我知道 AES 更適合我的消息大小可能很大的情況,但我並不是唯一一個對算法做出決定的人。
三重 DES 和 AES 是相同類型的方案: - 對稱塊密碼,這也意味著固定大小;DES 的塊大小為 64 位,AES 的塊大小為 128 位。
RSA 是非對稱的,密鑰長度決定了明文和密文的大小。因此,使用固定的密鑰長度,您還具有(幾乎;長度可能會根據素數的選擇而變化 1)固定大小。
您的主要錯誤是,您將操作模式歸因於 AES,這是錯誤的。通常,操作模式描述瞭如何使用固定長度的分組密碼來加密大量數據或數據流(例如安全通道等)。雖然它們是在對稱密碼上定義的,但您也可以將它們用於非對稱加密(RSA 等),但這樣做並不實際(請參閱混合加密)
編輯:感謝@poncho 指出,AES 具有 128 位的固定塊大小(以及 128、192 或 256 位的密鑰),並且原始 Rijndael 密碼支持密鑰和塊的所有三種大小。
TL;DR:不,他們不是。無論您如何解釋這個問題(更多內容見下文),3DES(和其他對稱分組密碼)的消息大小與密鑰大小沒有任何關係。
現在,有幾種不同的方式來解釋這個問題。首先,我們所說的“分組密碼的消息大小”是什麼意思?如果我們指的是可以通過對塊密碼的單一評估直接加密的最長消息,那麼這將是密碼的塊大小。這可以等於密鑰大小,但不是必須的。例如:
- (單個)DES具有 64 位塊大小和(有效)56 位密鑰。
- 雙密鑰三重 DES仍具有與單 DES 相同的 64 位塊大小,但密鑰長度加倍至 112 位。
- 三密鑰三重 DES 的密鑰大小為 3 × 56 = 168 位,但仍然是 64 位塊大小。(但是它很少使用,因為儘管名義上密鑰大小更高,但它並不比兩密鑰 3DES 更安全。)
- AES的塊大小為 128 位,但其密鑰大小為 128、192 或 256 位,具體取決於您使用的三種標準 AES 變體中的哪一種。
- Rijndael(被標準化為 AES 的密碼的原始版本)更加靈活,允許將塊大小和密鑰大小相互獨立地選擇為 128 到 256 之間的 32 位的任意倍數。(無論這種靈活性是好或壞是有爭議的。當然,非標準化塊和密鑰大小的分析遠不如 AES 徹底。)
然而,幾乎沒有人單獨使用像(三重)DES 或 AES 這樣的分組密碼。相反,分組密碼通常與某種操作模式一起使用,該操作模式將分組密碼變成能夠加密可變長度消息的更通用的加密方案。
大多數操作模式確實有一個消息長度限制,超過該限制,它們的安全證明(通常證明破壞操作模式聲稱的安全屬性與破壞底層分組密碼一樣難)不再成立。但是,此限制(可能會根據密碼的塊大小和模式的其他參數而有所不同)通常約為 $ 2^{32} $ (即大約 40 億個)密碼塊或更多。因此,除非您的消息長度超過幾 GB,否則您基本上可以忽略這些限制。
可以為 RSA 定義類似的操作模式嗎? 理論上,是的。 然而,在實踐中,這沒有標準,因為這樣做很愚蠢。RSA 加密速度很慢,並且(具有使其真正安全所需的填充)產生的密文比原始明文消息長很多倍。因此,即使您可以使用具有某種操作模式的 RSA 來加密長消息,它也確實是低效的。
“使用 RSA 加密長消息”的標準方法是使用混合加密:首先為 AES(或 3DES)等對稱分組密碼選擇一個隨機密鑰,使用一些合適的操作模式使用隨機密鑰加密消息,然後然後用 RSA 加密隨機密鑰。