OpenSSL Perfect Forward Secrecy

· 機能

sgcWebSockets 4.4.8 から、接続のセキュリティを向上させるためにライブラリにいくつかの小さな変更が加えられました。その 1 つが Perfect Forward Secrecy です。

RSA 鍵交換メカニズムを使用すると、サーバーの鍵ペアと、固有のセキュアセッションごとに作成されるセッションキーとの間にリンクが作成されます。そのため、攻撃者がサーバーの秘密鍵を入手できた場合、SSL セッションや保存された SSL セッションを復号できてしまいます。

対照的に、Perfect Forward Secrecy (PFS) を有効にすると、サーバーの秘密鍵と各セッションキーとの間にリンクがなくなります。攻撃者がサーバーの秘密鍵にアクセスできても、その秘密鍵を使ってアーカイブされたセッションを復号することはできません。これが「Perfect Forward Secrecy」と呼ばれる理由です。


Perfect Forward Secrecy を有効にする

TLS 1.2 接続で Perfect Forward Secrecy を有効にするには、以下のプロパティを有効にするだけです。

SSLOptions.OpenSSL_Options.ECDHE := True;

これにより、openSSL 1.0.2 ライブラリを使用している場合、TLS 1.2 接続で ECDHE が有効になります (1.1.1 では ECDHE はデフォルトで有効です)。ECDHE が有効になると、ライブラリは openSSL ライブラリに高セキュリティの暗号スイートのリストを渡します。

オンラインの https://entrust.ssllabs.com/ でセキュリティテストを実行すると、サーバーで ECDHE を有効にした後はセキュアな結果が得られます。

テストを通過したサーバーは openSSL 1.1.1 を使用し、TLS 1.2TLS 1.3 を許可しており、ECDHE も有効になっていました。