※ 本記事は、Vikram Pesati, Yi Ouyangによる”Adopting TLS 1.3, Post-Quantum Cryptography, and FIPS 140-3 Mode in Oracle Database 19c“を翻訳したものです。
2026年11月4日
Oracle Database 19c Release Update 19.32では、新しい暗号プロバイダーを通じてTLS 1.3、耐量子暗号(PQC)、FIPS 140-3モードのサポートが導入されました。本記事では、既存のTLS 1.2クライアントとの互換性を維持しながら、新プロバイダーに移行する方法を説明します。
大きな違いは、LegacyとNext Generationという2つのプロバイダーをサポートし、相互に切り替えられる暗号プロバイダーフレームワークの導入です。Next Generationは、TLS 1.2と1.3、PQC鍵交換、FIPS 140-3をサポートします。また、TLS 1.0やTLS 1.1など、古いTLSプロトコルのサポートを廃止しています。
TLS 1.3は、TLS 1.2と比べてハンドシェイクの往復を減らし、接続確立のオーバーヘッドを削減できます。導入するには、データベースサーバーにRelease Update 19.32を適用し、新しい暗号プロバイダーに切り替えるだけです。TLS 1.2、TLS 1.3、耐量子暗号(PQC)のハイブリッド鍵交換がデフォルトで利用できます。サーバーは引き続きTLS 1.2をサポートするため、TLS 1.2のクライアントを直ちに更新する必要はありません。コンプライアンス要件に応じて、FIPS 140-3も有効化できます。
Next Generation暗号プロバイダーに切り替える
Release Update 19.32を適用した後も、従来の動作を維持するため、Legacyプロバイダーがデフォルトのままです。
新しい暗号プロトコルをサポートするには、Next Generationプロバイダーに切り替えます。まず、データベースインスタンスをシャットダウンし、リスナーを停止します。次に、Oracleソフトウェアの所有者として、Oracle Homeから次のコマンドを実行します。
python $ORACLE_HOME/bin/crypto_provider.py next-generation
データベースインスタンスとリスナーを再起動すると、Next Generation暗号プロバイダーが自動的にロードされます。
選択したプロバイダーが使われていることを確認します。
python "$ORACLE_HOME/bin/crypto_provider.py" status
期待されるステータスは次のとおりです。
Current cryptographic provider is: Next Generation
既存のTLS 1.2クライアントで接続し、検証用の問合せを実行して、TLS 1.2接続が引き続き動作することを確認します。
SELECT SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') AS network_protocol,SYS_CONTEXT('USERENV', 'TLS_VERSION') AS tls_version,SYS_CONTEXT('USERENV', 'TLS_CIPHERSUITE') AS tls_ciphersuite,FROM dual;
TLS 1.2接続に成功すると、次のように表示されます。
- NETWORK_PROTOCOL = tcps
- TLS_VERSION = TLS 1.2
- クライアントとサーバーがネゴシエートしたTLS 1.2の暗号スイートが表示されます。
新プロバイダーはTLS 1.2とTLS 1.3の両方をサポートするため、既存のTLS 1.2クライアントは、それぞれの予定に合わせて移行できます。
TLS 1.3を使用する
新プロバイダーを有効にすると、サーバー側でTLS 1.3が有効になります。ただし、クライアントとサーバー間で使うには、クライアント側も対応している必要があります。クライアントがTLS 1.2と1.3の両方に対応していれば、Oracle Databaseは、双方がサポートする最も高いプロトコルバージョンとTLS暗号スイートを自動選択します。
TLS 1.3だけを使う場合は、sqlnet.oraとlistener.oraのTLS_VERSIONパラメータで、サーバーがサポートするTLSバージョンを指定できます。ただし、TLS 1.2クライアントに影響を与えず、双方がサポートする最も強いTLSバージョンを自動選択できるよう、このパラメータは未設定にしておくことを推奨します。
SSL_で始まるパラメータは、TLS_への置換に伴い非推奨となっていることに注意してください。たとえば、SSL_VERSIONはTLS_VERSIONに置き換えられます。
クライアントのTLS 1.3サポートは、ドライバーの種類、JDKや.NETなどの実行環境、sqlnet.oraのクライアント設定に依存します。Oracle Database 26aiのすべてのクライアントは、すでにTLS 1.3をサポートしています。現在、TLS 1.3に対応するOracle Database 19cクライアントには、次のものがあります。
- JDBC 19cは、JDK 11以降を通じてTLS 1.3をサポートします。
- OCIベースのドライバー19.32以降は、新しい暗号プロバイダーへの切替えが必要です。
- ODP.NET 19c(19.16以降)
OCIベースのクライアントドライバー19.32以降では、クライアントの$ORACLE_HOMEで次のコマンドを実行し、新しい暗号プロバイダーに切り替えます。
python $ORACLE_HOME/bin/crypto_provider.py next-generation
その後、クライアントアプリケーションを再起動して再接続します。
サーバーがTLS 1.3に対応していることを確認するには、対応クライアントからTCPSで接続し、先ほどと同じ検証用問合せを実行します。TLS 1.3接続に成功すると、次のように表示されます。
- NETWORK_PROTOCOL = tcps
- TLS_VERSION = TLS 1.3
- クライアントとサーバーがネゴシエートしたTLS 1.3の暗号スイートも表示されます。推奨するTLS 1.3暗号スイートはTLS_AES_256_GCM_SHA384です。
より強い暗号スイートで既存のTLS 1.2を強化する
クライアントをTLS 1.3対応に更新するまでに時間がかかる場合も、古いTLS 1.2暗号スイートを削除し、該当するOracle Databaseドキュメントの推奨暗号スイートを設定することを検討してください。サーバーのsqlnet.oraとlistener.oraにあるTLS_CIPHER_SUITESパラメータを使います。TLS 1.2と1.3の両方をサポートするには、両バージョンの推奨暗号スイートを含めます。
TLS_CIPHER_SUITES = (TLS_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
承認済み暗号スイートの一覧は、TLS 1.2とTLS 1.3の暗号スイートをご覧ください。
クライアント側のsqlnet.oraにも同じ変更を加え、強い暗号スイートだけを使用させることができます。19.32より前のクライアントとサーバーでは、sqlnet.oraのSSL_CIPHER_SUITESパラメータを設定してください。
耐量子暗号(PQC)
一般に「今収集し、後で復号する」と表現される将来の量子復号リスクに対応するため、Release Update 19.32の新プロバイダーは、米国国立標準技術研究所(NIST)が標準化した耐量子鍵カプセル化メカニズム、ML-KEMをサポートします。また、ML-KEMと既存の鍵交換暗号方式を組み合わせたハイブリッド鍵確立もサポートします。クライアントとサーバーがともにTLS 1.3に設定され、ハイブリッド鍵確立に対応していれば、デフォルトで使用されます。追加手順は不要です。PQCハイブリッド鍵確立に対応しないクライアントでも、TLS 1.3は引き続き利用できます。
FIPS 140-3を有効にする
組織がFIPS 140-3を必要とする場合だけ、この手順を実施してください。2026年9月21日以降、NISTは、すべての新規プロジェクトでFIPS 140-3を使用することを推奨しています。
FIPS 140-3は、FIPS 140-2や非FIPSモードよりも、限定されている一方で強力な暗号アルゴリズム群をサポートします。たとえば、SHA-1やMD5で署名したTLS証明書を許可しません。3DES、DES、RC4などの従来の暗号化アルゴリズムも許可しません。
FIPSモードは、サーバーのfips.ora構成ファイルで有効にします。ファイルが、$FIPS_HOME環境変数で指定したパス、またはデフォルトの$ORACLE_HOME/ldap/adminにあることを確認してください。
fips.oraで、両方のパラメータを設定します。
FIPS_140 = TRUEFIPS_140_3 = TRUE
FIPS_140 = TRUEだけを設定すると、FIPS 140-3ではなくFIPS 140-2が有効になります。
FIPS 140-3のサポートは、NISTの暗号モジュール認証プログラム(CMVP)の対象となっているOracle OpenSSL FIPSモジュールを通じて提供されます。審査中モジュールのリストへの掲載は、最終的なFIPS 140-3認証を意味しません。FIPSモードを有効にするだけで、適用される規制要件への準拠が確立するわけではありません。
Legacy暗号プロバイダーに戻す
Next Generationがサポートしない従来のアルゴリズムが必要な場合は、データベースインスタンスとリスナーを停止して、次を実行することでLegacyに戻せます。
python $ORACLE_HOME/bin/crypto_provider.py legacy
戻した後でインスタンスとリスナーを再起動し、使用中のプロバイダーを確認します。
python $ORACLE_HOME/bin/crypto_provider.py status
期待されるステータスは次のとおりです。
Current cryptographic provider is: Legacy
OCIベースのクライアントドライバー19.32でLegacyに戻す場合は、クライアント側でも同じ手順を実行します。
まとめ
Next Generation暗号プロバイダーでは、サポートされる構成において、TLS 1.3とハイブリッドPQC鍵交換がデフォルトで有効になります。19.32の適用後、新プロバイダーに切り替え、データベースインスタンスとリスナーを再起動し、クライアント接続を検証できます。対応するTLS 1.2クライアントとの互換性を維持しながら、TLS 1.3を導入できます。文書化された要件と制限に従い、該当する場合にはFIPS 140-3モードも設定できます。
関連ドキュメント
TLSの導入、ドライバー固有の要件、明示的な暗号スイート設定、PQC、FIPS 140-3、その他の配置シナリオについては、次を参照してください。
Oracle Database 19cセキュリティガイド:Transport Layer Security暗号化の構成
