以下、適宜図面を参照しながら、本開示に係る秘密分散保管システムおよび秘密分散保管方法の構成および作用を具体的に開示した実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。なお、添付図面および以下の説明は、当業者が本開示を十分に理解するために提供されるのであって、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
本開示に係る秘密分散システムは、秘匿データである元データに対して秘密分散処理(以下「分散処理」)を行うことで、生成された複数の分散データを複数の保管装置に保管(保存)する。秘密分散システムは、複数の分散データを用いて復元処理を行うことで、秘匿データである元データを復元する。
以下の実施の形態では、秘匿データである元データの一例として、病院で管理される患者の氏名、年齢、性別、住所、職業、既往歴等の個人情報を含む電子カルテデータ(以下「病院データ」)を例示して説明する。但し、以下の実施の形態においては、元データは秘匿データであれば、上述した病院データに限定されない。
(実施の形態1)
図1は、実施の形態1に係る秘密分散保管システム5のシステム構成例を示す図である。秘密分散保管システム5は、メインコントローラ10と、乱数生成器20と、複数の病院端末H1,…,Hmと、複数のシェアホルダS1,…,Snとを含む構成である。m,nはともに2以上の整数であり、同一の値でも異なる値でもよい。
複数の病院端末H1~Hmのそれぞれは、ネットワークNW1を介して、メインコントローラ10との間で通信可能に接続される。ネットワークNW1は、例えばインターネット等の広域ネットワークでよい。また、ネットワークNW1は、病院端末H1~Hmのそれぞれとメインコントローラ10との間を仮想的に接続するVPN(Virtual Private Network)等のプライベートネットワークでもよいし、専用線でもよい。
保管装置の一例としての複数のシェアホルダS1~Snのそれぞれは、ネットワークNW2を介して、メインコントローラ10との間で通信可能に接続される。ネットワークNW2は、ネットワークNW1と同様、例えばインターネット等の広域ネットワークでよい。また、ネットワークNW2は、シェアホルダS1~Snのそれぞれとメインコントローラ10との間を仮想的に接続するVPN等のプライベートネットワークでもよいし、専用線でもよい。
ユーザ端末の一例としての病院端末H1~Hmは、説明を簡単にするために、それぞれ同一の内部構成を有し、必要に応じて病院端末H1を例示して説明する。病院端末H1~Hmのそれぞれは、電子カルテデータ等の病院データを管理する管理者により使用されるユーザ端末である。なお、ここでは、ユーザ端末として、病院端末を例示しているが、秘匿データを取り扱う企業あるいは組織において使用される業務用端末でもよい。従って、秘匿データである元データは、病院データである他、例えば個人の年金記録データ、製品の設計データ、実験データ、未公開の画像データ、未発表の音楽データ等が挙げられる。
乱数生成器20は、物理的に変動する値(言い換えると、悪意ある第三者が容易に推測することが困難な値)を乱数データとして発生する物理乱数生成器である。乱数データは、例えば、熱雑音あるいは量子ゆらぎ等のデータが挙げられる。なお、秘密分散保管システム5において、乱数生成器20は、物理乱数生成器の方が好ましいが、擬似乱数生成器でもよい。なお、本方式にランプ型秘密分散法を使用した場合、元データの一部を本方式の乱数の一部としてもよい。
メインコントローラ10は、それぞれの病院端末H1~Hmのうち少なくとも1台(例えば病院端末H1)から送信された病院データを受信すると、乱数生成器20により発生された物理乱数を用いて分散処理することで、複数(例えばn個)の分散データを生成する。メインコントローラ10は、乱数生成器20で生成された物理乱数を記憶する記録装置13(図2参照)を有し、この物理乱数を用いて病院データを分散処理する。メインコントローラ10は、分散処理の実行時に、元データ(病院データ)をどのようにして分散処理したかを示す分散情報を分散データの生成数(例えばn個)と同数(例えばn個)分だけ生成する。なお、分散情報は、上述した分散データの生成方法に関する情報の他に、分散データの書誌的情報として、元データのファイル名、分散データのファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成(つまり、分散処理)に用いた物理乱数の一部、保管先の情報、保管先にアクセスするための認証情報等を含んでよい。
メインコントローラ10は、例えば、3個の分散データを生成した場合、第1の分散データと対応する第1の分散情報との組を第1のシェアホルダに保管し、第2の分散データと対応する第2の分散情報との組を第2のシェアホルダに保管し、同様に、第3の分散データと対応する第3の分散情報との組を第3のシェアホルダに保管する。
メインコントローラ10は、病院データ(元データの一例)に対して既に生成された複数の分散データとそれぞれの分散データに対応する分散情報とを用いて復元処理することで、元データ(つまり、病院データ)を復元する。なお、メインコントローラ10は、分散処理時に使用した物理乱数が記録装置13に記憶されている場合には、その物理乱数を用いて、複数の分散データから元の病院データを復元してもよい。
図2は、メインコントローラ10のハードウェア構成例を示すブロック図である。メインコントローラ10は、プロセッサ11と、メモリ12と、記録装置13と、通信回路14とを少なくとも含む構成である。
プロセッサ11は、例えばCPU(Central Processing Unit)、DSP(Digital Signal Processor)あるいはFPGA(Field Programmable Gate Array)を用いて構成され、メモリ12と協働してメモリ12に予め記憶されるプログラムおよびデータに従って動作する。
プロセッサ11は、通信回路14を介して乱数生成器20から受信した物理乱数を用いて、通信回路14を介して病院端末H1~Hmのうち少なくとも1台(例えば病院端末H1)から送られた病院データの分散処理を行う。プロセッサ11は、通信回路14を介して、分散処理により生成された同数個の分散データとその分散データに対応する分散情報との組を、それぞれ対応するシェアホルダS1~Snに送信する。
また、プロセッサ11は、複数のシェアホルダS1~Snのそれぞれから分散データと対応する分散情報との組を取得すると、復元処理に必要な所定値(閾値)個分、あるいは全ての分散データおよび分散情報の組を用いて、元データである病院データの復元処理を行う。
メモリ12は、例えばRAM(Random Access Memory)とROM(Read Only Memory)とを用いて構成され、メインコントローラ10の動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。RAMは、例えば、メインコントローラ10の動作時に使用されるワークメモリである。ROMは、例えば、メインコントローラ10を制御するためのプログラムおよびデータを予め記憶して保持する。
記録装置13は、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)を用いて構成され、乱数生成器20で生成された物理乱数を記憶する。
通信回路14は、メインコントローラ10との間で通信可能に接続された各種の機器との間で通信を行う回路を用いて構成される。通信回路14は、ネットワークNW1を介して、複数の病院端末H1~Hmのそれぞれとの間でデータ通信を行う。通信回路14は、ネットワークNW2を介して、複数のシェアホルダS1~Snのそれぞれとの間でデータ通信を行う。なお、メインコントローラ10と乱数生成器20とは、有線あるいは無線で接続されてよい。
シェアホルダS1~Snのそれぞれは、メインコントローラ10により生成された複数の分散データのうちいずれかの分散データを保管する記録装置である。シェアホルダS1~Snのそれぞれは、メインコントローラ10から見てオンライン上のクラウドサーバであってもよいし、メインコントローラに内蔵されたストレージであってもよい。
図3は、シェアホルダS1~Snのハードウェア構成例を示すブロック図である。シェアホルダS1~Snのそれぞれは、同一の内部構成を有し、具体的にはプロセッサ41と、メモリ42と、記録装置43と、通信回路44とを少なくとも含む構成である。
プロセッサ41は、例えばCPU、DSPあるいはFPGAを用いて構成され、メモリ42と協働してメモリ42に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ41は、通信回路44を介してメインコントローラ10から送信されたいずれかの分散データおよび分散情報の組を受信すると、その分散データおよび分散情報の組を記録装置43に保管(保存)する。また、プロセッサ41は、通信回路44を介してメインコントローラ10から送信された分散データの取得要求を受けると、記録装置43に保管されていた分散データおよび分散情報の組を読み出して取得し、通信回路44を介してメインコントローラ10に送信する。
メモリ42は、例えばRAMとROMとを用いて構成され、シェアホルダS1~Snの動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。RAMは、例えば、シェアホルダS1~Snの動作時に使用されるワークメモリである。ROMは、例えば、シェアホルダS1~Snを制御するためのプログラムおよびデータを予め記憶して保持する。
記録装置43は、例えばHDDまたはSSDを用いて構成され、メインコントローラ10の分散処理により生成されたいずれかの分散データおよび分散情報の組を保管(保存)する。
通信回路44は、メインコントローラ10との間で通信を行う回路を用いて構成される。通信回路44は、ネットワークNW2を介して、メインコントローラ10との間でデータ通信を行う。
次に、実施の形態1に係る秘密分散保管システム5の分散処理および復元処理を説明する。
上述したように、従来の秘密分散システムでは、分散処理および復元処理は個々の病院内の病院端末において実行されていた。このため、個々の病院端末において乱数生成器20のような高価な乱数生成器が必要となり、病院における秘密分散システムの構築に伴うコストアップが避けられなかった。一方、実施の形態1に係る秘密分散保管システム5では、乱数生成器20はメインコントローラ10に対応して1つだけ設けられる。メインコントローラ10は、病院端末(例えば病院端末H1)から送信される元データ(つまり、病院データ)に対して分散処理を行う。
図4は、分散処理の動作手順例を示すシーケンス図である。図4の説明では、病院端末の一例として病院端末H1を例示する。
図4において、秘密分散保管システム5では、病院端末H1は、病院データODH1(元データの一例)の分散処理をメインコントローラ10に依頼(要求)する際、メインコントローラ10に平文データの病院データODH1を送信する(T1)。メインコントローラ10は、病院端末H1からネットワークNW1を介して、平文データの病院データODH1を受信する。
メインコントローラ10は、例えば病院データODH1を受信した時点で乱数生成器20により生成された物理乱数を取得し、記録装置13に記憶する(T2)。なお、メインコントローラ10は、取得された物理乱数を記録装置13に記憶せず、メモリ12に一時的に保存してよく、ステップT3の分散処理の実行後に物理乱数を削除してよい。但し、メインコントローラ10に復元に必要な情報を残さないために、取得された物理乱数は削除される方が好ましい。メインコントローラ10は、この物理乱数を用いて病院データODH1の分散処理を行い、シェアホルダS1~Snの配置数と一致するように複数(n個)の分散データH1D1~H1Dnとそれぞれの分散データに対応する分散情報との組を生成する(T3)。なお、メインコントローラ10は、ステップT3の分散処理を実行した後、元データである病院データODH1を削除することが好ましい。
メインコントローラ10は、ネットワークNW2を介して、生成された分散データH1D1と分散データH1D1に対応する分散情報との組をシェアホルダS1に送信する(T4)。シェアホルダS1は、メインコントローラ10から受信した、分散データH1D1と分散データH1D1に対応する分散情報との組を記録装置43に保管する(T5)。
同様に、メインコントローラ10は、他のシェアホルダに対してもステップT5と同様な処理を実行し、ネットワークNW2を介して、生成された分散データH1Dnと分散データH1Dnに対応する分散情報との組をシェアホルダSnに送信する(T6)。シェアホルダSnは、メインコントローラ10から受信した、分散データH1Dnと分散データH1Dnに対応する分散情報との組を記録装置43に保管する(T7)。シェアホルダS1~Snのそれぞれに保管される分散データは、平文データ(言い換えると、暗号化されていないデータ)である。
なお、メインコントローラ10が受信した時点で、その受信された病院データが病院端末H1において既に暗号化されていてもよく、分散データは、暗号化された分散データとなる。また、ここでは、病院端末H1からの病院データODH1に対し、分散処理を行う場合を示したが、他の病院端末からの病院データに対しても、同様に分散処理が可能である。
図5は、復元処理の動作手順例を示すシーケンス図である。図5の説明では、病院端末の一例として病院端末H1を例示する。
図5において、秘密分散保管システム5では、シェアホルダS1~Snのそれぞれは、対応する分散データH1D1~H1Dnのそれぞれを記録装置43に保管している(T11,T12)。病院端末H1は、病院データODH1(元データの一例)の復元処理をメインコントローラ10に依頼(要求)する際、復元処理の対象となる病院データのファイル名を指定する(T13)。
メインコントローラ10は、病院端末H1により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をシェアホルダS1に送信する(T14)。シェアホルダS1は、この取得要求に応じて、記録装置43に保管された分散データH1D1および対応する分散情報の組を読み出し、メインコントローラ10に返信する(T15)。
同様に、メインコントローラ10は、病院端末H1により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をシェアホルダSnに送信する(T16)。シェアホルダSnは、この取得要求に応じて、記録装置43に保管された分散データH1Dnおよび対応する分散情報を読み出し、メインコントローラ10に返信する(T17)。
このように、ステップT11~T17を経ることで、メインコントローラ10は、ネットワークNW2を介して、全てのシェアホルダS1~Snのそれぞれから送信された分散データおよび対応する分散情報の組を受信する。メインコントローラ10は、記録装置13に分散処理(ステップT3参照)時に用いた物理乱数が記憶されている場合には、その物理乱数を読み出して取得してもよい(T18)。なお、ステップT18で取得する物理乱数は分散データH1D1~H1Dnを復元するために必須ではないためステップT18は省略されてもよい。次に、メインコントローラ10は、複数の分散データH1D1~H1Dnのそれぞれを用いて復元処理を行い、元データである病院データODH1を復元する(T19)。なお、ステップT18で物理乱数を取得する場合は、この取得した物理乱数をステップT19での復元処理に用いてもよい。次に、メインコントローラ10は、復元した病院データODH1(つまり、所望の病院データ)を病院端末H1に送信する(T20)。なお、メインコントローラ10は、ステップT18の処理を省略してよい。つまり、メインコントローラ10は、ステップT2において記憶された物理乱数を保持し続ける必要はない。この場合、メインコントローラ10は、シェアホルダS1~Snのそれぞれから送信された分散データに対応する分散情報を用いて、元データである病院データODH1を復元できる。
病院端末H1は、メインコントローラ10から送信された病院データODH1を受信する(T21)。これにより、病院端末H1は、病院データODH1を安全に入手できる。
このように、実施の形態1の秘密分散保管システム5では、メインコントローラ10が、病院端末から送信された元データである病院データの分散処理および復元処理を行う。このため、乱数生成器20は、単一のメインコントローラ10に対応して近接して1台設置される。乱数生成器20は、セキュリティ上、メインコントローラ10に極力近接して設置される方が好ましい。このため、乱数生成器20は、メインコントローラ10内部に設けられてもよい。すなわち、メインコントローラ10自身が乱数生成器20の機能を有しても良い。なお、乱数生成器20は、メインコントローラ10から遠隔に設置され、ネットワーク(図示略)を介してメインコントローラ10と接続されてもよいが、メインコントローラ10および乱数生成器20間はセキュアなネットワークが好ましい。
また、各病院端末H1~Hmのそれぞれは、メインコントローラ10の構成を有することなく、それぞれの病院外に配置されるメインコントローラ10に対して元データの分散処理を依頼できる。従って、病院端末H1~Hmのそれぞれにメインコントローラ10および乱数生成器20の構成を有する場合と比べて、メインコントローラ10および乱数生成器20の配置数が1つずつで済むので、秘密分散保管システム5を低コストで構築できる。
以上により、秘密分散保管システム5は、少なくとも1台の病院端末H1~Hm、n台のシェアホルダS1~Snのそれぞれ、および乱数生成器20との間で通信可能に接続されるメインコントローラ10を有する。メインコントローラ10は、病院端末H1から送られる病院データODH1を受信すると、乱数生成器20により発生された物理乱数を取得し、物理乱数を用いて、病院データODH1を分散処理してn個の分散データH1D1~H1Dnを生成する。メインコントローラ10は、n個の分散データのそれぞれを、対応するn台のシェアホルダS1~Snに保管する。
これにより、秘密分散保管システム5は、元データの秘密分散を必要とする病院端末の数(つまり、ユーザの数)に拘わらず、秘密分散の際に用いる物理乱数を発生する乱数生成器20の設置に伴うコストアップを抑制できる。従って、秘密分散保管システム5は、システム構築に伴うコストアップを極力抑えながら、秘匿されるべき元データの安全な保管の実現を支援できる。
また、メインコントローラ10は、病院端末H1からの元データの復元指示に応じて、n台のシェアホルダS1~Snのそれぞれに保管されるn個の分散データH1D1~H1Dnを取得する。メインコントローラ10は、n個の分散データH1D1~H1Dnから元データである病院データODH1を復元して病院端末H1に送る。これにより、秘密分散保管システム5は、メインコントローラ10以外に元データである病院データの復元処理を実行できないように、復元処理を可能とする実行主体を絞り込むことができる。つまり、メインコントローラ10を使用する人物以外の第三者による元データへの復元を効果的に抑制できる。仮に前述の元データの復元ができた場合、極めて個人情報性の高い病院データの流出に繋がるが、実施の形態1によれば病院データのデータ漏洩を強固に防止できることで、責任分界点が明確となる。
(実施の形態1の変形例1)
実施の形態1では、メインコントローラ10は、例えば病院端末が管理する病院データ(つまり、元データ)を平文データ悪意で取得することも可能であった。実施の形態1の変形例1では、メインコントローラ10の管理者に分散データの保存先が分からないようにする。
図6は、実施の形態1の変形例1に係る秘密分散保管システム5Aの構成例を示す図である。秘密分散保管システム5Aにおいて、実施の形態1に係る秘密分散保管システム5と同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
秘密分散保管システム5Aでは、メインコントローラ10と複数のシェアホルダS1~Snのそれぞれとの間には、シェアホルダS1~Snの設置数と同数のコントローラC1~Cnが1対1に対応して介在する。
実施の形態1と同様に、メインコントローラ10は、病院端末H1~Hmのうち少なくとも1台からネットワークNW1を介して病院データ(例えば病院データODH1)を受信し、乱数生成器20で生成された物理乱数を用いて病院データの分散処理を行い、合計n個の分散データH1D1~H1Dnおよび論理分散情報を生成する。論理分散情報は、メインコントローラ10における病院データの分散処理により生成される。具体的には、論理分散情報は、n個の分散データの生成方法に関する情報の他に、元データのファイル名、n個の分散データの各ファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成(つまり、分散処理)に用いた物理乱数、分配先であるn個のコントローラに関する情報等である。従って、メインコントローラ10は、論理分散情報を基にして、最終的に分散データが保管(保存)されるシェアホルダS1~Snのそれぞれの情報は判別不能である。
メインコントローラ10は、ネットワークNW2を介して、合計n個の分散データH1D1~H1Dnのそれぞれと上述した論理分散情報とを複数のコントローラC1~Cnに1個ずつ振り分ける分配処理を行う。なお、メインコントローラ10は、分散処理を実行した後、元データである病院データを削除することが好ましい。
図7は、コントローラC1~Cnのハードウェア構成例を示すブロック図である。コントローラC1~Cnのそれぞれは、同一の内部構成を有し、具体的にはプロセッサ51と、メモリ52と、記録装置53と、通信回路54とを少なくとも含む構成である。
プロセッサ51は、例えばCPU、DSPあるいはFPGAを用いて構成され、メモリ52と協働してメモリ52に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ51は、メインコントローラ10から送信された分散データと論理分散情報とを、通信回路54を介して受信する。プロセッサ51は、論理分散情報と予め保持している自コントローラに対応する保管先(例えばシェアホルダS1)の情報とを用いて、自コントローラ(例えばコントローラC1)により受信された分散データに関する実体分散情報を生成する。実体分散情報は、対応する分散データの生成に関連する分散情報(実施の形態1参照)であり、例えば、分散データの生成方法に関する情報の他に、分散データの書誌的情報として、元データのファイル名、分散データのファイル名、分散処理の実行日時、分散データのサイズ、分散データの生成(つまり、分散処理)に用いた物理乱数の一部、保管先の情報、保管先にアクセスするための認証情報等を含んでよい。プロセッサ51は、分散データに対応する実体分散情報に従って、該当する分散データを対応するシェアホルダ(例えば、シェアホルダS1)に保管する。
メモリ52は、例えばRAMとROMとを用いて構成され、コントローラC1~Cnの動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。RAMは、例えば、コントローラC1~Cnの動作時に使用されるワークメモリである。ROMは、例えば、コントローラC1~Cnを制御するためのプログラムおよびデータを予め記憶して保持する。
記録装置53は、例えばHDDまたはSSDを用いて構成され、メインコントローラ10の分散処理により生成されたいずれかの分散データおよび実体分散情報の組を保管(保存)する。
通信回路54は、メインコントローラ10あるいは自コントローラに対応するシェアホルダ(例えば、シェアホルダS1)との間で通信を行う回路を用いて構成される。通信回路54は、ネットワークNW2を介して、メインコントローラ10との間でデータ通信を行う。また、通信回路54は、自コントローラに対応するシェアホルダ(例えば、シェアホルダS1)との間でデータ通信を行う。
複数のコントローラC1~Cnのそれぞれは、シェアホルダS1~Snのうち対応するいずれかのシェアホルダに対し、1個の分散データおよび実体論理情報の組を保管する。つまり、複数のコントローラC1~Cnのそれぞれの管理者は、対応する分散データの保管先およびその保管先にアクセスするための認証情報を含む実体分散情報をそれぞれ把握しているが、他の分散データに対応する実体分散情報を把握できない。各コントローラC1~Cnのそれぞれは、シェアホルダS1~Snのうち対応するシェアホルダと連結し、対応するシェアホルダへの認証情報を保持する。従って、実施の形態1と異なり、メインコントローラ10は、元データの分散処理の後は、コントローラC1~Cnのそれぞれを介して個々の分散データを間接的に受け取ることしかできず、複数のシェアホルダS1~Snのそれぞれから直接的に全ての分散データを取得できない。
このように、実施の形態1の変形例1に係る秘密分散保管システム5Aでは、全ての分散データの保存先を含む分散情報を把握可能な管理者が存在できなくなる。従って、実施の形態1に比べて、分散データの保管に関するセキュリティをより一層向上できる。また、メインコントローラ10と複数のシェアホルダS1~Snのそれぞれとの間に複数のコントローラC1~Cnのそれぞれとを設けたため、例えば、仮にいずれかの分散データの漏洩が生じた場合にどのコントローラの管理者による責任であるかを明確に判別し易くなる。なお、メインコントローラ10とコントローラC1~Cnのそれぞれとの間では、機器認証を行い、第三者によるなりすましを防止してもよい。機器認証には、例えば双方向の公開鍵暗号方式による暗号化復号技術が用いられる。
以上により、実施の形態1の変形例1に係る秘密分散保管システム5Aは、n台のシェアホルダS1~Snのそれぞれに対応して設けられ、メインコントローラ10との間で通信可能に接続されるn台のコントローラC1~Cnを更に有する。メインコントローラ10は、複数の分散データH1D1~H1Dnのそれぞれの生成に関する論理分散情報を生成する。メインコントローラ10は、n個の分散データのそれぞれと論理分散情報とを対応付けて、対応するn台のコントローラC1~Cnのそれぞれに送信する。n台のコントローラC1~Cnのそれぞれは、自装置(自コントローラ)に対応する分散データと論理分散情報とをメインコントローラ10から受信し、論理分散情報を用いて自装置が受信した分散データに関する実体分散情報を生成する。n台のコントローラC1~Cnのそれぞれは、対応するn台のシェアホルダS1~Snのそれぞれに、実体分散情報と自装置(自コントローラ)が受信した分散データとを対応付けて保管する。
これにより、秘密分散保管システム5Aは、メインコントローラ10の管理者に分散データの最終的な保存先が分からないように、分散データを安全に保管できる。従って、秘密分散保管システム5Aによれば、メインコントローラ10を使用する管理者が仮に悪意による攻撃として、秘匿性の高い病院データの漏洩を効果的に阻むことが可能となる。
(実施の形態1の変形例2)
実施の形態1の変形例1では、コントローラとシェアホルダとが1対1で対応するように連結していた。実施の形態1の変形例2では、1台のコントローラに2台以上のシェアホルダが接続される例を説明する。
図8は、実施の形態1の変形例2に係る秘密分散保管システム5Bの構成例を示す図である。秘密分散保管システム5Bにおいて、実施の形態1の変形例1に係る秘密分散保管システム5Aと同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
実施の形態1の変形例2では、1台のコントローラ(例えばコントローラC1)に2台のシェアホルダS1A,S1Bが接続される。従って、コントローラの総数は、シェアホルダの総数より少ない。コントローラC1は、2台のシェアホルダS1A,S1Bのそれぞれに、自コントローラが受信した分散データとその分散データに対応するように生成した実体分散情報とを対応付けてそれぞれ保管する。
実施の形態1の変形例2においても、実施の形態1の変形例1と同様に、コントローラC1~Cnのそれぞれの管理者は、自コントローラに対応するシェアホルダにアクセスするための認証情報しか保有しない。従って、秘密分散保管システム5Bによれば、メインコントローラ10の管理者は、それぞれのシェアホルダS1~Snに直接アクセスして分散データを取得することはできない。
なお、ここでは、コントローラC1が2台のシェアホルダS1A,S1Bの間で通信可能に接続される場合を示したが、他のコントローラC2~Cnのうち少なくとも1台が複数のシェアホルダとの間で通信可能に接続されてもよい。
以上により、秘密分散保管システム5Bでは、n台のコントローラC1~Cnのうち少なくとも1台のコントローラ(例えばコントローラC1)は、複数のシェアホルダS1A,S1Bとの間で通信可能に接続される。そのコントローラC1は、複数のシェアホルダS1A,S1Bのそれぞれに、自コントローラが受信した分散データとその分散データに対応するように生成した実体分散情報とを対応付けてそれぞれ保管する。これにより、秘密分散保管システム5Bによれば、1台のコントローラに2台以上のシェアホルダを接続できる。従って、複数のシェアホルダのうちいずれかが故障した場合等の分散データおよび実体分散情報の保管用のバックアップを適切に構築できる。
(実施の形態1の変形例3)
実施の形態1の変形例2では、1台のメインコントローラ10だけが配置されていた。このため、例えば病院データの分散処理あるいは復元処理のいずれかを行う必要がある際に、災害あるいは故障等によってメインコントローラ10が動作不良となると、病院データの分散処理あるいは復元処理を適切に実行できなくなる。実施の形態1の変形例3では、メインコントローラ10が動作不良に陥るまたはその予兆を検知した際に、分散処理あるいは復元処理のいずれかを代行する他のメインコントローラを配置する例を説明する。
図9は、実施の形態1の変形例3に係る秘密分散保管システム5Cの構成例を示す図である。秘密分散保管システム5Cにおいて、実施の形態1の変形例2に係る秘密分散保管システム5Bと同一の構成要素については、同一の符号を用いることでその説明を簡略化または省略する。
秘密分散保管システム5Cでは、メインコントローラ10とは別に、バックアップ用のメインコントローラ10Aが配置される。メインコントローラ10とメインコントローラ10Aとは、例えば災害の発生によって同時に動作不良が起きないように、地理的に遠方に配置されてよいし、近くに配置されてもよい。
第2メインコントローラの一例としてのメインコントローラ10Aはメインコントローラ10と同一の構成を有するので、メインコントローラ10Aの内部構成の詳細な説明は省略する。メインコントローラ10Aは、メインコントローラ10と同様に、乱数生成器20Aと接続され、乱数生成器20Aで生成された物理乱数を取得する。乱数生成器20Aは、乱数生成器20と同様に物理乱数生成器によって構成される方が好ましいが、擬似乱数生成器によって構成されてもよい。メインコントローラ10Aは、ネットワークNW1を介して、病院端末H1~Hmのそれぞれと接続されるとともに、ネットワークNW2を介して、コントローラC1~Cnのそれぞれと接続される。
秘密分散保管システム5Cでは、メインコントローラ10は、自装置の死活監視を行う。例えば災害の発生によってメインコントローラ10は、動作不良あるいはその予兆を検知でき、その検知を行った場合、バックアップ用に配置されたメインコントローラ10Aに対し、メインコントローラ10により生成された論理分散情報と分散処理および復元処理の権限委譲通知とを送る。
メインコントローラ10Aは、メインコントローラ10から送信された、論理分散情報と権限委譲通知とを受け取ると、その権限委譲通知に従い、メインコントローラ10の処理(例えば分散処理および復元処理)を代行して継続する。なお、メインコントローラ10Aはメインコントローラ10に接続せず、メインコントローラ10からの権限委譲通知等の指示なしに独立に動作してもよい。
なお、メインコントローラ10が自装置の死活監視を行う代わりに、メインコントローラ10Aがメインコントローラ10の死活監視を行ってもよい。なお、外部のPC(図示略)あるいは携帯端末(図示略)がメインコントローラ10の死活監視を行ってもよい。
このように、実施の形態1の変形例3では、例えば災害時等において、メインコントローラ10が動作不良に陥っても、バックアップ用のメインコントローラ10Aが代行して作動する。従って、秘密分散保管システム5Cのロバスト性が向上する。また、秘密分散保管システム5Cにおいて、乱数生成器20Aを設けず、メインコントローラ10Aは、メインコントローラ10に接続される乱数生成器20との間で接続可能であれば乱数生成器20から物理乱数を取得してもよい。これにより、秘密分散保管システム5Cにおいて、メインコントローラ10Aが結果的に増設となるが、乱数生成器の設置数の増大を回避できるので、コストアップの抑制が可能となる。なお、バックアップ用のメインコントローラは、1台のメインコントローラ10Aに限らず、複数台設けられてもよい。
以上により、秘密分散保管システム5Cは、少なくとも1台の病院端末H1~Hm、n台のシェアホルダS1~Sn、乱数生成器20Aおよびメインコントローラ10との間で通信可能に接続されるメインコントローラ10Aを更に備える。メインコントローラ10は、自装置の動作不良を検知すると、論理分散情報と分散処理および復元処理の権限移譲通知とをメインコントローラ10Aに送る。メインコントローラ10Aは、論理分散情報と権限移譲通知とをメインコントローラ10から受信すると、メインコントローラ10に代わって、病院データの分散処理および復元処理を代行する。これにより、メインコントローラ10が動作不良に陥った時あるいはその予兆が検知された時でも、メインコントローラ10Aにより、病院データの分散処理および復元処理が中断されず、病院データに基づく分散データの安全な保管ならびに必要に応じた病院データの復元が継続できる。
(実施の形態2)
上述した実施の形態1あるいはその各種の変形例では、病院端末(例えば病院端末H1)とメインコントローラ10との間のデータ通信においては、平文データの送受信が行われることが主に想定されていた。実施の形態2では、病院端末H1~Hmのそれぞれ、メインコントローラ10、コントローラC1~Cnのそれぞれの間での通信に先立って、病院データを暗号化する例を説明する。従って、メインコントローラ10は、病院端末により暗号化された病院データを受信し、その暗号化された病院データに分散処理を行う。
図10は、実施の形態2に係る秘密分散保管システム5Dの構成例を示す図である。秘密分散保管システム5Dにおいて、実施の形態1に係る秘密分散保管システム5と同一の構成要素については、同一の符号を付すことでその説明を簡略化または省略する。
秘密分散保管システム5Dは、実施の形態1の変形例1に係る秘密分散保管システム5Aの構成に加え、代理サーバ70および乱数生成器80を更に含む構成である。代理サーバ70とコントローラC1~Cnのそれぞれとは、ネットワークNW3を介して接続される。ネットワークNW3は、ネットワークNW1,NW2と同一のネットワークであってもよいし、異なるネットワークであってもよい。具体的には、ネットワークNW3は、例えばインターネット等の広域ネットワークでもよいし、代理サーバ70とコントローラC1~Cnのそれぞれとの間を仮想的に接続するVPN等のプライベートネットワークでもよいし、専用線でもよい。なお、図10では図示されていないが、代理サーバ70と病院端末H1~HmのそれぞれとはネットワークNW3のようなネットワークを介して通信可能に接続されてもよい。
第2物理乱数生成器の一例としての乱数生成器80は、乱数生成器20と同様に、物理的に変動する値(言い換えると、悪意ある第三者が容易に推測することが困難な値)を乱数として発生する乱数生成器である。具体的には、乱数生成器80は、病院端末H1~Hmのそれぞれとメインコントローラ10とコントローラC1~Cnのそれぞれとの間での通信に使用される物理乱数(例えば、暗号化および復号のための共通鍵)を生成する。なお、物理乱数の代わりに、擬似乱数が用いられてもよい。また、乱数生成器80により生成される物理乱数は、分散データを生成するために用いられる物理乱数(つまり、乱数生成器20により生成される物理乱数)とは異なる。
通信管理サーバの一例としての代理サーバ70は、乱数生成器80で生成された物理乱数(第2物理乱数の一例)をストリーム暗号情報として記録装置73に記憶する。代理サーバ70は、病院端末H1~Hmのそれぞれとメインコントローラ10とコントローラC1~Cnのそれぞれとの間の通信の暗号化あるいは復号に用いる共通鍵としての位置付けられる物理乱数を、病院端末H1に送信する。病院端末H1は、代理サーバ70から送信された共通鍵を、病院端末H1内のメモリに記憶する。また、代理サーバ70は、ネットワークNW3を介して、コントローラC1~Cnのそれぞれに共通鍵を送信する。コントローラC1~Cnのそれぞれは、代理サーバ70から受信した共通鍵を、自コントローラ内の各記録装置53に記憶する。このように、代理サーバ70Aから送信(配布)された同一の共通鍵が病院端末H1およびコントローラC1~Cnのそれぞれに保持される。
図11は、代理サーバ70のハードウェア構成例を示すブロック図である。代理サーバ70は、プロセッサ71と、メモリ72と、記録装置73と、通信回路74とを少なくとも含む構成である。
プロセッサ71は、例えばCPU、DSPあるいはFPGAを用いて構成され、メモリ72と協働してメモリ72に予め記憶されるプログラムおよびデータに従って動作する。プロセッサ71は、通信回路74を介して乱数生成器80から送信された物理乱数(共通鍵)を取得する。プロセッサ71は、通信回路74を介して、病院端末H1およびコントローラC1~Cnのそれぞれに共通鍵を送信する。
メモリ72は、例えばRAMとROMとを用いて構成され、代理サーバ70の動作の実行に必要なプログラムおよびデータ、さらには、動作中に生成されたデータもしくは情報を一時的に保持する。RAMは、例えば、代理サーバ70の動作時に使用されるワークメモリである。ROMは、例えば、代理サーバ70を制御するためのプログラムおよびデータを予め記憶して保持する。
記録装置73は、例えばHDDまたはSSDを用いて構成され、乱数生成器80で生成された物理乱数を記憶する。
通信回路74は、代理サーバ70との間で通信可能に接続された各種の機器との間で通信を行う回路を用いて構成される。通信回路74は、複数の病院端末H1~Hmのそれぞれとの間でデータ通信を行う。通信回路74は、ネットワークNW3を介して、複数のコントローラC1~Cnのそれぞれとの間でデータ通信を行う。なお、代理サーバ70と乱数生成器80とは、有線あるいは無線で接続されてよい。
病院端末(例えば病院端末H1)は、代理サーバ70から送信された共通鍵を用いて元データである病院データODを暗号化し、暗号化された病院データE(OD)を、ネットワークNW1を介してメインコントローラ10に送信する。なお、以下の説明では、元データである病院データODが暗号化された場合、その暗号化された病院データを、便宜的にE(OD)と記載する。
メインコントローラ10は、病院端末(例えば病院端末H1)により暗号化された病院データE(OD)を病院端末H1から受信し、乱数生成器20で生成された物理乱数を用いて、暗号化された病院データE(OD)の分散処理を行う。メインコントローラ10は、分散処理により生成された、複数の暗号化された分散データE(ODH1)~E(ODHn)のそれぞれを、ネットワークNW2を介して、対応するコントローラC1~Cnのそれぞれに送信する。
次に、実施の形態2に係る秘密分散保管システム5Dの分散処理および復元処理を説明する。
図12は、分散処理の手順を示すシーケンス図である。図12の説明では、病院端末の一例として病院端末H1を例示する。
図12において、秘密分散保管システム5Dでは、分散処理の実行に先立って先ず、代理サーバ70は、乱数生成器80で生成された物理乱数をストリーム暗号情報として取得し、この物理乱数を共通鍵としてコントローラC1~Cnのそれぞれと病院端末H1に送信する(T31,T32,T33)。
コントローラC1~Cnのそれぞれは、代理サーバ70から受信した共通鍵をそれぞれ記録装置53に保管する。
病院端末H1は、代理サーバ70から受信した共通鍵をメモリ12あるいは記録装置13に保管する。病院端末H1は、この共通鍵で元データOD(例えば、病院データ)を暗号化する(T34)。病院端末H1は、暗号化元データの一例としての暗号化された病院データE(OD)をメインコントローラ10に送信する(T35)。
メインコントローラ10は、例えば暗号化された病院データE(OD)を受信した時点で乱数生成器20により生成された物理乱数を取得し、記録装置13に記憶する(T36)。なお、メインコントローラ10は、取得された物理乱数を記録装置13に記憶せず、メモリ12に一時的に保存してよく、ステップT37の分散処理の実行後に物理乱数を削除してよい。メインコントローラ10は、この物理乱数を用いて、暗号化された病院データE(OD)の分散処理を行い、コントローラC1~Cnの配置数と一致するように複数(例えばn個)の暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれとそれぞれの暗号化された分散データに対応する分散情報との組を生成する(T37)。暗号化分散データE(H1D1)~E(H1Dn)のそれぞれは、暗号化分散データの一例である。なお、メインコントローラ10は、ステップT37の分散処理を実行した後、暗号化された病院データE(OD)を削除してもよい。
メインコントローラ10は、暗号化された分散データE(H1D1)と対応する分散情報との組をコントローラC1に送信する(T38)。コントローラC1は、ステップT31において記録装置53に保管された共通鍵を読み出し、この共通鍵を用いて、暗号化された分散データE(H1D1)を復号して平文データである分散データH1D1を得る(T39)。コントローラC1は、復号により得られた分散データH1D1および対応する分散情報との組を、対応するシェアホルダS1に保管する(T40)。
同様に、メインコントローラ10は、他のコントローラに対してもステップT38~T40と同様な処理を実行し、暗号化された分散データE(H1Dn)と対応する分散情報との組をコントローラCnに送信する(T41)。コントローラCnは、ステップT32において記録装置53に保管された共通鍵を読み出し、この共通鍵を用いて、暗号化された分散データE(H1Dn)を復号して平文データである分散データH1Dnを得る(T42)。コントローラCnは、復号により得られた分散データH1Dnおよび対応する分散情報との組を、対応するシェアホルダSnに保管する(T43)。
このように、分散処理を行う場合、コントローラC1~Cnのそれぞれは、代理サーバ70から受信した共通鍵で暗号化された分散データE(H1D1)~E(H1Dn)を復号して分散データH1D1~H1Dnを得る。コントローラC1~Cnのそれぞれは、復号により得られた分散データH1D1~H1Dnのそれぞれと対応する分散情報との組を、対応するシェアホルダS1~Snに保管する。従って、シェアホルダS1~Snのそれぞれには、平文データである分散データH1D1~H1Dnのそれぞれと対応する分散情報との組が保管される。
図13は、復元処理の動作手順例を示すシーケンス図である。図13の説明では、病院端末の一例として病院端末H1を例示する。
図13において、秘密分散保管システム5Dでは、復元処理の実行に先だって先ず、代理サーバ70は、乱数生成器80で生成された物理乱数をストリーム暗号情報として取得し、この物理乱数を共通鍵としてコントローラC1~Cnのそれぞれと病院端末H1に送信する(T51,T52,T53)。
コントローラC1~Cnのそれぞれは、代理サーバ70から受信した共通鍵をそれぞれ記録装置53に保管する。
病院端末H1は、代理サーバ70から受信した共通鍵をメモリ12あるいは記録装置13に保管する。また、分散処理時と復元処理時とで、異なる共通鍵を用いてもよいし同一の共通鍵を用いてもよい。同一の共通鍵を用いる場合には、ステップT51~T53を省略可能である。
病院端末H1は、病院データOD(元データの一例)の復元処理をメインコントローラ10に依頼(要求)する際、復元処理の対象となる病院データのファイル名を指定する(T54)。
メインコントローラ10は、病院端末H1により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をコントローラC1に送信する(T55)。コントローラC1は、この取得要求に応じて、自コントローラに対応するシェアホルダS1に保管されている分散データH1D1および対応する分散情報の組を読み出す。コントローラC1は、ステップT51において記録装置53に保管された共通鍵を読み出し、この共通鍵を用いて分散データH1D1を暗号化し、暗号化された分散データE(H1D1)を得る(T56)。コントローラC1は、暗号化された分散データE(H1D1)と対応する分散情報の組をメインコントローラ10に送信する(T57)。メインコントローラ10は、暗号化された分散データE(H1D1)と対応する分散情報の組を取得する。
同様に、メインコントローラ10は、病院端末H1により指定されたファイル名に基づいて、そのファイル名に対応して生成された分散データの取得要求をコントローラCnに送信する(T58)。コントローラCnは、この取得要求に応じて、自コントローラに対応するシェアホルダSnに保管されている分散データH1Dnおよび対応する分散情報の組を読み出す。コントローラCnは、ステップT52において記録装置53に保管された共通鍵を読み出し、この共通鍵を用いて分散データH1Dnを暗号化し、暗号化された分散データE(H1Dn)を得る(T59)。コントローラCnは、暗号化された分散データE(H1Dn)と対応する分散情報の組をメインコントローラ10に送信する(T60)。メインコントローラ10は、暗号化された分散データE(H1Dn)と対応する分散情報の組を取得する。
このように、ステップT55~T60を経ることで、メインコントローラ10は、全てのコントローラC1~Cnから、暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれと対応する分散情報とを受信する。メインコントローラ10は、暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれと対応する分散情報とを基にして復元処理を行い、暗号化された病院データE(OD)を得る(T61)。なお、メインコントローラ10は、分散処理時に使用した物理乱数が記録装置13に保管されている場合には、その物理乱数を用いて復元処理を行ってもよい。メインコントローラ10は、暗号化された病院データE(OD)を病院端末H1に送信する(T62)。病院端末H1は、メモリ12あるいは記録装置13に記憶された共通鍵を用いて暗号化された病院データE(OD)を復号して病院データOD(所望の元データ)を取得する(T63)。
以上により、実施の形態2の秘密分散保管システム5Dは、乱数生成器80との間で通信可能に接続される代理サーバ70を更に有する。代理サーバ70は、乱数生成器80により発生された共通鍵を、n台のコントローラC1~Cnのそれぞれと病院端末(例えば病院端末H1)とに送る。メインコントローラ10は、病院端末H1により共通鍵を用いて暗号化された病院データE(OD)を受信する。メインコントローラ10は、物理乱数を用いて、暗号化された病院データE(OD)を分散処理してn個の暗号化された分散データE(H1D1)~E(H1Dn)を生成してn台のコントローラC1~Cnのそれぞれに送る。n台のコントローラC1~Cnのそれぞれは、自装置(自コントローラ)に対応する、暗号化された分散データE(H1D1)~E(H1Dn)をメインコントローラ10から受信すると、共通鍵を用いて、その受信された分散データE(H1D1)~E(H1Dn)を復号する。n台のコントローラC1~Cnは、その復号により得られた分散データH1D1~H1Dnを自装置に対応するシェアホルダS1~Snに保管する。
これにより、秘密分散保管システム5Dでは、メインコントローラ10が分散処理を行う場合、病院端末から受け取る病院データが既に暗号化されているので、メインコントローラ10の管理者に対して病院データの内容を秘匿できる。言い換えると、秘匿されるべき元データ(病院データ)が、メインコントローラ10とは異なる代理サーバ70から渡された共通鍵(つまり、メインコントローラ10が知り得ない共通鍵)によって暗号化されるので、病院端末は、メインコントローラ10の管理者による病院データの漏えいを心配することなく安心してメインコントローラ10に送信できる。
また、メインコントローラ10は、病院端末H1からの復元指示に応じて、n個の分散データの取得要求をn台のコントローラC1~Cnのそれぞれに送る。n台のコントローラC1~Cnは、取得要求に応じて、共通鍵を用いて、シェアホルダS1~Snのそれぞれに保管された分散データH1D1~H1Dnを暗号化し、暗号化された分散データE(H1D1)~E(H1Dn)を生成してメインコントローラ10に送る。メインコントローラ10は、物理乱数を用いて、n台のコントローラC1~Cnのそれぞれから受信したn個の暗号化された分散データE(H1D1)~E(H1Dn)から、暗号化された病院データE(OD)を復元して病院端末H1に送る。
これにより、メインコントローラ10が復元処理を行う場合、メインコントローラ10は、コントローラC1~Cnのそれぞれから暗号化された分散データを受け取るので、復元処理しても平文データである病院データの内容を知ることができない。つまり、メインコントローラ10には、暗号化されたデータしか取得されないので、メインコントローラ10の管理者は、機密情報を知ることができない。従って、メインコントローラの管理者による機密情報の漏洩を排除できる。
(実施の形態3)
実施の形態2では、ストリーム暗号が使用されるため、乱数生成器80により生成された物理乱数(つまり、ストリーム暗号に用いられる共通鍵)は、代理サーバ70から病院端末(例えば病院端末H1)およびコントローラC1~Cnのそれぞれに同一の共通鍵として送信された。実施の形態3では、代理サーバ70Aは、他の暗号方式の使用を想定し、乱数生成器80を用いて得られる共通鍵を分散処理し、コントローラC1~Cnのそれぞれに、分散処理された共通鍵(つまり、乱数生成器80からの物理乱数を分散処理した分散データ)を送信することで、共通鍵の漏洩をできるだけ抑制するために、共通鍵全体そのものを送信しないように配慮する。なお、ここでの暗号方式は特に限定するものではない。
図14は、実施の形態3に係る秘密分散保管システム5Eの構成例を示す図である。秘密分散保管システム5Eにおいて、実施の形態2に係る秘密分散保管システム5Dと同一の構成要素には同一の符号を用いることで、その説明を簡略化または省略し、異なる内容について説明する。
秘密分散保管システム5Eでは、代理サーバ70Aは、乱数生成器80で生成された物理乱数を暗号情報として記録装置73に記憶する。代理サーバ70は、この物理乱数を分散処理し、ネットワークNW3を介して、分散された共通鍵を各コントローラC1~Cnに送信する。コントローラC1~Cnのそれぞれは、代理サーバ70Aから受信した、分散された共通鍵を自コントローラの記録装置53に記憶する。分散された共通鍵は、暗号情報として生成された物理乱数を分散処理したものであるので、コントローラC1~Cnのそれぞれで異なる。一方、代理サーバ70Aは、乱数生成器80で生成された物理乱数を分散処理せずに、そのまま病院端末H1に共通鍵を送信する。
図15は、分散処理の動作手順例を示すシーケンス図である。図15の説明では、病院端末の一例として病院端末H1を例示する。
図15において、秘密分散保管システム5Eは、分散処理を開始する前に事前準備を行う。事前準備では、先ず、病院端末H1と代理サーバ70Aとの間で公知の機器認証および通信路の形成が行われる(T101)。機器認証は、例えば公開鍵暗号方式を用いて行われる。また、病院端末H1と代理サーバ70Aとの間でネゴシエーションが行われ、データ通信可能な通信路が形成される。この通信路には、例えばVPNが利用される。
同様に、病院端末H1とメインコントローラ10との間で公知の機器認証および通信路の形成が行われる(T102)。代理サーバ70AとコントローラC1との間で公知の機器認証および通信路の形成が行われる(T103)。代理サーバ70AとコントローラC2以降のコントローラとの間でも同様の機器認証および通信路の形成が行われ、最終的に代理サーバ70AとコントローラCnとの間で公知の機器認証および通信路の形成が行われる(T104)。
また同様に、メインコントローラ10とコントローラC1との間で公知の機器認証および通信路の形成が行われる(T105)。メインコントローラ10とコントローラC2以降のコントローラとの間でも同様の機器認証および通信路の形成が行われ、最終的にメインコントローラ10とコントローラCnとの間で公知の機器認証および通信路の形成が行われる(T106)。
分散処理が開始される際、病院端末H1は、元データである病院データODのファイル情報(ファイル名およびデータ量を含む)を代理サーバ70Aに送信する(T107)。代理サーバ70Aは、病院端末H1から病院データODのファイル情報を受信すると、このファイル情報を基に、乱数生成器80で生成された物理乱数を取得して保管する(T108)。例えば暗号アルゴリズムの一例としてバーナム暗号が使用される場合、乱数生成器80は、病院データのサイズ長(桁数)と同じサイズ長を有する物理乱数を生成する。代理サーバ70Aは、物理乱数を分散処理し、複数(例えばn個)の分散された共通鍵を生成する。
代理サーバ70Aは、コントローラC1~Cnのそれぞれに対し、n個に分散された共通鍵(以下「物理乱数ファイル」)のそれぞれを1対1となるように対応付けて送信する(T109,T110)。例えば、代理サーバ70Aは、第1の物理乱数ファイルを第1のコントローラに送信し、第2の物理乱数ファイルを第2のコントローラに送信し、同様にして第nの物理乱数ファイルを第nのコントローラに送信する。コントローラC1~Cnのそれぞれは、自コントローラに対応するシェアホルダS1~Snのそれぞれに、代理サーバ70Aから受信した、n個に分散された共通鍵のうちいずれかを送信して保管する。この分散された共通鍵のヘッダ情報には、病院端末H1の病院データODのファイル名が含まれる。これにより、後述する病院データODの分散データと、分散された共通鍵とは、同一のファイル名(具体的には、病院データODのファイル名)で対応付けられる。
ここで、コントローラC1~Cnのそれぞれは、代理サーバ70Aから受信した、分散された共通鍵(物理乱数ファイル)を記憶する際、分散された共通鍵(物理乱数ファイル)の使用状態として未使用状態を示す状態フラグの値を「1」に設定する。この状態フラグの値は、後述するように、暗号化された病院データの分散データ(暗号化分散データ)を分散された共通鍵(物理乱数ファイル)で復号して、平文データである分散データをシェアホルダS1~Snのそれぞれに保管する際、「0」に変更される。つまり、状態フラグの値が「1」か「0」かによって、分散された共通鍵(物理乱数ファイル)が未使用であるか使用済みであるかが認識される。これにより、病院データの分散データが保管される前に一連の処理が中断された場合、状態フラグの値が「1」である分散された共通鍵(物理乱数ファイル)を消去することが可能であり、病院データの分散データの保管に使用されない分散乱数データが徒に残ってしまうことを回避できる。従って、メモリの使用効率を上げることができる。また、コントローラC1~Cnのそれぞれは、状態フラグの値が「1」である物理乱数ファイル(分散乱数データ)が無い場合、暗号化分散データの受信を拒否でき、エラーを検知できる。
代理サーバ70Aは、コントローラC1~Cnのそれぞれに、分散された共通鍵を送信した後に病院端末H1に共通鍵を送信する(T111)。病院端末H1は、分散された共通鍵をメモリ12あるいは記録装置13に記憶する。なお、代理サーバ70Aは、事前準備の段階で、乱数生成器80から物理乱数を取得して生成してもよい。
病院端末H1は、メモリ12あるいは記録装置13に記憶された共通鍵を用いて病院データODを暗号化し、暗号化された病院データE(OD)を得る(T112)。病院端末H1は、暗号化された病院データE(OD)をメインコントローラ10に送信する(T113)。メインコントローラ10は、暗号化された病院データE(OD)を受信する。
メインコントローラ10は、例えば暗号化された病院データE(OD)を受信した時点で乱数生成器20により生成された物理乱数を取得し、記録装置13に保管する。なお、メインコントローラ10は、分散処理の実行後に物理乱数を削除してよい。また、メインコントローラ10は、この段階で生成された物理乱数を取得してもよいし、事前準備で物理乱数を取得してもよい。
メインコントローラ10は、この物理乱数を用いて分散処理を行い、複数の暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれとそれぞれの暗号化された分散データに対応する分散情報の組を生成する(T114)。メインコントローラ10は、複数の暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれと対応する分散情報の組を、対応するコントローラC1~Cnのそれぞれに送信する(T115,T116)。
コントローラC1~Cnのそれぞれは、複数の暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれと対応する分散情報の組を受信した後、記録装置53に記憶された分散された共通鍵を用いて復号し、平文データである分散データH1D1~H1Dnのそれぞれを取得し、対応するシェアホルダS1~Snのそれぞれに保管する。ここで、暗号化された分散データと分散された共通鍵とは、上述したように、ファイル名で対応付けられる。
メインコントローラ10は、分散処理を終えると、病院端末H1に病院データODの分散処理が終了したことを表す終了通知を送信する(T117)。コントローラC1~Cnのそれぞれは、状態フラグの値を、分散された共通鍵の使用済みを示す値である「0」に変更する(T118,T119)。なお、ステップT117とステップT118,T119の処理は、逆の順番で行われてもよい。
図16は、復元処理の動作手順例を示すシーケンス図である。図16の説明では、病院端末の一例として病院端末H1を例示する。
図16において、復元処理は、図15に示した分散処理が行われた後(例えば半年後等)の任意の時期に行われる。秘密分散保管システム5Eは、復元処理を開始する前に分散処理の開始前と同様の事前準備を行う(T121~T126)。分散処理と同様であるので、事前準備の説明を省略する。
復元処理が開始される際、病院端末H1は、ユーザの操作により、復元処理が要請される所望の元データ(例えば病院データOD)のファイル名を指定し、メインコントローラ10に通知する(T127)。このファイル名の指定は平文データを用いて行われてよい。
メインコントローラ10は、コントローラC1~Cnのそれぞれに対し、病院端末H1により指定されたファイル名に対応する分散データH1D1~H1Dnのそれぞれのヘッダ情報だけの呼び出しを行う(T128,T129)。コントローラC1~Cnのそれぞれは、シェアホルダS1~Snのそれぞれに保管されている個々の異なる分散データH1D1~H1Dnのそれぞれのヘッダ情報と対応する分散情報の組を読み出してメインコントローラ10に送信する。メインコントローラ10は、これらのヘッダ情報と対応する分散情報の組を基に、病院データODのヘッダ情報を復元する(T130)。メインコントローラ10は、復元したヘッダ情報に含まれるファイルサイズ(データ量)を取得し、病院端末H1にデータ量の情報を送信する(T131)。
病院端末H1は、復元する病院データODのファイル名およびデータ量を指定して代理サーバ70Aに通知する(T132)。代理サーバ70Aは、病院端末H1から病院データODのファイル名およびデータ量を受信すると、このファイル情報を基に乱数生成器80で生成される物理乱数を取得する(T133)。ファイル名およびデータ量を用いて指定することで、物理乱数と病院データとの対応、および物理乱数のデータサイズが明確になる。代理サーバ70Aは、乱数生成器80で生成された物理乱数の分散処理を行い、分散された共通鍵を記録装置73に記憶する。
代理サーバ70Aは、コントローラC1~Cnのそれぞれに、分散された共通鍵を送信する(T134,T135)。コントローラC1~Cnのそれぞれは、対応するシェアホルダS1~Snのそれぞれに、分散された共通鍵を一時的に保管する。この分散された共通鍵のヘッド情報には、病院端末H1の病院データODのファイル名が含まれる。代理サーバ70Aは、病院端末H1に共通鍵を送信する(T136)。病院端末H1は、共通鍵をメモリ12あるいは記録装置13に記憶する。
病院端末H1は、復元する病院データODのファイル名を指定してメインコントローラ10に通知する(T137)。メインコントローラ10は、コントローラC1~Cnのそれぞれに、分散データの取得要求を送信する。コントローラC1~Cnのそれぞれは、この取得要求に応じ、対応するシェアホルダS1~Snのそれぞれに保管された分散データH1D1~H1Dnのいずれかと対応する分散情報の組を読み出す。コントローラC1~Cnのそれぞれは、記録装置53に記憶されている分散された共通鍵を用いて、対応する分散データH1D1~H1Dnのいずれかを暗号化し、暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれを得る。コントローラC1~Cnのそれぞれは、暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれと対応する分散情報の組をメインコントローラ10に送信する(T138,T139)。
メインコントローラ10は、コントローラC1~Cnのそれぞれから暗号化された分散データと対応する分散情報の組を受信すると、それぞれの暗号化された分散データに対応する分散情報を用いて、暗号化された病院データを復元するための復元処理を行う。これにより、メインコントローラ10は、暗号化された病院データE(OD)を得ることができる(T140)。メインコントローラ10は、復元により得られた暗号化された病院データE(OD)を病院端末H1に送信する(T141)。
病院端末H1は、ステップT136でメモリ12あるいは記録装置13に記憶された共通鍵を用いて、暗号化された病院データE(OD)を復号し、病院データODを得る(T142)。病院端末H1は、平文データである病院データを取得できる。
このように、実施の形態3に係る秘密分散保管システム5Eでは、コントローラC1~Cnのそれぞれに分散された共通鍵が渡るので、コントローラC1~Cnのそれぞれの管理者は、他のコントローラに保管されている分散された共通鍵を知ることができない。従って、各コントローラの管理者による機密情報の漏洩を排除でき、よりセキュリティの高いシステムを構築できる。また、実施の形態2と同様、分散処理を行う場合、病院端末から受け取る病院データが暗号化されているので、メインコントローラ10の管理者は、病院データの内容を知ることができない。また、メインコントローラ10は、どの病院データにどの物理乱数を用いられたかが分からない。同様に、復元処理を行う場合、メインコントローラ10の管理者は、コントローラC1~Cnのそれぞれから暗号化された分散データを受け取るので、復元処理しても病院データの内容を知ることができない。つまり、メインコントローラ10には、暗号化されたデータしか渡らないので、メインコントローラ10の管理者は、機密性の高い病院データを平文データの形式で知ることができない。従って、メインコントローラ10の管理者による機密情報の漏洩を排除できる。
(データ構造例)
次に、上述した実施の形態1~3に係る各種のデータの構造例について、図17、図18および図19を参照して説明する。図17~図19の説明においては、説明を分かり易くするために、コントローラおよびシェアホルダの配置数は「4」とする。
図17は、元データOD、物理乱数A、および分散データODDの一例を示すテーブルである。
一例として、元データOD(例えば病院データ)は、例えば8個の元データOD1,元データOD2,…,元データOD8が連接されて構成される。
同様に、物理乱数Aは、分散処理用に乱数生成器20により生成され、例えば8個の乱数A1,乱数A2,…,乱数A8が連接されて構成される。図17に示すように、例えばバーナム暗号が使用される場合、元データODのサイズ長と物理乱数Aのサイズ長とは同一であるため、元データOD1と乱数A1、元データOD2と乱数A2、…、元データOD8と乱数A8とはともに同一のサイズ長を有する。
ここで、メインコントローラ10により、元データOD1~OD8のそれぞれと対応する乱数A1~A8のそれぞれとが用いて分散処理が実行される際、図17に示す4個の分散データOD1D,OD2D,OD3D,OD4Dから構成される分散データODDが得られる。
分散データOD1Dは、元データOD1と元データOD5と乱数A1と乱数A5とが排他的論理和(つまり、XOR処理)されることで、「元データOD1 XOR 元データOD5 XOR 乱数A1 XOR 乱数A5」のように生成される。なお、分散データOD1Dの構成例は、図17に示す例に限定されない。従って、分散データOD1Dは、対応するシェアホルダとして、例えばシェアホルダS1にて保管される。
同様に、元データOD2と元データOD6と乱数A2と乱数A6とが排他的論理和(つまり、XOR処理)されることで、「元データOD2 XOR 元データOD6 XOR 乱数A2 XOR 乱数A6」のように生成される。なお、分散データOD2Dの構成例は、図17に示す例に限定されない。従って、分散データOD2Dは、対応するシェアホルダとして、例えばシェアホルダS2にて保管される。
同様に、元データOD3と元データOD7と乱数A3と乱数A7とが排他的論理和(つまり、XOR処理)されることで、「元データOD3 XOR 元データOD7 XOR 乱数A3 XOR 乱数A7」のように生成される。なお、分散データOD3Dの構成例は、図17に示す例に限定されない。従って、分散データOD3Dは、対応するシェアホルダとして、例えばシェアホルダS3にて保管される。
同様に、元データOD4と元データOD8と乱数A4と乱数A8とが排他的論理和(つまり、XOR処理)されることで、「元データOD4 XOR 元データOD8 XOR 乱数A4 XOR 乱数A8」のように生成される。なお、分散データOD4Dの構成例は、図17に示す例に限定されない。従って、分散データOD4Dは、対応するシェアホルダとして、例えばシェアホルダS4にて保管される。
図18は、物理乱数B、および暗号化された元データ(病院データ)E(OD)の一例を示すテーブルである。
物理乱数Bは、通信の暗号化用あるいは復号用に乱数生成器80により生成され、例えば8個の乱数B1,乱数B2,…,乱数B8が連接されて構成される。図18に示すように、例えばバーナム暗号が使用される場合、元データODのサイズ長と物理乱数Bのサイズ長とは同一であるため、元データOD1と乱数B1、元データOD2と乱数B2、…、元データOD8と乱数B8とはともに同一のサイズ長を有する。
ここで、病院端末(例えば病院端末H1)により、元データOD1~OD8のそれぞれと対応する乱数B1~B8のそれぞれとを用いて暗号化の処理が実行される際、図18に示す8個の暗号1~8から構成される暗号化された病院データE(OD)が得られる。
暗号1は、元データOD1と乱数B1とが排他的論理和(つまり、XOR処理)されることで、「乱数B1 XOR 元データOD1」のように生成される。なお、暗号1の構成例は、図18に示す例に限定されない。
同様に、暗号2は、元データOD2と乱数B2とが排他的論理和(つまり、XOR処理)されることで、「乱数B2 XOR 元データOD2」のように生成される。なお、暗号2の構成例は、図18に示す例に限定されない。
同様に、暗号3は、元データOD3と乱数B3とが排他的論理和(つまり、XOR処理)されることで、「乱数B3 XOR 元データOD3」のように生成される。なお、暗号3の構成例は、図18に示す例に限定されない。
同様に、暗号4は、元データOD4と乱数B4とが排他的論理和(つまり、XOR処理)されることで、「乱数B4 XOR 元データOD4」のように生成される。なお、暗号4の構成例は、図18に示す例に限定されない。
同様に、暗号5は、元データOD5と乱数B5とが排他的論理和(つまり、XOR処理)されることで、「乱数B5 XOR 元データOD5」のように生成される。なお、暗号5の構成例は、図18に示す例に限定されない。
同様に、暗号6は、元データOD6と乱数B6とが排他的論理和(つまり、XOR処理)されることで、「乱数B6 XOR 元データOD6」のように生成される。なお、暗号6の構成例は、図18に示す例に限定されない。
同様に、暗号7は、元データOD7と乱数B7とが排他的論理和(つまり、XOR処理)されることで、「乱数B7 XOR 元データOD7」のように生成される。なお、暗号7の構成例は、図18に示す例に限定されない。
同様に、暗号8は、元データOD8と乱数B8とが排他的論理和(つまり、XOR処理)されることで、「乱数B8 XOR 元データOD8」のように生成される。なお、暗号2の構成例は、図18に示す例に限定されない。
実施の形態2あるいは実施の形態3では、暗号化された元データ(病院データ)E(OD)は、病院端末(例えば病院端末H1)において生成され、病院端末H1からメインコントローラ10に対して送信される。メインコントローラ10は、暗号化された元データ(病院データ)E(OD)を、乱数生成器20により生成された物理乱数Aを用いて分散処理を行い、図19に示す4個の暗号化された分散データ(暗号1D,暗号2D,暗号3D,暗号4D)を生成する。
図19は、暗号化された元データ(病院データ)E(OD)が分散処理されて生成された、分散された暗号化分散データE(ODD)の一例を示すテーブルである。
暗号化分散データE(ODD)は、例えば4個の暗号1D,暗号2D,暗号3D,暗号4Dから構成される。暗号1D~暗号4Dは、それぞれ分散された、暗号化された元データを示す。
実施の形態3において、メインコントローラ10は、図17に示す分散データの生成アルゴリズム(分散処理方法)に従い、暗号化された元データ(病院データ)E(OD)を、乱数生成器20により生成された物理乱数Aを用いて分散処理を行う。これにより、例えば4個の分散された、暗号化された元データ(具体的には、暗号1D~暗号4D)が生成される。
暗号1Dは、暗号1と暗号5と乱数A1と乱数A5とが排他的論理和(つまり、XOR処理)されることで、「暗号1 XOR 暗号5 XOR 乱数B1 XOR 乱数B5」のように生成される。なお、暗号1Dの構成例は、図19に示す例に限定されない。
暗号2Dは、暗号2と暗号6と乱数A2と乱数A6とが排他的論理和(つまり、XOR処理)されることで、「暗号2 XOR 暗号6 XOR 乱数B2 XOR 乱数B6」のように生成される。なお、暗号2Dの構成例は、図19に示す例に限定されない。
暗号3Dは、暗号3と暗号7と乱数A3と乱数A7とが排他的論理和(つまり、XOR処理)されることで、「暗号3 XOR 暗号7 XOR 乱数B3 XOR 乱数B7」のように生成される。なお、暗号3Dの構成例は、図19に示す例に限定されない。
暗号4Dは、暗号4と暗号8と乱数A4と乱数A8とが排他的論理和(つまり、XOR処理)されることで、「暗号4 XOR 暗号8 XOR 乱数B4 XOR 乱数B8」のように生成される。なお、暗号4Dの構成例は、図19に示す例に限定されない。
従って、例えば4台のコントローラのそれぞれに送られる、分散された暗号化された元データ(暗号1D,暗号2D,暗号3D,暗号4D)は、「物理乱数Bの分散処理により生成された分散データ」である分散乱数データ(「乱数B1 XOR 乱数B5」,「乱数B2 XOR 乱数B6」,「乱数B3 XOR 乱数B7」,「乱数B4 XOR 乱数B8」)と、「元データODの分散処理により生成された分散データ」である分散データOD1D,OD2D,OD3D,OD4Dとを排他論理和(XOR処理)したものとなる。
従って、4台のコントローラのそれぞれは、代理サーバ70Aから受け取った分散処理された乱数(「乱数B1 XOR 乱数B5」,「乱数B2 XOR 乱数B6」,「乱数B3 XOR 乱数B7」,「乱数B4 XOR 乱数B8」)と、メインコントローラ10から受け取った暗号化分散データ(暗号1D,暗号2D,暗号3D,暗号4D)とを用いて、平文データである分散データOD1D,OD2D,OD3D,OD4Dを生成できる。4台のコントローラのそれぞれは、対応する4台のシェアホルダのいずれかに平文データである分散データOD1D~OD4Dのそれぞれを保管する。
以上により、秘密分散保管システム5Eは、n台のシェアホルダS1~Snのそれぞれに対応して設けられるn台のコントローラC1~Cnのそれぞれと、n台のコントローラC1~Cnのそれぞれ、少なくとも1台の病院端末H1~Hnのそれぞれ、および乱数生成器20との間で通信可能に接続されるメインコントローラ10と、n台のコントローラC1~Cnのそれぞれ、病院端末H1~Hnのそれぞれ、および乱数生成器80との間で通信可能に接続される代理サーバ70Aとを備える。代理サーバ70Aは、病院データのファイル名およびデータ量(元データの書誌情報の一例)を病院端末(例えば病院端末H1)から受信すると、乱数生成器80により発生された共通鍵(第2物理乱数)を分散処理してn個の分散処理された共通鍵(分散乱数データ)を生成する。代理サーバ70Aは、n個の分散処理された共通鍵のそれぞれを、対応するn台のコントローラC1~Cnに送るとともに、共通鍵を病院端末H1に送る。メインコントローラ10は、共通鍵を用いて暗号化された病院データE(OD)を病院端末H1から受信すると、乱数生成器20により発生された物理乱数を取得し、この物理乱数を用いて、暗号化された病院データE(OD)を分散処理してn個の暗号化された分散データE(H1D1)~E(H1Dn)(暗号化分散データ)を生成する。メインコントローラ10は、n個の暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれを、対応するn台のコントローラC1~Cnに送る。
これにより、秘密分散保管システム5Eでは、代理サーバ70Aは、乱数生成器80により得られた物理乱数を共通鍵として使用し、その共通鍵を分散処理してコントローラC1~Cnのそれぞれに、メインコントローラ10の管理者が知得することなく、分散処理された共通鍵を安全に渡すことが可能となる。従って、秘密分散保管システム5Eによれば、病院端末(例えば病院端末H1)が保持する秘匿性の高い病院データが分散処理される際に、メインコントローラ10には、代理サーバ70A、病院端末およびそれぞれのコントローラしか知り得ない共通鍵により病院データが暗号化された上で渡されるので、メインコントローラ10の管理者は病院データの内容の知得を防ぐことができる。
また、n台のコントローラC1~Cnのそれぞれは、自装置(自コントローラ)に対応する暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれ(具体的には、いずれか一つ)をメインコントローラ10から受信すると、自装置に対応する分散処理された共通鍵を用いて復号し、復号により得られた分散データを対応するシェアホルダS1~Snに保管する。これにより、秘密分散保管システム5Eによれば、シェアホルダS1~Snに分散データを保管する際、いずれの暗号化された分散データを復号する際も、対応する分散処理された共通鍵を容易に特定できる。
また、代理サーバ70Aは、病院端末H1からの病院データのデータ量(サイズ量情報)を含む復元指示に応じて、乱数生成器80により生成された共通鍵を分散処理してn個の分散処理された共通鍵(分散乱数データ)を生成する。代理サーバ70Aは、n個の分散処理された共通鍵のそれぞれを、対応するn台のコントローラC1~Cnに送るとともに、共通鍵を病院端末H1に送る。n台のコントローラC1~Cnのそれぞれは、自装置に対応するシェアホルダS1~Snのそれぞれから受信した分散データH1D1~H1Dnを、自装置が代理サーバ70Aから受信した分散処理された共通鍵を用いて暗号化し、暗号化された分散データE(H1D1)~E(H1Dn)のそれぞれを生成してメインコントローラ10に送る。メインコントローラ10は、n台のコントローラC1~Cnのそれぞれから受信した、暗号化された分散データE(H1D1)~E(H1Dn)から暗号化された病院データE(OD)を復元して病院端末H1に送る。これにより、代理サーバ70Aは、乱数生成器80を用いて得られる共通鍵を分散処理して各コントローラに分散処理された共通鍵を渡す。従って、復元処理する場合、共通鍵を安全に各コントローラに渡すことができる。
また、メインコントローラ10は、病院端末H1からの復元指示に応じて、n台のコントローラC1~Cnのそれぞれが対応するシェアホルダS1~Snから受信した分散データのファイル名(書誌情報の一例)を、n台のコントローラC1~Cnからそれぞれ受信する。メインコントローラ10は、病院データの書誌情報を復元し、病院データの書誌情報から病院データのデータ量(サイズ量情報)を抽出する。これにより、シェアホルダS1~Snに保管される分散データを復元する際も、対応する分散処理された共通鍵を容易に特定して分散データを暗号化できる。
また、n台のコントローラC1~Cnのそれぞれは、対応する分散処理された共通鍵を保管する際、その分散処理された共通鍵(分散乱数データ)の使用状態を示す状態フラグの値を「1」に設定する。その後、n台のコントローラC1~Cnのそれぞれは、分散処理された共通鍵を用いてn個の暗号化された分散データE(H1D1)~E(H1Dn)をそれぞれ復号し、復号した分散データを対応シェアホルダS1~Snに保管した後、使用済みを表す情報、つまり状態フラグの値を「0」に設定する。これにより、病院データの分散データが保管される前に一連の処理が中断された場合、状態フラグの値が「1」である分散処理された共通鍵を消去することで、保管に使用されない分散処理された共通鍵が残ってしまうことを回避できる。つまり、メモリの使用効率を上げることができる。また、コントローラC1~Cnのそれぞれは、状態フラグの値が「1」である分散処理された共通鍵が無い場合、暗号化された分散データの受信を拒否でき、速やかにエラーを発生できる。
以上、図面を参照しながら各種の実施の形態について説明したが、本開示はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例、修正例、置換例、付加例、削除例、均等例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。また、発明の趣旨を逸脱しない範囲において、上述した各種の実施の形態における各構成要素を任意に組み合わせてもよい。
例えば、上記実施形態では、ユーザとして病院端末を例示したが、これに限らず、公的機関や民間の研究施設等、病院データを扱う組織において、本開示は適用可能である。