ハッシュ値

ハッシュ値とは

ハッシュ値とは、ある入力データを規定のアルゴリズムで処理し、出力された規定長の文字列のこと。
ハッシュ値を求めるための関数をハッシュ関数と呼ぶ。
 

ハッシュ値の特徴

ハッシュ値の主な特徴は以下の3点。
 
  • ハッシュ値から元の入力データを復元できない。(この性質を不可逆性という)
  • 入力データがどんな長さであっても、出力するハッシュ値のデータサイズは固定長となる。
  • 入力データが似た文字列であっても、全く異なるハッシュ値が生成される。
 

ハッシュ関数の種類

主なハッシュ関数の種類は以下の通り。
関数名概要ハッシュ長公開年
MD5 (Message Digest Algorithm 5)現在は脆弱のため利用は非推奨。128bit1991年
SHA-1 (Secure Hash Algorithm 1)現在は脆弱のため利用は非推奨。160bit1995年
SHA-2 (Secure Hash Algorithm 2)SHA-224, SHA-256, SHA-384, SHA-512の総称。 SSL/TLS サーバー証明書に利用されている。 出力値が256bit以上が推奨される。SHA-224: 224bit SHA-256: 256bit SHA-384: 384bit2001年
SHA-3 (Secure Hash Algorithm 3)2015年
AHS
 

メッセージ認証コード(MAC)とは

メッセージ認証コードMAC:Message Authentication Code)とは、受信したメッセージの完全性(偽造・改竄・破壊がないこと)をチェックする符号のこと。
 
ハッシュ関数のみを利用した場合、改竄は検知可能だが、なりすましは検知できない。
改竄検知に加えて送信者のなりすましを検証する場合、メッセージ認証コードを用いる。
 
メッセージ認証コードの生成アルゴリズムは、以下に分類される。
種類概要
CMAC (Cipher-based MAC)共通鍵暗号方式の中のブロック暗号を利用する。
HMAC (keyed-Hashing MAC)メッセージ+秘密鍵をハッシュ関数で変換する。 内容認証ができる。