衝突_(計算機科学)
[Wikipedia|▼Menu]

計算機科学には全く限らず、ハッシュ関数のような種類の関数を使うような場面で、衝突(: collision)とは、2つの異なるデータからハッシュ関数などで生成したハッシュ値など(チェックサム・フィンガープリント・メッセージダイジェストなど)の値が同じ値(シノニム)になることである。
概要

ほとんどの分野において、衝突は一般に望ましくない結果ではある。ここでは「望ましくなさ」と呼ぶが、その「望ましくなさ」はその応用の目的によって異なる。また鳩の巣原理により、ある集合全体からその集合より小さい集合への写像では必ず衝突が発生するが、メッセージダイジェストなどではその確率が十分に低いかどうかが問題となる。

相同DNA配列や、ほぼ同じ内容の音声ファイルなど、よく似たデータを同一視するためにハッシュ関数とフィンガープリントを使用する場合、ハッシュ関数は似たデータに対して似た結果を出し、あるいは衝突を発生する(確率ができる限り大きくなる)ように設計される。これは一般と逆に必要な場合には衝突が望まれる例である。

ビットの化けや抜けや混入をチェックするチェックサムなどはよく似た入力に対して、可能であれば十分に異なるハッシュ値を生成することが望まれ、衝突を発生させる確率ができる限り小さくなるように設計される。一方で全く異なるデータ間での衝突については通常は意識されない。こういった誤り検出訂正の類はハッシュとは別とすることもある。

ハッシュテーブルにおいて、衝突はルックアップ処理のコストを増加させる。こういった応用には関数の計算量と結果の品質のどちらを重視するか等のトレードオフもある。またハッシュテーブルを実装するいくつかの技法との相性、あるいは入力に現れる値が完全にランダムか何らかの性質があるのか、といった考慮すべき要素もある。入力に現れうる値が予め全て既知なのであれば完全ハッシュ関数といったものもある。

プロキシサーバやファイルのバックアップシステムにおいて不要なファイルの保存や転送を省略するためにはフィンガープリントが使用されるが、ここでの衝突は、単に本来ならば必要なかったはずの転送が必要になったというような結果であれば問題ないが、場合によっては不適切な処理やデータ消失の原因になりうる。暗号学的ハッシュ関数などを使うとかなり低い確率になるかもしれないが、それでもその可能性を考慮すべきかは難しい所である。

暗号分野の応用では衝突が致命的なものもあり、暗号学的ハッシュ関数と呼ばれる特別な一分野としてさかんに研究されている。この分野ではハッシュ関数について「弱衝突耐性」「強衝突耐性」といった術語が定義されており、暗号学的ハッシュ関数はこれらについて、目的に応じて必要な強度を満たしていることが求められる。
ハッシュ関数の結果

あるデータに対して何らかの変換関数(ハッシュ関数という)を適用して、そのデータに対するレコード位置(アドレスなどでもよい)を対応させることにする。このとき、別々のデータに対して同じレコード位置が対応する場合、「シノニムが生じる」などという。

例えば、データ「1,5,7,12,13」があり、データ値に対応するレコード位置を求める関数を「データ値を11で割った余り」ということにする。

データレコード位置
11
55
77
121
132

この例でデータとレコード位置を表にすると上の通りである。

データが1と12のどちらもレコード位置が1になってしまっている。これを「データ1と12で(レコード位置の)シノニムが生じる」などという言い方をする。情報処理においては、シノニムが生じた場合の処理、もしくはシノニムをそもそも発生させない処理方法を予め考えておくことは必須である。










暗号学的ハッシュ関数メッセージ認証コード
セキュリティ要約(英語版)
一般的関数

MD5

SHA-1

SHA-2

SHA-3/Keccak

SHA-3最終候補(英語版)

BLAKE

Grostl(英語版)

JH(英語版)

Skein(英語版)

Keccak (勝者)

その他の関数

FSB(英語版)

ECOH(英語版)

GOST(英語版)

HAS-160(英語版)

HAVAL(英語版)

Kupyna(英語版)

LMハッシュ

MDC-2(英語版)

MD2

MD4

MD6(英語版)

N-Hash(英語版)

RadioGatun

RIPEMD

SipHash(英語版)

Snefru(英語版)

Streebog(英語版)

SWIFFT(英語版)

Tiger(英語版)

VSH(英語版)

WHIRLPOOL

crypt(3)(英語版) (DES)

MACアルゴリズム

DAA(英語版)

CBC-MAC

HMAC

OMAC(英語版)/CMAC

PMAC(英語版)

VMAC(英語版)

UMAC(英語版)

Poly1305

認証付き暗号モード

CCM

CWC(英語版)

EAX(英語版)

GCM

IAPM(英語版)

OCB(英語版)

攻撃

衝突攻撃(英語版)

原像攻撃

誕生日攻撃

総当たり攻撃

レインボーテーブル

サイドチャネル攻撃

伸長攻撃(英語版)

差分解読法

設計

アバランシェ効果(英語版)

ハッシュ衝突

Merkle?Damgard構成法(英語版)

標準化

CRYPTREC

NESSIE

NISTハッシュ関数コンベンション(英語版)

利用

ソルト

キーストレッチ(英語版)

メッセージ認証(英語版)

パスワードハッシュ関数

bcrypt

PBKDF2

scrypt

Argon2



カテゴリ:ハッシュ関数メッセージ認証コード認証付き暗号












暗号


暗号史

暗号解読

Cryptography portal

en:Outline of cryptography



共通鍵暗号

ブロック暗号

ストリーム暗号

暗号利用モード

公開鍵暗号

暗号学的ハッシュ関数

メッセージ認証コード

認証付き暗号

乱数生成器

ステガノグラフィー


カテゴリ


記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:10 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef