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リリース23aiでは、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検証済暗号化モジュールが統合されています:
- Oracle OpenSSL FIPSプロバイダ・バージョン3.0:
                        
- NISTの暗号化モジュール検証プログラムFIPS証明書番号4506。NIST Computer Information Technology Laboratory Security Resource Centerのページ「Cryptographic Module Validation Program Certificate #4506」を参照してください
 - 証明書番号4506にマップされたセキュリティ・ポリシー。Oracle FIPS 140-2独自仕様でないセキュリティ・ポリシーを参照してください
 
 - RSA/Dell BSAFE Crypto-J 6.3およびRSA/Dell BSAFE Java Crypto Module 6.3:
                        
- NISTの暗号化モジュール検証プログラムFIPS証明書番号4697。NIST Computer Information Technology Laboratory Security Resource Centerのページ「Cryptographic Module Validation Program Certificate #4697」を参照してください
 - 証明書番号4697にマップされたセキュリティ・ポリシー。「BSAFE Java Crypto Module 6.3 Security Policy Level 1」を参照してください
 
 
完了済および進行中のOracle製品のFIPSセキュリティ認証の完全なリストは、FIPS認証を参照してください。
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の実行
ウォレット作成コマンドの各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_CRYPTOPL/SQLパッケージへの暗号スイートの使用がサポートされています。 - Transport Layer Securityに対してFIPSでサポートされている暗号スイート
暗号スイートは、ネットワーク・ノード間でメッセージを交換する認証、暗号化およびデータ整合性アルゴリズムのセットです。 - ネットワーク・ネイティブ暗号化に対してFIPSでサポートされているアルゴリズム
FIPSライブラリでは、ネイティブ・ネットワーク暗号化に対して暗号化アルゴリズムとチェックサム・アルゴリズムの両方がサポートされています。 
C.2.1 FIPS_140パラメータを使用したFIPS 140-2の構成について
FIPS_140パラメータの構成は、サポートされているすべての環境で同じです。
                     
FIPS_140パラメータは、次の環境および機能を使用するOracleデータベース用に統合されています。
                     
- 透過的データ暗号化(TDE)
 DBMS_CRYPTOPL/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という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 23ai以降ではサポートされなくなりました。
                     
C.2.7 FIPSでサポートされているDBMS_CRYPTOの暗号スイート
FIPSライブラリでは、DBMS_CRYPTO PL/SQLパッケージへの暗号スイートの使用がサポートされています。 
                     
DBMS_CRYPTO暗号化ハッシュの場合:
                     
HASH_SH256HASH_SH384HASH_SH512HASH_SHA3_256HASH_SHA3_384HASH_SHA3_512HASH_SHAKE128HASH_SHAKE256
DBMS_CRYPTO MAC (メッセージ認証コード):
                     
HMAC_SH256HMAC_SH384HMAC_SH512HMAC_SHA3_256HMAC_SHA3_384HMAC_SHA3_512
 DBMS_CRYPTO KMACXOF (KECCAKメッセージ認証コード):
                     
KMACXOF_128KMACXOF_256
DBMS_CRYPTO ENCRYPTおよびDECRYPT:
                     
ENCRYPT_AESENCRYPT_AES128ENCRYPT_AES192ENCRYPT_AES256
DBMS_CRYPTO PKENCRYPTおよびPKDECRYPT:
                     
PKENCRYPT_RSA_PKCS1_OAEP_SHA2
DBMS_CRYPTO SIGNおよびVERIFY:
                     
SIGN_SHA224_RSASIGN_SHA256_RSASIGN_SHA256_RSA_X931SIGN_SHA384_RSASIGN_SHA384_RSA_X931SIGN_SHA512_RSASIGN_SHA512_RSA_X931SIGN_SHA3_224_RSASIGN_SHA3_256_RSASIGN_SHA3_384_RSASIGN_SHA3_512_RSASIGN_SHA3_224_ECDSASIGN_SHA3_256_ECDSASIGN_SHA3_384_ECDSASIGN_SHA3_512_ECDSA
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_SHA256TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384
トランスポート層セキュリティ(TLS)バージョン1.2を使用している場合は、次の暗号スイートがFIPS検証用に承認されています。
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_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_SHATLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHATLS_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_CRYPTOPL/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リリース23aiでは、FIPSとFIPS以外の両方についていくつかのアルゴリズムが非推奨になりました。
Oracle Database 23aiでは、暗号アルゴリズムのセキュリティ強度が強化されています。次の暗号アルゴリズムは非推奨または削除されました。
- 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 23ai以降)
表C-1 FIPSのデフォルト設定(Oracle Database 23ai以降)
| アルゴリズム・キー・タイプ | セキュリティ強度 | 
|---|---|
| 
                                     -  | 
                                 
                                     デフォルトのセキュリティ強度: 112(以前は80) セキュリティ強度: 0、80はサポートされておらず、FIPS使用には使用できません  | 
                              
| デフォルトのRSA/DH/DSA (Diffie Hellman、デジタル署名アルゴリズム) | 
                                     2048キー・サイズ(2048ビット未満のキー・サイズはサポートされていません)  | 
                              
| 
                                     デフォルトECC (楕円曲線暗号化)  | 
                                 
                                     ECC曲線で、ECC曲線キーの最小長224、ECC名曲線P192、K163およびB163以下はサポートされていません  | 
                              
FIPS以外のデフォルト設定(Oracle Database 23ai以降)
表C-2 FIPS以外のデフォルト設定(Oracle Database 23ai以降)
| アルゴリズム・キー・タイプ | セキュリティ強度 | 
|---|---|
| 
                                     -  | 
                                 
                                     デフォルトのセキュリティ強度: 80 セキュリティ強度: 0、112 (使用可能)  | 
                              
| デフォルトのRSA/DH/DSA (Diffie Hellman、デジタル署名アルゴリズム) | 
                                     1024キー・サイズ( 非FIPSセキュリティ強度を0または112に変更するには、  | 
                              
| 
                                     デフォルトECC (楕円曲線暗号化)  | 
                                 
                                     ECC曲線キーの最小長163を持つECC曲線。K163、B163より低いECC名の曲線はサポートされていません。  |