C Oracle Database FIPS 140-2の設定
Oracleでは、米国連邦情報処理標準(FIPS)の標準である140-2がサポートされます。
- Oracle Database FIPS 140-2の設定について
連邦情報処理標準(FIPS)とは、米国商務省国立標準技術研究所(NIST)によって開発された連邦政府のコンピュータ・システムの標準およびガイドラインです。 - 統合FIPS_140パラメータを使用したFIPS 140-2の構成
統合FIPS_140
パラメータは、複数の異なるOracle Database環境に設定できます。 - レガシーFIPS 140-2構成
レガシーFIPS 140-2構成は、透過的データ暗号化(TDE)、DBMS_CRYPTO
、ネットワーク・ネイティブ暗号化およびTransport Layer Security (TLS)に適用されます。 - FIPS 140-2のインストール後のチェック
FIPS 140-2設定の構成後に、オペレーティング・システムで権限を確認する必要があります。 - FIPS 140-2接続の検証
トレース・ファイルおよびその他の方法を使用して、FIPS 140-2接続を検証できます。 - 非推奨の脆弱なアルゴリズム・キーの管理
Oracle Databaseリリース23cでは、FIPSとFIPS以外の両方についていくつかのアルゴリズムが非推奨になりました。
親トピック: 付録
C.1 Oracle Database FIPS 140-2の設定について
連邦情報処理標準(FIPS)とは、米国商務省国立標準技術研究所(NIST)によって開発された連邦政府のコンピュータ・システムの標準およびガイドラインです。
FIPSは、連邦情報セキュリティ・マネジメント法(FISMA)に従って開発されました。FIPSは連邦政府で使用するために開発されましたが、多くの民間団体が自主的にこれらの基準を使用しています。
FIPS 140-2には、暗号化モジュールによって満たされるセキュリティ要件が規定されており、幅広い潜在的なアプリケーションと環境をカバーするための、4つの拡大する定性的なレベルが示されています。セキュリティ・レベル1は、FIPS 140-2アルゴリズム、キー・サイズ、整合性チェックおよび規制によって課せられるその他の要件に準拠します。FIPS 140-2のセキュリティ・レベル1では、本番グレードの設備の要件を超える、モジュールの物理的なセキュリティ・メカニズムは必要ありません。そのため、このレベルでは、指定したオペレーティング環境で実行されている汎用コンピュータでソフトウェア暗号化機能を実行できます。
FIPS 140-2設定がOracle Database用に構成されている場合、データベースはFIPS 140-2レベル1の検証済の暗号ライブラリを使用して、保存されているデータとネットワークで転送中のデータを保護します。Oracle Databaseでは、ネイティブ・ネットワーク暗号化、列および表領域の透過的データ暗号化(TDE) (Oracle SecureFilesを含む)、Transport Layer Security (TLS)、およびDBMS_CRYPTO
PL/SQLパッケージに、これらの暗号ライブラリを使用します。
Oracle Databaseでは現在、FIPS 140-2レベル1のライブラリとして、サード・パーティの暗号ライブラリを使用しています。現在のFIPS認定のステータスの情報は、米国商務省国立標準技術研究所のコンピュータ・セキュリティ・リソース・センター(CSRC)のWebサイトの次のアドレスで確認できます。
http://csrc.nist.gov/groups/STM/cmvp/validation.html
Oracle Database 23c以降、Cベースのコンポーネントの場合、Oracle DatabaseはNIST証明書番号4506 (FIPS 140-2)に関連するOracle OpenSSL 3.0 Providerを使用します。Javaコンポーネントの場合、Oracle DatabaseはNIST FIPS証明書番号3820 (FIPS 140-2)に関連するCrypto-J v6.2.5を使用します。次のWebサイトも参照してください。
java.properties
ファイルを構成してJavaコンポーネントに対してFIPSモードを有効にするには、Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの管理を参照してください。
Oracle Database FIPS設定では、Oracleデータベースのみに対してFIPS承認済アルゴリズムが使用されます。FIPSモードで実行されているOracle Databaseで使用されるサード・パーティ・ベンダーのソフトウェアでは、これらのFIPS承認済アルゴリズムのみを使用する必要があります。そうしないと、ベンダーのソフトウェアに障害が発生します。
C.2 統合FIPS_140パラメータを使用したFIPS 140-2の構成
統合FIPS_140
パラメータは、複数の異なるOracle Database環境に設定できます。
- FIPS_140パラメータを使用したFIPS 140-2の構成について
FIPS_140
パラメータの構成は、サポートされているすべての環境で同じです。 - FIPS_140パラメータの構成
FIPS 140-2を構成するには、fips.ora
ファイルでFIPS_140
パラメータを設定する必要があります。 - FIPSモードでのorapkiの実行
ウォレット作成コマンドの各コマンドの末尾に-fips140_mode
を追加して、FIPSモードでorapki
を実行します。 - FIPSモードでJavaクライアント・アプリケーションを実行するためのスタンドアロンJava FIPSの構成
FIPSモードでJavaクライアント・アプリケーションを実行するためのスタンドアロンJava FIPSを構成するには、CLASSPATH
設定を確認し、java.security properties
ファイルで適切なFIPS検証済プロバイダを設定する必要があります。 - enable_fips.py Pythonスクリプトの実行によるFIPSの有効化
enable_fips.py
スクリプトにより、ワークロード・マネージャ、Oracle Database Configuration Assistant (DBCA)、Oracle Net Configuration Assistant (NetCA)などのOracle Databaseで使用されるJavaアプリケーションのFIPSモードが有効になります。 - 透過的データ暗号化に対してFIPSでサポートされているアルゴリズム
透過的データ暗号化(TDE)に対してFIPSでサポートされているアルゴリズムには、AESアルゴリズムがあります。 - DBMS_CRYPTOに対してFIPSでサポートされている暗号スイート
FIPSライブラリでは、DBMS_CRYPTO
PL/SQLパッケージへの暗号スイートの使用がサポートされています。 - Transport Layer Securityに対してFIPSでサポートされている暗号スイート
暗号スイートは、ネットワーク・ノード間でメッセージを交換する認証、暗号化およびデータ整合性アルゴリズムのセットです。 - ネットワーク・ネイティブ暗号化に対してFIPSでサポートされているアルゴリズム
FIPSライブラリでは、ネイティブ・ネットワーク暗号化に対して暗号化アルゴリズムとチェックサム・アルゴリズムの両方がサポートされています。
C.2.1 FIPS_140パラメータを使用したFIPS 140-2の構成について
FIPS_140
パラメータの構成は、サポートされているすべての環境で同じです。
FIPS_140
パラメータは、次の環境および機能を使用するOracleデータベース用に統合されています。
- 透過的データ暗号化(TDE)
DBMS_CRYPTO
PL/SQLパッケージ- Transport Layer Security(TLS)
- ネイティブ・ネットワーク暗号化
C.2.4 FIPSモードでJavaクライアント・アプリケーションを実行するためのスタンドアロンJava FIPSの構成
FIPSモードでJavaクライアント・アプリケーションを実行するようにスタンドアロンJava FIPSを構成するには、CLASSPATH
設定を確認し、java.security properties
ファイルで適切なFIPS検証済プロバイダを設定する必要があります。
- Oracleホーム内のJDKホームに移動します。
CLASSPATH
にcryptojce.jar
、cryptojcommon.jar
、jcmFIPS.jar
およびcryptoj.jar
というjarが含まれていることを確認します。java.security
プロパティ・ファイルで、次の手順を実行します。- 最初のセキュリティ・プロバイダとして
com.rsa.jsafe.provider.JsafeJCE
を設定します。java.security
プロパティ・ファイルのデフォルト値は実装固有の場所から読み取られます。この場所は、通常、Javaインストール・ディレクトリのconf/security/java.security
プロパティ・ファイルです。 - 既存のセキュリティ・プロバイダのインデックスを上に移動します。
- 最初のセキュリティ・プロバイダとして
関連トピック
C.2.5 enable_fips.py Pythonスクリプトの実行によるFIPSの有効化
enable_fips.py
スクリプトは、ワークロード・マネージャ、Oracle Database Configuration Assistant (DBCA)、Oracle Net Configuration Assistant (NetCA)など、Oracle Databaseで使用されるJavaアプリケーションのFIPSモードを有効にします。
enable_fips.py
スクリプトは、fips.ora
ファイルでパラメータFIPS_140=TRUE
を設定することで、fips.ora
ファイルを更新します。また、com.rsa.jsafe.provider.JsafeJCE
をjava.security
ファイルの最初のセキュリティ・プロバイダとして設定します。
C.2.6 Transparent Data EncryptionでFIPSでサポートされているアルゴリズム
透過的データ暗号化(TDE)に対してFIPSでサポートされているアルゴリズムには、AESアルゴリズムがあります。
- AES128
- AES192
- AES256
表および表領域の暗号化アルゴリズムを最新バージョンに移行できます。3DES168
は、Oracle Database 23c以降ではサポートされなくなりました。
C.2.7 FIPSでサポートされているDBMS_CRYPTOの暗号スイート
FIPSライブラリでは、DBMS_CRYPTO
PL/SQLパッケージへの暗号スイートの使用がサポートされています。
DBMS_CRYPTO
暗号化ハッシュの場合:
HASH_SH256
HASH_SH384
HASH_SH512
DBMS_CRYPTO
MAC (メッセージ認証コード):
HMAC_SH256
HMAC_SH384
HMAC_SH512
DBMS_CRYPTO
ENCRYPT
/DECRYPT
:
ENCRYPT_AES
ENCRYPT_AES128
ENCRYPT_AES192
ENCRYPT_AES256
DBMS_CRYPTO
PKENCRYPT
/PKDECRYPT
:
PKENCRYPT_RSA_PKCS1_OAEP_SHA2
DBMS_CRYPTO
SIGN
/VERIFY
:
SIGN_SHA224_RSA
SIGN_SHA256_RSA
SIGN_SHA256_RSA_X931
SIGN_SHA384_RSA
SIGN_SHA384_RSA_X931
SIGN_SHA512_RSA
SIGN_SHA512_RSA_X931
C.2.8 Transport Layer Securityに対してFIPSでサポートされている暗号スイート
暗号スイートは、ネットワーク・ノード間でメッセージを交換する認証、暗号化およびデータ整合性アルゴリズムのセットです。
たとえば、TLSハンドシェイク時に、メッセージを送受信するときに使用する暗号スイートを確認するために2つのノード間でネゴシエーションが行われます。
特定の暗号スイートの構成
Oracle DatabaseのTLS暗号スイートは、FIPS認定の暗号スイートに自動的に設定されます。特定の暗号スイートを構成する必要がある場合は、sqlnet.ora
またはlistener.ora
ファイルでSSL_CIPHER_SUITES
パラメータを設定します。
SSL_CIPHER_SUITES=(SSL_cipher_suite1[,SSL_cipher_suite2[,..]])
このパラメータは、Oracle Net Managerを使用してサーバーおよびクライアントで設定することもできます。
特定の暗号スイートを指定しなかった場合、Oracle Databaseでは、データベース・サーバーとクライアントの両方に共通の、最も強力な暗号スイートが使用されます。選択される暗号スイートの優先順位は、次の優先暗号リストおよび低優先暗号リストに示されている順となります。3DES暗号スイートには脆弱性があるため、Oracle Databaseでは、それらは自動的には選択されません。それらは明示的に構成する必要があります。
優先暗号スイート
TLSバージョン1.3を使用している場合は、次の暗号スイートがFIPS検証用に承認されています。
TLS_AES_128_CCM_SHA256
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
トランスポート層セキュリティ(TLS)バージョン1.2を使用している場合は、次の暗号スイートがFIPS検証用に承認されています。
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
3DESベース暗号スイート
3DESベース暗号スイートは設計に脆弱性があるため、Oracleではそれらは推奨されていません。Oracle Databaseリリース21c以上では、次の3DESベース暗号スイートがサポートされています。ただし、それらはデフォルトでは有効になっておらず、sqlnet.ora
またはlistener.ora
ファイル内のSSL_CIPHER_SUITES
パラメータを使用して明示的に構成する必要があります。
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
C.3 レガシーFIPS 140-2構成
レガシーFIPS 140-2構成は、透過的データ暗号化(TDE)、DBMS_CRYPTO
、ネットワーク・ネイティブ暗号化およびTransport Layer Security (TLS)に適用されます。
- レガシーFIPS 140-2構成について
レガシーFIPS 140-2構成の使用は引き続きサポートされますが、かわりに統合FIPS_140
パラメータを使用することをお薦めします。 - 透過的データ暗号化およびDBMS_CRYPTO用のFIPS 140-2の構成
DBFIPS_140
初期化パラメータで、FIPSモードを構成します。 - Transport Layer Security用のFIPS 140-2の構成
Transport Layer Security (TLS)用にFIPS 140-2を構成するには、SSLFIPS_140
パラメータを設定する必要があります。 - ネイティブ・ネットワーク暗号化用のFIPS 140-2の構成
ネイティブ・ネットワーク暗号化用にFIPS 140-2を構成するには、sqlnet.ora
ファイルでFIPS_140
パラメータを設定する必要があります。
C.3.1 レガシーFIPS 140-2構成について
レガシーFIPS 140-2構成の使用は引き続きサポートされますが、かわりに統合FIPS_140
パラメータを使用することをお薦めします。
レガシーFIPS 140-2構成は、次の環境に適用されます。
- 透過的データ暗号化(TDE)
DBMS_CRYPTO
PL/SQLパッケージ- Transport Layer Security(TLS)
- ネットワーク・ネイティブ暗号化
親トピック: レガシーFIPS 140-2構成
C.3.2 透過的データ暗号化およびDBMS_CRYPTO用のFIPS 140-2の構成
DBFIPS_140
初期化パラメータで、FIPSモードを構成します。
DBMS_CRYPTO
用にFIPS 140-2を構成するこの方法は、レガシー構成とみなされますが、引き続きサポートされています。かわりに、統合FIPS_140
パラメータを使用することをお薦めします。
親トピック: レガシーFIPS 140-2構成
C.3.3 Transport Layer Security用のFIPS 140-2の構成
Transport Layer Security (TLS)用にFIPS 140-2を構成するには、SSLFIPS_140
パラメータを設定する必要があります。
FIPS_140
パラメータを使用することをお薦めします。
ノート:
Oracle Database 10g リリース2 (10.2)で使用されたSQLNET.SSLFIPS_140
パラメータは、SSLFIPS_140
パラメータに置換されます。このパラメータは、sqlnet.ora
ファイルではなくfips.ora
ファイルで設定する必要があります。
親トピック: レガシーFIPS 140-2構成
C.3.4 ネイティブ・ネットワーク暗号化用のFIPS 140-2の構成
ネイティブ・ネットワーク暗号化用にFIPS 140-2を構成するには、sqlnet.ora
ファイルでFIPS_140
パラメータを設定する必要があります。
FIPS_140
パラメータを使用することをお薦めします。
親トピック: レガシーFIPS 140-2構成
C.4 FIPS 140-2のインストール後のチェック
FIPS 140-2設定の構成後に、オペレーティング・システムで次の権限を確認する必要があります。
その権限を次に示します。
-
システムのセキュリティ・ポリシーに従って、権限のないユーザーがOracle Cryptographic Librariesを実行できないようにするには、すべてのOracle実行可能ファイルに対して実行権限を設定する必要があります。
-
ユーザーが誤ってまたは故意にOracle Cryptographic Librariesのファイルを読み取ったり変更しないようにするには、すべてのOracle実行可能ファイルに対して読取りおよび書込み権限を設定する必要があります。
FIPS 140-2 Level 2要件に準拠するには、権限のないユーザーが、オペレーティング・システムで使用しているOracle Cryptographic Librariesのプロセスおよびメモリーの読取り、変更または実行を行えないようにする手順をセキュリティ・ポリシーに含めます。
C.5 FIPS 140-2接続の検証
トレース・ファイルおよびその他の方法を使用して、FIPS 140-2接続を検証できます。
- FIPS_140パラメータを使用するときのFIPS 140-2接続の検証
FIPS_140
パラメータを使用するときは、トレース・ファイルを使用してFIPS 140-2のステータスを確認できます。 - Transport Layer Securityに対するFIPS 140-2接続の検証
トレース・ファイルを使用して、Transport Layer Security (TLS)に対するFIPS 140-2接続を確認できます。 - ネットワーク・ネイティブ暗号化に対するFIPS 140-2接続の検証
トレース・ファイルを使用して、ネットワーク・ネイティブ暗号化に対するFIPS 140-2接続を確認できます。 - 透過的データ暗号化およびDBMS_CRYPTOに対するFIPS 140-2接続の検証
SQL*Plusを使用して、FIPSモードが有効になっているかどうかを確認できます。
C.5.1 FIPS_140パラメータを使用するときのFIPS 140-2接続の検証
FIPS_140
パラメータを使用するときは、トレース・ファイルを使用してFIPS 140-2のステータスを確認できます。
- 環境変数
ENABLE_TRACE
を1
に設定してトレースを有効にします。- Cシェルの場合:
setenv ENABLE_TRACE 1
- bashの場合:
export ENABLE_TRACE=1
- Cシェルの場合:
FIPS
を検索してトレース・ファイルを確認します。
親トピック: FIPS 140-2接続の検証
C.5.2 Transport Layer Securityに対するFIPS 140-2接続の検証
トレース・ファイルを使用して、Transport Layer Security (TLS)に対するFIPS 140-2接続を確認できます。
親トピック: FIPS 140-2接続の検証
C.5.3 ネットワーク・ネイティブ暗号化に対するFIPS 140-2接続の検証
トレース・ファイルを使用して、ネットワーク・ネイティブ暗号化に対するFIPS 140-2接続を確認できます。
親トピック: FIPS 140-2接続の検証
C.5.4 透過的データ暗号化およびDBMS_CRYPTOに対するFIPS 140-2接続の検証
SQL*Plusを使用して、FIPSモードが有効になっているかどうかを確認できます。
親トピック: FIPS 140-2接続の検証
C.6 非推奨の脆弱なアルゴリズム・キーの管理
Oracle Databaseリリース23cでは、FIPSとFIPS以外の両方についていくつかのアルゴリズムが非推奨になりました。
Oracle Database 23cでは、暗号アルゴリズムのセキュリティ強度が強化されています。次の暗号アルゴリズムは非推奨または削除されました。
- FIPSモードの場合:
- FIPSセキュリティ強度80はサポートされなくなりました。FIPSモードの新しいデフォルトのセキュリティ強度は112です。現在、これは唯一サポートされているFIPSセキュリティ強度です。
- キー・サイズが1024のRSA、Diffie Hellmanおよびデジタル署名アルゴリズム(RSA/DH/DSA)はサポートされなくなりました。サポートされる新しい最小キー・サイズは2048です。
- FIPS以外のモードの場合:
- セキュリティ強度0 (RSA/DH/DSAキー長512)は非推奨です。デフォルトでは現在、セキュリティ強度のサポートは80です。セキュリティ強度0 (RSAキー512および同等のもの)は引き続き使用できますが、使用することはお薦めしません。FIPS以外の使用に使用できるセキュリティ強度は0 (非推奨)、80、および112です。
RSA/DH/DSA 512/1024のキー・サイズで使用されているものを(ECCの同等のものと一緒に)特定し、RSA/DH/DSA 2048のキー・サイズおよび同等のものに置き換えることをお薦めします。
次の表に、様々な暗号化キーのセキュリティ強度を示します。
orapki
コマンドライン・ユーティリティを使用して、署名付き証明書の作成、Oracleウォレットの管理および証明書失効リストの管理を行うことができます。これには、次の表に示すのと同じデフォルトのキー・サイズがあります。
FIPSのデフォルト設定(Oracle Database 23c以降)
表C-1 FIPSのデフォルト設定(Oracle Database 23c以降)
アルゴリズム・キー・タイプ | セキュリティ強度 |
---|---|
- |
デフォルトのセキュリティ強度: 112(以前は80) セキュリティ強度: 0、80はサポートされておらず、FIPS使用には使用できません |
デフォルトのRSA/DH/DSA (Diffie Hellman、デジタル署名アルゴリズム) |
2048キー・サイズ(2048ビット未満のキー・サイズはサポートされていません) |
デフォルトECC (楕円曲線暗号化) |
ECC曲線で、ECC曲線キーの最小長224、ECC名曲線P192、K163およびB163以下はサポートされていません |
FIPS以外のデフォルト設定(Oracle Database 23c以降)
表C-2 FIPS以外のデフォルト設定(Oracle Database 23c以降)
アルゴリズム・キー・タイプ | 保護強度 |
---|---|
- |
デフォルトのセキュリティ強度: 80 セキュリティ強度: 0 (使用可能) |
デフォルトのRSA/DH/DSA (Diffie Hellman、デジタル署名アルゴリズム) |
1024キー・サイズ( |
デフォルトECC (楕円曲線暗号化) |
ECC曲線で、ECC曲線キーの最小長160、ECC名曲線P192、K163およびB163以上(低いセキュリティ強度は使用可能) |