メッセージ認証コード(メッセージにんしょうコード、: Message Authentication CodeMAC)は、メッセージを認証するための短い情報である。MACアルゴリズムは、入力として共通鍵と認証すべき任意長のメッセージを受け取り、MAC(「タグ」とも呼ばれる)を出力する。MACを付加することで、(共通鍵をもつ)検証者がメッセージ内容の変化を検出できるようになり、メッセージの完全性認証が保証される。このため、メッセージ認証完全性コード(Message Authentication and Integrity Code、MAIC)とも呼ばれる。

セキュリティ

編集

MAC関数は暗号学的ハッシュ関数に似ているが、いくつかの必要条件の違いがある。MAC関数は選択平文攻撃における存在的偽造に対して耐性がなければならない。つまり、共通鍵を持ちMAC関数を計算できる神託機械にアクセスできる攻撃者が、任意に選んだメッセージに対応するMACを取得できたとしても、他の(神託機械に問い合わせていない)メッセージに対するMACを神託機械に対して問い合わせずに計算で求めることが計算量的に困難でなければならない。

MACはデジタル署名とは異なり、MAC値の生成と検証には同じ鍵が使われるので(共通鍵暗号)、送信者と受信者は通信を行う前に鍵を共有しておく必要がある。また共通鍵暗号であるために、認証されたメッセージは送信者本人が作成した物であり偽造ではないという確証、つまり否認不可性をもたない。なぜなら、受信者も含め共通鍵を知っている者であれば捏造したメッセージについてもMAC値を生成することができるからである。

公開鍵暗号を用いたデジタル署名では、メッセージの検証を公開鍵だけで行うことができるので、鍵の所有者はデジタル署名を作成できる秘密鍵を秘匿できる。したがって、デジタル署名が付与された文書はその所有者が署名したものと確定でき、否認不可な文書を作成することができる。

メッセージ完全性コード

編集

メッセージ認証符号(MAC)の代わりにメッセージ完全性コード(Message Integrity Code, MIC)という用語が、特に通信の分野でMACアドレスとの区別のために用いられることがある[1]。しかし、MICは、メッセージを一意に識別するためのメッセージダイジェストの意味で用いられる場合もある[2]。このため RFC 4949 では、MICという用語の代わりに、チェックサムエラー検出符号ハッシュ鍵付きハッシュメッセージ認証符号protected checksumを使うことが推奨されている。

実装

編集

MACアルゴリズムは他の暗号プリミティブから構築でき、ハッシュ関数を使う方式(HMAC)、ブロック暗号アルゴリズムを使う方式(OMAC/CMACCBC-MACPMAC)などがある。また、Poly1305などの高速なMACアルゴリズムはuniversal hashing[3]をベースとしている。

One-time MAC

編集

鍵付きハッシュ関数の一種であるuniversal hashing、特にpairwise independentという性質を持つハッシュ関数は、鍵を一回ごとに使い捨てにするならば、安全なメッセージ認証符号として使うことができる。これは、暗号化におけるワンタイムパッドのMAC版と考えることができる[4]

Pairwise independentという性質は、鍵 を知らないならば、ある のハッシュ値 が分かったとしても、別のメッセージ のハッシュ値 を推測できないという性質である。このような性質を持つハッシュ関数は、次のように簡単に作れる。素数 に対して鍵を としたとき、メッセージ のハッシュ値(MACにおけるタグ)は、 である。

編集

応用例として、MACはSSH2においてトランスポート層のデータ一貫性を確保するために使用されている。MACの検証に用いる共通鍵は、通信の暗号化、復号に用いるセッション鍵と同様に、セッション開始時にディフィー・ヘルマン鍵共有によって生成された共有秘密からハッシュ関数によって生成される。実際に通信が始まったら、SSHプログラムは受信したパケットを復号したあと、MACと計算値を比較することでデータの完全性を検証している[5][6]

脚注

編集
  1. ^ IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications ((2007 revision) ed.). IEEE-SA. (12 June 2007). doi:10.1109/IEEESTD.2007.373646. ISBN 978-0-7381-5656-9. http://standards.ieee.org/getieee802/download/802.11-2007.pdf 
  2. ^ Fred B Schneider, Hashes and Message Digests, Cornell University
  3. ^ “VMAC: Message Authentication Code using Universal Hashing”. CFRG Working Group. https://www.fastcrypto.org/vmac/draft-krovetz-vmac-01.txt 2010年3月16日閲覧。. 
  4. ^ Simmons, Gustavus (1985). “Authentication theory/coding theory”. Advances in Cryptology: Proceedings of CRYPTO 84. Berlin: Springer. pp. 411–431 
  5. ^ rfc4251”. 2011年10月1日閲覧。
  6. ^ rfc4253”. 2011年10月1日閲覧。

関連項目

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

Galois/Counter Mode

をチェックすることで、暗号文や関連データが改ざんされていないことを確認できる。 GCMはブロック長128ビットのブロック暗号に適用可能である。Galois Message Authentication Code (GMAC) は、認証のみに特化したGCMの派生であり、メッセージ認証符号として利用できる。GCM、GMACのいずれも、

HMAC

HMAC (Hash-based Message Authentication Code または keyed-Hash Message Authentication Code) とは、メッセージ認証符号 (MAC; Message Authentication Code)

CBC-MAC

CBC-MAC (cipher block chaining message authentication code) は、ブロック暗号からメッセージ認証符号を生成する手法である。あるブロック暗号のCBCモードでメッセージを暗号化することで暗号ブロックの連鎖を形成すると、それぞれのブロックの暗号化

Counter mode with Cipher-block chaining Message authentication code Protocol

Counter mode with Cipher-block chaining Message authentication code Protocol、あるいはCounter mode with CBC-MAC Protocol、あるいはCCMP (CCM Protocol) は、IEEE 802

IPsec

Encapsulating Security Payload (ESP) RFC 4543: The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH RFC 4555: IKEv2 Mobility and Multihoming

Poly1305

Slashdot. 2014年12月26日閲覧。 ^ Bernstein, Daniel J.. “The Poly1305-AES message-authentication code”. 2013年12月30日閲覧。 Poly1305-AES Public domain Poly1305 library

ISO 8583

transaction card originated messages -- Interchange message specifications -- Part 1: Messages, data elements and code values ^ ISO 8583-2:1998 Financial transaction

MAC

control)とは、コンピュータネットワーク技術において、OSI参照モデルの第2層(データリンク層)の副層(MACアドレスも参照)。 メッセージ認証コード(message authentication code)とは、認証や通信途中の改ざんをチェックするためなどの短い情報。 最小肺胞内濃度(minimum alveolar