この章では、Oracle Advanced Securityにおける、Oracle Net Services固有のデータの暗号化および整合性を構成する方法について説明します。内容は次のとおりです。
セキュアな暗号システムの目的は、鍵に基づいて、平文データを解読不能な暗号文に変換することです。正しい鍵がなければ、暗号文を元の平文に変換することはきわめて困難(計算上は不可能)です。対称暗号システムでは、同じデータの暗号化と復号化の両方に同じ鍵を使用します。Oracle Advanced Securityは、Advanced Encryption Standard (AES)および3DESの対称暗号システムを提供して、Oracle Net Servicesトラフィックの機密保護を図ります。
この項では、Oracle Advanced Securityの最新リリースで利用可能なデータ暗号化アルゴリズムについて説明します。
注意: Oracle Advanced Securityの8.1.7より前のリリースには、米国内版、アップグレード版および輸出版の3つのエディションがあり、それぞれ異なる鍵の長さが使用されていました。このリリースには、以前は米国内版エディションでのみ利用可能であった暗号化アルゴリズムと鍵の長さを補完したものが組み込まれています。以前のバージョンの製品をデプロイする場合は、該当する製品リリースの米国内版エディションを入手できます。 |
Oracle Advanced Securityでは、米国連邦情報処理標準(FIPS)暗号化アルゴリズムであるAdvanced Encryption Standard (AES)がサポートされています。AESは、ネットワーク上で機密データを保護するために、あらゆる米国政府組織および企業で使用できます。この暗号化アルゴリズムでは、128ビット、192ビットおよび256ビットの3つの標準の鍵の長さが定義されています。いずれのバージョンも、外部暗号ブロック連鎖(CBC)モードで稼働します。
Oracle Advanced Securityでは、DESアルゴリズムにメッセージ・データを3回渡して暗号化する、Triple-DES (3DES)暗号化がサポートされています。3DESは高度なメッセージ・セキュリティを提供しますが、パフォーマンスの低下を伴います。パフォーマンス低下の度合いは、暗号化を実行するプロセッサの速度によって異なります。3DESは、標準のDESアルゴリズムに比べ、データ・ブロックの暗号化に通常3倍の時間を要します。
3DESには2つの鍵を使用するバージョンと3つの鍵を使用するバージョンがあり、それぞれ有効な鍵の長さは112ビットと168ビットです。いずれのバージョンも外部暗号ブロック連鎖(CBC)モードで稼働します。
注意: 3DESは、企業および政府機関の使用に選択される暗号化アルゴリズムとして、AESに取って代わられました。 |
ネットワーク・データを暗号化すると、ネットワーク上で転送される平文データを不正なユーザーが閲覧できなくなり、データのプライバシが保護されます。また、Oracle Advanced Securityでは、2つの形態の攻撃からデータを保護できます。これらの攻撃の詳細は、表9-1を参照してください。
表9-1 攻撃の2つの形態
攻撃形態 | 説明 |
---|---|
データ変更攻撃 |
データ変更攻撃とは、不正なユーザーが転送中のデータを傍受し、データを変更して再転送することです。たとえば、銀行への$100の預入れを傍受して、金額を$10,000に変更し、その水増し金額を再転送することをデータ変更攻撃といいます。 |
再生攻撃 |
再生攻撃とは、有効なデータ全体を反復的に再送することです。たとえば、銀行からの$100の払戻しを傍受し、その払戻しを10回再転送して、最終的に$1,000受け取るといった攻撃です。 |
マルチユーザー環境では、安全な鍵を配布することは困難です。Oracle Advanced Securityでは、一般的なDiffie-Hellman鍵交換アルゴリズムを使用して、暗号化およびデータ整合性の両面において安全な鍵の配布を実現します。
暗号化を使用して暗号データを保護するときは、鍵を頻繁に変更して、鍵の安全性が損なわれた場合の影響を最小限に抑える必要があります。そのため、Oracle Advanced Securityの鍵管理機能では、セッションごとにセッション鍵が変更されます。
認証鍵フォールドインを使用する目的は、Diffie-Hellman鍵交換に対する第三者の攻撃(従来の呼称は介在者攻撃)を阻止することです。この暗号化では、クライアントとサーバーのみが認識している共有秘密鍵とDiffie-Hellmanによって交換される最初のセッション鍵を組み合せることによって、セッション鍵の安全性を大幅に強化しています。
クライアントとサーバーは、Diffie-Hellmanによって生成されるセッション鍵を使用して通信を開始します。サーバーに対するクライアントの認証時に、両者のみが認識する共有秘密鍵が確立されます。Oracle Advanced Securityでは、その共有秘密鍵とDiffie-Hellmanセッション鍵を組み合せることで、介在者攻撃を阻止するためのさらに強力なセッション鍵を生成します。
注意: 認証鍵フォールドイン機能は、Oracle Advanced Securityに組み込まれているため、システム管理者またはネットワーク管理者による構成作業は必要ありません。 |
この項では、Oracle Advanced Security固有のOracle Net Servicesによる暗号化および整合性を構成する方法について説明します。Oracle Net Servicesがインストール済であることを前提としています。
ネットワーク管理者またはセキュリティ管理者は、暗号化と整合性の構成パラメータを設定します。クライアント・システムおよびサーバー・システムでデータの暗号化と整合性を使用する場合、各システム上のプロファイル(sqlnet.ora
ファイル)に、この項の次のトピックで説明するパラメータの一部またはすべてを指定する必要があります。
どのネットワーク接続でも、クライアントとサーバーの両方が複数の暗号化アルゴリズムと複数の整合性アルゴリズムをサポートできます。接続が確立されるときに、sqlnet.ora
ファイルで指定されているアルゴリズムの中から、使用するアルゴリズムをサーバーが選択します。
サーバーは、クライアントとサーバーの両方で使用できるアルゴリズム間で一致するものを検索し、サーバー側のリストで最初にあって、クライアント側のリストにも出現するアルゴリズムを選択します。接続の一方の側がアルゴリズム・リストを指定していない場合、その側でインストールされているすべてのアルゴリズムを使用できます。いずれかの側でインストールされていないアルゴリズムを指定すると、エラー・メッセージORA-12650
が表示され、接続が失敗します。
暗号化パラメータと整合性パラメータを定義するには、ネットワーク上のクライアントとサーバーのsqlnet.ora
ファイルを変更します。
利用可能なOracle Advanced Securityの暗号化アルゴリズム(表9-3)の一部またはすべて、および利用可能な整合性アルゴリズム(SHA-1)を構成できます。各接続セッションに使用できるのは、1つの暗号化アルゴリズムと1つの整合性アルゴリズムのみです。
注意: クライアントとサーバーで利用可能なアルゴリズムのうち、最初の暗号化アルゴリズムと最初の整合性アルゴリズムが自動的に選択されます。ネゴシエーションの優先順にアルゴリズムと鍵の長さを選択することをお薦めします(つまり、最も強力な鍵の長さを最初に選択します)。 |
暗号化または整合性をオンにするかどうかをネゴシエートする場合、Oracle Advanced Securityの暗号化と整合性の構成パラメータに4つの値を指定できます。次に、4つの値をセキュリティ・レベルの低い順に示します。値REJECTED
は、クライアントとサーバーの間の通信に最小レベルのセキュリティを提供し、値REQUIRED
は、最高レベルのネットワーク・セキュリティを提供します。
各パラメータのデフォルト値はACCEPTED
です。
Oracle Databaseサーバーおよびクライアントは、デフォルトではACCEPT
暗号化接続に設定されます。これは、接続の片側のみ(サーバー側またはクライアント側)を構成するだけで、接続ペアに対して目的の暗号化および整合性設定を有効化できることを意味します。
したがって、たとえば、数多くのOracleクライアントがOracleデータベースに接続する場合も、サーバー側でsqlnet.oraに適切な変更を加えることによって、すべての接続に対して必要な暗号化および整合性設定を構成できます。クライアントごとに個別に構成の変更を実装する必要はありません。
接続先から要求されてもセキュリティ・サービスを有効化しない場合は、この値を選択します。
このシナリオでは、セキュリティ・サービスの使用が許可されないことを接続元で指定します。接続先がREQUIREDに設定されている場合、エラー・メッセージORA-12650が表示されて接続が終了します
。接続先がREQUESTED、ACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。
接続先から要求または依頼されたときにセキュリティ・サービスを有効化する場合は、この値を選択します。
このシナリオでは、接続元からはセキュリティ・サービスを要求しませんが、接続先がREQUIREDまたはREQUESTEDに設定されている場合は、セキュリティ・サービスが有効化されます。接続先がREQUIREDまたはREQUESTEDに設定されていて、該当する暗号化アルゴリズムまたは整合性アルゴリズムが見つかると、エラーは発生せずに、セキュリティ・サービスが有効のまま接続が継続されます。接続先がREQUIREDに設定されていて、該当するアルゴリズムが見つからない場合、エラー・メッセージORA-12650
が表示されて接続が終了します。
接続先がREQUESTEDに設定されていて、該当するアルゴリズムが見つからない場合、または接続先がACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。
接続先でセキュリティ・サービスの使用が許可されているときにセキュリティ・サービスを有効化する場合は、この値を選択します。
このシナリオでは、接続元がセキュリティ・サービスの使用を希望します(必須ではない)。接続先でACCEPTED、REQUESTEDまたはREQUIREDが指定されている場合、セキュリティ・サービスが有効化されます。接続先に該当するアルゴリズムがある必要があります。見つからない場合、セキュリティ・サービスは有効化されません。接続先でREQUIREDが指定されていて、該当するアルゴリズムが見つからない場合、接続は失敗します。
セキュリティ・サービスを有効化する場合、または接続を禁止する場合は、この値を選択します。
このシナリオでは、接続元がセキュリティ・サービスの有効化を強制します。接続先でREJECTEDが指定されている場合、または接続先に互換性のあるアルゴリズムが見つからない場合、接続は失敗します。
表9-2に、クライアントとサーバーの構成パラメータを各種組み合せたときに、セキュリティ・サービスが有効化されるかどうかを示します。サーバーまたはクライアントでREQUIREDが指定されている場合は、共通のアルゴリズムが存在しないと、接続が失敗します。それ以外の場合は、サービスが有効化されていて、共通のサービス・アルゴリズムが存在しないと、サービスが無効化されます。
表9-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
ファイルを変更することによってこのパラメータを変更しないかぎり、暗号化とデータ整合性は有効化されません。
Oracle Net Managerを使用して、暗号化および整合性パラメータを設定または変更できます。この項の内容は次のとおりです。
関連項目:
|
クライアントとサーバーで暗号化を構成するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」も参照)。Oracle Net Managerを構成するには、次の手順を実行します。
Oracle Advanced Securityプロファイルにナビゲートします(詳細は、「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。
「暗号化」タブをクリックします。
「整合性」ボックスから「クライアント」または「サーバー」オプションを選択します。
「暗号化タイプ」リストから、次のいずれかを選択します。
REQUESTED
REQUIRED
ACCEPTED
REJECTED
(オプション)「暗号化シード」フィールドに、10字から70字のランダムな文字を入力します。クライアントの暗号化シードは、サーバーの暗号化シードとは別のものにします。
「使用可能なメソッド」リストで暗号化アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。
「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.ora
ファイルが更新されます。
同じ手順を繰り返して、もう一方のシステムで暗号化を構成します。2つのシステムのsqlnet.ora
ファイルに、次のエントリが含まれている必要があります。
サーバー:
SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required] SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_encryption_algorithm])
表9-3に、有効な暗号化アルゴリズムと対応する有効な値を示します。
クライアントとサーバーでデータ整合性を構成するには、Oracle Net Managerを使用します。
Oracle Advanced Securityプロファイルにナビゲートします。詳細は、「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください。「Oracle Advanced Security」タブ・ウィンドウが表示されます。
「整合性」タブをクリックします。
いずれのシステムを構成しているかに応じて、「整合性」ボックスから「サーバー」または「クライアント」を選択します。
「チェックサム・レベル」リストから、次のチェックサム・レベル値のいずれかを選択します。
REQUESTED
REQUIRED
ACCEPTED
REJECTED
「使用可能なメソッド」リストで整合性アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。
「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.ora
ファイルが更新されます。
同じ手順を繰り返して、もう一方のシステムで整合性を構成します。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])
有効な整合性アルゴリズムはSHA-1であり、対応する有効な値はSHA1
です。