Modes-of-Operation

cfb 和 cfb1 和 cfb8 有什麼區別?(比如 openssl 的 aria-128-cfb & aria-128-cfb1 & aria-128-cfb8 )

  • April 3, 2020

cfb 和 cfb1 和 cfb8 有什麼區別?像 openssl 的aria-128-cfbandaria-128-cfb1aria-128-cfb8

編輯:有趣的是,還有對 cfb128 的引用(範例

(標題說明了一切,但 CSE 不會讓我發布沒有消息正文的問題)

cfb 和 cfb1 和 cfb8 有什麼區別?

好吧,首先,我們需要研究一下什麼是 CFB。以下是加密過程:

  • 取上一個 $ n $ 密文位(其中 $ n $ 是密碼的塊大小,對於 Aria, $ n=128 $
  • 以加密模式通過分組密碼發送
  • 提煉 $ k $ 結果的位,異或與下一個 $ k $ 塊文本的位,並使其成為下一個 $ k $ 位的密文。

而已。循環的每次迭代都加密 $ k $ 明文位,生成 $ k $ 位的密文,並執行一次分組密碼操作。

而且,回答你的問題:

  • 對於 cfb1, $ k=1 $
  • 對於 cfb8, $ k=8 $
  • 對於cfb, $ k=n $ (或 Aria 為 128)

當然,您可能會問“為什麼會有人使用 cfb1?要加密 128 位,它會執行 Aria 128 次,效率極低”

答案是“萬一密文可能被位插入或刪除意外損壞”。最初的想法是 CFB 的目標是加密通過串列介面的流量,例如 RS-232 或 Bisync。現在,RS-232 具有這樣的屬性,即由於線路雜訊,可能會接收到額外的字元,或者可能會丟棄傳輸的字元(Bisync 可能具有與位相同的屬性;我從未使用過 Bisync,所以我我不確定)。現在,如果我們考慮使用 CBC 模式來加密流量,那麼在這樣的字元插入/刪除錯誤之後,加密器和解密器使用的塊將不匹配,因此解密器將變得亂碼(它會繼續在錯誤發生很久之後就會出現亂碼)。相比之下,使用 CFB8,接下來的 16 個字元將被錯誤地解密;然後,只要沒有進一步的錯誤發生,解密就會正確進行。CFB1 的優點是它可以處理插入或刪除的單個位。

當然,這一切都是歷史性的。今天,我們通常對對手故意引入錯誤可能導致的問題更加敏感。因此,我們通常希望丟棄可能被錯誤解密的流量,而不是將其傳遞(因此 CFB 的錯誤非傳播屬性沒有吸引力)。

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