# 2023-11-08_SSL通信の脆弱性 --- 先生: 今日のレッスンではSSL通信とその脆弱性について学びましょう。まず、SSL通信が何か説明してみてください。 生徒A: SSLって、インターネットでデータを暗号化して安全に送受信する技術ですよね。HTTPSっていうのがその一種で。 先生: 正解です。それでは、SSL通信でデータを安全に送受信するプロセスを説明してみてください。ここで図を使うとわかりやすいでしょう。 ```mermaid sequenceDiagram participant クライアント participant サーバー クライアント->>サーバー: クライアントハロー(接続開始のリクエスト) Note over サーバー: SSL証明書と【空欄1】を送信 サーバー->>クライアント: 証明書と【空欄1】 クライアント->>クライアント: 証明書の検証 Note over クライアント: 【空欄2】(生成) クライアント->>サーバー: 暗号化された情報 サーバー->>サーバー: 【空欄3】(解読) サーバー->>クライアント: 暗号化された応答 ``` 先生: 【空欄1】を考えてみてください。 生徒B: SSL証明書と一緒に返すものだから【空欄1】でしょうか。 生徒A: 【空欄2】でクライアントはセッション鍵を生成して、それをサーバーの【空欄1】で暗号化するんですよね? 先生: 正解です。では【空欄3】は何でしょうか? 生徒B: サーバーは自分の秘密鍵でそれを…「【空欄3】」します! 先生: そうです、【空欄3】のところでセッション鍵を使います。さて、SSLの脆弱性にはどんなものがありますか? 生徒A: 一つは「ハートブリードバグ」です。これはオープンソースの暗号化ソフトウェアであるOpenSSLに見つかった脆弱性で、メモリの内容を盗み見られる恐れがあるんでしたっけ? 先生: 非常に良い。ではその他に何かありますか? 生徒B: 攻撃者が中間者攻撃を行い、交換される情報を傍受する「【空欄4】」も問題ですよね? 先生: その通りです。では、【空欄4】への対策として行われる手続きを図で示してください。 ```mermaid sequenceDiagram participant クライアント participant 攻撃者 participant サーバー クライアント->>+攻撃者: クライアントハロー 攻撃者->>+サーバー: クライアントハロー サーバー->>-攻撃者: 証明書と公開鍵 攻撃者-->>-クライアント: 攻撃者の証明書と公開鍵 クライアント->>クライアント: 証明書の検証 クライアント->>攻撃者: 暗号化された情報 攻撃者->>+サーバー: 攻撃者によって復号化・リエンクリプトされた情報 サーバー->>サーバー: 復号化 サーバー->>攻撃者: 暗号化された応答 攻撃者-->>クライアント: 暗号化された応答 Note over 攻撃者: 【空欄5】 ``` 生徒A: 【空欄5】には、「攻撃者が証明書の信頼性を偽装します」と入りますか? 先生: その表現はもう少し具体的にしましょう。どういったことが起こっているかを考えてください。 --- **空欄の答え:** 【空欄1】: クライアントハロー 【空欄2】: セッション鍵 【空欄3】: 復号化 【空欄4】: 中間者攻撃(MITM) 【空欄5】: 攻撃者が信頼できる認証局(CA)から発行された証明書に見せかける