暗号技術の基礎と応用
TLSで、サーバの証明書の秘密鍵が後で漏えいしても、それ以前に記録された通信は復号されないという性質(前方秘匿性)が得られる鍵交換の方法はどれか。
- A接続ごとに使い捨ての値を作って行う、ECDHEなどの鍵交換
- Bクライアントが作った鍵の材料を、サーバの証明書のRSA公開鍵で暗号化して送る方式
- Cサーバとクライアントが、あらかじめ決めた同じ共通鍵を、すべての接続で使い続ける方式
答えと解説を見る
正解:A. 接続ごとに使い捨ての値を作って行う、ECDHEなどの鍵交換
ECDHEの最後のEはエフェメラル(使い捨て)の意味で、接続ごとに新しい秘密の値で鍵交換をし、終わったら捨てます。証明書の秘密鍵は署名に使うだけなので、後で漏れても、過去の接続の共有の秘密は計算できません。一方、鍵の材料をサーバのRSA公開鍵で暗号化して送る方式では、記録しておいた通信と、後で漏れた秘密鍵があれば、過去の通信をすべて復号できてしまいます。TLS 1.3ではこの方式が廃止され、鍵交換は前方秘匿性のある (EC)DHE が基本になりました(事前共有鍵だけで接続を再開する場合を除きます)。
- A. 正しい。使い捨ての秘密の値は残らないので、過去の共有の秘密を計算し直せません。
- B. RSAによる鍵の輸送では、秘密鍵が漏れると過去の通信も復号されます。TLS 1.3では廃止されました。
- C. 固定の鍵が漏れれば、過去の通信もこれからの通信も、すべて読まれてしまいます。