注: | Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、サポートされなくなりました。すべてのOracle Tuxedo CORBA JavaクライアントおよびOracle Tuxedo CORBA JavaクライアントORBのテキスト・リファレンスとコード・サンプルは、サード・パーティ製のJava ORBライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。 |
注: | サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートまたはドキュメントは提供していません。 |
Secure Sockets Layer (SSL)プロトコルを使用すると、次の重要な機能をCORBAアプリケーションに統合できます。
機密性とは、意図した受信者以外の第三者に対して通信の内容を秘密にしておく機能のことです。このために、強力な暗号アルゴリズムを使用してデータを暗号化します。SSLプロトコルは、双方の通信当事者がサポートしている最強のアルゴリズムを調整し、データ暗号化用の鍵に関して合意するためのセキュリティ・メカニズムを提供します。
整合性とは、データが転送中に変更されていないことを保証することです。双方がアルゴリズムと鍵について合意するためのハンドシェーク・メカニズムでは、受信したデータが変更されていた場合に検出できるように、SSL接続の両端で共有データの整合性を秘密にすることもできます。
認証とは、通信相手を確認する機能のことです。CORBAクライアントおよびサーバー・アプリケーションは、デジタル証明書と公開鍵セキュリティ機能を使用することで互いを認証できます。これにより、双方は信頼性のある相手と通信していることを確認できます。SSLプロトコルでは、X.509デジタル証明書を使用してOracle Tuxedoドメインに対してプリンシパルを認証するためのメカニズムが提供されます。証明書による認証は、パスワードによる認証のかわりの方法として利用できます。
SSLプロトコルでは、2つのアプリケーションがネットワーク接続を介して通信相手のIDを認証し、アプリケーション間でやり取りされるデータを暗号化することで、安全な接続を提供します。SSLプロトコルを使用する場合、ターゲットは常に自身をイニシエータに対して認証します。ターゲットからリクエストがあった場合は、イニシエータが自身をターゲットに対して認証することもできます。暗号化によって、データは意図した受信者以外には解読できない形式でネットワーク上を転送されます。SSL接続はハンドシェイクで始まり、アプリケーション間でデジタル証明書の交換と、使用する暗号アルゴリズムに関する合意が行われ、後続のセッション用の暗号化キーが生成されます。
SSLでは、公開鍵暗号化を使用して認証します。公開鍵暗号化では、プリンシパルやその他のエンティティ(IIOPリスナー/ハンドラやアプリケーション・サーバー)に対して1組の非対称鍵が生成されます。公開鍵で暗号化したデータは対応する秘密鍵でのみ復号化できるようになっています。逆に、秘密鍵で暗号化したデータは対応する公開鍵でのみ復号化できます。オーナーだけがメッセージを復号化できるように、公開鍵の保護には十分に注意を払います。しかし、公開鍵はそのオーナー宛のメッセージを暗号化できるように、自由に配布します。
図2-1に、CORBAセキュリティ環境におけるSSLプロトコルのしくみを示します。
CORBAセキュリティ環境でSSLプロトコルを使用する場合、IIOPリスナー/ハンドラは開始元プリンシパルに対して自身を認証します。IIOPリスナー/ハンドラは、デジタル証明書を開始元プリンシパルに提示します。SSL接続を調整するには、クライアント・アプリケーションがIIOPリスナー/ハンドラを認証する必要がありますが、IIOPリスナー/ハンドラはすべてのクライアント・アプリケーションをSSL接続に受け入れます。こうした認証は、サーバー認証と呼ばれます。
サーバー認証を使用する場合、開始元クライアント・アプリケーションは、信頼性のある認証局のデジタル証明書を取得する必要があります。IIOPリスナー/ハンドラは、IDを表す秘密鍵およびデジタル証明書を取得する必要があります。サーバー認証は、顧客が個人データを送信する前に安全な接続を確立する必要がある場合に、インターネットではよく用いられる方法です。この場合、クライアント・アプリケーションはWebブラウザとほぼ同じ役割を持つことになります。
SSLバージョン3.0を使用すると、プリンシパルもIIOPリスナー/ハンドラに対して認証を行うことができます。こうした認証は、相互認証と呼ばれます。相互認証では、プリンシパルがIIOPリスナー/ハンドラに対してデジタル証明書を提示します。相互認証を使用すると、IIOPリスナー/ハンドラとプリンシパルの双方がそれぞれのIDを表す秘密鍵およびデジタル証明書を持つ必要があります。相互認証は、信頼性のあるプリンシパルだけにアクセスを制限する場合に便利な方法です。
デジタル証明書を使用するために必要なSSLプロトコルとインフラストラクチャは、Oracle Tuxedo製品で利用できます。
デジタル証明書は、インターネットなどのネットワーク経由で、プリンシパルおよびエンティティをユニークに識別するために使用される電子文書です。デジタル証明書は、信頼性のある第三者機関である「認証局」によって認定されたプリンシパルまたはエンティティのIDを特定の公開鍵に安全な方法で結び付けます。公開鍵と秘密鍵の組合せにより、デジタル証明書のオーナーにユニークなIDが提供されます。
デジタル証明書は、特定の公開鍵が特定のプリンシパルまたはエンティティに属することを検証します。デジタル証明書の受信者は、デジタル証明書に記載されている公開鍵を使用して、その公開鍵に対応する秘密鍵でデジタル署名が作成されたことを検証します。検証が成功すると、デジタル証明書で指定されたサブジェクトが、対応する秘密鍵のオーナーであること、および、そのサブジェクトによってデジタル署名が作成されたことを、一連の処理で確認できたことになります。
最も広く知られているデジタル証明書の形式は、ITU-T X.509国際規格によって定義された形式です。したがって、X.509準拠のアプリケーションであれば、デジタル証明書の読み書きを行えます。CORBAセキュリティ環境のPKIは、X.509バージョン3つまりX.509v3に準拠したデジタル証明書を認識します。
デジタル証明書は、認証局によって発行されます。デジタル証明書と公開鍵の発行対象に対してIDを保証できる、信頼性のある第三者機関または企業は、認証局となることができます。デジタル証明書を作成する場合、認証局は、改ざんがあった場合に検出できるように、秘密鍵を使用して署名します。認証局は次に、署名付きのデジタル証明書をリクエスト元のサブジェクトに返します。
サブジェクトは、認証局の公開鍵を使用して、デジタル証明書が認証局によって発行されたことを検証できます。認証局は、下位レベルの認証局の公開鍵の有効性を証明する上位レベルの認証局のデジタル証明書を提供することで、公開鍵を利用可能にします。2つ目の方法を用いると、認証局が階層化されます。この階層の最上位は、ルート鍵と呼ばれる自己署名付きのデジタル証明書です。
暗号化メッセージの受信者が、信頼する上位認証局によって署名されたデジタル証明書を持ち、この証明書に認証局の公開鍵が含まれている場合、認証局の秘密鍵の信頼性を再帰的に高めることができます。この意味で、デジタル証明書は、デジタル署名の信頼性を確認する足がかりとなります。つまり、最終的には、いくつかの上位認証局の公開鍵の信頼性を確認するだけで済みます。一連のデジタル証明書を確認することにより、多数のユーザーのデジタル署名の信頼性を証明できます。
つまり、デジタル署名は通信エンティティのIDを証明しますが、署名の信頼度は、署名を検証するための公開鍵を信頼できる、というレベルと同じです。
特定のサブジェクト用の公開鍵およびそのIDを利用可能にし、検証に使用できるようにするため、デジタル証明書をリポジトリに公開したり、その他の方法で公開できます。証明書のリポジトリは、デジタル証明書およびその他の情報で構成されるデータベースであり、リポジトリ内の情報は、取得したり、デジタル署名を検証するために使用できます。情報を取得するには、必要に応じて直接リポジトリ内のデジタル証明書をリクエストすることにより、自動的に行います。
CORBAセキュリティ環境では、Lightweight Directory Access Protocol (LDAP)が証明書のリポジトリとして使用されます。オラクル社では、特定のLDAPサーバーを提供しておらず、また推奨もしていません。選択したLDAPサーバーは、X.500スキーム定義とLDAPバージョン2または3プロトコルをサポートしている必要があります。
PKI (Public Key Infrastructure)は、公開鍵暗号のアプリケーションをサポートするプロトコル、サービス、および標準で構成されます。PKIは比較的新しい技術であるため、定義はあいまいです。たとえば、単に、公開鍵のデジタル証明書に基づいた、信頼性を示す階層構造を指す場合があります。また、別のコンテキストでは、エンド・ユーザー用アプリケーションのデジタル署名および暗号化サービスを意味する場合もあります。
公開鍵インフラストラクチャを規定する単一の標準はありませんが、標準の策定を進める動きはあります。現時点では、標準が策定されるかどうか、または様々な相互運用レベルのPKIが複数誕生するかどうかは不明です。この意味で、PKI技術の現状は、インターネットによる広範囲の接続が可能になるまでの、1980年代のLANおよびWAN技術に似ていると言えます。
図2-2に、PKI処理の流れを示します。
Oracle Tuxedo製品には、認証局になるためのツールは用意されていません。オラクル社では、VeriSignやEntrustなどのサード・パーティの認証局を利用することをお薦めしています。オラクル社の公開鍵SPIにより、Oracle Tuxedoのユーザーは、PKIソフトウェアのベンダーを自由に選択し、PKIのセキュリティ・ソリューションを使用できます。詳細は、「PKIプラグイン」を参照してください。
RSA Laboratoriesを中心とする主要な通信会社のグループによって規定された、非公式でありながら業界では認知されている公開鍵ソフトウェアの標準があります。これをPKCS (Public-Key Cryptography Standards)と言います。Oracle Tuxedo製品では、PKCS-5およびPKCS-8を使用して、SSLプロトコルで使用する秘密鍵を保護します。
公開鍵(または非対称鍵)のアルゴリズムは、次の2つの鍵の組合せによって実装されます。これらの鍵は異なりますが、数学的には関連性があります。
CORBAセキュリティ環境の公開鍵セキュリティ機能は、デジタル証明書のアルゴリズムもサポートしています。デジタル署名のアルゴリズムは、単にデジタル署名を実現するための公開鍵アルゴリズムです。
Oracle Tuxedo製品は、RSA (Rivest、Shamir、Adelmanの頭文字を取ったもの)アルゴリズム、Diffie-Hellmanアルゴリズム、およびDigital Signature Algorithm (DSA)をサポートしています。DSA以外のデジタル証明書のアルゴリズムは、デジタル署名と暗号化に使用できます。DSAは、デジタル署名には使用できますが、暗号化には使用できません。
対称鍵アルゴリズムでは、同じ鍵を使用して、メッセージの暗号化と復号化を行います。公開鍵による暗号化システムでは、通信し合う2つのエンティティ間で送信されるメッセージの暗号化に対称鍵暗号化を使用します。対称鍵暗号は、公開鍵暗号より、少なくとも1000倍速く実行されます。
ブロック暗号は、対称鍵アルゴリズムの一種であり、固定長の平文(暗号化されていないテキスト)のブロックを、同じ長さの暗号文(暗号化されたテキスト)のブロックに変換します。この変換は、ランダムに生成されたセッション・キーの値に基づいて行われます。固定長は、ブロック・サイズと呼ばれます。
CORBAセキュリティ環境の公開鍵セキュリティ機能は、次の対称鍵アルゴリズムをサポートしています。
DES-CBCは、CBC (Cipher Block Chaining)モードで実行する64ビットのブロック暗号です。それは、56ビット(64ビットの暗号化キーから8パリティ・ビットを引いたもの)の鍵を提供します。
2つの鍵によるTriple-DESは、EDE (Encrypt-Decrypt-Encrypt)モードで実行する128ビットのブロック暗号です。これは、2つの56ビットの暗号化キー(112ビットの暗号化キー)を提供します。
最近では、Triple-DESを使用して、DESの暗号鍵を保護し、転送するのが一般的になりました。つまり、入力データ(この場合は単一のDESキー)は、暗号化、復号化、暗号化、の順に繰り返し処理されます(暗号化/復号化/暗号化のプロセス)。このうち、2回行われる暗号化では、両方とも同じ暗号鍵が使用されます。
AES-256-CBCは、CBC (Cipher Block Chaining)モードで実行する128ビットのブロック暗号です。256ビットの鍵を使用できます。
Oracle Tuxedo製品をお使いのお客様は、このアルゴリズムのリストを拡張したり変更することはできません。
CORBAセキュリティ環境では、MD5およびSHA-1 (Secure Hash Algorithm 1)メッセージ・ダイジェスト・アルゴリズムをサポートしています。MD5とSHA-1は、どちらも有名な一方向のハッシュ・アルゴリズムです。一方向のハッシュ・アルゴリズムでは、メッセージが「メッセージ・ダイジェスト」または「ハッシュ値」と呼ばれる固定長の数値文字列に変換されます。
MD5は高速処理可能な128ビット・ハッシュで、32ビット・マシンで使用することを想定しています。SHA-1は、160ビットのハッシュ値を生成する、セキュリティ・レベルの高いアルゴリズムですが、処理速度はMD5よりやや遅くなります。
暗号スイートとは、通信の整合性を保護するための鍵暗号アルゴリズム、対称暗号アルゴリズム、およびSecure Hash AlgorithmからなるSSL暗号化方式のことです。たとえば、暗号スイートRSA_WITH_RC4_128_MD5
では、鍵暗号用にRSA、バルク暗号化用に128ビット鍵のRC4、メッセージ・ダイジェスト用にMD5を使用します。
CORBAセキュリティ環境では、表2-1に示す暗号スイートをサポートしています。
CORBAセキュリティ環境では、X.509v3規格に準拠したデジタル証明書をサポートしています。X.509v3規格には、デジタル証明書の形式が指定されています。VerisignやEntrustなどの認証局から証明書を取得することをお薦めします。