CCM
NIST SP 800-38C Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality 本文暗号化はCTR、認証はCBC-MAC、ヘッダ等少々の決まりあり。組み合わせたりいろいろする 長さが先頭に必要なので決まっているもので利用する
MAC計算 Bというストリームを作ってMACを計算する
入力
L MACサイズ
N nonce 重複しないこと
P payload = Message
A 関連データ(associated data) オプション
ヘッダあり? 16byte
flag
追加認証データAの有無
M 認証フィールド(MAC)の長さ 4,6,8,10,12,14,16 octets
L length の長さ
nonce
length 本文(Message)長
Additional Data zero padding
長さ
2^16-2^8 ぐらいまで2バイト
32bit 0xFFFE + 4バイト
64bit 0xFFFF + 8バイト
本体
Zero埋め
Message (暗号化前のもの 長さ情報はヘッダlength)
Zero埋め
MACの計算方法
MAC出力サイズを決める
暗号
CTR IV
flag
L' カウンターの長さ
nonce
counter
flag はMACのflag L相当のみ
length の場所にカウンターが入る形
RFC 4309 Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)
RFC 5084 Using AES-CCM and AES-GCM Authenticated Encryption in the Cryptographic Message Syntax (CMS) RFC 6655 AES-CCM Cipher Suites for Transport Layer Security (TLS) NIST 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 暗号ブロック連鎖 - メッセージ認証コード Cipher Block Chaining-Message Authentication Code
CCM CCM 暗号ブロック連鎖メッセージ認証コード付きカウンター。
Ciphertext 暗号文 CCM 暗号化生成プロセスの出力。
Cryptographic Key 暗号鍵 ブロック暗号アルゴリズムで使用されるパラメータで、前方暗号関数を決定します。
CTR CTR カウンター
Decryption-Verification 復号化と検証 CCM のプロセスでは、暗号文とされるテキストが復号化され、結果として得られるペイロードと関連データの信頼性が検証されます。
Exclusive-OR 排他的論理和 同じ長さの 2 つのビット文字列の、2 を法としたビット単位の加算。
FIPS FIPS 連邦情報処理標準。Federal Information Processing Standard.
Formatting Function 書式設定機能 ペイロード、関連データ、および nonce を完全なブロックのシーケンスに変換する関数。
Forward Cipher Function 前方暗号関数 ブロック暗号アルゴリズムの 2 つの機能のうちの 1 つで、暗号キーの選択によって決まります。
Generation-Encryption 世代暗号化 ペイロードと関連データに MAC が生成され、ペイロードと MAC に暗号化が適用される CCM のプロセス。
IEEE IEEE 電気電子技術者協会
Inverse Cipher Function 逆暗号関数 特定の暗号キーに対する順方向暗号関数の逆関数。
Least Significant Bit(s) 最下位ビット ビット文字列の右端のビット。
Message Authentication Code (MAC) メッセージ認証コード (MAC) データの偶発的なエラーと意図的なデータ変更の両方を明らかにするように設計された、データの暗号化チェックサム。
Mode of Operation (Mode) 動作モード(モード) 対称鍵ブロック暗号アルゴリズムを特徴とするデータの暗号化変換アルゴリズム。
Most Significant Bit(s) 最上位ビット ビット文字列の左端のビット。
Nonce ノンス 指定されたコンテキスト内で 1 回だけ使用される値。
Octet オクテット 8 ビットの文字列。
Octet Length オクテット長 オクテット文字列内のオクテットの数。
Octet String オクテット文字列 順序付けられたオクテットのシーケンス。
Payload ペイロード 認証され、暗号化された CCM 生成暗号化プロセスへの入力データ。
Valid Data Element 有効なデータ要素 ペイロード、関連するデータ(Associated Data)文字列、またはフォーマット関数の制限を満たす nonce。
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 payloadのオクテット長のバイナリ表現のオクテット長。
Q P のオクテット長のビット文字列表現。
r フォーマットされた入力データ内のブロック数 (N、A、P)。
Risk 不正なメッセージが復号検証プロセスを通過する最大許容確率。
t MACのオクテット長
T CCM プロセスの内部変数として生成される MAC。
Tlen MAC のビット長。
4.2.2 操作と機能 Operations and Functions
table:操作と機能
0x 16 進文字で表されるビット文字列のプレフィックス。
$ [x]_s 負でない整数 x の s ビットでの 2 進表現 ($x<2^s)。 ⎡ x⎤ 実数 x より小さくない最小の整数。
X || Y 2 つのビット文字列 X と Y の連結。
X ⊕ Y 同じ長さの 2 つのビット文字列 X と Y のビット単位の排他的論理和。
CIPHk(X) データブロックXに適用されたキーKによるブロック暗号アルゴリズムの順方向暗号関数の出力
LSBs(X) ビット列Xの右端のsビットからなるビット列
MSBs(X) ビット列Xの左端のsビットで構成されるビット文字列。
lg(x) 正の実数 x の 2 を底とする対数。
$ [x]_s
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. 最初のブロック $ B_0 は、nonce N を一意に決定します。
2. フォーマットされたデータは、P と A を一意に決定します。さらに、(N、P、A) と (N、P'、A') が、フォーマットが $ B_0 、$ B_1 、…、$ B_r と $ B_0' 、$ B_1' 、…、$ B_{r'}' である異なる入力トリプルである場合、i ≤ r および i ≤ r ' となるインデックス i について、$ B_i は $ B_i' と異なります。∗
3. 最初のブロック $ B_0 は、キーの下での CCM のすべての呼び出しで使用されるカウンター ブロックとは異なります。
3 番目の特性は、フォーマット関数とカウンター生成関数を互いに独立して選択または構築すべきではないことを示しています。
フォーマット関数は、入力データ N、P、A の内容とビット長、およびパラメータ Tlen に制限を課す場合があります。たとえば、ビット長は 8 の倍数と特定の値の範囲に制限される場合があります。フォーマット関数の制限を満たす値は有効と呼ばれます。Tlen の値が 32 より小さい場合、有効ではありません。
これらの要件を一緒に満たすフォーマット関数とカウンタ生成関数の例は、付録 A に示されています。将来、代替のフォーマット関数が開発される可能性があります。
*この特性は、2つの異なる入力トリプル内でnonceが繰り返されるケースを扱います。データの正当なソース/送信者には、異なる入力トリプルに異なるnonceを割り当てることがすでに求められていますが、$ [8] のセキュリティモデルでは、暗号文の受信者がnonceが繰り返されているかどうかを監視していない可能性があることを考慮に入れています。
5.5 操作と機能の例
正の整数 s と $ 2^s 未満の非負整数 x が与えられた場合、s ビットでの x の 2 進表現は $ [x]_s と表されます。たとえば、(基数 10) 整数 45 の場合、2 進表現 (基数 2) は 101101 なので、$ [45]_8 = 00101101 となります。
ビット文字列の連結演算は || で表されます。たとえば、001 || 10111 = 00110111 となります。
等しい長さのビット文字列が与えられた場合、排他的論理和演算 (⊕ で表記) は、各ビット位置のビットの加算 (モジュロ 2) を指定します (つまり、繰り上がりなし)。たとえば、10011 ⊕ 10101= 00110。
関数 $ LSB_s と $ MSB_s は、引数の s 個の最下位 (つまり、右端) ビットと s 個の最上位 (つまり、左端) ビットをそれぞれ返します。たとえば、$ LSB_3 (111011010) = 010、$ MSB_4 (111011010) = 1110。
正の実数 x が与えられた場合、2 を底とする対数 x は lg(x) で表記されます。たとえば、$ lg(2^{10})=10 。
6 CCM 仕様
2 つの CCM プロセスは、生成暗号化と復号化検証と呼ばれます。2 つの CCM プロセスの実行の前提条件、入力、出力、手順、および概要は、以下のセクション 6.1 および 6.2 で指定されています。前提条件は、通常、CCM の多数の呼び出しにわたって固定される入力です。前提条件と入力は、セクション 5 の要件を満たす必要があります。
2 つのプロセスのステップの順序には、ある程度の柔軟性があります。たとえば、カウンター ブロックの生成は、使用される前であればいつでも実行できます。実際、カウンター ブロックは事前に生成され、プロセスへの入力として考慮されることもあります。
6.1 生成-暗号化プロセス
以下は、CCM の生成暗号化プロセスの仕様です:
前提条件:
ブロック暗号アルゴリズム。
鍵 K。
カウンタ生成関数。
フォーマット関数。
MAC 長 Tlen。
入力:
有効な nonce N。
長さ Plen ビットの有効なペイロード P。
有効な関連データ A。
出力:
暗号文 C
手順:
1. フォーマット関数を (N, A, P) に適用して、ブロック $ B_0 、$ B_1 、…、$ B_r を生成します。
2. $ Y_0= CIPH_K(B_0) と設定します。
3. For i = 1 to r, do $ Y_i = CIPH_K(B_i ⊕ Y_{i-1})
4. $ T = MSB_{Tlen}(Y_r) を設定。
5. カウンター生成関数を適用して、カウンターブロック $ Ctr_0、Ctr_1、…、Ctr_m を生成します。ここで、m = ⎡ Plen/128⎤です。
6. For j=0 to m, do $ S_j = CIPH_K(Ctr_j) .
7. Set $ S = S_1 || S_2 || ... || S_m
8. Return $ C=(P⊕ MSB_{Plen}(S)) || (T⊕MSB_{Tlen}(S_0)) .
生成暗号化プロセスへの入力データは、有効な nonce、有効なペイロード文字列、および有効な関連データ文字列であり、これらはフォーマット関数に従ってフォーマットされます。CBC-MAC メカニズムは、長さが前提条件となる MAC を生成するためにフォーマットされたデータに適用されます。入力として十分に長いカウンタ ブロックのシーケンスを必要とするカウンタ モード暗号化は、ペイロード文字列に適用され、MAC には別々に適用されます。結果のデータは暗号文と呼ばれ、C で示され、生成暗号化プロセスの出力です。
6.2 復号検証プロセス
前提条件:
ブロック暗号アルゴリズム。
鍵 K。
カウンタ生成関数。
フォーマット関数。
有効な MAC 長 Tlen。
入力:
nonce N。
関連データ A。
長さ Clen ビットの暗号文 C。
出力:
ペイロード P または INVALID。
手順:
1. Clen ≤ Tlen の場合は INVALID を返します。
2. カウンタ生成関数を適用して、カウンタ ブロック $ Ctr_0、Ctr_1、…、Ctr_m を生成します。ここで、$ m = ⎡(Clen - Tlen)/128⎤です。
3. For j=0 to m、 do $ S_j = CIPH_K(Ctr_j) を実行します。
4. Set $ S= S_1 || S_2 || …|| S_m
5. Set $ P=MSB_{Clen-Tlen}(C) ⊕ MSB_{Clen-Tlen}(S)
6. Set $ T=LSB_{Tlen}(C) ⊕ MSB_{Tlen}(S_0)
7. If N, A, または P が有効でない場合、セクション 5.4 で説明したように INVALID を返し、それ以外の場合は (N、A、P) にフォーマット関数を適用して、ブロック $ B_0、B_1、…、B_r を生成します。
8. Set $ Y_0= CIPH_K(B_0)
9. For i = 1 to r, do $ Y_j = CIPH_K(B_i ⊕ Y_{i-1}) .
10. If $ T ≠ MSB_{Tlen}(Y_r) , then return INVALID, else return P.
復号検証プロセスへの入力は、想定される暗号文、関連するデータ文字列、および想定される暗号文の生成に使用されたとされるノンスです。想定される暗号文にカウンター モード復号が適用され、対応する MAC とペイロードが生成されます。セクション 5.4 で説明したように、ノンス、関連するデータ文字列、およびペイロードが有効である場合、これらの文字列はフォーマット関数に従ってブロックにフォーマットされ、CBC-MAC メカニズムが適用されて MAC が検証されます。検証が成功した場合、復号検証プロセスは出力としてペイロードを返します。それ以外の場合は、エラー メッセージ INVALID のみが返されます。
エラー メッセージ INVALID が返された場合、ペイロード P と MAC T は公開されません。さらに、実装では、権限のない者がエラー メッセージのタイミングなどから、エラー メッセージがステップ 7 の結果なのかステップ 10 の結果なのかを区別できないようにする必要があります。
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のサイズ分配