はじめに
暗号技術およびそれを活用したデジタル証明書であったり、それを更に活用した認証局、SSL/TLSの理解が曖昧だったのでその辺をざっと学習した記録を備忘録としてQiitaに残します。
あくまでメモくらいの感じなので誤った内容などございます。
要約
暗号化領域では、データの機密性、完全性、真正性を確保するために、秘密鍵、共通鍵、公開鍵といった鍵が用いられる。デジタル証明書、デジタル署名、認証局、SSL/TLSは、これらの鍵を活用して、安全な通信やデータのやり取りを実現する技術である。
アジェンダ
-
予備知識
- 秘密鍵、共通鍵、公開鍵
- 完全性と真正性
-
デジタル証明書/デジタル署名
- デジタル証明書
- デジタル署名
-
認証局
- 認証局の役割
- 認証局の仕組み
-
SSL/TLS
- SSL/TLSの役割
- SSL/TLSの仕組み
- まとめ
1. 予備知識
秘密鍵、共通鍵、公開鍵
-
秘密鍵 🔑:
- 自分だけが知っている鍵である。
- データの暗号化と復号の両方に使用される。
- 共通鍵暗号方式で使用される。
- 例:高校生が日記を鍵付きの箱に保管する場合、その箱を開けるための鍵が秘密鍵に相当する。
-
共通鍵 🔑🔑:
- 通信する双方が同じ鍵を共有する。
- データの暗号化と復号の両方に使用される。
- 共通鍵暗号方式で使用される。
- 例:高校生が友達と秘密のメッセージをやり取りする際に、同じ鍵を使って暗号化と復号を行う場合、その鍵が共通鍵に相当する。
-
公開鍵 🔓:
- 誰でも知ることができる鍵である。
- データの暗号化に使用される。
- 公開鍵暗号方式で使用される。
- 例:高校生が自分の住所を公開する場合、その住所が公開鍵に相当する。
-
公開鍵暗号方式:
- 公開鍵と秘密鍵のペアを使用する暗号方式である。
- 公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号できる。
- 秘密鍵で暗号化されたデータは、対応する公開鍵でのみ復号できる。
- 例:高校生が公開鍵を使って暗号化したメッセージを友達に送り、友達は自分の秘密鍵を使ってそのメッセージを復号する場合、これが公開鍵暗号方式の例である。
完全性と真正性
-
完全性 ✅:
- データが改ざんされていないことを保証することである。
- 例:高校生が書いたレポートが、提出前に誰かに書き換えられていないことを保証することが完全性の例である。
-
真正性 🆔:
- データが正しい送信者から送られたものであることを保証することである。
- 例:高校生がオンラインで商品を購入する際に、そのウェブサイトが本物であることを確認することが真正性の例である。
2. デジタル証明書/デジタル署名
デジタル証明書
-
デジタル証明書 📑:
- 公開鍵の所有者を証明する電子文書である。
- 認証局によって発行される。
- 公開鍵、所有者の情報、認証局の署名などが含まれる。
- 例:高校生が自分の身分を証明するために、学校から発行された学生証を使う場合、その学生証がデジタル証明書に相当する。
デジタル署名
-
デジタル署名 ✍️:
- データの完全性と真正性を保証するための技術である。
- 送信者は、自分の秘密鍵を使ってデータに署名する。
- 受信者は、送信者の公開鍵を使って署名を検証する。
- 例:高校生が重要な書類に自分の名前を署名する場合、その署名がデジタル署名に相当する。
デジタル署名の流れ
- 送信者 👦: メッセージ 📄 をハッシュ関数 ⚙️ に通してハッシュ値 🔢 を生成する。
- 送信者 👦: ハッシュ値 🔢 を自分の秘密鍵 🔑 で暗号化してデジタル署名 ✍️ を生成する。
- 送信者 👦: メッセージ 📄 とデジタル署名 ✍️ を受信者 👧 に送信する。
- 受信者 👧: メッセージ 📄 をハッシュ関数 ⚙️ に通してハッシュ値 🔢 を生成する。
- 受信者 👧: デジタル署名 ✍️ を送信者 👦 の公開鍵 🔓 で復号してハッシュ値 🔢' を得る。
- 受信者 👧: 4.で生成したハッシュ値 🔢 と 5.で得られたハッシュ値 🔢' を比較する。
- 受信者 👧: ハッシュ値が一致すれば、メッセージ 📄 は改ざんされておらず、送信者 👦 から送られたものであることが確認できる。
3. 認証局
認証局の役割
-
認証局 (CA: Certificate Authority) 🏢:
- デジタル証明書を発行する信頼された第三者機関である。
- 公開鍵の所有者の身元を確認し、デジタル証明書を発行する。
- 例:高校生がパスポートを取得する際に、政府機関がパスポートを発行する場合、その政府機関が認証局に相当する。
認証局の仕組み
- 申請者 👨: 公開鍵 🔓 と身元情報 🆔 を認証局 🏢 に提出する。
- 認証局 🏢: 申請者 👨 の身元を確認する。
- 認証局 🏢: 申請者 👨 の公開鍵 🔓 を含むデジタル証明書 📑 を作成する。
- 認証局 🏢: デジタル証明書 📑 に認証局の秘密鍵 🔑 で署名する。
- 認証局 🏢: デジタル証明書 📑 を申請者 👨 に発行する。
4. SSL/TLS
SSL/TLSの役割
-
SSL/TLS (Secure Sockets Layer/Transport Layer Security) 🔒:
- インターネット上でデータを安全に送受信するためのプロトコルである。
- データの暗号化、認証、完全性保証を提供する。
- ウェブブラウザとウェブサーバー間の通信などで使用される。
- 例:高校生がオンラインショッピングでクレジットカード情報を入力する際に、その情報が暗号化されて安全に送信される場合、SSL/TLSが使用されている。
SSL/TLSの仕組み
- クライアント 💻: サーバー 🖥️ に接続を要求する。
- サーバー 🖥️: サーバーのデジタル証明書 📑 をクライアント 💻 に送信する。
- クライアント 💻: デジタル証明書 📑 を検証し、サーバー 🖥️ の公開鍵 🔓 を取得する。
- クライアント 💻: 共通鍵 🔑🔑 を生成し、サーバー 🖥️ の公開鍵 🔓 で暗号化してサーバー 🖥️ に送信する。
- サーバー 🖥️: 共通鍵 🔑🔑 を自分の秘密鍵 🔑 で復号する。
- クライアント 💻 とサーバー 🖥️: 共通鍵 🔑🔑 を使ってデータを暗号化して通信する。
5. まとめ
秘密鍵、共通鍵、公開鍵は、データの機密性、完全性、真正性を確保するために重要な役割を果たす。デジタル証明書、デジタル署名、認証局、SSL/TLSは、これらの鍵を活用して、安全な通信やデータのやり取りを実現する技術である。これらの技術を理解することで、インターネットをより安全に利用することができる。