1. ホーム
  2. encryption

[解決済み] AES暗号化モード(CBC ECB CTR OCB CFB)の選択方法は?

2022-03-19 13:30:55

質問事項

どのような場合に、どれが好ましいのでしょうか?

様々なモードの評価基準の一覧と、各基準の適用可能性についての考察が欲しいです。

例えば 802.11ネットワークアダプタのようなマイクロコードの組み込みシステムには、暗号化と復号化のための「コードのサイズ」が重要な基準の1つだと思います。CBC を実装するのに必要なコードが CTR に必要なコードよりはるかに小さい場合(これが真実かどうかはわかりません、単なる例です)、コードが小さいモードが好まれる理由は理解できます。 しかし、サーバー上で動作するアプリを書いていて、使用している AES ライブラリが CBC と CTR の両方を実装している場合、この基準は関係ありません。

評価基準の一覧と各基準の適用可能性」の意味は?

これはプログラミングとは関係ないですが、アルゴリズムに関係することです。

どのように解決するのですか?

  • 同じ鍵で複数のデータブロックを暗号化する場合、ECBは使用しないでください。

  • CBC、OFB、CFBは似ていますが、OFB/CFBの方が暗号化だけでよく、復号化しないので、コードスペースを節約することができます。

  • CBC/OFB/CFBではなく、並列化(つまりスピード)を重視する場合はCTRを使用します。

  • XTSモードは、ランダムアクセス可能なデータ(ハードディスクやRAMなど)を符号化する場合に最も一般的なモードです。

  • OCBは、1回のパスで暗号化と認証ができるため、圧倒的に優れたモードです。しかし、米国では特許があります。

ただ一つ知っておかなければならないのは、ECBは1ブロックしか暗号化しないのであれば、使ってはいけないということです。XTSは、ストリームではなく、ランダムにアクセスされるデータを暗号化する場合に使用する必要があります。

  • 必ず一意の IV は、暗号化するたびに ランダム . であることを保証できない場合は ランダム が必要なだけなので、OCBを使用します。 ノンス でなく IV と、明確な違いがあります。A ノンス は、次のものを推測されてもセキュリティは落ちない。 IV はこの問題を引き起こす可能性があります。