説明

制御装置、計算システムおよび制御プログラム

【課題】一般的なプログラムのsecure computationを行う際に、より効率的に計算を行うことができる。
【解決手段】記憶部24は、プログラムの実行結果として得られる宛先ラベルと端末装置を特定する情報とを関連付ける転送先情報を記憶する。受信部22は、あるプログラムを実行した端末装置から、次に実行すべきプログラムの入力キーと入力キーの転送先に対応する宛先ラベルとを受信する。送信部21は、受信部22が受信した宛先ラベルに基づいて転送先情報から転送先の端末装置を特定し、受信部22が受信した入力キーを転送先の端末装置へ送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、計算システムおよび制御プログラムに関する。
【背景技術】
【0002】
ネットワーク上に参加者(計算機)1〜参加者nのn人の参加者がおり、各参加者は自分の秘密情報x〜xを持っている。各参加者が保持する秘密情報x〜xを他の参加者に開示することなく、ある関数f(x,・・・,x)を計算する問題としてsecure computationが知られている。
【0003】
secure computationの具体例として、ネットワーク上での投票について説明する。ネットワーク上での投票では、秘密情報xは参加者jの投票結果である。なお、賛成ならxは1であり、反対なら0であるとする。また、関数f(x,・・・,x)は、賛成票の数を計算する関数であり、f(x,・・・,x)=x+・・・+xである。
【0004】
従来、関数fが論理回路として表せるような計算であれば、参加者1〜参加者nがお互い他の参加者1〜参加者nが保有する秘密情報秘密情報x〜xを知ることなく関数fの計算を行う方法が知られている(例えば、非特許文献1参照)。
【0005】
具体的には、関数fの計算を行うプログラムを論理回路として表す。その後、論理回路を暗号化する。なお、暗合化した論理回路をGarbled circuitと呼ぶ。また、Garbled circuitでは、入出力はある程度のビット長を持つキーとして表させる。そして、正しい入力キーを持つ者だけが、それに対応する出力値に相当するキーを計算することができる。これらのキーは、乱数により生成されるので、キーを見ただけでは、その入出力値が表す値(平文)を知ることはできない。
【0006】
参加者1は、Garbled circuitを保持する。その他の参加者2〜参加者nは、自分の秘密情報を表す入力キーを保持しており、これを参加者1に送る。参加者1は、受信した入力キーに基づいてGarbled circuitを計算し、出力値を求める。これにより、参加者2〜参加者nは他の参加者2〜参加者nが保有する秘密情報秘密情報x〜xを知ることなく関数fの計算結果を知ることができる。
【非特許文献1】Foundations of Cryptography Volume II Basic Applications, Cambridge University Press, May 10, 2004.
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、非特許文献1の方法では、Garbled circuitを評価する参加者1は回路中の各論理ゲートの値が分からない状態で計算を行うので、途中の計算結果の状態に応じて選択的に処理を行うことができないという問題がある。具体的には、途中の計算結果の状態がわからないため、通常のプログラムでのif文の処理に該当する処理を行うことができない。これにより、非特許文献1の方法では、関数fの計算を行うプログラムによっては効率が非常に低下する。
【0008】
本発明は上記の課題を解決するためになされたものであり、一般的なプログラムのsecure computationを行う際に、より効率的に計算を行うことができる制御装置、計算システムおよび制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、分割されたプログラムを複数の端末装置で分担して実行する計算システムの制御装置において、前記プログラムの実行結果として得られる宛先ラベルと前記端末装置を特定する情報とを関連付ける転送先情報を記憶する記憶部と、あるプログラムを実行した前記端末装置から、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを受信する受信部と、前記受信部が受信した前記宛先ラベルに基づいて前記転送先情報から転送先の端末装置を特定し、前記受信部が受信した前記入力キーを前記転送先の端末装置へ送信する送信部と、を備えたことを特徴とする制御装置である。
【0010】
また、本発明は、分割されたプログラムを複数の端末装置で分担して実行する計算システムにおいて、制御装置と、前記制御装置より送信された入力キーを受信する端末受信部と、受信した前記入力キーに基づいて前記分割されたプログラムを実行し、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを取得する制御部と、前記制御部が取得した前記プログラムの入力キーと前記宛先ラベルとを送信する端末送信部と、を備えた端末装置と、を備えたことを特徴とする計算システムである。
【0011】
また、本発明は、分割されたプログラムを複数の端末装置で分担して実行する計算システムの制御をコンピュータに実行させるための制御プログラムにおいて、前記分割されたプログラムの実行結果として得られる宛先ラベルと前記端末装置を特定する情報とを関連付ける転送先情報を記憶する記憶部と、あるプログラムを実行した前記端末装置から、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを受信する受信部と、前記受信部が受信した前記宛先ラベルに基づいて前記転送先情報から転送先の端末装置を特定し、前記受信部が受信した前記入力キーを前記転送先の端末装置へ送信する送信部と、としてコンピュータを実行させるための制御プログラムである。
【発明の効果】
【0012】
本発明によれば、一般的なプログラムのsecure computationを行う際に、より効率的に計算を行うことができる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の一実施形態について図を参照して説明する。本実施形態のsecure computationを行う計算計算システムは、参加者が3人おり、3人の参加者の投票に応じて可決か否決かを判断する計算システムとする。なお、本実施形態の計算システムは、3人の参加者のうち、2人以上が賛成であれば1(可決)を出力し、それ以外であれば0(否決)を出力する。
【0014】
図1は、本実施形態におけるsecure computationを行う計算システムの構成を示した構成図である。図示する例では、計算システムは参加者11−1〜11−3と、仲介者12と、評価者13−1〜13−5(端末装置)と、制御装置14とを含んでいる。
【0015】
参加者11−1〜11−3は、投票を行う端末であり、例えばコンピュータである。仲介者12は、計算システムで使用する情報の準備を行う端末であり、例えばコンピュータである。評価者13−1〜13−5はプログラムを実行する装置であり、例えばコンピュータである。また、評価者13−1〜13−5は、制御装置14と通信を行うための端末送信部と端末受信部とを備える。制御装置14は計算システムの制御および情報の転送を行う装置であり、例えばルータである。
【0016】
図2は、本実施形態における制御装置の構成を示した構成図である。図示する例では、制御装置14は、送信部21と、受信部22と、制御部23と、記憶部24とを備える。送信部21は他の装置に情報を送信する。受信部22は他の装置から送信された情報を受信する。制御部23は制御装置14の制御を行う。記憶部24は制御装置14が使用する情報を記憶する。
【0017】
図3は、本実施形態におけるsecure computationを行うプログラムとControl flow graph(制御フローグラフ)とを示した図である。図示する例では、プログラム31はブロックfと、ブロックgと、ブロックhとからなる。
【0018】
このプログラムのControl flow graph32は、ブロックIDがfのブロックfと、ブロックIDがgのブロックgと、ブロックIDがhのブロックhとからなる。また、Control flow graph32のループを展開したControl flow graph33は、ブロックIDがfのブロックfと、ブロックIDがg1のブロックg1と、ブロックIDがg2のブロックg2と、ブロックIDがg3のブロックg3と、ブロックIDがhのブロックhとからなる。
【0019】
なお、プログラムをブロックに分割する方法は、例えば「Frances E. Allen, "Control flow analysis",ACM SIGPLAN Notices archive, Volume 5 , Issue 7 (July 1970)」に記載の方法で行う。また、本実施形態では、仲介者12がプログラム31をブロックに分割する。
【0020】
次に、本実施形態におけるsecure computationを行うための事前準備について説明する。本実施形態では、事前準備は仲介者12が行う。仲介者12は、プログラム31に基づいたControl flow graph33の各ブロックにラベル(宛先ラベル)をランダムに割り当てる。
【0021】
本実施形態では、仲介者12は、ブロックfにラベル3を割り当て、ブロックg1にラベル1を割り当て、ブロックg2にラベル5を割り当て、ブロックg3にラベル2を割り当て、ブロックhにラベル4を割り当てる。
【0022】
続いて、仲介者12は、ランダムにControl flow graph33の各ブロックを評価者13−1〜13−5に割り当てる。本実施形態では、ブロックfを評価者13−2に割り当て、ブロックg1を評価者13−4に割り当て、ブロックg2を評価者13−1に割り当て、ブロックg3を評価者13−5に割り当て、ブロックhを評価者13−3に割り当てる。
【0023】
続いて、仲介者12は、Control flow graph33の各ブロックに該当するプログラムを論理回路として表し、論理回路を暗号化する。なお、暗合化した論理回路をGarbled circuitと呼ぶ。
【0024】
続いて、仲介者12は、Control flow graph33の各ブロックに該当するプログラムのGarbled circuitと、Garbled circuitの入力となるキーを作成する。続いて、仲介者12は、各ブロックを割り当てた評価者13−1〜13−5に作成したGarbled circuitを送付する。例えば、Garbled circuit(f)を評価者13−2に送付する。他のGarbled circuitについても同様に評価者13−1〜13−5に送付する。
【0025】
続いて、仲介者12は、Control flow graph33の各ブロックに割り当てたラベル1〜5と、評価者13−1〜13−5に割り当てたControl flow graph33の各ブロックとに基づいて、ラベル1〜5と評価者13−1〜13−5とを関連付ける表である宛先リスト(転送先情報)を作成し、制御装置14に送付する。
【0026】
本実施形態の宛先リストでは、ラベル1と評価者4とが関連付けられ、ラベル2と評価者5とが関連付けられ、ラベル3と評価者2とが関連付けられ、ラベル4と評価者3とが関連付けられ、ラベル5と評価者1とが関連付けられている。
【0027】
続いて、仲介者12は、Garbled circuitの入力となるキーの入力を受け付けるGarbled circuitに付されているラベル1〜5をキーに付し、参加者11−1〜11−3に対して送付する。本実施形態では、ブロックg1〜g3のGarbled circuitがキーの入力を受け付ける。仲介者12は、ブロックg1が受けつけるキーにはラベル1を付し、ブロックg2が受け付けるキーにはラベル5を付し、ブロックg3が受け付けるキーにはラベル2を付す。
【0028】
また、本実施形態では、入力となるキーとしては、参加者11−1〜11−3が投票する結果である。ブロックg1〜g3が受け付けるキーの値は、賛成の値「1」と反対の値「0」との2通りの値が考えられる。
【0029】
よって、仲介者12は、参加者11−1に対して、賛成の値「1」が含まれ、ラベル1が付されたキー「V[1]=1」と、反対の値「0」が含まれ、ラベル1が付されたキー「V[1]=0」とを作成し送付する。また、仲介者12は、参加者11−2に対して、賛成の値「1」が含まれ、ラベル5が付されたキー「V[2]=1」と、反対の値「0」が含まれ、ラベル5が付されたキー「V[2]=0」とを作成し送付する。また、仲介者12は、参加者11−3に対して、賛成の値「1」が含まれ、ラベル3が付されたキー「V[3]=1」と、反対の値「0」が含まれ、ラベル3が付されたキー「V[3]=0」とを作成し送付する。
【0030】
なお、キーは乱数により生成されるため、キーを見ただけではキーに含まれる値を知ることができない。そのため、参加者11−1〜11−3が賛成の値が含まれたキーと反対の値が含まれたキーとを区別できるようにして、仲介者12はキーを送信する。
【0031】
図4は、本実施形態において、仲介者2がGarbled circuitのキーを作成した状態の計算システムの構成を示した図である。図示する例では、仲介者2は、参加者11−1〜11−3に送付するキーを計8個生成している。仲介者2は、このキーを参加者11−1〜11−3に送付する。また、制御装置4は、ラベル1〜5と評価者13−1〜13−5とを関連付けたあて先リストを記憶している。
【0032】
次に、本実施形態において、参加者11−1〜11−3が行う投票方法について説明する。本実施形態では、参加者11−1〜11−3は事前準備で仲介者12から送信されたキーを用いて投票を行う。例えば、参加者11−1は、賛成の場合、賛成の値が含まれたキー「V[1]=1」を制御装置14に送信し、反対の場合、反対の値が含まれたキー「V[1]=0」を制御装置14に送信する。参加者11−1と同様に、他の参加者11−2〜11−3も投票を行う。投票を受け付けた制御装置14は、記憶部23に受信したキーを記憶する。なお、先述したとおり、キーを見ただけではキーに含まれている情報が分からないため、制御装置14は、参加者11−1〜11−3が投票した値を知ることはできない。
【0033】
本実施形態では、参加者11−1は、値「1」が含まれており、ラベル1が付されているキー「V[1]=1」を制御装置14に送付する。また、参加者11−2は、値「1」が含まれており、ラベル5が付されているキー「V[2]=1」を制御装置14に送付する。また、参加者11−3は、値「1」が含まれており、ラベル2が付されているキー「V[3]=1」を制御装置14に送付する。
【0034】
仲介者12による事前準備と、参加者11−1〜11−3による投票が終了後、仲介者12は、ブロックfを割り当てた評価者13−2に対して、プログラムの実行を開始するためのキーを送信する。プログラムの実行を開始するためのキーを受け取った評価者13−2は、自身に送信されたGarbled circuit(f)を復号し、Garbled circuit(f)の出力であるキー「j=1,s=0」とラベル1とを得る。続いて、評価者13−2は、キー「j=1,s=0」をラベル1に対して送信する。
【0035】
なお、本実施形態では、sは賛成票の数を足し合わせた数である。また、jはプログラムの処理において、何人目の参加者の投票の処理を行っているかを示す数である。また、resultは、プログラム最終的な出力結果であり、3人の参加者のうち、2人以上が賛成であれば1(可決)であり、それ以外であれば0(否決)である。
【0036】
制御装置14は、評価者13−2がラベル1に対して送信したキー「j=1,s=0」を受信する。続いて、制御装置14の制御部23は、記憶部24に記憶している宛先リストに基づいて、ラベル1に関連付けられている評価者13−4を特定する。続いて、制御装置4の制御部23は、記憶部24が記憶しているキーのうち、ラベル1が付されているキー「V[1]=1」を特定する。続いて、制御装置14の制御部23は送信部21を介して、特定したキー「V[1]=1」と、評価者13−2がラベル1に対して送信したキー「j=1,s=0」とを評価者13−4に送信する。
【0037】
図5は、本実施形態において、評価者13−2がGarbled circuit(f)の処理を実行した状態の計算システムの構成を示した図である。図示する例では、評価者13−2は、Garbled circuit(f)の出力であるキー「j=1,s=0」をラベル1宛に送信している。また、制御装置14は、評価者13−2がラベル1宛に送信したキー「j=1,s=0」の送信先である評価者13−4を特定し、キー「j=1,s=0」と、キー「V[1]=1」とを評価者13−4に送信している。
【0038】
続いて、キー「j=1,s=0」と、キー「V[1]=1」とを受信した評価者13−4は、自身に送信されたGarbled circuit(g1)を復号し、キー「j=1,s=0」とキー「V[1]=1」とに基づいてGarbled circuit(g1)の出力であるキー「j=2,s=1」とラベル5とを得る。続いて、評価者13−4は、キー「j=2,s=1」をラベル5に対して送信する。
【0039】
制御装置14は、評価者13−4がラベル5に対して送信したキー「j=2,s=1」を受信する。続いて、制御装置14の制御部23は、記憶部24に記憶している宛先リストに基づいて、ラベル5に関連付けられている評価者13−1を特定する。続いて、制御装置4の制御部23は、記憶部24が記憶しているキーのうち、ラベル5が付されているキー「V[2]=1」を特定する。続いて、制御装置14の制御部23は送信部21を介して、特定したキー「V[2]=1」と、評価者13−4がラベル5に対して送信したキー「j=2,s=1」とを評価者13−1に送信する。
【0040】
図6は、本実施形態において、評価者13−4がGarbled circuit(g1)の処理を実行した状態の計算システムの構成を示した図である。図示する例では、評価者13−4は、Garbled circuit(g1)の出力であるキー「j=2,s=1」をラベル5宛に送信している。また、制御装置14は、評価者13−4がラベル5宛に送信したキー「j=2,s=1」の送信先である評価者13−1を特定し、キー「j=2,s=1」と、キー「V[2]=1」とを評価者13−1に送信している。
【0041】
続いて、キー「j=2,s=1」と、キー「V[2]=1」とを受信した評価者13−1は、自身に送信されたGarbled circuit(g2)を復号し、キー「j=2,s=1」とキー「V[2]=1」とに基づいてGarbled circuit(g2)の出力であるキー「j=3,s=2」とラベル4とを得る。続いて、評価者13−1は、キー「j=3,s=2」をラベル4に対して送信する。
【0042】
制御装置14は、評価者13−1がラベル4に対して送信したキー「j=3,s=2」を受信する。続いて、制御装置14の制御部23は、記憶部24に記憶している宛先リストに基づいて、ラベル4に関連付けられている評価者13−3を特定する。続いて、制御装置4の制御部23は、記憶部24が記憶しているキーのうち、ラベル3が付されているキーを検索するが、本実施形態ではラベル3が付されているキーは無い。続いて、ラベル3が付されているキーは無いため、制御装置14の制御部23は送信部21を介して、評価者13−1がラベル4に対して送信したキー「j=3,s=2」のみを評価者13−3に送信する。
【0043】
図7は、本実施形態において、評価者13−1がGarbled circuit(g2)の処理を実行した状態の計算システムの構成を示した図である。図示する例では、評価者13−1は、Garbled circuit(g2)の出力であるキー「j=3,s=2」をラベル4宛に送信している。また、制御装置14は、評価者13−1がラベル4宛に送信したキー「j=3,s=2」の送信先である評価者13−3を特定し、キー「j=3,s=2」を評価者13−3に送信している。
【0044】
続いて、キー「j=3,s=2」を受信した評価者13−3は、自身に送信されたGarbled circuit(h)を復号し、キー「j=3,s=2」に基づいてGarbled circuit(h)の出力であるキー「Result=1」を得る。また、評価者13−3は、参加者11−1〜11−3に対して「Result=1」を送信する。
【0045】
参加者11−1〜11−3は、評価者13−3が送信した「Result=1」を受信する。これにより、参加者11−1〜11−3は、投票結果を知ることができる。
【0046】
図8は、本実施形態において、評価者13−3がGarbled circuit(h)の処理を実行した状態の計算システムの構成を示した図である。図示する例では、評価者13−3は、Garbled circuit(h)の出力であるキー「Result=1」を参加者11−1〜11−3宛に送信している。
【0047】
上述したとおり、本実施形態によれば、プログラムを複数に分割し、分割したプログラムを論理回路として表し、その論理回路を暗号化する(Garbled circuit)。また、複数の暗号化した論理回路の実行順を制御する制御装置14を設けている。
【0048】
制御装置14は、ラベル1〜5と評価者13−1〜13−5とを関連付けた宛先リストを記憶しており、評価者13−1〜13−5から送信されたラベル1〜5と、次に実行すべきプログラムの入力キーとを受信し、受信したラベル1〜5と宛先リストとに基づいて受信した入力キーを評価者13−1〜13−5に送信する。これにより、途中の計算結果の状態に応じてラベル1〜5が制御装置14に送信され、制御装置14は、ラベル1〜5に応じて次に実行するGarbled circuitを指定する。
【0049】
すなわち、制御装置14が途中の計算結果に応じて次に実行するGarbled circuitを指定する。これにより、途中の計算結果の状態に応じて選択的に処理を行うことができる。よって、一般的なプログラムのsecure computationを行う際に、より効率的に計算を行うことができる。
【0050】
なお、上述した実施形態における制御装置全体あるいはその一部は、これらの機能実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0051】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0052】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0053】
【図1】本発明の一実施形態における計算システムの構成を示した図である。
【図2】本実施形態における制御装置の構成を示した構成図である。
【図3】本実施形態におけるsecure computationを行うプログラムとControl flow graphとを示した図である。
【図4】本実施形態における計算システムの構成を示した構成図である。
【図5】本実施形態における計算システムの構成を示した構成図である。
【図6】本実施形態における計算システムの構成を示した構成図である。
【図7】本実施形態における計算システムの構成を示した構成図である。
【図8】本実施形態における計算システムの構成を示した構成図である。
【符号の説明】
【0054】
11−1〜11−3・・・参加者、12・・・仲介者、13−1〜13−5・・・評価者、14・・・制御装置、21・・・送信部、22・・・受信部、23・・・制御部、24・・・記憶部

【特許請求の範囲】
【請求項1】
分割されたプログラムを複数の端末装置で分担して実行する計算システムの制御装置において、
前記プログラムの実行結果として得られる宛先ラベルと前記端末装置を特定する情報とを関連付ける転送先情報を記憶する記憶部と、
あるプログラムを実行した前記端末装置から、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを受信する受信部と、
前記受信部が受信した前記宛先ラベルに基づいて前記転送先情報から転送先の端末装置を特定し、前記受信部が受信した前記入力キーを前記転送先の端末装置へ送信する送信部と、
を備えたことを特徴とする制御装置。
【請求項2】
分割されたプログラムを複数の端末装置で分担して実行する計算システムにおいて、
請求項1に記載の制御装置と、
前記制御装置より送信された入力キーを受信する端末受信部と、受信した前記入力キーに基づいて前記分割されたプログラムを実行し、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを取得する制御部と、前記制御部が取得した前記プログラムの入力キーと前記宛先ラベルとを送信する端末送信部と、を備えた端末装置と、
を備えたことを特徴とする計算システム。
【請求項3】
分割されたプログラムを複数の端末装置で分担して実行する計算システムの制御をコンピュータに実行させるための制御プログラムにおいて、
前記分割されたプログラムの実行結果として得られる宛先ラベルと前記端末装置を特定する情報とを関連付ける転送先情報を記憶する記憶部と、
あるプログラムを実行した前記端末装置から、次に実行すべきプログラムの入力キーと前記入力キーの転送先に対応する宛先ラベルとを受信する受信部と、
前記受信部が受信した前記宛先ラベルに基づいて前記転送先情報から転送先の端末装置を特定し、前記受信部が受信した前記入力キーを前記転送先の端末装置へ送信する送信部と、
としてコンピュータを実行させるための制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−245209(P2009−245209A)
【公開日】平成21年10月22日(2009.10.22)
【国際特許分類】
【出願番号】特願2008−91592(P2008−91592)
【出願日】平成20年3月31日(2008.3.31)
【出願人】(000208891)KDDI株式会社 (2,700)
【出願人】(508098291)
【Fターム(参考)】