WO2019059069A1 - 秘密読み書き装置、秘密読み書き方法、およびプログラム - Google Patents

秘密読み書き装置、秘密読み書き方法、およびプログラム Download PDF

Info

Publication number
WO2019059069A1
WO2019059069A1 PCT/JP2018/033849 JP2018033849W WO2019059069A1 WO 2019059069 A1 WO2019059069 A1 WO 2019059069A1 JP 2018033849 W JP2018033849 W JP 2018033849W WO 2019059069 A1 WO2019059069 A1 WO 2019059069A1
Authority
WO
WIPO (PCT)
Prior art keywords
secret
sentence
confidential
vector
array
Prior art date
Application number
PCT/JP2018/033849
Other languages
English (en)
French (fr)
Inventor
浩気 濱田
Original Assignee
日本電信電話株式会社
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 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to CN201880060821.0A priority Critical patent/CN111108540B/zh
Priority to US16/645,588 priority patent/US11508262B2/en
Priority to AU2018336413A priority patent/AU2018336413B2/en
Priority to JP2019543586A priority patent/JP6981473B2/ja
Priority to EP18857708.4A priority patent/EP3686869B1/en
Publication of WO2019059069A1 publication Critical patent/WO2019059069A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Definitions

  • the present invention relates to cryptographic application technology, and in particular to technology for reading and writing data to an array without revealing the accessed position.
  • Non-Patent Document 1 As a method of obtaining a specific calculation result without restoring the encrypted numerical value, there is a method called secret calculation (see, for example, Non-Patent Document 1).
  • encryption is performed by distributing fragments of numerical values to three secret calculation devices, and by performing cooperative calculation by three secret calculation devices, addition and subtraction are performed without restoring numerical values.
  • the result of constant addition, multiplication, constant multiplication, logical operation (not, logical product, logical sum, exclusive OR), data format conversion (integer, binary number) distributed to three secret computing devices, ie, It can be kept encrypted.
  • Non-Patent Document 2 required the communication amount ⁇ (n) to read and write data to an array of size n in constant-step communication.
  • An object of the present invention is, in view of the above-mentioned point, to be able to efficiently perform data reading and data writing to an array which is performed without revealing a position accessed by constant stage communication with a smaller amount of communication than before. It is to be.
  • a confidential sentence [a [x]] which is the x-th element of the array of confidential sentences [a] is output
  • a write instruction is input, the confidential sentence
  • a secret read / write device that adds a secret sentence [d] to the secret sentence [a [x]] which is the x-th element of the array [a], and is a vector of two secret sentences [b 0 ], [b 1 ]
  • a buffer storage unit for storing a write buffer [b] ([b 0 ], [b 1 ]
  • the secret read / write technology of the present invention it becomes possible to efficiently perform data reading and data writing with respect to an array which is performed without revealing the position accessed by constant stage communication with a smaller amount of communication than before.
  • FIG. 1 is a diagram illustrating the functional configuration of the secret read / write device.
  • FIG. 2 is a diagram illustrating the processing procedure of the secret reading and writing method.
  • FIG. 3 is a diagram illustrating the processing procedure of the secret reading unit.
  • FIG. 4 is a diagram illustrating the processing procedure of the secret writing unit.
  • a value in which a certain value a is concealed by encryption, secret sharing or the like is referred to as a confidential text of a, and is denoted as [a].
  • a is called the plaintext of [a].
  • [a] refers to a set of pieces of secret sharing that each secret computing device has.
  • the i-th element of the vector a (a 0 , a 1 ,...) Is referred to by a [i].
  • the combination of vector a and vector b is written as a
  • the number of elements of the vector a is written as
  • the absolute value of the real number x is written as
  • the secret read / write device 1 of the embodiment includes a buffer storage unit 10, an instruction determination unit 11, a secret reading unit 12, a buffer addition unit 13, a buffer addition unit 14, and a secret writing unit 15, as illustrated in FIG.
  • the secret reading and writing method of the embodiment is realized by the secret reading and writing apparatus 1 performing the processing of each step illustrated in FIG. 2.
  • the secret read / write device 1 is, for example, a special program configured by reading a special program into a known or dedicated computer having a central processing unit (CPU: Central Processing Unit), a main storage device (RAM: Random Access Memory), etc. Device.
  • the secret read / write device 1 executes each process, for example, under the control of the central processing unit.
  • the data input to the secret read / write device 1 and the data obtained by each process are stored, for example, in the main storage device, and the data stored in the main storage device is read out to the central processing unit as necessary. It is used for other processing.
  • At least a part of each processing unit of the secret read / write device 1 may be configured by hardware such as an integrated circuit.
  • step S1-1 the instruction determination unit 11 receives a read instruction or a write instruction as an input.
  • step S1-2 if the input is a read command, the instruction determination unit 11 outputs the array [a] of secret sentences and the secret sentence [x] of the access position to the secret reading unit 12, and the process proceeds to step S2. Advance. If the input is a write command, the buffer adding unit 14 outputs the array of secret sentences [a], the secret sentence [x] of the access position, and the secret sentence [d] of the value to be written, to the buffer adding unit 14 and step S4-1. Proceed with the process.
  • step S2 the secret reading unit 12 reads the confidential sentence [a [x]], which is the x-th element, from the array of confidential sentences [a] while concealing the access position x.
  • the method described in Non-Patent Document 2 can be used as a method of reading an element from an array while concealing the access position. Further, reading can be performed more efficiently if a secret reading method described later is used.
  • the secret reading unit 12 outputs the confidential sentence [a [x]], which is the x-th element of the read array [a], to the buffer addition unit 13.
  • step S3-1 the buffer addition unit 13 uses the write buffer [b] stored in the buffer storage unit 10 to calculate the confidential text [c] of the unreflected value c. Specifically, the secret sentence [c] is calculated by equation (1).
  • the secret sentence [c] of the unreflected value c is calculated by the equation (2).
  • step S3-2 the buffer addition unit 13 uses the secret text [c] of the value c that is not reflected in the secret text [a [x]] that is the x-th element of the array [a] output by the secret reading section 12 Is added, and the secret text [a [x]] + [c] is output as the secret text [a [x]], which is the x-th element of the array [a], as the output of the secret read / write device 1.
  • step S4-1 the buffer addition unit 14 adds the secret sentence [x] of the access position and the secret sentence [d] of the value to be written to the write buffer [b] stored in the buffer storage unit 10.
  • m
  • step S4-2 the buffer addition unit 14 determines whether or not the number of elements of the write buffer [b]
  • the method described in Non-Patent Document 2 can be used as a method of writing a value to an array while concealing the access position. Further, if a secret writing method to be described later is used, writing can be performed more efficiently.
  • step S12-2 the secret reading unit 12 creates a vector [v j ] of k secret sentences.
  • k is an integer of 2 or more
  • j is an integer of 1 or more and k or less.
  • m 1 , m 2 ,..., M k are natural numbers that satisfy n ⁇ m 1 ⁇ m 2 ⁇ ⁇ ⁇ m k
  • x j is an integer defined by equation (3)
  • each secret text to be input is a share by (t, s) Shamir secret sharing
  • (t, s) Shamir secret sharing means that dispersive values obtained by dividing the input plaintext into s pieces are distributed and held in s secret calculation devices, and if any t shares are aligned It is secret sharing such that plaintext can be restored, and less than t shares can not obtain any information on plaintext.
  • t is an integer of 1 or more, and s ⁇ 2t-1.
  • step S12-3-1 the secret reading unit 12 initializes j to 1.
  • step S12-3-2 the secret reading unit 12 generates a vector [b j, i ] of n j secret sentences using the array [a j-1 ] of secret sentences.
  • the number n j of the vector [b j, i ] of the confidential text to be created differs depending on the value of j.
  • n j be an integer defined by equation (5)
  • i be an integer greater than 0 and less than n j
  • [b j, i ] ([a j-1 [m j i + 0 ]], [a j-1 [m j i + 1]], ..., [a j-1 [m j i + m j -1]])
  • when the [ As a j-1 [ ⁇ ]] 0)
  • the vector [b j, j ] of the secret sentence is calculated.
  • step S12-3-3 the secret reading unit 12 uses the inner product of the secret statement vector [b j, j ] and the secret statement vector [v j ] as the i-th element array of secret statements [a j ] Calculate
  • step S12-3-4 the secret reading unit 12 determines whether j + 1 is less than or equal to k (j + 1 ⁇ k), and increments j by 1 if j + 1 is less than or equal to k j ⁇ j + 1), and the process returns to step S12-3-2. If j + 1 is larger than k (j + 1> k), an array [a k ] of secret sentences is output. At this time, the array of secret sentences [a k ] is an array having one element.
  • step S12-4 the secret reading unit 12 outputs the array [a k ] of the confidential text with the element number 1 as the confidential text [a [x]] which is the x-th element of the array [a] of the confidential text Do.
  • the vector [b 0 ] of the confidential text of the access position, and the vector [b 1 ] of the confidential text of the value to be written are received as inputs.
  • the vector [b 0 ] of the confidential sentence of the access position is treated as the confidential sentence [x i ]
  • the vector [b 1 ] of the confidential sentence of the value to be written is treated as the confidential sentence [y i ].
  • m is the number of elements of the write buffer [b]
  • step S15-2 the secret writing unit 15 creates a vector [w i ] of a confidential text representing the write destination address x i of each value y i .
  • the element of 1 be a vector of secret sentences of size n 1 where the other elements are 0, and the vector [q i ] of secret sentences is
  • n 1 and n 2 can be expressed by equation (6).
  • (t, s) Shamir secret sharing means that dispersive values obtained by dividing the input plaintext into s pieces are distributed and held in s secret calculation devices, and if any t shares are aligned It is secret sharing such that plaintext can be restored, and less than t shares can not obtain any information on plaintext.
  • t is an integer of 1 or more, and s ⁇ 2t-1.
  • step S 15 - 3 secret writing unit 15, a j and each integer from 0 to less than n, the vector of the confidential statement by selecting an element from the vector [w i] confidential statement [u j], [v j ] Generate Specifically, i is an integer of 0 or more and less than m, j is an integer of 0 or more and less than n, and ⁇ 1 and ⁇ 2 are equations (7).
  • step S15-4 the secret writing unit 15 sets j as an integer of 0 or more and less than n, and generates the inner product of the secret statement vector [u j ] and the secret statement vector [v j ] as the secret statement array [a Add to the j-th element [a [j]] of].
  • the point of this invention is to use the fact that reading from the buffer can be done by the amount of communication linear to the buffer size and that the secret writing method can be done by the amount of communication of O (n) when the buffer size is O ( ⁇ n). is there.
  • O (n) when the buffer size is O ( ⁇ n). is there.
  • the program describing the processing content can be recorded in a computer readable recording medium.
  • a computer readable recording medium any medium such as a magnetic recording device, an optical disc, a magneto-optical recording medium, a semiconductor memory, etc. may be used.
  • this program is carried out, for example, by selling, transferring, lending, etc. a portable recording medium such as a DVD, a CD-ROM, etc. in which the program is recorded.
  • this program may be stored in a storage device of a server computer, and the program may be distributed by transferring the program from the server computer to another computer via a network.
  • a computer that executes such a program first temporarily stores a program recorded on a portable recording medium or a program transferred from a server computer in its own storage device. Then, at the time of execution of the process, this computer reads the program stored in its own storage device and executes the process according to the read program. Further, as another execution form of this program, the computer may read the program directly from the portable recording medium and execute processing according to the program, and further, the program is transferred from the server computer to this computer Each time, processing according to the received program may be executed sequentially.
  • ASP Application Service Provider
  • the program in the present embodiment includes information provided for processing by a computer that conforms to the program (such as data that is not a direct command to the computer but has a property that defines the processing of the computer).
  • the present apparatus is configured by executing a predetermined program on a computer, at least a part of the processing contents may be realized as hardware.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)

Abstract

アクセスした位置を明かすことなく配列に対するデータ読み込みやデータ書き込みを効率よく行う。秘密読み書き装置(1)は、読み込み命令もしくは書き込み命令を入力とし、読み込み命令が入力されたときは秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]を出力し、書き込み命令が入力されたときは秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]に秘匿文[d]を加算する。秘密読み込み部(12)は、秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を読み込む。バッファ加算部(13)は、未反映値cの秘匿文[c]を秘匿文[a[x]]へ加算する。バッファ追加部(14)は、書き込みバッファ[b]へ秘匿文[x]と秘匿文[d]を追加する。秘密書き込み部(15)は、書き込みバッファ[b]の要素数が所定の値を超えたとき、秘匿文の配列[a]の秘匿文のベクトル[b0]が示すアクセス位置へ秘匿文のベクトル[b1]が示す値を加算する。

Description

秘密読み書き装置、秘密読み書き方法、およびプログラム
 この発明は、暗号応用技術に関するものであり、特にアクセスした位置を明かすことなく配列に対するデータの読み込みや書き込みを行う技術に関する。
 暗号化された数値を復元することなく特定の演算結果を得る方法として、秘密計算と呼ばれる方法がある(例えば、非特許文献1参照)。非特許文献1に記載された方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、3つの秘密計算装置が協調計算を行うことにより、数値を復元することなく、加減算、定数加算、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。
 アクセスした位置iを明かすことなく、配列のi番目のデータの読み込みや配列のi番目のデータへの値dの書き込みを行う場合、すべての要素に対してアクセスしたように見せかけることがよく行われる(例えば、非特許文献2参照)。
千田浩司、濱田浩気、五十嵐大、高橋克巳、"軽量検証可能3パーティ秘匿関数計算の再考"、CSS、2010年 Marcel Keller and Peter Scholl, "Efficient, oblivious data structures for MPC", Advances in Cryptology - ASIACRYPT 2014, Vol. 8874 of Lecture Notes in Computer Science, pp. 506-525, 2014.
 しかしながら、非特許文献2に記載された従来技術は、定数段の通信で大きさnの配列へデータの読み込みや書き込みを行うのに通信量Ω(n)が必要であった。
 この発明の目的は、上記のような点に鑑みて、定数段の通信でアクセスした位置を明かすことなく行う配列に対するデータ読み込みやデータ書き込みを従来よりも少ない通信量で効率よく行うことを可能とすることである。
 上記の課題を解決するために、この発明の秘密読み書き装置は、大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …,[a[n-1]])とアクセス位置xの秘匿文[x]とを含む読み込み命令、もしくは、秘匿文の配列[a]と秘匿文[x]と書き込む値dの秘匿文[d]とを含む書き込み命令を入力とし、読み込み命令が入力されたときは秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]を出力し、書き込み命令が入力されたときは秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]に秘匿文[d]を加算する秘密読み書き装置であって、2個の秘匿文のベクトル[b0], [b1]からなる書き込みバッファ[b]=([b0], [b1])を記憶するバッファ記憶部と、書き込み命令が入力されたとき、秘匿文のベクトル[b0]へ秘匿文[x]を追加し、秘匿文のベクトル[b1]へ秘匿文[d]を追加するバッファ追加部と、書き込みバッファ[b]の要素数が所定の値を超えたとき、秘匿文の配列[a]のうち秘匿文のベクトル[b0]が示すアクセス位置へ秘匿文のベクトル[b1]が示す値を加算する秘密書き込み部と、読み込み命令が入力されたとき、秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を読み込む秘密読み込み部と、秘匿文のベクトル[b1]の要素のうち秘匿文のベクトル[b0]が示すアクセス位置が秘匿文[x]が示すアクセス位置と等しい要素の総和である未反映値cの秘匿文[c]を秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]へ加算するバッファ加算部と、を含む。
 この発明の秘密読み書き技術によれば、定数段の通信でアクセスした位置を明かすことなく行う配列に対するデータ読み込みやデータ書き込みを従来よりも少ない通信量で効率よく行うことが可能となる。
図1は、秘密読み書き装置の機能構成を例示する図である。 図2は、秘密読み書き方法の処理手続きを例示する図である。 図3は、秘密読み込み部の処理手続きを例示する図である。 図4は、秘密書き込み部の処理手続きを例示する図である。
 実施形態の説明に先立ち、この明細書における表記方法および用語の定義について説明する。
 <表記方法>
 ある値aを暗号化や秘密分散などにより秘匿化した値をaの秘匿文と呼び、[a]と表記する。また、aを[a]の平文と呼ぶ。秘匿化が秘密分散である場合は、[a]により各秘密計算装置が持つ秘密分散の断片の集合を参照する。ベクトルa=(a0, a1, …)のi番目の要素をa[i]により参照する。ベクトルaとベクトルbの結合をa||bと表記する。ベクトルaの要素の数を|a|と表記する。実数xの絶対値を|x|と表記する。
Figure JPOXMLDOC01-appb-M000003
は床関数であり、実数x以下の最大の整数を表す。
Figure JPOXMLDOC01-appb-M000004
は天井関数であり、実数x以上の最小の整数を表す。
 <加算、減算、乗算>
 秘匿文に対する加算、減算、乗算の各演算は、2つの値a, bの秘匿文[a], [b]を入力とし、それぞれa+b, a-b, abの計算結果c1, c2, c3の秘匿文[c1], [c2], [c3]を計算する。これらの演算の実行をそれぞれ次式のように記述する。
Figure JPOXMLDOC01-appb-M000005
 誤解を招く恐れのない場合は、Add([a], [b]), Sub([a], [b]), Mul([a], [b])をそれぞれ[a]+[b], [a]-[b], [a][b]と略記する。
 <等号判定>
 2つの値a, bの秘匿文[a], [b]を入力とし、a=bならばc=1、a≠bならばc=0となる秘匿文[c]を計算する処理を次式のように記述する。
Figure JPOXMLDOC01-appb-M000006
 以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
 実施形態の秘密読み書き装置1は、図1に例示するように、バッファ記憶部10、命令判断部11、秘密読み込み部12、バッファ加算部13、バッファ追加部14、および秘密書き込み部15を含む。この秘密読み書き装置1が、図2に例示する各ステップの処理を行うことにより実施形態の秘密読み書き方法が実現される。
 秘密読み書き装置1は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密読み書き装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密読み書き装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密読み書き装置1の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
 以下、図2を参照して、実施形態の秘密読み書き装置1が実行する秘密読み書き方法について説明する。
 バッファ記憶部10には、入力された書き込み命令を保持しておくための書き込みバッファ[b]=([b0], [b1])が記憶されている。[b0]はアクセス位置の秘匿文のベクトル[b0]=([b0[0]], [b0[1]], …,[b0[m-1]])である。[b1]は書き込む値の秘匿文のベクトル[b1]=([b1[0]], [b1[1]], …,[b1[m-1]])である。ただし、mは書き込みバッファ[b]の要素数であり、m=|[b]|である。
 ステップS1-1において、命令判断部11は、読み込み命令もしくは書き込み命令を入力として受け取る。読み込み命令は、大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …, [a[n-1]])とアクセス位置xの秘匿文[x]とを含む。書き込み命令は、大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …, [a[n-1]])とアクセス位置xの秘匿文[x]と書き込む値dの秘匿文[d]とを含む。
 ステップS1-2において、命令判断部11は、入力が読み込み命令であれば、秘匿文の配列[a]とアクセス位置の秘匿文[x]とを秘密読み込み部12へ出力し、ステップS2へ処理を進める。また、入力が書き込み命令であれば、秘匿文の配列[a]とアクセス位置の秘匿文[x]と書き込む値の秘匿文[d]とをバッファ追加部14へ出力し、ステップS4-1へ処理を進める。
 ステップS2において、秘密読み込み部12は、アクセス位置xを秘匿したまま秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を読み込む。アクセス位置を秘匿したまま配列から要素を読み込む方法は、例えば、非特許文献2に記載されている方法を用いることができる。また、後述する秘密読み込み方法を用いれば、より効率よく読み込みを行うことができる。秘密読み込み部12は、読み出した配列[a]のx番目の要素である秘匿文[a[x]]をバッファ加算部13へ出力する。
 ステップS3-1において、バッファ加算部13は、バッファ記憶部10に記憶されている書き込みバッファ[b]を用いて未反映の値cの秘匿文[c]を計算する。具体的には、式(1)により秘匿文[c]を計算する。
Figure JPOXMLDOC01-appb-M000007
 もしくは、式(2)により未反映の値cの秘匿文[c]を計算する。
Figure JPOXMLDOC01-appb-M000008
 ステップS3-2において、バッファ加算部13は、秘密読み込み部12が出力した配列[a]のx番目の要素である秘匿文[a[x]]に未反映の値cの秘匿文[c]を加算して、秘匿文[a[x]]+[c]を配列[a]のx番目の要素である秘匿文[a[x]]として秘密読み書き装置1の出力とする。
 ステップS4-1において、バッファ追加部14は、バッファ記憶部10に記憶されている書き込みバッファ[b]へアクセス位置の秘匿文[x]と書き込む値の秘匿文[d]とを追加する。具体的には、m=|[b]|とし、[b[m]]=([b0[m]], [b1[m]])=([x], [d])とする。
 ステップS4-2において、バッファ追加部14は、書き込みバッファ[b]の要素数|[b]|が√nを超えているか否かを判定する。書き込みバッファ[b]の要素数|[b]|が√nを超えている場合(すなわち、|[b]|>√n)はステップS5へ処理を進める。また、書き込みバッファ[b]の要素数|[b]|が√n以下の場合(すなわち、|[b]|≦√n)は処理を終了する。
 ステップS5において、秘密書き込み部15は、書き込みバッファ[b]に記憶されているアクセス位置の秘匿文のベクトル[b0]=([b0[0]], [b0[1]], …, [b0[m-1]])と書き込む値の秘匿文のベクトル[b1]=([b1[0]], [b1[1]], …, [b1[m-1]])とを用いて、アクセス位置xを秘匿したまま書き込む値の秘匿文[d]を配列のx番目の要素である秘匿文a[x]へ加算する。アクセス位置を秘匿したまま配列へ値を書き込む方法は、例えば、非特許文献2に記載されている方法を用いることができる。また、後述する秘密書き込み方法を用いれば、より効率よく書き込みを行うことができる。
 以下、図3を参照して、秘密読み込み部12が効率よく配列からのデータ読み込みを行う方法について説明する。
 ステップS12-1において、秘密読み込み部12は、大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …, [a[n-1]])とアクセス位置xの秘匿文[x]とを入力として受け取る。
 ステップS12-2において、秘密読み込み部12は、k個の秘匿文のベクトル[vj]を作成する。ただし、kは2以上の整数であり、jは1以上k以下の各整数である。具体的には、m1, m2, …, mkをn≦m1×m2×…×mkを満たす自然数とし、各整数jについて、xjを式(3)で定義される整数とし、(xjmod mj)番目の要素が1であり、他の要素が0である、大きさmjの秘匿文のベクトル[vj]を作成する。
Figure JPOXMLDOC01-appb-M000009
 特に、入力される各秘匿文が、(t, s)Shamir秘密分散によるシェアであれば、k, mi(i=1, 2, …, k)を式(4)とすることができる。なお、(t, s)Shamir秘密分散とは、入力された平文をs個に分割した分散値をs個の秘密計算装置に分散して保持しておき、任意のt個のシェアが揃えば平文を復元でき、t個未満のシェアからは平文に関する一切の情報を得られないような秘密分散である。このとき、tは1以上の整数であり、s≧2t-1である。
Figure JPOXMLDOC01-appb-M000010
 ステップS12-3-1において、秘密読み込み部12は、jを1に初期化する。
 ステップS12-3-2において、秘密読み込み部12は、秘匿文の配列[aj-1]を用いてnj個の秘匿文のベクトル[bj,i]を作成する。このとき、秘匿文の配列[a]=([a[0]], [a[1]], …, [a[n-1]])は、秘匿文の配列[a0]=([a0[0]], [a0[1]], …, [a0[n-1]])として扱う。作成する秘匿文のベクトル[bj,i]の数njは、jの値により異なる。具体的には、njを式(5)で定義される整数とし、iを0以上nj未満の各整数とし、[bj,i]=([aj-1[mji+0]],[aj-1[mji+1]], …, [aj-1[mji+mj-1]])(ただし、λ≧|aj-1|のとき[aj-1[λ]]=0)として、秘匿文のベクトル[bj,j]を計算する。
Figure JPOXMLDOC01-appb-M000011
 ステップS12-3-3において、秘密読み込み部12は、秘匿文のベクトル[bj,j]と秘匿文のベクトル[vj]との内積を第i要素とする秘匿文の配列[aj]を計算する。
 ステップS12-3-4において、秘密読み込み部12は、j+1がk以下(j+1≦k)であるか否かを判定し、j+1がk以下であれば、jをインクリメント(j←j+1)してステップS12-3-2へ処理を戻し、j+1がkより大きければ(j+1>k)、秘匿文の配列[ak]を出力する。なお、このとき、秘匿文の配列[ak]は要素数が1の配列となっている。
 ステップS12-4において、秘密読み込み部12は、要素数が1の秘匿文の配列[ak]を秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]として出力する。
 以下、図4を参照して、秘密書き込み部15が効率よく配列へデータ書き込みを行う方法について説明する。
 ステップS15-1において、秘密書き込み部15は、大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …, [a[n-1]])と、アクセス位置の秘匿文のベクトル[b0]と、書き込む値の秘匿文のベクトル[b1]とを入力として受け取る。以下、アクセス位置の秘匿文のベクトル[b0]は秘匿文[xi]、書き込む値の秘匿文のベクトル[b1]は秘匿文[yi]として扱う。ただし、mを書き込みバッファ[b]の要素数|[b]|とし、iは0以上m未満の各整数である。
 ステップS15-2において、秘密書き込み部15は、各値yiの書き込み先番地xiを表現する秘匿文のベクトル[wi]を作成する。具体的には、n1, n2をn1n2≧nを満たす自然数とし、pi1]qi2]が、n2λ12=xiのとき[yi]となり、他のときは0となる秘匿文のベクトル[pi], [qi]を作成し、その秘匿文のベクトル[pi], [qi]を結合して、秘匿文のベクトル[wi]=[pi]||[qi]を生成する。このとき、秘匿文のベクトル[pi]は、
Figure JPOXMLDOC01-appb-M000012
の要素が1であり、他の要素が0である大きさn1の秘匿文のベクトルとし、秘匿文のベクトル[qi]は、
Figure JPOXMLDOC01-appb-M000013
の要素が[yi]であり、他の要素が0である大きさn2の秘匿文のベクトルとしてもよい。
 特に、入力される各秘匿文が、(t, s)Shamir秘密分散によるシェアであれば、n1, n2は、式(6)とすることができる。なお、(t, s)Shamir秘密分散とは、入力された平文をs個に分割した分散値をs個の秘密計算装置に分散して保持しておき、任意のt個のシェアが揃えば平文を復元でき、t個未満のシェアからは平文に関する一切の情報を得られないような秘密分散である。このとき、tは1以上の整数であり、s≧2t-1である。
Figure JPOXMLDOC01-appb-M000014
 ステップS15-3において、秘密書き込み部15は、jを0以上n未満の各整数とし、秘匿文のベクトル[wi]から要素を選択して秘匿文のベクトル[uj], [vj]を生成する。具体的には、iを0以上m未満の各整数とし、jを0以上n未満の各整数とし、λ1, λ2を式(7)とし、
Figure JPOXMLDOC01-appb-M000015
式(8)のようにして秘匿文のベクトル[uj], [vj]を生成する。
Figure JPOXMLDOC01-appb-M000016
 ステップS15-4において、秘密書き込み部15は、jを0以上n未満の各整数とし、秘匿文のベクトル[uj]と秘匿文のベクトル[vj]との内積を秘匿文の配列[a]のj番目の要素[a[j]]に加算する。
 この発明は、バッファからの読み込みはバッファサイズに線形の通信量でできることと、秘密書き込み方法がバッファサイズO(√n)のときはO(n)の通信量でできることを利用することがポイントである。バッファサイズが√nを超えるまで実際の書き込みを保留することで、読み込みは必ずO(√n)の通信量で、書き込みは各回O(√n)に加えて1回だけO(n)の通信量で実現することができる。
 以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
 [プログラム、記録媒体]
 上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
 この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
 また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
 このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
 また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (6)

  1.  大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …,[a[n-1]])とアクセス位置xの秘匿文[x]とを含む読み込み命令、もしくは、上記秘匿文の配列[a]と上記秘匿文[x]と書き込む値dの秘匿文[d]とを含む書き込み命令を入力とし、上記読み込み命令が入力されたときは上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]を出力し、上記書き込み命令が入力されたときは上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]に秘匿文[d]を加算する秘密読み書き装置であって、
     2個の秘匿文のベクトル[b0], [b1]からなる書き込みバッファ[b]=([b0], [b1])を記憶するバッファ記憶部と、
     上記書き込み命令が入力されたとき、上記秘匿文のベクトル[b0]へ上記秘匿文[x]を追加し、上記秘匿文のベクトル[b1]へ上記秘匿文[d]を追加するバッファ追加部と、
     上記書き込みバッファ[b]の要素数が所定の値を超えたとき、上記秘匿文の配列[a]のうち上記秘匿文のベクトル[b0]が示すアクセス位置へ上記秘匿文のベクトル[b1]が示す値を加算する秘密書き込み部と、
     上記読み込み命令が入力されたとき、上記秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を読み込む秘密読み込み部と、
     上記秘匿文のベクトル[b1]の要素のうち上記秘匿文のベクトル[b0]が示すアクセス位置が上記秘匿文[x]が示すアクセス位置と等しい要素の総和である未反映値cの秘匿文[c]を上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]へ加算するバッファ加算部と、
     を含む秘密読み書き装置。
  2.  請求項1に記載の秘密読み書き装置であって、
     上記バッファ加算部は、次式により上記未反映値cの秘匿文[c]を計算するものである、
    Figure JPOXMLDOC01-appb-M000001

     秘密読み書き装置。
  3.  請求項1に記載の秘密読み書き装置であって、
     上記バッファ加算部は、次式により上記未反映値cの秘匿文[c]を計算するものである、
    Figure JPOXMLDOC01-appb-M000002

     秘密読み書き装置。
  4.  請求項1に記載の秘密読み書き装置であって、
     上記秘匿文の配列[a]と上記秘匿文[x]と上記秘匿文[d]は、tを1以上の整数とし、s≧2t-1とし、平文をs個に分割したシェアのうち、任意のt個のシェアが揃えば平文を復元でき、t個未満のシェアからは平文に関する一切の情報を得られない秘密分散により秘匿化したものであり、
     上記秘密読み込み部は、上記秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を、アクセス位置xを明かすことなく読み込むものであり、
     上記秘密書き込み部は、上記書き込みバッファの要素数が√nを超えたとき、上記秘匿文の配列[a]の上記秘匿文のベクトル[b0]が示すアクセス位置へ上記秘匿文のベクトル[b1]が示す値を、アクセス位置xを明かすことなく書き込むものである、
     秘密読み書き装置。
  5.  大きさnの秘匿文の配列[a]=([a[0]], [a[1]], …,[a[n-1]])とアクセス位置xの秘匿文[x]とを含む読み込み命令、もしくは、上記秘匿文の配列[a]と上記秘匿文[x]と書き込む値dの秘匿文[d]とを含む書き込み命令を入力とし、上記読み込み命令が入力されたときは上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]を出力し、上記書き込み命令が入力されたときは上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]に秘匿文[d]を加算する秘密読み書き装置が実行する秘密読み書き方法であって、
     バッファ記憶部に、2個の秘匿文のベクトル[b0], [b1]からなる書き込みバッファ[b]=([b0], [b1])が記憶されており、
     バッファ追加部が、上記書き込み命令が入力されたとき、上記秘匿文のベクトル[b0]へ上記秘匿文[x]を追加し、上記秘匿文のベクトル[b1]へ上記秘匿文[d]を追加し、
     秘密書き込み部が、上記書き込みバッファ[b]の要素数が所定の値を超えたとき、上記秘匿文の配列[a]のうち上記秘匿文のベクトル[b0]が示すアクセス位置へ上記秘匿文のベクトル[b1]が示す値を加算し、
     秘密読み込み部が、上記読み込み命令が入力されたとき、上記秘匿文の配列[a]からx番目の要素である秘匿文[a[x]]を読み込み、
     バッファ加算部が、上記秘匿文のベクトル[b1]の要素のうち上記秘匿文のベクトル[b0]が示すアクセス位置が上記秘匿文[x]が示すアクセス位置と等しい要素の総和である未反映値cの秘匿文[c]を上記秘匿文の配列[a]のx番目の要素である秘匿文[a[x]]へ加算する、
     秘密読み書き方法。
  6.  請求項1から4のいずれかに記載の秘密読み書き装置としてコンピュータを機能させるためのプログラム。
PCT/JP2018/033849 2017-09-21 2018-09-12 秘密読み書き装置、秘密読み書き方法、およびプログラム WO2019059069A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201880060821.0A CN111108540B (zh) 2017-09-21 2018-09-12 秘密读写装置、秘密读写方法、以及记录介质
US16/645,588 US11508262B2 (en) 2017-09-21 2018-09-12 Secure reading and writing apparatus, secure reading and writing method, and program
AU2018336413A AU2018336413B2 (en) 2017-09-21 2018-09-12 Secure reading and writing apparatus, secure reading and writing method, and program
JP2019543586A JP6981473B2 (ja) 2017-09-21 2018-09-12 秘密読み書き装置、秘密読み書き方法、およびプログラム
EP18857708.4A EP3686869B1 (en) 2017-09-21 2018-09-12 Secret reading/writing device, secret reading/writing method, and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-181264 2017-09-21
JP2017181264 2017-09-21

Publications (1)

Publication Number Publication Date
WO2019059069A1 true WO2019059069A1 (ja) 2019-03-28

Family

ID=65809753

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/033849 WO2019059069A1 (ja) 2017-09-21 2018-09-12 秘密読み書き装置、秘密読み書き方法、およびプログラム

Country Status (6)

Country Link
US (1) US11508262B2 (ja)
EP (1) EP3686869B1 (ja)
JP (1) JP6981473B2 (ja)
CN (1) CN111108540B (ja)
AU (1) AU2018336413B2 (ja)
WO (1) WO2019059069A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022107323A1 (ja) * 2020-11-20 2022-05-27 日本電気株式会社 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10334067A (ja) * 1997-05-29 1998-12-18 Fujitsu Ltd ファイルシステム制御方法,パラレルファイルシステムおよびプログラム記憶媒体

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2162125C (en) * 1993-05-05 2005-09-20 Zunquan Liu A repertoire of mappings for a cryptosystem
CN101300775B (zh) * 2005-10-31 2012-12-19 松下电器产业株式会社 安全处理装置、安全处理方法、加密信息嵌入方法、程序、存储介质和集成电路
WO2007080629A1 (ja) * 2006-01-10 2007-07-19 Fujitsu Limited 携帯型端末装置、アドレス帳転送装置、携帯型端末装置における情報の表示方法、アドレス帳転送方法、およびコンピュータプログラム
WO2012121333A1 (ja) * 2011-03-10 2012-09-13 日本電信電話株式会社 秘匿積和結合システム、計算装置、秘匿積和結合方法、及びそれらのプログラム
US9015853B2 (en) * 2012-06-15 2015-04-21 The Regents Of The University Of California Concealing access patterns to electronic data storage for privacy
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN108400838B (zh) * 2017-02-06 2021-05-18 华为技术有限公司 数据处理方法及设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10334067A (ja) * 1997-05-29 1998-12-18 Fujitsu Ltd ファイルシステム制御方法,パラレルファイルシステムおよびプログラム記憶媒体

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
HAMADA KOKI: "A sublinear communications constant-rounds array access algorythm for secure multi party computation", PSJ SYMPOSIUM SERIES; COMPUTER SECURITY SYMPOSIUM, 16 October 2017 (2017-10-16), pages 757 - 764, XP009519560 *
KOJI CHIDAKOKI HAMADADAI IKARASHIKATSUMI TAKAHASHI: "Reconsideration of Lightweight Verifiable Three-party Secure Function Evaluation", CSS, 2010
MARCEL KELLERPETER SCHOLL: "Efficient, oblivious data structures for MPC", ADVANCES IN CRYPTOLOGY - ASIACRYPT 2014, VOL. 8874 OF LECTURE NOTES IN COMPUTER SCIENCE, vol. 8874, 2014, pages 506 - 525, XP047494286, DOI: 10.1007/978-3-662-45608-8_27
See also references of EP3686869A4
ZAHUR, SAMEE ET AL.: "Revisiting Square-Root ORAM: Efficient Random Access in Multi-Party Computation", PROCEEDINGS OF 2016 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP 2016, 2016, pages 218 - 234, XP032945701, DOI: 10.1109/SP.2016.21 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022107323A1 (ja) * 2020-11-20 2022-05-27 日本電気株式会社 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
JP7495677B2 (ja) 2020-11-20 2024-06-05 日本電気株式会社 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム

Also Published As

Publication number Publication date
AU2018336413B2 (en) 2020-11-26
CN111108540B (zh) 2023-03-21
US20200279511A1 (en) 2020-09-03
EP3686869A1 (en) 2020-07-29
JPWO2019059069A1 (ja) 2020-10-01
US11508262B2 (en) 2022-11-22
EP3686869A4 (en) 2021-01-27
CN111108540A (zh) 2020-05-05
EP3686869B1 (en) 2024-02-07
AU2018336413A1 (en) 2020-04-02
JP6981473B2 (ja) 2021-12-15

Similar Documents

Publication Publication Date Title
US11164484B2 (en) Secure computation system, secure computation device, secure computation method, and program
JP6583970B2 (ja) 秘密乱数合成装置、秘密乱数合成方法、およびプログラム
WO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
JP5860378B2 (ja) 秘密計算システム、集約関数装置、秘密計算方法、およびプログラム
JP6534778B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
WO2018135566A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、プログラム
Dolev et al. Secret shared random access machine
JP6585846B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
JP7060115B2 (ja) 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム
WO2019059069A1 (ja) 秘密読み書き装置、秘密読み書き方法、およびプログラム
JP6067890B2 (ja) 要素複製装置、要素複製方法、およびプログラム
Lapworth Parallel encryption of input and output data for HPC applications
JP6825119B2 (ja) 秘密読み込み装置、秘密書き込み装置、それらの方法、およびプログラム
Triakosia et al. Homomorphic encryption in manufacturing compliance checks
WO2020246018A1 (ja) 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
Lee et al. Model Parameter Estimation and Inference on Encrypted Domain: Application to Noise Reduction in Encrypted Images
Thangarajah Some Properties of the r th Induced Matrix.

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019543586

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018336413

Country of ref document: AU

Date of ref document: 20180912

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2018857708

Country of ref document: EP

Effective date: 20200421