20 Oracle Databaseのネイティブ・ネットワーク暗号化とデータ整合性の構成

サーバーとクライアントの両方について、Oracle Net Services固有のデータ暗号化およびデータ整合性を構成できます。

20.1 Oracle Databaseのネイティブ・ネットワーク暗号化とデータ整合性について

Oracle Databaseでは、ネットワークで送信されるデータを暗号化できます。

20.1.1 Oracle Databaseのネイティブ・ネットワーク暗号化と整合性の仕組み

Oracle Databaseは、ネットワーク間を移動するデータが保護されるように、ネイティブ・データ・ネットワークの暗号化および整合性を提供します。

セキュアな暗号システムの目的は、キーに基づいて、平文データ(暗号化されていないテキスト)を解読不能な暗号文(暗号化されたテキスト)に変換することです。正しいキーがなければ、暗号文を元の平文に変換することはきわめて困難(計算上は不可能)です。

対称暗号システムでは、同じデータの暗号化と復号化の両方に同じキーを使用します。Oracle Databaseは、Advanced Encryption Standard (AES)の対称暗号システムを提供して、Oracle Net Servicesトラフィックの機密保護を図ります。

20.1.2 Advanced Encryption Standard

Oracle Databaseでは、米国連邦情報処理標準(FIPS)暗号化アルゴリズムであるAdvanced Encryption Standard (AES)がサポートされています。

AESは、ネットワーク上で機密データを保護するために、あらゆる米国政府組織および企業で使用できます。この暗号化アルゴリズムでは、128ビット、192ビットおよび256ビットの3つの標準のキーの長さが定義されています。いずれのバージョンも、外部暗号ブロック連鎖(CBC)モードで稼働します。暗号化メソッドの1つ。先行するすべてのブロックに依存する暗号ブロックの暗号化を行い、ブロック再生攻撃からデータを保護します。無許可の復号化が段階的に困難になるように設計されています。Oracle Databaseでは、外部暗号ブロック連鎖が使用されています。これは、内部暗号ブロックよりも安全性が高く、実質的なパフォーマンスの低下を伴わないためです。

ノート:

AESアルゴリズムが改善されました。より強力なアルゴリズムを使用するようにOracle Database環境を移行するには、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードしてインストールします。

20.1.3 Triple-DES暗号化

Triple-DES (3DES)暗号化は、DESアルゴリズムにメッセージ・データを3回渡して暗号化します。

ノート:

このリリースでは、DES、DES40、3DES112および3DES168アルゴリズムは非推奨です。より強力なアルゴリズムを使用するようにOracle Database環境を移行するには、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードしてインストールします。

3DESは高度なメッセージ・セキュリティを提供しますが、パフォーマンスの低下を伴います。パフォーマンス低下の度合いは、暗号化を実行するプロセッサの速度によって異なります。3DESは、標準のDESアルゴリズムに比べ、データ・ブロックの暗号化に通常3倍の時間を要します。

3DESには2つのキーを使用するバージョンと3つのキーを使用するバージョンがあり、それぞれ有効なキーの長さは112ビットと168ビットです。どちらのバージョンも、外部暗号ブロック連鎖(CDC)モードで動作します。

Oracle DatabaseおよびSecure Network Servicesで利用可能なDES40アルゴリズムは、秘密キーを事前処理することによって有効キー・ビットを40とするDESの一種です。米国の輸出法が厳しかったときに米国およびカナダ以外の顧客を対象にDESベースの暗号化を提供する目的で設計されました。DES40、DESおよび3DESはすべて輸出のために使用できます。DES40は、海外顧客向けに下位互換性を維持するために引き続きサポートされています。

20.1.4 ネイティブ・ネットワーク暗号化とTransport Layer Securityの間の選択

Oracleには、ネットワーク上のデータを暗号化する方法として、ネイティブ・ネットワーク暗号化とTransport Layer Security (TLS)の2つがあります。

どちらの方法にもメリットとデメリットがあります。

表20-1 ネイティブ・ネットワーク暗号化とTransport Layer Securityの比較

- ネイティブ・ネットワーク暗号化 Transport Layer Security

メリット

  • sqlnet.ora構成ファイル内のパラメータで構成されます。
  • ほとんどの場合、クライアント構成の変更は必要ありません。
  • 証明書は必要ありません。
  • ネイティブ・ネットワーク暗号化をサポートしていないクライアントは、非互換性が緩和されている間、暗号化されていない接続に戻ることができます。
  • 移動中のデータを暗号化するための業界標準です。
  • 第三者攻撃を防ぐために、サーバー接続に対する否認防止を提供します。
  • データベース・ユーザー認証に使用できます。

デメリット

  • 非標準のOracle独自の実装を使用します。
  • サーバー接続の否認防止を提供しません(つまり、第三者攻撃に対する保護なし)。
  • クライアントおよびサーバーの変更が必要です。
  • 証明書はサーバーでは必要であり、クライアントではオプションです。ただし、クライアントには、サーバーの証明書を発行した認証局のトラステッド・ルート証明書が必要です。
  • 証明書は最終的に失効します。

20.2 Oracle Databaseのネイティブ・ネットワーク暗号化のデータ整合性

ネットワーク・データを暗号化すると、ネットワーク上で転送される平文データを不正なユーザーが閲覧できなくなり、データのプライバシが保護されます。

また、Oracle Databaseでは、2つの形態の攻撃からデータを保護できます。

表20-2に、これらの攻撃についての情報を示します。

表20-2 ネットワーク攻撃の2つの形態

攻撃形態 説明

データ変更攻撃

データ変更攻撃とは、不正なユーザーが転送中のデータを傍受し、データを変更して再転送することです。たとえば、銀行への$100の預入れを傍受して、金額を$10,000に変更し、その水増し金額を再転送することをデータ変更攻撃といいます。

再生攻撃

再生攻撃とは、有効なデータ全体を反復的に再送することです。たとえば、銀行からの$100の払戻しを傍受し、その払戻しを10回再転送して、最終的に$1,000受け取るといった攻撃です。

20.3 データ暗号化と整合性のsqlnet.oraパラメータ

Oracleは、データの暗号化と整合性のためにsqlnet.oraファイルで設定できる多くのパラメータを用意しています。

20.3.1 データ暗号化および整合性パラメータについて

データ暗号化および整合性パラメータは、使用する暗号化アルゴリズムのタイプを制御します。

こうしたパラメータを設定するsqlnet.oraファイルは、ネットワーク構成の実行時に生成されます。このプロセスでは、暗号化およびデータ整合性パラメータも提供されます。データの暗号化および整合性を構成するためのガイドラインとして、デフォルト・パラメータ設定を使用できます。

次の表に、データの暗号化と整合性のパラメータを示します。

表20-3 データの暗号化と整合性のパラメータ

パラメータ 説明

SQLNET.CRYPTO_CHECKSUM_CLIENT

クライアントのチェックサム動作を指定します

SQLNET.CRYPTO_CHECKSUM_SERVER

サーバーのチェックサム動作を指定します

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

クライアントが使用する暗号チェックサム・アルゴリズムのリストを指定します

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

サーバーが使用する暗号チェックサム・アルゴリズムのリストを指定します

SQLNET.ENCRYPTION_CLIENT

クライアントに対する暗号化を有効にします

SQLNET.ENCRYPTION_SERVER

サーバーに対する暗号化を有効にします

SQLNET.ENCRYPTION_TYPES_CLIENT

クライアントが使用する暗号化アルゴリズムをリストします

SQLNET.ENCRYPTION_TYPES_SERVER

サーバーが使用する暗号化アルゴリズムをリストします

サーバー暗号化、クライアント暗号化、サーバー・チェックサムまたはクライアント・チェックサムの値を指定しない場合、対応する構成パラメータはsqlnet.oraファイルに含まれません。ただし、デフォルトはACCEPTEDです。

データ暗号化と整合性の両方のアルゴリズムでは、サーバーは、そのサーバーのsqlnet.oraファイル内のアルゴリズムのうち、クライアントのsqlnet.oraファイル、またはクライアントのsqlnet.oraファイルにアルゴリズムがリストされていない場合はクライアントのインストール済リストにリストされているアルゴリズムに、最初に一致するものを選択します。サーバーのsqlnet.oraファイルにエントリがない場合、サーバーはそのインストール済リストを順に検索して、クライアント側(クライアントのsqlnet.oraファイルまたはクライアントのインストール済リスト)の項目と照合します。一致するアルゴリズムが見つからず、接続の一方でアルゴリズムのタイプ(データ暗号化または整合性)がREQUIREDである場合、接続は失敗します。 それ以外の場合、接続はアルゴリズムのタイプinactiveで成功します。

データ暗号化と整合性のアルゴリズムは、互いに独立して選択されます。暗号化は整合性なしでアクティブにできます。また、整合性は暗号化なしでアクティブにできます。表20-4を参照してください。

表20-4 アルゴリズムのタイプの選択

暗号化の選択 整合性の選択

はい

いいえ

はい

はい

いいえ

はい

いいえ

いいえ

20.3.2 サンプルsqlnet.oraファイル

sqlnet.ora構成ファイルのサンプルは、似た特性を持つ一連のクライアントと似た特性を持つ一連のサーバーに基づいています。

このファイルには、Oracle Databaseの暗号化とデータ整合性のパラメータの例が含まれています。

デフォルトでは、sqlnet.oraファイルは、ORACLE_HOME/network/adminディレクトリ、またはTNS_ADMIN環境変数によって設定されている場所にあります。TNS_ADMIN変数が正しいsqlnet.oraファイルを指定するように適切に設定されていることを確認します。

トレース・ファイルの設定

#Trace file setup 
trace_level_server=16 
trace_level_client=16  
trace_directory_server=/orant/network/trace 
trace_directory_client=/orant/network/trace 
trace_file_client=cli  
trace_file_server=srv 
trace_unique_client=true 

Oracle Databaseのネイティブ・ネットワーク暗号化

sqlnet.encryption_server=accepted 
sqlnet.encryption_client=requested 
sqlnet.encryption_types_server=(AES256) 
sqlnet.encryption_types_client=(AES256) 

ノート:

RC4_40アルゴリズムは、このリリースでは非推奨です。より強力なアルゴリズムを使用するようにOracle Database環境を移行するには、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードしてインストールします。

Oracle Databaseのネットワーク・データ整合性

#ASO Checksum 
sqlnet.crypto_checksum_server=requested 
sqlnet.crypto_checksum_client=requested  
sqlnet.crypto_checksum_types_server = (SHA256) 
sqlnet.crypto_checksum_types_client = (SHA256) 

Transport Layer Security

#SSL 
WALLET_LOCATION = (SOURCE=
                   (METHOD = FILE) 
                      (METHOD_DATA = 
                         DIRECTORY=/wallet) 

SSL_CIPHER_SUITES=(TLS_AES_128_CCM_SHA256) 
SSL_VERSION= TLSv1.3 
SSL_CLIENT_AUTHENTICATION=FALSE 

共通

#Common
automatic_ipc = off
sqlnet.authentication_services = (beq)
names.directory_path = (TNSNAMES)

Kerberos

#Kerberos 
sqlnet.authentication_services = (beq, kerberos5)
sqlnet.authentication_kerberos5_service = oracle
sqlnet.kerberos5_conf= /krb5/krb.conf
sqlnet.kerberos5_keytab= /krb5/v5srvtab
sqlnet.kerberos5_realms= /krb5/krb.realm
sqlnet.kerberos5_cc_name = /krb5/krb5.cc
sqlnet.kerberos5_clockskew=900
sqlnet.kerberos5_conf_mit=false

RADIUS

#Radius
sqlnet.authentication_services = (beq, RADIUS )
sqlnet.radius_authentication_timeout = (10)
sqlnet.radius_authentication_retries = (2)
sqlnet.radius_authentication_port = (1645)
sqlnet.radius_send_accounting = OFF
sqlnet.radius_secret = /orant/network/admin/radius.key
sqlnet.radius_authentication = radius.us.example.com
sqlnet.radius_challenge_response = OFF
sqlnet.radius_challenge_keyword = challenge
sqlnet.radius_challenge_interface =
oracle/net/radius/DefaultRadiusInterface
sqlnet.radius_classpath = /jre1.1/

20.4 ネイティブ・ネットワーク暗号化のセキュリティの向上

Oracleでは、Oracle Databaseサーバーとクライアントの両方のネイティブ・ネットワーク暗号化のセキュリティを強化するパッチを提供しています。

20.4.1 ネイティブ・ネットワーク暗号化のセキュリティの向上について

Oracleのこのパッチは、暗号化アルゴリズムおよびチェックサム・アルゴリズムを更新し、脆弱な暗号化アルゴリズムおよびチェックサム・アルゴリズムを非推奨にします。

このパッチは、My Oracle Supportノート2118136.2からダウンロードでき、サーバーとクライアントとの接続を強化し、ネイティブ・ネットワーク暗号化アルゴリズムおよびチェックサム・アルゴリズムの脆弱性を修正します。これにより、安全性の低い古い暗号化アルゴリズムおよびチェックサム・アルゴリズムの無効化が容易になる2つのパラメータが追加されます。このパッチをOracle Databaseサーバーおよびクライアントに適用することをお薦めします。

このパッチは、Oracle Databaseリリース11.2以降に適用されます。このパッチは、スタンドアロン、マルチテナント、プライマリ・スタンバイ、Oracle Real Application Clusters (Oracle RAC)、およびデータベース・リンクを使用する環境に適用できます。

改善されたサポート対象アルゴリズムは次のとおりです。

  • 暗号化アルゴリズム: AES128、AES192およびAES256
  • チェックサム・アルゴリズム: SHA1、SHA256、SHA384およびSHA512

非推奨であり、パッチ適用後に使用をお薦めしていない脆弱なアルゴリズムは、次のとおりです。

  • 暗号化アルゴリズム: DES、DES40、3DES112、3DES168、RC4_40、RC4_56、RC4_128およびRC4_256
  • チェックサム・アルゴリズム: MD5

実行する一般的な手順としては、まず、Oracle Database環境におけるサポート対象外アルゴリズムへの参照をサポート対象アルゴリズムに置換し、サーバーにパッチを適用し、クライアントにパッチを適用し、最後に、サーバーとクライアントとの正しい接続が再度有効になるようにsqlnet.oraのパラメータを設定します。

このパッチは次の領域に影響を与えますが、これらに限定されるわけではありません。

  • JDBCネットワーク暗号化関連の構成設定
  • Oracle Net Managerを使用して構成した暗号化パラメータおよび整合性パラメータ
  • Transport Layer Security (TLS)のSSL_CIPHER_SUITEパラメータ設定
  • SecureFiles LOBの暗号化列
  • データベース常駐接続プーリング(DRCP)の構成
  • Oracle Call Interface (Oracle OCI)、ODP.NETの構成に使用される暗号化設定

20.4.2 ネイティブ・ネットワーク暗号化へのセキュリティ改善更新の適用

Oracle Databaseサーバーおよびクライアントにパッチを適用することに加え、サーバーおよびクライアントのsqlnet.oraのパラメータを設定する必要があります。

次のステップは、次に示す順序で実行してください。
  1. パッチをインストールするサーバーとクライアントをバックアップします。
  2. My Oracle Supportにログインし、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードします。
    My Oracle Supportは、次のURLにあります。

    https://support.oracle.com

  3. サーバーにパッチを適用します。
    My Oracle Supportノート2118136.2の手順に従って、サーバーにパッチを適用します。後述のステップで、同じパッチをクライアントに適用します。
  4. クライアントにパッチを適用します。

    パッチを適用する必要があるクライアントを決定します。

    My Oracle Supportノート2118136.2の手順に従って、各クライアントにパッチを適用します。

  5. 各クライアントのsqlnet.oraファイル内で、非推奨になったアルゴリズムが定義されている場合は、それらのアルゴリズムをすべて削除します。
    次のパラメータが定義されていないか、アルゴリズムがリストされていない場合は、このステップを省略できます。
    • SQLNET.ENCRYPTION_TYPES_CLIENT
    • SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
  6. サーバーのsqlnet.oraファイル内で、非推奨になったアルゴリズムが定義されている場合は、それらのアルゴリズムをすべて削除します。
    次のパラメータが定義されていないか、アルゴリズムがリストされていない場合は、このステップを省略できます。
    • SQLNET.ENCRYPTION_TYPES_SERVER
    • SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
  7. サーバー上のセキュリティを最大限に高めるには、sqlnet.oraの次のパラメータを設定します。
    • SQLNET.ENCRYPTION_SERVER = REQUIRED
    • SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
    • SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
    • SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA512)
    • SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS = FALSE
  8. クライアント上のセキュリティを最大限に高めるには、sqlnet.oraの次のパラメータを設定します。
    • SQLNET.ENCRYPTION_CLIENT = REQUIRED
    • SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256)
    • SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED
    • SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA512)
    • SQLNET.ALLOW_WEAK_CRYPTO = FALSE
  9. 各クライアントのsqlnet.oraファイル内で、ステップ5および6に従って、非推奨のアルゴリズムをすべてサーバーおよびクライアントから削除し、クライアントがパッチ未適用のサーバーと通信できないように、パラメータSQLNET.ALLOW_WEAK_CRYPTO = FALSEを設定します。
    SQLNET.ALLOW_WEAK_CRYPTOパラメータがFALSEに設定されている場合、脆弱なアルゴリズムの使用をクライアントが試みると、サーバーでORA-12269: クライアントで脆弱な暗号化/暗号チェックサム・バージョンが使用されていますというエラーが発生します。脆弱なアルゴリズムを使用しているサーバー(またはプロキシ)に接続しているクライアントは、ORA-12268: サーバーで脆弱な暗号化/暗号チェックサム・バージョンが使用されていますというエラーを受信します。
  10. サーバーのsqlnet.oraファイルで、ステップ9に従って、SQLNET.ALLOW_WEAK_CRYPTO = FALSEのすべてのクライアントを更新した後、パラメータSQLNET.ALLOW_WEAK_CRYPTO_CLIENTS = FALSEを設定します。このパラメータにより、パッチ適用済のサーバーがパッチ未適用のクライアントと通信できないようにします。

    SQLNET.ALLOW_WEAK_CRYPTOパラメータがFALSEに設定されている場合、脆弱なアルゴリズムの使用をクライアントが試みると、サーバーでORA-12269: クライアントで脆弱な暗号化/暗号チェックサム・バージョンが使用されていますというエラーが発生します。脆弱なアルゴリズムを使用しているサーバー(またはプロキシ)に接続しているクライアントは、ORA-12268: サーバーで脆弱な暗号化/暗号チェックサム・バージョンが使用されていますというエラーを受信します。

    データベース・リンクを使用すると、最初のデータベース・サーバーはクライアントとして機能し、2番目のサーバーに接続します。したがって、SQLNET.ALLOW_WEAK_CRYPTOFALSEに設定する前に、すべてのサーバーに完全にパッチが適用され、サポートされていないアルゴリズムが削除されていることを確認してください。

20.5 データの整合性アルゴリズムのサポート

データ整合性アルゴリズムは、サード・パーティ攻撃およびメッセージ・リプレイ攻撃から保護します。SHA-2をお薦めしますが、SHA-1 (非推奨)およびMD5は下位互換性のために維持されています。

ノート:

MD5は、このリリースでは非推奨です。より強力なアルゴリズムを使用するようにOracle Database環境を移行するには、My Oracle Supportノート2118136.2で説明されているパッチをダウンロードしてインストールします。

これらのハッシュ・アルゴリズムは、データがなんらかの方法で変更された場合に変更されるチェックサムを作成します。この保護機能は暗号化プロセスとは独立して動作するため、暗号化の有無に関係なくデータ整合性を保つことができます。

20.6 Diffie-Hellmanベースのキー交換

Diffie-Hellmanキー交換アルゴリズムを使用して、マルチユーザー環境でデータを保護できます。

マルチユーザー環境では、安全なキーを配布することは困難です。Oracle Databaseでは、一般的なDiffie-Hellmanキー交換アルゴリズムを使用して、暗号化およびデータ整合性の両面において安全なキーの配布を実現します。

暗号化を使用して暗号データを保護するときは、キーを頻繁に変更して、キーの安全性が損なわれた場合の影響を最小限に抑える必要があります。そのため、Oracle Databaseのキー管理機能では、セッションごとにセッション・キーが変更されます。

Diffie-Hellmanキー交換アルゴリズムは、セキュアでないチャネルを介して通信する2つのパーティが、それらのパーティのみが知っているランダムな数字を合意させる方法です。Oracle Databaseでは、セッション・キーの生成にDiffie-Hellmanキー交換アルゴリズムが使用されています。

クライアントとサーバーは、Diffie-Hellmanによって生成されるセッション・キーを使用して通信を開始します。サーバーに対するクライアントの認証時に、両者のみが認識する共有秘密鍵が確立されます。Oracle Databaseでは、その共有秘密キーとDiffie-Hellmanセッション・キーを組み合せることで、中間者攻撃を阻止するためのさらに強力なセッション・キーを生成します。

ノート:

認証されていないTLS接続に対する匿名RC4暗号スイートの使用は、Oracle Database 21c (SSL_DH_anon_WITH_RC4_128_MD5)でサポート対象外となりました。Oracle Databaseで使用可能なよりセキュアな認証接続を使用することをお薦めします。Oracle Enterprise User Securityに対して、Oracle Internet Directoryに接続するためにRC4とともに匿名Diffie-Hellmanを使用する場合は、別のアルゴリズム接続を使用するように移行する必要があります。TLS一方向または証明書を使用した相互認証のいずれかを使用することをお薦めします。Oracle Database 23c以降、Oracle Enterprise User Securityは非推奨です。

20.7 データの暗号化および整合性の構成

Oracle Database固有のOracle Net Servicesによる暗号化および整合性は、Oracle Net Servicesがインストール済であることを前提としています。

20.7.1 暗号化および整合性のアクティブ化について

どのネットワーク接続でも、クライアントとサーバーの両方が複数の暗号化アルゴリズムと複数の整合性アルゴリズムをサポートできます。

接続が確立されるときに、sqlnet.oraファイルで指定されているアルゴリズムの中から、使用するアルゴリズムをサーバーが選択します。サーバーは、クライアントとサーバーの両方で使用できるアルゴリズム間で一致するものを検索し、サーバー側のリストで最初にあって、クライアント側のリストにも出現するアルゴリズムを選択します。接続の一方の側がアルゴリズム・リストを指定していない場合、その側でインストールされているすべてのアルゴリズムを使用できます。いずれかの側でインストールされていないアルゴリズムを指定すると、エラー・メッセージORA-12650が表示され、接続が失敗します。

暗号化パラメータと整合性パラメータを定義するには、ネットワーク上のクライアントとサーバーのsqlnet.oraファイルを変更します。

利用可能な暗号化アルゴリズムの一部またはすべて、および利用可能な整合性アルゴリズムの一方または両方を構成できます。各接続セッションに使用できるのは、1つの暗号化アルゴリズムと1つの整合性アルゴリズムのみです。

ノート:

Oracle Databaseでは、クライアントとサーバーで利用可能なアルゴリズムのうち、最初の暗号化アルゴリズムと最初の整合性アルゴリズムが自動的に選択されます。ネゴシエーションの優先順にアルゴリズムとキーの長さを選択することをお薦めします(つまり、最も強力なキーの長さを最初に選択します)。

20.7.2 暗号化および整合性のネゴシエーションについて

データの暗号化および整合性を使用するシステム上のsqlnet.oraファイルには、REJECTEDACCEPTEDREQUESTEDREQUIREDパラメータの一部またはすべてが含まれている必要があります。

20.7.2.1 暗号化および整合性のネゴシエーションの値について

Oracle Net Managerを使用して、暗号化と整合性の構成パラメータに4つの値を指定できます。

次の4つの値はセキュリティの低い順で記載されています。暗号化および整合性を使用しているシステムのクライアントとサーバーのプロファイル・ファイル(sqlnet.ora)でこれらを使用する必要があります。

REJECTEDは、クライアントとサーバーの間の通信に最小レベルのセキュリティを提供し、値REQUIREDは、最高レベルのネットワーク・セキュリティを提供します。

  • REJECTED

  • ACCEPTED

  • REQUESTED

  • REQUIRED

各パラメータのデフォルト値はACCEPTEDです。

Oracle Databaseサーバーおよびクライアントは、デフォルトではACCEPT暗号化接続に設定されます。これは、接続の片側のみ(サーバー側またはクライアント側)を構成するだけで、接続ペアに対して目的の暗号化および整合性設定を有効化できることを意味します。

したがって、たとえば、数多くのOracleクライアントがOracleデータベースに接続する場合も、サーバー側でsqlnet.oraに適切な変更を加えることによって、すべての接続に対して必要な暗号化および整合性設定を構成できます。クライアントごとに個別に構成の変更を実装する必要はありません。

表20-5に、クライアントとサーバーの構成パラメータを各種組み合せたときに、セキュリティ・サービスが有効になるかどうかを示します。サーバーまたはクライアントでREQUIREDが指定されている場合は、共通のアルゴリズムが存在しないと、接続が失敗します 。それ以外の場合は、サービスが有効化されていて、共通のサービス・アルゴリズムが存在しないと、サービスが無効化されます

表20-5 暗号化とデータ整合性のネゴシエーション

クライアントの設定 サーバーの設定 暗号化とデータのネゴシエーション

REJECTED

REJECTED

OFF

ACCEPTED

REJECTED

OFF

REQUESTED

REJECTED

OFF

REQUIRED

REJECTED

接続失敗

REJECTED

ACCEPTED

OFF

ACCEPTED

ACCEPTED

OFF脚注1

REQUESTED

ACCEPTED

ON

REQUIRED

ACCEPTED

ON

REJECTED

REQUESTED

OFF

ACCEPTED

REQUESTED

ON

REQUESTED

REQUESTED

ON

REQUIRED

REQUESTED

ON

REJECTED

REQUIRED

接続失敗

ACCEPTED

REQUIRED

ON

REQUESTED

REQUIRED

ON

REQUIRED

REQUIRED

ON

脚注1

この値のデフォルトはOFFです。ユーザーがOracle Net Managerを使用するか、sqlnet.oraファイルを変更することによってこのパラメータを変更しないかぎり、暗号化とデータ整合性は有効化されません。

20.7.2.2 REJECTED構成パラメータ

REJECTED値は、他方が要求している場合でも、セキュリティ・サービスを無効にします。

このシナリオでは、セキュリティ・サービスの使用が許可されないことを接続元で指定します。接続先がREQUIREDに設定されている場合、エラー・メッセージORA-12650が表示されて接続が終了します。接続先がREQUESTEDACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。

20.7.2.3 ACCEPTED構成パラメータ

ACCEPTED値は、他方が必要としている場合または要求している場合に、セキュリティ・サービスを有効にします。

このシナリオでは、接続元からはセキュリティ・サービスを要求しませんが、接続先がREQUIREDまたはREQUESTEDに設定されている場合は、セキュリティ・サービスが有効化されます。接続先がREQUIREDまたはREQUESTEDに設定されていて、該当する暗号化アルゴリズムまたは整合性アルゴリズムが見つかると、エラーは発生せずに、セキュリティ・サービスが有効のまま接続が継続されます。接続先がREQUIREDに設定されていて、該当するアルゴリズムが見つからない場合、エラー・メッセージORA-12650が表示されて接続が終了します。

接続先がREQUESTEDに設定されていて、該当するアルゴリズムが見つからない場合、または接続先がACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。

20.7.2.4 REQUESTED構成パラメータ

REQUESTED値は、他方が許可している場合にセキュリティ・サービスを有効にします。

このシナリオでは、接続元がセキュリティ・サービスの使用を希望します(必須ではない)。接続先でACCEPTEDREQUESTEDまたはREQUIREDが指定されている場合、セキュリティ・サービスが有効化されます。接続先に該当するアルゴリズムがある必要があります。見つからない場合、セキュリティ・サービスは有効化されません。接続先でREQUIREDが指定されていて、該当するアルゴリズムが見つからない場合、接続は失敗します

20.7.2.5 REQUIRED構成パラメータ

REQUIRED値は、セキュリティ・サービスを有効にする、または接続を禁止します。

このシナリオでは、接続元がセキュリティ・サービスの有効化を強制します。接続先でREJECTEDが指定されている場合、または接続先に互換性のあるアルゴリズムが見つからない場合、接続は失敗します

20.7.3 Oracle Net Managerを使用した暗号化および整合性パラメータの構成

Oracle Net Managerを使用して、暗号化および整合性パラメータを設定または変更できます。

20.7.3.1 クライアントとサーバーでの暗号化の構成

クライアントとサーバーで暗号化を構成するには、Oracle Net Managerを使用します。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. 「暗号化」タブを選択します。
  5. 「暗号化」ボックスからCLIENTまたはSERVERオプションを選択します。
  6. 「暗号化タイプ」リストから、次のいずれかを選択します。
    • REQUESTED

    • REQUIRED

    • ACCEPTED

    • REJECTED

  7. (オプション)「暗号化シード」フィールドに、10から70字のランダムな文字を入力します。クライアントの暗号化シードは、サーバーの暗号化シードとは別のものにします。
  8. 「使用可能なメソッド」リストで暗号化アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。
  9. 「ファイル」「ネットワーク構成の保存」を選択します。sqlnet.oraファイルが更新されます。
  10. 同じ手順を繰り返して、もう一方のシステムで暗号化を構成します。2つのシステムのsqlnet.oraファイルに、次のエントリが含まれている必要があります。
    • サーバー:

      SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required]
      SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_encryption_algorithm])
    • クライアント:

      SQLNET.ENCRYPTION_CLIENT = [accepted | rejected | requested | required]
      SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm [,valid_encryption_algorithm])
      

表20-6に、有効な暗号化アルゴリズムと対応する有効な値を示します。

表20-6 有効な暗号化アルゴリズム

アルゴリズム名 有効な値

AES 256ビット・キー

AES256

AES 192ビット・キー

AES192

AES 128ビット・キー

AES128

20.7.3.2 クライアントとサーバーでの整合性の構成

Oracle Net Managerを使用して、クライアントとサーバーの両方でネットワーク整合性を構成できます。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. 「整合性」タブを選択します。
  5. いずれのシステムを構成しているかに応じて、「整合性」ボックスから「サーバー」または「クライアント」を選択します。
  6. 「チェックサム・レベル」リストから、次のチェックサム・レベル値のいずれかを選択します。
    • REQUESTED

    • REQUIRED

    • ACCEPTED

    • REJECTED

  7. 「使用可能なメソッド」リストで整合性アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。
  8. 「ファイル」「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが更新されます。

  9. 同じ手順を繰り返して、もう一方のシステムで整合性を構成します。

    2つのシステムのsqlnet.oraファイルに、次のエントリが含まれている必要があります。

    • サーバー:

      SQLNET.CRYPTO_CHECKSUM_SERVER = [accepted | rejected | requested | required]
      SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])
      
    • クライアント:

      SQLNET.CRYPTO_CHECKSUM_CLIENT = [accepted | rejected | requested | required]
      SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])
      

ユーザーが使用できる有効な整合性/チェックサムのアルゴリズムは次のとおりです。

  • SHA1
  • SHA256
  • SHA384
  • SHA512
20.7.3.3 異なるユーザーに対するOracleネイティブ暗号化とSSL認証の両方の同時有効化

SQLNET.ENCRYPTION_CLIENTおよびSQLNET.ENCRYPTION_SERVERの設定に応じて、異なるユーザーに対してOracleネイティブ暗号化とSSL認証の両方を同時に許可するようにOracle Databaseを構成できます。

20.7.3.3.1 異なるユーザーに対するOracleネイティブ暗号化とSSL認証の両方の同時有効化について

デフォルトでは、Oracle Databaseでは、異なるユーザーに対するOracleネイティブ暗号化とTransport Layer Security (SSL)認証の両方を同時に使用することはできません。

Oracleネイティブ暗号化(Advanced Networking Option (ANO)暗号化とも呼ばれる)とTLS認証の併用は、二重暗号化と呼ばれます。

一部のユーザーにユーザー名とパスワードの使用によるサーバーへの接続を可能にし、他のユーザーにTLS証明書の使用によるそのサーバーへの認証を可能にするように、TCPリスナーとTCPSリスナーの両方を構成する必要がある場合があります。このような場合、パスワードベースの認証とTLS認証の両方を構成する必要があります。以前のリリースの回避策では、SQLNET.ENCRYPTION_SERVERパラメータをrequestedに設定していました。SQLNET.ENCRYPTION_SERVERrequiredに設定されている必要がある場合、SQLNET.ENCRYPTION_CLIENTSQLNET.ENCRYPTION_SERVERの両方のIGNORE_ANO_ENCRYPTION_FOR_TCPSパラメータをTRUEに設定できます。デフォルトでは、これはFALSEに設定されています。

IGNORE_ANO_ENCRYPTION_FOR_TCPSTRUEに設定すると、クライアントはすべての発信TCPS接続のSQLNET.ENCRYPTION_CLIENTパラメータに設定されている値を無視します。このパラメータを使用すると、TCPSクライアントの使用に矛盾がある場合に、データベースでSQLNET.ENCRYPTION_CLIENTまたはSQLNET.ENCRYPTION_SERVERの設定を、これら2つのパラメータがrequiredに設定されていても無視できます。

20.7.3.3.2 異なるユーザーに対するOracleネイティブ暗号化とSSL認証の両方の同時構成

IGNORE_ANO_ENCRYPTION_FOR_TCPSパラメータを使用して、Oracleネイティブ暗号化とTransport Layer Security (SSL)認証の両方を同時に使用できるようにします。

サーバーではIGNORE_ANO_ENCRYPTION_FOR_TCPSsqlnet.oraファイルで設定する必要があり、クライアントではsqlnet.oraファイルまたはtnsnames.oraファイルのいずれかで設定できます。
  1. データベース・サーバーにログインします
  2. sqlnet.oraファイルの場所に移動します。
    デフォルトでは、sqlnet.oraORACLE_BASE/network/adminディレクトリにあります。sqlnet.oraファイルは、環境変数TNS_ADMINで指定されたディレクトリに配置される場合もあります。
  3. sqlnet.oraで、現在のSQLNET.ENCRYPTION_SERVERの設定がrequiredrequestedかを確認します。
  4. SQLNET.ENCRYPTION_SERVERがrequiredに設定されている場合は、SQLNET.IGNORE_ANO_ENCRYPTION_FOR_TCPSsqlnet.oraに追加してからTRUEに設定します。
    IGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUE
  5. sqlnet.oraファイルを保存して終了します。
  6. クライアントにログインします。
    クライアントの場合、sqlnet.oraファイルまたはtnsnames.oraファイルのいずれかに値を設定できます。
    • sqlnet.oraの値の設定: SQLNET.ENCRYPTION_CLIENTパラメータがrequiredに設定されているか確認します。SQLNET.ENCRYPTION_CLIENTの場合は、sqlnet.oraファイルを編集して次の設定を行います。
      IGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUE
    • tnsnames.oraの値の設定: デフォルトでは、tnsnames.orasqlnet.oraと同じ場所にあります。SQLNET.ENCRYPTION_CLIENTsqlnet.orarequiredに設定されている場合は、TNS_ALIAS設定のSECURITY部分でIGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUEを設定します。たとえば:
      test_tls=
          (DESCRIPTION =
             (ADDRESS=(PROTOCOL=tcps)(HOST=)(PORT=1750))
             (CONNECT_DATA=(SID=^ORACLE_SID^))
             (SECURITY=(IGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUE))
           ) 

20.8 ネイティブ・ネットワーク暗号化構成のトラブルシューティング

Oracleは、一般的なネイティブ・ネットワーク暗号化構成の問題に関するガイダンスを提供します。

20.8.1 現在のセッションでネイティブ・ネットワーク暗号化が有効かどうかの確認

サーバーおよびクライアントのsqlnet.oraファイルでの暗号化パラメータの設定方法に応じて、現在のセッションでネイティブ・ネットワーク暗号化が有効になっているかどうかを確認できます。

  1. サーバーで、ENCRYPTION_SERVERおよびENCRYPTION_TYPES_SERVERパラメータを確認します。
    たとえば:
    sqlnet.encryption_server = required
    sqlnet.encryption_types_server = AES256

    デフォルトでは、sqlnet.oraはサーバーとクライアントの両方の$ORACLE_HOME/network/adminディレクトリに配置されます。

  2. クライアントで、ENCRYPTION_SERVERおよびENCRYPTION_TYPES_CLIENTパラメータを確認します。
    たとえば:
    sqlnet.encryption_server = required
    sqlnet.encryption_types_client = AES256
  3. データベース接続のネイティブ・ネットワーク暗号化が構成されているクライアントから、V$SESSION_CONNECT_INFO動的ビューを問い合せます。
    たとえば:
    set line 1000
    col NETWORK_SERVICE_BANNER for a100
    SELECT NETWORK_SERVICE_BANNER FROM V$SESSION_CONNECT_INFO WHERE SID=(SELECT SID FROM V$MYSTAT WHERE ROWNUM<2);

    接続が暗号化されていない場合、次のような出力が表示されます。

    NETWORK_SERVICE_BANNER
    --------------------------------------------------------------------------------
    TCP/IP NT Protocol Adapter for Linux: Version version_number - Production
    Authentication service for Linux: Version version_number - Production
    KERBEROS5PRE Authentication service adapter for Linux: Version version_number - Production
    Encryption service for Linux: Version version_number - Production
    Crypto-checksumming service for Linux: Version version_number – Production

    ただし、接続が暗号化されている場合、次のような出力が表示されます。太字(AES256 Encryption service adapter for Linux)の追加行は、接続が暗号化されていることを示します。

    NETWORK_SERVICE_BANNER
    --------------------------------------------------------------------------------
    TCP/IP NT Protocol Adapter for Linux: Version version_number - Production
    Authentication service for Linux: Version version_number - Production
    KERBEROS5PRE Authentication service adapter for Linux: Version version_number - Production
    Encryption service for Linux: Version version_number - Production
    AES256 Encryption service adapter for Linux: Version version_number - Production
    Crypto-checksumming service for Linux: Version version_number - Production

20.8.2 ネイティブ・ネットワーク暗号化構成のORA-12650およびORA-12660エラー

Oracleは、ネイティブ・ネットワーク暗号化構成で発生する可能性のあるORA-12650およびORA-12660エラーに対するいくつかのソリューションを提供しています。

ORA-12650: 共通の暗号化またはデータ整合性アルゴリズムがありません。エラーとORA-12660: 暗号化または暗号チェックサム・パラメータに互換性がありません。エラーは、両側(クライアントとサーバー)でSQLNET.ENCRYPTION_CLIENTSQLNET.ENCRYPTION_SERVERrejectedに設定した場合にのみ発生します。また、sqlnet.oraファイルに構成の誤りがある場合にも発生する可能性があります。

この問題を修正するには、次のようにします。

  • クライアントとサーバーの両方で、sqlnet.oraファイルの設定を確認します。
  • sqlnet.oraの設定が正しい場合は、環境変数のPATHTNS_ADMINを確認します。
  • クライアントとサーバーのディレクトリ・ツリーに、追加のsqlnet.oraファイルがあるかどうかを調べます。
  • sqlnet.oraの設定と実際の動作が異なる場合や、sqlnet.oraファイルに特定の矛盾点が見つからない場合は、サーバー側とクライアント側の両方でネット・トレース・レベル16を実行します。