(57)【要約】      （修正有）【課題】文書に挿入されるリンクによる他文書へのアクセス制御を、各コンテンツのオーナーの間の通信なく達成できる方法を提供する。【解決手段】リンクの始点であるユーザＡと、リンクの終点であるユーザＢと、ビューワのユーザＣからなる。各ユーザは秘密鍵と公開鍵をもち、公開鍵はユーザ間で共有されている。ユーザＢは、ビューワとなるユーザＣを選ぶ。ユーザＢは、ユーザＣの公開鍵と自分の秘密鍵を基に生成したプロキシー型署名付き暗号の鍵をユーザＡの公開鍵で暗号化してユーザＡに配布する。ユーザＡは秘密鍵で復号し、プロキシー型署名付き暗号に基づく関数が利用可能になる。ユーザＡはこの関数を用いリンクの情報を変換し、秘密鍵で署名してユーザＣに送る。ユーザＣは、ユーザＡの公開鍵とユーザＢの公開鍵を用いて署名を認証し、ユーザＡが生成したリンクの情報を取り出し、秘密鍵で復号することによりリンク情報を得る。【選択図】図１０
2013115522.tif 000002
【特許請求の範囲】
【請求項１】
文書のリンクで参照される第１の文書のオーナーである第１のユーザと、前記第１の文書をリンクとして埋め込む第２の文書のオーナーである第２のユーザと、前記第２の文書に埋め込まれた、もしくは埋め込まれる前記第１の文書を閲覧可能とされる第３のユーザの各々が、コンピュータに秘密鍵と公開鍵をもち、それぞれのユーザの公開鍵がそれぞれのユーザに共有されているシステムにおいて、
前記第１のユーザのコンピュータにおいて、前記第１のユーザの秘密鍵と前記第３のユーザの公開鍵を用いてプロキシ型署名付き暗号の鍵を生成するステップと、
前記第１の鍵を、前記第２のユーザの公開鍵で暗号化して第１の値を得るステップと、
値Xに前記第１のユーザの秘密鍵で署名をつけ、それをさらに前記第３のユーザの公開鍵で暗号化する関数F(X)を、前記プロキシ型署名付き暗号の鍵を用いて生成するステップと、
前記第２の文書に前記第１の文書へのリンクをつける情報に前記F()をほどこした値に、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書とともに、前記第３のユーザのコンピュータに送信するステップと、
前記第３のユーザのコンピュータにおいて、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書を受け取るとともに、前記第１のユーザの秘密鍵で署名した情報を前記第２のユーザの公開鍵で署名を認証しつつ、前記F()をほどこした値を得て、その値を前記第３のユーザの秘密鍵で復号し、その復号した値を前記第１のユーザの公開鍵で認証して前記第２の文書に前記第１の文書へのリンクをつける情報を取得するステップを有する、
リンク・アクセス制御方法。
【請求項２】
前記第３のユーザのコンピュータから、前記第１のユーザの秘密鍵で署名した情報を受け取ることに応答して、前記第１のユーザのコンピュータが、前記第１のユーザの秘密鍵で署名した情報を前記第１のユーザの公開鍵で確認し、その確認に応じて、前記第１の文書を前記第３のユーザのコンピュータに送るステップをさらに有する、請求項１に記載のリンク・アクセス制御方法。
【請求項３】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータが、サーバ・システムに接続され、前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、該サーバ・システムを介して通信する、請求項１に記載のリンク・アクセス制御方法。
【請求項４】
前記それぞれのユーザの公開鍵は、該サーバ・システムに保存される、請求項３に記載のリンク・アクセス制御方法。
【請求項５】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、ピア・ツー・ピアで接続される、請求項１に記載のリンク・アクセス制御方法。
【請求項６】
文書のリンクで参照される第１の文書のオーナーである第１のユーザと、前記第１の文書をリンクとして埋め込む第２の文書のオーナーである第２のユーザと、前記第２の文書に埋め込まれた、もしくは埋め込まれる前記第１の文書を閲覧可能とされる第３のユーザの各々が、コンピュータに秘密鍵と公開鍵をもち、それぞれのユーザの公開鍵がそれぞれのユーザに共有されているシステムにおいて、
前記システムに、
前記第１のユーザのコンピュータにおいて、前記第１のユーザの秘密鍵と前記第３のユーザの公開鍵を用いてプロキシ型署名付き暗号の鍵を生成するステップと、
前記第１の鍵を、前記第２のユーザの公開鍵で暗号化して第１の値を得るステップと、
値Xに前記第１のユーザの秘密鍵で署名をつけ、それをさらに前記第３のユーザの公開鍵で暗号化する関数F(X)を、前記プロキシ型署名付き暗号の鍵を用いて生成するステップと、
前記第２の文書に前記第１の文書へのリンクをつける情報に前記F()をほどこした値に、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書とともに、前記第３のユーザのコンピュータに送信するステップと、
前記第３のユーザのコンピュータにおいて、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書を受け取るとともに、前記第１のユーザの秘密鍵で署名した情報を前記第２のユーザの公開鍵で署名を認証しつつ、前記F()をほどこした値を得て、その値を前記第３のユーザの秘密鍵で復号し、その復号した値を前記第１のユーザの公開鍵で認証して前記第２の文書に前記第１の文書へのリンクをつける情報を取得するステップを実行させる、
リンク・アクセス制御プログラム。
【請求項７】
前記第３のユーザのコンピュータから、前記第１のユーザの秘密鍵で署名した情報を受け取ることに応答して、前記第１のユーザのコンピュータが、前記第１のユーザの秘密鍵で署名した情報を前記第１のユーザの公開鍵で確認し、その確認に応じて、前記第１の文書を前記第３のユーザのコンピュータに送るステップをさらに有する、請求項６に記載のリンク・アクセス制御プログラム。
【請求項８】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータが、サーバ・システムに接続され、前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、該サーバ・システムを介して通信する、請求項６に記載のリンク・アクセス制御プログラム。
【請求項９】
前記それぞれのユーザの公開鍵は、該サーバ・システムに保存される、請求項８に記載のリンク・アクセス制御プログラム。
【請求項１０】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、ピア・ツー・ピアで接続される、請求項６に記載のリンク・アクセス制御プログラム。
【請求項１１】
文書のリンクで参照される第１の文書のオーナーである第１のユーザと、前記第１の文書をリンクとして埋め込む第２の文書のオーナーである第２のユーザと、前記第２の文書に埋め込まれた、もしくは埋め込まれる前記第１の文書を閲覧可能とされる第３のユーザの各々が、コンピュータに秘密鍵と公開鍵をもち、それぞれのユーザの公開鍵がそれぞれのユーザに共有されているシステムにおいて、
前記第１のユーザのコンピュータにおいて、前記第１のユーザの秘密鍵と前記第３のユーザの公開鍵を用いてプロキシ型署名付き暗号の鍵を生成する手段と、
前記第１の鍵を、前記第２のユーザの公開鍵で暗号化して第１の値を得る手段と、
値Xに前記第１のユーザの秘密鍵で署名をつけ、それをさらに前記第３のユーザの公開鍵で暗号化する関数F(X)を、前記プロキシ型署名付き暗号の鍵を用いて生成する手段と、
前記第２の文書に前記第１の文書へのリンクをつける情報に前記F()をほどこした値に、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書とともに、前記第３のユーザのコンピュータに送信する手段と、
前記第３のユーザのコンピュータにおいて、前記第２のユーザの秘密鍵で署名した情報を前記第２の文書を受け取るとともに、前記第１のユーザの秘密鍵で署名した情報を前記第２のユーザの公開鍵で署名を認証しつつ、前記F()をほどこした値を得て、その値を前記第３のユーザの秘密鍵で復号し、その復号した値を前記第１のユーザの公開鍵で認証して前記第２の文書に前記第１の文書へのリンクをつける情報を取得する手段を有する、
リンク・アクセス制御システム。
【請求項１２】
前記第３のユーザのコンピュータから、前記第１のユーザの秘密鍵で署名した情報を受け取ることに応答して、前記第１のユーザのコンピュータが、前記第１のユーザの秘密鍵で署名した情報を前記第１のユーザの公開鍵で確認し、その確認に応じて、前記第１の文書を前記第３のユーザのコンピュータに送る手段をさらに有する、請求項１１に記載のリンク・アクセス制御システム。
【請求項１３】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータが、サーバ・システムに接続され、前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、該サーバ・システムを介して通信する、請求項１１に記載のリンク・アクセス制御システム。
【請求項１４】
前記それぞれのユーザの公開鍵は、該サーバ・システムに保存される、請求項１３に記載のリンク・アクセス制御システム。
【請求項１５】
前記第１のユーザのコンピュータと、前記第２のユーザのコンピュータと、前記第３のユーザのコンピュータは、ピア・ツー・ピアで接続される、請求項１１に記載のリンク・アクセス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ上で作成された文書のアクセス制御に関し、より詳しくは、文書に挿入されるリンクによる他文書へのアクセス制御に関する。
【背景技術】
【０００２】
ＣＡＤや部品表（ＢＯＭ）等を含む、プロダクト・ライフサイフル・マネジメント（ＰＬＭ）、アプリケーション・ライフサイフル・マネジメント（ＡＬＭ）の分野で、関連するデータ（コンテンツ）同士でリンクを張ったり、参照したりすることが頻繁に行われる。
【０００３】
その際、共同開発先や競合会社など、様々なベンダが入り組むので、リンクによる他文書へのアクセスを制御する必要か生じる場合がある。これに関して、以下のような従来技術が知られている。
【０００４】
特開平４−３２６１３６号公報は、対話式データ処理システムで使用されるハイパーテキスト・ネットワークに、ユーザが選択可能な情報モジュールを表示することに関するものであり、ハイパーテキスト・ネットワークは複数のユーザ選択可能情報モジュールを含んでいる。モジュールのうち少なくともいくつかは、他のユーザ選択可能目標モジュールに対するリンク参照句を含んでいる。ユーザの選択入力に応じて、他のユーザ選択可能目標モジュールに対するリンク参照句が、選択された情報モジュール内で識別される。識別されたリンク参照句に対応した他のユーザ選択可能目標モジュールの利用可能性が決定され、識別されたリンク参照句が他のユーザ選択可能目標モジュールの決定された利用可能性に応じて、選択的に活動化または非活動化される。識別されたリンク参照句をユーザのクラスまたはユーザの権限に基づいて、選択的に活動化または非活動化することができる。そして、対応する目標モジュールを、識別されたユーザ・クラスに応じて選択することができる。
【０００５】
特開２００８−２８７４４７号公報は、インターネットに接続可能であり当該インターネットを介して電子メールを送受信する端末装置において、受信した前記電子メールを表示する際に、受信した前記電子メールに含まれるリンク文字列からのリンクを有効にするか又は無効にするかを判別する判別手段と、前記リンク文字列からのリンクを有効にすると判別された場合に、受信した前記電子メールに含まれるリンク文字列を抽出する抽出手段と、前記抽出手段により抽出されたリンク文字列をリンク対象として識別表示する識別表示手段と、前記識別表示手段により識別表示されたリンク文字列からリンク先への前記インターネットを介したアクセスを有効とし、前記識別表示手段により識別表示されない文字列からの前記インターネットを介したアクセスを無効とする制御手段を設けることを開示する。
【０００６】
一方、ＰＬＭ／ＡＬＭなどの分野では、以下のような機能が要望される。
まず、他人のコンテンツから自分のコンテンツに勝手にリンクを張られたとき、それが第三者に勝手に張られたことが分かるようにしたい。
またそのとき、第三者がリンクを辿って、オーナーにコンテンツを要求したとき、オーナーが第三者のアクセス権限を確認して、アクセス権限ありと判別したときに第三者にコンテンツの参照を許すようにしたい。
これは例えば、ある部品のブランドを守りたい場合、部品の出所を特定したい場合、評判がよくない企業の特定の部品から参照されたくない場合などがある。
【０００７】
それ以外に、他人のコンテンツにある自分のコンテンツへのリンクを見せる相手を自分が制御したいという場合がある。その際、自分のコンテンツへのリンクを含むコンテンツのオーナーがさらにアクセス制御も加えることも可能としたい。すなわち、自分とコンテンツのオーナーの両方が許可した場合のみ、リンクを見せる相手がリンクされたコンテンツを眺めることができる。
これは例えば、ある企業に対して、リンクの形で複数の部品の存在は示したいが、その部品がどの下請け企業で作られているかを示すリンク先の参照は秘密にしておくということである。
【０００８】
上記従来技術は、このような要望を満たす機能を提供することができるものではない。そこで本願発明者らは、特開２０１１−９７４５３号公報、あるいはSatoshi Hada, "Secure Obfuscation for Encrypted Signature", Advances in Cryptology EUROCRYPT 2010に記述されているような、いわゆるプロキシ型署名付き暗号方式に着目し、文書に挿入されるリンクによる他文書へのアクセス制御にプロキシ型署名付き暗号方式を適用する技術を研究した。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平４−３２６１３６号公報
【特許文献２】特開２００８−２８７４４７号公報
【特許文献３】特開２０１１−９７４５３号公報
【非特許文献】
【００１０】
【非特許文献１】Satoshi Hada, "Secure Obfuscation for Encrypted Signature", Advances in Cryptology EUROCRYPT 2010
【発明の概要】
【発明が解決しようとする課題】
【００１１】
この発明の目的は、文書に挿入されるリンクによる他文書へのアクセス制御を、リンクされるコンテンツのオーナーとリンクを挿入されるコンテンツのオーナーの間の通信なく、達成することを可能ならしめる技法を提供することにある。
【課題を解決するための手段】
【００１２】
この発明は、上記課題を解決するためになされたものであり、この発明においては先ず、秘密鍵と公開鍵を個々のコンピュータに保持するユーザが想定される。秘密鍵はそのユーザだけが保持しているが、公開鍵は他のユーザにも公開される。すなわち、各々のユーザの公開鍵は、各コンピュータに保存されている。
【００１３】
以下、上記ユーザのうち、A,Bは各々リンクの始点および終点となるコンテンツオーナの集合、Cはビューアの集合、SKa, PKaは各々ユーザaの秘密鍵と公開鍵、Sign(X,Y)はYを鍵Xで署名したもの、E(X,Y)はYを鍵Xで暗号化したものとする。
【００１４】
bj(∈B)は予め、自分の作成するコンテンツに向けてリンクをつけることを許す人の集合A'(⊆A),そのリンクを見ることを許す人の集合C'(⊆C)を選ぶ。そして、全ての{ai(∈A'),ck(∈C')}の組み合わせに対して、Kaibjck=E(PKai,Kbjck)を作成し、事前にA'に含まれる人全員に配布する。なお、Kbjckはプロキシー型署名付き暗号F(X)の鍵とする。なお、F(X)は例えば、特開２０１１−９７４５３号公報に記載されているような関数である。
【００１５】
ai(∈A)はbjから受け取ったKaibjckをSKaiで復号しKbjckを取得し、F(X)=E(PKck,Sign(SKbj,X))の計算が可能となる（プロキシ型署名付き暗号においては、鍵Kbckより、上記のF(X)の計算が可能）。aiは、コンテンツx.docを作成し、x.doc内のリンクの始点xから、bjの作成したコンテンツy.doc内のリンクの終点yへのリンクx→yを見ることを許すビューアC''(⊆C')を選ぶ。そして、全てのcn(∈C'')に対し、σ=F(x→y)=E(PKcn,Sign(SKbj,x→y)),σ'=Sign(SKai,σ)を計算し、σ'をx.docに添付する。
【００１６】
cnはx.docを受け取り、σ'をPKaiを用いてaiの署名を認証しつつ、σを得る。そして、σをSKcnで復号しσ''=Sign(SKbj, x→y)を得、PKbjでbjの署名を認証しつつx→yを取得する。
【００１７】
cnはy.docのリクエストをσ''と共にbjに送る。bjは、σ''をPKbjを用いてx→yとその署名を確認後、yをcnに送信する。yを受け取ったcnは、ｘ.doc中のリンク先のオブジェクトとしてyを埋め込む。
【発明の効果】
【００１８】
この発明によれば、リンクされる文書のオーナーと、その文書をリンクとして挿入する文書のオーナーの間で直接の通信なく、リンクのアクセスの制御を行うことが可能となり、また、リンクとして挿入する文書のオーナーも、独自の判断で、追加でリンクのアクセスの制御を与えることができる。
【図面の簡単な説明】
【００１９】
【図１】異なるドメイン間の連携の例を示す図である。
【図２】ドメイン間連携を実装するハードウェア構成を模式的に示す図である。
【図３】ユーザの役割によるグループ分けを示す図である。
【図４】クライアント・コンピュータのハードウェアのブロック図を示す図である。
【図５】クライアント・コンピュータにおける機能論理ブロック図を示す図である。
【図６】暗号／復号モジュールのサブモジュールを示す図である。
【図７】リンクで参照される文書を作成するユーザのクライアント・コンピュータにおける処理のフローチャートを示す図である。
【図８】リンクを挿入する文書を作成するユーザのクライアント・コンピュータにおける処理のフローチャートを示す図である。
【図９】リンクで参照される文書を参照するユーザのクライアント・コンピュータにおける処理のフローチャートを示す図である。
【図１０】処理の具体例を模式的に示す図である。
【発明を実施するための形態】
【００２０】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２１】
先ず改めて、本発明の背景から説明する。自動車、電機、航空宇宙防衛などの分野では、製品が複雑で、多数の部品からなるので、１つの製品を設計するために、機械、電気、システム設計、ソフトウェア、試験などの多くのドメイン（部門）が関与する。このように多くの部門に分かれていても、結局は統合された製品に集約する必要があるので、ドメインにまたがるデータの交換を行う必要がある。
【００２２】
図１は、自動車メーカーにおける異なるドメイン間の連携の例を示す図である。図１からは、システム・モデル、要求管理、制御解析、ＣＡＤ、電気／電子回路、部品構成管理、及び組み込みソフトウェアという異なるドメインの間で、データの交換が行われることが見て取れる。
【００２３】
図２は、図１のドメイン間連携を実装するハードウェア構成を模式的に示す図である。図２において、サーバ２０２は、ドメインで共通に使用されるデータを格納したり、ドメイン間でデータを交換したりする機能を提供する。
【００２４】
インターネット２０４を介してサーバ２０２に接続されたクライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚは、好適には図１の各ドメインに対応するデータを格納する。各クライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚは個別に、固有の秘密鍵と、その秘密鍵に対応する公開鍵を保持する。各クライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚの公開鍵は公開しても構わないので、好適にはどのクライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚからもアクセスさけるように、サーバ２０２に保存される。
【００２５】
なお、図２に示すようなクライアント・サーバの構成でなく、クライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚがピア・ツー・ピアで接続された構成でも本発明の処理を実装することができる。その場合は好適には、クライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚの公開鍵の全てを各クライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚに保存するようにしてもよい。
【００２６】
図３は、本発明の文脈におけるクライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚの役割分担を示す図である。すなわち、次のような文書があったとする。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<a href="y.doc">XXX</a>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
【００２７】
これをx.docと呼ぶことにすると、このようなx.docを作成するユーザ、あるいはx.docのオーナーが使用するクライアント・コンピュータ２０６ａ、２０６ｃ、２０６ｅ・・・が属するグループをグループＡと呼ぶことにする。グループＡのユーザは、必要に応じてx.doc中に<a href="y.doc">XXX</a>のようなリンクを埋め込む。なお、これらのリンク情報は、x.doc中に埋め込まれずに、リンク情報を持つ別ファイルに保持してもよい。その場合、ビューアは、最終的にy.docを取得してから、x.docにリンクを埋め込むことになる。
【００２８】
一方、x.docに埋め込まれたリンクで参照される、あるいは別ファイルにリンク情報をもつy.docを作成するユーザ、あるいはx.docのオーナーが使用するクライアント・コンピュータ２０６ｂ、２０６ｈ、２０６ｋ・・・が属するグループをグループＢと呼ぶことにする。
【００２９】
また、x.docを閲覧して、そこに埋め込まれているリンクの、あるいは別ファイルにリンク情報をもつ文書を必要に応じてグループＢのユーザに要求するユーザ使用するクライアント・コンピュータ２０６ｆ、２０６ｔ、・・・が属するグループをグループＣと呼ぶことにする。
【００３０】
図２に示すクライアント・コンピュータ２０６ａ、２０６ｂ、・・・２０６ｚのハードウェア構成は便宜上同一とし、図４にその構成のブロック図を示す。
【００３１】
図４を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図４において、システム・パス４０２には、ＣＰＵ４０４と、主記憶（ＲＡＭ）４０６と、ハードディスク・ドライブ（ＨＤＤ）４０８と、キーボード４１０と、マウス４１２と、ディスプレイ４１４が接続されている。ＣＰＵ４０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶４０６は、好適には、４ＧＢ以上の容量をもつものである。ハードディスク・ドライブ４０８は、好適には例えば、５００ＧＢ以上の容量をもつものである。
【００３２】
ハードディスク・ドライブ４０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ（商標）７、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ４０４に適合する任意のものでよい。
【００３３】
ハードディスク・ドライブ４０８にはさらに、文書作成・編集プログラム５０２、文書表示プログラム５０４、作成された文書５０６、暗号／復号モジュール５０８、当該ユーザ固有の秘密鍵５１０、各ユーザの公開鍵５１２ａ、５１２ｂ、・・・５１２ｚ、及び通信モジュール５１４が格納されている。これらの機能構成については、図５のブロック図を参照して、後でより詳細に説明する。なお、公開鍵５１２ａ、５１２ｂ、・・・５１２ｚは、ハードディスク・ドライブ４０８にローカルに保存するのでなく、サーバ２０２に置いて、通信インターフェース４１６を介してアクセスしてもよい。
【００３４】
キーボード４１０及びマウス４１２は、所定のＧＵＩ画面（図示しない）を操作して、文書作成・編集プログラム５０２などを起動したり、文字を打ち込んだりするために使用される。
【００３５】
ディスプレイ４１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。ディスプレイ１１４は、生成された結果のワークフローを表示するために使用される。
【００３６】
図４のシステムは更に、バス４０２に接続された通信インターフェース４１６を介して、ＬＡＮ、ＷＡＮなどの外部ネットワークに接続されている。通信インターフェース４１６は、イーサネット（商標）などの仕組みにより、外部ネットワーク上にあるサーバやクライアント・コンピュータなどのシステムとデータのやりとりを行う。
【００３７】
次に、図５の機能ブロック図を参照して、本発明の実施例の機能構成について説明する。文書作成・編集プログラム５０２と文書表示プログラム５０４は、単一のプログラムがその両方の機能を提供するようにしてもよい。文書作成・編集プログラム５０２は例えば、Mirosoft(R) WORD、一般的なテキスト・エディタなど任意の文書作成・編集プログラムを使用することができる。
【００３８】
文書作成・編集プログラム５０２が生成する文書５０６は、リンクを埋め込み可能な、MS-WORD形式、HTML形式、XML形式などの任意の文書形式でよい。また、文書表示プログラム５０４は、埋め込まれたリンクにハイパーリンクしたり、リンク先の内容を表示したりする機能をもつ任意のプログラムでよく、典型的には通常のＷｅｂブラウザでよい。
【００３９】
暗号／復号モジュール５０８は、図６に示すように、暗号化サブモジュール６０２、復号サブモジュール６０４、署名サブモジュール６０６、署名認証サブモジュール６０８、プロキシ型署名付き暗号鍵生成サブモジュール６１０、F(X)生成サブモジュール６１２、及びF(X)計算サブモジュール６１４を含む。
【００４０】
暗号化サブモジュール６０２は例えば、公開鍵をPKaiとすると、E(PKai,X)により、Xを公開鍵PKaiで暗号化する機能をもつ。例えば、E(X,Y) ≡ X^Y、すなわちあるmodでのXのY乗である。
【００４１】
復号サブモジュール６０４は、暗号化サブモジュール６０２で暗号化したデータを、公開鍵PKaiに対応する秘密鍵SKaiで復号する機能をもつ。
【００４２】
署名サブモジュール６０６は、秘密鍵をSKaiとすると、Sign(SKai,X)で、Xに署名をつける。
【００４３】
プロキシ型署名付き暗号鍵生成サブモジュール６１０は例えば、Kbjck = R||S'Kbjの式により、プロキシ型署名付き暗号鍵Kbjckを生成する。但し、R=E(PKck, 1/r), S'Kbj=r * SKbj、 rはbj∈Bのユーザのクライアント・コンピュータで生成された乱数、||は結合、 *は乗算である。
【００４４】
F(X)生成サブモジュール６１２は、F(X) = Sign(S'Kbj, X)||Rという式で、F(X)を与える。
【００４５】
F(X)計算サブモジュール６１４は、X=aとすると、生成されたF(X)を用いてF(a)を計算し、Rを復号して1/rを取得後、PKbj/rを用いて署名の認証を行う。
【００４６】
これらのサブモジュールがどのように使用されるかは、図７〜図９のフローチャートを参照して、より詳細に説明する。
【００４７】
通信モジュール５１４は、通信インターフェース４１６とサーバ２０２を介して、他のクライアント・コンピュータとデータをやり取りする機能をもつ。その場合、文書５０６が直接、通信モジュール５１４に送られることがあるし、文書５０６、秘密鍵５１０、各公開鍵５１２ａ、５１２ｂ、・・・５１２ｚなどを暗号／復号モジュール５０８によって処理したデータが通信モジュール５１４に送られることもある。
【００４８】
一方で通信モジュール５１４は、通信インターフェース４１６とサーバ２０２を介して、他のクライアント・コンピュータから直接、文書５０６を受け取ったり、一旦暗号／復号モジュール５０８で処理した結果を、文書５０６として保存したりする。
【００４９】
次に図７のフローチャートを参照して、グループＢのクライアント・コンピュータにおける処理を説明する。ステップ７０２において、クライアント・コンピュータにおいて、ユーザは、操作により自分の作成するコンテンツに向けてリンクをつけることを許す人の集合A'(⊆A),そのリンクを見ることを許す人の集合C'(⊆C)を選ぶ。すると、クライアント・コンピュータは、プロキシ型署名付き暗号作成サブモジュール６１０を呼び出して、全ての{ai(∈A'),ck(∈C')}の組み合わせに対して、Kaibjck= E(PKai,Kbjck) を作成する。但し、Kbjckはプロキシ型署名付き暗号F(X)の鍵である。
【００５０】
ステップ７０４で、クライアント・コンピュータは、各aiのクライアント・コンピュータに対して、{Kaibjck}を配布する。
【００５１】
ステップ７０６では、クライアント・コンピュータは、改めて作成した、あるいは既存の文書５０６であるy.docを作成し、グループＡのクライアント・コンピュータに送付する。
【００５２】
その後、クライアント・コンピュータは、グループＣのユーザcnのクライアント・コンピュータから、σ''=Sign(SKbj, x→y)を受信する。ここで、x→yは、<a href="y.doc">XXX</a>のような文書x.docに埋め込まれた、あるいは別ファイルにリンク情報をもつ情報である。
【００５３】
クライアント・コンピュータは、ステップ７１０で、署名認証サブモジュール６０８により、自身の公開鍵PKbjでのσ''の認証を試み、認証が成功すると、ステップ７１２で、ユーザにx→yを承認するかどうかを聞くメニューをディスプレイ４１４に提示し、ユーザの承認するとの応答に対して、ステップ７１４で、y.docをユーザcnのクライアント・コンピュータに送信する。
【００５４】
一方、ステップ７１０での認証が失敗した場合、あるいは、ステップ７１２でユーザがx→yを承認しないとの応答があった場合は、y,docをユーザcnのクライアント・コンピュータに送信することなく、処理を終える。
【００５５】
次に、図８のフローチャートを参照して、グループＡのクライアント・コンピュータにおける処理を説明する。
【００５６】
ステップ８０２で、グループＡのクライアント・コンピュータは、ユーザbj ∈  Ｂのクライアント・コンピュータから、複数のkに対する{Kaibjck}を受信する。
【００５７】
ステップ８０４で、グループＡのクライアント・コンピュータは、復号サブモジュール６０４を呼び出して、Kaibjckを、自身の秘密鍵であるSKaiで復号を試み、もし復号できたならステップ８０６で、復号して得られたKbjckを保持する。
【００５８】
ステップ８０８で、グループＡのクライアント・コンピュータは、全てのkに対して復号完了かどうか判断し、そうでないなら次のkの値に対してステップ８０４での処理を試みる。
【００５９】
こうして全てのkについて復号完了すると、ステップ８１０で、グループＡのクライアント・コンピュータは、復号できたcnの集合をC'とする。
【００６０】
ステップ８１２で、グループＡのクライアント・コンピュータは、グループＢのクライアント・コンピュータから、y.docを受信する。
【００６１】
ステップ８１４で、グループＡのクライアント・コンピュータのユーザは、文書作成・編集プログラム５０２を用いて文書x.docを作成する。その際、文書x.docには、<a href="y.doc">XXX</a>のように、文書y.docに対するリンクが配置される。
【００６２】
ステップ８１６で、グループＡのクライアント・コンピュータのユーザは、x.docのリンクの始点xからy.doc内のリンクの終点yへのリンクx→yを見ることを許すユーザであるビューワの集合C''⊆ C'を選ぶ。
【００６３】
ステップ８１８で、グループＡのクライアント・コンピュータのユーザは、全てのcn ∈ C''に対して、F(X)生成サブモジュール６１２でF(X)を生成し、次に、その生成したF(X)でF(X)計算サブモジュール６１４を呼び出すことにより、σ=F(x→y)=E(PKcn,Sign(SKbj,x→y))を計算する。次にグループＡのクライアント・コンピュータは、署名サブモジュール６０６を呼び出すことにより、σ' = Sign(SKai,σ)を計算し、σ'をx.docに添付する。
【００６４】
ステップ８２０で、グループＡのクライアント・コンピュータのユーザは、C''に含まれるクライアントにx.docを配布して、処理を終了する。
【００６５】
次に、図９のフローチャートを参照して、グループＣのクライアント・コンピュータにおける処理を説明する。
【００６６】
ステップ９０２で、グループＣのクライアント・コンピュータは、グループＡのクライアント・コンピュータから、x.docを受信する。このとき、ステップ８１８に関連して説明したように、σ'も添付して送られてくる。
【００６７】
ステップ９０４で、グループＣのクライアント・コンピュータは、署名認証サブモジュール６０８を呼び出して、σ'をPKaiで認証することを試みる。そして、認証が失敗したら、処理を終了する。
【００６８】
ステップ９０４で認証が成功すると、グループＣのクライアント・コンピュータは、ステップ９０６で、自身の秘密鍵SKcnで、復号サブモジュール６０４を呼び出して、σの復号を試みる。そして、復号が失敗したら、処理を終了する。
【００６９】
ステップ９０６で復号が成功すると、グループＣのクライアント・コンピュータは、σ''=Sign(SKbj, x→y)を抽出し、ステップ９０８で、署名認証サブモジュール６０８を呼び出して、σ''をPKbjで認証することを試みる。そして、認証が失敗したら、処理を終了する。
【００７０】
ステップ９０８で認証が成功すると、グループＣのクライアント・コンピュータは、ステップ９１０で、ユーザbjのクライアント・コンピュータにσ''を送付して、y.docをリクエストする。
【００７１】
σ''を受け取ったユーザbjのクライアント・コンピュータは、ステップ７１０での認証が成功したことに応答して、y.docをグループＣのクライアント・コンピュータに送ってくる。すると、ステップ９１２での判断が肯定的になるので、グループＣのクライアント・コンピュータは、ステップ９１４で、y.docへのリンク、もしくは参照先を、x.docのリンク先オブジェクトとして埋め込む。一方、ステップ７１０での認証が失敗すると、y.docが送られてこないので、直ちに処理は終了する。
【００７２】
次に図１０を参照して、本発明におけるプロキシ型署名付き暗号化の処理について説明する。これは、ある人（Ｂとする）の署名を、代理人（Ａとする）に頼んで安全につけてもらうことを実現するものである。その際、その署名を見られる人（Ｃとする）は、Ｂによって特定される。このとき、Ｂの秘密鍵を他人に漏らさないで、代理人（Ａ）にＢの署名をしてもらえる、ということが肝要である。
【００７３】
次に図１０の例を参照して、本発明の具体的動作について説明する。図１０では、グループＢからbj、グループＡからai、グループＣからcnがそれぞれ選ばれているとする。
【００７４】
bjは、ステップ７０２で示すように、{Kaibjck}１００４を作成し、ステップ７０４で示すように、それをaiに送っておく。次にbjは、リンクで参照される文書y.doc１００２を作成し、そのクライアント・コンピュータのハードディスク・ドライブに保存する。
【００７５】
aiは、ステップ８０２で{Kaibjck}１００４を受信し、ステップ８１２でコンテンツy.doc１００２をbjから受信し、ステップ８１４でコンテンツx.doc１００６を作成し、ステップ８１６でσ'１００８を作成してx.docに添付し、ステップ８２０でσ'付きのx.docをcnに送る。
【００７６】
cnは、ステップ９０２でσ'付きのx.docを受信し、ステップ９０４〜９０８で、σ'からσ''１０１０を抽出し、ステップ９１０で、σ''１０１０をbjに送る。
【００７７】
σ''１０１０を受け取ったbjは、ステップ７１０でσ''を認証すると、ステップ７１４でy.doc１００２をcnに送る。
【００７８】
cnは、y.doc１００２へのリンク、もしくは参照先をx.doc１００６のリンクの箇所に挿入する。あるいは、y.doc１００２をx.doc１００６と同じフォルダに保存して、x.doc１００６のリンクの箇所から、y.doc１００２にハイパーリンクできるようにしてもよい。
【００７９】
以上のように本発明を特定の実施例に基づき説明したが、本発明は使用するコンピュータ・システムのハードウェア、ソフトウェアなどの特定の組み合わせに依存せず、任意のプラットフォームや形態で実装可能である。
【００８０】
また、ここで、使用される暗号化方式は、典型的にはＲＳＡ暗号方式であるが、これには限定されず、楕円曲線暗号方式、ＥＣＤＳＡなど任意の公開鍵暗号方式を利用することが可能である。
【符号の説明】
【００８１】
４０４      ＣＰＵ
４０６      主記憶
４０８      ハードディスク・ドライブ
５０２      文書作成・編集プログラム
５０４      文書表示プログラム
５０６      文書
５０８      暗号／復号モジュール
５１０      秘密鍵
５１２ａ、５１２ｂ、・・・５１２ｚ  公開鍵
６０２      暗号化サブモジュール
６０４      復号サブモジュール
６０６      署名サブモジュール
６０８      署名認証サブモジュール
６１０      F(x)生成サブモジュール
６１２      F(x)計算サブモジュール
【図１】
2013115522.tif 000003
【図２】
2013115522.tif 000004
【図３】
2013115522.tif 000005
【図４】
2013115522.tif 000006
【図５】
2013115522.tif 000007
【図６】
2013115522.tif 000008
【図７】
2013115522.tif 000009
【図８】
2013115522.tif 000010
【図９】
2013115522.tif 000011
【図１０】
2013115522.tif 000012