ハッシュとは
現代暗号には、「共通鍵暗号」「公開鍵暗号」「ハッシュ暗号」があります。
以前の記事では、「共通鍵暗号」「公開鍵暗号」についてそれぞれ説明し、
メリットおよびデメリットを紹介しました。
今回は、「ハッシュ」についてご説明します。
ハッシュ暗号の特徴
「ハッシュ暗号」では、「共通鍵暗号」「公開鍵暗号」のように、
複号して元のメッセージを読み取ることをしません。
つまり、暗号化のみの操作となります。
平文が1文字変わるだけで暗号文が大きく変わるという特徴があり、
一般的には
MD5(Message Digest 5)や、
SHA-1(Secure Hash Algorithm)
という関数が使われます。
前者は元の文から128bitの値を生成し、後者は160bitの値を生成します。
なぜ復号をしないのか。
これは、ハッシュを使う目的に関わってきます。
ハッシュ暗号化の目的
ハッシュの目的は何か。
それは、
「データが壊れていないかどうかのチェック」です。
他にも、
「通信経路上で改ざんがないかどうか」
「送信元が妥当かどうか」
のチェックにも使われます。
たとえば、Webサイトからダウンロードしたファイルが壊れていないかどうかを確認する時、
ハッシュが使われます。
ダウンロードファイルとともに、そのハッシュ値を公開しておけば、
実際にダウンロードした人がその値と合致するかどうかチェックすることで、
内容が正しいかどうかをチェックすることができるのです。
また、Webサイトのパスワード保存にも使われます。
IDやパスワード情報を、そのままデータベースに保存するのではなく、
それらから生成されるハッシュ値を保存しておくことで、
仮にデータベースがクラックされて情報が流出しても、
ハッシュ値だけが盗まれるので何ら害はありません。
このように、一方向の暗号化を目的とした関数を「ハッシュ」と呼びます。