JP5749368B2 - Data originality ensuring method and system, and data originality ensuring program - Google Patents
Data originality ensuring method and system, and data originality ensuring program Download PDFInfo
- Publication number
- JP5749368B2 JP5749368B2 JP2014046667A JP2014046667A JP5749368B2 JP 5749368 B2 JP5749368 B2 JP 5749368B2 JP 2014046667 A JP2014046667 A JP 2014046667A JP 2014046667 A JP2014046667 A JP 2014046667A JP 5749368 B2 JP5749368 B2 JP 5749368B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- hash value
- divided
- divided data
- restored
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 95
- 238000012545 processing Methods 0.000 description 65
- 230000008569 process Effects 0.000 description 39
- 230000006870 function Effects 0.000 description 33
- 230000005540 biological transmission Effects 0.000 description 23
- 239000011159 matrix material Substances 0.000 description 23
- 238000004891 communication Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 13
- 230000011218 segmentation Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
本発明は、データを、その原本性を確保して保管するためのデータ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラムに関する。 The present invention relates to a data originality ensuring method and system for storing data while ensuring its originality, and a data originality ensuring program.
ITの発展に伴って、自らの端末をインターネット等の通信ネットワークに接続し、この通信ネットワークに接続されている他端末に対して通信ネットワークを介してデータを通信する機会が非常に増えている。 Along with the development of IT, there is a great increase in opportunities to connect one's own terminal to a communication network such as the Internet, and to communicate data to another terminal connected to the communication network via the communication network.
このとき、端末は通信ネットワークに接続されているため、悪意を持った第三者(ハッカー等)が通信ネットワークに接続された第三者側の端末を介して端末にアクセスし、端末に保管されているデータを改竄する恐れが生じており、改竄されたデータの原本性(故意または過失による改竄がなく、内容が完全であること)を確保する必要が生じていた。 At this time, since the terminal is connected to the communication network, a malicious third party (such as a hacker) accesses the terminal via the third party terminal connected to the communication network and is stored in the terminal. There is a risk of falsifying existing data, and it is necessary to ensure the originality of the falsified data (no intentional or negligent falsification and complete content).
この点、従来では、電子署名を用いてデータの改竄を検出可能にして、原本性を確保する技術が導入されている(例えば、非特許文献1参照)。 In this regard, conventionally, a technique has been introduced in which data alteration can be detected using an electronic signature to ensure originality (see, for example, Non-Patent Document 1).
すなわち、電子署名技術を用いた原本性確保方法によれば、データ送信元のA氏は、予め認証局(CA;Certification Authority)により保証された公開鍵入りの電子証明書を受取る。 That is, according to the originality ensuring method using the electronic signature technique, Mr. A who is a data transmission source receives an electronic certificate containing a public key guaranteed in advance by a certification authority (CA).
そして、A氏は、送信したいデータ(データ本体とも呼ぶ)について電子署名を作成し、作成した電子署名を含むデータ(データ本体+電子署名+電子証明書)をB氏に送信する。 Then, Mr. A creates an electronic signature for data to be transmitted (also referred to as a data body), and transmits data (data body + electronic signature + electronic certificate) including the created electronic signature to Mr. B.
B氏は、受信したデータのうち、データ本体から生成したハッシュ値と、A氏から受け取ったA氏の電子証明書に含まれる公開鍵で電子署名を復号化して得た値とを比較することにより、データが改竄されたか否かを判断している。 Mr. B compares the hash value generated from the data body of the received data with the value obtained by decrypting the electronic signature with the public key included in Mr. A's electronic certificate received from Mr. A. Thus, it is determined whether or not the data has been falsified.
しかしながら、電子署名技術を用いた原本性確保方法によれば、B氏側において受け取ったデータを長期間保管する場合、秘密鍵の危殆化等からデータが改竄される恐れが生じている。 However, according to the originality ensuring method using the electronic signature technique, when the data received on Mr. B side is stored for a long period of time, there is a risk that the data is falsified due to the compromise of the secret key.
そこで、電子署名技術を用いた原本性確保方法において、認証局から発行される電子証明書には予め有効期限が定められており、有効期限到来前にA氏側において改めて秘密鍵と公開鍵とを生成し、公開鍵について電子証明書を認証局から発行してもらい、新しい秘密鍵を用いて再度電子署名付きのデータを作成する必要がある。 Therefore, in the method of ensuring originality using the electronic signature technology, an electronic certificate issued from the certificate authority has a predetermined expiration date, and Mr. A revisits the private key and public key before the expiration date. Is generated, and an electronic certificate is issued from the certificate authority for the public key, and data with an electronic signature is generated again using a new private key.
しかしながら、上述した電子証明書の有効期限に基づく認証局からの電子証明書の再発行処理、および新しい秘密鍵を用いた電子署名付きデータ作成処理は非常に手間および時間がかかり、また、有効期限毎に上述した電子証明書の再発行処理および電子署名付きデータ作成処理を繰り返し行わなければならず、データを、その原本性をより簡易に確保しながら保管できる方法の開発が待望されていた。 However, the above-described reissue process of the electronic certificate from the certificate authority based on the validity period of the electronic certificate and the process for creating the data with the electronic signature using the new private key are very time-consuming and time-consuming. Every time, the above-described re-issuance processing of the electronic certificate and data creation processing with the electronic signature must be repeatedly performed, and development of a method that can store data while ensuring its originality more easily has been awaited.
本発明は、上述した事情に鑑みてなされたものであり、データを、その原本性をより簡易に確保して保管することのできるデータ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラムを提供することをその目的とする。 The present invention has been made in view of the circumstances described above, and provides a data originality ensuring method and system, and a data originality ensuring program capable of storing data with its originality more easily secured. Its purpose is to provide.
上述した目的を達成するため、本発明は、請求項1に記載したように、データを、その原本性を確保して保管するデータ原本性確保システムであって、ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成部と、前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個(n≧3)の分割データを生成するデータ生成部と、前記n個の分割データをそれぞれ記憶する複数の保管部と、前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元部とを備え、前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、前記データ生成部は、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、前記ハッシュ値生成部は、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されることを要旨とする。
In order to achieve the above-described object, the present invention provides a data originality ensuring system for storing data while ensuring its originality as described in
請求項2に記載した発明は、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データについて、前記管理情報および分割データ本体から、前記ハッシュ関数を用いて分割データ用ハッシュ値を再生成し、再生成した分割データ用ハッシュ値と、前記分割データに付加された前記分割データ用ハッシュ値とが一致するか否かを判別するハッシュ値確認部をさらに備え、前記データ復元部は、再生成した分割データ用ハッシュ値と、前記分割データに付加された前記分割データ用ハッシュ値とが一致する分割データの数が、復元可能なm個以上ある場合、前記データを復元することを要旨とする。
The invention described in
請求項3に記載した発明は、コンピュータシステムが行う、データを、その原本性を確保して保管するデータ原本性確保方法であって、前記コンピュータシステムは、生成されたn個(n≧3)の分割データをそれぞれ記憶する複数の保管部を備え、ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成ステップと、前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個の分割データを生成するデータ生成ステップと、前記n個の分割データを、前記複数の保管部にそれぞれ記憶する保管ステップと、前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元ステップと、を行い、前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、前記データ生成ステップは、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、前記ハッシュ値生成ステップは、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されることを要旨とする。
The invention described in
請求項4に記載した発明は、データ原本性確保用プログラムであって、コンピュータシステムを、ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成部、前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個(n≧3)の分割データを生成するデータ生成部、前記n個の分割データをそれぞれ記憶する複数の保管部、および、前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元部として機能させ、前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、前記データ生成部は、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、前記ハッシュ値生成部は、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されることを要旨とする。 The invention described in claim 4 is a data originality ensuring program , wherein a computer system uses a hash function to generate a hash value of the data, a hash value generation unit, and the hash value is added. A data generation unit that generates n (n ≧ 3) divided data from which data can be restored using a secret sharing method, a plurality of storage units that store the n divided data, and the division The data and the hash value are restored using data, the hash value of the restored data is regenerated using the hash function, and whether or not the regenerated hash value matches the restored hash value The n pieces of divided data are functioned as a data restoration unit for discrimination, and the data cannot be restored from one piece of divided data, and m pieces (2 ≦ m ≦ n−1). Ri said data restorable der by combining the divided data, the data generation unit adds the management information about the data divided into each of the divided data, the hash value generation unit, the management information is added A hash value for divided data of each divided data is generated using the hash function, and each divided data to which the management information and the hash value for divided data are added is stored in each of the plurality of storage units. This is the gist.
本発明に係わるデータ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラムによれば、データを、秘密分散法を用いて複数の分割データに分割してハードウェア的に独立した複数の保管部(保管装置)にそれぞれ保管しているため、そのデータの内の少なくとも一部が改竄された場合でも、改竄データを含む分割データから、その分割データに対する改竄の有無を容易に確認することができる。 According to the data originality ensuring method and system and the data originality ensuring program according to the present invention, the data is divided into a plurality of divided data using the secret sharing method, and a plurality of storage units independent in hardware. Since each data is stored in the (storage device), even if at least a part of the data is falsified, it is possible to easily check whether the divided data is falsified from the divided data including the falsified data. .
この結果、例えばデータを長期間に亘って保管する場合であっても、電子署名のように、電子証明書の再発行処理および電子署名付きデータ作成処理を繰り返し行うことなく、簡易にデータを保管することができる。 As a result, for example, even when data is stored for a long period of time, data is easily stored without repeating the reissue process of the electronic certificate and the data creation process with the electronic signature, as in the case of an electronic signature. can do.
本発明に係わるデータ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラムの実施の形態について、添付図面を参照して説明する。 Embodiments of a data originality securing method and system and a data originality securing program according to the present invention will be described with reference to the accompanying drawings.
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係わるデータ原本性確保システム1の概略構成を示すブロック図である。
(First embodiment)
FIG. 1 is a block diagram showing a schematic configuration of a data
図1に示すように、データ原本性確保システム1は、インターネット等の通信用ネットワークNに対して接続して通信できるクライアントコンピュータ(以下、単にクライアントとする)2と、ネットワークNに対して通信可能に接続されており、互いにハードウェア的に独立した複数(本実施の形態では4とする)のデータ保管用サーバコンピュータ(以下、単に保管サーバとする)3a1〜3a4とを備えている。
As shown in FIG. 1, the data
クライアント2は、演算処理部であるCPU、このCPUに接続され該CPUおよびネットワークN間の通信を可能にするインタフェース、CPUに接続されたデータ入力用の入力部およびCPUに接続されたメモリ10をそれぞれ備えている。
The
メモリ10には、原本性を確保して保管する対象となるデータ{例えば、M(Mは自然数)バイトのデジタルデータ;以下、元データとも呼ぶ}Bが格納されている。また、メモリ10には、クライアント2(そのCPU)が読み取り可能であり、後述する図2および図3に示す原本性確保処理(データ保管処理)をクライアント2(そのCPU)に実行させるためのデータ原本性確保用プログラムPが搭載されている。
The
なお、このデータ原本性確保用プログラムPは、磁気メモリや半導体メモリ等の各種記録媒体に搭載され、必要に応じてその記録媒体からクライアント2に読み出されてメモリ10にロードされるように構成することも可能である。
The data originality securing program P is mounted on various recording media such as a magnetic memory and a semiconductor memory, and is read from the recording media to the
クライアント2は、データ原本性確保用プログラムPにより実現される機能として、メモリ10に格納された元データBから、その元データBをユニークに識別できる例えばハッシュ値を生成するハッシュ値生成部11と、元データBおよびハッシュ値Hを含むデータを秘密分散法を用いて分割して分割データD(1)〜D(4)(本実施形態では、分割数を4とする)を生成する分割データ生成部13と、分割データD(1)〜D(4)から元データBおよびハッシュ値Hを生成する元データ復元部15と、分割データD(1)〜D(4)をネットワークNを介して通信する通信部17とを備えている。
The
各保管サーバ3a1〜3a4は、演算処理部であるCPU、このCPUに接続され該CPUおよびネットワークN間の通信を可能にするインタフェース、CPUに接続されたデータ入力用の入力部、CPUに接続されたメモリおよびハードディスク等の記憶装置をそれぞれ備えている。 Each of the storage servers 3a1 to 3a4 is connected to the CPU as an arithmetic processing unit, an interface connected to the CPU and enabling communication between the CPU and the network N, an input unit for data input connected to the CPU, and the CPU. And storage devices such as a memory and a hard disk.
次に、本実施の形態に係わるデータ原本性確保システム1の全体処理について説明する。
Next, the entire process of the data
図2および図3に示すように、クライアント2は、データ原本性確保用プログラムPに従って動作し、ハッシュ値生成部11の機能として、メモリ10に記憶された、原本性を確保して保管したい元データBをメモリ10から読み込み、読み込んだ元データBを、所定のハッシュ関数を用いてその元データBのハッシュ値Hを生成する(ステップS1)。
As shown in FIG. 2 and FIG. 3, the
このハッシュ値Hは、その元データBが1ビットでも変更されると全く異なる値を示す性質、すなわち、元データBをユニークに識別できる性質を有している。 This hash value H has the property of showing a completely different value when the original data B is changed even by 1 bit, that is, the property of uniquely identifying the original data B.
次いで、クライアント2は、分割データ生成部13の機能として、生成したハッシュ値Hを含む元データBを秘密分散法を用いて4つのデータ(分割データ)D(1)〜D(4)に分割する(ステップS2)。
Next, as a function of the divided
以下、ステップS2の秘密分散法に基づく分割データD(1)〜D(4)生成処理について詳細に説明する。 Hereinafter, the divided data D (1) to D (4) generation processing based on the secret sharing method in step S2 will be described in detail.
例えば、2次多項式F(x)=ax2+bx+B(mod p;pで割った時の余りを表す)を基にしたShamirの秘密分散法{(k、n)閾値法;但し、分割数を表すnを4とし、復元できる数を表すkを3とする}で考える。ここでBは元データ、F(x)は分割データである。a、b、pは、元データBの分割に際して任意に決定される。但し、pは、a、b、Bよりも大きい素数とする。 For example, Shamir's secret sharing method ((k, n) threshold method based on quadratic polynomial F (x) = ax2 + bx + B (mod p; represents the remainder when divided by p); where n represents the number of divisions Is assumed to be 4, and k representing the number that can be restored is assumed to be 3}. Here, B is the original data, and F (x) is the divided data. a, b, and p are arbitrarily determined when the original data B is divided. However, p is a prime number larger than a, b, and B.
このとき、クライアント2の分割データ生成処理により、分割データF(1)〜F(4){上記分割データD(1)〜D(4)に対応}は、次式(1)〜(4)のように作成される。
At this time, the divided data F (1) to F (4) {corresponding to the divided data D (1) to D (4)} is expressed by the following equations (1) to (4) by the divided data generation processing of the
F(1)=a+b+B(mod p) ・・・(1)
F(2)=4a+2b+B(mod p) ・・・(2)
F(3)=9a+3b+B(mod p) ・・・(3)
F(4)=16a+4b+B(mod p) ・・・(4)
この分割データF(1)〜F(4)の内、k=3以上の分割データ{例えば、F(1)、F(2)、F(4)}が集まれば、この分割データ
F(1)=a+b+B(mod p) ・・・(1)
F(2)=4a+2b+B(mod p) ・・・(2)
F(4)=16a+4b+B(mod p) ・・・(4)
を連立して元データBを求めることができる。
F (1) = a + b + B (mod p) (1)
F (2) = 4a + 2b + B (mod p) (2)
F (3) = 9a + 3b + B (mod p) (3)
F (4) = 16a + 4b + B (mod p) (4)
Among the divided data F (1) to F (4), if divided data of k = 3 or more {for example, F (1), F (2), F (4)} is collected, the divided data F (1 ) = A + b + B (mod p) (1)
F (2) = 4a + 2b + B (mod p) (2)
F (4) = 16a + 4b + B (mod p) (4)
To obtain the original data B.
そして、k−1以下の分割データが集まっても、元データBを復元することはできない。 And even if the divided data of k-1 or less gather, the original data B cannot be restored.
なお、元データBが長いデータ列である場合には、クライアント2は、例えば元データBの先頭から1バイト毎にF(1)からF(4)を順次作成して分割データD(1)(F(1))〜D(4)(F(4))を作成する。
When the original data B is a long data string, the
そして、クライアント2は、通信部17の機能として、作成した分割データD(1)〜D(4)を保管サーバ3a1〜3a4にネットワークNを介してそれぞれ送信する(ステップS3)。
Then, the
各保管サーバ3a1〜3a4は、ネットワークNを介して送信されてきた分割データD(1)〜D(4)を、それぞれのハードディスク等の記憶装置に記憶する(ステップS5)。 Each storage server 3a1 to 3a4 stores the divided data D (1) to D (4) transmitted via the network N in a storage device such as a hard disk (step S5).
このようにして、元データBを、そのハッシュ値Hを含んで分割された分割データD(1)〜D(4)として保管サーバ3a1〜3a4に保管することができる。 In this way, the original data B can be stored in the storage servers 3a1 to 3a4 as the divided data D (1) to D (4) divided including the hash value H.
次に、保管サーバ3a1〜3a4に保管された分割データD(1)〜D(4)が改竄されているか否かを確認する場合、クライアント2は、分割データD(1)〜D(4)のダウンロード要求を保管サーバ3a1〜3a4にそれぞれ送信する(ステップS10)。
Next, when confirming whether or not the divided data D (1) to D (4) stored in the storage servers 3a1 to 3a4 has been falsified, the
各保管サーバ3a1〜3a4は、送信されてきたダウンロード要求に応じて、それぞれのハードディスク等の記憶装置に保管された各分割データD(1)〜D(4)を各記憶装置から読み出し、読み出した各分割データD(1)〜D(4)をネットワークNを介してクライアント2に送信する(ステップS11)。
Each of the storage servers 3a1 to 3a4 reads and reads the respective divided data D (1) to D (4) stored in each storage device such as a hard disk from each storage device in response to the transmitted download request. Each divided data D (1) to D (4) is transmitted to the
クライアント2は、データ原本性確保用プログラムPに従って動作し、元データ復元部15の機能として、ネットワークNを介して送信されてきた分割データD(1)〜D(4)を受信し、受信した分割データD(1)〜D(4)に基づいて秘密分散法により元データB1およびハッシュ値H1をそれぞれ復元する(ステップS12)。
The
次いで、クライアント2は、元データ復元部15の機能として、復元した元データB1からハッシュ値H2を再生成し、再生成したハッシュ値H2と復元したハッシュ値H1とを比較して一致するか否かを確認する(ステップS13)。
Next, as a function of the original
このステップS12およびS13の処理を具体的に説明する。 The processing of steps S12 and S13 will be specifically described.
例えば、上記分割データF(1)、F(2)、F(3)、F(4)の内、一部の分割データが改竄{例えば、F(2)〜F(4)がFa(2)〜Fa(4)に改竄}されたと仮定する。 For example, some of the divided data F (1), F (2), F (3), and F (4) are altered {for example, F (2) to F (4) are Fa (2 ) To Fa (4)}.
このとき、クライアント2は、下式
F(1) =a+b+B(mod p) ・・・(1)
Fa(2)=4a+2b+B(mod p) ・・・(2)
Fa(3)=9a+3b+B(mod p) ・・・(3)
Fa(4)=16a+4b+B(mod p)・・・(4)
の中から少なくとも3つの式を連立させてハッシュ値Hを含む元データBを復元することになる。
At this time, the
Fa (2) = 4a + 2b + B (mod p) (2)
Fa (3) = 9a + 3b + B (mod p) (3)
Fa (4) = 16a + 4b + B (mod p) (4)
The original data B including the hash value H is restored by combining at least three expressions from among the two.
しかしながら、分割データF(2)〜F(4)が分割データFa(2)〜Fa(4)に改竄されているため、この分割データFa(2)〜Fa(4)を連立しても、復元された元データB1は、原本性確保対象となる元データBとは異なるため、その元データB1から再生成されたハッシュ値H2も、復元されたハッシュ値H1とは異なる。この結果、保管サーバ3a1〜3a4に保管されている分割データD(1)〜D(4)の少なくとも一部が改竄されていることをクライアント2側において確認することができる。
However, since the divided data F (2) to F (4) are altered to the divided data Fa (2) to Fa (4), even if the divided data Fa (2) to Fa (4) are combined, Since the restored original data B1 is different from the original data B that is the object of securing the originality, the hash value H2 regenerated from the original data B1 is also different from the restored hash value H1. As a result, it is possible to confirm on the
以上述べたように、本実施形態によれば、元データBを、秘密分散法を用いて複数の分割データD(1)〜D(4)に分割して保管サーバ3a1〜3a4にそれぞれ保管しているため、その分割データD(1)〜D(4)の内の少なくとも一部が改竄された場合でも、改竄データを含む分割データD(1)〜D(4)から、その分割データD(1)〜D(4)に対する改竄の有無を容易に確認することができる。 As described above, according to the present embodiment, the original data B is divided into a plurality of divided data D (1) to D (4) using the secret sharing method and stored in the storage servers 3a1 to 3a4, respectively. Therefore, even when at least a part of the divided data D (1) to D (4) is falsified, the divided data D is divided from the divided data D (1) to D (4) including the falsified data. The presence or absence of tampering with respect to (1) to D (4) can be easily confirmed.
この結果、例えば元データBを長期間に亘って保管する場合であっても、電子署名のように、電子証明書の再発行処理および電子署名付きデータ作成処理を繰り返し行うことなく、簡易に元データBを保管することができる。 As a result, for example, even when the original data B is stored for a long period of time, it is possible to easily perform the original data without repeating the reissue process of the electronic certificate and the data creation process with the electronic signature as in the case of the electronic signature. Data B can be stored.
また、本実施形態によれば、元データBを分割データD(1)〜D(4)に分割して保管サーバ3a1〜3a4に保管しているため、例えば、分割データD(1)〜D(4)の内の1つの分割データが改竄された場合でも、残りの分割データを用いて元データBを復元することができる。 Further, according to the present embodiment, the original data B is divided into divided data D (1) to D (4) and stored in the storage servers 3a1 to 3a4. For example, the divided data D (1) to D Even when one divided data in (4) is falsified, the original data B can be restored using the remaining divided data.
この結果、元データBの原本性をより確実に確保することができる。 As a result, the originality of the original data B can be ensured more reliably.
(第2の実施の形態)
図4は、本発明の第2の実施の形態に係わるデータ原本性確保システムにおけるデータ原本性確保用プログラムに基づく原本性確保処理の一例を示す概略フローチャートである。なお、本実施の形態におけるデータ原本性確保システムの構成については、そのデータ原本性確保用プログラムの内容およびクライアントの処理が異なり、他の構成については、図1に示す構成と略同等であるため、その説明は省略する。
(Second Embodiment)
FIG. 4 is a schematic flowchart showing an example of an originality ensuring process based on a data originality ensuring program in the data originality ensuring system according to the second embodiment of the present invention. Note that the configuration of the data originality ensuring system in the present embodiment is different in the contents of the data originality ensuring program and the processing of the client, and the other configurations are substantially the same as the configuration shown in FIG. The description is omitted.
本実施の形態において、クライアント2は、分割データ生成部13の機能として、メモリ10に記憶された、原本性を確保して保管したい元データBをメモリ10から読み込み、読み込んだ元データBを秘密分散法を用いて4つのデータ(分割データ)D(1)〜D(4)に分割する(ステップS21)。
In the present embodiment, the
なお、ステップS21の処理は、ステップS2の処理と略同等である。 Note that the process of step S21 is substantially the same as the process of step S2.
次いで、クライアント2は、通信部17の機能として、作成した分割データD(1)〜D(4)を保管サーバ3a1〜3a4にネットワークNを介してそれぞれ送信する(ステップS22)。
Next, as a function of the
各保管サーバ3a1〜3a4は、ネットワークNを介して送信されてきた分割データD(1)〜D(4)を、それぞれのハードディスク等の記憶装置に記憶する(ステップS23)。 Each storage server 3a1 to 3a4 stores the divided data D (1) to D (4) transmitted via the network N in a storage device such as a hard disk (step S23).
このようにして、元データBを、分割データD(1)〜D(4)として保管サーバ3a1〜3a4に保管することができる。 In this way, the original data B can be stored in the storage servers 3a1 to 3a4 as the divided data D (1) to D (4).
次に、保管サーバ3a1〜3a4に保管された分割データD(1)〜D(4)が改竄されているか否かを確認する場合、クライアント2は、分割データD(1)〜D(4)のダウンロード要求を保管サーバ3a1〜3a4にそれぞれ送信する(ステップS30)。
Next, when confirming whether or not the divided data D (1) to D (4) stored in the storage servers 3a1 to 3a4 has been falsified, the
各保管サーバ3a1〜3a4は、送信されてきたダウンロード要求に応じて、それぞれのハードディスク等の記憶装置に保管された各分割データD(1)〜D(4)を、その記憶装置から読み出し、読み出した各分割データD(1)〜D(4)をネットワークNを介してクライアント2に送信する(ステップS31)。
Each of the storage servers 3a1 to 3a4 reads out and reads each of the divided data D (1) to D (4) stored in the storage device such as the hard disk from the storage device in response to the transmitted download request. The divided data D (1) to D (4) are transmitted to the
クライアント2は、元データ復元部15の機能として、ネットワークNを介して送信されてきた分割データD(1)〜D(4)を受信し、受信した分割データD(1)〜D(4)を秘密分散法により異なる組合せにより組み合わせて複数の元データB1〜Bm(本実施の形態では、m=2)を復元し、復元した元データB1〜B2が互いに一致するか否かを確認する(ステップS32)。
The
このステップS32の処理を具体的に説明する。 The process of step S32 will be specifically described.
クライアント2は、上記分割データF(1)、F(2)、F(3)、F(4)の内、例えば、所定の組合せ、例えば分割データF(1)〜F(3)を用いて秘密分散法により元データB1を復元し、次いで、上記組合せとは異なる組合せ、例えば、分割データF(2)〜F(4)を用いて秘密分散法により元データB2を復元する。
The
このとき、上記分割データF(1)〜F(4)の内の一部に改竄が発生した場合、上述したように、復元された元データB1およびB2は、原本性確保対象となる元データBとは異なり、かつ元データB1およびB2は分割データF(1)〜F(4)を互いに異なる組合せにより組み合わせているため、復元した元データB1およびB2は互いに異なる。 At this time, when falsification occurs in a part of the divided data F (1) to F (4), as described above, the restored original data B1 and B2 are the original data to be secured for originality. Unlike B, and the original data B1 and B2 combine the divided data F (1) to F (4) in different combinations, the restored original data B1 and B2 are different from each other.
したがって、クライアント2は、復元した元データB1および元データB2との不一致により、保管サーバ3a1〜3a4に保管されている分割データD(1)〜D(4)の少なくとも一部が改竄されていることをクライアント2側において確認することができる。
Therefore, in the
なお、本実施の形態では、分割データF(1)〜F(4)の中から異なる組合せとして、分割データF(1)〜F(3)と分割データF(2)〜F(4)とをそれぞれ選択したが、本発明はこの組合せに限定されるものではなく、4つの分割データD(1)〜D(4)それぞれが少なくとも1回復元に使用される複数の組合せを選択すればよく、互いの組合せに基づいて復元された元データが一致しているか否かを確認することができる。 In the present embodiment, divided data F (1) to F (3) and divided data F (2) to F (4) are combined as different combinations from the divided data F (1) to F (4). However, the present invention is not limited to this combination, and it is sufficient to select a plurality of combinations in which each of the four divided data D (1) to D (4) is used at least once for restoration. It is possible to confirm whether or not the original data restored based on the combination of each other matches.
(第3の実施の形態)
図5は、本発明の第3の実施の形態に係わるデータ原本性確保システム4の概略構成を示すブロック図である。
(Third embodiment)
FIG. 5 is a block diagram showing a schematic configuration of a data originality ensuring system 4 according to the third embodiment of the present invention.
図5に示すように、データ原本性確保システム4は、インターネット等の通信用ネットワークNに対して接続して通信できる端末5および分割装置6と、ネットワークNに対して通信可能に接続されており、互いにハードウェア的に独立した複数(本実施の形態では3とする)のデータ保管用サーバコンピュータ(以下、単に保管サーバとする)3a1〜3a3とを備えている。そして、上記システム構成により、分割装置6は、ネットワークNを介して端末5からのデータ保管要求に応じてデータを複数の分割データに分割し、この分割した複数の分割データをネットワークNを介して複数の保管サーバ3a1〜3a3に保管するようになっている。尚、端末5と分割装置6との間の通信、および分割装置6と各保管サーバ3a1〜3a3との間の通信は、通信内容の漏洩を防止するため、SSL(Secure Socket Layer)、IP−VPN(Virtual Private Network)などにより、通信データが暗号化されている。
As shown in FIG. 5, the data originality ensuring system 4 is communicably connected to a network N and a
端末5および分割装置6は、演算処理部であるCPU、このCPUに接続され該CPUおよびネットワークN間の通信を可能にするインタフェース、CPUに接続されたデータ入力用の入力部およびCPUに接続されたメモリをそれぞれ備えている。
The
端末5は、利用者が原本性を確保して保管するデータ{例えば、M(Mは自然数)バイトのデジタルデータ;以下、元データとも呼ぶ}Bを分割装置6に送信するとともに、保管したデータを分割装置6から受信するデータ送受信部31を備えている。
The
分割装置6のメモリ10には、端末5から送信された元データBが格納される。また、メモリ10には、分割装置6(そのCPU)が読み取り可能であり、後述する図6および図7に示すデータ原本性確保処理を分割装置6(そのCPU)に実行させるためのデータ原本性確保用プログラムP3が搭載されている。
The
なお、このデータ原本性確保用プログラムP3は、磁気メモリや半導体メモリ等の各種記録媒体に搭載され、必要に応じてその記録媒体から分割装置6に読み出されてメモリにロードされるように構成することも可能である。 The data originality ensuring program P3 is mounted on various recording media such as a magnetic memory and a semiconductor memory, and is read from the recording medium to the dividing device 6 and loaded into the memory as necessary. It is also possible to do.
分割装置6は、データ原本性確保用プログラムP3により実現される機能として、メモリ10に格納された元データBから、その元データBをユニークに識別できる例えばハッシュ値Hを生成するとともに、後述するハッシュ値h1〜h3を生成するハッシュ値生成部32と、元データBおよびハッシュ値Hを含むデータを後述する秘密分散法(第1および第2の実施の形態とは異なる秘密分散法)Sを用いて分割して分割データ(以下、分割データ本体ともよぶ)D(1)〜D(3)(本実施形態では、分割数を3とする)を生成するとともに、該分割データ本体D(1)〜D(3)、ヘッダ情報、および分割データ本体とヘッダ情報の内容全体から生成されたハッシュ値h1〜h3から構成された分割データ(以下、送信分割データともよぶ)DD(1)〜DD(3)を生成する分割データ生成部33と、分割データ本体D(1)〜D(3)を生成する際に用いられる乱数データを発生させる乱数発生部34と、保管サーバ3a1〜3a3から取得した分割データ本体D(1)〜D(3)およびそのヘッダ情報からハッシュ値h1〜h3を再生成するとともに、復元された元データBからハッシュ値Hを再生成し、データの真正性を確認するハッシュ値確認部35と、分割データ本体D(1)〜D(3)から元データBおよびハッシュ値Hを秘密分散法Sを用いて生成する元データ復元部36と、元データBおよび送信分割データDD(1)〜DD(3)をネットワークNを介して送受信するデータ送受信部37とを備えている。
As a function realized by the data originality ensuring program P3, the dividing device 6 generates, for example, a hash value H that can uniquely identify the original data B from the original data B stored in the
各保管サーバ3a1〜3a3は、演算処理部であるCPU、このCPUに接続され該CPUおよびネットワークN間の通信を可能にするインタフェース、CPUに接続されたデータ入力用の入力部およびCPUに接続されたメモリおよびハードディスク等の記憶装置をそれぞれ備えている。 Each of the storage servers 3a1 to 3a3 is connected to a CPU which is an arithmetic processing unit, an interface connected to the CPU and enabling communication between the CPU and the network N, an input unit for data input connected to the CPU, and the CPU. And storage devices such as a memory and a hard disk.
次に、本実施の形態に係わるデータ原本性確保システム4の全体処理を図6および図7を用いて説明する。ここで、図6は、本実施の形態におけるデータ原本性確保用プログラムP3に基づくデータ原本性確保処理を示すフローチャートであり、図7は、図6に示すデータ原本性確保処理のデータシーケンスである。 Next, the entire process of the data originality ensuring system 4 according to the present embodiment will be described with reference to FIGS. Here, FIG. 6 is a flowchart showing a data originality ensuring process based on the data originality ensuring program P3 in the present embodiment, and FIG. 7 is a data sequence of the data originality ensuring process shown in FIG. .
図6および図7に示すように、利用者が保管したい元データBを指定し、端末5から分割装置6に該元データBを送信すると、分割装置6は、データ原本性確保用プログラムP3に従って動作し、ハッシュ値生成部32の機能として、メモリ10に記憶された、原本性を確保して保管したい元データBをメモリ10から読み込み、読み込んだ元データBを、所定のハッシュ関数を用いてその元データBのハッシュ値Hを生成する(ステップS101,S102)。
As shown in FIGS. 6 and 7, when the user specifies the original data B that the user wants to store and transmits the original data B from the
このハッシュ値Hは、その元データBが1ビットでも変更されると全く異なる値を示す性質、すなわち、元データBをユニークに識別できる性質を有している。 This hash value H has the property of showing a completely different value when the original data B is changed even by 1 bit, that is, the property of uniquely identifying the original data B.
次いで、分割装置6は、分割データ生成部33の機能として、生成したハッシュ値Hを含む元データBを秘密分散法Sを用いて3つのデータ(分割データ)D(1)〜D(3)に分割する(ステップS103)。そして、各分割データD(i)(i=1,2,3)について、図8に示す形式のデータ、即ち、ハッシュ値hi(i=1,2,3)、データ分割に関する管理情報を含むヘッダ情報Ai(i=1,2,3)、および分割データD(i)(i=1,2,3)から構成される送信分割データDD(i)を生成する(ステップS104,S105)。
Next, the dividing device 6 uses the secret sharing method S to convert the original data B including the generated hash value H into three data (divided data) D (1) to D (3) as a function of the divided
ここで、ハッシュ値hiは、ハッシュ値生成部32の機能として、ヘッダ情報Aiおよび分割データD(i)を合わせた内容全体から、所定のハッシュ関数を用いて生成されるものである。尚、ヘッダ情報Aiのデータ識別子Ai1には、本実施の形態の秘密分散法Sにより分割されたデータであることを示す情報、バージョン情報Ai2には、データフォーマットのバージョンを識別する情報、およびヘッダサイズAi3には、元データサイズから分割データサイズまでの領域の合計データの長さを示す情報が格納されるようになっている。また、元データサイズAi4は、元データ(ハッシュ値Hを含む元データB)の長さを示す情報、分割数Ai5には、データの分割数(本実施の形態においては3)を示す情報、および処理単位ビット長Ai6には、秘密分散法Sによる分割処理において用いられる後述する処理単位ビット長を示す情報が格納されるようになっている。また、乱数データサイズAi7には、秘密分散法Sによる分割処理において用いられる乱数データの長さを示す情報、分割データタイプAi8には、いくつ目の分割データであるかを示す情報(例えば、3分割の場合は、分割データがD(1),D(2),D(3)のいずれかであるかを示す情報)、および分割データサイズAi9には、分割データD(i)の長さを示す情報が格納されるようになっている。
Here, the hash value hi is generated as a function of the hash
そして、分割装置6は、データ送受信部37の機能として、作成した送信分割データDD(1)〜DD(3)を保管サーバ3a1〜3a3にネットワークNを介してそれぞれ送信する(ステップS106)。 Then, the dividing device 6 transmits the created transmission divided data DD (1) to DD (3) to the storage servers 3a1 to 3a3 via the network N as functions of the data transmitting / receiving unit 37 (step S106).
各保管サーバ3a1〜3a3は、ネットワークNを介して送信されてきた送信分割データDD(1)〜DD(3)を、それぞれのハードディスク等の記憶装置に記憶する(ステップS107)。 Each of the storage servers 3a1 to 3a3 stores the transmission divided data DD (1) to DD (3) transmitted via the network N in a storage device such as a hard disk (step S107).
このようにして、元データBをそのハッシュ値Hを含んで分割した分割データD(1)〜D(3)、ヘッダ情報A1〜A3、およびハッシュ値h1〜h3から構成される送信分割データDD(1)〜DD(3)をそれぞれ保管サーバ3a1〜3a3に保管することができる。 In this way, transmission divided data DD composed of divided data D (1) to D (3) obtained by dividing the original data B including the hash value H, header information A1 to A3, and hash values h1 to h3. (1) to DD (3) can be stored in the storage servers 3a1 to 3a3, respectively.
次に、保管サーバ3a1〜3a3に保管された送信分割データDD(1)〜DD(3)を取り出す場合には、利用者が取り出したい元データBを指定し、端末5から分割装置6に取り出し指示を送信すると、分割装置6は、送信分割データDD(1)〜DD(3)のダウンロード要求を保管サーバ3a1〜3a3にそれぞれ送信する(ステップS108,S109)。
Next, when the transmission divided data DD (1) to DD (3) stored in the storage servers 3a1 to 3a3 are taken out, the original data B that the user wants to take out is specified and taken out from the
各保管サーバ3a1〜3a3は、送信されてきたダウンロード要求に応じて、それぞれのハードディスク等の記憶装置に保管された各送信分割データDD(1)〜DD(3)を各記憶装置から読み出し、読み出した各送信分割データDD(1)〜DD(3)をネットワークNを介して分割装置6に送信する(ステップS110)。 Each of the storage servers 3a1 to 3a3 reads out each read divided data DD (1) to DD (3) stored in a storage device such as a hard disk from each storage device in response to the transmitted download request. Each transmission division data DD (1) to DD (3) is transmitted to the division device 6 via the network N (step S110).
分割装置6は、データ原本性確保用プログラムP3に従って動作し、ハッシュ値確認部35の機能として、ネットワークNを介して送信されてきた送信分割データDD(1)〜DD(3)を受信し、受信した送信分割データDD(1)〜DD(3)の分割データ本体D(1)〜D(3)およびヘッダ情報A1〜A3からハッシュ値h1’〜h3’を再生成する(ステップS111)。そして、再生成されたハッシュ値h1’〜h3’と受信した送信分割データDD(1)〜DD(3)のハッシュ値h1〜h3とを比較して一致するか否かを確認する(ステップS112)。これにより、各保管サーバ3a1〜3a3から取得したデータの内容が欠落したり、改竄されていないことを確認することができる。
The dividing device 6 operates according to the data originality ensuring program P3, receives the transmission divided data DD (1) to DD (3) transmitted via the network N as a function of the hash
次に、ステップS112でハッシュ値が一致する送信分割データDD(1)〜DD(3)が少なくとも2以上ある場合には、元データ復元部36の機能として、分割データD(1)〜D(3)およびヘッダ情報A1〜A3に基づいて秘密分散法Sにより元データB1およびハッシュ値H1をそれぞれ復元する(ステップS113)。これは、保管サーバ3a1〜3a3から分割データを取得できない場合やハッシュ値の一致が確認できない場合があっても、データが取得でき、ハッシュ値の一致が確認できたものがデータの復元に必要な個数以上(本実施の形態においては、後述するように2つ以上)あった場合には、後続処理(データ復元処理)を行うものである。
Next, when there are at least two transmission divided data DD (1) to DD (3) having the same hash value in step S112, the original
次いで、分割装置6は、ハッシュ値確認部35の機能として、復元した元データB1からハッシュ値H2を再生成し、再生成したハッシュ値H2と復元したハッシュ値H1とを比較して一致するか否かを確認する(ステップS114,S115)。これにより、復元された元データBおよびハッシュ値Hの内容が欠落したり、改竄されていないことを確認することができる。また、ヘッダ情報A1〜A3および分割データ本体D(1)〜D(3)の内容を改竄した後、改竄した内容に合わせてハッシュ値h1〜h3を算出し、書き換えた場合においても(この場合、ステップS112においてハッシュ値は一致してしまう)、改竄を検出をすることが可能となる。
Next, the dividing device 6 regenerates the hash value H2 from the restored original data B1 as a function of the hash
そして、分割装置6は、復元された元データBをネットワークNを介して端末5に送信し、これにより、端末5は元データBを取得する(ステップS116,S117)。
Then, the dividing device 6 transmits the restored original data B to the
ここで、本実施の形態における秘密分散法Sについて詳しく説明する。尚、以後の説明における元データとは、データ分割の対象となる元データ、即ち、本実施の形態においては、ハッシュ値生成部33で生成されたハッシュ値Hを含む元データBをいう。
Here, the secret sharing method S in the present embodiment will be described in detail. Note that the original data in the following description refers to original data that is a target of data division, that is, original data B that includes the hash value H generated by the hash
本実施形態における元データの分割および復元では、元データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するが、この場合の処理単位ビット長は任意の値に設定することができ、元データを処理単位ビット長毎に区分けして、この元部分データから分割部分データを分割数より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)個の乱数部分データとして乱数発生部34から生成される。すなわち、乱数は処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の乱数部分データとして生成される。更に、元データは処理単位ビット長に基づいて所望の分割数の分割データに分割されるが、この分割データの各々も(分割数-1)個の元部分データの各々に対応して処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。すなわち、分割データの各々は、処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。
The random numbers described above are also generated from the
なお、以下の説明では、上述した元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれB,R,D,nおよびbで表すとともに、また複数のデータや乱数などのうちの1つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用い、(分割数n-1)個の元部分データ、(分割数n-1)個の乱数部分データ、および分割数n個の分割データDのそれぞれのうちの1つをそれぞれB (j),R(j)およびD(i)で表記し、更に各分割データD(i)を構成する複数(n-1)の分割部分データをD(i,j)で表記するものとする。すなわち、B (j)は、元データBの先頭から処理単位ビット長毎に区分けして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 B, 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 B (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, B (j) represents the j-th original partial data when the original data B is numbered in order from the top by dividing the processing unit bit length from the top.
この表記を用いると、元データ、乱数データ、分割データとこれらをそれぞれ構成する元部分データ、乱数部分データ、分割部分データは、次のように表記される。 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.
元データB=(n-1)個の元部分データB(j)
=B(1),B(2),…,B(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)からなる定義式を用いて、元データの分割を行うことを特徴とするものであり、上述したデータ分割処理に多項式や剰余演算を用いる方法(第1および第2の実施の形態における方法)に比較して、コンピュータ処理に適したビット演算である排他的論理和(XOR)演算を用いることにより高速かつ高性能な演算処理能力を必要とせず、大容量のデータに対しても簡単な演算処理を繰り返して分割データを生成することができるとともに、また分割データの保管に必要となる記憶容量も分割数に比例した倍数の容量よりも小さくすることができる。更に、任意に定めた一定の長さ毎にデータの先頭から順に演算処理を行うストリーム処理により分割データが生成される。
Original data B = (n-1) original partial data B (j)
= B (1), B (2), ..., B (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, and a method of using a polynomial or a remainder operation for the above data division processing Compared to the (methods in the first and second embodiments), the use of exclusive OR (XOR) operation, which is a bit operation suitable for computer processing, requires high-speed and high-performance processing capability. In addition, it is possible to generate divided data by repeating simple arithmetic processing even for large-capacity data, and the storage capacity required for storing the divided data is a multiple that is proportional to the number of divisions. It can be made smaller than that. 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
It is mathematically proved that (a * b) * c = a * (b * c) holds.
また、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”.
次に、フローチャートなどの図面も参照して、本実施の形態における秘密分散法Sの作用について説明するが、この説明の前に図9乃至12のフローチャートに示す記号の定義について説明する。 Next, the operation of the secret sharing method S according to the present embodiment will be described with reference to drawings such as flowcharts. Prior to this description, definitions of symbols shown in the flowcharts of FIGS. 9 to 12 will be described.
(1)Πi=1nA(i)は、A(1)*A(2)*…A(n)を意味するものとする。 (1) Πi = 1nA (i) 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 (n-1) × (n-1) matrix U [n-1, n-1] × (P [n-1, n-1]) ^ It is defined as the value of i row and k column 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
(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
である行列を意味するものとし、「上三角行列」ということとする。具体的には下記のような行列である。
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
(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.
(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を他の行列に右側から複数回かけると、その回数分だけ各列を右方向へ回転させるように移動させることができる。
(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
p (i, j) = 1 when i = n, 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.
(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
となる性質がある。
(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.
次に、図9に示すフローチャートおよび図10および図11に示す具体的データなどを参照して、まず元データBの分割処理について説明する。
Next, with reference to the flowchart shown in FIG. 9 and the specific data shown in FIGS. 10 and 11, the division process of the original data B will be described first.
まず、元データBを分割装置6に供給する(図9のステップS201)。なお、本例では、元データBは、16ビットの「10110010 00110111」とする。 First, the original data B is supplied to the dividing device 6 (step S201 in FIG. 9). In this example, the original data B is 16 bits “10110010 00110111”.
次に、利用者は端末5から分割数nとして3を分割装置6に指示する(ステップS203)。この分割数nは分割装置6において予め定められた値を用いてもよい。なお、この分割数n=3に従って分割装置6で生成される3個の分割データをD(1),D(2),D(3)とする。この分割データD(1),D(2),D(3)は、すべて元データのビット長と同じ16ビット長のデータである。 Next, the user instructs the dividing device 6 to 3 as the division number n from the terminal 5 (step S203). A predetermined value in the dividing device 6 may be used as the division number n. Note that the three pieces of divided data generated by the dividing device 6 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.
それから、元データBを分割するために使用される処理単位ビット長bを8ビットと決定し、また元データと同じビット長である16ビットの乱数Rを乱数発生部34から取得して生成する(ステップS205)。この処理単位ビット長bは、利用者が端末5から分割装置6に対して指定してもよいし、または分割装置6において予め定められた値を用いてもよい。なお、処理単位ビット長bは、任意のビット数でよいが、ここでは元データBを割り切れることができる8ビットとしている。従って、上記16ビットの「10110010 00110111」の元データBは、8ビットの処理単位ビット長で区分けされた場合の2個の元分割データB(1)およびB(2)は、それぞれ「10110010」および「00110111」となる。
Then, the processing unit bit length b used to divide the original data B is determined to be 8 bits, and a 16-bit random number R having the same bit length as the original data is obtained from the
次のステップS207では、元データBのビット長が8×2の整数倍であるか否かを判定し、整数倍でない場合には、元データBの末尾を0で埋めて、8×2の整数倍に合わせる。なお、本例のように処理単位ビット長bが8ビットおよび分割数nが3に設定された場合における分割処理は、元データBのビット長として16ビットに限られるものでなく、処理単位ビット長b×(分割数n-1)=8×2の整数倍の元データBに対して有効なものである。 In the next step S207, it is determined whether or not the bit length of the original data B is an integer multiple of 8 × 2, and if it is not an integer multiple, the end of the original data B is padded with zeros to obtain 8 × 2 Fit to an integer multiple. 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 B. This is effective for the original data B that is an integral multiple of length b × (number of divisions n−1) = 8 × 2.
次に、ステップS209では、変数m、すなわち上述した整数倍を意味する変数mを0に設定する。本例のように、元データBが処理単位ビット長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 B 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.
次に、元データBの8×2×m+1ビット目から8×2ビット分のデータが存在するか否かが判定される(ステップS211)。これは、このステップS211以降に示す分割処理を元データBの変数mで特定される処理単位ビット長b×(分割数n-1)=8×2=16ビットに対して行った後、元データBとして次の16ビットがあるか否かを判定しているものである。本例のように元データBが16ビットである場合には、16ビットの元データBに対してステップS211以降の分割処理を1回行うと、後述するステップS219で変数mが+1されるが、本例の元データBでは変数mがm+1の場合に相当する17ビット以降のデータは存在しないので、ステップS211からステップS221に進むことになるが、今の場合は、変数mは0であるので、元データBの8×2×m+1ビット目は、8×2×0+1=1となり、元データBの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 B (step S211). This is because the division processing shown in step S211 and subsequent steps 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 B, Whether data B has the next 16 bits or not is determined. In the case where the original data B is 16 bits as in this example, if the dividing process after step S211 is performed once on the 16-bit original data B, the variable m is incremented by 1 in step S219 described later. However, in the original data B in this example, there is no data of 17 bits or later 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 B becomes 8 × 2 × 0 + 1 = 1, and the data is 8 × 2 bits from the first 16 bits of the original data B. Since it exists, it progresses to step S213.
ステップS213では、変数jを1から2(=分割数n-1)まで変えて、元データBの8×(2×m+j-1)+1ビット目から8ビット分(=処理単位ビット長)のデータを元部分データB(2×m+j)に設定し、これにより元データBを処理単位ビット長で区分けした2(分割数n-1)個の元部分データB(1),B(2)を次のように生成する。 In step S213, the variable j is changed from 1 to 2 (= number of divisions n−1), and 8 bits from the 8 × (2 × m + j−1) +1 bit of the original data B (= processing unit bits) 2) (partition number n-1) original partial data B (1) obtained by dividing the original data B by the processing unit bit length. , B (2) is generated as follows.
元データB=B(1),B(2)
第1の元部分データB(1)=「10110010」
第2の元部分データB(2)=「00110111」
次に、変数jを1から2(=分割数n-1)まで変えて、乱数部分データR(2×m+j)に乱数発生部34から発生する8ビットの長さの乱数を設定し、これにより乱数Rを処理単位ビット長で区分けした2(分割数n-1)個の乱数部分データR(1),R(2)を次のように生成する(ステップS215)。
Original data B = B (1), B (2)
First original partial data B (1) = “10110010”
Second original partial data B (2) = “00110111”
Next, the variable j is changed from 1 to 2 (= number of divisions n-1), and a random number of 8 bits generated from the
乱数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」
なお、各分割部分データ(i,j)を生成するためのステップS217に示す定義式は、本例のように分割数n=3の場合には、具体的には図11に示す表に記載されているものとなる。図11に示す表から、分割部分データD(1,1)を生成するための定義式はB(1)*R(1)*R(2)であり、D(1,2)の定義式はB(2)*R(1)*R(2)であり、D(2,1)の定義式はB(1)*R(1)であり、D(2,2)の定義式はB(2)*R(2)であり、D(3,1)の定義式はR(1)であり、D(3,2)の定義式はR(2)である。また、図11に示す表には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 (i, j) is specifically described in the table shown in FIG. 11 when the number of divisions n = 3 as in this example. Will be. From the table shown in FIG. 11, the definition formula for generating the divided partial data D (1,1) is B (1) * R (1) * R (2), and the definition formula for D (1,2) Is B (2) * R (1) * R (2), D (2,1) is defined as B (1) * R (1), and D (2,2) is defined as B (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. 11 also describes general definition formulas for arbitrary integers when m> 0.
このように整数倍を意味する変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS219)、ステップS211に戻り、変数m+1に該当する元データBの17ビット以降について同様の分割処理を行おうとするが、本例の元データBは16ビットであり、17ビット以降のデータは存在しないので、ステップS211からステップS221に進み、上述したように生成した分割データD(1),D(2),D(3)を分割装置6のメモリ10に一時保存して、分割処理を終了する。なお、このように保管された分割データD(1),D(2),D(3)はそれぞれ単独では元データが推測できない。
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 B corresponding to the variable m + 1 However, since the original data B 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), and D (3) are temporarily stored in the
ここで、上述した図9のフローチャートのステップS217における定義式による分割データの生成処理、具体的には分割数n=3の場合の分割データの生成処理について詳しく説明する。 Here, the divided data generation process based on the definition formula in step S217 in the flowchart of FIG. 9 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)=B(1)*Q(1,1,1)*Q(1,1,2)
D(1,2)=B(2)*Q(2,1,1)*Q(2,1,2)
D(2,1)=B(1)*Q(1,2,1)*Q(1,2,2)
D(2,2)=B(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)を具体的に求める。
これはc(j,i,k)を2×2行列であるU[2,2]×(P[2,2])^(j-1)のi行k列の値としたとき下記のように定義される。
D (1,1) = B (1) * Q (1,1,1) * Q (1,1,2)
D (1,2) = B (2) * Q (2,1,1) * Q (2,1,2)
D (2,1) = B (1) * Q (1,2,1) * Q (1,2,2)
D (2,2) = B (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.
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のときは
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
j=2のときは
When j = 2
これを用いると、各分割部分データ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)=B(1)*Q(1,1,1)*Q(1,1,2)=B(1)*R(1)*R(2)
D(1,2)=B(2)*Q(2,1,1)*Q(2,1,2)=B(2)*R(1)*R(2)
D(2,1)=B(1)*Q(1,2,1)*Q(1,2,2)=B(1)*R(1)*0=B(1)*R(1)
D(2,2)=B(2)*Q(2,2,1)*Q(2,2,2)=B(2)*0*R(2)=B(2)*R(2)
上述した各分割部分データD(i,j)を生成するための定義式は、図10にも図示されている。
D (1,1) = B (1) * Q (1,1,1) * Q (1,1,2) = B (1) * R (1) * R (2)
D (1,2) = B (2) * Q (2,1,1) * Q (2,1,2) = B (2) * R (1) * R (2)
D (2,1) = B (1) * Q (1,2,1) * Q (1,2,2) = B (1) * R (1) * 0 = B (1) * R (1 )
D (2,2) = B (2) * Q (2,2,1) * Q (2,2,2) = B (2) * 0 * R (2) = B (2) * R (2 )
The definition formula for generating each of the divided partial data D (i, j) is also illustrated in FIG.
図10は、上述したように16ビットの元データBを8ビットの処理単位ビット長に基づいて分割数n=3で3分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。 FIG. 10 shows the original data from the respective data and definition formulas and the divided partial data when the 16-bit original data B 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 are explained.
まず、第1の分割データD(1)に対しては、第1の分割部分データD(1,1)は、上述した定義式B(1)*R(1)*R(2)で定義され、第2の分割部分データD(1,2)は定義式B(2)*R(1)*R(2)で定義される。なお、この定義式の一般形は、D(1,j)に対してはB(j)*R(j)*R(j+1)であり、D(1,j+1)に対してB(j+1)*R(j)*R(j+1)である(jは奇数とする)。定義式に従って計算すると、D(1,1)は00110110, D(1,2)は10110011となるので、D(1)は00110110 10110011である。なお、定義式の一般形は、図11にまとめて示されている。 First, for the first divided data D (1), the first divided partial data D (1,1) is defined by the definition formula B (1) * R (1) * R (2) described above. Then, the second divided partial data D (1, 2) is defined by the definition formula B (2) * R (1) * R (2). The general form of this defining formula is B (j) * R (j) * R (j + 1) for D (1, j), and for D (1, j + 1) B (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 definition formula is collectively shown in FIG.
また、第2の分割データD(2)に対しては、D(2,1)はB(1)*R(1)で定義され、D(2,2)はB(2)*R(2)で定義される。この定義式の一般形は、D(2,j)に対してはB(j)*R(j)であり、D(2,j+1)に対してはB(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 B (1) * R (1), and D (2,2) is B (2) * R ( Defined in 2). The general form of this definition is B (j) * R (j) for D (2, j) and B (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.
上記説明は、B,R,D(1),D(2),D(3)の長さを16ビットとしたが、データの先頭から上記分割処理を繰り返すことにより、どのような長さの元データBからでも分割データD(1),D(2),D(3)を生成することができる。また、処理単位ビット長bは任意にとることができ、元データBの先頭から順にb×2の長さ毎に上記分割処理を繰り返すことにより任意の長さの元データ、具体的には処理単位ビット長b×2の整数倍の長さの元データに対して適用することができる。なお、元データBの長さが処理単位ビット長b×2の整数倍でない場合は、例えば、データ末尾の部分を0で埋めるなどして元データBの長さを処理単位ビット長b×2の整数倍に合わせることにより上述した本実施形態の分割処理を適用することができる。 In the above description, the length of B, R, D (1), D (2), and D (3) is 16 bits. However, by repeating the division process from the beginning of the data, what length Even from the original data B, the divided data D (1), D (2), and D (3) can be generated. In addition, the processing unit bit length b can be arbitrarily set, and the original data having an arbitrary length, specifically, processing is performed by repeating the above dividing process every b × 2 in order from the top of the original data B. The present invention can be applied to original data having an integral multiple of the unit bit length b × 2. If the length of the original data B is not an integer multiple of the processing unit bit length b × 2, for example, the length of the original data B is set to the processing unit bit length b × 2 by filling the end portion of the data with 0. The division processing of this embodiment described above can be applied by adjusting to an integral multiple of.
次に、図10の右側に示す表を参照して、分割データから元データを復元する処理について説明する。 Next, processing for restoring original data from divided data will be described with reference to the table shown on the right side of FIG.
まず、分割装置6に元データBの復元を要求する。分割装置6は、この元データBの復元要求を受け取ると、この元データBに対応する分割データD(1),D(2),D(3)が保管サーバ3a1,3a2,3a3に保管されていることを記憶しているので、ネットワークNを介して保管サーバ3a1,3a2,3a3から分割データD(1),D(2),D(3)を取得し、この取得した分割データD(1),D(2),D(3)から次に示すように元データBを復元する。 First, it requests the dividing device 6 to restore the original data B. When receiving the restoration request for the original data B, the dividing device 6 stores the divided data D (1), D (2), D (3) corresponding to the original data B in the storage servers 3a1, 3a2, 3a3. Therefore, the divided data D (1), D (2), D (3) are acquired from the storage servers 3a1, 3a2, 3a3 via the network N, and the acquired divided data D ( 1) Restore original data B from D (2) and D (3) as follows.
まず、分割部分データD(2,1),D(3,1)から第1の元部分データB(1)を次のように生成することができる。 First, the first original partial data B (1) can be generated from the divided partial data D (2,1) and D (3,1) as follows.
D(2,1)*D(3,1)=(B(1)*R(1))*R(1)
=B(1)*(R(1)*R(1))
=B(1)*0
=B(1)
具体的に計算すると、D(2,1)は00000011, D(3,1)は10110001なので、B(1)は10110010となる。
D (2,1) * D (3,1) = (B (1) * R (1)) * R (1)
= B (1) * (R (1) * R (1))
= B (1) * 0
= B (1)
Specifically, since D (2,1) is 00000011 and D (3,1) is 10110001, B (1) is 10110010.
また、別の分割部分データから次のように第2の元部分データB(2)を生成することができる。 Also, the second original partial data B (2) can be generated from the other divided partial data as follows.
D(2,2)*D(3,2)=(B(2)*R(2))*R(2)
=B(2)*(R(2)*R(2))
=B(2)*0
=B(2)
具体的に計算すると、D(2,2)は00000010, D(3,2)は00110101なので、B(2)は00110111となる。
D (2,2) * D (3,2) = (B (2) * R (2)) * R (2)
= B (2) * (R (2) * R (2))
= B (2) * 0
= B (2)
Specifically, since D (2,2) is 00000010 and D (3,2) is 00110101, B (2) is 00110111.
一般に、jを奇数として、
D(2,j)*D(3,j)=(B(j)*R(j))*R(j)
=B(j)*(R(j)*R(j))
=B(j)*0
=B(j)
であるから、D(2,j)*D(3,j)を計算すれば、B(j)が求まる。
In general, let j be an odd number
D (2, j) * D (3, j) = (B (j) * R (j)) * R (j)
= B (j) * (R (j) * R (j))
= B (j) * 0
= B (j)
Therefore, B (j) can be obtained by calculating D (2, j) * D (3, j).
また、一般に、jを奇数として、
D(2,j+1)*D(3,j+1)=(B(j+1)*R(j+1))*R(j+1)
=B(j+1)*(R(j+1)*R(j+1))
=B(j+1)*0
=B(j+1)
であるから、D(2,j+1)*D(3,j+1)を計算すれば、B(j+1)が求まる。
In general, j is an odd number,
D (2, j + 1) * D (3, j + 1) = (B (j + 1) * R (j + 1)) * R (j + 1)
= B (j + 1) * (R (j + 1) * R (j + 1))
= B (j + 1) * 0
= B (j + 1)
Therefore, if D (2, j + 1) * D (3, j + 1) is calculated, B (j + 1) is obtained.
次に、D(1),D(3)を取得してBを復元する場合には、次のようになる。
D(1,1)*D(3,1)*D(3,2)=(B(1)*R(1)*R(2))*R(1)*R(2) =B(1)*(R(1)*R(1))*(R(2)*R(2))
=B(1)*0*0
=B(1)
であるから、D(1,1)*D(3,1)*D(3,2)を計算すれば、B(1)が求まる。具体的に計算すると、D(1,1)は00110110, D(3,1)は10110001, D(3,2)は00110101なので、B(1)は10110010となる。
Next, when D (1) and D (3) are acquired and B is restored, it is as follows.
D (1,1) * D (3,1) * D (3,2) = (B (1) * R (1) * R (2)) * R (1) * R (2) = B ( 1) * (R (1) * R (1)) * (R (2) * R (2))
= B (1) * 0 * 0
= B (1)
Therefore, B (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, B (1) is 10110010.
また同様に、
D(1,2)*D(3,1)*D(3,2)=(B(2)*R(1)*R(2))*R(1)*R(2)
=B(2)*(R(1)*R(1))*(R(2)*R(2))
=B(2)*0*0
=B(2)
であるから、D(1,2)*D(3,1)*D(3,2)を計算すれば、B(2)が求まる。具体的に計算すると、D(1,2)は10110011, D(3,1)は10110001, D(3,2)は00110101なので、B(2)は00110111となる。
Similarly,
D (1,2) * D (3,1) * D (3,2) = (B (2) * R (1) * R (2)) * R (1) * R (2)
= B (2) * (R (1) * R (1)) * (R (2) * R (2))
= B (2) * 0 * 0
= B (2)
Therefore, if D (1,2) * D (3,1) * D (3,2) is calculated, B (2) is obtained. Specifically, since D (1,2) is 10110011, D (3,1) is 10110001, and D (3,2) is 00110101, B (2) is 00110111.
一般に、jを奇数として、
D(1,j)*D(3,j)*D(3,j+1)=(B(j)*R(j)*R(j+1))*R(j)*R(j+1)
=B(j)*(R(j)*R(j))*(R(j+1)*R(j+1))
=B(j)*0*0
=B(j)
であるから、D(1,j)*D(3,j)*D(3,j+1)を計算すれば、B(j)が求まる。
In general, let j be an odd number
D (1, j) * D (3, j) * D (3, j + 1) = (B (j) * R (j) * R (j + 1)) * R (j) * R (j +1)
= B (j) * (R (j) * R (j)) * (R (j + 1) * R (j + 1))
= B (j) * 0 * 0
= B (j)
Therefore, B (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)=(B(j+1)*R(j)*R(j+1))*R(j)*R(j+1)
=B(j+1)*(R(j)*R(j))*(R(j+1)*R(j+1))
=B(j+1)*0*0
=B(j+1)
であるから、D(1,j+1)*D(3,j)*D(3,j+1)を計算すれば、B(j+1)が求まる。
In general, j is an odd number,
D (1, j + 1) * D (3, j) * D (3, j + 1) = (B (j + 1) * R (j) * R (j + 1)) * R (j) * R (j + 1)
= B (j + 1) * (R (j) * R (j)) * (R (j + 1) * R (j + 1))
= B (j + 1) * 0 * 0
= B (j + 1)
Therefore, if D (1, j + 1) * D (3, j) * D (3, j + 1) is calculated, B (j + 1) is obtained.
次に、D(1),D(2)を取得してBを復元する場合には、次のようになる。 Next, when D (1) and D (2) are acquired and B is restored, it is as follows.
D(1,1)*D(2,1)=(B(1)*R(1)*R(2))*(B(1)*R(1))
=(B(1)*B(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) = (B (1) * R (1) * R (2)) * (B (1) * R (1))
= (B (1) * B (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)=(B(2)*R(1)*R(2))*(B(2)*R(2))
=(B(2)*B(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) = (B (2) * R (1) * R (2)) * (B (2) * R (2))
= (B (2) * B (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)を使用してB(1),B(2)を求める。 Using these R (1) and R (2), B (1) and B (2) are obtained.
D(2,1)*R(1)=(B(1)*R(1))*R(1)
=B(1)*(R(1)*R(1))
=B(1)*0
=B(1)
であるから、D(2,1)*R(1)を計算すれば、B(1)が求まる。具体的に計算すると、D(2,1)は00000011, R(1)は10110001なので、B(1)は10110010となる。
D (2,1) * R (1) = (B (1) * R (1)) * R (1)
= B (1) * (R (1) * R (1))
= B (1) * 0
= B (1)
Therefore, if D (2,1) * R (1) is calculated, B (1) is obtained. Specifically, since D (2,1) is 00000011 and R (1) is 10110001, B (1) is 10110010.
また同様に、
D(2,2)*R(2)=(B(2)*R(2))*R(2)
=B(2)*(R(2)*R(2))
=B(2)*0
=B(2)
であるからD(2,2)*R(2)を計算すればB(2)が求まる。具体的に計算するとD(2,2)は00000010, R(2)は00110101なので、B(2)は00110111となる。
Similarly,
D (2,2) * R (2) = (B (2) * R (2)) * R (2)
= B (2) * (R (2) * R (2))
= B (2) * 0
= B (2)
Therefore, B (2) can be obtained by calculating D (2,2) * R (2). Specifically, since D (2,2) is 00000010 and R (2) is 00110101, B (2) is 00110111.
一般に、jを奇数として、
D(1,j)*D(2,j)=(B(j)*R(j)*R(j+1))*(B(j)*R(j))
=(B(j)*B(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) = (B (j) * R (j) * R (j + 1)) * (B (j) * R (j))
= (B (j) * B (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)=(B(j+1)*R(j)*R(j+1))*(B(j+1)*R(j+1))
=(B(j+1)*B(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) = (B (j + 1) * R (j) * R (j + 1)) * (B (j + 1) * R (j +1))
= (B (j + 1) * B (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)を使用してB(j),B(j+1)を求める。 Using these R (j) and R (j + 1), B (j) and B (j + 1) are obtained.
D(2,j)*R(j)=(B(j)*R(j))*R(j)
=B(j)*(R(j)*R(j))
=B(j)*0
=B(j)
であるからD(2,j)*R(j)を計算すればB(j)が求まる。
D (2, j) * R (j) = (B (j) * R (j)) * R (j)
= B (j) * (R (j) * R (j))
= B (j) * 0
= B (j)
Therefore, B (j) can be obtained by calculating D (2, j) * R (j).
また同様に、
D(2,j+1)*R(j+1)=(B(j+1)*R(j+1))*R(j+1)
=B(j+1)*(R(j+1)*R(j+1))
=B(j+1)*0
=B(j+1)
であるからD(2,j+1)*R(j+1)を計算すればB(j+1)が求まる。
Similarly,
D (2, j + 1) * R (j + 1) = (B (j + 1) * R (j + 1)) * R (j + 1)
= B (j + 1) * (R (j + 1) * R (j + 1))
= B (j + 1) * 0
= B (j + 1)
Therefore, B (j + 1) can be 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のビット長を元データBのビット長よりも短いものを使用して、元データの分割処理を行うことができる。 As another method of the present invention, the original data can be divided by using the random number R having a bit length shorter than that of the original data B.
すなわち、上述した乱数RはB,D(1),D(2),D(3)と同じビット長のデータとしたが、乱数Rを元データBのビット長より短いものとし、分割データD(1),D(2),D(3)の生成にこの短いビット長の乱数Rを繰り返し用いるものである。 That is, the random number R described above is data having the same bit length as B, D (1), D (2), D (3), but the random number R is shorter than the bit length of the original data B, 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を繰り返して保管しておく必要はない。例えば、元データBのビット長を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 B 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となる。従って、保管すべきデータの総量は先の実施形態では元データBの3倍であるが、この実施形態では2.1倍とすることができる。 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 B in the previous embodiment, but can be 2.1 times in this embodiment.
乱数Rにおける繰り返し部分のデータの長さは、短すぎると、D(1)またはD(2)のみからRが解読されてしまうことも考えられるため、適切な長さを選択することが望ましい。 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.
次に、図12に示すフローチャートを参照して、分割数が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.
まず、元データBを分割装置6に供給する(ステップS401)。また、利用者は端末5から分割数n(n≧3である任意の整数)を分割装置6に指示する(ステップS403)。この分割数nは分割装置6において予め定められた値を用いてもよい。処理単位ビット長bを決定する(ステップS405)。なお、bは0より大きい任意の整数である。次に、元データBのビット長がb×(n-1)の整数倍であるか否かを判定し、整数倍でない場合には、元データBの末尾を0で埋める(ステップS407)。また、整数倍を意味する変数mを0に設定する(ステップS409)。
First, the original data B is supplied to the dividing device 6 (step S401). Further, the user instructs the dividing device 6 from the
次に、元データBのb×(n-1)×m+1ビット目からb×(n-1)ビット分のデータが存在するか否かが判定される(ステップS411)。この判定の結果、データが存在しない場合は、ステップS421に進むことになるが、今の場合は、ステップS409で変数mは0に設定された場合であるので、データが存在するため、ステップS413に進む。 Next, it is determined whether or not data of b × (n−1) bits from the b × (n−1) × m + 1 bit of the original data B exists (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まで変えて、元データBのb×(n-1)×m+j-1)+1ビット目からbビット分のデータを元部分データB((n-1)×m+j)に設定する処理を繰り返し、これにより元データBを処理単位ビット長bで区分けした(n-1)個の元部分データB(1),B(2),…B(n-1)が生成される。 In step S413, the variable j is changed from 1 to n-1, and b × (n−1) × m + j−1) +1 bit of the original data B is converted into the original partial data B ( (n-1) × m + j) is repeated, whereby (n-1) pieces of original partial data B (1), B (2) obtained by dividing the original data B by the processing unit bit length b , ... B (n-1) is generated.
次に、変数jを1からn-1まで変えて、乱数部分データR((n-1)×m+j)に乱数発生部34から発生する処理単位ビット長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
次に、ステップ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に該当する元データBのb×(n-1)ビット以降について同様の分割処理を行う。最後にステップS411の判定の結果、元データBにデータがなくなった場合、ステップS411からステップS421に進み、上述したように生成した分割データD(1), …,D(n)を分割装置6のメモリ10に一時保存して、分割処理を終了する。
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)
As described above, 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 B 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 B as a result of the determination in step S411, the process proceeds from step S411 to step S421, and the divided data D (1),. Are temporarily stored in the
以上述べたように、本実施形態によれば、元データBを、元データBのハッシュ値Hを含めて秘密分散法Sにより複数の分割データD(1)〜D(3)に分割し、また、分割データD(1)〜D(3)、ヘッダ情報A1〜A3、並びに分割データD(1)〜D(3)およびヘッダ情報A1〜A3から算出されたハッシュ値h1〜h3から構成される送信分割データDD(1)〜DD(3)を生成し、該送信分割データDD(1)〜DD(3)を保管サーバ3a1〜3a3にそれぞれ保管しているため、その送信分割データDD(1)〜DD(3)の内の少なくとも一部が改竄された場合でも、改竄データを含む送信分割データDD(1)〜DD(3)から、その送信分割データDD(1)〜DD(3)に対する改竄の有無を容易に確認することができる。 As described above, according to the present embodiment, the original data B is divided into a plurality of divided data D (1) to D (3) by the secret sharing method S including the hash value H of the original data B, Moreover, it consists of the hash values h1 to h3 calculated from the divided data D (1) to D (3), the header information A1 to A3, and the divided data D (1) to D (3) and the header information A1 to A3. Transmission division data DD (1) to DD (3) and the transmission division data DD (1) to DD (3) are stored in the storage servers 3a1 to 3a3, respectively. 1) to DD (3), even if at least a part of the transmission divided data DD (1) to DD (3) including the falsified data is tampered with, the transmission divided data DD (1) to DD (3) ) Can be easily checked for tampering Can.
この結果、例えば元データBを長期間に亘って保管する場合であっても、電子署名のように、電子証明書の再発行処理および電子署名付きデータ作成処理を繰り返し行うことなく、簡易に元データBを保管することができる。 As a result, for example, even when the original data B is stored for a long period of time, it is possible to easily perform the original data without repeating the reissue process of the electronic certificate and the data creation process with the electronic signature as in the case of the electronic signature. Data B can be stored.
また、本実施形態によれば、元データBを送信分割データDD(1)〜DD(3)に分割して保管サーバ3a1〜3a3に保管しているため、例えば、送信分割データDD(1)〜DD(3)の内の1つの分割データが改竄された場合でも、残りの分割データを用いて元データBを復元することができる。 Further, according to the present embodiment, the original data B is divided into the transmission divided data DD (1) to DD (3) and stored in the storage servers 3a1 to 3a3. Therefore, for example, the transmission divided data DD (1) Even when one of the divided data of ~ DD (3) is falsified, the original data B can be restored using the remaining divided data.
この結果、元データBの原本性をより確実に確保することができる
また、第1および第2の実施の形態における秘密分散法は、公開鍵暗号方式の秘密鍵の分割管理などで利用されており、比較的データ容量の小さいデータに対して実用的な方法であるが、本実施の形態における秘密分散法Sは、多項式演算・剰余演算などを含む多倍長整数の演算処理を必要としないので、大容量データを多数処理する場合においても簡単かつ迅速にデータの分割および復元を行うことができるという効果を得ることができる。
As a result, the originality of the original data B can be more reliably ensured. Further, the secret sharing method in the first and second embodiments is used for secret key division management of the public key cryptosystem. Although this is a practical method for data with a relatively small data capacity, the secret sharing method S in the present embodiment does not require arithmetic processing of multiple-precision integers including polynomial arithmetic and remainder arithmetic. Therefore, even when a large amount of large volume data is processed, it is possible to obtain an effect that data can be divided and restored easily and quickly.
なお、第1および第2の実施の形態では、元データBを分割した分割データD(1)〜D(4)を、クライアント2に対してネットワークNを介して接続された保管サーバ3a1〜3a4に保管し、第3の実施の形態では、元データBを分割した送信分割データDD(1)〜DD(3)を、分割装置6に対してネットワークNを介して接続された保管サーバ3a1〜3a3に保管するように構成したが、本発明はこの構成に限定されるものではない。
In the first and second embodiments, the storage servers 3a1 to 3a4 in which the divided data D (1) to D (4) obtained by dividing the original data B are connected to the
例えば、データ原本性確保システム1の変形例を図13に示す。
For example, a modification of the data
図13に示すように、変形例に係わるデータ原本性確保システム1Aは、クライアント側単独でのクライアントシステム25として構成されており、このクライアントシステム25は、クライアント2と、このクライアント2に対してLAN等を介して接続された互いにハードウェア的に独立した複数の保管用記憶装置20a1〜20a4とを備えている。
As shown in FIG. 13, the data
図13に示すようにデータ原本性確保システム1Aを構成しても、元データBを分割データD(1)〜D(4)として複数の保管用記憶装置20a1〜20a4に保管することができ、元データBの原本性を簡易かつ確実に確保しながら保管することができる。 Even if the data originality ensuring system 1A is configured as shown in FIG. 13, the original data B can be stored in the plurality of storage devices 20a1 to 20a4 as the divided data D (1) to D (4), The original data B can be stored while ensuring the originality of the original data B easily and reliably.
また、同様に、データ原本性確保システム4の変形例として、端末5、分割装置6、および保管サーバ3a1〜3a3をクライアント側単独でのクライアントシステムとして構成してもよいものである。
Similarly, as a modified example of the data originality ensuring system 4, the
さらに、上記実施の形態で説明した各システム構成は、あくまでも好適な一具体例を示したものであり、機能的に同一であるのならば、他のシステム構成、例えば、データ原本性確保システム1のシステム構成をデータ原本性確保システム4に示すようなシステム構成としてもよい。これは、データ原本性確保システム1のクライアント2の機能を端末5と分割装置6に機能分散したシステム構成とするものである。同様にして、例えば、データ原本性確保システム4のシステム構成をデータ原本性確保システム1に示すようなシステム構成としてもよい。これは、データ原本性確保システム4の端末5と分割装置6の機能を集約してクライアント2の機能とするものである。
Furthermore, each system configuration described in the above embodiment is merely a preferable specific example, and if it is functionally the same, other system configurations, for example, the data
また、上記実施の形態、ならびにその変形例によれば、秘密分散法としてShamirの秘密分散法{(k、n)閾値法;但し、分割数を表すnを4とし、復元できる数を表すkを3とする}、および秘密分散法Sを用いたが、本発明はこの構成に限定されるものではなく、上記実施の形態で述べた秘密分散法以外の他の秘密分散法を用いることも可能である。 In addition, according to the above-described embodiment and its modification, Shamir's secret sharing method {(k, n) threshold method as a secret sharing method; provided that n representing the number of divisions is 4 and k represents the number that can be restored. And the secret sharing method S are used, but the present invention is not limited to this configuration, and other secret sharing methods other than the secret sharing method described in the above embodiment may be used. Is possible.
さらに、上記実施の形態、ならびにその変形例によれば、元データのユニークに識別できる識別データとしてハッシュ値を用いたが、ハッシュ値以外の識別データ、例えばパリティ、チェックサム(元データをブロックに分割し、分割されたブロックを数値とみなして全てのブロックを合計した値)等であってもよい。 Furthermore, according to the above-described embodiment and the modification thereof, the hash value is used as identification data that can uniquely identify the original data. However, identification data other than the hash value, for example, parity, checksum (original data in a block) It may be a value obtained by dividing, and regarding the divided blocks as numerical values, and adding up all the blocks.
1、1A、4…データ原本性確保システム
2…クライアント
3a1〜3a4…保管サーバ
5…端末
6…分割装置
10…メモリ
11…ハッシュ値生成部
13…分割データ生成部
15…元データ復元部
17…通信部
20a1〜20a4…保管用記憶装置
25…クライアントシステム
31、37…データ送受信部
32…ハッシュ値生成部
33…分割データ生成部
34…乱数発生部
35…ハッシュ値確認部
36…元データ復元部
37…データ送受信部
DESCRIPTION OF
Claims (4)
ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成部と、
前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個(n≧3)の分割データを生成するデータ生成部と、
前記n個の分割データをそれぞれ記憶する複数の保管部と、
前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元部とを備え、
前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、
前記データ生成部は、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、
前記ハッシュ値生成部は、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、
前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されること
を特徴とするデータ原本性確保システム。 A data originality ensuring system for storing data while ensuring its originality,
A hash value generation unit that generates a hash value of the data using a hash function;
A data generation unit that generates n (n ≧ 3) divided data from which the hash value is added and the data can be restored using a secret sharing method;
A plurality of storage units each storing the n pieces of divided data;
The data and the hash value are restored using the divided data, the hash value of the restored data is regenerated using the hash function, and whether or not the regenerated hash value matches the restored hash value A data restoration unit for determining whether or not
The n number of segmented data, from one of the divided data can not be restored the data, Ri said data restorable der by combining the divided data of m (2 ≦ m ≦ n-1 ),
The data generation unit adds management information related to data division to each of the divided data,
The hash value generation unit generates a hash value for divided data of each divided data to which the management information is added using the hash function,
Each of the plurality of storage units stores the respective pieces of divided data to which the management information and the hash value for the divided data are added .
前記管理情報および前記分割データ用ハッシュ値が付加された各分割データについて、前記管理情報および分割データ本体から、前記ハッシュ関数を用いて分割データ用ハッシュ値を再生成し、再生成した分割データ用ハッシュ値と、前記分割データに付加された前記分割データ用ハッシュ値とが一致するか否かを判別するハッシュ値確認部をさらに備え、
前記データ復元部は、再生成した分割データ用ハッシュ値と、前記分割データに付加された前記分割データ用ハッシュ値とが一致する分割データの数が、復元可能なm個以上ある場合、前記データを復元すること
を特徴とするデータ原本性確保システム。 The data originality ensuring system according to claim 1 ,
For each divided data to which the management information and the hash value for the divided data are added, the hash value for the divided data is regenerated using the hash function from the management information and the divided data body, and the regenerated data for the divided data A hash value confirming unit for determining whether or not the hash value and the divided data hash value added to the divided data match;
When the number of divided data in which the regenerated hash value for divided data matches the divided data hash value added to the divided data is m or more that can be restored, Data originality assurance system characterized by restoring data.
前記コンピュータシステムは、
生成されたn個(n≧3)の分割データをそれぞれ記憶する複数の保管部を備え、
ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成ステップと、
前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個の分割データを生成するデータ生成ステップと、
前記n個の分割データを、前記複数の保管部にそれぞれ記憶する保管ステップと、
前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元ステップと、を行い、
前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、
前記データ生成ステップは、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、
前記ハッシュ値生成ステップは、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、
前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されること
を特徴とするデータ原本性確保方法。 A data originality securing method for storing data while ensuring its originality, performed by a computer system,
The computer system includes:
A plurality of storage units each storing the generated n pieces (n ≧ 3) of divided data;
A hash value generating step for generating a hash value of the data using a hash function;
A data generation step of generating n pieces of divided data from which the hash value is added and the data can be restored using a secret sharing method;
A storage step of storing the n pieces of divided data in the plurality of storage units;
The data and the hash value are restored using the divided data, the hash value of the restored data is regenerated using the hash function, and whether or not the regenerated hash value matches the restored hash value And a data restoration step for determining whether or not
The n number of segmented data, from one of the divided data can not be restored the data, Ri said data restorable der by combining the divided data of m (2 ≦ m ≦ n-1 ),
The data generation step adds management information related to data division to each of the divided data,
The hash value generation step generates a hash value for divided data of each divided data to which the management information is added using the hash function,
The data originality ensuring method , wherein each of the divided data to which the management information and the hash value for the divided data are added is stored in each of the plurality of storage units .
ハッシュ関数を用いて、前記データのハッシュ値を生成するハッシュ値生成部、
前記ハッシュ値が付加された前記データから、秘密分散法を用いて該データが復元できるn個(n≧3)の分割データを生成するデータ生成部、
前記n個の分割データをそれぞれ記憶する複数の保管部、および、
前記分割データを用いて前記データおよび前記ハッシュ値を復元し、前記復元したデータのハッシュ値を前記ハッシュ関数を用いて再生成し、再生成したハッシュ値と復元したハッシュ値とが一致するか否かを判別するデータ復元部として機能させ、
前記n個の分割データは、1個の分割データからは前記データが復元できず、m個(2≦m≦n−1)の分割データを組み合わせることにより前記データが復元可能であり、
前記データ生成部は、前記分割データのそれぞれにデータ分割に関する管理情報を付加し、
前記ハッシュ値生成部は、前記管理情報が付加された各分割データの分割データ用ハッシュ値を前記ハッシュ関数を用いて生成し、
前記複数の保管部には、前記管理情報および前記分割データ用ハッシュ値が付加された各分割データが、それぞれ記憶されること
を特徴とする、データ原本性確保用プログラム。 Computer system,
A hash value generation unit that generates a hash value of the data using a hash function;
A data generation unit that generates n (n ≧ 3) divided data from which the hash value is added and the data can be restored using a secret sharing method;
A plurality of storage units each storing the n pieces of divided data; and
The data and the hash value are restored using the divided data, the hash value of the restored data is regenerated using the hash function, and whether or not the regenerated hash value matches the restored hash value Function as a data restoration unit to determine whether
The n number of segmented data, from one of the divided data can not be restored the data, Ri said data restorable der by combining the divided data of m (2 ≦ m ≦ n-1 ),
The data generation unit adds management information related to data division to each of the divided data,
The hash value generation unit generates a hash value for divided data of each divided data to which the management information is added using the hash function,
A data originality ensuring program characterized in that each of the divided data to which the management information and the hash value for the divided data are added is stored in each of the plurality of storage units .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014046667A JP5749368B2 (en) | 2003-04-15 | 2014-03-10 | Data originality ensuring method and system, and data originality ensuring program |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003110876 | 2003-04-15 | ||
JP2003110876 | 2003-04-15 | ||
JP2014046667A JP5749368B2 (en) | 2003-04-15 | 2014-03-10 | Data originality ensuring method and system, and data originality ensuring program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013013208A Division JP5592513B2 (en) | 2003-04-15 | 2013-01-28 | Data originality ensuring method and system, and data originality ensuring program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014142651A JP2014142651A (en) | 2014-08-07 |
JP5749368B2 true JP5749368B2 (en) | 2015-07-15 |
Family
ID=43593781
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010196212A Expired - Lifetime JP5396352B2 (en) | 2003-04-15 | 2010-09-01 | Data originality ensuring method and system, and data originality ensuring program |
JP2013013208A Expired - Lifetime JP5592513B2 (en) | 2003-04-15 | 2013-01-28 | Data originality ensuring method and system, and data originality ensuring program |
JP2014046667A Expired - Lifetime JP5749368B2 (en) | 2003-04-15 | 2014-03-10 | Data originality ensuring method and system, and data originality ensuring program |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010196212A Expired - Lifetime JP5396352B2 (en) | 2003-04-15 | 2010-09-01 | Data originality ensuring method and system, and data originality ensuring program |
JP2013013208A Expired - Lifetime JP5592513B2 (en) | 2003-04-15 | 2013-01-28 | Data originality ensuring method and system, and data originality ensuring program |
Country Status (1)
Country | Link |
---|---|
JP (3) | JP5396352B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5396352B2 (en) * | 2003-04-15 | 2014-01-22 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | Data originality ensuring method and system, and data originality ensuring program |
JP5214748B2 (en) * | 2011-01-25 | 2013-06-19 | 株式会社東芝 | Power consumption calculation system, energy management device and program |
JP5712797B2 (en) * | 2011-06-03 | 2015-05-07 | 大日本印刷株式会社 | Content playback system, playback device, and semiconductor media |
EP2887575B1 (en) * | 2013-12-18 | 2020-09-02 | Laurenz Vorderwülbecke | Distributed data file storage method and apparatus |
JP5860557B1 (en) * | 2015-02-06 | 2016-02-16 | 日本電信電話株式会社 | Secret disclosure method, secret disclosure system, secret disclosure device, and program |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60247683A (en) * | 1984-05-23 | 1985-12-07 | 三菱電機株式会社 | Data protection managing system |
JP3027988B2 (en) * | 1991-01-31 | 2000-04-04 | 松下電器産業株式会社 | Secret key generation method based on identification information |
US5530757A (en) * | 1994-06-28 | 1996-06-25 | International Business Machines Corporation | Distributed fingerprints for information integrity verification |
JP3604737B2 (en) * | 1994-07-29 | 2004-12-22 | キヤノン株式会社 | Secret information processing method in communication system having a plurality of information processing devices and communication system thereof |
JPH11134259A (en) * | 1997-10-29 | 1999-05-21 | Oki Electric Ind Co Ltd | Management method and device for information |
JP4097773B2 (en) * | 1998-04-20 | 2008-06-11 | オリンパス株式会社 | Digital image editing system |
EP1193666B1 (en) * | 1999-01-28 | 2006-06-14 | Yutaka Yasukura | Method for securing safety of electronic information |
JP2001086110A (en) * | 1999-09-13 | 2001-03-30 | Toyo Commun Equip Co Ltd | Packet communication system for encrypted information |
JP3953253B2 (en) * | 2000-04-03 | 2007-08-08 | 東芝情報システム株式会社 | Cipher generation device, electronic device using cipher generation program, storage medium, ciphertext decryption device |
JP2002135247A (en) * | 2000-10-20 | 2002-05-10 | Sangikyou:Kk | Digital information storing method |
JP2002217891A (en) * | 2001-01-22 | 2002-08-02 | Toshiba Corp | Program and system for secrecy dispersion management |
JP2003032239A (en) * | 2001-04-26 | 2003-01-31 | Fujitsu Ltd | Contents distribution system tamper-resistant apparatus, server, computer program and contents distributing method |
JP4676695B2 (en) * | 2002-12-19 | 2011-04-27 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | Data division method, data division apparatus, and computer program |
JP5396352B2 (en) * | 2003-04-15 | 2014-01-22 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | Data originality ensuring method and system, and data originality ensuring program |
JP4610176B2 (en) * | 2003-04-15 | 2011-01-12 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | Data originality ensuring method and system, and data originality ensuring program |
-
2010
- 2010-09-01 JP JP2010196212A patent/JP5396352B2/en not_active Expired - Lifetime
-
2013
- 2013-01-28 JP JP2013013208A patent/JP5592513B2/en not_active Expired - Lifetime
-
2014
- 2014-03-10 JP JP2014046667A patent/JP5749368B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP5396352B2 (en) | 2014-01-22 |
JP2011015429A (en) | 2011-01-20 |
JP2014142651A (en) | 2014-08-07 |
JP2013102526A (en) | 2013-05-23 |
JP5592513B2 (en) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4610176B2 (en) | Data originality ensuring method and system, and data originality ensuring program | |
TWI810411B (en) | Computer implemented system and method for enabling access to data stored on a blockchain | |
JP5194094B2 (en) | Data division method, data division apparatus, and computer program | |
JP5749368B2 (en) | Data originality ensuring method and system, and data originality ensuring program | |
JP4676695B2 (en) | Data division method, data division apparatus, and computer program | |
JP2006018850A (en) | Data storing system | |
JP2007042027A (en) | Data division/restoration system, terminal, data division/restoration method and computer program | |
JP4789536B2 (en) | Data division apparatus, data division method, and computer program | |
JP4619045B2 (en) | Data concealment device, data concealment method, 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 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140924 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150217 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150415 |
|
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: 20150511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150513 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5749368 Country of ref document: JP 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 |
|
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 |
|
EXPY | Cancellation because of completion of term |