知識ベース

ISO / IEC 9797-1

ISO / IEC 9797-1 情報技術–セキュリティ技術–メッセージ認証コード(MAC)–パート1:ブロック暗号を使用するメカニズムは、データに対するメッセージ認証コード(MAC)の計算方法を定義する国際標準です。

1つの特定のアルゴリズムを定義するのではなく、さまざまな特定のアルゴリズムを構築できる一般的なモデルを定義しています。モデルは、秘密の対称キーを持つブロック暗号に基づいています。

標準では特定のアルゴリズムではなくモデルが記述されているため、標準のユーザーは使用する特定のオプションおよびパラメーターをすべて指定して、明確なMAC計算を保証する必要があります。

MAC生成のモデルは、6つのステップで構成されます。

  1. 暗号ブロックサイズの倍数へのデータのパディング
  2. データをブロックに分割する
  3. データの最初のブロックの初期変換
  4. 残りのデータブロックの反復
  5. 最後の反復の結果の出力変換
  6. 結果を必要な長さに切り捨てる

ほとんどの手順で、標準はいくつかのオプションを提供し、そこから選択したり、設定可能にしたりします。

パディング

入力データは、暗号ブロックサイズの倍数にパディングする必要があります。これにより、後続の各暗号化操作でデータの完全なブロックが得られます。 3つのパディング方法が定義されています。それぞれの場合、 nはブロック長(ビット単位)です。

パディング方法1

必要に応じて、パディングされたデータがnの倍数になるまで、データの最後に値0のビットを追加します。 (元のデータがすでにnの倍数であった場合 、ビットは追加されません。)

パディング方法2

データの最後に値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 KD 1)初期変換2

D 1はキーKで暗号化され、次に2番目のキーK ''で暗号化されます。

H 1 = e K ′′(e KD 1))

反復

ブロックH 2 ... H qは、対応するデータブロックと前のHブロックのビット単位の排他的論理和をキーKで暗号化することによって計算されます。

I = Q H 2 I = E K( ディ ⊕H iが -1)のために

データブロックが1つしかない場合( q = 1)、この手順は省略されます。

出力変換

ブロックGを生成するために、最後の反復出力ブロックHqで暗号化操作が(オプションで)実行されます。 3つの出力変換が定義されています:

出力変換1

Hqは変更されずに使用されます。

G = Hq出力変換2

HqはキーK ′で暗号化されます。

G = e K ′( Hq )出力変換3

HqはキーK 'で復号化され、結果はキーKで暗号化されます。

G = e K (d K ′( Hq ))

切り捨て

MACは、ブロックGを切り捨てて(左端のビットを保持し、右端のビットを破棄して)必要な長さにします。

特定のアルゴリズム

一般的なモデルでは、名目上、パディング、初期変換、出力変換、切り捨ての各ステップのオプションの任意の組み合わせが可能です。ただし、標準では、初期変換と出力変換の4つの特定の組み合わせ、および(適切な場合)キーの派生、および重複した並列計算に基づく2つの組み合わせが定義されています。この組み合わせは、標準では「MACアルゴリズム1」から「MACアルゴリズム6」として示されています。

MACアルゴリズム1

このアルゴリズムは、初期変換1と出力変換1を使用します。

必要なキーはKだけです。

(ブロック暗号がDESの場合、これはFIPS PUB 113 Computer Data Authenticationで指定されたアルゴリズムと同等です。)

アルゴリズム1は、一般にCBC-MACとして知られています。

MACアルゴリズム2

このアルゴリズムは、初期変換1と出力変換2を使用します。

二つの鍵は、K及びKを必要としている」が、K ' Kに由来してもよいです。

MACアルゴリズム3

このアルゴリズムは、初期変換1と出力変換3を使用します。

2つの独立したキー、 KおよびK ′が必要です。

アルゴリズム3は、小売MACとも呼ばれます。

MACアルゴリズム4

このアルゴリズムは、初期変換2と出力変換2を使用します。

二つの独立した鍵は、Kに由来する'' '第3の鍵Kを用いて、'、K及びKを必要としています。

MACアルゴリズム5

MACアルゴリズム5は、MACアルゴリズム1の2つの並列インスタンスで構成されます。最初のインスタンスは、元の入力データで動作します。 2番目のインスタンスは、ガロア体での乗算によって元のキーから生成された2つのキーバリアントで動作します。最終的なMACは、アルゴリズム1の各インスタンスによって生成されたMACのビットごとの排他的論理和によって計算されます。

アルゴリズム5はCMACとも呼ばれます。

MACアルゴリズム6

このアルゴリズムは、MACアルゴリズム4の2つの並列インスタンスで構成されます。最終的なMACは、アルゴリズム4の各インスタンスによって生成されたMACのビット単位の排他的論理和です。

アルゴリズム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アルゴリズムのセキュリティ分析です。キー回復攻撃、ブルートフォースキー回復、誕生日攻撃など、アルゴリズムに対するさまざまな暗号攻撃について説明し、それらの攻撃に対する各アルゴリズムの耐性を分析します。