プライマリ・コンテンツに移動
Oracle® Databaseセキュリティ・ガイド
12c リリース1 (12.1)
B71285-10
目次へ移動
目次
索引へ移動
索引

前
次

13 Oracle Databaseのネットワーク暗号化とデータ整合性の構成

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

内容は次のとおりです。

Oracle Databaseのネットワーク暗号化とデータ整合性について

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

内容は次のとおりです。

Oracleデータ・ネットワークの暗号化および整合性について

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

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

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

Advanced Encryption Standard

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

AESは、ネットワーク上で機密データを保護するために、あらゆる米国政府組織および企業で使用できます。この暗号化アルゴリズムでは、128ビット、192ビットおよび256ビットの3つの標準の鍵の長さが定義されています。いずれのバージョンも、外部暗号ブロック連鎖(CBC)モードで稼働します。

Oracle Databaseのネットワーク暗号化のデータ整合性

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

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

表13-1に、これらの攻撃の情報を示します。

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

攻撃形態 説明

データ変更攻撃

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

再生攻撃

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

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

鍵で順序付けられたMessage Digest 5 (MD5)アルゴリズムまたはSecure Hash Algorithm (SHA-1およびSHA-2)を使用して、これらの攻撃からデータを保護できます。

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

Diffie-Hellmanベースの鍵交換

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

マルチユーザー環境では、安全な鍵を配布することは困難です。Oracle Databaseでは、一般的な方法を使用して、暗号化およびデータ整合性の両面において安全な鍵の配布を実現します。

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

認証鍵フォールドインを使用して、Diffie-Hellman鍵交換アルゴリズムによる鍵交換に対する第三者の攻撃(従来の呼称は介在者攻撃)を阻止できます。この暗号化では、クライアントとサーバーのみが認識している共有秘密鍵とDiffie-Hellmanによって交換される最初のセッション鍵を組み合せることによって、セッション鍵の安全性を大幅に強化しています。

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

注意:

認証鍵フォールドイン機能は、Oracle Databaseに組み込まれているため、システム管理者またはネットワーク管理者による構成作業は必要ありません。

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

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

内容は次のとおりです。

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

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

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

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

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

注意:

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

関連項目:

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

データの暗号化と整合性を使用するクライアント・システムおよびサーバー・システムのプロファイル(sqlnet.oraファイル)には、REJECTEDACCEPTEDREQUESTEDおよびREQUIREDパラメータの一部またはすべてが含まれている必要があります。

内容は次のとおりです。

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

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

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

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

  • REJECTED

  • ACCEPTED

  • REQUESTED

  • REQUIRED

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

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

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

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

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

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

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ファイルを変更することによってこのパラメータを変更しないかぎり、暗号化とデータ整合性は有効化されません。

REJECTED構成パラメータ

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

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

ACCEPTED構成パラメータ

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

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

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

REQUESTED構成パラメータ

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

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

REQUIRED構成パラメータ

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

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

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

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

内容は次のとおりです。

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

クライアントとサーバーで暗号化を構成するには、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. 「暗号化タイプ」リストから、次のいずれかを選択します。
    • リクエスト済

    • 必須

    • 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])
      

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

表13-3 有効な暗号化アルゴリズム

アルゴリズム名 有効な値

AES 256ビット鍵

AES256

AES 192ビット鍵

AES192

AES 128ビット鍵

AES128

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

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. 「チェックサム・レベル」リストから、次のチェックサム・レベル値のいずれかを選択します。
    • リクエスト済

    • 必須

    • 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])
      

表13-4に、有効な整合性アルゴリズムと対応する有効な値を示します。

表13-4 有効な整合性アルゴリズム

アルゴリズム名 有効な値

MD5

MD5

SHA-1

SHA1

SHA-2

SHA256

SHA-2

SHA384

SHA-2

SHA512