(57)【要約】【課題】秘密分散を必要とするユーザの数に拘わらず、秘密分散の際に用いる物理乱数を発生する物理乱数生成器の設置に伴うコストアップを抑制し、秘匿されるべき元データの安全な保管の実現を支援する。【解決手段】秘密分散保管システム５では、メインコントローラ１０は、病院端末Ｈ１から病院データＯＤを受信すると、乱数生成器２０により発生された物理乱数を用いて、病院データＯＤを分散処理してｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎを生成し、対応するｎ台のシェアホルダＳ１〜Ｓｎにそれぞれ保管する。メインコントローラ１０は、病院端末Ｈ１の復元指示に応じてｎ台のシェアホルダＳ１〜Ｓｎのそれぞれに保管されるｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎを取得する。メインコントローラ１０は、物理乱数を用いて、ｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎから病院データＯＤを復元して病院端末Ｈ１に送る。【選択図】図１
2020134841.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台のユーザ端末、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれ、および乱数生成器との間で通信可能に接続されるメインコントローラを有する秘密分散保管システムであって、
前記メインコントローラは、
前記ユーザ端末から送られる元データを受信すると、前記乱数生成器により発生された乱数を取得し、
前記乱数を用いて、前記元データを分散処理してｎ個の分散データを生成し、
前記ｎ個の分散データのそれぞれを、対応する前記ｎ台の保管装置に保管する、
秘密分散保管システム。
【請求項２】
前記メインコントローラは、
前記ユーザ端末からの復元指示に応じて前記ｎ台の保管装置のそれぞれに保管される前記ｎ個の分散データを取得し、前記ｎ個の分散データから前記元データを復元して前記ユーザ端末に送る、
請求項１に記載の秘密分散保管システム。
【請求項３】
前記ｎ台の保管装置のそれぞれに対応して設けられ、前記メインコントローラとの間で通信可能に接続されるｎ台のコントローラ、を更に有し、
前記メインコントローラは、
前記ｎ個の分散データの生成に関する論理分散情報を生成し、
前記ｎ個の分散データのそれぞれと前記論理分散情報とを対応付けて、対応する前記ｎ台のコントローラに送信し、
前記ｎ台のコントローラは、
自装置に対応する前記分散データと前記論理分散情報とを前記メインコントローラから受信し、前記論理分散情報を用いて自装置が受信した分散データに関する実体分散情報を生成し、対応する前記ｎ台の保管装置に、前記実体分散情報と前記自装置が受信した分散データとを対応付けて保管する、
請求項１に記載の秘密分散保管システム。
【請求項４】
前記ｎ台のコントローラのうち少なくとも１台は、
複数の保管装置との間で通信可能に接続され、前記複数の保管装置のそれぞれに、前記実体分散情報と前記自装置が受信する分散データとを対応付けて保管する、
請求項３に記載の秘密分散保管システム。
【請求項５】
前記少なくとも１台のユーザ端末、前記ｎ台の保管装置、前記乱数生成器および前記メインコントローラとの間で通信可能に接続される第２メインコントローラ、を更に備え、
前記メインコントローラは、
自装置の動作不良を検知すると、前記論理分散情報と権限移譲通知とを前記第２メインコントローラに送り、
前記第２メインコントローラは、
前記論理分散情報と前記権限移譲通知とを前記メインコントローラから受信すると、前記メインコントローラに代わって、前記元データの分散処理および復元処理を代行する、
請求項３または４に記載の秘密分散保管システム。
【請求項６】
第２乱数生成器との間で通信可能に接続される通信管理サーバ、を更に有し、
前記通信管理サーバは、
前記第２乱数生成器により発生された第２乱数を前記ｎ台のコントローラおよび前記ユーザ端末に送り、
前記メインコントローラは、
前記ユーザ端末により前記第２乱数を用いて暗号化された暗号化元データを前記元データとして受信し、
前記乱数を用いて、前記暗号化元データを分散処理してｎ個の暗号化分散データを生成して前記ｎ台のコントローラにそれぞれ送り、
前記ｎ台のコントローラは、
自装置に対応する前記暗号化分散データを前記メインコントローラから受信すると、前記第２乱数を用いて、その受信された前記暗号化分散データを復号し、その復号により得られた分散データを自装置に対応する前記保管装置に保管する、
請求項３に記載の秘密分散保管システム。
【請求項７】
前記メインコントローラは、
前記ユーザ端末からの復元指示に応じて、ｎ個の分散データの取得要求を前記ｎ台の保管装置のそれぞれに送り、
前記ｎ台のコントローラは、
前記取得要求に応じて、前記第２乱数を用いて、前記ｎ台の保管装置のそれぞれに保管された前記分散データを暗号化して暗号化分散データを生成して前記メインコントローラに送り、
前記メインコントローラは、
前記乱数を用いて、前記ｎ台のコントローラのそれぞれから受信したｎ個の前記暗号化分散データから、暗号化元データを復元して前記ユーザ端末に送る、
請求項６に記載の秘密分散保管システム。
【請求項８】
ｎ（ｎ：２以上の整数）台の保管装置のそれぞれに対応して設けられるｎ台のコントローラと、
前記ｎ台のコントローラ、少なくとも１台のユーザ端末、および乱数生成器との間で通信可能に接続されるメインコントローラと、
前記ｎ台のコントローラ、前記ユーザ端末、および第２乱数生成器との間で通信可能に接続される通信管理サーバと、を備え、
前記通信管理サーバは、
元データの書誌情報を前記ユーザ端末から受信すると、前記第２乱数生成器により発生された第２乱数を分散処理してｎ個の分散乱数データを生成し、
前記ｎ個の分散乱数データのそれぞれを、対応する前記ｎ台のコントローラに送るとともに、前記第２乱数を前記ユーザ端末に送り、
前記メインコントローラは、
前記第２乱数を用いて前記元データが暗号化された暗号化元データを前記ユーザ端末から受信すると、前記乱数生成器により発生された乱数を取得し、
前記乱数を用いて、前記暗号化元データを分散処理してｎ個の暗号化分散データを生成し、
前記ｎ個の暗号化分散データのそれぞれを、対応する前記ｎ台のコントローラに送る、
秘密分散保管システム。
【請求項９】
前記ｎ台のコントローラは、
自装置に対応する前記暗号化分散データを前記メインコントローラから受信すると、自装置に対応する前記分散乱数データを用いて復号し、復号により得られた分散データを対応する前記保管装置に保管する、
請求項８に記載の秘密分散保管システム。
【請求項１０】
前記通信管理サーバは、
前記ユーザ端末からの元データのサイズ量情報を含む復元指示に応じて、前記第２乱数生成器により発生された第２乱数を分散処理してｎ個の分散乱数データを生成し、
前記ｎ個の分散乱数データのそれぞれを、対応する前記ｎ台のコントローラに送るとともに、前記第２乱数を前記ユーザ端末に送り、
前記ｎ台のコントローラは、
自装置に対応する前記保管装置から受信した分散データを、自装置が前記通信管理サーバから受信した分散乱数データを用いて暗号化した暗号化分散データを生成して前記メインコントローラに送り、
前記メインコントローラは、
前記ｎ台のコントローラのそれぞれから受信した前記暗号化分散データから、暗号化元データを復元して前記ユーザ端末に送る、
請求項８に記載の秘密分散保管システム。
【請求項１１】
前記メインコントローラは、
前記ユーザ端末からの復元指示に応じて、前記ｎ台のコントローラのそれぞれが対応する前記保管装置から受信した分散データの書誌情報を、前記ｎ台のコントローラからそれぞれ受信し、
前記元データの書誌情報を復元し、前記元データの書誌情報から前記元データのサイズ量情報を抽出する、
請求項１０に記載の秘密分散保管システム。
【請求項１２】
前記ｎ台のコントローラのそれぞれは、対応する前記分散乱数データを保管する際、その分散乱数データの使用状態を示す状態フラグを未使用に設定し、
対応する前記分散乱数データを用いて対応する前記暗号化分散データを復号し、その復号により得られた分散データを対応する前記保管装置に保管した後、前記状態フラグを使用済みに更新する、
請求項９に記載の秘密分散保管システム。
【請求項１３】
少なくとも１台のユーザ端末、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれ、および乱数生成器との間で通信可能に接続されるメインコントローラを有する秘密分散保管システムを用いた秘密分散保管方法であって、
前記ユーザ端末から送られる元データを受信すると、前記乱数生成器により発生された乱数を取得するステップと、
前記乱数を用いて、前記元データを分散処理してｎ個の分散データを生成するステップと、
前記ｎ個の分散データのそれぞれを、対応する前記ｎ台の保管装置に保管するステップと、を有する、
秘密分散保管方法。
【請求項１４】
ｎ（ｎ：２以上の整数）台の保管装置のそれぞれに対応して設けられるｎ台のコントローラと、
前記ｎ台のコントローラ、少なくとも１台のユーザ端末、および乱数生成器との間で通信可能に接続されるメインコントローラと、
前記ｎ台のコントローラ、前記ユーザ端末、および第２乱数生成器との間で通信可能に接続される通信管理サーバと、を備える秘密分散保管システムを用いた秘密分散保管方法であって、
元データの書誌情報を前記ユーザ端末から受信すると、前記第２乱数生成器により発生された第２乱数を分散処理してｎ個の分散乱数データを生成するステップと、
前記ｎ個の分散乱数データのそれぞれを、対応する前記ｎ台のコントローラに送るとともに、前記第２乱数を前記ユーザ端末に送るステップと、
前記第２乱数を用いて前記元データが暗号化された暗号化元データを前記ユーザ端末から受信すると、前記乱数生成器により発生された乱数を取得するステップと、
前記乱数を用いて、前記暗号化元データを分散処理してｎ個の暗号化分散データを生成するステップと、
前記ｎ個の暗号化分散データのそれぞれを、対応する前記ｎ台のコントローラに送るステップと、を有する、
秘密分散保管方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、元データの分散処理により生成された複数の分散テータを保管するクラウドサービスを用いた安全な秘密分散保管システムに関する。
【背景技術】
【０００２】
従来、閾値秘密分散法として多項式補間を利用する手法がよく知られているが、この手法では計算処理に時間を要する。このため、リアルタイム性を満たすための手法として排他的論理和（いわゆるＸＯＲ処理）を用いた閾値秘密分散法が知られている。例えば特許文献１では、分散データから元データを推測されない安全なＸＯＲ処理を用いる閾値秘密分散法を用い、分散データのデータ量を削減し、分散数および閾値を自由に設定して使いやすい秘密分散装置の構成が提案されている。
【０００３】
特許文献１を含む従来の閾値秘密分散法では、分散データから元データの復元が困難となるように（つまり、元データの安全性を担保するために）、例えば秘密分散の処理に使用される乱数に、熱雑音等の信号を元にして発生された物理乱数（つまり、推測が困難な乱数）を用いる手法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１４−５０９７５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、このような物理乱数を用いる場合、物理乱数生成器が高価であるため、秘密分散を行うユーザごとに物理乱数生成器を設置することは容易ではなく、秘密分散技術の実体的かつ社会的な普及が困難となるという課題があった。
【０００６】
本開示は、上述した従来の状況に鑑みて案出され、秘密分散を必要とするユーザの数に拘わらず、秘密分散の際に用いる物理乱数を発生する物理乱数生成器の設置に伴うコストアップを抑制し、秘匿されるべき元データの安全な保管の実現を支援する秘密分散保管システムおよび秘密分散保管方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示は、少なくとも１台のユーザ端末、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれ、および乱数生成器との間で通信可能に接続されるメインコントローラを有する秘密分散保管システムであって、前記メインコントローラは、前記ユーザ端末から送られる元データを受信すると、前記乱数生成器により発生された乱数を取得し、前記乱数を用いて、前記元データを分散処理してｎ個の分散データを生成し、前記ｎ個の分散データのそれぞれを、対応する前記ｎ台の保管装置に保管する、秘密分散保管システムを提供する。
【０００８】
また、本開示は、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれに対応して設けられるｎ台のコントローラと、前記ｎ台のコントローラ、少なくとも１台のユーザ端末、および乱数生成器との間で通信可能に接続されるメインコントローラと、前記ｎ台のコントローラ、前記ユーザ端末、および第２乱数生成器との間で通信可能に接続される通信管理サーバと、を備え、前記通信管理サーバは、元データの書誌情報を前記ユーザ端末から受信すると、前記第２乱数生成器により発生された第２乱数を分散処理してｎ個の分散乱数データを生成し、前記ｎ個の分散乱数データのそれぞれを、対応する前記ｎ台のコントローラに送るとともに、前記第２乱数を前記ユーザ端末に送り、前記メインコントローラは、前記第２乱数を用いて前記元データが暗号化された暗号化元データを前記ユーザ端末から受信すると、前記乱数生成器により発生された乱数を取得し、前記乱数を用いて、前記暗号化元データを分散処理してｎ個の暗号化分散データを生成し、前記ｎ個の暗号化分散データのそれぞれを、対応する前記ｎ台のコントローラに送る、秘密分散保管システムを提供する。
【０００９】
また、本開示は、少なくとも１台のユーザ端末、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれ、および乱数生成器との間で通信可能に接続されるメインコントローラを有する秘密分散保管システムを用いた秘密分散保管方法であって、前記ユーザ端末から送られる元データを受信すると、前記乱数生成器により発生された乱数を取得するステップと、前記乱数を用いて、前記元データを分散処理してｎ個の分散データを生成するステップと、前記ｎ個の分散データのそれぞれを、対応する前記ｎ台の保管装置に保管するステップと、を有する、秘密分散保管方法を提供する。
【００１０】
また、本開示は、ｎ（ｎ：２以上の整数）台の保管装置のそれぞれに対応して設けられるｎ台のコントローラと、前記ｎ台のコントローラ、少なくとも１台のユーザ端末、および乱数生成器との間で通信可能に接続されるメインコントローラと、前記ｎ台のコントローラ、前記ユーザ端末、および第２乱数生成器との間で通信可能に接続される通信管理サーバと、を備える秘密分散保管システムを用いた秘密分散保管方法であって、元データの書誌情報を前記ユーザ端末から受信すると、前記第２乱数生成器により発生された第２乱数を分散処理してｎ個の分散乱数データを生成するステップと、前記ｎ個の分散乱数データのそれぞれを、対応する前記ｎ台のコントローラに送るとともに、前記第２乱数を前記ユーザ端末に送るステップと、前記第２乱数を用いて前記元データが暗号化された暗号化元データを前記ユーザ端末から受信すると、前記乱数生成器により発生された乱数を取得するステップと、前記乱数を用いて、前記暗号化元データを分散処理してｎ個の暗号化分散データを生成するステップと、前記ｎ個の暗号化分散データのそれぞれを、対応する前記ｎ台のコントローラに送るステップと、を有する、秘密分散保管方法を提供する。
【発明の効果】
【００１１】
本開示によれば、秘密分散を必要とするユーザの数に拘わらず、秘密分散の際に用いる物理乱数を発生する物理乱数生成器の設置に伴うコストアップを抑制し、秘匿されるべき元データの安全な保管の実現を支援できる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る秘密分散システムのシステム構成例を示す図
【図２】メインコントローラのハードウェア構成例を示すブロック図
【図３】シェアホルダのハードウェア構成例を示すブロック図
【図４】分散処理の動作手順例を示すシーケンス図
【図５】復元処理の動作手順例を示すシーケンス図
【図６】実施の形態１の変形例１に係る秘密分散システムのシステム構成例を示す図
【図７】コントローラのハードウェア構成例を示すブロック図
【図８】実施の形態１の変形例２に係る秘密分散システムのシステム構成例を示す図
【図９】実施の形態１の変形例３に係る秘密分散システムのシステム構成例を示す図
【図１０】実施の形態２に係る秘密分散システムのシステム構成例を示す図
【図１１】代理サーバのハードウェア構成例を示すブロック図
【図１２】分散処理の動作手順例を示すシーケンス図
【図１３】復元処理の動作手順例を示すシーケンス図
【図１４】実施の形態３に係る秘密分散システムのシステム構成例を示す図
【図１５】分散処理の動作手順例を示すシーケンス図
【図１６】復元処理の動作手順例を示すシーケンス図
【図１７】元データ、物理乱数、および分散データの一例を示すテーブル
【図１８】物理乱数、および暗号化された元データの一例を示すテーブル
【図１９】暗号化された元データが分散処理されて生成された、分散された暗号化分散データの一例を示すテーブル
【発明を実施するための形態】
【００１３】
以下、適宜図面を参照しながら、本開示に係る秘密分散保管システムおよび秘密分散保管方法の構成および作用を具体的に開示した実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。なお、添付図面および以下の説明は、当業者が本開示を十分に理解するために提供されるのであって、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
【００１４】
本開示に係る秘密分散システムは、秘匿データである元データに対して秘密分散処理（以下「分散処理」）を行うことで、生成された複数の分散データを複数の保管装置に保管（保存）する。秘密分散システムは、複数の分散データを用いて復元処理を行うことで、秘匿データである元データを復元する。
【００１５】
以下の実施の形態では、秘匿データである元データの一例として、病院で管理される患者の氏名、年齢、性別、住所、職業、既往歴等の個人情報を含む電子カルテデータ（以下「病院データ」）を例示して説明する。但し、以下の実施の形態においては、元データは秘匿データであれば、上述した病院データに限定されない。
【００１６】
（実施の形態１）
図１は、実施の形態１に係る秘密分散保管システム５のシステム構成例を示す図である。秘密分散保管システム５は、メインコントローラ１０と、乱数生成器２０と、複数の病院端末Ｈ１，…，Ｈｍと、複数のシェアホルダＳ１，…，Ｓｎとを含む構成である。ｍ，ｎはともに２以上の整数であり、同一の値でも異なる値でもよい。
【００１７】
複数の病院端末Ｈ１〜Ｈｍのそれぞれは、ネットワークＮＷ１を介して、メインコントローラ１０との間で通信可能に接続される。ネットワークＮＷ１は、例えばインターネット等の広域ネットワークでよい。また、ネットワークＮＷ１は、病院端末Ｈ１〜Ｈｍのそれぞれとメインコントローラ１０との間を仮想的に接続するＶＰＮ（Virtual Private Network）等のプライベートネットワークでもよいし、専用線でもよい。
【００１８】
保管装置の一例としての複数のシェアホルダＳ１〜Ｓｎのそれぞれは、ネットワークＮＷ２を介して、メインコントローラ１０との間で通信可能に接続される。ネットワークＮＷ２は、ネットワークＮＷ１と同様、例えばインターネット等の広域ネットワークでよい。また、ネットワークＮＷ２は、シェアホルダＳ１〜Ｓｎのそれぞれとメインコントローラ１０との間を仮想的に接続するＶＰＮ等のプライベートネットワークでもよいし、専用線でもよい。
【００１９】
ユーザ端末の一例としての病院端末Ｈ１〜Ｈｍは、説明を簡単にするために、それぞれ同一の内部構成を有し、必要に応じて病院端末Ｈ１を例示して説明する。病院端末Ｈ１〜Ｈｍのそれぞれは、電子カルテデータ等の病院データを管理する管理者により使用されるユーザ端末である。なお、ここでは、ユーザ端末として、病院端末を例示しているが、秘匿データを取り扱う企業あるいは組織において使用される業務用端末でもよい。従って、秘匿データである元データは、病院データである他、例えば個人の年金記録データ、製品の設計データ、実験データ、未公開の画像データ、未発表の音楽データ等が挙げられる。
【００２０】
乱数生成器２０は、物理的に変動する値（言い換えると、悪意ある第三者が容易に推測することが困難な値）を乱数データとして発生する物理乱数生成器である。乱数データは、例えば、熱雑音あるいは量子ゆらぎ等のデータが挙げられる。なお、秘密分散保管システム５において、乱数生成器２０は、物理乱数生成器の方が好ましいが、擬似乱数生成器でもよい。なお、本方式にランプ型秘密分散法を使用した場合、元データの一部を本方式の乱数の一部としてもよい。
【００２１】
メインコントローラ１０は、それぞれの病院端末Ｈ１〜Ｈｍのうち少なくとも１台（例えば病院端末Ｈ１）から送信された病院データを受信すると、乱数生成器２０により発生された物理乱数を用いて分散処理することで、複数（例えばｎ個）の分散データを生成する。メインコントローラ１０は、乱数生成器２０で生成された物理乱数を記憶する記録装置１３（図２参照）を有し、この物理乱数を用いて病院データを分散処理する。メインコントローラ１０は、分散処理の実行時に、元データ（病院データ）をどのようにして分散処理したかを示す分散情報を分散データの生成数（例えばｎ個）と同数（例えばｎ個）分だけ生成する。なお、分散情報は、上述した分散データの生成方法に関する情報の他に、分散データの書誌的情報として、元データのファイル名、分散データのファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成（つまり、分散処理）に用いた物理乱数の一部、保管先の情報、保管先にアクセスするための認証情報等を含んでよい。
【００２２】
メインコントローラ１０は、例えば、３個の分散データを生成した場合、第１の分散データと対応する第１の分散情報との組を第１のシェアホルダに保管し、第２の分散データと対応する第２の分散情報との組を第２のシェアホルダに保管し、同様に、第３の分散データと対応する第３の分散情報との組を第３のシェアホルダに保管する。
【００２３】
メインコントローラ１０は、病院データ（元データの一例）に対して既に生成された複数の分散データとそれぞれの分散データに対応する分散情報とを用いて復元処理することで、元データ（つまり、病院データ）を復元する。なお、メインコントローラ１０は、分散処理時に使用した物理乱数が記録装置１３に記憶されている場合には、その物理乱数を用いて、複数の分散データから元の病院データを復元してもよい。
【００２４】
図２は、メインコントローラ１０のハードウェア構成例を示すブロック図である。メインコントローラ１０は、プロセッサ１１と、メモリ１２と、記録装置１３と、通信回路１４とを少なくとも含む構成である。
【００２５】
プロセッサ１１は、例えばＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）あるいはＦＰＧＡ（Field Programmable Gate Array）を用いて構成され、メモリ１２と協働してメモリ１２に予め記憶されるプログラムおよびデータに従って動作する。
【００２６】
プロセッサ１１は、通信回路１４を介して乱数生成器２０から受信した物理乱数を用いて、通信回路１４を介して病院端末Ｈ１〜Ｈｍのうち少なくとも１台（例えば病院端末Ｈ１）から送られた病院データの分散処理を行う。プロセッサ１１は、通信回路１４を介して、分散処理により生成された同数個の分散データとその分散データに対応する分散情報との組を、それぞれ対応するシェアホルダＳ１〜Ｓｎに送信する。
【００２７】
また、プロセッサ１１は、複数のシェアホルダＳ１〜Ｓｎのそれぞれから分散データと対応する分散情報との組を取得すると、復元処理に必要な所定値（閾値）個分、あるいは全ての分散データおよび分散情報の組を用いて、元データである病院データの復元処理を行う。
【００２８】
メモリ１２は、例えばＲＡＭ（Random Access Memory）とＲＯＭ（Read Only Memory）とを用いて構成され、メインコントローラ１０の動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。ＲＡＭは、例えば、メインコントローラ１０の動作時に使用されるワークメモリである。ＲＯＭは、例えば、メインコントローラ１０を制御するためのプログラムおよびデータを予め記憶して保持する。
【００２９】
記録装置１３は、例えばＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）を用いて構成され、乱数生成器２０で生成された物理乱数を記憶する。
【００３０】
通信回路１４は、メインコントローラ１０との間で通信可能に接続された各種の機器との間で通信を行う回路を用いて構成される。通信回路１４は、ネットワークＮＷ１を介して、複数の病院端末Ｈ１〜Ｈｍのそれぞれとの間でデータ通信を行う。通信回路１４は、ネットワークＮＷ２を介して、複数のシェアホルダＳ１〜Ｓｎのそれぞれとの間でデータ通信を行う。なお、メインコントローラ１０と乱数生成器２０とは、有線あるいは無線で接続されてよい。
【００３１】
シェアホルダＳ１〜Ｓｎのそれぞれは、メインコントローラ１０により生成された複数の分散データのうちいずれかの分散データを保管する記録装置である。シェアホルダＳ１〜Ｓｎのそれぞれは、メインコントローラ１０から見てオンライン上のクラウドサーバであってもよいし、メインコントローラに内蔵されたストレージであってもよい。
【００３２】
図３は、シェアホルダＳ１〜Ｓｎのハードウェア構成例を示すブロック図である。シェアホルダＳ１〜Ｓｎのそれぞれは、同一の内部構成を有し、具体的にはプロセッサ４１と、メモリ４２と、記録装置４３と、通信回路４４とを少なくとも含む構成である。
【００３３】
プロセッサ４１は、例えばＣＰＵ、ＤＳＰあるいはＦＰＧＡを用いて構成され、メモリ４２と協働してメモリ４２に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ４１は、通信回路４４を介してメインコントローラ１０から送信されたいずれかの分散データおよび分散情報の組を受信すると、その分散データおよび分散情報の組を記録装置４３に保管（保存）する。また、プロセッサ４１は、通信回路４４を介してメインコントローラ１０から送信された分散データの取得要求を受けると、記録装置４３に保管されていた分散データおよび分散情報の組を読み出して取得し、通信回路４４を介してメインコントローラ１０に送信する。
【００３４】
メモリ４２は、例えばＲＡＭとＲＯＭとを用いて構成され、シェアホルダＳ１〜Ｓｎの動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。ＲＡＭは、例えば、シェアホルダＳ１〜Ｓｎの動作時に使用されるワークメモリである。ＲＯＭは、例えば、シェアホルダＳ１〜Ｓｎを制御するためのプログラムおよびデータを予め記憶して保持する。
【００３５】
記録装置４３は、例えばＨＤＤまたはＳＳＤを用いて構成され、メインコントローラ１０の分散処理により生成されたいずれかの分散データおよび分散情報の組を保管（保存）する。
【００３６】
通信回路４４は、メインコントローラ１０との間で通信を行う回路を用いて構成される。通信回路４４は、ネットワークＮＷ２を介して、メインコントローラ１０との間でデータ通信を行う。
【００３７】
次に、実施の形態１に係る秘密分散保管システム５の分散処理および復元処理を説明する。
【００３８】
上述したように、従来の秘密分散システムでは、分散処理および復元処理は個々の病院内の病院端末において実行されていた。このため、個々の病院端末において乱数生成器２０のような高価な乱数生成器が必要となり、病院における秘密分散システムの構築に伴うコストアップが避けられなかった。一方、実施の形態１に係る秘密分散保管システム５では、乱数生成器２０はメインコントローラ１０に対応して１つだけ設けられる。メインコントローラ１０は、病院端末（例えば病院端末Ｈ１）から送信される元データ（つまり、病院データ）に対して分散処理を行う。
【００３９】
図４は、分散処理の動作手順例を示すシーケンス図である。図４の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【００４０】
図４において、秘密分散保管システム５では、病院端末Ｈ１は、病院データＯＤＨ１（元データの一例）の分散処理をメインコントローラ１０に依頼（要求）する際、メインコントローラ１０に平文データの病院データＯＤＨ１を送信する（Ｔ１）。メインコントローラ１０は、病院端末Ｈ１からネットワークＮＷ１を介して、平文データの病院データＯＤＨ１を受信する。
【００４１】
メインコントローラ１０は、例えば病院データＯＤＨ１を受信した時点で乱数生成器２０により生成された物理乱数を取得し、記録装置１３に記憶する（Ｔ２）。なお、メインコントローラ１０は、取得された物理乱数を記録装置１３に記憶せず、メモリ１２に一時的に保存してよく、ステップＴ３の分散処理の実行後に物理乱数を削除してよい。但し、メインコントローラ１０に復元に必要な情報を残さないために、取得された物理乱数は削除される方が好ましい。メインコントローラ１０は、この物理乱数を用いて病院データＯＤＨ１の分散処理を行い、シェアホルダＳ１〜Ｓｎの配置数と一致するように複数（ｎ個）の分散データＨ１Ｄ１〜Ｈ１Ｄｎとそれぞれの分散データに対応する分散情報との組を生成する（Ｔ３）。なお、メインコントローラ１０は、ステップＴ３の分散処理を実行した後、元データである病院データＯＤＨ１を削除することが好ましい。
【００４２】
メインコントローラ１０は、ネットワークＮＷ２を介して、生成された分散データＨ１Ｄ１と分散データＨ１Ｄ１に対応する分散情報との組をシェアホルダＳ１に送信する（Ｔ４）。シェアホルダＳ１は、メインコントローラ１０から受信した、分散データＨ１Ｄ１と分散データＨ１Ｄ１に対応する分散情報との組を記録装置４３に保管する（Ｔ５）。
【００４３】
同様に、メインコントローラ１０は、他のシェアホルダに対してもステップＴ５と同様な処理を実行し、ネットワークＮＷ２を介して、生成された分散データＨ１Ｄｎと分散データＨ１Ｄｎに対応する分散情報との組をシェアホルダＳｎに送信する（Ｔ６）。シェアホルダＳｎは、メインコントローラ１０から受信した、分散データＨ１Ｄｎと分散データＨ１Ｄｎに対応する分散情報との組を記録装置４３に保管する（Ｔ７）。シェアホルダＳ１〜Ｓｎのそれぞれに保管される分散データは、平文データ（言い換えると、暗号化されていないデータ）である。
【００４４】
なお、メインコントローラ１０が受信した時点で、その受信された病院データが病院端末Ｈ１において既に暗号化されていてもよく、分散データは、暗号化された分散データとなる。また、ここでは、病院端末Ｈ１からの病院データＯＤＨ１に対し、分散処理を行う場合を示したが、他の病院端末からの病院データに対しても、同様に分散処理が可能である。
【００４５】
図５は、復元処理の動作手順例を示すシーケンス図である。図５の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【００４６】
図５において、秘密分散保管システム５では、シェアホルダＳ１〜Ｓｎのそれぞれは、対応する分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれを記録装置４３に保管している（Ｔ１１，Ｔ１２）。病院端末Ｈ１は、病院データＯＤＨ１（元データの一例）の復元処理をメインコントローラ１０に依頼（要求）する際、復元処理の対象となる病院データのファイル名を指定する（Ｔ１３）。
【００４７】
メインコントローラ１０は、病院端末Ｈ１により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をシェアホルダＳ１に送信する（Ｔ１４）。シェアホルダＳ１は、この取得要求に応じて、記録装置４３に保管された分散データＨ１Ｄ１および対応する分散情報の組を読み出し、メインコントローラ１０に返信する（Ｔ１５）。
【００４８】
同様に、メインコントローラ１０は、病院端末Ｈ１により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をシェアホルダＳｎに送信する（Ｔ１６）。シェアホルダＳｎは、この取得要求に応じて、記録装置４３に保管された分散データＨ１Ｄｎおよび対応する分散情報を読み出し、メインコントローラ１０に返信する（Ｔ１７）。
【００４９】
このように、ステップＴ１１〜Ｔ１７を経ることで、メインコントローラ１０は、ネットワークＮＷ２を介して、全てのシェアホルダＳ１〜Ｓｎのそれぞれから送信された分散データおよび対応する分散情報の組を受信する。メインコントローラ１０は、記録装置１３に分散処理（ステップＴ３参照）時に用いた物理乱数が記憶されている場合には、その物理乱数を読み出して取得してもよい（Ｔ１８）。なお、ステップＴ１８で取得する物理乱数は分散データＨ１Ｄ１〜Ｈ１Ｄｎを復元するために必須ではないためステップＴ１８は省略されてもよい。次に、メインコントローラ１０は、複数の分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれを用いて復元処理を行い、元データである病院データＯＤＨ１を復元する（Ｔ１９）。なお、ステップＴ１８で物理乱数を取得する場合は、この取得した物理乱数をステップＴ１９での復元処理に用いてもよい。次に、メインコントローラ１０は、復元した病院データＯＤＨ１（つまり、所望の病院データ）を病院端末Ｈ１に送信する（Ｔ２０）。なお、メインコントローラ１０は、ステップＴ１８の処理を省略してよい。つまり、メインコントローラ１０は、ステップＴ２において記憶された物理乱数を保持し続ける必要はない。この場合、メインコントローラ１０は、シェアホルダＳ１〜Ｓｎのそれぞれから送信された分散データに対応する分散情報を用いて、元データである病院データＯＤＨ１を復元できる。
【００５０】
病院端末Ｈ１は、メインコントローラ１０から送信された病院データＯＤＨ１を受信する（Ｔ２１）。これにより、病院端末Ｈ１は、病院データＯＤＨ１を安全に入手できる。
【００５１】
このように、実施の形態１の秘密分散保管システム５では、メインコントローラ１０が、病院端末から送信された元データである病院データの分散処理および復元処理を行う。このため、乱数生成器２０は、単一のメインコントローラ１０に対応して近接して１台設置される。乱数生成器２０は、セキュリティ上、メインコントローラ１０に極力近接して設置される方が好ましい。このため、乱数生成器２０は、メインコントローラ１０内部に設けられてもよい。すなわち、メインコントローラ１０自身が乱数生成器２０の機能を有しても良い。なお、乱数生成器２０は、メインコントローラ１０から遠隔に設置され、ネットワーク（図示略）を介してメインコントローラ１０と接続されてもよいが、メインコントローラ１０および乱数生成器２０間はセキュアなネットワークが好ましい。
【００５２】
また、各病院端末Ｈ１〜Ｈｍのそれぞれは、メインコントローラ１０の構成を有することなく、それぞれの病院外に配置されるメインコントローラ１０に対して元データの分散処理を依頼できる。従って、病院端末Ｈ１〜Ｈｍのそれぞれにメインコントローラ１０および乱数生成器２０の構成を有する場合と比べて、メインコントローラ１０および乱数生成器２０の配置数が１つずつで済むので、秘密分散保管システム５を低コストで構築できる。
【００５３】
以上により、秘密分散保管システム５は、少なくとも１台の病院端末Ｈ１〜Ｈｍ、ｎ台のシェアホルダＳ１〜Ｓｎのそれぞれ、および乱数生成器２０との間で通信可能に接続されるメインコントローラ１０を有する。メインコントローラ１０は、病院端末Ｈ１から送られる病院データＯＤＨ１を受信すると、乱数生成器２０により発生された物理乱数を取得し、物理乱数を用いて、病院データＯＤＨ１を分散処理してｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎを生成する。メインコントローラ１０は、ｎ個の分散データのそれぞれを、対応するｎ台のシェアホルダＳ１〜Ｓｎに保管する。
【００５４】
これにより、秘密分散保管システム５は、元データの秘密分散を必要とする病院端末の数（つまり、ユーザの数）に拘わらず、秘密分散の際に用いる物理乱数を発生する乱数生成器２０の設置に伴うコストアップを抑制できる。従って、秘密分散保管システム５は、システム構築に伴うコストアップを極力抑えながら、秘匿されるべき元データの安全な保管の実現を支援できる。
【００５５】
また、メインコントローラ１０は、病院端末Ｈ１からの元データの復元指示に応じて、ｎ台のシェアホルダＳ１〜Ｓｎのそれぞれに保管されるｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎを取得する。メインコントローラ１０は、ｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎから元データである病院データＯＤＨ１を復元して病院端末Ｈ１に送る。これにより、秘密分散保管システム５は、メインコントローラ１０以外に元データである病院データの復元処理を実行できないように、復元処理を可能とする実行主体を絞り込むことができる。つまり、メインコントローラ１０を使用する人物以外の第三者による元データへの復元を効果的に抑制できる。仮に前述の元データの復元ができた場合、極めて個人情報性の高い病院データの流出に繋がるが、実施の形態１によれば病院データのデータ漏洩を強固に防止できることで、責任分界点が明確となる。
【００５６】
（実施の形態１の変形例１)
実施の形態１では、メインコントローラ１０は、例えば病院端末が管理する病院データ（つまり、元データ）を平文データ悪意で取得することも可能であった。実施の形態１の変形例１では、メインコントローラ１０の管理者に分散データの保存先が分からないようにする。
【００５７】
図６は、実施の形態１の変形例１に係る秘密分散保管システム５Ａの構成例を示す図である。秘密分散保管システム５Ａにおいて、実施の形態１に係る秘密分散保管システム５と同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
【００５８】
秘密分散保管システム５Ａでは、メインコントローラ１０と複数のシェアホルダＳ１〜Ｓｎのそれぞれとの間には、シェアホルダＳ１〜Ｓｎの設置数と同数のコントローラＣ１〜Ｃｎが１対１に対応して介在する。
【００５９】
実施の形態１と同様に、メインコントローラ１０は、病院端末Ｈ１〜Ｈｍのうち少なくとも１台からネットワークＮＷ１を介して病院データ（例えば病院データＯＤＨ１）を受信し、乱数生成器２０で生成された物理乱数を用いて病院データの分散処理を行い、合計ｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎおよび論理分散情報を生成する。論理分散情報は、メインコントローラ１０における病院データの分散処理により生成される。具体的には、論理分散情報は、ｎ個の分散データの生成方法に関する情報の他に、元データのファイル名、ｎ個の分散データの各ファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成（つまり、分散処理）に用いた物理乱数、分配先であるｎ個のコントローラに関する情報等である。従って、メインコントローラ１０は、論理分散情報を基にして、最終的に分散データが保管（保存）されるシェアホルダＳ１〜Ｓｎのそれぞれの情報は判別不能である。
【００６０】
メインコントローラ１０は、ネットワークＮＷ２を介して、合計ｎ個の分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれと上述した論理分散情報とを複数のコントローラＣ１〜Ｃｎに１個ずつ振り分ける分配処理を行う。なお、メインコントローラ１０は、分散処理を実行した後、元データである病院データを削除することが好ましい。
【００６１】
図７は、コントローラＣ１〜Ｃｎのハードウェア構成例を示すブロック図である。コントローラＣ１〜Ｃｎのそれぞれは、同一の内部構成を有し、具体的にはプロセッサ５１と、メモリ５２と、記録装置５３と、通信回路５４とを少なくとも含む構成である。
【００６２】
プロセッサ５１は、例えばＣＰＵ、ＤＳＰあるいはＦＰＧＡを用いて構成され、メモリ５２と協働してメモリ５２に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ５１は、メインコントローラ１０から送信された分散データと論理分散情報とを、通信回路５４を介して受信する。プロセッサ５１は、論理分散情報と予め保持している自コントローラに対応する保管先（例えばシェアホルダＳ１）の情報とを用いて、自コントローラ（例えばコントローラＣ１）により受信された分散データに関する実体分散情報を生成する。実体分散情報は、対応する分散データの生成に関連する分散情報（実施の形態１参照）であり、例えば、分散データの生成方法に関する情報の他に、分散データの書誌的情報として、元データのファイル名、分散データのファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成（つまり、分散処理）に用いた物理乱数の一部、保管先の情報、保管先にアクセスするための認証情報等を含んでよい。プロセッサ５１は、分散データに対応する実体分散情報に従って、該当する分散データを対応するシェアホルダ（例えば、シェアホルダＳ１）に保管する。
【００６３】
メモリ５２は、例えばＲＡＭとＲＯＭとを用いて構成され、コントローラＣ１〜Ｃｎの動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。ＲＡＭは、例えば、コントローラＣ１〜Ｃｎの動作時に使用されるワークメモリである。ＲＯＭは、例えば、コントローラＣ１〜Ｃｎを制御するためのプログラムおよびデータを予め記憶して保持する。
【００６４】
記録装置５３は、例えばＨＤＤまたはＳＳＤを用いて構成され、メインコントローラ１０の分散処理により生成されたいずれかの分散データおよび実体分散情報の組を保管（保存）する。
【００６５】
通信回路５４は、メインコントローラ１０あるいは自コントローラに対応するシェアホルダ（例えば、シェアホルダＳ１）との間で通信を行う回路を用いて構成される。通信回路５４は、ネットワークＮＷ２を介して、メインコントローラ１０との間でデータ通信を行う。また、通信回路５４は、自コントローラに対応するシェアホルダ（例えば、シェアホルダＳ１）との間でデータ通信を行う。
【００６６】
複数のコントローラＣ１〜Ｃｎのそれぞれは、シェアホルダＳ１〜Ｓｎのうち対応するいずれかのシェアホルダに対し、１個の分散データおよび実体論理情報の組を保管する。つまり、複数のコントローラＣ１〜Ｃｎのそれぞれの管理者は、対応する分散データの保管先およびその保管先にアクセスするための認証情報を含む実体分散情報をそれぞれ把握しているが、他の分散データに対応する実体分散情報を把握できない。各コントローラＣ１〜Ｃｎのそれぞれは、シェアホルダＳ１〜Ｓｎのうち対応するシェアホルダと連結し、対応するシェアホルダへの認証情報を保持する。従って、実施の形態１と異なり、メインコントローラ１０は、元データの分散処理の後は、コントローラＣ１〜Ｃｎのそれぞれを介して個々の分散データを間接的に受け取ることしかできず、複数のシェアホルダＳ１〜Ｓｎのそれぞれから直接的に全ての分散データを取得できない。
【００６７】
このように、実施の形態１の変形例１に係る秘密分散保管システム５Ａでは、全ての分散データの保存先を含む分散情報を把握可能な管理者が存在できなくなる。従って、実施の形態１に比べて、分散データの保管に関するセキュリティをより一層向上できる。また、メインコントローラ１０と複数のシェアホルダＳ１〜Ｓｎのそれぞれとの間に複数のコントローラＣ１〜Ｃｎのそれぞれとを設けたため、例えば、仮にいずれかの分散データの漏洩が生じた場合にどのコントローラの管理者による責任であるかを明確に判別し易くなる。なお、メインコントローラ１０とコントローラＣ１〜Ｃｎのそれぞれとの間では、機器認証を行い、第三者によるなりすましを防止してもよい。機器認証には、例えば双方向の公開鍵暗号方式による暗号化復号技術が用いられる。
【００６８】
以上により、実施の形態１の変形例１に係る秘密分散保管システム５Ａは、ｎ台のシェアホルダＳ１〜Ｓｎのそれぞれに対応して設けられ、メインコントローラ１０との間で通信可能に接続されるｎ台のコントローラＣ１〜Ｃｎを更に有する。メインコントローラ１０は、複数の分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれの生成に関する論理分散情報を生成する。メインコントローラ１０は、ｎ個の分散データのそれぞれと論理分散情報とを対応付けて、対応するｎ台のコントローラＣ１〜Ｃｎのそれぞれに送信する。ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、自装置（自コントローラ）に対応する分散データと論理分散情報とをメインコントローラ１０から受信し、論理分散情報を用いて自装置が受信した分散データに関する実体分散情報を生成する。ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、対応するｎ台のシェアホルダＳ１〜Ｓｎのそれぞれに、実体分散情報と自装置（自コントローラ）が受信した分散データとを対応付けて保管する。
【００６９】
これにより、秘密分散保管システム５Ａは、メインコントローラ１０の管理者に分散データの最終的な保存先が分からないように、分散データを安全に保管できる。従って、秘密分散保管システム５Ａによれば、メインコントローラ１０を使用する管理者が仮に悪意による攻撃として、秘匿性の高い病院データの漏洩を効果的に阻むことが可能となる。
【００７０】
（実施の形態１の変形例２）
実施の形態１の変形例１では、コントローラとシェアホルダとが１対１で対応するように連結していた。実施の形態１の変形例２では、１台のコントローラに２台以上のシェアホルダが接続される例を説明する。
【００７１】
図８は、実施の形態１の変形例２に係る秘密分散保管システム５Ｂの構成例を示す図である。秘密分散保管システム５Ｂにおいて、実施の形態１の変形例１に係る秘密分散保管システム５Ａと同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
【００７２】
実施の形態１の変形例２では、１台のコントローラ（例えばコントローラＣ１）に２台のシェアホルダＳ１Ａ，Ｓ１Ｂが接続される。従って、コントローラの総数は、シェアホルダの総数より少ない。コントローラＣ１は、２台のシェアホルダＳ１Ａ，Ｓ１Ｂのそれぞれに、自コントローラが受信した分散データとその分散データに対応するように生成した実体分散情報とを対応付けてそれぞれ保管する。
【００７３】
実施の形態１の変形例２においても、実施の形態１の変形例１と同様に、コントローラＣ１〜Ｃｎのそれぞれの管理者は、自コントローラに対応するシェアホルダにアクセスするための認証情報しか保有しない。従って、秘密分散保管システム５Ｂによれば、メインコントローラ１０の管理者は、それぞれのシェアホルダＳ１〜Ｓｎに直接アクセスして分散データを取得することはできない。
【００７４】
なお、ここでは、コントローラＣ１が２台のシェアホルダＳ１Ａ，Ｓ１Ｂの間で通信可能に接続される場合を示したが、他のコントローラＣ２〜Ｃｎのうち少なくとも１台が複数のシェアホルダとの間で通信可能に接続されてもよい。
【００７５】
以上により、秘密分散保管システム５Ｂでは、ｎ台のコントローラＣ１〜Ｃｎのうち少なくとも１台のコントローラ（例えばコントローラＣ１）は、複数のシェアホルダＳ１Ａ，Ｓ１Ｂとの間で通信可能に接続される。そのコントローラＣ１は、複数のシェアホルダＳ１Ａ，Ｓ１Ｂのそれぞれに、自コントローラが受信した分散データとその分散データに対応するように生成した実体分散情報とを対応付けてそれぞれ保管する。これにより、秘密分散保管システム５Ｂによれば、１台のコントローラに２台以上のシェアホルダを接続できる。従って、複数のシェアホルダのうちいずれかが故障した場合等の分散データおよび実体分散情報の保管用のバックアップを適切に構築できる。
【００７６】
（実施の形態１の変形例３）
実施の形態１の変形例２では、１台のメインコントローラ１０だけが配置されていた。このため、例えば病院データの分散処理あるいは復元処理のいずれかを行う必要がある際に、災害あるいは故障等によってメインコントローラ１０が動作不良となると、病院データの分散処理あるいは復元処理を適切に実行できなくなる。実施の形態１の変形例３では、メインコントローラ１０が動作不良に陥るまたはその予兆を検知した際に、分散処理あるいは復元処理のいずれかを代行する他のメインコントローラを配置する例を説明する。
【００７７】
図９は、実施の形態１の変形例３に係る秘密分散保管システム５Ｃの構成例を示す図である。秘密分散保管システム５Ｃにおいて、実施の形態１の変形例２に係る秘密分散保管システム５Ｂと同一の構成要素については、同一の符号を用いることでその説明を簡略化または省略する。
【００７８】
秘密分散保管システム５Ｃでは、メインコントローラ１０とは別に、バックアップ用のメインコントローラ１０Ａが配置される。メインコントローラ１０とメインコントローラ１０Ａとは、例えば災害の発生によって同時に動作不良が起きないように、地理的に遠方に配置されてよいし、近くに配置されてもよい。
【００７９】
第２メインコントローラの一例としてのメインコントローラ１０Ａはメインコントローラ１０と同一の構成を有するので、メインコントローラ１０Ａの内部構成の詳細な説明は省略する。メインコントローラ１０Ａは、メインコントローラ１０と同様に、乱数生成器２０Ａと接続され、乱数生成器２０Ａで生成された物理乱数を取得する。乱数生成器２０Ａは、乱数生成器２０と同様に物理乱数生成器によって構成される方が好ましいが、擬似乱数生成器によって構成されてもよい。メインコントローラ１０Ａは、ネットワークＮＷ１を介して、病院端末Ｈ１〜Ｈｍのそれぞれと接続されるとともに、ネットワークＮＷ２を介して、コントローラＣ１〜Ｃｎのそれぞれと接続される。
【００８０】
秘密分散保管システム５Ｃでは、メインコントローラ１０は、自装置の死活監視を行う。例えば災害の発生によってメインコントローラ１０は、動作不良あるいはその予兆を検知でき、その検知を行った場合、バックアップ用に配置されたメインコントローラ１０Ａに対し、メインコントローラ１０により生成された論理分散情報と分散処理および復元処理の権限委譲通知とを送る。
【００８１】
メインコントローラ１０Ａは、メインコントローラ１０から送信された、論理分散情報と権限委譲通知とを受け取ると、その権限委譲通知に従い、メインコントローラ１０の処理（例えば分散処理および復元処理）を代行して継続する。なお、メインコントローラ１０Ａはメインコントローラ１０に接続せず、メインコントローラ１０からの権限委譲通知等の指示なしに独立に動作してもよい。
【００８２】
なお、メインコントローラ１０が自装置の死活監視を行う代わりに、メインコントローラ１０Ａがメインコントローラ１０の死活監視を行ってもよい。なお、外部のＰＣ（図示略）あるいは携帯端末（図示略）がメインコントローラ１０の死活監視を行ってもよい。
【００８３】
このように、実施の形態１の変形例３では、例えば災害時等において、メインコントローラ１０が動作不良に陥っても、バックアップ用のメインコントローラ１０Ａが代行して作動する。従って、秘密分散保管システム５Ｃのロバスト性が向上する。また、秘密分散保管システム５Ｃにおいて、乱数生成器２０Ａを設けず、メインコントローラ１０Ａは、メインコントローラ１０に接続される乱数生成器２０との間で接続可能であれば乱数生成器２０から物理乱数を取得してもよい。これにより、秘密分散保管システム５Ｃにおいて、メインコントローラ１０Ａが結果的に増設となるが、乱数生成器の設置数の増大を回避できるので、コストアップの抑制が可能となる。なお、バックアップ用のメインコントローラは、１台のメインコントローラ１０Ａに限らず、複数台設けられてもよい。
【００８４】
以上により、秘密分散保管システム５Ｃは、少なくとも１台の病院端末Ｈ１〜Ｈｍ、ｎ台のシェアホルダＳ１〜Ｓｎ、乱数生成器２０Ａおよびメインコントローラ１０との間で通信可能に接続されるメインコントローラ１０Ａを更に備える。メインコントローラ１０は、自装置の動作不良を検知すると、論理分散情報と分散処理および復元処理の権限移譲通知とをメインコントローラ１０Ａに送る。メインコントローラ１０Ａは、論理分散情報と権限移譲通知とをメインコントローラ１０から受信すると、メインコントローラ１０に代わって、病院データの分散処理および復元処理を代行する。これにより、メインコントローラ１０が動作不良に陥った時あるいはその予兆が検知された時でも、メインコントローラ１０Ａにより、病院データの分散処理および復元処理が中断されず、病院データに基づく分散データの安全な保管ならびに必要に応じた病院データの復元が継続できる。
【００８５】
（実施の形態２）
上述した実施の形態１あるいはその各種の変形例では、病院端末（例えば病院端末Ｈ１）とメインコントローラ１０との間のデータ通信においては、平文データの送受信が行われることが主に想定されていた。実施の形態２では、病院端末Ｈ１〜Ｈｍのそれぞれ、メインコントローラ１０、コントローラＣ１〜Ｃｎのそれぞれの間での通信に先立って、病院データを暗号化する例を説明する。従って、メインコントローラ１０は、病院端末により暗号化された病院データを受信し、その暗号化された病院データに分散処理を行う。
【００８６】
図１０は、実施の形態２に係る秘密分散保管システム５Ｄの構成例を示す図である。秘密分散保管システム５Ｄにおいて、実施の形態１に係る秘密分散保管システム５と同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
【００８７】
秘密分散保管システム５Ｄは、実施の形態１の変形例１に係る秘密分散保管システム５Ａの構成に加え、代理サーバ７０および乱数生成器８０を更に含む構成である。代理サーバ７０とコントローラＣ１〜Ｃｎのそれぞれとは、ネットワークＮＷ３を介して接続される。ネットワークＮＷ３は、ネットワークＮＷ１，ＮＷ２と同一のネットワークであってもよいし、異なるネットワークであってもよい。具体的には、ネットワークＮＷ３は、例えばインターネット等の広域ネットワークでもよいし、代理サーバ７０とコントローラＣ１〜Ｃｎのそれぞれとの間を仮想的に接続するＶＰＮ等のプライベートネットワークでもよいし、専用線でもよい。なお、図１０では図示されていないが、代理サーバ７０と病院端末Ｈ１〜ＨｍのそれぞれとはネットワークＮＷ３のようなネットワークを介して通信可能に接続されてもよい。
【００８８】
第２物理乱数生成器の一例としての乱数生成器８０は、乱数生成器２０と同様に、物理的に変動する値（言い換えると、悪意ある第三者が容易に推測することが困難な値）を乱数として発生する乱数生成器である。具体的には、乱数生成器８０は、病院端末Ｈ１〜Ｈｍのそれぞれとメインコントローラ１０とコントローラＣ１〜Ｃｎのそれぞれとの間での通信に使用される物理乱数（例えば、暗号化および復号のための共通鍵）を生成する。なお、物理乱数の代わりに、擬似乱数が用いられてもよい。また、乱数生成器８０により生成される物理乱数は、分散データを生成するために用いられる物理乱数（つまり、乱数生成器２０により生成される物理乱数）とは異なる。
【００８９】
通信管理サーバの一例としての代理サーバ７０は、乱数生成器８０で生成された物理乱数（第２物理乱数の一例）をストリーム暗号情報として記録装置７３に記憶する。代理サーバ７０は、病院端末Ｈ１〜Ｈｍのそれぞれとメインコントローラ１０とコントローラＣ１〜Ｃｎのそれぞれとの間の通信の暗号化あるいは復号に用いる共通鍵としての位置付けられる物理乱数を、病院端末Ｈ１に送信する。病院端末Ｈ１は、代理サーバ７０から送信された共通鍵を、病院端末Ｈ１内のメモリに記憶する。また、代理サーバ７０は、ネットワークＮＷ３を介して、コントローラＣ１〜Ｃｎのそれぞれに共通鍵を送信する。コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０から受信した共通鍵を、自コントローラ内の各記録装置５３に記憶する。このように、代理サーバ７０Ａから送信（配布）された同一の共通鍵が病院端末Ｈ１およびコントローラＣ１〜Ｃｎのそれぞれに保持される。
【００９０】
図１１は、代理サーバ７０のハードウェア構成例を示すブロック図である。代理サーバ７０は、プロセッサ７１と、メモリ７２と、記録装置７３と、通信回路７４とを少なくとも含む構成である。
【００９１】
プロセッサ７１は、例えばＣＰＵ、ＤＳＰあるいはＦＰＧＡを用いて構成され、メモリ７２と協働してメモリ７２に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ７１は、通信回路７４を介して乱数生成器８０から送信された物理乱数（共通鍵）を取得する。プロセッサ７１は、通信回路７４を介して、病院端末Ｈ１およびコントローラＣ１〜Ｃｎのそれぞれに共通鍵を送信する。
【００９２】
メモリ７２は、例えばＲＡＭとＲＯＭとを用いて構成され、代理サーバ７０の動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。ＲＡＭは、例えば、代理サーバ７０の動作時に使用されるワークメモリである。ＲＯＭは、例えば、代理サーバ７０を制御するためのプログラムおよびデータを予め記憶して保持する。
【００９３】
記録装置７３は、例えばＨＤＤまたはＳＳＤを用いて構成され、乱数生成器８０で生成された物理乱数を記憶する。
【００９４】
通信回路７４は、代理サーバ７０との間で通信可能に接続された各種の機器との間で通信を行う回路を用いて構成される。通信回路７４は、複数の病院端末Ｈ１〜Ｈｍのそれぞれとの間でデータ通信を行う。通信回路７４は、ネットワークＮＷ３を介して、複数のコントローラＣ１〜Ｃｎのそれぞれとの間でデータ通信を行う。なお、代理サーバ７０と乱数生成器８０とは、有線あるいは無線で接続されてよい。
【００９５】
病院端末（例えば病院端末Ｈ１）は、代理サーバ７０から送信された共通鍵を用いて元データである病院データＯＤを暗号化し、暗号化された病院データＥ（ＯＤ）を、ネットワークＮＷ１を介してメインコントローラ１０に送信する。なお、以下の説明では、元データである病院データＯＤが暗号化された場合、その暗号化された病院データを、便宜的にＥ（ＯＤ）と記載する。
【００９６】
メインコントローラ１０は、病院端末（例えば病院端末Ｈ１）により暗号化された病院データＥ（ＯＤ）を病院端末Ｈ１から受信し、乱数生成器２０で生成された物理乱数を用いて、暗号化された病院データＥ（ＯＤ）の分散処理を行う。メインコントローラ１０は、分散処理により生成された、複数の暗号化された分散データＥ（ＯＤＨ１）〜Ｅ（ＯＤＨｎ）のそれぞれを、ネットワークＮＷ２を介して、対応するコントローラＣ１〜Ｃｎのそれぞれに送信する。
【００９７】
次に、実施の形態２に係る秘密分散保管システム５Ｄの分散処理および復元処理を説明する。
【００９８】
図１２は、分散処理の手順を示すシーケンス図である。図１２の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【００９９】
図１２において、秘密分散保管システム５Ｄでは、分散処理の実行に先立って先ず、代理サーバ７０は、乱数生成器８０で生成された物理乱数をストリーム暗号情報として取得し、この物理乱数を共通鍵としてコントローラＣ１〜Ｃｎのそれぞれと病院端末Ｈ１に送信する（Ｔ３１，Ｔ３２，Ｔ３３）。
【０１００】
コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０から受信した共通鍵をそれぞれ記録装置５３に保管する。
【０１０１】
病院端末Ｈ１は、代理サーバ７０から受信した共通鍵をメモリ１２あるいは記録装置１３に保管する。病院端末Ｈ１は、この共通鍵で元データＯＤ（例えば、病院データ）を暗号化する（Ｔ３４）。病院端末Ｈ１は、暗号化元データの一例としての暗号化された病院データＥ（ＯＤ）をメインコントローラ１０に送信する（Ｔ３５）。
【０１０２】
メインコントローラ１０は、例えば暗号化された病院データＥ（ＯＤ）を受信した時点で乱数生成器２０により生成された物理乱数を取得し、記録装置１３に記憶する（Ｔ３６）。なお、メインコントローラ１０は、取得された物理乱数を記録装置１３に記憶せず、メモリ１２に一時的に保存してよく、ステップＴ３７の分散処理の実行後に物理乱数を削除してよい。メインコントローラ１０は、この物理乱数を用いて、暗号化された病院データＥ（ＯＤ）の分散処理を行い、コントローラＣ１〜Ｃｎの配置数と一致するように複数（例えばｎ個）の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれとそれぞれの暗号化された分散データに対応する分散情報との組を生成する（Ｔ３７）。暗号化分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれは、暗号化分散データの一例である。なお、メインコントローラ１０は、ステップＴ３７の分散処理を実行した後、暗号化された病院データＥ（ＯＤ）を削除してもよい。
【０１０３】
メインコントローラ１０は、暗号化された分散データＥ（Ｈ１Ｄ１）と対応する分散情報との組をコントローラＣ１に送信する（Ｔ３８）。コントローラＣ１は、ステップＴ３１において記録装置５３に保管された共通鍵を読み出し、この共通鍵を用いて、暗号化された分散データＥ（Ｈ１Ｄ１）を復号して平文データである分散データＨ１Ｄ１を得る（Ｔ３９）。コントローラＣ１は、復号により得られた分散データＨ１Ｄ１および対応する分散情報との組を、対応するシェアホルダＳ１に保管する（Ｔ４０）。
【０１０４】
同様に、メインコントローラ１０は、他のコントローラに対してもステップＴ３８〜Ｔ４０と同様な処理を実行し、暗号化された分散データＥ（Ｈ１Ｄｎ）と対応する分散情報との組をコントローラＣｎに送信する（Ｔ４１）。コントローラＣｎは、ステップＴ３２において記録装置５３に保管された共通鍵を読み出し、この共通鍵を用いて、暗号化された分散データＥ（Ｈ１Ｄｎ）を復号して平文データである分散データＨ１Ｄｎを得る（Ｔ４２）。コントローラＣｎは、復号により得られた分散データＨ１Ｄｎおよび対応する分散情報との組を、対応するシェアホルダＳｎに保管する（Ｔ４３）。
【０１０５】
このように、分散処理を行う場合、コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０から受信した共通鍵で暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）を復号して分散データＨ１Ｄ１〜Ｈ１Ｄｎを得る。コントローラＣ１〜Ｃｎのそれぞれは、復号により得られた分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれと対応する分散情報との組を、対応するシェアホルダＳ１〜Ｓｎに保管する。従って、シェアホルダＳ１〜Ｓｎのそれぞれには、平文データである分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれと対応する分散情報との組が保管される。
【０１０６】
図１３は、復元処理の動作手順例を示すシーケンス図である。図１３の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【０１０７】
図１３において、秘密分散保管システム５Ｄでは、復元処理の実行に先だって先ず、代理サーバ７０は、乱数生成器８０で生成された物理乱数をストリーム暗号情報として取得し、この物理乱数を共通鍵としてコントローラＣ１〜Ｃｎのそれぞれと病院端末Ｈ１に送信する（Ｔ５１，Ｔ５２，Ｔ５３）。
【０１０８】
コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０から受信した共通鍵をそれぞれ記録装置５３に保管する。
【０１０９】
病院端末Ｈ１は、代理サーバ７０から受信した共通鍵をメモリ１２あるいは記録装置１３に保管する。また、分散処理時と復元処理時とで、異なる共通鍵を用いてもよいし同一の共通鍵を用いてもよい。同一の共通鍵を用いる場合には、ステップＴ５１〜Ｔ５３を省略可能である。
【０１１０】
病院端末Ｈ１は、病院データＯＤ（元データの一例）の復元処理をメインコントローラ１０に依頼（要求）する際、復元処理の対象となる病院データのファイル名を指定する（Ｔ５４）。
【０１１１】
メインコントローラ１０は、病院端末Ｈ１により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をコントローラＣ１に送信する（Ｔ５５）。コントローラＣ１は、この取得要求に応じて、自コントローラに対応するシェアホルダＳ１に保管されている分散データＨ１Ｄ１および対応する分散情報の組を読み出す。コントローラＣ１は、ステップＴ５１において記録装置５３に保管された共通鍵を読み出し、この共通鍵を用いて分散データＨ１Ｄ１を暗号化し、暗号化された分散データＥ（Ｈ１Ｄ１）を得る（Ｔ５６）。コントローラＣ１は、暗号化された分散データＥ（Ｈ１Ｄ１）と対応する分散情報の組をメインコントローラ１０に送信する（Ｔ５７）。メインコントローラ１０は、暗号化された分散データＥ（Ｈ１Ｄ１）と対応する分散情報の組を取得する。
【０１１２】
同様に、メインコントローラ１０は、病院端末Ｈ１により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をコントローラＣｎに送信する（Ｔ５８）。コントローラＣｎは、この取得要求に応じて、自コントローラに対応するシェアホルダＳｎに保管されている分散データＨ１Ｄｎおよび対応する分散情報の組を読み出す。コントローラＣｎは、ステップＴ５２において記録装置５３に保管された共通鍵を読み出し、この共通鍵を用いて分散データＨ１Ｄｎを暗号化し、暗号化された分散データＥ（Ｈ１Ｄｎ）を得る（Ｔ５９）。コントローラＣｎは、暗号化された分散データＥ（Ｈ１Ｄｎ）と対応する分散情報の組をメインコントローラ１０に送信する（Ｔ６０）。メインコントローラ１０は、暗号化された分散データＥ（Ｈ１Ｄｎ）と対応する分散情報の組を取得する。
【０１１３】
このように、ステップＴ５５〜Ｔ６０を経ることで、メインコントローラ１０は、全てのコントローラＣ１〜Ｃｎから、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれと対応する分散情報とを受信する。メインコントローラ１０は、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれと対応する分散情報とを基にして復元処理を行い、暗号化された病院データＥ（ＯＤ）を得る（Ｔ６１）。なお、メインコントローラ１０は、分散処理時に使用した物理乱数が記録装置１３に保管されている場合には、その物理乱数を用いて復元処理を行ってもよい。メインコントローラ１０は、暗号化された病院データＥ（ＯＤ）を病院端末Ｈ１に送信する（Ｔ６２）。病院端末Ｈ１は、メモリ１２あるいは記録装置１３に記憶された共通鍵を用いて暗号化された病院データＥ（ＯＤ）を復号して病院データＯＤ（所望の元データ）を取得する（Ｔ６３）。
【０１１４】
以上により、実施の形態２の秘密分散保管システム５Ｄは、乱数生成器８０との間で通信可能に接続される代理サーバ７０を更に有する。代理サーバ７０は、乱数生成器８０により発生された共通鍵を、ｎ台のコントローラＣ１〜Ｃｎのそれぞれと病院端末（例えば病院端末Ｈ１）とに送る。メインコントローラ１０は、病院端末Ｈ１により共通鍵を用いて暗号化された病院データＥ（ＯＤ）を受信する。メインコントローラ１０は、物理乱数を用いて、暗号化された病院データＥ（ＯＤ）を分散処理してｎ個の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）を生成してｎ台のコントローラＣ１〜Ｃｎのそれぞれに送る。ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、自装置（自コントローラ）に対応する、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）をメインコントローラ１０から受信すると、共通鍵を用いて、その受信された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）を復号する。ｎ台のコントローラＣ１〜Ｃｎは、その復号により得られた分散データＨ１Ｄ１〜Ｈ１Ｄｎを自装置に対応するシェアホルダＳ１〜Ｓｎに保管する。
【０１１５】
これにより、秘密分散保管システム５Ｄでは、メインコントローラ１０が分散処理を行う場合、病院端末から受け取る病院データが既に暗号化されているので、メインコントローラ１０の管理者に対して病院データの内容を秘匿できる。言い換えると、秘匿されるべき元データ（病院データ）が、メインコントローラ１０とは異なる代理サーバ７０から渡された共通鍵（つまり、メインコントローラ１０が知り得ない共通鍵）によって暗号化されるので、病院端末は、メインコントローラ１０の管理者による病院データの漏えいを心配することなく安心してメインコントローラ１０に送信できる。
【０１１６】
また、メインコントローラ１０は、病院端末Ｈ１からの復元指示に応じて、ｎ個の分散データの取得要求をｎ台のコントローラＣ１〜Ｃｎのそれぞれに送る。ｎ台のコントローラＣ１〜Ｃｎは、取得要求に応じて、共通鍵を用いて、シェアホルダＳ１〜Ｓｎのそれぞれに保管された分散データＨ１Ｄ１〜Ｈ１Ｄｎを暗号化し、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）を生成してメインコントローラ１０に送る。メインコントローラ１０は、物理乱数を用いて、ｎ台のコントローラＣ１〜Ｃｎのそれぞれから受信したｎ個の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）から、暗号化された病院データＥ（ＯＤ）を復元して病院端末Ｈ１に送る。
【０１１７】
これにより、メインコントローラ１０が復元処理を行う場合、メインコントローラ１０は、コントローラＣ１〜Ｃｎのそれぞれから暗号化された分散データを受け取るので、復元処理しても平文データである病院データの内容を知ることができない。つまり、メインコントローラ１０には、暗号化されたデータしか取得されないので、メインコントローラ１０の管理者は、機密情報を知ることができない。従って、メインコントローラの管理者による機密情報の漏洩を排除できる。
【０１１８】
（実施の形態３）
実施の形態２では、ストリーム暗号が使用されるため、乱数生成器８０により生成された物理乱数（つまり、ストリーム暗号に用いられる共通鍵）は、代理サーバ７０から病院端末（例えば病院端末Ｈ１）およびコントローラＣ１〜Ｃｎのそれぞれに同一の共通鍵として送信された。実施の形態３では、代理サーバ７０Ａは、他の暗号方式の使用を想定し、乱数生成器８０を用いて得られる共通鍵を分散処理し、コントローラＣ１〜Ｃｎのそれぞれに、分散処理された共通鍵（つまり、乱数生成器８０からの物理乱数を分散処理した分散データ）を送信することで、共通鍵の漏洩をできるだけ抑制するために、共通鍵全体そのものを送信しないように配慮する。なお、ここでの暗号方式は特に限定するものではない。
【０１１９】
図１４は、実施の形態３に係る秘密分散保管システム５Ｅの構成例を示す図である。秘密分散保管システム５Ｅにおいて、実施の形態２に係る秘密分散保管システム５Ｄと同一の構成要素には同一の符号を用いることで、その説明を簡略化または省略し、異なる内容について説明する。
【０１２０】
秘密分散保管システム５Ｅでは、代理サーバ７０Ａは、乱数生成器８０で生成された物理乱数を暗号情報として記録装置７３に記憶する。代理サーバ７０は、この物理乱数を分散処理し、ネットワークＮＷ３を介して、分散された共通鍵を各コントローラＣ１〜Ｃｎに送信する。コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０Ａから受信した、分散された共通鍵を自コントローラの記録装置５３に記憶する。分散された共通鍵は、暗号情報として生成された物理乱数を分散処理したものであるので、コントローラＣ１〜Ｃｎのそれぞれで異なる。一方、代理サーバ７０Ａは、乱数生成器８０で生成された物理乱数を分散処理せずに、そのまま病院端末Ｈ１に共通鍵を送信する。
【０１２１】
図１５は、分散処理の動作手順例を示すシーケンス図である。図１５の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【０１２２】
図１５において、秘密分散保管システム５Ｅは、分散処理を開始する前に事前準備を行う。事前準備では、先ず、病院端末Ｈ１と代理サーバ７０Ａとの間で公知の機器認証および通信路の形成が行われる（Ｔ１０１）。機器認証は、例えば公開鍵暗号方式を用いて行われる。また、病院端末Ｈ１と代理サーバ７０Ａとの間でネゴシエーションが行われ、データ通信可能な通信路が形成される。この通信路には、例えばＶＰＮが利用される。
【０１２３】
同様に、病院端末Ｈ１とメインコントローラ１０との間で公知の機器認証および通信路の形成が行われる（Ｔ１０２）。代理サーバ７０ＡとコントローラＣ１との間で公知の機器認証および通信路の形成が行われる（Ｔ１０３）。代理サーバ７０ＡとコントローラＣ２以降のコントローラとの間でも同様の機器認証および通信路の形成が行われ、最終的に代理サーバ７０ＡとコントローラＣｎとの間で公知の機器認証および通信路の形成が行われる（Ｔ１０４）。
【０１２４】
また同様に、メインコントローラ１０とコントローラＣ１との間で公知の機器認証および通信路の形成が行われる（Ｔ１０５）。メインコントローラ１０とコントローラＣ２以降のコントローラとの間でも同様の機器認証および通信路の形成が行われ、最終的にメインコントローラ１０とコントローラＣｎとの間で公知の機器認証および通信路の形成が行われる（Ｔ１０６）。
【０１２５】
分散処理が開始される際、病院端末Ｈ１は、元データである病院データＯＤのファイル情報（ファイル名およびデータ量を含む）を代理サーバ７０Ａに送信する（Ｔ１０７）。代理サーバ７０Ａは、病院端末Ｈ１から病院データＯＤのファイル情報を受信すると、このファイル情報を基に、乱数生成器８０で生成された物理乱数を取得して保管する（Ｔ１０８）。例えば暗号アルゴリズムの一例としてバーナム暗号が使用される場合、乱数生成器８０は、病院データのサイズ長（桁数）と同じサイズ長を有する物理乱数を生成する。代理サーバ７０Ａは、物理乱数を分散処理し、複数（例えばｎ個）の分散された共通鍵を生成する。
【０１２６】
代理サーバ７０Ａは、コントローラＣ１〜Ｃｎのそれぞれに対し、ｎ個に分散された共通鍵（以下「物理乱数ファイル」）のそれぞれを１対１となるように対応付けて送信する（Ｔ１０９，Ｔ１１０）。例えば、代理サーバ７０Ａは、第１の物理乱数ファイルを第１のコントローラに送信し、第２の物理乱数ファイルを第２のコントローラに送信し、同様にして第ｎの物理乱数ファイルを第ｎのコントローラに送信する。コントローラＣ１〜Ｃｎのそれぞれは、自コントローラに対応するシェアホルダＳ１〜Ｓｎのそれぞれに、代理サーバ７０Ａから受信した、ｎ個に分散された共通鍵のうちいずれかを送信して保管する。この分散された共通鍵のヘッダ情報には、病院端末Ｈ１の病院データＯＤのファイル名が含まれる。これにより、後述する病院データＯＤの分散データと、分散された共通鍵とは、同一のファイル名（具体的には、病院データＯＤのファイル名）で対応付けられる。
【０１２７】
ここで、コントローラＣ１〜Ｃｎのそれぞれは、代理サーバ７０Ａから受信した、分散された共通鍵（物理乱数ファイル）を記憶する際、分散された共通鍵（物理乱数ファイル）の使用状態として未使用状態を示す状態フラグの値を「１」に設定する。この状態フラグの値は、後述するように、暗号化された病院データの分散データ（暗号化分散データ）を分散された共通鍵（物理乱数ファイル）で復号して、平文データである分散データをシェアホルダＳ１〜Ｓｎのそれぞれに保管する際、「０」に変更される。つまり、状態フラグの値が「１」か「０」かによって、分散された共通鍵（物理乱数ファイル）が未使用であるか使用済みであるかが認識される。これにより、病院データの分散データが保管される前に一連の処理が中断された場合、状態フラグの値が「１」である分散された共通鍵（物理乱数ファイル）を消去することが可能であり、病院データの分散データの保管に使用されない分散乱数データが徒に残ってしまうことを回避できる。従って、メモリの使用効率を上げることができる。また、コントローラＣ１〜Ｃｎのそれぞれは、状態フラグの値が「１」である物理乱数ファイル（分散乱数データ）が無い場合、暗号化分散データの受信を拒否でき、エラーを検知できる。
【０１２８】
代理サーバ７０Ａは、コントローラＣ１〜Ｃｎのそれぞれに、分散された共通鍵を送信した後に病院端末Ｈ１に共通鍵を送信する（Ｔ１１１）。病院端末Ｈ１は、分散された共通鍵をメモリ１２あるいは記録装置１３に記憶する。なお、代理サーバ７０Ａは、事前準備の段階で、乱数生成器８０から物理乱数を取得して生成してもよい。
【０１２９】
病院端末Ｈ１は、メモリ１２あるいは記録装置１３に記憶された共通鍵を用いて病院データＯＤを暗号化し、暗号化された病院データＥ（ＯＤ）を得る（Ｔ１１２）。病院端末Ｈ１は、暗号化された病院データＥ（ＯＤ）をメインコントローラ１０に送信する（Ｔ１１３）。メインコントローラ１０は、暗号化された病院データＥ（ＯＤ）を受信する。
【０１３０】
メインコントローラ１０は、例えば暗号化された病院データＥ（ＯＤ）を受信した時点で乱数生成器２０により生成された物理乱数を取得し、記録装置１３に保管する。なお、メインコントローラ１０は、分散処理の実行後に物理乱数を削除してよい。また、メインコントローラ１０は、この段階で生成された物理乱数を取得してもよいし、事前準備で物理乱数を取得してもよい。
【０１３１】
メインコントローラ１０は、この物理乱数を用いて分散処理を行い、複数の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれとそれぞれの暗号化された分散データに対応する分散情報の組を生成する（Ｔ１１４）。メインコントローラ１０は、複数の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれと対応する分散情報の組を、対応するコントローラＣ１〜Ｃｎのそれぞれに送信する（Ｔ１１５，Ｔ１１６）。
【０１３２】
コントローラＣ１〜Ｃｎのそれぞれは、複数の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれと対応する分散情報の組を受信した後、記録装置５３に記憶された分散された共通鍵を用いて復号し、平文データである分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれを取得し、対応するシェアホルダＳ１〜Ｓｎのそれぞれに保管する。ここで、暗号化された分散データと分散された共通鍵とは、上述したように、ファイル名で対応付けられる。
【０１３３】
メインコントローラ１０は、分散処理を終えると、病院端末Ｈ１に病院データＯＤの分散処理が終了したことを表す終了通知を送信する（Ｔ１１７）。コントローラＣ１〜Ｃｎのそれぞれは、状態フラグの値を、分散された共通鍵の使用済みを示す値である「０」に変更する（Ｔ１１８，Ｔ１１９）。なお、ステップＴ１１７とステップＴ１１８，Ｔ１１９の処理は、逆の順番で行われてもよい。
【０１３４】
図１６は、復元処理の動作手順例を示すシーケンス図である。図１６の説明では、病院端末の一例として病院端末Ｈ１を例示する。
【０１３５】
図１６において、復元処理は、図１５に示した分散処理が行われた後（例えば半年後等）の任意の時期に行われる。秘密分散保管システム５Ｅは、復元処理を開始する前に分散処理の開始前と同様の事前準備を行う（Ｔ１２１〜Ｔ１２６）。分散処理と同様であるので、事前準備の説明を省略する。
【０１３６】
復元処理が開始される際、病院端末Ｈ１は、ユーザの操作により、復元処理が要請される所望の元データ（例えば病院データＯＤ）のファイル名を指定し、メインコントローラ１０に通知する（Ｔ１２７）。このファイル名の指定は平文データを用いて行われてよい。
【０１３７】
メインコントローラ１０は、コントローラＣ１〜Ｃｎのそれぞれに対し、病院端末Ｈ１により指定されたファイル名に対応する分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれのヘッダ情報だけの呼び出しを行う（Ｔ１２８，Ｔ１２９）。コントローラＣ１〜Ｃｎのそれぞれは、シェアホルダＳ１〜Ｓｎのそれぞれに保管されている個々の異なる分散データＨ１Ｄ１〜Ｈ１Ｄｎのそれぞれのヘッダ情報と対応する分散情報の組を読み出してメインコントローラ１０に送信する。メインコントローラ１０は、これらのヘッダ情報と対応する分散情報の組を基に、病院データＯＤのヘッダ情報を復元する（Ｔ１３０）。メインコントローラ１０は、復元したヘッダ情報に含まれるファイルサイズ（データ量）を取得し、病院端末Ｈ１にデータ量の情報を送信する（Ｔ１３１）。
【０１３８】
病院端末Ｈ１は、復元する病院データＯＤのファイル名およびデータ量を指定して代理サーバ７０Ａに通知する（Ｔ１３２）。代理サーバ７０Ａは、病院端末Ｈ１から病院データＯＤのファイル名およびデータ量を受信すると、このファイル情報を基に乱数生成器８０で生成される物理乱数を取得する（Ｔ１３３）。ファイル名およびデータ量を用いて指定することで、物理乱数と病院データとの対応、および物理乱数のデータサイズが明確になる。代理サーバ７０Ａは、乱数生成器８０で生成された物理乱数の分散処理を行い、分散された共通鍵を記録装置７３に記憶する。
【０１３９】
代理サーバ７０Ａは、コントローラＣ１〜Ｃｎのそれぞれに、分散された共通鍵を送信する（Ｔ１３４，Ｔ１３５）。コントローラＣ１〜Ｃｎのそれぞれは、対応するシェアホルダＳ１〜Ｓｎのそれぞれに、分散された共通鍵を一時的に保管する。この分散された共通鍵のヘッド情報には、病院端末Ｈ１の病院データＯＤのファイル名が含まれる。代理サーバ７０Ａは、病院端末Ｈ１に共通鍵を送信する（Ｔ１３６）。病院端末Ｈ１は、共通鍵をメモリ１２あるいは記録装置１３に記憶する。
【０１４０】
病院端末Ｈ１は、復元する病院データＯＤのファイル名を指定してメインコントローラ１０に通知する（Ｔ１３７）。メインコントローラ１０は、コントローラＣ１〜Ｃｎのそれぞれに、分散データの取得要求を送信する。コントローラＣ１〜Ｃｎのそれぞれは、この取得要求に応じ、対応するシェアホルダＳ１〜Ｓｎのそれぞれに保管された分散データＨ１Ｄ１〜Ｈ１Ｄｎのいずれかと対応する分散情報の組を読み出す。コントローラＣ１〜Ｃｎのそれぞれは、記録装置５３に記憶されている分散された共通鍵を用いて、対応する分散データＨ１Ｄ１〜Ｈ１Ｄｎのいずれかを暗号化し、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれを得る。コントローラＣ１〜Ｃｎのそれぞれは、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれと対応する分散情報の組をメインコントローラ１０に送信する（Ｔ１３８，Ｔ１３９）。
【０１４１】
メインコントローラ１０は、コントローラＣ１〜Ｃｎのそれぞれから暗号化された分散データと対応する分散情報の組を受信すると、それぞれの暗号化された分散データに対応する分散情報を用いて、暗号化された病院データを復元するための復元処理を行う。これにより、メインコントローラ１０は、暗号化された病院データＥ（ＯＤ）を得ることができる（Ｔ１４０）。メインコントローラ１０は、復元により得られた暗号化された病院データＥ（ＯＤ）を病院端末Ｈ１に送信する（Ｔ１４１）。
【０１４２】
病院端末Ｈ１は、ステップＴ１３６でメモリ１２あるいは記録装置１３に記憶された共通鍵を用いて、暗号化された病院データＥ（ＯＤ）を復号し、病院データＯＤを得る（Ｔ１４２）。病院端末Ｈ１は、平文データである病院データを取得できる。
【０１４３】
このように、実施の形態３に係る秘密分散保管システム５Ｅでは、コントローラＣ１〜Ｃｎのそれぞれに分散された共通鍵が渡るので、コントローラＣ１〜Ｃｎのそれぞれの管理者は、他のコントローラに保管されている分散された共通鍵を知ることができない。従って、各コントローラの管理者による機密情報の漏洩を排除でき、よりセキュリティの高いシステムを構築できる。また、実施の形態２と同様、分散処理を行う場合、病院端末から受け取る病院データが暗号化されているので、メインコントローラ１０の管理者は、病院データの内容を知ることができない。また、メインコントローラ１０は、どの病院データにどの物理乱数を用いられたかが分からない。同様に、復元処理を行う場合、メインコントローラ１０の管理者は、コントローラＣ１〜Ｃｎのそれぞれから暗号化された分散データを受け取るので、復元処理しても病院データの内容を知ることができない。つまり、メインコントローラ１０には、暗号化されたデータしか渡らないので、メインコントローラ１０の管理者は、機密性の高い病院データを平文データの形式で知ることができない。従って、メインコントローラ１０の管理者による機密情報の漏洩を排除できる。
【０１４４】
（データ構造例）
次に、上述した実施の形態１〜３に係る各種のデータの構造例について、図１７、図１８および図１９を参照して説明する。図１７〜図１９の説明においては、説明を分かり易くするために、コントローラおよびシェアホルダの配置数は「４」とする。
【０１４５】
図１７は、元データＯＤ、物理乱数Ａ、および分散データＯＤＤの一例を示すテーブルである。
【０１４６】
一例として、元データＯＤ（例えば病院データ）は、例えば８個の元データＯＤ１，元データＯＤ２，…，元データＯＤ８が連接されて構成される。
【０１４７】
同様に、物理乱数Ａは、分散処理用に乱数生成器２０により生成され、例えば８個の乱数Ａ１，乱数Ａ２，…，乱数Ａ８が連接されて構成される。図１７に示すように、例えばバーナム暗号が使用される場合、元データＯＤのサイズ長と物理乱数Ａのサイズ長とは同一であるため、元データＯＤ１と乱数Ａ１、元データＯＤ２と乱数Ａ２、…、元データＯＤ８と乱数Ａ８とはともに同一のサイズ長を有する。
【０１４８】
ここで、メインコントローラ１０により、元データＯＤ１〜ＯＤ８のそれぞれと対応する乱数Ａ１〜Ａ８のそれぞれとが用いて分散処理が実行される際、図１７に示す４個の分散データＯＤ１Ｄ，ＯＤ２Ｄ，ＯＤ３Ｄ，ＯＤ４Ｄから構成される分散データＯＤＤが得られる。
【０１４９】
分散データＯＤ１Ｄは、元データＯＤ１と元データＯＤ５と乱数Ａ１と乱数Ａ５とが排他的論理和（つまり、ＸＯＲ処理）されることで、「元データＯＤ１  ＸＯＲ  元データＯＤ５  ＸＯＲ  乱数Ａ１  ＸＯＲ  乱数Ａ５」のように生成される。なお、分散データＯＤ１Ｄの構成例は、図１７に示す例に限定されない。従って、分散データＯＤ１Ｄは、対応するシェアホルダとして、例えばシェアホルダＳ１にて保管される。
【０１５０】
同様に、元データＯＤ２と元データＯＤ６と乱数Ａ２と乱数Ａ６とが排他的論理和（つまり、ＸＯＲ処理）されることで、「元データＯＤ２  ＸＯＲ  元データＯＤ６  ＸＯＲ  乱数Ａ２  ＸＯＲ  乱数Ａ６」のように生成される。なお、分散データＯＤ２Ｄの構成例は、図１７に示す例に限定されない。従って、分散データＯＤ２Ｄは、対応するシェアホルダとして、例えばシェアホルダＳ２にて保管される。
【０１５１】
同様に、元データＯＤ３と元データＯＤ７と乱数Ａ３と乱数Ａ７とが排他的論理和（つまり、ＸＯＲ処理）されることで、「元データＯＤ３  ＸＯＲ  元データＯＤ７  ＸＯＲ  乱数Ａ３  ＸＯＲ  乱数Ａ７」のように生成される。なお、分散データＯＤ３Ｄの構成例は、図１７に示す例に限定されない。従って、分散データＯＤ３Ｄは、対応するシェアホルダとして、例えばシェアホルダＳ３にて保管される。
【０１５２】
同様に、元データＯＤ４と元データＯＤ８と乱数Ａ４と乱数Ａ８とが排他的論理和（つまり、ＸＯＲ処理）されることで、「元データＯＤ４  ＸＯＲ  元データＯＤ８  ＸＯＲ  乱数Ａ４  ＸＯＲ  乱数Ａ８」のように生成される。なお、分散データＯＤ４Ｄの構成例は、図１７に示す例に限定されない。従って、分散データＯＤ４Ｄは、対応するシェアホルダとして、例えばシェアホルダＳ４にて保管される。
【０１５３】
図１８は、物理乱数Ｂ、および暗号化された元データ（病院データ）Ｅ（ＯＤ）の一例を示すテーブルである。
【０１５４】
物理乱数Ｂは、通信の暗号化用あるいは復号用に乱数生成器８０により生成され、例えば８個の乱数Ｂ１，乱数Ｂ２，…，乱数Ｂ８が連接されて構成される。図１８に示すように、例えばバーナム暗号が使用される場合、元データＯＤのサイズ長と物理乱数Ｂのサイズ長とは同一であるため、元データＯＤ１と乱数Ｂ１、元データＯＤ２と乱数Ｂ２、…、元データＯＤ８と乱数Ｂ８とはともに同一のサイズ長を有する。
【０１５５】
ここで、病院端末（例えば病院端末Ｈ１）により、元データＯＤ１〜ＯＤ８のそれぞれと対応する乱数Ｂ１〜Ｂ８のそれぞれとを用いて暗号化の処理が実行される際、図１８に示す８個の暗号１〜８から構成される暗号化された病院データＥ（ＯＤ）が得られる。
【０１５６】
暗号１は、元データＯＤ１と乱数Ｂ１とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ１  ＸＯＲ  元データＯＤ１」のように生成される。なお、暗号１の構成例は、図１８に示す例に限定されない。
【０１５７】
同様に、暗号２は、元データＯＤ２と乱数Ｂ２とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ２  ＸＯＲ  元データＯＤ２」のように生成される。なお、暗号２の構成例は、図１８に示す例に限定されない。
【０１５８】
同様に、暗号３は、元データＯＤ３と乱数Ｂ３とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ３  ＸＯＲ  元データＯＤ３」のように生成される。なお、暗号３の構成例は、図１８に示す例に限定されない。
【０１５９】
同様に、暗号４は、元データＯＤ４と乱数Ｂ４とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ４  ＸＯＲ  元データＯＤ４」のように生成される。なお、暗号４の構成例は、図１８に示す例に限定されない。
【０１６０】
同様に、暗号５は、元データＯＤ５と乱数Ｂ５とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ５  ＸＯＲ  元データＯＤ５」のように生成される。なお、暗号５の構成例は、図１８に示す例に限定されない。
【０１６１】
同様に、暗号６は、元データＯＤ６と乱数Ｂ６とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ６  ＸＯＲ  元データＯＤ６」のように生成される。なお、暗号６の構成例は、図１８に示す例に限定されない。
【０１６２】
同様に、暗号７は、元データＯＤ７と乱数Ｂ７とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ７  ＸＯＲ  元データＯＤ７」のように生成される。なお、暗号７の構成例は、図１８に示す例に限定されない。
【０１６３】
同様に、暗号８は、元データＯＤ８と乱数Ｂ８とが排他的論理和（つまり、ＸＯＲ処理）されることで、「乱数Ｂ８  ＸＯＲ  元データＯＤ８」のように生成される。なお、暗号２の構成例は、図１８に示す例に限定されない。
【０１６４】
実施の形態２あるいは実施の形態３では、暗号化された元データ（病院データ）Ｅ（ＯＤ）は、病院端末（例えば病院端末Ｈ１）において生成され、病院端末Ｈ１からメインコントローラ１０に対して送信される。メインコントローラ１０は、暗号化された元データ（病院データ）Ｅ（ＯＤ）を、乱数生成器２０により生成された物理乱数Ａを用いて分散処理を行い、図１９に示す４個の暗号化された分散データ（暗号１Ｄ，暗号２Ｄ，暗号３Ｄ，暗号４Ｄ）を生成する。
【０１６５】
図１９は、暗号化された元データ（病院データ）Ｅ（ＯＤ）が分散処理されて生成された、分散された暗号化分散データＥ（ＯＤＤ）の一例を示すテーブルである。
【０１６６】
暗号化分散データＥ（ＯＤＤ）は、例えば４個の暗号１Ｄ，暗号２Ｄ，暗号３Ｄ，暗号４Ｄから構成される。暗号１Ｄ〜暗号４Ｄは、それぞれ分散された、暗号化された元データを示す。
【０１６７】
実施の形態３において、メインコントローラ１０は、図１７に示す分散データの生成アルゴリズム（分散処理方法）に従い、暗号化された元データ（病院データ）Ｅ（ＯＤ）を、乱数生成器２０により生成された物理乱数Ａを用いて分散処理を行う。これにより、例えば４個の分散された、暗号化された元データ（具体的には、暗号１Ｄ〜暗号４Ｄ）が生成される。
【０１６８】
暗号１Ｄは、暗号１と暗号５と乱数Ａ１と乱数Ａ５とが排他的論理和（つまり、ＸＯＲ処理）されることで、「暗号１  ＸＯＲ  暗号５  ＸＯＲ  乱数Ｂ１  ＸＯＲ  乱数Ｂ５」のように生成される。なお、暗号１Ｄの構成例は、図１９に示す例に限定されない。
【０１６９】
暗号２Ｄは、暗号２と暗号６と乱数Ａ２と乱数Ａ６とが排他的論理和（つまり、ＸＯＲ処理）されることで、「暗号２  ＸＯＲ  暗号６  ＸＯＲ  乱数Ｂ２  ＸＯＲ  乱数Ｂ６」のように生成される。なお、暗号２Ｄの構成例は、図１９に示す例に限定されない。
【０１７０】
暗号３Ｄは、暗号３と暗号７と乱数Ａ３と乱数Ａ７とが排他的論理和（つまり、ＸＯＲ処理）されることで、「暗号３  ＸＯＲ  暗号７  ＸＯＲ  乱数Ｂ３  ＸＯＲ  乱数Ｂ７」のように生成される。なお、暗号３Ｄの構成例は、図１９に示す例に限定されない。
【０１７１】
暗号４Ｄは、暗号４と暗号８と乱数Ａ４と乱数Ａ８とが排他的論理和（つまり、ＸＯＲ処理）されることで、「暗号４  ＸＯＲ  暗号８  ＸＯＲ  乱数Ｂ４  ＸＯＲ  乱数Ｂ８」のように生成される。なお、暗号４Ｄの構成例は、図１９に示す例に限定されない。
【０１７２】
従って、例えば４台のコントローラのそれぞれに送られる、分散された暗号化された元データ（暗号１Ｄ，暗号２Ｄ，暗号３Ｄ，暗号４Ｄ）は、「物理乱数Ｂの分散処理により生成された分散データ」である分散乱数データ（「乱数Ｂ１  ＸＯＲ  乱数Ｂ５」，「乱数Ｂ２  ＸＯＲ  乱数Ｂ６」，「乱数Ｂ３  ＸＯＲ  乱数Ｂ７」，「乱数Ｂ４  ＸＯＲ  乱数Ｂ８」）と、「元データＯＤの分散処理により生成された分散データ」である分散データＯＤ１Ｄ，ＯＤ２Ｄ，ＯＤ３Ｄ，ＯＤ４Ｄとを排他論理和（ＸＯＲ処理）したものとなる。
【０１７３】
従って、４台のコントローラのそれぞれは、代理サーバ７０Ａから受け取った分散処理された乱数（「乱数Ｂ１  ＸＯＲ  乱数Ｂ５」，「乱数Ｂ２  ＸＯＲ  乱数Ｂ６」，「乱数Ｂ３  ＸＯＲ  乱数Ｂ７」，「乱数Ｂ４  ＸＯＲ  乱数Ｂ８」）と、メインコントローラ１０から受け取った暗号化分散データ（暗号１Ｄ，暗号２Ｄ，暗号３Ｄ，暗号４Ｄ）とを用いて、平文データである分散データＯＤ１Ｄ，ＯＤ２Ｄ，ＯＤ３Ｄ，ＯＤ４Ｄを生成できる。４台のコントローラのそれぞれは、対応する４台のシェアホルダのいずれかに平文データである分散データＯＤ１Ｄ〜ＯＤ４Ｄのそれぞれを保管する。
【０１７４】
以上により、秘密分散保管システム５Ｅは、ｎ台のシェアホルダＳ１〜Ｓｎのそれぞれに対応して設けられるｎ台のコントローラＣ１〜Ｃｎのそれぞれと、ｎ台のコントローラＣ１〜Ｃｎのそれぞれ、少なくとも１台の病院端末Ｈ１〜Ｈｎのそれぞれ、および乱数生成器２０との間で通信可能に接続されるメインコントローラ１０と、ｎ台のコントローラＣ１〜Ｃｎのそれぞれ、病院端末Ｈ１〜Ｈｎのそれぞれ、および乱数生成器８０との間で通信可能に接続される代理サーバ７０Ａとを備える。代理サーバ７０Ａは、病院データのファイル名およびデータ量（元データの書誌情報の一例）を病院端末（例えば病院端末Ｈ１）から受信すると、乱数生成器８０により発生された共通鍵（第２物理乱数）を分散処理してｎ個の分散処理された共通鍵（分散乱数データ）を生成する。代理サーバ７０Ａは、ｎ個の分散処理された共通鍵のそれぞれを、対応するｎ台のコントローラＣ１〜Ｃｎに送るとともに、共通鍵を病院端末Ｈ１に送る。メインコントローラ１０は、共通鍵を用いて暗号化された病院データＥ（ＯＤ）を病院端末Ｈ１から受信すると、乱数生成器２０により発生された物理乱数を取得し、この物理乱数を用いて、暗号化された病院データＥ（ＯＤ）を分散処理してｎ個の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）（暗号化分散データ）を生成する。メインコントローラ１０は、ｎ個の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれを、対応するｎ台のコントローラＣ１〜Ｃｎに送る。
【０１７５】
これにより、秘密分散保管システム５Ｅでは、代理サーバ７０Ａは、乱数生成器８０により得られた物理乱数を共通鍵として使用し、その共通鍵を分散処理してコントローラＣ１〜Ｃｎのそれぞれに、メインコントローラ１０の管理者が知得することなく、分散処理された共通鍵を安全に渡すことが可能となる。従って、秘密分散保管システム５Ｅによれば、病院端末（例えば病院端末Ｈ１）が保持する秘匿性の高い病院データが分散処理される際に、メインコントローラ１０には、代理サーバ７０Ａ、病院端末およびそれぞれのコントローラしか知り得ない共通鍵により病院データが暗号化された上で渡されるので、メインコントローラ１０の管理者は病院データの内容の知得を防ぐことができる。
【０１７６】
また、ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、自装置（自コントローラ）に対応する暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれ（具体的には、いずれか一つ）をメインコントローラ１０から受信すると、自装置に対応する分散処理された共通鍵を用いて復号し、復号により得られた分散データを対応するシェアホルダＳ１〜Ｓｎに保管する。これにより、秘密分散保管システム５Ｅによれば、シェアホルダＳ１〜Ｓｎに分散データを保管する際、いずれの暗号化された分散データを復号する際も、対応する分散処理された共通鍵を容易に特定できる。
【０１７７】
また、代理サーバ７０Ａは、病院端末Ｈ１からの病院データのデータ量（サイズ量情報）を含む復元指示に応じて、乱数生成器８０により生成された共通鍵を分散処理してｎ個の分散処理された共通鍵（分散乱数データ）を生成する。代理サーバ７０Ａは、ｎ個の分散処理された共通鍵のそれぞれを、対応するｎ台のコントローラＣ１〜Ｃｎに送るとともに、共通鍵を病院端末Ｈ１に送る。ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、自装置に対応するシェアホルダＳ１〜Ｓｎのそれぞれから受信した分散データＨ１Ｄ１〜Ｈ１Ｄｎを、自装置が代理サーバ７０Ａから受信した分散処理された共通鍵を用いて暗号化し、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）のそれぞれを生成してメインコントローラ１０に送る。メインコントローラ１０は、ｎ台のコントローラＣ１〜Ｃｎのそれぞれから受信した、暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）から暗号化された病院データＥ（ＯＤ）を復元して病院端末Ｈ１に送る。これにより、代理サーバ７０Ａは、乱数生成器８０を用いて得られる共通鍵を分散処理して各コントローラに分散処理された共通鍵を渡す。従って、復元処理する場合、共通鍵を安全に各コントローラに渡すことができる。
【０１７８】
また、メインコントローラ１０は、病院端末Ｈ１からの復元指示に応じて、ｎ台のコントローラＣ１〜Ｃｎのそれぞれが対応するシェアホルダＳ１〜Ｓｎから受信した分散データのファイル名（書誌情報の一例）を、ｎ台のコントローラＣ１〜Ｃｎからそれぞれ受信する。メインコントローラ１０は、病院データの書誌情報を復元し、病院データの書誌情報から病院データのデータ量（サイズ量情報）を抽出する。これにより、シェアホルダＳ１〜Ｓｎに保管される分散データを復元する際も、対応する分散処理された共通鍵を容易に特定して分散データを暗号化できる。
【０１７９】
また、ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、対応する分散処理された共通鍵を保管する際、その分散処理された共通鍵（分散乱数データ）の使用状態を示す状態フラグの値を「１」に設定する。その後、ｎ台のコントローラＣ１〜Ｃｎのそれぞれは、分散処理された共通鍵を用いてｎ個の暗号化された分散データＥ（Ｈ１Ｄ１）〜Ｅ（Ｈ１Ｄｎ）をそれぞれ復号し、復号した分散データを対応シェアホルダＳ１〜Ｓｎに保管した後、使用済みを表す情報、つまり状態フラグの値を「０」に設定する。これにより、病院データの分散データが保管される前に一連の処理が中断された場合、状態フラグの値が「１」である分散処理された共通鍵を消去することで、保管に使用されない分散処理された共通鍵が残ってしまうことを回避できる。つまり、メモリの使用効率を上げることができる。また、コントローラＣ１〜Ｃｎのそれぞれは、状態フラグの値が「１」である分散処理された共通鍵が無い場合、暗号化された分散データの受信を拒否でき、速やかにエラーを発生できる。
【０１８０】
以上、図面を参照しながら各種の実施の形態について説明したが、本開示はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例、修正例、置換例、付加例、削除例、均等例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。また、発明の趣旨を逸脱しない範囲において、上述した各種の実施の形態における各構成要素を任意に組み合わせてもよい。
【０１８１】
例えば、上記実施形態では、ユーザとして病院端末を例示したが、これに限らず、公的機関や民間の研究施設等、病院データを扱う組織において、本開示は適用可能である。
【産業上の利用可能性】
【０１８２】
本開示は、秘密分散を必要とするユーザの数に拘わらず、秘密分散の際に用いる物理乱数を発生する物理乱数生成器の設置に伴うコストアップを抑制し、秘匿されるべき元データの安全な保管の実現を支援するクラウドサービスを用いた安全な秘密分散保管システムとして有用である。
【符号の説明】
【０１８３】
５  秘密分散保管システム
１０  メインコントローラ
１１、４１、５１、７１  プロセッサ
１２、４２、５２、７２  メモリ
１３、４３、５３、７３  記録装置
１４、４４、５４、７４  通信回路
２０  乱数生成器
７０  代理サーバ
Ｃ１、Ｃｎ  コントローラ
Ｈ１、Ｈｍ  病院端末
Ｓ１、Ｓｎ  シェアホルダ
【図１】
2020134841.tif 000003
【図２】
2020134841.tif 000004
【図３】
2020134841.tif 000005
【図４】
2020134841.tif 000006
【図５】
2020134841.tif 000007
【図６】
2020134841.tif 000008
【図７】
2020134841.tif 000009
【図８】
2020134841.tif 000010
【図９】
2020134841.tif 000011
【図１０】
2020134841.tif 000012
【図１１】
2020134841.tif 000013
【図１２】
2020134841.tif 000014
【図１３】
2020134841.tif 000015
【図１４】
2020134841.tif 000016
【図１５】
2020134841.tif 000017
【図１６】
2020134841.tif 000018
【図１７】
2020134841.tif 000019
【図１８】
2020134841.tif 000020
【図１９】
2020134841.tif 000021