(57)【要約】【課題】  オブジェクト・タイプにより相互にデータ通信する際に、機密情報または要注意情報を容易且つ安全に通信可能にして、データ通信の利便性を図る。【解決手段】  データ通信が為されるデータをシリアル化ライブラリ内に受信し、データ内の要注意または機密情報のフィールドに、要注意または機密の性質を表す識別子をタグ付けする。タグ付けした情報をＰＫＩライブラリ４１０で得られるプロセス固有鍵やセッション固有鍵を用いて自動的に暗号化する。暗号化したメッセージを、通信ライブラリ４０４を介して、別のプロセス装置のメッセージング／ウェブ・サービス／ロギング・インフラストラクチャ４１４に伝達する。【選択図】図４
2007325257.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ・データを受信するシリアル化ライブラリ手段と、
前記シリアル化ライブラリ手段に受信された前記メッセージ・データに関するフィールドの言語レベルの属性を検出する検出手段と、
前記メッセージ・データを暗号化するための暗号化情報手段と、
前記検出手段の出力に従って、前記暗号化情報手段を使用して、前記メッセージ・データの前記フィールドを、選択的に暗号化する暗号化手段と、
暗号化されたメッセージ・データを出力する出力手段とを具備することを特徴とするデータ通信システム。
【請求項２】
前記暗号化情報手段が、前記メッセージ・データに関するプロセス固有鍵およびセッション固有鍵のうちの少なくとも１つに対応する鍵データであることを特徴とする請求項１記載のデータ通信システム。
【請求項３】
前記検出手段が、前記メッセージ・データの複数の前記フィールドのそれぞれに関連し、前記メッセージ・データの言語レベルの属性を検出するためのカプセル型識別子を有することを特徴とする請求項１又は請求項２記載のデータ通信システム。
【請求項４】
前記出力手段は、外部プロセス或いは内部プロセスのうちの少なくとも１つに前記暗号化されたメッセージ・データを出力することを特徴とする請求項１乃至請求項３のいずれかに記載のデータ通信システム。
【請求項５】
前記出力手段からの前記暗号化されたメッセージ・データは、メッセージ送信、ウェブ・サービス呼び出し、およびログされた情報のうちの少なくとも１つを含むことを特徴とする、請求項４記載のデータ通信システム。
【請求項６】
前記受信手段は、メッセージ受信値およびウェブ・サービス戻り値のうちの少なくとも１つを含むことを特徴とする請求項４記載のデータ通信システム。
【請求項７】
シリアル化ライブラリ内に、メッセージ・データを受信するデータ受信ステップと、
前記メッセージ・データのフィールドに関連する言語レベルの属性を検出する検出ステップと、
前記メッセージ・データを暗号化するための暗号化情報を受信するステップと、
前記メッセージ・データのフィールドを、前記検出ステップの検出結果に従い、前記暗号化情報を使用して選択的に暗号化するステップと、
暗号化された前記メッセージ・データを出力する出力ステップとを具備することを特徴とするデータ通信方法。
【請求項８】
前記暗号化情報が、前記メッセージ・データに関するプロセス固有鍵およびセッション固有鍵のうちの少なくとも１つに対応する鍵データであることを特徴とする請求項７記載のデータ通信方法。
【請求項９】
前記検出ステップが、前記メッセージ・データの複数の前記フィールドのそれぞれに関連し、前記メッセージ・データの言語レベルの属性を検出するためのカプセル型識別子に従い検出することを特徴とする請求項７又は請求項８記載のデータ通信方法。
【請求項１０】
前記出力ステップは、外部プロセス或いは内部プロセスのうちの少なくとも１つに前記暗号化されたメッセージ・データを出力することを特徴とする請求項７乃至請求項９のいずれかに記載のデータ通信方法。
【請求項１１】
前記暗号化されたメッセージ・データは、メッセージ送信、ウェブ・サービス呼び出し、およびログされた情報のうちの少なくとも１つを含むことを特徴とする、請求項１０記載のデータ通信方法。
【請求項１２】
前記受信ステップは、メッセージ受信値およびウェブ・サービス戻り値のうちの少なくとも１つを含むことを特徴とする請求項１０記載のデータ通信方法。
【請求項１３】
シリアル化ライブラリ内に、メッセージ・データを受信するデータ受信ステップと、
前記メッセージ・データのフィールドに関連する言語レベルの属性を検出する検出ステップと、
前記メッセージ・データを暗号化するための暗号化情報を受信するステップと、
前記メッセージ・データのフィールドを、前記検出ステップの検出結果に従い、前記暗号化情報を使用して選択的に暗号化するステップと、
暗号化された前記メッセージ・データを出力する出力ステップとをコンピュータに実行させるためのデータ通信プログラム。
【請求項１４】
前記暗号化情報が、前記メッセージ・データに関するプロセス固有鍵およびセッション固有鍵のうちの少なくとも１つに対応する鍵データであることを特徴とする請求項１３記載のデータ通信プログラム。
【請求項１５】
前記検出ステップが、前記メッセージ・データの複数の前記フィールドのそれぞれに関連し、前記メッセージ・データの言語レベルの属性を検出するためのカプセル型識別子に従い検出することを特徴とする請求項１３又は請求項１４記載のデータ通信プログラム。
【請求項１６】
前記出力ステップは、外部プロセス或いは内部プロセスのうちの少なくとも１つに前記暗号化されたメッセージ・データを出力することを特徴とする請求項１３乃至請求項１５のいずれかに記載のデータ通信プログラム。
【請求項１７】
前記暗号化されたメッセージ・データは、メッセージ送信、ウェブ・サービス呼び出し、およびログされた情報のうちの少なくとも１つを含み、前記受信ステップは、メッセージ受信値およびウェブ・サービス戻り値のうちの少なくとも１つを含むことを特徴とする請求項１６記載のデータ通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク等を介したデータ通信に係り、より詳細には機密または要注意情報を安全に通信することのできるデータ通信システム、データ通信方法及びデータ通信プログラムに関する。
【背景技術】
【０００２】
近年ワールド・ワイド・ウェブを利用して、インターネット上等での、金融情報、商業情報、個人情報、およびビジネス情報等の各種情報の通信が多く行われている。これ等各種情報の多くは、オンライン・フォームとして羅列された状態でウェブ・ページ上に入力される。又これ等情報は、ウェブ・ページへの書き込み等のメッセージからも生じることもある。更に情報は、金融機関との通信または申告書の電子提出を可能にする、チェックフリー（ＣｈｅｃｋＦｒｅｅ）サービス、クイックン（Ｑｕｉｃｋｅｎ）サービス、および税金の確定申告書類作成ソフトウェアのホスト等、プロプラエタリまたはカスタム化されたインターフェースを使用して金融機関に情報を伝達するための多くのアプリケーションの１つから生じることもある。インターネット‐ベースの通信のような電子通信において、上記多くのアプリケーションが利用可能であり、リストは日々増大して、また継続的に日常生活に取り込まれている。
【０００３】
上記から気付くように、電子通信されている情報の多くは本質的には機密に属し、または注意を要するものである。一方どのような通信であっても共通のネットワークを経由する場合には、上記情報が傍受され、あるいは通信ルートを間違えてしまうというリスクを冒している。これ等リスクは、例えばグローバル・インターネット間の様に、広く共有されているオープン・ネットワークにより情報が通信される場合に、特に重大となってくる。
【０００４】
一般に情報の通信を必要とする多くのアプリケーションやプラットフォームにあっては、相互運用性および互換性が必要とされる。これらの問題を取り扱うべく、オーガニゼーション・フォア・ジ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ（Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ａｄｖａｎｃｅｍｅｎｔ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｔａｎｄａｒｄｓ）（オアシス（『ＯＡＳＩＳ』）が１９９３年に設立され継続的に活動している。ＯＡＳＩＳの活動は、デジタル署名及び、注意を要する情報または機密情報を保護するための暗号化を盛り込んでいる。更にプラットフォーム、アプリケーション、およびプログラミング言語にわたり、Ｗｅｂサービスの相互運用性を促進するべくウェブ・サービス・インターオペラビリティ・オーガニゼーション（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  Ｏｒｇａｎｉｚａｔｉｏｎ）（『ＷＳＩ』）が設立された。
【０００５】
ＯＡＳＩＳおよびＷＳＩは、ともに、アプリケーションあるいはウェブ・サービスのようなサービスにおける情報の安全な通信の必要性を認識している。しかしながらサン・マイクロシステムズ，インク（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．）のジャバ（Ｊａｖａ（登録商標））およびマイクロソフト・コーポレーション（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）の『．ＮＥＴ』の２つの主要プラットフォームは、所望のインターオペラビリティを講じていない。
【０００６】
このため、ＸＭＬの暗号化およびデジタル署名を伴う通信にあっては、上記不備が特に顕著となる。ＸＭＬドキュメントは、ワード・プロセッシング・ファイル等の電子ドキュメントだけでなく、例えばベクトル・グラフィクス、電子商取引、数式、オブジェクト・メタデータ、およびサーバのアプリケーション・プログラム・インターフェース（『ＡＰＩ』）のようなその他の多くのデータ・フォーマットをはじめ、構造化された情報を取り入れたその他多くのフォーマットを含む。
【０００７】
ＸＭＬにおいて、文書型定義（Document Type Definition；ＤＴＤ)機能は、ＸＭＬドキュメントの正当なビルディング・ブロックを定義するように機能する。これは、正当なエレメントのリストを伴うドキュメント構造を定義する。ＸＭＬスキーマは、ＸＭＬドキュメントの構造を記述する。ＸＭＬスキーマ言語は、ＸＭＬスキーマ定義として参照される。
【０００８】
従来ＷＳＩによって継続して実施されているような、デジタルの暗号化および署名に対するアプローチに伴う１つの懸念は、データが、例えば文書型定義、ＸＭＬスキーマ定義、例えばＸＭＬデータ・モデルの様な、規定されたＸＭＬデータ・モデルで記述される、という前提で開始されることである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら一般的にソフトウェアの開発者は、データを、選択したプラットフォームの『オブジェクト・タイプ』とし見ている。オブジェクト・タイプは、データや情報を伝達する方法に関し、ドキュメントの所定のサブエリアまたはオブジェクトについての情報を伝える記述子である。より簡単には、オブジェクト・タイプは、オブジェクト指向プログラミングの中で使用され、非オブジェクト・タイプをラップして、それをオブジェクトのように見せるために用いられる。オブジェクト・タイプは、より豊富な語義を有することから好まれている。
【００１０】
しかしながら従来、オブジェクト・タイプでは、ＸＭＬや．ＮＥＴベースシステム間での電子通信時に、特に相互運用のために、要注意情報あるいは機密情報の保護を提供するために、効果的に使用されるメカニズムを教示しているシステムを有していない。
【００１１】
そこで本発明は上記課題を解決するものであり、オブジェクト・タイプによりデータや情報を電子通信して相互運用する際に、機密情報または要注意情報について複雑な宣誓等をしなくても安全に通信することが出来る、データ通信システム、データ通信方法及びデータ通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は上記課題を解決するための手段として、メッセージ・データを受信するシリアル化ライブラリ手段と、前記シリアル化ライブラリ手段に受信された前記メッセージ・データに関するフィールドの言語レベルの属性を検出する検出手段と、前記メッセージ・データを暗号化するための暗号化情報手段と、前記検出手段の出力に従って、前記暗号化情報手段を使用して、前記メッセージ・データの前記フィールドを、選択的に暗号化する暗号化手段と、暗号化されたメッセージ・データを外部プロセスに伝達するための出力手段とを設けるものである。
【発明の効果】
【００１３】
本発明によれば、オブジェクト・タイプでのデータ通信においても、複雑な宣誓等を行わなくても、短く又単純なホスト言語の宣誓を使用することが出来、複数のプロセス装置間のデータ通信時に、要注意情報あるいは機密情報の保護を容易に提供することが出来、データ通信の利便性を得ることが出来る。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施例を、図面を参照して説明する。図１は本発明のデータ通信システムを有する分散通信システム１００を示すブロック図である。分散通信システム１００は、ローカル部１０２及び、リモート部１０４を有している。分散通信システム１００は、安全なデータ通信のために、エンドポイントである２つのプロセス装置を有する。これら２つのプロセス装置は、その間に、任意数の中間コンピューティング・ノード或は伝達メディアを有している。中間コンピューティング・ノード或は伝達メディアは、ルータ、サーバ、メッセージング・ソフトウエア、無線ネットワーク、有線ネットワーク、ローカル・エリア・ネットワーク、およびグローバル・インターネット等のようなワイド・エリア・ネットワークを有する。
【００１５】
図１に示す分散通信システム１００の、ローカル部１０２は、少なくとも１のコンピューティング・ノード又はプロセスと、データ通信するためのワークステーションを構成する、コンピュータ・システム１０６を含む。データ通信は、ネットワークを介して実行される。図１では、データ相互交換のためのローカル・エリア・ネットワーク（ＬＡＮ）１０８がワークステーション１０６に接続されている。ネットワーク通信は、ネットワーク・インターフェース・カード（ＮＩＣ）およびイーサネット（登録商標）接続のように、直接通信される。データ通信は、無線アクセス・ポイント１１０を用いる場合のように無線で行うことも出来る。
【００１６】
分散通信システム１００は、ウェブ・サービス上の外部プロセスと通信する、ワークステーションであるコンピュータ・システム１０６等で実行されるプロセスに適用される。ローカル・ウェブ・サービス１１２もまたローカル・エリア・ネットワーク１０８とのデータ通信を行う。又、ローカル・エリア・ネットワーク１０８はゲートウェイ１１４を経由してグローバル・インターネット等のワイド・エリア・ネットワーク（ＷＡＮ）１１６と接続される。更にローカル・エリア・ネットワーク１０８は、ワイド・エリア・ネットワーク１１６を介してリモート・ウェブ・サービス・システム１１８との通信が達成される。リモート・ウェブ・サービス・システム１１８は、データ通信のための通信プロセスを提供するものであり、詳細は後述する。当業者に周知の、ローカル・ウェブ・サービス１１２およびリモート・ウェブ・サービス・システム１１８は、後述する図２に示すサーバ２００を介して提供される。この様なサービスを提供するサーバは、サブジェクト・アプリケーションに従ってこの出願のサービスを提供することのできる、任意のハードウェア、ソフトウェア、またはそれらの組み合わせとなっている。又、ワークステーション１０６は、ワイド・エリア・ネットワーク１１６に直接にインターネット接続して直接通信も行う。
【００１７】
次に図２に、このシステムのローカル・ウェブ・サービス１１２およびリモート・ウェブ・サービス・システム１１８を実行するための、サーバ２００の代表的な構成を例示する。サーバ２００は、プロセッサ２０２、読み出し専用メモリ（ＲＯＭ）２０４、ランダム・アクセス・メモリ（ＲＡＭ）２０６、ストレージ・インターフェース２０８、ネットワーク・インターフェース・サブシステム２１０、ネットワーク・インターフェース２１４、ディスク２１６、無線インターフェース２１８を有している。プロセッサ２０２、読み出し専用メモリ２０４、ランダム・アクセス・メモリ２０６、ストレージ・インターフェース２０８、ネットワーク・インターフェース・サブシステム２１０はバス２１２で接続され、データ通信される。
【００１８】
読み出し専用メモリ２０４は、ＢＩＯＳ機能、システム機能、システム構成、およびサーバ２００の動作のために使用されるそのほかのルーチンまたはデータといった静的データまたは固定のデータ又は指示のために使用される。
【００１９】
ランダム・アクセス・メモリ（ＲＡＭ）２０６は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、又はその他任意アドレス可能なメモリ・システムから構成される。ランダム・アクセス・メモリ２０６は、プロセッサ２０２によって達成されるデータ取り扱い及びアプリケーションに関連付けされるデータ及び指示のための記憶領域を提供する。
【００２０】
ストレージ・インターフェース２０８は、サーバ２００に関するデータの、揮発性ストレージ、大容量ストレージ、または長期ストレージの機能を提供する。
【００２１】
ストレージ・インターフェース２０８は、ディスク２１６の他に例えば、光学ストレージ、テープドライブ、その他、当業者によって周知の任意の記憶媒体である、比較的より高容量の任意のアドレス可能ストレージまたはシリアル・ストレージ等を使用する。
【００２２】
ネットワーク・インターフェース・サブシステム２１０は、関連ネットワークからの入力および出力を伝達し、サーバ２００が他のデバイスと通信することを可能にする。ネットワーク・インターフェース・サブシステム２１０は、サーバ２００外部の装置との通信を接続する。ネットワーク・インターフェース・サブシステム２１０は、例えば、イーサネット（登録商標）、トークン・リング等の固定ネットワークまたは有線ネットワークとのデータ通信のためのネットワーク・インターフェース・カード（ＮＩＣ)等のネットワーク・インターフェース２１４と接続される。又ネットワーク・インターフェース・サブシステム２１０は、例えばワイファイ（ＷｉＦｉ）、その他、ワイマックス（ＷｉＭａｘ）、無線モデム、携帯ネットワーク等の無線通信システムを経由する無線通信のための無線インターフェース２１８と接続される。ネットワーク・インターフェース・サブシステム２１０は、当業者に周知のとおり、任意のフィジカルまたはノンフィジカルなデータ転送レイヤまたはプロトコル・レイヤを利用する。例えばネットワーク・インターフェース２１４は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、またはそれらの組み合わせからなるネットワーク２２０と相互に接続して、データを相互に交換する。
【００２３】
サーバ２００上の指示により、ワークステーション、ドキュメント処理装置及び他のサーバ等の、複数の外部装置との通信が実行される。サーバ２００は通常は独立して動作する。但しローカル・ユーザによる直接制御も要求され、当業者に周知のように、バス２１２に接続されるオプションの入力／出力インターフェース２２２を介して、達成される。
【００２４】
次に図３に、分散通信システム１００を実行するためのコンピュータ・システム１０６であるワークステーション３００の構成図を例示する。ワークステーション３００は、後述するシリアル化ライブラリでのメッセージ・データの暗号化等、各種機能を実施するプロセッサ３０２、読み出し専用メモリ（ＲＯＭ）３０４、後述する保護プロセス４００を格納するランダム・アクセス・メモリ（ＲＡＭ）３０６、表示インターフェース３０８、ストレージ・インターフェース３１０、ネットワーク・インターフェース３１２、ディスク３１８、ネットワーク・インターフェース３２０、無線インターフェース３３０を有している。プロセッサ３０２、読み出し専用メモリ（ＲＯＭ）３０４、ランダム・アクセス・メモリ（ＲＡＭ）３０６、表示インターフェース３０８、ストレージ・インターフェース３１０、ネットワーク・インターフェース３１２の間におけるデータ通信は、バス３１４によって達成される。
【００２５】
読み出し専用メモリ３０４は、ＢＩＯＳ機能、システム機能、構成データ、およびプロセッサ３０２を介してワークステーション３００の動作のために使用されるその他のルーチンといった、静的データまたは固定指示等のファームウエアを有する。
【００２６】
ランダム・アクセス・メモリ３０６は、プロセッサ３０２によって達成されるデータ取り扱い及びアプリケーションに関連付けされるデータ及び指示のための記憶領域を提供する。
【００２７】
表示インターフェース３０８は、バス３１４上の他のコンポーネントからデータ或は指示を受信するが、それらのデータは表示のためのデータであり、ユーザとの接続を容易にする。表示インターフェース３０８は、ビデオ表示装置、ＬＣＤ、プラズマディスプレイ等、当業者に周知の視覚出力デバイスである表示モニタ３２６に出力を提供する。
【００２８】
ストレージ・インターフェース３１０は、ワークステーション３００内のデータ或は指示の不揮発性ストレージ、大容量ストレージ、または長期ストレージの機能を提供する。ストレージ・インターフェース３１０は、ディスク３１８の他に例えば、テープ、ＣＤ、ＤＶＤ、その他比較的より高容量のアドレス可能な媒体またはシリアル・ストレージ媒体等を使用する。
【００２９】
ネットワーク・インターフェース３１２は、ネットワーク・インターフェース・カード（ＮＩＣ）等のネットワーク・インターフェース３２０及び、ワイファイ（ＷｉＦｉ）無線ネットワーク等の無線インターフェース３３０として示されている少なくとも１つの別のネットワーク・インターフェースと通信する。
【００３０】
当業者によって周知のように、ネットワーク・インターフェース３１２は、フィジカルレイヤおよびプロトコル・レイヤを用い、例えば、イーサネット（登録商標）、トークン・リング、その他ワイド・エリア・ネットワーク（ＷＡＮ）またはローカル・エリア・ネットワーク（ＬＡＮ）通信システム等のネットワーク３３２とのデータ通信のためのネットワーク・インターフェース３２０と接続される。又ネットワーク・インターフェース３１２は、例えばワイファイ（ＷｉＦｉ）、ワイマックス（ＷｉＭａｘ）、その他無線通信システムを経由する無線通信のための無線インターフェース３３０と接続される。
【００３１】
バス３１４に接続される入力／出力インターフェース３１６には、キーボード３２２、その他の入力デバイスが適切に接続される。入力／出力インターフェース３１６は、ＵＳＢ、ユニバーサル・シリアル・バス出力、ＳＣＳＩ、ファイヤワイヤ（ＩＥＥＥ１３９４）出力、その他選択されたアプリケーションに使用されるインターフェース等の周辺インターフェース３２４に対してデータの入出力を提供する。更に入力／出力インターフェース３１６は、マウス、ライト・ペン、タッチ・スクリーン、その他、装置と接続のためのポインティングデバイス３２８とデータ通信する。
【００３２】
この分散通信システム１００は、ホスト環境通信プロセスの言語構成でデータ交換をするのに、好適とされる。例えばプロセスがジャバ（Ｊａｖａ（登録商標））またはＣ言語で実行される場合に、各メッセージ・タイプはこれらの対象となる。このシステムは、ジャバ（Ｊａｖａ（登録商標））またはＣ言語の内部表現をはじめ、そのほかのホスト言語オブジェクトと、メッセージ／ウェブ・サービスの間においてデータを変換可能とするよう機能する、シリアル化ライブラリを使用する。本実施例では、この様な通信をＸＭＬフォーマットで達成する。
【００３３】
（１）動作時、ワークステーション１０６は、複数のプロセス間の通信を可能にするメッセージ・アプリケーション・プログラミング・インターフェースを呼び出すコードを実行する。（２）続いて関連メッセージ情報について使用するために、シリアル化アルゴリズムが、メッセージ・アプリケーション・プログラミング・インターフェースによって呼び出される。即ち、データは、そのデータの機密保持の種類に対応するメッセージのフィールド内に配置されるか、又は受信される。それにより、機密性が必要とされていないか必須でないことを表示するメッセージ・フィールド内におけるデータの配置又は受信を可能にする。（３）次の外部プロセスに対するメッセージ内に、機密情報がまったく含まれていないときには、そのメッセージは次の操作に進み動作を終了する。好ましくはこのメッセージは、ＸＭＬフォームで次の操作、たとえばウェブ・サービス、ネットワーク・フレームワーク、ロギング、またはそのほかのサービスに送信される。
【００３４】
（４）複数のプロセス間のメッセージ内に機密情報が含まれていると判断される場合には、そのメッセージ内の各フィールドが、機密情報のためのメッセージ・ツリー内において、再帰的にテストされる。（５）その後、例えば言語レベルの属性の検出等の、機密情報の現在のフィールドの検出がなされ、そのフィールドが暗号化要件を示しているか否か判断される。（６）その判断がＹＥＳであれば、そのメッセージに関する、現在のフィールドのデータは暗号化される。（７）次に関連フィールドが、署名が必要であるとマークされているか否か判断される。（８）その判断がＹＥＳであれば、署名のためのマークつきのフィールドが署名される。（９）その後、ＸＭＬプリミティブは、サイン済みフィールドをはじめ、マークなしフィールドの内容に対して適用される。このＸＭＬプリミティブは、現在の動作に対しても適用され、ＸＭＬノードに追加される。（１０）その後、関連したメッセージ内のすべてのフィールドについて再帰的に完了したか否か判断される。(１１)完了していなければ、メッセージ内の残りのフィールドを再帰的に完了するため動作に戻る。完了していれば、ＸＭＬノードは、次の操作（例えば、基本的にはウェブ・サービス、ネットワーク・フレームワーク、またはそのほかのプロセス）に送信される。
【００３５】
図４に、データを保護する安全なデータ通信をワークステーション上で実現するための、保護プロセス４００のブロック図を示す。保護プロセス４００は、例えばワークステーション３００であるコンピュータ・システム１０６により実施される。ワークステーション３００のＲＡＭ３０６は、シリアル化ライブラリ手段であるシリアル化ライブラリ４０２および出力手段である通信ライブラリ４０４を組み込んでいる。オブジェクト・データ４０６は、保護プロセス４００内に取り入れられている。検知手段であるセキュアカプセル・データ４０８および暗号化情報手段である公開鍵インフラストラクチャライブラリ（ＰＫＩライブラリと略称）４１０も、保護プロセス４００に関連付けされる。
【００３６】
シリアル化ライブラリ４０２は、複数のプロセス間での相互交換を指示されるデータの、どの部分が要注意でありまたは機密であるかを検出するよう機能する。『機密』とは、データの保護、要注意、その他権限のない配布を防止する必要性等が含まれる。機密情報は、関連フィールドの内容または重要性について暗号操作が為されるように、暗号化するか、または署名するよう要求される。これにより、いかなるデータも、暗号化された形式への変換要求無しに、安全なホスト環境から出力されることが無い。
【００３７】
シリアル化ライブラリ４０２は、ＰＫＩライブラリ４１０から得られるプロセス固有鍵を使用する。更に特定のケースでは、ＰＫＩライブラリ４１０からセッション固有鍵を使用する。その結果、同一システム内であっても、強奪されてしまったような、不正な中間コンポーネントであれば、データに対するアクセスを得ることができない。このことは、すべてのプロセスが同一のホスト言語および同一のフォーマットを使用している場合であっても当てはまる。このようにしてセッション固有鍵は、システム・ログに送られる情報であってもシリアル化ライブラリによって変換されることを促し、その結果、機密事項を扱う情報が漏れることが不可能となる。
【００３８】
保護プロセス４００にて、シリアル化ライブラリ４０２内には、入力／出力インターフェース３１６を介して、データ入力４１２される。データ入力４１２は、当業者に周知の、シン・クライアント或いはウェブ入力等のユーザ・インターフェース、又は任意の適切なメッセージング・アプリケーション・プログラム・インターフェース経由で入力される。データ入力４１２によりシリアル化ライブラリ４０２内に入力されたメッセージ・データは、オブジェクト・データ４０６と関連付けされる。オブジェクト・データ４０６と関連付けされたメッセージ・データは、セキュアカプセル・データ４０８により、特定のデータ・タイプの属性が検知される。これらのデータ・タイプには、ＰＫＩライブラリ４１０から鍵ベースの暗号化が提供される。その結果、特定のオブジェクト・タイプに関連されるデータは自動的に暗号化される。
【００３９】
上述のように、シリアル化ライブラリ４０２は、例えば入力／出力インターフェース３１６を介して入力されたデータ入力４１２によりメッセージ・データを受信し、受信したメッセージ・データのフィールドに関連する言語レベルの属性を検出する。この実施例においては、セキュアカプセル・データ４０８のカプセル型識別子を、メッセージ・データの１ないし複数のフィールドに関連して、メッセージ・データを暗号化する。即ち、セキュアカプセル・データ４０８の各カプセル型識別子の値が、関連するメッセージ・データの属性を識別するのに使用される。
【００４０】
次に、シリアル化ライブラリ４０２は、セキュアカプセル・データ４０８により検出された、メッセージ・データの属性に応じて、ＰＫＩライブラリ４１０から鍵データを受信する。その結果、それがメッセージ・データに関連付けされ、その鍵データを使用して、受信されたメッセージ・データのそれぞれのフィールドを選択的に暗号化する。暗号化されたメッセージ・データは、通信ライブラリ４０４を介して、外部サービスである、関連するメッセージング／ウェブ・サービス／ロギング・インフラストラクチャ４１４に伝達される。
【００４１】
例えば保護プロセス４００は、図１のコンピュータ・システム１０６内で実行され、メッセージング／ウェブ・サービス／ロギング・インフラストラクチャ４１４は、図１のローカル・ウェブ・サービス１１２またはリモート・ウェブ・サービス・システム１１８内において実行され、暗号化されたメッセージ・データは、メッセージ送信、ウェブ・サービス呼び出し、及びロギング情報のうちの少なくとも１つをインクルードする。シリアル化ライブラリ４０２は、メッセージ受信値、およびウェブ・サービス戻り値のうちの少なくとも１つをリリースする。
【００４２】
このように図４は、複数のプロセス間の通信に関連する多様なコンポーネントの基本ブロック図を示している。次に図５のフローチャートを参照して、プロセス間における通信のために、データを受信し暗号化する操作を詳述する。暗号化をスタートしたら、先ずステップ５００で、ワークステーション１０６等のクライアント上のコードがメッセージング・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を呼び出し、プロセス間の通信を可能にする。
【００４３】
次にステップ５０２では、メッセージングＡＰＩが、関連メッセージ情報のためのシリアル化アルゴリズムを呼び出して、アサートされたメッセージ・データが、機密の種類に対応するフィールド内或は、機密性が必須でない（必要とされていない）ことを示すフィールド内に置かれ（受信され）ているかにより、メッセージ・データが機密であることを示すか、或は示さないかを判断する。そのフィールドが、メッセージ・データが機密でないことを示す場合には直ちにステップ５０４に進み、メッセージ・データは、前述したメッセージング、ウェブ・サービス(ネットワーク、フレームワーク）またはロギングを採用する操作である次のプロセスに送信される。ステップ５０４で、メッセージ・データの送信を完了すると、ステップ５０６でプロセスを終了する。
【００４４】
ステップ５０２で、フィールドが、データが機密であることを示した場合には、ステップ５０８に進む。本実施例では例えば、ＸＭＬ言語がデータの通信のために使用される。ステップ５０８では、操作の開始のため、ＸＭＬノードを定義し、エンプティにセットする。次いでステップ５１０で、情報が機密であることを示すフィールドに関する言語レベルの属性の検出等、現在のフィールドの特性を検出する（フィールドの識別子をチェックする）。ステップ５１２にて、機密データに対して、メッセージ・ツリー内の各フィールドを順次検知する。
【００４５】
次にステップ５１４で、暗号化を必要とするといった機密情報を含むように示されたフィールド内に情報が存在するか否かについて判別される。フィールド内に、暗号化が必要である旨のマークがされていて、機密情報があれば、ステップ５１８に進み、関連データを暗号化する。現行のオペレーションは、５１５によって示される、対応するホスト言語環境に合わせて行われる。ステップ５１４で、フィールドが暗号化の必要を示していない場合、または暗号化がすでに行われた場合には、ステップ５１６に進む。
【００４６】
ステップ５1６は、フィールドが署名についてマークされているか否かを判別する。ＹＥＳであればステップ５２２に進み、ステップ５１８と同様にそのフィールドに関連されるデータに、署名のためのマークを付けてステップ５２０に進む。ステップ５１６で、ＮＯであれば、ステップ５２０に進む。ステップ５２０は、ＸＭＬ環境に特に適していて、ＸＭＬプリミティブがそのフィールドの内容に適用され、現行のオペレーションのデータを暗号化し、ＸＭＬノードに追加する。その後ステップ５２４で、メッセージ・データ内のすべてのフィールドについて、言語レベルの属性の検知を完了したか否か判断される。完了していれば、送信のためのステップ５０４に進む。完了していなければ、ステップ５１０に戻り、残存するフィールドを順次検知する。
【００４７】
上述したように、保護プロセス４００にて、シリアル化ライブラリ４０２を用いることにより、メッセージ・データの機密情報の言語レベルの属性を検知し、検知結果に応じて、データの暗号化或いは、署名の必要が自動的に特定される。シリアル化ライブラリ４０２へのデータ入力は、外部プロセスとのデータ送信及び、ローカル部の端末等の内部プロセスとのデータ通信に、自動的に適用される。従って、データのセキュリティが確実に強化され、データ通信システムが、所望のセキュリティ・プロパティを有しまた、情報の保護に漏れを生じる事が無い。
【００４８】
次に上記を、ＸＭＬ言語を使用してプログラム化した実施例を以下に示す。
【００４９】
全てのシリアル化は、ルート・オブジェクトと呼ばれるオブジェクトに対して実行される関数となり、それがアトム型のフィールドを直接調べることによって、かつ内容がオブジェクト・タイプのフィールド（非アトム型フィールド）を順次調べることによって、そのルート・オブジェクトを通じてアクセス可能なすべての情報のＸＭＬリプリゼンテーションをリターンする。ルート・オブジェクトは、それがアルゴリズムの入口ポイントであり、且つ復元時には、再構築ルート・オブジェクトが復元（Deserialization）機能によりリターンされるための参照であることから、変換アルゴリズムによって順次繰り返される他のすべてのオブジェクトから区別される。
【００５０】
Serialization : Object -> XML
Deserialization : XML -> Object
ルート・オブジェクトは、それが属する実際の属性およびフィールドの値によって定義される。その属性を次のように表す：
rootObject.getClass() == RootObjectClass
また補助関数であるTtansformClassNameを次のように仮定する：    
ClassName : Class  -> String
これは後に定義されるが、開始のためにそれをｊａｖａ．ｌａｎｇ．Ｃｌａｓｓ．ｇｅｔＮａｍｅ（）或は同等のType classＣ＃／．Ｎｅｔと設定する。
【００５１】
次に又、各ユーザのために決定されるイントロスペクション関数も、それが特別なセキュリティ・プロパティ（署名および／または暗号化）を必要であるとして宣言されているか否かについて定義し、従ってこれはセキュリティ・プロパティのリストをリターンする。
【００５２】
DeclaredSecurity: Class -> [SecurityProperty]
従って、シリアル化関数のＸＭＬ出力は次のとおりに定義される：
Serialize(rootObject ) ==
< ClassName(RootObjectClass) >
RepresentContent(rootObject)
</ ClassName(RootObjectClass) >
RepresentContent()が、オブジェクトからＸＭＬエレメントの配列に対して定義される関数である場合、さらに以下とされる。
【００５３】
RepresentContent: Object -> XMLElement[] | String    // Xml Element  or String 
一般的な場合においてRepresentContent:は、ＸＭＬエレメントの配列をリターンすることになるが、Stringオブジェクトと、バイト配列オブジェクトは、それらの内容の特殊なエンコーディングをリターンするという２つの例外を伴う。オブジェクトのフィールドを以下に示す：
object.getFields() == objectFields[] =={ field1, field2, … fieldN } 
Ｎはフィールドの数であり、かつobjectFields配列の長さである。オブジェクトが配列以外であれば、フィールドはそのインスタンス変数になる。フィールドは、以下のプロパティを有する。
【００５４】
1.      fieldname : String                              (known at compile-time)
2.      declaredType : Class                            (known at runtime)
3.      actualContent : (Object | [primitive type] )             (known at run-time)
Objectが配列であれば、ジャバ（Ｊａｖａ（登録商標））およびＣ＃言語両方が考慮される限りにおいて、それはインスタンス変数を持たない。本実施例は、ここで配列の成分をフィールドと考えることにする。したがって、配列が長さＮであれば、Ｎ個の無記名フィールド（fieldname プロパティは空）を有することになるが、ランタイム時に既知となるactualContentはもとより、declaredTypeがその配列の宣言済みタイプとなる。
【００５５】
関数getFields()は、本実施例において、すべてのオブジェクト・フィールドをリターンすると定義されることになるが、短期の属性を伴ってマークされるインスタンス変数の例外を伴う。配列の場合は、短期にマークされるものはない。
【００５６】
次に、RepresentContentを定義する：
RepresentContent(object) == 
CryptoLibrary.getTransformationFor(
DeclaredSecurity( object.getClass() )
)
.applyTo (
If      
(object.getClass()==byte[].class)ThenRepresentByteArray(object)
Else If 
(object.getClass() == String.class ) Then RepresentString(object)
Else
new XMLElement[]  { 
SerializeField(object.getFields()[0]),
SerializeField(object.getFields()[1]),
SerializeField(object.getFields()[N-1])   } 
)
またはより形式的に、バイト配列以外のフィールドについて
RepresentContent == map (getFields , SerializeField) 
「ｍａｐ」はリスト／配列変換関数であり、自然な順序における入力配列の対応するエレメントに対し、入力関数（第２のパラメータ）のアプリケーションによって定義されるエレメントを有する新たなリスト／配列を生成する。
【００５７】
RepresentContent の定義に使用される関数SerializeField -> XMLElementは、さらに以下のとおりに定義される。
【００５８】
SerializeField (field) == 
If (field.fieldName == null ) Then  // the array case
If (field.actualContent != null ) Then
If (field.declaredtype.isPrimitive())
< field.declaredtype >
RepresentPrimitive(field.actualContent)
</field.declaredtype>
else
Serialize(field.ActualContent)
Else
<null />
Else If (field.DeclaredType.isPrimitive()) Then
<field.fieldname>
RepresentPrimitive(field.actualContent)
</field.fieldname>
Else If  (field.actualContent == null ) Then
< field.fieldname > < null /> </ field.fieldname >
Else
< field.fieldname  ClassAttribute(field) >
RepresentContent(field.actualContent)
</ field.fieldname >
当業者に周知のように、以下はターゲットＸＭＬの例である。署名付きＸＭＬは：
<?xml version="1.0" encoding="utf-8"?>
<S11:Envelope xmlns:S11="..." xmlns:wsse="..." xmlns:wsu="..."
xmlns:ds="...">
<S11:Header>
<wsse:Security xmlns:wsse="...">
<xxx:CustomToken wsu:Id="..." xmlns:xxx="http://.../token">
FHUIORv...
</xxx:CustomToken>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm=
"http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
<ds:Reference URI="#MsgBody">
<ds:DigestMethod Algorithm=
"http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>LyLsF0Pi4wPU...</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>DJbchm5gK...</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="..."/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</S11:Header>
<S11:Body wsu:Id="MsgBody">
<tru:StockSymbol xmlns:tru="http://fabrikam123.com/payloads">
QQQ
</tru:StockSymbol>
</S11:Body> 337
</S11:Envelope> 338
当業者は、上記が、たとえばウェブ・サービスによってリターンされるストック・シンボルの名前を表しており、署名が、情報の正当性を証明していると認識する。好ましくは、署名は、ジャバ（Ｊａｖａ（登録商標））およびＣ言語を含む、ホストプログラミング言語による以下の宣言によって生成される。但しこれに限定されない。
【００５９】
public class MsgBody {
[Signed(SHA1)]
String StockSymbol
}
当業者に周知のように、上記宣言は、シリアル化フレームワークに送信の外向きレッグ上のストック・シンボル変数の署名の通知である。
【００６０】
このような技術からなる本実施例にあっては、ウェブ・サービスのプロセス間においてやり取りされる、ＸＭＬのコンテントに関して、ユーザは、ＷＳ−セキュリティを介して複雑なＸＭＬ-宣言等により開始するのではなく、より短く、より単純な、ホスト言語の宣言を採用して、相互運用時の、要注意情報あるいは機密情報の保護を提供出来る。これによりデータ通信を行う複数のプロセス間の相互運用に、ＸＭＬコンテントを容易に使用可能となる。
【００６１】
尚本発明のデータ通信システムの構成は限定されず、メッセージ・データを暗号化するためのワークステーションは、コンピュータ・システムに限定されず、例えばＬＡＮインターフェース等を有するスキャナ、プリンタあるいはＭＦＰ等であっても良い。又、メッセージ・データの受信サイドも、コンピュータ・システムや、スキャナ、プリンタあるいはＭＦＰ等任意である。
【００６２】
更に本実施例では、データ通信システムのメッセージ・データを暗号化するための機能がワークステーション内に予め記録されている場合で説明をしたが、これに限らず同様の機能をネットワーク等の伝達手段からワークステーションにダウンロードしても良いし、同様の機能のコンピュータプログラムを記録媒体に記憶させたものを装置にインストールしても良い。記録媒体としては、ＣＤ−ＲＯＭ等の光学記録媒体或はフロッピー（登録商標）ディスク等の磁気記録媒体等、プログラムを記憶でき、且つワークステーションが読み取り可能な記録媒体であれば、その形態はいずれの形態であっても良い。またこのように予めインストールやダウンロードにより得る機能は、ワークステーション内部のＯＳ（オペレーティング・システム）等と協動してその機能を実現させるものであっても良い。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施例のデータ通信システムを有する分散通信システムを示すブロック図である。
【図２】本発明の実施例の分散システムのウェブ・サービスを実行するための、サーバの代表的な構成を例示する概略説明図である。
【図３】本発明の実施例の分散システムを実行するためのワークステーションの構成を例示する概略説明図である。
【図４】本発明の実施例のコンピュータ・システムの保護プロセスを示す概略説明図である。
【図５】本発明の実施例のデータの暗号化を示すフローチャートである。
【符号の説明】
【００６４】
１００…分散通信システム
１０２…リモート部
１０４…ローカル部
１０６…コンピュータ・システム
１０８…ＬＡＮ
１１０…無線アクセス・ポイント
１１２…ローカル・ウェブ・サービス
１１４…ゲートウェイ
１１６…ＷＡＮ
１１８…リモート・ウェブ・サービス・システム
２００…サーバ
２０２…プロセッサ
２１０…ネットワーク・サブシステム
２１４…ネットワーク・インターフェース
２１８…無線インターフェース
２２０…ネットワーク
２２２…オプションのＩ／Ｏインターフェース
３００…ワークステーション
３０２…プロセッサ
３１２…ネットワーク・インターフェース
３１６…Ｉ／Ｏ・インターフェース
３２０…ネットワーク・インターフェース
３３０…無線インターフェース
３３２…ネットワーク
４００…保護プロセス
４０２…シリアル化ライブラリ
４０４…通信ライブラリ
４０６…オブジェクト・データ
４０８…セキュアカプセル・データ
４１０…ＰＫＩライブラリ
４１２…データ入力
４１４…メッセージング／ウェブ・サービス／ロギング・インフラストラクチャ
【図１】
2007325257.tif 000003
【図２】
2007325257.tif 000004
【図３】
2007325257.tif 000005
【図４】
2007325257.tif 000006
【図５】
2007325257.tif 000007