ISO/IEC 9797-1 情報技術 - セキュリティ技術 - メッセージ認証コード (MAC) - パート 1: ブロック暗号を使用するメカニズム[1]は、データに対して メッセージ認証コード(MAC) を計算する方法を定義する国際標準です。
この標準では、特定のアルゴリズムを 1 つ定義するのではなく、さまざまな特定のアルゴリズムを構築できる一般的なモデルを定義します。このモデルは、秘密の対称キーを使用したブロック暗号に基づいています。
この標準では特定のアルゴリズムではなくモデルが説明されているため、この標準のユーザーは、MAC 計算が確実に行われるように、使用する特定のオプションとパラメータをすべて指定する必要があります。
モデル
MAC 生成モデルは 6 つのステップで構成されます。
- 暗号ブロックサイズの倍数にデータをパディングする
- データをブロックに分割する
- 最初のデータブロックの初期変換
- 残りのデータブロックを反復処理する
- 最後の反復の結果の出力変換
- 結果を必要な長さに切り捨てる
ほとんどのステップでは、標準によって選択できるオプションがいくつか提供され、また、ある程度の構成が可能になります。
パディング
入力データは、暗号ブロック サイズの倍数にパディングする必要があります。これにより、後続の各暗号化操作で完全なデータ ブロックが作成されます。パディング方法は 3 つ定義されています。いずれの場合も、nはブロック長 (ビット単位) です。
パディング方法1
必要に応じて、パディングされたデータがnの倍数になるまで、データの末尾に値 0 のビットを追加します。(元のデータがすでにnの倍数である場合は、ビットは追加されません。)
パディング方法2
データの末尾に値 1 のビットを 1 つ追加します。次に、必要に応じて、パディングされたデータがnの倍数になるまで、データの末尾に値 0 のビットを追加します。
パディング方法3
パディングされたデータは、次の順序で構成されます。
- パディングされていないデータの長さ(ビット単位)は、ビッグエンディアンバイナリでnビット(つまり1つの暗号ブロック)で表されます。
- パディングされていないデータ
- 合計の長さがnビットの倍数になるために必要な数(ゼロの場合もある)の0のビット
受信者はパディングされていないデータの長さと使用されるパディング方法を知って、パディング ビットを再生成できるため、パディング ビットを送信または保存する必要はありません。
分割
パディングされたデータD は、ブロック暗号に適した 長さnのq 個のブロックD 1、D 2、... D qに分割されます。
最初の変革
最初のブロック ( D 1 )に対して暗号化操作が実行され、中間ブロックH 1が作成されます。2 つの初期変換が定義されています。
初期変換1
D 1 はキーKで暗号化されます。
- H 1 = e K ( D 1 )
初期変換2
D 1 はキーKで暗号化され、次に 2 番目のキーK '' で暗号化されます。
- H 1 = e K '' (e K ( D 1 ))
反復
ブロックH 2 ... H qは、対応するデータ ブロックと前のHブロックのビット単位の排他的論理和をキーKで暗号化することによって計算されます。
- i = 2 からqまで
- H i = e K ( D i ⊕ H i -1 )
データブロックが 1 つだけの場合 ( q =1)、この手順は省略されます。
出力変換
最後の反復出力ブロックH qに対して暗号化操作が(オプションで)実行され、ブロックGが生成されます。3 つの出力変換が定義されています。
出力変換1
H qは変更されずに使用されます。
- G = H q
出力変換2
H q は鍵K ′で暗号化される:
- G = e K ′ ( H q )
出力変換3
H q は鍵K ′ で復号され、結果は鍵Kで暗号化されます。
- G = e K (d K ′ ( H q ))
切り捨て
MAC は、ブロックG を必要な長さに切り捨てることによって (左端のビットを保持し、右端のビットを破棄することによって) 取得されます。
特定のアルゴリズム
一般的なモデルでは、名目上、パディング、初期変換、出力変換、切り捨ての各ステップのオプションを任意に組み合わせることができます。ただし、標準では、初期変換と出力変換、および (適切な場合) キー導出の 4 つの特定の組み合わせと、重複並列計算に基づく 2 つの組み合わせが定義されています。これらの組み合わせは、標準では「MAC アルゴリズム 1」から「MAC アルゴリズム 6」として示されています。
MACアルゴリズム1
このアルゴリズムは、初期変換 1 と出力変換 1 を使用します。
必要なキーはKだけです。
(ブロック暗号がDESの場合、これはFIPS PUB 113 コンピュータデータ認証で指定されたアルゴリズムと同等です。[2])
アルゴリズム1は一般にCBC-MACとして知られています。[3]
MACアルゴリズム2
このアルゴリズムは、初期変換 1 と出力変換 2 を使用します。
2 つのキーKとK ′ が必要ですが、K ′ はKから派生する場合があります。
MACアルゴリズム3
このアルゴリズムは、初期変換 1 と出力変換 3 を使用します。
2 つの独立したキーKとK ′ が必要です。
アルゴリズム3はリテールMACとも呼ばれます。[4]
MACアルゴリズム4
このアルゴリズムは、初期変換 2 と出力変換 2 を使用します。
2 つの独立したキーKとK ′ が必要であり、3 番目のキーK '' はK ′ から派生します。
MACアルゴリズム5
MACアルゴリズム5は、MACアルゴリズム1の2つの並列インスタンスから構成されます。最初のインスタンスは元の入力データに対して動作します。2番目のインスタンスは、ガロア体での乗算によって元のキーから生成された2つのキーバリアントに対して動作します。最終的なMACは、アルゴリズム1の各インスタンスによって生成されたMACのビットごとの排他的論理和によって計算されます。[5]
アルゴリズム5はCMACとも呼ばれる。[6]
MACアルゴリズム6
このアルゴリズムはMACアルゴリズム4の2つの並列インスタンスで構成されています。最終的なMACはアルゴリズム4の各インスタンスによって生成されたMACのビット単位の排他的論理和です。[7]
アルゴリズム 4 の各インスタンスは異なるキー ペア ( KとK ′) を使用しますが、これら 4 つのキーは 2 つの独立した基本キーから派生します。
キー導出
MAC アルゴリズム 2 (オプション)、4、5、および 6 では、別のキーから 1 つ以上のキーを導出する必要があります。標準では、キー導出の特定の方法は規定されていませんが、一般に、導出されたキーは互いに異なることが規定されています。
標準では、「最初の 4 ビットから始まるKの 4 ビットの代替サブストリングを補完する」など、キー導出方法の例がいくつか示されています。これは、キーの各バイトをF0 ( 16 進数) でビットごとに排他的論理和演算することと同じです。
MAC計算の完全な仕様
MAC 計算を完全かつ明確に定義するには、ISO/IEC 9797-1 のユーザーは以下を選択して指定する必要があります。
- ブロック暗号アルゴリズムe
- パディング方法(1~3)
- 特定のMACアルゴリズム(1~6)
- MACの長さ
- 必要に応じて、MACアルゴリズム2、4、5、または6のキー導出方法
アルゴリズムのセキュリティ分析
この規格の付録 B は、MAC アルゴリズムのセキュリティ分析です。アルゴリズムに対するさまざまな暗号化攻撃 (キー回復攻撃、ブルート フォース キー回復、誕生日攻撃など) について説明し、各アルゴリズムのそれらの攻撃に対する耐性を分析します。
参考文献
- ^ ISO/IEC 9797-1:2011 情報技術 – セキュリティ技術 – メッセージ認証コード (MAC) – パート 1: ブロック暗号を使用するメカニズム
- ^ 「FIPS PUB 113 - コンピュータデータ認証」。国立標準技術研究所。2011年9月27日時点のオリジナルよりアーカイブ。2011年10月1日閲覧。
- ^ ISO/IEC 9797-1:2011 情報技術 – セキュリティ技術 – メッセージ認証コード (MAC) – パート 1: ブロック暗号を使用したメカニズム、概要
- ^ ISO/IEC 9797-1 情報技術 – セキュリティ技術 – メッセージ認証コード (MAC) – パート 1: ブロック暗号を使用するメカニズム。国際標準化機構。2011 年。11 ページ。
- ^ ISO/IEC 9797-1 情報技術 – セキュリティ技術 – メッセージ認証コード (MAC) – パート 1: ブロック暗号を使用するメカニズム。国際標準化機構。2011 年。12 ページ。
- ^ ISO/IEC 9797-1 情報技術 – セキュリティ技術 – メッセージ認証コード (MAC) – パート 1: ブロック暗号を使用するメカニズム。国際標準化機構。2011 年。13 ページ。
- ^ ISO/IEC 9797-1:1999 情報技術 -- セキュリティ技術 -- メッセージ認証コード (MAC) -- パート 1: ブロック暗号を使用したメカニズム — ISO/IEC 9797-1:2011 に置き換えられました。後者の序文によると、アルゴリズム 6 が異なります。
