暗号化とハッシュ化
暗号化とは
あるデータをアルゴリズムを使用して、データの内容を第三者には分からなくする方法です。
暗号化されたデータは、アルゴリズムを使用して元のデータに戻すことができます。
代表例はパスワードを入力して表示されるzipファイルがあげられます。
ハッシュ化とは
ハッシュ化はあるデータをアルゴリズムを使用して、データの内容を第三者には分からなくするという点では暗号化と同じです。
暗号化との違いは、ハッシュ化されたデータは元のデータに戻すことができないことです。
代表例はWEBサービスのユーザーログイン処理
ハッシュ化の種類
1)MD5
広く用いられてきたハッシュ関数で、128ビットの長さのハッシュ値を、高速に出力できるのが特長である。チェックサムによる改ざんの確認に用いられる場面が多い。
2)SHA-1
1995年に発表された規格で、160ビットのハッシュ値を生成する。異なるデータからハッシュ値が同じになることを利用した衝突攻撃のリスクがあるため、現在は利用が推奨されていない。
3)SHA-2
SHA-1を改良し、2001年にNIST(米国標準技術研究所)によって標準化された規格である。ハッシュ値の長さに応じて、SHA-224、SHA-256、SHA-384、SHA-512が定義されている。ハッシュ値が長ければ長いほど安全性が高いとされ、最近はSHA-256やSHA-512が主流となっている。
4)SHA-3
SHA-2よりも安全性を向上させるために、2015年に公開された後継の規格となる。「SHA」との名称を引き継いでいるものの、内部構造などが異なるなど、SHA-2とは別系統として設計されているのが特徴とされる。今後、SHA-3の利用が増えていく可能性が見込まれている。
ソルト
例にあげたハッシュ化だけでは対策としては不十分です。レインボーテーブル攻撃に対しての脆弱性があります。そのため、ソルトという手法を使います。ソルトとは、平文からハッシュ化を行う前に、平文にある文字列を追加する手法です。