下記のTweetについて考えていた。

ポイントは前方匿名性。

RSA暗号

ChatGPTに聞いてみた。

RSA暗号とは、公開鍵暗号の一種であり、秘密鍵と公開鍵を使用してデータを暗号化および復号化することができる暗号アルゴリズムです。RSAは、Rivest, Shamir, Adlemanの3人の名前にちなんで名付けられました。

RSA暗号では、公開鍵と秘密鍵の2つの鍵を使用してデータを暗号化および復号化します。公開鍵は、誰でも使用することができる鍵であり、秘密鍵は、所有者しか知らない鍵です。データを暗号化するときには、公開鍵を使用して暗号化し、復号するときには、秘密鍵を使用して復号します。

RSA暗号のセキュリティは、大きな素数を素因数分解することが困難であることに基づいています。RSA暗号では、公開鍵と秘密鍵の生成に素数が使われます。非常に大きな素数を使用することで、暗号を解読することが非常に困難になります。

RSA暗号は、オンラインバンキングや電子メールなどのセキュアな通信に使用されています。しかし、量子コンピューターの発展によって、RSA暗号が破られる可能性があることが指摘されています。このため、より強力な暗号アルゴリズムの開発が求められています。

前方秘匿性(forward secrecy)

前述のように推奨される鍵交換の方法は、RSAから使い捨てDiffie Hellman系に変わりました。理由は、RSAが持たない前方秘匿性(forward secrecy)を使い捨てDiffie Hellman系が持つからです。前方秘匿性とは、将来に渡ってデータの秘匿性が守られることです。

鍵交換にRSAを用いると、前方秘匿性がない理由を考えましょう。クライアントがサーバにTLSで接続すると、サーバはクライアントに証明書を送ります。証明書とは、認証局の署名が付いたサーバの公開鍵のことです。クライアントは、サーバと共有すべき秘密を生成し、サーバのRSA公開鍵で暗号化してサーバに送ります。この暗号文を復号できるのは、RSA秘密鍵をもっているサーバのみです。これで、クライアントとサーバは秘密が共有できましたので、この秘密から生成される鍵を使い、共通鍵暗号で通信路を保護します。

一方、使い捨てDiffie Hellman系では、クライアントとサーバが、お互いに使い捨ての公開鍵と秘密鍵を生成します。これらの秘密鍵はディスクに保存されることはないので、前述のようなことは起こりません。

3.技術トレンド | Internet Infrastructure Review(IIR)Vol.31 | IIJの技術 | インターネットイニシアティブ(IIJ)

RSA暗号と前方秘匿性

ChatGPT says:

RSA暗号には前方秘匿性がありません。これは、RSA暗号において、秘密鍵が漏洩すると、これまでに送信された暗号化されたメッセージを解読できてしまうためです。つまり、秘密鍵が漏洩すると、それまでに送信されたすべてのメッセージが解読されてしまうため、前方秘匿性を持たないと言われています。

一方、前方秘匿性を持つ共通鍵暗号では、秘密鍵の漏洩によって過去に送信されたすべてのメッセージを解読されることはありません。これは、共通鍵が定期的に変更されるため、過去の共通鍵で暗号化されたメッセージを解読することができないためです。

楕円曲線ディフィー・ヘルマン鍵共有

楕円曲線ディフィー・ヘルマン鍵共有(だえんきょくせんディフィー・ヘルマンかぎきょうゆう、英: Elliptic curve Diffie–Hellman key exchange, ECDH)は、事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする、公開鍵暗号方式の暗号プロトコルである。両者で共有した秘密の値はそのまま、あるいは何かしらの変換をかけて、共通鍵暗号の鍵として用いることができる。 ディフィー・ヘルマン鍵共有を楕円曲線を使うように変更した、楕円曲線暗号の一つである。

楕円曲線ディフィー・ヘルマン鍵共有 - Wikipedia