JP4789536B2 - Data division apparatus, data division method, and computer program - Google Patents

Data division apparatus, data division method, and computer program Download PDF

Info

Publication number
JP4789536B2
JP4789536B2 JP2005223999A JP2005223999A JP4789536B2 JP 4789536 B2 JP4789536 B2 JP 4789536B2 JP 2005223999 A JP2005223999 A JP 2005223999A JP 2005223999 A JP2005223999 A JP 2005223999A JP 4789536 B2 JP4789536 B2 JP 4789536B2
Authority
JP
Japan
Prior art keywords
data
divided
original
partial
random number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2005223999A
Other languages
Japanese (ja)
Other versions
JP2007041199A5 (en
JP2007041199A (en
Inventor
衛 石野
利彦 荻原
正樹 牧野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Communications Corp
Original Assignee
NTT Communications Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Communications Corp filed Critical NTT Communications Corp
Priority to JP2005223999A priority Critical patent/JP4789536B2/en
Publication of JP2007041199A publication Critical patent/JP2007041199A/en
Publication of JP2007041199A5 publication Critical patent/JP2007041199A5/ja
Application granted granted Critical
Publication of JP4789536B2 publication Critical patent/JP4789536B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データの機密性および安全性を確保するためにデータを分割する技術に関する。   The present invention relates to a technique for dividing data in order to ensure confidentiality and security of the data.

重要な秘密データ(以下、元データという)を保管する場合、紛失、破壊、盗難やプライバシー侵害の脅威がある。このような脅威は秘密に保管すべきデータを単に暗号化しただけでは解決できず、紛失、破壊に備えてコピーを複数作ることが有効であるが、コピーを複数作ると盗難のリスクが増加してしまう。   When important confidential data (hereinafter referred to as original data) is stored, there is a threat of loss, destruction, theft and privacy infringement. Such threats cannot be solved by simply encrypting data that should be kept secret, and it is effective to make multiple copies in preparation for loss or destruction, but making multiple copies increases the risk of theft. End up.

このような問題を解決する手段として、従来、しきい値秘密分散法がある(非特許文献1参照)。この従来の方法は、元データSをn個のデータに分割し、そのうち任意のx個の分割データを集めれば元データSが復元できるが、任意のx-1個の分割データでは元データSは復元できないというものである。従って、x-1個まで分割データが盗まれても元データSが漏れず、またn-x個まで分割データを紛失したり破壊されたりしても、元データSを復元できる。   Conventionally, there is a threshold secret sharing method as means for solving such a problem (see Non-Patent Document 1). In this conventional method, the original data S can be restored by dividing the original data S into n pieces of data, and collecting any x pieces of divided data, but with any x-1 pieces of divided data, the original data S Cannot be restored. Therefore, even if up to x-1 pieces of divided data are stolen, the original data S does not leak, and even if up to nx pieces of divided data are lost or destroyed, the original data S can be restored.

この方法の代表的な実現例としてn-1次多項式と剰余演算により構成される方法がある(非特許文献2参照)。この従来の方法は、公開鍵暗号方式の秘密鍵の分割管理などで利用されており、データ量があまり多くないため、現状のコンピュータの演算処理能力、記憶装置・記憶媒体などのコストに対しては特に問題ない。
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)
As a typical implementation example of this method, there is a method composed of an n-1 degree polynomial and a remainder operation (see Non-Patent Document 2). This conventional method is used for, for example, split key management of public key cryptography, and the amount of data is not so large, so the current computer processing capacity, the cost of storage devices and storage media, etc. There is no particular problem.
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)

上述した従来の方法を安全に保管したいデータ量が例えばメガバイト、ギガバイトまたはそれ以上の規模となった場合に利用すると、多項式演算・剰余演算などを含む多倍長整数の演算処理を大量のデータに対して行う演算処理能力が必要となる。   When the above-mentioned conventional method is used when the amount of data to be stored safely is, for example, megabytes, gigabytes or larger, multiple-precision integer arithmetic processing including polynomial arithmetic and remainder arithmetic can be converted into a large amount of data. For this, it is necessary to have an arithmetic processing capability.

また、従来の方法では、例えば分割数n=5の場合には1バイトのデータから1バイトの分割データが5つ生成されるため、元データに対して単純に分割数に比例した倍数の記憶容量が必要となるなど、コンピュータを用いて具体的に実現する上で現実的ではないという問題がある。   Further, in the conventional method, for example, when the division number n = 5, five 1-byte divided data are generated from 1-byte data, and therefore, storage of a multiple that is simply proportional to the division number is performed with respect to the original data. There is a problem that it is not realistic in concrete implementation using a computer, such as requiring capacity.

本発明は、上記に鑑みてなされたものであり、その目的とするところは、比較的簡単な処理により元データを効率的に分割可能とすることにある。   The present invention has been made in view of the above, and an object of the present invention is to enable efficient division of original data by a relatively simple process.

また、本発明の別の目的は、分割データを記憶する記憶容量を抑制することにある。   Another object of the present invention is to suppress the storage capacity for storing divided data.

上記目的を達成するために、第1の本発明に係るデータ分割装置は、元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割装置であって、元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成手段と、この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成手段と、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成手段と、所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成手段と、を有し、前記分割部分データ生成手段は、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替えることを特徴とする。 In order to achieve the above object, a data dividing apparatus according to a first aspect of the present invention is a data dividing apparatus that divides original data into divided data having a division number of 4 or more based on a desired processing unit bit length, The original data is divided into processing unit bit lengths, original partial data generating means for generating a plurality of original partial data, and the same or the same as the bit length of the original data corresponding to each of the plurality of original partial data. Random number generation means for generating multiple random part data with a processing unit bit length from a random number of shorter length, and each divided part data constituting each divided data is processed by exclusive OR of the original partial data and the random part data By generating divided partial data generating means for each unit bit length, and generating divided data of a desired number of divisions from a plurality of divided partial data, the original data can be obtained only from each divided data. A divided data generating unit that cannot restore the original data from a predetermined number of divided data of the generated divided data, and the divided partial data generating unit is either In order to prevent the random number component from being lost by performing exclusive OR between the divided partial data constituting only the divided data of each of the divided data, each divided data in each of the other divided data corresponding thereto It is characterized by replacing with partial data.

第1の本発明にあっては、元データを処理単位ビット長毎に区分けして複数の元部分データを生成し、複数の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和からなる所定の定義式に従って生成することで、コンピュータ処理に適したビット演算である排他的論理和演算を用いるので、大容量のデータに対しても簡単な演算処理を繰り返して分割データを簡単かつ高速に生成することができる。また、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数部分データが失われないようにすることで、いずれかの分割データから元データを復元し難くして、安全性の向上を図る。 In the first aspect of the present invention, the original data is divided into processing unit bit lengths to generate a plurality of original partial data, generate a plurality of random number partial data, and each divided partial data constituting each divided data Is generated according to a predetermined definition formula consisting of exclusive OR of original partial data and random number partial data, so that exclusive OR operation, which is bit operation suitable for computer processing, is used. However, it is possible to generate divided data easily and at high speed by repeating simple arithmetic processing. In addition, by using only one of the divided data and performing an exclusive OR between the divided partial data constituting it, the random data is not lost, so that the original data is restored from any of the divided data. Improve safety by making it difficult to restore.

上記データ分割装置において、前記分割部分データ生成手段は、分割部分データの生成に際し、元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、変数としてi(=1〜n)およびj(=1〜n-1)を用いて複数(n-1)個の元部分データ、複数(n-1)個の乱数部分データ、複数(n)個の分割データおよび各分割データの複数(n-1)個の分割部分データのそれぞれのうちの1つをそれぞれS(j),R(j),D(i)およびD(i,j)で表わし、変数jを1からn-1まで変えて、各元部分データS(j)を元データSのb×(j-1)+1ビット目からbビット分のデータとして作成し、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
である行列とし、P[n,n]をn×n行列でi行j列の値p(i,j)が
j=i+1 のとき p(i,j)=1
i=n,j=1 のとき p(i,j)=1
上記以外のとき p(i,j)=0
である行列としたとき、c(j,i,k)を(n-1)×(n-1)行列であるU[n-1,n-1]×P[n-1,n-1]^(j-1)のi行k列の値と定義し、ただしU[n-1,n-1]×P[n-1,n-1]^(j-1)とは行列U[n-1,n-1]とj-1個のP[n-1,n-1]の積を表し、Q(j,i,k)をc(j,i,k)=1のとき、Q(j,i,k)=R(k)、c(j,i,k)=0のとき、Q(j,i,k)=0 と定義したとき、各分割部分データD(i,j)を、変数iを1からnまで変えながら各変数iにおいて変数jを1からn-1まで変え、排他的論理和の演算子*を用いて、i<nのとき、

Figure 0004789536
In the data dividing device, the divided partial data generation means represents the original data, random numbers, divided data, the number of divisions, and the processing unit bit length as S, R, D, n, and b, respectively, when generating the divided partial data. , By using i (= 1 to n) and j (= 1 to n-1) as variables, multiple (n-1) original partial data, multiple (n-1) random number partial data, multiple (n ) Pieces of divided data and each of a plurality of (n-1) pieces of divided partial data of each piece of divided data, S (j), R (j), D (i) and D (i, j ), Changing the variable j from 1 to n−1, and creating each original partial data S (j) as data of b bits from the b × (j−1) +1 bit of the original data S, When U [n, n] is an n × n matrix and the value u (i, j) of i rows and j columns is i + j ≦ n + 1, u (i, j) = 1
When i + j> n + 1, u (i, j) = 0
Where P [n, n] is an n × n matrix and the value p (i, j) of i rows and j columns is
When j = i + 1, p (i, j) = 1
i = n, when j = 1 p (i, j ) = 1
For other cases p (i, j) = 0
Where c (j, i, k) is a (n-1) × (n-1) matrix U [n-1, n-1] × P [n-1, n-1 ] ^ (J-1) is defined as the value of i rows and k columns, where U [n-1, n-1] × P [n-1, n-1] ^ (j-1) is the matrix U represents the product of [n-1, n-1] and j-1 P [n-1, n-1], and Q (j, i, k) is c (j, i, k) = 1 When Q (j, i, k) = R (k), c (j, i, k) = 0, and Q (j, i, k) = 0, each divided partial data D ( i, j), changing variable i from 1 to n while changing variable j from 1 to n-1 for each variable i, and using the exclusive OR operator *, when i <n,
Figure 0004789536

ただし、

Figure 0004789536
However,
Figure 0004789536

とし、i=nのとき、
D(i,j)=R(j)
として生成するものであって、当該各分割部分データのうちのD(1,j)を削除することを特徴とする。
And when i = n,
D (i, j) = R (j)
And D (1, j) in each of the divided partial data is deleted.

本発明にあっては、分割部分データD(1,j)を削除することで、分割データD(1)を記憶する必要がなくなるので、従来は分割数がnの場合に元のデータのn倍の情報量を記憶する記憶容量が必要であったところ、これをn-1倍に抑えることができる。   In the present invention, it is not necessary to store the divided data D (1) by deleting the divided partial data D (1, j), so conventionally, when the number of divisions is n, the original data n When a storage capacity for storing twice the amount of information is required, this can be reduced to n-1 times.

第2の本発明に係るデータ分割装置は、データ分割装置が行う、元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割方法であって、前記データ分割装置は、元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成ステップと、この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成ステップと、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成ステップと所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成ステップと、前記生成した各分割データを、各記憶部にそれぞれ保管するステップと、を行い、前記分割部分データ生成ステップは、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替ることを特徴とする。 Data dividing apparatus according to a second aspect of the present invention, the data division unit is performed, a data dividing method for dividing the data segment of 4 or more division number based on the original data to the desired processing unit bit length, the data The dividing device divides the original data into processing unit bit lengths to generate a plurality of original partial data, and a bit length of the original data corresponding to each of the plurality of original partial data A random number generation step for generating a plurality of random number part data of processing unit bit length from a random number of the same length or shorter than this, and each divided part data constituting each divided data is exclusive of the original partial data and the random number partial data. a divided portion data generation step of generating for each processing unit bit length by a logical OR, by generating a data segment of a desired division number of a plurality of divided partial data, each minute Although from data only is impossible to restore the original data, and the divided data generating step based on data from the divided data of the predetermined number so that it can be restored among the generated divided data, the divided data the product performs a storing step to each storage unit, the divided partial data generation step, the random number component by performing an XOR between the divided partial data that constitute it with only one of the divided data to avoid losing, characterized Rukoto interchanged with each divided partial data in the other divided data corresponding the respective divided partial data each.

第3の本発明に係るデータ分割装置は、元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割用のコンピュータプログラムであって、コンピュータを、元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成手段、この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成手段、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成手段、および、所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成手段、として機能させ、前記分割部分データ生成手段は、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替えることを特徴とする。 Data dividing apparatus according to a third aspect of the present invention is a computer program for data division that divides the original data into 4 or more the number of divisions of the divided data based on the desired processing unit bit length, the computer, the original data Is divided into processing unit bit lengths to generate a plurality of original partial data, corresponding to each of the plurality of original partial data, a length equal to or shorter than the bit length of the original data Random number generating means for generating a plurality of random number part data having a processing unit bit length from the random number, and each divided part data constituting each divided data for each processing unit bit length by exclusive OR of the original partial data and the random number partial data divided partial data generating means for generating a, and, by generating a data segment of a desired division number of a plurality of divided partial data from only the divided data The original data is unrecoverable, but functions as a divided data generating unit that allows the original data to be restored from a predetermined number of divided data of the generated divided data, and the divided partial data generating unit The other partial data corresponding to each of the divided partial data so that the random number component is not lost by performing exclusive OR between the divided partial data constituting only one of the divided data. and wherein the replacing each divided partial data in.

本発明によれば、比較的簡単な処理により元データを効率的に分割することができる。また、本発明によれば、分割データを記憶する記憶容量を抑制することができる。   According to the present invention, original data can be efficiently divided by relatively simple processing. In addition, according to the present invention, the storage capacity for storing the divided data can be suppressed.

以下、図面を用いて本発明の実施の形態を説明する。図1は、本発明の一実施形態に係るデータ分割方法を実施するデータ分割装置を含むシステム構成図である。本実施形態のデータ分割装置は、符号1で示すように分割装置1としてネットワーク3に接続されて設けられ、このネットワーク3にアクセスしてくる端末5からの元データ分割要求に応じて元データSを複数の分割データに分割し、この分割した複数の分割データをネットワーク3を介して複数の保管サーバ7a,7b,7cに保管するようになっている。なお、図1では、分割装置1は、端末5からの元データSを3つの分割データD(1),D(2),D(3)に分割し、それぞれを複数の保管サーバ7a,7b,7cに保管するようにしている。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a system configuration diagram including a data dividing apparatus for executing a data dividing method according to an embodiment of the present invention. The data dividing apparatus according to the present embodiment is provided connected to the network 3 as the dividing apparatus 1 as indicated by reference numeral 1, and the original data S in response to the original data dividing request from the terminal 5 accessing the network 3. Are divided into a plurality of divided data, and the divided plurality of divided data are stored in a plurality of storage servers 7a, 7b, 7c via the network 3. In FIG. 1, the dividing device 1 divides the original data S from the terminal 5 into three divided data D (1), D (2), and D (3), which are respectively stored in a plurality of storage servers 7a and 7b. , 7c.

また、分割装置1は、ネットワーク3を介してアクセスしてくる端末5からの元データ復元要求に応じて複数の分割データD(1),D(2),D(3)をネットワーク3を介して各保管サーバ7から取得し、この取得した複数の分割データD(1),D(2),D(3)から元データSを復元し、ネットワーク3を介して端末5に送信するようになっている。   Further, the dividing device 1 sends a plurality of divided data D (1), D (2), D (3) via the network 3 in response to the original data restoration request from the terminal 5 accessed via the network 3. So that the original data S is restored from the plurality of obtained divided data D (1), D (2), D (3) and transmitted to the terminal 5 via the network 3. It has become.

分割装置1は、詳しくは、元データSから複数の分割データDを生成する分割データ生成手段11、複数の分割データDから元データSを復元する元データ復元手段13、元データSから複数の分割データDを生成するために使用される乱数Rを発生する乱数発生手段15、および分割データ生成手段11で生成した複数の分割データDをネットワーク3を介して複数の保管サーバ7a,7b,7cに送信したり、また複数の保管サーバ7a,7b,7cからの複数の分割データDをネットワーク3を介して受信するためのデータ送受信手段17から構成されている。分割データ生成手段11は、分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成手段を有する。   Specifically, the dividing device 1 includes a divided data generating unit 11 that generates a plurality of divided data D from the original data S, an original data restoring unit 13 that restores the original data S from the plurality of divided data D, and a plurality of pieces from the original data S. Random number generating means 15 for generating a random number R used to generate the divided data D, and a plurality of divided data D generated by the divided data generating means 11 via the network 3 are stored in a plurality of storage servers 7a, 7b, 7c. And a data transmission / reception means 17 for receiving a plurality of divided data D from a plurality of storage servers 7a, 7b, 7c via the network 3. The divided data generation means 11 has divided partial data generation means for generating each divided partial data constituting the divided data for each processing unit bit length by exclusive OR of the original partial data and the random number partial data.

本データ分割装置1は、例えばコンピュータによって構成され、演算装置、記憶装置、メモリ等を備える。各手段は、記憶装置に記憶されているプログラムや各情報、データなどを読み出してメモリに一時的に格納し、これを用いて演算装置によって後述する各種の処理を実行して、その実行結果を記憶装置に記憶させる。   The data dividing device 1 is configured by a computer, for example, and includes an arithmetic device, a storage device, a memory, and the like. Each means reads out the program, each information, data, etc. stored in the storage device, temporarily stores them in the memory, and executes various processes described later by the arithmetic device using this, and the execution result is obtained. Store in a storage device.

本実施形態における元データの分割および復元では、元データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するが、この場合の処理単位ビット長は任意の値に設定することができ、元データを処理単位ビット長毎に区分けして、この元部分データから分割部分データを分割数より1少ない数ずつ生成するので、元データのビット長が処理単位ビット長の(分割数-1)倍の整数倍に一致しない場合は、元データの末尾の部分に0を埋めるなどして元データのビット長を処理単位ビット長の(分割数-1)倍の整数倍に合わせることにより本実施形態を適用することができる。   In the division and restoration of the original data in this embodiment, the original data is divided into pieces of divided data having a desired number of divisions based on a desired processing unit bit length. In this case, the processing unit bit length is set to an arbitrary value. The original data is divided into processing unit bit lengths, and the divided partial data is generated from the original partial data by one less than the number of divisions. If it does not match an integer multiple of (number-1) times, the bit length of the original data is adjusted to an integer multiple of (number of divisions -1) times the processing unit bit length by, for example, filling the end of the original data with 0. Thus, the present embodiment can be applied.

また、上述した乱数も(分割数-1)個の元部分データの各々に対応して処理単位ビット長のビット長を有する(分割数-1)個の乱数部分データとして乱数発生手段15から生成される。すなわち、乱数は処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の乱数部分データとして生成される。更に、元データは処理単位ビット長に基づいて所望の分割数の分割データに分割されるが、この分割データの各々も(分割数-1)個の元部分データの各々に対応して処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。すなわち、分割データの各々は、処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。   The random numbers described above are also generated from the random number generation means 15 as (partition number-1) random number partial data having a bit length of the processing unit bit length corresponding to each of the (partition number-1) original partial data. Is done. That is, the random numbers are divided into processing unit bit lengths, and are generated as (partition number-1) random number partial data having a bit length of the processing unit bit length. Further, the original data is divided into a desired number of divided data based on the processing unit bit length, and each of the divided data also corresponds to each of the (division number-1) original partial data. It is generated as (partition number -1) pieces of divided partial data having a bit length. That is, each piece of divided data is divided into processing unit bit lengths, and is generated as (partition number-1) pieces of divided partial data having a bit length of the processing unit bit length.

なお、以下の説明では、上述した元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、また複数のデータや乱数などのうちの1つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用い、(分割数n-1)個の元部分データ、(分割数n-1)個の乱数部分データ、および分割数n個の分割データDのそれぞれのうちの1つをそれぞれS(j),R(j)およびD(i)で表記し、更に各分割データD(i)を構成する複数(n-1)の分割部分データをD(i,j)で表記するものとする。すなわち、S(j)は、元データSの先頭から処理単位ビット長毎に区分けして1番から順に採番した時のj番目の元部分データを表すものである。   In the following description, the above-described original data, random numbers, divided data, number of divisions, and processing unit bit length are represented by S, R, D, n, and b, respectively, and one of a plurality of data, random numbers, and the like. I (= 1 to n) and j (= 1 to n-1) are used as variables to represent one, (division number n-1) original partial data, (division number n-1) random number partial data , And one of each of the divided data D with the number of divisions is represented by S (j), R (j) and D (i), respectively, and a plurality of ( The divided partial data of (n-1) is represented by D (i, j). That is, S (j) represents the j-th original partial data when the original data S is numbered in order from the top by dividing into processing unit bit lengths.

この表記を用いると、元データ、乱数データ、分割データとこれらをそれぞれ構成する元部分データ、乱数部分データ、分割部分データは、次のように表記される。   When this notation is used, the original data, random number data, and divided data, and the original partial data, random number partial data, and divided partial data that constitute these, respectively, are represented as follows.

元データ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)
本実施形態は、上述したように処理単位ビット長毎に区分けされる複数の部分データに対して元部分データと乱数部分データの排他的論理和演算(XOR)を行って、詳しくは、元部分データと乱数部分データの排他的論理和演算(XOR)からなる定義式を用いて、元データの分割を行うことを特徴とするものであり、上述したデータ分割処理に多項式や剰余演算を用いる従来の方法に比較して、コンピュータ処理に適したビット演算である排他的論理和(XOR)演算を用いることにより高速かつ高性能な演算処理能力を必要とせず、大容量のデータに対しても簡単な演算処理を繰り返して分割データを生成することができるとともに、また分割データの保管に必要となる記憶容量も分割数に比例した倍数の容量よりも小さくすることができる。更に、任意に定めた一定の長さ毎にデータの先頭から順に演算処理を行うストリーム処理により分割データが生成される。
Original data S = (n-1) original partial data S (j)
= S (1), S (2), ..., S (n-1)
Random number R = (n-1) random number partial data R (j)
= R (1), R (2), ..., R (n-1)
n divided data D (i) = D (1), D (2),..., D (n)
Each partial data 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)
In the present embodiment, an exclusive OR operation (XOR) of the original partial data and the random number partial data is performed on the plurality of partial data divided for each processing unit bit length as described above. The original data is divided using a definition formula consisting of exclusive OR (XOR) of data and random number partial data. Conventionally, a polynomial or a remainder operation is used for the above data division processing. Compared with this method, exclusive OR (XOR) operation, which is a bit operation suitable for computer processing, is used, so high-speed and high-performance operation processing capability is not required, and even large-capacity data is easy. In addition, it is possible to generate divided data by repeating such an arithmetic process, and it is also possible to make the storage capacity required for storing the divided data smaller than a multiple that is proportional to the number of divisions. Further, the divided data is generated by stream processing in which calculation processing is performed in order from the top of the data for each predetermined fixed length.

なお、本実施形態で使用する排他的論理和演算(XOR)は、以下の説明では、「*」なる演算記号で表すことにするが、この排他的論理和演算のビット毎の演算規則での各演算結果は下記のとおりである。   In the following description, the exclusive OR operation (XOR) used in the present embodiment is expressed by an operation symbol “*”. However, in the bitwise operation rule of this exclusive OR operation, Each calculation result is as follows.

0 * 0 の演算結果は 0
0 * 1 の演算結果は 1
1 * 0 の演算結果は 1
1 * 1 の演算結果は 0
また、XOR演算は交換法則、結合法則が成り立つ。すなわち、
a*b=b*a
(a*b)*c=a*(b*c)
が成り立つことが数学的に証明される。
The operation result of 0 * 0 is 0
The result of 0 * 1 is 1
The result of 1 * 0 is 1
The result of 1 * 1 is 0
In addition, the XOR operation has an exchange law and a joint law. That is,
a * b = b * a
(a * b) * c = a * (b * c)
Is proved mathematically.

また、a*a=0,a*0=0*a=aが成り立つ。   Also, a * a = 0, a * 0 = 0 * a = a holds.

ここでa,b,cは同じ長さのビット列を表し、0はこれらと同じ長さですべて「0」からなるビット列を表す。 Here, a, b, and c represent bit strings having the same length, and 0 represents a bit string having the same length and consisting of all “0”.

次に、フローチャートなどの図面も参照して、上記実施形態の作用について説明するが、この説明の前に図2、図5、図8、図9のフローチャートに示す記号の定義について説明する。   Next, the operation of the above embodiment will be described with reference to drawings such as flowcharts. Prior to this description, definitions of symbols shown in the flowcharts of FIGS. 2, 5, 8, and 9 will be described.

(1)

Figure 0004789536
(1)
Figure 0004789536

は、A(1)*A(2)*…A(n)を意味するものとする。 Means A (1) * A (2) *... A (n).

(2)c(j,i,k)を、(n-1)×(n-1)行列であるU[n-1,n-1]×(P[n-1,n-1])^(j-1)のi行k列の値と定義する。   (2) c (j, i, k) is replaced by (n-1) × (n-1) matrix U [n-1, n-1] × (P [n-1, n-1]) It is defined as the value of i rows and k columns of ^ (j-1).

このときQ(j,i,k)を下記のように定義する。   At this time, Q (j, i, k) is defined as follows.

c(j,i,k)=1 のとき Q(j,i,k)=R((n-1)×m+k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ただし、mはm≧0の整数を表す。
When c (j, i, k) = 1 Q (j, i, k) = R ((n-1) × m + k)
Q (j, i, k) = 0 when c (j, i, k) = 0
However, m represents an integer of m ≧ 0.

(3)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
である行列を意味するものとし、「上三角行列」ということとする。具体的には下記のような行列である。

Figure 0004789536
(3) U [n, n] is an n × n matrix, and the value of i rows and j columns is represented by u (i, j).
When i + j ≦ n + 1 u (i, j) = 1
When i + j> n + 1, u (i, j) = 0
It means that the matrix is “upper triangular matrix”. Specifically, the matrix is as follows.
Figure 0004789536

(4)P[n,n]とは、n×n行列であって、i行j列の値をp(i,j)で表すと、
j=i+1 のとき p(i,j)=1
i=n,j=1 のとき p(i,j)=1
上記以外のとき p(i,j)=0
である行列を意味するものとし、「回転行列」ということとする。具体的には下記のような行列であり、他の行列の右側からかけると当該他の行列の1列目を2列目へ、2列目を3列目へ、…,n-1列目をn列目へ、n列目を1列目へ移動させる作用がある。つまり、行列Pを他の行列に右側から複数回かけると、その回数分だけ各列を右方向へ回転させるように移動させることができる。

Figure 0004789536
(4) P [n, n] is an n × n matrix, and the value of i rows and j columns is represented by p (i, j).
When j = i + 1, p (i, j) = 1
i = n, when j = 1 p (i, j ) = 1
For other cases p (i, j) = 0
It means that the matrix is “rotation matrix”. Specifically, the matrix is as follows, and when multiplied from the right side of another matrix, the first column of the other matrix is changed to the second column, the second column to the third column,. Is moved to the nth column, and the nth column is moved to the first column. That is, when the matrix P is applied to another matrix a plurality of times from the right side, each column can be moved so as to rotate rightward by that number of times.
Figure 0004789536

(5)A,Bをn×n行列とすると、A×Bとは行列AとBの積を意味するものとする
。行列の成分同士の計算規則は通常の数学で用いるものと同じである。
(5) If A and B are n × n matrices, A × B means the product of the matrices A and B. The calculation rules for the matrix components are the same as those used in normal mathematics.

(6)Aをn×n行列とし、iを整数とすると、A^iとは行列Aのi個の積を意味するものとする。また、A^0とは単位行列Eを意味するものとする。   (6) When A is an n × n matrix and i is an integer, A ^ i means i products of the matrix A. A ^ 0 means the unit matrix E.

(7)単位行列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
となる性質がある。

Figure 0004789536
(7) The unit matrix E [n, n] is an n × n matrix, and the value of i rows and j columns is represented by e (i, j).
e (i, j) = 1 when i = j
For other cases e (i, j) = 0
Let's mean a matrix that is Specifically, the matrix is as follows. Let A be any n × n matrix
A × E = E × A = A
There is a property to become.
Figure 0004789536

次に、図2に示すフローチャートおよび図3、図4に示す具体的データなどを参照して、上記実施形態の作用として、まず元データSの分割処理について説明する。   Next, with reference to the flowchart shown in FIG. 2 and the specific data shown in FIGS. 3 and 4, first, the dividing process of the original data S will be described as an operation of the above embodiment.

本実施形態の分割装置1の利用者は、端末5からネットワーク3を介して分割装置1にアクセスし、分割装置1に元データSを送信し、分割装置1ではデータ送受信手段17が端末5からの元データSを受信し、分割装置1に供給する(図2のステップS201)。なお、本例では、元データSは、16ビットの「10110010 00110111」とする。   A user of the dividing apparatus 1 according to the present embodiment accesses the dividing apparatus 1 from the terminal 5 via the network 3 and transmits the original data S to the dividing apparatus 1. The original data S is received and supplied to the dividing device 1 (step S201 in FIG. 2). In this example, the original data S is 16 bits “10110010 00110111”.

次に、利用者は端末5から分割数nとして3を分割装置1に指示する(ステップS203)。この分割数nは分割装置1において予め定められた値を用いてもよい。なお、この分割数n=3に従って分割装置1で生成される3個の分割データをD(1),D(2),D(3)とする。この分割データD(1),D(2),D(3)は、すべて元データのビット長と同じ16ビット長のデータである。   Next, the user instructs the dividing apparatus 1 to 3 as the division number n from the terminal 5 (step S203). A predetermined value in the dividing device 1 may be used as the division number n. Note that the three pieces of divided data generated by the dividing device 1 according to the number of divisions n = 3 are D (1), D (2), and D (3). The divided data D (1), D (2), and D (3) are all 16-bit data that is the same as the bit length of the original data.

それから、元データSを分割するために使用される処理単位ビット長bを8ビットと決定し、また元データと同じビット長である16ビットの乱数Rを乱数発生手段15から取得して生成する(ステップS205)。この処理単位ビット長bは、利用者が端末5から分割装置1に対して指定してもよいし、または分割装置1において予め定められた値を用いてもよい。なお、処理単位ビット長bは、任意のビット数でよいが、ここでは元データSを割り切れることができる8ビットとしている。従って、上記16ビットの「10110010 00110111」の元データSは、8ビットの処理単位ビット長で区分けされた場合の2個の元分割データS(1)およびS(2)は、それぞれ「10110010」および「00110111」となる。   Then, the processing unit bit length b used for dividing the original data S is determined to be 8 bits, and a 16-bit random number R having the same bit length as that of the original data is acquired from the random number generation means 15 and generated. (Step S205). The processing unit bit length b may be specified by the user from the terminal 5 to the dividing device 1, or a value predetermined in the dividing device 1 may be used. The processing unit bit length b may be an arbitrary number of bits, but here it is 8 bits that can divide the original data S. Accordingly, the original data S of the above 16-bit “10110010 00110111” is divided into “10110010” when the two original divided data S (1) and S (2) are divided by the 8-bit processing unit bit length. And “00110111”.

次のステップS207では、元データSのビット長が8×2の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を0で埋めて、8×2の整数倍に合わせる。なお、本例のように処理単位ビット長bが8ビットおよび分割数nが3に設定された場合における分割処理は、元データSのビット長として16ビットに限られるものでなく、処理単位ビット長b×(分割数n-1)=8×2の整数倍の元データSに対して有効なものである。   In the next step S207, it is determined whether or not the bit length of the original data S is an integer multiple of 8 × 2, and if it is not an integer multiple, the end of the original data S is padded with zeros to obtain 8 × 2 Fit to an integer multiple. Note that the division processing when the processing unit bit length b is set to 8 bits and the division number n is set to 3 as in this example is not limited to 16 bits as the bit length of the original data S. This is effective for the original data S that is an integral multiple of the length b × (number of divisions n−1) = 8 × 2.

次に、ステップS209では、変数m、すなわち上述した整数倍を意味する変数mを0に設定する。本例のように、元データSが処理単位ビット長b×(分割数n-1)=8×2=16ビットである場合には、変数mは0であるが、2倍の32ビットの場合には、変数mは1となり、3倍の48ビットの場合には、変数mは2となる。   Next, in step S209, the variable m, that is, the variable m meaning the integer multiple described above is set to zero. As in this example, when the original data S has a processing unit bit length b × (number of divisions n−1) = 8 × 2 = 16 bits, the variable m is 0, but is doubled to 32 bits. In this case, the variable m is 1, and in the case of 3 times 48 bits, the variable m is 2.

次に、元データSの8×2×m+1ビット目から8×2ビット分のデータが存在するか否かが判定される(ステップS211)。これは、このステップS211以降に示す分割処理を元データSの変数mで特定される処理単位ビット長b×(分割数n-1)=8×2=16ビットに対して行った後、元データSとして次の16ビットがあるか否かを判定しているものである。本例のように元データSが16ビットである場合には、16ビットの元データSに対してステップS211以降の分割処理を1回行うと、後述するステップS219で変数mが+1されるが、本例の元データSでは変数mがm+1の場合に相当する17ビット以降のデータは存在しないので、ステップS211からステップS221に進むことになるが、今の場合は、変数mは0であるので、元データSの8×2×m+1ビット目は、8×2×0+1=1となり、元データSの16ビットの1ビット目から8×2ビット分にデータが存在するため、ステップS213に進む。   Next, it is determined whether or not there is data for 8 × 2 bits from the 8 × 2 × m + 1 bit of the original data S (step S211). This is because the division processing shown after step S211 is performed on the processing unit bit length b × (number of divisions n−1) = 8 × 2 = 16 bits specified by the variable m of the original data S, It is determined whether or not there is the next 16 bits as data S. In the case where the original data S is 16 bits as in this example, when the dividing process after step S211 is performed once on the 16-bit original data S, the variable m is incremented by 1 in step S219 described later. However, in the original data S of this example, there is no data of 17 bits or more corresponding to the case where the variable m is m + 1, so the process proceeds from step S211 to step S221. In this case, however, the variable m is Since it is 0, the 8 × 2 × m + 1 bit of the original data S is 8 × 2 × 0 + 1 = 1, and the data is 8 × 2 bits from the first 16 bits of the original data S. Since it exists, it progresses to step S213.

ステップS213では、変数jを1から2(=分割数n-1)まで変えて、元データSの8×(2×m+j-1)+1ビット目から8ビット分(=処理単位ビット長)のデータを元部分データS(2×m+j)に設定し、これにより元データSを処理単位ビット長で区分けした2(分割数n-1)個の元部分データS(1),S(2)を次のように生成する。   In step S213, the variable j is changed from 1 to 2 (= number of divisions n-1), and 8 bits (= processing unit bits) from the 8 × (2 × m + j-1) +1 bit of the original data S Data) is set to the original partial data S (2 × m + j), thereby dividing the original data S by the processing unit bit length 2 (number of divisions n-1) original partial data S (1) , S (2) is generated as follows.

元データS=S(1),S(2)
第1の元部分データS(1)=「10110010」
第2の元部分データS(2)=「00110111」
次に、変数jを1から2(=分割数n-1)まで変えて、乱数部分データR(2×m+j)に乱数発生手段15から発生する8ビットの長さの乱数を設定し、これにより乱数Rを処理単位ビット長で区分けした2(分割数n-1)個の乱数部分データR(1),R(2)を次のように生成する(ステップS215)。
Original data S = S (1), S (2)
First original partial data S (1) = “10110010”
Second original partial data S (2) = “00110111”
Next, the variable j is changed from 1 to 2 (= number of divisions n-1), and a random number having a length of 8 bits generated from the random number generation means 15 is set in the random number partial data R (2 × m + j). Thus, 2 (division number n-1) random number partial data R (1) and R (2) obtained by dividing the random number R by the processing unit bit length are generated as follows (step S215).

乱数R=R(1),R(2)
第1の乱数部分データR(1)=「10110001」
第2の乱数部分データR(2)=「00110101」
次に、ステップS217において、変数iを1から3(=分割数n)まで変えるとともに、更に各変数iにおいて変数jを1から2(=分割数n-1)まで変えながら、ステップS217に示す分割データを生成するための元部分データと乱数部分データの排他的論理和からな
る定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,2×m+j) を生成する。この結果、次に示すような分割データDが生成される。
Random number R = R (1), R (2)
First random number partial data R (1) = “10110001”
Second random number partial data R (2) = “00110101”
Next, in step S217, the variable i is changed from 1 to 3 (= number of divisions n), and the variable j is further changed from 1 to 2 (= number of divisions n-1) in each variable i, as shown in step S217. Each divided partial data D (i, 2 × m + j) that constitutes each of the plurality of divided data D (i) by a definition formula consisting of exclusive OR of the original partial data and random number partial data for generating the divided data ) Is generated. As a result, the following divided data D is generated.

分割データD
=3個の分割データD(i)=D(1),D(2),D(3)
第1の分割データD(1)
=2個の分割部分データD(1,j)=D(1,1),D(1,2)
=「00110110」,「10110011」
第2の分割データD(2)
=2個の分割部分データD(2,j)=D(2,1),D(2,2)
=「00000011」,「00000010」
第3の分割データD(3)
=2個の分割部分データD(3,j)=D(3,1),D(3,2)
=「10110001」,「00110101」
なお、各分割部分データD(i,j)を生成するためのステップS217に示す定義式は、本例のように分割数n=3の場合には、具体的には図4に示す表に記載されているものとなる。図4に示す表から、分割部分データ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)である。また、図4に示す表にはm>0の場合の任意の整数についての一般的な定義式も記載されている。
Split data D
= 3 pieces of divided data D (i) = D (1), D (2), D (3)
First divided data D (1)
= 2 pieces of partial data D (1, j) = D (1,1), D (1,2)
= "00110110", "10110011"
Second divided data D (2)
= 2 pieces of partial data D (2, j) = D (2,1), D (2,2)
= "00000011", "00000010"
Third divided data D (3)
= 2 pieces of partial data D (3, j) = D (3,1), D (3,2)
= "10110001", "00110101"
Note that the definition formula shown in step S217 for generating each divided partial data D (i, j) is specifically shown in the table shown in FIG. 4 when the division number n = 3 as in this example. It will be described. From the table shown in FIG. 4, the definition formula for generating the divided partial data D (1,1) is S (1) * R (1) * R (2), and the definition formula for D (1,2) Is S (2) * R (1) * R (2), the definition of D (2,1) is S (1) * R (1), and the definition of D (2,2) is S (2) * R (2), the defining formula for D (3,1) is R (1), and the defining formula for D (3,2) is R (2). The table shown in FIG. 4 also describes general definition formulas for arbitrary integers when m> 0.

このように整数倍を意味する変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS219)、ステップS211に戻り、変数m+1に該当する元データSの17ビット以降について同様の分割処理を行おうとするが、本例の元データSは16ビットであり、17ビット以降のデータは存在しないので、ステップS211からステップS221に進み、上述したように生成した分割データD(1),D(2),D(3)を分割装置1のデータ送受信手段17からネットワーク3を介して保管サーバ7a,7b,7cにそれぞれ送信し、各保管サーバ7に保管し、分割処理を終了する。   In this way, after the divided data D is generated for the variable m = 0 which means an integer multiple, the variable m is then incremented by 1 (step S219), the process returns to step S211 and the original data S corresponding to the variable m + 1 is returned. However, since the original data S in this example is 16 bits and there is no data after 17 bits, the process proceeds from step S211 to step S221 and is generated as described above. The divided data D (1), D (2), D (3) are transmitted from the data transmitting / receiving means 17 of the dividing apparatus 1 to the storage servers 7a, 7b, 7c via the network 3, and stored in each storage server 7. Then, the division process ends.

ここで、上述した図2のフローチャートのステップS217における定義式による分割データの生成処理、具体的には分割数n=3の場合の分割データの生成処理について詳しく説明する。   Here, the divided data generation process based on the definition formula in step S217 in the flowchart of FIG. 2 described above, specifically, the divided data generation process when the number of divisions n = 3 will be described in detail.

まず、整数倍を意味する変数m=0の場合には、ステップS217に示す定義式から各分割データD(i)=D(1)〜D(3)の各々を構成する各分割部分データD(i,2×m+j)=D(i,j)(i=1〜3,j=1〜2)は、次のようになる。   First, in the case of a variable m = 0 meaning an integer multiple, each divided partial data D constituting each of the divided data D (i) = D (1) to D (3) from the definition formula shown in step S217. (i, 2 × m + j) = D (i, j) (i = 1 to 3, j = 1 to 2) is as follows.

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)
上記の6つの式のうち上から4つの式に含まれるQ(j,i,k)を具体的に求める。
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)
Specifically, Q (j, i, k) included in the above four formulas among the above six formulas is obtained.

これはc(j,i,k)を2×2行列であるU[2,2]×(P[2,2])^(j-1)のi行k列の値としたとき下記のように定義される。 When c (j, i, k) is a value of i rows and k columns of U [2,2] × (P [2,2]) ^ (j-1) which is a 2 × 2 matrix, Is defined as

c(j,i,k)=1 のとき Q(j,i,k)=R(k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ここで、
j=1のときは

Figure 0004789536
When c (j, i, k) = 1 Q (j, i, k) = R (k)
Q (j, i, k) = 0 when c (j, i, k) = 0
here,
When j = 1
Figure 0004789536

j=2のときは

Figure 0004789536
When j = 2
Figure 0004789536

これを用いると、各分割部分データD(i,j)は次のような定義式により生成される。   If this is used, each division | segmentation partial data D (i, j) is produced | generated by the following definitional expressions.

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)を生成するための定義式は、図3にも図示されている。
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 )
The definition formula for generating each of the divided partial data D (i, j) described above is also illustrated in FIG.

図3は、上述したように16ビットの元データSを8ビットの処理単位ビット長に基づいて分割数n=3で3分割する場合の各データと定義式および各分割部分
データから元データを復元する場合の計算式などを示す表である。
FIG. 3 shows the original data from the respective data and definition formulas and the divided partial data when the 16-bit original data S is divided into three with the division number n = 3 based on the 8-bit processing unit bit length as described above. It is a table | surface which shows the calculation formula in the case of decompress | restoring.

ここで、上述した定義式により分割データD(1),D(2),D(3)および各分割部分データD(1,1),D(1,2),D(2,1),D(2,2),D(3,1),D(3,2)を生成する過程と定義式の一般形について説明する。   Here, the divided data D (1), D (2), D (3) and the respective divided partial data D (1,1), D (1,2), D (2,1), The process of generating D (2,2), D (3,1), and D (3,2) and the general form of the definition formula will be described.

まず、第1の分割データD(1)に対しては、第1の分割部分データD(1,1)は、上述した定義式S(1)*R(1)*R(2)で定義され、第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である。なお、定義式の一般形は、図4にまとめて示されている。   First, for the first divided data D (1), the first divided partial data D (1,1) is defined by the definition formula S (1) * R (1) * R (2) described above. Then, the second divided partial data D (1, 2) is defined by the definition formula S (2) * R (1) * R (2). The general form of this defining formula is S (j) * R (j) * R (j + 1) for D (1, j), and for D (1, j + 1) S (j + 1) * R (j) * R (j + 1) (j is an odd number). When calculated according to the definition formula, D (1,1) is 00110110 and D (1,2) is 10110011, so D (1) is 00100110 10110011. The general form of the defining formula is shown collectively in FIG.

また、第2の分割データ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である。   For the second divided data D (2), D (2,1) is defined by S (1) * R (1), and D (2,2) is S (2) * R ( Defined in 2). The general form of this definition is S (j) * R (j) for D (2, j) and S (j + 1) * R for D (2, j + 1) (j + 1) (j is an odd number). When calculated according to the definition formula, D (2,1) becomes 00000011 and D (2,2) becomes 00000010, so D (2) is 00000011 00000010.

更に第3の分割データ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である。   Further, for the third divided data D (3), D (3,1) is defined by R (1) and D (3,2) is defined by R (2). The general form of this definition is R (j) for D (3, j) and R (3, j + 1) for D (3, j + 1) (j is Odd number). When calculated according to the definition formula, D (3,1) is 10110001, D (3,2) is 00110101, and D (3) is 10110001 00110101.

上記説明は、S,R,D(1),D(2),D(3)の長さを16ビットとしたが、データの先頭から上記分割処理を繰り返すことにより、どのような長さの元データSからでも分割データD(1),D(2),D(3)を生成することができる。また、処理単位ビット長b
は任意にとることができ、元データSの先頭から順にb×2の長さ毎に上記分割処理を繰り返すことにより任意の長さの元データ、具体的には処理単位ビット長b×2の整数倍の長さの元データに対して適用することができる。なお、元データSの長さが処理単位ビット長b×2の整数倍でない場合は、例えば、データ末尾の部分を0で埋めるなどして元データSの長さを処理単位ビット長b×2の整数倍に合わせることにより上述した本実施形態の分割処理を適用することができる。
In the above description, the length of S, R, D (1), D (2), D (3) is 16 bits. Even from the original data S, the divided data D (1), D (2), and D (3) can be generated. Processing unit bit length b
Can be taken arbitrarily, and by repeating the above dividing process for each b × 2 length in order from the beginning of the original data S, the original data of any length, specifically, the processing unit bit length b × 2 This can be applied to original data having an integral multiple length. If the length of the original data S is not an integral multiple of the processing unit bit length b × 2, for example, the length of the original data S is set to the processing unit bit length b × 2 by filling the end portion of the data with 0, for example. The division processing of this embodiment described above can be applied by adjusting to an integral multiple of.

次に、図3の右側に示す表を参照して、分割データから元データを復元する処理について説明する。   Next, processing for restoring original data from divided data will be described with reference to the table shown on the right side of FIG.

まず、利用者は端末5からネットワーク3を介して分割装置1にアクセスし、分割装置1のデータ送受信手段17を介して元データSの復元を要求する。分割装置1は、この元データSの復元要求を受け取ると、この元データSに対応する分割データD(1),D(2),D(3)が保管サーバ7a,7b,7cに保管されていることを記憶しているので、ネットワーク3を介して保管サーバ7a,7b,7cから分割データD(1),D(2),D(3)を取得し、この取得した分割データD(1),D(2),D(3)から次に示すように元データSを復元する。   First, the user accesses the dividing device 1 from the terminal 5 via the network 3 and requests the restoration of the original data S via the data transmission / reception means 17 of the dividing device 1. When receiving the restoration request for the original data S, the dividing device 1 stores the divided data D (1), D (2), D (3) corresponding to the original data S in the storage servers 7a, 7b, 7c. Therefore, the divided data D (1), D (2), D (3) are acquired from the storage servers 7a, 7b, 7c via the network 3, and the acquired divided data D ( The original data S is restored from 1), D (2), and D (3) as follows.

まず、分割部分データD(2,1),D(3,1)から第1の元部分データS(1)を次のように生成することができる。   First, the first original partial data S (1) can be generated from the divided partial data D (2,1) and D (3,1) as follows.

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となる。
D (2,1) * D (3,1) = (S (1) * R (1)) * R (1)
= S (1) * (R (1) * R (1))
= S (1) * 0
= S (1)
Specifically, since D (2,1) is 00000011 and D (3,1) is 10110001, S (1) is 10110010.

また、別の分割部分データから次のように第2の元部分データS(2)を生成することができる。   Further, the second original partial data S (2) can be generated from the other divided partial data as follows.

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となる。
D (2,2) * D (3,2) = (S (2) * R (2)) * R (2)
= S (2) * (R (2) * R (2))
= S (2) * 0
= S (2)
Specifically, since D (2,2) is 00000010 and D (3,2) is 00110101, S (2) is 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)が求まる。
In general, let j be an odd number
D (2, j) * D (3, j) = (S (j) * R (j)) * R (j)
= S (j) * (R (j) * R (j))
= S (j) * 0
= S (j)
Therefore, S (j) can be obtained by calculating D (2, j) * D (3, 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)が求まる。
In general, j is an odd number,
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)
Therefore, S (j + 1) can be obtained by calculating D (2, j + 1) * D (3, j + 1).

次に、D(1),D(3)を取得してSを復元する場合には、次のようになる。   Next, when acquiring D (1) and D (3) and restoring S, it is as follows.

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,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)
Therefore, S (1) can be obtained by calculating D (1,1) * D (3,1) * D (3,2). Specifically, since D (1,1) is 00110110, D (3,1) is 1010001, and D (3,2) is 0110101, S (1) is 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となる。
Similarly,
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)
Therefore, S (2) can be obtained by calculating D (1,2) * D (3,1) * D (3,2). Specifically, since D (1,2) is 10110011, D (3,1) is 10110001, and D (3,2) is 00110101, S (2) is 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)が求まる。
In general, let j be an odd number
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)
Therefore, S (j) can be obtained by calculating D (1, j) * D (3, j) * D (3, j + 1).

また、一般に、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)が求まる。
In general, j is an odd number,
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)
Therefore, S (j + 1) can be obtained by calculating D (1, j + 1) * D (3, j) * D (3, j + 1).

次に、D(1),D(2)を取得してSを復元する場合には、次のようになる。   Next, when acquiring D (1) and D (2) and restoring S, it is as follows.

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,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)
Therefore, R (2) is obtained by calculating D (1,1) * D (2,1). Specifically, since D (1,1) is 00110110 and D (2,1) is 00000011, R (2) is 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となる。
Similarly,
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)
Therefore, R (1) is obtained by calculating D (1,2) * D (2,2). Specifically, since D (1,2) is 10110011 and D (2,2) is 00000010, R (1) is 10110001.

このR(1),R(2)を使用してS(1),S(2)を求める。   Using these R (1) and R (2), S (1) and S (2) are obtained.

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,1) * R (1) = (S (1) * R (1)) * R (1)
= S (1) * (R (1) * R (1))
= S (1) * 0
= S (1)
Therefore, S (1) can be obtained by calculating D (2,1) * R (1). Specifically, since D (2,1) is 00000011 and R (1) is 10110001, S (1) is 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となる。
Similarly,
D (2,2) * R (2) = (S (2) * R (2)) * R (2)
= S (2) * (R (2) * R (2))
= S (2) * 0
= S (2)
Therefore, S (2) can be obtained by calculating D (2,2) * R (2). Specifically, since D (2,2) is 00000010 and R (2) is 00110101, S (2) is 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)が求まる。
In general, let j be an odd number
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)
Therefore, R (j + 1) can be obtained by calculating D (1, j) * D (2, j).

また同様に、
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)が求まる。
Similarly,
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)
Therefore, R (j) can be obtained by calculating D (1, j + 1) * D (2, j + 1).

このR(j),R(j+1)を使用してS(j),S(j+1)を求める。   Using these R (j) and R (j + 1), S (j) and S (j + 1) are obtained.

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) * R (j) = (S (j) * R (j)) * R (j)
= S (j) * (R (j) * R (j))
= S (j) * 0
= S (j)
Therefore, S (j) can be obtained by calculating D (2, j) * R (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)が求まる。
Similarly,
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)
Therefore, S (j + 1) is obtained by calculating D (2, j + 1) * R (j + 1).

上述したように、元データの先頭から処理単位ビット長bに基づいて分割処理を繰り返し行って、分割データを生成した場合には、3つの分割データD(1),D(2),D(3)のすべてを用いなくても、3つの分割データのうち、2つの分割データを用いて上述したように元データを復元することができる。   As described above, when the divided data is repeatedly generated from the beginning of the original data based on the processing unit bit length b to generate divided data, the three divided data D (1), D (2), D ( Even if not all of 3) is used, the original data can be restored as described above using two divided data of the three divided data.

本発明の他の実施形態として、乱数Rのビット長を元データSのビット長よりも短いものを使用して、元データの分割処理を行うことができる。   As another embodiment of the present invention, the original data can be divided by using a random number R having a bit length shorter than that of the original data S.

すなわち、上述した乱数RはS,D(1),D(2),D(3)と同じビット長のデータとしたが、乱数Rを元データSのビット長より短いものとし、分割データD(1),D(2),D(3)の生成にこの短いビット長の乱数Rを繰り返し用いるものである。   That is, the random number R described above is data having the same bit length as S, D (1), D (2), D (3), but the random number R is shorter than the bit length of the original data S, and the divided data D This short bit length random number R is repeatedly used to generate (1), D (2), and D (3).

なお、分割データD(3)は乱数Rのみから生成されるので、分割データD(3)は乱数Rを繰り返して保管しておく必要はない。例えば、元データSのビット長を1600ビット(200バイト)としたとき、乱数Rは任意にとった160ビット(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)とする。   Since the divided data D (3) is generated only from the random number R, the divided data D (3) need not be stored repeatedly with the random number R. For example, when the bit length of the original data S is 1600 bits (200 bytes), the random number R is a repetition of arbitrarily selected 160 bits (20 bytes) of data. That is, R (1) to R (20) are randomly generated, and R (21) to R (200) are 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)の10分の1となる。従って、保管すべきデータの総量は先の実施形態では元データSの3倍であるが、この実施形態では2.1倍とすることができる。乱数Rにおける繰り返し部分のデータの長さは、短すぎると、D(1)またはD(2)のみからRが解読されてしまうことも考えられるため、適切な長さを選択することが望ましい。   In the above description, D (3) is generated by defining divided part data D (3, j) as random part data R (j), but it is sufficient to store up to D (3,20). . That is, the length of D (3) is 1/10 of D (1) and D (2). Therefore, the total amount of data to be stored is three times the original data S in the previous embodiment, but can be 2.1 times in this embodiment. If the length of the data of the repetitive part in the random number R is too short, it is possible that R is decoded only from D (1) or D (2). Therefore, it is desirable to select an appropriate length.

この実施形態では例えば乱数Rを生成するために疑似乱数生成アルゴリズムを使用する。乱数には自然界の物理現象などを使って乱数を発生させる真性乱数と、コンピュータのアルゴリズムなどで乱数を発生させる疑似乱数がある、真性乱数は、サイコロを何回も振ったり、雑音などの物理現象を利用したりして生成することができるが、手間や装置がたいへんであるため、その代わりに、適当な長さの種(乱数生成の種となる情報(seeds))から決定的なアルゴリズムに基づいて生成される疑似乱数が用いられる。例えば短い乱数を種とすれば長い乱数を得ることができる。種の長さは、例えば128ビット、160ビットまたはそれ以上のものがある。決定的なアルゴリズムに基づいて生成されるといっても、統計的一様性、無相関性など乱数として必要な性質を一定のレベルで満たしている。具体例としては、ANSI X9,42、FIPS 186−2など標準化されたものがある
(http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/cryptrec20030425_spec01.html)。
In this embodiment, for example, a pseudo-random number generation algorithm is used to generate the random number R. There are true random numbers that generate random numbers using physical phenomena in nature, and pseudo-random numbers that generate random numbers using computer algorithms, etc. True random numbers are physical phenomena such as rolling dice and noise. However, since it takes a lot of time and equipment, instead of using a seed of appropriate length (seeds for generating random numbers (seeds)), it becomes a definitive algorithm. A pseudo-random number generated based on this is used. For example, if a short random number is used as a seed, a long random number can be obtained. Seed lengths are, for example, 128 bits, 160 bits or more. Even if it is generated based on a definitive algorithm, it satisfies the properties required for random numbers such as statistical uniformity and uncorrelation at a certain level. Specific examples include those standardized as ANSI X9, 42, FIPS 186-2 (http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/cryptrec20030425_spec01.html).

これらを用いれば、乱数生成の種を入力として長い疑似乱数の列を生成することができる。例えば、160ビットの種を与えて元データSのビット長と同じ長さの乱数Rを生成し、上述したようにしてSとRからD(1),D(2)を生成し、D(3)にはRを格納するのではなく160ビットの種を格納して保管することにより、元データSのビット長が大きくなってもD(3)に格納して保管すべきビット数は160ビットで済み、保管すべきデータの総量を押さえることができる。元データSを復元する場合には、D(3)に格納された160ビットの種から元データSのビット長と同じ長さの乱数Rを再度生成し、上述したようにして、これとD(1)またはD(2)を用いて元データSを復元することができる。   By using these, it is possible to generate a long sequence of pseudo-random numbers by using the seed of random number generation as an input. For example, a random number R having the same length as the bit length of the original data S is generated by giving a seed of 160 bits, and D (1) and D (2) are generated from S and R as described above, and D ( In 3), instead of storing R, a 160-bit seed is stored and stored, so that even if the bit length of the original data S increases, the number of bits to be stored and stored in D (3) is 160. Only a bit is required, and the total amount of data to be stored can be reduced. In the case of restoring the original data S, a random number R having the same length as the bit length of the original data S is generated again from the 160-bit seed stored in D (3), and as described above, The original data S can be restored using (1) or D (2).

上述した各実施形態は、元データを3つに分割し、そのうち2つから元データが復元可能となるものであったが、分割数nを3より大きくとって、n個より少ない個数の分割データから元データを復元することができることは勿論のことである。   In each of the above-described embodiments, the original data is divided into three, and the original data can be restored from two of them. However, when the division number n is larger than 3, the number of divisions is less than n. Of course, the original data can be restored from the data.

その1つの応用例として、元データを4つの分割データに分割する分割数n=4の場合の分割処理について図5に示すフローチャートおよび図6に示す定義式の一般形などを参照して説明する。   As one application example thereof, division processing in the case where the number of divisions n = 4 for dividing the original data into four pieces of divided data will be described with reference to the flowchart shown in FIG. 5 and the general form of the definition formula shown in FIG. .

まず、利用者は端末5から分割装置1にアクセスして元データSを送信し、分割装置1ではデータ送受信手段17が端末5からの元データSを受信し、分割装置1に供給する(ステップS301)。それから、利用者は端末5から分割数nとして4を分割装置1に指示する(ステップS303)。この分割数nは分割装置1において予め定められた値を用いてもよい。また、処理単位ビット長bが一例として8ビットと決定される(ステップS305)。次に、元データSのビット長が8×3の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を0で埋める(ステップS307)。また、整数倍を意味する変数mを0に設定する(ステップS309)。   First, the user accesses the dividing device 1 from the terminal 5 and transmits the original data S. In the dividing device 1, the data transmission / reception means 17 receives the original data S from the terminal 5 and supplies it to the dividing device 1 (step). S301). Then, the user instructs the dividing device 1 to 4 as the division number n from the terminal 5 (step S303). A predetermined value in the dividing device 1 may be used as the division number n. Further, the processing unit bit length b is determined to be 8 bits as an example (step S305). Next, it is determined whether or not the bit length of the original data S is an integer multiple of 8 × 3. If the bit length is not an integer multiple, the end of the original data S is filled with 0 (step S307). Further, a variable m meaning an integer multiple is set to 0 (step S309).

次に、元データSの8×3×m+1ビット目から8×3ビット分のデータが存在するか否かが判定される(ステップS311)。なお、本例では、元データSが8×3=24ビット長のデータの場合について説明している。   Next, it is determined whether or not there is data for 8 × 3 bits from the 8 × 3 × m + 1 bit of the original data S (step S311). In this example, the case where the original data S is 8 × 3 = 24 bits long data is described.

ステップS311の判定の結果、本例の元データSでは8×3=24ビットのデータであり、変数m=1の場合に相当する8×3×m(=1)+1ビットに相当する25ビット以降のデータは存在しないので、ステップS311からステップS321に進むことになるが、今の場合は、変数mは0であるので、元データSの8×3×m+1ビット目は、8×3×0+1=1となり、元データSの24ビットの1ビット目から8×3ビット分にデータが存在するため、ステップS313に進む。   As a result of the determination in step S311, the original data S of this example is 8 × 3 = 24 bits of data, and 25 corresponding to 8 × 3 × m (= 1) +1 bits corresponding to the variable m = 1. Since there is no data after the bit, the process proceeds from step S311 to step S321. In this case, since the variable m is 0, the 8 × 3 × m + 1 bit of the original data S is 8th. Since × 3 × 0 + 1 = 1 and data exists for 8 × 3 bits from the first 24 bits of the original data S, the process proceeds to step S313.

ステップS313では、変数jを1から3(=分割数n-1)まで変えて、元データSの8×(3×m+j-1)+1ビット目から8ビット分(=処理単位ビット長)のデータを元部分データS(3×m+j)に設定し、これにより元データSを処理単位ビット長で区分けした3個の元部分データS(1),S(2),S(3)が生成される。   In step S313, the variable j is changed from 1 to 3 (= number of divisions n-1), and 8 bits (= processing unit bits) from the 8 × (3 × m + j−1) +1 bit of the original data S Data) is set to the original partial data S (3 × m + j), thereby dividing the original data S into three original partial data S (1), S (2), S (3) is generated.

次に、変数jを1から3まで変えて、乱数部分データR(3×m+j)に乱数発生手段15から発生する8ビットの長さの乱数を設定し、これにより乱数Rを処理単位ビット長で区分けした3個の乱数部分データR(1),R(2),R(3)が生成される(ステップS315)。   Next, the variable j is changed from 1 to 3, and a random number having a length of 8 bits generated from the random number generating means 15 is set in the random number partial data R (3 × m + j), thereby the random number R is processed. Three random number partial data R (1), R (2), R (3) divided by the bit length are generated (step S315).

次に、ステップS317において、変数iを1から4(=分割数n)まで変えるとともに、更に各変数iにおいて変数jを1から3(=分割数n-1)まで変えながら、ステップS317に示す分割データを生成するための定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,3×m+j)を生成する。この結果、次に示すような分割データDが生成される。   Next, in step S317, the variable i is changed from 1 to 4 (= number of divisions n), and further the variable j is changed from 1 to 3 (= number of divisions n-1) in each variable i, as shown in step S317. Each divided partial data D (i, 3 × m + j) constituting each of the plurality of divided data D (i) is generated by a definition formula for generating divided data. As a result, the following divided data D is generated.

分割データD
=4個の分割データD(i)=D(1),D(2),D(3),D(4)
第1の分割データD(1)
=3個の分割部分データD(1,j)=D(1,1),D(1,2),D(1,3)
第2の分割データD(2)
=3個の分割部分データD(2,j)=D(2,1),D(2,2),D(2,3)
第3の分割データD(3)
=3個の分割部分データD(3,j)=D(3,1),D(3,2),D(3,3)
第4の分割データD(4)
=3個の分割部分データD(4,j)=D(4,1),D(4,2),D(4,3)
なお、各分割部分データD(i,j)を生成するためのステップS317に示す定義式は、本例のように分割数n=4の場合には、具体的には図6に示す表に記載されているものとなる。図6に示す表から、分割部分データD(1,1)を生成するための定義式はS(1)*R(1)*R(2)*R(3)であり、D(1,2)の定義式はS(2)*R(1)*R(2)*R(3)であり、D(1,3)の定義式はS(3)*R(1)*R(2)*R(3)であり、D(2,1)の定義式はS(1)*R(1)*R(2)であり、D(2,2)の定義式はS(2)*R(2)*R(3)であり、D(2,3)の定義式はS(3)*R(1)*R(3)であり、D(3,1)の定義式はS(1)*R(1)であり、D(3,2)の定義式はS(2)*R(2)であり、D(3,3)の定義式はS(3)*R(3)であり、D(4,1)の定義式はR(1)であり、D(4,2)の定義式はR(2)であり、D(4,3)の定義式はR(3)である。また、図6に示す表にはm>0の場合の任意の整数についての一般的な定義式も記載されている。
Split data D
= 4 pieces of divided data D (i) = D (1), D (2), D (3), D (4)
First divided data D (1)
= 3 pieces of partial data D (1, j) = D (1,1), D (1,2), D (1,3)
Second divided data D (2)
= 3 pieces of partial data D (2, j) = D (2,1), D (2,2), D (2,3)
Third divided data D (3)
= 3 pieces of divided data D (3, j) = D (3,1), D (3,2), D (3,3)
Fourth divided data D (4)
= 3 divided partial data D (4, j) = D (4,1), D (4,2), D (4,3)
Note that the definition formula shown in step S317 for generating each divided partial data D (i, j) is specifically shown in the table shown in FIG. 6 when the division number n = 4 as in this example. It will be described. From the table shown in FIG. 6, the definition formula for generating the divided partial data D (1,1) is S (1) * R (1) * R (2) * R (3), and D (1,1 The definition of 2) is S (2) * R (1) * R (2) * R (3), and the definition of D (1,3) is S (3) * R (1) * R ( 2) * R (3), the definition of D (2,1) is S (1) * R (1) * R (2), and the definition of D (2,2) is S (2 ) * R (2) * R (3), the definition of D (2,3) is S (3) * R (1) * R (3), the definition of D (3,1) Is S (1) * R (1), the definition of D (3,2) is S (2) * R (2), and the definition of D (3,3) is S (3) * R (3), the definition of D (4,1) is R (1), the definition of D (4,2) is R (2), and the definition of D (4,3) Is R (3). The table shown in FIG. 6 also describes general definition formulas for arbitrary integers when m> 0.

このように変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS319)、ステップS311に戻り、変数m=1に該当する元データSの25ビット以降について同様の分割処理を行おうとするが、本例の元データSは24ビットであり、25ビット以降のデータは存在しないので、ステップS311からステップS321に進み、上述したように生成した分割データD(1),D(2),D(3),D(4)を分割装置1のデータ送受信手段17からネットワーク3を介して保管サーバ7にそれぞれ送信し、各保管サーバ7に保管し、分割処理を終了する。図1では保管サーバは3個であるが、分割数に応じて保管サーバを増やし、各分割データを異なる保管サーバに保管することが望ましい。   In this way, after the divided data D is generated for the variable m = 0, the variable m is then incremented by 1 (step S319), the process returns to step S311 and the 25th and subsequent bits of the original data S corresponding to the variable m = 1. Although the same division processing is to be performed, the original data S in this example is 24 bits, and there is no data after 25 bits. Therefore, the process proceeds from step S311 to step S321, and the divided data D ( 1), D (2), D (3), D (4) are respectively transmitted from the data transmitting / receiving means 17 of the dividing apparatus 1 to the storage server 7 via the network 3, stored in each storage server 7, and divided. Exit. In FIG. 1, the number of storage servers is three, but it is desirable to increase the number of storage servers according to the number of divisions and store each piece of divided data in different storage servers.

ここで、上述した図5のフローチャートのステップS317における定義式による分割データの生成処理、具体的には分割数n=4の場合の分割データの生成処理について詳しく説明する。   Here, the divided data generation processing based on the definition formula in step S317 in the flowchart of FIG. 5 described above, specifically, the divided data generation processing when the number of divisions n = 4 will be described in detail.

まず、ステップS317に示す定義式から各分割データD(i)=D(1)〜D(4)の各々を構成する各分割部分データD(i,3×m+j)は、次のようになる。   First, the divided partial data D (i, 3 × m + j) constituting each of the divided data D (i) = D (1) to D (4) from the definition formula shown in step S317 is as follows. become.

D(1,3×m+1)=S(3×m+1)*Q(1,1,1)*Q(1,1,2)*Q(1,1,3)
D(1,3×m+2)=S(3×m+2)*Q(2,1,1)*Q(2,1,2)*Q(2,1,3)
D(1,3×m+3)=S(3×m+3)*Q(3,1,1)*Q(3,1,2)*Q(3,1,3)
D(2,3×m+1)=S(3×m+1)*Q(1,2,1)*Q(1,2,2)*Q(1,2,3)
D(2,3×m+2)=S(3×m+2)*Q(2,2,1)*Q(2,2,2)*Q(2,2,3)
D(2,3×m+3)=S(3×m+3)*Q(3,2,1)*Q(3,2,2)*Q(3,2,3)
D(3,3×m+1)=S(3×m+1)*Q(1,3,1)*Q(1,3,2)*Q(1,3,3)
D(3,3×m+2)=S(3×m+2)*Q(2,3,1)*Q(2,3,2)*Q(2,3,3)
D(3,3×m+3)=S(3×m+3)*Q(3,3,1)*Q(3,3,2)*Q(3,3,3)
D(4,3×m+1)=R(3×m+1)
D(4,3×m+2)=R(3×m+2)
D(4,3×m+3)=R(3×m+3)
次に、Q(j,i,k)を具体的に求める。これはc(j,i,k)を3×3行列であるU[3,3]×(P[3,3])^(j-1)のi行k列の値としたとき下記のように定義される。
D (1,3 × m + 1) = S (3 × m + 1) * Q (1,1,1) * Q (1,1,2) * Q (1,1,3)
D (1,3 × m + 2) = S (3 × m + 2) * Q (2,1,1) * Q (2,1,2) * Q (2,1,3)
D (1,3 × m + 3) = S (3 × m + 3) * Q (3,1,1) * Q (3,1,2) * Q (3,1,3)
D (2,3 × m + 1) = S (3 × m + 1) * Q (1,2,1) * Q (1,2,2) * Q (1,2,3)
D (2,3 × m + 2) = S (3 × m + 2) * Q (2,2,1) * Q (2,2,2) * Q (2,2,3)
D (2,3 × m + 3) = S (3 × m + 3) * Q (3,2,1) * Q (3,2,2) * Q (3,2,3)
D (3,3 × m + 1) = S (3 × m + 1) * Q (1,3,1) * Q (1,3,2) * Q (1,3,3)
D (3,3 × m + 2) = S (3 × m + 2) * Q (2,3,1) * Q (2,3,2) * Q (2,3,3)
D (3,3 × m + 3) = S (3 × m + 3) * Q (3,3,1) * Q (3,3,2) * Q (3,3,3)
D (4,3 × m + 1) = R (3 × m + 1)
D (4,3 × m + 2) = R (3 × m + 2)
D (4,3 × m + 3) = R (3 × m + 3)
Next, Q (j, i, k) is specifically obtained. This is the following when c (j, i, k) is the value of i rows and k columns of U [3,3] × (P [3,3]) ^ (j-1) which is a 3 × 3 matrix Is defined as

c(j,i,k)=1 のとき Q(j,i,k)=R(3×m+k)
c(j,i,k)=0 のとき Q(j,i,k)=0
j=1のときは

Figure 0004789536
When c (j, i, k) = 1 Q (j, i, k) = R (3 × m + k)
Q (j, i, k) = 0 when c (j, i, k) = 0
When j = 1
Figure 0004789536

j=2のときは

Figure 0004789536
When j = 2
Figure 0004789536

j=3のときは

Figure 0004789536
When j = 3
Figure 0004789536

これを用いると、各分割部分データは次のような定義式により生成される。 If this is used, each division | segmentation partial data are produced | generated by the following definition formulas.

D(1,3×m+1)=S(3×m+1)*Q(1,1,1)*Q(1,1,2)*Q(1,1,3)
=S(3×m+1)*R(3×m+1)*R(3×m+2)*R(3×m+3)
D(1,3×m+2)=S(3×m+2)*Q(2,1,1)*Q(2,1,2)*Q(2,1,3)
=S(3×m+2)*R(3×m+1)*R(3×m+2)*R(3×m+3)
D(1,3×m+3)=S(3×m+3)*Q(3,1,1)*Q(3,1,2)*Q(3,1,3)
=S(3×m+3)*R(3×m+1)*R(3×m+2)*R(3×m+3)
D(2,3×m+1)=S(3×m+1)*Q(1,2,1)*Q(1,2,2)*Q(1,2,3)
=S(3×m+1)*R(3×m+1)*R(3×m+2)
D(2,3×m+2)=S(3×m+2)*Q(2,2,1)*Q(2,2,2)*Q(2,2,3)
=S(3×m+2)*R(3×m+2)*R(3×m+3)
D(2,3×m+3)=S(3×m+3)*Q(3,2,1)*Q(3,2,2)*Q(3,2,3)
=S(3×m+3)*R(3×m+1)*R(3×m+3)
D(3,3×m+1)=S(3×m+1)*Q(1,3,1)*Q(1,3,2)*Q(1,3,3)
=S(3×m+1)*R(3×m+1)
D(3,3×m+2)=S(3×m+2)*Q(2,3,1)*Q(2,3,2)*Q(2,3,3)
=S(3×m+2)*R(3×m+2)
D(3,3×m+3)=S(3×m+3)*Q(3,3,1)*Q(3,3,2)*Q(3,3,3)
=S(3×m+3)*R(3×m+3)
D(4,3×m+1)=R(3×m+1)
D(4,3×m+2)=R(3×m+2)
D(4,3×m+3)=R(3×m+3)
ここで、上述したように図2のステップS217や図5のステップS317で示した定義式に基づいて元データを分割する分割規則について一般的な表現で記載する。
D (1,3 × m + 1) = S (3 × m + 1) * Q (1,1,1) * Q (1,1,2) * Q (1,1,3)
= S (3 × m + 1) * R (3 × m + 1) * R (3 × m + 2) * R (3 × m + 3)
D (1,3 × m + 2) = S (3 × m + 2) * Q (2,1,1) * Q (2,1,2) * Q (2,1,3)
= S (3 × m + 2) * R (3 × m + 1) * R (3 × m + 2) * R (3 × m + 3)
D (1,3 × m + 3) = S (3 × m + 3) * Q (3,1,1) * Q (3,1,2) * Q (3,1,3)
= S (3 × m + 3) * R (3 × m + 1) * R (3 × m + 2) * R (3 × m + 3)
D (2,3 × m + 1) = S (3 × m + 1) * Q (1,2,1) * Q (1,2,2) * Q (1,2,3)
= S (3 × m + 1) * R (3 × m + 1) * R (3 × m + 2)
D (2,3 × m + 2) = S (3 × m + 2) * Q (2,2,1) * Q (2,2,2) * Q (2,2,3)
= S (3 × m + 2) * R (3 × m + 2) * R (3 × m + 3)
D (2,3 × m + 3) = S (3 × m + 3) * Q (3,2,1) * Q (3,2,2) * Q (3,2,3)
= S (3 × m + 3) * R (3 × m + 1) * R (3 × m + 3)
D (3,3 × m + 1) = S (3 × m + 1) * Q (1,3,1) * Q (1,3,2) * Q (1,3,3)
= S (3 × m + 1) * R (3 × m + 1)
D (3,3 × m + 2) = S (3 × m + 2) * Q (2,3,1) * Q (2,3,2) * Q (2,3,3)
= S (3 × m + 2) * R (3 × m + 2)
D (3,3 × m + 3) = S (3 × m + 3) * Q (3,3,1) * Q (3,3,2) * Q (3,3,3)
= S (3 × m + 3) * R (3 × m + 3)
D (4,3 × m + 1) = R (3 × m + 1)
D (4,3 × m + 2) = R (3 × m + 2)
D (4,3 × m + 3) = R (3 × m + 3)
Here, as described above, the division rule for dividing the original data based on the definition formulas shown in step S217 of FIG. 2 or step S317 of FIG.

まず、元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、複数n個のうちの1つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用いて複数(n-1)個の元部分データ、複数(n-1)個の乱数部分データ、複数(n)個の分割データおよび各分割データの複数(n-1)個の分割部分データのそれぞれのうちの1つをそれぞれS(j),R(j),D(i)およびD(i,j)で表わす。   First, original data, random numbers, divided data, the number of divisions, and the processing unit bit length are represented by S, R, D, n, and b, respectively, and i (= 1 to n as a variable representing one of a plurality of n pieces ) And j (= 1 to n-1), multiple (n-1) original partial data, multiple (n-1) random number partial data, multiple (n) divided data, and each divided data One of each of the plurality (n-1) divided partial data is represented by S (j), R (j), D (i), and D (i, j), respectively.

それから、上記変数jを1から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を1からnまで変えながら、各変数iにおいて変数jを1からn-1まで変えた場合において、
i<nのとき、各分割部分データD(i,j)を

Figure 0004789536
Then, the variable j is changed from 1 to n−1, and each original partial data S (j) is created as data of b bits from the b × (j−1) +1 bit of the original data S. Next, when U [n, n] is an upper triangular matrix that is an n × n matrix and P [n, n] is a rotation matrix that is an n × n matrix, c (j, i, k) is expressed as ( n-1) × (n-1) matrix defined as U [n-1, n-1] × P [n-1, n-1] ^ (j-1) i rows and k columns . And when c (j, i, k) = 1, Q (j, i, k) = R (k), when c (j, i, k) = 0, Q (j, i, k) When = 0 is defined, variable i is changed from 1 to n, and variable j is changed from 1 to n-1 for each variable i.
When i <n, each divided partial data D (i, j) is
Figure 0004789536

と設定し、またi=nのとき、各分割部分データD(i,j)を
D(i,j)=R(j)
と設定する。上記処理を元データSの先頭から末尾まで繰り返し行うことにより元データSから分割数nの分割データを生成することができる。
And when i = n, each divided data D (i, j)
D (i, j) = R (j)
And set. By repeating the above process from the beginning to the end of the original data S, it is possible to generate divided data of the number n of divisions from the original data S.

次に、上述したように元データSを4分割して生成された分割データD(1),D(2),D(3),D(4)から元データSを復元する処理について図6を参照して説明する。なお、図6に示す4分割の場合には、変数jを3×m+1(m≧0である任意の整数)として、同図に示す一般的な定義式から次に示すように元データSを生成することができる。   Next, a process for restoring the original data S from the divided data D (1), D (2), D (3), D (4) generated by dividing the original data S into four as described above will be described with reference to FIG. Will be described with reference to FIG. In the case of the four divisions shown in FIG. 6, the variable j is set to 3 × m + 1 (an arbitrary integer satisfying m ≧ 0), and the original data as shown below from the general definition formula shown in FIG. S can be generated.

まず、分割データD(1),D(2)から元データSを求める場合について説明する。   First, a case where the original data S is obtained from the divided data D (1) and D (2) will be described.

D(1,j)*D(2,j)=(S(j)*R(j)*R(j+1)*R(j+2))*((S(j)*R(j)*R(j+1))
=(S(j)*S(j))*(R(j)*R(j))*(R(j+1)*R(j+1))*R(j+2)
=0*0*0*R(j+2)
=R(j+2)
従って、D(1,j)*D(2,j)を計算すれば、乱数R(j+2)が求まり、同様にD(1,j+1)*D(2,j+1)を計算すれば、乱数R(j)が求まり、同様にD(1,j+2)*D(2,j+2)を計算すれば、乱数R(j+1)が求まり、これらの得られた乱数R(j),R(j+1),R(j+2)を用いれば、
D(1,j)*R(j)*R(j+1)*R(j+2)
=(S(j)*R(j)*R(j+1)*R(j+2))*(R(j)*R(j+1)*R(j+2))
=S(j)*(R(j)*R(j))*(R(j+1)*R(j+1))*(R(j+2)*R(j+2))
=S(j)*0*0*0
=S(j)
であるから、D(1,j)*R(j)*R(j+1)*R(j+2)を計算して、S(j)を求めてもよいし、D(2,j)*R(j)*R(j+1)からS(j)を求めることもできる。
D (1, j) * D (2, j) = (S (j) * R (j) * R (j + 1) * R (j + 2)) * ((S (j) * R (j ) * R (j + 1))
= (S (j) * S (j)) * (R (j) * R (j)) * (R (j + 1) * R (j + 1)) * R (j + 2)
= 0 * 0 * 0 * R (j + 2)
= R (j + 2)
Therefore, if D (1, j) * D (2, j) is calculated, the random number R (j + 2) is obtained, and D (1, j + 1) * D (2, j + 1) is similarly calculated. If calculated, the random number R (j) is obtained. Similarly, if D (1, j + 2) * D (2, j + 2) is calculated, the random number R (j + 1) is obtained, and these are obtained. Random numbers R (j), R (j + 1), R (j + 2)
D (1, j) * R (j) * R (j + 1) * R (j + 2)
= (S (j) * R (j) * R (j + 1) * R (j + 2)) * (R (j) * R (j + 1) * R (j + 2))
= S (j) * (R (j) * R (j)) * (R (j + 1) * R (j + 1)) * (R (j + 2) * R (j + 2))
= S (j) * 0 * 0 * 0
= S (j)
Therefore, D (1, j) * R (j) * R (j + 1) * R (j + 2) may be calculated to obtain S (j), or D (2, j ) * R (j) * R (j + 1) to obtain S (j).

同様に、D(1,j+1)*R(j)*R(j+1)*R(j+2)またはD(2,j+1)*R(j+1)*R(j+2)を計算してS(j+1)を求めることができ、また同様にD(1,j+2)*R(j)*R(j+1)*R(j+2)またはD(2,j+2)*R(j)*R(j+2)を計算してS(j+2)を求めることができる。   Similarly, D (1, j + 1) * R (j) * R (j + 1) * R (j + 2) or D (2, j + 1) * R (j + 1) * R (j + (2) to calculate S (j + 1), and similarly D (1, j + 2) * R (j) * R (j + 1) * R (j + 2) or S (j + 2) can be obtained by calculating D (2, j + 2) * R (j) * R (j + 2).

更に、上述したと同様に、D(2)とD(3)からSを求めることができる。   Further, as described above, S can be obtained from D (2) and D (3).

具体的には、まずR(j),R(j+1),R(j+2)を求めてから、D(2,j),D(2,j+1),D(2,j+2)またはD(3,j),D(3,j+1),D(3,j+2)とR(j),R(j+1),R(j+2)のXOR演算によりS(j),S(j+1),S(j+2)を求めることができる。   Specifically, R (j), R (j + 1), R (j + 2) are obtained first, and then D (2, j), D (2, j + 1), D (2, j +2) or D (3, j), D (3, j + 1), D (3, j + 2) and R (j), R (j + 1), R (j + 2) Thus, S (j), S (j + 1), and S (j + 2) can be obtained.

また更に、D(1)とD(4)またはD(2)とD(4)またはD(3)とD(4)からSを求めることができる。   Furthermore, S can be obtained from D (1) and D (4) or D (2) and D (4) or D (3) and D (4).

D(4)はRをそのものから定義したものであるから、計算することなくD(4)からR(j),R(j+1),R(j+2)を取得することができ、例えば、D(1,j),D(1,j+1),D(1,j+2)とR(j),R(j+1),R(j+2)のXOR演算によりS(j),S(j+1),S(j+2)を求めることができる。   Since D (4) defines R from itself, R (j), R (j + 1), R (j + 2) can be obtained from D (4) without calculation. For example, D (1, j), D (1, j + 1), D (1, j + 2) and R (j), R (j + 1), R (j + 2) (j), S (j + 1), S (j + 2) can be obtained.

上述したように、演算回数の差が1である任意の2つの分割データD(1)とD(2)、または、D(2)とD(3)、または、D(4)と任意の1つの分割データD(1)またはD(2)またはD(3)からSが復元可能である。すなわち、4つの分割データの中から任意に3つの分割データを取得すれば、その中には必ず上述したいずれかのケースが含まれるため、4つのうち任意の3つの分割データから元データを復元可能である。   As described above, any two pieces of divided data D (1) and D (2), or D (2) and D (3), or D (4) and any arbitrary difference in the number of operations is 1. S can be restored from one piece of divided data D (1), D (2) or D (3). In other words, if any three divided data are obtained from the four divided data, any of the cases described above is included in the data, so the original data is restored from any three of the four divided data. Is possible.

図7は、5分割の場合の分割データと定義式を示す表である。この5分割の場合は、jを4×m+1(mはm≧0である任意の整数)として、分割データの定義式から、上述した4分割の場合の復元処理と同様のことが言える。従って、演算回数の差が1である任意の2つの分割データD(1)とD(2)、または、D(2)とD(3)、または、D(3)とD(4)、または、D(5)と任意の1つの分割データD(1)またはD(2)またはD(3)またはD(4)から元データSが復元可能である。そして、5つの分割データの中から任意に3つの分割データを取得すれば、その中には必ずこのいずれかのケースが含まれるため、5つのうち任意の3つから復元可能であるといえる。   FIG. 7 is a table showing divided data and definition formulas in the case of five divisions. In the case of 5 divisions, j is 4 × m + 1 (m is an arbitrary integer satisfying m ≧ 0), and the same processing as the above-described restoration processing in the case of 4 divisions can be said from the definition formula of divided data. . Therefore, any two divided data D (1) and D (2), or D (2) and D (3), or D (3) and D (4), whose difference in the number of operations is 1, Alternatively, the original data S can be restored from D (5) and any one piece of divided data D (1) or D (2) or D (3) or D (4). If any three pieces of divided data are acquired from the five pieces of divided data, any one of these cases is always included therein, so that it can be restored from any three of the five pieces.

また、分割数nを5より大きくとった場合も同様にして分割データを構成すれば、nが奇数である場合は(n+1)/2個、nが偶数である場合は(n/2)+1個の分割データから元データを復元することができる。この個数は、n個の分割データがあったときに、隣り合ったものを選択せず、かつ、n個目の分割データを選択しないような最大個数に1を加えたものである。つまり、前記最大個数に1を加えれば演算回数の差が1である2つの分割データまたはn個目の分割データとその他のデータを必ず含むこととなるため、復元に必要な個数が前記のとおりといえる。   Further, when the number of divisions n is greater than 5, if the divided data is configured in the same manner, (n + 1) / 2 when n is an odd number, and (n / 2) when n is an even number. ) The original data can be restored from +1 piece of divided data. This number is obtained by adding 1 to the maximum number that does not select adjacent data and does not select the nth divided data when there are n divided data. In other words, if 1 is added to the maximum number, two divided data whose difference in the number of operations is 1, or the nth divided data and other data are necessarily included, and the number required for restoration is as described above. It can be said.

次に、図8に示すフローチャートを参照して、分割数がnで、処理単位ビット長がbである場合の一般的な分割処理について説明する。   Next, a general division process when the number of divisions is n and the processing unit bit length is b will be described with reference to the flowchart shown in FIG.

まず、利用者は端末5から分割装置1にアクセスして元データSを送信し、分割装置1ではデータ送受信手段17が端末5からの元データSを受信し、分割装置1に供給する(ステップS401)。また、利用者は端末5から分割数n(n≧3である任意の整数)を分割装置1に指示する(ステップS403)。この分割数nは分割装置1において予め定められた値を用いてもよい。処理単位ビット長bを決定する(ステップS405)。なお、bは0より大きい任意の整数である。次に、元データSのビット長がb×(n-1)の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を0で埋める(ステップS407)。また、整数倍を意味する変数mを0に設定する(ステップS409)。   First, the user accesses the dividing device 1 from the terminal 5 and transmits the original data S. In the dividing device 1, the data transmission / reception means 17 receives the original data S from the terminal 5 and supplies it to the dividing device 1 (step). S401). Further, the user instructs the dividing device 1 from the terminal 5 about the division number n (an arbitrary integer satisfying n ≧ 3) (step S403). A predetermined value in the dividing device 1 may be used as the division number n. The processing unit bit length b is determined (step S405). Note that b is an arbitrary integer greater than 0. Next, it is determined whether or not the bit length of the original data S is an integer multiple of b × (n−1). If it is not an integer multiple, the end of the original data S is filled with 0 (step S407). Further, a variable m meaning an integer multiple is set to 0 (step S409).

次に、元データSのb×(n-1)×m+1ビット目からb×(n-1)ビット分のデータが存在するか否かが判定される(ステップS411)。この判定の結果、データが存在しない場合は、ステップS421に進むことになるが、今の場合は、ステップS409で変数mは0に設定された場合であるので、データが存在するため、ステップS413に進む。   Next, it is determined whether or not there is data of b × (n−1) bits from the b × (n−1) × m + 1 bit of the original data S (step S411). As a result of this determination, if there is no data, the process proceeds to step S421. However, in this case, since the variable m is set to 0 in step S409, the data exists, so step S413. Proceed to

ステップS413では、変数jを1からn-1まで変えて、元データSのb×((n-1)×m+j-1)+1ビット目からbビット分のデータを元部分データS((n-1)×m+j)に設定する処理を繰り返し、これにより元データSを処理単位ビット長bで区分けした(n-1)個の元部分データS(1),S(2),…S(n-1)が生成される。   In step S413, the variable j is changed from 1 to n−1, and b bits ((n−1) × m + j−1) +1 bits of the original data S are converted to the original partial data S. ((n-1) × m + j) is repeated, whereby (n-1) pieces of original partial data S (1), S (2 ),... S (n-1) is generated.

次に、変数jを1からn-1まで変えて、乱数部分データR((n-1)×m+j)に乱数発生手段15から発生する処理単位ビット長bの乱数を設定し、これにより乱数Rを処理単位ビット長bで区分けしたn-1個の乱数部分データR(1),R(2),…R(n-1)が生成される(ステップS415)。   Next, the variable j is changed from 1 to n-1, and a random number of the processing unit bit length b generated from the random number generation means 15 is set in the random number partial data R ((n-1) × m + j). Thus, n-1 random number partial data R (1), R (2),... R (n-1) obtained by dividing the random number R by the processing unit bit length b are generated (step S415).

次に、ステップS417において、変数iを1からnまで変えるとともに、更に各変数iにおいて変数jを1からn-1まで変えながら、ステップS417に示す分割データを生成するための定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,(n-1)×m+j)を生成する。この結果、次に示すような分割データDが生成される。   Next, in step S417, while changing the variable i from 1 to n and further changing the variable j from 1 to n-1 in each variable i, a plurality of definition expressions for generating the divided data shown in step S417 are used. Each divided partial data D (i, (n−1) × m + j) constituting each of the divided data D (i) is generated. As a result, the following divided data D is generated.

分割データD
=n個の分割データD(i)=D(1),D(2),…D(n)
第1の分割データD(1)
=n-1個の分割部分データD(1,j)=D(1,1),D(1,2),…D(1,n-1)
第2の分割データD(2)
=n-1個の分割部分データD(2,j)=D(2,1),D(2,2),…D(2,n-1)
… … …
… … …
第nの分割データD(n)
=n-1個の分割部分データD(n,j)=D(n,1),D(n,2),…D(n,n-1)
このように変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS419)、ステップS411に戻り、変数m=1に該当する元データSのb×(n-1)ビット以降について同様の分割処理を行う。最後にステップS411の判定の結果、元データSにデータがなくなった場合、ステップS411からステップS421に進み、上述したように生成した分割データDを分割装置1のデータ送受信手段17からネットワーク3を介して保管サーバ7にそれぞれ送信し、各保管サーバ7に保管し、分割処理を終了する。図1では保管サーバは3個であるが、分割数に応じて保管サーバを増やし、各分割データを異なる保管サーバに保管することが望ましい。
Split data D
= n pieces of divided data D (i) = D (1), D (2), ... D (n)
First divided data D (1)
= n-1 divided partial data D (1, j) = D (1,1), D (1,2), ... D (1, n-1)
Second divided data D (2)
= n-1 divided partial data D (2, j) = D (2,1), D (2,2), ... D (2, n-1)
………
………
N-th divided data D (n)
= n-1 divided partial data D (n, j) = D (n, 1), D (n, 2), ... D (n, n-1)
In this way, after generating the divided data D for the variable m = 0, the variable m is then incremented by 1 (step S419), and the process returns to step S411 to return b × (n of the original data S corresponding to the variable m = 1. -1) Similar division processing is performed for the bits after the bit. Finally, if there is no data in the original data S as a result of the determination in step S411, the process proceeds from step S411 to step S421, and the divided data D generated as described above is transferred from the data transmitting / receiving unit 17 of the dividing apparatus 1 via the network 3. Are transmitted to the storage servers 7 and stored in the storage servers 7, and the division process is terminated. In FIG. 1, the number of storage servers is three, but it is desirable to increase the number of storage servers according to the number of divisions and store each piece of divided data in different storage servers.

ところで、上述した実施形態においては、いずれかの分割データのみから、それを構成する部分データ間の排他的論理和の演算を行うことによって乱数成分が失われる場合がある。即ち、例えば3分割の場合、各分割部分データは次のように定義される。   By the way, in the above-described embodiment, the random number component may be lost by performing the exclusive OR operation between the partial data constituting only the divided data. That is, for example, in the case of three divisions, each divided partial data is defined as follows.

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), …
D(1)について見ると、例えば、D(1,1)、D(1,2)が取得できると、
D(1,1)*D(1,2)=(S(1)*R(1)*R(2))*(S(2)*R(1)*R(2))
=S(1)*S(2)*((R(1)*R(1))*((R(2)*R(2))
=S(1)*S(2)*0*0
=S(1)*S(2)
となる。一般にはD(1,j)*D(1,j+1)=S(j)*S(j+1)である。ここでjはj=2×m+1、mはm≧0の任意の整数である。
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),…
Looking at D (1), for example, if D (1,1) and D (1,2) can be acquired,
D (1,1) * D (1,2) = (S (1) * R (1) * R (2)) * (S (2) * R (1) * R (2))
= S (1) * S (2) * ((R (1) * R (1)) * ((R (2) * R (2))
= S (1) * S (2) * 0 * 0
= S (1) * S (2)
It becomes. In general, D (1, j) * D (1, j + 1) = S (j) * S (j + 1). Here, j is j = 2 × m + 1, and m is an arbitrary integer satisfying m ≧ 0.

D(1,1)、D(1,2)は、上記の定義より、元データと乱数の演算により生成されたものであり、D(1,1)、D(1,2)それぞれを見ても元データの内容は分からないが、D(1,1)*D(1,2)
の演算を行うことによりS(1)*S(2)が算出される。これは元データそのものではないが、乱数成分を含んでいない。
D (1,1) and D (1,2) are generated by the calculation of the original data and random numbers based on the above definition. D (1,1) * D (1,2)
S (1) * S (2) is calculated by performing the above calculation. This is not the original data itself, but does not include a random number component.

このように乱数成分が失われると、個々の元部分データについて、例えばS(2)の一部が既知である場合にはS(1)の一部が復元可能となるので、安全ではないと考えられる。例えば、元データが標準化されたデータフォーマットに従ったデータであって、S(2)がそのデータフォーマット中のヘッダ情報やパディング(例えば、データ領域の一部を0で埋めたもの)などを含む部分であった場合には、これらのデータフォーマット固有のキーワードや固定文字列などを含むため、その内容は予測され得る。また、S(2)のうち既知の部分とS(1)*S(2)の値から、S(1)の一部が復元可能である。   If the random component is lost in this way, for each original partial data, for example, if part of S (2) is known, part of S (1) can be restored, so it is not safe. Conceivable. For example, the original data is data according to a standardized data format, and S (2) includes header information and padding (for example, a part of the data area padded with 0), etc. If it is a part, it includes keywords specific to these data formats, fixed character strings, and the like, so the contents can be predicted. Further, a part of S (1) can be restored from the known part of S (2) and the value of S (1) * S (2).

4分割の場合は、図6より、D(2,j)*D(2,j+1)*D(2,j+2)=S(j)*S(j+1)*S(j+2)である。ここでjはj=3×m+1、mはm≧0の任意の整数である。   In the case of four divisions, from FIG. 6, D (2, j) * D (2, j + 1) * D (2, j + 2) = S (j) * S (j + 1) * S (j +2). Here, j is j = 3 × m + 1, and m is an arbitrary integer satisfying m ≧ 0.

5分割の場合は、図7より、D(i,j)*D(i,j+1)*D(i,j+2)*D(i,j+3)=S(j)*S(j+1)*S(j+2)*S(j+3)である。ここでiは1または3,jはj=4×m+1、mはm≧0の任意の整数である。   In the case of 5 divisions, from FIG. 7, D (i, j) * D (i, j + 1) * D (i, j + 2) * D (i, j + 3) = S (j) * S (j + 1) * S (j + 2) * S (j + 3). Here, i is 1 or 3, j is j = 4 × m + 1, and m is an arbitrary integer satisfying m ≧ 0.

分割数が5より大きい場合も同様に演算により、乱数成分が失われる。なお、分割数が2の場合にはこのような問題は生じない。   When the number of divisions is greater than 5, the random number component is lost in the same manner. Note that such a problem does not occur when the number of divisions is two.

本実施の形態では、この問題を解決するために、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われることがないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データとローテーションして入れ替える。   In the present embodiment, in order to solve this problem, the random number component is not lost by performing exclusive OR between the divided partial data constituting only one of the divided data. Then, the divided partial data are rotated and replaced with the divided partial data in the other divided data corresponding thereto.

まず、3分割の場合の一例について説明する。図9のローテーション前の表は図4と同一のものである。j=2の列について、D(1,2)の値をD(2,2)へ格納し、元のD(2,2)の値をD(1,2)へ格納することにより、1回のローテーションを行う。同図では、これをRotate(1,D(1,2),D(2,2))と示す。これを、j+1を用いた一般式により示すと、D(1,j+1)の値をD(2,j+1)へ格納し、元のD(2,j+1)の値をD(1,j+1)へ格納することにより、1回のローテーションを行うということになる。同図では、これをRotate(1,D(1,j+1),D(2,j+1))と示す。このようにローテーションを行うと、各分割部分データは、図9のローテーション後の表に示すようになる。   First, an example in the case of three divisions will be described. The table before rotation in FIG. 9 is the same as FIG. For column j = 2, store the value of D (1,2) in D (2,2) and store the original value of D (2,2) in D (1,2). Rotate once. In the figure, this is indicated as Rotate (1, D (1, 2), D (2, 2)). When this is shown by a general formula using j + 1, the value of D (1, j + 1) is stored in D (2, j + 1), and the original value of D (2, j + 1) Is stored in D (1, j + 1), which means that one rotation is performed. In the figure, this is indicated as Rotate (1, D (1, j + 1), D (2, j + 1)). When rotation is performed in this way, each divided partial data is as shown in the table after rotation in FIG.

この場合、個々の分割データのみでは、それを構成する分割部分データ間で排他的論理和の演算を行っても乱数成分が失われない。これは、図9より
D(1,j)*D(1,j+1)=(S(j)*R(j)*R(j+1))*(S(j+1)*R(j+1))
=S(j)*S(j+1)*R(j)*((R(j+1)*R(j+1))
=S(j)*S(j+1)*R(j)*0
=S(j)*S(j+1)*R(j)
D(2,j)*D(2,j+1)=(S(j)*R(j))*(S(j+1)*R(j)*R(j+1))
=S(j)*S(j+1)*(R(j)*R(j))*R(j+1))
=S(j)*S(j+1)*0*R(j+1)
=S(j)*S(j+1)*R(j+1)
D(3,j)*D(3,j+1)=R(j)*R(j+1)
となるからである。
In this case, with only individual divided data, random number components are not lost even if an exclusive OR operation is performed between divided partial data constituting the divided data. This is from FIG.
D (1, j) * D (1, j + 1) = (S (j) * R (j) * R (j + 1)) * (S (j + 1) * R (j + 1))
= S (j) * S (j + 1) * R (j) * ((R (j + 1) * R (j + 1))
= S (j) * S (j + 1) * R (j) * 0
= S (j) * S (j + 1) * R (j)
D (2, j) * D (2, j + 1) = (S (j) * R (j)) * (S (j + 1) * R (j) * R (j + 1))
= S (j) * S (j + 1) * (R (j) * R (j)) * R (j + 1))
= S (j) * S (j + 1) * 0 * R (j + 1)
= S (j) * S (j + 1) * R (j + 1)
D (3, j) * D (3, j + 1) = R (j) * R (j + 1)
Because it becomes.

また、この場合、3つの分割データのうち2つから、元データを復元することができるという特性は失われていない。これは、D(1)、D(2)を取得してSを復元する場合には、図9におけるD(1)、D(2)は、図4におけるD(1)、D(2)を構成する分割部分データをローテーションさせたものにすぎないので、明らかにこれらから元データを復元することができ、また、D(1)とD(3)またはD(2)とD(3)を取得してSを復元する場合には、D(3)は乱数のみからなる分割データであるので、D(1)またはD(2)の分割部分データ毎に必要な個数の乱数との排他的論理和演算を行うことにより、乱数部分を消去して元データを復元することができるからである。   In this case, the characteristic that the original data can be restored from two of the three divided data is not lost. This is because when D (1) and D (2) are acquired and S is restored, D (1) and D (2) in FIG. 9 are D (1) and D (2) in FIG. Is only a rotation of the divided partial data constituting the data, so it is clear that the original data can be restored from these, and D (1) and D (3) or D (2) and D (3) When acquiring S and restoring S, since D (3) is divided data consisting only of random numbers, it is excluded from the required number of random numbers for each divided partial data of D (1) or D (2). This is because the original data can be restored by erasing the random number portion by performing a logical OR operation.

次に、4分割の場合における分割部分データのローテーションの一例について説明する。図10のローテーション前の表は図6の上図と同一のものである。j=1の列については、ローテーションは行わない。j=2の列については、D(1,2)の値をD(2,2)へ格納し、元のD(2,2)の値をD(3,2)へ格納し、元のD(3,2)の値をD(1,2)へ格納することにより、1回のローテーションを行う。図10では、これをRotate(1,D(1,2),D(2,2),D(3,2))と示す。また、j=3の列については、D(1,3)の値をD(2,3)へ格納し、元のD(2,3)の値をD(3,3)へ格納し、元のD(3,3)の値をD(1,3)へ格納するローテーションをした後、もう一度同じローテーションを行うことにより、2回のローテーションを行う。このようにローテーションを行うと、各分割部分データは、図10のローテーション後の表に示すように格納される。   Next, an example of rotation of divided partial data in the case of four divisions will be described. The table before rotation in FIG. 10 is the same as the upper diagram in FIG. Rotation is not performed for the column with j = 1. For column j = 2, store the value of D (1,2) in D (2,2), store the original D (2,2) value in D (3,2), Rotation is performed once by storing the value of D (3,2) in D (1,2). In FIG. 10, this is indicated as Rotate (1, D (1, 2), D (2, 2), D (3, 2)). For j = 3 columns, store the value of D (1,3) in D (2,3), store the original value of D (2,3) in D (3,3), After rotating the original value of D (3,3) into D (1,3), the same rotation is performed again to perform two rotations. When rotation is performed in this way, each divided portion data is stored as shown in the table after rotation in FIG.

図11は、これらをj+1、j+2を用いた一般式により示す。図11のローテーション前の表は図6の下図と同一のものである。j+1の列では1回のローテーションにより、D(1,j+1)の値がD(2,j+1)へ格納され、元のD(2,j+1)の値がD(3,j+1)へ格納され、元のD(3,j+1)の値がD(1,j+1)へ格納される。図11では、これをRotate(1,D(1,j+1),D(2,j+1),D(3,j+1))と示す。またj+2の列では2回のローテーションにより、D(1,j+2)の値がD(3,j+2)へ格納され、元のD(3,j+2)の値がD(2,j+2)へ格納され、元のD(2,j+2)の値がD(1,j+2)へ格納される。図11では、これをRotate(2,D(1,j+2),D(2,j+2),D(3,j+2))と示す。このようにローテーションを行うと、各分割部分データは、図11のローテーション後の表に示すように格納される。この場合も、個々の分割データのみでは、それを構成する分割部分データ間で排他的論理和の演算を行っても乱数成分は失われない。   FIG. 11 shows these by a general formula using j + 1 and j + 2. The table before rotation in FIG. 11 is the same as the lower diagram in FIG. In the column of j + 1, the value of D (1, j + 1) is stored in D (2, j + 1) by one rotation, and the original value of D (2, j + 1) is D ( 3, j + 1), and the original value of D (3, j + 1) is stored in D (1, j + 1). In FIG. 11, this is indicated as Rotate (1, D (1, j + 1), D (2, j + 1), D (3, j + 1)). In the j + 2 column, the value of D (1, j + 2) is stored in D (3, j + 2) by two rotations, and the original value of D (3, j + 2) is D Stored in (2, j + 2), and the original value of D (2, j + 2) is stored in D (1, j + 2). In FIG. 11, this is indicated as Rotate (2, D (1, j + 2), D (2, j + 2), D (3, j + 2)). When rotation is performed in this way, each divided portion data is stored as shown in the table after rotation in FIG. Also in this case, with only individual divided data, the random number component is not lost even if an exclusive OR operation is performed between the divided partial data constituting the divided data.

ところで、分割数が4の場合には、全体の情報量は元の情報の4倍となる。一般に、分割数がnの場合には、元の情報のn倍の情報量となってしまい、保管先における格納領域を圧迫する原因となる。そこで、本実施の形態では、ローテーションの処理を行う前に、全てのD(1,j)の値を削除する。すなわち、図10におけるローテーション前のD(1,1)、D(1,2)、D(1,3)の値にNULLを格納することにより、ローテーション後のD(1,1)、D(2,2)、D(3,3)の値を削除する。また、図11におけるローテーション前のD(1,j)、D(1,j+1)、D(1,j+2)の値にNULLを格納することにより、ローテーション後のD(1,j)、D(2,j+1)、D(3,j+2)の値を削除する。このように、ローテーション前の各分割部分データD(1,j)、すなわち分割データD(1)を削除することで、全体の記憶容量を(n−1)倍に抑える。   By the way, when the number of divisions is 4, the total amount of information is four times the original information. In general, when the number of divisions is n, the amount of information is n times as large as the original information, which causes a pressure on the storage area at the storage destination. Therefore, in the present embodiment, all D (1, j) values are deleted before the rotation process is performed. That is, by storing NULL in the values of D (1,1), D (1,2), D (1,3) before rotation in FIG. 10, D (1,1), D ( 2,2) and D (3,3) are deleted. Further, by storing NULL in the values of D (1, j), D (1, j + 1), D (1, j + 2) before rotation in FIG. 11, D (1, j after rotation) is stored. ), D (2, j + 1), and D (3, j + 2) are deleted. Thus, by deleting each divided partial data D (1, j) before rotation, that is, divided data D (1), the entire storage capacity is suppressed to (n−1) times.

続いて、この場合の復元処理について説明する。分割数が4の場合には、4つの分割データのうちの任意の3つを用いることで、元データを復元することが可能である。ここでは、一例として、ローテーション後のD(1,1)、D(2,2)、D(3,3)がそれぞれ削除された分割データD(1)、D(2)、D(3)を用いて元データを復元する処理を示す。   Next, the restoration process in this case will be described. When the number of divisions is 4, the original data can be restored by using any three of the four divided data. Here, as an example, divided data D (1), D (2), D (3) from which D (1,1), D (2,2), and D (3,3) after rotation are deleted, respectively. The process which restores original data using is shown.

まず、次のようにして乱数R(1)、R(2)、R(3)を求める。   First, random numbers R (1), R (2), and R (3) are obtained as follows.

D(1,3)*D(2,3)=(S(3)*R(1)*R(3))*(S(3)*R(3))=R(1)
D(2,1)*D(3,1)=(S(1)*R(1)*R(2))*(S(1)*R(1))=R(2)
D(3,2)*D(1,2)=(S(2)*R(2)*R(3))*(S(2)*R(2))=R(3)
そして、次のようにして元データS(1)、S(2)、S(3)を求める。
D (1,3) * D (2,3) = (S (3) * R (1) * R (3)) * (S (3) * R (3)) = R (1)
D (2,1) * D (3,1) = (S (1) * R (1) * R (2)) * (S (1) * R (1)) = R (2)
D (3,2) * D (1,2) = (S (2) * R (2) * R (3)) * (S (2) * R (2)) = R (3)
Then, the original data S (1), S (2), S (3) are obtained as follows.

D(3,1)*R(1)=(S(1)*R(1))*R(1)=S(1)
D(1,2)*R(2)=(S(2)*R(2))*R(2)=S(2)
D(2,3)*R(3)=(S(3)*R(3))*R(3)=S(3)
以上により、元データS(1)、S(2)、S(3)が復元される。
D (3,1) * R (1) = (S (1) * R (1)) * R (1) = S (1)
D (1,2) * R (2) = (S (2) * R (2)) * R (2) = S (2)
D (2,3) * R (3) = (S (3) * R (3)) * R (3) = S (3)
As described above, the original data S (1), S (2), and S (3) are restored.

次に、別の例として、ローテーション後のD(2,2)、D(3,3)がそれぞれ削除された分割データD(2)、D(3)と、D(4)を用いて元データを復元する処理を示す。ここでは、次のようにして元データS(1)、S(2)、S(3)を求める。   Next, as another example, by using the divided data D (2), D (3), and D (4) from which D (2,2) and D (3,3) after rotation are deleted, respectively. The process which restores data is shown. Here, the original data S (1), S (2), and S (3) are obtained as follows.

D(3,1)*D(4,1)=(S(1)*R(1))*R(1)=S(1)
D(3,2)*D(4,2)*D(4,3)=(S(2)*R(2)*R(3))*R(2)*R(3)=S(2)
D(2,3)*D(4,3)=(S(3)*R(3))*R(3)=S(3)
以上により、元データS(1)、S(2)、S(3)が復元される。この他、D(1)、D(2)、D(4)の組み合わせや、D(1)、D(3)、D(4)の組み合わせからも、同様にして元データS(j)を導くことができる。
D (3,1) * D (4,1) = (S (1) * R (1)) * R (1) = S (1)
D (3,2) * D (4,2) * D (4,3) = (S (2) * R (2) * R (3)) * R (2) * R (3) = S ( 2)
D (2,3) * D (4,3) = (S (3) * R (3)) * R (3) = S (3)
As described above, the original data S (1), S (2), and S (3) are restored. In addition, from the combination of D (1), D (2), D (4) and the combination of D (1), D (3), D (4), the original data S (j) Can lead.

次に、5分割の場合における分割部分データのローテーションの一例について説明する。図12のローテーション前の表は図7の上図と同一のものである。ここでも、j=1の列では、ローテーションを行わない。j=2の列では、D(1,2)の値をD(2,2)へ格納し、元のD(2,2)の値をD(3,2)へ格納し、元のD(3,2)の値をD(4,2)へ格納し、元のD(4,2)の値をD(1,2)へ格納することにより、1回のローテーションを行う。図12では、これをRotate(1,D(1,2),D(2,2),D(3,2),D(4,2))と示す。また、j=3の列では、D(1,3)の値をD(2,3)へ格納し、元のD(2,3)の値をD(3,3)へ格納し、元のD(3,3)の値をD(4,3)へ格納し、元のD(4,3)の値をD(1,3)へ格納するローテーションをした後、もう一度同じローテーションをすることにより、2回のローテーションを行う。図12では、これをRotate(2,D(1,3),D(2,3),D(3,3),D(4,3))と示す。j=4の列では、D(1,4)の値をD(2,4)へ格納し、元のD(2,4)の値をD(3,4)へ格納し、元のD(3,4)の値をD(4,4)へ格納し、元のD(4,4)の値をD(1,4)へ格納するローテーションをした後、2度同じローテーションをすることにより、3回のローテーションを行う。図12では、これをRotate(3,D(1,4),D(2,4),D(3,4),D(4,4))と示す。このようにローテーションを行うと、各分割部分データは、図12のローテーション後の表に示すように格納される。   Next, an example of rotation of divided partial data in the case of five divisions will be described. The table before rotation in FIG. 12 is the same as the upper diagram in FIG. Again, no rotation is performed in the column where j = 1. In the column of j = 2, the value of D (1,2) is stored in D (2,2), the original value of D (2,2) is stored in D (3,2), and the original D One rotation is performed by storing the value of (3, 2) in D (4, 2) and the original value of D (4, 2) in D (1, 2). In FIG. 12, this is indicated as Rotate (1, D (1, 2), D (2, 2), D (3, 2), D (4, 2)). In the column of j = 3, the value of D (1,3) is stored in D (2,3), the original value of D (2,3) is stored in D (3,3), and the original Store the value of D (3,3) in D (4,3), store the original D (4,3) value in D (1,3), and then rotate again Thus, two rotations are performed. In FIG. 12, this is indicated as Rotate (2, D (1, 3), D (2, 3), D (3, 3), D (4, 3)). In the j = 4 column, the value of D (1,4) is stored in D (2,4), the original value of D (2,4) is stored in D (3,4), and the original D Rotate to store the value of (3,4) in D (4,4) and store the original value of D (4,4) in D (1,4), and then rotate the same twice 3 rotations are performed. In FIG. 12, this is indicated as Rotate (3, D (1, 4), D (2, 4), D (3,4), D (4, 4)). When rotation is performed in this way, each divided portion data is stored as shown in the table after rotation in FIG.

図13は、これらをj+1、j+2、j+3を用いた一般式により示す。図13のローテーション前の表は図7の下図と同一のものである。j+1の列では、1回のローテーションにより、D(1,j+1)の値がD(2,j+1)へ格納され、元のD(2,j+1)の値がD(3,j+1)へ格納され、元のD(3,j+1)の値がD(4,j+1)へ格納され、元のD(4,j+1)の値がD(1,j+4)へ格納される。図13では、これをRotate(1,D(1,j+1),D(2,j+1),D(3,j+1),D(4,j+1))と示す。j+2の列では、2回のローテーションにより、D(1,j+2)の値がD(3,j+2)へ格納され、元のD(3,j+2)の値がD(1,j+2)へ格納され、元のD(4,j+2)の値がD(2,j+2)へ格納される。図13では、これをRotate(2,D(1,j+2),D(2,j+2),D(3,j+2),D(4,j+2))と示す。j+3の列では、3回のローテーションにより、D(1,j+1)の値がD(4,j+3)へ格納され、元のD(4,j+3)の値がD(3,j+3)へ格納され、元のD(3,j+3)の値がD(2,j+3)へ格納され、元のD(2,j+3)の値がD(1,j+3)へ格納される。図13では、これをRotate(3,D(1,j+3),D(2,j+3),D(3,j+3),D(4,j+3))と示す。このようにローテーションを行うと、各分割部分データは、図13のローテーション後の表に示すように格納される。この場合も、個々の分割データのみでは、それを構成する分割部分データ間で排他的論理和の演算を行っても乱数成分は失われない。   FIG. 13 shows these by a general formula using j + 1, j + 2, and j + 3. The table before rotation in FIG. 13 is the same as the lower diagram in FIG. In the column of j + 1, the value of D (1, j + 1) is stored in D (2, j + 1) by one rotation, and the original value of D (2, j + 1) is D Stored in (3, j + 1), the original D (3, j + 1) value is stored in D (4, j + 1), and the original D (4, j + 1) value is D Stored in (1, j + 4). In FIG. 13, this is indicated as Rotate (1, D (1, j + 1), D (2, j + 1), D (3, j + 1), D (4, j + 1)). In the j + 2 column, the value of D (1, j + 2) is stored in D (3, j + 2) by two rotations, and the original value of D (3, j + 2) is D Stored in (1, j + 2), and the original value of D (4, j + 2) is stored in D (2, j + 2). In FIG. 13, this is indicated as Rotate (2, D (1, j + 2), D (2, j + 2), D (3, j + 2), D (4, j + 2)). In the column of j + 3, the value of D (1, j + 1) is stored in D (4, j + 3) by three rotations, and the original value of D (4, j + 3) is D Stored in (3, j + 3), the original D (3, j + 3) value is stored in D (2, j + 3), and the original D (2, j + 3) value is D Stored in (1, j + 3). In FIG. 13, this is indicated as Rotate (3, D (1, j + 3), D (2, j + 3), D (3, j + 3), D (4, j + 3)). When rotation is performed in this way, each divided portion data is stored as shown in the table after rotation in FIG. Also in this case, with only individual divided data, the random number component is not lost even if an exclusive OR operation is performed between the divided partial data constituting the divided data.

また、5分割の場合も、4分割と同様に、データ容量を抑制するため、ローテーションの処理を行う前に、全てのD(1,j)の値を削除する。すなわち、図12におけるローテーション前のD(1,1)、D(1,2)、D(1,3)、D(1,4)の値にNULLを格納することにより、ローテーション後のD(1,1)、D(2,2)、D(3,3)、D(4,4)の値を削除する。また、図13におけるローテーション前のD(1,j)、D(1,j+1)、D(1,j+2)、D(1,j+3)の値にNULLを格納することにより、ローテーション後のD(1,j)、D(2,j+1)、D(3,j+2)、D(4,j+3)の値を削除する。このように、分割部分データの一部を削除することで、全体の容量を抑える。   Also in the case of five divisions, as in the case of four divisions, all D (1, j) values are deleted before the rotation process in order to suppress the data capacity. That is, by storing NULL in the values of D (1,1), D (1,2), D (1,3), and D (1,4) before rotation in FIG. 1,1), D (2,2), D (3,3), D (4,4) are deleted. Further, by storing NULL in the values of D (1, j), D (1, j + 1), D (1, j + 2), and D (1, j + 3) before rotation in FIG. Then, the values of D (1, j), D (2, j + 1), D (3, j + 2), and D (4, j + 3) after rotation are deleted. In this way, the entire capacity is suppressed by deleting a part of the divided partial data.

元データの復元は、4分割の場合と同様に行うことができ、5個の分割データのうちの3個の分割データから、元データを復元することができるという特性は失われていない。   The restoration of the original data can be performed in the same manner as in the case of four divisions, and the characteristic that the original data can be restored from three divided data of the five divided data is not lost.

また、分割数nを5より大きくとった場合も、同様にして全てのD(1,j)の値を削除するとともに分割部分データをローテーションさせて分割データを構成すれば、nが奇数である場合は(n+1)/2個、nが偶数である場合は(n/2)+1個の分割データから元データを復元することができる。この個数は、n個の分割データがあったときに、隣り合ったものを選択せず、かつ、n個目の分割データを選択しないような最大個数に1を加えたものである。つまり、前記最大個数に1を加えれば演算回数の差が1である2つの分割データまたはn個目の分割データとその他のデータを必ず含むこととなるため、復元に必要な個数が前記のとおりといえる。   Also, when the number of divisions n is larger than 5, if all the D (1, j) values are deleted and the divided partial data is rotated to form divided data, n is an odd number. In this case, the original data can be restored from (n + 1) / 2 pieces, and when n is an even number, the original data can be restored from (n / 2) +1 pieces of divided data. This number is obtained by adding 1 to the maximum number that does not select adjacent data and does not select the nth divided data when there are n divided data. In other words, if 1 is added to the maximum number, two divided data whose difference in the number of operations is 1, or the nth divided data and other data are necessarily included, and the number required for restoration is as described above. It can be said.

なお、上記実施形態のデータ分割方法の処理手順をプログラムとして例えばCDやFDなどの記録媒体に記録して、この記録媒体をコンピュータシステムに組み込んだり、または記録媒体に記録されたプログラムを通信回線を介してコンピュータシステムにダウンロードしたり、または記録媒体からインストールし、該プログラムでコンピュータシステムを作動させることにより、データ分割方法を実施するデータ分割装置として機能させることができることは勿論であり、このような記録媒体を用いることにより、その流通性を高めることができるものである。   The processing procedure of the data division method of the above embodiment is recorded on a recording medium such as a CD or FD as a program and the recording medium is incorporated into a computer system, or the program recorded on the recording medium is connected to a communication line. Of course, it is possible to function as a data dividing device that implements the data dividing method by downloading to a computer system or installing from a recording medium and operating the computer system with the program. By using a recording medium, the circulation property can be improved.

上述してきたように、本実施の形態によれば、所定の定義式が元部分データと乱数部分データの排他的論理和からなるので、従来のように多項式や剰余演算を行う高速かつ高性能な演算処理能力を必要とせず、大容量のデータに対しても簡単な演算処理を繰り返して分割データを簡単かつ高速に生成することができる。   As described above, according to the present embodiment, since the predetermined defining expression is composed of exclusive OR of the original partial data and the random number partial data, the high-speed and high-performance that performs the polynomial and the remainder calculation as in the conventional case. No calculation processing capability is required, and simple calculation processing can be repeated even for large amounts of data to generate divided data easily and at high speed.

また、生成した複数の分割データのうち分割数よりも少ない数の分割データに対して定義式を適用することにより元データを復元するので、分割数よりも少ない任意の数xの分割データで元データを復元でき、分割数からxを減算した数までの分割データを紛失したり破壊したとしても、元データを復元することができる。   In addition, since the original data is restored by applying the definition formula to the divided data that is smaller than the number of divided data among the plurality of generated divided data, the original data can be generated with any number of divided data smaller than the number of divided data. Data can be restored, and original data can be restored even if divided data up to the number obtained by subtracting x from the number of divisions is lost or destroyed.

さらに、元データをネットワークを介して端末から受信し、この元データに対して元部分データ、乱数部分データおよび分割部分データの生成処理を施して生成された複数の分割部分データをネットワークを介して保管サーバに送信して保管するので、多数のユーザが端末からネットワークを介してアクセスして分割処理を依頼することができ、共通化および経済化を図ることができる。   Further, the original data is received from the terminal via the network, and the original partial data, the random number partial data, and the divided partial data are generated on the original data, and a plurality of pieces of the divided partial data are generated via the network. Since the data is transmitted to the storage server and stored, a large number of users can access the terminal from the terminal via the network and request division processing, thereby achieving commonality and economy.

また、各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データとローテーションして入れ替えることで、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われることを防止できる。なお、このローテーションの手法は、分割数が4以上の場合に特に有効であるが、本実施の形態においては、排他的論理和を用いたデータ分割手法の理解を容易にするために、分割数を3とした場合についても説明した。   In addition, by exchanging each divided partial data with each divided partial data in the corresponding other divided data, exclusive OR between the divided partial data constituting the divided partial data using only one of the divided data. It is possible to prevent the random number component from being lost. This rotation method is particularly effective when the number of divisions is 4 or more. However, in this embodiment, the number of divisions is used to facilitate understanding of the data division method using exclusive OR. The case where is set to 3 has also been described.

さらに、分割部分データD(1,j)を削除することで、分割データD(1)を記憶することが不要となるので、従来は分割数がnの場合に元データのn倍の情報量を記憶させる記憶容量が必要であったところ、これをn−1倍に抑えることができる。   Further, since it becomes unnecessary to store the divided data D (1) by deleting the divided partial data D (1, j), conventionally, when the number of divisions is n, the information amount is n times that of the original data. When a storage capacity for storing is required, this can be reduced to n-1 times.

なお、本実施形態においては、各分割部分データをローテーションする前に分割部分データD(1,j)を削除することとしたが、ローテーションの後でローテーション前の分割部分データD(1,j)に相当するデータを削除することとしてもよい。   In the present embodiment, the divided partial data D (1, j) is deleted before rotating each divided partial data, but the divided partial data D (1, j) before rotation after rotation is rotated. It is also possible to delete the data corresponding to.

また、本実施の形態においては、各分割部分データをローテーションさせることとしたが、これに限られるものではなく、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われるということが防止できればよく、この効果が得られるのであれば、各分割部分データをどのように入れ替えても構わない。   Further, in the present embodiment, each divided partial data is rotated. However, the present invention is not limited to this, and exclusive logic between divided partial data constituting only one of the divided data is used. It is only necessary to prevent the random number component from being lost by performing the sum. If this effect can be obtained, the divided partial data may be replaced in any manner.

さらに、上述した実施形態は、分割データは、乱数のみからなる1つの分割データと、1つの元部分データと1つ以上の乱数部分データの排他的論理和演算によって生成された分割部分データからなる1つ以上の分割データを含む場合であるが、上述した実施形態を変形して分割データは、乱数のみからなる1つ以上の分割データと、1つ以上の元部分データと1つ以上の乱数部分データの排他的論理和演算によって生成された分割部分データからなる1つ以上の分割データを含むものとしても良い。また、上述した実施形態を変形して、分割データは、1つ以上の元部分データと1つ以上の乱数部分データの排他的論理和演算によって生成された分割部分データからなる2つ以上の分割データを含むものとしても良い。   Furthermore, in the above-described embodiment, the divided data is composed of one piece of divided data consisting only of random numbers, and divided partial data generated by exclusive OR operation of one original partial data and one or more random number partial data. In the case of including one or more pieces of divided data, the above-described embodiment is modified so that the divided data includes one or more pieces of divided data consisting only of random numbers, one or more original partial data, and one or more random numbers. It may include one or more pieces of divided data composed of divided partial data generated by exclusive OR operation of partial data. Further, by modifying the above-described embodiment, the divided data is divided into two or more divided pieces of divided partial data generated by exclusive OR operation of one or more original partial data and one or more random number partial data. Data may be included.

本発明の一実施形態に係るデータ分割方法を実施するデータ分割装置を含むシステム構成図である。1 is a system configuration diagram including a data dividing apparatus that performs a data dividing method according to an embodiment of the present invention. 図1に示す実施形態のデータ分割装置の分割数n=3の場合の分割処理を示すフローチャートである。7 is a flowchart showing a division process when the number of divisions n = 3 in the data division apparatus of the embodiment shown in FIG. 1. 16ビットの元データSを8ビットの処理単位ビット長に基づいて分割数n=3で3分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。Each data and definition formula when 16-bit original data S is divided into three with a division number n = 3 based on the 8-bit processing unit bit length, and a calculation formula when restoring the original data from each divided partial data, etc. It is a table | surface which shows. 分割数n=3の場合の分割データ、分割部分データ、各分割部分データを生成する定義式を示す表である。It is a table | surface which shows the definition formula which produces | generates the division data, division | segmentation partial data, and each division | segmentation partial data in case division number n = 3. 図1に示す実施形態のデータ分割装置の分割数n=4の場合の分割処理を示すフローチャートである。7 is a flowchart showing a division process when the number of divisions n = 4 of the data division apparatus of the embodiment shown in FIG. 1. 分割数n=4の場合の分割データ、分割部分データ、各分割部分データを生成する定義式を示す表である。It is a table | surface which shows the definition formula which produces | generates the division data, division | segmentation partial data, and each division | segmentation partial data in case division number n = 4. 分割数n=5の場合の分割データ、分割部分データ、各分割部分データを生成する定義式を示す表である。It is a table | surface which shows the definition formula which produces | generates the division data, division | segmentation partial data, and each division | segmentation partial data in case the division number n = 5. 図1に示す実施形態のデータ分割装置の分割数がnで処理単位ビット長がbである場合の一般的な分割処理を示すフローチャートである。2 is a flowchart showing a general division process when the number of divisions of the data division apparatus of the embodiment shown in FIG. 1 is n and the processing unit bit length is b. 分割数n=3の場合の分割部分データのローテーションの例を示す表である。It is a table | surface which shows the example of the rotation of the division | segmentation partial data in case the division number n = 3. 分割数n=4の場合の分割部分データのローテーションの例を示す表である。10 is a table showing an example of rotation of divided partial data when the number of divisions n = 4. 分割数n=4の場合の分割部分データのローテーションの別の例を示す表である。10 is a table showing another example of rotation of divided partial data when the number of divisions n = 4. 分割数n=5の場合の分割部分データのローテーションの例を示す表である。10 is a table showing an example of rotation of divided partial data when the number of divisions n = 5. 分割数n=5の場合の分割部分データのローテーションの別の例を示す表である。It is a table | surface which shows another example of rotation of the division | segmentation partial data in case the division | segmentation number n = 5.

符号の説明Explanation of symbols

1 分割装置
3 ネットワーク
5 端末
7a,7b,7c 保管サーバ
11 分割データ生成手段
13 元データ復元手段
15 乱数発生手段
17 データ送受信手段
DESCRIPTION OF SYMBOLS 1 Dividing apparatus 3 Network 5 Terminal 7a, 7b, 7c Storage server 11 Divided data generation means 13 Original data restoration means 15 Random number generation means 17 Data transmission / reception means

Claims (4)

元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割装置であって、
元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成手段と、
この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成手段と、
各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成手段と、
所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成手段と、を有し、
前記分割部分データ生成手段は、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替えることを特徴とするデータ分割装置。
A data dividing device that divides original data into four or more divided data based on a desired processing unit bit length,
Original part data generating means for dividing the original data into processing unit bit lengths and generating a plurality of original part data;
Corresponding to each of the plurality of original partial data, a random number generating means for generating a plurality of random number partial data having a processing unit bit length from a random number having a length equal to or shorter than the bit length of the original data,
Divided partial data generating means for generating each divided partial data constituting each divided data for each processing unit bit length by exclusive OR of the original partial data and the random number partial data;
By generating a desired number of divided data from a plurality of divided partial data, the original data cannot be restored only from each divided data, but the original data is generated from a predetermined number of divided data of the generated divided data. And a divided data generation means for making it possible to restore
The divided part data generating means uses each of the divided part data so that the random number component is not lost by performing exclusive OR between the divided part data constituting the divided part data. A data dividing device that replaces each divided partial data in other divided data corresponding to.
前記分割部分データ生成手段は、分割部分データの生成に際し、元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、変数としてi(=1〜n)およびj(=1〜n-1)を用いて複数(n-1)個の元部分データ、複数(n-1)個の乱数部分データ、複数(n)個の分割データおよび各分割データの複数(n-1)個の分割部分データのそれぞれのうちの1つをそれぞれS(j),R(j),D(i)およびD(i,j)で表わし、変数jを1からn-1まで変えて、各元部分データS(j)を元データSのb×(j-1)+1ビット目からbビット分のデータとして作成し、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
である行列とし、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
である行列としたとき、c(j,i,k)を(n-1)×(n-1)行列であるU[n-1,n-1]×P[n-1,n-1]^(j-1)のi行k列の値と定義し、ただしU[n-1,n-1]×P[n-1,n-1]^(j-1)とは行列U[n-1,n-1]とj-1個のP[n-1,n-1]の積を表し、Q(j,i,k)をc(j,i,k)=1のとき、Q(j,i,k)=R(k)、c(j,i,k)=0のとき、Q(j,i,k)=0 と定義したとき、各分割部分データD(i,j)を、変数iを1からnまで変えながら各変数iにおいて変数jを1からn-1まで変え、排他的論理和の演算子*を用いて、i<nのとき、
Figure 0004789536
ただし、
Figure 0004789536
とし、i=nのとき、
D(i,j)=R(j)
として生成するものであって、当該各分割部分データのうちD(1,j)を削除することを特徴とする請求項1記載のデータ分割装置。
The divided partial data generation means represents the original data, random numbers, divided data, the number of divisions, and the processing unit bit length as S, R, D, n, and b, respectively, and i (= 1 to n) and j (= 1 to n-1), a plurality (n-1) original partial data, a plurality (n-1) random number partial data, a plurality (n) divided data and One of each of a plurality (n-1) divided partial data of each divided data is represented by S (j), R (j), D (i) and D (i, j), respectively, and a variable j Is changed from 1 to n−1, and each original partial data S (j) is created as data of b bits from the b × (j−1) +1 bit of the original data S, and U [n, n] The value u (i, j) of i rows and j columns in an n × n matrix
When i + j ≦ n + 1 u (i, j) = 1
When i + j> n + 1, u (i, j) = 0
Where P [n, n] is an n × n matrix and the value p (i, j) of i rows and j columns is
When j = i + 1, p (i, j) = 1
p (i, j) = 1 when i = 1, j = n
For other cases p (i, j) = 0
Where c (j, i, k) is a (n-1) × (n-1) matrix U [n-1, n-1] × P [n-1, n-1 ] ^ (J-1) is defined as the value of i rows and k columns, where U [n-1, n-1] × P [n-1, n-1] ^ (j-1) is the matrix U represents the product of [n-1, n-1] and j-1 P [n-1, n-1], and Q (j, i, k) is c (j, i, k) = 1 When Q (j, i, k) = R (k), c (j, i, k) = 0, and Q (j, i, k) = 0, each divided partial data D ( i, j), changing variable i from 1 to n while changing variable j from 1 to n-1 for each variable i, and using the exclusive OR operator *, when i <n,
Figure 0004789536
However,
Figure 0004789536
And when i = n,
D (i, j) = R (j)
The data dividing apparatus according to claim 1, wherein D (1, j) is deleted from the divided partial data.
データ分割装置が行う、元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割方法であって、
前記データ分割装置は、
元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成ステップと、
この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成ステップと
各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成ステップと
所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成ステップと、
前記生成した各分割データを、各記憶部にそれぞれ保管するステップと、を行い、
前記分割部分データ生成ステップは、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替ること
ことを特徴とするデータ分割方法。
A data dividing method for dividing original data into divided data having a number of divisions of 4 or more based on a desired processing unit bit length, performed by a data dividing device ,
The data dividing device includes:
An original partial data generation step for dividing the original data into processing unit bit lengths to generate a plurality of original partial data ,
Corresponding to each of the plurality of original partial data, a random number generating step for generating a plurality of random number partial data having a processing unit bit length from a random number having a length equal to or shorter than the bit length of the original data,
A divided partial data generation step for generating each divided partial data constituting each divided data for each processing unit bit length by exclusive OR of the original partial data and the random number partial data;
By generating a desired number of divided data from a plurality of divided partial data, the original data cannot be restored only from each divided data, but the original data is generated from a predetermined number of divided data of the generated divided data. A split data generation step that enables the
Storing each of the generated divided data in each storage unit, and
The divided part data generation step uses each of the divided part data so that the random number component is not lost by performing an exclusive OR between the divided part data constituting only the divided data. data dividing wherein the Rukoto interchanged with each divided partial data in the other divided data corresponding to.
元データを所望の処理単位ビット長に基づいて4以上の分割数の分割データに分割するデータ分割用のコンピュータプログラムであって、
コンピュータを、
元データを処理単位ビット長毎に区分けして、複数の元部分データを生成する元部分データ生成手段
この複数の元部分データの各々に対応して、元データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成する乱数生成手段
各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成する分割部分データ生成手段、および、
所望の分割数の分割データを複数の分割部分データから生成することにより、各分割データのみからでは元データを復元不能であるが、生成した分割データのうちの所定の個数の分割データから元データが復元可能であるようにする分割データ生成手段、として機能させ、
前記分割部分データ生成手段は、いずれかの分割データのみを用いてそれを構成する分割部分データ間の排他的論理和を行うことによって乱数成分が失われないように、当該各分割部分データをそれぞれに対応する他の分割データにおける各分割部分データと入れ替えること
を特徴とするコンピュータプログラム。
A computer program for data division that divides original data into four or more division data based on a desired processing unit bit length,
Computer
Original part data generating means for dividing the original data into processing unit bit lengths and generating a plurality of original part data;
Corresponding to each of the plurality of original partial data, a random number generating means for generating a plurality of random number partial data having a processing unit bit length from a random number having a length equal to or shorter than the bit length of the original data,
Divided partial data generating means for generating each divided partial data constituting each divided data for each processing unit bit length by exclusive OR of the original partial data and the random number partial data ; and
By generating a desired number of divided data from a plurality of divided partial data, the original data cannot be restored only from each divided data, but the original data is generated from a predetermined number of divided data of the generated divided data. Function as a divided data generation means that makes it possible to restore,
The divided part data generating means uses each of the divided part data so that the random number component is not lost by performing exclusive OR between the divided part data constituting the divided part data. computer program characterized by replacing each divided partial data in the other divided data corresponding to.
JP2005223999A 2005-08-02 2005-08-02 Data division apparatus, data division method, and computer program Active JP4789536B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005223999A JP4789536B2 (en) 2005-08-02 2005-08-02 Data division apparatus, data division method, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005223999A JP4789536B2 (en) 2005-08-02 2005-08-02 Data division apparatus, data division method, and computer program

Publications (3)

Publication Number Publication Date
JP2007041199A JP2007041199A (en) 2007-02-15
JP2007041199A5 JP2007041199A5 (en) 2008-06-05
JP4789536B2 true JP4789536B2 (en) 2011-10-12

Family

ID=37799251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005223999A Active JP4789536B2 (en) 2005-08-02 2005-08-02 Data division apparatus, data division method, and computer program

Country Status (1)

Country Link
JP (1) JP4789536B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5076539B2 (en) * 2007-02-16 2012-11-21 富士通株式会社 Encoding apparatus and encoding method
JP4999533B2 (en) * 2007-04-26 2012-08-15 Kddi株式会社 Distributed information generating apparatus, secret information restoring apparatus, shared information generating method, secret information restoring method, and program
JP5134303B2 (en) * 2007-08-03 2013-01-30 Kddi株式会社 Distributed information generating apparatus, secret information restoring apparatus, shared information generating method, secret information restoring method, and program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3871996B2 (en) * 2002-10-25 2007-01-24 エヌ・ティ・ティ・コミュニケーションズ株式会社 Data division management method and program
JP4610176B2 (en) * 2003-04-15 2011-01-12 エヌ・ティ・ティ・コミュニケーションズ株式会社 Data originality ensuring method and system, and data originality ensuring program
JP4856909B2 (en) * 2005-08-05 2012-01-18 エヌ・ティ・ティ・コミュニケーションズ株式会社 Data division / restoration system, terminal device, data division / restoration method, and computer program

Also Published As

Publication number Publication date
JP2007041199A (en) 2007-02-15

Similar Documents

Publication Publication Date Title
JP5194094B2 (en) Data division method, data division apparatus, and computer program
CN110337649B (en) Method and system for dynamic symmetric searchable encryption with imperceptible search patterns
EP3058678B1 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
KR100363457B1 (en) Mapping Repertoire for Cryptosystems
JP4610176B2 (en) Data originality ensuring method and system, and data originality ensuring program
US7346160B2 (en) Randomization-based encryption apparatus and method
JP4676695B2 (en) Data division method, data division apparatus, and computer program
EP2953052B1 (en) Systems and methods for dynamic data storage
JP4539952B2 (en) Information distributed storage system, apparatus, program and recording medium
Sokouti et al. Medical image encryption: an application for improved padding based GGH encryption algorithm
JP2005141436A5 (en)
JP2006018850A (en) Data storing system
JP5749368B2 (en) Data originality ensuring method and system, and data originality ensuring program
CN116488814A (en) FPGA-based data encryption secure computing method
JP4856909B2 (en) Data division / restoration system, terminal device, data division / restoration method, and computer program
JP4789536B2 (en) Data division apparatus, data division method, and computer program
Vershinin et al. Associative steganography of text messages
JP4619045B2 (en) Data concealment device, data concealment method, and data concealment program
JP6259295B2 (en) Data concealment method, data concealment device, and data concealment program
JP4664008B2 (en) ACCESS RIGHT MANAGEMENT SYSTEM, ACCESS RIGHT MANAGEMENT DEVICE, ACCESS RIGHT MANAGEMENT METHOD, TERMINAL PROGRAM, AND ACCESS RIGHT MANAGEMENT PROGRAM
CN112966294B (en) Single-wheel interactive linked list ORAM access method
JP6322314B2 (en) Data concealment method, data concealment device, and data concealment program
WO2023243141A1 (en) Associative learning system and associative learning method
Kalaiselvi et al. A Sheltered CARMA Algorithm Using Cosseted Articulate For Implication Data
CN116522364A (en) Three-dimensional Fei Xueye-z-method-and-DNA-based multi-medical image encryption method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110712

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110719

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140729

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4789536

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250