(57)【要約】【課題】監査端末以外では匿名の送金を可能にしながら、監査端末では匿名の解除を実現して送金履歴をトレース可能にする。【解決手段】プロセッサとメモリを有する監査装置であって、前記プロセッサは、送金元の情報と、電子的価値と、暗号文を含む第１のトランザクションを受け付け、送金先の情報と、電子的価値と、第１の原像値を含む第２のトランザクションを受け付け、所定のパラメータと第２のトランザクションの前記第１の原像値から第１の平文を算出し、前記第１のトランザクションの暗号文を復号して第２の平文を算出し、前記第１の平文と前記第２の平文とを比較して、前記第１の平文が前記第２の平文と一致する場合には、前記第１のトランザクションの送金元の情報と前記第２のトランザクションの送金先の情報を対応付ける。【選択図】図４
2018007168.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する監査装置であって、
前記プロセッサは、送金元の情報と、電子的価値と、暗号文を含む第１のトランザクションを受け付け、
前記プロセッサは、送金先の情報と、電子的価値と、第１の原像値を含む第２のトランザクションを受け付け、
前記プロセッサは、所定のパラメータと第２のトランザクションの前記第１の原像値から第１の平文を算出し、
前記プロセッサは、前記第１のトランザクションの暗号文を復号して第２の平文を算出し、
前記プロセッサは、前記第１の平文と前記第２の平文とを比較して、前記第１の平文が前記第２の平文と一致する場合には、前記第１のトランザクションの送金元の情報と前記第２のトランザクションの送金先の情報を対応付けることを特徴とする監査装置。
【請求項２】
請求項１に記載の監査装置であって、
前記第１のトランザクションの暗号文は、前記第１の原像値が公開鍵で暗号化され、
前記プロセッサは、前記公開鍵に対応する秘密鍵で前記第１のトランザクションの暗号文を復号して第２の平文を算出することを特徴とする監査装置。
【請求項３】
請求項１に記載の監査装置であって、
前記第１のトランザクションは、前記第１の原像値の正当性を証明するゼロ知識証明値を含むことを特徴とする監査装置。
【請求項４】
請求項２に記載の監査装置であって、
前記暗号文は、エルガマル暗号文であることを特徴とする監査装置。
【請求項５】
プロセッサとメモリを有する第１の計算機から第２の計算機へ送信した送金トランザクションを監査装置で監査する監査機能付匿名送金方法であって、
前記第１の計算機が、送金元の情報と、電子的価値と、暗号文を含む第１のトランザクションを送信する第１のステップと、
前記第２の計算機及び前記監査装置が、前記第１のトランザクションを受信する第２のステップと、
前記第２の計算機は、送金先の情報と、電子的価値と、第１の原像値を含む第２のトランザクションを送信する第３のステップと、
前記監査装置が、前記第２のトランザクションを受信する第４のステップと、
前記監査装置が、所定のパラメータと前記第２のトランザクションの前記第１の原像値から第１の平文を算出する第５のステップと、
前記監査装置が、前記第１のトランザクションの暗号文を復号して第２の平文を算出する第６のステップと、
前記監査装置が、前記第１の平文と前記第２の平文とを比較して、前記第１の平文が前記第２の平文と一致する場合には、前記第１のトランザクションの送金元の情報と前記第２のトランザクションの送金先の情報を対応付ける第７のステップと、
を含むことを特徴とする監査機能付匿名送金方法。
【請求項６】
請求項５に記載の監査機能付匿名送金方法であって、
前記第１のステップは、
前記第１の計算機が、監査装置から公開鍵を受信し、前記第１の原像値を前記公開鍵で暗号化して暗号文を生成し、
前記第６のステップは、
前記監査装置が、前記公開鍵に対応する秘密鍵で前記第１のトランザクションの暗号文を復号して第２の平文を算出することを特徴とする監査機能付匿名送金方法。
【請求項７】
請求項５に記載の監査機能付匿名送金方法であって、
前記第１のトランザクションは、前記第１の原像値の正当性を証明するゼロ知識証明値を含むことを特徴とする監査機能付匿名送金方法。
【請求項８】
請求項６に記載の監査機能付匿名送金方法であって、
前記暗号文は、エルガマル暗号文であることを特徴とする監査機能付匿名送金方法。
【請求項９】
プロセッサとメモリを有する計算機を制御するプログラムであって、
送金元の情報と、電子的価値と、暗号文を含む第１のトランザクションを受け付ける第１のステップと、
送金先の情報と、電子的価値と、第１の原像値を含む第２のトランザクションを受け付ける第２のステップと、
所定のパラメータと前記第２のトランザクションの前記第１の原像値から第１の平文を算出する第３のステップと、
前記第１のトランザクションの暗号文を復号して第２の平文を算出する第４のステップと、
前記第１の平文と前記第２の平文とを比較して、前記第１の平文が前記第２の平文と一致する場合には、前記第１のトランザクションの送金元の情報と前記第２のトランザクションの送金先の情報を対応付ける第５のステップと、
を前記計算機に実行させることを特徴とするプログラム。
【請求項１０】
請求項９に記載のプログラムであって、
前記第１のトランザクションの暗号文は、前記第１の原像値が公開鍵で暗号化され、
前記第４のステップは、
前記公開鍵に対応する秘密鍵で前記第１のトランザクションの暗号文を復号して第２の平文を算出することを特徴とするプログラム。
【請求項１１】
請求項９に記載のプログラムであって、
前記第１のトランザクションは、前記第１の原像値の正当性を証明するゼロ知識証明値を含むことを特徴とするプログラム。
【請求項１２】
請求項１０に記載のプログラムであって、
前記暗号文は、エルガマル暗号文であることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散台帳上で仮想通貨の送金情報を第３者に対して匿名化しつつ、監査者には開示するトランザクション送信方法に関する。
【背景技術】
【０００２】
近年、現実の貨幣、通貨による物品の取引だけでなく、電子マネーや仮想通貨を用いた商取引が行われている。非特許文献１には、ビットコインと呼ばれる仮想通貨を用いて、銀行などの中央集権機関を必要としない低手数料で決済取引を行う技術について開示されている。
【０００３】
ビットコインではＰ２Ｐ（Peer to Peer）ネットワーク上で取引情報（以下、トランザクションとも称する）をマイナーと呼ばれるノードが正当性を判定した後、プルーフオブワークと呼ばれる特定のハッシュ値を算出する作業で確定処理を行っている。確定されたトランザクションは、１つのブロックにまとめられ、ブロックチェーンと呼ばれる分散台帳に記載される。
【０００４】
ビットコインのトランザクションおよび分散台帳は、Ｐ２Ｐネットワーク上の全ノードが参照可能であるため、どのノードからどのノードにビットコインの送金が行われたかは全ノードが参照可能である。よってユーザのビットコインアドレスが既知な場合、ユーザ間の取引情報が第３者からも容易に閲覧が可能となる。
【０００５】
この問題に対して、非特許文献２ではビットコインプロトコル上でゼロコインと呼ばれる匿名送金用のコインを利用する方式が提案されている。ゼロコイン方式では、ゼロコインと呼ばれるコミットメント付トランザクションを送金者ノードは受金者（受取人）ノードを指定せずにＰ２Ｐネットワークにブロードキャストする。受金者はＰ２Ｐネットワーク上のゼロコインのいずれかのコミットメントの原像を保持する事を証明するゼロ知識証明付トランザクションを、送金者を指定する事無くブロードキャストする事で送金者と受金者との繋がりを分散台帳上での切断することが可能となり、匿名送金を実現している。なお、ゼロ知識証明値の算出については、非特許文献３にも記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】S. Nakamoto著、“A Peer-to-Peer Electronic Cash System”、[online]、［平成２８年７月１日検索］、インターネット＜URL：https://bitcoin.org/bitcoin.pdf＞
【非特許文献２】Ian Miers, Christina Garman, Matthew Green, Aviel D. Rubin著、“Zerocoin: Anonymous Distributed E-Cash from Bitcoin”、IEEE Computer Society Conference Publishing Services、pp. 397-411．
【非特許文献３】Ronald Cramer、Ivan Damgard、Berry Schoenmakers著、“Proofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols”、Advances in Cryptology - CRYPTO’94 LNCS、Volume 839、pp. 174-187
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の非特許文献２に対して、分散台帳上でトランザクションが匿名化されているため監査が出来ない課題があげられる。この結果、非特許文献２では、マネーロンダリングなどの不正な送金が行われていても、送金履歴等をトレース出来ないという問題があった。
【課題を解決するための手段】
【０００８】
本発明は、プロセッサとメモリを有する監査装置であって、前記プロセッサは、送金元の情報と、電子的価値と、暗号文Ｅを含む第１のトランザクションを受け付け、前記プロセッサは、送金先の情報と、電子的価値と、第１の原像値ｙ０を含む第２のトランザクションを受け付け、前記プロセッサは、所定のパラメータｇと第２のトランザクションの前記第１の原像値から第１の平文ｇｙ０を算出し、前記プロセッサは、前記第１のトランザクションの暗号文Ｅを復号して第２の平文Ｍを算出し、前記プロセッサは、前記第１の平文ｇｙ０と前記第２の平文Ｍとを比較して、前記第１の平文ｇｙ０が前記第２の平文Ｍと一致する場合には、前記第１のトランザクションの送金元の情報と前記第２のトランザクションの送金先の情報を対応付ける。
【発明の効果】
【０００９】
本発明によれば、監査装置以外の計算機はトランザクションを匿名化して送金が可能となる。一方、監査装置は匿名化を解除することで、送金履歴等をトレースすることが可能となる。また、監査装置は、既存の銀行などの中央機関のように送金自体の停止、口座の凍結といった権限を有することは無く、送金の自由度は保証される。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例１を示し、監査機能付匿名送金システムの一例を示すブロック図である。
【図２】本発明の実施例１を示し、ユーザ端末と、監査者端末のハードウェア構成の一示すブロック図である。
【図３】本発明の実施例１を示し、事前に鍵を配布する処理の一例を示すシーケンス図である。
【図４】本発明の実施例１を示し、送金及び受金（受け取り）の処理の一例を示すシーケンス図である。
【図５】本発明の実施例１を示し、匿名送金トランザクションデータフォーマットの一例を示す図である。
【図６】本発明の実施例１を示し、受金用トークンデータフォーマットの一例を示す図である。
【図７】本発明の実施例１を示し、匿名送金トランザクションの生成処理の一例を示すフローチャートである。
【図８】本発明の実施例１を示し、匿名受金トランザクションデータフォーマットの一例を示す図である。
【図９】本発明の実施例１を示し、匿名受金トランザクションの生成処理の一例を示すフローチャートである。
【図１０】本発明の実施例１を示し、匿名解除処理の一例を示すフローチャートである。
【図１１】本発明の実施例２を示し、監査機能付匿名送金システムの一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明である、監査機能付匿名送金システムの一実施形態を図面に基づいて詳細に説明する。
【実施例１】
【００１２】
以下、図１と図２を用いて、本実施例１の監査機能付匿名送金システムの一例構成を示す。
【００１３】
図１は、本発明の実施例１である監査機能付匿名送金システムの構成の一例を示すブロック図である。図示するように、本監査機能付匿名送金システムは、ユーザ端末１００と、ユーザ端末１０１と、ユーザ端末２００と、監査者端末３００とがネットワーク４００を介して相互に情報を送受信できる機能を含み設計されている。
【００１４】
図２は、ユーザ端末１００のハードウェアの構成の一例を示すブロック図である。図示するように、ユーザ端末１００は、ＣＰＵ１００−１と、補助記憶装置１００−２と、メモリ１００−３と、表示装置１００−５と、入出力インターフェース１００−６と、通信装置１００−７と、が内部信号線１００−４を介して接続される。
【００１５】
また、補助記憶装置１００−２には、プログラムコードが格納されている。プログラムコードは、メモリ１００−３にロードされＣＰＵ１００−１によって実行される。また、ユーザ端末１０１と、ユーザ端末２００と、監査者端末３００も同様のハードウェア構成を含む。
【００１６】
なお、本実施例１では、ユーザ端末１００、１０１、２００、監査者端末３００で鍵ペア生成プログラムが実行され、ユーザ端末１００、１０１では送金プログラムが実行され、ユーザ端末２００では、受け取りプログラムが実行され、監査者端末３００では監査プログラムが実行される。
【００１７】
以下、本実施例１で使用する用語を定義する。
【００１８】
（１）離散群上の公開鍵暗号方式の公開鍵／秘密鍵ペア
本実施例１では、公開鍵暗号としてエルガマル暗号方式を用いる。エルガマル暗号とは、離散対数が計算困難な位数ｐの離散群Ｇと、その生成元ｆを公開システムパラメータとし、秘密鍵をランダムな整数ｘ、公開鍵を生成元ｆのｘ乗、つまりｆｘとし、公開鍵／秘密鍵ペア（ｅ，ｘ）を（ｆｘ，ｘ）とする。また、平文ｍの公開鍵ｅによる暗号文Ｅｎｃ（ｅ，ｍ）を、ランダムな整数ｒをとり、Ｅｎｃ（ｅ，ｍ）＝（ｆｒ，ｅｒｍ）とする。
【００１９】
（２）離散群の３つの生成元（ｆ，ｇ，ｈ）
本実施例１では、離散群Ｇは生成元として、上述のｆに加えて、ｇ、ｈを有し、３つの異なる生成元ｆ、ｇ、ｈを公開システムパラメータとする。また、ｆ、ｇ、ｈはシステム起動時にランダムに生成され、ｆのｇに対する離散対数やｈのｇに対する離散対数など、お互いの離散対数は計算困難と仮定する。
【００２０】
図３は、ユーザ端末１００と、ユーザ端末１０１と、ユーザ端末２００と、監査者端末３００との事前鍵配布処理のデータ送受信と処理の一例を示すシーケンス図である。
【００２１】
まず、ユーザ端末１００は公開鍵／秘密鍵ペア生成プログラムを実行し、公開鍵と当該公開鍵に対応する秘密鍵を生成する（Ｓ１００）。なお、公開鍵と秘密鍵のペアを生成する手法については、公知または周知の技術を適用すれば良いので、本実施例１では詳述しない。同様に、ユーザ端末１０１は公開鍵／秘密鍵ペア生成プログラムを実行し、公開鍵と当該公開鍵に対応する秘密鍵を生成する（Ｓ１０１）。同様に、ユーザ端末２００は公開鍵／秘密鍵ペア生成プログラムを実行し、公開鍵と当該公開鍵に対応する秘密鍵を生成する（Ｓ２００）。同様に、監査者端末３００は公開鍵／秘密鍵ペア生成プログラムを実行し、公開鍵と当該公開鍵に対応する秘密鍵を生成する（Ｓ３００）。
【００２２】
次に、ユーザ端末１００はステップＳ１００で生成した公開鍵（Ｄ１００）をユーザ端末１０１と、ユーザ端末２００と、監査者端末３００に送信する。
【００２３】
次に、ユーザ端末１０１はステップＳ１０１で生成した公開鍵（Ｄ１０１）をユーザ端末１００と、ユーザ端末２００と、監査者端末３００に送信する。
【００２４】
次に、ユーザ端末２００はステップＳ２００で生成した公開鍵（Ｄ２００）をユーザ端末１００と、ユーザ端末１０１と、監査者端末３００に送信する。
【００２５】
次に、監査者端末３００はステップＳ３００で生成した公開鍵（Ｄ３００）をユーザ端末１００と、ユーザ端末１０１と、ユーザ端末２００に送信し、事前鍵配布処理を終える。上記処理により、ユーザ端末１００、１０１、２００及び監査者端末３００では、公開鍵と秘密鍵が生成されて、公開鍵が相互に配布される。
【００２６】
図４は、監査機能付匿名送金システムの送金及び受金（受け取り）処理におけるデータ送受信と各プログラムの処理の一例を示すシーケンス図である。なお、以下の説明では送金の受け取りを受金として表す。
【００２７】
本実施例１では、ユーザ端末１００とユーザ端末１０１とが、匿名送金トランザクションを生成してブロードキャストし、ユーザ端末１００が送金先となるユーザ端末２００に受金用トークンを渡し、ユーザ端末２００がユーザ端末１００から受信した受金用トークンを利用して匿名受金する際の処理を例示する。
【００２８】
また、この匿名送金、受金処理の際に、監査者端末３００がユーザ端末１００からユーザ端末２００へ送金が行われたことを把握する方法を例示する。
【００２９】
まず、ユーザ端末１００は匿名送金トランザクション生成処理を実行し、匿名送金トランザクション（Ｄ４００）と受金用（受取用）トークン（Ｄ５００）を生成する（Ｓ４００）。
【００３０】
次に、ユーザ端末１０１も同様に匿名送金トランザクション生成処理を実行し、匿名送金トランザクション（Ｄ４０１）と受金用トークン（Ｄ５０１）を生成する（Ｓ４０１）。
【００３１】
次に、ユーザ端末１００はステップＳ４００で生成した匿名送金トランザクション（Ｄ４００）をユーザ端末１０１と、ユーザ端末２００と、監査者端末３００に送信（ブロードキャスト）する。
【００３２】
次に、ユーザ端末１０１はステップＳ４０１で生成した匿名送金トランザクション（Ｄ４０１）をユーザ端末１００と、ユーザ端末２００と、監査者端末３００に送信（ブロードキャスト）する。
【００３３】
次に、ユーザ端末１００はステップＳ４００で生成した受金用トークン（Ｄ５００）をユーザ端末２００に送信する。なお、受金用トークン（Ｄ５００）の送信は、送金先のユーザ端末２００のみに行えば良い。
【００３４】
次に、ユーザ端末２００は受信した受金用トークン（Ｄ５００）を用いて、匿名受金トランザクション生成処理を実行し、匿名受金トランザクション（Ｄ６００）を生成する（Ｓ５００）。
【００３５】
次に、ユーザ端末２００はステップＳ５００で生成した匿名受金トランザクション（Ｄ６００）をユーザ端末１００と、ユーザ端末１０１と、監査者端末３００に送信（ブロードキャスト）する。この処理により、ユーザ端末２００は匿名送金トランザクション（Ｄ４００）の正当な受け取り人であることを証明し、匿名送金トランザクション（Ｄ４００）で指定された電子的価値（仮想通貨や電子マネー等）を取得する。なお、匿名受金トランザクション（Ｄ６００）の処理は、非特許文献２と同様であるので、説明は省略する。
【００３６】
次に、監査者端末３００は、受信した匿名送金トランザクション（Ｄ４００）と匿名送金トランザクション（Ｄ４０１）と匿名受金トランザクション（Ｄ６００）を入力とする匿名解除処理（後述）を実行し、ユーザ端末１００からユーザ端末２００に対して送金が行われた事を把握し（Ｓ６００）、匿名送受金処理を完了する。
【００３７】
図５は、匿名送金トランザクション（Ｄ４００）のデータフォーマットの一示す図である。図示されている通り、匿名送金トランザクション（Ｄ４００）は送金トランザクションを一意に識別する識別子を格納するトランザクションＩＤ４１１と、送金先４１２と、送金元の識別子を格納する送金元４１３と、送金する電子的価値の値を格納する金額４１４と、拡張領域４１５の５種類のデータフィールドを含む。
【００３８】
図示の例では、トランザクションＩＤ４１１は「１２３４」、送金先４１２は匿名送金を保つため「−」（ブランク記号）、送金元４１３はユーザ端末１００、金額４１４は１コインとなっている。拡張領域４１５には、コミット値４１５−１と、エルガマル暗号文４１５−２と、ゼロ知識証明値４１５−３が格納される。なお、ゼロ知識証明値４１５−３は、コミット値Ｃ０に対して、Ｃ０ｇ−ｙ０の公開システムパラメータｈを底とする離散対数値を知っている事（正当性）を示す。
【００３９】
図示の例では、コミット値４１５−１として「Ｃ０」と、エルガマル暗号文４１５−２として、監査者端末３００の公開鍵ｅによる平文ｇｙ０の暗号文Ｍ＝（ｆｘ０，ｅｘ０ｇｙ０）と、ゼロ知識証明値４１５−３として（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）が格納されている。拡張領域４１５の各値の詳細については後述する。
【００４０】
なおユーザ端末１０１が生成した匿名送金トランザクション（Ｄ４０１）も同じデータフォーマットであり、この匿名送金トランザクション（Ｄ４０１）のコミット値４１５−１を以下「Ｃ１」と記す。
【００４１】
図６は、受金用トークン（Ｄ５００）のデータフォーマットの一例を示す図である。図示されている通り受金用トークン（Ｄ５００）は、匿名送金トランザクション（Ｄ４００）のトランザクションＩＤ４１１同一の値を設定したトランザクションＩＤ５１１と、第一コミット原像値（または第１原像値：First Pre-image）５１２と、第二コミット原像値（または第２原像値：Second Pre-image）５１３の３つのデータフィールドを有する。
【００４２】
図６の例では、図５の匿名送金トランザクション（Ｄ４００）に対する受金用トークン（Ｄ５００）は、トランザクションＩＤ５１１は「１２３４」、第一コミット原像値５１２が「ｙ０」と、第二コミット原像値５１３が「ｚ０」となり、ｇｙ０ｈｚ０が匿名送金トランザクション（Ｄ４００）のコミット値Ｃ０と一致する（Ｃ０＝ｇｙ０ｈｚ０）。
【００４３】
これにより、受金用トークン（Ｄ５００）を受信して受金トランザクションを生成するユーザ端末２００のみが、送金トランザクション（Ｄ４００）を正当に受け取ることができるのである。
【００４４】
なお、受金用トークン（Ｄ５００）は、匿名送金トランザクション（Ｄ４００）を送信するネットワークとは異なるＰ２Ｐネットワークなどによって送金先のユーザ端末２００へ伝送されるのが望ましい。
【００４５】
図７は、匿名送金トランザクション生成処理（Ｓ４００）の詳細なフローチャートである。まず、ユーザ端末１００は、過去に生成された全トランザクションと異なるユニークなトランザクションＩＤ４１１として「１２３４」を生成し、トランザクションＩＤ４１１：［１２３４］を出力する（Ｓ４０１）。
【００４６】
次に、ユーザ端末１００は、自身のアドレスもしくはＩＤ等の識別子を送金元４１３として設定し、送金元４１３：［ユーザ端末１００］を出力する（Ｓ４０２）。
【００４７】
次に、ユーザ端末１００は、送金したい金額１コインを金額４１４に設定し、金額４１４：［１コイン］を出力する（Ｓ４０３）。
【００４８】
次に、ユーザ端末１００は、ランダムな整数ｘ０，ｙ０，ｚ０を生成し、公開システムパラメータｇ，ｈに対して、コミット値４１５−１：Ｃ０＝ｇｙ０ｈｚ０を計算し、コミット値４１５−１：［Ｃ０］を出力する。
【００４９】
更に、ユーザ端末１００は、監査者端末３００の公開鍵ｅ＝ｆｘと、上記整数ｘ０を用いて平文ｇｙ０に対するエルガマル暗号文Ｍ＝（ｆｘ０，ｅｘ０ｇｙ０）を算出し、エルガマル暗号文４１５−２：［（ｆｘ０，ｅｘ０ｇｙ０）］を出力する。
【００５０】
更に、ユーザ端末１００は、ランダムな整数α，β，γを生成し、公開システムパラメータｆ，ｇ，ｈに対して、Ｓ＝ｆα，Ｔ＝ｅαｇβ  ，Ｕ＝ｇβｈγを算出する。
【００５１】
更に、ユーザ端末１００は、ハッシュ関数Ｈに対して、ｒ＝Ｈ（Ｓ，Ｔ，Ｕ）を計算し、ａ＝ｒｘ０＋α，ｂ＝ｒｙ０＋β，ｃ＝ｒｚ０＋γを算出し、ゼロ知識証明値４１５−３：［ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ］を出力する（Ｓ４０４）。
【００５２】
次に、ユーザ端末１００は、ステップＳ４０１で出力したトランザクションＩＤ４１１：［１２３４］  をトランザクションＩＤフィールドに入力し、ステップＳ４０２で出力した送金元４１３：［ユーザ端末１００］を送金元フィールドに入力し、ステップＳ４０３で出力した金額４１４：［１コイン］を金額フィールドに入力し、ステップＳ４０４で出力したコミット値４１５−１：［Ｃ０］と、エルガマル暗号文４１５−２：［（ｆｘ０，ｅｘ０ｇｙ０）］と、ゼロ知識証明値４１５−３：［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］と、を拡張領域フィールドに入力したトランザクションデータ（Ｄ４００）を生成して匿名送金トランザクション生成処理（Ｓ４００）を終了する（Ｓ４０５）。
【００５３】
なお、ゼロ知識証明値４１５−３：［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］の正当性の判定は以下の２つのステップからなる。
【００５４】
ステップ１：ゼロ知識証明値：［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］のｒ，Ｓ，Ｔ，Ｕとハッシュ関数Ｈに対して、
ｒ＝Ｈ（Ｓ，Ｔ，Ｕ）
が成立する事を判定する。
【００５５】
ステップ２：公開システムパラメータｆ，ｇ，ｈと、監査者端末３００の公開鍵ｅと、コミット値４１５−１：［Ｃ０］と、エルガマル暗号文４１５−２：［（ｆｘ０，ｅｘ０ｇｙ０）］と、ゼロ知識証明値４１５−３：［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］のｒ，ａ，ｂ，ｃと、に対して、
ｆａ＝（ｆｘ０）ｒＳ，
ｅａｇｂ＝（ｅｘ０ｇｙ０）ｒＴ，
ｇｂｈｃ＝（Ｃ０）ｒＵ
の３つの等式が成立することを判定する。
【００５６】
上述の２つのステップが成立した場合に限り、ゼロ知識証明値４１５−３：［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］は正当と見なされる。また、この正当性判定処理は、匿名送金トランザクション（Ｄ４００）を受信した任意のユーザ端末（例えば、ユーザ端末２００）が実行し、その結果を他の端末に送信してもよい。
【００５７】
上記処理により、ユーザ端末１００（１０１）では、送金先をブランクとしてコミット値４１５−１に加えて、エルガマル暗号文４１５−２とゼロ知識証明値４１５−３を加えた匿名送金トランザクション（Ｄ４００）を生成することができる。
【００５８】
図８は、匿名受金トランザクション（Ｄ６００）のデータフォーマットの一例を示す図である。図示されている通り、匿名受金トランザクション（Ｄ６００）は受金トランザクションを一意に識別するトランザクションＩＤ６０１と、送金先６０２と、送金元６０３と、金額６０４と、拡張領域６０５の５つの種類のデータフィールドを含む。拡張領域６０５には、第一コミット原像値６０５−１と、ゼロ知識証明値６０５−２が含まれる。
【００５９】
図示の例では、トランザクションＩＤ６０１には「５６７８」が設定され、送金先６０２はユーザ端末２００自身の識別子が格納され、送金元６０３には「−」（ブランク記号）、金額６０４には「１コイン」が入力されている。
【００６０】
拡張領域６０５には、第一コミット原像値６０５−１：ｙ０と、匿名送金トランザクション（Ｄ４００）のコミット値Ｃ０と匿名送金トランザクション（Ｄ４０１）のコミット値Ｃ１に対して、Ｃ０ｇ−ｙ０もしくはＣ１ｇ−ｙ０の公開システムパラメータｈを底とする離散対数値を知っている事を示すゼロ知識証明値６０５−２が入力されている。
【００６１】
なお、本実施例１では、ユーザ端末２００はユーザ端末１００から受金用トークン（Ｄ５００）を受信しているので、匿名送金トランザクション（Ｄ４００）のコミット値Ｃ０に対して、Ｃ０ｇ−ｙ０の公開システムパラメータｈを底とする離散対数値を知っている事を示すゼロ知識証明値６０５−２が設定される。
【００６２】
図９は、匿名受金トランザクション生成処理（Ｓ５００）の詳細を示すフローチャートである。この処理は、匿名送金トランザクション（Ｄ４００）と、受金用トークン（Ｄ５００）を受信したユーザ端末２００で行われる。
【００６３】
まず、ユーザ端末２００は、過去に生成された全トランザクションと異なるユニークなトランザクションＩＤ６０１として「５６７８」を生成し、トランザクションＩＤ：［５６７８］を出力する（Ｓ５０１）。
【００６４】
次に、ユーザ端末２００は、自身のアドレスもしくはＩＤを送金先６０２として設定し、送金先６０２：［ユーザ端末２００］を出力する（Ｓ５０２）。なお、送金元６０３は、匿名送金トランザクション（Ｄ４００）であるので、ブランク値＝「−」を設定する。また、匿名受金トランザクション（Ｄ６００）の送金先６０２は、電子的価値を受け取るユーザ端末２００自身となる。
【００６５】
次に、ユーザ端末２００は、送金したい金額６０４に「１コイン」を設定し、金額６０４：［１コイン］を出力する（Ｓ５０３）。
【００６６】
ユーザ端末２００は、受金用トークン（Ｄ５００）の第一コミット原像値５１２：ｙ０を第一コミット原像値６０５−１：［ｙ０］として出力し、第一コミット原像値：ｙ０と匿名送金トランザクション（Ｄ４００）のコミット値Ｃ０と、匿名送金トランザクション（Ｄ４０１）のコミット値Ｃ１に対してＣ０ｇ−ｙ０  もしくはＣ１ｇ−ｙ０の公開システムパラメータｈを底とする離散対数値を知っている事を示すゼロ知識証明値６０５−２：［π］を算出して出力する（Ｓ５０４）。
【００６７】
本実施の形態では、Ｃ０ｇ−ｙ０のｈに対する離散対数値が受金用トークン（Ｄ５００）の第二コミット原像値：ｚ０と一致するため、ユーザ端末２００はゼロ知識証明値：［π］を算出する事が可能である。なお、ゼロ知識証明値：［π］の算出アルゴリズムとして、前記非特許文献２や非特許文献３に記載のアルゴリズムを用いても良い。
【００６８】
以上の処理により、受金用トークン（Ｄ５００）を受信したユーザ端末２００は、受金用トークン（Ｄ５００）に含まれる第一コミット原像値５１２＝「ｙ０」と、第二コミット原像値５１３＝「ｚ０」から、匿名受金トランザクション（Ｄ６００）のゼロ知識証明値６０５−２：πを算出することができる。
【００６９】
図１０は、匿名解除処理（Ｓ６００）の詳細を示すフローチャートである。この処理は、監査者端末３００で随時実行することができる。
【００７０】
まず、監査者端末３００は、受信した匿名受金トランザクション（Ｄ６００）の第一コミット原像値６０５−１：［ｙ０］と、公開システムパラメータｇから平文（第１の平文）ｇｙ０を計算する（Ｓ６０１）。
【００７１】
ユーザ端末１０１、２００及び監査者端末３００は、予め公開システムパラメータｇを取得しておく。なお、コミット値Ｃ０＝ｇｙ０ｈｚ０であるので、監査者端末３００は算出したｇｙ０からコミット値Ｃ０を復元することができる。
【００７２】
次に、監査者端末３００は、匿名送金トランザクション（Ｄ４００）と（Ｄ４０１）の拡張領域４１５内のエルガマル暗号文４１５−２を、図３のステップＳ３００で生成した秘密鍵で復号し、それぞれの平文（第２の平文）をＭ０，Ｍ１とする（Ｓ６０２）。
【００７３】
次に、監査者端末３００は、ステップＳ６０１で算出した第１の平文ｇｙ０と、ステップＳ６０２で算出した第２の平文Ｍ０、Ｍ１とを比較する（Ｓ６０３）。監査者端末３００は、第１の平文ｇｙ０が第２の平文Ｍ０に等しい場合には、ステップＳ６０４へ進んで、送金先＝ユーザ端末２００に対する送金元４１３＝ユーザ端末１００と出力する。
【００７４】
一方、監査者端末３００は、第１の平文ｇｙ０が第２の平文のうちＭ１に等しい場合には、ステップＳ６０５へ進んで、送金先＝ユーザ端末２００に対する送金元４１３＝ユーザ端末１０１と出力する。
【００７５】
以上の処理によって、監査者端末３００は、自身の公開鍵ｅで暗号化された匿名送金トランザクションのエルガマル暗号文４１５−２を秘密鍵で復号して平文Ｍとし、匿名受金トランザクション（Ｄ６００）の第一コミット原像値６０５−１：［ｙ０］から平文（第１の平文）ｇｙ０を算出する。そして、監査者端末３００は、平文ｇｙ０に一致する平文（第２の平文）Ｍの送金元４１３を特定し、匿名受金トランザクションの送金先６０２（＝受け取りユーザ端末２００）との関係を対応付けて、送金履歴を生成することができる。
【００７６】
これにより、監査者端末３００は、匿名送金トランザクションＤ４００と匿名受金トランザクションＤ６００から、送金元４１３と送金先６０２を特定して、送金履歴を生成し、送金履歴をトレース（検証）することができる。
【００７７】
以上のように、本実施例１によれば、監査者端末３００以外のユーザ端末２００（Ｐ２Ｐネットワークノード）に対してはトランザクションを匿名化して送金が可能となる。一方、監査者端末３００はトランザクションの匿名化を解除することで、送金履歴等を生成してトレースすることが可能となる。また、監査者端末３００は、既存の銀行などの中央機関のように送金自体の停止、口座の凍結といった権限を有することは無く、送金の自由度を保証することができる。
【００７８】
また、匿名送金トランザクション（匿名受金トランザクション）には送金履歴のトレース用の秘密情報の正当性を示すゼロ知識証明値４１５−３、６０５−２を付加することで、全てのユーザ端末１００、１０１、２００でトレース用の秘密情報の正当性を判定可能となる。これにより、トランザクションの正当性及び完全性の検証に対して特別な権限を必要としない。したがって、送金処理の正当性及び完全性を確認するための中央集権機関等を必要としないため、低手数料での送金システムが維持可能となる。
【００７９】
なお、監査者端末３００は、ユーザ端末間の匿名送金トランザクションの匿名化を解除して送金の履歴を監視または監査する監査装置として機能することができる。
【００８０】
本発明は、上述の実施例１に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。
【００８１】
例えば、本実施例１の図４では、匿名送金トランザクション（Ｄ４００、Ｄ４０１）をユーザ端末１００とユーザ端末１０１の２端末が生成しているが、３つ以上の端末が匿名送金トランザクションを生成してもよい。
【００８２】
また、本実施例１の図５および図８では、金額として金額：［１コイン］を例示したが、金額フィールドはその他の値でもよい。
【００８３】
また、本実施例１の図５の匿名送金トランザクションデータフォーマットにおいて、拡張領域内のゼロ知識証明値を［（ｒ，ａ，ｂ，ｃ，Ｓ，Ｔ，Ｕ）］としているが、必ずしもＳ，Ｔ，Ｕを含める必要は無く、
ｆａ／（ｆｘ０）ｒ＝Ｓ，
ｅａｇｂ／（ｅｘ０ｇｙ０）ｒ＝Ｔ，ｇｂｈｃ／（Ｃ０）ｒ＝Ｕと、その他のデータから算出してもよい。
【実施例２】
【００８４】
図１１は、実施例２を示し、監査機能付匿名送金システムの一例を示すブロック図である。実施例２では、収集端末３５０をネットワーク４００に接続し、ユーザ端末１００、１０１、２００間で送信された匿名送金トランザクションＤ４００と、匿名受金トランザクションＤ６００を収集してストレージ装置３６０に格納し、監査者端末３００がストレージ装置３６０から読み出した匿名送金トランザクションＤ４００と、匿名受金トランザクションＤ６００から送金履歴をトレースする。
【００８５】
図示の例では、収集端末３５０と、監査者端末３００及びストレージ装置３６０がネットワーク４１０に接続される。その他の構成は、前記実施例１と同様である。なお、ネットワーク４００とネットワーク４１０が接続されていても良い。
【００８６】
実施例２では、監査者端末３００が匿名送金トランザクションＤ４００と匿名受金トランザクションＤ６００を収集する必要がなくなって、匿名を解除する処理（Ｓ６００）に計算機の資源を集中させることができる。これにより、監査者端末３００は、ストレージ装置３６０から受け付けた匿名送金トランザクションＤ４００と匿名受金トランザクションＤ６００の匿名を迅速に解除して、送金元の情報（送金元４１３）と、送金先の情報（送金先６０２）を特定し、送金履歴を円滑にトレースすることができる。
【００８７】
＜まとめ＞
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【００８８】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００８９】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００９０】
１００、１０１、２００  ユーザ端末
３００  監査者端末
４１５−１  コミット値
４１５−２  エルガマル暗号文
４１５−３、６０５−２  ゼロ知識証明値６０５−２
５１２、６０５−１  第一コミット原像値
５１３  第二コミット原像値
Ｄ４００、Ｄ４０１  匿名送金トランザクション
Ｄ５００  受金用トークン
Ｄ６００  匿名受金トランザクション
【図１】
2018007168.tif 000003
【図２】
2018007168.tif 000004
【図３】
2018007168.tif 000005
【図４】
2018007168.tif 000006
【図５】
2018007168.tif 000007
【図６】
2018007168.tif 000008
【図７】
2018007168.tif 000009
【図８】
2018007168.tif 000010
【図９】
2018007168.tif 000011
【図１０】
2018007168.tif 000012
【図１１】
2018007168.tif 000013