暗号化
Encryption
大切なデータを、第三者が読めないように特別なルール(アルゴリズム)で変換すること。正しい「鍵」を持った人だけが元の状態に戻して(復号して)中身を読むことができるセキュリティの基本技術。
🐾 猫で例えると?
前脚で顔を隠すアメショを、「そのままでは中身が見えない状態」に見立てます。ITの暗号化は表示を隠すだけでなく、鍵とアルゴリズムでデータそのものを変換します。ぼかし、伏せ字、Base64等の符号化は暗号化とは別のものです。
💻 IT現場における「暗号化」とは?
インターネットの世界では、データは常に「誰かに覗き見されるかもしれない危険な道(ネットワーク)」を通って目的地まで運ばれます。もしパスワードやクレジットカード番号がそのままの文字(平文)で送られれば、途中で悪意のある人に盗み見られた瞬間に大きな被害が出てしまいます。
HTTPSではTLSを使い、ブラウザと接続先の間で通信内容の秘匿や改ざん検出を行います。接続先で復号された後の保存方法まで保証するものではないため、保存時の暗号化やアクセス権は別に設計します。
⚠️ 暗号化の仕組みと注意点
暗号化の技術には、大きく分けて「共通鍵暗号方式」と「公開鍵暗号方式」の2種類があります。
1. 共通鍵暗号方式
暗号化する時と、元に戻す(復号する)時に「同じ鍵」を使うシンプルな方式です。処理が速いメリットがありますが、鍵を相手に渡す途中で盗まれると中身が見られてしまうという弱点があります。
2. 公開鍵暗号方式
異なる鍵を対にして使います。暗号化の用途では公開鍵で暗号化し、対応する秘密鍵で復号する方式があります。公開鍵技術には署名や鍵共有の用途もあり、どれも「公開鍵で暗号化する」という同じ処理ではありません。
// よく使われる暗号化アルゴリズムの例
AES (Advanced Encryption Standard) : 現在最も普及している強力な共通鍵暗号方式
RSA : インターネット通信で広く使われる公開鍵暗号方式 通信では、公開鍵技術で相手の認証や鍵の共有を行い、本文は共通鍵方式で保護するなど役割を分担します。実装時は標準プロトコルと保守されたライブラリを使い、暗号方式名だけで安全性を判断しません。
🛠️ 暗号化を賢く使うためのポイント
暗号化をシステムに組み込む際は、以下のポイントを押さえておくことが重要です。
- 認証付き暗号を適切に使う: データの秘匿だけでなく改ざん検出も必要です。AES-GCM等を利用する場合も、同じ鍵でnonceを再利用しないなど、ライブラリの要件を守ります。
- 鍵の保管と利用権限を確認する: どんなに強力な暗号化を施しても、元に戻すための「鍵」が漏れたら意味がありません。パスワードを付箋に書いてPCに貼るような物理的な鍵の漏洩にも注意が必要です。
- 暗号化とハッシュ化の違いを理解する: 暗号化は「後で元に戻せる」のが特徴ですが、パスワードの保存など「元に戻す必要がない(戻せてはいけない)」場合は、不可逆な変換である「ハッシュ化」を使います。
顔を前脚で隠すアメショのように、暗号化はデータの中身を読みにくくするための仕組みです。ただし、復号鍵をデータと一緒に公開してしまえば保護できません。通信中と保存中のどちらを守るのか、誰が鍵を使えるのかまで決めて運用しましょう。