(57)【特許請求の範囲】
【請求項１】
コンピュータ装置に保存された複数のドメインにおける木構造のドメイン・データの間の関係のリンクのビューを、与えられたアクセス権限に従い提供するシステムであって、  前記個々のドメインにおいて、該ドメインの階層毎の指定された開示先毎に該ドメインのドメイン・データをグループ化する手段と、
前記グループ化された木構造のデータにおいて、葉のグループを、共通鍵で暗号化する手段と、
前記共通鍵で暗号化した結果のデータに、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、第１の公開データを作成する手段と、
前記第１の公開データを、リンク設定者の秘密鍵で復号して共通鍵を得て、それらの鍵で各グループを復号する手段と、
復号したデータにおけるリンクに基づいて、グループごとにテーブルを生成する手段と、
前記テーブルの各レコードを、木構造の親に向かって伝播する手段と、
共通鍵を使って、前記テーブルを暗号化し、該テーブルを暗号化した前記共通鍵を開示先の公開鍵で暗号化した値を付加することによって、第２の公開データを作成する手段と、
前記第１の公開データと前記第２の公開データを秘密鍵で復号してそれぞれから共通鍵を得る手段と、
前記第１の公開データと前記第２の公開データそれぞれから得られた前記共通鍵で、前記第１の公開データと前記第２の公開データの残りの部分をそれぞれ復号することによりビューを生成する手段を有する、
ドメイン・データの間の関係のリンクのビューを提供するシステム。
【請求項２】
前記第１の公開データを作成する手段は、暗号化されたグループを名前の要素で書き換える手段を含む、請求項１に記載のシステム。
【請求項３】
前記各グループを復号する手段は、前記名前の要素をグループが属する要素に書き換える手段を含む、請求項２に記載のシステム。
【請求項４】
前記ビューを生成する手段は、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える手段を有する、請求項１に記載のシステム。
【請求項５】
ドメイン用コンピュータ装置が、ドメイン・データと、前記グループ化する手段と、前記共通鍵で暗号化する手段と、前記第１の公開データを作成する手段をもち、
リンク設定用コンピュータ装置が、前記各グループを復号する手段と、前記グループごとにテーブルを生成する手段と、前記木構造の親に向かって伝播する手段と、前記第２の公開データを作成する手段をもち、
参照用コンピュータ装置が、前記第１の公開データと前記第２の公開データを秘密鍵で復号してそれぞれから共通鍵を得る手段と、前記ビューを生成する手段をもち、
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置は互いにネットワーク接続されている、請求項１に記載のシステム。
【請求項６】
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置が、それぞれ複数台設けられている、請求項５に記載のシステム。
【請求項７】
前記参照用コンピュータ装置は、前記ドメイン用コンピュータ装置で兼用されている、請求項６に記載のシステム。
【請求項８】
コンピュータ装置に保存された複数のドメインにおける木構造のドメイン・データの間の関係のリンクのビューを、与えられたアクセス権限に従い提供する方法であって、
第１のコンピュータによって、前記個々のドメインにおいて、該ドメインの階層毎の指定された開示先毎に該ドメインのドメイン・データをグループ化するステップと、
前記第１のコンピュータによって、前記グループ化された木構造のデータにおいて、葉のグループを、共通鍵で暗号化するステップと、
前記第１のコンピュータによって、前記共通鍵で暗号化した結果のデータに、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、第１の公開データを作成するステップと、
第２のコンピュータによって、前記第１の公開データを、リンク設定者の秘密鍵で復号して共通鍵を得て、それらの鍵で各グループを復号するステップと、
前記第２のコンピュータによって、復号したデータにおけるリンクに基づいて、グループごとにテーブルを生成するステップと、
前記第２のコンピュータによって、前記テーブルの各レコードを、木構造の親に向かって伝播するステップと、
前記第２のコンピュータによって、共通鍵を使って、前記テーブルを暗号化し、該テーブルを暗号化した前記共通鍵を開示先の公開鍵で暗号化した値を付加することによって、第２の公開データを作成するステップと、
前記第１又は第３のコンピュータによって、前記第１の公開データと前記第２の公開データを秘密鍵で復号してそれぞれから共通鍵を得るステップと、
前記第１又は前記第３のコンピュータによって、前記第１の公開データと前記第２の公開データを秘密鍵で復号してそれぞれから得られた共通鍵で、前記第１の公開データと前記第２の公開データの残りの部分をそれぞれ復号することによりビューを生成するステップを有する、
ドメイン・データの間の関係のリンクのビューを提供する方法。
【請求項９】
前記第１の公開データを作成するステップは、暗号化されたグループを名前の要素で書き換えるステップを含む、請求項８に記載の方法。
【請求項１０】
前記各グループを復号するステップは、前記名前の要素をグループが属する要素に書き換えるステップを含む、請求項９に記載の方法。
【請求項１１】
前記ビューを生成するステップは、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換えるステップを有する、請求項８に記載の方法。
【請求項１２】
ドメイン用コンピュータ装置が第１のコンピュータとして、ドメイン・データと、前記グループ化するステップと、前記共通鍵で暗号化するステップと、前記第１の公開データを作成するステップを実行し、
リンク設定用コンピュータ装置が第２のコンピュータとして、前記各グループを復号するステップと、前記グループごとにテーブルを生成するステップと、前記木構造の親に向かって伝播するステップと、前記第２の公開データを作成するステップを実行し、
参照用コンピュータ装置が第３のコンピュータとして、前記第１の公開データと前記第２の公開データを秘密鍵で復号してそれぞれから共通鍵を得るステップと、前記ビューを生成するステップを実行し、
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置は互いにネットワーク接続されている、請求項８に記載の方法。
【請求項１３】
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置が、それぞれ複数台設けられている、請求項１２に記載の方法。
【請求項１４】
前記参照用コンピュータ装置は、前記ドメイン用コンピュータ装置で兼用されている、請求項１３に記載の方法。
【請求項１５】
請求項８乃至請求項１４に記載の方法を前記コンピュータ装置に実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般的には情報管理システムに関し、より詳しくは、異なるドメインにある情報の間のリンクまたは関連付けを管理するための情報管理システム、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、自動車、電機、航空宇宙防衛などの分野では、製品が複雑で、多数の部品からなるので、１つの製品を設計するために、機械、電気、システム設計、ソフトウェア、試験などの多くのドメイン（部門）が関与する。このように多くの部門に分かれていても、結局は統合された製品に集約する必要があるので、ドメインにまたがるデータのリンク付けを行う必要がある。
【０００３】
図１は、自動車メーカーにおける異なるドメイン間の連携の例を示す図である。図１からは、システム・モデル、要求管理、制御解析、ＣＡＤ、電気／電子回路、部品構成管理、及び組み込みソフトウェアという異なるドメインの間で、データのリンク付けが行われることが見て取れる。
【０００４】
ところが、ドメインをまたがるデータの関連付けはアドホックに行われていて、統合された製品全体に対するトレーサビリティの確保や影響分析が困難であるという問題がある。このような困難の原因の１つとして、各ドメインの専門家が、異なるツールを使っている、ということがある。それを解消するためには、どのドメインでも統一されたツールを使えばいいが、各ドメインの専門家は使い慣れたツールを使いたいという要望が強く、また、ドメインが異なるとツールに要求される機能も異なるので、現実問題として、ツールを統一することは困難である。
【０００５】
そこで、各ドメイン内の情報は、そのまま既存のツールで管理できて、ドメイン間の関連情報だけを一元管理することで、製品全体にまたがるビューを提示し、以って専門家の間のコラボレーションを促進する技術が要望されている。図２はそのような要望される技術の概要を示すものである。すなわち、図２に示すように、ドメイン２０２、ドメイン２０４、ドメイン２０６及びドメイン２０８の情報の間の関連情報のビュー２１２を与えるデータ間リンク管理機能２１０が要望された。
【０００６】
この目的のため、本願発明者らは、特願２０１０−１６５６２０号明細書で、ドメインにまたがるデータのリンク付けを行う技法を提供したが、これは、複数の組織・企業が製品開発に関わる状況で、ドメイン・データのセキュリティ保護に適合するようにリンク付けとリンクの管理を行うことまでを視座に入れたものではなかった。
【０００７】
一方例えば、Seth Proctor, Rebekah Lepro, Dennis Kafura, Sumit Shah, "First experiences using XACML for access control in distributed systems", Proceeding XMLSEC '03 Proceedings of the 2003 ACM workshop on XML securityは、データが分散システムに分散配置されている場合に、ＸＡＣＭＬを利用して、アクセス制御を与えることを教示する。ＸＡＣＭＬによれば、データがグラフ状に配置されている場合に、リンク情報を上位ノードに伝播させるアクセス伝播の技法も提供される。
【０００８】
しかし、ＸＡＣＭＬ技法を利用しても、アクセス権限判定結果に基づき、リンクを含むデータのビューを整合性を保って変化させることはできないという問題点があった。
【０００９】
なお、A. Fiat and M. Naor, Broadcast Encryption, Crypto'93, LNCS 773, 1993は、鍵管理に関連する情報の送信を最小限にしつつ、中央の放送サイトが指定された受け取り手に、セキュアな情報を送信できるようにする技術を開示する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特願２０１０−１６５６２０号明細書
【非特許文献】
【００１１】
【非特許文献１】Seth Proctor, Rebekah Lepro, Dennis Kafura, Sumit Shah, "First experiences using XACML for access control in distributed systems", Proceeding XMLSEC '03 Proceedings of the 2003 ACM workshop on XML security
【非特許文献２】A. Fiat and M. Naor, Broadcast Encryption, Crypto'93, LNCS 773, 1993
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従って、この発明の目的は、ドメインにまたがるデータのリンク付けにおいて、アクセス権限に応じたリンクを含むビューを適切に提供することにある。
【００１３】
この発明の他の目的は、リンク元・リンク先のデータを直接アクセスできない場合でも、リンクがあることと、リンク元及びリンク先のデータが属するデータを階層上で知ることができるようにすることである。
【課題を解決するための手段】
【００１４】
本発明が対象とするドメイン・データは、各組織の機密情報であって、データ所有者が指定した開示先だけが参照できるように暗号化される。このときデータは、階層に従って開示先が指定される。ここで階層の例は、ファイル・システムのフォルダによる階層、文書内の章・節・段落・文・語の階層、モデル（設計図・部品表等）要素の含有関係による階層などがある。
【００１５】
そこで、本発明が前提とする制約は、次のとおりである。
・ドメインデータ所有者は、どのような関連付けが行われるか知らない。
・リンク設定者は、ドメインデータ所有者がデータに指定した開示先を知らない。
・リンク設定者と参照者は、自身が開示先として指定されたデータしか復号できない。
【００１６】
本発明のシステムは、ドメイン・データ所有者の処理に関する部分と、リンク設定者の処理に関する部分と、参照者の処理に関する部分を有する。
【００１７】
ドメイン・データ所有者の処理に関する部分のシステムは、データの階層に従って、同一の開示先をグループ化する。次に、葉のグループを、共通鍵で暗号化する。次に、暗号化されたグループを名前の要素で書き換える。これを繰り返して適用して、すべてに適用し終わると、ドメイン・データ所有者の処理に関する部分のシステムは、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、公開データとする。
【００１８】
リンク設定者の処理に関する部分のシステムは、公開データをリンク設定者自身の秘密鍵で復号して共通鍵を得る。そして、それらの鍵で各グループを復号する。リンク設定者の処理に関する部分のシステムは次に、リンクに基づいて、グループごとに[リンク名,端点名,入出別]からなるテーブルを生成する。次に、テーブルの各レコードを親に向かって伝播する。このとき、端点名をグループが属する要素に書き換える。次にリンク設定者の処理に関する部分のシステムは、初期ステップで得た共通鍵を使って、テーブルを暗号化する。こうして得られたデータ全体を共通鍵で暗号化する。さらにリンクの開示先の公開鍵で共通鍵を暗号化した値を付加して、公開データとする。
【００１９】
参照者の処理に関する部分のシステムは、ドメイン・データ所有者の処理に関する部分のシステムから受け取ったデータと、リンク設定者の処理に関する部分のシステムから受け取ったデータとを秘密鍵で復号して共通鍵を得る。そして得られた共通鍵でドメイン・データ所有者の処理に関する部分のシステムから受け取ったデータと、リンク設定者の処理に関する部分のシステムから受け取ったデータを復号する。このとき、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える。そして、２つの木からビューを生成する。ドメイン・データ所有者とリンク設定者は一般的にそれぞれ複数存在するので、それらの組み合わせの数だけ、この処理を繰り返す。
【発明の効果】
【００２０】
この発明によれば、複数の企業が製品開発に関わる状況で、ドメイン・データにのセキュリティ保護に適合するようにリンク付けとリンクの管理を行うことが可能となり、異なる企業の製品情報の間の関連を一元管理することができるようになる。
【００２１】
また、リンク元・リンク先のデータを直接アクセスできない場合でも、リンクがあることと、リンク元データ・リンク先データが属するデータを参照者が階層上で知ることができるので、セキュリティの許す範囲で、情報が適切に開示される。これによって、目的のデータが不十分でも影響範囲の分析などを行うことが可能になる。
【００２２】
また、目的のために不足するデータがあることと、そのデータが属する要素を知ることができる。これを受けてデータ所有者に参照許可を要求したり、ソースの代わりにバイナリの提供を交渉したりすることが可能になる。そのために、本発明は、開示先指定と整合するように、前提となる制約のもとでリンクを含むビューを生成する仕組みを提供する。
【図面の簡単な説明】
【００２３】
【図１】異なるドメイン間の連携の例を示す図である。
【図２】ドメイン間の関連情報を一元管理するためのビューを示す図である。
【図３】本発明の実施例で使用されるコンピュータ装置のハードウェア構成のブロック図である。
【図４】本発明の実施例の全体の機能構成のブロック図である。
【図５】ドメインにおけるグループ化処理のフローチャートを示す図である。
【図６】サブルーチンgroup(p)の処理のフローチャートを示す図である。
【図７】ドメインにおけるグループ化の例を示す図である。
【図８】グループの暗号化処理のフローチャートを示す図である。
【図９】グループの暗号化処理の例を示す図である。
【図１０】リンク設定処理のフローチャートを示す図である。
【図１１】サブルーチンdecryptDD(M)の処理のフローチャートを示す図である。
【図１２】サブルーチンpropagate(L)の処理のフローチャートを示す図である。
【図１３】サブルーチンencrypt(L)の処理のフローチャートを示す図である。
【図１４】リンク設定処理の例を示す図である。
【図１５】参照処理のフローチャートを示す図である。
【図１６】サブルーチンdecryptLT(N,T)の処理のフローチャートを示す図である。
【図１７】サブルーチンresolve(L)の処理のフローチャートを示す図である。
【図１８】参照処理の例を示す図である。
【発明を実施するための形態】
【００２４】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２５】
図２を再度参照すると、これは、本発明を実施するためのハードウェア構成の全体を示す概要図でもある。図２において、ドメイン２０２、ドメイン２０４、ドメイン２０６、及びドメイン２０８は、個々のドメインのコンピュータ装置をあらわす。ここで、ドメインとは、図１に関連して例示した、システム・モデル、要求管理、制御解析、ＣＡＤ、電気／電子回路、部品構成管理、及び組み込みソフトウェアなどに個々に対応する。
【００２６】
個々のドメインのコンピュータ・システムの、好適にはハードディスク・ドライブである記憶装置には、そのドメインが使用するツールに特有のデータが記憶されている。このデータとして、これには限定されないが、ソフトウェア設計データとしてのＵＭＬ、ハードウェア設計データとしてのＳｙｓＭＬ、ツールがデータ交換用にサポートするＸＭＬ、電子設計データ交換用フォーマットであるＥＤＩＦなどがある。その他、ドメインにおけるツール独自のフォーマットのデータであってもよい。
【００２７】
各ドメインにおいて、それらのデータは、ＤＡＧとして構成されていてもよいし、ＤＡＧでないグラフや、さらにグラフでないデータ形式で保存されていてもよい。
【００２８】
図２には、ドメインは４個しか示されていないが、これは例示であり、さらに多くの、あるいは任意個数のドメインがあってよい。但し、関連性情報を作成するために、少なくとも２個のドメインは必要である。
【００２９】
データ間リンク管理ブロック（機能）２１０は、データの間の関連付けのビューを作成するため機能をコンピュータ装置上に実装されており、ドメイン２０２、ドメイン２０４、ドメイン２０６、及びドメイン２０８をそれぞれ実装するコンピュータ装置とネットワークを介して接続されており、オペレータの操作に従い、少なくとも２つのドメインとの間の接続を確立して、それらの２つのドメインのデータの間のリンクのビューを作成する機能をもつプログラムを含む。
【００３０】
図３は、ドメイン２０２、ドメイン２０４、ドメイン２０６、及びドメイン２０８や、データ間リンク管理機能２１０の構成を実装するためのコンピュータ装置の機能図である。図２には示さないが、本発明においては、データ間リンク管理機能２１０によって作成されたリンク情報を、所定のセキュリティ条件で参照する機能をもつ参照機能を実装するコンピュータ装置が、好適には複数設けられる。参照機能を実装するコンピュータ装置も、データ間リンク管理機能２１０の構成を実装するためのコンピュータ装置と同様のハードウェア構成であってよい。参照機能を実装するコンピュータ装置は、ドメインを実装するコンピュータ装置を兼用してもよい。すなわち、一台のコンピュータ装置が、ドメイン兼参照機能の機能をもっていてもよい。
【００３１】
図３において、システム・パス３０２には、ＣＰＵ３０４と、主記憶（ＲＡＭ）３０６と、ハードディスク・ドライブ（ＨＤＤ）３０８と、キーボード３１０と、マウス３１２と、ディスプレイ３１４が接続されている。ＣＰＵ３０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶３０６は、好適には、４ＧＢ以上の容量をもつものである。ハードディスク・ドライブ３０８は、好適には例えば、５００ＧＢ以上の容量をもつものである。
【００３２】
ハードディスク・ドライブ３０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ（商標）７、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、Ｗｉｎｄｏｗｓ（商標）２０００、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ３０４に適合する任意のものでよい。
【００３３】
データ間リンク管理機能２１０を実装するコンピュータ装置の場合には、ハードディスク・ドライブ３０８には、リンク設定ツール（図４で参照番号４２０で示される）などが格納されている。ドメイン２０２、２０４、２０６、２０８を実装するコンピュータ装置の場合は、ハードディスク・ドライブ３０８には、ドメイン・データの開示先指定情報に基づきグループ化するグループ化ツール（図４で参照番号４１０ａで示される）、及びグループ・データ暗号化ツール（図４で参照番号４１４ａで示される）などが格納されている。また、参照機能を実装するコンピュータ装置の場合には、ハードディスク・ドライブ３０８には、参照ツール（図４で参照番号４２６ａで示される）などが格納されている。これらのモジュールは、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ(R)などの既存のプログラミング言語処理系で作成することができ、オペレーティング・システムの働きで、これらのモジュールは適宜主記憶３０６にロードされて実行される。これらのモジュールの動作の詳細は、図６のフローチャートを参照して、より詳細に説明する。
【００３４】
キーボード３１０及びマウス３１２は、オペレータが、グループ化ツール、リンク設定ツール、参照ツールなどを操作したりするために使用される。
【００３５】
ディスプレイ３１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ３１４は、ドメインや、データ間リンク管理機能や、参照機能を実装するコンピュータ装置で、オペレータがデータのノードやリンクの情報を視覚的に確認しながら操作するために使用される。
【００３６】
図３のシステムは更に、バス３０２に接続された通信インターフェース３１６を介して、ＬＡＮ、ＷＡＮなどの外部ネットワークに接続されている。通信インターフェース３１６は、イーサネット（商標）などの仕組みにより、他のドメインのコンピュータ装置等と通信して、データをやり取りする。
【００３７】
次に、図４は、本発明を実施するための一例のハードウェアと機能構成のブロック図であり、認証局４０２と、ドメインを実装するコンピュータ装置４０４ａ、４０４ｂ、・・・、４０４ｚと、データ間リンク管理機能を実装するコンピュータ装置４１８と、参照機能を実装するコンピュータ装置４２４ａ、４２４ｂ、・・・、４２４ｚからなる。
【００３８】
ドメインを実装するコンピュータ装置４０４ａ、４０４ｂ、・・・、４０４ｚと、データ間リンク管理機能を実装するコンピュータ装置４１８と、参照機能を実装するコンピュータ装置４２４ａ、４２４ｂ、・・・、４２４ｚはすべて、好適には、図３に示すハードウェア構成である。
【００３９】
公開鍵と、秘密鍵は、所定のアルゴリズムにより各ドメインで生成することもできるが、好適には、各ドメインは、認証局４０２から、公開鍵と、秘密鍵を入手する。ドメインを実装するコンピュータ装置４０４ａ、４０４ｂ、・・・、４０４ｚは、異なるドメイン・データを保持しているが、ハードウェア構成と機能構成は同一なので、代表的にコンピュータ装置４０４ａで説明する。
【００４０】
コンピュータ装置４０４ａは、情報の開示先を示すデータ４０６ａと、ドメイン・データ４０８ａをもつ。ドメイン・データ４０８ａは、好適には無閉路有向グラフ（ＤＡＧ）の形式で構造化されたデータを保持する。情報の開示先を示すデータ４０６ａと、ドメイン・データ４０８ａは、図３の構成でいうと、ハードティスク・ドライブ３０８に格納されている。グループ化ツール４１０ａは、指定された情報の開示先を示すデータ４０６ａに基づいてドメイン・データ４０８ａをグループ化する機能をもつ。グループ化の処理は、後で図５のフローチャートを参照して説明する。このグループ化されたデータ４１２ａは、好適にはハードティスク・ドライブ３０８に格納される。グループ・データ暗号化ツール４１４ａは、グループ毎に認証局４０２から公開鍵と、秘密鍵を取得して、グループ化されたデータ４１２ａを暗号化し、暗号化データ４１６ａとしてハードティスク・ドライブ３０８に保持する。グループ化ツール４１０ａの処理と、グループ・データ暗号化ツール４１４ａの処理の詳細は、後で図８のフローチャートを参照して説明する。
【００４１】
データ間リンク管理機能を実装するコンピュータ装置４１８は、リンク設定ツール４２０をもち、コンピュータ装置４１８のオペレータは、リンク設定ツール４２０をもちいて、暗号化データ４１６ａ、４１６ｂ、・・・４１６ｚのうちの必要なものを適宜収集して暗号化し、暗号化されたリンク・データ４２２としてハードティスク・ドライブ３０８に保存する。リンク設定ツール４２０の処理の詳細は、後で図１０のフローチャートを参照して説明する。
【００４２】
なお、データ間リンク管理機能を実装するコンピュータ装置４１８は複数あってもよく、それぞれが異なるリンク・データを作成してもよい。あるいは、データ間リンク管理機能を実装するコンピュータ装置４１８を特に設けず、他のコンピュータ装置がデータ間リンク管理機能を実行し、作成されたリンク・データが直接、参照機能を実装するコンピュータ装置４２４ａ、４２４ｂ、・・・、４２４ｚに送られるようにしてもよい。
【００４３】
参照機能を実装するコンピュータ装置４２４２ａ、４２４ｂ、・・・、４２４ｚは、ハードウェア構成と機能構成は同一なので、代表的にコンピュータ装置４２４ａで説明する。
【００４４】
参照機能を実装するコンピュータ装置４２４ａは、参照ツール４２６ａをもち、参照処理を行うオペレータは、参照ツール４２６ａを用いて、ドメインを実装するコンピュータ装置４０４ａ、４０４ｂ、・・・、４０４ｚから暗号化データ４１６ａなどを受け取り、データ間リンク管理機能を実装するコンピュータ装置４１８から暗号化されたリンク・データ４２２を受け取り、ビューを生成する。参照ツール４２６ａの処理の詳細は、後で図１５のフローチャートを参照して説明する。
【００４５】
次に、図５及び図６のフローチャートを参照して、ドメインのグループ化ツール４１０ａの処理を説明する。
【００４６】
図５のフローチャートは、グループ化手続きを示す。この処理の入力は、ドメイン・データ４０４ａであるドメイン・データ木 T = (V,E)と、開示先データ４０６ａである開示先 grant : V → 2Uであり、Uは参照者の集合である。なお、2Uとは参照者の集合の部分集合を要素とする集合である。このときデータは、階層に従って開示先が指定される。ここで階層の例は、ファイル・システムのフォルダによる階層、文書内の章・節・段落・文・語の階層、モデル（設計図・部品表等）要素の含有関係による階層などがある。
【００４７】
グループ化ツール４１０ａは、ステップ５０２で、pにドメイン・データ木Tの根をセットする。
【００４８】
グループ化ツール４１０ａは、ステップ５０４で、Gp := {p}によって新規グループを作成する。
【００４９】
グループ化ツール４１０ａは、ステップ５０６で、G = {Gp}により、ステップ５０４で作成した新規グループをセットする。
【００５０】
グループ化ツール４１０ａは、ステップ５０８で、group(p)というサブルーチンを呼び出す。この処理の結果、開示先グループ全体 G = {G1,G2,...,Gn}が出力される。
【００５１】
図６のフローチャートは、図５のフローチャートの処理で呼ばれるサブルーチンgroup(p)の処理を示す。図６のステップ６０２では、このサブルーチンは、Cにpの子をセットする。
【００５２】
ステップ６０４では、サブルーチンは、C = {}、すなわち、Cが空かどうか判断し、もしそうなら、処理を終わり、戻る。
【００５３】
Cが空でないと判断すると、サブルーチンはステップ６０６で、全てのci∈Cを訪問したかどうかを判断する。もしそうなら、処理を終わり、戻る。
【００５４】
訪問していないci∈Cがあると、サブルーチンはステップ６０８で、grant(ci) = grant(p)であるかまたは、grant(ci) = grant(cj)であり、cj∈Cが訪問済みの子であるようなjが存在するかどうか判断する。ここで、grant(ci)は、ciの開示が許可されている参照者の集合である。そして、もしステップ６０８の判断が肯定的なら、ステップ６１０で、Gr := Gr ∪ {ci}により既存グループにciを追加する処理が行われる。ここでGrは、pまたはcjが属する集合である。
【００５５】
もしステップ６０８の判断が否定的であるなら、ステップ６１２で、Gi := {ci}で新規グループを作成し、ステップ６１４で、G := G ∪ {Gi}で、{Gi}がグループに追加される。
【００５６】
ステップ６１０とステップ６１２のどちらからもステッフ６１６に進み、そこでサブルーチンは、自らの処理group(ci)を再帰呼び出ししてステップ６０６に戻る。
【００５７】
図７は、このような処理によって形成される、グループ化されたドメイン・データと、そのグループ毎の開示先を示す。点線で囲まれたのがグループである。
【００５８】
図８は、グループ・データ暗号化ツール４１４ａによるグループ暗号化処理のフローチャートを示す図である。この処理は、この処理の入力は、ドメイン・データ４０４ａであるドメイン・データ木 T = (V,E)と、開示先データ４０６ａである開示先 grant : V → 2Uであり、Uは参照者の集合である。2Uは、Uは参照者の集合の部分集合を元とする集合である。
【００５９】
グループ・データ暗号化ツール４１４ａは、ステップ８０２で、グループ化手続き実行により、グループ木TG = (G,EG)を生成する。グループ化手続き実行とは、既に説明した図５及び図６のフローチャートで示す手続きであり、グループ木TGとは、図４のグループ化されたデータ４１２ａのことである。
【００６０】
グループ・データ暗号化ツール４１４ａは、ステップ８０４で、すべてのグループGiが置き換えられたかどうか判断し、もしそうなら処理を終わる。
【００６１】
すべてのグループGiが置き換えられてないなら、処理はステップ８０６に進み、そこでグループ・データ暗号化ツール４１４ａは、グループGiのための共通鍵Ktiを生成する。共通鍵Ktiは独自の処理ルーチンにより生成してもよいが、好適には認証局４０２から入手する。
【００６２】
グループ・データ暗号化ツール４１４ａは、ステップ８０８で、グループGiを共通鍵Ktiで暗号化し、ノードを生成してユニーク名Ciを与え、そのノードでグループGiを共通鍵Ktiで暗号化したデータを置き換える。
【００６３】
グループ・データ暗号化ツール４１４ａは、ステップ８１０で、公開データMに、Ci:F(Kti,Gi)を加える。ここで、F(Kti,Gi)は、グループGiを共通鍵Ktiで暗号化したデータである。なお、F(Kti,Gi)は、グループGiに含まれるノードのデータのすべてに加えて、エッジ集合Ei = {(v1,v2)|v1∈Gi,v2∈Gi}を加えたグラフ全体が暗号化される。
【００６４】
グループ・データ暗号化ツール４１４ａは、ステップ８１２で、Gの要素を１個選択してそれをvと置き、vの開示先であるgrant(v)の集合をXと置く。
【００６５】
グループ・データ暗号化ツール４１４ａは、ステップ８１４で、すべてのxj∈Xを訪問したかどうか判断し、そうでなければステップ８１６で公開データMに、共通鍵Ktiを開示先の公開鍵Kuxjで暗号化した値であるE(Kuxj,Kti)を加える。こうしてすべてのxj∈Xを訪問すると、処理はステップ８０４に戻る。
【００６６】
図９は、図７に示すグループ化されたドメイン・データに対して、(a)→(b)→(c)→(d)→(e)→(f)と順次図８のフローチャートの処理を適用した様子を示す図である。この処理の結果、公開データMは、下記のようになる。
M=〈E(KuA,Kt0), 
E(KuB,Kt1), E(KuC,Kt1), 
E(KuA,Kt2), E(KuC,Kt2), 
E(KuA,Kt3), E(KuB,Kt3), E(KuC,Kt4), 
E(KuA,Kt4), E(KuB,Kt4), E(KuC,Kt4), E(KuD,Kt4),
C0:F(Kt0,G0),C1:F(Kt1,G1),C2:F(Kt2,G2),
C3:F(Kt3,G3),C4:F(Kt4,G4)〉
【００６７】
次に図１０のフローチャートを参照して、リンク設定ツール４２０の処理を説明する。この処理の入力は、暗号化された公開ドメイン・データM1,...,Mnである。
【００６８】
リンク設定ツール４２０は、ステップ１００２で、サブルーチンdecryptDDを呼び出して、Mi(i = 1,...,n)を復号する。ステップ１００４ではすべてのMiを処理したかどうか判断され、そうでないならステップ１００２に戻る。
【００６９】
こうして、すべてのMiが復号されると処理はステップ１００６に進み、そこでリンク設定ツール４２０は、コンピュータ４１８のオペレータであるリンク設定者に、リンクL = {(l1,s1,d1),...,(lk,sk,dk)}を入力させる。ここで、liは名前、siはリンク元ノード,diはリンク先ノードである。
【００７０】
リンク設定ツール４２０は次にステップ１００８で、復号によって得た各ドメインデータ木Tiに対して、グループに対応するテーブルを頂点とする木Liを生成する(i∈{1,...,n})。
【００７１】
リンク設定ツール４２０は次にステップ１０１０で、siが属するグループに対するテーブルにエントリ[li,si,'out']を加える。
【００７２】
リンク設定ツール４２０は次にステップ１０１２で、diが属するグループに対するテーブルにエントリ[li,di,'in']を加える。
【００７３】
リンク設定ツール４２０はステップ１０１４で、すべての(li,si,di)∈Lを処理したかどうかを判断し、そうでないならステップ１０１０に戻る。
【００７４】
そしてすべての(li,si,di)∈Lを処理すると、リンク設定ツール４２０は、ステップ１０１６でサブルーチンpropagateを呼び出して、propagate(Li)を実行し、続いてステップ１０１８でサブルーチンencryptを呼び出して、encrypt(Li)を実行する。
【００７５】
リンク設定ツール４２０は、ステップ１０２０で、すべてのLiを処理したかどうか判断し、そうでなければステップ１０１６に戻る。こうして、ステップ１０２０で、すべてのLiを処理したと判断すると、処理を終わる。
【００７６】
図１１は、公開データMを入力とするサブルーチンdecryptDD(M)の処理のフローチャートを示す図である。サブルーチンdecryptDDは、ステップ１１０２でMを秘密鍵Krで復号し、グループの共通鍵Ktiを得る。
【００７７】
サブルーチンdecryptDDは、ステップ１１０４で、MをKtiで復号し、グループGiを得る。
【００７８】
サブルーチンdecryptDDはステップ１１０６で、すべてのKtiを適用したかどうか判断し、そうでなければステップ１１０４に戻る。そして、すべてのKtiを適用したと判断すると、すべてのノードCiをGiで置き換えて、処理を終わって、呼び出し側に戻る。
【００７９】
図１２は、リンク・テーブルの木Lを入力とするサブルーチンpropagate(L)の処理のフローチャートを示す図である。ステップ１２０２で、サブルーチンpropagateは、Lの訪問していないノードからなる部分木の葉ノードTiを選択する。
【００８０】
ステップ１２０４では、サブルーチンpropagateは、Tiが親ノードをもつかどうか判断し、もしそうなら、ステップ１２０６で、Tiのテーブルのすべてのエントリ[lj,nj,ioi]に対して、njを親ノードのグループに属する要素に書き換えて、Tiの親ノードのテーブルに複写する。そうでないなら、ステップ１２０６はスキップされる。
【００８１】
ステップ１２０８では、サブルーチンpropagateは、すべてのTiを訪問したかどうか判断し、もしそうなら処理は終わって、呼び出し側に戻る。そうでなければ、ステップ１２０２に戻る。
【００８２】
図１３は、リンク・テーブルの木Lを入力とするサブルーチンencrypt(L)の処理のフローチャートを示す図である。ステップ１３０２では、サブルーチンencryptは、LのノードTiを一つ選択する。
【００８３】
ステップ１３０４では、サブルーチンencryptは、Tiに対応するグループGiを復号するときに使った共通鍵KtiでTiを暗号化し、一時データSにCi:F(Kti,Ti)を加える。
【００８４】
ステップ１３０６では、サブルーチンencryptは、すべてのTiを訪問したかどうかを判断し、そうでないならステップ１３０２に戻る。
【００８５】
こうしてすべてのTiを訪問すると、サブルーチンencryptは、ステップ１３０８でLのための共通鍵Ktを生成する。これは好適には、認証局４０２から受け取る。
【００８６】
次にサブルーチンencryptは、ステップ１３１０で公開データNにF(Kt,S)を加える。そして次のステップ１３１２では、サブルーチンencryptは、Lの開示先xj∈Xをひとつ選択し、ステップ１３１４で公開データNにE(Kuxj,Kt)を加える。
【００８７】
次にサブルーチンencryptは、ステップ１３１６で、すべてのxj∈Xを訪問したかどうか判断し、もしそうなら処理は終わって、呼び出し側に戻る。そうでなければ、ステップ１３１２に戻る。
【００８８】
図１４は、リンク設定ツール４２０の処理の例を示す図である。図１４(a)では、リンク設定ツール４２０は、Mを秘密鍵KrCで復号して、共通鍵Kt1、Kt2、Kt3、Kt4を得る。そして、名前Ciを、復号したデータGiで置き換える。このとき、リンク設定ツール４２０は、Kt0を得られず、iを得られないことに留意されたい。
【００８９】
図１４(b)では、リンク設定ツール４２０は、データにリンクを付加する。
【００９０】
図１４(c)では、リンク設定ツール４２０は、リンクに基づいて、グループGi毎に[リンク名,端点名,入出別]からなるテーブルTiを生成する。
【００９１】
図１４(d)では、リンク設定ツール４２０は、テーブルTiの各レコードを親に向かって伝播する。このとき端点名を、Giが属する要素に置き換える。
【００９２】
次に、リンク設定ツール４２０は、初期ステップで得た共通鍵Ktiを使って、Ti（この例では、i = 1,..,4）を暗号化して、下記を得る。
C1:F(Kt1,T1)
C2:F(Kt2,T2)
C3:F(Kt3,T3)
C4:F(Kt4,T4)
【００９３】
次に、上記全体を共通鍵Ktで暗号化する。さらにリンクの開示先X∈{A,B}の公開鍵KuXで共通鍵Ktを暗号化した E(KuX,Kt)を付加して、下記のとおり、公開データとする。
【００９４】
N=〈E(KuA,Kt), E(KuB,Kt), 
F(Kt,〈C1:F(Kt1,T1), C2:F(Kt2,T2),   
C3:F(Kt3,T3), C4:F(Kt4,T4)〉)〉
【００９５】
次に図１５のフローチャートを参照して、参照ツール４２６ａの処理について説明する。この処理の入力は、公開ドメイン・データM1,...,Mnと、公開ドメイン・データN1,...,Nnである。ステップ１５０２で、参照ツール４２６ａは、サブルーチンdecryptDD(Mi)を呼び出して、その結果をTiとする。サブルーチンdecryptDDについては、図１１を参照して既に説明済みである。
【００９６】
参照ツール４２６ａは、ステップ１５０４で、サブルーチンdecryptLT(Ni,Ti)を呼び出して、その結果をLiとする。サブルーチンdecryptLTについては、図１６のフローチャートを参照して後で説明する。
【００９７】
次に参照ツール４２６ａは、ステップ１５０６で、サブルーチンresolve(Li)を実行する。サブルーチンresolveについては、図１７のフローチャートを参照して後で説明する。
【００９８】
次に参照ツール４２６ａは、ステップ１５０８で、すべてのMi,Ni (i∈{1,...,n})を処理したかどうかを判断し、ステップ１５０２に戻る。
【００９９】
参照ツール４２６ａは、ステップ１５０８で、すべてのMi,Ni (i∈{1,...,n})を処理したと判断すると、ステップ１５１０で、あるリンク・テーブルの木に含まれるあるテーブルのひとつのエントリ[l,s,'out']を選択する。
【０１００】
次にステップ１５１２で、参照ツール４２６ａは、すべてのリンク・テーブルの木に含まれるすべてのテーブルから[l,d,'in']を検索する。
【０１０１】
次にステップ１５１４で、参照ツール４２６ａは、L := L ∪ {(l,s,d)}によりLに要素を追加する。次のステップ１５１６で参照ツール４２６ａは、すべてのエントリ[l,s,'out']を訪問したかどうかを判断し、もしそうなら処理を終わり、そうでないなら処理はステップ１５１０に戻る。この処理の結果出力されるのは、ドメイン・データ木T1,...,Tnと、リンクL = {(l1,s1,d1),...,(ln,sn,dn)}である。
【０１０２】
次に図１６のフローチャートを参照して、サブルーチンdecryptLT(N,T)の処理を説明する。ここでNは公開データであり、Tはドメイン・データ木である。ステップ１６０２では、サブルーチンdecryptLTは、Nを秘密鍵Krで復号し、Nの共通鍵Ktを得る。
【０１０３】
ステップ１６０４では、サブルーチンdecryptLTは、さらにNを共通鍵Ktiで復号し、テーブルTiを得る。
【０１０４】
ステップ１６０６では、サブルーチンdecryptLTは、TのすべてのノードCiをTiで置き換えたリンク・テーブルの木Lを生成して処理を終わり、戻る。
【０１０５】
次に図１７のフローチャートを参照して、サブルーチンresolve(L)の処理を説明する。ここでLは、リンク・テーブルの木である。サブルーチンresolveは、ステップ１７０２で、Lの訪問していないノードからなる部分木の葉ノードTiを選択する。
【０１０６】
ステップ１７０４で、サブルーチンresolveは、Tiが親ノードを持つかどうか判断し、もしそうならステップ１７０６で、Tiのテーブルのすべてのエントリ[lj,hj,ioj]に対して、親を含む先祖ノードのテーブルにエントリ[lj,any,ioj]がもしあれば消去する。ステップ１７０４でTiが親ノードを持たないと判断したなら、ステップ１７０６は単にスキップする。
【０１０７】
次にステップ１７０８では、サブルーチンresolveは、すべてのTiを訪問したかどうか判断し、もしそうなら処理を終えて戻り、そうでなければサブルーチンresolveは、ステップ１７０２に戻る。
【０１０８】
図１８は、参照ツール４２６ａの動作の例を示す図である。図１８(a)に進む前に、参照ツール４２６ａは、受け取ったMとNを秘密鍵KrAで復号して共通鍵Kt2,Kt3,Kt4,Ktを得る。このとき、この参照ツール４２６ａのオペレータはKt1を復号できず、e、fは得られない。得られた共通鍵でMとNを復号することにより、図１８(a)に示す木とテーブルが得られる。
【０１０９】
そこでTiの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える。これによって図１８(b)に示す木とテーブルが得られる。
【０１１０】
そして参照ツール４２６ａは、図１８(c)に示すように、２つの木から参照用のビューを生成する。ドメインデータ所有者とリンク設定者は、一般にそれぞれ複数存在する。Mと対応するNの組み合わせ数だけ、これを繰り返す。
【０１１１】
上記実施例では、ドメインデータ所有者のコンピュータ装置、リンク設定者のコンピュータ装置、及びデータ参照者のコンピュータ装置が別個である例を示したが、ドメインデータ所有者のコンピュータ装置、リンク設定者のコンピュータ装置、及びデータ参照者のコンピュータ装置のうちの２者、あるいは３者が重なっていてもアルゴリズムは動作する。特に、ドメインデータ所有者とリンク設定者を同一とすることで、階層だけで表現できないグラフ構造をドメインデータとして扱うことができるようになる。
【０１１２】
以上のように、特定の実施例に従い、本発明を説明してきたが、本発明は、特定のオペレーティング・システムやプラットフォームに限定されず、任意のコンピュータ・システム上で実現可能である。
【０１１３】
また、本発明は、特定のドメインやツールに限定されることなく、一般的に適用可能である。
【符号の説明】
【０１１４】
４０４ａ、４０４ｂ、・・・、４０４ｚ  ドメインのコンピュータ装置
４０６ａ、４０６ｂ、・・・、４０６ｚ  開示先データ
４０８ａ、４０８ｂ、・・・、４０８ｚ  ドメイン・データ
４１０ａ、４１０ｂ、・・・、４１０ｚ  グループ化ツール
４１２ａ、４１２ｂ、・・・、４１２ｚ  グループ化されたデータ
４１４ａ、４１４ｂ、・・・、４１４ｚ  グループ・データ暗号化ツール
４１６ａ、４１６ｂ、・・・、４１６ｚ  暗号化データ
４１８                                リンク設定用コンピュータ装置
４２０                                リンク設定ツール
４２２                                暗号化されたリンク・データ
４２４ａ、４２４ｂ、・・・、４２４ｚ  参照用コンピュータ装置
４２６ａ、４２６ｂ、・・・、４２６ｚ  参照ツール
【図１】
0005827518.tif 000002
【図２】
0005827518.tif 000003
【図３】
0005827518.tif 000004
【図４】
0005827518.tif 000005
【図５】
0005827518.tif 000006
【図６】
0005827518.tif 000007
【図７】
0005827518.tif 000008
【図８】
0005827518.tif 000009
【図９】
0005827518.tif 000010
【図１０】
0005827518.tif 000011
【図１１】
0005827518.tif 000012
【図１２】
0005827518.tif 000013
【図１３】
0005827518.tif 000014
【図１４】
0005827518.tif 000015
【図１５】
0005827518.tif 000016
【図１６】
0005827518.tif 000017
【図１７】
0005827518.tif 000018
【図１８】
0005827518.tif 000019