(57)【特許請求の範囲】
【請求項１】
複数のコンピュータ（コンピュータＡ，コンピュータＢ）の両方が仮想実行基盤にアクセス可能であって、この仮想実行基盤を利用することによって、複数のコンピュータ（コンピュータＡ，コンピュータＢ）の各々が独自に所有している複数のデータの両方から処理された結合データを、外部にあるストレージにおいて保管する方法であって、
コンピュータＡが、コンピュータＡにおいて独自に所有しているデータＡを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
コンピュータＢが、コンピュータＢにおいて独自に所有しているデータＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、コンピュータＡ若しくはコンピュータＢによって、または、第三者のコンピュータによって、計算モジュールを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、コンピュータＡまたはコンピュータＢに対して、または、第三者のコンピュータに対して、データＡとデータＢから計算モジュールによってデータＡＢを計算することを強制するステップと、
コンピュータＡが、コンピュータＡによってのみ制御可能な暗号化モジュールＡを、コンピュータＡの制御下にあるメモリ空間にアップロードするステップと、
コンピュータＢが、コンピュータＢによってのみ制御可能な暗号化モジュールＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、コンピュータＢに対して、データＡＢを暗号化モジュールＢによって暗号化することを強制するステップと、
コンピュータＡが、暗号化モジュールＢによって暗号化されたデータＡＢをさらに、暗号化モジュールＡによって二重に暗号化するステップと、
コンピュータＡまたはコンピュータＢが、二重に暗号化されたデータを外部にあるストレージにアップロードするステップと、
を有する、
方法。
【請求項２】
コンピュータＡが、コンピュータＡによってのみ制御可能な復号化モジュールＡを、コンピュータＡの制御下にあるメモリ空間にアップロードするステップと、
コンピュータＢが、コンピュータＢによってのみ制御可能な復号化モジュールＢを、コンピュータＢの制御下にあるメモリ空間にアップロードするステップと、
コンピュータＡまたはコンピュータＢが、二重に暗号化されたデータを外部にあるストレージからダウンロードするステップと、
を有する
請求項１に記載の方法。
【請求項３】
コンピュータＡが、コンピュータＡによってのみ制御可能な代理復号化モジュールＡを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
代理復号化モジュールＡによって、処理が強制されているデータを復号化する、
請求項２に記載の方法。
【請求項４】
暗号化モジュールＡにおいて暗号のために用いられた暗号のための鍵が、代理復号化モジュールＡへ暗号化されて送信される、
請求項３に記載の方法。
【請求項５】
仮想実行基盤による制御下において、データＡがアップロードされている単位空間へはコンピュータＢがアクセスすることができないように設定するステップと、
仮想実行基盤による制御下において、データＢがアップロードされている単位空間へはコンピュータＡがアクセスすることができないように設定するステップと、
を有する、
請求項１に記載の方法。
【請求項６】
メモリ空間を有し、メモリ空間を制御する仮想実行基盤であって、
複数のコンピュータ（コンピュータＡ、コンピュータＢ）からのデータやモジュールをアップロードまたはダウンロードすることができる複数の単位空間を提供し、
複数の単位空間の各々についてアクセス可能な主体を設定することができ、
ある単位空間にアップロードされている状態にあるデータやモジュールから、別の単位空間にアップロードされている状態にあるデータやモジュールへの通信の結線と向きを制御することができ、
複数のコンピュータ（コンピュータＡ，コンピュータＢ）の両方がこの仮想実行基盤にアクセス可能であって、この仮想実行基盤を利用することによって、複数のコンピュータ（コンピュータＡ，コンピュータＢ）の各々が独自に所有している複数のデータの両方から処理された結合データを、外部にあるストレージにおいて保管することができ、
コンピュータＡが、コンピュータＡにおいて独自に所有しているデータＡを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
コンピュータＢが、コンピュータＢにおいて独自に所有しているデータＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＡ若しくはコンピュータＢによって、または、第三者のコンピュータによって、計算モジュールを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＡまたはコンピュータＢに対して、または、第三者のコンピュータに対して、データＡとデータＢから計算モジュールによってデータＡＢを計算することを強制することができ、
コンピュータＡが、コンピュータＡによってのみ制御可能な暗号化モジュールＡを、コンピュータＡの制御下にあるメモリ空間にアップロードすることができ、
コンピュータＢが、コンピュータＢによってのみ制御可能な暗号化モジュールＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＢに対して、データＡＢを暗号化モジュールＢによって暗号化することを強制することができ、
コンピュータＡが、暗号化モジュールＢによって暗号化されたデータＡＢをさらに、暗号化モジュールＡによって二重に暗号化することができ、
コンピュータＡまたはコンピュータＢが、二重に暗号化されたデータを外部にあるストレージにアップロードすることができる、
仮想実行基盤。
【請求項７】
さらに、
複数のコンピュータ（コンピュータＡ、コンピュータＢ）の制御下にある単位空間に対しても、仮想実行基盤が制御するメモリ空間を含め、ある単位空間にアップロードされている状態にあるデータやモジュールから、別の単位空間にアップロードされている状態にあるデータやモジュールへの通信の結線と向きを制御することができる、
請求項６に記載の仮想実行基盤。
【請求項８】
仮想実行基盤または仮想実行基盤により制御されるメモリ空間にロードされるコンピュータ・プログラムであって、
コンピュータに実行させるコードとして、
複数のコンピュータ（コンピュータＡ、コンピュータＢ）からのデータやモジュールをアップロードまたはダウンロードすることができる複数の単位空間を提供するコードと、
複数の単位空間の各々についてアクセス可能な主体を設定するコードと、
ある単位空間にアップロードされている状態にあるデータやモジュールから、別の単位空間にアップロードされている状態にあるデータやモジュールへの通信の結線と向きを制御することができるコードと、
を有していて、
複数のコンピュータ（コンピュータＡ，コンピュータＢ）の両方がこの仮想実行基盤にアクセス可能であって、この仮想実行基盤を利用することによって、複数のコンピュータ（コンピュータＡ，コンピュータＢ）の各々が独自に所有している複数のデータの両方から処理された結合データを、外部にあるストレージにおいて保管することができ、
コンピュータＡが、コンピュータＡにおいて独自に所有しているデータＡを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
コンピュータＢが、コンピュータＢにおいて独自に所有しているデータＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＡ若しくはコンピュータＢによって、または、第三者のコンピュータによって、計算モジュールを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＡまたはコンピュータＢに対して、または、第三者のコンピュータに対して、データＡとデータＢから計算モジュールによってデータＡＢを計算することを強制することができ、
コンピュータＡが、コンピュータＡによってのみ制御可能な暗号化モジュールＡを、コンピュータＡの制御下にあるメモリ空間にアップロードすることができ、
コンピュータＢが、コンピュータＢによってのみ制御可能な暗号化モジュールＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードすることができ、
この仮想実行基盤の制御下において、コンピュータＢに対して、データＡＢを暗号化モジュールＢによって暗号化することを強制することができ、
コンピュータＡが、暗号化モジュールＢによって暗号化されたデータＡＢをさらに、暗号化モジュールＡによって二重に暗号化することができ、
コンピュータＡまたはコンピュータＢが、二重に暗号化されたデータを外部にあるストレージにアップロードすることができる、
コンピュータ・プログラム。
【請求項９】
複数のコンピュータ（コンピュータＡ，コンピュータＢ）の両方が仮想実行基盤にアクセス可能であって、この仮想実行基盤を利用することによって、複数のコンピュータ（コンピュータＡ，コンピュータＢ）の各々が独自に所有している複数のデータの両方から処理された結合データを、第三者のコンピュータがアクセスすることができるようにする方法であって、
コンピュータＡが、コンピュータＡにおいて独自に所有しているデータＡを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
コンピュータＢが、コンピュータＢにおいて独自に所有しているデータＢを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、コンピュータＡ若しくはコンピュータＢによって、または、第三者のコンピュータによって、計算モジュールを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、コンピュータＡまたはコンピュータＢに対して、または、第三者のコンピュータに対して、データＡとデータＢから計算モジュールによってデータＡＢを計算することを強制するステップと、
仮想実行基盤による制御下において、データＡＢがアップロードされている単位空間へは第三者のコンピュータのみがアクセスすることができるように設定するステップと、
を有する、
方法。
【請求項１０】
第三者のコンピュータによって、計算モジュールを、仮想実行基盤による制御下にあるメモリ空間へとアップロードするステップと、
仮想実行基盤の制御下において、第三者のコンピュータに対して、データＡとデータＢから計算モジュールによってデータＡＢを計算することを強制するステップと、
を有する、
請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理の方法に関し、より詳しくは、情報漏洩のリスクを極小化しながらデータを外部で保管できるようにデータを処理する方法に関する。
【背景技術】
【０００２】
各金融機関が保持するデータや情報を、複数の金融機関にわたって取りまとめて、分析のための計算を行うというニーズがある。例えば、各金融機関における財務諸表が取りまとめて監査されたり、比較されたり、全体としての統計として算出されたりする。各金融機関における運営の内容を透明化して金融リスクを未然に防ぐ等、公の秩序を維持するという意味合いからも、このような分析はさらに推し進められていくことが期待されている。
【０００３】
信頼できる機関によって分析のための計算が行われるのであれば、各金融機関は自分が保持するデータを限定的に公開してもよいと考えるであろう。信頼できる機関としては、日本の金融庁や米国のＦＲＢなどが典型であろうが、こういった公的な機関の確立、運営、維持には多大なコストを要する。また、そもそも信頼できる機関といっても、情報漏洩のリスクが完全に払拭できるわけではない。
【０００４】
また、各金融機関が独自に保持するデータを機密に保持しておきたい事情がある場合に、公開してもらうことに承諾してもらおうとすると、情報漏洩が生じないようにする安全性について十分な配慮が必要となってくる。特に、ポジションデータとか、損失算出モデルといった金融データは、各金融機関にとっては運営上のノウハウとして、他の金融機関に対して手の内を明かしたくないようなデータであることが多い。
【０００５】
もっとも、各金融機関は、自分で独自に保持している状態の「元のデータ」さえ機密に保持されていればよい、または、その「元のデータ」の出所さえ分からないようになっていればよい、と考えることも少なくない。むしろ記憶しておくコストを軽減するために、自分で保持しないで済むのであれば、外部で保管しておきたい、と考えることも少なくない。
【０００６】
例えば、統計として算出される結果が、たとえ２つの金融機関が保持するデータの単純平均にすぎない形での取りまとめの内容であったとしても、データが結合された状態になってさえいればよいという場合もある。他の（相手の）金融機関の側でも機密を保持したいと考えているのであれば、積極的に情報漏洩させようとはしないであろうことを期待できるからである。
【０００７】
特許文献１は、電子情報の保存場所を一極に集中することなく複数に分割保存させるようにして、作成した電子情報を安全に保存し、その後に内部記憶装置に存在する元の対象電子情報を消去するが、分割保存された分割情報は、全て集めて統合することによって元の対象電子情報を復元するという技術を開示するものである。
【０００８】
悪意を持った者による情報の持ち出しを防ぎ、安全にデータを管理しておくという点では本発明の目的に共通する部分が見られる。しかし、データを複数に分割して保管することについて正しい処理が行なわれることを前提としている。さらには、保存されたデータのサイズは、復元のための冗長度までを含め、記憶装置分に増えてしまう。データの一極管理を避けて、漏洩されるかもしれない対象を分割されたデータのみに限定しようとしている思想であるが、全体の処理も動作主体についての自由度がなく、中央集権的な仕組みに頼っている。
【０００９】
非特許文献１は、仮想計算機（ＶＭｓ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ）を利用して、通信の流れを強制する（ｅｎｆｏｒｃｅ）ことができること、または、強制的アクセス制御（ＭＡＣ：Ｍａｎｄａｔｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）が、実現可能な一般的技術水準であることについて説明している。本発明を実施するにあたって基盤として利用される技術である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−３０１８４９号公報
【非特許文献】
【００１１】
【非特許文献１】Ｓｈａｍｏｎ：Ａ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｍａｎｄａｔｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ，Ｊｏｎａｔｈａｎ  Ｍ．ＭｃＣｕｎｅ，  Ｔｒｅｎｔ  Ｊａｅｇｅｒ，  Ｓｔｅｆａｎ  Ｂｅｒｇｅｒ  Ｒａｍｏｎ  Ｃａｃｅｒｅｓ  Ｒｅｉｎｅｒ  Ｓａｉｌｅｒ
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、第三者機関の計算基盤の上で、情報漏洩のリスクを極小化しながらデータを外部で保管できるようにデータを処理することにある。
【課題を解決するための手段】
【００１３】
仮想計算機（ＶＭｓ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ）を利用した基盤（仮想実行基盤）を、信頼できる機関の代替として利用する。結合されたデータを暗号化することで、情報漏洩のリスクを低減し、安全性を増すことができる。仮想実行基盤が通信の結線と向きを制御することができるので、各金融機関が独自の暗号化を施すことができ、外部で保管するにあたってはさらに都合がよい。また、各金融機関が独自の復号化を施すことができれば、２つの金融機関の一方の側が勝手に、外部で保管されたデータを仮想実行基盤に取り込むことを防止することができる。また、情報漏洩リスクに応じて動作主体について自由度を与えることができる。
【発明の効果】
【００１４】
このようにデータが結合されて暗号化された状態になっていれば、第三者機関の計算基盤の上でデータ保護に対する高信頼を担保するために、通常は高価で小容量の記憶領域において揮発的なデータを独自に保持しておく必要がなくなる。一方で、通常は安価で大容量のストレージが提供されている外部のパブリッククラウドに永続的なデータを保管しておくことができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の方法が実行されるシステムの全体構成を示す図である。
【図２】図２は、本発明の方法が実行されるところの仮想実行基盤の制御下にあるメモリ空間の構成、および、複数のコンピュータ（コンピュータＡ、コンピュータＢ）の制御下にあるメモリ空間の構成を模式的に示す図である。
【図３】図３は、本発明の方法を実行するにあたって、データやモジュールをアップロードすることを模式的に示す図である。
【図４】図４は、本発明の方法を実行するにあたって、データＡおよびデータＢから結合データであるデータＡＢを計算することを模式的に示す図である。
【図５】図５は、本発明の方法を実行するにあたって、結合データであるデータＡＢを二重に暗号化することを模式的に示す図である。
【図６】図６は、本発明の方法を実行するにあたって、外部にあるストレージにおいて保管されているデータを復号化する方法を模式的に示す図である。
【図７】図７は、本発明の方法を実行するにあたって、外部にあるモジュールから内部にある代理モジュールへと、暗号化された情報を持ち込む具体的な手順を示す図である。
【図８】図８は、メモリ空間１００においてアップロードまたはダウンロードされるデータまたはモジュールと、それらの動作主体との関係を一覧にした図である。
【発明を実施するための形態】
【００１６】
図１は、本発明の方法が実行されるシステムの全体構成を示す図である。本発明の方法は、仮想計算機（ＶＭｓ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ）を利用した基盤（仮想実行基盤１０）を利用して実行される。仮想計算機（ＶＭｓ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ）については、非特許文献１に詳しい。
【００１７】
仮想実行基盤１０は、コンピュータの一種であり、メモリ空間１００を仮想実行基盤１０の制御下に置いている、第三者機関の計算基盤である。コンピュータＡ２０とコンピュータＢ３０という複数のコンピュータが、それぞれ独自に、このメモリ空間１００へデータやモジュールをアップロードし、またはこのメモリ空間１００からデータやモジュール（コンピュータに実行させるためのプログラムまたはプログラム・コード）をダウンロードする。また、複数のコンピュータはそれぞれ独自に、または互いに協力して、このメモリ空間１００からデータを外部にあるストレージ４００へアップロードし、またはこのメモリ空間１００へとデータを外部にあるストレージ４００からダウンロードする。
【００１８】
例えば、コンピュータＡ２０が一つの金融機関が管理するコンピュータに相当しており、コンピュータＢ３０が一つの別の金融機関が管理するコンピュータに相当している、という状況を想定することができる。また、メモリ空間１００およびそれを制御している仮想実行基盤１０は、信頼できる機関の代替になり得るコンピュータに相当している、という状況を想定することができる。
【００１９】
第三者（監査法人など）のコンピュータ５００も、このメモリ空間１００へデータやモジュールをアップロードし、またはこのメモリ空間１００からデータやモジュールをダウンロードすることができるコンピュータに相当している、という状況を想定することができる。第三者（監査法人など）５００のコンピュータからこのメモリ空間１００へのアクセス許容度は制限されるが、監査のためにたとえ一部であってもアクセスが許容されているという点では、やはり信頼できる機関の代替になり得るコンピュータであり、第三者機関の計算基盤である。
【００２０】
外部にあるストレージ４００という用語のうちの「外部」とは、メモリ空間１００の外部に外出しすることを表現するためのものにすぎず、本発明においてはそれ以上に技術的に特別な意義は含んでおらず、「外部」という用語の意義は広く解釈されるべきである。メモリ空間１００をファイアウォールの「内部」に位置させておき、（後述するところの）二重暗号化の後にファイアウォールの外部へと外出ししておく場合には、情報漏洩のリスクを極小化しながらパブリッククラウドをより効率的に活用することができる。
【００２１】
図２は、本発明の方法が実行されるところの仮想実行基盤の制御下にあるメモリ空間の構成、および、複数のコンピュータ（コンピュータＡ、コンピュータＢ）の制御下にあるメモリ空間の構成を模式的に示す図である。メモリ空間１００の（境界線の）内部へは、コンピュータＡ２０およびコンピュータＢ３０からデータやモジュールをアップロードすることができる。この図２の例では、点線で囲む四角によって１２個の単位空間が示されている。１２個の単位空間は、１１、１２、１３、２１、２２、２３、３１、３２、３３、４１、４２、４３、という行列としての位置番号をもって、模式的に示されている。
【００２２】
さらに、これら１２個の単位空間を貫くようにして一点鎖線が描かれている。これらの一点鎖線は、通信の「結線」と「向き」を制御することができることを潜在的に示している仮想的な線であり、アップロードされている状態にあるデータやモジュールとの間での通信を潜在的に描いている。以降の図面上の表現の約束として、実際の通信の「結線」があると、一点鎖線は実線となり、通信の「向き」には矢印を示すものとする。
【００２３】
本明細書においては、仮想実行基盤１０の制御によって通信の結線と向きを制御することを「強制」と呼ぶことにする。別の言い方をすると、「強制」された処理がなされるのであれば、それは限られた通信の結線と向きしか認められないということであり、コンピュータＡ２０やコンピュータＢ３０がお互いに合意や承諾をしていない動作はできないことになるので、お互いに仮想実行基盤１０を信頼できる機関の代替として認めることに納得するであろうと期待しているものである。メモリ空間１００の（境界線の）「内部」では、誰が動作主体になろうとも、または、誰が動作のきっかけになって処理が始まろうとも、仮想実行基盤１０が処理を「強制」するのが原則である。通信の「向き」は「強制」される重要な制御要素の一つである。
【００２４】
実際には、仮想実行基盤１０は、ある物理的な計算機（ホスト計算機）上に構築される。ハードウエア若しくはソフトウエアまたはそれらの組合せとして実現される。仮想実行基盤１０は、仮想計算機（ＶＭｓ）の通信を次のように制御する。ホスト計算機外部と仮想計算機の間の通信は、外部からのホスト計算機への受信データを仮想実行基盤が仮想計算機に伝送することにより、また仮想計算機から外部へ送信データを仮想実行基盤が取得し、それをホスト計算機の外部へ伝送することによって、実現する。
【００２５】
また、仮想計算機間のデータ送受信は、仮想実行基盤１０がホスト計算機上のメモリ空間を介して伝送する。いずれの場合も仮想実行基盤１０が通信の可否、及びその向きを一定の方針に従って「強制」することができる。
【００２６】
なお、図２における一点鎖線は一例を模式的に示したにすぎず、一点鎖線が描かれていない複数の任意の単位空間の間においても、通信の結線と向きを制御することができるように構成することも可能である。例えば、図中では、単位空間１１と、単位空間２２との間とを貫くように、斜めの方向にはこれらの間にのみ、一点鎖線を描いて潜在的に示しているが、これらの単位空間の間で直接通信して結線と向きが制御できるように構成することも可能である。
【００２７】
また、これらの複数の単位空間の各々に対しては、データやモジュールのアップロードをすることができ、それと同時に、またはアクセス制限が必要となった時点で後発的に、アクセス可能な動作主体を個別に設定することができる。アクセス可能な動作主体については、コンピュータＡ２０、コンピュータＢ３０、第三者（監査法人など）のコンピュータ５００である。アクセス可能な動作主体は、仮想実行基盤１０が総務的に設定してもよいし、コンピュータＡ２０とコンピュータＢ３０とが合意の上で互いに協力して、または第三者（監査法人）などに委託して、設定してもよい。
【００２８】
また、メモリ空間１００の（境界線の）内部から外部へまたがっても一点鎖線が延びている。図１との関係では、これらまたがって延びている箇所を通じてメモリ空間１００の外部からデータやモジュールがアップロードされて（入って）きて、メモリ空間１００の内部からデータやモジュールがダウンロードされて（出て）いく。
【００２９】
コンピュータＡの制御下にあるメモリ空間２００には、２個の単位空間が、Ａ１、Ａ２という位置番号をもって、模式的に示されている。コンピュータＢの制御下にあるメモリ空間３００には、２個の単位空間が、Ｂ１、Ｂ２という位置番号をもって、模式的に示されている。これらの単位空間と、メモリ空間１００の単位空間の各々との間でも通信することがあり得る。
【００３０】
メモリ空間１００の単位空間の各々と、コンピュータＡの制御下にあるメモリ空間２００の単位空間の各々との間、コンピュータＢの制御下にあるメモリ空間３００の単位空間の各々との間における通信の結線と向きについても、仮想実行基盤１０によって「強制」することができる。ただし、コンピュータＡの制御下にあるメモリ空間２００と、コンピュータＢの制御下にあるメモリ空間３００とについては、仮想実行基盤１０が（少なくとも）それらのメモリ空間にアップロードされている（状態にある）データやモジュールの内容までは見ることができないようにしておく方が、情報漏洩のリスクを低減するという点では、好ましい。
【００３１】
ちなみに、コンピュータＡの制御下にあるメモリ空間２００と、外部にあるストレージのメモリ空間４００との間における通信の結線と向きについても、仮想実行基盤１０によって「強制」することができるようにすることもできるであろう。コンピュータＢの制御下にあるメモリ空間３００と、外部にあるストレージのメモリ空間４００との間における通信の結線と向きについても、仮想実行基盤１０によって「強制」することができるようにすることもできるであろう。しかし、情報漏洩のリスクを低減するという点では、仮想実行基盤１０が制御できないようにしておく方が好ましいであろう。
【００３２】
基本的に、仮想実行基盤１０は、ダウンロードやアップロードをする動作主体になるというよりも、メモリ空間１００を制御しているだけであって、コンピュータＡ２０やコンピュータＢ３０が、ダウンロードやアップロードができる空間（場）を提供しているにすぎない、という設定が好ましいことになる。
【００３３】
図３は、本発明の方法を実行するにあたって、データやモジュールをアップロードすることを模式的に示す図である。ここでは、データＡはコンピュータＡ２０において独自に所有しているデータであって、コンピュータＡ２０がデータＡを（単位空間１１に）アップロードする。また、データＢはコンピュータＢ３０において独自に所有しているデータであって、コンピュータＢ３０がデータＢを（単位空間４１に）アップロードする。
【００３４】
また、このアップロードと同時に、またはアクセス制限が必要となった時点で後発的に、単位空間ごとにアクセス可能な動作主体を個別に設定することができるので、データＡはコンピュータＢ３０からはアクセスできないように、データＢはコンピュータＡ２０からはアクセスできないように設定することもできる。コンピュータＡとコンピュータＢとが、それぞれ自分で保持するデータを機密に保持しておきたい場合に有効な設定となる。
【００３５】
このように、情報漏洩のリスクを気にする関係者（ここでは、コンピュータＡとコンピュータＢ）に対して、そのリスクを極小化する様々な設定のバリエーションをフレキシブルに設けることができる。
【００３６】
代理復号化モジュールＡ（単位空間３３）、暗号化モジュールＡ（単位空間Ａ１）および復号化モジュールＡ（単位空間Ａ２）はコンピュータＡが独自に設定するモジュールであって、コンピュータＡがそれらの両方またはいずれか一方を（処理に必要となる時点までに）アップロードする。暗号化モジュールＡ（単位空間３３）はコンピュータＡの公開鍵を、復号化モジュールＡ（単位空間Ａ２）はコンピュータＡの秘密鍵を保持する。
【００３７】
また、暗号化モジュールＢ（単位空間１３）および復号化モジュールＢ（単位空間Ｂ１）はコンピュータＢが独自に設定するモジュールであって、コンピュータＢがそれらの両方またはいずれか一方を（処理に必要となる時点までに）アップロードする。暗号化モジュールＢ（単位空間１３）および代理復号化モジュールＡ（単位空間３３）のアップロードは、仮想実行基盤１０の制御下において、仮想実行基盤１０を経由して行っている。暗号化モジュールＢ（単位空間１３）及び代理復号化モジュールＡ（単位空間３３）はコンピュータBの公開鍵を、復号化モジュールＢ（単位空間Ｂ１）はコンピュータBの秘密鍵を保持する。
【００３８】
復号化モジュールＡ（単位空間Ａ２）は、メモリ空間１００にアップロードするべきではない。その理由は、仮想実行基盤１０が外部から攻撃された場合に、その復号化モジュールを解読されてしまうためである。同様に、復号化モジュールＢ（単位空間Ｂ１）も、メモリ空間１００にアップロードするべきではない。
【００３９】
また、暗号化モジュールＢをコンピュータＡ２０からはアクセスできないように設定することもできる。暗号化の方法さえ他人に知られたくない場合に有効な設定となる。
【００４０】
後述するが、メモリ空間の内部から外部に向かって、暗号化モジュールＢの出力は、コンピュータＡにしか向かうことができないように「強制」される。また、コンピュータＢからメモリ空間内部に向かっての入力は、代理復号化モジュールＡにしか入ってこないように「強制」される。
【００４１】
計算モジュール（単位空間２１）は、コンピュータＡ２０およびコンピュータＢ３０の合意の下にコンピュータＡ２０とコンピュータＢ２０とが協力してアップロードしてもよいし、何れか一方によってアップロードしてもよい。信頼できる機関（例えば、第三者（監査法人）のコンピュータ５００）が調停者または仲裁者という中立的な立場として、またはコンピュータＡ２０およびコンピュータＢ３０から委託されて、アップロードしてもよい。
【００４２】
図４は、本発明の方法を実行するにあたって、データＡおよびデータＢから結合データであるデータＡＢを計算することを模式的に示す図である。計算モジュールは、データＡとデータＢとを入力として、結合データとしてのデータＡＢを出力する。このように、矢印の起点を入力として、矢印の終点が出力先となるように、仮想実行基盤１０によってデータ処理が「強制」されている。このデータ処理は、誰が動作主体になろうとも、または、誰が動作のきっかけになって処理が始まることになろうとも、「強制」されている
【００４３】
データＡＢの計算にあたって、計算モジュールが第三者（監査法人）のコンピュータ５００からアップロードされたものであれば、データＡＢを第三者（監査法人）のコンピュータ５００に対してだけアクセスできるようにしてもよい。監査してもらうというだけを目的にする場合に有効な設定である。
【００４４】
データＡＢの計算が、データＡとデータＢとの単純平均にすぎない形での算出であったとしても、データが結合された状態になってさえいれば、データＡであればコンピュータＢに対して、データＢであればコンピュータＡに対して知られてしまっても問題ない、という場合も考えられる。このような場合には、互いにだけアクセスできるようにしてもよい。相手が積極的に情報漏洩させようとはしないであろうことを期待できる場合に有効な設定である。
【００４５】
データＡＢがコンピュータＡからもコンピュータＢからも、又は第三者からもアクセスできないように制御する場合もある。それは例えば、結合が十分でなく元のデータが結合されてもまだわかってしまう場合や、第三者に開示できるデータを生成する前段階の中間計算データ等が該当する。
【００４６】
図５は、本発明の方法を実行するにあたって、結合データであるデータＡＢを二重に暗号化することを模式的に示す図である。データＡＢは、まず暗号化モジュールＢによって暗号化され、次にそれに重ねて、暗号化モジュールＡによって暗号化される。暗号化の順番として仮想実行基盤１０によって「強制」されることになるが、かならずしもＢ→Ａの順序である必要はなく、メモリ空間１００の内部の暗号化モジュールＸ（Ｘ＝｛Ａ，Ｂ｝）からの通信は、外部の暗号化モジュールＹ（＝Ｘではない方）にしか向かうことがないように、仮想実行基盤１０によって「強制」されればよい。
【００４７】
このように二重に暗号化されたデータは、外部にあるストレージ４００にアップロードされる。コンピュータＡ若しくはコンピュータＢの何れか一方またはそれらの両方によって、外部にあるストレージ４００にアップロードされてもよい。このようにして、データが外部で保管される。データが結合された上にさらに暗号化された状態になっていれば、情報漏洩のリスクを気にせずに、パブリッククラウドのストレージを利用しやすくなる。パブリッククラウドのストレージは、通常は安価で大容量で提供されている。
【００４８】
図６は、本発明の方法を実行するにあたって、外部にあるストレージにおいて保管されているデータを復号化する方法を模式的に示す図である。外部にあるストレージ４００から保管されているデータがダウンロードされる。コンピュータＡ若しくはコンピュータＢの何れか一方またはそれらの両方によってダウンロードされてもよい。保管されているデータは、まず復号化モジュールＡによって復号化され、次にそれに重ねて、復号化モジュールＢによって復号化される。復号化の順番としては仮想実行基盤１０によって「強制」されることになる。
【００４９】
最終的に元のデータＡＢ（結合データ）に復元される前には、代理復号化モジュールＡが介在する。
【００５０】
図７は、本発明の方法を実行するにあたって、外部にあるモジュールから内部にある代理モジュールへと、暗号化された情報を持ち込む具体的な手順を示す図である。
【００５１】
外部からの入力は、代理復号化モジュールＡにしか入ってこないように仮想実行基盤１０によって「強制」されるが、かならずしもＢ→Ａの順序である必要はなく、メモリ空間１００の内部にある代理復号化モジュールＸ（Ｘ＝｛Ａ，Ｂ｝）に入っていく通信は、復号化を処理する“代理”として、外部にある復号化モジュールＹ（＝Ｘでない方）からのものしか入ってこないように、仮想実行基盤１０によって「強制」されていればよい。
【００５２】
ただし、代理復号化モジュールＡが復号化モジュールＡと同様の機能を果たすためには、暗号化モジュールＡにおいて暗号のために用いられた暗号のための鍵が、代理復号化モジュールＡへ正確に伝えられる必要がある。これは、仮想実行基盤１０の制御下にあるメモリ空間１００の外部から内部へと「必要な瞬間だけ持ち込まれる」ようにしておけば、仮想実行基盤１０が自分だけでは暗号と復号との両方を処理することができないという点において安全である。
【００５３】
データＡＢを取り込む際の具体的な手順（１）〜（８）は次の通りである。
（１）暗号化モジュールＢが、データｄを処理するものとする。
（２）暗号化モジュールＢが、代理復号化モジュールＡに空の封筒を要求する。空の封筒とは、封筒内に入れるデータを暗号化するための鍵Ｒを指す。
（３）代理復号化モジュールＡは、乱数発生によりＲを生成して、それをコンピュータＡの公開鍵ｐｋ＿Ａで暗号化することにより、封筒データ：Ｅ（ｐｋ＿Ａ，Ｒ）を生成する。（ここでＥ（ｋ，ｍ）はメッセージｍを鍵ｋを用いて暗号化することによって得られる暗号文の意）
（４）代理復号化モジュールＡは、封筒データを暗号化モジュールＢへ返す。
（５）暗号化モジュールＢからのデータ取得要求（封筒データが添付されている）が、暗号化モジュールＡへと通信が強制される。
（６）暗号化モジュールＡは、データＡＢの二重暗号化を解くためのＡの鍵（Ｋ＿Ａとする）を代理復号化モジュールＡへ暗号化した形式で送信したい。そのため、封筒データを、復号化モジュールＡが持つコンピュータＡの秘密鍵ｓｋ＿Ａで復号しＲを得る。そしてそのＲを用いてＫ＿Ａを暗号化することにより、Ｅ（Ｒ，Ｋ＿Ａ）を得る。
（７）Ｅ（Ｒ，Ｋ＿Ａ）は、復号化モジュールＢへ送られ、復号化モジュールＢは、データＡＢの二重暗号化を解くためのＢの鍵（Ｋ＿Ｂとする）を使って１回暗号を解く。（この段階では、データＡＢはまだＫ＿Ａで暗号化された状態のままである。）
（８）復号化モジュールＢは、１回暗号が解かれＫ＿Ａで暗号化された状態のデータＡＢとＥ（Ｒ，Ｋ＿Ａ）とを併せて仮想実行基盤へ送信する。その送信先は、仮想実行基盤によって代理復号化モジュールＡに強制される。Ｒは代理復号化モジュールＡが（３）において生成し保持している。従って、それを鍵として用いて、Ｅ（Ｒ，Ｋ＿Ａ）を復号（封筒を開封）すると、Ｋ＿Ａが復元できる。すなわち、（６）において外部の復号化モジュールＡが送信したかったところのＫ＿Ａは、今や無事に代理復号モジュールＡの手にあるので、それを使って最後の復号化を施し、データＡＢを得ることができる。
【００５４】
これら手順を通じて、復号化モジュールＡのみが封筒に鍵を詰めることができ、代理復号化モジュールＡのみが封筒から鍵を取り出すことができる。
【００５５】
本発明は、コンピュータによって実行される方法若しくはプロセスまたはこれらを実行するための装置という態様で実施することができる。コンピュータとしては、仮想実行基盤１０、コンピュータＡ２０、コンピュータＢ３０、第三者（監査法人）のコンピュータ５００、が動作を制御する主体として説明してきた。しかし、メモリ空間１００が仮想実行基盤１０の制御下にあって仮想実行基盤１０が主体的に「強制」を司っていること以外のことについては本発明では必須の要件ではなく、これらの主体の何れかに限定されなければ本発明の動作ができないというわけではない。
【００５６】
図８は、メモリ空間１００においてアップロードまたはダウンロードされるデータまたはモジュールと、それらの動作主体との関係を一覧にした図である。今までの説明のまとめにもなるが、この関係が説明しようとしていることは、仮想実行基盤１０による「強制」以外は動作主体の自由度があるということである。一方では、人間の行為そのものが動作の主体になる場合を全面的に許容しているものでもないので、各国の特許要件に応じて、特許請求の範囲における動作主体の記載が許容されるべきである。当業者であれば、本発明の範囲を逸脱せずに、これらの主体が単独で動作を制御するように、または、これらの主体が協力して動作を制御するように、様々な変更や応用を想到することが可能であろう。
【００５７】
なお、メモリ空間１００における仮想実行基盤１０の制御を、コンピュータに実行させるためのコードを備えたプログラムによって実現して、仮想実行基盤１０またはその制御下にあるメモリ空間１００として機能するコンポーネントの一部を担うプログラムとしてロードすることも可能である。または、メモリ空間１００またはその仮想実行基盤１０による制御について、（高速化を主たる目的として）ハードウエア化したワイヤードロジック（論理回路）として実現することも可能である。
【００５８】
メモリ空間１００の提供は、サービス・プロバイダとしての行為として、クラウド・サービスとして行うことができる。
【００５９】
外部にあるストレージ４００の提供は、保管のための記憶メディアをプロビジョニングするシステム（の一部）として捉えることができる。このプロビジョニングは、コンピュータＡ２０の記憶容量が所定の限界を超えたとき、または、コンピュータＢ３０の記憶容量が所定の限界を超えたときにおいて、自動的に行うようにすることもできる。
【符号の説明】
【００６０】
１０  仮想実行基盤
１００  メモリ空間（仮想実行基盤の制御下にある）
２０  コンピュータＡ（一つの金融機関が管理するコンピュータに相当）
３０  コンピュータＢ（一つの別の金融機関が管理するコンピュータに相当）
２００  メモリ空間（コンピュータＡの制御下にある）
３００  メモリ空間（コンピュータＢの制御下にある）
４００  外部にあるストレージ
５００  第三者（監査法人など）のコンピュータ
【図１】
0005567414.tif 000002
【図２】
0005567414.tif 000003
【図３】
0005567414.tif 000004
【図４】
0005567414.tif 000005
【図５】
0005567414.tif 000006
【図６】
0005567414.tif 000007
【図７】
0005567414.tif 000008
【図８】
0005567414.tif 000009