---
# System prepended metadata

title: 2023-11-08_SSL通信の脆弱性

---

# 2023-11-08_SSL通信の脆弱性

---

先生: 今日のレッスンではSSL通信とその脆弱性について学びましょう。まず、SSL通信が何か説明してみてください。

生徒A: SSLって、インターネットでデータを暗号化して安全に送受信する技術ですよね。HTTPSっていうのがその一種で。

先生: 正解です。それでは、SSL通信でデータを安全に送受信するプロセスを説明してみてください。ここで図を使うとわかりやすいでしょう。

```mermaid
sequenceDiagram
    participant クライアント
    participant サーバー

    クライアント->>サーバー: クライアントハロー(接続開始のリクエスト)
    Note over サーバー: SSL証明書と【空欄１】を送信
    サーバー->>クライアント: 証明書と【空欄１】
    クライアント->>クライアント: 証明書の検証
    Note over クライアント: 【空欄２】(生成)
    クライアント->>サーバー: 暗号化された情報
    サーバー->>サーバー: 【空欄３】(解読)
    サーバー->>クライアント: 暗号化された応答
```

先生: 【空欄１】を考えてみてください。

生徒B: SSL証明書と一緒に返すものだから【空欄１】でしょうか。

生徒A: 【空欄２】でクライアントはセッション鍵を生成して、それをサーバーの【空欄１】で暗号化するんですよね？

先生: 正解です。では【空欄３】は何でしょうか？

生徒B: サーバーは自分の秘密鍵でそれを…「【空欄３】」します！

先生: そうです、【空欄３】のところでセッション鍵を使います。さて、SSLの脆弱性にはどんなものがありますか？

生徒A: 一つは「ハートブリードバグ」です。これはオープンソースの暗号化ソフトウェアであるOpenSSLに見つかった脆弱性で、メモリの内容を盗み見られる恐れがあるんでしたっけ？

先生: 非常に良い。ではその他に何かありますか？

生徒B: 攻撃者が中間者攻撃を行い、交換される情報を傍受する「【空欄４】」も問題ですよね？

先生: その通りです。では、【空欄４】への対策として行われる手続きを図で示してください。

```mermaid
sequenceDiagram
    participant クライアント
    participant 攻撃者
    participant サーバー

    クライアント->>+攻撃者: クライアントハロー
    攻撃者->>+サーバー: クライアントハロー
    サーバー->>-攻撃者: 証明書と公開鍵
    攻撃者-->>-クライアント: 攻撃者の証明書と公開鍵
    クライアント->>クライアント: 証明書の検証
    クライアント->>攻撃者: 暗号化された情報
    攻撃者->>+サーバー: 攻撃者によって復号化・リエンクリプトされた情報
    サーバー->>サーバー: 復号化
    サーバー->>攻撃者: 暗号化された応答
    攻撃者-->>クライアント: 暗号化された応答
    Note over 攻撃者: 【空欄５】
```

生徒A: 【空欄５】には、「攻撃者が証明書の信頼性を偽装します」と入りますか？

先生: その表現はもう少し具体的にしましょう。どういったことが起こっているかを考えてください。

---

**空欄の答え:**

【空欄１】: クライアントハロー
【空欄２】: セッション鍵
【空欄３】: 復号化
【空欄４】: 中間者攻撃(MITM)
【空欄５】: 攻撃者が信頼できる認証局(CA)から発行された証明書に見せかける