特許第5827518号(P5827518)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
<>
  • 特許5827518-情報管理システム、方法及びプログラム 図000002
  • 特許5827518-情報管理システム、方法及びプログラム 図000003
  • 特許5827518-情報管理システム、方法及びプログラム 図000004
  • 特許5827518-情報管理システム、方法及びプログラム 図000005
  • 特許5827518-情報管理システム、方法及びプログラム 図000006
  • 特許5827518-情報管理システム、方法及びプログラム 図000007
  • 特許5827518-情報管理システム、方法及びプログラム 図000008
  • 特許5827518-情報管理システム、方法及びプログラム 図000009
  • 特許5827518-情報管理システム、方法及びプログラム 図000010
  • 特許5827518-情報管理システム、方法及びプログラム 図000011
  • 特許5827518-情報管理システム、方法及びプログラム 図000012
  • 特許5827518-情報管理システム、方法及びプログラム 図000013
  • 特許5827518-情報管理システム、方法及びプログラム 図000014
  • 特許5827518-情報管理システム、方法及びプログラム 図000015
  • 特許5827518-情報管理システム、方法及びプログラム 図000016
  • 特許5827518-情報管理システム、方法及びプログラム 図000017
  • 特許5827518-情報管理システム、方法及びプログラム 図000018
  • 特許5827518-情報管理システム、方法及びプログラム 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5827518
(24)【登録日】2015年10月23日
(45)【発行日】2015年12月2日
(54)【発明の名称】情報管理システム、方法及びプログラム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20151112BHJP
   H04L 9/08 20060101ALI20151112BHJP
   G06F 21/60 20130101ALI20151112BHJP
【FI】
   G06F21/62 318
   H04L9/00 601B
   H04L9/00 601E
   G06F21/60 320
【請求項の数】15
【全頁数】20
(21)【出願番号】特願2011-178231(P2011-178231)
(22)【出願日】2011年8月17日
(65)【公開番号】特開2013-41439(P2013-41439A)
(43)【公開日】2013年2月28日
【審査請求日】2014年4月2日
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】中村 宏明
(72)【発明者】
【氏名】宮下 尚
(72)【発明者】
【氏名】上條 浩一
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 国際公開第2011/086668(WO,A1)
【文献】 特開2001−022781(JP,A)
【文献】 国際公開第2005/122464(WO,A1)
【文献】 特開2007−318583(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00−21/88
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置に保存された複数のドメインにおける木構造のドメイン・データの間の関係のリンクのビューを、与えられたアクセス権限に従い提供するシステムであって、 前記個々のドメインにおいて、該ドメインの階層毎の指定された開示先毎に該ドメインのドメイン・データをグループ化する手段と、
前記グループ化された木構造のデータにおいて、葉のグループを、共通鍵で暗号化する手段と、
前記共通鍵で暗号化した結果のデータに、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、第1の公開データを作成する手段と、
前記第1の公開データを、リンク設定者の秘密鍵で復号して共通鍵を得て、それらの鍵で各グループを復号する手段と、
復号したデータにおけるリンクに基づいて、グループごとにテーブルを生成する手段と、
前記テーブルの各レコードを、木構造の親に向かって伝播する手段と、
共通鍵を使って、前記テーブルを暗号化し、該テーブルを暗号化した前記共通鍵を開示先の公開鍵で暗号化した値を付加することによって、第2の公開データを作成する手段と、
前記第1の公開データと前記第2の公開データを秘密鍵で復号してそれぞれから共通鍵を得る手段と、
前記第1の公開データと前記第2の公開データそれぞれから得られた前記共通鍵で、前記第1の公開データと前記第2の公開データの残りの部分をそれぞれ復号することによりビューを生成する手段を有する、
ドメイン・データの間の関係のリンクのビューを提供するシステム。
【請求項2】
前記第1の公開データを作成する手段は、暗号化されたグループを名前の要素で書き換える手段を含む、請求項1に記載のシステム。
【請求項3】
前記各グループを復号する手段は、前記名前の要素をグループが属する要素に書き換える手段を含む、請求項2に記載のシステム。
【請求項4】
前記ビューを生成する手段は、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える手段を有する、請求項1に記載のシステム。
【請求項5】
ドメイン用コンピュータ装置が、ドメイン・データと、前記グループ化する手段と、前記共通鍵で暗号化する手段と、前記第1の公開データを作成する手段をもち、
リンク設定用コンピュータ装置が、前記各グループを復号する手段と、前記グループごとにテーブルを生成する手段と、前記木構造の親に向かって伝播する手段と、前記第2の公開データを作成する手段をもち、
参照用コンピュータ装置が、前記第1の公開データと前記第2の公開データを秘密鍵で復号してそれぞれから共通鍵を得る手段と、前記ビューを生成する手段をもち、
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置は互いにネットワーク接続されている、請求項1に記載のシステム。
【請求項6】
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置が、それぞれ複数台設けられている、請求項5に記載のシステム。
【請求項7】
記参照用コンピュータ装置は、前記ドメイン用コンピュータ装置で兼用されている、請求項6に記載のシステム。
【請求項8】
コンピュータ装置に保存された複数のドメインにおける木構造のドメイン・データの間の関係のリンクのビューを、与えられたアクセス権限に従い提供する方法であって、
第1のコンピュータによって、前記個々のドメインにおいて、該ドメインの階層毎の指定された開示先毎に該ドメインのドメイン・データをグループ化するステップと、
前記第1のコンピュータによって、前記グループ化された木構造のデータにおいて、葉のグループを、共通鍵で暗号化するステップと、
前記第1のコンピュータによって、前記共通鍵で暗号化した結果のデータに、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、第1の公開データを作成するステップと、
第2のコンピュータによって、前記第1の公開データを、リンク設定者の秘密鍵で復号して共通鍵を得て、それらの鍵で各グループを復号するステップと、
前記第2のコンピュータによって、復号したデータにおけるリンクに基づいて、グループごとにテーブルを生成するステップと、
前記第2のコンピュータによって、前記テーブルの各レコードを、木構造の親に向かって伝播するステップと、
前記第2のコンピュータによって、共通鍵を使って、前記テーブルを暗号化し、該テーブルを暗号化した前記共通鍵を開示先の公開鍵で暗号化した値を付加することによって、第2の公開データを作成するステップと、
前記第1又は第3のコンピュータによって、前記第1の公開データと前記第2の公開データを秘密鍵で復号してそれぞれから共通鍵を得るステップと、
前記第1又は前記第3のコンピュータによって、前記第1の公開データと前記第2の公開データを秘密鍵で復号してそれぞれから得られた共通鍵で、前記第1の公開データと前記第2の公開データの残りの部分をそれぞれ復号することによりビューを生成するステップを有する、
ドメイン・データの間の関係のリンクのビューを提供する方法。
【請求項9】
前記第1の公開データを作成するステップは、暗号化されたグループを名前の要素で書き換えるステップを含む、請求項8に記載の方法。
【請求項10】
前記各グループを復号するステップは、前記名前の要素をグループが属する要素に書き換えるステップを含む、請求項9に記載の方法。
【請求項11】
前記ビューを生成するステップは、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換えるステップを有する、請求項8に記載の方法。
【請求項12】
ドメイン用コンピュータ装置が第1のコンピュータとして、ドメイン・データと、前記グループ化するステップと、前記共通鍵で暗号化するステップと、前記第1の公開データを作成するステップを実行し、
リンク設定用コンピュータ装置が第2のコンピュータとして、前記各グループを復号するステップと、前記グループごとにテーブルを生成するステップと、前記木構造の親に向かって伝播するステップと、前記第2の公開データを作成するステップを実行し、
参照用コンピュータ装置が第3のコンピュータとして、前記第1の公開データと前記第2の公開データを秘密鍵で復号してそれぞれから共通鍵を得るステップと、前記ビューを生成するステップを実行し、
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置は互いにネットワーク接続されている、請求項8に記載の方法。
【請求項13】
前記ドメイン用コンピュータ装置と、前記リンク設定用コンピュータ装置と、前記参照用コンピュータ装置が、それぞれ複数台設けられている、請求項12に記載の方法。
【請求項14】
記参照用コンピュータ装置は、前記ドメイン用コンピュータ装置で兼用されている、請求項13に記載の方法。
【請求項15】
請求項8乃至請求項14に記載の方法を前記コンピュータ装置に実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、一般的には情報管理システムに関し、より詳しくは、異なるドメインにある情報の間のリンクまたは関連付けを管理するための情報管理システム、方法及びプログラムに関する。
【背景技術】
【0002】
従来より、自動車、電機、航空宇宙防衛などの分野では、製品が複雑で、多数の部品からなるので、1つの製品を設計するために、機械、電気、システム設計、ソフトウェア、試験などの多くのドメイン(部門)が関与する。このように多くの部門に分かれていても、結局は統合された製品に集約する必要があるので、ドメインにまたがるデータのリンク付けを行う必要がある。
【0003】
図1は、自動車メーカーにおける異なるドメイン間の連携の例を示す図である。図1からは、システム・モデル、要求管理、制御解析、CAD、電気/電子回路、部品構成管理、及び組み込みソフトウェアという異なるドメインの間で、データのリンク付けが行われることが見て取れる。
【0004】
ところが、ドメインをまたがるデータの関連付けはアドホックに行われていて、統合された製品全体に対するトレーサビリティの確保や影響分析が困難であるという問題がある。このような困難の原因の1つとして、各ドメインの専門家が、異なるツールを使っている、ということがある。それを解消するためには、どのドメインでも統一されたツールを使えばいいが、各ドメインの専門家は使い慣れたツールを使いたいという要望が強く、また、ドメインが異なるとツールに要求される機能も異なるので、現実問題として、ツールを統一することは困難である。
【0005】
そこで、各ドメイン内の情報は、そのまま既存のツールで管理できて、ドメイン間の関連情報だけを一元管理することで、製品全体にまたがるビューを提示し、以って専門家の間のコラボレーションを促進する技術が要望されている。図2はそのような要望される技術の概要を示すものである。すなわち、図2に示すように、ドメイン202、ドメイン204、ドメイン206及びドメイン208の情報の間の関連情報のビュー212を与えるデータ間リンク管理機能210が要望された。
【0006】
この目的のため、本願発明者らは、特願2010−165620号明細書で、ドメインにまたがるデータのリンク付けを行う技法を提供したが、これは、複数の組織・企業が製品開発に関わる状況で、ドメイン・データのセキュリティ保護に適合するようにリンク付けとリンクの管理を行うことまでを視座に入れたものではなかった。
【0007】
一方例えば、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は、データが分散システムに分散配置されている場合に、XACMLを利用して、アクセス制御を与えることを教示する。XACMLによれば、データがグラフ状に配置されている場合に、リンク情報を上位ノードに伝播させるアクセス伝播の技法も提供される。
【0008】
しかし、XACML技法を利用しても、アクセス権限判定結果に基づき、リンクを含むデータのビューを整合性を保って変化させることはできないという問題点があった。
【0009】
なお、A. Fiat and M. Naor, Broadcast Encryption, Crypto'93, LNCS 773, 1993は、鍵管理に関連する情報の送信を最小限にしつつ、中央の放送サイトが指定された受け取り手に、セキュアな情報を送信できるようにする技術を開示する。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特願2010−165620号明細書
【非特許文献】
【0011】
【非特許文献1】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
【非特許文献2】A. Fiat and M. Naor, Broadcast Encryption, Crypto'93, LNCS 773, 1993
【発明の概要】
【発明が解決しようとする課題】
【0012】
従って、この発明の目的は、ドメインにまたがるデータのリンク付けにおいて、アクセス権限に応じたリンクを含むビューを適切に提供することにある。
【0013】
この発明の他の目的は、リンク元・リンク先のデータを直接アクセスできない場合でも、リンクがあることと、リンク元及びリンク先のデータが属するデータを階層上で知ることができるようにすることである。
【課題を解決するための手段】
【0014】
本発明が対象とするドメイン・データは、各組織の機密情報であって、データ所有者が指定した開示先だけが参照できるように暗号化される。このときデータは、階層に従って開示先が指定される。ここで階層の例は、ファイル・システムのフォルダによる階層、文書内の章・節・段落・文・語の階層、モデル(設計図・部品表等)要素の含有関係による階層などがある。
【0015】
そこで、本発明が前提とする制約は、次のとおりである。
・ドメインデータ所有者は、どのような関連付けが行われるか知らない。
・リンク設定者は、ドメインデータ所有者がデータに指定した開示先を知らない。
・リンク設定者と参照者は、自身が開示先として指定されたデータしか復号できない。
【0016】
本発明のシステムは、ドメイン・データ所有者の処理に関する部分と、リンク設定者の処理に関する部分と、参照者の処理に関する部分を有する。
【0017】
ドメイン・データ所有者の処理に関する部分のシステムは、データの階層に従って、同一の開示先をグループ化する。次に、葉のグループを、共通鍵で暗号化する。次に、暗号化されたグループを名前の要素で書き換える。これを繰り返して適用して、すべてに適用し終わると、ドメイン・データ所有者の処理に関する部分のシステムは、すべてのグループの共通鍵を開示先の公開鍵で暗号化した値を付加して、公開データとする。
【0018】
リンク設定者の処理に関する部分のシステムは、公開データをリンク設定者自身の秘密鍵で復号して共通鍵を得る。そして、それらの鍵で各グループを復号する。リンク設定者の処理に関する部分のシステムは次に、リンクに基づいて、グループごとに[リンク名,端点名,入出別]からなるテーブルを生成する。次に、テーブルの各レコードを親に向かって伝播する。このとき、端点名をグループが属する要素に書き換える。次にリンク設定者の処理に関する部分のシステムは、初期ステップで得た共通鍵を使って、テーブルを暗号化する。こうして得られたデータ全体を共通鍵で暗号化する。さらにリンクの開示先の公開鍵で共通鍵を暗号化した値を付加して、公開データとする。
【0019】
参照者の処理に関する部分のシステムは、ドメイン・データ所有者の処理に関する部分のシステムから受け取ったデータと、リンク設定者の処理に関する部分のシステムから受け取ったデータとを秘密鍵で復号して共通鍵を得る。そして得られた共通鍵でドメイン・データ所有者の処理に関する部分のシステムから受け取ったデータと、リンク設定者の処理に関する部分のシステムから受け取ったデータを復号する。このとき、テーブルの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える。そして、2つの木からビューを生成する。ドメイン・データ所有者とリンク設定者は一般的にそれぞれ複数存在するので、それらの組み合わせの数だけ、この処理を繰り返す。
【発明の効果】
【0020】
この発明によれば、複数の企業が製品開発に関わる状況で、ドメイン・データにのセキュリティ保護に適合するようにリンク付けとリンクの管理を行うことが可能となり、異なる企業の製品情報の間の関連を一元管理することができるようになる。
【0021】
また、リンク元・リンク先のデータを直接アクセスできない場合でも、リンクがあることと、リンク元データ・リンク先データが属するデータを参照者が階層上で知ることができるので、セキュリティの許す範囲で、情報が適切に開示される。これによって、目的のデータが不十分でも影響範囲の分析などを行うことが可能になる。
【0022】
また、目的のために不足するデータがあることと、そのデータが属する要素を知ることができる。これを受けてデータ所有者に参照許可を要求したり、ソースの代わりにバイナリの提供を交渉したりすることが可能になる。そのために、本発明は、開示先指定と整合するように、前提となる制約のもとでリンクを含むビューを生成する仕組みを提供する。
【図面の簡単な説明】
【0023】
図1】異なるドメイン間の連携の例を示す図である。
図2】ドメイン間の関連情報を一元管理するためのビューを示す図である。
図3】本発明の実施例で使用されるコンピュータ装置のハードウェア構成のブロック図である。
図4】本発明の実施例の全体の機能構成のブロック図である。
図5】ドメインにおけるグループ化処理のフローチャートを示す図である。
図6】サブルーチンgroup(p)の処理のフローチャートを示す図である。
図7】ドメインにおけるグループ化の例を示す図である。
図8】グループの暗号化処理のフローチャートを示す図である。
図9】グループの暗号化処理の例を示す図である。
図10】リンク設定処理のフローチャートを示す図である。
図11】サブルーチンdecryptDD(M)の処理のフローチャートを示す図である。
図12】サブルーチンpropagate(L)の処理のフローチャートを示す図である。
図13】サブルーチンencrypt(L)の処理のフローチャートを示す図である。
図14】リンク設定処理の例を示す図である。
図15】参照処理のフローチャートを示す図である。
図16】サブルーチンdecryptLT(N,T)の処理のフローチャートを示す図である。
図17】サブルーチンresolve(L)の処理のフローチャートを示す図である。
図18】参照処理の例を示す図である。
【発明を実施するための形態】
【0024】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【0025】
図2を再度参照すると、これは、本発明を実施するためのハードウェア構成の全体を示す概要図でもある。図2において、ドメイン202、ドメイン204、ドメイン206、及びドメイン208は、個々のドメインのコンピュータ装置をあらわす。ここで、ドメインとは、図1に関連して例示した、システム・モデル、要求管理、制御解析、CAD、電気/電子回路、部品構成管理、及び組み込みソフトウェアなどに個々に対応する。
【0026】
個々のドメインのコンピュータ・システムの、好適にはハードディスク・ドライブである記憶装置には、そのドメインが使用するツールに特有のデータが記憶されている。このデータとして、これには限定されないが、ソフトウェア設計データとしてのUML、ハードウェア設計データとしてのSysML、ツールがデータ交換用にサポートするXML、電子設計データ交換用フォーマットであるEDIFなどがある。その他、ドメインにおけるツール独自のフォーマットのデータであってもよい。
【0027】
各ドメインにおいて、それらのデータは、DAGとして構成されていてもよいし、DAGでないグラフや、さらにグラフでないデータ形式で保存されていてもよい。
【0028】
図2には、ドメインは4個しか示されていないが、これは例示であり、さらに多くの、あるいは任意個数のドメインがあってよい。但し、関連性情報を作成するために、少なくとも2個のドメインは必要である。
【0029】
データ間リンク管理ブロック(機能)210は、データの間の関連付けのビューを作成するため機能をコンピュータ装置上に実装されており、ドメイン202、ドメイン204、ドメイン206、及びドメイン208をそれぞれ実装するコンピュータ装置とネットワークを介して接続されており、オペレータの操作に従い、少なくとも2つのドメインとの間の接続を確立して、それらの2つのドメインのデータの間のリンクのビューを作成する機能をもつプログラムを含む。
【0030】
図3は、ドメイン202、ドメイン204、ドメイン206、及びドメイン208や、データ間リンク管理機能210の構成を実装するためのコンピュータ装置の機能図である。図2には示さないが、本発明においては、データ間リンク管理機能210によって作成されたリンク情報を、所定のセキュリティ条件で参照する機能をもつ参照機能を実装するコンピュータ装置が、好適には複数設けられる。参照機能を実装するコンピュータ装置も、データ間リンク管理機能210の構成を実装するためのコンピュータ装置と同様のハードウェア構成であってよい。参照機能を実装するコンピュータ装置は、ドメインを実装するコンピュータ装置を兼用してもよい。すなわち、一台のコンピュータ装置が、ドメイン兼参照機能の機能をもっていてもよい。
【0031】
図3において、システム・パス302には、CPU304と、主記憶(RAM)306と、ハードディスク・ドライブ(HDD)308と、キーボード310と、マウス312と、ディスプレイ314が接続されている。CPU304は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶306は、好適には、4GB以上の容量をもつものである。ハードディスク・ドライブ308は、好適には例えば、500GB以上の容量をもつものである。
【0032】
ハードディスク・ドライブ308には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows(商標)7、Windows XP(商標)、Windows(商標)2000、アップルコンピュータのMac OS(商標)などの、CPU304に適合する任意のものでよい。
【0033】
データ間リンク管理機能210を実装するコンピュータ装置の場合には、ハードディスク・ドライブ308には、リンク設定ツール(図4で参照番号420で示される)などが格納されている。ドメイン202、204、206、208を実装するコンピュータ装置の場合は、ハードディスク・ドライブ308には、ドメイン・データの開示先指定情報に基づきグループ化するグループ化ツール(図4で参照番号410aで示される)、及びグループ・データ暗号化ツール(図4で参照番号414aで示される)などが格納されている。また、参照機能を実装するコンピュータ装置の場合には、ハードディスク・ドライブ308には、参照ツール(図4で参照番号426aで示される)などが格納されている。これらのモジュールは、C、C++、C#、Java(R)などの既存のプログラミング言語処理系で作成することができ、オペレーティング・システムの働きで、これらのモジュールは適宜主記憶306にロードされて実行される。これらのモジュールの動作の詳細は、図6のフローチャートを参照して、より詳細に説明する。
【0034】
キーボード310及びマウス312は、オペレータが、グループ化ツール、リンク設定ツール、参照ツールなどを操作したりするために使用される。
【0035】
ディスプレイ314は、好適には、液晶ディスプレイであり、例えば、XGA(1024×768の解像度)、またはUXGA(1600×1200の解像度)などの任意の解像度のものを使用することができる。ディスプレイ314は、ドメインや、データ間リンク管理機能や、参照機能を実装するコンピュータ装置で、オペレータがデータのノードやリンクの情報を視覚的に確認しながら操作するために使用される。
【0036】
図3のシステムは更に、バス302に接続された通信インターフェース316を介して、LAN、WANなどの外部ネットワークに接続されている。通信インターフェース316は、イーサネット(商標)などの仕組みにより、他のドメインのコンピュータ装置等と通信して、データをやり取りする。
【0037】
次に、図4は、本発明を実施するための一例のハードウェアと機能構成のブロック図であり、認証局402と、ドメインを実装するコンピュータ装置404a、404b、・・・、404zと、データ間リンク管理機能を実装するコンピュータ装置418と、参照機能を実装するコンピュータ装置424a、424b、・・・、424zからなる。
【0038】
ドメインを実装するコンピュータ装置404a、404b、・・・、404zと、データ間リンク管理機能を実装するコンピュータ装置418と、参照機能を実装するコンピュータ装置424a、424b、・・・、424zはすべて、好適には、図3に示すハードウェア構成である。
【0039】
公開鍵と、秘密鍵は、所定のアルゴリズムにより各ドメインで生成することもできるが、好適には、各ドメインは、認証局402から、公開鍵と、秘密鍵を入手する。ドメインを実装するコンピュータ装置404a、404b、・・・、404zは、異なるドメイン・データを保持しているが、ハードウェア構成と機能構成は同一なので、代表的にコンピュータ装置404aで説明する。
【0040】
コンピュータ装置404aは、情報の開示先を示すデータ406aと、ドメイン・データ408aをもつ。ドメイン・データ408aは、好適には無閉路有向グラフ(DAG)の形式で構造化されたデータを保持する。情報の開示先を示すデータ406aと、ドメイン・データ408aは、図3の構成でいうと、ハードティスク・ドライブ308に格納されている。グループ化ツール410aは、指定された情報の開示先を示すデータ406aに基づいてドメイン・データ408aをグループ化する機能をもつ。グループ化の処理は、後で図5のフローチャートを参照して説明する。このグループ化されたデータ412aは、好適にはハードティスク・ドライブ308に格納される。グループ・データ暗号化ツール414aは、グループ毎に認証局402から公開鍵と、秘密鍵を取得して、グループ化されたデータ412aを暗号化し、暗号化データ416aとしてハードティスク・ドライブ308に保持する。グループ化ツール410aの処理と、グループ・データ暗号化ツール414aの処理の詳細は、後で図8のフローチャートを参照して説明する。
【0041】
データ間リンク管理機能を実装するコンピュータ装置418は、リンク設定ツール420をもち、コンピュータ装置418のオペレータは、リンク設定ツール420をもちいて、暗号化データ416a、416b、・・・416zのうちの必要なものを適宜収集して暗号化し、暗号化されたリンク・データ422としてハードティスク・ドライブ308に保存する。リンク設定ツール420の処理の詳細は、後で図10のフローチャートを参照して説明する。
【0042】
なお、データ間リンク管理機能を実装するコンピュータ装置418は複数あってもよく、それぞれが異なるリンク・データを作成してもよい。あるいは、データ間リンク管理機能を実装するコンピュータ装置418を特に設けず、他のコンピュータ装置がデータ間リンク管理機能を実行し、作成されたリンク・データが直接、参照機能を実装するコンピュータ装置424a、424b、・・・、424zに送られるようにしてもよい。
【0043】
参照機能を実装するコンピュータ装置4242a、424b、・・・、424zは、ハードウェア構成と機能構成は同一なので、代表的にコンピュータ装置424aで説明する。
【0044】
参照機能を実装するコンピュータ装置424aは、参照ツール426aをもち、参照処理を行うオペレータは、参照ツール426aを用いて、ドメインを実装するコンピュータ装置404a、404b、・・・、404zから暗号化データ416aなどを受け取り、データ間リンク管理機能を実装するコンピュータ装置418から暗号化されたリンク・データ422を受け取り、ビューを生成する。参照ツール426aの処理の詳細は、後で図15のフローチャートを参照して説明する。
【0045】
次に、図5及び図6のフローチャートを参照して、ドメインのグループ化ツール410aの処理を説明する。
【0046】
図5のフローチャートは、グループ化手続きを示す。この処理の入力は、ドメイン・データ404aであるドメイン・データ木 T = (V,E)と、開示先データ406aである開示先 grant : V → 2Uであり、Uは参照者の集合である。なお、2Uとは参照者の集合の部分集合を要素とする集合である。このときデータは、階層に従って開示先が指定される。ここで階層の例は、ファイル・システムのフォルダによる階層、文書内の章・節・段落・文・語の階層、モデル(設計図・部品表等)要素の含有関係による階層などがある。
【0047】
グループ化ツール410aは、ステップ502で、pにドメイン・データ木Tの根をセットする。
【0048】
グループ化ツール410aは、ステップ504で、Gp := {p}によって新規グループを作成する。
【0049】
グループ化ツール410aは、ステップ506で、G = {Gp}により、ステップ504で作成した新規グループをセットする。
【0050】
グループ化ツール410aは、ステップ508で、group(p)というサブルーチンを呼び出す。この処理の結果、開示先グループ全体 G = {G1,G2,...,Gn}が出力される。
【0051】
図6のフローチャートは、図5のフローチャートの処理で呼ばれるサブルーチンgroup(p)の処理を示す。図6のステップ602では、このサブルーチンは、Cにpの子をセットする。
【0052】
ステップ604では、サブルーチンは、C = {}、すなわち、Cが空かどうか判断し、もしそうなら、処理を終わり、戻る。
【0053】
Cが空でないと判断すると、サブルーチンはステップ606で、全てのci∈Cを訪問したかどうかを判断する。もしそうなら、処理を終わり、戻る。
【0054】
訪問していないci∈Cがあると、サブルーチンはステップ608で、grant(ci) = grant(p)であるかまたは、grant(ci) = grant(cj)であり、cj∈Cが訪問済みの子であるようなjが存在するかどうか判断する。ここで、grant(ci)は、ciの開示が許可されている参照者の集合である。そして、もしステップ608の判断が肯定的なら、ステップ610で、Gr := Gr ∪ {ci}により既存グループにciを追加する処理が行われる。ここでGrは、pまたはcjが属する集合である。
【0055】
もしステップ608の判断が否定的であるなら、ステップ612で、Gi := {ci}で新規グループを作成し、ステップ614で、G := G ∪ {Gi}で、{Gi}がグループに追加される。
【0056】
ステップ610とステップ612のどちらからもステッフ616に進み、そこでサブルーチンは、自らの処理group(ci)を再帰呼び出ししてステップ606に戻る。
【0057】
図7は、このような処理によって形成される、グループ化されたドメイン・データと、そのグループ毎の開示先を示す。点線で囲まれたのがグループである。
【0058】
図8は、グループ・データ暗号化ツール414aによるグループ暗号化処理のフローチャートを示す図である。この処理は、この処理の入力は、ドメイン・データ404aであるドメイン・データ木 T = (V,E)と、開示先データ406aである開示先 grant : V → 2Uであり、Uは参照者の集合である。2Uは、Uは参照者の集合の部分集合を元とする集合である。
【0059】
グループ・データ暗号化ツール414aは、ステップ802で、グループ化手続き実行により、グループ木TG = (G,EG)を生成する。グループ化手続き実行とは、既に説明した図5及び図6のフローチャートで示す手続きであり、グループ木TGとは、図4のグループ化されたデータ412aのことである。
【0060】
グループ・データ暗号化ツール414aは、ステップ804で、すべてのグループGiが置き換えられたかどうか判断し、もしそうなら処理を終わる。
【0061】
すべてのグループGiが置き換えられてないなら、処理はステップ806に進み、そこでグループ・データ暗号化ツール414aは、グループGiのための共通鍵Ktiを生成する。共通鍵Ktiは独自の処理ルーチンにより生成してもよいが、好適には認証局402から入手する。
【0062】
グループ・データ暗号化ツール414aは、ステップ808で、グループGiを共通鍵Ktiで暗号化し、ノードを生成してユニーク名Ciを与え、そのノードでグループGiを共通鍵Ktiで暗号化したデータを置き換える。
【0063】
グループ・データ暗号化ツール414aは、ステップ810で、公開データMに、Ci:F(Kti,Gi)を加える。ここで、F(Kti,Gi)は、グループGiを共通鍵Ktiで暗号化したデータである。なお、F(Kti,Gi)は、グループGiに含まれるノードのデータのすべてに加えて、エッジ集合Ei = {(v1,v2)|v1∈Gi,v2∈Gi}を加えたグラフ全体が暗号化される。
【0064】
グループ・データ暗号化ツール414aは、ステップ812で、Gの要素を1個選択してそれをvと置き、vの開示先であるgrant(v)の集合をXと置く。
【0065】
グループ・データ暗号化ツール414aは、ステップ814で、すべてのxj∈Xを訪問したかどうか判断し、そうでなければステップ816で公開データMに、共通鍵Ktiを開示先の公開鍵Kuxjで暗号化した値であるE(Kuxj,Kti)を加える。こうしてすべてのxj∈Xを訪問すると、処理はステップ804に戻る。
【0066】
図9は、図7に示すグループ化されたドメイン・データに対して、(a)→(b)→(c)→(d)→(e)→(f)と順次図8のフローチャートの処理を適用した様子を示す図である。この処理の結果、公開データ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)〉
【0067】
次に図10のフローチャートを参照して、リンク設定ツール420の処理を説明する。この処理の入力は、暗号化された公開ドメイン・データM1,...,Mnである。
【0068】
リンク設定ツール420は、ステップ1002で、サブルーチンdecryptDDを呼び出して、Mi(i = 1,...,n)を復号する。ステップ1004ではすべてのMiを処理したかどうか判断され、そうでないならステップ1002に戻る。
【0069】
こうして、すべてのMiが復号されると処理はステップ1006に進み、そこでリンク設定ツール420は、コンピュータ418のオペレータであるリンク設定者に、リンクL = {(l1,s1,d1),...,(lk,sk,dk)}を入力させる。ここで、liは名前、siはリンク元ノード,diはリンク先ノードである。
【0070】
リンク設定ツール420は次にステップ1008で、復号によって得た各ドメインデータ木Tiに対して、グループに対応するテーブルを頂点とする木Liを生成する(i∈{1,...,n})。
【0071】
リンク設定ツール420は次にステップ1010で、siが属するグループに対するテーブルにエントリ[li,si,'out']を加える。
【0072】
リンク設定ツール420は次にステップ1012で、diが属するグループに対するテーブルにエントリ[li,di,'in']を加える。
【0073】
リンク設定ツール420はステップ1014で、すべての(li,si,di)∈Lを処理したかどうかを判断し、そうでないならステップ1010に戻る。
【0074】
そしてすべての(li,si,di)∈Lを処理すると、リンク設定ツール420は、ステップ1016でサブルーチンpropagateを呼び出して、propagate(Li)を実行し、続いてステップ1018でサブルーチンencryptを呼び出して、encrypt(Li)を実行する。
【0075】
リンク設定ツール420は、ステップ1020で、すべてのLiを処理したかどうか判断し、そうでなければステップ1016に戻る。こうして、ステップ1020で、すべてのLiを処理したと判断すると、処理を終わる。
【0076】
図11は、公開データMを入力とするサブルーチンdecryptDD(M)の処理のフローチャートを示す図である。サブルーチンdecryptDDは、ステップ1102でMを秘密鍵Krで復号し、グループの共通鍵Ktiを得る。
【0077】
サブルーチンdecryptDDは、ステップ1104で、MをKtiで復号し、グループGiを得る。
【0078】
サブルーチンdecryptDDはステップ1106で、すべてのKtiを適用したかどうか判断し、そうでなければステップ1104に戻る。そして、すべてのKtiを適用したと判断すると、すべてのノードCiをGiで置き換えて、処理を終わって、呼び出し側に戻る。
【0079】
図12は、リンク・テーブルの木Lを入力とするサブルーチンpropagate(L)の処理のフローチャートを示す図である。ステップ1202で、サブルーチンpropagateは、Lの訪問していないノードからなる部分木の葉ノードTiを選択する。
【0080】
ステップ1204では、サブルーチンpropagateは、Tiが親ノードをもつかどうか判断し、もしそうなら、ステップ1206で、Tiのテーブルのすべてのエントリ[lj,nj,ioi]に対して、njを親ノードのグループに属する要素に書き換えて、Tiの親ノードのテーブルに複写する。そうでないなら、ステップ1206はスキップされる。
【0081】
ステップ1208では、サブルーチンpropagateは、すべてのTiを訪問したかどうか判断し、もしそうなら処理は終わって、呼び出し側に戻る。そうでなければ、ステップ1202に戻る。
【0082】
図13は、リンク・テーブルの木Lを入力とするサブルーチンencrypt(L)の処理のフローチャートを示す図である。ステップ1302では、サブルーチンencryptは、LのノードTiを一つ選択する。
【0083】
ステップ1304では、サブルーチンencryptは、Tiに対応するグループGiを復号するときに使った共通鍵KtiでTiを暗号化し、一時データSにCi:F(Kti,Ti)を加える。
【0084】
ステップ1306では、サブルーチンencryptは、すべてのTiを訪問したかどうかを判断し、そうでないならステップ1302に戻る。
【0085】
こうしてすべてのTiを訪問すると、サブルーチンencryptは、ステップ1308でLのための共通鍵Ktを生成する。これは好適には、認証局402から受け取る。
【0086】
次にサブルーチンencryptは、ステップ1310で公開データNにF(Kt,S)を加える。そして次のステップ1312では、サブルーチンencryptは、Lの開示先xj∈Xをひとつ選択し、ステップ1314で公開データNにE(Kuxj,Kt)を加える。
【0087】
次にサブルーチンencryptは、ステップ1316で、すべてのxj∈Xを訪問したかどうか判断し、もしそうなら処理は終わって、呼び出し側に戻る。そうでなければ、ステップ1312に戻る。
【0088】
図14は、リンク設定ツール420の処理の例を示す図である。図14(a)では、リンク設定ツール420は、Mを秘密鍵KrCで復号して、共通鍵Kt1、Kt2、Kt3、Kt4を得る。そして、名前Ciを、復号したデータGiで置き換える。このとき、リンク設定ツール420は、Kt0を得られず、iを得られないことに留意されたい。
【0089】
図14(b)では、リンク設定ツール420は、データにリンクを付加する。
【0090】
図14(c)では、リンク設定ツール420は、リンクに基づいて、グループGi毎に[リンク名,端点名,入出別]からなるテーブルTiを生成する。
【0091】
図14(d)では、リンク設定ツール420は、テーブルTiの各レコードを親に向かって伝播する。このとき端点名を、Giが属する要素に置き換える。
【0092】
次に、リンク設定ツール420は、初期ステップで得た共通鍵Ktiを使って、Ti(この例では、i = 1,..,4)を暗号化して、下記を得る。
C1:F(Kt1,T1)
C2:F(Kt2,T2)
C3:F(Kt3,T3)
C4:F(Kt4,T4)
【0093】
次に、上記全体を共通鍵Ktで暗号化する。さらにリンクの開示先X∈{A,B}の公開鍵KuXで共通鍵Ktを暗号化した E(KuX,Kt)を付加して、下記のとおり、公開データとする。
【0094】
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)〉)〉
【0095】
次に図15のフローチャートを参照して、参照ツール426aの処理について説明する。この処理の入力は、公開ドメイン・データM1,...,Mnと、公開ドメイン・データN1,...,Nnである。ステップ1502で、参照ツール426aは、サブルーチンdecryptDD(Mi)を呼び出して、その結果をTiとする。サブルーチンdecryptDDについては、図11を参照して既に説明済みである。
【0096】
参照ツール426aは、ステップ1504で、サブルーチンdecryptLT(Ni,Ti)を呼び出して、その結果をLiとする。サブルーチンdecryptLTについては、図16のフローチャートを参照して後で説明する。
【0097】
次に参照ツール426aは、ステップ1506で、サブルーチンresolve(Li)を実行する。サブルーチンresolveについては、図17のフローチャートを参照して後で説明する。
【0098】
次に参照ツール426aは、ステップ1508で、すべてのMi,Ni (i∈{1,...,n})を処理したかどうかを判断し、ステップ1502に戻る。
【0099】
参照ツール426aは、ステップ1508で、すべてのMi,Ni (i∈{1,...,n})を処理したと判断すると、ステップ1510で、あるリンク・テーブルの木に含まれるあるテーブルのひとつのエントリ[l,s,'out']を選択する。
【0100】
次にステップ1512で、参照ツール426aは、すべてのリンク・テーブルの木に含まれるすべてのテーブルから[l,d,'in']を検索する。
【0101】
次にステップ1514で、参照ツール426aは、L := L ∪ {(l,s,d)}によりLに要素を追加する。次のステップ1516で参照ツール426aは、すべてのエントリ[l,s,'out']を訪問したかどうかを判断し、もしそうなら処理を終わり、そうでないなら処理はステップ1510に戻る。この処理の結果出力されるのは、ドメイン・データ木T1,...,Tnと、リンクL = {(l1,s1,d1),...,(ln,sn,dn)}である。
【0102】
次に図16のフローチャートを参照して、サブルーチンdecryptLT(N,T)の処理を説明する。ここでNは公開データであり、Tはドメイン・データ木である。ステップ1602では、サブルーチンdecryptLTは、Nを秘密鍵Krで復号し、Nの共通鍵Ktを得る。
【0103】
ステップ1604では、サブルーチンdecryptLTは、さらにNを共通鍵Ktiで復号し、テーブルTiを得る。
【0104】
ステップ1606では、サブルーチンdecryptLTは、TのすべてのノードCiをTiで置き換えたリンク・テーブルの木Lを生成して処理を終わり、戻る。
【0105】
次に図17のフローチャートを参照して、サブルーチンresolve(L)の処理を説明する。ここでLは、リンク・テーブルの木である。サブルーチンresolveは、ステップ1702で、Lの訪問していないノードからなる部分木の葉ノードTiを選択する。
【0106】
ステップ1704で、サブルーチンresolveは、Tiが親ノードを持つかどうか判断し、もしそうならステップ1706で、Tiのテーブルのすべてのエントリ[lj,hj,ioj]に対して、親を含む先祖ノードのテーブルにエントリ[lj,any,ioj]がもしあれば消去する。ステップ1704でTiが親ノードを持たないと判断したなら、ステップ1706は単にスキップする。
【0107】
次にステップ1708では、サブルーチンresolveは、すべてのTiを訪問したかどうか判断し、もしそうなら処理を終えて戻り、そうでなければサブルーチンresolveは、ステップ1702に戻る。
【0108】
図18は、参照ツール426aの動作の例を示す図である。図18(a)に進む前に、参照ツール426aは、受け取ったMとNを秘密鍵KrAで復号して共通鍵Kt2,Kt3,Kt4,Ktを得る。このとき、この参照ツール426aのオペレータはKt1を復号できず、e、fは得られない。得られた共通鍵でMとNを復号することにより、図18(a)に示す木とテーブルが得られる。
【0109】
そこでTiの各レコードを子に向かって伝播し、リンク名が同じものは子のレコードで置き換える。これによって図18(b)に示す木とテーブルが得られる。
【0110】
そして参照ツール426aは、図18(c)に示すように、2つの木から参照用のビューを生成する。ドメインデータ所有者とリンク設定者は、一般にそれぞれ複数存在する。Mと対応するNの組み合わせ数だけ、これを繰り返す。
【0111】
上記実施例では、ドメインデータ所有者のコンピュータ装置、リンク設定者のコンピュータ装置、及びデータ参照者のコンピュータ装置が別個である例を示したが、ドメインデータ所有者のコンピュータ装置、リンク設定者のコンピュータ装置、及びデータ参照者のコンピュータ装置のうちの2者、あるいは3者が重なっていてもアルゴリズムは動作する。特に、ドメインデータ所有者とリンク設定者を同一とすることで、階層だけで表現できないグラフ構造をドメインデータとして扱うことができるようになる。
【0112】
以上のように、特定の実施例に従い、本発明を説明してきたが、本発明は、特定のオペレーティング・システムやプラットフォームに限定されず、任意のコンピュータ・システム上で実現可能である。
【0113】
また、本発明は、特定のドメインやツールに限定されることなく、一般的に適用可能である。
【符号の説明】
【0114】
404a、404b、・・・、404z ドメインのコンピュータ装置
406a、406b、・・・、406z 開示先データ
408a、408b、・・・、408z ドメイン・データ
410a、410b、・・・、410z グループ化ツール
412a、412b、・・・、412z グループ化されたデータ
414a、414b、・・・、414z グループ・データ暗号化ツール
416a、416b、・・・、416z 暗号化データ
418 リンク設定用コンピュータ装置
420 リンク設定ツール
422 暗号化されたリンク・データ
424a、424b、・・・、424z 参照用コンピュータ装置
426a、426b、・・・、426z 参照ツール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18