JP2020064245A - Secret distribution device, secret distribution system, and secret distribution method - Google Patents

Secret distribution device, secret distribution system, and secret distribution method Download PDF

Info

Publication number
JP2020064245A
JP2020064245A JP2018197533A JP2018197533A JP2020064245A JP 2020064245 A JP2020064245 A JP 2020064245A JP 2018197533 A JP2018197533 A JP 2018197533A JP 2018197533 A JP2018197533 A JP 2018197533A JP 2020064245 A JP2020064245 A JP 2020064245A
Authority
JP
Japan
Prior art keywords
data
secret
distributed data
value
random number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018197533A
Other languages
Japanese (ja)
Other versions
JP6997696B2 (en
Inventor
尚生 坂崎
Hisao Sakazaki
尚生 坂崎
亮太 笹嶋
Ryota Sasajima
亮太 笹嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018197533A priority Critical patent/JP6997696B2/en
Publication of JP2020064245A publication Critical patent/JP2020064245A/en
Application granted granted Critical
Publication of JP6997696B2 publication Critical patent/JP6997696B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

To generate distributed data which is confirmable as being correct data with a small amount of calculation in secrete distribution.SOLUTION: A secret distribution device of the present invention holds secret data and a public parameter, generates a plurality of partial distributed data from divided secret data and the exclusive OR of random numbers of a first random number group, calculates a hash value with respect to the secret data, the first value obtained from the first random number group and each partial distributed data, generates, for each partial distributed data, distributed data from additional distributed data that includes a value obtained from the hash value of secret data, the hash value of first value and the partial distributed data and a value obtained from a second random number group and the partial distributed data, and includes, in data for verification of the distributed data, a value calculated on the basis of the public parameter, the hash value of secret data and the second random number group and a value calculated on the basis of the public parameter, the hash value of first value and the second random number group.SELECTED DRAWING: Figure 1

Description

本発明は、秘密分散装置、秘密分散システム、及び秘密分散方法に関する。   The present invention relates to a secret sharing device, a secret sharing system, and a secret sharing method.

秘密分散法の代表例として、Shamirが考案した(k,n)閾値秘密分散法がある。Shamirの(k,n)閾値秘密分散法は、秘密情報(元データ)を、意味を成さないn個の分散データに分散し、n個の分散データのうちk個以上の分散データを集めると秘密情報(元データ)を復元可能な手法である。   A representative example of the secret sharing method is a (k, n) threshold secret sharing method devised by Shamir. Shamir's (k, n) threshold secret sharing method disperses secret information (original data) into n meaningless distributed data, and collects k or more distributed data out of n distributed data. And confidential information (original data) can be restored.

しかし、Shamirの(k,n)閾値秘密分散法は、秘密情報の分散処理や復元処理を、複雑な処理である多項式補間により実現するため、大量のデータを秘密分散化するのには、多くの計算量を要する。   However, Shamir's (k, n) threshold secret sharing method realizes the secret information sharing process and the restoring process by polynomial interpolation, which is a complicated process, and therefore, it is often used to secretly share a large amount of data. Requires a large amount of calculation.

そこで、簡単な処理である排他的論理和演算のみで実現される(2,n)秘密分散方式の背景技術として特開2007−124032号公報(特許文献1)がある。この公報には、「保存部11の秘密情報Sを分割してn−1個の第1分割秘密データK(1),…,K(j),…,K(n-1)を生成し、ゼロ値からなる分割秘密データK(0)を生成し、各分割秘密データと例えば同一サイズのn−1個の乱数データR(0),…,R(i),…,R(n-2)を生成し、分割秘密データK(0),…,K(n-1)及び乱数データR(0),…,R(n-2)に基づいて、n(n−1)個の分散部分データD(j,i)=K(j−i(mod n))(+)R(i)を算出し((+)は排他的論理和)、互いに同一の行番号jを有する分散部分データD(j,0)〜D(j,n-2)を有するn個の分散情報D(0),…,D(j),…,D(n-1)を個別にn個の記憶装置に配布する。このうち、任意の2個の分散情報D(i),D(j)に基づいて、秘密情報Sを復元できる。」と記載されている(要約参照)。   Therefore, there is JP-A-2007-124032 (Patent Document 1) as a background art of the (2, n) secret sharing scheme which is realized only by an exclusive OR operation which is a simple process. In this publication, "secret information S in the storage unit 11 is divided to generate n-1 pieces of first divided secret data K (1), ..., K (j), ..., K (n-1). , Divided zero secret data K (0) is generated, and n−1 random number data R (0), ..., R (i) ,. 2) is generated, and based on the divided secret data K (0), ..., K (n-1) and the random number data R (0), ..., R (n-2), n (n-1) Distributed partial data D (j, i) = K (j-i (mod n)) (+) R (i) is calculated ((+) is an exclusive OR), and the shared row numbers j are the same. N pieces of shared information D (0), ..., D (j), ..., D (n-1) having partial data D (j, 0) to D (j, n-2) are individually n pieces. The data is distributed to a storage device. Zui and have been described as able to recover the secret information S. "(See Abstract).

特開2007−124032号公報JP, 2007-124032, A

しかし、特許文献1に記載の技術は、分散データが壊れている場合や、故意に第三者が正しい分散データを改竄した場合等において、分散データが正しいものであるかを判断することができない。そこで本発明の一態様は、秘密分散において、正しいデータであることを確認可能な分散データを、少ない計算量で生成することを目的とする。   However, the technique described in Patent Document 1 cannot determine whether the distributed data is correct when the distributed data is broken or when a third party intentionally falsifies the correct distributed data. . Therefore, an aspect of the present invention is to generate shared data that can be confirmed to be correct data with a small amount of calculation in secret sharing.

上記課題を解決するために、本発明の一態様は、以下の構成を採用する。秘密分散装置は、プロセッサと記憶装置とを備え、前記記憶装置は、秘密データと、公開パラメータと、を保持し、前記プロセッサは、前記秘密データを分割し、前記分割した秘密データと、複数の乱数からなる第1乱数群と、の排他的論理和に基づいて、複数の部分分散データを生成し、前記秘密データの所定のハッシュ関数によるハッシュ値と、前記第1乱数群の乱数から得られる第1の値の前記所定のハッシュ関数によるハッシュ値と、前記複数の部分分散データそれぞれの前記所定のハッシュ関数によるハッシュ値と、を算出し、前記複数の部分分散データそれぞれについて、前記秘密データのハッシュ値と前記第1の値のハッシュ値とを係数又は定数項として有する第1の関数に当該部分分散データを代入して得られる値と、前記第1乱数群に含まれない乱数からなる第2乱数群の乱数を係数又は定数項として有する第2の関数に当該部分分散データを代入して得られる値と、を含む付加分散データを、当該部分分散データに付加して分散データを生成し、前記分散データそれぞれを異なる出力先へと出力し、前記公開パラメータと前記秘密データのハッシュ値と前記第2乱数群に含まれる第1乱数とに基づいて算出される第2の値と、前記公開パラメータと前記第1の値のハッシュ値と前記第2乱数群に含まれる第2乱数とに基づいて算出される第3の値と、を前記分散データの検証用データに含める、秘密分散装置。   In order to solve the above problems, one embodiment of the present invention employs the following configuration. The secret sharing device includes a processor and a storage device, the storage device holds secret data and public parameters, the processor divides the secret data, and divides the secret data, and a plurality of divided secret data. A plurality of partial distributed data is generated based on an exclusive OR of a first random number group consisting of random numbers, and is obtained from a hash value of the secret data by a predetermined hash function and a random number of the first random number group. A hash value of the first value by the predetermined hash function and a hash value of each of the plurality of partial distribution data by the predetermined hash function are calculated, and the secret data of each of the plurality of partial distribution data is calculated. A value obtained by substituting the partial variance data into a first function having a hash value and a hash value of the first value as a coefficient or a constant term; A value obtained by substituting the partial distributed data into a second function having a random number of a second random number group that is not included in 1 random number group as a coefficient or a constant term is added to the partial distributed data. Based on the public parameter, the hash value of the secret data, and the first random number included in the second random number group, the distributed data is generated by adding it to the distributed data, and the distributed data is output to different output destinations. The second value calculated by the above, the third value calculated based on the public parameter, the hash value of the first value, and the second random number included in the second random number group, and the variance. A secret sharing device that is included in the data for data verification.

本発明の一態様によれば、秘密分散において、正しいデータであることを確認可能な分散データを、少ない計算量で生成することができる。   According to one aspect of the present invention, in secret sharing, it is possible to generate distributed data that can be confirmed to be correct data with a small amount of calculation.

上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。   Problems, configurations, and effects other than those described above will be clarified by the following description of the embodiments.

実施例1における秘密分散システムの全体構成例を示すブロック図である。1 is a block diagram showing an example of the overall configuration of a secret sharing system according to a first exemplary embodiment. FIG. 実施例1における計算機の構成例を示すブロック図である。3 is a block diagram showing a configuration example of a computer according to the first embodiment. FIG. 実施例1における秘密データ分散の全体処理の一例を示すシーケンス図であるFIG. 7 is a sequence diagram showing an example of an entire process of secret data distribution according to the first embodiment. 実施例1における秘密分散システム全体による復元化処理の一例を示すシーケンス図である。FIG. 8 is a sequence diagram showing an example of restoration processing by the entire secret sharing system according to the first embodiment. 実施例1における秘密情報の分散化処理の詳細の一例を示すフローチャートである。6 is a flowchart illustrating an example of details of secret information decentralization processing according to the first embodiment. 実施例1における各保管サーバによる分散データの保管処理の一例を示すフローチャートである。6 is a flowchart showing an example of distributed data storage processing by each storage server in the first embodiment. 実施例1におけるクライアント装置による復元化処理の詳細の一例を示すフローチャートである。6 is a flowchart illustrating an example of details of restoration processing by the client device according to the first embodiment. 実施例1における保管サーバ装置に配布される分散データの各ブロックの値を示すテーブルである。5 is a table showing the value of each block of distributed data distributed to the storage server device according to the first embodiment. 実施例1における保管サーバ装置に保管された分散データから付加分散データを削除して得られる部分分散データの各ブロックの値を示すテーブルである。5 is a table showing the values of each block of partial distributed data obtained by deleting additional distributed data from the distributed data stored in the storage server device in the first embodiment.

以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. In this embodiment, the same components are denoted by the same reference symbols in principle, and repeated description will be omitted. It should be noted that the present embodiment is merely an example for realizing the present invention and does not limit the technical scope of the present invention.

<システム構成>
図1は、秘密分散システムの全体構成例を示すブロック図である。この図は、秘密分散システムの全体構成例と共に、秘密分散システムに含まれる各装置の機能構成例も示している。
<System configuration>
FIG. 1 is a block diagram showing an example of the overall configuration of a secret sharing system. This figure shows an example of the overall configuration of the secret sharing system as well as an example of the functional configuration of each device included in the secret sharing system.

秘密分散システム1は、例えば、クライアント装置10と、検証用データ公開装置30と、複数(本実施例ではn台とする)の保管サーバ装置20(i=1,2,・・・,n−1)と、を含み、これらは互いにインターネット等のネットワーク40を介して接続されている。 The secret sharing system 1 includes, for example, a client device 10, a verification data disclosure device 30, and a plurality (n in this embodiment) of storage server devices 20 i (i = 1, 2, ..., N). -1), and these are connected to each other via a network 40 such as the Internet.

つまり、秘密分散システム1は、クライアント装置10と保管サーバ装置20と検証用データ公開装置30が、インターネット等のネットワーク40を介して通信可能に接続されて構成されたコンピュータネットワークシステムである。尚、複数の保管サーバ装置20は、一部又は全部が同一の組織によって運用されてもよいし、また、全部が異なる組織によって運用されてもよい。 That is, the secret sharing system 1 is a computer network system configured by the client device 10, the storage server device 20 i, and the verification data disclosure device 30 communicably connected via a network 40 such as the Internet. A part or all of the plurality of storage server devices 20 i may be operated by the same organization, or all of them may be operated by different organizations.

なお、以下、保管サーバ装置20〜20n−1及び保管サーバ装置20〜20n−1に含まれる各部を特に区別する必要がない場合には、保管サーバ装置20という記載のように添え字を省略するか、保管サーバ装置20という記載のように一般化して記載する。 In addition, hereinafter, when it is not necessary to distinguish between the respective units included in the storage server devices 20 1 to 20 n-1 and the storage server devices 20 1 to 20 n-1 , the storage server devices 20 are added as described. The letters are omitted or generalized as described as the storage server device 20 i .

クライアント装置10は、例えば、通信部101、制御部102、入出力部103、分散データ生成部104、データ復元部105、及び乱数生成部106を含む。通信部101は、他の装置との通信を行う。制御部102は、クライアント装置10の全体制御を行う。入出力部103は、クライアント装置10への指示及びデータ等の入力、並びにクライアント装置10からの指示及びデータ等の出力を行う。   The client device 10 includes, for example, a communication unit 101, a control unit 102, an input / output unit 103, a distributed data generation unit 104, a data restoration unit 105, and a random number generation unit 106. The communication unit 101 communicates with other devices. The control unit 102 controls the client device 10 as a whole. The input / output unit 103 inputs instructions and data to the client device 10 and outputs instructions and data from the client device 10.

分散データ生成部104は、後述する秘密情報を分散化して分散データD(i)を生成し、分散データD(i)を、それぞれ、保管サーバ装置20に配布する。つまり、クライアント装置10は、秘密情報を分散する秘密情報分散装置として機能する。また、後述する検証用データ及び公開パラメータを生成して、検証用データ公開装置30に配布する。データ復元部105は、保管サーバ装置20から必要な数の(本実施例では、改竄及び破損等していない2つの正常な)分散化データを収集して元の秘密情報を復元する。 The distributed data generation unit 104 generates secret data D (i) by decentralizing secret information, which will be described later, and distributes the distributed data D (i) to the storage server device 20 i . That is, the client device 10 functions as a secret information distribution device that distributes secret information. Further, the verification data and the public parameter, which will be described later, are generated and distributed to the verification data publishing device 30. The data restoring unit 105 restores the original secret information by collecting a required number of (two normal, unaltered and unaltered in this embodiment) decentralized data from the storage server device 20.

乱数生成部106は、分散データ生成部104等からの指示に応じて乱数を生成する。また、クライアント装置10は、秘密情報107を保持する。秘密情報107は、分散化による秘匿対象のデータであり、分散化される前の元データである。   The random number generation unit 106 generates a random number according to an instruction from the distributed data generation unit 104 or the like. The client device 10 also holds the secret information 107. The secret information 107 is data to be concealed by decentralization, and is original data before being decentralized.

各保管サーバ装置20は、通信部201、保存部202、及び検証部204を含む。通信部201は他の装置との通信を行う。保存部202は、通信部201を介して受信した分散データ(D(i))203を保持する。検証部204は受信した分散データが改竄されていないか又は破損していないか等を検証する。 Each storage server device 20 i includes a communication unit 201 i , a storage unit 202 i , and a verification unit 204 i . The communication unit 201 i communicates with other devices. The storage unit 202 i holds the distributed data (D (i)) 203 i received via the communication unit 201 i . The verification unit 204 i verifies whether the received distributed data has not been tampered with or damaged.

検証用データ公開装置30は、通信部301、及び保存部302を含む。通信部301は他の装置との通信を行う。保存部302は、例えば、通信部301を介して受信した後述する検証用データ((G,G))303、及び後述する公開パラメータ((p,g,g))304を保持する。検証用データ303及び公開パラメータ304は、秘密分散システム1内で公開され、クライアント装置10及び保管サーバ装置20による分散データの改竄検知処理、並びにクライアント装置10による秘密情報の復元処理等に用いられる。 The verification data disclosure device 30 includes a communication unit 301 i and a storage unit 302 i . The communication unit 301 i communicates with other devices. The storage unit 302 i includes, for example, verification data ((G 1 , G 2 )) 303, which will be described later, received via the communication unit 301 i , and public parameters ((p, g 1 , g 2 )) 304, which will be described later. Hold. The verification data 303 and the disclosure parameter 304 are disclosed in the secret sharing system 1, and are used for the alteration detection process of the distributed data by the client device 10 and the storage server device 20 i, and the restoration process of the confidential information by the client device 10. .

図2は、計算機50の構成例を示すブロック図である。クライアント装置10、保管サーバ装置20、及び検証用データ公開装置30は、それぞれ、例えば、図2に示す計算機によって構成される。計算機50は、例えば、通信装置501、入力装置502、メモリ503、補助記憶装置504、CPU(Central Processing Unit)505、及び出力装置506を含み、これらはバス507等の内部通信線を介して互いに接続されている。   FIG. 2 is a block diagram showing a configuration example of the computer 50. The client device 10, the storage server device 20, and the verification data disclosure device 30 are each configured by, for example, the computer illustrated in FIG. The computer 50 includes, for example, a communication device 501, an input device 502, a memory 503, an auxiliary storage device 504, a CPU (Central Processing Unit) 505, and an output device 506, which are mutually connected via an internal communication line such as a bus 507. It is connected.

CPU505は、プロセッサを含み、メモリ503に格納されたプログラムを実行する。メモリ503は、不揮発性の記憶素子であるROM及び揮発性の記憶素子であるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、プロセッサが実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。   The CPU 505 includes a processor and executes a program stored in the memory 503. The memory 503 includes a ROM that is a non-volatile storage element and a RAM that is a volatile storage element. The ROM stores an immutable program (for example, BIOS) and the like. The RAM is a high-speed and volatile storage element such as a DRAM (Dynamic Random Access Memory), and temporarily stores a program executed by the processor and data used when the program is executed.

補助記憶装置504は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置であり、CPU505が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置504から読み出されて、メモリ503にロードされて、CPU505によって実行される。   The auxiliary storage device 504 is a large-capacity and non-volatile storage device such as a magnetic storage device (HDD) or a flash memory (SSD), and stores a program executed by the CPU 505 and data used when the program is executed. . That is, the program is read from the auxiliary storage device 504, loaded into the memory 503, and executed by the CPU 505.

計算機50は、入力インターフェース及び出力インターフェースを有してもよい。入力インターフェースは、キーボードやマウスなどの入力装置502が接続され、オペレータからの入力を受けるインターフェースである。出力インターフェースは、液晶表示装置や有機EL(Electro Luminescence)ディスプレイ装置やプリンタなどの出力装置506が接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。   The computer 50 may have an input interface and an output interface. The input interface is an interface to which an input device 502 such as a keyboard or a mouse is connected and which receives an input from an operator. The output interface is an interface to which an output device 506 such as a liquid crystal display device, an organic EL (Electro Luminescence) display device, and a printer is connected, and outputs the execution result of the program in a format that can be visually recognized by the operator.

通信装置501は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。例えば、クライアント装置10の通信部101、保管サーバ装置20の通信部201、及び検証用データ公開装置30の通信部301は、それぞれ通信装置501によって構成される。   The communication device 501 is a network interface device that controls communication with other devices according to a predetermined protocol. For example, the communication unit 101 of the client device 10, the communication unit 201 of the storage server device 20, and the communication unit 301 of the verification data disclosure device 30 are each configured by the communication device 501.

CPU505が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワーク40を介して計算機50に提供され、非一時的記憶媒体である不揮発性の補助記憶装置504に格納される。このため、計算機50は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。   The program executed by the CPU 505 is provided to the computer 50 via a removable medium (CD-ROM, flash memory, etc.) or the network 40, and is stored in the non-volatile auxiliary storage device 504 which is a non-temporary storage medium. For this reason, the computer 50 may have an interface for reading data from the removable medium.

秘密分散システム1に含まれる各装置は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。   Each device included in the secret sharing system 1 is a computer system physically configured on one computer or on a plurality of logically or physically configured computers, and is separate on the same computer. Of threads, or a virtual computer constructed on a plurality of physical computer resources.

例えば、クライアント装置10の制御部102、分散データ生成部104、データ復元部105、乱数生成部106は、CPU505が実行するプログラムにより実現される。具体的には、例えば、CPU505は、メモリ503にロードされた制御プログラムに従って動作することで、制御部102として機能し、メモリ503にロードされた分散データ生成プログラムに従って動作することで、分散データ生成部104として機能する。保管サーバ装置20の検証部204についても同様である。   For example, the control unit 102, the distributed data generation unit 104, the data restoration unit 105, and the random number generation unit 106 of the client device 10 are realized by a program executed by the CPU 505. Specifically, for example, the CPU 505 functions as the control unit 102 by operating according to the control program loaded in the memory 503, and operates according to the distributed data generation program loaded in the memory 503 to generate distributed data. It functions as the unit 104. The same applies to the verification unit 204 of the storage server device 20.

例えば、保管サーバ装置20の保存部202、及び検証用データ公開装置30の保存部302それぞれは、メモリ503又は補助記憶装置504に含まれる記憶領域の一部によって構成される。また、例えば、秘密情報107は、クライアント装置10のメモリ503又は補助記憶装置504に格納されている。 For example, the storage unit 202 i of the storage server device 20 and the storage unit 302 of the verification data disclosure device 30 are each configured by a part of the storage area included in the memory 503 or the auxiliary storage device 504. Further, for example, the secret information 107 is stored in the memory 503 or the auxiliary storage device 504 of the client device 10.

なお、本実施形態において、秘密分散システム1に含まれる各装置が使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。   In this embodiment, the information used by each device included in the secret sharing system 1 may be represented by any data structure without depending on the data structure. For example, a properly selected data structure from a table, list, database or queue can store the information.

<処理手順例>
以下、本実施例における処理の一例について説明する。以下で説明する秘密分散処理に対応する各種動作は、秘密分散システム1を構成する各装置、即ちクライアント装置10、保管サーバ装置20、及び検証用データ公開装置30それぞれがメモリ503等にロードして実行するプログラムによって実現される。
<Example of processing procedure>
Hereinafter, an example of processing in the present embodiment will be described. Various operations corresponding to the secret sharing processing described below are performed by loading the respective devices constituting the secret sharing system 1, that is, the client device 10, the storage server device 20 i , and the verification data disclosure device 30 into the memory 503 or the like. It is realized by a program to be executed.

まず、分散化処理について図3、図5、図6、及び図8を用いて説明する。図3は、秘密データ分散の全体処理の一例を示すシーケンス図である。図3の処理は、例えば、クライアント装置10のユーザからの指示(分散化化対象の秘密情報を示す情報を含む)を契機として開始する。   First, the decentralization process will be described with reference to FIGS. 3, 5, 6, and 8. FIG. 3 is a sequence diagram showing an example of the entire secret data distribution process. The process of FIG. 3 is triggered by, for example, an instruction from the user of the client device 10 (including information indicating secret information to be decentralized).

まず、クライアント装置10の分散データ生成部104は、公開パラメータ(p,g,g)を生成し(S10)、通信部101は、当該公開パラメータを検証用データ公開装置30に送信する(S11)。なお、公開パラメータは、後述する秘密情報の復元処理に用いられるため、分散データ生成部104は、生成した公開パラメータをクライアント装置10の補助記憶装置504に格納してもよい。 First, the distributed data generation unit 104 of the client device 10 generates public parameters (p, g 1 , g 2 ) (S10), and the communication unit 101 transmits the public parameters to the verification data public device 30 ( S11). Note that the public parameter is used in a process of restoring secret information described below, so the distributed data generation unit 104 may store the generated public parameter in the auxiliary storage device 504 of the client device 10.

検証用データ公開装置30は、受信した公開パラメータ(p,g,g)を公開パラメータ304として保存部302に保管すると共に、クライアント装置10及び保管サーバ装置20に対して、公開パラメータ304を秘密分散システム1内で公開する(S12)。つまり、クライアント装置10、及び保管サーバ装置20それぞれは、検証用データ公開装置30に対して公開パラメータ304の取得を要求することにより、検証用データ公開装置30から公開パラメータ304を取得することができる。 The verification data disclosing device 30 stores the received public parameters (p, g 1 , g 2 ) as the public parameters 304 in the storage unit 302, and at the same time, stores the public parameters 304 for the client device 10 and the storage server device 20. It is made public in the secret sharing system 1 (S12). That is, each of the client device 10 and the storage server device 20 can acquire the public parameter 304 from the verification data public device 30 by requesting the verification data public device 30 to acquire the public parameter 304. .

尚、値pは、q=(p−1)/2が素数となるような十分大きな素数(例えばpは1024bit以上の素数)とする。また、値g,gは、pを法とした有限体の位数qの異なる元、即ちg,g∈GF(p)、ord(g)=ord(g)=qである。なお、異なる秘密情報に、同一の公開パラメータ(p,g,g)が用いられてもよいし、秘密情報ごとに公開パラメータ(p,g,g)が異なってもよい。 The value p is a sufficiently large prime number such that q = (p-1) / 2 is a prime number (for example, p is a prime number of 1024 bits or more). Further, the values g 1 and g 2 are elements of different orders q of a finite field modulo p, that is, g 1 , g 2 εGF (p), ord (g 1 ) = ord (g 2 ) = q Is. Note that different secret information, the same public parameters (p, g 1, g 2 ) is to be used, the public parameters for each secret information (p, g 1, g 2 ) may be a different.

クライアント装置10の分散データ生成部104は、秘密情報107(以後、必要に応じて、秘密情報Sと記す)を分散化する(S20)。図5を用いてステップS20の分散化処理の詳細を説明する。   The distributed data generation unit 104 of the client device 10 decentralizes the secret information 107 (hereinafter, referred to as secret information S if necessary) (S20). Details of the decentralization processing in step S20 will be described with reference to FIG.

図5は、ステップS20の秘密情報の分散化処理の詳細の一例を示すフローチャートである。尚、ここでは秘密情報Sのデータ長は、d×(n−1)であるものとする(dは1以上の所定の自然数)。仮に秘密情報Sのデータ長がn−1で割り切れない時は、分散データ生成部104は、秘密情報Sに対してパディング処理をすることによってデータ長をn−1で割り切れるように調整した値を、改めて秘密情報Sに決定する。   FIG. 5 is a flowchart showing an example of details of the secret information decentralization process of step S20. In this case, the data length of the secret information S is d × (n−1) (d is a predetermined natural number of 1 or more). If the data length of the secret information S is not divisible by n-1, the distributed data generation unit 104 performs a padding process on the secret information S to obtain a value adjusted so that the data length is divisible by n-1. , The secret information S is decided again.

まず、分散データ生成部104は、秘密情報S∈{0,1}d(n−1)を分散化する(S201)。具体的には、例えば、分散データ生成部104は、秘密情報Sをn−1個のブロックに単純に分割する(S201)。尚、ここでは、秘密情報SをS=S||・・・||Sn−1とし(記号“||”は、データの連結を示す)、分割された各ブロックをS,・・・,Sn−1と記す。また、分散データ生成部104は、新たにS∈{0}を生成する。 First, the distributed data generation unit 104 distributes the secret information Sε {0,1} d (n−1) (S201). Specifically, for example, the distributed data generation unit 104 simply divides the secret information S into n-1 blocks (S201). Note that here, the secret information S is S = S 1 || ... || S n−1 (the symbol “||” indicates data concatenation), and each divided block is S 1 ,. ···, Sn-1 . Also, the distributed data generation unit 104 newly generates S 0 ε {0} d .

次に、分散データ生成部104は、秘密情報、乱数、及び部分分散データのハッシュ値を算出する(S202)。具体的には、まず、乱数生成部106は、データ長がdであるn−1個の乱数R,・・・,Rn−2を、例えば互いに独立(即ち、選択された乱数間に所定の規則性がないように)かつランダムに選ぶ(i.e.,R∈{0,1})。そして、分散データ生成部104は、D(i,j)=S(i−j mod n)xor R(0≦i≦n−1,0≦j≦n−2)を、各(i,j)について計算する。 Next, the distributed data generation unit 104 calculates a secret value, a random number, and a hash value of the partial shared data (S202). Specifically, first, the random number generation unit 106 sets n−1 random numbers R 0 , ..., R n−2 having a data length of d, for example, independently of each other (that is, between selected random numbers). And choose randomly (i.e., R i ε {0,1} d ) so that there is no predetermined regularity). Then, the distributed data generation unit 104 sets D (i, j) = S (i−j mod n) xor R j (0 ≦ i ≦ n−1, 0 ≦ j ≦ n−2) to each (i, j) is calculated.

分散データ生成部104は、秘密情報S=S||・・・||Sn−1と乱数R=R||・・・||Rn−2のハッシュ値を計算する。また、分散データ生成部104は、各D(i,j)を各iについて連結した部分分散データD’(i)=D(i,0)||・・・||D(i,n−2),(0≦i≦n−1)を生成する。 The distributed data generation unit 104 calculates the hash value of the secret information S = S 1 || ... || S n-1 and the random number R = R 0 || ... || R n-2 . Further, the distributed data generation unit 104 concatenates each D (i, j) with respect to each i, and the partial distributed data D '(i) = D (i, 0) || ... || D (i, n- 2), (0 ≦ i ≦ n−1) is generated.

分散データ生成部104は、各部分分散データD’(i)=D(i,0)||・・・||D(i,n−2),(0≦i≦n−1)のハッシュ値を計算する。尚、ここでは、出力長d’(例えば、d’は、256bit程度)のハッシュ関数をH()で表し、H(S)=h、H(R)=h、H(D’(i))=hD’(i),(0≦i≦n−1)とする。 The distributed data generation unit 104 has a hash of each partial distributed data D ′ (i) = D (i, 0) || ... || D (i, n-2), (0 ≦ i ≦ n−1) Calculate the value. Here, the hash function of the output length d ′ (for example, d ′ is about 256 bits) is represented by H (), and H (S) = h S , H (R) = h R , and H (D ′ ( i)) = h D ′ (i) , (0 ≦ i ≦ n−1).

このハッシュ関数は、例えば、クライアント装置10及び保管サーバ装置20の補助記憶装置504に予め格納されていてもよいし、検証用データ公開装置30によって秘密分散システム1内で公開されていてもよい。 This hash function may be stored in advance in the auxiliary storage device 504 of the client device 10 and the storage server device 20 i , or may be disclosed in the secret sharing system 1 by the verification data disclosure device 30, for example. .

次に、乱数生成部106は、乱数a,b∈GF(q)をさらに選び、分散データ生成部104は、2つの一次式、F(X)=h+hX mod q及びF’(X)=a+bX mod qを生成する(S203)。 Next, the random number generation unit 106 further selects the random numbers a and bεGF (q), and the distributed data generation unit 104 uses two linear expressions, F (X) = h S + h R X mod q and F ′ (. X) = a + bX mod q is generated (S203).

次に、分散データ生成部104は、付加分散データD(i,n−1)=F(hD’(i))=f及びD(i,n)=F’(hD’(i))=f’を計算する(S204)。 Then, the distributed data generating unit 104, the additional distributed data D (i, n-1) = F (h D '(i)) = f i and D (i, n) = F ' (h D '(i ) ) = F ′ i is calculated (S204).

次に、分散データ生成部104は、検証用データとして、G=pow(g,h)×pow(g,a)mod p、G=pow(g,h)×pow(g,b)mod pを生成し(S30)、(G,G)を検証用データとして検証用データ公開装置30に送信する(S31)。尚、関数pow()は指数関数を示し、pow(a,b)=aを意味する。 Next, the distributed data generation unit 104 uses G 1 = pow (g 1 , h S ) × pow (g 2 , a) mod p, G 2 = pow (g 1 , h R ) × pow as verification data. (g 2 , b) mod p is generated (S30), and (G 1 , G 2 ) is transmitted to the verification data disclosure device 30 as verification data (S31). The function pow () represents an exponential function and means pow (a, b) = ab .

そして、検証用データ公開装置30は、受信した(G,G)を検証用データ303として保管すると共に、クライアント装置10、及び保管サーバ装置20に対して、当該検証用データ(G,G)を秘密分散システム1内で公開する(S32)。分散データ生成部104は、部分分散データと付加分散データを連結した分散データD(i)=D’(i)||D(i,n−1)||D(i,n),(0≦i≦n−1)を、それぞれ、保管サーバ装置20に配布する(S40)。 Then, the verification data disclosure device 30 stores the received (G 1 , G 2 ) as the verification data 303, and at the same time, stores the verification data (G 1 ) for the client device 10 and the storage server device 20 i . , G 2 ) is disclosed in the secret sharing system 1 (S32). The distributed data generation unit 104 links the distributed data D (i) = D ′ (i) || D (i, n−1) || D (i, n), (0 ≦ i ≦ n−1) is distributed to each storage server device 20 i (S40).

図3の説明に戻る。続いて、各保管サーバ装置20は、検証用データ公開装置30から検証用データ(G,G)及び公開パラメータ(p,g,g)を取得し、自身が保管する分散データD(i)203の正当性を検証し(S50)、分散データD(i)を管理する(S60)。 Returning to the description of FIG. Subsequently, each storage server device 20 i acquires the verification data (G 1 , G 2 ) and the disclosure parameters (p, g 1 , g 2 ) from the verification data disclosure device 30 and stores the distributed data itself. The legitimacy of D (i) 203 i is verified (S50), and the distributed data D (i) is managed (S60).

図6は、ステップS50及びステップS60における、各保管サーバ装置20による分散データの保管処理の一例を示すフローチャートである。各保管サーバ装置20は、クライアント装置10から、部分分散データと付加分散データを連結したデータである分散データD(i)=D’(i)||D(i,n−1)||D(i,n),(0≦i≦n−1)を受信する(ステップS401)。 FIG. 6 is a flowchart showing an example of distributed data storage processing by each storage server device 20 i in steps S50 and S60. Each storage server device 20 i is distributed data D (i) = D ′ (i) || D (i, n−1) || that is data obtained by concatenating the partial distributed data and the additional distributed data from the client device 10. D (i, n), (0≤i≤n-1) is received (step S401).

図8は、保管サーバ装置20に配布される分散データの各ブロックの値を示すテーブルである。図8は、n=5の場合の例を示す。テーブルのm行目かつl列目のセルの値は、i=mにおけるD(i)を長さdのブロック長に分割した場合のl番目のブロックの値を示す。   FIG. 8 is a table showing the value of each block of the distributed data distributed to the storage server device 20. FIG. 8 shows an example when n = 5. The value of the cell in the m-th row and the 1-th column of the table indicates the value of the l-th block when D (i) at i = m is divided into block lengths of length d.

まず、ステップS50の検証処理の詳細を説明する。検証部204は、検証用データ公開装置30から検証用データ(G,G)及び公開パラメータ(p,g,g)を取得する(S501)。検証部204は、分散データD(i)=D’(i)||D(i,n−1)=f||D(i,n)=f’から部分分散データと付加分散データを取り出し、部分分散データD’(i)のハッシュ値H(D’(i))=hD’(i)を計算する(S502)。 First, the details of the verification process in step S50 will be described. The verification unit 204 acquires the verification data (G 1 , G 2 ) and the public parameters (p, g 1 , g 2 ) from the verification data disclosure device 30 (S501). Verification unit 204 i is distributed data D (i) = D '( i) || D (i, n-1) = f i || D (i, n) = f' i additional dispersion and partial dispersion data from The data is taken out and the hash value H (D ′ (i)) = h D ′ (i) of the partial distributed data D ′ (i) is calculated (S502).

続いて、ステップS60における管理処理について説明する。検証部204は、pow(g,f)×pow(g,f’)≡G×pow(G,hD’(i))mod pとなるかを確認する(S503)。検証部203がステップS503における数式が成り立つと判定した場合(S503:yes)、保管サーバ装置20は、受信した分散データは正しいデータであるものとしてD(i)203を保管する(S601)。 Subsequently, the management process in step S60 will be described. The verification unit 204 i confirms whether pow (g 1 , f i ) × pow (g 2 , f ′ i ) ≡G 1 × pow (G 2 , h D ′ (i) ) mod p holds (S 503). ). When the verification unit 203 i determines that the mathematical expression in step S503 holds (S503: yes), the storage server device 20 i stores the received distributed data as D (i) 203 i as correct data (S601). ).

一方、検証部204はステップS503における数式が成り立たないと判定した場合(S503:no)、ERRORとして処理する(S602)。具体的には、例えば、検証部204は、ERRORを、保管サーバ装置20の出力装置506に出力する。また、例えば、検証部204は、クライアント装置10に通知してもよい。この場合、例えば、クライアント装置10は、分散データD(i)を単に再送信する、又は分散データD(i)を再生成した上で、保管サーバ装置20に再送信し、保管サーバ装置20は、再受信した分散データD(i)を再検証する。 On the other hand, when the verification unit 204 i determines that the mathematical expression in step S503 does not hold (S503: no), the verification unit 204 i processes it as ERROR (S602). Specifically, for example, the verification unit 204 i outputs ERROR to the output device 506 of the storage server device 20 i . Further, for example, the verification unit 204 i may notify the client device 10. In this case, for example, the client device 10 simply retransmits the distributed data D (i), or regenerates the distributed data D (i) and then retransmits it to the storage server device 20 i , and the storage server device 20. i re-verifies the re-received distributed data D (i).

以下、ステップS503における数式の成否を判定することによって、受信した分散データが正しい値であるか否かを判定できる理由について説明する。前述した定義より、G=pow(g,h)×pow(g,a)mod p、G=pow(g,h)×pow(g,b)mod p、F(X)=h+hX mod q、F’(X)=a+bX mod q、F(hD’(i))=f、F’(hD’(i))=f’であることから、
(ステップS503の数式の右辺)
≡G×pow(G,hD’(i)) mod p
≡{pow(g1-,hs)×pow(g,a)}×{pow(pow(g,h)×pow(g,b)),hD’(i))} mod p
≡pow(g,hs+hD’(i))×pow(g,a+bhD’(i)) mod p
≡pow(g,F(hD’(i))×pow(g,F’(hD’(i)) mod p
≡pow(g,f)×pow(g,f’
≡(ステップS503の数式の左辺)
である。
Hereinafter, the reason why it is possible to determine whether or not the received distributed data has a correct value by determining the success or failure of the mathematical expression in step S503 will be described. From the above definition, G 1 = pow (g 1 , h S ) × pow (g 2 , a) mod p, G 2 = pow (g 1 , h R ) × pow (g 2 , b) mod p, F (X) = h S + h R X mod q, F '(X) = a + bX mod q, F (h D' (i)) = f i, in F '(h D' (i )) = f 'i Because there is
(Right side of the equation in step S503)
≡G 1 × pow (G 2 , h D ′ (i) ) mod p
≡ {pow (g 1-, hs) × pow (g 2 , a)} × {pow (pow (g 1 , h R ) × pow (g 2 , b)), h D ′ (i) )} mod p
≡ pow (g 1 , hs + h R h D ′ (i) ) × pow (g 2 , a + bh D ′ (i) ) mod p
≡pow (g 1 , F (h D ′ (i) ) × pow (g 2 , F ′ (h D ′ (i) ) mod p
≡ pow (g 1 , f i ) × pow (g 2 , f ′ i ).
≡ (left side of equation in step S503)
Is.

従って、正しい公開パラメータ及び検証用データを取得した保管サーバ装置20であれば、ステップS503における数式の成否を確認することにより、受信した分散データが正しい値であるか否かを判定することができる。 Therefore, if the storage server device 20 i has acquired the correct public parameters and verification data, it is possible to determine whether or not the received distributed data is a correct value by checking the success or failure of the mathematical expression in step S503. it can.

次に、復元化処理について図4、図7、及び図9を用いて説明する。図4は、秘密分散システム1全体による復元化処理の一例を示すシーケンス図である。図4の処理は、例えば、クライアント装置10のユーザからの指示(復元化対象の秘密情報を示す情報を含む)を契機として開始する。まず、クライアント装置10は、2つの保管サーバ装置20それぞれから、分散データD(i)を取得する(ステップS70)。   Next, the restoration process will be described with reference to FIGS. 4, 7, and 9. FIG. 4 is a sequence diagram showing an example of restoration processing by the entire secret sharing system 1. The process of FIG. 4 is triggered by, for example, an instruction from the user of the client device 10 (including information indicating the confidential information to be restored). First, the client device 10 acquires the distributed data D (i) from each of the two storage server devices 20 (step S70).

具体的には、例えば、クライアント装置10のデータ復元部105は、例えばランダムに選択した2つの保管サーバ装置20に対して、分散データD(i)の送信指示を出す。当該2つの保管サーバ装置20それぞれは、自身が保持する分散データD(i)をクライアント装置10に対して送信する(ステップS71)。   Specifically, for example, the data restoration unit 105 of the client device 10 issues a transmission instruction of the distributed data D (i) to, for example, two randomly selected storage server devices 20. Each of the two storage server devices 20 transmits the distributed data D (i) held by itself to the client device 10 (step S71).

また、クライアント装置10は、検証用データ公開装置30から、検証値データ(G,G)を取得する(ステップS80)。具体的には、例えば、クライアント装置10のデータ復元部105は、検証用データ公開装置30に対して、検証値データ(G,G)の送信指示を出す。検証用データ公開装置30は、(G,G)をクライアント装置10に対して送信する(ステップS81)。 Further, the client device 10 acquires the verification value data (G 1 , G 2 ) from the verification data disclosure device 30 (step S80). Specifically, for example, the data restoration unit 105 of the client device 10 issues an instruction to send the verification value data (G 1 , G 2 ) to the verification data disclosure device 30. The verification data disclosure device 30 transmits (G 1 , G 2 ) to the client device 10 (step S81).

なお、クライアント装置10は、検証用パラメータ生成時に検証用パラメータをクライアント装置10内に保存しなかった場合は、ステップS80〜S81において、検証用パラメータをさらに検証用データ公開装置30から取得する。続いて、クライアント装置10のデータ復元部105は、取得した分散データD(i)の正当性を確認しつつ、秘密情報Sを復元する(ステップS90)。   If the verification parameter is not stored in the client device 10 when the verification parameter is generated, the client device 10 further acquires the verification parameter from the verification data disclosure device 30 in steps S80 to S81. Then, the data restoration unit 105 of the client device 10 restores the secret information S while confirming the validity of the acquired distributed data D (i) (step S90).

図7は、クライアント装置10による復元化処理の詳細の一例を示すフローチャートである。図7は、ステップS70における分散データ取得処理、ステップS90における秘密情報の復元処理の詳細を示す。   FIG. 7 is a flowchart showing an example of details of the restoration processing by the client device 10. FIG. 7 shows details of the distributed data acquisition processing in step S70 and the confidential information restoration processing in step S90.

まず、ステップS70の詳細について説明する。クライアント装置10のデータ復元部105は、n−1個の保管サーバ装置20の内、未選択の(即ち後述するステップS903及びステップS905の判定対象となっていない)保管サーバ装置20があるか否かを判定する(S701)。データ復元部105は、未選択の保管サーバ装置20が、ないと判定した場合(S701:no)、ERRORを返す(S906)。具体的には、例えば、データ復元部105は、ERRORを、クライアント装置10の出力装置506に出力する。   First, the details of step S70 will be described. The data restoration unit 105 of the client device 10 determines whether or not there is an unselected storage server device 20 (that is, not a determination target of step S903 and step S905 described later) among the n−1 storage server devices 20. It is determined (S701). When the data restoration unit 105 determines that there is no unselected storage server device 20 (S701: no), it returns ERROR (S906). Specifically, for example, the data restoration unit 105 outputs ERROR to the output device 506 of the client device 10.

データ復元部105は、未選択の保管サーバ装置20があると判定した場合(S701:yes)、未選択の保管サーバ装置20を1つ選択し、選択した保管サーバ装置20に対して、分散データD(i)の送信指示を出し、当該保管サーバ装置20から、分散データD(i)を取得する(S702)。   When the data restoration unit 105 determines that there is an unselected storage server device 20 (S701: yes), it selects one unselected storage server device 20 and distributes the distributed data to the selected storage server device 20. A transmission instruction of D (i) is issued, and distributed data D (i) is acquired from the storage server device 20 (S702).

続いて、前述したように、クライアント装置10は、検証用データ公開装置30から、検証値データ(G,G)を取得する(ステップS80)。なお、クライアント装置10が検証値データ(G,G)を取得済みの場合は、ステップS80は省略されてもよい。 Subsequently, as described above, the client device 10 acquires the verification value data (G 1 , G 2 ) from the verification data disclosure device 30 (step S80). If the client device 10 has already acquired the verification value data (G 1 , G 2 ), step S80 may be omitted.

次に、ステップS90の詳細について説明する。クライアント装置10のデータ復元部105は、取得した分散データD(i)=D’(i)||D(i,n−1)=f||D(i,n)=f’それぞれに対して、部分分散データD’(i)のハッシュ値H(D’(i))=hD’(i)を計算する(S901)。 Next, the details of step S90 will be described. Data recovery unit 105 of the client device 10 acquires the distributed data D (i) = D '( i) || D (i, n-1) = f i || D (i, n) = f' i , respectively On the other hand, the hash value H (D ′ (i)) = h D ′ (i) of the partial variance data D ′ (i) is calculated (S901).

そして、データ復元部105は、生成したハッシュ値H(D’(i))=hD’(i)に対して、pow(g,f)×pow(g,f’)≡G×pow(G,hD’(i))mod pとなるかを確認する(S902)。データ復元部105は、ステップS902における数式が成り立たないと判定した場合(S902:no)、ステップS701に戻り、新たな分散データを選択する。 Then, the data restoring unit 105, the generated hash value H (D '(i)) = h D' with respect to (i), pow (g 1 , f i) × pow (g 2, f 'i) ≡ It is confirmed whether G 1 × pow (G 2 , h D ′ (i) ) mod p is obtained (S902). When the data restoration unit 105 determines that the mathematical expression in step S902 does not hold (S902: no), the data restoration unit 105 returns to step S701 and selects new distributed data.

なお、ステップS902の数式の検証は、ステップS503と同様である。つまり、ステップS902における検証が実行されることにより、保管処理から復元までの間のいずれかのタイミングにおける分散データの改竄(及び破損等)を検知し、ひいては改竄された分散データを用いた復元処理を実行せずに済む。なお、分散データの改竄検知処理は、保管処理時(ステップS501〜S503)又は復元処理時(ステップS901〜S902)の一方のタイミングのみで実行されてもよい。   The verification of the mathematical formula in step S902 is the same as that in step S503. That is, by performing the verification in step S902, tampering (and damage, etc.) of the distributed data at any timing between the storage process and the restoration is detected, and thus the restoration process using the tampered distributed data. Need not be executed. It should be noted that the tampering detection processing of the distributed data may be executed only at one of the timing of the storage processing (steps S501 to S503) or the restoration processing (steps S901 to S902).

そして、データ復元部105は、ステップS902の数式が成立する分散データを2つ収集済みであるか否かを判定する(S903)。データ復元部105は、ステップS902の数式が成立する分散データをまだ2つ収集していない場合には(S903:no)、ステップS701に戻り、新たな分散データを選択する。   Then, the data restoration unit 105 determines whether or not two pieces of distributed data satisfying the mathematical formula of step S902 have been collected (S903). If two pieces of distributed data satisfying the mathematical expression of step S902 have not been collected yet (S903: no), the data restoration unit 105 returns to step S701 and selects new distributed data.

データ復元部105は、ステップS902の数式が成立する2つの分散データを収集済みであると判定した場合(S903:yes)、その2つの分散データを用いて、秘密情報Sを復元する(S904)。   When the data restoration unit 105 determines that the two pieces of shared data satisfying the mathematical formula of step S902 have been collected (S903: yes), the secret information S is restored using the two pieces of shared data (S904). .

以下、ステップS904の詳細について説明する。ここでは、ステップS902の数式が成立する2つの分散データをそれぞれD(i)=D’(i)||D(i,n−1)=f||D(i,n)=f’、D(j)=D’(j)||D(j,n−1)=f||D(j,n)=f’とする。 The details of step S904 will be described below. Here, the two distributed data formulas step S902 is satisfied, respectively D (i) = D '( i) || D (i, n-1) = f i || D (i, n) = f' i, D (j) = D '(j) || D (j, n-1) = f j || D (j, n) = f' and j.

まず、データ復元部105は、分散データD(i)及びD(j)に対して、それぞれ、後ろ2d’長のデータ、即ち、付加分散データであるD(i,n−1)=f||D(i,n)=f’及びD(j,n−1)=f||D(j,n)=f’を削除して得られる残りのデータである部分分散データD’(i)=D(i,0)||・・・||D(i,n−2)及びD’(j)=D(j,0)||・・・||D(j,n−2)、をデータ長dのブロックに分割する。 First, the data recovery unit 105, to the distributed data D (i) and D (j), respectively, behind 2d 'length of data, namely, an additional distributed data D (i, n-1) = f i || D (i, n) = f ′ i and D (j, n−1) = f j || D (j, n) = f ′ j , which is the remaining data obtained by deleting partial distribution data D '(i) = D (i, 0) || ... || D (i, n-2) and D' (j) = D (j, 0) || ... || D (j , N−2) is divided into blocks of data length d.

つまり、部分分散データD’(i)に対するデータ長dの各ブロックは、D(i,0),・・・,D(i,n−2)であり、部分分散データD’(j)に対するデータ長dの各ブロックはD(j,0),・・・,D(j,n−2)である。
そして、データ復元部105は、r=j−i mod nに対して、以下の場合に分けてS,・・・,Sn−1を求める。
That is, each block of the data length d for the partial distributed data D ′ (i) is D (i, 0), ..., D (i, n−2), and for the partial distributed data D ′ (j). Each block of the data length d is D (j, 0), ..., D (j, n-2).
Then, the data restoration unit 105 obtains S 1 , ..., S n−1 for r = j−i mod n in the following cases.

Case1:D(i,i)がD(i,l)に含まれる時(但し0≦l≦n−2)、終了条件1を満たすまで以下を繰返す。但し終了条件1は、i−kr=n−1(1≦k≦n−1)。
k=1:S=D(i,i)xor D(j,i)xor S
k=2:Sr+r=D(i,i−r)xor D(j,i−r)xor S
・・・
k=n−1:S(n−1)r=D(i,i−(n−2)r)xor D(j,i−(n−2)r)xor S(n−2)r
Case 1: When D (i, i) is included in D (i, l) (where 0 ≦ l ≦ n−2), the following is repeated until end condition 1 is satisfied. However, the termination condition 1 is i-kr = n-1 (1≤k≤n-1).
k = 1: S r = D (i, i) xor D (j, i) xor S 0 ,
k = 2: S r + r = D (i, i-r) xor D (j, i-r) xor S r ,
...
k = n-1: S (n-1) r = D (i, i- (n-2) r) xor D (j, i- (n-2) r) xor S (n-2) r

Case2:D(j,j)がD(j,l)に含まれる時、終了条件2を満たすまで以下を繰返す。但し終了条件2は以下。j+kr=n−1(1≦k≦n−1)。
k=1:S−r=D(i,j)xor D(j,j)xor S
k=2:S−r−r=D(i,j+r)xor D(j,j+r)xor S−r
・・・
k=n−1:S−(n−1)r=D(i,j+(n−2)r)xor D(j,i+(n−2)r)xor S−(n−2)r
Case 2: When D (j, j) is included in D (j, l), the following process is repeated until end condition 2 is satisfied. However, the end condition 2 is as follows. j + kr = n-1 (1≤k≤n-1).
k = 1: S− r = D (i, j) xor D (j, j) xor S 0 ,
k = 2: S -r-r = D (i, j + r) xorD (j, j + r) xorS- r ,
...
k = n-1: S- (n-1) r = D (i, j + (n-2) r) xor D (j, i + (n-2) r) xor S- (n-2) r

尚、Case1、及びCase2における演算子±はmod nの演算を示す。以下、上述したCase1、及びCase2におけるS,・・・,Sn−1の算出処理の具体例を説明する。 The operator ± in Case 1 and Case 2 indicates the calculation of mod n. Hereinafter, a specific example of the calculation processing of S 1 , ..., S n−1 in Case 1 and Case 2 described above will be described.

図9は、保管サーバ装置20に保管された分散データから付加分散データを削除して得られる部分分散データの各ブロックの値を示すテーブルである。図9は、n=5の場合の例を示す。従って、図9は、図8のテーブルからj=4の列とj=5の列が削除されたテーブルであるテーブルである。   FIG. 9 is a table showing the value of each block of the partial distributed data obtained by deleting the additional distributed data from the distributed data stored in the storage server device 20. FIG. 9 shows an example when n = 5. Therefore, FIG. 9 is a table in which the columns of j = 4 and j = 5 are deleted from the table of FIG.

図9のテーブルは5行×4列の表であるため、対角成分のうちD(4,4)を含まない。選択された2つの分散データがD(4)を含む場合と、含まない場合と、において、Case1及びCase2の該当有無が異なる。   Since the table of FIG. 9 is a table of 5 rows × 4 columns, D (4,4) is not included in the diagonal components. Whether Case 1 and Case 2 are applicable or not is different depending on whether the selected two pieces of distributed data include D (4) or not.

ここで、例えば、i=4,j=0の例、即ちD(4)とD(0)とが選択された例を説明しする。まず、r=j−i mod 5=0−4=−4である。D(4,4)は、D(4,l)={D(4,0),D(4,1),D(4,2),D(4,3)}に含まれないため、本例はCase1には該当しない。
また、D(0,0)は、D(0,l)={D(0,0),D(0,1),D(0,2),D(0,3)}に含まれるため、本例はCase2に該当する。
Here, for example, an example in which i = 4 and j = 0, that is, an example in which D (4) and D (0) are selected will be described. First, r = j-i mod 5 = 0-4 = -4. Since D (4,4) is not included in D (4, l) = {D (4,0), D (4,1), D (4,2), D (4,3)}, This example does not correspond to Case 1.
Since D (0,0) is included in D (0, l) = {D (0,0), D (0,1), D (0,2), D (0,3)} This example corresponds to Case 2.

k=1:S−(−4)=D(4,0) xor D(0,0) xor S0=S4であり、終了条件2については、0+1(−4)=−4=1≠4であるため、満たされない。   k = 1: S − (− 4) = D (4,0) xor D (0,0) xor S0 = S4, and for the end condition 2, 0 + 1 (−4) = − 4 = 1 ≠ 4. Because there is, it is not satisfied.

k=2:S−(−4)−(−4)=D(4,1)) xor D(0,1) xor S4=S3であり、終了条件2については、0+2(−4)=−8=2≠4であるため、満たされない。   k = 2: S − (− 4) − (− 4) = D (4,1)) xor D (0,1) xor S4 = S3, and 0 + 2 (−4) = − for the end condition 2. Since 8 = 2 ≠ 4, it is not satisfied.

k=3:S−3(−4)=D(4,2) xor D(0,2) xor S3=S2であり、終了条件2については、0+3(−4)=−12=3≠4であるため、満たされない。   k = 3: S−3 (−4) = D (4,2) xor D (0,2) xor S3 = S2, and for the end condition 2, 0 + 3 (−4) = − 12 = 3 ≠ 4. Is not satisfied.

k=4:S−4(−4)=D(4,3) xor D(0,3) xor S2=S1であり、終了条件2については、0+4(−4)=−16=4=4であり、満たされるため、Case2の計算が終了する。これにより、Case2からS1、S2、S3、S4の全てが算出された。   k = 4: S-4 (-4) = D (4,3) xor D (0,3) xor S2 = S1, and for the end condition 2, 0 + 4 (-4) =-16 = 4 = 4. Since the above condition is satisfied, the calculation of Case2 ends. Thereby, all of S1, S2, S3, and S4 from Case2 were calculated.

次に、ここで、例えば、i=3,j=0の例、即ちD(3)とD(0)とが選択された例を説明する。まずr=j−i mod 5 =0−3=−3である。D(3,3)はD(3,l)={D(3,0),D(3,1),D(3,2),D(3,3)}に含まれるため、本例はCase1に該当する。   Next, an example in which i = 3 and j = 0, that is, an example in which D (3) and D (0) are selected will be described. First, r = j-i mod 5 = 0-3 = -3. Since D (3,3) is included in D (3,1) = {D (3,0), D (3,1), D (3,2), D (3,3)}, this example Corresponds to Case 1.

k=1:S(−3)=D(3,3) xor D(0,3) xor S0=S2であり、終了条件1については、3−1(−3)=6=1≠4であり、満たされない。   k = 1: S (−3) = D (3,3) xor D (0,3) xor S0 = S2, and for the end condition 1, 3-1 (−3) = 6 = 1 ≠ 4. Yes, not satisfied.

k=2:S(−3)+(−3)=D(3,1) xor D(0,1) xor S2=S4であり、終了条件1については、3−2(−3)=9=4=4であり、満たされるため、Case1の計算が終了する。
また、D(0,0)も、D(0,l)={D(0,0),D(0,1),D(0,2),D(0,3)}に含まれるため、本例はCase2にも該当する。
k = 2: S (−3) + (− 3) = D (3,1) xor D (0,1) xor S2 = S4, and 3-2 (−3) = 9 for the end condition 1. = 4 = 4, which is satisfied, the calculation of Case1 ends.
Further, D (0,0) is also included in D (0, l) = {D (0,0), D (0,1), D (0,2), D (0,3)}. This example also applies to Case 2.

k=1:S−(−3)=D(3,0) xor D(0,0) xor S0=S3であり、終了条件2については、0+1(−3)=−3=2≠4であるため、満たされない。   k = 1: S − (− 3) = D (3,0) xor D (0,0) xor S0 = S3, and the termination condition 2 is 0 + 1 (−3) = − 3 = 2 ≠ 4. Because there is, it is not satisfied.

k=2:S−(−3)−(−3)=D(3,2)) xor D(0,2) xor S3=S1であり、終了条件2については、0+2(−3)=−6=2=4であり、満たされるため、Case2の計算が終了する。これにより、Case1及びCase2からS1、S2、S3、S4の全てが算出された。
つまり、どの分散データの組み合わせが選択されば場合であってもS1,S2,S3,S4を計算することができる。
k = 2: S − (− 3) − (− 3) = D (3,2)) xor D (0,2) xor S3 = S1, and for the end condition 2, 0 + 2 (−3) = − Since 6 = 2 = 4, which is satisfied, the calculation of Case2 ends. As a result, all of S1, S2, S3, and S4 were calculated from Case1 and Case2.
That is, S1, S2, S3, S4 can be calculated regardless of which combination of distributed data is selected.

続いて、データ復元部105は、Case1及び/又はCase2により出力されるS,・・・,Sn−1を連結することで復元された秘密情報である復元データS’=S||・・・||Sn−1を復元する。尚、ここでは復元されたデータと元データとを区別する為に復元された秘密情報を復元データS’と記す。 Subsequently, the data restoration unit 105 restores data S ′ = S 1 || which is secret information restored by connecting S 1 , ..., S n−1 output by Case 1 and / or Case 2. ... || Sn -1 is restored. Note that here, the secret information restored to distinguish the restored data from the original data is referred to as restored data S ′.

データ復元部105は、ステップS904で復元データS’=S||・・・||Sn−1を復元したら、f−H(R’)hD’(i)=H(S’)であるかを確認する(S905)。尚、R’とは以下の処理によって復元される乱数データである。 When the data restoration unit 105 restores the restored data S ′ = S 1 || ... || S n−1 in step S904, f i −H (R ′) h D ′ (i) = H (S ′ ) Is confirmed (S905). Note that R ′ is random number data restored by the following processing.

データ復元部105は、R=D(i,j)xorS(i−j mod n)(0≦j≦n−2)を計算し、出力されるR,・・・,Rn−2を連結することで乱数データR’=R||・・・||Rn−2を復元する。 The data restoration unit 105 calculates R j = D (i, j) xorS (i−j mod n) (0 ≦ j ≦ n−2), and outputs R 0 , ..., R n−2. Are connected to restore random number data R ′ = R 0 || ... || R n-2 .

そして、データ復元部105は、D(i,n−1)=fと、H(D’(i))=hD’(i)と、復元したS’,R’から、前述したようにステップS905における数式f−H(R’)×hD’(i)=H(S’)が成立するか否かを判定する。 Then, the data restoring unit 105, D (i, n-1 ) and = f i, and H (D '(i)) = h D' (i), restored S ', R' from as described above Then, it is determined whether or not the mathematical expression f i −H (R ′) × h D ′ (i) = H (S ′) in step S905 holds.

データ復元部105がステップS905の数式が成り立つと判定した場合(S905:yes)、復元データS’は秘密情報Sと同一であり、復元データS’を出力して復元化処理を終了する。データ復元部105がステップS905の数式が成り立たないと判定した場合(S905:no)、復元データS’は秘密情報Sと同一ではないため、ステップS701に戻る。   When the data restoration unit 105 determines that the mathematical expression of step S905 holds (S905: yes), the restoration data S'is the same as the secret information S, and the restoration data S'is output and the restoration processing ends. When the data restoration unit 105 determines that the mathematical expression of step S905 does not hold (S905: no), the restoration data S ′ is not the same as the secret information S, and thus the process returns to step S701.

以下、ステップS905における数式の成否を判定することによって、復元の成否を判定できる理由について説明する。前述した定義より、F(hD’(i))=f、F(X)=h+hX mod qであることから、(ステップS905の左辺)=f−H(R’)×hD’(i)=F(hD’(i))−H(R’)×hD’(i)-=h+hD’(i)−H(R’)×hD’(i)である。従って、h=H(S’)及びh=H(R’)が成立すれば、即ちSのハッシュ値とS’のハッシュ値とが等しく、かつRのハッシュ値とR’のハッシュ値とが等しければ、(ステップS905の左辺)=(ステップS905の右辺)が成立する。つまり、(ステップS905の左辺)=(ステップS905の右辺)が成立すれば極めて高い確率でSとS’は等しいことがいえる。 Hereinafter, the reason why the success or failure of the restoration can be determined by determining the success or failure of the mathematical expression in step S905 will be described. The definition described above, F (h D '(i )) = f i, since it is F (X) = h S + h R X mod q, ( left side in step S905) = f i -H (R ') × h D '(i) = F (h D' (i)) -H (R ') × h D' (i) - = h S + h R h D '(i) -H (R') × h D '(i) . Therefore, if h S = H (S ′) and h R = H (R ′) are satisfied, that is, the hash value of S and the hash value of S ′ are equal, and the hash value of R and the hash value of R ′ are equal. If they are equal to each other, (left side of step S905) = (right side of step S905) is satisfied. That is, if (left side of step S905) = (right side of step S905) is satisfied, it can be said that S and S ′ are equal to each other with an extremely high probability.

以上、本実施例の秘密情報分散システムによれば、ステップS503又はステップS902の検証処理を行うことで、分散データ保管時又は秘密情報復元時に、分散データD(i)の改竄及び破損等を、少ない計算量で検知することができる。また、分散データを生成するための計算量も少ない。   As described above, according to the secret information distribution system of the present exemplary embodiment, by performing the verification process of step S503 or step S902, it is possible to prevent falsification and damage of the distributed data D (i) at the time of storing the distributed data or restoring the confidential information. It can be detected with a small amount of calculation. Also, the amount of calculation for generating the distributed data is small.

尚、検証用データ(G,G)は、H(S)=h,H(R)=hの値を知っている者のみが生成することできる値であるため、分散データを生成した者以外は、正しい検証用データ(G,G)を生成することはできない。 The verification data (G 1 , G 2 ) is a value that can be generated only by a person who knows the values of H (S) = h S , H (R) = h R. Only the person who generated it can generate correct verification data (G 1 , G 2 ).

また、各分散データD(i)(0≦i≦n−1)に対して、検証用データ(G,G)は、同一である為、ステップS503又はステップS902の検証処理をパスした各分散データD(i)(0≦i≦n−1)は、同一の秘密情報Sを分散した物であることも、少ない計算量で確認できる。また、秘密情報を復元するための計算量も少ない。 Further, since the verification data (G 1 , G 2 ) is the same for each distributed data D (i) (0 ≦ i ≦ n−1), the verification processing of step S503 or step S902 is passed. It can also be confirmed with a small amount of calculation that each distributed data D (i) (0 ≦ i ≦ n−1) is the same secret information S distributed. Moreover, the amount of calculation for restoring the secret information is small.

さらに検証用データ(G,G)は、秘密情報Sの改竄検知機能も有するデータであるので、ステップS905の検証処理を行うことで、復元データS’は、秘密情報S(元データ)と一致していることも確認することができる。 Furthermore, since the verification data (G 1 , G 2 ) is data that also has a function of detecting the alteration of the secret information S, the restoration data S ′ becomes the secret information S (original data) by performing the verification process in step S905. It can also be confirmed that it agrees with.

なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。   It should be noted that the present invention is not limited to the above-described embodiments, but includes various modifications. For example, the above-described embodiments have been described in detail for the purpose of explaining the present invention in an easy-to-understand manner, and are not necessarily limited to those having all the configurations described. Further, a part of the configuration of a certain embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of a certain embodiment. Further, it is possible to add / delete / replace other configurations with respect to a part of the configurations of the respective embodiments.

また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。   Further, the above-described respective configurations, functions, processing units, processing means, etc. may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Further, the above-described respective configurations, functions and the like may be realized by software by a processor interpreting and executing a program for realizing each function. Information such as a program, a table, and a file that realizes each function can be placed in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, and a DVD.

また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。   Further, the control lines and information lines are shown as being considered necessary for explanation, and not all control lines and information lines are shown in the product. In reality, it may be considered that almost all the configurations are connected to each other.

1 秘密分散システム、10 クライアント装置、20 保管サーバ装置、30 検証用データ公開装置、50 計算機、104 分散データ生成部、105 データ復元部、106 乱数生成部、107 秘密情報、203 分散データ、303 検証用データ、304 公開パラメータ、501 通信装置、502 入力装置、503 メモリ、504 補助記憶装置、505 CPU、506 出力装置 1 secret sharing system, 10 client device, 20 storage server device, 30 verification data disclosure device, 50 computer, 104 distributed data generation unit, 105 data restoration unit, 106 random number generation unit, 107 secret information, 203 shared data, 303 verification Data, 304 public parameters, 501 communication device, 502 input device, 503 memory, 504 auxiliary storage device, 505 CPU, 506 output device

Claims (12)

秘密分散装置であって、
プロセッサと記憶装置とを備え、
前記記憶装置は、秘密データと、公開パラメータと、を保持し、
前記プロセッサは、
前記秘密データを分割し、
前記分割した秘密データと、複数の乱数からなる第1乱数群と、の排他的論理和に基づいて、複数の部分分散データを生成し、
前記秘密データの所定のハッシュ関数によるハッシュ値と、前記第1乱数群の乱数から得られる第1の値の前記所定のハッシュ関数によるハッシュ値と、前記複数の部分分散データそれぞれの前記所定のハッシュ関数によるハッシュ値と、を算出し、
前記複数の部分分散データそれぞれについて、前記秘密データのハッシュ値と前記第1の値のハッシュ値とを係数又は定数項として有する第1の関数に当該部分分散データを代入して得られる値と、前記第1乱数群に含まれない乱数からなる第2乱数群の乱数を係数又は定数項として有する第2の関数に当該部分分散データを代入して得られる値と、を含む付加分散データを、当該部分分散データに付加して分散データを生成し、
前記分散データそれぞれを異なる出力先へと出力し、
前記公開パラメータと前記秘密データのハッシュ値と前記第2乱数群に含まれる第1乱数とに基づいて算出される第2の値と、前記公開パラメータと前記第1の値のハッシュ値と前記第2乱数群に含まれる第2乱数とに基づいて算出される第3の値と、を前記分散データの検証用データに含める、秘密分散装置。
A secret sharing device,
A processor and a memory device,
The storage device holds secret data and public parameters,
The processor is
Divide the secret data,
Generating a plurality of partial distributed data based on an exclusive OR of the divided secret data and a first random number group composed of a plurality of random numbers,
A hash value of the secret data by a predetermined hash function, a hash value of a first value obtained from a random number of the first random number group by the predetermined hash function, and the predetermined hash of each of the plurality of partial distributed data. Calculate the hash value by the function and
A value obtained by substituting the partial distributed data into a first function having a hash value of the secret data and a hash value of the first value as a coefficient or a constant term for each of the plurality of partial shared data. A value obtained by substituting the partial dispersion data into a second function having a random number of a second random number group consisting of random numbers not included in the first random number group as a coefficient or a constant term, Generates distributed data by adding to the partial distributed data,
Output each of the distributed data to different output destinations,
A second value calculated based on the public parameter, the hash value of the secret data, and the first random number included in the second random number group, the public parameter, the hash value of the first value, and the second value. A secret sharing apparatus, which includes a third value calculated based on a second random number included in a group of two random numbers and verification data of the shared data.
請求項1に記載の秘密分散装置であって、
前記公開パラメータは、q=(p−1)/2が素数となるような素数pと、pを法とした有限体の位数qの異なる元であるg∈GF(p)及びg∈GF(p)と、を含み、
前記第1乱数群は、乱数R,・・・,Rn−2(R∈{0,1}(0≦j≦n−2))を含み、
前記第2乱数群は、乱数a∈GF(q)及び乱数b∈GF(q)を含み、
前記第1の値は、前記乱数を結合したR=R||・・・||Rn−2であり、
前記第1の関数は、F(X)=h+hX mod qであり(但し、hは前記秘密データのハッシュ値であり、hは、前記第1の値Rのハッシュ値である)、
前記第2の関数は、F’(X)=a+bX mod qであり、
前記プロセッサは、
前記秘密データS∈{0,1}d(n−1)を、それぞれ長さdのn−1個のデータS,・・・,Sn−1に分割し、
D(i,j)=S(i−j mod n)xor R(0≦i≦n−1,0≦j≦n−2、但しS∈{0})を、各(i,j)について計算し、
各D(i,j)を各iについて連結したD’(i)=D(i,0)||・・・||D(i,n−2)を前記部分分散データとして生成し、
前記部分分散データD’(i)(0≦i≦n−1)それぞれに対して、前記付加分散データD(i,n−1)=F(hD’(i))及びD(i,n)=F’(hD’(i))を計算して、前記付加分散データと当該部分分散データを結合したD(i)=D’(i)||D(i,n−1)||D(i,n)を、前記分散データとして生成し、
=pow(g,h)×pow(g,a)mod pを前記第2の値として算出し、
=pow(g,h)×pow(g,b)mod pを前記第3の値として算出する、秘密分散装置。
The secret sharing device according to claim 1,
The public parameters are prime numbers p such that q = (p-1) / 2 is a prime number and g 1 εGF (p) and g 2 which are different elements of order q of a finite field modulo p. ∈ GF (p) and,
The first random number group includes random numbers R 0 , ..., R n−2 (R j ε {0,1} d (0 ≦ j ≦ n−2)),
The second random number group includes a random number aεGF (q) and a random number bεGF (q),
The first value is R = R 0 || ... || R n-2 obtained by combining the random numbers,
The first function is F (X) = h S + h R X mod q (where h s is a hash value of the secret data, and h R is a hash value of the first value R). is there),
The second function is F ′ (X) = a + bX mod q,
The processor is
The secret data Sε {0,1} d (n-1) is divided into n-1 pieces of data S 1 , ..., S n-1 each having a length d,
D (i, j) = S (i−j mod n) xor R j (0 ≦ i ≦ n−1, 0 ≦ j ≦ n−2, where S 0 ε {0} d ) for each (i, j),
D '(i) = D (i, 0) || ... || D (i, n-2), which is obtained by concatenating each D (i, j) for each i, is generated as the partial variance data,
For each of the partial variance data D ′ (i) (0 ≦ i ≦ n−1), the additional variance data D (i, n−1) = F (h D ′ (i) ) and D (i, n) = F ′ (h D ′ (i) ) is calculated and the additional dispersion data and the partial dispersion data are combined to obtain D (i) = D ′ (i) || D (i, n−1). || D (i, n) is generated as the distributed data,
G 1 = pow (g 1 , h S ) × pow (g 2 , a) mod p is calculated as the second value,
A secret sharing apparatus that calculates G 2 = pow (g 1 , h R ) × pow (g 2 , b) mod p as the third value.
請求項1に記載の秘密分散装置であって、
前記記憶装置は、
復元対象の第1秘密データから生成された第1分散データと、第2分散データと、を保持し、
前記プロセッサは、
前記第1分散データと前記第2分散データとから前記第1秘密データの復元処理を実行し、
前記復元処理において、
前記第1分散データ及び第2分散データそれぞれから前記付加分散データを削除して、部分分散データを取得し、
前記第1分散データの部分分散データ及び前記第2分散データの部分分散データそれぞれを分割し、
前記第1分散データの部分分散データの分割後のデータと、前記第2分散データの部分分散データの分割後のデータと、の排他的論理和に基づいて、前記第1秘密データの復元分割データを生成し、
前記復元分割データを結合して、前記第1秘密データを復元する、秘密分散装置。
The secret sharing device according to claim 1,
The storage device is
Holding first distributed data generated from the first secret data to be restored and second distributed data,
The processor is
Executing restoration processing of the first secret data from the first distributed data and the second distributed data,
In the restoration process,
Deleting the additional distributed data from each of the first distributed data and the second distributed data to obtain partial distributed data,
Dividing each of the partial distributed data of the first distributed data and the partial distributed data of the second distributed data,
The restored divided data of the first secret data based on the exclusive OR of the divided data of the first distributed data after the division and the divided data of the second distributed data Produces
A secret sharing device that combines the restored divided data to restore the first secret data.
請求項3に記載の秘密分散装置であって、
前記プロセッサは、
前記第1分散データ及び前記第2分散データそれぞれに対して、当該分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定し、
前記第1分散データ及び前記第2分散データの双方が正しいデータであると判定した場合、前記復元処理を実行する、秘密分散装置。
The secret sharing device according to claim 3,
The processor is
For each of the first distributed data and the second distributed data, based on the additional distributed data corresponding to the distributed data and the second value and the third value included in the verification data. , Determine whether the distributed data is correct data,
A secret sharing apparatus that performs the restoration process when it is determined that both the first distributed data and the second distributed data are correct data.
請求項3に記載の秘密分散装置であって、
前記プロセッサは、
前記分割した後の第1分散データ及び前記分割した後の第2分散データと、前記復元分割データと、の排他的論理和に基づいて、前記第1秘密データの分散データの生成に用いられた前記第1乱数群の乱数を復元し、
前記復元した乱数から算出した前記第1の値の前記所定のハッシュ関数によるハッシュ値と、前記復元した第1秘密データの前記所定のハッシュ関数によるハッシュ値と、に基づいて、前記復元した第1秘密データが正しいデータであるか否かを判定する、秘密分散装置。
The secret sharing device according to claim 3,
The processor is
It was used to generate the distributed data of the first secret data based on the exclusive OR of the divided first distributed data, the divided second distributed data, and the restored divided data. Restore the random numbers of the first random number group,
The restored first first value is calculated based on the hash value of the first value calculated from the restored random number by the predetermined hash function and the hash value of the restored first secret data by the predetermined hash function. A secret sharing device that determines whether the secret data is correct data.
秘密分散システムであって、
秘密分散装置と、複数の保管装置と、検証用データ公開装置とを含み、
前記秘密分散装置は、
秘密データと、公開パラメータと、を保持し、
前記秘密データを分割し、
前記分割した秘密データと、複数の乱数からなる第1乱数群と、の排他的論理和に基づいて、複数の部分分散データを生成し、
前記秘密データの所定のハッシュ関数によるハッシュ値と、前記第1乱数群の乱数から得られる第1の値の前記所定のハッシュ関数によるハッシュ値と、前記複数の部分分散データそれぞれの前記所定のハッシュ関数によるハッシュ値と、を算出し、
前記複数の部分分散データそれぞれについて、前記秘密データのハッシュ値と前記第1の値のハッシュ値とを係数又は定数項として有する第1の関数に当該部分分散データを代入して得られる値と、前記第1乱数群に含まれない乱数からなる第2乱数群の乱数を係数又は定数項として有する第2の関数に当該部分分散データを代入して得られる値と、を含む付加分散データを、当該部分分散データに付加して分散データを生成し、
前記分散データそれぞれを異なる前記保管装置へ送信し、
前記公開パラメータと前記秘密データのハッシュ値と前記第2乱数群に含まれる第1乱数とに基づいて算出される第2の値と、前記公開パラメータと前記第1の値のハッシュ値と前記第2乱数群に含まれる第2乱数とに基づいて算出される第3の値と、を前記分散データの検証用データに含め、
前記検証用データ及び前記公開パラメータを前記検証用データ公開装置に送信し、
前記検証用データ公開装置は、前記秘密分散システム内において、前記検証用データ及び前記公開パラメータを公開する、秘密分散システム。
A secret sharing system,
Including a secret sharing device, a plurality of storage devices, and a verification data disclosure device,
The secret sharing device is
Holds secret data and public parameters,
Divide the secret data,
Generating a plurality of partial distributed data based on an exclusive OR of the divided secret data and a first random number group composed of a plurality of random numbers,
A hash value of the secret data by a predetermined hash function, a hash value of a first value obtained from a random number of the first random number group by the predetermined hash function, and the predetermined hash of each of the plurality of partial distributed data. Calculate the hash value by the function and
A value obtained by substituting the partial distributed data into a first function having a hash value of the secret data and a hash value of the first value as a coefficient or a constant term for each of the plurality of partial shared data. A value obtained by substituting the partial dispersion data into a second function having a random number of a second random number group consisting of random numbers not included in the first random number group as a coefficient or a constant term, Generates distributed data by adding to the partial distributed data,
Sending each of the distributed data to a different storage device,
A second value calculated based on the public parameter, the hash value of the secret data, and the first random number included in the second random number group, the public parameter, the hash value of the first value, and the second value. A third value calculated based on the second random number included in the two random number group, and the verification data of the distributed data,
Sending the verification data and the public parameters to the verification data publishing device,
The verification data disclosure device discloses the verification data and the disclosure parameter in the secret sharing system.
請求項6に記載の秘密分散システムであって、
前記公開パラメータは、q=(p−1)/2が素数となるような素数pと、pを法とした有限体の位数qの異なる元であるg∈GF(p)及びg∈GF(p)と、を含み、
前記第1乱数群は、乱数R,・・・,Rn−2(R∈{0,1}(0≦j≦n−2))を含み、
前記第2乱数群は、乱数a∈GF(q)及び乱数b∈GF(q)を含み、
前記第1の値は、前記乱数を結合したR=R||・・・||Rn−2であり、
前記第1の関数は、F(X)=h+hX mod qであり(但し、hは前記秘密データのハッシュ値であり、hは、前記第1の値Rのハッシュ値である)、
前記第2の関数は、F’(X)=a+bX mod qであり、
前記秘密分散装置は、
前記秘密データS∈{0,1}d(n−1)を、それぞれ長さdのn−1個のデータS,・・・,Sn−1に分割し、
D(i,j)=S(i−j mod n)xor R(0≦i≦n−1,0≦j≦n−2、但しS∈{0})を、各(i,j)について計算し、
各D(i,j)を各iについて連結したD’(i)=D(i,0)||・・・||D(i,n−2)を前記部分分散データとして生成し、
前記部分分散データD’(i)(0≦i≦n−1)それぞれに対して、前記付加分散データD(i,n−1)=F(hD’(i))及びD(i,n)=F’(hD’(i))を計算して、前記付加分散データと当該部分分散データを結合したD(i)=D’(i)||D(i,n−1)||D(i,n)を、前記分散データとして生成し、
=pow(g,h)×pow(g,a)mod pを前記第2の値として算出し、
=pow(g,h)×pow(g,b)mod pを前記第3の値として算出する、秘密分散システム。
The secret sharing system according to claim 6,
The public parameters are prime numbers p such that q = (p-1) / 2 is a prime number and g 1 εGF (p) and g 2 which are different elements of order q of a finite field modulo p. ∈ GF (p) and,
The first random number group includes random numbers R 0 , ..., R n−2 (R j ε {0,1} d (0 ≦ j ≦ n−2)),
The second random number group includes a random number aεGF (q) and a random number bεGF (q),
The first value is R = R 0 || ... || R n-2 obtained by combining the random numbers,
The first function is F (X) = h S + h R X mod q (where h s is a hash value of the secret data, and h R is a hash value of the first value R). is there),
The second function is F ′ (X) = a + bX mod q,
The secret sharing device is
The secret data Sε {0,1} d (n-1) is divided into n-1 pieces of data S 1 , ..., S n-1 each having a length d,
D (i, j) = S (i−j mod n) xor R j (0 ≦ i ≦ n−1, 0 ≦ j ≦ n−2, where S 0 ε {0} d ) for each (i, j),
D '(i) = D (i, 0) || ... || D (i, n-2), which is obtained by concatenating each D (i, j) for each i, is generated as the partial variance data,
For each of the partial variance data D ′ (i) (0 ≦ i ≦ n−1), the additional variance data D (i, n−1) = F (h D ′ (i) ) and D (i, n) = F ′ (h D ′ (i) ) is calculated and the additional dispersion data and the partial dispersion data are combined to obtain D (i) = D ′ (i) || D (i, n−1). || D (i, n) is generated as the distributed data,
G 1 = pow (g 1 , h S ) × pow (g 2 , a) mod p is calculated as the second value,
A secret sharing system that calculates G 2 = pow (g 1 , h R ) × pow (g 2 , b) mod p as the third value.
請求項6に記載の秘密分散システムであって、
前記秘密分散装置は、
復元対象の第1秘密データから生成された第1分散データと、第2分散データと、をそれぞれ異なる前記保管装置から受信し、
前記第1分散データと前記第2分散データとから前記第1秘密データの復元処理を実行し、
前記復元処理において、
前記第1分散データ及び第2分散データそれぞれから前記付加分散データを削除して、部分分散データを取得し、
前記第1分散データの部分分散データ及び前記第2分散データの部分分散データそれぞれを分割し、
前記第1分散データの部分分散データの分割後のデータと、前記第2分散データの部分分散データの分割後のデータと、の排他的論理和に基づいて、前記第1秘密データの復元分割データを生成し、
前記復元分割データを結合して、前記第1秘密データを復元する、秘密分散システム。
The secret sharing system according to claim 6,
The secret sharing device is
Receiving first distributed data generated from the first secret data to be restored and second distributed data from different storage devices,
Executing restoration processing of the first secret data from the first distributed data and the second distributed data,
In the restoration process,
Deleting the additional distributed data from each of the first distributed data and the second distributed data to obtain partial distributed data,
Dividing each of the partial distributed data of the first distributed data and the partial distributed data of the second distributed data,
The restored divided data of the first secret data based on the exclusive OR of the divided data of the first distributed data after the division and the divided data of the second distributed data Produces
A secret sharing system that combines the restored divided data to restore the first secret data.
請求項8に記載の秘密分散システムであって、
前記秘密分散装置は、
前記第1分散データ及び前記第2分散データそれぞれに対して、当該分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定する検証処理を行い、
前記第1分散データ及び前記第2分散データの双方が正しいデータであると判定した場合、前記復元処理を実行し、
前記第1分散データ及び前記第2分散データの少なくとも一方が正しいデータでないと判定した場合、前記第1分散データ及び前記第2分散データ以外の前記第1秘密データの分散データを保持している保管装置から、前記第1秘密データの第3分散データを取得し、前記第3分散データに対して前記検証処理を行う、秘密分散システム。
The secret sharing system according to claim 8, wherein
The secret sharing device is
For each of the first distributed data and the second distributed data, based on the additional distributed data corresponding to the distributed data and the second value and the third value included in the verification data. , Performs verification processing to determine whether the distributed data is correct data,
When it is determined that both the first distributed data and the second distributed data are correct data, the restoration process is executed,
When it is determined that at least one of the first shared data and the second shared data is not correct data, a storage holding the shared data of the first secret data other than the first shared data and the second shared data. A secret sharing system that acquires third shared data of the first secret data from a device and performs the verification process on the third shared data.
請求項8に記載の秘密分散システムであって、
前記秘密分散装置は、
前記分割した後の第1分散データ及び前記分割した後の第2分散データと、前記復元分割データと、の排他的論理和に基づいて、前記第1秘密データの分散データの生成に用いられた前記第1乱数群の乱数を復元し、
前記復元した乱数から算出した前記第1の値の前記所定のハッシュ関数によるハッシュ値と、前記復元した第1秘密データの前記所定のハッシュ関数によるハッシュ値と、に基づいて、前記復元した第1秘密データが正しいデータであるか否かを判定する、秘密分散システム。
The secret sharing system according to claim 8, wherein
The secret sharing device is
It was used to generate the distributed data of the first secret data based on the exclusive OR of the divided first distributed data, the divided second distributed data, and the restored divided data. Restore the random numbers of the first random number group,
The restored first first value is calculated based on the hash value of the first value calculated from the restored random number by the predetermined hash function and the hash value of the restored first secret data by the predetermined hash function. A secret sharing system that determines whether or not secret data is correct.
請求項6に記載の秘密分散システムであって、
前記保管装置は、
前記検証用データ公開装置から、前記検証用データを取得し、
受信した分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定する検証処理を行う、秘密分散システム。
The secret sharing system according to claim 6,
The storage device is
From the verification data disclosure device, obtain the verification data,
It is determined whether the distributed data is correct data based on the additional distributed data corresponding to the received distributed data and the second value and the third value included in the verification data. A secret sharing system that performs verification processing.
秘密分散装置による秘密分散方法であって、
前記秘密分散装置は、プロセッサと記憶装置とを備え、
前記記憶装置は、秘密データと、公開パラメータと、を保持し、
前記秘密分散方法は、
前記プロセッサが、前記秘密データを分割し、
前記プロセッサが、前記分割した秘密データと、複数の乱数からなる第1乱数群と、の排他的論理和に基づいて、複数の部分分散データを生成し、
前記プロセッサが、前記秘密データの所定のハッシュ関数によるハッシュ値と、前記第1乱数群の乱数から得られる第1の値の前記所定のハッシュ関数によるハッシュ値と、前記複数の部分分散データそれぞれの前記所定のハッシュ関数によるハッシュ値と、を算出し、
前記プロセッサが、前記複数の部分分散データそれぞれについて、前記秘密データのハッシュ値と前記第1の値のハッシュ値とを係数又は定数項として有する第1の関数に当該部分分散データを代入して得られる値と、前記第1乱数群に含まれない乱数からなる第2乱数群の乱数を係数又は定数項として有する第2の関数に当該部分分散データを代入して得られる値と、を含む付加分散データを、当該部分分散データに付加して分散データを生成し、
前記プロセッサが、前記分散データそれぞれを異なる出力先へと出力し、
前記プロセッサが、前記公開パラメータと前記秘密データのハッシュ値と前記第2乱数群に含まれる第1乱数とに基づいて算出される第2の値と、前記公開パラメータと前記第1の値のハッシュ値と前記第2乱数群に含まれる第2乱数とに基づいて算出される第3の値と、を前記分散データの検証用データに含める、秘密分散方法。
A secret sharing method using a secret sharing device,
The secret sharing device includes a processor and a storage device,
The storage device holds secret data and public parameters,
The secret sharing method is
The processor divides the secret data,
The processor generates a plurality of partial distributed data based on an exclusive OR of the divided secret data and a first random number group composed of a plurality of random numbers,
The processor includes a hash value of the secret data according to a predetermined hash function, a hash value of a first value obtained from a random number of the first random number group according to the predetermined hash function, and the plurality of partial distributed data. Calculating a hash value by the predetermined hash function,
The processor obtains, for each of the plurality of partial distributed data, by assigning the partial distributed data to a first function having a hash value of the secret data and a hash value of the first value as a coefficient or a constant term. And a value obtained by substituting the partial variance data into a second function having a random number of a second random number group that is a random number not included in the first random number group as a coefficient or a constant term. Distributed data is added to the partial distributed data to generate distributed data,
The processor outputs each of the distributed data to different output destinations,
A second value calculated by the processor based on the public parameter, a hash value of the secret data, and a first random number included in the second random number group, and a hash of the public parameter and the first value. A secret sharing method, wherein a third value calculated based on a value and a second random number included in the second random number group is included in the verification data of the shared data.
JP2018197533A 2018-10-19 2018-10-19 Secret sharing device, secret sharing system, and secret sharing method Active JP6997696B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018197533A JP6997696B2 (en) 2018-10-19 2018-10-19 Secret sharing device, secret sharing system, and secret sharing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018197533A JP6997696B2 (en) 2018-10-19 2018-10-19 Secret sharing device, secret sharing system, and secret sharing method

Publications (2)

Publication Number Publication Date
JP2020064245A true JP2020064245A (en) 2020-04-23
JP6997696B2 JP6997696B2 (en) 2022-01-18

Family

ID=70387197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018197533A Active JP6997696B2 (en) 2018-10-19 2018-10-19 Secret sharing device, secret sharing system, and secret sharing method

Country Status (1)

Country Link
JP (1) JP6997696B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230012676A (en) * 2021-07-16 2023-01-26 주식회사 아이콘루프 Method for transmitting data using a secret distributed

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037094A (en) * 2007-08-03 2009-02-19 Kddi Corp Apparatus for generating distributed information, apparatus for restoring secret information, method for generating distributed information, method for restoring secret information and program
JP2009222778A (en) * 2008-03-13 2009-10-01 Toshiba Corp Device, method, and program for adding distributed information
JP2012194489A (en) * 2011-03-17 2012-10-11 Nec Soft Ltd Shared information management system, shared information management method and shared information management program
JP6300286B1 (en) * 2016-12-27 2018-03-28 株式会社ZenmuTech Access management system, access management method and program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037094A (en) * 2007-08-03 2009-02-19 Kddi Corp Apparatus for generating distributed information, apparatus for restoring secret information, method for generating distributed information, method for restoring secret information and program
JP2009222778A (en) * 2008-03-13 2009-10-01 Toshiba Corp Device, method, and program for adding distributed information
JP2012194489A (en) * 2011-03-17 2012-10-11 Nec Soft Ltd Shared information management system, shared information management method and shared information management program
JP6300286B1 (en) * 2016-12-27 2018-03-28 株式会社ZenmuTech Access management system, access management method and program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RONALD L. RIVEST: "All-or-Nathing Encryption and the Package Transform", LNCS, INTERNATIONAL WORKSHOP IN FAST SOFTWARE ENCRYPTION (FSE1997), vol. 1267, JPN6021047112, 1997, pages 210 - 218, XP007907068, ISSN: 0004649251 *
千田 浩司 ほか: "効率的な3パーティ秘匿関数計算の提案とその運用モデルの考察", 情報処理学会研究報告 コンピュータセキュリティ(CSEC), JPN6013052563, 15 April 2010 (2010-04-15), JP, pages 1 - 7, ISSN: 0004649250 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230012676A (en) * 2021-07-16 2023-01-26 주식회사 아이콘루프 Method for transmitting data using a secret distributed
KR102561247B1 (en) 2021-07-16 2023-07-31 주식회사 파라메타 Method for transmitting data using a secret distributed

Also Published As

Publication number Publication date
JP6997696B2 (en) 2022-01-18

Similar Documents

Publication Publication Date Title
US8077863B2 (en) Secret sharing apparatus, method, and program
CN107210006B (en) Inconsistency detection method, inconsistency detection system, inconsistency detection apparatus, and recording medium
JP6009697B2 (en) Secret calculation method, secret calculation system, sort device, and program
JP7047133B2 (en) Indexing and restoration of coded blockchain data
US20140229738A1 (en) Timestamping system and timestamping program
JP2014044264A (en) Secret distribution device and secret distribution program
JP5968484B1 (en) Share recovery system, share recovery method, and program
CN111512590B (en) Homomorphic encryption for password authentication
JP5860557B1 (en) Secret disclosure method, secret disclosure system, secret disclosure device, and program
JP5299286B2 (en) Distributed information generation apparatus, restoration apparatus, verification apparatus, and secret information distribution system
JP6844696B2 (en) Authentication tag generator, authentication tag verification device, method and program
JP5944841B2 (en) Secret sharing system, data sharing device, distributed data holding device, secret sharing method, and program
JPWO2016148281A1 (en) Secret string calculation system, method, apparatus, and program
JP6777816B2 (en) Secret tampering detection system, secret tampering detection device, secret tampering detection method, and program
JP6997696B2 (en) Secret sharing device, secret sharing system, and secret sharing method
US9442890B2 (en) Distribution apparatus, restoration apparatus, distribution method, restoration method, and distribution and restoration system
KR101666974B1 (en) Prime number generation
JP6933290B2 (en) Secret calculation device, secret calculation authentication system, secret calculation method, and program
JP4602675B2 (en) CONFIDENTIAL INFORMATION MANAGEMENT SYSTEM, CONFIDENTIAL INFORMATION MANAGEMENT METHOD, CONFIDENTIAL INFORMATION MANAGEMENT PROGRAM, AND CONFIDENTIAL INFORMATION MANAGEMENT SYSTEM TERMINAL PROGRAM
CN114365132A (en) Tamper verification method and tamper verification system
JP6495858B2 (en) Server device, error correction system, error correction method, program
RU2369974C1 (en) Method for generation and authentication of electronic digital signature that certifies electronic document
Kumar New probabilistic efficient and secure protocols for data storage security in cloud computing
CN116781365A (en) Resource scheduling verification method, device, computer equipment and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211112

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: 20211130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211217

R150 Certificate of patent or registration of utility model

Ref document number: 6997696

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150