ハッシュと暗号化の違い:照合と機密性を分けて考える
セキュリティの説明で「暗号化」という言葉が、データを読めなくするあらゆる処理の意味で使われることがあります。
しかし、ハッシュ、暗号化、エンコードは目的も性質も異なります。
ハッシュが得意なこと
ハッシュ関数は、入力から一定長の値を計算します。
同じ入力なら同じ値になる性質を使い、受け取ったデータが想定したものと一致するかを確認できます。
ハッシュは復号して元の値を取り出すための仕組みではありません。
暗号化が守るもの
暗号化は、鍵を持つ正当な相手だけが内容を読めるようにするための仕組みです。
機密性を守るには、方式だけでなく、鍵の生成、保管、利用者の権限、復号できる場所を設計する必要があります。
データが改ざんされていないことを確かめる仕組みと、秘密として読めないようにする仕組みは、同じ問いに答えていません。
パスワードを扱う場合
パスワードは元の文字列を復元する前提で保存するものではありません。
専用のパスワードハッシュ方式と、利用者ごとに異なるソルトを使い、照合時に同じ計算を行う設計が使われます。
一般的な高速ハッシュや、Base64による表現変換をその代わりにしてはいけません。
CTFでの学び方
問題に出てくる値について、元に戻す必要があるのか、候補と照合するのか、鍵が与えられているのかを先に分けます。
実在する認証情報を対象に試さず、演習用の値だけで性質を確認してください。
Base64とエンコードの基礎、暗号カテゴリ、暗号CTF入門へ進めます。