2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎯 1. はじめに

セキュリティ学習の最初の疑問になりやすい
「暗号化」と「ハッシュ化」。
似ているようでまったく役割が違います。

この記事では、初心者向けにイメージ図を使いながら わかりやすく解説します。

📌 2. この記事で学べること

  • 暗号化とは?

  • ハッシュ化とは?

  • 役割・用途の違い

  • ソルト(Salt)とは?

  • 実務でどのように使われているか

🔒 3. 暗号化とは?

✔️ データを「読めない形」にし、後で元に戻せる技術

暗号化の最も重要なポイントは、

復号(元に戻す)ができる

という点です。

🔑 暗号化のイメージ図

🔧 暗号化方式

🔑 共通鍵暗号方式(対称鍵暗号)

✔ 特徴

  • 暗号化と復号に同じ鍵を使う

  • 処理が高速で、大量データに向いている

  • 鍵を共有する必要があるため、鍵の受け渡しが最大の課題

🧰 代表例

  • AES(現在の標準)

  • DES(古い・非推奨)

  • ChaCha20

❗ デメリット(特に重要)

鍵の受け渡しを安全に行うのが難しい
鍵が盗まれる と全てのデータが読まれる

多人数で使うと鍵管理が爆発的に複雑になる

🔐 公開鍵暗号方式(非対称鍵暗号)

✔ 特徴

  • 公開鍵で暗号化

  • 秘密鍵で復号

鍵がペアになっており、
公開鍵は名前の通り 公開してOK
秘密鍵は 絶対に漏らしてはいけない

🧰 代表例

  • RSA

  • ECC(楕円曲線暗号)

  • ElGamal

👍 メリット

  • 鍵の受け渡し問題が解消
     → 公開鍵を誰に配っても安全

  • インターネットの暗号化通信(TLS/HTTPS)に必須

  • デジタル署名も可能
    (秘密鍵で署名 → 公開鍵で検証)

❗ デメリット

  • 共通鍵暗号より 処理が遅い
    → 通信では 「鍵交換」 にだけ使う
    → 実際の データ暗号化AES(共通鍵暗号) が使われる

🔒 2つの方式はどう使い分けられているのか?

結論:

  • 公開鍵暗号:鍵交換・署名
  • 共通鍵暗号:データの本番暗号化

📝 HTTPS では

  • 公開鍵暗号 → 共通鍵を安全に届ける

  • 共通鍵暗号 → 通信の高速な暗号化
    という 「ハイブリッド方式」 を採用しています。

🧂 4. ハッシュ化とは?

✔️ 元に戻せない、一方向の変換

ハッシュ化は暗号化と違い、

絶対に元には戻せない

という特徴を持ちます。

🧮 ハッシュ化のイメージ図(mermaid)

🧂 なぜソルト(salt)が必要?そもそもソルトとは?

パスワードのハッシュ化では、同じパスワードでも 違うハッシュ値 にする必要があります。

そのために利用するのが ソルト(salt)。

ソルトのイメージ図(mermaid)

  • ソルトを使うことで、レインボーテーブル攻撃対策 になります。

「同じパスワードでも同じハッシュ値にならない」というメリットがあります。

レインボーテーブル攻撃とは?
あらかじめ大量の「パスワード → ハッシュ値」の対応表を作っておき、ハッシュ値から元のパスワードを逆算する攻撃です。

🧮 よく使われるハッシュ関数

  • SHA-256

  • SHA-512

  • bcrypt(パスワード向け)

  • Argon2(現在の推奨)

🔑 5. 暗号化とハッシュ化の違い(図で理解)

✔ 両者の役割を比較

✔ 表で比較すると一目でわかる

項目 暗号化 ハッシュ化
復号 できる できない
主な用途 通信の安全性 パスワード保存、改ざん検知
入力 可変長 可変長
出力 可変 or 固定 固定長
代表技術 AES / RSA SHA-256 / bcrypt / Argon2

🔍 6. パスワードを「暗号化しない」理由

よくある疑問:「データを守るなら暗号化すればいいのでは?」

しかし、パスワードに暗号化を使うのは危険です。

理由:

暗号化は 復号できる → 攻撃者も復号できてしまう

運用中の鍵が漏れると全パスワードが復元される

そのため、

✔ パスワードは ハッシュ化+ソルト+ストレッチング
※ ストレッチングとはハッシュ化処理を繰り返すこと

これが世界的なベストプラクティスです。

🧭 7. 実務での利用例

🛡️ 改ざん検知

「ファイルやデータが書き換えられていないか」を確認する仕組みです。

🔐 通信の暗号化(HTTPS)

🔑 パスワード保存(ハッシュ+ソルト)

📝 8. まとめ

  • 暗号化は 「読めないようにして、元に戻せる」 技術

  • ハッシュ化はハッシュ関数を利用した 「元に戻せない」 技術

  • 暗号化 → 通信・情報秘匿

  • ハッシュ化 → パスワード保存・改ざん検知

  • パスワードには ハッシュ化+ソルト+ストレッチング が必須

セキュリティの基礎として、まずここを理解しておくと
今後の学習がスムーズになります。

🏁 9. おわりに

最後までご覧いただきありがとうございました。これからもいろいろな初心者向けの記事を作成していきますでの、よろしくお願いします。
よかったら他の記事もご覧いただけると嬉しいです。今後もよろしくお願いいたします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?