JPWO2020165931A1 - 情報処理装置、秘密計算方法及びプログラム - Google Patents

情報処理装置、秘密計算方法及びプログラム Download PDF

Info

Publication number
JPWO2020165931A1
JPWO2020165931A1 JP2020571932A JP2020571932A JPWO2020165931A1 JP WO2020165931 A1 JPWO2020165931 A1 JP WO2020165931A1 JP 2020571932 A JP2020571932 A JP 2020571932A JP 2020571932 A JP2020571932 A JP 2020571932A JP WO2020165931 A1 JPWO2020165931 A1 JP WO2020165931A1
Authority
JP
Japan
Prior art keywords
share
unit
value
value calculation
redispersion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020571932A
Other languages
English (en)
Other versions
JP7259875B2 (ja
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2020165931A1 publication Critical patent/JPWO2020165931A1/ja
Application granted granted Critical
Publication of JP7259875B2 publication Critical patent/JP7259875B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)

Abstract

2−out−of−4複製型秘密分散を用いた4者間MPCにて効率の良い型変換処理を実行する情報処理装置を提供する。情報処理装置は、基本演算シード記憶部と、再分散値計算部と、シェア構成部と、を備える。基本演算シード記憶部は、シェアについての演算を行う際の乱数を生成するためのシードを格納する。再分散値計算部は、シードを用いて乱数を生成し、生成された乱数によりシェアの再分散値を計算すると共に、生成された乱数に関するデータを他の装置に送信する。シェア構成部は、他の装置から受信した生成された乱数に関するデータ及びシェアの再分散値を用いて型変換用のシェアを構成する。

Description

本発明は、情報処理装置、秘密計算方法及びプログラムに関する。特に、不正検知可能な4者秘密計算におけるシェアの型変換に関する情報処理装置、秘密計算方法及びプログラムに関する。
近年、秘密計算に関する研究開発が盛んに行われている。秘密計算では、入力データを秘匿したまま所定の処理を実行し、結果を得ることができる。
秘密計算プロトコルは大きく2つの種類に大別される。第1の方式は、特定の計算に限って実行可能な秘密計算プロトコルである。第2の方式は、任意の計算が実行可能な秘密計算プロトコルである。また、第2の方式には種々の方式が存在し、方式間で通信量(データ量)や通信ラウンド数をはじめとした様々なコストにおけるトレードオフが成立する。たとえば、通信量が少ない代わりに通信回数が多い方式や通信量は多いが通信回数が少ない方式が存在する。
代表的な秘密計算プロトコルとして、マルチパーティ計算(MPC;Multi Party Computation)が挙げられる。MPCとは、各参加者の入力を秘匿しながら、複数の参加者間で任意の関数を計算できる秘密計算プロトコルである。MPCにも、いくつかの方式があるが、近年注目を集める方式は、秘密分散ベースのMPCである。秘密分散ベースのMPCでは、入力を各参加者に分散する。ここで、分散データのことをシェアと呼称する。各参加者は各自のシェアを用いて、参加者間で協調しながら、目的の関数を計算する。このとき、計算過程の値に関してもシェアの形式を保っているために、元々の入力や計算過程の値が明らかになることはない。最終的な計算結果のシェアだけが復元され、安全に任意の関数が計算できる。以降、n≧2のときの
Figure 2020165931
の値のシェアを
Figure 2020165931
、n=1
のときの
Figure 2020165931
の値のシェアを
Figure 2020165931
として表記する。
ここで、MPCが達成する安全性は、大きく2つある。1つは秘匿性(Secrecy)である。もう1つは正当性(Correctness)である。秘匿性は、MPCを実行するにあたり、想定する攻撃者が存在したとしても、参加者に対し、入力に関する情報が漏れないことを保証する安全性となる。正当性は、秘密計算プロトコルを実行するにあたり、想定する攻撃者が存在したとしても、実行結果が正しいことを保証する安全性となる。
ここで、上記の「想定する攻撃者」には、いくつかの指標がある。代表的な指標として、1つ目は攻撃者の振舞いが挙げられる。2つ目は参加者における攻撃者の割合である。
攻撃者の振舞いに着目した場合、代表的な攻撃者の種類として、セミオネスト攻撃者(Semi-honest Adversary)とマリシャス攻撃者(Malicious Adversary)が挙げられる。セミオネスト攻撃者は、プロトコルに従いつつも、可能な範囲で得られる情報を増やそうと試みる攻撃者である。マリシャス攻撃者は、プロトコルから逸脱した振舞いを取ることで、自身が得られる情報を増やそうと試みる攻撃者である。ここで、プロトコルから逸脱する振舞いとは、たとえば、本来送信すべきデータに対し、ビット反転を行うことによって、送信データを改ざんすることが挙げられる。
参加者における攻撃者の割合に着目した場合、大きく2つの種類が挙げられる。1つは、過半数が不正者(Dishonest majority)の場合である。もう1つは、過半数が正直者(Honest majority)の場合である。ここで、全参加者数をnとし、攻撃者の数をtとする。過半数が不正者の場合とは、つまり、t<nが成り立つ場合を意味する。過半数が正直者の場合とは、つまり、t<n/2が成り立つ場合を意味する。過半数が正直者である場合としてt<n/3が成り立つ場合も含まれるが、本書では特に断りが無い限り、t<n/2が成り立つ場合を過半数が正直者である場合とする。
近年、注目を集めるMPCとして3者間MPCが挙げられる。非特許文献1は、過半数が正直者で、かつ、攻撃者がセミオネスト攻撃者である場合の3者間MPCを開示する。非特許文献1に開示されたMPCは、
Figure 2020165931
上での算術演算を実現する。非特許文献1に開示せれたMPCは、
Figure 2020165931
上での乗算1回あたり、3nビットの通信コストを要する。つまり、参加者あたりnビットの通信コストで乗算を実現できる。
非特許文献2は、過半数が正直者で、かつ、攻撃者がマリシャス攻撃者である場合の3者間MPCを開示する。これは、非特許文献1の方式をベースとした方式である。非特許文献2に開示されたMPCは、非特許文献1に開示されたMPCとは異なり、マリシャス攻撃者の存在を許容する。非特許文献2に開示されたMPCではマリシャス攻撃者による不正を、確率的に検知することが可能となる。検知確率を上げるほど、つまり、不正が成功する確率を下げようとするほど、通信コストが増加することとなる。たとえば、不正が成功する確率を2-40とした場合、非特許文献2では、
Figure 2020165931
上での乗算1回あたり、21nビットの通信コストを要する。つまり、参加者あたり7nビットの通信コストで不正検知機能付きの乗算を実現できる。
非特許文献3では、非特許文献1におけるシェアの型変換の方法が提案されている。シェアの型変換とは、たとえば、
Figure 2020165931
から
Figure 2020165931
のシェア列を得ることが挙げられる。この型変換をビット分解と呼称する。また、異なる型変換の例として、
Figure 2020165931
から、
Figure 2020165931
を得ることが挙げられる。この型変換を環合成と呼称する。
非特許文献3には、たとえば、ビット分解に6n−6ビットの通信コストを要することが開示されている。このような処理は、算術回路や論理回路が混在した混合回路に対し、効率よくMPCを実行したい場合に重要な処理となる。たとえば、非特許文献2の方式を用いて非特許文献3で提案されたビット分解を実行した場合、マリシャス攻撃者の存在を許容できるが、通信コストは42n―42ビットとなる。
多くの場合、MPCにおいて参加者が少なく、過半数が正直者の場合の方が、通信コストは低くなる。このため、前述のような3者間MPCが計算効率の良い方式であると考えられてきた。しかし、想定する攻撃者がマリシャス攻撃者の場合、計算効率は4者間MPCの方が良い場合がある。
たとえば、非特許文献4は、t<n/3、つまりt=1で、かつ、攻撃者がマリシャス攻撃者である場合の4者間MPCを開示する。非特許文献4に開示されたMPCは、
Figure 2020165931
上での乗算1回あたり、6nビットの通信コストを要する。つまり、参加者あたり1.5nビットの通信コストで乗算を実現できる。しかし、非特許文献4では方式固有の型変換が提案されていない。このため、たとえば、非特許文献5に開示されたようなビット分解を用いる必要がある。
非特許文献5で提案された方式は、環上でビット分解を行う方式のため、
Figure 2020165931
から
Figure 2020165931

のシェア列を計算するものとなる。このため、非特許文献5によるビット分解の結果を
Figure 2020165931
上での計算に用いることはできず、混合回路を計算する際には効率が悪い。
T. Araki et al.、"High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority."、2016、In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16). ACM, New York, NY, USA, 805-817. T. Araki et al.、"Optimized Honest-Majority MPC for Malicious Adversaries − Breaking the 1 Billion-Gate Per Second Barrier"、2017、IEEE Symposium on Security and Privacy (SP), San Jose, California, USA, 2017, pp. 843-862. T. Araki et al.、"Generalizing the SPDZ Compiler For Other Protocols."、2018、In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS '18). ACM, New York, NY, USA, 880-895. S. Dov Gordon et al.、"Secure Computation with Low Communication from Cross-checking."、Cryptology ePrint Archive, Report 2018/216, 2018, https://eprint.iacr.org/2018/216. I. Damgard et al.、"Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation"、In Theory of Cryptography Conference (pp. 285-304). Springer, Berlin, Heidelberg, 2006.
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
MPCを行うにあたり、可能な限り通信コストが軽減された方式が望まれる。通信コストには通信量と通信ラウンド回数とがあるが、単位時間あたりの処理件数の効率を重視する場合、特に通信量が重要となる。
たとえば、t<n/3、つまりt=1で、かつ、攻撃者がマリシャス攻撃者である場合での4者間MPCであれば、
Figure 2020165931
上での乗算1回あたり、5nビットの通信コストで実現できる。つまり、参加者あたり1.25nビットの通信コストで乗算を実現できる。これは2−out−of−4複製型秘密分散を用いた方法である。
各参加者をP_i(i=1、…、4)としたとき、
Figure 2020165931
のシェアを
Figure 2020165931
として、
Figure 2020165931
をP_iのシェアとする。また、
Figure 2020165931
のシェアを
Figure 2020165931
として、
Figure 2020165931
をP_iのシェアとする。このとき、
Figure 2020165931
に対して、
Figure 2020165931
とすると、
Figure 2020165931

とする。また、
Figure 2020165931
に対して、
Figure 2020165931
とすると、
Figure 2020165931
とする。
なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931

とする。また、
Figure 2020165931
を文字列連結演算子とする。ここで、P_1は
Figure 2020165931
を、P_2は
Figure 2020165931
を、P_3は
Figure 2020165931
を、P_4は
Figure 2020165931
を、それぞれ有する。
なお、
Figure 2020165931
に関して、参加者の内、ある一人の参加者は
Figure 2020165931
の出力を計算できず、他の三人の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
ここで、
Figure 2020165931

Figure 2020165931
上のシェアに関する加法演算子、減法演算子、乗法演算子とする。なお、これらの演算子は
Figure 2020165931
上の要素に対する二項演算子としての加法演算子、減法演算子、乗法演算子としても以降用いることに注意されたい。
Figure 2020165931
上のシェアに関する加法演算子、乗法演算子について、
Figure 2020165931
としたとき、以下の4つの式が成り立つ。
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
また、
Figure 2020165931

Figure 2020165931
上のシェアに関する排他的論理和、論理積とする。なお、これらの演算子は
Figure 2020165931
上の要素に対する二項演算子としての排他的論理和、論理積としても以降用いることに注意されたい。
Figure 2020165931
上のシェアに関する排他的論理和、論理積について、
Figure 2020165931
としたとき、以下の4つの式が成り立つ。
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
たとえば、前述の2−out−of−4複製型秘密分散を用いた4者間MPCでは、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
となり
Figure 2020165931
から
Figure 2020165931
が計算できる。また、
Figure 2020165931
としたとき、
Figure 2020165931
に関しても、以下の手順で
Figure 2020165931
を用いて計算できる。
1.各参加者(P_1〜P_3)のそれぞれは以下の計算を行う。
P_1:
Figure 2020165931

Figure 2020165931

Figure 2020165931


Figure 2020165931
P_2:
Figure 2020165931

Figure 2020165931

Figure 2020165931


Figure 2020165931
P_3:
Figure 2020165931

Figure 2020165931

Figure 2020165931


Figure 2020165931
2.上記計算が終了すると、各参加者は以下の通信を行う。
・P_1は
Figure 2020165931
をP_3に送信する。
・P_2は
Figure 2020165931
をP_1に送信する。
・P_3は
Figure 2020165931
をP_2に送信する。
・P_1は
Figure 2020165931
をP_4に送信する。
・P_2は
Figure 2020165931
をP_4に送信する。
3.各参加者は、上記通信により得た情報を用いて以下の計算により
Figure 2020165931
を得る。
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
なお、P_4のシェアは以下のようにして、計算する。
P_4:
Figure 2020165931


Figure 2020165931

シェアと定数倍算、および定数加算については当業者にとって自明なので説明を割愛する。また、
Figure 2020165931
上のシェアに関する演算についても、
Figure 2020165931
上のシェアに関する演算と同様に実行できるので説明を割愛する。このとき、参加者中にマリシャス攻撃者が1人存在したとしても、各自のシェアと異なる参加者から受信した値を用いて、値の改ざんがなかったか検証できる。改ざんがあった場合は、プロトコルを中断する。
しかし、上記2−out−of−4複製型秘密分散を用いた方法を用いた4者間MPCでは、型変換処理を行うことが難しい。シェアの形式が異なるため、非特許文献3に開示された方法を直接用いることができないためである。また、非特許文献5に開示されたようなgeneralな型変換方式は位数のビット長が2以上の環上で行われ、混合回路中の論理回路部分の計算効率が悪い。よって、混合回路の計算を不正検知可能なMPCで効率よく行いたい場合、非特許文献4に開示された4者間MPCもしくは上記2−out−of−4複製型秘密分散を用いた4者間MPCで実行可能な、効率の良い型変換処理が求められる。
本発明は、2−out−of−4複製型秘密分散を用いた4者間MPCにて効率の良い型変換処理を実行することに寄与する、情報処理装置、秘密計算方法及びプログラムを提供することを主たる目的とする。
本発明乃至開示の第1の視点によれば、シェアについての演算を行う際の乱数を生成するためのシードを格納する、基本演算シード記憶部と、前記シードを用いて乱数を生成し、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する、再分散値計算部と、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する、シェア構成部と、を備える、情報処理装置が提供される。
本発明乃至開示の第2の視点によれば、シードを用いて乱数を生成するステップと、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信するステップと、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成するステップと、を含む秘密計算方法が提供される。
本発明乃至開示の第3の視点によれば、シードを用いて乱数を生成する処理と、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する処理と、他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する処理と、をコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
本発明乃至開示の各視点によれば、2−out−of−4複製型秘密分散を用いた4者間MPCにて混合回路を計算する際、論理回路の計算部分も含め効率よく計算可能な型変換を実行することに寄与する情報処理装置、秘密計算方法及びプログラムが提供される。
一実施形態の概要を説明するための図である。 第1の実施形態における型変換システムの機能構成例を示すブロック図である。 第1の実施形態によるサーバ装置の機能構成を示すブロック図である。 第1の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第1の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第2の実施形態における型変換システムの機能構成例を示すブロック図である。 第2の実施形態によるサーバ装置の機能構成を示すブロック図である。 第2の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第3の実施形態における型変換システムの機能構成例を示すブロック図である。 第3の実施形態によるサーバ装置の機能構成を示すブロック図である。 第3の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第3の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第4の実施形態における型変換システムの機能構成例を示すブロック図である。 第4の実施形態によるサーバ装置の機能構成を示すブロック図である。 第4の実施形態における環合成についての型変換システムの動作例を示すフローチャートである。 第5の実施形態における型変換システムの機能構成例を示すブロック図である。 第5の実施形態によるサーバ装置の機能構成を示すブロック図である。 第5の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第6の実施形態における型変換システムの機能構成例を示すブロック図である。 第6の実施形態によるサーバ装置の機能構成を示すブロック図である。 第6の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 第7の実施形態における型変換システムの機能構成例を示すブロック図である。 第7の実施形態によるサーバ装置の機能構成を示すブロック図である。 第7の実施形態におけるビット分解についての型変換システムの動作例を示すフローチャートである。 秘密計算サーバ装置のハードウェア構成の一例を示す図である。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
一実施形態に係る情報処理装置10は、基本演算シード記憶部11と、再分散値計算部12と、シェア構成部13と、を備える(図1参照)。基本演算シード記憶部11は、シェアについての演算を行う際の乱数を生成するためのシードを格納する。再分散値計算部12は、シードを用いて乱数を生成し、生成された乱数によりシェアの再分散値を計算すると共に、生成された乱数に関するデータを他の装置に送信する。シェア構成部13は、他の装置から受信した生成された乱数に関するデータ及びシェアの再分散値を用いて型変換用のシェアを構成する。
ここで、4者MPCにおいてもビット分解や環合成は効率よく秘密計算を実行するためには有益な型変換であるが、各装置が保有するシェアの形式が不統一であるとビット分解等の恩恵が得られない。そこで、上記情報処理装置10は、各装置が保有するシェアの形式を統一しビット分解等の型変換が容易となるようにシェアを再構成する。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2〜図5を参照して、第1の実施形態に係る型変換処理システムについて説明する。
図2は、第1の実施形態による型変換処理システムの機能構成例を示すブロック図である。図2を参照すると、第1の実施形態による型変換処理システムは、後述する図3で参照される第i(i=1、2、3、4)の秘密計算サーバ装置(以下、単にサーバ装置と表記する)から成る。第1の実施形態による型変換処理システムにおいて、サーバ装置100_1、100_2、100_3、100_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。
図3は、第iのサーバ装置100_i(i=1、2、3、4)の機能構成例を示すブロック図である。図3に示すように、第iのサーバ装置100_iは、第iの再分散値計算部102_iと、第iのシェア構成部103_iと、第iの不正検知部104_iと、第iの算術演算部105_iと、第iの論理演算部106_iと、第iの基本演算シード記憶部107_iと、第iのデータ記憶部108_iと、を含む。なお、第iの再分散値計算部102_iと、第iのシェア構成部103_iと、第iの不正検知部104_iと、第iの算術演算部105_iと、第iの論理演算部106_iと、第iの基本演算シード記憶部107_iと、第iのデータ記憶部108_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置100_1〜100_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部108_1〜108_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置100_1〜100_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部108_1〜108_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置100_1〜100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1〜100_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置100_1〜100_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部109_1〜109_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置100_1〜100_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部108_1〜108_4に記憶する。
上記計算結果のシェアは、第1乃至第4のサーバ装置100_1〜100_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置100_1〜100_4ではない外部にシェアが送信され、復元されてもよい。
次に、第1の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置100_1〜100_4の動作について、詳細に説明する。図4は、第1乃至第4のサーバ装置100_1〜100_4のビット分解に関する動作例を示すフローチャートである。図5は、第1乃至第4のサーバ装置100_1〜100_4の環合成に関する動作例を示すフローチャートである。
まず、図4に示すビット分解に関するフローチャートを説明する。
(ステップA1)
各基本演算シード記憶部107_1、107_2、107_3、107_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

を記憶する。
また、各サーバ装置100_1〜100_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部108_1〜108_4に、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
なお、
Figure 2020165931
に関して、サーバ装置100_i(i=1〜4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。また、
Figure 2020165931
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の二台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。ただし、本書での
Figure 2020165931
はあくまでも一例である。
(ステップA2)
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
Figure 2020165931
を生成する。
そして、第1の再分散値計算部102_1は、
Figure 2020165931
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
Figure 2020165931
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部103_4に送信する。
同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は、
Figure 2020165931

Figure 2020165931

を生成する。第2の再分散値計算部102_2は、

Figure 2020165931
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
Figure 2020165931
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は

Figure 2020165931

Figure 2020165931
を、第4のシェア構成部103_4に送信する。
さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
Figure 2020165931
を生成する。第3の再分散値計算部102_3は、
Figure 2020165931
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
Figure 2020165931
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部103_4に送信する。
このように、第iの再分散値計算部102_iは、基本演算シード記憶部107_iに格納されたシードを用いて乱数(例えば、
Figure 2020165931
)を生成する。さらに、再分散値計算部102_iは、シェア(例えば、
Figure 2020165931
)の再分散値(例えば、
Figure 2020165931
)を計算する。その後、再分散値計算部102_iは、生成された乱数に関するデータ(例えば、
Figure 2020165931
)を他のサーバ装置の再分散値計算部102_iに送信する。なお、生成された乱数に関するデータには、乱数自身も含まれる。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置100_1〜100_4の間で共有している。
(ステップA3)
各シェア構成部103_1、103_2、103_3、103_4は上記ステップA2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
に対し、
Figure 2020165931

Figure 2020165931
のj番目のビット(j=0、...、n−1)を意味する。
Figure 2020165931

Figure 2020165931

Figure 2020165931
は各i番目のデータ記憶部108_iに記憶される。
このように、第iのシェア構成部103_iは、他のサーバ装置から受信した乱数に関するデータ、シェアの再分散値を用いて型変換用(ステップA3ではビット分解用)のシェアを構成する(再構成)する。つまり、値xは、シェアx、x、xとして分散される。さらに、当該シェアは、再分散され再分散値x’、x’、x’が計算される。この再分散値と再分散値の計算に用いられた乱数rに基づき、当初のシェアx、x、xはビット分解用のシェアに再構成される。その際、本願開示では、上記12の式に示されるように、第4のサーバ装置100_4におけるシェアの形式が他のサーバ装置100_1〜100_3と異なるにも関わらず、各サーバ装置のシェアの形式を保つように値xが再分散され、シェアが再構成される。上述のように、4者MPCでは、値
Figure 2020165931
に対して、
Figure 2020165931
とすると、
Figure 2020165931
となり、サーバ装置100_1〜100_3のシェアの形式は二つの値の組み合わせからなり、サーバ装置100_4のシェアの形式は2つの排他的論理和による計算結果の組み合わせとなる。本願開示では、これらのシェアの形式を変換前の形式とし、上記12の式で表せるシェアの形式が変換後の形式となる。本願開示では、変換前後の形式を比較すると、変換前後で形式は保持されたままシェアが再構成(ビット分解用のシェアに再構成)されていることが理解される。
(ステップA4)
各i番目の論理演算部106_i同士で通信することで、nビット加算器処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、たとえば、
Figure 2020165931

Figure 2020165931
を入力とし、
Figure 2020165931
を出力する処理のことである。
Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
なので、
Figure 2020165931
が計算できた。
なお、
Figure 2020165931
は、
Figure 2020165931
、…、
Figure 2020165931
のシェア列を意味する。各i番目の論理演算部106_iは、
Figure 2020165931
を各データ記憶部108_iに記憶する。
このように、第iの論理演算部106_iは、上記型変換されたシェア(ビット分解用のシェア)についての論理演算を行う。より具体的には、第iの論理演算部106_iは、型変換されたシェアの加算処理を他のサーバ装置と相互に通信することで実行する。
ここで、上記ステップA3、A4について具体例を用いてより具体的に説明する。
ここでは、
Figure 2020165931
上のシェア
Figure 2020165931
にビット分解を行う場合を説明する。このとき、
Figure 2020165931

とすると、各サーバ装置は以下のような形式でシェア
Figure 2020165931
を保有する。
サーバ装置100_1:
Figure 2020165931
サーバ装置100_2:
Figure 2020165931
サーバ装置100_3:
Figure 2020165931
サーバ装置100_4:
Figure 2020165931
上記ステップA3、A4では、初めに
Figure 2020165931

Figure 2020165931

Figure 2020165931
の各桁のビットのシェアを得て(ステップA3)、次に、ステップA3にて得られたビットのシェアを用いて加算器の計算を行うことで値xの各桁のビットのシェアを得ている(ステップA4)。これは、ステップA3は、加算した結果が値xとなる各桁のビットのシェアを生成(値xからの再分散)を目的を有し、その後に続くステップA4における加算器計算に伴う負荷が軽減されるように再分散のシェアの個数自体を少なくするという意義を持つ。
本願開示では、上記再構成されたシェアを得るため、各サーバ装置100_iは、
Figure 2020165931
を使用する。その際、各サーバ装置100_iは、自身が保持する
Figure 2020165931
だけでは上記再構成されたシェアを生成することが出来ない場合がある。そこで、各サーバ装置100_iは、他のサーバ装置から当該他のサーバ装置が保持する
Figure 2020165931
の一部を取得する必要があるが、秘密漏洩を防止する観点から当該値を他のサーバ装置から得ることはできない。そこで、各サーバ装置100_iは、乱数でマスクした値(シェアの再分散値)を送受信し、上記再構成されたシェアの再構成に利用する。本願開示では、シェアの再構成に続く加算器の計算負荷が低減されるように、上記乱数(マスク用の乱数)とシェアの再構成が行われる。
例えば、上記12の式に記載された
Figure 2020165931
は、
Figure 2020165931
により再分散され、再構成された
Figure 2020165931

Figure 2020165931

Figure 2020165931
のうち
Figure 2020165931
がサーバ装置100_1が保有する値(保有する値の組)となる。その際、
Figure 2020165931
がマスク用のビットの乱数となり、
Figure 2020165931

は、
Figure 2020165931

Figure 2020165931

Figure 2020165931
でマスクすることで生成された再分散値となる。
ここで、上述のステップA3の目的や意義を考えると、サーバ装置100_3やサーバ装置100_4は、値
Figure 2020165931
を直接保持していないので、これらのサーバ装置が
Figure 2020165931
を生成することは困難である。そこで、サーバ装置100_3やサーバ装置100_4は、上記値を有するサーバ装置100_1やサーバ装置100_2から受信するか、計算可能な乱数により
Figure 2020165931
を構成する必要がある。しかし、サーバ装置100_1やサーバ装置100_2が保有する値自体を送信すると秘密漏洩の危険が増すのでマスク用の乱数が用いられている。そこで、各再分散値計算部102_iは、マスク用の乱数を計算すると共に、例えば、サーバ装置100_2がサーバ装置100_4に
Figure 2020165931
を送信している(ステップA2)。その後、ステップA3において、
Figure 2020165931
を含むシェアの再構成が行われている。
なお、上述のようにシェアの再構成にあたり、その形式を満たす必要がある。例えば、
Figure 2020165931
とすると、上記の12の式では、
Figure 2020165931

Figure 2020165931

Figure 2020165931
と置き換えることできる。従って、サーバ装置100_1は、
Figure 2020165931
を設定(シェアの再構成)する必要がある。即ち、シェアの形式が満たされるように、
Figure 2020165931

Figure 2020165931
が選択されている。また、本実施形態では、ステップA4における加算器計算に伴う負荷を軽減するために再分散のシェアの個数自体を少なくする目的でステップA3が実行されている。即ち、加算器の計算コストがビット分解全体の通信コストの大半を占めるため、当該通信コストの重い加算器計算の計算コストを低減するように再分散が行われている。しかし、再分散の目的は上記に限定されず、他の実施形態にて説明するように、「シェアの個数は増加するが、通信の形態に適合させ環合成における通信コストの効率化」や「再分散のシェアの個数は同じであるが、ステップA3における再分散のコスト低減」を目的とした再分散もあり得る。
(ステップA5)
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部102_1は、
Figure 2020165931
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部104_3又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部104_3又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
また同様に、第2の再分散値計算部102_2は、
Figure 2020165931
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
Figure 2020165931
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部104_1又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
さらに同様に、第3の再分散値計算部102_3は、
Figure 2020165931
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
Figure 2020165931
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、

Figure 2020165931

Figure 2020165931
を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部104_2又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部104_1乃至第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
このように、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータに基づきプロトコルの不正を検知する。具体的には、第iの不正検知部104_iは、他のサーバ装置から受信した乱数に関するデータと自装置に格納されている乱数に関するデータが一致するか否かに応じて不正の有無(不正行為者の有無)を検知する。
(ステップA6)
各i番目の不正検知部104_iは、上記ステップA4の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップA6は上記ステップA5と並列に実行することが可能である。
このように、第iの不正検知部104_iは、型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する。
次に、図5に示す環合成に関するフローチャートを説明する。
(ステップB1)
各基本演算シード記憶部107_1、107_2、107_3、107_4は、それぞれ、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置100_1〜100_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931

とし、疑似ランダム関数
Figure 2020165931
とする。
また、各データ記憶部108_1〜108_4に、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。さらに、各データ記憶部108_1〜108_4に、ループカウンタ
Figure 2020165931
を記憶する。なお、
Figure 2020165931
とし、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
とする。
なお、
Figure 2020165931
に関して、サーバ装置100_i(i=1〜4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。また、
Figure 2020165931
は、サーバ装置100_1、100_2、100_3の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の二台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップB2)
各サーバ装置100_iは、各データ記憶部108_iより、ループカウンタjをとりだす。各サーバ装置100_iは、j<nであればステップB3〜B7を実行する。j=nであれば、ステップB8を実行する。
また、各論理演算部106_1〜106_4は、各データ記憶部108_1〜108_4から
Figure 2020165931
を取り出す。ここで、
Figure 2020165931
はj番目のビットに対するキャリーである。そして、各論理演算部106_1〜106_4は、

Figure 2020165931
を計算し、
Figure 2020165931
を各データ記憶部108_1〜108_4に記憶する。
なお、第iのデータ記憶部108_iが記憶する
Figure 2020165931

Figure 2020165931
と表記する。また、
Figure 2020165931

とする。
(ステップB3)
第1の再分散値計算部102_1と第2の再分散値計算部102_2はそれぞれ、第1の基本演算シード記憶部107_1、第2の基本演算シード記憶部107_2より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部102_1と第2の再分散値計算部102_2は
Figure 2020165931
を生成する。
そして、第1の再分散値計算部102_1は、
Figure 2020165931
を第1のデータ記憶部108_1に記憶する。第2の再分散値計算部102_2は、
Figure 2020165931
を、第3のシェア構成部103_3に送信する。また、第2の再分散値計算部102_2は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部103_4に送信する。
同様に、第2の再分散値計算部102_2と第3の再分散値計算部102_3は
Figure 2020165931
を生成する。第2の再分散値計算部102_2は、
Figure 2020165931
を第2のデータ記憶部108_2に記憶する。第3の再分散値計算部102_3は、
Figure 2020165931
を、第1のシェア構成部103_1に送信する。また、第3の再分散値計算部102_3は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部103_4に送信する。
さらに同様に、第3の再分散値計算部102_3と第1の再分散値計算部102_1は
Figure 2020165931
を生成する。第3の再分散値計算部102_3は、
Figure 2020165931
を第3のデータ記憶部108_3に記憶する。第1の再分散値計算部102_1は、
Figure 2020165931
を、第2のシェア構成部103_2に送信する。また、第1の再分散値計算部102_1は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部103_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置100_1〜100_4の間で共有している。
(ステップB4)
各シェア構成部103_1、103_2、103_3、103_4は上記ステップB3で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

は各i番目のデータ記憶部208_iに記憶される。
(ステップB5)
各i番目の論理演算部106_i同士で通信することで、キャリー計算処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、全加算器における入力
Figure 2020165931
と下位からの桁上げ入力
Figure 2020165931
の5つを入力とし、下記の式のように桁上げ出力
Figure 2020165931
を出力する処理である。
Figure 2020165931
各i番目の論理演算部106_iは、
Figure 2020165931
を各データ記憶部108_iに記憶する。各サーバ装置100_iは、各データ記憶部208_iより、ループカウンタjを取り出し、j=j+1として各データ記憶部108_iに記憶する。なお、j=n−1のとき、ステップB5は実行しなくても良い。
このように、第iの論理演算部106_iは、他のサーバ装置と互いに通信を行い型変換されたシェアのキャリー計算処理を実行する。
(ステップB6)
第1の再分散値計算部102_1は、第1のデータ記憶部108_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部102_1は、
Figure 2020165931
を、第3の不正検知部104_3に送信する。また、第1の再分散値計算部102_1は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部104_4に送信する。第3の不正検知部104_3および第4の不正検知部104_4は、それぞれ、第3のデータ記憶部108_3に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部104_3又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部104_3又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
同様に、第2の再分散値計算部102_2は、
Figure 2020165931
を第2のデータ記憶部108_2から取り出す。次に、第2の再分散値計算部102_2は、
Figure 2020165931
を、第1の不正検知部104_1に送信する。また、第2の再分散値計算部102_2は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部104_4に送信する。第1の不正検知部104_1および第4の不正検知部104_4は、それぞれ、第1のデータ記憶部108_1に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部104_1又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
さらに同様に、第3の再分散値計算部102_3は、
Figure 2020165931
を第3のデータ記憶部108_3から取り出す。次に、第3の再分散値計算部102_3は、
Figure 2020165931
を、第2の不正検知部104_2に送信する。また、第3の再分散値計算部102_3は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部104_4に送信する。第2の不正検知部104_2および第4の不正検知部104_4は、それぞれ、第2のデータ記憶部108_2に記憶されている
Figure 2020165931
、第4のデータ記憶部108_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部104_2又は第4の不正検知部104_4は、successの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部104_1又は第4の不正検知部104_4は、abortの文字列を各サーバ装置100_1、100_2、100_3、100_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。
Figure 2020165931

Figure 2020165931

に関しても同様である。
(ステップB7)
各i番目の不正検知部105_iは、上記ステップB5の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置100_1、100_2、100_3、100_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB7は上記ステップB6と並列に実行することが可能である。また、ステップB6、B7はループごとではなく、j=n−1のときに、n回のループ分を並列に実行することが可能である。
このように、第iの不正検知部105_iは、型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する。
(ステップB8)
各i番目の算術演算部105_iは、各データ記憶部108_iから
Figure 2020165931
を取り出す。その後、以下の式による計算を行う。
Figure 2020165931
各i番目の算術演算部105_iは、各データ記憶部108_iに
Figure 2020165931
を記憶する。
以上、説明した第1の実施形態においては、以下に記載するような効果を奏する。
第1の効果は、不正検知可能な4者間秘密計算を用いて、シェアの型変換が実行できる。複雑な混合回路を実行する際に不正検知に関するステップを並列に行った場合、不正検知に関する通信コストを消却できるものとする。たとえば、加算器の計算にリップルキャリー型のnビット加算器を用いた場合、このときのビット分解の通信コストは、(16n−10)ビット・n+1ラウンドとなる。環合成の通信コストは、(16n−16)ビット・2n−2ラウンドとなる。一方で、非特許文献2と非特許文献3を組み合わせた場合の型変換の通信コストは、不正が成功する確率を2−40としたとき、(42n−42)ビット・n−1ラウンドである。これより、本願開示の方が効率の良い方式となる。なお、本特許の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
第2の効果は、不正検知可能な4者間秘密計算を用いて、シェアの型変換を行う際に、不正検知確率が常に「1」となることである。非特許文献2と非特許文献3を組み合わせた場合、不正検知確率はパラメタライズであるため、不正検知確率を向上させようとした際に、通信コストも大きくなる。秘密計算を適用できるアプリケーションには様々なものがあり、そのアプリケーションに応じて求められる不正検知確率は異なる。求められる要件の調査と、調査に伴う各パラメータの設定は利用者にとって負担となる。本願開示では、不正検知確率が「1」なので、要件の調査やパラメータ設定の負担が軽減される。
[第2の実施形態]
図6〜図8を参照して、第2の実施形態に係る型変換処理システムについて説明する。
図6は、第2の実施形態による型変換処理システムの機能構成例を示すブロック図である。図6を参照すると、第2の実施形態による型変換処理システムは、後述する図7で参照される第i(i=1、2、3、4)のサーバ装置から成る。第2の実施形態による型変換処理システムにおいて、サーバ装置200_1、200_2、200_3、200_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図7は、第iのサーバ装置200_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図7に示すように、第iのサーバ装置200_iは、第iの再分散値計算部202_iと、第iのシェア構成部203_iと、第iの不正検知部204_iと、第iの算術演算部205_iと、第iの論理演算部206_iと、第iの基本演算シード記憶部207_iと、第iのデータ記憶部208_iと、を含む。なお、第iの再分散値計算部202_iと、第iのシェア構成部203_iと、第iの不正検知部204_iと、第iの算術演算部205_iと、第iの論理演算部206_iと、第iの基本演算シード記憶部207_iと、第iのデータ記憶部208_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置200_1〜200_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部208_1〜208_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置200_1〜200_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部208_1〜208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1〜200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1〜200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置200_1〜200_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部208_1〜208_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置200_1〜200_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部208_1〜208_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置200_1〜200_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置200_1〜200_4ではない外部にシェアが送信され、シェアが復元されてもよい。
次に、第2の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置200_1〜200_4の動作について、詳細に説明する。図7は、第1乃至第4のサーバ装置200_1〜200_4の環合成に関する動作例を示すフローチャートである。ビット分解については、第1の実施例と同様に実施可能であるため説明を割愛する。
図7に示す環合成に関するフローチャートを説明する。
(ステップB´1)
各基本演算シード記憶部207_1、207_2、207_3、207_4は、それぞれ、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置200_1〜200_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。
また、各データ記憶部208_1〜208_4に、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。さらに、各データ記憶部208_1〜208_4に、ループカウンタj(=1)を記憶する。なお、
Figure 2020165931
とし、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
とする。
なお、
Figure 2020165931
に関して、サーバ装置200_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931

の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。また、
Figure 2020165931
は、サーバ装置200_1、200_2、200_3の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の二台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップB´2)
各サーバ装置200_iは、以下の式に示されるように
Figure 2020165931
の値を定める。
Figure 2020165931

Figure 2020165931
各データ記憶部208_1〜208_4は、それぞれ

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
Figure 2020165931
を生成する。
そして、第1の再分散値計算部202_1は、
Figure 2020165931
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
Figure 2020165931
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
Figure 2020165931
を生成する。第2の再分散値計算部202_2は、
Figure 2020165931
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
Figure 2020165931
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
Figure 2020165931
を生成する。第3の再分散値計算部302_3は、
Figure 2020165931
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
Figure 2020165931
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置200_1〜200_4の間で共有している。
(ステップB´3)
各シェア構成部203_1、203_2、203_3、203_4は上記ステップB´2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
は各i番目のデータ記憶部208_iに記憶される。
(ステップB´4)
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部202_1は、
Figure 2020165931
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部204_3又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部204_3又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
同様に、第2の再分散値計算部102_2は、
Figure 2020165931
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
Figure 2020165931
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部204_1又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部204_1又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
さらに同様に、第3の再分散値計算部202_3は、
Figure 2020165931
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
Figure 2020165931
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部204_2又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部204_2又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
(ステップB´5)
各サーバ装置200_iは、各データ記憶部208_より、ループカウンタjをとりだす。各サーバ装置200_iは、j<nであればステップB´6〜B´10を実行する。j=nであれば、ステップB´11を実行する。
(ステップB´6)
ここで、キャリー計算処理
Figure 2020165931
を、
Figure 2020165931

Figure 2020165931
という2つの処理に分割して考える。なお、
Figure 2020165931
とは、全加算器における入力
Figure 2020165931
と下位からの桁上げ入力
Figure 2020165931
の5つを入力とし、桁上げ出力
Figure 2020165931
を出力する処理である。
Figure 2020165931
とは、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を入力に取り、
Figure 2020165931
を出力するといった、論理演算部206_i(i=1、2、3)が計算する通信不要の処理を指す。
また、
Figure 2020165931
とは、
Figure 2020165931

Figure 2020165931

Figure 2020165931


Figure 2020165931
および
Figure 2020165931
を入力に取り、
Figure 2020165931
を出力するといった、論理演算部206_i(i=1、2、3、4)が通信を伴って計算する処理を指す。
ステップB´6で、論理演算部206_i(i=1、2、3)は

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を入力に取り、
Figure 2020165931
を計算することで、
Figure 2020165931
を得る。
さらに論理演算部206_i(i=1、2、3)は、
Figure 2020165931
を用いて、
Figure 2020165931
を計算する。論理演算部206_i(i=1、2、3)は、データ記憶部208_i(i=1、2、3)に
Figure 2020165931
を記憶する。
(ステップB´7)
第1の再分散値計算部202_1と第2の再分散値計算部202_2はそれぞれ、第1の基本演算シード記憶部207_1、第2の基本演算シード記憶部207_2より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部202_1と第2の再分散値計算部202_2は、
Figure 2020165931
を生成する。
そして、第1の再分散値計算部202_1は、
Figure 2020165931
を第1のデータ記憶部208_1に記憶する。第2の再分散値計算部202_2は、
Figure 2020165931
を、第3のシェア構成部203_3に送信する。また、第2の再分散値計算部202_2は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
同様に、第2の再分散値計算部202_2と第3の再分散値計算部202_3は、
Figure 2020165931
を生成する。第2の再分散値計算部202_2は、
Figure 2020165931
を第2のデータ記憶部208_2に記憶する。第3の再分散値計算部202_3は、
Figure 2020165931
を、第1のシェア構成部203_1に送信する。また、第3の再分散値計算部202_3は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
さらに同様に、第3の再分散値計算部202_3と第1の再分散値計算部202_1は
Figure 2020165931
を生成する。第3の再分散値計算部202_3は、
Figure 2020165931
を第3のデータ記憶部208_3に記憶する。第1の再分散値計算部202_1は、
Figure 2020165931
を、第2のシェア構成部203_2に送信する。また、第1の再分散値計算部202_1は

Figure 2020165931

Figure 2020165931

を、第4のシェア構成部203_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置200_1〜200_4の間で共有している。
また、論理演算部206_i(i=1、2、3、4)は、

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
および
Figure 2020165931
を入力に取り、
Figure 2020165931
を通信を伴って計算することで、
Figure 2020165931
を得る。論理演算部206_i(i=1、2、3、4)は、データ記憶部208_i(i=1、2、3、4)に
Figure 2020165931
を記憶する。
このように、キャリー計算処理は、第1要素
Figure 2020165931
及び当該第1要素に続く第2要素
Figure 2020165931
に分離可能である。第iの論理演算部206_iは、第1要素を他のサーバ装置と非通信により計算すると共に、シェアの再分散値の計算に必要な通信と第2要素のキャリー計算処理に必要な通信を並列に行う(ステップB’7)。
(ステップB´8)
論理演算部206_i(i=1、2、3、4)は、
Figure 2020165931
を用いて、
Figure 2020165931
を計算する。
ここで、上記ステップB´7で得た値と、
Figure 2020165931
を用いて、各シェア構成部203_1、203_2、203_3、203_4は、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部208_iに記憶される。また、データ記憶部208_iはループカウンタjを取り出し、j=j+1として値を更新する。
(ステップB´9)
第1の再分散値計算部202_1は、第1のデータ記憶部208_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部202_1は、
Figure 2020165931
を、第3の不正検知部204_3に送信する。また、第1の再分散値計算部202_1は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第3の不正検知部204_3および第4の不正検知部204_4は、それぞれ、第3のデータ記憶部208_3に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第3の不正検知部204_3又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第3の不正検知部204_3又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
同様に、第2の再分散値計算部202_2は、
Figure 2020165931
を第2のデータ記憶部208_2から取り出す。次に、第2の再分散値計算部202_2は、
Figure 2020165931
を、第1の不正検知部204_1に送信する。また、第2の再分散値計算部202_2は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第1の不正検知部204_1および第4の不正検知部204_4は、それぞれ、第1のデータ記憶部208_1に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第1の不正検知部204_1又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第1の不正検知部204_1又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
さらに同様に、第3の再分散値計算部202_3は、
Figure 2020165931
を第3のデータ記憶部208_3から取り出す。次に、第3の再分散値計算部202_3は、
Figure 2020165931
を、第2の不正検知部204_2に送信する。また、第3の再分散値計算部202_3は、

Figure 2020165931

Figure 2020165931

を、第4の不正検知部204_4に送信する。第2の不正検知部204_2および第4の不正検知部204_4は、それぞれ、第2のデータ記憶部208_2に記憶されている
Figure 2020165931
、第4のデータ記憶部208_4に記憶されている
Figure 2020165931
を取出し、値が一致するかを検証する。
一致した場合、第2の不正検知部204_2又は第4の不正検知部204_4は、successの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、次のステップに進む。一致しなかった場合、第2の不正検知部204_2又は第4の不正検知部204_4は、abortの文字列を各サーバ装置200_1、200_2、200_3、200_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、上記検証は、
Figure 2020165931
それぞれとを連結した値に対するハッシュ値と、
Figure 2020165931
に関する値それぞれとを連結した値に対するハッシュ値とで、一致するかを検証することにしてもよい。この場合、処理全体の通信量に対して、それぞれ
Figure 2020165931
を連結した値に対するハッシュ値は無視できるものと捉えることができる。

Figure 2020165931

Figure 2020165931

に関しても同様である。
なお、ステップB´9は、ループごとではなく、j=n−1のときに全ループ分を並列に実行しても良い。また、ステップB´9は、上記ステップB´4と並列に実行することも可能である。
(ステップB´10)
各i番目の不正検知部204_iは、上記ステップB´7の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置200_1、200_2、200_3、200_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップB´10は上記ステップB´4、B´9と並列に実行することが可能である。また、ステップB´10はループごとではなく、j=n−1のときに、全ループ分を並列に実行することが可能である。
(ステップB´11)
各i番目の算術演算部205_iは、各データ記憶部208_iから
Figure 2020165931
を取り出す。その後、以下の式に示す計算が実行される。
Figure 2020165931
各i番目の算術演算部205_iは、各データ記憶部208_iに
Figure 2020165931
を記憶する。
以上、説明した第2の実施形態においては、第1の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果に関して、第2の実施形態の方が環合成における通信コストの点で効率が良い。第2の実施形態では、キャリー計算処理
Figure 2020165931
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第2の実施形態における環合成の通信コストは、(16n−16)ビット・n−1ラウンドとなる。
[第3の実施形態]
図9〜図12を参照して、第3の実施形態に係る型変換処理システムについて説明する。
図9は、第3の実施形態による型変換処理システムの機能構成例を示すブロック図である。第3の実施形態に係る型変換処理システムは、上述した第1の実施形態および第2の実施形態に係る型変換処理システムの変形例である。
図9を参照すると、第3の実施形態による型変換処理システムは、後述する図10で参照される第i(i=1、2、3、4)のサーバ装置から成る。第3の実施形態による型変換処理システムにおいて、サーバ装置300_1、300_2、300_3、300_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図10は、第iのサーバ装置300_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図10に示すように、第iのサーバ装置300_iは、第iの再分散値計算部302_iと、第iのシェア構成部303_iと、第iの不正検知部304_iと、第iの算術演算部305_iと、第iの論理演算部306_iと、第iの基本演算シード記憶部307_iと、第iのデータ記憶部308_iと、を含む。なお、第iの再分散値計算部302_iと、第iのシェア構成部303_iと、第iの不正検知部304_iと、第iの算術演算部305_iと、第iの論理演算部306_iと、第iの基本演算シード記憶部307_iと、第iのデータ記憶部308_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置300_1〜300_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部308_1〜308_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置300_1〜300_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部308_1〜308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1〜300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1〜300_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置300_1〜300_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部308_1〜308_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置300_1〜300_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部308_1〜308_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置300_1〜300_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置300_1〜300_4ではない外部にシェアが送信され、復元されてもよい。
次に、第3の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置300_1〜300_4の動作について、詳細に説明する。図11は、第1乃至第4のサーバ装置300_1〜300_4のビット分解に関する動作例を示すフローチャートである。図12は、第1乃至第4のサーバ装置300_1〜300_4の環合成に関する動作例を示すフローチャートである。
まず、図11に示すビット分解に関するフローチャートを説明する。
(ステップC1)
各基本演算シード記憶部307_1、307_2、307_3、307_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置300_1〜300_4は疑似ランダム関数
Figure 2020165931

を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部308_1〜308_4に、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
なお、
Figure 2020165931
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップC2)
第1の再分散値計算部302_1と第2の再分散値計算部302_2はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第1の再分散値計算部302_1と第3の再分散値計算部302_3は
Figure 2020165931
を生成する。
そして、第1の再分散値計算部302_1は、
Figure 2020165931
を第1のデータ記憶部308_1に記憶する。第3の再分散値計算部302_3は、
Figure 2020165931
を、第3のシェア構成部303_3に送信する。また、第2の再分散値計算部302_2は
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
同様に、第1の再分散値計算部302_1、第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure 2020165931
を生成する。第2の再分散値計算部302_2は、
Figure 2020165931
を第2のデータ記憶部308_2に記憶する。第1の再分散値計算部302_1は、
Figure 2020165931
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure 2020165931
を生成する。第3の再分散値計算部302_3は、
Figure 2020165931
を第3のデータ記憶部308_3に記憶する。第2の再分散値計算部302_2は、
Figure 2020165931
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置300_1〜300_4の間で共有している。
(ステップC3)
各シェア構成部303_1、303_2、303_3、303_4は上記ステップC2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

ここで、
Figure 2020165931
に対し、
Figure 2020165931

Figure 2020165931

Figure 2020165931
番目のビット
Figure 2020165931
を意味する。
Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部308_iに記憶される。
上記ステップC3における12の式において、
Figure 2020165931
は、
Figure 2020165931
としたとき、
Figure 2020165931

Figure 2020165931

Figure 2020165931
と置き換えることできる。このように、
Figure 2020165931
となるので、各再分散値計算部302_iは、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合にx1乃至x3のうち2つの値を等しくするように乱数を生成している。
(ステップC4)
各i番目の論理演算部306_iで通信することで、nビット加算器処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、たとえば、
Figure 2020165931

Figure 2020165931
を入力とし、
Figure 2020165931
を出力する処理のことである。
Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
なので、
Figure 2020165931
が計算できた。なお、
Figure 2020165931
は、
Figure 2020165931
、…、
Figure 2020165931
のシェア列を意味する。各i番目の論理演算部306_iは、
Figure 2020165931
を各データ記憶部308_iに記憶する。
(ステップC5)
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部302_1は、
Figure 2020165931
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部302_2は、
Figure 2020165931
を第2のデータ記憶部308_2から取り出す。次に、第2の再分散値計算部302_2は、
Figure 2020165931
を、第4の不正検知部304_4に送信する。第4の不正検知部204_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部302_3は、
Figure 2020165931
を第3のデータ記憶部308_3から取り出す。次に、第3の再分散値計算部302_3は、
Figure 2020165931

を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
Figure 2020165931
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップC6)
各i番目の不正検知部304_iは、上記ステップC4の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップC6は上記ステップC5と並列に実行することが可能である。
次に、図12に示す環合成に関するフローチャートを説明する。
(ステップD1)
各基本演算シード記憶部307_1、307_2、307_3、307_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置300_1〜300_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部308_1〜308_4に、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。さらに、各データ記憶部308_1〜308_4に、ループカウンタj(=0)を記憶する。なお、
Figure 2020165931
とし、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
とする。
また、
Figure 2020165931
に関して、サーバ装置300_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップD2)
各サーバ装置300_iは、各データ記憶部308_iより、ループカウンタjをとりだす。各サーバ装置300_iは、j<nであればステップD3〜D7を実行する。j=nであれば、各サーバ装置300_iはステップD8を実行する。
また、各算術演算部305_1〜305_4は、各データ記憶部308_1〜308_4から
Figure 2020165931
を取り出す。そして、各算術演算部305_1〜305_4は、
Figure 2020165931
を計算し、
Figure 2020165931
を各データ記憶部308_1〜308_4に記憶する。なお、第iのデータ記憶部308_iが記憶する
Figure 2020165931

Figure 2020165931
と表記する。また、
Figure 2020165931


とする。
(ステップD3)
第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3はそれぞれ、第1の基本演算シード記憶部307_1、第2の基本演算シード記憶部307_2、第3の基本演算シード記憶部307_3より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure 2020165931
を生成する。そして、第1の再分散値計算部302_1は、
Figure 2020165931
を第1のシェア構成部303_1に送信する。第3の再分散値計算部302_3は
Figure 2020165931
を、第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は
Figure 2020165931
を生成する。第2の再分散値計算部302_2は、
Figure 2020165931
を、第2のシェア構成部303_2に送信する。第1の再分散値計算部302_1は、
Figure 2020165931
を、第1のシェア構成部303_1に送信する。また、第3の再分散値計算部302_3は、第3のデータ記憶部308_2から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
さらに同様に、第1の再分散値計算部302_1と第2の再分散値計算部302_2と第3の再分散値計算部302_3は、
Figure 2020165931
を生成する。第3の再分散値計算部302_3は、
Figure 2020165931
を第3のシェア構成部303_3に送信する。第2の再分散値計算部302_2は、
Figure 2020165931
を、第2のシェア構成部303_2に送信する。また、第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部303_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置300_1〜300_4の間で共有している。
(ステップD4)
各シェア構成部303_1、303_2、303_3、303_4は上記ステップD3で送信された値と、各i番目のデータ記憶部308_iに記憶された
Figure 2020165931
を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部308_iに記憶される。
(ステップD5)
上記ステップB5と同じ処理が行われる。
(ステップD6)
第1の再分散値計算部302_1は、第1のデータ記憶部308_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部302_1は、
Figure 2020165931
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成り立つかを検証する。
成り立つ場合、第4の不正検知部204_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部302_2は、第2のデータ記憶部308_2から
Figure 2020165931
を取り出す。次に、第2の再分散値計算部302_2は、
Figure 2020165931
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部302_3は、第3のデータ記憶部308_3から
Figure 2020165931
を取り出す。次に、第3の再分散値計算部302_3は、
Figure 2020165931
を、第4の不正検知部304_4に送信する。第4の不正検知部304_4は、第4のデータ記憶部308_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部304_4は、successの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部304_4は、abortの文字列を各サーバ装置300_1、300_2、300_3、300_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
Figure 2020165931
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD7)
各i番目の不正検知部304_iは、上記ステップD5の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置300_1、300_2、300_3、300_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD7は上記ステップD6と並列に実行することが可能である。また、ステップD6、D7はループごとではなく、j=n−1のときに、n回のループ分を並列に実行することが可能である。
(ステップD8)
上記ステップB8と同じ処理が行われる。
以上、説明した第3の実施形態においては、第1の実施形態および第2の実施形態における効果と同じ効果を奏する。ただし、第1の実施形態における第1の効果および第2の実施形態における第1の効果に関して、第3の実施形態の方が通信コストの点で効率が良い。第3の実施形態では、第1乃至第2の実施形態と同様、ビット分解に関して
Figure 2020165931
の計算を2回、環合成に関して
Figure 2020165931
の計算によって実行できる。第3の実施形態と第1乃至第2の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第3の実施形態では、ビット分解の通信コストとして、13n−10ビット・n+1ラウンドを要する。環合成の通信コストとして、13n−13ビット・2n−2ラウンドを要する。これにより、第3の実施形態の方が第1及び第2の実施形態よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[第4の実施形態]
図13〜図15を参照して、第4の実施形態に係る型変換処理システムについて説明する。
図13は、第4の実施形態による型変換処理システムの機能構成例を示すブロック図である。第4の実施形態に係る型変換処理システムは、上述した第1乃至第3の実施形態に係る型変換処理システムの変形例である。
図13を参照すると、第4の実施形態による型変換処理システムは、後述する図14で参照される第i(i=1、2、3、4)のサーバ装置から成る。第4の実施形態による型変換処理システムにおいて、サーバ装置400_1、400_2、400_3、400_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図14は、第iのサーバ装置400_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図14に示すように、第iのサーバ装置400_iは、第iの再分散値計算部402_iと、第iのシェア構成部403_iと、第iの不正検知部404_iと、第iの算術演算部405_iと、第iの論理演算部406_iと、第iの基本演算シード記憶部407_iと、第iのデータ記憶部408_iと、を含む。なお、第iの再分散値計算部402_iと、第iのシェア構成部403_iと、第iの不正検知部404_iと、第iの算術演算部405_iと、第iの論理演算部406_iと、第iの基本演算シード記憶部407_iと、第iのデータ記憶部408_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置400_1〜400_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部408_1〜408_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置400_1〜400_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部408_1〜408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1〜400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1〜400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置400_1〜400_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部408_1〜408_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置400_1〜400_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部408_1〜408_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置400_1〜400_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置400_1〜400_4ではない外部にシェアが送信され、シェアが復元されてもよい。
次に、第4の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置400_1〜400_4の動作について、詳細に説明する。図15は、第1乃至第4のサーバ装置400_1〜400_4の環合成に関する動作例を示すフローチャートである。ビット分解については、第3の実施例と同様に実施可能なため、詳細な説明を割愛する。
図15に示す環合成に関するフローチャートを説明する。
(ステップD´1)
各基本演算シード記憶部407_1、407_2、407_3、407_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置400_1〜400_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部408_1〜408_4に、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。さらに、各データ記憶部408_1〜408_4に、ループカウンタj(=1)を記憶する。なお、
Figure 2020165931
とし、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
とする。
また、
Figure 2020165931
に関して、サーバ装置400_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップD´2)
各サーバ装置400_iは、以下に示す式のように
Figure 2020165931
の値を定める。
Figure 2020165931

Figure 2020165931
各データ記憶部408_1〜408_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931
を生成する。
そして、第1の再分散値計算部402_1は、
Figure 2020165931
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_3は
Figure 2020165931
を、第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931
を生成する。第2の再分散値計算部402_2は、
Figure 2020165931
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
Figure 2020165931
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931
を生成する。第3の再分散値計算部402_3は、
Figure 2020165931
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
Figure 2020165931
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置400_1〜400_4の間で共有している。
(ステップD´3)
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´2で送信された値と、各i番目のデータ記憶部408_iに記憶された
Figure 2020165931
を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部408_iに記憶される。
(ステップD´4)
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部402_1は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成り立つかを検証する。
成り立つ場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure 2020165931
を取り出す。次に、第2の再分散値計算部402_2は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure 2020165931
を取り出す。次に、第3の再分散値計算部402_3は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
Figure 2020165931
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップD´5)
各サーバ装置400_iは、各データ記憶部408_iより、ループカウンタjをとりだす。各サーバ装置400_iは、j<nであればステップD´6〜D´10を実行する。各サーバ装置400_iは、j=nであれば、ステップD´11を実行する。
(ステップD´6)
上記ステップB´6と同じ処理なので説明を割愛する。
(ステップD´7)
第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3はそれぞれ、第1の基本演算シード記憶部407_1、第2の基本演算シード記憶部407_2、第3の基本演算シード記憶部407_3より、
Figure 2020165931
を取得する。次に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931
を生成する。
そして、第1の再分散値計算部402_1は、
Figure 2020165931
を第1のシェア構成部403_1に送信する。第3の再分散値計算部402_2は
Figure 2020165931
を、第3のシェア構成部403_4に送信する。第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931
を生成する。第2の再分散値計算部402_2は、
Figure 2020165931
を、第2のシェア構成部403_2に送信する。第1の再分散値計算部402_3は、
Figure 2020165931
を、第1のシェア構成部403_1に送信する。また、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
さらに同様に、第1の再分散値計算部402_1と第2の再分散値計算部402_2と第3の再分散値計算部402_3は
Figure 2020165931

Figure 2020165931
を生成する。第3の再分散値計算部402_3は、
Figure 2020165931
を第3のシェア構成部403_3に送信する。第2の再分散値計算部402_2は、
Figure 2020165931
を、第2のシェア構成部403_2に送信する。また、第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure 2020165931
を取出し、
Figure 2020165931
を、第4のシェア構成部403_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置400_1〜400_4の間で共有している。
また、論理演算部406_i(i=1、2、3、4)は、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
および
Figure 2020165931
を入力に取り、
Figure 2020165931
を通信を伴って計算することで、
Figure 2020165931
を得る。論理演算部406_i(i=1、2、3、4)は、データ記憶部408_i(i=1、2、3、4)に
Figure 2020165931
を記憶する。
(ステップD´8)
各シェア構成部403_1、403_2、403_3、403_4は上記ステップD´7で送信された値と、各i番目のデータ記憶部408_iに記憶された
Figure 2020165931
を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部408_iに記憶される。また、データ記憶部408_iはループカウンタ
Figure 2020165931
を取り出し、j=j+1として値を更新する。
(ステップD´9)
第1の再分散値計算部402_1は、第1のデータ記憶部408_1から
Figure 2020165931
を取り出す。次に、第1の再分散値計算部302_1は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成り立つかを検証する。
成り立つ場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
同様に、第2の再分散値計算部402_2は、第2のデータ記憶部408_2から
Figure 2020165931
を取り出す。次に、第2の再分散値計算部402_2は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
さらに同様に、第3の再分散値計算部402_3は、第3のデータ記憶部408_3から
Figure 2020165931
を取り出す。次に、第3の再分散値計算部402_3は、
Figure 2020165931
を、第4の不正検知部404_4に送信する。第4の不正検知部404_4は、第4のデータ記憶部408_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部404_4は、successの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、次のステップに進む。一致しなかった場合、第4の不正検知部404_4は、abortの文字列を各サーバ装置400_1、400_2、400_3、400_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して行う場合、
Figure 2020165931
については、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。なお、ステップD´9は、ループごとではなく、j=n−1のときに全ループ分を並列に実行しても良い。また、ステップD´9は、上記ステップD´4と並列に実行することも可能である。
(ステップD´10)
各i番目の不正検知部404_iは、上記ステップD´7の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置400_1、400_2、400_3、400_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップD´10は上記ステップD´4、D´9と並列に実行することが可能である。また、ステップD´10はループごとではなく、j=n−1のときに、全ループ分を並列に実行することが可能である。
(ステップD´11)
上記ステップB´11と同じ処理なので説明を割愛する。
以上、説明した第4の実施形態においては、第1乃至第3の実施形態における効果と同じ効果を奏する。ただし、第3の実施形態における第1の効果に関して、第4の実施形態の方が環合成における通信コストの点で効率が良い。キャリー計算処理
Figure 2020165931
を分割して考え、シェアの再分散とキャリー計算における通信を伴う処理を並列して行うことで、通信ラウンドの削減を実現している。このため、第4の実施形態における環合成の通信コストは、(13n−13)ビット・n−1ラウンドとなる。
[第5の実施形態]
図16〜図18を参照して、第5の実施形態に係る型変換処理システムについて説明する。第5の実施形態に係る型変換処理システムは、上述した第1乃至第4の実施形態に係る型変換処理システムの変形例である。
図16は、第5の実施形態による型変換処理システムの機能構成例を示すブロック図である。図16を参照すると、第5の実施形態による型変換処理システムは、後述する図17で参照される第i(i=1、2、3、4)のサーバ装置から成る。第5の実施形態による型変換処理システムにおいて、サーバ装置500_1、500_2、500_3、500_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図17は、第iのサーバ装置500_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図17に示すように、第iのサーバ装置500_iは、第iのマスク値計算部501_iと、第iの再分散値計算部502_iと、第iのシェア構成部503_iと、第iの不正検知部504_iと、第iの算術演算部505_iと、第iの論理演算部506_iと、第iの基本演算シード記憶部507_iと、第iのデータ記憶部508_iと、を含む。なお、第iのマスク値計算部501_iと、第iの再分散値計算部502_iと、第iのシェア構成部503_iと、第iの不正検知部504_iと、第iの算術演算部505_iと、第iの論理演算部506_iと、第iの基本演算シード記憶部507_iと、第iのデータ記憶部508_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置500_1〜500_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部508_1〜508_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置500_1〜500_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部508_1〜508_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置500_1〜500_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置500_1〜500_4ではない外部にシェアが送信され、復元されてもよい。
次に、第5の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置500_1〜500_4の動作について、詳細に説明する。図17は、第1乃至第4のサーバ装置500_1〜500_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下、図17に示すビット分解に関するフローチャートを説明する。
(ステップE1)
各基本演算シード記憶部507_1、507_2、507_3、507_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置500_1〜500_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部508_1〜508_4に、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。ここで、
Figure 2020165931
を文字列連結演算子とする。なお、
Figure 2020165931
に関して、サーバ装置500_i(i=1、2、3、4)の内、ある一台のサーバ装置は
Figure 2020165931
の出力を計算できず、他の三台のサーバ装置は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップE2)
第1、第2、第3のマスク値計算部501_1、501_2、501_3は
Figure 2020165931
を計算し、第1、第2、第3のデータ記憶部509_1、509_2、509_3に
Figure 2020165931
を記憶する。第2のマスク値計算部501_2は、データ記憶部508_2からシェア
Figure 2020165931
を取り出す。第2のマスク値計算部501_2は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
Figure 2020165931
を記憶する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置500_1〜500_4の間で共有している。
このように、第iのマスク値計算部501_iは、シェア(例えば、上記の例ではx)をマスクするためのマスク値(例えば、上記の例ではr)を計算する。当該計算されたマスク値によりマスクされたシェア(上記の例では、y=x+r)が他のサーバ装置に送信される。
(ステップE3)
各シェア構成部503_1、503_2、503_3、503_4は各データ記憶部508_1、508_2、508_3、508_4からそれぞれ、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を取り出し、以下の16の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
に対し、
Figure 2020165931

Figure 2020165931
のj番目のビット(j=0、...、n−1)を意味する。
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
は各i番目のデータ記憶部508_iに記憶される。このように、第iのシェア構成部503_iは、送信されたマスク値を用いて型変換用のシェアを構成する。
(ステップE4)
各i番目の論理演算部506_iで通信することで、nビット加算器処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、たとえば、
Figure 2020165931

Figure 2020165931
を入力とし、
Figure 2020165931
を出力する処理のことである。
Figure 2020165931

Figure 2020165931


Figure 2020165931
ここで、
Figure 2020165931
なので、
Figure 2020165931
が計算できた。なお、
Figure 2020165931
は、
Figure 2020165931
、…、
Figure 2020165931
のシェア列を意味する。各i番目の論理演算部506_iは、
Figure 2020165931
を各データ記憶部508_iに記憶する。
(ステップE5)
第1のサーバ装置500_1は、上記ステップE2における第2のサーバ装置500_2と同様、第1のマスク値計算部501_1は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置500_4に送信する。第4のサーバ装置500_4は、第4のデータ記憶部508_4に
Figure 2020165931
を記憶する。第4の不正検知部504_4は、第4のデータ記憶部508_4から
Figure 2020165931
を取り出し、
Figure 2020165931
が成り立つか、検証する。
Figure 2020165931
が成り立つ場合は、第4の不正検知部504_4はsuccessの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、次のステップに進む。
Figure 2020165931
が成り立たない場合は、第4の不正検知部504_4はabortの文字列を各サーバ装置500_1、500_2、500_3にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う際に、各ステップE5における
Figure 2020165931
を連結してハッシュ値
Figure 2020165931
を計算し、
Figure 2020165931
に対しても連結した値に対するハッシュ値
Figure 2020165931
を計算することで、
Figure 2020165931
が成り立つか否かの検証を
Figure 2020165931
が成り立つか否かの検証と捉えてもよい。このとき、
Figure 2020165931
に関する通信量は処理全体の計算量に対し、無視できるものと捉えることができる。
(ステップE6)
各i番目の不正検知部504_iは、上記ステップE4の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置500_1、500_2、500_3、500_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップE6は上記ステップE5と並列に実行することが可能である。
以上、説明した第5の実施形態においては、第1乃至第4の実施形態における効果と同じ効果を奏する。なお、ビット分解について、理論的な通信コストとしては第5の実施形態の方が、他の実施形態よりも劣っているが、通信の形態が変化していることに留意されたい。たとえば、第3の実施形態では、ステップC2にて、第1のサーバ装置300_1、第2のサーバ装置300_2、第3のサーバ装置300_3から第4のサーバ装置300_4への通信が生じている。一方、第5の実施形態におけるステップE2では、第2のサーバ装置500_2から、第4のサーバ装置500_4への通信の発生だけで済む。このように通信の形態が変わるため、通信環境によっては第5の実施形態の方が、効率が良い場合があり得る。
[第6の実施形態]
図19〜図21を参照して、第6の実施形態に係る型変換処理システムについて説明する。図19は、第6の実施形態による型変換処理システムの機能構成例を示すブロック図である。第6の実施形態に係る型変換処理システムは、上述した第1乃至第5の実施形態に係る型変換処理システムの変形例である。
図19を参照すると、第6の実施形態による型変換処理システムは、後述する図20で参照される第i(i=1、2、3、4)のサーバ装置から成る。第6の実施形態による型変換処理システムにおいて、サーバ装置600_1、600_2、600_3、600_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図20は、第iのサーバ装置600_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図20に示すように、第iのサーバ装置600_iは、第iのマスク値計算部601_iと、第iの再分散値計算部602_iと、第iのシェア構成部603_iと、第iの不正検知部604_iと、第iの算術演算部605_iと、第iの論理演算部606_iと、第iの基本演算シード記憶部607_iと、第iのデータ記憶部608_iと、を含む。なお、第iのマスク値計算部601_iと、第iの再分散値計算部602_iと、第iのシェア構成部603_iと、第iの不正検知部604_iと、第iの算術演算部605_iと、第iの論理演算部606_iと、第iの基本演算シード記憶部607_iと、第iのデータ記憶部608_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置600_1〜600_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部608_1〜608_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置600_1〜600_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部608_1〜608_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置600_1〜600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1〜600_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置600_1〜600_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部608_1〜608_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置600_1〜600_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部608_1〜608_4に記憶する。上記計算結果のシェアは、第1乃至第4のサーバ装置600_1〜600_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置600_1〜600_4ではない外部にシェアが送信され、復元されてもよい。
次に、第6の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置600_1〜600_4の動作について、詳細に説明する。図20は、第1乃至第4のサーバ装置600_1〜600_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下に図20に示すビット分解に関するフローチャートを説明する。
(ステップF1)
各基本演算シード記憶部607_1、607_2、607_3、607_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置600_1〜600_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部608_1〜608_4に、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。なお、
Figure 2020165931
に関して、サーバ装置600_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップF2)
第1、第2、第3のマスク値計算部601_1、601_2、601_3は
Figure 2020165931
を計算し、第1、第2、第3のデータ記憶部608_1、608_2、608_3に
Figure 2020165931
を記憶する。第2のマスク値計算部601_2は、データ記憶部608_2からシェア
Figure 2020165931
を取り出す。第2のマスク値計算部601_2は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
Figure 2020165931
を記憶する。
次に、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3はそれぞれ、第1の基本演算シード記憶部607_1、第2の基本演算シード記憶部607_2、第3の基本演算シード記憶部607_3より、
Figure 2020165931
を取得する。そして、第1の再分散値計算部602_1と第2の再分散値計算部602_2と第3の再分散値計算部602_3は
Figure 2020165931
を生成する。さらに、第3の再分散値計算部602_3は、
Figure 2020165931
を第3のデータ記憶部608_3に記憶する。第1の再分散値計算部602_1は、
Figure 2020165931
を、第1のシェア構成部603_1に送信する。また、第2の再分散値計算部602_2は、第2のデータ記憶部608_2から
Figure 2020165931
を取り出し、
Figure 2020165931
を、第4のシェア構成部603_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置600_1〜600_4の間で共有している。
(ステップF3)
各シェア構成部603_1、603_2、603_3、603_4は、各データ記憶部608_1、608_2、608_3、608_4からそれぞれ、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を取り出す。さらに上記ステップF2で送信された値を用いて、以下の12の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
に対し、
Figure 2020165931

Figure 2020165931
のj番目のビット(j=0、...、n-1)を意味する。
Figure 2020165931

Figure 2020165931

Figure 2020165931
が各i番目のデータ記憶部608_iに記憶される。
(ステップF4)
各i番目の論理演算部606_iで通信することで、nビット加算器処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、たとえば、
Figure 2020165931

Figure 2020165931
を入力とし、
Figure 2020165931
を出力する処理のことである。
Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
なので、
Figure 2020165931
が計算できた。なお、
Figure 2020165931
は、
Figure 2020165931
、…、
Figure 2020165931
のシェア列を意味する。各i番目の論理演算部606_iは、
Figure 2020165931
を各データ記憶部608_iに記憶する。
(ステップF5)
第1のサーバ装置600_1は、上記ステップF2における第2のサーバ装置600_2と同様、第1のマスク値計算部601_1は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置600_4に送信する。第4のサーバ装置600_4は、第4のデータ記憶部608_4に
Figure 2020165931
を記憶する。第4の不正検知部604_4は、第4のデータ記憶部608_4から
Figure 2020165931
を取り出し、
Figure 2020165931
が成り立つか、検証する。
Figure 2020165931
が成り立つ場合は、第4の不正検知部604_4はsuccessの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、次のステップに進む。
Figure 2020165931
が成り立たない場合は、第4の不正検知部604_4はabortの文字列を各サーバ装置600_1、600_2、600_3にブロードキャストし、プロトコルを中断する。
第2の再分散値計算部602_2は、
Figure 2020165931
を第2のデータ記憶部608_2から取り出す。次に、第2の再分散値計算部602_2は、
Figure 2020165931
を、第4の不正検知部604_4に送信する。第4の不正検知部604_4は、第4のデータ記憶部608_4に記憶されている
Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部604_4は、successの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部604_4は、abortの文字列を各サーバ装置600_1、600_2、600_3、600_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列して実行する場合、
Figure 2020165931

Figure 2020165931
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップF6)
各i番目の不正検知部604_iは、上記ステップF4の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置600_1、600_2、600_3、600_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップF6は上記ステップF5と並列に実行することが可能である。
以上、説明した第6の実施形態においては、第1乃至第5の実施形態における効果と同じ効果を奏する。また、ビット分解の理論的な通信コストについて、第6の実施形態の方が第1乃至第5の実施形態よりも、効率が良い。第6の実施形態では、第1至第4の実施形態と同様、ビット分解に関して
Figure 2020165931
の計算を2回行うことで実現できる。
第6の実施形態と第1乃至第4の実施形態とで異なる点は、加算器計算前の再分散が効率よく行われている点である。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第6の実施形態では、ビット分解の通信コストとして、12n−10ビット・n+1ラウンドを要する。これより、第6の実施形態におけるビット分解の方が、第1乃至第5の実施形態におけるビット分解よりも通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[第7の実施形態]
図22〜図24を参照して、第7の実施形態に係る型変換処理システムについて説明する。図22は、第7の実施形態による型変換処理システムの機能構成例を示すブロック図である。第7の実施形態に係る型変換処理システムは、上述した第1乃至第6の実施形態に係る型変換処理システムの変形例である。
図22を参照すると、第7の実施形態による型変換処理システムは、後述する図23で参照される第i(i=1、2、3、4)のサーバ装置から成る。第7の実施形態による型変換処理システムにおいて、サーバ装置700_1、700_2、700_3、700_4は、自身と異なるサーバ装置とネットワーク経由で通信可能に接続されている。図23は、第iのサーバ装置700_i(i=1、2、3、4)の機能構成例を示すブロック図である。
図23に示すように、第iのサーバ装置700_iは、第iのマスク値計算部701_iと、第iの再分散値計算部702_iと、第iのシェア構成部703_iと、第iの不正検知部704_iと、第iの算術演算部705_iと、第iの論理演算部706_iと、第iの基本演算シード記憶部707_iと、第iのデータ記憶部708_iと、を含む。なお、第iのマスク値計算部701_iと、第iの再分散値計算部702_iと、第iのシェア構成部703_iと、第iの不正検知部704_iと、第iの算術演算部705_iと、第iの論理演算部706_iと、第iの基本演算シード記憶部707_iと、第iのデータ記憶部708_iとは、それぞれ接続されている。
このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置700_1〜700_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部708_1〜708_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置700_1〜700_4ではない外部から入力されたシェア
Figure 2020165931

に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部708_1〜708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1〜700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1〜700_4ではない外部にシェアが送信され、復元されてもよい。
また、このような構成の型変換処理システムにおいては、第1乃至第4のサーバ装置700_1〜700_4の内のいずれかの装置が入力した値
Figure 2020165931
、あるいは第1乃至第4のデータ記憶部708_1〜708_4に記憶されたシェア
Figure 2020165931
、あるいは第1乃至第4のサーバ装置700_1〜700_4ではない外部から入力されたシェア
Figure 2020165931
に対し、その入力や計算過程の値から
Figure 2020165931
の値を知られることなく、
Figure 2020165931
を計算し、第1乃至第4のデータ記憶部708_1〜708_4に記憶する。上述の計算結果のシェアは、第1乃至第4のサーバ装置700_1〜700_4がシェアを送受信し、復元されてもよい。あるいは、第1乃至第4のサーバ装置700_1〜700_4ではない外部にシェアが送信され、復元されてもよい。
次に、第7の実施形態における型変換処理システムおよび第1乃至第4のサーバ装置700_1〜700_4の動作について、詳細に説明する。図24は、第1乃至第4のサーバ装置700_1〜700_4のビット分解に関する動作例を示すフローチャートである。環合成については、たとえば、第3又は第4の実施形態における環合成と同様とすることができるので、説明を割愛する。
以下、図24に示すビット分解に関するフローチャートを説明する。
(ステップG1)
各基本演算シード記憶部707_1、707_2、707_3、707_4は、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。
また、各サーバ装置700_1〜700_4は疑似ランダム関数
Figure 2020165931
を共有する。なお、
Figure 2020165931
とし、疑似ランダム関数
Figure 2020165931
とする。また、各データ記憶部708_1〜708_4に、それぞれ
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を記憶する。なお、
Figure 2020165931
に関して、サーバ装置700_i(i=1、2、3、4)の内、ある一台の参加者は
Figure 2020165931
の出力を計算できず、他の三台の参加者は
Figure 2020165931
の出力を計算できるという状況を作ることを意図している。この状況を作り出せるのであれば、
Figure 2020165931
の扱いは特に制限されない。本書での
Figure 2020165931
はあくまでも一例である。
(ステップG2)
第1、第2、第3のマスク値計算部701_1、701_2、701_3は
Figure 2020165931
を計算し、第1、第2、第3のデータ記憶部708_1、708_2、708_3に
Figure 2020165931
を記憶する。第2のマスク値計算部701_2は、データ記憶部708_2からシェア
Figure 2020165931
を取り出す。第2のマスク値計算部701_2は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
Figure 2020165931
を記憶する。
次に、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3はそれぞれ、第1の基本演算シード記憶部707_1、第2の基本演算シード記憶部707_2、第3の基本演算シード記憶部707_3より、
Figure 2020165931
を取得する。そして、第1の再分散値計算部702_1と第2の再分散値計算部702_2と第3の再分散値計算部702_3は
Figure 2020165931
を生成する。さらに、第1の再分散値計算部702_1は、
Figure 2020165931
を第1のデータ記憶部708_1に記憶する。第3の再分散値計算部702_3は、
Figure 2020165931
を、第3のシェア構成部703_3に送信する。また、第2の再分散値計算部702_2は、第2のデータ記憶部708_2から
Figure 2020165931
を取り出し、
Figure 2020165931
を、第4のシェア構成部703_4に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置700_1〜700_4の間で共有している。
(ステップG3)
第2の再分散値計算部702_2は、第2の基本演算シード記憶部707_2から
Figure 2020165931
を取得する。第3の再分散値計算部702_3は、第3の基本演算シード記憶部707_3から
Figure 2020165931
を取得する。第4の再分散値計算部702_4は、第4の基本演算シード記憶部707_4から
Figure 2020165931
を取得する。また、第4の再分散値計算部702_4は、第4のデータ記憶部708_4から
Figure 2020165931
を取得する。
ここで、第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は
Figure 2020165931
を計算する。第2の再分散値計算部702_2および第3の再分散値計算部702_3および第4の再分散値計算部702_4は、それぞれ、第2のデータ記憶部708_2および第3のデータ記憶部708_3および第4のデータ記憶部708_4に送信する。
さらに第4の再分散値計算部702_4は、
Figure 2020165931
を用いて、
Figure 2020165931
を生成し、第1のシェア構成部703_1および第4のシェア構成部703_4に送信する。同様に第3の再分散値計算部702_4は、
Figure 2020165931
を生成し、第3のシェア構成部703_3および第3のデータ記憶部708_3に送信する。
ここで、
Figure 2020165931
である。
Figure 2020165931
は、たとえば、カウンタであり、各サーバ装置700_1〜700_4の間で共有している。
(ステップG4)
各シェア構成部703_1、703_2、703_3、703_4は、各データ記憶部708_1、708_2、708_3、708_4からそれぞれ、
Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
を取り出す。さらに上記ステップG2、G3で送信された値を用いて、以下の8の式によりシェアを構成する。

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931

Figure 2020165931
ここで、
Figure 2020165931
に対し、
Figure 2020165931


Figure 2020165931
のj番目のビット(j=0、...、n−1)を意味する。
Figure 2020165931

Figure 2020165931
は各i番目のデータ記憶部708_iに記憶される。
上記ステップG4における8の式において、
Figure 2020165931
としたとき、
Figure 2020165931

Figure 2020165931

Figure 2020165931
と置き換えることできる。このように、
Figure 2020165931
となるので、各再分散値計算部702_iは、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和すると場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和となるように乱数を生成している。
つまり、各再分散値計算部702_iは、再分散する際に一部がゼロとなるように乱数を生成する。
(ステップG5)
各i番目の論理演算部706_iで通信することで、加算器処理
Figure 2020165931
を以下のように計算する。ここで、
Figure 2020165931
とは、たとえば、
Figure 2020165931

Figure 2020165931
を入力とし、
Figure 2020165931
を出力する処理のことである。
Figure 2020165931
ここで、
Figure 2020165931
なので、
Figure 2020165931
が計算できた。なお、
Figure 2020165931
は、
Figure 2020165931
、…、
Figure 2020165931
のシェア列を意味する。各i番目の論理演算部706_iは、
Figure 2020165931
を各データ記憶部708_iに記憶する。
(ステップG6)
第1のサーバ装置700_1は、上記ステップG2における第2のサーバ装置700_2と同様、第1のマスク値計算部701_1は、
Figure 2020165931
を生成し、
Figure 2020165931
を第4のサーバ装置700_4に送信する。第4のサーバ装置700_4は、第4のデータ記憶部708_4に
Figure 2020165931
を記憶する。第4の不正検知部704_4は、第4のデータ記憶部708_4から
Figure 2020165931
を取り出し、
Figure 2020165931
が成り立つか、検証する。
Figure 2020165931
が成り立つ場合は、第4の不正検知部704_4はsuccessの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、次のステップに進む。
Figure 2020165931
が成り立たない場合は、第4の不正検知部704_4はabortの文字列を各サーバ装置700_1、700_2、700_3にブロードキャストし、プロトコルを中断する。
第1の再分散値計算部702_1は、
Figure 2020165931
を第1のデータ記憶部708_1から取り出す。次に、第1の再分散値計算部702_1は、
Figure 2020165931
を、第4の不正検知部704_4に送信する。第4の不正検知部704_4は、第4のデータ記憶部708_4に記憶されている
Figure 2020165931

Figure 2020165931
を取出し、
Figure 2020165931
が成立するかを検証する。
成立した場合、第4の不正検知部704_4は、successの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、次のステップに進む。成立しなかった場合、第4の不正検知部704_4は、abortの文字列を各サーバ装置700_1、700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う場合、
Figure 2020165931

Figure 2020165931
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG7)
第3の不正検知部704_3は、
Figure 2020165931

を第3のデータ記憶部708_3から取出し、
Figure 2020165931

を第1の不正検知部704_1に送信する。第1の不正検知部704_1は、第1のデータ記憶部708_1から
Figure 2020165931

を取出し、
Figure 2020165931
が成り立つか、検証する。
Figure 2020165931
が成り立つ場合は、第1の不正検知部704_1はsuccessの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、次のステップに進む。
Figure 2020165931
が成り立たない場合は、第1の不正検知部704_1はabortの文字列を各サーバ装置700_2、700_3、700_4にブロードキャストし、プロトコルを中断する。
なお、大量の型変換処理を並列に行う場合、
Figure 2020165931
に関しては、それぞれの値を連結したものに対するハッシュ値を送信し、ハッシュ値同士の比較によって検証してもよい。このとき、処理全体の計算量に対して、ハッシュ値の送信量は無視できるものと捉えることができる。
(ステップG8)
各i番目の不正検知部704_iは、上記ステップG5の
Figure 2020165931
における送受信データを用いて、突き合わせることで不正検知を行う。不正が検知されなかった第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、successの文字列を各サーバ装置にブロードキャストする。不正が検知された第1乃至第4のサーバ装置700_1、700_2、700_3、700_4は、abortの文字列を各サーバ装置にブロードキャストし、プロトコルを中断する。これは上述の不正検知可能な4者間秘密計算によって実現される。ステップG8は上記ステップG6、G7と並列に実行することが可能である。
以上、説明した本発明の第7の実施形態においては、第1乃至第6の実施形態における効果と同じ効果を奏する。また、ビット分解の理論的な通信コストについて、第7の実施形態の方が他の実施形態よりも、効率が良い。第7の実施形態では、ビット分解に関して
Figure 2020165931
の計算を1回行うことで実現できる。リップルキャリー型のnビット加算器を用いて不正検知に関する処理を並列に行った場合、第5の実施形態では、ビット分解の通信コストとして、8n−5ビット・n+1ラウンドを要する。これより、第7の実施形態の方が他の実施形態よりもビット分解の通信コストの点で効率が良い。なお、本願開示の実施はリップルキャリー型のnビット加算器に限定されない。キャリールックアヘッド型やパラレルプリフィックス型などのnビット加算器を用いても良い。
[ハードウェア構成]
続いて、秘密計算システムをなす秘密計算サーバのハードウェア構成について説明する。
図25は、第iの秘密計算サーバ装置100_iのハードウェア構成の一例を示す図である。第iの秘密計算サーバ装置100_iは、所謂、情報処理装置(コンピュータ)により実現され、図25に例示する構成を備える。例えば、第iの秘密計算サーバ装置100_iは、内部バスにより相互に接続される、CPU(Central Processing Unit)21、メモリ22、入出力インターフェイス23、通信手段であるNIC(Network Interface Card)24等を備える。
但し、図25に示す構成は、第iの秘密計算サーバ装置100_iのハードウェア構成を限定する趣旨ではない。第iの秘密計算サーバ装置100_iは、図示しないハードウェアを含んでもよい。第iの秘密計算サーバ装置100_iに含まれるCPU等の数も図25の例示に限定する趣旨ではなく、例えば、複数のCPU21が第iの秘密計算サーバ装置100_iに含まれていてもよい。
メモリ22は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)等である。
入出力インターフェイス23は、図示しない入出力装置のインターフェイスである。入出力装置には、例えば、表示装置、操作デバイス等が含まれる。表示装置は、例えば、液晶ディスプレイ等である。操作デバイスは、例えば、キーボードやマウス等である。
第iの秘密計算サーバ装置100_iの機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ22に格納されたプログラムをCPU21が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェア、或いはハードウェアを利用して実行されるソフトウェアにより実現できればよい。
[変形例]
なお、第1乃至第7の実施形態にて説明した秘密計算検証システムの構成及び動作は例示であって、種々の変形が可能である。例えば、上記実施形態では、4つの秘密計算サーバ装置100_1〜100_4が対等である場合を説明したが、1つのサーバ装置を代表サーバとして定めてもよい。この場合、代表サーバが秘密計算に用いるデータの入出力(入力データの分散及び配布、計算結果の復号)を制御してもよい。
上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。即ち、上記各実施形態の任意の組み合わせが更なる実施形態として含まれる。
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、たとえば、
Figure 2020165931

の環上で実行される2−out−of−4複製型秘密分散を用いた不正検知可能な4者間MPCにて、生体テンプレート照合や統計演算などの混合回路の計算を効率よく実現する場合に好適である。また、本発明では加算器を計算する際に用いる回路を変更することで、通信量と通信回数についてトレードオフが成立するような異なる型変換を実現できる。これにより、通信環境に応じて、効率よく型変換を行える。よって、型変換をサブルーチンとして用いる混合回路を上記4者間MPCにて実行する際に、通信環境に応じて、効率よく実行できる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係る情報処理装置のとおりである。
[付記2]
前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、好ましくは付記1に記載の情報処理装置。
[付記3]
前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記2に記載の情報処理装置。
[付記4]
前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、好ましくは付記3に記載の情報処理装置。
[付記5]
前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
前記論理演算部は、
前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、好ましくは付記4に記載の情報処理装置。
[付記6]
シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、好ましくは付記1乃至5のいずれか一に記載の情報処理装置。
[付記7]
前記再分散値計算部は、値xの再分散値を計算する際、値xをx1、x2、x3の排他的論理和とする場合に前記x1乃至x3のうち2つの値を等しくするように乱数を生成する、好ましくは付記1乃至6のいずれか一に記載の情報処理装置。
[付記8]
前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx1’、x2’、x3’の排他的論理和とする場合、x1’を乱数rに等しく、x2’をゼロ、x3’を乱数rと値xの排他的論理和とする、好ましくは付記7に記載の情報処理装置。
[付記9]
前記再分散値計算部は、疑似ランダム関数に前記シードと他の装置と共有されるカウンタ値を入力し、前記シードを用いた乱数を生成する、好ましくは付記1乃至8のいずれか一に記載の情報処理装置。
[付記10]
前記型変換用のシェアは、ビット分解用のシェア又は環合成用のシェアである、好ましくは付記1乃至9のいずれか一に記載の情報処理装置。
[付記11]
上述の第2の視点に係る秘密計算方法のとおりである。
[付記12]
上述の第3の視点に係るプログラムのとおりである。
なお、付記11の形態及び付記12の形態は、付記1の形態と同様に、付記2の形態〜付記10の形態に展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10 情報処理装置
11、107_1、207_1、307_1、407_1、507_1、607_1、707_1、107_i〜707_i 基本演算シード記憶部
12、102_1、202_1、302_1、402_1、502_1、602_1、702_1、102_i〜702_i 再分散値計算部
13、103_1、203_1、303_1、403_1、503_1、603_1、703_1、103_i〜703_i シェア構成部
21 CPU(Central Processing Unit)
22 メモリ
23 入出力インターフェイス
24 NIC(Network Interface Card)
100_1〜100_4、200_1〜200_4、300_1〜300_4、400_1〜400_4、500_1〜500_4、600_1〜600_4、700_1〜700_4、100_i〜700_i 秘密計算サーバ装置
501_1、601_1、701_1、501_i〜501_i マスク値計算部
104_1、204_1、304_1、404_1、504_1、604_1、704_1、104_i〜704_i 不正検知部
105_1、205_1、305_1、405_1、505_1、605_1、705_1、105_i〜705_i 算術演算部
106_1、206_1、306_1、406_1、506_1、606_1、706_1、106_i〜706_i 論理演算部
108_1、208_1、308_1、408_1、508_1、608_1、708_1、108_i〜708_i データ記憶部

Claims (10)

  1. シェアについての演算を行う際の乱数を生成するためのシードを格納する、基本演算シード記憶部と、
    前記シードを用いて乱数を生成し、前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する、再分散値計算部と、
    他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する、シェア構成部と、
    を備える、情報処理装置。
  2. 前記生成された乱数に関するデータを用いて不正行為者の有無を検知する、不正検知部をさらに備える、請求項1に記載の情報処理装置。
  3. 前記型変換されたシェアについての論理演算を行う論理演算部をさらに備え、
    前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアの加算処理を実行し、
    前記不正検知部は、前記型変換されたシェアの加算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項2に記載の情報処理装置。
  4. 前記論理演算部は、他の装置と互いに通信を行い前記型変換されたシェアのキャリー計算処理を実行し、
    前記不正検知部は、前記型変換されたシェアのキャリー計算処理のために送受信されたデータを用いて不正行為者の有無を検知する、請求項3に記載の情報処理装置。
  5. 前記キャリー計算処理は、第1要素及び前記第1要素に続く第2要素に分離可能であり、
    前記論理演算部は、
    前記第1要素を他の装置と非通信により計算すると共に、前記シェアの再分散値の計算に必要な通信と前記第2要素のキャリー計算処理に必要な通信を並列に行う、請求項4に記載の情報処理装置。
  6. シェアをマスクするためのマスク値を計算すると共に、前記計算されたマスク値によりマスクされたシェアを他の装置に送信する、マスク値計算部をさらに備え、
    前記シェア構成部は、前記送信されたマスク値を用いて前記型変換用のシェアを構成する、請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記再分散値計算部は、値xの再分散値を計算する際、値xをx、x、xの排他的論理和とする場合に前記x乃至xのうち2つの値を等しくするように乱数を生成する、請求項1乃至6のいずれか一項に記載の情報処理装置。
  8. 前記再分散値計算部は、値x’の再分散値を計算する際、値x’をx’、x’、x’の排他的論理和とする場合、x’を乱数rに等しく、x’をゼロ、x’を乱数rと値xの排他的論理和とする、請求項7に記載の情報処理装置。
  9. シードを用いて乱数を生成するステップと、
    前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信するステップと、
    他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成するステップと、
    を含む秘密計算方法。
  10. シードを用いて乱数を生成する処理と、
    前記生成された乱数によりシェアの再分散値を計算すると共に、前記生成された乱数に関するデータを他の装置に送信する処理と、
    他の装置から受信した前記生成された乱数に関するデータ及び前記シェアの再分散値を用いて型変換用のシェアを構成する処理と、
    をコンピュータに実行させるプログラム。
JP2020571932A 2019-02-12 2019-02-12 情報処理装置、秘密計算方法及びプログラム Active JP7259875B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/004793 WO2020165931A1 (ja) 2019-02-12 2019-02-12 情報処理装置、秘密計算方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2020165931A1 true JPWO2020165931A1 (ja) 2021-12-09
JP7259875B2 JP7259875B2 (ja) 2023-04-18

Family

ID=72044634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020571932A Active JP7259875B2 (ja) 2019-02-12 2019-02-12 情報処理装置、秘密計算方法及びプログラム

Country Status (3)

Country Link
US (1) US20220129567A1 (ja)
JP (1) JP7259875B2 (ja)
WO (1) WO2020165931A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463332B (zh) * 2020-12-01 2024-07-30 华控清交信息科技(北京)有限公司 一种数据处理方法、密文计算系统和用于数据处理的装置
CN115913525A (zh) * 2022-04-25 2023-04-04 上海紫先科技有限公司 一种用硬件芯片实现安全多方计算的方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014007311A1 (ja) * 2012-07-05 2014-01-09 日本電信電話株式会社 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201040743A (en) * 2009-05-08 2010-11-16 Academia Sinica Method of dual secretive sub-holding format applied in effective multi-party computation
WO2015107952A1 (ja) * 2014-01-17 2015-07-23 日本電信電話株式会社 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム
US11222138B2 (en) * 2018-05-29 2022-01-11 Visa International Service Association Privacy-preserving machine learning in the three-server model
CN112805769B (zh) * 2018-10-04 2023-11-07 日本电信电话株式会社 秘密s型函数计算系统、装置、方法及记录介质
JP7259876B2 (ja) * 2019-02-12 2023-04-18 日本電気株式会社 情報処理装置、秘密計算方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014007311A1 (ja) * 2012-07-05 2014-01-09 日本電信電話株式会社 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ARAKI, TOSHINORI ET AL.: "Generalizing the SPDZ Compiler For Other Protocols", CRYPTOLOGY EPRINT ARCHIVE, vol. Report 2018/762, Ver. 20181002:054546, JPN6019016858, October 2018 (2018-10-01), pages 1 - 33, XP061027287, ISSN: 0004818833 *
MOHASSEL, PAYMAN AND RINDAL, PETER: "ABY3: A Mixed Protocol Framework for Machine Learning", CRYPTOLOGY EPRINT ARCHIVE, vol. Report 2018/403, Ver. 20180907:215141, JPN6019016856, September 2018 (2018-09-01), pages 1 - 40, XP061027247, ISSN: 0004818832 *
大原 一真, 他: "異なるサイズの環が混在する不正検知可能なマルチパーティー計算", 2018年暗号と情報セキュリティシンポジウム(SCIS 2018), JPN6019016859, 23 January 2018 (2018-01-23), pages 1 - 4, ISSN: 0004818834 *

Also Published As

Publication number Publication date
US20220129567A1 (en) 2022-04-28
WO2020165931A1 (ja) 2020-08-20
JP7259875B2 (ja) 2023-04-18

Similar Documents

Publication Publication Date Title
CN110557245B (zh) 用于spdz的容错和安全多方计算的方法和系统
Mouchet et al. Multiparty homomorphic encryption from ring-learning-with-errors
US10944751B2 (en) Generating cryptographic function parameters from compact source code
Rathee et al. Cryptflow2: Practical 2-party secure inference
Wang et al. Cryptanalysis of a symmetric fully homomorphic encryption scheme
EP2701337B1 (en) Secret sharing method and system
JP7259876B2 (ja) 情報処理装置、秘密計算方法及びプログラム
US11316665B2 (en) Generating cryptographic function parameters based on an observed astronomical event
EP3134994B1 (en) Method of obfuscating data
WO2017099117A1 (ja) 事前計算装置、方法、およびコンピュータ読取可能な記録媒体、並びにベクトル乗算装置、および方法
Akavia et al. Linear-regression on packed encrypted data in the two-server model
EP3286747B1 (en) Generating cryptographic function parameters from a puzzle
EP2742644B1 (en) Encryption and decryption method
CN115694777A (zh) 基于同态加密的隐私集合求交方法、装置、设备及介质
JP6607257B2 (ja) 秘密計算システム、秘密計算装置、および、秘密計算方法
Andersen et al. Privacy preserving health data processing
JPWO2020165931A1 (ja) 情報処理装置、秘密計算方法及びプログラム
Shin et al. Securing a local training dataset size in federated learning
CN116451804A (zh) 一种基于同态加密的联邦学习方法及其相关设备
JP7396373B2 (ja) 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
US20230143175A1 (en) Device specific multiparty computation
Bonte Optimising privacy-preserving computations
Jiang et al. Optimized verifiable delegated private set intersection on outsourced private datasets
Manz Public-Key Ciphers
Jia et al. Generic 2-Party PFE with Constant Rounds and Linear Active Security, and Efficient Instantiation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230320

R151 Written notification of patent or utility model registration

Ref document number: 7259875

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151