(57)【要約】【課題】分割データを保管する少なくとも１つの記憶装置に対してネットワークを介してアクセスする場合における効率的な分割、復元の処理を可能にする。【解決手段】元データの分割処理においては、分割データ生成部１１により、元データSを３つに分割し、分割データAを端末装置１が内蔵する記憶部１４に保管し、分割データBを外付記憶装置２に保管し、分割データC（乱数）をネットワーク４を介してデータセンタ３の記憶部３１に保管する。元データの復元処理においては、記憶部１４と外付記憶装置２の双方が使用可能な場合には、元データ復元部１２により、それぞれから分割データAと分割データBを読み出し、両者の排他的論理和により乱数（分割データC）を求めることで、分割データCをネットワーク４を介してデータセンタ３の記憶部３１から取得する処理を不要にする。そして、求めた乱数と読み出した分割データA，Bとを用いることで、元データを復元する。【選択図】図１
2007042027.tif 000002
【特許請求の範囲】
【請求項１】
端末装置と、当該端末装置がネットワークを介することなくアクセス可能な第１記憶手段および第２記憶手段と、当該端末装置がネットワークを介してアクセス可能な第３記憶手段とを備えたデータ分割・復元システムであって、
元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、
第１記憶手段は第１分割データを記憶し、
第２記憶手段は第２分割データを記憶し、
第３記憶手段は第３分割データを記憶するものであって、
前記端末装置は、
第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する手段と、
第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する手段と、
取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する元データ復元手段と、
を有することを特徴とするデータ分割・復元システム。
【請求項２】
第１記憶手段および第２記憶手段に対してはネットワークを介することなくアクセス可能で、かつ第３記憶手段に対してはネットワークを介してアクセス可能な端末装置であって、
元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、
第１記憶手段は第１分割データを記憶し、
第２記憶手段は第２分割データを記憶し、
第３記憶手段は第３分割データを記憶するものであって、
当該端末装置は、
第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する手段と、
第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する手段と、
取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する元データ復元手段と、
を有することを特徴とする端末装置。
【請求項３】
元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々に対応して、処理単位ビット長の複数の乱数部分データを発生させる乱数発生手段と、
各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって生成し、第３分割データを構成する各分割部分データを各乱数部分データによって生成する分割データ生成手段と、
第１分割データを第１記憶手段に記憶させ、第２分割データを第２記憶手段に記憶させる手段と、第３分割データをネットワークを介して第３記憶手段へ記憶させる手段と、
を有することを特徴とする請求項２記載の端末装置。
【請求項４】
端末装置と、当該端末装置がネットワークを介することなくアクセス可能な第１記憶手段および第２記憶手段と、当該端末装置がネットワークを介してアクセス可能な第３記憶手段とを備えたシステムにより処理するデータ分割・復元方法であって、
元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、
第１記憶手段により第１分割データを記憶し、
第２記憶手段により第２分割データを記憶し、
第３記憶手段により第３分割データを記憶し、
前記端末装置により、
第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得し、
第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得し、
取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元することを特徴とするデータ分割・復元方法。
【請求項５】
第１記憶手段および第２記憶手段に対してはネットワークを介することなくアクセス可能で、かつ第３記憶手段に対してはネットワークを介してアクセス可能な端末装置に実行させるコンピュータプログラムであって、
元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、
第１記憶手段により第１分割データを記憶し、
第２記憶手段により第２分割データを記憶し、
第３記憶手段により第３分割データを記憶した状態において、
当該端末装置に対して、
第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する処理と、
第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する処理と、
取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する処理と、
を実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの機密性および安全性を確保するためにデータを分割する技術に関する。
【背景技術】
【０００２】
重要な秘密データ（以下、元データという）を保管する場合、紛失、破壊、盗難やプライバシー侵害の脅威がある。このような脅威は秘密に保管すべきデータを単に暗号化しただけでは解決できず、紛失、破壊に備えてコピーを複数作ることが有効であるが、コピーを複数作ると盗難のリスクが増加してしまう。
【０００３】
このような問題を解決する手段として、従来、しきい値秘密分散法がある（非特許文献１参照）。この従来の方法は、元データSをn個のデータに分割し、そのうち任意のx個の分割データを集めれば元データSが復元できるが、任意のx-1個の分割データでは元データSは復元できないというものである。従って、x-1個まで分割データが盗まれても元データSが漏れず、またn-x個まで分割データを紛失したり破壊されたりしても、元データSを復元できる。
【０００４】
この方法の代表的な実現例としてｎ-1次多項式と剰余演算により構成される方法がある（非特許文献２参照）。この従来の方法は、公開鍵暗号方式の秘密鍵の分割管理などで利用されており、データ量があまり多くないため、現状のコンピュータの演算処理能力、記憶装置・記憶媒体などのコストに対しては特に問題ない。
【０００５】
また、複数に分割された分割データは、安全性の確保のため、それぞれ異なる記憶装置に記憶し管理することが提案されている。この場合、記憶装置の１つはネットワークを介して接続可能に設置することが考えられる。
【非特許文献１】A. Shamir, "How to Share a Secret", Comm.Assoc.Comput.Mach., Vol. 22, no. 11, pp. 612-613(Nov.1979)
【非特許文献２】Bruce Schneier, "Applied Cryptography", John Wiley&Sons, Inc., pp. 383-384(1994)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、上記のように記憶装置の１つに対してネットワークを介してアクセスする場合には、その記憶装置に対して分割データを読み書きするときの処理速度が、ネットワークにおける伝送容量や他のデータの伝送状態によって制限を受けることになるため、分割データを利用する度にネットワークを介してアクセスしていたのでは、効率的な分割・復元の処理が困難であるという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであり、その目的とするところは、分割データを保管しておく少なくとも１つの記憶装置に対してネットワークを介してアクセスする場合における効率的な分割、復元の処理を可能にすることにある。
【課題を解決するための手段】
【０００８】
第１の本発明に係るデータ分割・復元システムは、端末装置と、当該端末装置がネットワークを介することなくアクセス可能な第１記憶手段および第２記憶手段と、当該端末装置がネットワークを介してアクセス可能な第３記憶手段とを備えたデータ分割・復元システムであって、元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、第１記憶手段は第１分割データを記憶し、第２記憶手段は第２分割データを記憶し、第３記憶手段は第３分割データを記憶するものであって、前記端末装置は、第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する手段と、第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する手段と、取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する元データ復元手段と、を有することを特徴とする。
【０００９】
本発明にあっては、第１記憶手段および第２記憶手段の双方が使用可能な場合には、それぞれから読み出した第１分割データと第２分割データとの排他的論理和により乱数を取得することで、乱数により構成される第３分割データをネットワークを介して第３記憶手段から取得する処理を不要にする。このようにして取得した乱数は、元データの復元に利用できるほか、別の元データを分割する際にも利用できるので、分割・復元処理の度にネットワークを使用することが不要になり、効率的な処理を実現することができる。また、分割処理の度に乱数発生手段によって乱数を発生させることが不要になるので、高速な分割処理を実現することができる。
【００１０】
第２の本発明に係る端末装置は、第１記憶手段および第２記憶手段に対してはネットワークを介することなくアクセス可能で、かつ第３記憶手段に対してはネットワークを介してアクセス可能な端末装置であって、元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、第１記憶手段は第１分割データを記憶し、第２記憶手段は第２分割データを記憶し、第３記憶手段は第３分割データを記憶するものであって、当該端末装置は、第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する手段と、第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する手段と、取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する元データ復元手段と、を有することを特徴とする。
【００１１】
第３の本発明に係るデータ分割・復元方法は、端末装置と、当該端末装置がネットワークを介することなくアクセス可能な第１記憶手段および第２記憶手段と、当該端末装置がネットワークを介してアクセス可能な第３記憶手段とを備えたシステムにより処理するデータ分割・復元方法であって、元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、第１記憶手段により第１分割データを記憶し、第２記憶手段により第２分割データを記憶し、第３記憶手段により第３分割データを記憶し、前記端末装置により、第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得し、第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得し、取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元することを特徴とする。
【００１２】
第４の本発明に係るコンピュータプログラムは、第１記憶手段および第２記憶手段に対してはネットワークを介することなくアクセス可能で、かつ第３記憶手段に対してはネットワークを介してアクセス可能な端末装置に実行させるコンピュータプログラムであって、元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々と、処理単位ビット長で区分けした乱数部分データとの排他的論理和によって、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、第１および第２の分割データを構成する各分割部分データが生成され、第３の分割データを構成する各分割部分データが各乱数部分データによって生成された場合の第１、第２、および第３の分割データについて、第１記憶手段により第１分割データを記憶し、第２記憶手段により第２分割データを記憶し、第３記憶手段により第３分割データを記憶した状態において、当該端末装置に対して、第１記憶手段および第２記憶手段の双方が使用可能な場合には、第１記憶手段から第１分割データを読み出すとともに第２記憶手段から第２分割データを読み出し、それぞれの分割データを構成する各分割部分データ間の排他的論理和を演算することによって各乱数部分データを取得する処理と、第１記憶手段又は第２記憶手段の一方が使用不能な場合には、使用可能な方の記憶手段から分割データを読み出すとともに、ネットワークを介して第３記憶手段へアクセスし、当該第３記憶手段から第３分割データを読み出して各乱数部分データを取得する処理と、取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する処理と、を実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、分割データを保管しておく少なくとも１つの記憶装置に対してネットワークを介してアクセスする場合に、効率的な分割、復元の処理を実現することができる。
【発明を実施するための最良の形態】
【００１４】
図１は、本実施の形態におけるデータ分割・復元システムの構成を示すブロック図である。同図のシステムは、端末装置１に外付記憶装置２が接続されるとともに、端末装置１がネットワーク４を介してデータセンタ３と接続可能に構成される。端末装置１、データセンタ３は、それぞれコンピュータによって構成され、演算処理装置、メモリ等を備える。ネットワーク４は例えばインターネットで構成される。
【００１５】
端末装置１は、分割データ生成部１１、元データ復元部１２、乱数発生部１３、記憶部１４、データ送受信部１５を備える。記憶部１４には、分割する対象となる元データが格納される。
【００１６】
分割データ生成部１１は、記憶部１４から元データを読み出して、これを３つの分割データに分割する。ここでは、３つの分割データを分割データA（第１分割データ）、分割データB（第２分割データ）、分割データC（第３分割データ）と呼ぶ。分割データCは、乱数によって形成されるデータである。この分割処理の詳細については後述する。
【００１７】
分割データ生成部１１は、分割データAを記憶部１４に記憶させ、分割データBを外付記憶装置２に記憶させる。分割データCについては、データ送受信部１５によりネットワーク４を介してデータセンタ３へ送信する。データセンタでは受信した分割データCを記憶部３１に記憶させる。
【００１８】
元データ復元部１２は、３つの分割データのうちの２つを用いて元データを復元する。記憶部１４および外付記憶装置２の双方が使用可能な場合には、記憶部１４から分割データAを読み出すとともに外付記憶装置２から分割データBを読み出し、これら分割データA，Bを用いて元データを復元する。また、記憶部１４又は外付記憶装置２の一方が使用不能な場合には、ネットワークを介してデータセンタ３へアクセスし、データセンタ３の記憶部３１から分割データCを読み出して取得し、この分割データCと記憶部１４又は外付記憶装置２の使用可能な方から読み出した分割データとを用いて元データを復元する。この処理の詳細についても後述する。
【００１９】
乱数発生部１３は、元データを３つの分割データに分割するに際し、元データを処理単位ビット長で区分けした複数の元部分データの各々に対応して、処理単位ビット長の複数の乱数部分データを発生させる。
【００２０】
記憶部１４は、元データの他、コンピュータプログラムを格納しており、端末装置１が備える演算処理装置によりこのコンピュータプログラムを読み出して実行することで、上記各部における処理が実行される。上記各部が処理を実行する際には、各部の入力に用いるデータをメモリに一時的に格納してからこれを演算処理装置における演算に利用し、この演算結果についてはメモリに一時的に格納してから記憶部１４に記憶させる。
【００２１】
データ送受信部１５は、分割データCをネットワーク４を介してデータセンタ３へ送信する。また、分割データCをデータセンタ３から受信する処理も行う。
【００２２】
データセンタ３は、記憶部３１とデータ送受信部３２を備えており、データ送受信部３２によりネットワーク４を介して端末装置１と分割データCの送受信を行う。記憶部３１は、受信した分割データCを読み出し可能に記憶する。
【００２３】
本実施形態における元データの分割および復元では、元データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するが、この場合の処理単位ビット長は任意の値に設定することができ、元データを処理単位ビット長毎に区分けして、この元部分データから分割部分データを分割数より１少ない数ずつ生成するので、元データのビット長が処理単位ビット長の（分割数-1）倍の整数倍に一致しない場合は、元データの末尾の部分に０を埋めるなどして元データのビット長を処理単位ビット長の（分割数-1）倍の整数倍に合わせることにより本実施形態を適用することができる。
【００２４】
また、上述した乱数も（分割数-1）個の元部分データの各々に対応して処理単位ビット長のビット長を有する（分割数-1）個の乱数部分データとして乱数発生部１３から生成される。すなわち、乱数は処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する（分割数-1）個の乱数部分データとして生成される。更に、元データは処理単位ビット長に基づいて所望の分割数の分割データに分割されるが、この分割データの各々も（分割数-1）個の元部分データの各々に対応して処理単位ビット長のビット長を有する（分割数-1）個の分割部分データとして生成される。すなわち、分割データの各々は、処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する（分割数-1）個の分割部分データとして生成される。
【００２５】
なお、以下の説明では、上述した元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、また複数のデータや乱数などのうちの１つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用い、（分割数n-1）個の元部分データ、（分割数n-1）個の乱数部分データ、および分割数n個の分割データDのそれぞれのうちの１つをそれぞれS(j),R(j)およびD(i)で表記し、更に各分割データD(i)を構成する複数(n-1)の分割部分データをD(i,j)で表記するものとする。すなわち、S(j)は、元データSの先頭から処理単位ビット長毎に区分けして１番から順に採番した時のj番目の元部分データを表すものである。
【００２６】
この表記を用いると、元データ、乱数データ、分割データとこれらをそれぞれ構成する元部分データ、乱数部分データ、分割部分データは、次のように表記される。
【００２７】
元データS=(n-1)個の元部分データS(j)
=S(1),S(2),…,S(n-1)
乱数R=(n-1)個の乱数部分データR(j)
=R(1),R(2),…,R(n-1)
n個の分割データD(i)=D(1),D(2),…,D(n)
各分割部分データD(i,j)
=D(1,1),D(1,2),…,D(1,n-1)
D(2,1),D(2,2),…,D(2,n-1)
…     …        …
D(n,1),D(n,2),…,D(n,n-1)
(i=1〜n), (j=1〜n-1)
分割データ生成部１１は、記憶部１４から読み出した元データと、乱数発生部１３により生成された乱数部分データとを用いて、各分割データのみからでは元データを復元不能であるが、各分割データのうちの２つの分割データから元データが復元可能となるように、分割データA，Bをそれぞれ構成する各分割部分データを元部分データと乱数部分データの排他的論理和（XOR）によって生成する。また、分割データCを構成する各分割部分データを各乱数部分データによって生成する。
【００２８】
一方、元データ復元部１２は、記憶部１４および外付記憶装置２の双方が使用可能で、分割データA，Bをそれぞれ読み出し可能な場合には、これら分割データA，B間の排他的論理和を演算することによって各乱数部分データを取得する。また、記憶部１４又は外付記憶装置２の一方が使用不能な場合には、記憶部１４又は外付記憶装置２のうちの使用可能な方から分割データを読み出すとともに、ネットワーク４を介して分割データCを受信し、各乱数部分データを取得する。そして、取得した各乱数部分データと読み出した各分割部分データとの排他的論理和によって元データを復元する。
【００２９】
この手法は、コンピュータ処理に適したビット演算である排他的論理和演算を用いるので、データ分割処理に多項式や剰余演算を用いる従来の方法に比較して、高速かつ高性能な演算処理能力を必要とせず、大容量のデータに対しても簡単な演算処理を繰り返して分割データを生成することができる。また、任意に定めた一定の長さ毎にデータの先頭から順に演算処理を行うストリーム処理により分割データを生成できる。
【００３０】
次に、データの分割・復元の処理を具体的に説明する前に、本システムにおける全体的な処理の流れについて図２のフローチャートを用いて説明する。
【００３１】
この処理は、実際の元データを用いて分割処理を行う通常利用処理と、元データを受け取る前にダミーデータを用いて予め処理しておく前処理とに分かれている。
【００３２】
ステップ１（図２においてＳ１と示す。以下同じ）で、乱数発生部１３により乱数Rと、ダミーデータR'を生成する。この乱数Rはそのまま分割データCとする。ダミーデータは乱数で構成される。
【００３３】
ステップ２では、このダミーデータを元データSの代わりに使用する。具体的には、分割データ生成部１１により、ダミーデータR'と乱数Rとの排他的論理和を演算することで、分割データAおよび分割データBを生成する。分割データAについては、端末装置１が内蔵する記憶部１４に保存させ、分割データBについては外付記憶装置２に保存させる。
【００３４】
ステップ３で、データ送受信部１５により、分割データC（乱数データ）をネットワーク４を介してデータセンタ３に送信し、データセンタ３における記憶部３１に記憶させる。この後、ネットワーク４との通信接続を切断しオフライン設定をする。
【００３５】
ステップ４で、実際の元データSの分割処理が発生した時、分割データ生成部１１は、分割データAと分割データBの排他的論理和を演算することによって、乱数Rを生成する。
【００３６】
ステップ５で、元データSと生成した乱数Rとの排他的論理和を演算することで、分割データAと分割データBを生成する。分割データAについては、端末装置１が内蔵する記憶部１４に保存させ、分割データBについては外付記憶装置２に保存させる。
【００３７】
一方、ステップ４において、記憶部１４又は外付記憶装置２の一方が破損、盗難等により使用できない場合には、データ送受信部１５により、ネットワーク４をオンライン設定し、データセンタ３にアクセスして分割データCを取得する。分割データCは乱数であるので、ステップ５において、分割データ生成部１１は、この分割データCと元データSの排他的論理和を演算することで分割データAおよび分割データBを生成する。
【００３８】
このような処理を行うことで、分割データをネットワークを介して送受信することはネットワークの伝送容量や他のデータの伝送状態によって伝送速度が抑制されるところ、通常利用処理においては、記憶部１４及び外付記憶装置２の双方が使用可能な場合であれば、ネットワーク４を介して分割データCを取得する処理が不要となる。これにより、効率的な分割処理を実現することができる。
【００３９】
また、乱数発生部１３により乱数を発生させる処理は演算の負担が大きいところ、上記の処理を行うことで、乱数の発生は、前処理において１回行うだけで済むので、分割処理の度に乱数を発生させる必要がなく、高速な分割処理を実現することができる。
【００４０】
続いて、データの分割・復元の処理について詳細に説明する。本実施形態で使用する排他的論理和演算（XOR）は、以下の説明では、「＊」なる演算記号で表すことにする。この排他的論理和演算のビット毎の演算規則での各演算結果は下記のとおりである。
【００４１】
0 * 0 の演算結果は 0
0 * 1 の演算結果は 1
1 * 0 の演算結果は 1
1 * 1 の演算結果は 0
また、XOR演算は交換法則、結合法則が成り立つ。すなわち、
a*b=b*a
(a*b)*c=a*(b*c)
が成り立つことが数学的に証明される。
【００４２】
また、a*a=0,a*0=0*a=aが成り立つ。
【００４３】
ここでa,b,cは同じ長さのビット列を表し、0はこれらと同じ長さですべて「0」からなるビット列を表す。
【００４４】
次に、図３のフローチャートに示す記号の定義について説明する。
【数１】
2007042027.tif 000003
【００４５】
は、A(1)*A(2)*…A(n)を意味するものとする。
【００４６】
（２）c(j,i,k)を、(n-1)×(n-1)行列であるU[n-1,n-1]×(P[n-1,n-1])＾(j-1)のi行k列の値と定義する。
【００４７】
このときQ(j,i,k)を下記のように定義する。
【００４８】
c(j,i,k)=1 のとき Q(j,i,k)=R((n-1)×m+k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ただし、ｍはｍ≧０の整数を表す。
【００４９】
（３）U[n,n]とは、n×n行列であって、i行j列の値をu(i,j)で表すと、
i+j≦n+1 のとき u(i,j)=1
i+j＞n+1  のとき u(i,j)=0
である行列を意味するものとし、「上三角行列」ということとする。具体的には下記のような行列である。
【数２】
2007042027.tif 000004
【００５０】
（４）P[n,n]とは、n×n行列であって、i行j列の値をp(i,j)で表すと、
j=i+1    のとき p(i,j)=1
i=1,j=n  のとき p(i,j)=1
上記以外のとき  p(i,j)=0
である行列を意味するものとし、「回転行列」ということとする。具体的には下記のような行列であり、他の行列の右側からかけると当該他の行列の１列目を２列目へ、２列目を３列目へ、…,n-1列目をn列目へ、n列目を１列目へ移動させる作用がある。つまり、行列Pを他の行列に右側から複数回かけると、その回数分だけ各列を右方向へ回転させるように移動させることができる。
【数３】
2007042027.tif 000005
【００５１】
（５）A,Bをn×n行列とすると、A×Bとは行列AとBの積を意味するものとする
。行列の成分同士の計算規則は通常の数学で用いるものと同じである。
【００５２】
（６）Aをn×n行列とし、iを整数とすると、A＾iとは行列Aのi個の積を意味するものとする。また、A＾0とは単位行列Eを意味するものとする。
【００５３】
（７）単位行列E[n,n]とは、n×n行列であって、i行j列の値をe(i,j)で表すと、
i=j     のとき e(i,j)=1
上記以外のとき e(i,j)=0
である行列を意味するものとする。具体的には下記のような行列である。Aを任意のn×n行列とすると
A×E=E×A=A
となる性質がある。
【数４】
2007042027.tif 000006
【００５４】
次に、図３に示すフローチャートおよび図４、図５に示す具体的データを参照して、まず元データSの分割処理について説明する。
【００５５】
まず、元データSが端末装置１に与えられ、分割処理が開始される（図３のステップＳ２０１）。なお、本例では、元データSは、１６ビットの「10110010 00110111」とする。
【００５６】
次に、利用者は分割数nとして３を端末装置１に指示する（ステップＳ２０３）。この分割数nは端末装置１において予め定められた値を用いてもよい。なお、この分割数n=3に従って端末装置１で生成される３個の分割データをD(1),D(2),D(3)とする。この分割データD(1),D(2),D(3)は、すべて元データのビット長と同じ１６ビット長のデータである。
【００５７】
それから、元データSを分割するために使用される処理単位ビット長bを８ビットと決定し、また元データと同じビット長である１６ビットの乱数Rを乱数発生部１３から取得して生成する（ステップＳ２０５）。この処理単位ビット長bは、利用者が端末装置１に対して指定してもよいし、または端末装置１において予め定められた値を用いてもよい。なお、処理単位ビット長bは、任意のビット数でよいが、ここでは元データSを割り切れることができる８ビットとしている。従って、上記１６ビットの「10110010 00110111」の元データSは、８ビットの処理単位ビット長で区分けされた場合の２個の元分割データS(1)およびS(2)は、それぞれ「10110010」および「00110111」となる。
【００５８】
次のステップＳ２０７では、元データSのビット長が8×2の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を０で埋めて、8×2の整数倍に合わせる。なお、本例のように処理単位ビット長bが８ビットおよび分割数nが３に設定された場合における分割処理は、元データSのビット長として１６ビットに限られるものでなく、処理単位ビット長b×(分割数n-1)=8×2の整数倍の元データSに対して有効なものである。
【００５９】
次に、ステップＳ２０９では、変数m、すなわち上述した整数倍を意味する変数mを０に設定する。本例のように、元データSが処理単位ビット長b×(分割数n-1)=8×2=16ビットである場合には、変数mは０であるが、２倍の３２ビットの場合には、変数mは１となり、３倍の４８ビットの場合には、変数mは２となる。
【００６０】
次に、元データSの8×2×m+1ビット目から8×2ビット分のデータが存在するか否かが判定される（ステップＳ２１１）。これは、このステップＳ２１１以降に示す分割処理を元データSの変数mで特定される処理単位ビット長b×(分割数n-1)=8×2=16ビットに対して行った後、元データSとして次の１６ビットがあるか否かを判定しているものである。本例のように元データSが１６ビットである場合には、１６ビットの元データSに対してステップＳ２１１以降の分割処理を１回行うと、後述するステップＳ２１９で変数mが+1されるが、本例の元データSでは変数mがm+1の場合に相当する１７ビット以降のデータは存在しないので、ステップＳ２１１からステップＳ２２１に進むことになるが、今の場合は、変数mは０であるので、元データSの8×2×m+1ビット目は、8×2×0+1=1となり、元データSの１６ビットの１ビット目から8×2ビット分にデータが存在するため、ステップＳ２１３に進む。
【００６１】
ステップＳ２１３では、変数jを１から２(=分割数n-1)まで変えて、元データSの8×(2×m+j-1)+1ビット目から８ビット分(=処理単位ビット長)のデータを元部分データS(2×m+j)に設定し、これにより元データSを処理単位ビット長で区分けした２(分割数n-1)個の元部分データS(1),S(2)を次のように生成する。
【００６２】
元データS=S(1),S(2)
第１の元部分データS(1)=「10110010」
第２の元部分データS(2)=「00110111」
なお、前述した前処理においては、元部分データS(1),S(2)には乱数発生部１３により生成された乱数R'が用いられる。
【００６３】
次に、変数jを１から２(=分割数n-1)まで変えて、乱数部分データR(2×m+j)に乱数発生部１３から発生する８ビットの長さの乱数を設定し、これにより乱数Rを処理単位ビット長で区分けした２(分割数n-1)個の乱数部分データR(1),R(2)を次のように生成する（ステップＳ２１５）。
【００６４】
乱数R=R(1),R(2)
第１の乱数部分データR(1)=「10110001」
第２の乱数部分データR(2)=「00110101」
次に、ステップＳ２１７において、変数iを１から３(=分割数n)まで変えるとともに、更に各変数iにおいて変数jを１から２(=分割数n-1)まで変えながら、ステップＳ２１７に示す分割データを生成するための元部分データと乱数部分データの排他的論理和からなる定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,2×m+j) を生成する。この結果、次に示すような分割データDが生成される。
【００６５】
分割データD
=３個の分割データD(i)=D(1),D(2),D(3)
第１の分割データD(1)
=２個の分割部分データD(1,j)=D(1,1),D(1,2)
=「00110110」,「10110011」
第２の分割データD(2)
=２個の分割部分データD(2,j)=D(2,1),D(2,2)
=「00000011」,「00000010」
第３の分割データD(3)
=２個の分割部分データD(3,j)=D(3,1),D(3,2)
=「10110001」,「00110101」
なお、各分割部分データD(i,j)を生成するためのステップＳ２１７に示す定義式は、本例のように分割数n=3の場合には、具体的には図５に示す表に記載されているものとなる。図５に示す表から、分割部分データD(1,1)を生成するための定義式はS(1)*R(1)*R(2)であり、D(1,2)の定義式はS(2)*R(1)*R(2)であり、D(2,1)の定義式はS(1)*R(1)であり、D(2,2)の定義式はS(2)*R(2)であり、D(3,1)の定義式はR(1)であり、D(3,2)の定義式はR(2)である。また、図５に示す表にはm＞0の場合の任意の整数についての一般的な定義式も記載されている。
【００６６】
このように整数倍を意味する変数m=0の場合について分割データDを生成した後、次に変数mを１増やし（ステップＳ２１９）、ステップＳ２１１に戻り、変数m+1に該当する元データSの１７ビット以降について同様の分割処理を行おうとするが、本例の元データSは１６ビットであり、１７ビット以降のデータは存在しないので、ステップＳ２１１からステップＳ２２１に進み、上述したように、生成した分割データD(1)を端末装置１の記憶部１４に保管し、分割データD(2)を外付記憶装置２に保管し、分割データD(3)をデータセンタの記憶部３１に保管して、分割処理を終了する。
【００６７】
ここで、上述した図３のフローチャートのステップＳ２１７における定義式による分割データの生成処理、具体的には分割数n=3の場合の分割データの生成処理について詳しく説明する。
【００６８】
まず、整数倍を意味する変数m=0の場合には、ステップＳ２１７に示す定義式から各分割データD(i)=D(1)〜D(3)の各々を構成する各分割部分データD(i,2×m+j)=D(i,j)(i=1〜3,j=1〜2)は、次のようになる。
【００６９】
D(1,1)=S(1)*Q(1,1,1)*Q(1,1,2)
D(1,2)=S(2)*Q(2,1,1)*Q(2,1,2)
D(2,1)=S(1)*Q(1,2,1)*Q(1,2,2)
D(2,2)=S(2)*Q(2,2,1)*Q(2,2,2)
D(3,1)=R(1)
D(3,2)=R(2)
上記の６つの式のうち上から４つの式に含まれるQ(j,i,k)を具体的に求める。
【００７０】
これはc(j,i,k)を2×2行列であるU[2,2]×(P[2,2])＾(j-1)のi行k列の値としたとき下記のように定義される。
【００７１】
c(j,i,k)=1 のとき Q(j,i,k)=R(k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ここで、
j=1のときは
【数５】
2007042027.tif 000007
【００７２】
j=2のときは
【数６】
2007042027.tif 000008
【００７３】
これを用いると、各分割部分データD(i,j)は次のような定義式により生成される。
【００７４】
D(1,1)=S(1)*Q(1,1,1)*Q(1,1,2)=S(1)*R(1)*R(2)
D(1,2)=S(2)*Q(2,1,1)*Q(2,1,2)=S(2)*R(1)*R(2)
D(2,1)=S(1)*Q(1,2,1)*Q(1,2,2)=S(1)*R(1)*0=S(1)*R(1)
D(2,2)=S(2)*Q(2,2,1)*Q(2,2,2)=S(2)*0*R(2)=S(2)*R(2)
上述した各分割部分データD(i,j)を生成するための定義式は、図４にも図示されている。
【００７５】
図４は、上述したように１６ビットの元データSを８ビットの処理単位ビット長に基づいて分割数n=3で３分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。
【００７６】
ここで、上述した定義式により分割データD(1),D(2),D(3)および各分割部分データD(1,1),D(1,2),D(2,1),D(2,2),D(3,1),D(3,2)を生成する過程と定義式の一般形について説明する。
【００７７】
まず、第１の分割データD(1)に対しては、第１の分割部分データD(1,1)は、上述した定義式S(1)*R(1)*R(2)で定義され、第２の分割部分データD(1,2)は定義式S(2)*R(1)*R(2)で定義される。なお、この定義式の一般形は、D(1,j)に対してはS(j)*R(j)*R(j+1)であり、D(1,j+1)に対してS(j+1)*R(j)*R(j+1)である（jは奇数とする）。定義式に従って計算すると、D(1,1)は00110110, D(1,2)は10110011となるので、D(1)は00110110 10110011である。なお、定義式の一般形は、図５にまとめて示されている。
【００７８】
また、第２の分割データD(2)に対しては、D(2,1)はS(1)*R(1)で定義され、D(2,2)はS(2)*R(2)で定義される。この定義式の一般形は、D(2,j)に対してはS(j)*R(j)であり、D(2,j+1)に対してはS(j+1)*R(j+1)である（jは奇数とする）。定義式に従って計算すると、D(2,1)は00000011, D(2,2)は00000010となるので、D(2)は00000011 00000010である。
【００７９】
更に第３の分割データD(3)に対しては、D(3,1)はR(1)で定義され、D(3,2)はR(2)で定義される。この定義式の一般形は、D(3,j)に対してはR(j)であり、D(3,j+1)に対してはR(3,j+1)である（jは奇数とする）。定義式に従って計算すると、D(3,1)は10110001, D(3,2)は00110101となるので、D(3)は10110001 00110101である。
【００８０】
上記説明は、S,R,D(1),D(2),D(3)の長さを１６ビットとしたが、データの先頭から上記分割処理を繰り返すことにより、どのような長さの元データSからでも分割データD(1),D(2),D(3)を生成することができる。また、処理単位ビット長bは任意にとることができ、元データSの先頭から順にb×2の長さ毎に上記分割処理を繰り返すことにより任意の長さの元データ、具体的には処理単位ビット長b×2の整数倍の長さの元データに対して適用することができる。なお、元データSの長さが処理単位ビット長b×2の整数倍でない場合は、例えば、データ末尾の部分を０で埋めるなどして元データSの長さを処理単位ビット長b×2の整数倍に合わせることにより上述した本実施形態の分割処理を適用することができる。
【００８１】
次に、図４の右側に示す表を参照して、分割データから元データを復元する処理について説明する。
【００８２】
まず、元データSの復元要求が発生すると、端末装置１は、内蔵の記憶部１４および外付記憶装置２が使用可能な場合には、分割データD(1),D(2)を読み出し、これら分割データD(1),D(2)を用いて元データSを復元する。
【００８３】
この処理は、次のようになる。
【００８４】
D(1,1)*D(2,1)=(S(1)*R(1)*R(2))*(S(1)*R(1))
=(S(1)*S(1))*(R(1)*R(1))*R(2)
=0*0*R(2)
=R(2)
であるから、D(1,1)*D(2,1)を計算すれば、R(2)が求まる。具体的に計算すると、D(1,1)は00110110, D(2,1)は00000011なので、R(2)は00110101となる。
【００８５】
また同様に、
D(1,2)*D(2,2)=(S(2)*R(1)*R(2))*(S(2)*R(2))
=(S(2)*S(2))*R(1)*(R(2)*R(2))
=0*R(1)*0
=R(1)
であるから、D(1,2)*D(2,2)を計算すれば、R(1)が求まる。具体的に計算すると、D(1,2)は10110011, D(2,2)は00000010なので、R(1)は10110001となる。
【００８６】
このR(1),R(2)を使用してS(1),S(2)を求める。
【００８７】
D(2,1)*R(1)=(S(1)*R(1))*R(1)
=S(1)*(R(1)*R(1))
=S(1)*0
=S(1)
であるから、D(2,1)*R(1)を計算すれば、S(1)が求まる。具体的に計算すると、D(2,1)は00000011, R(1)は10110001なので、S(1)は10110010となる。
【００８８】
また同様に、
D(2,2)*R(2)=(S(2)*R(2))*R(2)
=S(2)*(R(2)*R(2))
=S(2)*0
=S(2)
であるからD(2,2)*R(2)を計算すればS(2)が求まる。具体的に計算するとD(2,2)は00000010, R(2)は00110101なので、S(2)は00110111となる。
【００８９】
一般に、jを奇数として、
D(1,j)*D(2,j)=(S(j)*R(j)*R(j+1))*(S(j)*R(j))
=(S(j)*S(j))*(R(j)*R(j))*R(j+1)
=0*0*R(j+1)
=R(j+1)
であるからD(1,j)*D(2,j)を計算すればR(j+1)が求まる。
【００９０】
また同様に、
D(1,j+1)*D(2,j+1)=(S(j+1)*R(j)*R(j+1))*(S(j+1)*R(j+1))
=(S(j+1)*S(j+1))*R(j)*(R(j+1)*R(j+1))
=0*R(j)*0
=R(j)
であるからD(1,j+1)*D(2,j+1)を計算すればR(j)が求まる。
【００９１】
このR(j),R(j+1)を使用してS(j),S(j+1)を求める。
【００９２】
D(2,j)*R(j)=(S(j)*R(j))*R(j)
=S(j)*(R(j)*R(j))
=S(j)*0
=S(j)
であるからD(2,j)*R(j)を計算すればS(j)が求まる。
【００９３】
また同様に、
D(2,j+1)*R(j+1)=(S(j+1)*R(j+1))*R(j+1)
=S(j+1)*(R(j+1)*R(j+1))
=S(j+1)*0
=S(j+1)
であるからD(2,j+1)*R(j+1)を計算すればS(j+1)が求まる。
【００９４】
一方、端末装置１の記憶部１４又は外付記憶装置２の一方が使用不能である場合には、端末装置１は、使用可能な方から分割データを読み出すとともに、ネットワーク４を介してデータセンタの記憶部３１から第３の分割データD(3)を取得する。
【００９５】
ここでは、分割データD(2),D(3)を取得して元データSを復元する処理について説明する。まず、分割部分データD(2,1),D(3,1)から第１の元部分データS(1)を次のように生成することができる。
【００９６】
D(2,1)*D(3,1)=(S(1)*R(1))*R(1)
=S(1)*(R(1)*R(1))
=S(1)*0
=S(1)
具体的に計算すると、D(2,1)は00000011, D(3,1)は10110001なので、S(1)は10110010となる。
【００９７】
また、別の分割部分データから次のように第２の元部分データS(2)を生成することができる。
【００９８】
D(2,2)*D(3,2)=(S(2)*R(2))*R(2)
=S(2)*(R(2)*R(2))
=S(2)*0
=S(2)
具体的に計算すると、D(2,2)は00000010, D(3,2)は00110101なので、S(2)は00110111となる。
【００９９】
一般に、jを奇数として、
D(2,j)*D(3,j)=(S(j)*R(j))*R(j)
=S(j)*(R(j)*R(j))
=S(j)*0
=S(j)
であるから、D(2,j)*D(3,j)を計算すれば、S(j)が求まる。
【０１００】
また、一般に、jを奇数として、
D(2,j+1)*D(3,j+1)=(S(j+1)*R(j+1))*R(j+1)
=S(j+1)*(R(j+1)*R(j+1))
=S(j+1)*0
=S(j+1)
であるから、D(2,j+1)*D(3,j+1)を計算すれば、S(j+1)が求まる。
【０１０１】
次に、分割データD(1),D(3)を取得して元データSを復元する処理について説明する。
【０１０２】
D(1,1)*D(3,1)*D(3,2)=(S(1)*R(1)*R(2))*R(1)*R(2)
=S(1)*(R(1)*R(1))*(R(2)*R(2))
=S(1)*0*0
=S(1)
であるから、D(1,1)*D(3,1)*D(3,2)を計算すれば、S(1)が求まる。具体的に計算すると、D(1,1)は00110110, D(3,1)は10110001, D(3,2)は00110101なので、S(1)は10110010となる。
【０１０３】
また同様に、
D(1,2)*D(3,1)*D(3,2)=(S(2)*R(1)*R(2))*R(1)*R(2)
=S(2)*(R(1)*R(1))*(R(2)*R(2))
=S(2)*0*0
=S(2)
であるから、D(1,2)*D(3,1)*D(3,2)を計算すれば、S(2)が求まる。具体的に計算すると、D(1,2)は10110011, D(3,1)は10110001, D(3,2)は00110101なので、S(2)は00110111となる。
【０１０４】
一般に、jを奇数として、
D(1,j)*D(3,j)*D(3,j+1)=(S(j)*R(j)*R(j+1))*R(j)*R(j+1)
=S(j)*(R(j)*R(j))*(R(j+1)*R(j+1))
=S(j)*0*0
=S(j)
であるから、D(1,j)*D(3,j)*D(3,j+1)を計算すれば、S(j)が求まる。
【０１０５】
また、一般に、jを奇数として、
D(1,j+1)*D(3,j)*D(3,j+1)=(S(j+1)*R(j)*R(j+1))*R(j)*R(j+1)
=S(j+1)*(R(j)*R(j))*(R(j+1)*R(j+1))
=S(j+1)*0*0
=S(j+1)
であるから、D(1,j+1)*D(3,j)*D(3,j+1)を計算すれば、S(j+1)が求まる。
【０１０６】
上述したように、元データの先頭から処理単位ビット長bに基づいて分割処理を繰り返し行って、分割データを生成した場合には、３つの分割データD(1),D(2),D(3)のすべてを用いなくても、３つの分割データのうち、２つの分割データを用いて上述したように元データを復元することができる。
【０１０７】
本発明の他の実施形態として、乱数Rのビット長を元データSのビット長よりも短いものを使用して、元データの分割処理を行うことができる。
【０１０８】
すなわち、上述した乱数RはS,D(1),D(2),D(3)と同じビット長のデータとしたが、乱数Rを元データSのビット長より短いものとし、分割データD(1),D(2),D(3)の生成にこの短いビット長の乱数Rを繰り返し用いるものである。
【０１０９】
なお、分割データD(3)は乱数Rのみから生成されるので、分割データD(3)は乱数Rを繰り返して保管しておく必要はない。例えば、元データSのビット長を１６００ビット（200バイト）としたとき、乱数Rは任意にとった１６０ビット（20バイト）のデータの繰り返しとする。つまり、R(1)〜R(20)はランダムに生成し、R(21)〜R(200)はR(21)=R(1),R(22)=R(2),…,R(40)=R(20),R(41)=R(1),R(42)=R(2),…,R(60)=R(20),R(61)=R(1),R(62)=R(2),…,R(80)=R(20),………,R(181)=R(1),R(182)=R(2),…,R(200)=R(20)とする。
【０１１０】
先の説明では、分割部分データD(3,j)を乱数部分データR(j)と定義してD(3)を生成しているが、D(3,20)まで保管すれば十分である。つまり、D(3)の長さはD(1),D(2)の１０分の１となる。従って、保管すべきデータの総量は先の実施形態では元データSの３倍であるが、この実施形態では２．１倍とすることができる。乱数Rにおける繰り返し部分のデータの長さは、短すぎると、D(1)またはD(2)のみからRが解読されてしまうことも考えられるため、適切な長さを選択することが望ましい。
【０１１１】
この実施形態では例えば乱数Rを生成するために疑似乱数生成アルゴリズムを使用する。乱数には自然界の物理現象などを使って乱数を発生させる真性乱数と、コンピュータのアルゴリズムなどで乱数を発生させる疑似乱数がある、真性乱数は、サイコロを何回も振ったり、雑音などの物理現象を利用したりして生成することができるが、手間や装置がたいへんであるため、その代わりに、適当な長さの種（乱数生成の種となる情報（ｓｅｅｄｓ））から決定的なアルゴリズムに基づいて生成される疑似乱数が用いられる。例えば短い乱数を種とすれば長い乱数を得ることができる。種の長さは、例えば１２８ビット、１６０ビットまたはそれ以上のものがある。決定的なアルゴリズムに基づいて生成されるといっても、統計的一様性、無相関性など乱数として必要な性質を一定のレベルで満たしている。具体例としては、ＡＮＳＩ  Ｘ９，４２、ＦＩＰＳ  １８６−２など標準化されたものがある
（http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/cryptrec20030425_spec01.html）。
【０１１２】
これらを用いれば、乱数生成の種を入力として長い疑似乱数の列を生成することができる。例えば、１６０ビットの種を与えて元データSのビット長と同じ長さの乱数Rを生成し、上述したようにして元データSと乱数RからD(1),D(2)を生成し、D(3)にはＲを格納するのではなく１６０ビットの種を格納して保管することにより、元データSのビット長が大きくなってもD(3)に格納して保管すべきビット数は１６０ビットで済み、保管すべきデータの総量を押さえることができる。元データSを復元する場合には、D(3)に格納された１６０ビットの種から元データSのビット長と同じ長さの乱数Rを再度生成し、上述したようにして、これとD(1)またはD(2)を用いて元データSを復元することができる。
【０１１３】
ここで、上述したように図３のステップＳ２１７で示した定義式に基づいて元データを分割する分割規則について一般的な表現で記載する。
【０１１４】
まず、元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、複数n個のうちの１つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用いて複数(n-1)個の元部分データ、複数(n-1)個の乱数部分データ、複数(n)個の分割データおよび各分割データの複数(n-1)個の分割部分データのそれぞれのうちの１つをそれぞれS(j),R(j),D(i)およびD(i,j)で表わす。
【０１１５】
それから、上記変数jを１からn-1まで変えて、各元部分データS(j)を元データSのb×(j-1)+1ビット目からbビット分のデータとして作成する。次に、U[n,n]をn×n行列である上三角行列とし、P[n,n]をn×n行列である回転行列としたとき、c(j,i,k)を(n-1)×(n-1)行列であるU[n-1,n-1]×P[n-1,n-1]＾(j-1)のi行k列の値と定義する。そして、c(j,i,k)=1のとき、Q(j,i,k)=R(k), c(j,i,k)=0のとき、Q(j,i,k)=0と定義したとき、変数iを１からnまで変えながら、各変数iにおいて変数jを１からn-1まで変えた場合において、
i＜nのとき、各分割部分データD(i,j)を次のように設定する。
【数７】
2007042027.tif 000009
【０１１６】
ただし、
【数８】
2007042027.tif 000010
【０１１７】
またi=nのとき、各分割部分データD(i,j)を
D(i,j)=R(j)
と設定する。上記処理を元データSの先頭から末尾まで繰り返し行うことにより元データSから分割数nの分割データを生成することができる。
【０１１８】
上述したように、本実施の形態によれば、端末装置１が内蔵する記憶部１４および外付記憶装置２の双方が使用可能な場合には、それぞれから読み出した分割データAと分割データBとの排他的論理和により乱数（分割データC）を取得することで、分割データCをネットワーク４を介してデータセンタ３の記憶部３１から取得する処理を不要にできる。
【０１１９】
このようにして取得した乱数は、元データの復元に利用できるほか、別の元データを分割する際にも利用できるので、分割・復元処理の度にネットワークを使用することが不要になり、効率的な処理を実現することができる。
【０１２０】
また、分割処理の度に乱数発生手段によって乱数を発生させる負担の大きい処理が不要になるので、高速な分割処理を実現することができる。この点について、本実施の形態では、乱数発生部１３により乱数を発生させる処理を前処理において１回だけ行うようにして高速な分割処理を実現した。
【０１２１】
なお、本実施の形態においては、端末装置１に乱数発生部１３、分割データ生成部１１を備えることとしたが、これに限るものではない。例えば、ネットワーク４に接続可能な分割処理専用のサーバ装置を配置し、このサーバ装置に乱数発生部１３、分割データ生成部１１を備えるようにしてもよい。この場合、サーバ装置により元データの分割処理を行い、分割データA，Bを端末装置１へ送信し、分割データCをデータセンタ３へ送信する。このような構成とすることで、端末装置１では、上記の手法により元データを復元する処理を行うだけにすることもできる。
【図面の簡単な説明】
【０１２２】
【図１】データ分割・復元システムの構成を示すブロック図である。
【図２】データ分割・復元システムにおける全体的な処理の流れを示すフローチャートである。
【図３】分割数n=3の場合の分割処理を示すフローチャートである。
【図４】１６ビットの元データSを８ビットの処理単位ビット長に基づいて分割数n=3で３分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。
【図５】分割数n=3の場合の分割データ、分割部分データ、各分割部分データを生成する定義式を示す表である。
【符号の説明】
【０１２３】
１…端末装置
２…外付記憶装置
３…データセンタ
４…ネットワーク
１１…分割データ生成部
１２…元データ復元部
１３…乱数発生部
１４…記憶部
１５…データ送受信部
３１…記憶部
３２…データ送受信部
【図１】
2007042027.tif 000011
【図２】
2007042027.tif 000012
【図３】
2007042027.tif 000013
【図４】
2007042027.tif 000014
【図５】
2007042027.tif 000015