CORBAアプリケーションにおけるセキュリティの使用

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

SSL技術の紹介

このトピックには次の項が含まれます:

注: 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に関する技術的なサポートまたはドキュメントは提供していません。

 


SSLプロトコル

Secure Sockets Layer (SSL)プロトコルを使用すると、次の重要な機能をCORBAアプリケーションに統合できます。

SSLプロトコルでは、2つのアプリケーションがネットワーク接続を介して通信相手のIDを認証し、アプリケーション間でやり取りされるデータを暗号化することで、安全な接続を提供します。SSLプロトコルを使用する場合、ターゲットは常に自身をイニシエータに対して認証します。ターゲットからリクエストがあった場合は、イニシエータが自身をターゲットに対して認証することもできます。暗号化によって、データは意図した受信者以外には解読できない形式でネットワーク上を転送されます。SSL接続はハンドシェイクで始まり、アプリケーション間でデジタル証明書の交換と、使用する暗号アルゴリズムに関する合意が行われ、後続のセッション用の暗号化キーが生成されます。

SSLでは、公開鍵暗号化を使用して認証します。公開鍵暗号化では、プリンシパルやその他のエンティティ(IIOPリスナー/ハンドラやアプリケーション・サーバー)に対して1組の非対称鍵が生成されます。公開鍵で暗号化したデータは対応する秘密鍵でのみ復号化できるようになっています。逆に、秘密鍵で暗号化したデータは対応する公開鍵でのみ復号化できます。オーナーだけがメッセージを復号化できるように、公開鍵の保護には十分に注意を払います。しかし、公開鍵はそのオーナー宛のメッセージを暗号化できるように、自由に配布します。

図2-1に、CORBAセキュリティ環境におけるSSLプロトコルのしくみを示します。

図2-1 CORBAセキュリティ環境のSSLプロトコル

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技術に似ていると言えます。

PKIには、次のようなサービスがあります。

図2-2に、PKI処理の流れを示します。

図2-2 PKIの処理の流れ

PKIの処理の流れ

  1. サブジェクトが認証局にデジタル証明書の発行を依頼します。
  2. 認証局はサブジェクトのIDを確認して、デジタル証明書を発行します。
  3. 認証局またはサブジェクトは、LDAPなどの証明書のリポジトリにデジタル証明書を公開します。
  4. サブジェクトは、秘密鍵で電子メッセージにデジタル署名して、送信者が認証済であること、メッセージが完全であること、およびメッセージを否認できないことを確認します。その後、メッセージを受信者に送信します。
  5. 受信者は、送信者の証明書を証明書のリポジトリから取り出し、その中から公開鍵を取り出します。

Oracle Tuxedo製品には、認証局になるためのツールは用意されていません。オラクル社では、VeriSignやEntrustなどのサード・パーティの認証局を利用することをお薦めしています。オラクル社の公開鍵SPIにより、Oracle Tuxedoのユーザーは、PKIソフトウェアのベンダーを自由に選択し、PKIのセキュリティ・ソリューションを使用できます。詳細は、「PKIプラグイン」を参照してください。

 


PKCS-5およびPKCS-8の準拠

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セキュリティ環境の公開鍵セキュリティ機能は、次の対称鍵アルゴリズムをサポートしています。

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に示す暗号スイートをサポートしています。

表2-1 CORBAセキュリティ環境でサポートされているSSL暗号スイート
暗号スイート
鍵暗号の種類
対称鍵の
強度
SSL_RSA_WITH_RC4_128_SHA
RSA
128
SSL_RSA_WITH_RC4_128_MD5
RSA
128
SSL_RSA_WITH_DES_CDC_SHA
RSA
56
SSL_RSA_EXPORT_WITH_RC4_40_MD5
RSA
40
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
RSA
40
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
RSA
40
SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
Diffie- Hellman
40
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
Diffie- Hellman
40
SSL_RSA_WITH_3DES_EDE_CBC_SHA
RSA
112
SSL_RSA_WITH_NULL_SHA
RSA
0
SSL_RSA_WITH_NULL_MD5
RSA
0

 


デジタル証明書の規格

CORBAセキュリティ環境では、X.509v3規格に準拠したデジタル証明書をサポートしています。X.509v3規格には、デジタル証明書の形式が指定されています。VerisignやEntrustなどの認証局から証明書を取得することをお薦めします。


  先頭に戻る       前  次