
暗号学において、ブロック暗号の動作モードとは、機密性や真正性などの情報セキュリティを提供するためにブロック暗号を使用するアルゴリズムのことです。[ 1 ]ブロック暗号自体は、ブロックと呼ばれる固定長のビット群の安全な暗号変換(暗号化または復号)にのみ適しています。[ 2 ]動作モードは、ブロックよりも大きな量のデータを安全に変換するため、暗号の単一ブロック操作を繰り返し適用する方法を記述します。[ 3 ] [ 4 ] [ 5 ]
ほとんどのモードでは、各暗号化操作ごとに、初期化ベクトル(IV)と呼ばれる一意のバイナリ シーケンスが必要です。IV は繰り返しであってはならず、一部のモードではランダムである必要があります。初期化ベクトルは、同じ平文が同じ鍵で複数回独立して暗号化された場合でも、異なる暗号文が生成されることを保証するために使用されます。[ 6 ]ブロック暗号は複数のブロック サイズで動作できる場合がありますが、変換中はブロック サイズは常に固定されます。ブロック暗号モードはブロック全体で動作し、最終的なデータ フラグメントが現在のブロック サイズより小さい場合は、完全なブロックにパディングする必要があります。 [ 2 ]ただし、ブロック暗号をストリーム暗号として効果的に使用するため、パディングを必要としないモードもあります。
歴史的に、暗号化モードは、さまざまなデータ変更シナリオにおけるエラー伝播特性に関して広範に研究されてきました。後の開発では、完全性保護は全く別の暗号学的目標として扱われました。現代の動作モードの中には、機密性と認証性を効率的に組み合わせたものがあり、認証付き暗号化モードとして知られています。[ 7 ]
最も初期の動作モードである ECB、CBC、OFB、CFB(すべてについては下記参照)は 1981 年に遡り、FIPS 81「DES 動作モード」で規定されました。2001年に、米国国立標準技術研究所(NIST) は、承認された動作モードのリストを改訂し、 SP800-38A「ブロック暗号動作モードの推奨事項」にAES をブロック暗号として含め、CTR モードを追加しました。最後に、2010 年 1 月に、NIST はSP800-38E「ブロック暗号動作モードの推奨事項:ストレージ デバイスの機密性のための XTS-AES モード」にXTS-AESを追加しました。NIST によって承認されていない他の機密モードも存在します。たとえば、CTS は暗号文を盗むモードであり、多くの一般的な暗号ライブラリで利用できます。
ブロック暗号モードの ECB、CBC、OFB、CFB、CTR、およびXTS は機密性を提供しますが、偶発的な変更や悪意のある改ざんから保護しません。変更または改ざんは、CBC-MACなどの別のメッセージ認証コード、またはデジタル署名で検出できます。暗号コミュニティは専用の完全性保証の必要性を認識し、NIST は HMAC、CMAC、および GMAC で対応しました。HMACは2002 年にFIPS 198、「鍵付きハッシュメッセージ認証コード (HMAC)」として承認され、CMAC は2005 年にSP800-38B、「ブロック暗号モードの動作に関する推奨事項: 認証のための CMAC モード」の下でリリースされ、GMAC は2007 年にSP800-38D、 「ブロック暗号モードの動作に関する推奨事項: ガロア/カウンタモード (GCM) および GMAC」の下で正式化されました。
暗号コミュニティは、機密モードと認証モードを組み合わせることは困難でエラーが発生しやすいことを認識しました。そのため、機密性とデータ完全性を単一の暗号プリミティブ(暗号化アルゴリズム)に組み合わせたモードを提供するようになりました。これらの組み合わせたモードは、認証付き暗号化(AE)または「authenc」と呼ばれます。AEモードの例としては、 CCM(SP800-38C)、GCM(SP800-38D)、CWC、EAX、IAPM、OCBなどがあります。
動作モードは、多くの国内および国際的に認められた標準化団体によって定義されています。注目すべき標準化団体には、NIST、ISO(ISO/IEC 10116 [ 5 ]を含む)、IEC、IEEE、ANSI、IETFなどがあります。
初期化ベクトル(IV)または開始変数(SV)[ 5 ]は、いくつかのモードで暗号化をランダム化し、同じ平文が同一の鍵で複数回暗号化された場合でも異なる暗号文を生成するために使用されるビットブロックです。[ 8 ]
初期化ベクトルは鍵とは異なるセキュリティ要件を持つため、通常は秘密にする必要はありません。ほとんどのブロック暗号モードでは、初期化ベクトルを同じ鍵で再利用しないことが重要です。つまり、暗号化ナンスである必要があります。多くのブロック暗号モードでは、初期化ベクトルがランダムまたは擬似ランダムであるなど、より厳しい要件があります。一部のブロック暗号では、特定の初期化ベクトルに対して特有の問題があり、たとえば、すべての初期化ベクトルがゼロの場合、暗号化が生成されない(一部の鍵の場合)ことがあります。
関連する仕様書(例えばSP800-38A )で、特定のブロック暗号モードに関する関連するIV要件を確認することをお勧めします。
CBCとCFBの場合、IVを再利用すると、平文の最初のブロックに関する情報と、2つのメッセージに共通する接頭辞に関する情報が漏洩します。
OFBとCTRの場合、IVを再利用するとキービットストリームが再利用され、セキュリティが損なわれます。[ 9 ]これは、どちらのモードでも平文とXORされるビットストリームが効果的に生成され、このビットストリームはキーとIVのみに依存するため、確認できます。
CBCモードでは、暗号化時にIVは予測不可能(ランダムまたは擬似ランダム)でなければなりません。特に、メッセージの最後の暗号文ブロックを次のメッセージのIVとして再利用するという(以前は)一般的な方法は安全ではありません(たとえば、この方法はSSL 2.0で使用されていました)。攻撃者が次の平文が指定される前にIV(または前の暗号文ブロック)を知っている場合、同じ鍵で以前に暗号化されたブロックの平文について推測を検証できます(これはTLS CBC IV攻撃として知られています)。[ 10 ]
一部の鍵では、すべてゼロの初期化ベクトルによって、一部のブロック暗号モード (CFB-8、OFB-8) が生成され、内部状態がすべてゼロのままになることがあります。CFB-8 の場合、すべてゼロの IV とすべてゼロの平文によって、鍵の 1/256 が暗号化されず、平文が暗号文として返されます。[ 11 ] OFB-8 の場合、すべてゼロの初期化ベクトルを使用すると、鍵の 1/256 に対して暗号化が生成されません。 [ 12 ] OFB-8 暗号化では、影響を受ける鍵に対して平文が暗号化されずに返されます。
一部のモード(AES-SIVやAES-GCM-SIVなど)は、nonceの悪用に対する耐性を高めるように設計されており、乱数生成に欠陥があったり、攻撃者の制御下にあるようなシナリオに対しても耐性があります。
ブロック暗号は固定サイズ(ブロックサイズと呼ばれる)の単位で動作しますが、メッセージの長さは様々です。そのため、一部のモード(ECBとCBC)では、暗号化前に最終ブロックをパディングする必要があります。パディング方式にはいくつかの種類があります。最も単純な方法は、平文にヌルバイトを追加して長さをブロックサイズの倍数にすることですが、平文の元の長さを復元できるように注意する必要があります。これは、例えば、平文が末尾以外にヌルバイトを含まないCスタイルの文字列であれば簡単です。もう少し複雑なのは、 DESの元の方式です。これは、1ビットを追加し、その後にブロックを埋めるのに十分な数のゼロビットを追加するものです。メッセージがブロック境界で終わる場合は、パディングブロック全体が追加されます。最も高度なのは、暗号文の盗難や残余ブロックの終了など、CBC固有の方式です。これらは、多少の複雑さを伴うものの、余分な暗号文は発生しません。シュナイアーとファーガソンは、 2つの単純な可能性を提案している。1つは値128(16進数80)のバイトを追加し、最後のブロックを埋めるのに必要な数のゼロバイトを後に続ける方法、もう1つは最後のブロックを値nのnバイトで埋める方法である。
CFB、OFB、CTR モードは、ブロック暗号の出力と平文をXOR 演算することで動作するため、ブロックサイズの倍数でない長さのメッセージを処理するための特別な対策は必要ありません。平文の最後の部分ブロックは、最後のキーストリームブロックの最初の数バイトと XOR 演算され、最後の部分平文ブロックと同じサイズの最終的な暗号文ブロックが生成されます。ストリーム暗号のこの特性により、暗号化された暗号文データが元の平文データと同じサイズである必要があるアプリケーションや、パディングバイトを追加するのが不便なストリーミング形式でデータを送信するアプリケーションに適しています。
単一の暗号プリミティブで秘匿性と認証を組み合わせるために、いくつかの動作モードが設計されています。そのようなモードの例としては、RIV [ 13 ] McOE [ 14 ] IACBC [ 15 ] IAPM [ 15 ] Ascon、 OCB、EAX、CWC、CCM、AES-GCM-SIV、およびGCMがあります。認証付き暗号化モードは、シングルパスモードまたはダブルパスモードに分類されます。
さらに、一部のモードでは暗号化されていない関連データの認証も可能であり、これらはAEAD(関連データ付き認証暗号化)方式と呼ばれます。例えば、EAXモードはダブルパスAEAD方式であり、OCBモードはシングルパスAEAD方式です。
ガロア/カウンターモード(GCM)は、よく知られているカウンターモード暗号化と、新しいガロアモード認証を組み合わせたものです。その主な特徴は、認証に使用されるガロア体乗算の並列計算が容易であることです。この特徴により、暗号化アルゴリズムよりも高いスループットを実現できます。
GCMは、ブロックサイズが128ビットのブロック暗号用に定義されています。ガロアメッセージ認証コード(GMAC)は、GCMの認証専用バリアントであり、増分メッセージ認証コードを生成できます。GCMとGMACはどちらも、任意の長さの初期化ベクトルを受け入れることができます。GCMは並列処理を最大限に活用でき、GCMを実装することで、命令パイプラインまたはハードウェアパイプラインを効率的に利用できます。CBC動作モードでは、パイプラインの停止が発生し、効率とパフォーマンスが低下します。
CTRと同様に、ブロックには順番に番号が付けられ、このブロック番号がIVと組み合わされて、ブロック暗号E(通常はAES)で暗号化されます。この暗号化の結果は、平文とXOR演算されて暗号文が生成されます。すべてのカウンターモードと同様に、これは基本的にストリーム暗号であるため、暗号化される各ストリームには異なるIVを使用することが不可欠です。
暗号文ブロックは多項式の係数とみなされ、有限体演算を用いて鍵依存点Hで評価されます。その結果は暗号化され、データの完全性を検証するために使用できる認証タグが生成されます。暗号化されたテキストには、IV、暗号文、および認証タグが含まれます。
暗号ブロック連鎖メッセージ認証コード付きカウンタ(CBC-MAC付きカウンタ、CCM)は、認証と機密性の両方を提供するように設計された認証付き暗号化アルゴリズムです。CCMモードは、ブロック長が128ビットのブロック暗号に対してのみ定義されています。[ 16 ] [ 17 ]
合成初期化ベクトル(SIV)は、ノンス悪用耐性のあるブロック暗号モードである。
SIVは擬似乱数関数S2Vを使用して内部IVを合成します。S2VはCMACに基づく鍵付きハッシュであり、関数への入力は次のとおりです。
SIVは、暗号化キー(K 2 )を使用してAES-CTRでS2V出力と平文を暗号化します。
SIVは外部nonceベースの認証暗号化をサポートでき、その場合、認証データフィールドの1つがこの目的で使用されます。RFC5297 [ 18 ]では、相互運用性のために、最後の認証データフィールドを外部nonceとして使用する必要があると規定されています。
認証キーK1と暗号化キーK2という2つのキーを使用するため、SIV AEADバリアントの命名規則は混乱を招く可能性があります。例えば、AEAD_AES_SIV_CMAC_256は、AES-256ではなく、2つのAES-128キーを使用したAES-SIVを指します。
AES-GCM-SIVは、Advanced Encryption Standardの動作モードであり、Galois/カウンターモードと同様のパフォーマンスを提供するとともに、暗号学的nonceの再利用に対する耐性も備えています。この構成はRFC 8452で定義されています。[ 19 ]
AES-GCM-SIVは内部IVを合成します。追加の認証データと平文のハッシュをPOLYVALガロアハッシュ関数を用いて生成します。生成されたハッシュはAESキーで暗号化され、認証タグおよびAES-CTR初期化ベクトルとして使用されます。
AES-GCM-SIVは、非常によく似た名前のアルゴリズムGCM-SIVを改良したもので、いくつかの非常に小さな変更(例えば、AES-CTRの初期化方法)がありますが、セキュリティに実用的な利点をもたらします。「この追加により、同じ鍵で最大250個のメッセージを暗号化できます。これは、GCM-SIVで許可されていた232個のメッセージという大きな制限と比較して大きな利点です。」[ 20 ]
多くの動作モードが定義されています。その一部を以下に示します。暗号モードの目的は、ECBの脆弱性の説明で示されているように、暗号化されたデータに存在するパターンを隠蔽することです。
異なる暗号モードでは、暗号ブロックまたはその他のグローバルに決定論的な変数からの出力を次の暗号ブロックにカスケードさせることでパターンをマスキングします。各モードの入力は、次の表にまとめられています。
最も単純な暗号化モードは、電子コードブック(ECB)モード(従来の物理的なコードブックにちなんで名付けられた[ 21 ])です。メッセージはブロックに分割され、各ブロックは個別に暗号化されます。ECBは暗号プロトコルでの使用には推奨されません。この方法の欠点は拡散性の欠如であり、同一の平文ブロックを同一の暗号文ブロックに暗号化する際にデータパターンを隠すことができないことです。[ 22 ] [ 23 ] [ 24 ]
ECBモードを使用して、均一な色の領域が広いビットマップ画像を暗号化する場合、平文のデータパターンが暗号文に残ってしまうという顕著な例が見られます。個々のピクセルの色は暗号化されているはずですが、元の画像にあった同じ色のピクセルのパターンが暗号化された画像にも残っているため、画像全体を識別することが可能です。
ECBモードでは、各ブロックがまったく同じ方法で復号されるため、整合性保護のないプロトコルはリプレイ攻撃に対してさらに脆弱になる可能性がある。
1976年、Ehrsam、Meyer、Smith、Tuchmanは暗号ブロック連鎖(CBC)方式を発明しました。CBC方式では、各平文ブロックは暗号化される前に、前の暗号文ブロックとXOR演算されます。このようにして、各暗号文ブロックは、その時点までに処理されたすべての平文ブロックに依存します。各メッセージを一意にするために、最初のブロックでは初期化ベクトルを使用する必要があります。
最初のブロックのインデックスが1の場合、CBC暗号化の数式は次のようになります。
CBC復号化の数式は
CBCは最も一般的に使用されている動作モードです。主な欠点は、暗号化が逐次的に行われること(つまり、並列化できないこと)、およびメッセージを暗号ブロックサイズの倍数にパディングする必要があることです。この最後の問題を解決する方法の1つは、暗号文窃盗と呼ばれる手法です。平文または初期化ベクトル(IV)の1ビットの変更は、後続のすべての暗号文ブロックに影響を与えることに注意してください。
誤った IV で復号すると、最初の平文ブロックは破損しますが、後続の平文ブロックは正しくなります。これは、各ブロックが前のブロックの暗号文と XOR 演算され、平文とは演算されないため、現在のブロックの復号の IV として使用する前に前のブロックを復号する必要がないためです。つまり、平文ブロックは隣接する 2 つの暗号文ブロックから復元できます。結果として、復号を並列化できます。暗号文の 1 ビットの変更は、対応する平文ブロックを完全に破損させ、次の平文ブロックの対応するビットを反転させますが、残りのブロックはそのまま残ることに注意してください。この特性は、POODLE などのさまざまなパディング オラクル攻撃で悪用されます。
明示的な初期化ベクトルは、この特性を利用して、平文の先頭に単一のランダムブロックを追加します。暗号化は通常どおり行われますが、IVを復号ルーチンに伝える必要はありません。復号にどのIVが使用されるかにかかわらず、ランダムブロックのみが「破損」します。このブロックは安全に破棄でき、復号の残りの部分は元の平文になります。
伝播暗号ブロック連鎖[ 25 ]または平文暗号ブロック連鎖[ 26 ]モードは、暗号化時だけでなく復号時にも暗号文の小さな変更が無限に伝播するように設計されています。PCBCモードでは、各平文ブロックは暗号化される前に、前の平文ブロックと前の暗号文ブロックの両方とXOR演算されます。CBCモードと同様に、最初のブロックで初期化ベクトルが使用されます。CBCとは異なり、誤ったIV(初期化ベクトル)でPCBCを復号すると、すべての平文ブロックが破損します。
暗号化および復号化アルゴリズムは以下のとおりです。
PCBCは、特にKerberos v4やWASTEで使用されていますが、それ以外ではあまり一般的ではありません。
PCBCモードで暗号化されたメッセージでは、隣接する2つの暗号文ブロックが交換されても、後続のブロックの復号には影響しません。[ 27 ]このため、PCBCはKerberos v5では使用されていません。
暗号フィードバック(CFB)モードは、最も単純な形式ではブロック暗号の出力全体を使用します。このバリエーションでは、CBCと非常によく似ており、ブロック暗号を自己同期ストリーム暗号に変換します。このバリエーションにおけるCFB復号は、CBC暗号化を逆に行うのとほぼ同じです。
NIST SP800-38A では、ビット幅の CFB が定義されています。[ 28 ] CFB モードでは、1 ≤ s ≤ b となる整数パラメータ s も必要です。以下の CFB モードの仕様では、各平文セグメント (Pj) と暗号文セグメント (Cj) は s ビットで構成されます。s の値は、1 ビット CFB モード、8 ビット CFB モード、64 ビット CFB モード、128 ビット CFB モードなど、モード名に組み込まれることがあります。
これらのモードでは、基となるブロック暗号の出力が切り詰められます。
CFB-1は自己同期型で暗号文の損失に強いと考えられています。「1ビットCFBモードを使用する場合、挿入または削除されたビットのb+1位置後に同期が自動的に復元されます。CFBモードのsの他の値、およびこの推奨事項の他の機密性モードでは、同期は外部で復元する必要があります。」(NIST SP800-38A)。つまり、AESのような128ビット幅のブロック暗号で1ビットが失われると、有効なビットを出力する前に129ビットが無効になります。
CFBは、規定されたケース以外にも、いくつかの特殊なケースで自己同期を行う場合があります。例えば、128ビットのブロック暗号を基盤とするCFB-128において、1ビットの変更が発生した場合、2ブロック後に再同期が行われます。(ただし、CFB-128などはビット損失を適切に処理できません。1ビットの損失が発生すると、復号器と暗号化器の同期が失われます。)
CBCモードと同様に、平文の変更は暗号文に永久に反映され、暗号化は並列化できません。また、CBCと同様に、復号化は並列化できます。
CFB、OFB、CTRは、CBCモードに比べて2つの利点があります。ブロック暗号は暗号化方向でのみ使用され、メッセージを暗号ブロックサイズの倍数にパディングする必要はありません(ただし、CBCモードでは暗号文の窃盗を利用してパディングを不要にすることもできます)。
出力フィードバック(OFB)モードは、ブロック暗号を同期ストリーム暗号に変換します。キーストリームブロックを生成し、それを平文ブロックとXOR演算することで暗号文が得られます。他のストリーム暗号と同様に、暗号文のビットを反転すると、平文の同じ位置のビットも反転します。この特性により、多くの誤り訂正符号は、暗号化前に適用した場合でも正常に機能します。
XOR演算の対称性により、暗号化と復号化は全く同じです。
各出力フィードバックブロック暗号演算は、それ以前のすべての演算に依存するため、並列実行はできません。しかし、平文または暗号文は最終的なXOR演算にのみ使用されるため、ブロック暗号演算は事前に実行しておくことができ、平文または暗号文が利用可能になった時点で最終ステップを並列実行することが可能になります。
入力として一定のゼロ列を用いたCBCモードを使用することで、OFBモードのキーストリームを取得することが可能です。これは、OFBモード暗号化に高速なCBCモードのハードウェア実装を利用できるため、有用です。
OFBモードをCFBモードのように部分ブロックをフィードバックとして使用すると、平均サイクル長が2 32倍以上短縮されます。DaviesとParkinによって提案され、実験結果によって裏付けられた数学モデルは、完全なフィードバックを使用した場合にのみ、達成可能な最大値に近い平均サイクル長が達成できることを示しました。このため、OFBの仕様から切り捨てフィードバックのサポートが削除されました。[ 29 ]
OFBと同様に、カウンタモードはブロック暗号をストリーム暗号に変換します。これは、「カウンタ」の連続する値を暗号化することによって次のキーストリームブロックを生成します。カウンタは、長期間繰り返されないことが保証されたシーケンスを生成する任意の関数にすることができますが、実際の1ずつ増加するカウンタが最も単純で一般的です。単純な決定論的入力関数の使用はかつて議論の的でした。批評家は、「暗号システムを既知の体系的な入力に意図的にさらすことは、不必要なリスクである」と主張しました。[ 30 ]しかし、今日ではCTRモードは広く受け入れられており、問題は、入力の体系的な偏りに関係なく安全であると期待される基盤となるブロック暗号の弱点であると考えられています。[ 31 ] CTRモードは、CBCとともに、ニールス・ファーガソンとブルース・シュナイアーが推奨する2つのブロック暗号モードの1つです。[ 32 ]
CTRモードは1979年にWhitfield DiffieとMartin Hellmanによって導入されました。 [ 31 ]
CTR モードは OFB と同様の特性を持ちますが、復号化中にランダム アクセス特性も備えています。CTR モードは、ブロックを並列に暗号化できるマルチプロセッサ マシンでの動作に適しています。さらに、OFB に影響を与える可能性のあるショートサイクルの問題もありません。[ 33 ]
IV/nonceがランダムな場合、それらをカウンタと任意の可逆演算(連結、加算、またはXOR)で組み合わせて、暗号化用の実際の一意のカウンタブロックを生成できます。非ランダムなnonce(パケットカウンタなど)の場合は、nonceとカウンタを連結する必要があります(たとえば、128ビットカウンタブロックの上位64 ビットにnonceを、下位64ビットにカウンタを格納する )。nonceとカウンタを単純に加算またはXORして単一の値にすると、多くの場合、選択平文攻撃に対するセキュリティが破られます。これは、攻撃者がIV-カウンタペア全体を操作して衝突を引き起こす可能性があるためです。攻撃者がIV-カウンタペアと平文を制御すると、暗号文と既知の平文のXORにより、同じIV-カウンタペアを共有する他のブロックの暗号文とXORすると、そのブロックを復号できる値が得られます。[ 34 ]
この図のnonceは、他の図の初期化ベクトル(IV)に相当することに注意してください。ただし、オフセット/位置情報が破損している場合、バイトオフセットへの依存性があるため、そのようなデータを部分的に復元することは不可能になります。
「エラー伝播」特性とは、ビットエラー発生時に復号処理がどのように動作するか、つまり、あるビットのエラーが他の復号済みビットにどのように連鎖的に影響するかを記述するものです。
ビットエラーは、攻撃において意図的に発生する場合もあれば、伝送エラーによってランダムに発生する場合もある。
最新の認証付き暗号化(AEAD)や、 MAC-Then-Encryptの順序でメッセージ認証コードが連鎖するプロトコルでは、ビットエラーが発生した場合、復号処理は完全に中止され、復号者に対して特定のビットエラーが発生してはなりません。つまり、復号が成功した場合、ビットエラーは発生してはなりません。そのため、エラー伝播は、従来の機密性のみを目的としたモードに比べて、最新の暗号モードではそれほど重要な問題ではありません。
(出典:SP800-38A 表D.2:ビットエラーが復号に及ぼす影響の概要)
例えば、ECBモード暗号化では、送信された暗号文に1ブロックの誤りがあると、復元された平文にも1ブロックの誤りが生じるのに対し、CBCモードでは、そのような誤りは2ブロックに影響を与えることが観察されるかもしれない。このような耐性は、ランダムなエラー(例えば、回線ノイズ)に対して望ましいと考える人もいれば、エラー訂正によって攻撃者が悪意を持ってメッセージを改ざんする機会が増えると主張する人もいた。
しかし、適切な完全性保護が用いられている場合、このようなエラーが発生すると(高い確率で)メッセージ全体が拒否される。ランダムエラーに対する耐性が求められる場合は、送信前に暗号文に誤り訂正符号を適用する必要がある。
ブロック暗号の動作モードは、他にも数多く提案されてきました。中には、採用され、詳細に記述され(標準化もされ)、実際に使用されているものもあります。一方で、安全性が問題視され、決して使用すべきではないものもあります。また、機密性、認証性、認証付き暗号化のいずれにも該当しないものもあります。例えば、鍵フィードバックモードやデイビス・マイヤーハッシュなどが挙げられます。
NISTはブロック暗号の提案モードのリストをモード開発で管理しています。[ 28 ] [ 35 ]
ディスク暗号化では、アプリケーション専用に設計された特殊なモードがよく使用されます。調整可能な狭ブロック暗号化モード(LRW、XEX、XTS)と広ブロック暗号化モード(CMC、EME)は、ディスクのセクターを安全に暗号化するように設計されています(ディスク暗号化理論を参照)。
多くのモードでは初期化ベクトル(IV)が使用されますが、モードによっては、一度だけ使用される(nonce)ことや、公開前に予測不可能であることなどの要件がある場合があります。CTR、GCM、またはOFBモードで同じ鍵でIVを再利用すると、同じキーストリームが2つ以上の平文とXOR演算され、ストリームの明らかな不正使用となり、セキュリティが壊滅的に失われます。NIST Key WrapアルゴリズムやSIV(RFC 5297)AEADモードなどの決定論的認証暗号化モードでは、入力としてIVは必要なく、指定された平文と鍵に対して毎回同じ暗号文と認証タグを返します。AES -GCM-SIVなどの他のIV不正使用耐性モードは、IV入力によって、たとえば1つの鍵で安全に暗号化できるデータの最大量が増加し、同じIVが複数回使用されても壊滅的な失敗が発生しないなど、メリットがあります。
ブロック暗号は、他の暗号プロトコルでも使用できます。一般的には、ここで説明したブロックモードと同様の動作モードで使用されます。すべてのプロトコルと同様に、暗号学的に安全であるためには、これらの動作モードを正しく設計する必要があります。
ブロック暗号を用いて暗号学的ハッシュ関数を構築する方式はいくつか存在する。そのような方式のいくつかについては、「一方向圧縮関数」の項を参照されたい。
暗号学的に安全な擬似乱数発生器(CSPRNG)は、ブロック暗号を用いて構築することもできる。
メッセージ認証コード(MAC)は、多くの場合、ブロック暗号から構築されます。CBC -MAC、OMAC、PMACなどがその例です。