WO2024247040A1 - 秘密計算装置、秘密分散システム、秘密分散復旧方法、及びプログラム - Google Patents
秘密計算装置、秘密分散システム、秘密分散復旧方法、及びプログラム Download PDFInfo
- Publication number
- WO2024247040A1 WO2024247040A1 PCT/JP2023/019913 JP2023019913W WO2024247040A1 WO 2024247040 A1 WO2024247040 A1 WO 2024247040A1 JP 2023019913 W JP2023019913 W JP 2023019913W WO 2024247040 A1 WO2024247040 A1 WO 2024247040A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- secure computing
- computing devices
- committed
- secret sharing
- commit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004364 calculation method Methods 0.000 title abstract description 14
- 238000001514 detection method Methods 0.000 claims abstract description 13
- 239000000284 extract Substances 0.000 claims abstract description 6
- 230000001172 regenerating effect Effects 0.000 claims abstract 8
- 238000011084 recovery Methods 0.000 claims description 91
- 230000015654 memory Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 11
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000005096 rolling process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 230000008929 regeneration Effects 0.000 description 2
- 238000011069 regeneration method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
Definitions
- the disclosed technology relates to a method for recovering a secret sharing system that stores secret shared data when a failure occurs.
- Reference 1 Hiroshi Senda et al., "Rethinking Lightweight Verifiable Three-Party Secure Function Computation," CSS 2010) that can perform computations while keeping data encrypted.
- Reference 1 discloses a multi-party protocol in which one number is converted into multiple encrypted shares, and N secure computing devices each have a share, and each performs addition, multiplication, logical operations, etc. without leaking information about its own share.
- Attackers can be classified as passive or active attackers depending on the content of their attacks.
- a passive attacker only peeks at data.
- secret computation in addition to their own data, they also peek at data obtained during the secret computation process, and try to obtain information about the original value or the original value itself from these data. They are also called semi-honest or honest-but-curious.
- active attackers also tamper with data and perform arbitrary actions not specified in the protocol (such as sending unnecessary data).
- secure computation they tamper with their own data and data obtained during the secure computation process, so that the data received by other secure computation devices becomes tampered values, causing them to output invalid computation results, or attempting to obtain information about the original values or the original values themselves. Also called malicious.
- the options available when a failure occurs are as follows: (1) After recovery, perform a rollback or rollforward of the database to return to the state before or after the in-progress processing was executed. (2) In an active/standby configuration, switch to the standby machine, and return the database state to the state before or after the in-progress processing was executed. (3) Perform recovery from backup data, and return to the latest state for which backup data is available.
- a failure occurs in x secret computing devices, it is not enough to restore only the DB state of the failed device itself when the secret computing device is restarted or when switching between active and standby during the failure; it is also necessary to ensure consistency with the other Nx devices that are not experiencing failures, and to prevent DB inconsistencies from occurring between the N secret computing devices after recovery.
- the order and timing of DB accesses are coordinated to maintain consistency between N secure computing devices. However, if a failure occurs in x of the N devices, a commitment shift will occur depending on the timing of the failure.
- “commit” refers to the general commit operation of one DB.
- “commit misalignment” refers to the coexistence of N secure computing devices in which a DB commit operation for the same request has been completed (committed secure computing devices) and in which it has not been completed (uncommitted secure computing devices).
- Shamir's (k,N) secret sharing Obtain k arbitrary coordinates from N shares. Find the k-1 degree function f(x) that passes through all the coordinates. f(0) is the secret information.
- Reference numeral 101 denotes secret information
- reference numerals 102 to 105 denote shares distributed to each secure computing device.
- Reference numeral 106 denotes secret information
- a secure computing device includes a storage unit, a table sharing unit, a commitment deviation detection unit, and a secret sharing value recovery unit.
- the storage unit stores the plaintext commit history table
- the table sharing means shares the commit history table with other secure computing devices.
- the commit mismatch detection unit extracts secret sharing tables with inconsistent commits based on the shared commit history table.
- the secret sharing value recovery unit works in cooperation with other secure computing devices to regenerate and overwrite the secret sharing table of the uncommitted secure computing devices from the secret sharing table of the committed secure computing devices, and when the number of committed secure computing devices is less than k and the number of uncommitted secure computing devices is k or more, the secret sharing value recovery unit works in cooperation with other secure computing devices to regenerate and overwrite the secret sharing table of the committed secure computing devices from the secret sharing table of the uncommitted secure computing devices.
- the disclosed technology if a commit mismatch occurs between N secure computing devices due to a failure or other reason, it is possible to restore the DBs of the N secure computing devices to consistency without restoring the secret sharing values to plain text.
- the size of the commit history table itself is expected to be small, and the tables to be restored can be identified using the commit history table, which allows for the processing time to be shortened.
- FIG. 1 is a diagram for explaining an outline of problems in the prior art and a method for solving the problems.
- FIG. 1 is a configuration diagram of a secret sharing system according to a first embodiment.
- FIG. 1 is a functional block diagram of a secure computing device according to a first embodiment.
- 5A to 5C are diagrams for explaining a failure recovery procedure according to the first embodiment using a specific example.
- FIG. 4 is a flowchart illustrating the operation of the secure computing device according to the first embodiment.
- FIG. 4 is a flowchart illustrating the operation of a plaintext recovery unit according to the first embodiment.
- FIG. 4 is a flowchart illustrating the operation of a secret sharing value recovery unit according to the first embodiment.
- FIG. 11 is a flowchart illustrating the operation of the secure computing device according to the second embodiment.
- FIG. 2 is a diagram showing an example of the functional configuration of a computer.
- the disclosed technology prepares a new plaintext "commit history table" that is used to grasp the commit discrepancy between secure computing devices and identify the shares that should be restored. As shown in FIGS. 1(a-3) and (b-3), if the shares to be restored (104-1 and 108-1) can be identified, the inconsistent shares can be restored onto the straight line that the consistent shares follow.
- a plaintext table Tj stored in a secure computing device S i is represented as S i .T j .
- the encryption table [T j ] stored in the secure computing device S i is represented as S i .[T j ].
- the process of selecting k arbitrary values from S0 .[ Ti ], S1 .[ Ti ], ..., Sj .[ Ti ], where j ⁇ k, and creating new secret sharing values from the k secret sharing values is called the “secret reproduction process.”
- [First embodiment] 2 is a diagram showing an example of the configuration of a secret sharing system according to the first embodiment of the disclosed technology.
- N (N ⁇ 3) secure computing apparatuses S 0 , .., S i , .., S N ⁇ 1 are connected via a network 202.
- Each secure computing device 201 has a memory unit for storing the encrypted (secretly shared) tables T 0 , T 1 , .., T x-1 , [T 0 ], [T 1 ], .., [T x-1 ], and plaintext tables, and constitutes a secret sharing system in which the original value can be restored using k secret sharing values.
- the secure computing device 201 includes a commitment shift detection unit 301, a plaintext recovery unit 302, a secret sharing value recovery unit 303, a communication unit 304, and a data storage unit 305.
- the secure computing device 201 cooperates with other secure computing devices via a communication unit 304 to perform multiplication, logical operations, and the like.
- the data storage unit 305 stores [T 0 ], [T 1 ], . . ., [T x -1 ], which are the encrypted (secretly shared) tables T 0 , T 1 , . . ., T x-1 .
- the data storage unit also stores a plaintext commit history table that manages the committed/uncommitted state of a secure computation request.
- Fig. 4 shows an example of a commit history table for three secure computing devices.
- the commit history table manages a secure computation request identifier (request ID), a commit target table, and the processing date and time of the commit.
- the table is restored based on the following concept. (1) If the table includes shares (1-1) If there are k or more committed secure computing devices, restore the shares of the uncommitted secure computing devices from the shares of the committed secure computing devices, and overwrite the DB of the uncommitted secure computing devices (roll forward). (1-2) If the number of committed secure computing devices is less than k and the number of uncommitted secure computing devices is k or more, the shares of the committed secure computing devices are restored from the shares of the uncommitted secure computing devices, and the DB of the committed secure computing devices is overwritten (rolled back).
- Table D is inconsistent, with one committed and two uncommitted. And since the data is a "share", the inconsistent state corresponds to the above (1-2). Therefore, the share of secure computing apparatus 1 (committed) is restored from the shares of secure computing apparatuses 2 and 3 (uncommitted), and the DB of secure computing apparatus 1 is overwritten.
- Table E is inconsistent, with one committed and two uncommitted. And since the data is "plain text", the inconsistent state corresponds to (2-2) above. Therefore, the data is copied from the secure computing devices 2 and 3 (uncommitted) and overwrites the DB of the secure computing device 1 (committed).
- FIG. 5 is a flowchart illustrating an example of the operation of the secure computing device 201.
- FIG. 6 is a flowchart illustrating an example of the operation of the plaintext recovery unit 302.
- FIG. 7 is a flowchart illustrating an example of the operation of the secret sharing value restoration unit 303.
- the commit target is T i
- the number of committed secure computation devices is j
- the committed secure computation devices are S c0 , S c1 ,...,S cj
- the uncommitted secret sharing values are S u0 , S u1 ,...,S u(Nj)
- the commit history table is T com .
- Each secure computing device transmits its own commit history table to the other secure computing devices to share it (step S501). That is, each secure computing device shares S c0 .T com , S c1 .T com , ..., S cj .T com , S u0 .T com , S u1 .T com , ..., S u(Nj) .T com .
- the commit history table may be aggregated in a predetermined secure computing device Sx and then transmitted from Sx to each secure computing device.
- the commit mismatch detection unit 301 extracts one record whose commit is not consistent (step S502).
- the commitment deviation detection unit 301 counts the number of committed secure computing devices, and the count result is j (step S503).
- the commitment deviation detection unit 301 determines whether the table to be restored is a table including share data (step S504), and if Yes, outputs the table to be restored to the plaintext restoration unit, and if No, outputs it to the secret sharing value restoration unit.
- the plaintext recovery unit 302 determines whether j is equal to or greater than k (step S505). If yes, a first plaintext recovery process (described later) is performed. If no, a second plaintext recovery process (described later) is performed.
- the secret sharing value recovery unit 303 determines whether j is equal to or greater than k (step S508), and if yes, performs a first share recovery process (described later). If step S508 is No, the secret sharing value recovery unit 303 determines whether (Nj) is equal to or greater than k (step S510), and if Yes, performs a second share recovery process (described later). If step S510 is No, the share recovery process cannot be performed, so recovery is performed, for example, from backup data.
- Fig. 6A is a flowchart for explaining the "first plaintext recovery process" in Fig. 5.
- the first plaintext recovery process is a process for rolling forward the plaintext recovery target table to a committed state.
- the plaintext recovery unit 302 judges whether the recovery target table has been committed in the commit history table of its own secure computing device (step S601). If the answer is Yes, the recovery target table is sent to an uncommitted secure computing device (step S602), and the first plaintext recovery process is terminated.
- the own secure computing device is one of S c0 , S c1 , ..., S cj , and sends one of S c0 .T i , S c1 .T i , ..., S cj .T i to S u0 , S u1 , ..., S u(N-j) . If the answer is No, the recovery target table is received from the committed device (step S603), and the consistency of the received data is checked (step S604).
- the own secure computing device is one of S u0 , S u1 , ..., S u(N-j) , receives S c0 .T i , S c1 .T i , ..., S cj .T i , and checks whether all the received data match. If the answer is Yes in step S604, the plaintext recovery unit 302 reflects (copies) the received table to the recovery target table (step S605), updates the contents of the commit history table to “committed” (step S606), and terminates the first plaintext recovery process.
- Fig. 6B is a flowchart for explaining the "second plaintext recovery process" in Fig. 5.
- the second plaintext recovery process is a process for rolling back the plaintext recovery target table to an uncommitted state.
- the plaintext recovery unit 302 judges whether the recovery target table is uncommitted in the commit history table of its own secure computing device (step S611). If Yes, it transmits the recovery target table to the committed secure computing device (step S612) and ends the second plaintext recovery process.
- its own secure computing device is one of S u0 , S u1 , ..., S u(N-j) , and transmits one of S u0 .T i , S u1 .T i , ..., S u(N-j) .T i to S c0 .T i , S c1 .T i , ..., S cj .T i . If the answer is No, the recovery target table is received from the uncommitted device (step S613) and the consistency of the received data is checked (step S614).
- the own secure computing device is one of S c0 , S c1 , ..., S cj , receives S u0 .T i , S u1 .T i , ..., S u(Nj) .T i , and checks whether all the received data match. If the answer is Yes in step S614, the plaintext recovery unit 302 reflects (copies) the received table to the recovery target table (step S615), updates the contents of the commit history table to “uncommitted” (step S616), and terminates the second plaintext recovery process.
- Fig. 7A is a flowchart explaining the "first share recovery process" in Fig. 5.
- the first share recovery process is a process for rolling forward a recovery target table including a share to a committed state.
- the secret sharing value recovery unit 303 judges whether the recovery target table has been committed in the commit history table of its own secure computing device (step S701). If the answer is Yes, it performs the secret reproduction process in a position of providing the share data (step S702), and ends the first share recovery process.
- the own secure computing device is one of S c0 , S c1 , ..., S cj , and performs the secret reproduction protocol using k values selected from S c0 .[T i ], S c1 .[T i ], ..., S cj .[T i ]. If the answer is No, the secret regeneration process is performed at the position where the share playback data is received (step S703), and the consistency of the received data is checked (step S704).
- the own secure computing device is one of S u0 , S u1 , ..., S u(N-j) , and performs the secret playback protocol at the position where the own secure computing device receives the playback data from S c0 , S c1 , ..., S cj . If the consistency check is satisfactory (OK in step S704), the secret sharing value recovery unit 303 reflects the regenerated data in the recovery target table (step S705), updates the contents of the commit history table to “committed” (step S7606), and terminates the first share recovery process.
- Fig. 7B is a flowchart explaining the "second share recovery process" in Fig. 5.
- the second share recovery process is a process for rolling back the recovery target table including the share to an uncommitted state.
- the secret sharing value recovery unit 303 judges whether the recovery target table is uncommitted in the commit history table of its own secure computing device (step S711). If the answer is Yes, it performs the confidential reproduction process in a position of providing the share data (step S712) and ends the second share recovery process.
- the own secure computing device is one of S u0 , S u1 , ..., S u (N-j) , and performs the confidential reproduction process using k values selected from S u0 .[T i ], S u1 .[T i ], ..., S uj .[T i ]. If the answer is No, the secret regeneration process is performed at the position where the share playback data is received (step S713), and the consistency of the received data is checked (step S714).
- the own secure computing device is one of S c0 , S c1 , ..., S cj , and performs the secret playback protocol at the position where the playback data is received from S u0 , S u1 , ..., S u(N-j) . If the consistency check is satisfactory (OK in step S714), the secret sharing value recovery unit 303 reflects the regenerated data in the recovery target table (step S715), updates the contents of the commit history table to “uncommitted” (step S716), and terminates the second share recovery process.
- whether to roll forward or roll back the plaintext table is determined depending on whether the number of committed secure computing devices is k or more.
- a configuration may be adopted in which roll forward is performed if there is at least one committed secure computing apparatus. Note that a situation in which there is no committed secure computing apparatus is a consistent state in which the table is in an uncommitted state.
- the functional block diagram of the secure computing device according to the second embodiment is similar to that of the first embodiment (FIG. 3). 8 is a flowchart illustrating an example of the operation of the secure computing apparatus 201 according to the second embodiment. Steps S501 to S504 are similar to those in the first embodiment.
- step S504 If it is determined in step S504 that the recovery target table is plaintext, the plaintext recovery unit 302 performs a first plaintext recovery process (step S506).
- the first plaintext recovery process is similar to that in the first embodiment.
- the program describing this processing can be recorded on a computer-readable recording medium.
- Examples of computer-readable recording media include magnetic recording devices, optical disks, magneto-optical recording media, and semiconductor memories.
- the program may be distributed, for example, by selling, transferring, or lending portable recording media such as DVDs or CD-ROMs on which the program is recorded. Furthermore, the program may be distributed by storing the program in a storage device of a server computer and transferring the program from the server computer to other computers via a network.
- a computer that executes such a program for example, first stores in its own storage device the program recorded on a portable recording medium or the program transferred from a server computer. Then, when executing a process, the computer reads the program stored on its own recording medium and executes the process according to the read program. As another execution form of the program, the computer may read the program directly from the portable recording medium and execute the process according to the program, or may execute the process according to the received program each time a program is transferred from the server computer to the computer.
- the above-mentioned process may also be executed by a so-called ASP (Application Service Provider) type service that does not transfer the program from the server computer to the computer, but realizes the processing function only by issuing an execution instruction and obtaining the results.
- ASP Application Service Provider
- the program in this form includes information used for processing by an electronic computer that is equivalent to a program (such as data that is not a direct command to the computer but has properties that specify the processing of the computer).
- the device is configured by executing a specific program on a computer, but at least a portion of the processing may be realized by hardware.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
開示技術の秘密計算装置は、記憶部と、テーブル共有手段と、コミットずれ検知部と、秘密分散値復旧部を備える。記憶部は平文のコミット履歴テーブルを記憶し、テーブル共有手段により、他の秘密計算装置とコミット履歴テーブルを共有する。コミットずれ検知部は、共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出する。秘密分散値復旧部は、コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施する。
Description
開示技術は、秘密分散したデータを格納した秘密分散システムが、障害発生時に復旧する方法に関する。
一般的な暗号方式では、秘匿したいデータを暗号化して秘密計算装置に格納していても、その値を用いて計算を行う際には、復号を行ってから計算を行う。
これに対し、データを暗号化したまま計算を行うことができる技術として、参考文献1(千田浩司、他、「軽量検証可能3パーティ秘匿関数計算の再考」、CSS 2010)の秘密計算技術がある。参考文献1には、1つの数値を複数の暗号化されたシェアに変換し、N台の秘密計算装置が各々シェアを持ち、各自、自身のシェアの情報は漏らさずに、加算、乗算、論理演算などを行う、マルチパーティプロトコルが開示されている。
これに対し、データを暗号化したまま計算を行うことができる技術として、参考文献1(千田浩司、他、「軽量検証可能3パーティ秘匿関数計算の再考」、CSS 2010)の秘密計算技術がある。参考文献1には、1つの数値を複数の暗号化されたシェアに変換し、N台の秘密計算装置が各々シェアを持ち、各自、自身のシェアの情報は漏らさずに、加算、乗算、論理演算などを行う、マルチパーティプロトコルが開示されている。
(k,N)秘密分散システムでは、N個のシェアのうち、k個のシェアがあれば、元の値を復元することができる。そのため各秘密計算装置は、自身のシェアをほかの秘密計算装置に漏らさないことが安全性の前提となっている(情報理論的安全性)。
したがって、k以上の秘密計算装置が攻撃されるケースについては、シェアを守ることはできないが、k未満の秘密計算装置が攻撃されるケースを想定し、安全性を保つよう設計することが可能である。
したがって、k以上の秘密計算装置が攻撃されるケースについては、シェアを守ることはできないが、k未満の秘密計算装置が攻撃されるケースを想定し、安全性を保つよう設計することが可能である。
攻撃者は、攻撃の内容により、パッシブな攻撃者とアクティブな攻撃者に分類できる。
パッシブな攻撃者は、データの覗き見だけを行う。秘密計算においては、自身のデータに加え、秘密計算過程で入手するデータも覗き見対象となり、これらのデータから元の値に関する情報や元の値そのものを得ようとする。semi-honest 若しくは honest-but-curious とも呼ばれる。
アクティブな攻撃者は、データの覗き見に加え、改ざんや、プロトコルに規定されない任意の動作(不要なデータの送信など)を行う。秘密計算においては、自身のデータ及び秘密計算過程で入手するデータを改ざんするため、他の秘密計算秘密計算装置が受信するデータが改ざん値となり、不正な計算結果を出力させる、もしくは、元の値に関する情報や元の値そのものを得ようとする。malicious とも呼ばれる。
パッシブな攻撃者は、データの覗き見だけを行う。秘密計算においては、自身のデータに加え、秘密計算過程で入手するデータも覗き見対象となり、これらのデータから元の値に関する情報や元の値そのものを得ようとする。semi-honest 若しくは honest-but-curious とも呼ばれる。
アクティブな攻撃者は、データの覗き見に加え、改ざんや、プロトコルに規定されない任意の動作(不要なデータの送信など)を行う。秘密計算においては、自身のデータ及び秘密計算過程で入手するデータを改ざんするため、他の秘密計算秘密計算装置が受信するデータが改ざん値となり、不正な計算結果を出力させる、もしくは、元の値に関する情報や元の値そのものを得ようとする。malicious とも呼ばれる。
activeな攻撃者にk未満の秘密計算装置が攻撃され、シェアが改ざんされたケースを想定し、N台の秘密計算装置のシェアから、不整合検知を行う秘密計算プロトコルが提案されている(特許文献1)。このプロトコルでは、N>=2k-1の場合に、不整合検知を行うことができ、N>=2kの場合に、改ざんされたシェア(秘密計算装置)の特定を行うことができる。
一般的なDBシステムで、障害が発生した場合の選択肢は以下の通りである。
(1)復旧後、DBのロールバックもしくはロールフォワードを行い、仕掛中処理を実行する前もしくは後の状態に戻る
(2)アクティブ/スタンバイ構成でスタンバイ機に切り替え、DBの状態としては、仕掛中処理を実行する前もしくは後の状態に戻る
(3)バックアップデータからの復旧を行い、バックアップデータがある最新状態に戻る
(1)復旧後、DBのロールバックもしくはロールフォワードを行い、仕掛中処理を実行する前もしくは後の状態に戻る
(2)アクティブ/スタンバイ構成でスタンバイ機に切り替え、DBの状態としては、仕掛中処理を実行する前もしくは後の状態に戻る
(3)バックアップデータからの復旧を行い、バックアップデータがある最新状態に戻る
秘密分散システムのうち、x台の秘密計算装置に障害が発生した場合、障害時の秘密計算装置再起動、アクティブ/スタンバイ切替時などに、障害機自体のDB状態だけを復旧すればよいわけではなく、障害が発生していないほかのN-x台との整合性をとり、復旧後、N台の秘密計算装置間でDBの不整合が発生しないようにしなければならない。
秘密分散システムでは、正常時にも、N台の秘密計算装置間でDBの整合性をとっておくために、DBアクセスの順番や、タイミングを合わせながら実行していると考えられる。しかし、N台のうちx台で障害が発生した場合には、障害発生のタイミングによりコミットずれが発生してしまう。
秘密分散システムでは、正常時にも、N台の秘密計算装置間でDBの整合性をとっておくために、DBアクセスの順番や、タイミングを合わせながら実行していると考えられる。しかし、N台のうちx台で障害が発生した場合には、障害発生のタイミングによりコミットずれが発生してしまう。
なお、本明細書で使用する「コミット」とは、一般的な意味での1台のDBのコミット操作を言う。また「コミットずれ」とは、N台の秘密計算装置において、同一リクエストに対するDBのコミット操作が完了した秘密計算装置(コミット済の秘密計算装置)と、未完了の秘密計算装置(未コミットの秘密計算装置)が混在することを言う。
コミットずれが生じているかどうかを検出する方法としては、前述した不整合検知秘密計算プロトコルを用いる方法がある。これを用いた場合、k+1台以上のDBがコミット済の場合は未コミットのシェアを特定することができるが、k台のDBがコミット済の場合には、破損したシェアを特定することができない。図1を用いてこの様子を説明する。
まず、シャミア秘密分散について簡単に説明する。
<秘密分散>
秘匿したい情報をsとする。定数項がsであるk-1次関数f(x)を作る。f(x)が通る点の座標(xi,f(xi))(i=1,2,...,N, N>k)をシェアとする。これをシャミアの(k,N)秘密分散と呼ぶ。
<情報の復元>
N個のシェアから任意のk個の座標を取得する。座標を全て通るk-1次関数f(x)を求める。f(0)が秘匿情報である。
<秘密分散>
秘匿したい情報をsとする。定数項がsであるk-1次関数f(x)を作る。f(x)が通る点の座標(xi,f(xi))(i=1,2,...,N, N>k)をシェアとする。これをシャミアの(k,N)秘密分散と呼ぶ。
<情報の復元>
N個のシェアから任意のk個の座標を取得する。座標を全て通るk-1次関数f(x)を求める。f(0)が秘匿情報である。
図1(a)は、(k,N)=(2,4)の秘匿情報とシェアの関係を例示したものである。101が秘匿情報、102から105が各秘密計算装置に配布されるシェアである。
図1(b)は、(k,N)=(2,3)の秘匿情報とシェアの関係を例示したものである。106が秘匿情報、107から109が各秘密計算装置に配布されるシェアである。
どちらもk-1=1なので、シェアは直線(一次関数)に乗っている。
図1(b)は、(k,N)=(2,3)の秘匿情報とシェアの関係を例示したものである。106が秘匿情報、107から109が各秘密計算装置に配布されるシェアである。
どちらもk-1=1なので、シェアは直線(一次関数)に乗っている。
図1(a-2)、(b-2)は、コミットずれにより、シェアの不整合が起きた様子を示す。
(a-2)では、シェア102、103、105が同一の直線上にあるので、シェア104-1が不整合であることが分かり、(a-2)に示す通り、xiの値からシェアを復元することができる。
(b-2)の場合、シェア107、108-1、109が同一の直線上にないので、不整合が起きていることは分かる。しかし、シェアが2つあれば一次関数が定まるので、どのシェアが不整合であるかは分からない。
(a-2)では、シェア102、103、105が同一の直線上にあるので、シェア104-1が不整合であることが分かり、(a-2)に示す通り、xiの値からシェアを復元することができる。
(b-2)の場合、シェア107、108-1、109が同一の直線上にないので、不整合が起きていることは分かる。しかし、シェアが2つあれば一次関数が定まるので、どのシェアが不整合であるかは分からない。
他に、特許文献1による不整合検知では、対象となるデータサイズが大きい場合、処理に時間がかかることも想定される。
上記課題を解決するため、開示技術に係る秘密計算装置は、記憶部と、テーブル共有手段と、コミットずれ検知部と、秘密分散値復旧部を備える。
記憶部は平文のコミット履歴テーブルを記憶し、テーブル共有手段により、他の秘密計算装置とコミット履歴テーブルを共有する。
コミットずれ検知部は、共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出する。
秘密分散値復旧部は、コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施する。
記憶部は平文のコミット履歴テーブルを記憶し、テーブル共有手段により、他の秘密計算装置とコミット履歴テーブルを共有する。
コミットずれ検知部は、共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出する。
秘密分散値復旧部は、コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施する。
開示技術によれば、障害発生などにより、N台の秘密計算装置間にコミットずれが発生した場合、秘密分散値を平文に復元することなく、N台の秘密計算装置のDBの整合性を取ることができる。コミット履歴テーブル自体のサイズは小さいことが想定され、かつコミット履歴テーブルにより復旧対象テーブルを特定できるため、処理時間を短縮することができる。
以下、開示技術の実施形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
[開示技術のポイント]
引き続き図1を用いて開示技術のポイントを説明する。
特許文献1の技術では、k+1台以上のDBがコミット済の場合は未コミットのシェアを特定することができるが、k台のDBがコミット済の場合には、破損したシェアを特定することができなかった。これは、破損したシェアを秘密計算により特定しようとしたためである。
引き続き図1を用いて開示技術のポイントを説明する。
特許文献1の技術では、k+1台以上のDBがコミット済の場合は未コミットのシェアを特定することができるが、k台のDBがコミット済の場合には、破損したシェアを特定することができなかった。これは、破損したシェアを秘密計算により特定しようとしたためである。
開示技術では、平文の「コミット履歴テーブル」を新たに用意し、これにより秘密計算装置間のコミットずれを把握して復旧すべきシェアを特定する。
図1(a-3)と(b-3)に示したように、復旧すべきシェア(104-1や108-1)が特定できれば、整合性が取れたシェアが従う直線上に、不整合なシェアを復元することができる。
図1(a-3)と(b-3)に示したように、復旧すべきシェア(104-1や108-1)が特定できれば、整合性が取れたシェアが従う直線上に、不整合なシェアを復元することができる。
[記法]
開示技術における記法について説明する。
N台(N≧2)の秘密計算装置S0,S1,...,SN-1において、秘匿したい値a∈Znを暗号化した値(秘密分散値)を[a]i∈Znとする。Znは0からnまでの整数の集合(nは1以上の整数)からなる有限環である。しかし、各Siにてアルゴリズムは共通となるため、アルゴリズムの記法としては、iを意識せず[a]iを[a]と表記する。
(1)暗号化(秘密分散)したテーブルTを、[T]と表記する。
(2)秘密計算装置Siが記憶する平文テーブルTjをSi.Tjと表記する。
(3)秘密計算装置Siが記憶する暗号化テーブル[Tj]をSi.[Tj]と表記する。
(4)j≧kとして、S0.[Ti],S1.[Ti],..., Sj.[Ti]から任意のk個を選択し、そのk個の秘密分散値から、新たな秘密分散値を作成する処理を「秘匿再生処理」と呼ぶ。
開示技術における記法について説明する。
N台(N≧2)の秘密計算装置S0,S1,...,SN-1において、秘匿したい値a∈Znを暗号化した値(秘密分散値)を[a]i∈Znとする。Znは0からnまでの整数の集合(nは1以上の整数)からなる有限環である。しかし、各Siにてアルゴリズムは共通となるため、アルゴリズムの記法としては、iを意識せず[a]iを[a]と表記する。
(1)暗号化(秘密分散)したテーブルTを、[T]と表記する。
(2)秘密計算装置Siが記憶する平文テーブルTjをSi.Tjと表記する。
(3)秘密計算装置Siが記憶する暗号化テーブル[Tj]をSi.[Tj]と表記する。
(4)j≧kとして、S0.[Ti],S1.[Ti],..., Sj.[Ti]から任意のk個を選択し、そのk個の秘密分散値から、新たな秘密分散値を作成する処理を「秘匿再生処理」と呼ぶ。
[第1実施形態]
図2は、開示技術の第1実施形態に係る秘密分散システムの構成例を示す図である。秘密分散システム2はN台(N≧3)の秘密計算装置S0,..,Si,..,SN-1がネットワーク202を介して接続されている。
各秘密計算装置201は、秘匿したいテーブルT0,T1,..,Tx-1を暗号化(秘密分散)した[T0],[T1],..,[Tx-1]、および平文のテーブルを保管する記憶部を持ち、k個の秘密分散値により、元の値が復元できる秘密分散システムを構成するものとする。
図2は、開示技術の第1実施形態に係る秘密分散システムの構成例を示す図である。秘密分散システム2はN台(N≧3)の秘密計算装置S0,..,Si,..,SN-1がネットワーク202を介して接続されている。
各秘密計算装置201は、秘匿したいテーブルT0,T1,..,Tx-1を暗号化(秘密分散)した[T0],[T1],..,[Tx-1]、および平文のテーブルを保管する記憶部を持ち、k個の秘密分散値により、元の値が復元できる秘密分散システムを構成するものとする。
図3は、1台の秘密計算装置201の構成例を示す機能ブロック図である。秘密計算装置201は、コミットずれ検知部301、平文復旧部302、秘密分散値復旧部303、通信部304、データ記憶部305を備える。
秘密計算装置201は、通信部304により他の秘密計算装置と連携して、乗算や論理演算などを行う。
データ記憶部305は、テーブルT0,T1,..,Tx-1を暗号化(秘密分散)した[T0],[T1],..,[Tx-1]を保管する。
データ記憶部は、また、秘密計算リクエストに対する、コミット済/未コミットの状態を管理する平文のコミット履歴テーブルを記憶する。図4に、秘密計算装置3台分のコミット履歴テーブルを例示する。コミット履歴テーブルは、秘密計算リクエスト識別子(リクエストID)、コミット対象テーブル、コミットの処理日時を管理する。
秘密計算装置201は、通信部304により他の秘密計算装置と連携して、乗算や論理演算などを行う。
データ記憶部305は、テーブルT0,T1,..,Tx-1を暗号化(秘密分散)した[T0],[T1],..,[Tx-1]を保管する。
データ記憶部は、また、秘密計算リクエストに対する、コミット済/未コミットの状態を管理する平文のコミット履歴テーブルを記憶する。図4に、秘密計算装置3台分のコミット履歴テーブルを例示する。コミット履歴テーブルは、秘密計算リクエスト識別子(リクエストID)、コミット対象テーブル、コミットの処理日時を管理する。
<秘密分散復旧手順の具体例>
図4を用いて、(k, N)=(2, 3)の場合の秘密分散復旧手順を具体例により説明する。
図4を用いて、(k, N)=(2, 3)の場合の秘密分散復旧手順を具体例により説明する。
<コミット履歴テーブルの共有>
まず、秘密計算装置1、2、3でそれぞれ管理するコミット履歴テーブルを共有する。
まず、秘密計算装置1、2、3でそれぞれ管理するコミット履歴テーブルを共有する。
<不整合レコードの抽出>
次に、コミット状態が整合していないレコードを抽出する。
リクエストIDが1000のレコードは、3台ともコミット済であり、整合している。
リクエストIDが1001のレコードは、3台とも未コミットであり、整合している。
リクエストIDが1002のレコードは、コミット済が2台、未コミットが1台であり、整合していない。従って、テーブルCは復旧対象である。
次に、コミット状態が整合していないレコードを抽出する。
リクエストIDが1000のレコードは、3台ともコミット済であり、整合している。
リクエストIDが1001のレコードは、3台とも未コミットであり、整合している。
リクエストIDが1002のレコードは、コミット済が2台、未コミットが1台であり、整合していない。従って、テーブルCは復旧対象である。
<復旧方法の決定>
第1実施形態では、次の考え方でテーブルを復旧する。
(1)テーブルがシェアを含む場合
(1-1)コミット済の秘密計算装置がk台以上の場合、コミット済の秘密計算装置のシェアから未コミットの秘密計算装置のシェアを復元し、未コミットの秘密計算装置のDBを上書きする(ロールフォワード)。
(1-2)コミット済の秘密計算装置がk台未満で、未コミットの秘密計算装置がk台以上の場合、未コミットの秘密計算装置のシェアからコミット済の秘密計算装置のシェアを復元し、コミット済の秘密計算装置のDBを上書きする(ロールバック)。
第1実施形態では、次の考え方でテーブルを復旧する。
(1)テーブルがシェアを含む場合
(1-1)コミット済の秘密計算装置がk台以上の場合、コミット済の秘密計算装置のシェアから未コミットの秘密計算装置のシェアを復元し、未コミットの秘密計算装置のDBを上書きする(ロールフォワード)。
(1-2)コミット済の秘密計算装置がk台未満で、未コミットの秘密計算装置がk台以上の場合、未コミットの秘密計算装置のシェアからコミット済の秘密計算装置のシェアを復元し、コミット済の秘密計算装置のDBを上書きする(ロールバック)。
(2)テーブルがシェアを含まない場合
(2-1)コミット済の秘密計算装置がk台以上の場合、コミット済の秘密計算装置からデータをコピーし、未コミットの秘密計算装置のDBを上書きする(ロールフォワード)。
(2-2)コミット済の秘密計算装置がk台未満の場合、未コミットの秘密計算装置からデータをコピーし、コミット済の秘密計算装置のDBを上書きする(ロールバック)。
(2-1)コミット済の秘密計算装置がk台以上の場合、コミット済の秘密計算装置からデータをコピーし、未コミットの秘密計算装置のDBを上書きする(ロールフォワード)。
(2-2)コミット済の秘密計算装置がk台未満の場合、未コミットの秘密計算装置からデータをコピーし、コミット済の秘密計算装置のDBを上書きする(ロールバック)。
すると、テーブルCは上記(1-1)に該当するので、秘密計算装置1,2(コミット済)のシェアから秘密計算装置3(未コミット)のシェアを復元し、秘密計算装置3のDBを上書きする。
なお、シェアの復旧には既存技術を利用すればよい。例えば、参考文献2(特許第59684号公報)に記載の、シェア復旧方法が利用できる。
なお、シェアの復旧には既存技術を利用すればよい。例えば、参考文献2(特許第59684号公報)に記載の、シェア復旧方法が利用できる。
次の、リクエストIDが1003のレコードも同様に処理する。
テーブルDは、コミット済が1台、未コミットが2台であり、整合していない。そしてデータは「シェア」なので、不整合状態は上記(1-2)に該当する。そこで、秘密計算装置2、3(未コミット)のシェアから秘密計算装置1(コミット済)のシェアを復元し、秘密計算装置1のDBを上書きする。
テーブルDは、コミット済が1台、未コミットが2台であり、整合していない。そしてデータは「シェア」なので、不整合状態は上記(1-2)に該当する。そこで、秘密計算装置2、3(未コミット)のシェアから秘密計算装置1(コミット済)のシェアを復元し、秘密計算装置1のDBを上書きする。
次の、リクエストIDが1004のレコードも同様に処理する。
テーブルEは、コミット済が1台、未コミットが2台であり、整合していない。そしてデータは「平文」なので、不整合状態は上記(2-2)に該当する。そこで、密計算装置2、3(未コミット)からデータをコピーし、秘密計算装置1(コミット済)のDBを上書きする。
テーブルEは、コミット済が1台、未コミットが2台であり、整合していない。そしてデータは「平文」なので、不整合状態は上記(2-2)に該当する。そこで、密計算装置2、3(未コミット)からデータをコピーし、秘密計算装置1(コミット済)のDBを上書きする。
以上を一般化した手順を説明する。
図5は、秘密計算装置201の作用の一例を説明するフローチャートである。
図6は、平文復旧部302の作用の一例を説明するフローチャートである。
図7は、秘密分散値復旧部303の作用の一例を説明するフローチャートである。
図5は、秘密計算装置201の作用の一例を説明するフローチャートである。
図6は、平文復旧部302の作用の一例を説明するフローチャートである。
図7は、秘密分散値復旧部303の作用の一例を説明するフローチャートである。
ある秘密計算リクエストRiについて、コミット対象をTi、コミット済みの秘密計算装置数をj、コミット済みの秘密計算装置をSc0, Sc1,..., Scj、未コミットの秘密分散値をSu0, Su1,...,Su(N-j)とする。また、コミット履歴テーブルをTcomとする。
<コミット履歴テーブルの共有>
各秘密計算装置は、他の秘密計算装置に、自身のコミット履歴テーブルを送信して共有する(ステップS501)。つまり、各秘密計算装置は、Sc0.Tcom,Sc1.Tcom,..., Scj.Tcom, Su0.Tcom,Su1.Tcom,..., Su(N-j).Tcomを共有する。
なお、コミット履歴テーブルは、所定の秘密計算装置Sxに集約した後、Sxから各秘密計算装置に送信することとしても良い。
各秘密計算装置は、他の秘密計算装置に、自身のコミット履歴テーブルを送信して共有する(ステップS501)。つまり、各秘密計算装置は、Sc0.Tcom,Sc1.Tcom,..., Scj.Tcom, Su0.Tcom,Su1.Tcom,..., Su(N-j).Tcomを共有する。
なお、コミット履歴テーブルは、所定の秘密計算装置Sxに集約した後、Sxから各秘密計算装置に送信することとしても良い。
<不整合レコードの抽出>
コミットずれ検知部301は、コミットが整合していないレコードを1つ抽出する(ステップS502)。
コミットずれ検知部301は、コミットが整合していないレコードを1つ抽出する(ステップS502)。
<コミット済の秘密計算装置のカウント>
コミットずれ検知部301は、コミット済の秘密計算装置の数をカウントする。カウント結果はjである(ステップS503)。
コミットずれ検知部301は、コミット済の秘密計算装置の数をカウントする。カウント結果はjである(ステップS503)。
<データ種別の判定>
コミットずれ検知部301は、復旧対象テーブルが、シェアデータを含むテーブルか否かを判定し(ステップS504)、Yesなら復旧対象テーブルを平文復旧部に、Noなら秘密分散値復旧部に出力する。
コミットずれ検知部301は、復旧対象テーブルが、シェアデータを含むテーブルか否かを判定し(ステップS504)、Yesなら復旧対象テーブルを平文復旧部に、Noなら秘密分散値復旧部に出力する。
<平文テーブル復旧処理>
平文復旧部302はjがk以上か判定し(ステップS505)、Yesの場合、第1平文復旧処理(後述)を、Noの場合、第2平文復旧処理(後述)を実施する。
平文復旧部302はjがk以上か判定し(ステップS505)、Yesの場合、第1平文復旧処理(後述)を、Noの場合、第2平文復旧処理(後述)を実施する。
<シェアテーブル復旧処理>
秘密分散値復旧部303はjがk以上か判定し(ステップS508)、Yesの場合、第1シェア復旧処理(後述)を実施する。
ステップS508がNoの場合、秘密分散値復旧部303は(N-j)がk以上か判定し(ステップS510)、Yesの場合、第2シェア復旧処理(後述)を実施する。
ステップS510がNoの場合、シェア復旧処理はできないので、例えば、バックアップデータからの復旧を行う。
秘密分散値復旧部303はjがk以上か判定し(ステップS508)、Yesの場合、第1シェア復旧処理(後述)を実施する。
ステップS508がNoの場合、秘密分散値復旧部303は(N-j)がk以上か判定し(ステップS510)、Yesの場合、第2シェア復旧処理(後述)を実施する。
ステップS510がNoの場合、シェア復旧処理はできないので、例えば、バックアップデータからの復旧を行う。
<第1平文復旧処理>
図6(a)は、図5の「第1平文復旧処理」を説明するフローチャートである。第1平文復旧処理は、平文の復旧対象テーブルをコミット済にロールフォワードする処理である。
平文復旧部302は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルがコミット済か否かを判定する(ステップS601)。Yesの場合、復旧対象テーブルを、未コミットの秘密計算装置に送信し(ステップS602)、第1平文復旧処理を終了する。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0, Su1,...,Su(N-j)にSc0.Ti,Sc1.Ti,..., Scj.Tiのいずれかを送信する。
Noの場合、復旧対象テーブルをコミット済の装置から受信し(ステップS603)、受信データの整合性をチェックする(ステップS604)。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0.Ti,Sc1.Ti,..., Scj.Tiを受信し、受信データが全て一致するか確認する。
ステップS604でYesの場合、平文復旧部302は、受信したテーブルを復旧対象テーブルに反映(コピー)し(ステップS605)、コミット履歴テーブルの内容を「コミット済」に更新し(ステップS606)、第1平文復旧処理を終了する。
図6(a)は、図5の「第1平文復旧処理」を説明するフローチャートである。第1平文復旧処理は、平文の復旧対象テーブルをコミット済にロールフォワードする処理である。
平文復旧部302は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルがコミット済か否かを判定する(ステップS601)。Yesの場合、復旧対象テーブルを、未コミットの秘密計算装置に送信し(ステップS602)、第1平文復旧処理を終了する。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0, Su1,...,Su(N-j)にSc0.Ti,Sc1.Ti,..., Scj.Tiのいずれかを送信する。
Noの場合、復旧対象テーブルをコミット済の装置から受信し(ステップS603)、受信データの整合性をチェックする(ステップS604)。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0.Ti,Sc1.Ti,..., Scj.Tiを受信し、受信データが全て一致するか確認する。
ステップS604でYesの場合、平文復旧部302は、受信したテーブルを復旧対象テーブルに反映(コピー)し(ステップS605)、コミット履歴テーブルの内容を「コミット済」に更新し(ステップS606)、第1平文復旧処理を終了する。
<第2平文復旧処理>
図6(b)は、図5の「第2平文復旧処理」を説明するフローチャートである。第2平文復旧処理は、平文の復旧対象テーブルを未コミットにロールバックする処理である。
平文復旧部302は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルが未コミットか否かを判定する(ステップS611)。Yesの場合、復旧対象テーブルを、コミット済の秘密計算装置に送信し(ステップS612)、第2平文復旧処理を終了する。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0.Ti,Sc1.Ti,..., Scj.TiにSu0.Ti,Su1.Ti,..., Su(N-j).Tiのいずれかを送信する。
Noの場合、復旧対象テーブルを未コミットの装置から受信し(ステップS613)、受信データの整合性をチェックする(ステップS614)。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0.Ti,Su1.Ti,..., Su(N-j).Tiを受信し、受信データが全て一致するか確認する。
ステップS614でYesの場合、平文復旧部302は、受信したテーブルを復旧対象テーブルに反映(コピー)し(ステップS615)、コミット履歴テーブルの内容を「未コミット」に更新し(ステップS616)、第2平文復旧処理を終了する。
図6(b)は、図5の「第2平文復旧処理」を説明するフローチャートである。第2平文復旧処理は、平文の復旧対象テーブルを未コミットにロールバックする処理である。
平文復旧部302は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルが未コミットか否かを判定する(ステップS611)。Yesの場合、復旧対象テーブルを、コミット済の秘密計算装置に送信し(ステップS612)、第2平文復旧処理を終了する。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0.Ti,Sc1.Ti,..., Scj.TiにSu0.Ti,Su1.Ti,..., Su(N-j).Tiのいずれかを送信する。
Noの場合、復旧対象テーブルを未コミットの装置から受信し(ステップS613)、受信データの整合性をチェックする(ステップS614)。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0.Ti,Su1.Ti,..., Su(N-j).Tiを受信し、受信データが全て一致するか確認する。
ステップS614でYesの場合、平文復旧部302は、受信したテーブルを復旧対象テーブルに反映(コピー)し(ステップS615)、コミット履歴テーブルの内容を「未コミット」に更新し(ステップS616)、第2平文復旧処理を終了する。
<第1シェア復旧処理>
図7(a)は、図5の「第1シェア復旧処理」を説明するフローチャートである。第1シェア復旧処理は、シェアを含む復旧対象テーブルをコミット済にロールフォワードする処理である。
秘密分散値復旧部303は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルがコミット済か否かを判定する(ステップS701)。Yesの場合、シェアデータを提供する立場で秘匿再生処理を実施し(ステップS702)、第1シェア復旧処理を終了する。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Sc0.[Ti],Sc1.[Ti],..., Scj.[Ti]から選択されたk個の値を用いて秘匿再生プロトコルを実施する。
Noの場合、シェア再生用データを受信する立場で秘匿再生成処理を実施し(ステップS703)、受信データの整合性をチェックする(ステップS704)。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0, Sc1,..., Scjから再生用データを受信する立場で秘匿再生プロトコルを実施する。
整合性チェックで問題なければ(ステップS704のOK)、秘密分散値復旧部303は、再生成したデータを復旧対象テーブルに反映し(ステップS705)、コミット履歴テーブルの内容を「コミット済」に更新し(ステップ7606)、第1シェア復旧処理を終了する。
図7(a)は、図5の「第1シェア復旧処理」を説明するフローチャートである。第1シェア復旧処理は、シェアを含む復旧対象テーブルをコミット済にロールフォワードする処理である。
秘密分散値復旧部303は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルがコミット済か否かを判定する(ステップS701)。Yesの場合、シェアデータを提供する立場で秘匿再生処理を実施し(ステップS702)、第1シェア復旧処理を終了する。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Sc0.[Ti],Sc1.[Ti],..., Scj.[Ti]から選択されたk個の値を用いて秘匿再生プロトコルを実施する。
Noの場合、シェア再生用データを受信する立場で秘匿再生成処理を実施し(ステップS703)、受信データの整合性をチェックする(ステップS704)。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Sc0, Sc1,..., Scjから再生用データを受信する立場で秘匿再生プロトコルを実施する。
整合性チェックで問題なければ(ステップS704のOK)、秘密分散値復旧部303は、再生成したデータを復旧対象テーブルに反映し(ステップS705)、コミット履歴テーブルの内容を「コミット済」に更新し(ステップ7606)、第1シェア復旧処理を終了する。
<第2シェア復旧処理>
図7(b)は、図5の「第2シェア復旧処理」を説明するフローチャートである。第2シェア復旧処理は、シェアを含む復旧対象テーブルを未コミットにロールバックする処理である。
秘密分散値復旧部303は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルが未コミットか否かを判定する(ステップS711)。Yesの場合、シェアデータを提供する立場で秘匿再生処理を実施し(ステップS712)、第2シェア復旧処理を終了する。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Su0.[Ti],Su1.[Ti],..., Suj.[Ti]から選択されたk個の値を用いて秘匿再生処理を実施する。
Noの場合、シェア再生用データを受信する立場で秘匿再生成処理を実施し(ステップS713)、受信データの整合性をチェックする(ステップS714)。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0, Su1,...,Su(N-j)から再生用データを受信する立場で秘匿再生プロトコルを実施する。
整合性チェックで問題なければ(ステップS714のOK)、秘密分散値復旧部303は、再生成したデータを復旧対象テーブルに反映し(ステップS715)、コミット履歴テーブルの内容を「未コミット」に更新し(ステップ716)、第2シェア復旧処理を終了する。
図7(b)は、図5の「第2シェア復旧処理」を説明するフローチャートである。第2シェア復旧処理は、シェアを含む復旧対象テーブルを未コミットにロールバックする処理である。
秘密分散値復旧部303は、自秘密計算装置のコミット履歴テーブルで復旧対象テーブルが未コミットか否かを判定する(ステップS711)。Yesの場合、シェアデータを提供する立場で秘匿再生処理を実施し(ステップS712)、第2シェア復旧処理を終了する。つまり、自秘密計算装置はSu0, Su1,...,Su(N-j)のいずれかであり、Su0.[Ti],Su1.[Ti],..., Suj.[Ti]から選択されたk個の値を用いて秘匿再生処理を実施する。
Noの場合、シェア再生用データを受信する立場で秘匿再生成処理を実施し(ステップS713)、受信データの整合性をチェックする(ステップS714)。つまり、自秘密計算装置はSc0, Sc1,..., Scjのいずれかであり、Su0, Su1,...,Su(N-j)から再生用データを受信する立場で秘匿再生プロトコルを実施する。
整合性チェックで問題なければ(ステップS714のOK)、秘密分散値復旧部303は、再生成したデータを復旧対象テーブルに反映し(ステップS715)、コミット履歴テーブルの内容を「未コミット」に更新し(ステップ716)、第2シェア復旧処理を終了する。
以上が、第1実施形態に係る秘密計算装置と秘密分散復旧方法の説明である。
[第2実施形態]
平文テーブルの復旧に関し、第1実施形態では、コミット済の秘密計算装置の数がk以上か否かで平文テーブルをロールフォワードするかロールバックするか決定した。
これに替えて、コミット済の秘密計算装置が1台でもあれば、ロールフォワードする構成としてもよい。なお、コミット済が1台もない状況は、テーブルが未コミットの状態として整合した状態である。
平文テーブルの復旧に関し、第1実施形態では、コミット済の秘密計算装置の数がk以上か否かで平文テーブルをロールフォワードするかロールバックするか決定した。
これに替えて、コミット済の秘密計算装置が1台でもあれば、ロールフォワードする構成としてもよい。なお、コミット済が1台もない状況は、テーブルが未コミットの状態として整合した状態である。
第2実施形態に係る秘密計算装置の機能ブロック図は第1実施形態と同様である(図3)。
図8は、第2実施形態に係る秘密計算装置201の作用の一例を説明するフローチャートである。ステップS501からステップS504は第1実施形態と同様である。
図8は、第2実施形態に係る秘密計算装置201の作用の一例を説明するフローチャートである。ステップS501からステップS504は第1実施形態と同様である。
<平文テーブル復旧処理>
ステップS504で、復旧対象テーブルが平文であると判定された場合、平文復旧部302は第1平文復旧処理を実施する(ステップS506)。
第1平文復旧処理は、第1実施形態と同様である。
ステップS504で、復旧対象テーブルが平文であると判定された場合、平文復旧部302は第1平文復旧処理を実施する(ステップS506)。
第1平文復旧処理は、第1実施形態と同様である。
<シェアテーブル復旧処理>
第2実施形態に係る秘密分散値復旧部303の処理は、第1実施形態と同様である。
第2実施形態に係る秘密分散値復旧部303の処理は、第1実施形態と同様である。
以上が、第2実施形態に係る秘密計算装置と秘密分散復旧方法の説明である。
[プログラム、記録媒体]
上述の各種の処理は、図9に示すコンピュータ2000の記録部2020に、上記方法の各ステップを実行させるプログラムを読み込ませ、制御部2010、入力部2030、出力部2040、表示部2050などに動作させることで実施できる。
上述の各種の処理は、図9に示すコンピュータ2000の記録部2020に、上記方法の各ステップを実行させるプログラムを読み込ませ、制御部2010、入力部2030、出力部2040、表示部2050などに動作させることで実施できる。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
201 秘密計算装置
202 ネットワーク
301 コミットずれ検知部
302 平文復旧部
303 秘密分散値復旧部
304 通信部
305 データ記憶部
2000 コンピュータ
2010 制御部
2020 記録部
2030 入力部
2040 出力部
2050 表示部
202 ネットワーク
301 コミットずれ検知部
302 平文復旧部
303 秘密分散値復旧部
304 通信部
305 データ記憶部
2000 コンピュータ
2010 制御部
2020 記録部
2030 入力部
2040 出力部
2050 表示部
Claims (8)
- k個のシェアから元の値が復元できる秘密分散システムを構成する複数の秘密計算装置のうちの1台で実施される秘密分散復旧方法であって、
平文のコミット履歴テーブルを他の秘密計算装置と共有するステップと、
共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出するステップと、
コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を、他の秘密計算装置と連携して実施するステップと、
コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を、他の秘密計算装置と連携して実施するステップと、
を含む秘密分散復旧方法。 - k個のシェアから元の値が復元できる秘密分散システムを構成する複数の秘密計算装置のうちの1台で実施される秘密分散復旧方法であって、
平文のコミット履歴テーブルを他の秘密計算装置と共有するステップと、
共有した前記コミット履歴テーブルに基づき、コミットが不整合である平文テーブルを抽出するステップと、
コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置のテーブルで未コミットの秘密計算装置のテーブルを上書きする処理を、他の秘密計算装置と連携して実施するステップと、
コミット済の秘密計算装置の数がk台未満の場合、未コミットの秘密計算装置のテーブルでコミット済の秘密計算装置のテーブルを上書きする処理を、他の秘密計算装置と連携して実施するステップと、
を含む秘密分散復旧方法。 - 請求項1または2に記載の秘密分散復旧方法であって、
前記コミット履歴テーブルのレコードは、コミット対象テーブル名と、コミット処理の実施済/未実施を記録するフィールドを有し、
前記上書き処理の後、前記コミット履歴テーブルを、コミット済から未コミットに、または未コミットからコミット済に更新するステップと
を含む秘密分散復旧方法。 - k個のシェアから元の値が復元できる秘密分散システムを構成する秘密計算装置であって、
平文のコミット履歴テーブルを記憶する記憶部と、
他の秘密計算装置とコミット履歴テーブルを共有する手段と、
共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出するコミットずれ検知部と、
コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施する秘密分散値復旧部と
を備えた秘密計算装置。 - k個のシェアから元の値が復元できる秘密分散システムを構成する秘密計算装置であって、
平文のコミット履歴テーブルを記憶する記憶部と、
他の秘密計算装置のコミット履歴テーブルを共有する手段と、
共有した前記コミット履歴テーブルに基づき、コミットが不整合である平文テーブルを抽出するコミットずれ検知部と、
コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置のテーブルで未コミットの秘密計算装置のテーブルを上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満の場合、未コミットの秘密計算装置のテーブルでコミット済の秘密計算装置のテーブルを上書きする処理を他の秘密計算装置と連携して実施する平文復旧部と
を備えた秘密計算装置。 - 請求項4または5に記載の秘密計算装置であって、
前記コミット履歴テーブルのレコードは、コミット対象テーブル名と、コミット処理の実施済/未実施を記録するフィールドを有し、
前記上書き処理の後、前記秘密分散値復旧部または前記平文復旧部は、前記コミット履歴テーブルを、コミット済から未コミットに、または未コミットからコミット済に更新する
ことを特徴とする秘密計算装置。 - 複数の秘密計算装置からなり、k個のシェアから元の値が復元できる秘密分散システムであって、
各秘密計算装置は
平文のコミット履歴テーブルを記憶する記憶部と、
他の秘密計算装置のコミット履歴テーブルを取得する手段と、
共有した前記コミット履歴テーブルに基づき、コミットが不整合である秘密分散テーブルを抽出するコミットずれ検知部と、
コミット済の秘密計算装置の数がk台以上の場合、コミット済の秘密計算装置の秘密分散テーブルから未コミットの秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施し、コミット済の秘密計算装置の数がk台未満、かつ未コミットの秘密計算装置の数がk台以上の場合、未コミットの秘密計算装置の秘密分散テーブルからコミット済の秘密計算装置の秘密分散テーブルを再生成して上書きする処理を他の秘密計算装置と連携して実施する秘密分散値復旧部と
を備えることを特徴とする秘密分散システム。 - 請求項1または2のいずれかに記載の秘密分散復旧方法の各ステップを、コンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2023/019913 WO2024247040A1 (ja) | 2023-05-29 | 2023-05-29 | 秘密計算装置、秘密分散システム、秘密分散復旧方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2023/019913 WO2024247040A1 (ja) | 2023-05-29 | 2023-05-29 | 秘密計算装置、秘密分散システム、秘密分散復旧方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024247040A1 true WO2024247040A1 (ja) | 2024-12-05 |
Family
ID=93657014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2023/019913 WO2024247040A1 (ja) | 2023-05-29 | 2023-05-29 | 秘密計算装置、秘密分散システム、秘密分散復旧方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024247040A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09185539A (ja) * | 1995-12-28 | 1997-07-15 | Hitachi Ltd | 分散トランザクションのコミット制御方法 |
JP2007501456A (ja) * | 2003-08-01 | 2007-01-25 | オラクル・インターナショナル・コーポレイション | 非共有データベースシステムにおける1段階コミット |
WO2013046883A1 (ja) * | 2011-09-30 | 2013-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクション処理システム、方法及びプログラム |
JP2016145880A (ja) * | 2015-02-06 | 2016-08-12 | 日本電信電話株式会社 | 不整合検知方法、不整合検知システム、不整合検知装置、およびプログラム |
-
2023
- 2023-05-29 WO PCT/JP2023/019913 patent/WO2024247040A1/ja unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09185539A (ja) * | 1995-12-28 | 1997-07-15 | Hitachi Ltd | 分散トランザクションのコミット制御方法 |
JP2007501456A (ja) * | 2003-08-01 | 2007-01-25 | オラクル・インターナショナル・コーポレイション | 非共有データベースシステムにおける1段階コミット |
WO2013046883A1 (ja) * | 2011-09-30 | 2013-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクション処理システム、方法及びプログラム |
JP2016145880A (ja) * | 2015-02-06 | 2016-08-12 | 日本電信電話株式会社 | 不整合検知方法、不整合検知システム、不整合検知装置、およびプログラム |
Non-Patent Citations (1)
Title |
---|
"IV The Lottery ProtocolePrint Archive - Paper 2013/784 ver:20140318:191838", 18 March 2014, article MARCIN ANDRYCHOWICZ, STEFAN DZIEMBOWSKI, DANIEL MALINOWSKI, ŁUKASZ MAZUREK: " Secure Multiparty Computations on Bitcoin, Cryptology", pages: 1 - 18, XP009559242 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9722788B1 (en) | Rekeying encrypted virtual machines in a cloud | |
US9152578B1 (en) | Securing data replication, backup and mobility in cloud storage | |
US9563517B1 (en) | Cloud snapshots | |
US9740880B1 (en) | Encrypted virtual machines in a cloud | |
US8214612B1 (en) | Ensuring consistency of replicated volumes | |
US5940507A (en) | Secure file archive through encryption key management | |
US7958372B1 (en) | Method and apparatus to convert a logical unit from a first encryption state to a second encryption state using a journal in a continuous data protection environment | |
US8464101B1 (en) | CAS command network replication | |
US8924354B2 (en) | Block level data replication | |
US8411863B2 (en) | Full volume encryption in a clustered environment | |
TW202111586A (zh) | 可信賴執行環境中基於錯誤校正編碼的共享區塊鏈資料儲存 | |
TWI749488B (zh) | 電腦實現的用於檢測和禁止重放攻擊的方法、系統及非暫時性電腦可讀的儲存媒體 | |
CN103853634B (zh) | 一种容灾备份系统及方法 | |
US8832040B2 (en) | Method and apparatus of securely processing data for file backup, de-duplication, and restoration | |
US10372554B1 (en) | Verification and restore of replicated data using a cloud storing chunks of data and a plurality of hashes | |
CN101809558A (zh) | 远程异步数据复制系统和方法 | |
US11829253B2 (en) | Systems and methods for non-blocking backups | |
US11386070B2 (en) | Method and system for secure data replication data integrity verification | |
US10484179B1 (en) | Data consistency in an encrypted replication environment | |
WO2018032375A1 (zh) | 一种用于区块链可生存存储系统及其方法 | |
CN110018924A (zh) | 一种基于区块链和纠删码的文件防破坏方法 | |
CN107710164A (zh) | 作为一种服务的灾难恢复 | |
CN113190620B (zh) | Redis集群之间数据的同步方法、装置、设备及存储介质 | |
CN114787780A (zh) | 用于基于区块链的备份和恢复的系统和方法 | |
US11237921B2 (en) | Protecting storage backup configuration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23939520 Country of ref document: EP Kind code of ref document: A1 |