CCM
NIST SP 800-38C Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality CTRとMACを組み合わせたりいろいろする
SP 800-38C
1 目的
この出版物は、対称鍵ブロック暗号アルゴリズムの動作モードに関する一連の推奨事項の第 3 部です。
2 権限
この文書は、2002 年の連邦情報セキュリティ管理法 (FISMA)、公法 107-347 に基づく法定責任の遂行を目的として、米国国立標準技術研究所 (NIST) によって作成されました。
NIST は、すべての機関の業務と資産に適切な情報セキュリティを提供するための最低要件を含む標準とガイドラインの作成に責任を負っていますが、そのような標準とガイドラインは国家セキュリティ システムには適用されません。このガイドラインは、行政管理予算局 (OMB) の回状 A-130、セクション 8b(3)、機関情報システムのセキュリティ保護の要件と一致しており、A-130 の付録 IV: 主要セクションの分析で分析されています。補足情報は、A-130 の付録 III に記載されています。
このガイドラインは、連邦機関が使用するために作成されました。非政府組織が自主的に使用することもできますが、著作権の対象ではありません。 (出典を明記していただければ、NIST は歓迎します。)
この文書の内容は、商務長官が法定権限に基づいて連邦機関に義務付け、拘束力を持たせた標準やガイドラインと矛盾するものではありません。また、これらのガイドラインは、商務長官、OMB 長官、またはその他の連邦職員の既存の権限を変更または置き換えるものとして解釈されるべきではありません。
この勧告のパートで指定されている動作モードの実装に対する適合性テストは、NIST とカナダ政府の通信セキュリティ機関の共同作業である暗号モジュール検証プログラム (CMVP) の枠組み内で実施されます。動作モードの実装は、CMVP に基づいて検証されるためには、この勧告の要件に準拠する必要があります。
この勧告の要件は、「shall」という単語で示されます。
3 はじめに
この勧告では、データの機密性と真正性を保証できるアルゴリズム、Counter with Cipher Block Chaining-Message Authentication Code 1 (略して CCM) を規定しています。CCM は、現在連邦情報処理標準 (FIPS) Pub. 197 2 で規定されている Advanced Encryption Standard (AES) アルゴリズムなど、ブロック サイズが 128 ビットである承認済みの対称キー ブロック暗号アルゴリズムに基づいています。したがって、CCM は、ブロック サイズが 64 ビットである Triple Data Encryption Algorithm 3 では使用できません。CCM は、ブロック暗号アルゴリズムの動作モードと見なすことができます。他の動作モードと同様に、ブロック暗号の単一のキーは、データの当事者間で事前に確立されている必要があります。したがって、CCM は、適切に設計されたキー管理構造内に実装する必要があります。 CCM のセキュリティ特性は、少なくともキーの機密性に依存します CCM はパケット環境、つまり CCM を適用する前にすべてのデータがストレージで使用可能な場合に使用することを目的としています。CCM は部分処理やストリーム処理をサポートするようには設計されていません。
CCM への入力には、3 つの要素が含まれます。1) 認証と暗号化の両方が行われるデータ (ペイロードと呼ばれます)、2) 認証は行われますが暗号化は行われない関連データ (ヘッダーなど)、3) ペイロードと関連データに割り当てられる一意の値 (ノンスと呼ばれます)。
CCM は、生成暗号化と復号化検証という 2 つの関連プロセスで構成され、カウンター モード暗号化と暗号ブロック チェーン ベースの認証という 2 つの暗号プリミティブが組み合わされています。これらのプリミティブ内では、ブロック暗号アルゴリズムのフォワード暗号機能のみが使用されます。
生成暗号化では、ペイロード、関連データ、および nonce に暗号ブロック チェーンを適用してメッセージ認証コード (MAC) を生成します。次に、カウンター モード暗号化を MAC とペイロードに適用して、暗号文と呼ばれる読み取り不可能な形式に変換します。したがって、CCM 生成暗号化では、ペイロードのサイズが MAC のサイズだけ拡張されます。復号化検証では、カウンター モード復号化を暗号文とされるものに適用して MAC と対応するペイロードを復元します。次に、暗号ブロック チェーンをペイロード、受信した関連データ、受信した nonce に適用して MAC の正確性を検証します。検証が成功すると、ペイロードと関連データがキーにアクセスできるソースから発信されたことが保証されます。
MAC は、チェックサムやエラー検出コードよりも強力な信頼性の保証を提供します。
(非暗号化)チェックサムまたはエラー検出コードの検証は、データの偶発的な変更のみを検出するように設計されていますが、CCM で行われる MAC の検証は、データの意図的な無許可の変更と偶発的な変更を検出するように設計されています。
この CCM の仕様は、無線ローカル エリア ネットワーク 5 の IEEE 標準 802.11 の草案修正 4 内での CCM の使用と互換性があるように設計されています。 4 定義、略語、記号
4.1 定義と略語
table:定義と略語
英 適度な訳 意味
Approved 承認済 FIPS 承認または NIST 推奨: 1) FIPS または NIST 勧告で指定されている、または 2) FIPS または NIST 勧告で採用されているアルゴリズムまたは手法。
Associated Data 関連データ 認証されているが暗号化されない、CCM 生成暗号化プロセスへの入力データ。
Authenticity 真正性 データがその想定されるソースから発信されたという特性。
Bit ビット バイナリ桁: 0 または 1
Bit Length ビット長 ビット列中のビットの数
Bit String ビット列 順に並んだビット
Block ブロック ブロック暗号アルゴリズムのブロックサイズのビット列
Block Cipher Algorithm ブロック暗号アルゴリズム
Block Size ブロックサイズ ブロック暗号アルゴリズムの入力(出力)ブロックのビット長
CBC-MAC CBC-MAC
CCM CCM
Ciphertext 暗号文
Cryptographic Key 暗号鍵
CTR CTR カウンター
Decryption-Verification
4.2 記号 Symbols
4.2.1 変数 Variables
table:Variables
a associated dataのオクテット長
A associated data 文字列
Alen associated dataのビット長
Bi formatted inputのi番目のブロック
C 暗号文
Clen 暗号文のビット長
Ctri i番目のカウンターブロック
K ブロック暗号鍵
Klen ブロック暗号鍵のビット長
m formatted payload内のブロック番号
MaxErrs
n nonceのオクテット長
N nonce
Nlen nonceのビット長
P payload
Plen payloadのビット長
q
Q
r
Risk
t MACのオクテット長
4.2.2 操作と機能 Operations and Functions
5 準備 Preliminaries
ブロック暗号アルゴリズムと秘密鍵の選択については、セクション 5.1 で説明します。CCM の動作に必要な 2 つの暗号化プリミティブについては、セクション 5.2 で説明します。CCM のデータ要素については、セクション 5.3 で説明します。有効なデータ要素のフォーマットについては、セクション 5.4 で説明します。操作と機能の例については、セクション 5.5 で説明します。
5.1 基礎となるブロック暗号アルゴリズム Underlying Blcok Cipher Algorithm
CCM アルゴリズムは、基礎となる対称鍵ブロック暗号アルゴリズムの選択に依存します。したがって、CCM アルゴリズムは、対称鍵ブロック暗号の動作モード (略してモード) です。基礎となるブロック暗号アルゴリズムは承認され、ブロック暗号アルゴリズムの秘密鍵は、一様ランダムに、またはほぼ一様ランダムに生成される必要があります。つまり、考えられるすべての鍵が (ほぼ) 均等に生成される可能性が高くなります。さらに、鍵は、承認された鍵確立方法によって、情報の当事者に対して確立される必要があります。鍵は秘密に保持され、CCM モードにのみ使用されます。鍵の有効期間中のブロック暗号アルゴリズムの呼び出し回数は合計 $ 2^{61} 回に制限されます。鍵の確立と鍵の管理は、この勧告の範囲外です。
任意の鍵について、モードの基礎となるブロック暗号アルゴリズムは、互いに逆の 2 つの関数で構成されます。ブロック暗号アルゴリズムの選択の一環として、ブロック暗号アルゴリズムの 2 つの関数のうちの 1 つが順方向暗号関数として指定されます。∗ このプロセスの逆は逆暗号関数と呼ばれますが、CCM モードでは逆暗号関数は必要ありません。
順方向暗号関数は、固定ビット長のビット文字列に対する関数です。文字列はブロックと呼ばれ、その長さはブロック サイズと呼ばれます。CCM の場合、ブロック暗号アルゴリズムのブロック サイズは 128 ビットです。現在、このブロック サイズを持つ承認済みのブロック暗号アルゴリズムは AES アルゴリズムのみです。
K で示される CCM キーはブロック暗号キーです。このキーを持つブロック暗号の順方向暗号関数は $ CIPH_K で示されます。K のビット長は Klen で示されます。
5.2 暗号プリミティブ Cryptographic Primitives
CCM 仕様は、基本的に、順方向暗号機能に基づく 2 つの暗号メカニズムを組み合わせたものです。1 つのメカニズムは、機密性のためのカウンター (CTR) モードです。これは、この勧告の最初の部分 6 で一般的な使用のために指定されています。CTR モードでは、カウンター ブロックと呼ばれる十分に長いブロックのシーケンスを生成する必要があります。カウンター ブロックは、1 回の呼び出し内および任意のキーでの CTR モードの他のすべての呼び出し間で区別される必要がありますが、秘密である必要はありません。カウンター ブロックに関するこの要件は、CCM モードにも適用されます。カウンター ブロックの生成の詳細については、6 を参照してください。CCM のカウンター ブロックに関する追加の要件については、以下のセクション 5.4 を参照してください。 CCM 内のもう 1 つの暗号メカニズムは、6 の暗号ブロック チェーン (CBC) 手法を適応させて、信頼性を保証します。具体的には、初期化ベクトルがゼロの CBC 手法が認証対象のデータに適用されます。結果として得られる CBC 出力の最後のブロックは、切り捨てられる可能性があり、データのメッセージ認証コード (MAC) として機能します。このように MAC を生成するアルゴリズムは、一般に CBC-MAC と呼ばれます。 この勧告では、CCM 仕様のコンテキスト以外では CBC-MAC を認証モードとして承認していませんが、この勧告の第 2 部では、CBC-MAC のバリエーションが一般的な使用のために提案されています 7。 CCM 内の CTR メカニズムと CBC-MAC メカニズムの両方に同じキー K が使用されます。
5.3 データ要素 Data Elements
CCM が保護するデータは、メッセージ、つまり、ビット長が Plen で示されるペイロード(payload)と呼ばれるビット文字列 (P と表記) と、関連データ(associated data)と呼ばれるビット文字列 (A と表記) で構成されます。関連データはオプションで、A は空の文字列にすることができます。** CCM は、P の機密性の保証と、A と P の両方の発信元の信頼性の保証を提供します。A には機密性は提供されません。
保護されるデータ ペア (ペイロードとその関連データ) には、ノンス(nonce)と呼ばれるビット文字列 (N と表記) が割り当てられます。ノンスは、キーの有効期間中に CCM によって保護される 2 つの異なるデータ ペアに異なるノンスが割り当てられるという意味で、重複しないものとします。実際には、ノンスによって CCM の呼び出しが決定されます。ノンスはランダムである必要はありません。
CCM 内で生成される MAC は、T で示される内部変数です。T のビット長 (Tlen で示される) は、指定されたキーを使用した CCM のすべての呼び出しで固定されるモードのパラメータです。Tlen の選択要件については、付録 B で説明します。
5.4 入力フォーマット Input Formatting
CCM データ要素 N、P、および A は、フォーマット関数と呼ばれる関数に従って、完全なデータ ブロックの空でないシーケンスにフォーマットされ、$ B_0、B_1、…、B_r と表記されます (負でない整数 r の場合) (8 では、フォーマット関数はエンコード関数 β と呼ばれます)。 r の値は、フォーマット関数と入力要素によって異なります。任意のキーについて、フォーマット関数には次の 3 つの特性が当てはまります。
1. 最初のブロック B0 は、ノンス N を一意に決定します。
2. フォーマットされたデータは、P と A を一意に決定します。さらに、(N、P、A) と (N、P'、A') が、フォーマットが B0、B1、…、Br と B0'、B1'、…、Br' である異なる入力トリプルである場合、i ≤ r および i ≤ r ' となるインデックス i について、Bi は Bi' と異なります。∗
3. 最初のブロック B0 は、キーの下での CCM のすべての呼び出しで使用されるカウンター ブロックとは異なります。
3 番目の特性は、フォーマット関数とカウンター生成関数を互いに独立して選択または構築すべきではないことを示しています。
フォーマット関数は、入力データ N、P、および A の内容とビット長、およびパラメーター Tlen に制限を課す場合があります。たとえば、ビット長は 8 の倍数と特定の値の範囲に制限される場合があります。フォーマット関数の制限を満たす値は有効と呼ばれます。Tlen の値が 32 より小さい場合、有効ではありません。
これらの要件を満たすフォーマット関数とカウンター生成関数の例は、付録 A に示されています。将来、代替のフォーマット関数が開発される可能性があります。
RFC 3610?
2. CCMモード仕様
汎用CCMモードでは2つのパラメータが選択できる。認証フィールドMのサイズ
table:Enc
Name Description 範囲 サイズ 符号化
M 認証フィールドのサイズ 4,6,8,10,12,14,16オクテット 通常16ぐらい 3 bits (M-2)/2
L 長さフィールド 2から8オクテット 3 bits L-1
2.1. 入力
メッセージを認証、暗号化するには次の情報が必要です。
1. ブロック暗号に適した暗号化鍵K
2. 15-Lオクテットのnonce N。暗号化鍵Kの範囲内でnonceの値は一意でなければなりません(MUST)。つまり、特定の鍵で使用するnonceの値に重複した値を使用してはいけません(MUST NOT)。同じ鍵を使って暗号化された2つの別々のメッセージに対して同じnonceを使用するとこのモードのセキュリティプロパティが破壊されます。
3. メッセージ m、 l(m)オクテット ( 0 <= l(m) < 2^(8L) )の文字列で構成されています。長さの制限により、l(m)がLオクテットのフィールドでエンコードできるようになります。
4. 追加認証データ(Additional authenticated data) a、は、0 <= l(a) < 2^64 オクテットの文字列で構成されます。この追加データは認証されますが暗号化されず、このモードの出力には含まれません。平文のパケットヘッダまたはメッセージの解釈に影響するコンテキスト情報を認証するために使用できます。追加認証データが不要な場合は長さ0の文字列を提供できます。
table:入力の要約
名 要約 サイズ
K ブロック暗号鍵 ブロック暗号依存
N nonce 15-L octets 7 から 13
m 認証と暗号に使うメッセージ l(m) octets
a 追加認証データ l(a) octets
2.2. 認証
最初のステップは、認証フィールド T を計算することです。これはCBC-MACを使用して行われます。まず、
B_0, B_1, ... B_N のブロックのシーケンスを定義して、次にこれらのブロックにCBC-MAC を適用します。
最初のブロック B_0 は次のようにフォーマットされます。ここで、l(m) は最上位バイト(MSB)順でエンコードされます。
table:B_0
オクテット位置 内容
0 Flags
1 ... 15-L Nonce N
16-L ... 15 l(m)
最初のブロック B_0 内で、Flags フィールドは次のようにフォーマットされます。
table:flags
ビット位置 内容
7 (Reserved: 予約)
6 Adata
5 ... 3 M' = (M-2)/2
2 ... 0 L' =
Adata bit は追加認証データの有無
0: なし l(a) = 0
1: あり l(a) > 0
M' は 認証フィールドのサイズ
L' は長さフィールドとnonceのサイズ分配