ハッシュ関数
可変長のデータや文字列を入力すると一意に決まる固定長のデータ列(128, 160 bit) を出力するが、入力値が一文字でも違うと全く異なるハッシュ値(メッセージダイジェスト)になる特徴がある
出力されたハッシュ値から元の値を算出できない
性質
ハッシュ値から元の入力データの内容を推測できない
元のデータの一部を変更するとハッシュ値が大きく異る
同じハッシュ値になる入力データを見つけるのは困難
応用
パスワードの保存
デジタル証明書
改ざん検知
ワンタイムパスワード
通信相手は正しいのか、受け取った情報は改ざんされていないかを検査するために使われるのがハッシュ関数
代表的なハッシュ関数
MD5
SHA
RIPEMD
TLS では、ハッシュを偽造できないように共通鍵とハッシュを組み合わせた HMAC を通信データに付加することで完全性検証と認証を行っている
認証付き暗号を使っている場合 HMAC は不要