Message authentication code

提供: tezos-wiki
移動先: 案内検索

cryptographyでは、 'タグ' 'と呼ばれることがある' メッセージ認証コード 'MAC' )はメッセージを認証する - 言い換えれば、メッセージが指定された送信者(真正性)からのものであり、変更されていないことを確認する。 MAC値は、ベリファイア(秘密鍵も所有している)がメッセージ内容の変更を検出できるようにすることによって、メッセージのデータ整合性とその信頼性の両方を保護します。

定義[編集]

非公式には、メッセージ認証コードは3つのアルゴリズムで構成されます。

  • 鍵生成アルゴリズムは、鍵空間からランダムに一様に鍵を選択する。
  • 署名アルゴリズムは、キーとメッセージを与えられたタグを効率的に返します。
  • 検証アルゴリズムは、キーとタグが与えられたメッセージの信頼性を効率的に検証します。つまり、メッセージとタグが改ざんされていないか偽造されていない場合は「受け入れ」を返し、それ以外の場合は「拒否」を返します。

セキュアな偽造不可能なメッセージ認証コードの場合、最悪の場合、与えられたメッセージ以外のメッセージのタグを偽装できると仮定しても、キーの知識なしに、与えられたメッセージの有効なタグを計算するのは計算上不可能です。

正式には、メッセージ認証コード (MAC ')は以下を満たす効率的なアルゴリズム(' '

  • G (キージェネレータ)は、入力1< sup> 'n' '< / sup>にキー' 'k' 'を、ここで' 'n' 'はセキュリティパラメータです。
  • S (署名)は、キー "k"と入力文字列 "x"にタグ "t"を出力します。

キー "k"、文字列 "x"、タグ ​​"t"を入力に入力したときに "受け入れられた"か "拒否された"かを出力する。 は以下を満たす必要があります:

(k ' 'S' '(' '、' '))=' 'accepted' '] = 1。

MACは、すべての効率的な敵対者のために '偽造不可能である'

(1 'x' '、' 't' ')←' 'A' '(1' クエリー( ')' ' 1 '、' 'k' '、' 'x' '、' 't' ')=' 'accepted' ']< negl( n )、

ここで、 'A' '&lt; sup&gt;' 'S' '(' 'k' '、・)&lt; / sup> 「A」はオラクル「S」(「 、・)」および「 ' 1 n </ sup>)は、 A によって作られた S に関するクエリの集合を表し、 n ' '明らかに、敵は有効なタグを簡単に得ることができるので、「S」の文字列「x」を直接照会することはできません。

セキュリティ[編集]

MAC機能は暗号ハッシュ関数と似ていますが、セキュリティ要件は異なります。安全であると考えるには、MAC機能は選択平文攻撃の下で存在する偽造に耐えなければならない。これは、攻撃者が秘密鍵を所有し、攻撃者が選択したメッセージのMACを生成する oracleへのアクセス権を持っていても、攻撃者は他のメッセージ(クエリに使用されなかったオラクル)を実行することができます。

MAC値は、同じ秘密鍵を使用して生成され検証されるため、MACは電子署名とは異なります。これは、メッセージの送信者と受信者が、対称暗号化の場合のように、通信を開始する前に同じキーで合意しなければならないことを意味します。同じ理由で、MACは、ネットワーク全体の共有秘密鍵の場合に特に署名によって提供される否認不可の特性を提供しない:MACを検証することができる任意のユーザは、メッセージ。対照的に、デジタル署名は、公開鍵暗号である鍵ペアの秘密鍵を使用して生成されます。この秘密鍵は所有者のみがアクセスできるため、デジタル署名は、その所有者以外の者が署名した文書でないことを証明します。したがって、デジタル署名は否認防止を提供する。ただし、否認防止は、キー使用情報をMACキーにしっかりとバインドするシステムによって提供することができます。同じ鍵は2人が所有していますが、一方はMAC生成に使用できる鍵のコピーを持ち、もう一方はMAC検証のみを許可するハードウェアセキュリティモジュールに鍵のコピーを持っています。これは一般的に金融業界で行われています。

メッセージ完全性コード[編集]

頭字語のMACが伝統的にMACアドレス(メディアアクセス制御アドレス)の略語である場合、特に用語「メッセージ保全コード(MIC)」は、用語のMAC、特に通信で置き換えられます。しかし、MACとは異なるメッセージダイジェストを参照するためにMICを使用する作者もいます。メッセージダイジェストは秘密鍵を使用しません。このセキュリティの欠如は、メッセージの整合性を測定するためのメッセージダイジェストを暗号化するか、または改ざんから保護する必要があることを意味します。メッセージダイジェストアルゴリズムは、同じアルゴリズムが両方を生成するために使用されると仮定して、与えられたメッセージが常に同じメッセージダイジェストを生成するように作成されます。逆に、MACアルゴリズムは、同じメッセージ、秘密鍵、および初期化ベクトルが同じアルゴリズムに入力された場合にのみ、一致するMACを生成するように設計されています。メッセージダイジェストは秘密鍵を使用しないため、単独でとった場合、MACよりも信頼性の低いメッセージの整合性が得られます。 MACは秘密鍵を使用するため、必ずしも同じレベルの保証を提供するために暗号化する必要はありません。

RFC 4949では、「メッセージの整合性コード」(MIC)という用語を避け、「チェックサム」、「エラー検出コード」、「ハッシュ」、「キー付きハッシュ"、"メッセージ認証コード "、または"保護されたチェックサム "。

実装[編集]

MACアルゴリズムは、暗号化ハッシュ関数([[HMAC]の場合)や[ブロック暗号]アルゴリズム( OMACなどの他の暗号プリミティブから構築できます。 ]、CBC-MACおよび PMAC)。しかし、UMACVMACのような最速MACアルゴリズムの多くは、universal hashingに基づいて構築されています。

さらに、MACアルゴリズムは、後で脆弱であると判明しても保護を維持するために、2つ以上の暗号プリミティブを意図的に組み合わせることができる。例えば、Transport Layer Security(TLS)では、入力データは、それぞれ異なるハッシングプリミティブ(MD5と[[SHA-1])で処理された半分に分割され、 XORedを組み合わせてMACを出力します。

規格[編集]

MACアルゴリズムを定義する様々な標準が存在する。これらには、

  • 2002年に撤回されたFIPS PUB 113「コンピュータデータ認証」は、 DESに基づくアルゴリズムを定義しています。
  • FIPS PUB 198-1 "キー付きハッシュメッセージ認証コード(HMAC)"
  • ISO / IEC 9797-1 ブロック暗号を使用するメカニズム
  • ISO / IEC 9797-2「専用ハッシュ関数を使用するメカニズム」

ISO / IEC 9797-1および-2は、任意のブロック暗号またはハッシュ関数、および様々な異なるパラメータと共に使用できる汎用モデルおよびアルゴリズムを定義する。これらのモデルおよびパラメータは、パラメータを指定することによってより特定のアルゴリズムを定義することを可能にする。たとえば、FIPS PUB 113アルゴリズムは、機能1とパディング方法1のISO / IEC 9797-1 MACアルゴリズム1およびDESのブロック暗号アルゴリズムと同等です。

MACの使用例[編集]

センター

この例では、メッセージの送信者がMACアルゴリズムを使用してメッセージを実行し、MACデータタグを生成します。その後、メッセージおよびMACタグは受信機に送信される。受信機は、同じ鍵を使用して同じMACアルゴリズムを介して送信のメッセージ部分を実行し、第2のMACデータタグを生成する。次に、受信機は、送信で受信された第1のMACタグを第2の生成されたMACタグと比較する。それらが同一である場合、受信者は、送信中にメッセージが変更または改ざんされていないことを安全に想定できます(データの完全性)。

しかし、受信者が再生攻撃を検出できるようにするには、メッセージ自体に、この同じメッセージを一度しか送信できないようなデータ(タイムスタンプ、シーケンス番号、ワンタイムマック)。そうしないと、攻撃者はコンテンツを理解しなくてもこのメッセージを記録して後で再生し、元の送信者と同じ結果を得ることができます。

ワンタイムMAC[編集]

ユニバーサルハッシング、特にペアワイズ独立ハッシュ関数は、キーが最大で1回使用される限り、安全なメッセージ認証コードを提供します。これは認証のためにワンタイムパッドとして見ることができます。

そのような対の独立したハッシュ関数は、ランダムキー "key"&nbsp; =&nbsp;( a b )によって定義され、メッセージ "m"のMACタグはタグ &nbsp; =&nbsp;( am &nbsp; +&nbsp; b )&nbsp; mod&nbsp; p 、ここで p は小数です。

より一般的には、k-independent hashing関数は、そのキーが<math> k </ math> - wより小さい値で使用される限り、安全なメッセージ認証コードを提供する独立したハッシング関数です。

関連項目[編集]

Notes[編集]

ソース[編集]

http://wikipedia.org/