(57)【要約】【課題】小さな値域から選択された情報を共有する場合であっても無関係な情報を他に知られることなく共通する情報を知る。【解決手段】２以上のデータ処理装置１００で構成され、データ処理装置１００はそれぞれ、非公開データを記憶する記憶部１３０と、非公開データを他のデータ処理装置１００の主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得部１１１と、第１暗号データを自己の保有する主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成部１１２と、第２暗号データを他のデータ処理装置１００と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成部１１３と、他のデータ処理装置が生成したハッシュデータを取得するハッシュデータ取得部１１４と、自己のハッシュデータと他のハッシュデータとを比較する判定部１１５とを有する。【選択図】図４
2012034250.tif 000002
【特許請求の範囲】
【請求項１】
２以上のデータ処理装置で構成される情報共有システムであって、
前記データ処理装置はそれぞれ、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶手段と、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得手段と、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成手段と、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成手段と、
他のデータ処理装置の前記ハッシュデータ生成手段により生成されたハッシュデータを取得するハッシュデータ取得手段と、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定手段と、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする情報共有システム。
【請求項２】
前記非公開データは、
複数のデータブロックで構成されるデータであり、
前記暗号データ取得手段は、
前記非公開データを他のデータ処理装置の保有する前記主暗号鍵でデータブロックごとに暗号化した前記第１暗号データを取得し、
前記暗号データ生成手段は、
前記第１暗号データを自己の保有する前記主暗号鍵でデータブロックごとに暗号化することで前記第２暗号データを生成し、
前記ハッシュデータ生成手段は、
前記第２暗号データを他のデータ処理装置と共通の前記ハッシュ関数でデータブロックごとにハッシュ化することで前記ハッシュデータを生成し、
前記判定手段は、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとをデータブロック単位で比較することで、データブロックごとに内容が共通するか否かを判定する、
ことを特徴とする請求項１に記載の情報共有システム。
【請求項３】
前記データ処理装置は、
前記第１暗号データの取得に使用する複数の副暗号鍵を記憶する副暗号鍵記憶手段、をさらに有し、
前記暗号データ取得手段は、
前記非公開データを１データブロックまたは所定数のデータブロックごとに前記副暗号鍵の値を変更してデータブロックごとに暗号化することで第３暗号データを生成し、
前記第３暗号データを他のデータ処理装置の主暗号鍵でデータブロックごとに暗号化した第４暗号データを取得し、
前記副暗号鍵もしくは前記副暗号鍵に対応する復号鍵で前記第４暗号データを復号することによって前記第１暗号データを生成し、
前記第３暗号データおよび前記第４暗号データは、
前記第１暗号データおよび前記第２暗号データと共通の可換性暗号により生成される、
ことを特徴とする請求項２に記載の情報共有システム。
【請求項４】
前記データ処理装置は、
前記判定手段の判定結果に基づいて、自己の保有する非公開データと他のデータ処理装置の保有する非公開データとの内容の共通するデータブロックを特定する共通ブロック特定手段、をさらに有する
ことを特徴とする請求項２または３に記載の情報共有システム。
【請求項５】
前記データ処理装置は、
前記データブロックそれぞれに関連付けされた詳細データを記憶する詳細データ記憶手段と、
前記共通ブロック特定手段が特定したデータブロックに関連付けされた前記詳細データを前記詳細データ記憶手段から取得して他のデータ処理装置に送信する詳細データ送信手段、をさらに有する、
ことを特徴とする請求項４に記載の情報共有システム。
【請求項６】
前記情報共有システムは、
２以上の前記データ処理装置がアクセス可能なデータ記憶装置、をさらに有し、
２以上の前記データ処理装置は、それぞれ、
自己の保有する前記第３暗号データを前記データ記憶装置に保存し、
他のデータ処理装置が保存した前記第３暗号データ、もしくは、他のデータ処理装置が保存した前記第３暗号データであってさらにその他の前記データ処理装置が暗号化したデータを前記データ処理装置から取得して自己の前記主暗号鍵で暗号化し、
その暗号化したデータを前記データ記憶装置に保存する、
ことを特徴とする請求項３乃至５のいずれか１項に記載の情報共有システム。
【請求項７】
３以上の前記データ処理装置で構成される前記情報共有システムであって、
前記第１暗号データは、
２以上の他のデータ処理装置の前記主暗号鍵で順次暗号化されることによって生成される、
ことを特徴とする請求項１乃至６のいずれか１項に記載の情報共有システム。
【請求項８】
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶手段と、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得手段と、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成手段と、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成手段と、
他のデータ処理装置の前記ハッシュデータ生成手段により生成されたハッシュデータを取得するハッシュデータ取得手段と、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定手段と、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とするデータ処理装置。
【請求項９】
他のデータ処理装置と連携してデータを処理するデータ処理装置により使用される情報共有方法であって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶ステップと、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得ステップと、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成ステップと、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成ステップと、
他のデータ処理装置の前記ハッシュデータ生成ステップにて生成されたハッシュデータを取得するハッシュデータ取得ステップと、
前記ハッシュデータ生成ステップで生成した自己のハッシュデータと前記ハッシュデータ取得ステップで取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定ステップと、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする情報共有方法。
【請求項１０】
他のコンピュータと連携してデータを処理するコンピュータにより実行される情報共有プログラムであって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶ステップと、
前記非公開データを他のコンピュータの保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得ステップと、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成ステップと、
前記第２暗号データを他のコンピュータと共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成ステップと、
他のコンピュータの前記ハッシュデータ生成ステップにて生成されたハッシュデータを取得するハッシュデータ取得ステップと、
前記ハッシュデータ生成ステップで生成した自己のハッシュデータと前記ハッシュデータ取得ステップで取得した他のコンピュータのハッシュデータとを比較することで、自己の保有する非公開データと他のコンピュータの保有する非公開データの内容の全部または一部が共通するか否かを判定する判定ステップと、をコンピュータに実行させ、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする情報共有プログラム。
【請求項１１】
請求項１０に記載の情報共有プログラムが記録されていることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数機関で情報を共有するための情報共有システム、データ処理装置、情報共有方法、情報共有プログラム、および、記録媒体に関する。
【背景技術】
【０００２】
一方向ハッシュ関数を使った情報共有方法が知られている。ここでハッシュ関数とは、あるデータからそのデータの固有の数値（以下、「ハッシュ値」という）を得る関数のことをいう。また、一方向ハッシュ関数とは、ハッシュ値から元のデータを復元することが困難な性質（一方向性）を持ったハッシュ関数のことをいう（以下、一方向ハッシュ関数のことを単に「ハッシュ関数」とよぶ。また、一方向ハッシュ関数を使ってハッシュ値を得ることを「ハッシュ化」とよぶ）。この方法では、ハッシュ関数の一方向性を利用して、関係のない情報を相手に知られることなく情報を共有する。
【０００３】
以下、新薬を開発する機関ＲとＳが、ハッシュ関数を使って情報を共有する例を図１６の概略図を参照して説明する。
【０００４】
最初に、機関ＲとＳは図２に示すような「薬番号表」を用意する。この表は機関ＲとＳの事前の取り決めに基づいて、世界中の薬に一意の番号を付したものである。機関ＲとＳはこの薬番号表を使ってそれぞれの持っている実験データの「薬番号リスト」（図１６（ａ）：「リストＲ」「リストＳ」）を作成する。
【０００５】
次に、機関ＲとＳは共通のハッシュ関数Ｈを使って自身の薬番号リストをハッシュ化し、ハッシュリストＡ１を生成する（図１６（ｂ）：「ハッシュリストＡ１ｒ」「ハッシュリストＡ１ｓ」）。機関ＲとＳは生成したハッシュリストＡ１を交換し（図１６（ｃ））、相手のハッシュリストＡ１と自身のハッシュリストＡ１とを照らし合わせる。同じ薬番号は同じハッシュ値になっているので、機関ＲとＳは相手のハッシュリストと自身のハッシュリストを照らし合わせることで、互いに共通して実験データを持っている薬番号を特定することができる。なお、ハッシュ関数には一方向性があるので、両機関とも相手のハッシュリストＡ１から薬番号を逆算することはできない。薬番号の特定後、各機関は特定した薬の実験データを交換する。
【０００６】
理解を深めるため、図１６を参照して数値を具体的に追ってみる。まず薬Ａの値に着目する。薬Ａの薬番号は‘１０１０’であり（図１６（ａ））、そのハッシュ値は‘４８３１’である（図１６（ｂ））。この値は両方のハッシュリストＡ１に含まれているので、機関ＲとＳは、相手が薬Ａの実験データを持っていると特定することができる。一方、薬Ｂと薬Ｃのハッシュ値は‘３２１７’と‘６９４２’である（図１６（ｂ））。これらの値は一方のハッシュリストＡ１にしか存在しない。そのため、機関ＲとＳは、相手が薬Ｂもしくは薬Ｃの実験データを持っていると特定することはできない。また、ハッシュ関数には一方向性があることから、ハッシュ値から薬番号を逆算することもできない。これにより、機関ＲとＳは、無関係な情報（薬Ｂと薬Ｃの薬番号）を相手に知られることなく、共通する情報（薬Ａの薬番号）のみをお互いに知ることができる
【０００７】
しかしながら、この方法には１つ問題がある。ハッシュ化前の値の値域が小さければ、相手の情報を容易に特定することができるという問題である。以下、上述の薬の例を使って、この問題を具体的に説明する。
【０００８】
世界中に存在する薬の数は限られている。その数は多くても数万である。このことからすると、上述の薬番号の値域は最大でも０〜数万であるといえる。この０〜数万（０〜１０５）という値域は、現在主流の１２８ビット暗号の暗号鍵の値域が０〜１０３８であることを考慮すると極めて小さい値といえる。仮に上述の「薬番号表」に１０万個の薬番号が記載されていたとする。現在のコンピュータ能力をもってすれば、１０万個のハッシュ値を計算することは容易なことである。ここで、機関Ｒが全ての薬番号のハッシュ値を計算したハッシュリスト（図１７（ａ））を作成したとする。機関Ｒは、そのハッシュリストと機関Ｓから得た「ハッシュリストＡ１ｓ」（図１７（ｂ））とを照らし合わすことで、機関Ｓの薬番号を特定することができる。機関Ｓは知られたくない薬番号まで機関Ｒに知られることになる。
【０００９】
この問題を解決するため、非特許文献１には、可換性のある暗号（以下、「可換性暗号」という）を使った情報共有方法が開示されている（以下、「従来方法」という）。ここで「可換性」とは、図１８（ａ）に示すように、元のデータをどちらが先に暗号化しても同じ暗号値になるという性質（以下「暗号可換性」と呼ぶ）、および、図１８（ｂ）に示すように、１の暗号鍵（もしくは復号鍵）で暗号データを復号した結果は他の暗号鍵で元のデータを暗号化した結果に等しいという性質（以下「復号可換性」と呼ぶ）のことをいう。これらの性質は３つ以上の暗号鍵を使用して元のデータを暗号化した場合も同様である。非特許文献１の方法では、ハッシュリストＡ１を、可換性暗号を使ってさらに暗号化することで、ハッシュ値から薬番号を特定されることを防止する。以下、図１９の概略図を参照して非特許文献１の方法を具体的に説明する。
【００１０】
最初に、機関ＲとＳはそれぞれの薬番号リスト（リストＲ、Ｓ）を共通のハッシュ関数Ｈを使ってハッシュ化し、ハッシュリストＡ１を生成する（図１９（ａ））。機関ＲとＳはハッシュリストＡ１を共通の可換性暗号Ｅを使用して暗号化し、暗号リストＡ２を生成する（図１９（ｂ））。可換性暗号Ｅの暗号鍵は機関ＲとＳそれぞれで用意する。
【００１１】
次に、機関ＲとＳは上記で生成した暗号リストＡ２を交換する（図１９（ｃ））。そして、機関ＲとＳは交換した暗号リストＡ２を同じ可換性暗号Ｅを使用して暗号化し、暗号リストＡ３を生成する（図１９（ｄ））。可換性暗号には可換性があることから、同じハッシュ値を暗号化した結果はどちらが先に暗号化しても同じ値になる。機関ＲとＳは暗号化リストＡ３を交換し（図１９（ｅ））、自身の暗号リストＡ３と相手の暗号リストＡ３とを照らし合わすことで共通する薬番号を特定する。
【００１２】
理解を深めるため、図１９を参照して、数値を具体的に追ってみる。まず薬Ａの値に着目する。薬Ａのハッシュ値は‘４８３１’であるが（図１９（ａ））、これを暗号化した値は機関Ｒと機関Ｓのどちらが先に暗号化しても‘７４９５’である（図１９（ｄ））。この‘７４９５’は「暗号リストＡ３ｒ」「暗号リストＡ３ｓ」のいずれにも存在するので、機関ＲとＳは、相手が薬Ａの実験データを持っていると特定することができる。一方、薬Ｂと薬Ｃの暗号値はそれぞれ‘９５７９’と‘２０３８’である（図１９（ｄ））。これらの値は「暗号リストＡ３ｒ」と「暗号リストＡ３ｓ」の一方にしか存在しない。そのため、機関ＲとＳは、相手が薬Ｂもしくは薬Ｃの実験データを持っていると特定することはできない。また、この暗号値は相手の暗号鍵がなければ元のハッシュ値に戻すことはできない。したがって、例え機関Ｒもしくは機関Ｓが全ての薬番号のハッシュ値を計算したとしても、相手の薬番号を特定することはできない。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Ｒ．Ａｇｒａｗａｌ，Ａ．Ｅｖｆｉｎｉｅｖｓｋｉ  ａｎｄ  Ｒ．Ｓｒｉｋａｎｔ，“Ｉｎｆｏｒｍａｔｉｏｎ  ｓｈａｒｉｎｇ  ａｃｒｏｓｓ  ｐｒｉｖａｔｅ  ｄａｔａｂａｓｅｓ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００３  ＡＣＭ  ＳＩＧＭＯＤ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｄａｔａ（ＳＩＧＭＯＤ  ２００３），ｐｐ．８６−９７，２００３
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、非特許文献１の方法にも問題がある。暗号リストＡ３を生成する過程で得られた情報を基に、自分の情報を相手に特定される可能性があるという問題である。以下、図１９を参照して、この問題を具体的に説明する。
【００１５】
最初に「暗号リストＡ３ｒ」（図１９（ｅ））と「暗号リストＡ２ｒ」（図１９（ｂ））の薬Ｂの値に着目する。暗号リストＡ３ｒでの薬Ｂの値は‘９５７９’であり、暗号リストＡ２ｒでの薬Ｂの値は‘６９４２’である。暗号リストＡ３ｒは暗号リストＡ２ｒを機関Ｓの暗号鍵で暗号化したものであるので、このことから、機関Ｒには‘６９４２’の機関Ｓの暗号鍵での暗号値は‘９５７９’であることがわかる。
【００１６】
次に「暗号リストＡ２ｓ」（図１９（ｃ））に着目する。暗号リストＡ２ｓの中には、暗号リストＡ３ｒと同じように、‘９５７９’の値が含まれていることが分かる。暗号リストＡ２ｓは機関ＳのハッシュリストＡ１ｓ（図１９（ａ））を機関Ｓの暗号鍵で暗号化したものであるので、このことから、機関Ｒには、機関Ｓが薬Ｃの実験データを持っていると特定することができる。
【００１７】
なぜなら、機関Ｒには‘９５７９’の暗号化前の値は‘６９４２’であると分かっているので、ハッシュリストＡ１ｓ（図１９（ａ））の中に‘６９４２’の値が含まれていると容易に推測することができる。そうすると、図１７の場合と同様に、全ての薬番号をハッシュ化したハッシュリスト（図１７（ａ））を生成し、その中からハッシュ値‘６９４２’を探すことで、‘６９４２’のハッシュ化前の値が薬番号‘１０３０’（薬Ｃ）であると容易に特定することができるからである。機関Ｓは薬Ａのほかに薬Ｃの薬番号まで機関Ｒに知られることになる。
【００１８】
もちろん、リストの中に偶然一致する値がある場合ばかりではない。しかしながら、暗号化前（平文）と後（暗号文）の情報を相手に与えてしまうことは、違う暗号文の平文を相手に推測する余地を与える。特に、平文となる候補が少ない場合、従来方法における情報の機密性は極めて低いものになる。
【００１９】
本発明はこれらの問題を鑑みてなされたものであり、小さな値域から選択された情報を共有する場合であっても、無関係な情報を他に知られることなく、共通する情報を知ることができる情報共有システム、データ処理装置、情報共有方法、情報共有プログラム、および、該情報共有プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記目的を達成するため、本発明の第１の観点にかかる情報共有システムは、
２以上のデータ処理装置で構成される情報共有システムであって、
前記データ処理装置はそれぞれ、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶手段と、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得手段と、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成手段と、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成手段と、
他のデータ処理装置の前記ハッシュデータ生成手段により生成されたハッシュデータを取得するハッシュデータ取得手段と、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定手段と、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする。
【００２１】
前記非公開データは、
複数のデータブロックで構成されるデータであり、
前記暗号データ取得手段は、
前記非公開データを他のデータ処理装置の保有する前記主暗号鍵でデータブロックごとに暗号化した前記第１暗号データを取得し、
前記暗号データ生成手段は、
前記第１暗号データを自己の保有する前記主暗号鍵でデータブロックごとに暗号化することで前記第２暗号データを生成し、
前記ハッシュデータ生成手段は、
前記第２暗号データを他のデータ処理装置と共通の前記ハッシュ関数でデータブロックごとにハッシュ化することで前記ハッシュデータを生成し、
前記判定手段は、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとをデータブロック単位で比較することで、データブロックごとに内容が共通するか否かを判定してもよい。
【００２２】
前記データ処理装置は、
前記第１暗号データの取得に使用する複数の副暗号鍵を記憶する副暗号鍵記憶手段、をさらに有し、
前記暗号データ取得手段は、
前記非公開データを１データブロックまたは所定数のデータブロックごとに前記副暗号鍵の値を変更してデータブロックごとに暗号化することで第３暗号データを生成し、
前記第３暗号データを他のデータ処理装置の主暗号鍵でデータブロックごとに暗号化した第４暗号データを取得し、
前記副暗号鍵もしくは前記副暗号鍵に対応する復号鍵で前記第４暗号データを復号することによって前記第１暗号データを生成し、
前記第３暗号データおよび前記第４暗号データは、
前記第１暗号データおよび前記第２暗号データと共通の可換性暗号により生成されてもよい。
【００２３】
前記データ処理装置は、
前記判定手段の判定結果に基づいて、自己の保有する非公開データと他のデータ処理装置の保有する非公開データとの内容の共通するデータブロックを特定する共通ブロック特定手段、をさらに有していてもよい。
【００２４】
前記データ処理装置は、
前記データブロックそれぞれに関連付けされた詳細データを記憶する詳細データ記憶手段と、
前記共通ブロック特定手段が特定したデータブロックに関連付けされた前記詳細データを前記詳細データ記憶手段から取得して他のデータ処理装置に送信する詳細データ送信手段、をさらに有していてもよい。
【００２５】
前記情報共有システムは、
２以上の前記データ処理装置がアクセス可能なデータ記憶装置、をさらに有し、
２以上の前記データ処理装置は、それぞれ、
自己の保有する前記第３暗号データを前記データ記憶装置に保存し、
他のデータ処理装置が保存した前記第３暗号データ、もしくは、他のデータ処理装置が保存した前記第３暗号データであってさらにその他の前記データ処理装置が暗号化したデータを前記データ処理装置から取得して自己の前記主暗号鍵で暗号化し、
その暗号化したデータを前記データ記憶装置に保存してもよい。
【００２６】
３以上の前記データ処理装置で構成される前記情報共有システムであって、
前記第１暗号データは、
２以上の他のデータ処理装置の前記主暗号鍵で順次暗号化されることによって生成されてもよい。
【００２７】
上記目的を達成するため、本発明の第２の観点にかかるデータ処理装置は、
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
非公開データを記憶する非公開データ記憶手段と、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶手段と、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得手段と、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成手段と、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成手段と、
他のデータ処理装置の前記ハッシュデータ生成手段により生成されたハッシュデータを取得するハッシュデータ取得手段と、
前記ハッシュデータ生成手段で生成した自己のハッシュデータと前記ハッシュデータ取得手段で取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定手段と、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする。
【００２８】
上記目的を達成するため、本発明の第３の観点にかかる情報共有方法は、
他のデータ処理装置と連携してデータを処理するデータ処理装置により使用される情報共有方法であって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶ステップと、
前記非公開データを他のデータ処理装置の保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得ステップと、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成ステップと、
前記第２暗号データを他のデータ処理装置と共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成ステップと、
他のデータ処理装置の前記ハッシュデータ生成ステップにて生成されたハッシュデータを取得するハッシュデータ取得ステップと、
前記ハッシュデータ生成ステップで生成した自己のハッシュデータと前記ハッシュデータ取得ステップで取得した他のデータ処理装置のハッシュデータとを比較することで、自己の保有する非公開データと他のデータ処理装置の保有する非公開データの内容の全部または一部が共通するか否かを判定する判定ステップと、を有し、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする。
【００２９】
上記目的を達成するため、本発明の第４の観点にかかる情報共有プログラムは、
他のコンピュータと連携してデータを処理するコンピュータにより実行される情報共有プログラムであって、
非公開データを記憶する非公開データ記憶ステップと、
前記非公開データの暗号化に使用する主暗号鍵を記憶する主暗号鍵記憶ステップと、
前記非公開データを他のコンピュータの保有する主暗号鍵で暗号化した第１暗号データを取得する暗号データ取得ステップと、
前記第１暗号データを自己の保有する前記主暗号鍵で暗号化することで第２暗号データを生成する暗号データ生成ステップと、
前記第２暗号データを他のコンピュータと共通のハッシュ関数でハッシュ化することでハッシュデータを生成するハッシュデータ生成ステップと、
他のコンピュータの前記ハッシュデータ生成ステップにて生成されたハッシュデータを取得するハッシュデータ取得ステップと、
前記ハッシュデータ生成ステップで生成した自己のハッシュデータと前記ハッシュデータ取得ステップで取得した他のコンピュータのハッシュデータとを比較することで、自己の保有する非公開データと他のコンピュータの保有する非公開データの内容の全部または一部が共通するか否かを判定する判定ステップと、をコンピュータに実行させ、
前記第１暗号データおよび前記第２暗号データは、
共通の可換性暗号により生成されており、
前記可換性暗号は、
複数の暗号鍵を使用して異なった順番でデータを暗号化しても、いずれも同じ暗号データを生成する、
ことを特徴とする。
【００３０】
上記目的を達成するため、本発明の第５の観点にかかる記録媒体は、
上記情報共有プログラムが記録されていることを特徴とする。
【発明の効果】
【００３１】
本発明によれば、小さな値域から選択された情報を共有する場合であっても、無関係な情報を他に知られることなく、共通する情報を知ることができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態１にかかる情報共有システムの構成例を示すブロック図である。
【図２】複数機関による事前の取り決めに基づいて、世界中の薬に一意の番号を付した薬番号表を示す図である。
【図３】図２に示す薬番号表に基づいて、各機関が持っている実験データの薬番号をリストした薬番号リストを示す図であり、（ａ）と（ｂ）は２つの機関でそれぞれ作成した薬番号リストを示す図である。
【図４】図１に示す制御部によって実現される機能を示す機能ブロック図である。
【図５】本発明の実施の形態１にかかる「情報共有処理」の概要を説明するための処理概要図である。
【図６】本発明の実施の形態１にかかる「情報共有処理」を説明するためのフローチャートである。
【図７】図６に示す「情報共有処理」で実行される「暗号データ取得処理」を説明するためのフローチャートである。
【図８】図６に示す「情報共有処理」で実行される「暗号データ取得処理」の概要を説明するための処理概要図である。
【図９】図６に示す「情報共有処理」で実行される「ハッシュデータ取得処理」を説明するためのフローチャートである。
【図１０】本発明の実施の形態２にかかる情報共有システムの構成例を示すブロック図である。
【図１１】本発明の実施の形態２にかかる「情報共有処理」を説明するためのフローチャートである。
【図１２】図１１に示す「情報共有処理」で実行される「暗号データ取得処理」を説明するためのフローチャートである。
【図１３】図１１に示す「情報共有処理」で実行される「ハッシュデータ取得処理」を説明するためのフローチャートである。
【図１４】薬番号リストの各データブロックに実験データが関連付けられた様子を説明するための図であり、（ａ）は機関Ｒの薬番号リストに各実験データが関連付けられた様子を示す図であり、（ｂ）は機関Ｓの薬番号リストに各実験データが関連付けられた様子を示す図である。
【図１５】薬番号リストの各データブロックに詳細リストが関連付けられた様子を説明するための図であり、（ａ）は機関Ｒの薬番号リストに各詳細リストが関連付けられた様子を示す図であり、（ｂ）は機関Ｓの薬番号リストに各詳細リストが関連付けられた様子を示す図である。
【図１６】ハッシュ関数を使用した従来の情報共有方法を説明するための概略図である。
【図１７】全薬番号のハッシュ値を記録したハッシュリスト（ａ）と相手機関から得たハッシュリスト（ｂ）とを照らし合わせて、相手機関の薬番号を特定した様子を示す図である。
【図１８】可換性暗号の可換性を説明するための図であり、（ａ）は可換性暗号の暗号可換性を説明するための図であり、（ｂ）は可換性暗号の復号可換性を説明するための図である。
【図１９】可換性暗号を使用した従来の情報共有方法を説明するための概略図である。
【発明を実施するための形態】
【００３３】
（実施の形態１）
本実施の形態の情報共有システム１は、機関Ｒもしくは機関Ｓの持つ非公開情報のうち無関係な情報を相手に知られることなく、共通する情報のみをお互いに知るための情報共有システムである。以下、情報共有システム１について図面を参照しながら説明する。まず、図１を参照して情報共有システム１の構成について説明する。
【００３４】
情報共有システム１は、図１に示すように、機関Ｒと機関Ｓそれぞれに設置された２台のデータ処理装置１００と、それらを接続する通信線２００とで構成される。２台のデータ処理装置１００は通信線２００を通じて互いにデータを送受信することで連携して１つの処理を実行する。
【００３５】
データ処理装置１００は、例えば、ＰＣサーバやメインフレームなどで構成され、実験データ等の非公開情報を格納している。データ処理装置１００は、図１に示すように、制御部１１０、通信部１２０、記憶部１３０、操作部１４０、インターフェース部１５０から構成される。
【００３６】
制御部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などで構成され、データ処理装置１００の各部を制御する。また、制御部１１０は操作部１４０から「共有開始通知」を受信すると、後述の「情報共有処理」を実行する。「情報共有処理」は２台のデータ処理装置１００それぞれで実行される。
【００３７】
通信部１２０は、ＬＡＮコネクタや送受信処理用のプロセッサなどから構成され、通信線２００を通じて外部の装置（例えばパーソナルコンピュータ）との通信を行う。
【００３８】
記憶部１３０は、ハードディスクやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置から構成され、データ処理装置１００の動作に必要なデータ（例えば「非公開データ」や「暗号鍵」）などを記憶する。
【００３９】
ここで「非公開データ」とは「実験データ」や「薬番号リスト」などの非公開の情報のことをいう。また、「実験データ」とは、各研究機関で行った動物実験等の実験データのことであり、「薬番号リスト」とは、例えば図２に示す「薬番号表」に基づいて、機関ＲとＳそれぞれが持っている実験データの薬番号を、例えば図３に示す薬番号リストとしてまとめたものである（以下、機関Ｒと機関Ｓの薬番号リストをそれぞれ「リストＲ」「リストＳ」とよぶ）。これらのリストは、１つの有意情報を１要素とした複数要素のリストとなっている。ここで、「有意情報」とは、例えば「薬番号」や「暗号鍵」などのように、リストの中の他の情報とは独立して意味を持つ情報のことをいう。薬番号リスト（「リストＲ」「リストＳ」）は１要素（ここでは「薬番号」）を１データブロックとした複数データブロックの構成となっている。暗号化やハッシュ化はこのデータブロックごとに実行される。
【００４０】
また「暗号鍵」とは、データの暗号化に使用するための鍵となる数値であり、それぞれの機関において任意に選択される。本実施の形態では、記憶部１３０に２種類の暗号鍵が保存される。１つは「主暗号鍵」であり、もう１つは「副暗号鍵」である。「主暗号鍵」は、後述する暗号リストＢ１およびＢ２を生成するための暗号鍵であり、また、「副暗号鍵」は暗号リストＢ１を生成する過程で一時的に使用される暗号鍵である。「副暗号鍵」は複数個用意される（詳細は後述する）。
【００４１】
操作部１４０は、データ処理装置１００の外面上に構成されている各種ボタンなどによって構成される。ユーザにより所定のボタンが押されると、制御部１１０に対し「共有開始通知」を送信する。共有開始通知は、情報共有処理を開始するためのトリガとなるデータである。
【００４２】
インターフェース部１５０は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コネクタやビデオ出力端子などから構成され、外部の装置（例えばＰＣやモニタなど）へ処理結果を送信する。
【００４３】
以上、情報共有システム１の構成について説明したが、次に、制御部１１０の備える機能について、図４の機能ブロック図、および、図５の処理概略図を参照しながら説明する。
【００４４】
制御部１１０は複数の機関で情報を共有するための「情報共有処理」を実行する。情報共有処理は操作部１４０からの「共有開始通知」により開始される。以下に説明する各機能は、情報共有処理を実現するための機能である。
【００４５】
暗号データ取得部１１１は、他機関のデータ処理装置１００と連携して、自己の薬番号リスト（「リストＲ」「リストＳ」）を相手機関の主暗号鍵で暗号化した暗号リストＢ１（図５（ａ）：「暗号リストＢ１ｒ」「暗号リストＢ１ｓ」）を取得する。暗号化には両機関で共通の可換性暗号Ｅが使用される。
【００４６】
暗号データ生成部１１２は、暗号データ取得部１１１で取得した暗号リストＢ１を自己の主暗号鍵で暗号化することで暗号リストＢ２（図５（ｂ）：「暗号リストＢ２ｒ」「暗号リストＢ２ｓ」）を生成する。暗号化には、暗号リストＢ１を生成したのと同じアルゴリズムの可換性暗号Ｅを使用する。
【００４７】
ハッシュデータ生成部１１３は、暗号データ生成部１１２で生成した暗号リストＢ２をハッシュ化することでハッシュリストＢ３（図５（ｃ）：「ハッシュリストＢ３ｒ」「ハッシュリストＢ３ｓ」）を生成する。ハッシュ化には相手機関と共通のハッシュ関数Ｈを使用する。
【００４８】
ハッシュデータ取得部１１４は、ハッシュデータ生成部１１３で生成したハッシュリストＢ３と、他機関のハッシュリストＢ３とを交換する（図５（ｄ））。
【００４９】
判定部１１５は、ハッシュデータ生成部１１３で生成した自己のハッシュリストＢ３と、ハッシュデータ取得部１１４で取得した相手機関のハッシュリストＢ３とを比較することで、内容の共通するデータブロックを特定する。共通するデータブロックを特定したら、インターフェース部１５０を通じて外部の装置へ処理結果を送信する。
【００５０】
以上、制御部１１０の機能について説明したが、次に、データ処理装置１００で実行される「情報共有処理」について説明する。機関Ｒおよび機関Ｓに設置された２台のデータ処理装置１００は、それぞれ同じ処理内容の「情報共有処理」を実行することで、無関係な情報（自己が持っている情報のうち相手機関が持っていない情報）を相手機関に知られることなく共通する情報のみをお互いに知る。
【００５１】
制御部１１０は操作部１４０から「共有開始通知」を受信すると図６に示す「情報共有処理」を開始する。この「情報共有処理」は大きく５つのステップで構成される。以下、図５の処理概略図を参照しながら「情報共有処理」の概要について説明する。なお、以下に説明する各ステップの内容は、２台のデータ処理装置１００それぞれで実行される。
【００５２】
最初に、ステップＳ１００の暗号データ取得処理について説明する。制御部１１０は、自己の「薬番号リスト」を暗号化した「暗号リストＢ１」（図５（ａ））を取得する。暗号リストＢ１は、相手機関が保有する主暗号鍵で暗号化される。暗号化には両機関で共通の可換性暗号Ｅが使用される。
【００５３】
ここで１つ疑問が生じる。暗号リストＢ１を得るためには、相手機関に自身の薬番号リストを渡して暗号化してもらう必要があるため、その際に、自身の薬番号リストが相手機関に知られてしまうのではないかという疑問である。しかしながら、本実施の形態では、可換性暗号の性質を利用した斬新な方法により、自身の薬番号リストを相手に知られることなく、暗号リストＢ１を取得することが可能となっている。その具体的方法は後で詳しく述べる。
【００５４】
次に、ステップＳ２００の暗号データ生成処理について説明する。制御部１１０は暗号リストＢ１を自己の保有する主暗号鍵で暗号化することで「暗号リストＢ２」（図５（ｂ））を生成する。暗号化には、暗号リストＢ１を生成したのと同じアルゴリズムの可換性暗号Ｅを使用する。同じアルゴリズムの可換性暗号を使用することで、可換性暗号の暗号可換性（どちらの暗号鍵で先に暗号化しても同じ暗号値になる性質）を利用することが可能になる。
【００５５】
以上の処理（ステップＳ１００とステップＳ２００）により、機関ＲとＳは、それぞれのリストをそれぞれの主暗号鍵で暗号化した暗号リストＢ２を生成したことになる。可換性暗号には暗号可換性があることから、ステップＳ２００が完了した時点で同じ薬番号は同じ暗号値になっているはずである。また、この時点で、暗号リストＢ２の各データブロックの値域は暗号鍵の値域（０〜１０３８）にまで拡大している。この値域の広さは、最終的に生成されるリストへの攻撃防止に大きな役割を果たす（理由については後述する）。
【００５６】
ステップＳ２００の処理が完了すると、次に、制御部１１０はステップＳ３００のハッシュデータ生成処理を実行する。制御部１１０は暗号リストＢ２をハッシュ化することで「ハッシュリストＢ３」（図５（ｃ））を生成する。ハッシュ化には機関ＲとＳで共通のハッシュ関数Ｈを使用する。
【００５７】
このハッシュ化により、相手機関は暗号リストＢ２を復号することができなくなる。暗号リストＢ２が復号されるということは、自身の薬番号リストの暗号文を相手機関に与えるということを意味する（可換性暗号の復号可換性）。これは、平文の候補が限られた状況下では、平文を推測する糸口になりかねない。しかしながら、本実施の形態では、暗号リストＢ２をさらにハッシュ化し、暗号文としての規則性を失わせることで、暗号リストＢ２が復号されることを防止する。
【００５８】
ステップＳ３００の処理が完了すると、次に、制御部１１０はステップＳ４００のハッシュデータ取得処理を開始する。制御部１１０は、ステップＳ３００で生成されたハッシュリストＢ３を機関ＲとＳで交換する（図５（ｄ））。交換したハッシュリストＢ３は後述のステップ５００で使用される。
【００５９】
ステップＳ４００の処理が完了すると、次に、制御部１１０はステップＳ５００の判定処理を実行する。制御部１１０は、ステップＳ３００で生成した自己の「ハッシュリストＢ３」とステップＳ４００で交換した相手の「ハッシュリストＢ３」とを比較して、内容の共通するデータブロックを特定する。
【００６０】
以上、情報共有処理の概要について説明したが、次に、情報共有処理について詳細に説明する。最初に、ステップＳ１００の「暗号データ取得処理」について説明する。ステップＳ１００は図７の「暗号データ取得処理」に対応している。以下、図７のフローチャートおよび図８の処理概略図を参照して「暗号データ取得処理」について説明する。なお、暗号データ取得処理は暗号データ取得部１１１で実行される。
【００６１】
暗号データ取得部１１１は、薬番号リスト（「リストＲ」「リストＳ」）を記憶部１３０に保存されている副暗号鍵で暗号化して「暗号リストＢ４」を生成する。暗号データ取得部１１１は、図８（ａ）に示すように、薬番号リストをデータブロックごとに異なった暗号鍵を使用して暗号化する（ステップＳ１０１）。
【００６２】
これにより、あるデータブロックの平文の推測に別のデータブロックの情報を使用することができなくなる。例えば、リストＲとリストＳの両方に薬番号‘１０１０’が含まれていたとする。この場合、機関Ｒは、本実施の形態の「情報共有処理」を実行することで、最終的に、薬番号‘１０１０’が機関Ｓの薬番号リストに含まれていると知ることになる。また、機関Ｒは機関Ｓから上述の「暗号リストＢ４ｓ」を得ることで、‘１０１０’の機関Ｓの副暗号鍵での暗号値‘８５８７’を知ることになる。そうなると、機関Ｒは、薬番号‘１０１０’（平文）とその暗号値‘８５８７’（暗号文）を得ていることになり、もし全てのデータブロックで同じ副暗号鍵を使用していれば、他のデータブロックの平文の推測にこの情報が使用できることになる。かかる事態が発生しても、データブロックごとに異なった暗号鍵を使用していれば、他のデータブロックの平文の推測にこの情報を使用することはできない。
【００６３】
なお、暗号化には機関Ｒと機関Ｓで共通の可換性暗号Ｅを使用する。後述の処理（ステップＳ１０７）において可換性暗号の復号可換性を利用するためである（詳細は後述する）。
【００６４】
続いて図７のステップＳ１０２について説明する。暗号データ取得部１１１は生成した暗号リストＢ４を、通信部１２０を介して相手機関のデータ処理装置１００に送信する（ステップＳ１０２）。
【００６５】
暗号データ取得部１１１は、相手機関から暗号リストＢ４が送信されるのを待つ（ステップＳ１０３：Ｎｏ）。相手機関から暗号リストＢ４が送信されたら、ステップＳ１０４に進む（ステップＳ１０３：Ｙｅｓ）。
【００６６】
暗号データ取得部１１１は、相手機関の暗号リストＢ４をデータブロックごとに自己の主暗号鍵を使用して暗号化し、暗号リストＢ５を生成する。このとき、暗号データ取得部１１１は、全てのデータブロックで同じ主暗号鍵を使用する。また、暗号化にはステップＳ１０１で使用したのと同じ可換性暗号Ｅを使用する。なお、本ステップでの暗号化に際しては、リスト中のデータブロックの順番を変更してはならない。後の処理（ステップＳ１０７）において、副暗号鍵とデータブロックとの対応関係がとれなくなるからである（ステップＳ１０４）。
【００６７】
暗号データ取得部１１１は、ステップＳ１０４で生成した暗号リストＢ５を、通信部１２０を介して、相手機関のデータ処理装置１００に送信する（ステップＳ１０５）。
【００６８】
暗号データ取得部１１１は、相手機関から暗号リストＢ５が送信されるのを待つ（ステップＳ１０６：Ｎｏ）。相手機関から暗号リストＢ５が送信されたら、ステップＳ１０７に進む（ステップＳ１０６：Ｙｅｓ）。
【００６９】
暗号データ取得部１１１は、暗号リストＢ５を図８（ｂ）に示すように自己の保有する副暗号鍵（もしくは副暗号鍵に対応する復号鍵）で復号する。ここで、暗号リストＢ５を復号した結果は「暗号リストＢ１」である。これは、１の暗号鍵で復号した結果は他の暗号鍵で暗号化した結果に等しいという可換性暗号の「復号可換性」に基づく。暗号データ取得部１１１は、生成した暗号リストＢ１を記憶部１３０に保存する（ステップＳ１０７）。
【００７０】
以上の処理により、暗号データ取得部１１１は相手機関に自身の薬番号リストを知られることなく暗号リストＢ１を取得したことになる。暗号リストＢ１の取得が完了すると、次に、制御部１１０は、図６のフローに戻り、ステップＳ２００の暗号データ生成処理を開始する。暗号データ生成処理は暗号データ生成部１１２で実行される。
【００７１】
暗号データ生成部１１２は、ステップＳ１００で取得した暗号リストＢ１を自己の保有する主暗号鍵で暗号化することで「暗号リストＢ２」を生成する。暗号データ生成部１１２は暗号リストＢ１をデータブロックごとに暗号化する。このとき、暗号化にはステップＳ１００で使用したのと同じ可換性暗号Ｅを使用する。また、暗号データ生成部１１２は、全てのデータブロックで同じ主暗号鍵を使用する。データブロックごとに違う主暗号鍵を使用すると、例えば、リストＲとＳの異なった位置に同じ薬番号が記録されている場合（例えばリストＲの１番目のデータブロックに薬番号‘１０１０’が記録され、リストＳの２番目のデータブロックに薬番号‘１０１０’が記録されている場合）、最終的に同じ薬番号が同じ暗号値にならないからである。なお、本ステップにおいては、各データブロックを任意の順番に並べ替えてもよい。副暗号鍵での復号はすでに完了しており、また、全てのデータブロックで同じ主暗号鍵を使用しているので、必ずしも暗号鍵とデータブロックの対応関係をとる必要がないからである（ステップＳ２００）。
【００７２】
なお、本ステップが完了した時点で、暗号リストＢ２の値域は主暗号鍵の値域（１２８ビット暗号であれば０〜１０３８）にまで拡大している。なぜなら、相手機関は相手の主暗号鍵の値を知らず、また、暗号リストＢ２は主暗号鍵の値次第で変化する値であるからである。この値域の広さは、最終的に生成されるハッシュリストＢ３への攻撃防止に大きな役割を果たす。すなわち、広い値域を確保することで現実時間において暗号リストＢ２の全ハッシュ値を計算することが実質上不可能になり、従来方法のように、全ハッシュ値を計算してハッシュ化前の値を特定することができなくなる。
【００７３】
暗号リストＢ２の生成が完了すると、制御部１１０は、次に、ステップＳ３００のハッシュデータ生成処理を開始する。ハッシュデータ生成処理はハッシュデータ生成部１１３で実行される。ハッシュデータ生成部１１３は、ステップＳ２００で取得した暗号リストＢ２を他のデータ処理装置１００と共通のハッシュ関数Ｈを使用してデータブロックごとにハッシュ化し、「ハッシュリストＢ３」を生成する。なお、本ステップにおいても、ステップＳ２００と同様に、各データブロックを任意の順番に並べ替えてもよい（ステップＳ３００）。
【００７４】
以上の処理によりハッシュリストＢ３の生成が完了すると、制御部１１０は、次に、ステップＳ４００（図６）の「ハッシュデータ取得処理」を開始する。ハッシュデータ取得処理はハッシュデータ取得部１１４で実行される。ハッシュデータ取得部１１４は、ステップＳ３００で生成したハッシュリストＢ３を互いに相手機関に送信することで、自己の保有するハッシュリストＢ３と相手機関の保有するハッシュリストＢ３とを交換する。なお、ステップＳ４００の「ハッシュデータ取得処理」は、図９の「ハッシュデータ取得処理」に対応している。以下、図９のフローチャートを参照して「ハッシュデータ取得処理」について説明する。
【００７５】
ハッシュデータ取得部１１４は、ステップＳ３００で生成したハッシュリストＢ３を、通信部１２０を介して、相手機関のデータ処理装置１００に送信する（ステップＳ４０１）。
【００７６】
ハッシュデータ取得部１１４は、相手機関からハッシュリストＢ３が送信されるのを待つ（ステップＳ４０２：Ｎｏ）。相手機関からハッシュリストＢ３が送信されたら、ステップＳ１０７に進む（ステップＳ４０２：Ｙｅｓ）。
【００７７】
ハッシュデータ取得部１１４は、相手機関のハッシュリストＢ３を記憶部１３０に保存する（ステップＳ４０３）。
【００７８】
以上の処理によりハッシュリストＢ３の取得が完了すると、次に、制御部１１０は、図６のフローに戻り、ステップＳ５００の判定処理を開始する。判定処理は判定部１１５で実行される。判定部１１５は、ステップＳ３００で生成したハッシュリストＢ３とステップＳ４００で取得した相手機関のハッシュリストＢ３をデータブロックごとに比較し、内容が共通するか否かをデータブロックごとに判定する。そして、その判定結果に基づいて、両機関のハッシュリストＢ３において内容の共通するデータブロックを特定する。共通のデータブロックを特定したら、インターフェース部１５０を通じて処理結果を外部の装置へ出力する（ステップＳ５００）。各機関は特定した薬の実験データを相手機関に送信する。
【００７９】
本実施の形態によれば、一端、自己の副暗号鍵を使って暗号化した後で、薬番号リストを相手に渡しているので、自己の薬番号リストの内容を相手に知られることなく、暗号リストＢ１を取得することが可能になる。
【００８０】
また、暗号リストＢ１の生成の過程でデータブロックごとに異なった副暗号鍵を使用しているので、あるデータブロックで平文と暗号文の情報を相手に取得されたとしても、他のデータブロックの平文の推測にその情報を使用することはできない。
【００８１】
また、暗号リストＢ１を暗号化した後は、ハッシュリストＢ３が生成されるまで自己のリストが相手機関に渡ることはない。そのため、何らかの理由で平文の推測が可能な状況になったとしても、自己のリストの内容を推測される心配はない。
【００８２】
また、一端データをハッシュ化した後は、暗号文としての規則性は完全に失われているため、その暗号文を復号することはできない。そのため、相手機関にハッシュリストＢ３を渡したとしても、相手機関に自身の薬番号リストを取得される心配はない。
【００８３】
さらに、暗号リストＢ２（ハッシュリストＢ３を生成する前のリスト）の値域は相手機関の暗号鍵の値域に等しい。１２８ビット暗号であれば、暗号鍵の値域は０〜１０３８という天文学的な大きさになる。そのため、暗号リストＢ２の全ハッシュ値を計算することは実質上不可能であり、相手機関にハッシュリストＢ３を渡したとしてもハッシュ値から元の値が特定されることはない。
【００８４】
このように本実施の形態の方法は、従来方法の弱点を克服した極めて機密性の高い方法となっている。よって、本実施の形態の方法を使用すれば、小さな値域から選択された情報であっても高い安全性のもと情報の共有が可能になる。
【００８５】
（実施の形態２）
本実施の形態の情報共有システム１は、図１０に示すように、複数のデータ処理装置１００を備えるシステムである。複数のデータ処理装置１００はデータ記憶装置３００を介してデータを送受信することで、複数の機関での情報共有を可能にする。以下、情報共有システム１について図面を参照しながら説明する。まず、図１０を参照して情報共有システム１の構成について説明する
【００８６】
情報共有システム１は、図１０に示すように、複数のデータ処理装置１００と、データ処理装置１００それぞれと通信線２００で接続されたデータ記憶装置３００とを備える情報共有システムである。なお、以下の説明では、データ処理装置１００が、機関Ｒ、機関Ｓ、機関Ｔそれぞれに設置されているものとして説明する。以下、情報共有システム１の構成について説明する。なお、データ処理装置１００の構成と機能については、実施の形態１と同様であるので説明を省略する。
【００８７】
データ記憶装置３００は、例えば、３つの機関とは別の機関内に設置されたサーバである。データ記憶装置３００は、データを保存するための記録装置（ハードディスクやフラッシュメモリ等）や、データ処理装置１００とデータを送受信するための通信装置などを備える。データ処理装置１００は通信線２００を介してデータ記憶装置３００にデータを保存する。
【００８８】
データ記憶装置３００内部の記録装置には、機関ごとに専用のフォルダが用意されている。３つのデータ処理装置１００は、それぞれの機関に用意された上記フォルダに暗号リスト等を格納する。また、各フォルダ内部にはデータ処理履歴を記録するための履歴ファイルが格納されている。各データ処理装置１００はリストを処理するたびに履歴ファイルに所定のデータを記録する
【００８９】
次に、情報共有システム１で実行される「情報共有処理」について説明する。制御部１１０は、操作部１４０から「共有開始通知」を受信すると、図１１に示す「情報共有処理」を開始する。最初に、ステップＳ１００の「暗号データ取得処理」について説明する。なお、ステップＳ１００の「暗号データ取得処理」は、図１２の「暗号データ取得処理」に対応している。以下、図１２のフローチャートを参照して「暗号データ取得処理」について説明する。
【００９０】
暗号データ取得部１１１は、薬番号リスト（「リストＲ」「リストＳ」「リストＴ」）を記憶部１３０に保存されている副暗号鍵で暗号化して暗号リストＢ４（「暗号リストＢ４ｒ」「暗号リストＢ４ｓ」「暗号リストＢ４ｔ」）を生成する（ステップＳ１１１）。
【００９１】
暗号データ取得部１１１は、生成した暗号リストＢ４を、通信部１２０を介して、データ記憶装置３００に送信する（ステップＳ１０２）。データ記憶装置３００は、暗号リストＢ４を受信して、指定のフォルダにデータを格納する。
【００９２】
暗号データ取得部１１１は、他の機関のデータが格納されているか一定期間ごとにデータ記憶装置３００をモニタする（ステップＳ１１３）。その機関の専用フォルダにデータが格納されていたら、ステップＳ１１４に進む（ステップＳ１１３：Ｙｅｓ）。
【００９３】
暗号データ取得部１１１は、他の機関のデータをデータ記憶装置３００から取得して暗号化する（ステップＳ１１４）。暗号データ取得部１１１は暗号化したデータをデータ記憶装置３００に送信する（ステップＳ１１５）。データ記憶装置３００はそのデータを受信して所定のフォルダに格納する。また、暗号データ取得部１１１は、履歴ファイルにデータを暗号化したことを記録する。
【００９４】
暗号データ取得部１１１は、もう一方の機関のデータが格納されているか一定期間ごとにデータ記憶装置３００をモニタする（ステップＳ１１６）。その機関の専用フォルダにデータが格納されていたら、ステップＳ１１７に進む（ステップＳ１１６：Ｙｅｓ）。
【００９５】
暗号データ取得部１１１は、もう一方の機関のデータをデータ記憶装置３００から取得して暗号化する（ステップＳ１１７）。暗号データ取得部１１１は暗号化したデータをデータ記憶装置３００に送信する（ステップＳ１１８）。データ記憶装置３００はデータを受信して所定のフォルダに格納する。また、暗号データ取得部１１１は、履歴ファイルにデータを暗号化したことを記録する。
【００９６】
暗号データ取得部１１１は、自己の専用フォルダに保存されている履歴ファイルを一定期間ごとに取得して、自己の暗号リストＢ４の、他の２つの機関での暗号化が完了したかモニタする（ステップＳ１１９）。暗号化が完了していたら、ステップＳ１２０に進む（ステップＳ１１９：Ｙｅｓ）。
【００９７】
暗号データ取得部１１１は、自己の専用フォルダから他の２つの機関で暗号化されたデータ（以下、「暗号リストＢ５」という）取得する。そして、取得した暗号リストＢ５を副暗号鍵で復号する。なお、暗号リストＢ５（「暗号リストＢ５ｒ」「暗号リストＢ５ｓ」「暗号リストＢ５ｔ」）を復号したデータは、暗号リストＢ１（「暗号リストＢ１ｒ」「暗号リストＢ１ｓ」「暗号リストＢ１ｔ」）となる。これは可換性暗号の「復号可換性」に基づく。暗号データ取得部１１１は生成した暗号リストＢ１を記憶部１３０に保存する（ステップＳ１２０）。
【００９８】
以上の処理により暗号リストＢ１の取得が完了すると、次に、制御部１１０は、図１１のフローに戻り、ステップＳ２００の暗号データ生成処理を開始する。暗号データ生成部１１２は、ステップＳ１００で取得した暗号リストＢ１を自己の保有する主暗号鍵で暗号化することで暗号リストＢ２（「暗号リストＢ２ｒ」「暗号リストＢ２ｓ」「暗号リストＢ２ｔ」）を生成する（ステップＳ２００）。
【００９９】
暗号リストＢ２の生成が完了すると、制御部１１０は、次に、ステップＳ３００のハッシュデータ生成処理を開始する。ハッシュデータ生成部１１３は、ステップＳ２００で取得した暗号リストＢ２を他のデータ処理装置１００と共通のハッシュ関数を使用してハッシュ化することでハッシュリストＢ３（「ハッシュリストＢ３ｒ」「ハッシュリストＢ３ｓ」「ハッシュリストＢ３ｔ」）を生成する（ステップＳ３００）。
【０１００】
以上の処理によりハッシュリストＢ３の生成が完了すると、制御部１１０は、次に、ステップＳ４００（図１１）の「ハッシュデータ取得処理」を開始する。ステップＳ４００の「ハッシュデータ取得処理」は、図１３の「ハッシュデータ取得処理」に対応している。以下、図１３のフローチャートを参照して「ハッシュデータ取得処理」について説明する。
【０１０１】
ハッシュデータ取得部１１４は、生成したハッシュリストＢ３を、通信部１２０を介して、データ記憶装置３００に送信する（ステップＳ４１１）。データ記憶装置３００はデータを受信して所定のフォルダに格納する。
【０１０２】
ハッシュデータ取得部１１４は、他の２つの機関のハッシュリストＢ３が格納されているか一定期間ごとにデータ記憶装置３００をモニタする（ステップＳ４１２）。他の機関のハッシュリストＢ３が格納されていたら、ステップＳ４１３に進む（ステップＳ４１２：Ｙｅｓ）。
【０１０３】
ハッシュデータ取得部１１４は、他の２つの機関のハッシュリストＢ３をデータ記憶装置３００から取得する。そして、ハッシュデータ取得部１１４は取得したハッシュリストＢ３を記憶部１３０に保存する（ステップＳ４１３）。
【０１０４】
以上の処理によりハッシュリストＢ３の取得が完了すると、次に、制御部１１０は、図１１のフローに戻り、ステップＳ５００の判定処理を開始する。判定処理は判定部１１５で実行される。判定部１１５はステップＳ３００で生成したハッシュリストＢ３と、ステップＳ４００で取得した他の２つの機関のハッシュリストＢ３とデータブロックごとに比較し、内容が共通するか否かをデータブロックごとに判定する。判定部１１５は、３つのハッシュリストＢ３でデータブロック内容が共通したときに「内容が共通する」と判定してもよいし、自己のハッシュリストＢ３と他機関のハッシュリストＢ３のいずれかでデータブロック内容が共通したときに「内容が共通する」と判定してもよい。そして、判定部１１５は、その判定結果に基づいて、他機関のハッシュリストＢ３と内容の共通するデータブロックを特定する。３つのハッシュリストＢ３で内容が共通するデータブロックを特定してもよいし、自己のハッシュリストＢ３と他機関のハッシュリストＢ３のいずれかと内容が共通するデータブロックを特定してもよい。判定部１１５はインターフェース部１５０を通じて処理結果を外部の装置へ出力する（ステップＳ５００）。各機関は特定した薬の実験データを相手機関に送信する。
【０１０５】
本実施の形態によれば、データ記憶装置３００を介してデータを送受信することで３つの機関での情報共有が可能になる。
【０１０６】
またデータ記憶装置３００に保存されるデータは暗号化されたデータ（暗号リストＢ４やハッシュリストＢ３）であるので、機関Ｒ、Ｓ、Ｔ以外の機関がそのデータを取得したとしても、そこから有意な情報を得ることはできない。特に、暗号リストＢ４は副暗号鍵で暗号化されているので、他の２つの機関にとっても有意な情報ではない。そのため、各機関は安心してこれらのデータをデータ記憶装置３００に保存しておくことができる。
【０１０７】
なお、情報共有システム１は４台以上のデータ処理装置１００を有していてもよい。４台以上のデータ処理装置１００がデータ記憶装置３００にアクセスできるように構成し、実施の形態２と同様の処理を実行することで、４つ以上の機関での情報共有が可能になる。
【０１０８】
また、データ処理装置１００は、データ記憶装置３００を介さずに、例えばインターネットや専用回線等を使用して、複数のデータ処理装置１００間で直接データを送受信してもよい。
【０１０９】
実施の形態１および２では、１データブロックごとに副暗号鍵の値を変更したが、複数のデータブロックごとに副暗号鍵を変更してもよい（例えば、８つのデータブロックを１つのまとまりとして、８データブロックごとに副暗号鍵の値を変更する）。複数のデータブロックごとに副暗号鍵を変更することで、用意すべき副暗号鍵の数を減らすことができる。
【０１１０】
データブロックに含まれる情報としては、薬番号のほかに、暗号鍵、実験データ、文書データ、バイナリデータ等であってもよい。なお、１つのデータブロックには複数の要素（すなわち、複数の有意情報）が含まれていてもよい（例えば、複数の暗号鍵が含まれるデータを１つのデータブロックとしてもよい）。また、データブロックは全て同じデータ長である必要はない。データブロックごとにデータ長を変えてもよい。
【０１１１】
実施の形態１および２では、複数のデータブロックで構成されるリストを対象に本方法を適用したが、本方法はリスト全体を対象に適用してもよい。この場合、データ処理装置１００は、リスト全体の内容が他機関のリストと共通するか否かを判断してもよい。
【０１１２】
この方法の利用形態としては、例えば、通信途中でのデータの改竄の検証などが考えられる。例えば、機関Ｒが機関Ｓにデータ（文書データやバイナリデータ）を送信したとする。このとき、機関Ｒが送信したデータをリストＲ、機関Ｓが受信したデータをリストＳとして、実施の形態１と同様に、それぞれハッシュリストＢ３を生成する。そして、それら２つのハッシュリストが一致するか否かを照らし合わせることで、送信途中でデータの改竄が行われていないか検証する。
【０１１３】
データ処理装置１００は、共通するデータブロックを特定した後、そのデータブロックに関する詳細な情報を他のデータ処理装置１００に自動的に送信してもよい。例えば、図１４（ａ）と図１４（ｂ）に示すように、あらかじめ薬番号リスト（リストＲ、リストＳ）の各データブロック（薬番号）と各薬に関する実験データとを関連付けて記憶部１３０に記憶しておく。そして、データ処理装置１００は判定部１１５で共通するデータブロックを特定したら、特定したデータブロックに関連付けられた実験データを記憶部１３０から取得し、他のデータ処理装置１００に通信部１２０を介してこの実験データを送信する。
【０１１４】
実施の形態１および２の方法を複数回実行することで、さらに詳細に共通する情報を特定してもよい。以下、実施の形態１の薬番号リスト（リストＲとＳ）の例を使用して、具体的に説明する。
【０１１５】
最初に、機関ＲとＳは、図１５（ａ）と図１５（ｂ）に示すように、薬番号リスト（リストＲ、リストＳ）および実験動物リスト（詳細リストＲａ、Ｒｂ、・・・、詳細リストＳａ、Ｓｂ、・・・）を用意する。実験動物リストは、薬番号リストの各データブロックに関する詳細を記載したリストであって、具体的には、薬番号リストに記載されている各薬を使用して動物実験を行ったときの実験動物の種類（動物実験番号）を羅列したリストである。実験動物リストは、それぞれリストＲおよびリストＳの各データブロックに関連付けられている。なお、図１５に示した実験動物番号は、薬番号と同様に、機関ＲとＳの事前の取り決めに基づいて付したものである。
【０１１６】
次に、機関ＲとＳは、実施の形態１と同様に、リストＲとＳに対し本方法を実行することによって、薬Ａの実験データを相手機関が持っていると特定する。その後、機関ＲとＳは、薬Ａに関する実験動物リスト（詳細リストＲａ、詳細リストＳａ）に対しさらにもう一回本方法を実行することによって、共通する実験動物の種類を特定する。
【０１１７】
このように、段階的に処理を行うことによって、共有すべき情報を選択するための判断指標を得ることができる（例えば、相手機関がマウスのような小動物でしか動物実験を行っていない場合は、初期段階の簡単な実験データの共有にとどめ、相手機関が人間に近い霊長類で動物実験を行っている場合は、全ての実験データを共有する）。また、詳細に共通する情報を特定することによって、相手機関の例えば薬Ａに関する情報の信憑性を確認することができる。さらに、段階的に概要から詳細へ共通情報を特定することによって、始めから詳細データ全体で共通情報を特定することと比べ処理時間を短縮できる。
【０１１８】
なお、詳細リストＲやＳの内容は実験動物の種類に限られない。各薬の成分の情報であってもよいし、具体的な実験データの値であってもよい。
【０１１９】
可換性暗号Ｅとしては、例えば、ＤＨ（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ）暗号、エルガマル（ＥｌＧａｍａｌ）暗号、楕円曲線暗号などを使用してもよい。
【０１２０】
ハッシュ関数Ｈとしては、例えば、ＭＤ２、ＭＤ４、ＭＤ５、ＳＨＡ、ＳＨＡ−３などを使用してもよい。
【０１２１】
リストＲやリストＳ等の内容としては、薬番号などのように値域が限定されたデータに限られない。暗号鍵のように広い値域を持つデータであってもよい。
【０１２２】
本システムの適用は研究機関の間の情報共有に限られない。会社間、部署間等、さまざまな組織間の情報共有に適用可能である。また、個人間の情報共有にも適用可能である。
【０１２３】
データ処理装置１００は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによってデータ処理装置１００を構成してもよい。また、インターネット等のネットワーク上のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、ＯＳとアプリケーションソフトの共同より実現してもよい。この場合には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【０１２４】
上記のプログラムを記録する記録媒体としては、ＵＳＢメモリ、フレキシブルディスク、ＣＤ、ＤＶＤ、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ、ＭＯ、ＳＤカード、ＭＳ（メモリースティック）、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気テープ等のコンピュータ読取可能な記録媒体を使用することができる。また、ＨＤＤ（ハードディスク）やＳＳＤ（ソリッドステートドライブ）等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
【符号の説明】
【０１２５】
１              情報共有システム
１００          データ処理装置
１１０          制御部
１１１          暗号データ取得部
１１２          暗号データ生成部
１１３          ハッシュデータ生成部
１１４          ハッシュデータ取得部
１１５          判定部
１２０          通信部
１３０          記憶部
１４０          操作部
１５０          インターフェース部
２００          通信線
３００          データ記憶装置
【図１】
2012034250.tif 000003
【図２】
2012034250.tif 000004
【図３】
2012034250.tif 000005
【図４】
2012034250.tif 000006
【図５】
2012034250.tif 000007
【図６】
2012034250.tif 000008
【図７】
2012034250.tif 000009
【図８】
2012034250.tif 000010
【図９】
2012034250.tif 000011
【図１０】
2012034250.tif 000012
【図１１】
2012034250.tif 000013
【図１２】
2012034250.tif 000014
【図１３】
2012034250.tif 000015
【図１４】
2012034250.tif 000016
【図１５】
2012034250.tif 000017
【図１６】
2012034250.tif 000018
【図１７】
2012034250.tif 000019
【図１８】
2012034250.tif 000020
【図１９】
2012034250.tif 000021