JP2014090235A - 情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム - Google Patents
情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム Download PDFInfo
- Publication number
- JP2014090235A JP2014090235A JP2012237622A JP2012237622A JP2014090235A JP 2014090235 A JP2014090235 A JP 2014090235A JP 2012237622 A JP2012237622 A JP 2012237622A JP 2012237622 A JP2012237622 A JP 2012237622A JP 2014090235 A JP2014090235 A JP 2014090235A
- Authority
- JP
- Japan
- Prior art keywords
- value
- information processing
- function
- values
- processing apparatus
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
Abstract
【課題】異なる値に対して同一の結果が得られる関数を用いることで、高い安全性を満たすと共に高効率化を達成するビットコミットメントプロトコルが実現可能な情報処理装置を提供する。
【解決手段】情報処理装置100は異なる複数の値に対して同じ結果を算出できる関数F及び、前記値並びに情報処理装置200へコミットする値との関係性Rを予め情報処理装置200との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値を生成するビットコミットメント関数処理部110を備え、ビットコミットメント関数処理部110は、前記関係性Rの適用により情報処理装置200へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値から前記コミットする値に対応するそれぞれ異なる値を選択して通信部120より情報処理装置200へ送信する。
【選択図】図6
【解決手段】情報処理装置100は異なる複数の値に対して同じ結果を算出できる関数F及び、前記値並びに情報処理装置200へコミットする値との関係性Rを予め情報処理装置200との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値を生成するビットコミットメント関数処理部110を備え、ビットコミットメント関数処理部110は、前記関係性Rの適用により情報処理装置200へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値から前記コミットする値に対応するそれぞれ異なる値を選択して通信部120より情報処理装置200へ送信する。
【選択図】図6
Description
本開示は、情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システムに関する。
ビットコミットメントプロトコルは、暗号分野の様々な場所で利用されており、様々な問題に基づく効率的な実現方法の提案は非常に有益である。ビットコミットメントの目的は、現在自分が所持しているビット・データの値を知らせることなく、そのビット・データを所持していることを検証者に対して確約すること、及び確約後には、検証者はそのビット・データがそのとき確約されたものであることを検証可能にすることである。
ビットコミットメントプロトコルの安全性は、基にする数学的な問題の困難性に依存する。従って、様々な問題に基づく構成法を提案することで,ダイバーシティが形成できる。ビットコミットメントプロトコルの構成法の既存の結果として,一般の一方向性関数(one−way function)にもとづくビットコミットメントプロトコルの構成法が知られている(例えば、非特許文献1、2等参照)。
O. Goldreich and L.A. Levin, A Hard-Core Predicate for all One-WayFunctions, STOC 1989
Iftach Haitner, Minh-Huyen Nguyen, Shien Jin Ong, Omer Reingold,Salil Vadhan: Statistically Hiding Commitments and Statistical Zero-KnowledgeArguments from Any One-Way Function, SIAM Journal on Computing 2009
非特許文献1、2等で開示されているような、既存のビットコミットメントプロトコルは、最低限の安全性(computationally hiding)しか満たせなかったり、良い効率は望めなかったりしていた。このような事情を鑑みれば、より高い安全性を実現しつつ、高効率なビットコミットメントプロトコルが求められていた。
そこで、本開示は、異なる値に対して同一の結果が得られる関数を用いることで、高い安全性を満たすと共に高効率化を達成するビットコミットメントプロトコルが実現可能な、新規かつ改良された情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システムを提供することにある。
本開示によれば、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する関数処理部を備え、前記関数処理部は、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記他の装置へ送信する、情報処理装置が提供される。
また本開示によれば、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記他の装置から送信された前記値に対して前記関数Fを適用する関数処理部を備え、前記関数処理部は、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミット段階と、前記他の装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理装置が提供される。
また本開示によれば、第1の情報処理装置及び第2の情報処理装置を備え、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに前記第1の情報処理装置が前記第2の情報処理装置へコミットする値との関係性Rを前記第1の情報処理装置及び前記第2の情報処理装置の間で共有させ、前記第1の情報処理装置は、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する第1の関数処理部を備え、前記第1の関数処理部は、前記関係性Rの適用により前記第2の情報処理装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記第2の情報処理装置へ送信し、前記第2の情報処理装置は、前記第1の情報処理装置から送信された前記値に対して前記関数Fを適用する第2の関数処理部を備え、前記第2の関数処理部は、前記関係性Rの適用により前記第1の情報処理装置がコミットした値に対応する第1の値を受信するコミット段階と、前記第1の情報処理装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理システムが提供される。
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理システムが提供される。
また本開示によれば、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、前記コミットステップでコミットした値を公開する公開ステップと、を備え、前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、情報処理方法が提供される。
また本開示によれば、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、を備える、情報処理方法が提供される。
また本開示によれば、コンピュータに、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、前記コミットステップでコミットした値を公開する公開ステップと、を実行させ、前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、コンピュータプログラムが提供される。
また本開示によれば、コンピュータに、異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、実行させる、コンピュータプログラムが提供される。
以上説明したように本開示によれば、異なる値に対して同一の結果が得られる関数を用いることで、高い安全性を満たすと共に高効率化を達成するビットコミットメントプロトコルが実現可能な、新規かつ改良された情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システムを提供することができる。
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
<1.公開鍵認証方式及び秘密鍵の説明>
<2.既存のビットコミットメントプロトコルの説明>
<3.本開示の一実施形態>
[システム構成例]
[システム動作例]
[変形例]
<4.ハードウェア構成例>
<5.まとめ>
<1.公開鍵認証方式及び秘密鍵の説明>
<2.既存のビットコミットメントプロトコルの説明>
<3.本開示の一実施形態>
[システム構成例]
[システム動作例]
[変形例]
<4.ハードウェア構成例>
<5.まとめ>
<1.公開鍵認証方式及び秘密鍵の説明>
本開示の好適な実施の形態について説明する前に、まず、公開鍵認証方式及び電子署名方式の概要を説明し、続いて、後述する本開示の各実施形態で用いられる秘密鍵について説明する。
本開示の好適な実施の形態について説明する前に、まず、公開鍵認証方式及び電子署名方式の概要を説明し、続いて、後述する本開示の各実施形態で用いられる秘密鍵について説明する。
公開鍵認証方式とは、ある人(証明者)が、公開鍵pk及び秘密鍵skを利用して、他の人(検証者)に本人であることを納得させるための認証方式である。例えば、証明者Aの公開鍵pkAは、検証者に公開される。一方、証明者Aの秘密鍵skAは、証明者により秘密に管理される。公開鍵認証方式では、公開鍵pkAに対応する秘密鍵skAを知る者が証明者A本人であるとみなされる。
証明者Aが検証者Bに対して本人であることを証明しようとする場合、証明者Aは、検証者Bと対話プロトコルを実行して、自身が公開鍵pkAに対応する秘密鍵skAを知っていることを証明すればよい。そして、対話プロトコルにより証明者Aが秘密鍵skAを知っていることが検証者Bにより証明された場合、証明者Aの正当性(本人であること)が証明される。
なお、公開鍵認証方式の安全性を確保するには、次に示す2つの条件が求められる。
1つ目の条件は、対話プロトコルを実行した際に秘密鍵skを持たない偽証者により偽証が成立してしまう確率を限りなく小さくすることである。この1つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性を有する対話プロトコルにおいては、秘密鍵skを持たない偽証者により、無視できない確率で偽証が成立することはないと言い換えられる。2つ目の条件は、対話プロトコルを実行したとしても、証明者Aが有する秘密鍵skAの情報が検証者Bに一切漏れることがないようにすることである。この2つ目の条件が成り立つことを「零知識性」と呼ぶ。
上記の健全性と零知識性を有する対話プロトコルを利用することにより、公開鍵認証方式の安全性が確保される。
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、対話プロトコルにおいて、証明者は、証明者アルゴリズムPを利用して、秘密鍵skを保有していることを検証者に証明する。
一方、検証者は、検証者アルゴリズムVを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という2つのエンティティ、及び、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVという3つのアルゴリズムにより構成される。
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、証明者アルゴリズムPを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムVを実行する主体は、情報処理装置である。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、証明者により利用される。そして、鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、秘密に管理される秘密鍵skは、検証者に対して公開鍵pkに対応する秘密鍵skを保有していることを証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
鍵生成アルゴリズムGenは、証明者により利用される。そして、鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、秘密に管理される秘密鍵skは、検証者に対して公開鍵pkに対応する秘密鍵skを保有していることを証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
(証明者アルゴリズムP)
証明者アルゴリズムPは、証明者により利用される。そして、証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを保有していることを証明するアルゴリズムである。証明者アルゴリズムPは、証明者の秘密鍵skと公開鍵pkを入力とし、検証者との対話プロトコルを実行するアルゴリズムとして定義される。
証明者アルゴリズムPは、証明者により利用される。そして、証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを保有していることを証明するアルゴリズムである。証明者アルゴリズムPは、証明者の秘密鍵skと公開鍵pkを入力とし、検証者との対話プロトコルを実行するアルゴリズムとして定義される。
(検証者アルゴリズムV)
検証者アルゴリズムVは、検証者により利用される。そして、検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、証明者の公開鍵pkを入力とし、証明者との間で対話プロトコルを実行した後、0又は1(1bit)を出力するアルゴリズムとして定義される。なお、出力0の場合には証明者が不正なものであり、出力1の場合には証明者が正当なものであるとする。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
検証者アルゴリズムVは、検証者により利用される。そして、検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、証明者の公開鍵pkを入力とし、証明者との間で対話プロトコルを実行した後、0又は1(1bit)を出力するアルゴリズムとして定義される。なお、出力0の場合には証明者が不正なものであり、出力1の場合には証明者が正当なものであるとする。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
上記の通り、公開鍵認証方式は、安全性を確保するため、健全性と零知識性という2つの条件を満たすことが求められる。しかし、証明者が秘密鍵skを保有していることを証明者に証明させるためには、証明者が秘密鍵skに依存した手続きを実行し、その結果を検証者に通知して、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵skに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、この手続きの結果を検証者に通知しても、秘密鍵skの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVが設計されることが必要になる。
次に、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
(モデル)
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
署名者は、鍵生成アルゴリズムGenを利用して署名者固有の署名鍵skと検証鍵pkとの組を生成する。また、署名者は、署名生成アルゴリズムSigを利用して文書Mに付与する電子署名σを生成する。つまり、署名者は、文書Mに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムVerを利用して文書Mに付与された電子署名σを検証する。つまり、検証者は、文書Mの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、署名生成アルゴリズムSigを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムVerを実行する主体は、情報処理装置である。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
(署名生成アルゴリズムSig)
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
(署名検証アルゴリズムVer)
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
(nパスの公開鍵認証方式)
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵pkに対応する秘密鍵skを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という2つの条件を満たす必要がある。そのため、対話プロトコルの中では、図3に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらn回の情報交換を行う。
nパスの公開鍵認証方式の場合、証明者アルゴリズムPを用いて証明者により処理(工程#1)が実行され、情報T1が検証者に送信される。次いで、検証者アルゴリズムVを用いて検証者により処理(工程#2)が実行され、情報T2が証明者に送信される。さらに、k=3〜nについて処理の実行及び情報Tkの送信が順次行われ、最後に処理(工程#n+1)が実行される。このように、情報がn回送受信される方式のことを「nパス」の公開鍵認証方式と呼ぶ。
以上、nパスの公開鍵認証方式について説明した。
上述した、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVの設計の際の要件を満たすものとして、例えば特開2012−98690号公報等で開示されている、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式がある。上記文献で用いられる関数は、m本のn変数の2次多項式(m、nはいずれも2以上の整数)で構成される関数であるが、この関数を用いることで、上記文献による公開鍵認証方式は1つの公開鍵から複数の秘密鍵を生成することができる。上記文献で用いられる、m本のn変数多次多項式で構成される関数を、MQ(Multivariate Quadratic)関数と称する。
まず、上記文献による公開鍵認証方式の鍵生成アルゴリズムを説明する。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、下記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
また、2次多項式の組(f1(x),…,fm(x))は、下記の式(7)のように表現することができる。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
この表現を用いると、多変数多項式Fは、下記の式(8)及び式(9)のように表現することができる。この表現が成り立つことは、下記の式(10)から容易に確認することができる。
このようにF(x+y)をxに依存する第1の部分と、yに依存する第2の部分と、x及びyの両方に依存する第3の部分とに分けたとき、第3の部分に対応する項G(x,y)は、x及びyについて双線形になる。以下、項G(x,y)を双線形項と呼ぶ場合がある。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
例えば、ベクトルt0∈Kn、e0∈Kmを用いて、多変数多項式F(x+r)のマスクに利用する多変数多項式F1(x)をF1(x)=G(x,t0)+e0と表現する。この場合、多変数多項式F(x+r0)とF1(x)との和は、下記の式(11)のように表現される。ここで、t1=r0+t0、e1=F(r0)+e0とおけば、多変数多項式F2(x)=F(x+r0)+F1(x)は、ベクトルt1∈Kn、e1∈Kmにより表現することができる。そのため、F1(x)=G(x,t0)+e0に設定すれば、Kn上のベクトル及びKm上のベクトルを用いてF1及びF2を表現できるようになり、通信に必要なデータサイズの少ない効率的なアルゴリズムを実現することが可能になる。
なお、F2(或いはF1)からr0に関する情報が一切漏れることはない。例えば、e1及びt1(或いはe0及びt0)を与えられても、e0及びt0(或いはe1及びt1)を知らない限り、r0の情報を一切知ることはできない。従って、零知識性が担保される。
ここでMQ関数は、m=nの場合に、F(x1)=F(x2)となるx1、x2を求めることができる。具体的な導出方法は以下の通りである。
n=mとした際に、MQ関数に対して、Δ∈GF(2n)を与えられた時に、x(s.t. F(x)=F(x+Δ))を出力するというアルゴリズムが存在する。なぜなら、以下の関係が成り立つからである。
F(x)=F(x+Δ)⇔F(Δ)+G(x,Δ)=0
F(x)=F(x+Δ)⇔F(Δ)+G(x,Δ)=0
上述の関係は、x=(x1,…,xn),xi=GF(2)に関する一次の連立方程式となる。変数xi(i=1,2,・・・,n)の個数と、式の本数mとが一致しているので、上記の連立一次方程式から解xを導出することができる。
また、n=cm(cは2以上の整数)とした際に、MQ関数に対して、Δ1,・・・,Δc∈GF(2n)を与えられた時に、x(s.t. F(x)=F(x+Δ1)=・・・=F(x+Δc))を出力するというアルゴリズムが存在する。なぜなら、以下の関係が成り立つからである。
F(x)=F(x+Δ1)⇔F(Δ1)+G(x,Δ1)=0
・・・
F(x)=F(x+Δc)⇔F(Δc)+G(x,Δc)=0
F(x)=F(x+Δ1)⇔F(Δ1)+G(x,Δ1)=0
・・・
F(x)=F(x+Δc)⇔F(Δc)+G(x,Δc)=0
上述のそれぞれの方程式は、x=(x1,…,xn),xi=GF(2)に関する一次の連立方程式となる。上述のそれぞれの方程式を組み合わせると、変数xi(i=1,2,・・・,n)に対して、式の本数がcmの連立一次方程式となる。そのため、n=mの場合と同様に、上記の連立一次方程式から解xを導出することができる。
このように、1つの公開鍵から複数の秘密鍵を生成することができる公開鍵認証方式で用いられるMQ関数を用いることで、高い安全性を満たすと共に高効率化を達成するビットコミットメントプロトコルが実現可能となる。以下では、まず既存のビットコミットメントプロトコルの例及び既存のビットコミットメントプロトコルの問題点を説明し、その後に本開示の一実施形態にかかるビットコミットメントプロトコルについて詳細に説明する。
<2.既存のビットコミットメントプロトコルの説明>
まず、既存のビットコミットメントプロトコルについて説明する。図4は、ビットコミットメントプロトコルのフローを示す流れ図である。以下、図4を用いて既存のビットコミットメントプロトコルについて説明する。
まず、既存のビットコミットメントプロトコルについて説明する。図4は、ビットコミットメントプロトコルのフローを示す流れ図である。以下、図4を用いて既存のビットコミットメントプロトコルについて説明する。
ビットコミットメントプロトコルは、図4に示したように、送信者と受信者との間で実行されるプロトコルである。まず送信者は、ビットb∈{0,1}を選択するとともに、乱数r∈{0,1}lを選択する。そして送信者は、ビットコミットメント関数hを用いて、c=h(b,r)を計算する。なおビットコミットメントプロトコルにおいて、ビットbと乱数rとからコミットメントcを生成する関数を、ビットコミットメント関数と呼ぶ。
送信者は、コミットメントcを生成すると、生成したコミットメントcを受信者に送信する。このコミットメントcを送信者から受信者に送信する段階をコミットメントフェーズと呼ぶ。受信者は、送信者から送られてきたコミットメントcだけでは、送信者が選択したビットbが0と1のどちらであるかは分からない。
その後、送信者は、ビットb’及び値r’を受信者に送り、受信者は、ビットコミットメント関数hを用いて、c=h(b’,r’)となるかを確認する。そして受信者は、c=h(b’,r’)が成り立つ場合に限り、送信者から送られてきたビットb’を出力する。このビットb’及び値r’を送信者から受信者に送信する段階をリビールフェーズと呼ぶ。送信者は、コミットメントcの基になるビットb及び乱数rと違う値をリビールフェーズで受信者に送信すると、受信者はコミットメントcの基になるビットb及び乱数rと違う値がリビールフェーズで送られてきたことを検証することが出来る。
上述してきたように、ビットコミットメントの目的は、現在自分が所持しているビット・データの値を知らせることなく、そのビット・データを所持していることを検証者に対して確約すること、及び確約後には、検証者はそのビット・データがそのとき確約されたものであることを検証可能にすることである。そして、ビットコミットメントプロトコルを用いることで様々なアプリケーションが実現できる。
例えば、ビットコミットメントプロトコルを、他の暗号方式の構成要素の一部として利用することができる。例えば、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式ではストリングコミットメントスキームを構成要素の一部として利用しているが、そのストリングコミットメントスキームを実現するための構成要素としても利用することができる。
その他、ビットコミットメントプロトコルを用いてネットワーク上でのじゃんけんを実現することができる。じゃんけんに後出しは厳禁である。しかしネットワーク上でのじゃんけんは、ユーザー同士がお互いの手を見られない状況にあることや、パケットの遅延等が存在するため、後出しの検証は難しい。しかし、ビットコミットメントプロトコルでは、送信者は先に自分の手を送るが、その手は受信者には分からず、また、後で変更することもできないので、両者共お互いの手を知らないまま安全に自分の手を決めることができる。
ビットコミットメントプロトコルに求められる安全性には、hidingとbindingの2つがある。hidingとは、コミットメントcからビットbが特定できないことを言う。hidingにはstatistically hidingとcomputationally hidingの2種類が存在し、statistically hidingの方がより高い安全性を示している。
一方、bindingとは、コミットメントフェーズにて送ったビットbとは異なるビットを受信者に出力させることができないことを言う。具体的には、c=h(b,r)=h(b’,r’)という(b’,r’) s.t.b’≠bを作成できない性質を言う。ビットコミットメントプロトコルは、このhidingとbindingの2つの安全性を満たさなければならない。
しかし、従来のビットコミットメントプロトコルには、高度な安全性が満たせなかったり、高度な安全性を満たすために効率が低下したりするものがあった。
図5は、既存のビットコミットメントプロトコルのフローを示す流れ図である。図5に示したのは、一方向性関数に基づいて構成されたビットコミットメントプロトコルのフローであり、非特許文献1、2などで開示されているものである。以下、図5を用いて既存のビットコミットメントプロトコルについて説明する。
まず図5に示したフローにおいて、
g(x,r):=f(x)||r
と定義する。また関数fは、送信者と受信者との間で共有させておく。送信者は、図4に示したフローと同様に、ビットb∈{0,1}を選択するとともに、乱数r∈{0,1}lを選択する。そして送信者は、コミットメントc=b+<x,r>を計算する。なお、<x,r>はxとrとの内積を計算することを意味し、“+”は排他的論理和を意味する。
g(x,r):=f(x)||r
と定義する。また関数fは、送信者と受信者との間で共有させておく。送信者は、図4に示したフローと同様に、ビットb∈{0,1}を選択するとともに、乱数r∈{0,1}lを選択する。そして送信者は、コミットメントc=b+<x,r>を計算する。なお、<x,r>はxとrとの内積を計算することを意味し、“+”は排他的論理和を意味する。
送信者は、コミットメントcを計算すると、コミットメントフェーズでg(x,r)およびコミットメントcを受信者に送信する。そして送信者は、リビールフェーズで、値b’及びx’を送信する。受信者は、g(x,r)=g(x’,r)となるか確認し、g(x,r)=g(x’,r)であれば、続いてコミットメントcがc=b’+<x’,r>となるかを確認する。c=b’+<x’,r>であれば、受信者は、送信者からリビールフェーズで送信された値b’を出力する。
しかし、非特許文献1に記載されたビットコミットメントプロトコルでは、最低限の安全性(Computationally hiding)しか満たさず、さらに高度な安全性(Statistically hiding)は満たせていない。なお、Computationally hidingとは、ある程度以下の計算能力しか持たない受信者に対しては、コミットした値が何であるか知られることがないという性質をいう。また、Statistically hidingとは、どのような計算能力を持つ受信者に対しても、コミットした値が何であるか知られることがないという性質をいう。
また非特許文献2に記載されたビットコミットメントプロトコルでは、Statistically hidingを達成することができるが、Statistically hidingを達成するために送信者と受信者との間で必要となる通信回数が増加して、効率が低下してしまうと言う問題が生じる。
そこで本開示の一実施形態では、上述したようなMQ関数特有の性質を利用して、効率を低下させること無くStatistically hidingを達成できるビットコミットメントプロトコルについて示す。
<3.本開示の一実施形態>
[システム構成例]
図6は、本開示の一実施形態に係る情報処理システム1の構成例を示す説明図である。以下、図6を用いて本開示の一実施形態に係る情報処理システム1の構成例について説明する。
[システム構成例]
図6は、本開示の一実施形態に係る情報処理システム1の構成例を示す説明図である。以下、図6を用いて本開示の一実施形態に係る情報処理システム1の構成例について説明する。
図6に示したように、本開示の一実施形態に係る情報処理システム1は、情報処理装置100、200を含んで構成される。ここで、情報処理装置100は、ビットコミットメントプロトコルにおける送信者側の装置であり、情報処理装置200は、同じくビットコミットメントプロトコルにおける受信者側の装置である。
情報処理装置100は、ビットコミットメント関数処理部110と、通信部120と、メモリ130と、を含んで構成される。また情報処理装置200は、ビットコミットメント関数処理部210と、通信部220と、メモリ230と、を含んで構成される。
まず、情報処理装置100の機能構成について説明する。ビットコミットメント関数処理部110は、ビットコミットメントプロトコルで使用する関数を用いた処理を実行する。具体的には後述するが、ビットコミットメント関数処理部110は、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用して、MQ関数を用いた処理を実行する。
通信部120は、ネットワークに対する通信処理を実行するものであり、本実施形態では、情報処理装置200との間の通信を実行する。通信部120が実行する通信処理は、有線による通信であっても無線による通信であってもよい。本実施形態では、通信部120は、ビットコミットメント関数処理部110による処理内容を情報処理装置200へ送信する。
メモリ130は、情報処理装置100における各種処理に用いられる情報を格納したり、各種処理時の一時的なワークメモリとして用いられたりする記録媒体である。
次に、情報処理装置200の機能構成について説明する。ビットコミットメント関数処理部210は、ビットコミットメントプロトコルで使用する関数を用いた処理を実行する。具体的には後述するが、ビットコミットメント関数処理部210は、MQ関数を用いて、情報処理装置100で生成されたコミットメントの検証を行なう。
通信部220は、ネットワークに対する通信処理を実行するものであり、本実施形態では、情報処理装置100との間の通信を実行する。通信部220が実行する通信処理は、有線による通信であっても無線による通信であってもよい。本実施形態では、通信部220は、ビットコミットメントプロトコルの実行に際して、情報処理装置100から送信された情報を受信し、受信した情報をビットコミットメント関数処理部210へ供給する。
メモリ230は、情報処理装置200における各種処理に用いられる情報を格納したり、各種処理時の一時的なワークメモリとして用いられたりする記録媒体である。
本開示の一実施形態に係る情報処理システム1は、情報処理装置100と情報処理装置200との間でビットコミットメントプロトコルを実行する。情報処理システム1で実行されるビットコミットメントプロトコルは、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用したものであり、ある関係性を用いて、x1、x2に対して{0,1}を割り当て、コミットメントフェーズとリビールフェーズとでそれぞれの要素を情報処理装置100から情報処理装置200に送信することで実現されるものである。
以上、図6を用いて本開示の一実施形態に係る情報処理システム1の構成例について説明した。次に、本開示の一実施形態に係る情報処理システム1の動作例について説明する。
[システム動作例]
図7は、本開示の一実施形態に係る情報処理システム1の動作例を示す流れ図である。図7に示したのは、情報処理装置100と情報処理装置200との間で実行されるビットコミットメントプロトコルである。以下、図7を用いて本開示の一実施形態に係る情報処理システム1の動作例について説明する。
図7は、本開示の一実施形態に係る情報処理システム1の動作例を示す流れ図である。図7に示したのは、情報処理装置100と情報処理装置200との間で実行されるビットコミットメントプロトコルである。以下、図7を用いて本開示の一実施形態に係る情報処理システム1の動作例について説明する。
まず、ビットコミットメントプロトコルの実行に先立って、ある関係性Rを、情報処理装置100と情報処理装置200との間で共有させる。その関係性Rを以下のように定義する。
R:GF(2n)×GF(2n)→{0,1}
つまり関係性Rは、2つのnビットの値から1ビットの値が決定できるような関係性である。
R:GF(2n)×GF(2n)→{0,1}
つまり関係性Rは、2つのnビットの値から1ビットの値が決定できるような関係性である。
送信者側の情報処理装置100は、MQ関数Fを用いて、F(x1)=F(x2)となるx1、x2をビットコミットメント関数処理部110で生成する(ステップS101)。例えば、R(x1,x2)は、x1<x2であれば0を、そうでなければ1を出力するような関係性であるとする。ここでは、関係性Rとx1、x2との関係は、R(x1,x2)=1,R(x2,x1)=0とする。
続いて情報処理装置100は、コミットする値をビットコミットメント関数処理部110で決定する(ステップS102)。本実施形態では、情報処理装置100は、0をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x2、リビールフェーズで送信する情報xrevはxrev=x1とする。また情報処理装置100は、1をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x1、リビールフェーズで送信する情報xrevはxrev=x2とする。
続いて情報処理装置100は、コミットメントフェーズで情報xcomを情報処理装置200に送信し(ステップS103)、続いてリビールフェーズで情報xrevを情報処理装置200に送信する(ステップS104)。
情報処理装置200は、情報処理装置100からxcom及びxrevを受信すると、F(xcom)=F(xrev)となるか確認する(ステップS105)。F(xcom)=F(xrev)となれば、情報処理装置100がコミットした値が正しく情報処理装置200に送信されたと判断し、情報処理装置200は、R(xcom,xrev)を出力する。一方、F(xcom)=F(xrev)とならなければ、情報処理装置100がコミットした値ではない値が情報処理装置200に送信されたと判断し、情報処理装置200は値の出力を行わない。
本実施形態に係る情報処理システム1は、このように、予め所定の関係性を送信者側と受信者側とで共有させておき、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用することで、効率を低下させること無くビットコミットメントプロトコルの安全性を確保することができる。
このようにMQ関数を利用することで、安全性を高めたビットコミットメントプロトコルを実現することができるが、関係性Rをより複雑なものにすることで、さらにビットコミットメントプロトコルの安全性を高めることができる。
例えば上述した、x1<x2であれば0を、そうでなければ1を出力するような関係性R(x1,x2)は、nビットのx1またはx2が明らかになった時点で,その値が0n(4ビットであれば0000)に近いか、または1n(4ビットであれば1111)に近いかで,x1とx2の大小関係について、確率的に有意性を持った予測が可能となる。図8は、x1の値によるx1とx2の大小関係の予測について示す説明図である。図8に示したように、x1が0〜2n−1の間にある場合はx1<x2となる確率が高そうであるという予測ができ、x1が2n−1〜2nの間にある場合はx1>x2となる確率が高そうであるという予測ができる。もちろんこれは確率上の問題であり、必ずしも上述のような関係が成り立つというわけでは無いが、ビットコミットメントプロトコルの安全性を高めるには、そのような予測すら出来ないような関係性を規定することが、より望ましい。
そこで、以下においては、より複雑な関係性Rを規定することでビットコミットメントプロトコルの安全性を高めた例を説明する。
上述の関係性Rは、x1が明らかになった時点で,その値が固定された値である0nに近いか遠いかで、残りの値に関わらずR(x1,x2)の値がある程度予測できてしまう。従って、x1が明らかになったとしても、その値に依存した値に近いか遠いかでR(x1,x2)の値を決まるようにすることで予測を困難にする場合の例を説明する。
例えば、関係性R2(x1,x2)を以下のように規定することで、ビットコミットメントプロトコルにおけるhidingの安全性を高めることが出来る。
if (x1<10n−1) {
if (x1<x2<x1+10n−1){
output 1
} else {
output 0
}
} else {
if (x1+10n−1<x2<x1){
output 0
} else {
output 1
}
}
if (x1<x2<x1+10n−1){
output 1
} else {
output 0
}
} else {
if (x1+10n−1<x2<x1){
output 0
} else {
output 1
}
}
つまり関係性R2(x1,x2)は、nビットのx1,x2に対し、x1<10n−1(nが4であれば1000)であり、さらにx1<x2であり、かつx2<x1+10n−1であれば1、そうでなければ0であるとする。また関係性R(x1,x2)は、nビットのx1,x2に対し、x1≧10n−1であり、さらにx1+10n−1<x2であり、かつx2<x1であれば0、そうでなければ1であるとする。
図9は、この関係性R2(x1,x2)を視覚的に示す説明図である。例えば4ビットのx1,x2に対し、x1が“0110”である場合、x2が破線の矢印で示した場所にあれば1を出力し、そうでなければ0を出力するような関係性R2(x1,x2)が規定される。つまり、この関係性R2(x1,x2)を用いることと、x1に対してF(x1)=F(x2)を満たすx2が{0,1}n上でランダムに分布していると仮定することで、x1がどの値であろうとR2(x1,x2)の予測は非常に困難になり、ビットコミットメントプロトコルにおけるhidingの安全性を高めることになる。
このように、MQ関数の特性を生かしてビットコミットメントプロトコルを構成することで、送信者と受信者との間の通信回数が、コミットメントフェーズとリビールフェーズとでそれぞれ1回ずつとなっており、効率的なビットコミットメントプロトコルを実現できる。
また、MQ関数のパラメータn,mに対してn>mとしたとき,ある値y∈{0,1}mの逆元の数の期待値は2n−m以上となる。そのことから,nをmに対してある程度大きく設定しておくことで、受信者はリビールフェーズで送られる値を正しく予測できなくなり、安全性を確保できる。この安全性を満たすためのパラメータの設定としては,n≧2mとするような設定が考えられる。例えばこの安全性を満たすために、n及びmを、(n,m)=(160,80)や(256,128)のように設定しても良い。
また、関係性を適切に定義することで(例えば上述のような関係性R2のように定義することで)、statistically hidingを達成することができる。
[変形例]
このように、本開示の一実施形態に係る情報処理システム1は、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用することで、効率を低下させること無くビットコミットメントプロトコルの安全性を確保することができる。本開示の一実施形態に係る情報処理システム1は、このビットコミットメントプロトコルをストリングコミットメントプロトコルに拡張しても良い。
このように、本開示の一実施形態に係る情報処理システム1は、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用することで、効率を低下させること無くビットコミットメントプロトコルの安全性を確保することができる。本開示の一実施形態に係る情報処理システム1は、このビットコミットメントプロトコルをストリングコミットメントプロトコルに拡張しても良い。
ビットコミットメントプロトコルでは、送信者は{0,1}を相手に送信するが、ストリングコミットメントプロトコルでは、送信者は{0,1}以上の情報(例えば{0,1,2}や、zビットの{0,1}z)を相手に送信する。
上述したように、MQ関数は、n=cmであるm,nに対して、F(x1)=F(x2)=…=F(xc+1)となるようなx1,x2,…,xc+1が計算できる.そのx1,x2,…,xc+1に対し,ある関係性を用いてzビットの{0,1}zを割り当て,コミットメントフェーズ、リビールフェーズにてそれぞれの要素を送ることで、ストリングコミットメントプロトコルの実現が可能である。
図10は、本開示の一実施形態に係る情報処理システム1を用いたストリングコミットメントプロトコルのフローを示す流れ図である。以下、図10を用いて本開示の一実施形態に係る情報処理システム1を用いたストリングコミットメントプロトコルについて説明する。
まず、ストリングコミットメントプロトコルの実行に先立って、ある関係性R3を情報処理装置100と情報処理装置200との間で共有させる。その関係性R3を以下のように定義する。
R3:GF(2n)×GF(2n)×GF(2n)→{0,1,2}
つまり関係性R3は、3つのnビットの値から0,1,2のいずれかの値が決定できるような関係性である。
R3:GF(2n)×GF(2n)×GF(2n)→{0,1,2}
つまり関係性R3は、3つのnビットの値から0,1,2のいずれかの値が決定できるような関係性である。
送信者側の情報処理装置100は、MQ関数Fを用いて、F(x1)=F(x2)=F(x3)となるx1、x2、x3をビットコミットメント関数処理部110で生成する(ステップS111)。ここでは、関係性R3とx1、x2、x3との関係は、R3(x1,.,.)=0、R3(x2,.,.)=1,R3(x3,.,.)=2であるとする。
続いて情報処理装置100は、コミットする値をビットコミットメント関数処理部110で決定する(ステップS112)。この変形例では、情報処理装置100は、0をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x1、リビールフェーズで送信する情報xrevはxrev1=x2、xrev2=x3とする。また情報処理装置100は、1をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x2、リビールフェーズで送信する情報xrev1=x1、xrev2=x3とする。また情報処理装置100は、2をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x3、リビールフェーズで送信する情報xrev1=x1、xrev2=x2とする。
続いて情報処理装置100は、コミットメントフェーズで情報xcomを情報処理装置200に送信し(ステップS113)、続いてリビールフェーズで情報xrev1、xrev2を情報処理装置200に送信する(ステップS114)。
情報処理装置200は、情報処理装置100からxcom及びxrev1、xrev2を受信すると、F(xcom)=F(xrev1)=F(xrev2)となるか確認する(ステップS115)。F(xcom)=F(xrev1)=F(xrev2)となっていれば、情報処理装置100がコミットした値が正しく情報処理装置200に送信されたと判断し、情報処理装置200は、R3(xcom,xrev1,xrev2)を出力する。一方、F(xcom)=F(xrev1)=F(xrev2)とならなければ、情報処理装置100がコミットした値ではない値が情報処理装置200に送信されたと判断し、情報処理装置200は値の出力を行わない。
本実施形態に係る情報処理システム1は、このように、予め所定の関係性を送信者側と受信者側とで共有させておき、F(x1)=F(x2)=F(x3)となるx1、x2、x3を求めることができるというMQ関数の性質を利用することでストリングコミットメントプロトコルを実現できる。
上述したように、本開示の一実施形態に係る情報処理システム1で実行されるビットコミットメントプロトコルは、MQ関数のパラメータn,mに対して,n≧2mとすることで,statistically hidingを達成することができる。しかし、n≧2mの場合はF(x1)=F(x2)=F(x3)となるx1、x2、x3が計算できる。
例えば、F(x1)=F(x2)=F(x3)となるx1、x2、x3が計算できる場合に、図7に示したビットコミットメントプロトコルにおいて、情報処理装置100がコミットメントフェーズ時にx1を送信した場合、その後のリビールフェーズ時に、情報処理装置100が残りの2つのx2、x3のどちらかを自由に選べるようになる。その場合x2を選択する場合と、x3を選択する場合とで、受信者側の情報処理装置200の出力に違いが出てくる可能性がある。
そこで、n≧3mとした場合に、bindingを達成するための変形例を説明する。これは、n≧3mとした場合に、x1、x2以外の変数の生成法に制限を持たせることで、受信者側で有効な変数かを検証できるようにするものである。
具体的にはこのように制限を持たせる。n=cmの場合は、送信者はΔ2,Δ3,…,Δcをあらかじめプロトコル内で規定された定数d3,d4,…,dc+1を用いて、(Δ2,Δ3,…,Δc)=(d3,d4,…,dc+1)と設定し、F(x1)=…=F(xc+1)となるx1,…,xc+1を生成することにする。そして送信者は、リビールフェーズ時に、x1,x2の他にx3,…,xc+1を全て送信し、受信者はx3,…,xc+1が、x1(またはx2)に対して,それぞれ差分(d3,…,dc+1)を持つかを検証する。これにより、送信者側で必要以上の変数はx3,…,xc+1が利用できないように制限させる。
図11は、本開示の一実施形態に係る情報処理システム1の動作例を示す流れ図である。図11に示したのは、情報処理装置100と情報処理装置200との間で実行されるビットコミットメントプロトコルであり。図7に示したビットコミットメントプロトコルの変形例を示したものである。以下、図1を用いて本開示の一実施形態に係る情報処理システム1の動作例について説明する。
まず、ビットコミットメントプロトコルの実行に先立って、ある関係性Rを情報処理装置100と情報処理装置200との間で共有させる。その関係性Rを以下のように定義する。
R:GF(2n)×GF(2n)→{0,1}
つまり関係性Rは、2つのnビットの値から1ビットの値が決定できるような関係性である。
R:GF(2n)×GF(2n)→{0,1}
つまり関係性Rは、2つのnビットの値から1ビットの値が決定できるような関係性である。
さらにビットコミットメントプロトコルの実行に先立って、上述した差分(d3,…,dc+1)を情報処理装置100と情報処理装置200との間で共有させる。
送信者側の情報処理装置100は、MQ関数Fを用いて、F(x1)=…=F(xc+1)となり、かつx3=x1+d3,…,xc+1=x1+dc+1となるx1,…,xc+1をビットコミットメント関数処理部110で生成する(ステップS121)。
続いて情報処理装置100は、コミットする値をビットコミットメント関数処理部110で決定する(ステップS122)。この変形例では、図7に示したビットコミットメントプロトコルと同じく、情報処理装置100は、0をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x2、リビールフェーズで送信する情報xrevはxrev=x1とする。また情報処理装置100は、1をコミットする場合は、コミットメントフェーズで送信する情報xcomはxcom=x1、リビールフェーズで送信する情報xrevはxrev=x2とする。
続いて情報処理装置100は、コミットメントフェーズで情報xcomを情報処理装置200に送信し(ステップS123)、続いてリビールフェーズで情報xrev及び上記ステップS121で生成した値の残りであるx3,…,xc+1を情報処理装置200に送信する(ステップS124)。
情報処理装置200は、情報処理装置100からxcom、xrev及びx3,…,xc+1を受信すると、ビットコミットメント関数処理部210にて、(xcom+d3=x3,…,xcom+dc+1=xc+1)及び(xrev+d3=x3,…,xrev+dc+1=xc+1)となるかを確認すると共に、F(xcom)=F(xrev)となるか確認する(ステップS125)。上記の条件をすべて満たせば、情報処理装置100がコミットした値が正しく情報処理装置200に送信されたと判断し、情報処理装置200は、R(xcom,xrev)を出力する。一方、上記の条件をすべて満たしていなければ、情報処理装置100がコミットした値ではない値が情報処理装置200に送信されたと判断し、情報処理装置200は値の出力を行わない。
このように、送信者側の情報処理装置100で生成するx1、x2以外の変数の生成法に制限を持たせることで、受信者側の情報処理装置200で有効な変数かを検証でき、安全性が高く、かつ効率も良いビットコミットメントプロトコルを実現することが出来る。
<4.ハードウェア構成例>
上記の各アルゴリズムは、例えば、図12に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図12に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
上記の各アルゴリズムは、例えば、図12に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図12に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
図12に示すように、このハードウェアは、主に、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、を有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926と、を有する。但し、上記のCPUは、Central Processing Unitの略である。また、上記のROMは、Read Only Memoryの略である。そして、上記のRAMは、Random Access Memoryの略である。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ(以下、リモコン)が用いられることもある。
出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。そして、上記のPDPは、Plasma DisplayPanelの略である。さらに、上記のELDは、Electro−Luminescence Displayの略である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、Hard Disk Driveの略である。
ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu−rayメディア、HD DVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、Integrated Circuitの略である。
接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS−232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。そして、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
<5.まとめ>
以上説明したように本開示の一実施形態に係る情報処理システム1によれば、予め所定の関係性を送信者側と受信者側とで共有させておき、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用したビットコミットメントプロトコルを実行することができる。本開示の一実施形態に係る情報処理システム1は、送信者側の情報処理装置100と、受信者側の情報処理装置200との間で上述のビットコミットメントプロトコルを実行することで、ビットコミットメントプロトコルの実行時の効率を低下させること無く、ビットコミットメントプロトコルの安全性を確保することができる。
以上説明したように本開示の一実施形態に係る情報処理システム1によれば、予め所定の関係性を送信者側と受信者側とで共有させておき、F(x1)=F(x2)となるx1、x2を求めることができるというMQ関数の性質を利用したビットコミットメントプロトコルを実行することができる。本開示の一実施形態に係る情報処理システム1は、送信者側の情報処理装置100と、受信者側の情報処理装置200との間で上述のビットコミットメントプロトコルを実行することで、ビットコミットメントプロトコルの実行時の効率を低下させること無く、ビットコミットメントプロトコルの安全性を確保することができる。
また、本開示の一実施形態に係る情報処理システム1は、送信者側と受信者側とで予め共有させる関係性を複雑なものにすることで、ビットコミットメントプロトコルの安全性をより高めることができる。すなわち、予め共有させる関係性を複雑なものにすることで、送信者がどの値をコミットしたかを受信者が推測することが出来ないようなビットコミットメントプロトコルが実現できる。
なお、上述の説明では、2以上の異なる値から同一の結果が得られる関数FとしてMQ関数を挙げたが、本開示は係る例に限定されない。MQ関数のように、2以上の異なる値から同一の結果が得られる関数であれば他の関数が用いられても良い。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
なお、本技術は以下のような構成も取ることができる。
(1)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記他の装置へ送信する、情報処理装置。
(2)
前記関係性Rは、前記コミット段階で前記他の装置に送信する値に対して、前記公開段階の前では前記他の装置は前記コミットした値が予測出来ないよう定められている、前記(1)に記載の情報処理装置。
(3)
前記関係性Rは、前記値x1、・・・、xnの大小関係によって値が決まるよう定められている、前記(1)に記載の情報処理装置。
(4)
前記nの値は2である、前記(1)〜(3)のいずれかに記載の情報処理装置。
(5)
前記nの値は3以上であり、
前記関数処理部は、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、前記(1)〜(3)のいずれかに記載の情報処理装置。
(6)
前記nの値は3以上であり、
前記関数処理部は、所定の制限に従って前記値x1、・・・、xnを生成して前記所定の制限の情報を前記他の装置との間で共有させ、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、前記(1)〜(3)のいずれかに記載の情報処理装置。
(7)
前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、前記(1)〜(6)のいずれかに記載の情報処理装置。
(8)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記他の装置から送信された前記値に対して前記関数Fを適用する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミット段階と、前記他の装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理装置。
(9)
前記関数処理部は、前記第1の値及び前記第2の値に前記関数Fを適用して同じ結果になると、前記第1の値及び前記第2の値に対して関係性Rを適用した結果を出力する、前記(8)に記載の情報処理装置。
(10)
前記nの値は3以上であり、所定の制限に従って前記他の装置で前記値x1、・・・、xnが生成された場合に前記所定の制限の情報を前記他の装置との間で共有し、
前記関数処理部は、前記公開段階で、前記他の装置から受信した値が前記所定の制限の下で生成されたかどうか判断する、前記(8)に記載の情報処理装置。
(11)
前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、前記(8)〜(10)のいずれかに記載の情報処理装置。
(12)
第1の情報処理装置及び第2の情報処理装置を備え、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに前記第1の情報処理装置が前記第2の情報処理装置へコミットする値との関係性Rを前記第1の情報処理装置及び前記第2の情報処理装置の間で共有させ、
前記第1の情報処理装置は、
前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する第1の関数処理部を備え、
前記第1の関数処理部は、前記関係性Rの適用により前記第2の情報処理装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記第2の情報処理装置へ送信し、
前記第2の情報処理装置は、
前記第1の情報処理装置から送信された前記値に対して前記関数Fを適用する第2の関数処理部を備え、
前記第2の関数処理部は、前記関係性Rの適用により前記第1の情報処理装置がコミットした値に対応する第1の値を受信するコミット段階と、前記第1の情報処理装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理システム。
(13)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を備え、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、情報処理方法。
(14)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を備える、情報処理方法。
(15)
コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を実行させ、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、コンピュータプログラム。
(16)
コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を実行させる、コンピュータプログラム。
(1)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記他の装置へ送信する、情報処理装置。
(2)
前記関係性Rは、前記コミット段階で前記他の装置に送信する値に対して、前記公開段階の前では前記他の装置は前記コミットした値が予測出来ないよう定められている、前記(1)に記載の情報処理装置。
(3)
前記関係性Rは、前記値x1、・・・、xnの大小関係によって値が決まるよう定められている、前記(1)に記載の情報処理装置。
(4)
前記nの値は2である、前記(1)〜(3)のいずれかに記載の情報処理装置。
(5)
前記nの値は3以上であり、
前記関数処理部は、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、前記(1)〜(3)のいずれかに記載の情報処理装置。
(6)
前記nの値は3以上であり、
前記関数処理部は、所定の制限に従って前記値x1、・・・、xnを生成して前記所定の制限の情報を前記他の装置との間で共有させ、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、前記(1)〜(3)のいずれかに記載の情報処理装置。
(7)
前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、前記(1)〜(6)のいずれかに記載の情報処理装置。
(8)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記他の装置から送信された前記値に対して前記関数Fを適用する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミット段階と、前記他の装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理装置。
(9)
前記関数処理部は、前記第1の値及び前記第2の値に前記関数Fを適用して同じ結果になると、前記第1の値及び前記第2の値に対して関係性Rを適用した結果を出力する、前記(8)に記載の情報処理装置。
(10)
前記nの値は3以上であり、所定の制限に従って前記他の装置で前記値x1、・・・、xnが生成された場合に前記所定の制限の情報を前記他の装置との間で共有し、
前記関数処理部は、前記公開段階で、前記他の装置から受信した値が前記所定の制限の下で生成されたかどうか判断する、前記(8)に記載の情報処理装置。
(11)
前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、前記(8)〜(10)のいずれかに記載の情報処理装置。
(12)
第1の情報処理装置及び第2の情報処理装置を備え、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに前記第1の情報処理装置が前記第2の情報処理装置へコミットする値との関係性Rを前記第1の情報処理装置及び前記第2の情報処理装置の間で共有させ、
前記第1の情報処理装置は、
前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する第1の関数処理部を備え、
前記第1の関数処理部は、前記関係性Rの適用により前記第2の情報処理装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記第2の情報処理装置へ送信し、
前記第2の情報処理装置は、
前記第1の情報処理装置から送信された前記値に対して前記関数Fを適用する第2の関数処理部を備え、
前記第2の関数処理部は、前記関係性Rの適用により前記第1の情報処理装置がコミットした値に対応する第1の値を受信するコミット段階と、前記第1の情報処理装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理システム。
(13)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を備え、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、情報処理方法。
(14)
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を備える、情報処理方法。
(15)
コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を実行させ、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、コンピュータプログラム。
(16)
コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を実行させる、コンピュータプログラム。
1 情報処理システム
100、200 情報処理装置
110、210 ビットコミットメント関数処理部
120、220 通信部
130、230 メモリ
100、200 情報処理装置
110、210 ビットコミットメント関数処理部
120、220 通信部
130、230 メモリ
Claims (16)
- 異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して前記他の装置へ送信する、情報処理装置。 - 前記関係性Rは、前記コミット段階で前記他の装置に送信する値に対して、前記公開段階の前では前記他の装置は前記コミットした値が予測出来ないよう定められている、請求項1に記載の情報処理装置。
- 前記関係性Rは、前記値x1、・・・、xnの大小関係によって値が決まるよう定められている、請求項1に記載の情報処理装置。
- 前記nの値は2である、請求項1に記載の情報処理装置。
- 前記nの値は3以上であり、
前記関数処理部は、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、請求項1に記載の情報処理装置。 - 前記nの値は3以上であり、
前記関数処理部は、所定の制限に従って前記値x1、・・・、xnを生成して前記所定の制限の情報を前記他の装置との間で共有させ、前記関係性Rの適用により前記コミット段階で前記値x1、・・・、xnから一の値を選択して前記他の装置へ送信し、前記公開段階で他の前記値を全て前記他の装置へ送信する、請求項1に記載の情報処理装置。 - 前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、請求項1に記載の情報処理装置。
- 異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記他の装置から送信された前記値に対して前記関数Fを適用する関数処理部を備え、
前記関数処理部は、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミット段階と、前記他の装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理装置。 - 前記関数処理部は、前記第1の値及び前記第2の値に前記関数Fを適用して同じ結果になると、前記第1の値及び前記第2の値に対して関係性Rを適用した結果を出力する、請求項8に記載の情報処理装置。
- 前記nの値は3以上であり、所定の制限に従って前記他の装置で前記値x1、・・・、xnが生成された場合に前記所定の制限の情報を前記他の装置との間で共有し、
前記関数処理部は、前記公開段階で、前記他の装置から受信した値が前記所定の制限の下で生成されたかどうか判断する、請求項8に記載の情報処理装置。 - 前記関数Fは、a本のb変数の2次多項式(a、bはいずれも2以上の整数)で構成される関数である、請求項8に記載の情報処理装置。
- 第1の情報処理装置及び第2の情報処理装置を備え、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに前記第1の情報処理装置が前記第2の情報処理装置へコミットする値との関係性Rを前記第1の情報処理装置及び前記第2の情報処理装置の間で共有させ、
前記第1の情報処理装置は、
前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する第1の関数処理部を備え、
前記第1の関数処理部は、前記関係性Rの適用により前記第2の情報処理装置へコミットする値を決定するコミット段階と、前記コミット段階でコミットした値を公開する公開段階とを実行し、前記コミット段階と、前記公開段階とで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値を選択して、前記コミット段階で第1の値を、前記公開段階で第2の値を前記第2の情報処理装置へ送信し、
前記第2の情報処理装置は、
前記第1の情報処理装置から送信された前記値に対して前記関数Fを適用する第2の関数処理部を備え、
前記第2の関数処理部は、前記関係性Rの適用により前記第1の情報処理装置がコミットした値に対応する第1の値を受信するコミット段階と、前記第1の情報処理装置がコミットした値を公開するための第2の値を受信する公開段階とを実行し、
前記関数処理部は、前記公開段階で、前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する、情報処理システム。 - 異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を備え、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、情報処理方法。 - 異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を備える、情報処理方法。 - コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置へコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関数Fを適用すると同じ結果になる値x1、・・・、xnを生成する生成ステップと、
前記関係性Rの適用により前記他の装置へコミットする値を決定するコミットステップと、
前記コミットステップでコミットした値を公開する公開ステップと、
を実行させ、
前記コミットステップと、前記公開ステップとで、前記値x1、・・・、xnから前記コミットする値に対応するそれぞれ異なる値が選択されて前記他の装置へ送信される、コンピュータプログラム。 - コンピュータに、
異なる複数の値x1、・・・、xn(nは2以上の整数)に対して同じ結果を算出できる関数F及び、前記値x1、・・・、xn並びに他の装置がコミットする値との関係性Rを予め該他の装置との間で共有させた状態で、前記関係性Rの適用により前記他の装置がコミットした値に対応する第1の値を受信するコミットステップと、
前記他の装置がコミットした値を公開するための第2の値を受信する公開ステップと、
前記第1の値と前記第2の値とが異なり、かつ前記第1の値及び前記第2の値に前記関数Fを適用すると同じ結果になるかどうか判断する関数適用ステップと、
を実行させる、コンピュータプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012237622A JP2014090235A (ja) | 2012-10-29 | 2012-10-29 | 情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム |
US14/045,166 US20140122899A1 (en) | 2012-10-29 | 2013-10-03 | Information processing apparatus, information processing method, computer program, and information processing system |
CN201310496952.2A CN103795535A (zh) | 2012-10-29 | 2013-10-22 | 信息处理设备、信息处理方法和信息处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012237622A JP2014090235A (ja) | 2012-10-29 | 2012-10-29 | 情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014090235A true JP2014090235A (ja) | 2014-05-15 |
Family
ID=50548601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012237622A Pending JP2014090235A (ja) | 2012-10-29 | 2012-10-29 | 情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140122899A1 (ja) |
JP (1) | JP2014090235A (ja) |
CN (1) | CN103795535A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5790288B2 (ja) * | 2011-08-12 | 2015-10-07 | ソニー株式会社 | 情報処理装置、及び情報処理方法 |
US10700862B2 (en) * | 2017-09-08 | 2020-06-30 | Fujitsu Limited | Reduced data set digest |
CN108683669B (zh) * | 2018-05-19 | 2021-09-17 | 深圳市图灵奇点智能科技有限公司 | 数据验证方法和安全多方计算系统 |
US10447475B1 (en) * | 2018-11-08 | 2019-10-15 | Bar Ilan University | System and method for managing backup of cryptographic keys |
CN114092242A (zh) * | 2021-11-03 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 基于范围证明实现隐私交易的方法和系统 |
-
2012
- 2012-10-29 JP JP2012237622A patent/JP2014090235A/ja active Pending
-
2013
- 2013-10-03 US US14/045,166 patent/US20140122899A1/en not_active Abandoned
- 2013-10-22 CN CN201310496952.2A patent/CN103795535A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN103795535A (zh) | 2014-05-14 |
US20140122899A1 (en) | 2014-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9577827B2 (en) | Information processing device, information processing method, and program | |
JP5790319B2 (ja) | 署名検証装置、署名検証方法、プログラム、及び記録媒体 | |
JP5736816B2 (ja) | 認証装置、認証方法、プログラム、及び署名生成装置 | |
JP5593850B2 (ja) | 認証装置、認証方法、プログラム、及び署名生成装置 | |
US8452974B2 (en) | Image processing apparatus, electronic signature generation system, electronic signature key generation method, image processing method, and program | |
JP6069852B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US9979549B2 (en) | Information processing to perform authentication between a prover and a verifier | |
US20130042116A1 (en) | Information processing apparatus and information processing method | |
JP2014090235A (ja) | 情報処理装置、情報処理方法、コンピュータプログラム及び情報処理システム | |
US9076000B2 (en) | Authentication device, authentication method, and program | |
US10075299B2 (en) | Information processing apparatus, signature providing method, signature verifying method, program, and recording medium | |
WO2013129084A1 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2014050064A (ja) | 情報処理装置、情報処理システム、情報処理方法、プログラム及びクライアント端末 | |
WO2013129119A1 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
WO2013031420A1 (ja) | 情報処理装置、署名生成装置、署名検証装置、情報処理方法、署名生成方法、及び署名検証方法 | |
JP2014068139A (ja) | 送信装置、受信装置、送信方法、受信方法及びプログラム | |
WO2020241817A1 (ja) | 公開鍵の信頼性を証明するための装置、方法及びそのためのプログラム | |
US20140331056A1 (en) | Information processing apparatus, information processing system, information processing method, and program | |
WO2013031413A1 (ja) | 情報処理装置、情報処理方法、プログラム、及び記録媒体 | |
US20140205088A1 (en) | Information processing apparatus and information processing method | |
Gupta et al. | Quantum-defended Digital Signature on Lattice for IoT-enabled Systems | |
CN113965325A (zh) | 数据传输认证方法、装置、电子设备及计算机存储介质 |