Closed4
ハッシュ化と暗号化の違いを理解する

目的
- ハッシュ化と暗号化をそれぞれ理解し、違いを説明できるようになること
背景
- 何となくハッシュ化と暗号化を混合して考えていたから
- 明確な違いを知りたいと思ったから

まずはそれぞれについて理解する
ハッシュ化とは?
- 特殊な計算方法を使用して、元のデータを不規則な文字列に変換する処理のこと。
- ハッシュ化をするアルゴリズムは「ハッシュ関数」と呼び、ハッシュ関数によって生成される文字列を「ハッシュ値」という。
- ハッシュ化されたデータは、元のデータに復号することが不可能(不可逆)であり、技術的に困難とされている
- そもそも元に戻すことを想定してない
入力値のデータに関わらず、決まった長さの文字列を出力する。
比較対象のものをそのまま比較すると時間がかかるので、ハッシュ関数を通してハッシュ値を計算した方が早く比較できる
ハッシュ関数にかける値が少しでも変わるとハッシュ値は大きく変わるので、入力元を推測することは非常に困難
活用例
- 電子署名
- 元データをハッシュ値として保管しておけば改竄を検出できる
- 電子メール
- メール本文からハッシュ値を生成すると改竄を検出できる
- メッセージ認証
- ブロックチェーン
ハッシュ関数の規格
ハッシュ化に使用されるハッシュ関数にも色々と規格がある
-
MD5
- 1991年に考案
- 128ビットの値を生成するハッシュ関数
- 🙅♀️セキュリティ面で推奨されてない
-
SHA-1
- 1995年に登場
- 🙅♀️セキュリティ面で推奨されてない
- 効率的に攻撃する手法がいくつか見つかっている
-
SHA-2
- 2001年に登場したハッシュ関数のファミリー
- SHA-224、SHA-256、SHA-384、SHA-512など色々と規格がある
- SHA-256とSHA-512がよく使用されている
- SHA-512が安全性が高い
-
SHA-3
- 2015年に公表された最新の規格
基本的にはSHA-256を使用すれば良さそうですね🙆♂️
ですがいつ脆弱性が見つかるかわからないので定期的に追っていく必要がありそう。
参考

暗号化とは?
情報を送る時に、盗聴されても解読できない形式に変換すること。
主にクライアントとサーバー間での通信、メールの送受信、VPNなど、ネットワークを跨いだ通信の中で使用される。(目的は盗聴やなりすましを防ぐことなので)
通信の結果でデータを復号する必要があるので、鍵の管理手法が大事になってくる
暗号化の手法
-
共通鍵暗号方式
- 暗号化と複合に共通の鍵を使用する
- 処理速度が速い
- 鍵自体が盗まれるとデータが読み取られ放題
-
公開鍵暗号方式
- 暗号化は公開鍵を使用して、複合には別の秘密鍵を使用する
- 処理は遅い
- データ受信者のみ複合できる秘密鍵を所持しているので安全性が高い
参考

要するに
データを元に戻せるか、元に戻せないかの違い
- ハッシュ化は元に戻せない(不可逆性)
- 暗号化は元に戻せる(可逆性)
あとは作られた目的を理解すれば腹落ちする。
- ハッシュ化はデータの改竄検知、整合性を確認する目的
- 暗号化はインターネットをデータが移動する際、盗聴やなりすましから保護する目的
このスクラップは2025/01/12にクローズされました