SHA
Secure Hash Algorithm
SHA(セキュアハッシュアルゴリズム)とは
ひとことで
任意長のデータから固定長のハッシュ値を生成する関数群。SHA-1は非推奨で、SHA-256等のSHA-2以降が使われる。
たとえると
データの「指紋」です。どんなに大きなデータからも同じ長さの指紋が取れ、1文字でも変わるとまったく別の指紋になります。指紋から元の人を復元できないのと同じく、ハッシュ値から元のデータに戻すことはできません。
現場ではこう使う
管理者がOSのインストール用ファイルをダウンロードしたとき、配布サイトに掲載されたSHA-256のハッシュ値と、手元で計算したハッシュ値を比べました。値が一致しなかったため、ファイルが壊れているか改ざんされている可能性があると判断し、使わずに入手し直しました。
試験のポイント
EXAM POINTハッシュは「完全性(改ざんされていないか)」を確かめるもので、一方向なので暗号化とは違い元に戻せません。SHA-1やMD5は衝突(違うデータから同じハッシュ値ができること)が見つかっているため非推奨で、SHA-256などのSHA-2以降を選びます。ハッシュだけでは「誰が送ったか」は証明できないため、送信者の確認まで必要ならHMACやデジタル署名です。
混同しやすい用語との違い
- 暗号化鍵を使えば元のデータに戻せる(機密性のため)。ハッシュは元に戻せない
- HMACハッシュに共通鍵を組み合わせ、改ざんの検知に加えて送信者の正しさも確認できる
- MD5古いハッシュ関数で、衝突が見つかっているため非推奨