JP6997696B2 - Secret sharing device, secret sharing system, and secret sharing method - Google Patents

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

Info

Publication number
JP6997696B2
JP6997696B2 JP2018197533A JP2018197533A JP6997696B2 JP 6997696 B2 JP6997696 B2 JP 6997696B2 JP 2018197533 A JP2018197533 A JP 2018197533A JP 2018197533 A JP2018197533 A JP 2018197533A JP 6997696 B2 JP6997696 B2 JP 6997696B2
Authority
JP
Japan
Prior art keywords
data
distributed data
secret
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.)
Active
Application number
JP2018197533A
Other languages
Japanese (ja)
Other versions
JP2020064245A (en
Inventor
尚生 坂崎
亮太 笹嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

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個以上の分散データを集めると秘密情報(元データ)を復元可能な手法である。 As a typical example of the secret sharing method, there is a (k, n) threshold secret sharing method devised by Shamir. Shamir's (k, n) threshold secret sharing method distributes secret information (original data) into n nonsensical distributed data and collects k or more distributed data out of n distributed data. It is a method that can restore confidential information (original data).

しかし、Shamirの(k,n)閾値秘密分散法は、秘密情報の分散処理や復元処理を、複雑な処理である多項式補間により実現するため、大量のデータを秘密分散化するのには、多くの計算量を要する。 However, since Shamir's (k, n) threshold secret sharing method realizes secret information distribution processing and restoration processing by polynomial interpolation, which is a complicated process, it is often used for secret sharing a large amount of data. Requires the 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, Japanese Patent Application Laid-Open No. 2007-124032 (Patent Document 1) is available as a background technique of the (2, n) secret sharing method realized only by an exclusive OR operation which is a simple process. In this publication, "the secret information S of the storage unit 11 is divided to generate n-1 first divided secret data K (1), ..., K (j), ..., K (n-1). , Zero-valued split secret data K (0) is generated, and n-1 random data R (0), ..., R (i), ..., R (n-) having the same size as each split secret data, for example. 2) is generated, and n (n-1) pieces are generated based on the divided secret data K (0), ..., K (n-1) and the random number data R (0), ..., R (n-2). Distributed partial data D (j, i) = K (j−i (mod n)) (+) R (i) is calculated ((+) is an exclusive logical sum), and the variances have the same row number j. N pieces of distributed information D (0), ..., D (j), ..., D (n-1) having partial data D (j, 0) to D (j, n-2) are individually n pieces. It is distributed to the storage device. Of these, the secret information S can be restored based on any two distributed information D (i) and D (j). ”(See summary).

特開2007-124032号公報Japanese Unexamined Patent Publication No. 2007-124032

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

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

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

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

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

以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. In the present embodiment, the same components are designated by the same reference numerals in principle, and repeated description thereof 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 overall configuration example 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 is, for example, a client device 10, a verification data disclosure device 30, and a plurality of (n units in this embodiment) storage server devices 20 i (i = 1, 2, ..., N). -1) and, 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 in which a client device 10, a storage server device 20 i , and a verification data disclosure device 30 are communicably connected via a network 40 such as the Internet. The plurality of storage server devices 20 i may be partially or wholly operated by the same organization, or may be entirely operated by different organizations.

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

クライアント装置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 entire client device 10. The input / output unit 103 performs instructions to the client device 10 and input of data and the like, and outputs instructions and data and the like from the client device 10.

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

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

各保管サーバ装置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 another device. 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 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 another device. The storage unit 302 i is, for example, a verification data ((G 1 , G 2 )) 303, which will be described later, and a public parameter ((p, g 1 , g 2 )) 304, which will be described later, received via the communication unit 301 i . To hold. The verification data 303 and the public parameter 304 are disclosed in the secret sharing system 1 and are used for the falsification detection process of the distributed data by the client device 10 and the storage server device 20i , the restoration process of the secret information by the client device 10, and the like. ..

図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, respectively, are configured by, for example, the computer shown 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 connected to each other 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 which is a non-volatile storage element and a RAM which is a volatile storage element. The ROM stores an invariant 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 a processor and data used when the program is executed.

補助記憶装置504は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置であり、CPU505が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置504から読み出されて、メモリ503にロードされて、CPU505によって実行される。 The auxiliary storage device 504 is, for example, a large-capacity 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 receives 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 (Electroluminescence) display device, or a printer is connected, and outputs a program execution result in a format that can be visually recognized by an 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 a network 40, and is stored in a non-volatile auxiliary storage device 504 which is a non-temporary storage medium. Therefore, the computer 50 may have an interface for reading data from removable media.

秘密分散システム1に含まれる各装置は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。 Each device included in the secret sharing system 1 is a computer system composed of physically one computer or a plurality of computers logically or physically configured, and is separate on the same computer. It may run on a thread of, or it may run on a virtual computer built on multiple 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 a 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 a 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 composed of 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 the present 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等にロードして実行するプログラムによって実現される。
<Processing procedure example>
Hereinafter, an example of the processing in this embodiment will be described. In the various operations corresponding to the secret sharing process described below, each device 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 each loads into the memory 503 and the like. It is realized by the 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 processing of secret data distribution. The process of FIG. 3 is started, for example, with an instruction from the user of the client device 10 (including information indicating confidential information to be decentralized) as an opportunity.

まず、クライアント装置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). Since the public parameter is used for the restoration process of the secret information described later, 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 publishing device 30 stores the received public parameters (p, g 1 , g 2 ) as public parameters 304 in the storage unit 302, and also stores the public parameters 304 for the client device 10 and the storage server device 20. It is disclosed 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 disclosure device 30 by requesting the verification data disclosure 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 different elements of the order q of the finite field modulo p, that is, g 1 , g 2 ∈ GF (p), ord (g 1 ) = ord (g 2 ) = q. Is. The same public parameters (p, g 1 , g 2 ) may be used for different secret information, or the public parameters (p, g 1 , g 2 ) may be different for each secret information.

クライアント装置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 the secret information S, if necessary) (S20). The details of the decentralization process 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 decentralized processing of the confidential information in step S20. Here, it is assumed that 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 adjusts the data length so that it is divisible by n-1 by performing padding processing on the secret information S. , It is decided again as confidential information S.

まず、分散データ生成部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 decentralizes 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). Here, the secret information S is S = S 1 || ... || Sn -1 (the symbol "||" indicates data concatenation), and each divided block is S 1 , ... ..., Notated as Sn-1 . Further, 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 the hash value of the secret information, the random number, and the partially distributed 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 the selected random numbers). Randomly select (i.e., Ri ∈ { 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, Calculate for j).

分散データ生成部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 || ... || Sn -1 and the random number R = R 0 ||...|| R n-2 . Further, the distributed data generation unit 104 connects each D (i, j) for each i, and the partial distributed data D'(i) = D (i, 0) || ... || D (i, n- 2), (0 ≦ i ≦ n-1) are 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 is a hash of each partially distributed data D'(i) = D (i, 0) || ... || D (i, n-2), (0≤i≤n-1). Calculate the value. Here, a hash function having an output length d'(for example, d'is about 256 bits) is represented by H (), 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. ..

次に、乱数生成部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 random numbers a, b ∈ GF (q), and the distributed data generation unit 104 further selects two linear equations, 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)。 Next, the distributed data generation unit 104 generates additional distributed data D (i, n-1) = F (h D'(i) ) = fi and D ( i , n) = F'(h D'(i ). ) ) = Calculate f'i (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) modd p is generated (S30), and (G 1 , G 2 ) is transmitted to the verification data disclosure device 30 as verification data (S31). The function power () indicates an exponential function, which means power (a, b) = a b .

そして、検証用データ公開装置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, the verification data (G 1 ) is stored in the client device 10 and the storage server device 20 i . , G2) is disclosed in the secret sharing system 1 (S32). The distributed data generation unit 104 connects the partially distributed data and the additional distributed data to the distributed data D (i) = D'(i) || D (i, n-1) || D (i, n), (0). ≦ i ≦ n-1) are distributed to the storage server device 20 i (S40), respectively.

図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 verification data (G 1 , G 2 ) and public parameters (p, g 1 , g 2 ) from the verification data disclosure device 30, and distributes data stored by itself. D ( i ) The validity of 203i 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 the storage processing of the distributed data by each storage server device 20i in steps S50 and S60. Each storage server device 20 i is distributed data D (i) = D'(i) || D (i, n-1) ||, which is data obtained by concatenating partially distributed data and additional distributed data from the client device 10. Receives D (i, n) and (0 ≦ i ≦ n-1) (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 distributed data distributed to the storage server device 20. FIG. 8 shows an example in the case of n = 5. The value of the cell in the m-th row and the l-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 verification data (G 1 , G 2 ) and disclosure parameters (p, g 1 , g 2 ) from the verification data disclosure device 30 (S501). The verification unit 204 i is partially distributed data and additional dispersion from the distributed data D ( i ) = D'(i) || D (i, n-1) = fi || D ( i , n) = f'i. The data is taken out, and the hash value H (D'(i)) = h D'(i) of the partially 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 power (g 1 , fi ) × power (g 2 , f'i) ≡ G 1 × power (G 2 , h D'(i) ) mod p (S503). ). When the verification unit 203 i determines that the mathematical formula in step S503 holds (S503: yes), the storage server device 20 i stores D (i) 203 i assuming that the received distributed data is 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 204i determines that the mathematical formula in step S503 does not hold (S503: no), it processes it as ERROR (S602). Specifically, for example, the verification unit 204 i outputs the 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 is 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 ) x pow (g 2 , a) mod p, G 2 = pow (g 1 , h R ) x 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 , F'(h D'(i) ) = f'i Because there is
(Right side of the formula in step S503)
≡ G 1 × power (G 2 , h D'(i) ) mod p
≡ {pow (g 1-, hs) x pow (g 2 , a)} x {pow (pow (g 1 , h R ) x pow (g 2 , b)), h D'(i )} mod p
≡ power (g 1 , hs + h R h D'(i) ) × power (g 2 , a + bh D'(i) ) mod p
≡ power (g 1 , F (h D'(i) ) × power (g 2 , F'(h D'(i) ) mod p
≡ power (g 1 , fi ) × power (g 2 , f'i )
≡ (Left side of the formula in step S503)
Is.

従って、正しい公開パラメータ及び検証用データを取得した保管サーバ装置20であれば、ステップS503における数式の成否を確認することにより、受信した分散データが正しい値であるか否かを判定することができる。 Therefore, if the storage server device 20i has acquired the correct public parameters and verification data, it is possible to determine whether or not the received distributed data has the correct value by confirming the success or failure of the mathematical expression in step S503. 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 the restoration process by the entire secret sharing system 1. The process of FIG. 4 is started, for example, with an instruction from the user of the client device 10 (including information indicating confidential information to be restored) as an opportunity. 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 the two storage server devices 20 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 and 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 a transmission instruction of the verification value data (G 1 and 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 client device 10 does not store the verification parameter 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. Subsequently, 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 process by the client device 10. FIG. 7 shows the details of the distributed data acquisition process in step S70 and the confidential information restoration process 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 subject to determination in steps S903 and S905 described later) among the n-1 storage server devices 20. (S701). When the data restoration unit 105 determines that the unselected storage server device 20 does not exist (S701: no), the data restoration unit 105 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), the data restoration unit 105 selects one unselected storage server device 20 and distributes data to the selected storage server device 20. The transmission instruction of D (i) is issued, and the 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 and 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. The data restoration unit 105 of the client device 10 has acquired distributed data D (i) = D'(i) || D (i, n-1) = fi || D ( i , n) = f'i , respectively. On the other hand, the hash value H (D'(i)) = h D'(i) of the partially distributed 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 restoration unit 105 has power (g 1 , fi ) × power (g 2 , f'i) ≡ for the generated hash value H (D'( i )) = h D'(i) . It is confirmed whether G 1 × power (G 2 , h D'(i) ) mod p is obtained (S902). When the data restoration unit 105 determines that the mathematical formula 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 in step S503. That is, by executing the verification in step S902, falsification (and damage, etc.) of the distributed data at any timing between the storage process and the restoration is detected, and eventually the restoration process using the altered distributed data is performed. You don't have to do it. The falsification detection process of the distributed data may be executed only at one of the timings of the storage process (steps S501 to S503) and the restoration process (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 distributed data for which the mathematical expression of step S902 holds have been collected (S903). If the data restoration unit 105 has not yet collected two distributed data for which the formula of step S902 holds (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 distributed data for which the mathematical expression of step S902 holds has been collected (S903: yes), the data restoration unit 105 restores the confidential information S using the two distributed 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’とする。 Hereinafter, the details of step S904 will be described. Here, D (i) = D'(i) || D (i, n-1) = fi || D ( i , n) = f'for each of the two distributed data for which the formula of step S902 holds. i , D (j) = D'(j) || D (j, n-1) = f j || D ( j , n) = f'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 restoration unit 105 sets the back 2d'length of the distributed data D (i) and D (j), that is, the additional distributed data D ( i , n-1) = fi. || D ( i , n) = f'i and D (j, n-1) = f j || D ( j , n) = f'j is the remaining data obtained by deleting the partially distributed data. D'(i) = D (i, 0) || ... || D (i, n-2) and D'(j) = D (j, 0) || ... || D (j) , N-2), are 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 partially distributed data D'(i) is D (i, 0), ..., D (i, n-2), and for the partially distributed data D'(j). Each block of data length d is D (j, 0), ..., D (j, n-2).
Then, the data restoration unit 105 obtains S 1 , ..., Sn-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
Case1: When D (i, i) is included in D (i, l) (however, 0 ≦ l ≦ n-2), the following is repeated until the end condition 1 is satisfied. However, the end 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
Case2: When D (j, j) is included in D (j, l), the following is repeated until the 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) 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

尚、Case1、及びCase2における演算子±はmod nの演算を示す。以下、上述したCase1、及びCase2におけるS,・・・,Sn-1の算出処理の具体例を説明する。 The operator ± in Case 1 and Case 2 indicates the operation of mod n. Hereinafter, specific examples of the calculation processing of S 1 , ..., Sn - 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 partially 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 in the case of n = 5. Therefore, FIG. 9 is a table in which the columns of j = 4 and the columns of 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, it does not include D (4, 4) among the diagonal components. Whether or not Case 1 and Case 2 are applicable differs depending on whether the two selected dispersion 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 of i = 4, 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 Case1.
Further, 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 for the end condition 2, 0 + 2 (-4) =- 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 Therefore, it 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 And since it is satisfied, the calculation of Case 2 is completed. As a result, all of S1, S2, S3, and S4 were calculated from Case2.

次に、ここで、例えば、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, for example, an example of i = 3, 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, l) = {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 for the end condition 1, 3-2 (-3) = 9 = 4 = 4, and since it is satisfied, the calculation of Case 1 is completed.
Further, since 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 corresponds 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 for the end condition 2, 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 and is satisfied, the calculation of Case 2 is completed. As a result, all of S1, S2, S3, and S4 were calculated from Case1 and Case2.
That is, S1, S2, S3, and 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 confidential information restored by concatenating S 1 , ..., Sn -1 output by Case 1 and / or Case 2. ... || Restore Sn -1 . Here, the restored confidential information is referred to as the restored data S'in order to distinguish the restored data from the original data.

データ復元部105は、ステップS904で復元データS’=S||・・・||Sn-1を復元したら、f-H(R’)hD’(i)=H(S’)であるかを確認する(S905)。尚、R’とは以下の処理によって復元される乱数データである。 After the restored data S'= S 1 || ... || Sn -1 is restored in step S904, the data restoration unit 105 restores fi-H (R') h D'(i) = H (S'). ) (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 . Random data R'= R 0 || ... || R n-2 is restored by concatenating.

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

データ復元部105がステップS905の数式が成り立つと判定した場合(S905:yes)、復元データS’は秘密情報Sと同一であり、復元データS’を出力して復元化処理を終了する。データ復元部105がステップS905の数式が成り立たないと判定した場合(S905:no)、復元データS’は秘密情報Sと同一ではないため、ステップS701に戻る。 When the data restoration unit 105 determines that the formula in step S905 holds (S905: yes), the restoration data S'is the same as the secret information S, and the restoration data S'is output to end the restoration process. When the data restoration unit 105 determines that the formula in step S905 does not hold (S905: no), the restoration data S'is not the same as the secret information S, so 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. From the above definition, since F (h D'(i) ) = f i , F (X) = h S + h R X mod q, (left side of 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 established, 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 established. That is, if (the left side of step S905) = (the right side of step S905) is satisfied, it can be said that S and S'are equal with an extremely high probability.

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

尚、検証用データ(G,G)は、H(S)=h,H(R)=hの値を知っている者のみが生成することできる値であるため、分散データを生成した者以外は、正しい検証用データ(G,G)を生成することはできない。 Since 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 and H (R) = h R , the distributed data is used. 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 and G 2 ) are the same for each distributed data D (i) (0 ≦ i ≦ n-1), the verification process 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 a distributed product of the same secret information S. Also, the amount of calculation for recovering confidential information is small.

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

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

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

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

1 秘密分散システム、10 クライアント装置、20 保管サーバ装置、30 検証用データ公開装置、50 計算機、104 分散データ生成部、105 データ復元部、106 乱数生成部、107 秘密情報、203 分散データ、303 検証用データ、304 公開パラメータ、501 通信装置、502 入力装置、503 メモリ、504 補助記憶装置、505 CPU、506 出力装置 1 Secret distribution system, 10 Client equipment, 20 Storage server equipment, 30 Verification data disclosure equipment, 50 Computer, 104 Distributed data generation unit, 105 Data restoration unit, 106 Random generation unit, 107 Confidential information, 203 Distributed 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の値と、を前記分散データの検証用データに含める、秘密分散装置。
It ’s a secret sharer,
Equipped with a processor and a storage device,
The storage device holds confidential data and public parameters.
The processor
Divide the secret data and
A plurality of partially distributed data are generated based on the exclusive OR of the divided secret data and the first random number group composed of a plurality of random numbers.
The hash value of the secret data by a predetermined hash function, the hash value of the first value obtained from the random number of the first random number group by the predetermined hash function, and the predetermined hash of each of the plurality of partially distributed data. Calculate the hash value by the function and
For each of the plurality of partially distributed data, a value obtained by substituting the partially distributed data into a first function having the hash value of the secret data and the hash value of the first value as a coefficient or a constant term, and Additional dispersion data including a value obtained by substituting the partial distribution data into a second function having a random number of the second random number group consisting of random numbers not included in the first random number group as a coefficient or a constant term. Generate distributed data by adding to the partially 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 first. 2 A secret sharing device that includes a third value calculated based on a second random number included in a random number group and the verification data of the distributed 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 g 1 ∈ GF (p) and g 2 which are different elements of the order q of the finite field modulo p and the prime number p such that q = (p-1) / 2 is a prime number. Including ∈ GF (p),
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 , which is a combination of the random numbers.
The first function is F (X) = h S + h R X mod q (where h s is the hash value of the secret data and h R is the hash value of the first value R. be),
The second function is F'(X) = a + bX mod q.
The processor
The secret data S ∈ {0, 1} d (n-1) is divided into n-1 data S 1 , ..., Sn-1 having a length d, respectively.
D (i, j) = S (i-j mod n) xor R j (0 ≤ i ≤ n-1, 0 ≤ j ≤ n-2, but S 0 ∈ {0} d ), respectively (i, Calculate for j)
D'(i) = D (i, 0) || ... || D (i, n-2) in which each D (i, j) is concatenated for each i is generated as the partially distributed data.
For each of the partial dispersion data D'(i) (0≤i≤n-1), the additional dispersion data D (i, n-1) = F (h D'(i) ) and D (i, d (i) = D'(i) || D (i, n-1) obtained by calculating n) = F'(h D'(i) ) and combining the additional variance data and the partial variance data. || D (i, n) is generated as the distributed data, and
G 1 = power (g 1 , h S ) × power (g 2 , a) mod p was calculated as the second value.
A secret sharing device that calculates G 2 = power (g 1 , h R ) × power (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
Holds the first distributed data and the second distributed data generated from the first secret data to be restored.
The processor
The restoration process of the first secret data is executed from the first distributed data and the second distributed data, and the restoration process is executed.
In the restoration process
The additional distributed data is deleted from each of the first distributed data and the second distributed data, and the partially distributed data is acquired.
The partially distributed data of the first distributed data and the partially distributed data of the second distributed data are each divided.
Restoration divided data of the first secret data based on the exclusive logical sum of the divided data of the partially distributed data of the first distributed data and the divided data of the partially distributed data of the second distributed data. To generate,
A secret sharing device that restores the first secret data by combining the restoration division data.
請求項3に記載の秘密分散装置であって、
前記プロセッサは、
前記第1分散データ及び前記第2分散データそれぞれに対して、当該分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定し、
前記第1分散データ及び前記第2分散データの双方が正しいデータであると判定した場合、前記復元処理を実行する、秘密分散装置。
The secret sharing device according to claim 3.
The processor
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 if the distributed data is correct,
A secret sharing device that executes 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
It was used to generate the distributed data of the first secret data based on the exclusive OR of the first distributed data after the division, the second distributed data after the division, and the restored divided data. Restore the random number of the first random group and
The restored first value is 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 or not secret data is correct data.
秘密分散システムであって、
秘密分散装置と、複数の保管装置と、検証用データ公開装置とを含み、
前記秘密分散装置は、
秘密データと、公開パラメータと、を保持し、
前記秘密データを分割し、
前記分割した秘密データと、複数の乱数からなる第1乱数群と、の排他的論理和に基づいて、複数の部分分散データを生成し、
前記秘密データの所定のハッシュ関数によるハッシュ値と、前記第1乱数群の乱数から得られる第1の値の前記所定のハッシュ関数によるハッシュ値と、前記複数の部分分散データそれぞれの前記所定のハッシュ関数によるハッシュ値と、を算出し、
前記複数の部分分散データそれぞれについて、前記秘密データのハッシュ値と前記第1の値のハッシュ値とを係数又は定数項として有する第1の関数に当該部分分散データを代入して得られる値と、前記第1乱数群に含まれない乱数からなる第2乱数群の乱数を係数又は定数項として有する第2の関数に当該部分分散データを代入して得られる値と、を含む付加分散データを、当該部分分散データに付加して分散データを生成し、
前記分散データそれぞれを異なる前記保管装置へ送信し、
前記公開パラメータと前記秘密データのハッシュ値と前記第2乱数群に含まれる第1乱数とに基づいて算出される第2の値と、前記公開パラメータと前記第1の値のハッシュ値と前記第2乱数群に含まれる第2乱数とに基づいて算出される第3の値と、を前記分散データの検証用データに含め、
前記検証用データ及び前記公開パラメータを前記検証用データ公開装置に送信し、
前記検証用データ公開装置は、前記秘密分散システム内において、前記検証用データ及び前記公開パラメータを公開する、秘密分散システム。
It ’s a secret sharing system,
Including secret sharing device, multiple storage devices, and verification data disclosure device,
The secret sharing device is
Holds confidential data and public parameters,
Divide the secret data and
A plurality of partially distributed data are generated based on the exclusive OR of the divided secret data and the first random number group composed of a plurality of random numbers.
The hash value of the secret data by a predetermined hash function, the hash value of the first value obtained from the random number of the first random number group by the predetermined hash function, and the predetermined hash of each of the plurality of partially distributed data. Calculate the hash value by the function and
For each of the plurality of partially distributed data, a value obtained by substituting the partially distributed data into a first function having the hash value of the secret data and the hash value of the first value as a coefficient or a constant term, and Additional dispersion data including a value obtained by substituting the partial distribution data into a second function having a random number of the second random number group consisting of random numbers not included in the first random number group as a coefficient or a constant term. Generate distributed data by adding to the partially distributed data
Each of the distributed data is transmitted to different storage devices, and the distributed data is transmitted to different storage devices.
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 first. 2 The third value calculated based on the second random number included in the random number group and the third value calculated based on the second random number are included in the verification data of the distributed data.
The verification data and the disclosure parameter are transmitted to the verification data disclosure device, and the verification data and the disclosure parameter are transmitted to the verification data disclosure device.
The verification data disclosure device is a secret sharing system that discloses the verification data and the disclosure parameters 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 g 1 ∈ GF (p) and g 2 which are different elements of the order q of the finite field modulo p and the prime number p such that q = (p-1) / 2 is a prime number. Including ∈ GF (p),
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 , which is a combination of the random numbers.
The first function is F (X) = h S + h R X mod q (where h s is the hash value of the secret data and h R is the hash value of the first value R. be),
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 data S 1 , ..., Sn-1 having a length d, respectively.
D (i, j) = S (i-j mod n) xor R j (0 ≤ i ≤ n-1, 0 ≤ j ≤ n-2, but S 0 ∈ {0} d ), respectively (i, Calculate for j)
D'(i) = D (i, 0) || ... || D (i, n-2) in which each D (i, j) is concatenated for each i is generated as the partially distributed data.
For each of the partial dispersion data D'(i) (0≤i≤n-1), the additional dispersion data D (i, n-1) = F (h D'(i) ) and D (i, d (i) = D'(i) || D (i, n-1) obtained by calculating n) = F'(h D'(i) ) and combining the additional variance data and the partial variance data. || D (i, n) is generated as the distributed data, and
G 1 = power (g 1 , h S ) × power (g 2 , a) mod p was calculated as the second value.
A secret sharing system that calculates G 2 = power (g 1 , h R ) × power (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
The first distributed data and the second distributed data generated from the first secret data to be restored are received from different storage devices.
The restoration process of the first secret data is executed from the first distributed data and the second distributed data, and the restoration process is executed.
In the restoration process
The additional distributed data is deleted from each of the first distributed data and the second distributed data, and the partially distributed data is acquired.
The partially distributed data of the first distributed data and the partially distributed data of the second distributed data are each divided.
Restoration divided data of the first secret data based on the exclusive logical sum of the divided data of the partially distributed data of the first distributed data and the divided data of the partially distributed data of the second distributed data. To generate,
A secret sharing system that restores the first secret data by combining the restoration division data.
請求項8に記載の秘密分散システムであって、
前記秘密分散装置は、
前記第1分散データ及び前記第2分散データそれぞれに対して、当該分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定する検証処理を行い、
前記第1分散データ及び前記第2分散データの双方が正しいデータであると判定した場合、前記復元処理を実行し、
前記第1分散データ及び前記第2分散データの少なくとも一方が正しいデータでないと判定した場合、前記第1分散データ及び前記第2分散データ以外の前記第1秘密データの分散データを保持している保管装置から、前記第1秘密データの第3分散データを取得し、前記第3分散データに対して前記検証処理を行う、秘密分散システム。
The secret sharing system according to claim 8.
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,
If 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 distributed data and the second distributed data is not correct data, storage holding the distributed data of the first secret data other than the first distributed data and the second distributed data. A secret sharing system that acquires the third distributed data of the first secret data from the apparatus and performs the verification process on the third distributed data.
請求項8に記載の秘密分散システムであって、
前記秘密分散装置は、
前記分割した後の第1分散データ及び前記分割した後の第2分散データと、前記復元分割データと、の排他的論理和に基づいて、前記第1秘密データの分散データの生成に用いられた前記第1乱数群の乱数を復元し、
前記復元した乱数から算出した前記第1の値の前記所定のハッシュ関数によるハッシュ値と、前記復元した第1秘密データの前記所定のハッシュ関数によるハッシュ値と、に基づいて、前記復元した第1秘密データが正しいデータであるか否かを判定する、秘密分散システム。
The secret sharing system according to claim 8.
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 first distributed data after the division, the second distributed data after the division, and the restored divided data. Restore the random number of the first random group and
The restored first value is 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 secret data is correct data.
請求項6に記載の秘密分散システムであって、
前記保管装置は、
前記検証用データ公開装置から、前記検証用データを取得し、
受信した分散データに対応する付加分散データと、前記検証用データに含まれる前記第2の値及び前記第3の値と、に基づいて、当該分散データが正しいデータであるか否かを判定する検証処理を行う、秘密分散システム。
The secret sharing system according to claim 6.
The storage device is
The verification data is acquired from the verification data disclosure device, and the verification data is acquired.
It is determined whether or not 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の値と、を前記分散データの検証用データに含める、秘密分散方法。
It is a secret sharing method using a secret sharing device.
The secret sharing device includes a processor and a storage device, and the secret sharing device includes a processor and a storage device.
The storage device holds confidential data and public parameters.
The secret sharing method is
The processor divides the secret data and
The processor generates a plurality of partially distributed data based on the exclusive OR of the divided secret data and the first random number group composed of a plurality of random numbers.
The processor has 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 each of the plurality of partially distributed data. Calculate the hash value by the predetermined hash function and
Obtained by the processor by substituting the partially distributed data into a first function having the hash value of the secret data and the hash value of the first value as a coefficient or a constant term for each of the plurality of partially distributed data. Addition including a value to be obtained and a value obtained by substituting the partial distribution data into a second function having a random number of the second random number group consisting of random numbers not included in the first random number group as a coefficient or a constant term. The distributed data is added to the partially distributed data to generate the distributed data.
The processor outputs each of the distributed data to different output destinations,
A hash of 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 in which 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 distributed 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 JP2020064245A (en) 2020-04-23
JP6997696B2 true 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)

Families Citing this family (1)

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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5134303B2 (en) * 2007-08-03 2013-01-30 Kddi株式会社 Distributed information generating apparatus, secret information restoring apparatus, shared information generating method, secret information restoring method, and program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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),1997年,Vol. 1267,p. 210-218
千田 浩司 ほか,効率的な3パーティ秘匿関数計算の提案とその運用モデルの考察,情報処理学会研究報告 コンピュータセキュリティ(CSEC),日本,社団法人情報処理学会,2010年04月15日,p. 1-7

Also Published As

Publication number Publication date
JP2020064245A (en) 2020-04-23

Similar Documents

Publication Publication Date Title
JP5957120B1 (en) Secret sharing method, secret sharing system, distribution apparatus, and program
US8077863B2 (en) Secret sharing apparatus, method, and program
US20190158296A1 (en) Redactable document signatures
EP3261082B1 (en) Mismatch detection method, mismatch detection system, mismatch detection device and program therefor
US8074068B2 (en) Secret sharing device, method, and program
JP5685735B2 (en) Secret sharing apparatus, sharing apparatus, and secret sharing method
EP2890011A2 (en) Physically unclonable function redundant bits
JP5968484B1 (en) Share recovery system, share recovery method, and program
US10235134B1 (en) Rotating bit values while generating a large, non-compressible data stream
CN106446061A (en) Method and device for storing virtual machine images
US10853324B2 (en) Generating a data stream with a predictable change rate
US10218764B2 (en) Generating a large, non-compressible data stream
JP6997696B2 (en) Secret sharing device, secret sharing system, and secret sharing method
US10163371B1 (en) Rotating bit values based on a data structure while generating a large, non-compressible data stream
KR101666974B1 (en) Prime number generation
US9442890B2 (en) Distribution apparatus, restoration apparatus, distribution method, restoration method, and distribution and restoration system
JP4602675B2 (en) CONFIDENTIAL INFORMATION MANAGEMENT SYSTEM, CONFIDENTIAL INFORMATION MANAGEMENT METHOD, CONFIDENTIAL INFORMATION MANAGEMENT PROGRAM, AND CONFIDENTIAL INFORMATION MANAGEMENT SYSTEM TERMINAL PROGRAM
JPWO2019163636A1 (en) Secret calculation device, secret calculation authentication system, secret calculation method, and program
JP6784096B2 (en) Data distribution program, data distribution method, and data distribution device
JP7242888B2 (en) Falsification verification method and falsification verification system
CN114691414A (en) Check block generation method and data recovery method
JP6495858B2 (en) Server device, error correction system, error correction method, program
JP2004348281A (en) Redundancy storage system, method and program
US11182249B1 (en) Block ID encoding in an erasure coded storage system
JP7081663B2 (en) Secret coupling systems, methods, secret calculators and programs

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