メッセージ認証符号のソースを表示
←
メッセージ認証符号
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''メッセージ認証コード'''(メッセージにんしょうコード、[[英語|英]]: '''Message Authentication Code'''、'''MAC''')は、メッセージを[[認証]]するための短い情報である。MAC[[アルゴリズム]]は、入力として[[鍵 (暗号)|共通鍵]]と認証すべき任意長のメッセージを受け取り、MAC(「タグ」とも呼ばれる)を出力する。MACを付加することで、(共通鍵をもつ)検証者がメッセージ内容の変化を検出できるようになり、メッセージの[[データ完全性|完全性]]と[[認証]]が保証される。このため、メッセージ認証完全性コード(Message Authentication and Integrity Code、'''MAIC''')とも呼ばれる。 == セキュリティ == MAC関数は[[暗号学的ハッシュ関数]]に似ているが、いくつかの必要条件の違いがある。MAC関数は[[選択平文攻撃]]における[[存在的偽造]]に対して耐性がなければならない。つまり、共通鍵を持ちMAC関数を計算できる[[神託機械]]にアクセスできる攻撃者が、任意に選んだメッセージに対応するMACを取得できたとしても、他の(神託機械に問い合わせていない)メッセージに対するMACを神託機械に対して問い合わせずに計算で求めることが計算量的に困難でなければならない。 MACは[[デジタル署名]]とは異なり、MAC値の生成と検証には同じ鍵が使われるので([[共通鍵暗号]])、送信者と受信者は通信を行う前に鍵を共有しておく必要がある。また共通鍵暗号であるために、認証されたメッセージは送信者本人が作成した物であり偽造ではないという確証、つまり[[否認不可]]性をもたない。なぜなら、受信者も含め共通鍵を知っている者であれば捏造したメッセージについてもMAC値を生成することができるからである。 [[公開鍵暗号]]を用いたデジタル署名では、メッセージの検証を公開鍵だけで行うことができるので、鍵の所有者はデジタル署名を作成できる秘密鍵を秘匿できる。したがって、デジタル署名が付与された文書はその所有者が署名したものと確定でき、否認不可な文書を作成することができる。 == メッセージ完全性コード == '''メッセージ認証符号(MAC)'''の代わりに'''メッセージ完全性コード'''(Message Integrity Code, '''MIC''')という用語が、特に通信の分野で[[MACアドレス]]との区別のために用いられることがある。<ref>{{cite book |publisher=[[IEEE-SA]] |title=IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications |date=12 June 2007 |doi=10.1109/IEEESTD.2007.373646 |url=http://standards.ieee.org/getieee802/download/802.11-2007.pdf | version=(2007 revision)|isbn=978-0-7381-5656-9 }}</ref> しかし、MICは、メッセージを一意に識別するための[[メッセージダイジェスト]]の意味で用いられる場合もある。<ref>[http://www.cs.cornell.edu/courses/cs513/2005fa/NL20.hashing.html Fred B Schneider, Hashes and Message Digests, Cornell University]</ref>このため {{IETF RFC|4949}} では、MICという用語の代わりに、''[[チェックサム]]''、''[[エラー検出符号]]''、''[[ハッシュ関数|ハッシュ]]''、''鍵付きハッシュ''、''メッセージ認証符号''、''protected checksum''を使うことが推奨されている。 == 実装 == MACアルゴリズムは他の暗号プリミティブから構築でき、[[ハッシュ関数]]を使う方式([[HMAC]])、[[ブロック暗号]]アルゴリズムを使う方式(OMAC/[[CMAC]]、[[CBC-MAC]]、[[PMAC]])などがある。 また、 [[Poly1305]]などの高速なMACアルゴリズムは[[universal hashing]]<ref>{{cite paper |url=http://www.fastcrypto.org/vmac/draft-krovetz-vmac-01.txt|title=VMAC: Message Authentication Code using Universal Hashing |access-date=16 March 2010 |journal=CFRG Working Group }}</ref>をベースとしている。 ===One-time MAC=== 鍵付きハッシュ関数の一種である[[universal hashing]]、特に[[pairwise independent]]という性質を持つハッシュ関数は、鍵を一回ごとに使い捨てにするならば、安全なメッセージ認証符号として使うことができる。これは、暗号化における[[ワンタイムパッド]]のMAC版と考えることができる<ref name=":0">{{cite book |author-link=Gustavus Simmons |first=Gustavus |last=Simmons |chapter=Authentication theory/coding theory |title=Advances in Cryptology: Proceedings of CRYPTO 84 |pages=411–431 |year=1985 |location=Berlin |publisher=Springer |isbn= }}</ref>。 Pairwise independentという性質は、鍵 <math>k</math> を知らないならば、ある <math>m</math> のハッシュ値 <math>hash_k(m)</math> が分かったとしても、別のメッセージ <math>m'(\ne m)</math> のハッシュ値 <math>hash_k(m') </math> を推測できないという性質である。このような性質を持つハッシュ関数は、次のように簡単に作れる。素数 <math>p</math> に対して鍵を <math>k=(a,b)</math> としたとき、 メッセージ <math>m</math> のハッシュ値(MACにおけるタグ)は、<math>hash_k(m) = am + b \mod p</math> である。 == 例 == [[画像:MAC.svg]] 応用例として、MACは[[Secure Shell|SSH]]2においてトランスポート層のデータ一貫性を確保するために使用されている。MACの検証に用いる共通鍵は、通信の暗号化、復号に用いるセッション鍵と同様に、セッション開始時に[[ディフィー・ヘルマン鍵共有]]によって生成された共有秘密からハッシュ関数によって生成される。実際に通信が始まったら、SSHプログラムは受信したパケットを復号したあと、MACと計算値を比較することでデータの完全性を検証している。<ref>{{cite web|url=http://www.ietf.org/rfc/rfc4251.txt|title=rfc4251|accessdate=2011-10-01}} {{cite web|url=http://www.ietf.org/rfc/rfc4253.txt|title=rfc4253|accessdate=2011-10-01}}</ref> == 脚注 == <references /> == 関連項目 == * [[チェックサム]] * [[HMAC]] * [[認証付き暗号]] (AEAD) == 外部リンク == * [https://web.archive.org/web/20061020212439/http://www.rsasecurity.com/rsalabs/node.asp?id=2177 RSA FAQ's entry on MACs] * [http://web.mit.edu/6.857/OldStuff/Fall97/lectures/lecture3.pdf Ron Rivest lecture on MACs] {{cryptography navbox|hash}} {{Normdaten}} {{デフォルトソート:めつせえしにんしようこおと}} [[Category:暗号技術]] [[Category:誤り検出訂正]] [[Category:メッセージ認証コード|*]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Cite paper
(
ソースを閲覧
)
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Cryptography navbox
(
ソースを閲覧
)
テンプレート:IETF RFC
(
ソースを閲覧
)
テンプレート:Normdaten
(
ソースを閲覧
)
メッセージ認証符号
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報