ハッシュ値
ハッシュ値とは
ハッシュ値とは、ある入力データを規定のアルゴリズムで処理し、出力された規定長の文字列のこと。
ハッシュ値を求めるための関数をハッシュ関数と呼ぶ。
ハッシュ値の特徴
ハッシュ値の主な特徴は以下の3点。
- ハッシュ値から元の入力データを復元できない。(この性質を不可逆性という)
- 入力データがどんな長さであっても、出力するハッシュ値のデータサイズは固定長となる。
- 入力データが似た文字列であっても、全く異なるハッシュ値が生成される。
ハッシュ関数の種類
主なハッシュ関数の種類は以下の通り。
関数名 | 概要 | ハッシュ長 | 公開年 |
---|---|---|---|
MD5 (Message Digest Algorithm 5) | 現在は脆弱のため利用は非推奨。 | 128bit | 1991年 |
SHA-1 (Secure Hash Algorithm 1) | 現在は脆弱のため利用は非推奨。 | 160bit | 1995年 |
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: 384bit | 2001年 |
SHA-3 (Secure Hash Algorithm 3) | 2015年 | ||
AHS |
メッセージ認証コード(MAC)とは
メッセージ認証コード(MAC:Message Authentication Code)とは、受信したメッセージの完全性(偽造・改竄・破壊がないこと)をチェックする符号のこと。
ハッシュ関数のみを利用した場合、改竄は検知可能だが、なりすましは検知できない。
改竄検知に加えて送信者のなりすましを検証する場合、メッセージ認証コードを用いる。
メッセージ認証コードの生成アルゴリズムは、以下に分類される。
種類 | 概要 |
---|---|
CMAC (Cipher-based MAC) | 共通鍵暗号方式の中のブロック暗号を利用する。 |
HMAC (keyed-Hashing MAC) | メッセージ+秘密鍵をハッシュ関数で変換する。 内容認証ができる。 |