教えてください。

エンジニアさん  
(No.1)
H29 秋-sc 午後1問3の設問3 (3)を教えてください。
TLSの通信を行う際、サーバの秘密鍵が危殆化した場合、過去の通信含め復元されるかどうかを問う問題です。
回答は[過去の通信データもすべて復元される恐れがある。]となっていますが、なぜでしょうか。

サーバの秘密鍵を取得しただけではプリマスタシークレットは取得できても、共通鍵を作成する際の乱数が不明なため共通鍵は作成できない認識です。そのため、通信データは復号できないと考えています。

TLSの動作の理解に誤りがあるでしょうか。
どなたか教えていただけると幸いです。
2021.08.12 00:39
かかさん 
(No.2)
攻撃者は暗号化された共通鍵を奪っているので、秘密鍵がバレた時点で共通鍵も複合可能です。

2021.08.12 08:24
とっさんさん 
(No.3)
SSL/TLSで利用するハイブリッド暗号方式は通信時に、
①共通鍵で暗号化したデータ
②公開鍵で暗号化した共通鍵
を送信しますが、
秘密鍵が危殆化(=鍵情報が解読されてしまった)すると、「過去通信した①と②を保有していた」場合に、復号される可能性があるためだと思います。
2021.08.12 08:38
エンジニアさん  
(No.4)
ご回答ありがとうございます。
共通鍵がわかればデータの復号はもちろん可能だと思います。
ただ、秘密鍵だけでは共通鍵を作成できないのでは?と考えています。

TLSにおける共通鍵の作成フロー(必要な要素)を教えていただけませんか。
2021.08.12 09:48
とっさんさん 
(No.5)
(ご質問にきちんと回答できているかわかりませんが)攻撃者が過去の①と②を保有している前提で、危殆化した状態の②を復号できれば、その時点で共通鍵を入手できるので、①が復号ができると思います。
そのため、
>ただ、秘密鍵だけでは共通鍵を作成できないのでは?と考えています。
作成するということではなく、通信時にクライアント側で共通鍵を作成し、事前に共有された公開鍵で当該共通鍵を暗号化し、①と②をデータ受信側に送信するものと思います。
2021.08.12 10:24
かかさん 
(No.6)
攻撃者はすでにサーバーの公開鍵で暗号化された共通鍵を持っています。
サーバーの秘密鍵さえ分かれば共通鍵は復号できます。
2021.08.12 10:42
エンジニアさん  
(No.7)
とっとさん
ありがとうございます。
当該問題は②を持っている前提でしょうか。問題文からはそう読み取れなかったので、、

また、②があればプリマスタシークレットは取得可能ですが、プリマスタシークレットからマスタシークレットを生成するには乱数が必要かと思います。この問題の場合、この乱数は所持している前提でしょうか。

質問ばかりで恐縮です。

2021.08.12 14:06
昭和62年さん 
(No.8)
手持ちの本には下記のように説明されていました。

マスタシークレットの生成
・プリマスターシークレット
・"master secret"
・client_random + server_random ※

キーブロックの生成
・マスタシークレット
・"key expansion"
・server_random + client_random ※

※順番が逆であることに注意
→順番が影響するということは、連結するのでしょうか???

得られたキーブロックを6つに切り分ける
・client_write_MAC_secret
・server_write_MAC_secret
・client_write_key
・server_write_key
・client_write_IV
・server_write_IV
各項目のビット長はネゴシエートした暗号スイートに依存。

肝心の乱数についてですが....
client_random は、TLSの client_hello メッセージに
server_random は、TLSの server_hello メッセージに
それぞれ含まれているものです。

結論
TLSのネゴシエーション段階からキャプチャしておけば、
共通鍵を再生成できるので暗号文を復号できます。

実際にWiresharkでも秘密キーを与えるだけで、https通信を平文で表示してくれます。
2021.08.12 14:38
かかさん 
(No.9)
>当該問題は②を持っている前提でしょうか。

「攻撃者は、WebブラウザとWebサーバの通信経路上におり、危殆化前後における通信データを取得していたものとする。」

問題文に上記記載があり、これが質問への回答となります。
2021.08.12 14:58
エンジニアさん  
(No.10)
皆さん

丁寧なご回答ありがとうございます。
わからなかった点が理解出来ました。
合格目指してますますの勉強に励みます!
本当にありがとうございました!

2021.08.12 16:26
受験生さん 
(No.11)
横やりすいません。
SSL/TLS通信において、「クライアントサーバ間の暗号化通信における共通鍵をサーバの公開鍵で暗号化」して共有しているという、言わばハイブリッド暗号方式を用いているという認識の方がここに大勢いらっしゃるみたいなのですが、

私の認識は
①クライアントおよびサーバを認証後、お互いに生成した乱数を送りあう(暗号化されていない)
②クライアントがプレマスタシークレットを生成し、サーバ証明書に含まれているサーバの公開鍵で暗号化してサーバに送信
③送りあった乱数とプレマスタシークレットを用いて、『お互いが同じ共通鍵を生成する』

以上のようなものです。
暗号化通信に用いている共通鍵をやりとりしていません。私の認識が間違っているのでしょうか。
2021.09.09 00:32

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop