OpenSSL 4.1.0の新機能・削除機能・残る不具合

OpenSSLプロジェクトはバージョン4.1.0をリリースし、DTLS 1.3への対応を追加しました。一方で、同梱されるDTLSコードには既知のバグが4件あることも明らかにしています。DTLSはUDPなどのデータグラム転送向けに設計されたTLSの派生プロトコルで、バージョン1.3はRFC 9147で定義されています。

Image

これらのバグの影響を受けるのは、DTLS 1.3を採用する開発者や、OpenSSLのSSLリスナーAPIに新たに加わったDTLSサポートを利用する開発者です。うち2件は、アプリケーションが接続状態を誤認する原因になり得ます。DTLSリスナーで恒久的な受信障害が発生しても、プログラムにさらなるデータの待機を促すコードであるSSL_ERROR_WANT_READとして通知されることがあります。さらに、ポーリングやその後のacceptの呼び出しでもエラーを検知できない場合があり、アプリケーションが切断済みの接続を待ち続けるおそれがあります。また、ノンブロッキングで受け付けた接続で再試行可能な書き込み失敗が起きると、SSL_ERROR_SYSCALLとして通知されることがあります。このコードを致命的エラーとして扱うアプリケーションは、まだ正常に使える接続を閉じてしまう可能性があります。

ハンドシェイクとチケットが失われる可能性

DTLS 1.3サーバーは、クライアントが応答する前にサーバーの最初のフライトの一部または全部を確認応答(ACK)すると、unexpected_messageアラートでハンドシェイクを中断することがあります。この状況はパケットロスの後に起こり得ます。

4件目のバグはKeyUpdateに関するものです。KeyUpdateは、セッションの途中で新しい暗号鍵に切り替えるためにピアが送信するメッセージです。OpenSSLはKeyUpdateを受信すると、ハンドシェイク後の未処理レコードをすべて再送バッファから破棄します。クライアントが後でセッションを再開できるようにするNewSessionTicketが最初の送信で失われた場合、OpenSSLはこれを再送しません。プロジェクトはこのバグの修正を進めていますが、残る3件については修正状況を示していません。DTLS 1.3サーバーを運用している場合は、4件すべてを前提に計画を立てる必要があります。

本来の役割を果たしていなかったビルドフラグ

OpenSSLは、Configureからno-ecdsaとno-ecdhのオプションも削除しました。これらは名前が示す実装を実際には無効化していなかったためです。いずれかのフラグを指定してビルドしても、除外するはずのコードが残っていました。プロジェクトは代わりに、楕円曲線のサポートをすべて無効にするno-ecを使うよう案内しています。

ほかにも、既存の環境が動作しなくなる可能性のある変更が2つあります。OpenSSLはWindows-on-ItaniumとWindows CEのビルドターゲットを廃止しました。また、タイムスタンプ用ユーティリティのtsgetは、メンテナンスが止まったWWW::Curl::Easyに代わり、Perlモジュール Net::Curl::Easyを必要とするようになりました。tsgetを使っている場合は、アップグレード前に新しいモジュールをインストールしてください。

ポスト量子暗号の演算を高速化

ポスト量子の鍵交換・署名アルゴリズムであるML-KEMとML-DSAは、ppc64leでNTT演算が最適化されました。ML-DSAにはx86_64向けの改良も加わり、AVX-512 SHAKE x4のコードも含まれます。x86_64でのAES-CBC復号も、AVX-512とVAESによる最適化が入りました。このリリースではさらに、RFC 8701のGREASEが追加されました。GREASEはハンドシェイクでランダムな予約値を送信し、未知の値を適切に扱えないサーバーを洗い出す仕組みです。このほか、IKEv2の鍵導出関数と、Elbrus2000アーキテクチャへの初期対応も加わっています。

DTLS 1.3のガイドは、マニュアルページossl-guide-dtlsv13(7)として提供されます。DTLSリスナーから接続を受け付けるコードでは、OpenSSLがこの2件のバグを修正するまで、SSL_ERROR_WANT_READやSSL_ERROR_SYSCALLを額面どおりに受け取らないようにしてください。

翻訳元: https://www.helpnetsecurity.com/2026/10/26/openssl-4-1-0-released/

本記事は helpnetsecurity.com の記事を翻訳・要約したものです。