JP2023010648A - 秘匿取引のための方法およびシステム - Google Patents

秘匿取引のための方法およびシステム Download PDF

Info

Publication number
JP2023010648A
JP2023010648A JP2022108358A JP2022108358A JP2023010648A JP 2023010648 A JP2023010648 A JP 2023010648A JP 2022108358 A JP2022108358 A JP 2022108358A JP 2022108358 A JP2022108358 A JP 2022108358A JP 2023010648 A JP2023010648 A JP 2023010648A
Authority
JP
Japan
Prior art keywords
note
transaction
secret
public
balance
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
Application number
JP2022108358A
Other languages
English (en)
Inventor
ホンスプ ソ
Hongsup So
ヨンウ イ
Yongwoo Lee
虎男 鷹見
Torao Takami
万里子 所沢
Mariko Shozawa
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.)
Line Plus Corp
Original Assignee
Line Plus 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 Line Plus Corp filed Critical Line Plus Corp
Publication of JP2023010648A publication Critical patent/JP2023010648A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3218Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

【課題】特定の口座のすべての取引または特定の取引を隠す、秘匿取引のための方法及びシステムを提供する。【解決手段】取引方法は、公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引及び秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成する段階、少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成する段階、ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請する段階及び取引を証明する段階を含む。ここで、ブロックチェーンには、公開バランス間の取引のためのアカウント(account)と、秘匿バランスを使用するUTXO(Unspent Transaction Output)モデルが共存する。【選択図】図9

Description

以下の説明は、秘匿取引のための方法およびシステムに関する。
中央銀行デジタル通貨(Central Bank Digital Currency:CBDC)は、中央銀行が発行する電子形態の通貨であって、CBDCの実現方式は、中央銀行または銀行がCBDC口座および関連取引情報を保管および管理する単一台帳方式と、多数の取引参加者が同じ取引記録を管理する分散台帳方式に分類される。
韓国登録特許第10-1862637号公報
特定の口座のすべての取引または特定の取引を隠すことができる取引方法およびシステムを提供する。
少なくとも1つのプロセッサを含むコンピュータ装置の取引方法であって、前記少なくとも1つのプロセッサにより、公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引、および秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成する段階、前記少なくとも1つのプロセッサにより、前記少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成する段階、前記少なくとも1つのプロセッサにより、前記ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請する段階、および前記少なくとも1つのプロセッサにより、前記取引を証明する段階を含む、取引方法を提供する。
一側面によると、公開バランスは、ブロックチェーン上に公開された情報として保存される公開ノートに記録され、秘匿バランスは、ブロックチェーン上に暗号化されて保存される秘匿ノートに記録されることを特徴としてよい。
他の側面によると、前記隠し秘匿取引は、受信者口座が送金を受け取る秘匿ノートに暗号化されて非公開となり、前記ゼロ知識証明ベースの証拠を生成する段階は、前記送金を受け取る秘匿ノートの暗号化された情報を知っているということを証明する証拠を生成することを特徴としてよい。
また他の側面によると、前記取引を証明する段階は、前記受信者口座、前記隠し秘匿取引の取引金額、およびランダムシードを記録するノートを生成する段階、前記生成されたノートを受信者の暗号鍵で暗号化して秘匿ノートを生成する段階、および前記生成された秘匿ノートをハッシュしたノートハッシュが前記送金を受け取る秘匿ノートのノートハッシュと等しいかを確認する段階を含むことを特徴としてよい。
また他の側面によると、前記ブロックチェーンネットワークの検証者によって、前記隠し秘匿取引の署名、前記送金を受け取る秘匿ノートのノートハッシュの存否と使用の有無、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴としてよい。
また他の側面によると、前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、変換される公開バランスの情報を有する公開ノートが生成され、前記送金を受信するために新たに生成された秘匿ノートのノートハッシュが前記生成された公開ノートに記録され、送信者の公開バランスから取引金額が差し引かれることを特徴としてよい。
また他の側面によると、前記公開秘匿取引は、送信者口座が非公開となり、前記公開秘匿取引による取引金額の送金後に前記送金を行う第1秘匿ノートの秘匿バランスが残っている場合には前記残っている秘匿バランスのための第2秘匿ノートが生成され、前記ゼロ知識証明ベースの証拠を生成する段階は、前記第1秘匿ノートが送信者の所有であり、前記第1秘匿ノートの残額が前記公開秘匿取引の取引金額以上であるかを証明する証拠を生成するが、前記第2秘匿ノートが生成される場合には前記第2秘匿ノートの暗号化された情報を知っているということを証明する証拠をさらに生成することを特徴としてよい。
また他の側面によると、前記取引を証明する段階は、前記第1秘匿ノートの秘匿バランスが前記取引金額よりも大きいか等しいかを検証する段階、前記第1秘匿ノートが送信者の所有であるかを検証する段階、前記第1秘匿ノートの有効性を検証する段階、前記第1秘匿ノートの秘匿バランスが前記取引金額よりも大きい場合に生成される第2秘匿ノートの有効性を検証する段階、前記第2秘匿ノートの秘匿バランスが前記第1秘匿ノートの秘匿バランスと前記取引金額の差であるかを検証する段階、前記第2秘匿ノートが送信者所有であるかを検証する段階、および前記公開秘匿取引の署名が送信者の署名であるかを検証する段階を含むことを特徴としてよい。
また他の側面によると、前記ブロックチェーンネットワークの検証者によって、前記第1秘匿ノートの存否と使用の有無、前記第2秘匿ノートの存否、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴としてよい。
また他の側面によると、前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、前記第1秘匿ノートが前記第1秘匿ノートのナリファイア(nullifier)に使用されたノートとして登録され、前記第2秘匿ノートが生成される場合、前記第2秘匿ノートのノートハッシュが前記ナリファイアに記録され、公開バランスのための受信者の公開ノートが生成され、受信者の公開バランスを前記公開秘匿取引の取引金額だけ増加することを特徴としてよい。
また他の側面によると、前記秘匿取引は、送信者口座、受信者口座、および取引金額が非公開となり、前記ゼロ知識証明ベースの証拠を生成する段階は、前記秘匿取引による送金を行う第1秘匿ノートが送信者の所有であり、前記第1秘匿ノートの残額の合計と前記秘匿取引によって新たに生成される第2秘匿ノートの残額の合計が等しいかを証明する証拠、前記第1秘匿ノートおよび前記第2秘匿ノートが有効かを証明する証拠、および前記秘匿取引の署名が送信者の署名であるかを証明する証拠を生成することを特徴としてよい。
また他の側面によると、前記取引を証明する段階は、前記第1秘匿ノートおよび前記第2秘匿ノートが有効であるかを検証する段階、前記第1秘匿ノートの秘匿バランスの合計と前記第2秘匿ノートの秘匿バランスの合計が等しいかを検証する段階、前記第1秘匿ノートがすべて送信者の所有であるかを検証する段階、前記第2秘匿ノートが少なくとも1つの受信者の所有であるかを検証する段階、および前記秘匿取引の署名が送信者の署名であるかを検証する段階を含むことを特徴としてよい。
また他の側面によると、前記ブロックチェーンネットワークの検証者によって、前記第1秘匿ノートの存否と使用の有無、前記第2秘匿ノートの存否、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴としてよい。
また他の側面によると、前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、前記第1秘匿ノートが前記第1秘匿ノートのナリファイア(nullifier)に使用されたノートとして登録され、前記第2秘匿ノートが生成される場合、前記第2秘匿ノートのノートハッシュが前記ナリファイアに記録されることを特徴としてよい。
また他の側面によると、前記取引方法は、前記少なくとも1つのプロセッサにより、前記少なくとも1つの取引を生成する前にオフ-チェーン(off-chain)によって受信者の暗号鍵および受信者アカウントを共有する段階をさらに含んでよい。
コンピュータ装置と結合して前記方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録された、コンピュータプログラムを提供する。
前記方法をコンピュータ装置に実行させるためのプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引、および秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成し、前記少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成し、前記ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請し、前記取引を証明することを特徴とする、コンピュータ装置を提供する。
特定の口座のすべての取引または特定の取引を隠すことができる。
本発明の一実施形態における、ネットワーク環境の例を示した図である。 本発明の一実施形態における、コンピュータ装置の例を示したブロック図だ。 本発明の一実施形態における、UTXOの構造の例を示した図である。 本発明の一実施形態における、UTXOの構造の例を示した図である。 本発明の一実施形態における、隠し秘匿取引の例を示した図である。 本発明の一実施形態における、公開秘匿取引の例を示した図である。 本発明の一実施形態における、秘匿取引の例を示した図である。 本発明の一実施形態における、秘匿取引の例を示した図である。 本発明の一実施形態における、取引方法の例を示したフローチャートである。
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
本発明の実施形態に係る取引システムは、少なくとも1つのコンピュータ装置によって実現されてよい。このとき、コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の実施形態に係る取引方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合して取引方法をコンピュータに実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。また、図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が図1のネットワーク環境に限定されることはない。
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、コンピュータ、ノート型PC(Personal Computer)、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットPCなどがある。一例として、図1では、電子機器110の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器110は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(Personal Area Network)、LAN(Local Area Network)、CAN(Campus Area Network)、MAN(Metropolitan Area Network)、WAN(Wide Area Network)、BBN(BroadBand Network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、取引(一例として、送金)サービス、決済サービス、仮想取引所サービス、リスクモニタリングサービス、インスタントメッセージングサービス、ゲームサービス、グループ通話サービス(または、音声会議サービス)、メッセージングサービス、メールサービス、ソーシャルネットワークサービス、地図サービス、翻訳サービス、金融サービス、検索サービス、コンテンツ提供サービスなど)を提供するシステムであってよい。
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、図2に示したコンピュータ装置200によって実現されてよい。
このようなコンピュータ装置200は、図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(Random Access Memory)、ROM(Read Only Memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではなく、通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
通信インタフェース230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信インタフェース230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250のうちの少なくとも1つは、コンピュータ装置200と1つの装置で構成されてもよい。例えば、スマートフォンのように、タッチスクリーン、マイク、スピーカなどがコンピュータ装置200に含まれた形態で実現されてよい。
また、他の実施形態において、コンピュータ装置200は、図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、データベースなどのような他の構成要素をさらに含んでもよい。
本発明の実施形態に係る取引方法および取引システムは、中央銀行デジタル通貨(Central Bank Digital Currency:CBDC)を利用する取引に関し、ゼロ知識証明(Zero-Knowledge Proof:ZKP)を利用して特定の口座のすべての取引または特定の取引を隠すことができるようにする。ここで、取引を隠すということは、送金人(送信者)、受取人(受信者)、および取引金額のうちの少なくとも1つを非公開状態にして取引を処理することを意味してよい。
ゼロ知識証明は、暗号理論において、ある人物がある事項(statement)が真であるということを相手に証明するときに、その文章の真偽以外の知識は何も公開されないようにするインタラクティブな手法を意味する。ある文章が真であることを証明しようとする側を証明者(prover)と呼び、証明過程に参加して証明者と情報をやり取りする側を検証者(verifier)と呼ぶ。ゼロ知識証明に参加する当事者が相手を騙そうとする目的でプロトコルを任意に変更する場合、当事者は不正直であるまたは正直でない(dishonestあるいはcheating)と呼ばれる。この他の場合は正直と呼ばれる。ゼロ知識証明は、次のような3つの性質を満たす必要がある。
- 完全性(completeness):ある文章が真であれば、正直な証明者は正直な検証者にこの事実を納得させることができなければならない。
- 健全性(soundness):ある文章が偽であれば、いかなる不正直な証明者であっても、正直な検証者にこの文章が事実であると納得させることができてはならない。
- ゼロ知識性(zero-knowledgeness):ある文章が真であれば、検証者には文章の真偽以外は何も知られないようにしなければならない。
本発明の実施形態に係る取引方法および取引システムは、このようなゼロ知識証明を利用することにより、特定の口座のすべての取引または特定の取引を隠すことができる。
本発明の実施形態に係る取引方法および取引システムは、アカウント(account)ベースでありながら公開取引と非公開取引の両方が1つのブロックチェーンでなされるようにし、アカウントベースとUTXO(Unspent Transaction Output)ベースの両方の長所を有することができる。イーサリアムは、インターネットに接続さえできれば誰でもDApp(Decentralized Application)ネットワークに参加することができる構造であり、スマートコントラクトの使用が可能であるという長所がある。このようなイーサリアムは、アカウントバランスモデル(account balance model)を使用する。ここで、アカウントは、イーサリアム(Ethereum)の状態を構成するオブジェクトであってよい。一方、ビットコインは、イーサリアムとは異なりUTXOベースであって、取引の有効性を検査してコインの存在を確認する安全性および匿名性を有するという長所がある。
本発明の実施形態に係る取引方法および取引システムは、基本アカウントモデルにUTXOモデルを追加し、公開取引にはアカウントモデルを、秘匿取引にはUTXOモデルを使用する。秘匿取引時には、送金人、受取人、および取引金額のすべてを隠すことができる。このために、UTXOモデルにジーキャッシュ(zcash)方式が適用されてよい。このとき、バランス(balance、残額)は、公開バランス(公開残高)と秘匿バランス(秘匿残高)に区分されてよい。公開バランスは、所有主のバランスを確認することができる公開された情報であって、アカウントモデルであり、秘匿バランスは、所有主だけが知ることのできるバランスであって、UTXOモデルである。公開バランスと秘匿バランスは、1つのアカウントが両方を有してもよく、あるアカウントが公開バランスと秘匿バランスのうちの1つのバランス方式だけを使用するように構成してもよい。公開バランスから秘匿バランスに送金される場合、公開バランスは送金金額だけが消却され、秘匿バランスは送金金額だけが発行される。これとは反対に、秘匿バランスから公開バランスに送金される場合、秘匿バランスは送金金額だけが消却され、公開バランスは送金金額だけが発行される。公開バランスと秘匿バランスが相互に交換されれば、公開バランスの全通貨量と秘匿バランスの全通貨量は変更されるが、全体通貨量は変更されない。公開バランスと秘匿バランスの発行、消却される情報は、公開ノート(public note)に記録されて追跡することができる。
図3および図4は、本発明の一実施形態における、UTXOの構造の例を示した図である。UTXOモデルにおいて、ノートには、ノートの所有主情報(所有主アドレス(owner address))と残額(バランス(balance))が所有主の暗号鍵(encryptKey)で暗号化されて保存されてよい。図3では、所有主アドレス「A address」の第1ノート310、所有主アドレス「B address」の第2ノート320、および所有主アドレス「C address」の第3ノート330を示している。このとき、図3では、第1ノート310の所有主情報「A address」と残額「1000」が暗号化されて保存される部分を、暗号化されたボディー(encrypt Body([]byte))で表現している。ノートの暗号化されたボディーに暗号化されて保存される情報は、所有主アドレス(owner address)、残額の値(value)、およびランダムハッシュ値(または、以下で説明するランダムシード(RandomSeed))を含んでよい。ただし、図3では、ランダムハッシュ値は省略した。
また、このようなノートが生成されることが確定したブロックの番号(block height)が、UTXOの実行の可否を記録するために公開ノートに含まれて活用されてよい。このようなブロック番号については、以下でさらに詳しく説明する。
ノートのコミットメント(commitments)は、以前に派生したノートのハッシュリストであってよい。複数のノートでハッシュが集まった場合には2つ以上のハッシュが存在することがあり、この場合、ハッシュに含まれた値の合計が現在のノートの残額の等しくなければならない。以前のノートが分割される場合には1つのコミットメントが存在してよく、ブロック生成報酬やコイン鋳造のように無からノートが生成される場合には、空のコミットメント(empty commitment)またはゼロハッシュ(zero hash)が記録されてよい。図4では、所有主アドレス「C address」の第3ノート330と所有主アドレス「D address」の第4ノート410によって所有主アドレス「E address」の第5ノート420が生成された例を示している。このとき、第5ノート420のコミットメントには、第3ノート330のハッシュと第4ノート410のハッシュが含まれてよく、第5ノート420のコミットメントに含まれたハッシュに含まれた値の合計(1000+500=1500)は、第5ノート420の残額1500と等しくなければならない。
ノートのナリファイア(nullifiers)には該当のノートが使用され、他のノートが生成される場合には派生したノートのハッシュが追加されてよい。所有だけが変更される場合や複数の異なるノートと併せて1つのノートとして集められる場合には、1つのナリファイアが設定されてよい。現在のノートの残額を分割した場合、複数のナリファイアが追加されてよい。このとき、ナリファイアに該当するすべてのノートの残額の合計は、現在のノートの残額と等しくなければならない。ナリファイアがナル(null)である場合にはまだ消費されていないノートとなり、これを取引に使用してよい。消却されたり秘匿バランスが公開バランスに変換されたりした場合には、ゼロハッシュが入力されてよい。図4では、所有主アドレス「E address」の第5ノート420が所有主アドレス「F address」の第6ノート430、および所有主アドレス「G address」の第7ノート440に分割された例を示している。このとき、第5ノート420のナリファイアには、第5ノート420から派生した第6ノート430のハッシュと第7ノート440のハッシュが追加されてよい。この場合にも、第5ノート420のナリファイアに含まれたハッシュの値の合計(1200+300=1500)は、第5ノート420の残額1500と等しくなければならない。
本発明の実施形態では公開バランスと秘匿バランスが存在するため、このようなUTXOの構造のノートも、本発明の実施形態では公開ノートと秘匿ノートに分類されてよい。
秘匿ノートは、実際の所有主と値(一例として、残額)の情報が含まれた構造体であって、ブロックチェーン上には暗号化されたバイナリーが保存されてよい。暗号化および復号化のための暗号鍵によって秘匿ノートが暗号化および復号化されてよい。暗号鍵としては署名キーとは異なるキーが使用されてよい。秘匿ノートは暗号鍵で暗号化されてナリファイアに登録されてよい。暗号化される内容は、所有主アドレス(owner address)、残額の値(value)、およびノートを暗号化するときに内容を類推できないようにするために使用される任意の値として選定されたランダムシード(randomSeed)を含んでよい。
公開ノートは、所有主と発行または消却される公開バランスの情報を含んだ構造体であって、チェーンには公開された情報として保存されてよい。公開ノートは、秘匿ノートを新たに発行するときに公開バランスが消却されるか、秘匿ノートの消却によって公開バランスが発生するときに生成されてよい。公開ノートに含まれる内容は、所有主アドレス(owner address)、残額の値(value)、ブロック番号(block height)、および取引インデックス(transaction index)を含んでよい。ブロック番号は、該当の公開ノートが生成されるブロックの高さとして該当の公開ノートが生成されたブロックの情報を記録し、同じ公開ノートが生成されないようにするための目的として使用されてよい。また、取引インデックスは、同じ所有主が同じ残額で同じブロックを生成する場合を区分するために、ブロックで各取引を区分するために使用されてよい。
ノートハッシュも、秘匿ノートハッシュと公開ノートハッシュに区分されてよい。
秘匿ノートハッシュは、secret note hash=s+hash(encrypt(secret note))のように、秘匿ノートを暗号化した値をハッシュして生成されてよい。このようなノートハッシュは、ZKP証明者が生成される秘匿ノートと暗号化されたデータの改ざんを防ぐために暗号化されたデータのハッシュで生成されてよい。ブロック番号はブロックが確定されなければ分からないため、秘匿ノートハッシュを生成するときには使用されず、公開ノートハッシュと区分するために秘匿ノートハッシュの前に区分値として「s」を付けてよい。
公開ノートハッシュは、public note hash=p+hash(owner address、value、block height、transaction index)のように、ブロックチェーンで検証が完了した後、変更された状態情報を更新するときに生成されてよい。公開ノートハッシュは、秘匿ノートハッシュと区分するために公開ノートハッシュの前に区分値として「p」を付けてよい。
ブロックに記録される値は、取引情報とZKPの証拠(proof)の検証結果(検証成功または検証失敗)を含んでよい。
それぞれの取引は、隠し秘匿取引(Hide Secret Transaction)、公開秘匿取引(Public Secret Transaction)、および秘匿取引(Secret Transction)のAPIで構成されてよい。ここで、隠し秘匿取引は公開バランスから秘匿バランスに送金する取引を、公開秘匿取引は秘匿バランスから公開バランスに送金する取引を、秘匿取引は秘匿バランスから秘匿バランスに送金する取引をそれぞれ意味してよい。
隠し秘匿取引と公開秘匿取引の場合、公開バランスの公開される情報を変更しなければならないため、転換される金額と情報は隠すことができない。一例として、隠し秘匿取引は、受信者の情報は隠すことができるが、送信者の情報と取引金額は隠すことができず、公開秘匿取引は、送信者の情報は隠すことができるが、受信者の情報と取引金額は隠すことができない。しかし、秘匿取引の場合には、送信者、受信者、および取引金額すべてを隠すことができる。
先ず、公開取引は、以下の(1)~(7)のような情報を含んでよい。
(1)from:送信者口座(または、取引を送るアドレス、署名する主体、送信者)
(2)to:受信者口座(または、送金を受信するアドレス)
(3)value:取引金額(送金金額)
(4)vin:送金するUTXOノート(in_note)のリスト
- note_hash:ノートハッシュ
(5)vout:送金されるUTXOノート(out_note)のリスト
- note_encrypt_data:ノートの暗号化されたデータ
- note_encrypt_key:ノートを暗号化したキー(公開される情報であることから、匿名性のためにone-timeaddressに適用可)
- note_hash:ノートハッシュ
(6)proof:隠される情報のZKP証拠
(7)signature:取引の送信者の署名
図5は、本発明の一実施形態における、隠し秘匿取引の例を示した図である。図5は、所有主アドレス(owner address)、残額の値(value)、ブロック番号(block height)、および取引インデックス(transaction index)を含む公開ノート510から、所有主アドレス、残額の値、およびランダムシード(randomSeed)を含む秘匿ノート520への送金の例を示している。この場合、公開ノート510が含む所有主アドレスは送信者のアドレスであってよく、秘匿ノート520が含む所有主アドレスは受信者のアドレスであってよい。また、公開ノート510の残額は公開バランスを、秘匿ノート520の残額は秘匿バランスを意味してよい。公開ノート510から派生した秘匿ノート520は、以前のノートである公開ノート510のノートハッシュをコミットメントに保存してよい。このとき、以前のノートは公開ノート510であるため、ノートハッシュの前には区分値の「p」が付与されてよい。
ここで、隠し秘匿取引は、上述したように、公開バランスから秘匿バランスに送金する取引を意味してよい。言い換えれば、隠し秘匿取引は、送信者の公開バランスから他の誰かの秘匿バランスに送金する機能であってよい。
隠し秘匿取引では、送信者の口座(account)と取引金額(value)は公開されるが、受信者口座(account)と変換されるUTXOノートは非公開となる。送金金額によって受信者口座の所有である新たなUTXOノートの金額を類推することができるため、送金するときに保有した秘匿バランスのUTXOノートを含ませて送金することにより、新たに生成されるUTXOノートの金額の類推ができないようにしてよい。
隠し秘匿取引では、ZKPによって新たに生成される秘匿バランスのUTXOノートが取引金額(value)で隠されたということの証明、所有主が該当の金額を所有して受信者のノートを生成することの証明を含んでよい。新たに生成される秘匿ノートは公開バランスに変換される値であるため、UTXOに新たに発行されるノートで構成されてよく、公開バランスは取引金額だけが消却されてよい。したがって、全体公開バランスの流通量も取引金額だけが消却されてよい。
隠し秘匿取引で必要な情報は、以下のとおりとなる。
(1)from:送信者口座
(2)to:隠し
(3)value:取引金額(送金する公開バランスの金額)
(4)vin:隠し
(5)vout:新たに生成される1つ以上のUTXOノート
(6)proof:voutのUTXOノートが特定のユーザの所有であって取引金額に該当するノートであることを証明するZKP証拠
(7)signature:取引の送信者の署名
一方、隠し秘匿取引のために、送信者は、取引を生成し、ZKPで証明する前に受信者の暗号鍵と受信者アカウントに関する情報をオフ-チェーン(off-chain)によって受信者に要請して共有しなければならない。
また、隠し秘匿取引のために、送信者がZKPで証明しなければならない情報は、以下のとおりとなる。
- 新たに生成されるUTXOノートの暗号化された情報を知っているということの証明
- zkp input:out_note(owner address、value、randomSeed)、AES_secret_key、out_note_encryptKey、out_note_hash、ここで、out_noteは隠されてよい。
証明内容は、以下のとおりとなる。
- 所有主アドレス、取引金額、およびランダムシードでUTXOノートを生成
- out_noteを受信者の暗号鍵で暗号化して暗号化されたノートを生成
- 暗号化されたデータをハッシュしたハッシュ値(hash(encryptNote))がutxo_hashと等しいかを確認
一方、検証者は、取引の検証のために、先ず、取引の署名(signature)を検証してよく、utxo_hashの存否と使用の有無を確認してよい。この後、検証者は、ZKP証拠検証によってUTXOの所有証明を検証してよい。
ブロックチェーンでは、検証が成功的に完了すれば、変換される公開バランス情報(取引金額)を有する公開ノートを生成して状態と新たなUTXOノートを状態に追加し、送信者の公開バランスから取引金額だけ差し引いてよい。
図6は、本発明の一実施形態における、公開秘匿取引の例を示した図である。図6は、所有主アドレス、残額の値(A value)、およびランダムシードを含む秘匿ノート610から、所有主アドレス、残額の値(B value)、ブロック番号、および取引インデックスを含む公開ノート620への送金の例を示している。このとき、秘匿ノート610の残額の値(A value)が取引金額に対応するB valueよりも大きい場合、(A-B)valueを有する新たな秘匿ノート630が生成されてよい。秘匿ノート610の残額の値(A value)が取引金額に対応するB valueよりも小さい場合には取引は成立せず、秘匿ノート610の残額の値(A value)が取引金額に対応するB valueと等しい場合には、取引は成立するが、新たな秘匿ノート630は生成されない。
ここで、秘匿ノート610から派生した公開ノート620は、コミットメントがないため、以前のノートである秘匿ノート610のノートハッシュを保存する空間がない。このとき、公開ノート620にはノートハッシュ(p+public note hash)が割り当てられてよく、秘匿ノート610のナリファイアには、このような公開ノート620のノートハッシュ(p+note hash)が記録されてよい。上述したように、区分値「p」は、該当のノートハッシュが公開ノートのノートハッシュであることを示すために使用されてよい。公開秘匿取引によって新たな秘匿ノート630が生成されれば、秘匿ノート630にはノートハッシュ(s+note hash)が割り当てられてよい。このとき、秘匿ノート610のナリファイアには、このような秘匿ノート630のノートハッシュが記録されてよい。また、秘匿ノート630のコミットメントには、秘匿ノート610のノートハッシュが記録されてよい。上述したように、区分値「s」は、該当のノートハッシュが秘匿ノートのノートハッシュであることを示すために使用されてよい。このように、1つの秘匿ノートのコミットメントには、以前のノートを示すためのポイントとして以前ノートのノートハッシュが記録されてよく、ナリファイアには、次のノートを示すためのポイントとして次のノートのノートハッシュが記録されてよい。このように、コミットメントとナリファイアに記録されたノートハッシュにより、まるで連結リスト(linked list)のように秘匿ノートの相互参照が可能となる。
この場合、秘匿ノート610が含む所有主アドレスは送信者のアドレスであってよく、公開ノート620が含む所有主アドレスは受信者のアドレスであってよい。
このとき、公開秘匿取引は、上述したように、秘匿バランスから公開バランスに送金する取引を意味してよい。言い換えれば、公開秘匿取引は、送信者の秘匿バランスから他の誰かの公開バランスに送金する機能であってよい。
公開秘匿取引において、受信者の口座と取引金額は公開されるが、送信者の口座は公開されない。公開秘匿取引では、ZKPにより、送信者が該当のUTXOノートの所有主で合っているか、取引金額には問題がないか、さらに秘匿バランスが取引金額よりも大きい場合には取引金額を引いた残額によって新たに生成されるUTXOノートが有効であるかを証明しなければならない。
公開秘匿取引で必要な情報は、以下のとおりとなる。
(1)from:隠し
(2)to:受信者口座
(3)value:送金する公開バランスの金額
(4)vin:送信者所有のUTXOノートハッシュ
(5)vout:新たに生成される1つ以上のUTXOノート
- 1番目のUTXOノートは、受信者所有の消却されるUTXOノートの公開バランスに変換され、直ぐに消却される
(6)proof:vinが送信者の所有であり、voutが特定のユーザの所有であり、vinの金額はvoutの金額と送金金額の合計と等しく、該当の公開秘匿取引を送信者が生成したという署名を証明するZKP証拠
(7)signature:隠し
一方、公開秘匿取引のために、送信者は、取引を生成してZKPで証明する前に、受信者アカウントに関する情報をオフ-チェーン(off-chain)によって受信者に要請して共有しなければならない。
また、公開秘匿取引のために、送信者がZKPで証明しなければならない情報は、以下のとおりとなる。
- vinの秘匿ノートが送信者所有であり、取引金額以上であるかを証明し、送金後に残額がある場合には新たに生成されるUTXOノートの暗号化された情報を知っているということを証明
- 該当の公開秘匿取引を送信者が生成したという署名を証明
- zkp input:in_note(owner address、value、randomSeed)、in_note_AES_secret_key、in_note_encryptKey、in_note_hash、out_note(owner address、value、randomSeed)、out_note_AES_secret_key、out_note_encryptKey、out_note_hash、value、送信者の公開キー(sender_pk)、送信者の署名(signature)、取引ハッシュ(tx_hash)、ここで、in_note()、out_note()、送信者の公開キーおよび送信者の署名は隠されてよい。
証明内容は、以下のとおりとなる。
- in_noteの金額が取引金額よりも大きいかの検証
- in_noteが送信者所有であるかの検証
- in_noteの有効性検証:ノートを公開された暗号鍵で暗号化した後、生成したハッシュがノートハッシュ(note_hash)で合っているかを検証
- out_noteの有効性検証:ノートを公開された暗号鍵で暗号化した後、生成したハッシュがノートハッシュ(note_hash)で合っているかを検証
- out_noteがin_noteの取引金額の差額であるかを検証
- out_noteが送信者所有であるかを検証
- 該当の取引の署名が送信者の署名であるかを検証
一方、検証者は、in_noteの存否と使用の有無を検証(in_noteが存在しなければならず、使用されていてはならない)してよい。また、検証者は、out_noteの存否を検証(存在してはならない)してよい。また、検証者は、送信ZKPの証拠を検証してよい。
ブロックチェーンでは、検証が成功的に完了すれば、in_noteは、使用されたノートにナリファイアを登録して新たなout_noteを追加し、公開バランスの公開ノートを生成して追加してよい。また、ブロックチェーンでは、受信者の公開バランスを取引金額だけ増加してよい。
図7および図8は、本発明の一実施形態における、秘匿取引の例を示した図である。秘匿取引は、上述したように、秘匿バランスから秘匿バランスに送金する取引を意味してよい。秘匿取引では、送金口座(送信者のアドレス)、受信口座(受信者のアドレス)、および取引金額のすべてが公開されない。
秘匿取引では、ZKPで送るUTXOノートの有効性と所有主検証、送る金額、さらに送る金額によって新たに生成されるUTXOノートの有効性を検証しなければならず、このようなすべての情報を署名した署名の検証も隠されていることを証明しなければならない。
秘匿取引では、複数の秘匿ノートから1つの秘匿ノートに送金がなされてもよく、1つの秘匿ノートから複数の秘匿ノートに送金がなされてもよい。図7は、n個の秘匿ノート710から1つの秘匿ノート720に送金がなされる例を示しており、図8は、1つの秘匿ノート810から複数の秘匿ノート820および830に送金がなされる例を示している。図7に示した1つの秘匿ノート720は、以前のノート710それぞれのノートハッシュをコミットメントに保存してよく、図8に示した複数の秘匿ノート820および830それぞれは、1つの秘匿ノート810のノートハッシュをそれぞれコミットメントに保存してよい。
秘匿取引で必要な情報は、以下のとおりとなる。
(1)from:隠し
(2)to:隠し
(3)value:隠し
(4)vin:送信者所有の秘匿ノートハッシュ
(5)vout:新たに生成される1つ以上の秘匿ノート
(6)proof:vinの送信者所有の秘匿ノートからvoutの秘匿ノートに取引金額だけ送金され、該当の取引を送信者が生成したという署名を証明するZKP証拠
(7)signature:隠し
一方、秘匿取引のために送信者は、取引を生成してZKPで証明する前に、受信者の暗号鍵と受信者アカウントに関する情報をオフ-チェーン(off-chain)によって受信者に要請して共有しなければならない。
また、秘匿取引のために送信者がZKPで証明しなければならない情報は、以下のとおりとなる。
- vinの秘匿ノートが送信者所有であり、新たに生成される秘匿ノートと合計(金額の合計)が同じであるか証明
- 各秘匿ノートが有効であるか証明
- 該当の送金取引の署名が送信者の署名であるか証明
- zkp input:in_note(owner、value、randomSeed)list、in_note_AES_secret_keylist、in_note_encryptKeylist、in_note_hashlist、out_note(owner、value、randomSeed)list、out_note_AESsecretkey list、out_note_encryptKey list、out_note_hash list、取引金額(value)、送信者の公開キー(sender_pk)、送信者の署名(signature)、取引ハッシュ(tx_hash)、ここで、in_note list、out_note list、取引金額、送信者の公開キー、および送信者の署名は隠されてよい。
証明内容は、以下のとおりとなる。
- in_noteとout_noteの両方が有効であるか検証:ノートの公開された暗号鍵で暗号化した後、生成されたハッシュがノートハッシュ(note_hash)で合っているかを検証
- in_noteのすべての金額の合計とout_noteのすべての金額の合計が等しいか検証
- in_noteがすべて送信者所有であるか検証
- out_noteが受信者の所有であるか検証:受信者は最大2であってよい
- 該当の取引の署名が送信者の署名であるか検証
一方、検証者は、in_noteの存否と使用の有無を検証(in_noteが存在しなければならず、使用されていてはならない)してよい。また、検証者は、out_noteの存否を検証(存在してはならない)してよい。また、検証者は、送信ZKPの証拠を検証してよい。
ブロックチェーンでは、検証が成功的に完了すれば、in_noteは、使用されたノートでナリファイアを登録して新たなout_noteを追加してよい。
ブロックチェーンにおいて、ノートの値の照会は、ノートハッシュを利用して照会を要請してよい。
隠し秘匿取引(Hide Secret Transaction)、公開秘匿取引(Public Secret Transaction)、および秘匿取引(Secret Transction)のAPIそれぞれに対するセットアップ(setup)で証明キーpkと検証キーvkが生成されてよい。生成された証明キーpkは証明者に、生成された検証キーvkは検証者に伝達されてよい。検証者は各APIの証明を処理してよい。
図9は、本発明の一実施形態における、取引方法の例を示したフローチャートである。本実施形態に係る取引方法は、送金を行う送信者端末機を実現するコンピュータ装置200によって実行されてよい。このとき、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのコンピュータプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に保存されたコードが提供する制御命令にしたがってコンピュータ装置200が図9の方法に含まれる段階910~950を実行するようにコンピュータ装置200を制御してよい。
段階910で、コンピュータ装置200は、オフ-チェーン(off-chain)によって受信者の暗号鍵および受信者アカウントを共有してよい。ここで、オフ-チェーンとは、取引が処理されるブロックチェーンネットワーク以外のネットワークを意味してよい。
段階920で、コンピュータ装置200は、公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引、および秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成してよい。このとき、公開バランスは、ブロックチェーン上に公開された情報として保存される公開ノートに記録されてよく、秘匿バランスは、ブロックチェーン上に暗号化されて保存される秘匿ノートに記録されてよい。上述したように、公開ノートには、公開バランスの他に所有主アドレス、ブロック番号、および取引インデックスがさらに記録されてよく、秘匿ノートには、秘匿バランスの他に所有主アドレスとランダムシードがさらに記録されてよい。
段階930で、コンピュータ装置200は、少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成してよい。
隠し秘匿取引は、受信者口座が送金を受け取る秘匿ノートに暗号化されて非公開となってよい。この場合、コンピュータ装置200は、段階930で、送金を受け取る秘匿ノートの暗号化された情報を知っているということを証明する証拠を生成してよい。このとき、送金を受け取る秘匿ノートの所有主情報は受信者アカウントであってよく、隠し秘匿取引によって新たに生成される秘匿ノートの秘匿バランスは隠し秘匿取引の取引金額であってよい。言い換えれば、隠し秘匿取引では、受信者口座と受信者口座で送金を受け取る秘匿ノートは公開されないが、送信者がこのような秘匿ノートの暗号化された情報(所有主情報と取引金額)を知っていることを証明することによって非公開の取引が成立してよい。
公開秘匿取引は、送信者口座が非公開となってよい。一方、秘匿バランスから公開バランスへの送金時に秘匿バランスが取引金額以上である場合、言い換えれば、公開秘匿取引による取引金額の送金後に送金を行う第1秘匿ノートの秘匿バランスが残っている場合、残っている秘匿バランスのための第2秘匿ノートが生成されてよい。この場合、コンピュータ装置200は、段階930で、第1秘匿ノートが送信者の所有であり、第1秘匿ノートの残額(残っている秘匿バランス)が公開秘匿取引の取引金額以上であるかを証明する証拠を生成してよい。第2秘匿ノートが生成される場合には、生成された第2秘匿ノートの暗号化された情報を知っているということを証明する証拠をさらに生成してよい。第2秘匿ノートの所有主情報は送信者自身のアドレスであるはずであり、第2秘匿ノートの秘匿バランスは第1秘匿ノートの秘匿バランスから取引金額を引いた残りであるはずであるため、送信者はこのような第2秘匿ノートの暗号化された情報を知っており、これによって送信者は、ゼロ知識証明をベースとして第2秘匿ノートの暗号化された情報を知っているということを証明する証拠を生成してよい。
秘匿取引は、送信者口座、受信者口座、および取引金額が非公開となってよい。この場合、コンピュータ装置200は、段階930で、秘匿取引による送金を行う第1秘匿ノートが送信者の所有であり、第1秘匿ノートの残額の合計と秘匿取引によって新たに生成される第2秘匿ノートの残額の合計が等しいかを証明する証拠、第1秘匿ノートおよび第2秘匿ノートが有効であるかを証明する証拠、および秘匿取引の署名が送信者の署名であるかを証明する証拠を生成してよい。
段階940で、コンピュータ装置200は、ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請してよい。ここで、ブロックチェーンネットワークには、秘匿バランスを利用した取引(一例として、隠し秘匿取引、公開秘匿取引、および秘匿取引)のためのUTXO(Unspent Transaction Output)モデルと、公開バランス間の取引のためのアカウントモデルがともに使用されてよい。
このとき、隠し秘匿取引の場合、ブロックチェーンネットワークの検証者によって、隠し秘匿取引の署名、送金を受け取る秘匿ノートのノートハッシュの存否と使用の有無、およびゼロ知識証明ベースの証拠がそれぞれ検証されてよい。このとき、検証者による検証が成功的に完了することにより、ブロックチェーンネットワークで変換される公開バランスの情報を有する公開ノートが生成され、生成された公開ノートに送金を受信するために新たに生成された秘匿ノートのノートハッシュが記録され、送信者の公開バランスから取引金額が差し引かれることにより、該当の隠し秘匿取引がブロックチェーンネットワークで処理されてよい。
公開秘匿取引の場合、ブロックチェーンネットワークの検証者によって、第1秘匿ノートの存否と使用の有無、第2秘匿ノートの存否、およびゼロ知識証明ベースの証拠がそれぞれ検証されてよい。このとき、検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークで第1秘匿ノートが第1秘匿ノートのナリファイア(nullifier)に使用されたノートとして登録され、第2秘匿ノートが生成される場合、第2秘匿ノートのノートハッシュがナリファイアに記録され、公開バランスのための受信者の公開ノートが生成され、受信者の公開バランスが公開秘匿取引の取引金額だけ増加されることにより、該当の公開秘匿取引がブロックチェーンネットワークで処理されてよい。
秘匿取引の場合、ブロックチェーンネットワークの検証者によって、第1秘匿ノートの存否と使用の有無、第2秘匿ノートの存否、およびゼロ知識証明ベースの証拠がそれぞれ検証されてよい。このとき、検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークで第1秘匿ノートが第1秘匿ノートのナリファイア(nullifier)に使用されたノートとして登録され、第2秘匿ノートが生成される場合、第2秘匿ノートのノートハッシュがナリファイアに記録されることにより、該当の秘匿取引がブロックチェーンネットワークで処理されてよい。
段階950で、コンピュータ装置200は、取引を証明してよい。
隠し秘匿取引の場合、コンピュータ装置200は、受信者口座、隠し秘匿取引の取引金額、およびランダムシードを記録するノートを生成してよく、生成された秘匿ノートを受信者の暗号鍵で暗号化して秘匿ノートを生成してよい。このような秘匿ノートは、隠し秘匿取引によって生成されたUTXOの秘匿ノートと等しいはずである。したがって、コンピュータ装置200は、生成された秘匿ノートをハッシュしたノートハッシュが送金を受け取る秘匿ノートのノートハッシュと等しいかを確認することにより、該当の取引を証明してよい。
公開秘匿取引の場合、コンピュータ装置200は、第1秘匿ノートの秘匿バランスが取引金額よりも大きいか等しいかを検証し、第1秘匿ノートが送信者の所有であるかを検証し、第1秘匿ノートの有効性を検証し、第1秘匿ノートの秘匿バランスが取引金額よりも大きい場合に生成される第2秘匿ノートの有効性を検証し、第2秘匿ノートの秘匿バランスが第1秘匿ノートの秘匿バランスと取引金額の差であるかを検証し、第2秘匿ノートが送信者所有であるかを検証し、公開秘匿取引の署名が送信者の署名であるかを検証することにより、該当の取引を証明してよい。
秘匿取引の場合、コンピュータ装置200は、第1秘匿ノートおよび第2秘匿ノートが有効であるかを検証し、第1秘匿ノートの秘匿バランスの合計と第2秘匿ノートの秘匿バランスの合計が等しいかを検証し、第1秘匿ノートすべてが送信者所有であるかを検証し、第2秘匿ノートが少なくとも1つの受信者の所有であるかを検証し、秘匿取引の署名が送信者の署名であるかを検証することにより、該当の取引を証明してよい。
このように、本発明の実施形態によると、特定の口座のすべての取引または特定の取引(一例として、中央銀行デジタル通貨(Central Bank Digital Currency:CBDC)と関連する取引)を隠すことができる。
上述した装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(Arithmetic Logic Unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(Field Programmable Gate Array)、PLU(Programmable Logic Unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者であれば、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、望む動作をするように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipment)、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体は、コンピュータで実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピーディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって代替されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。

Claims (20)

  1. 少なくとも1つのプロセッサを含むコンピュータ装置の取引方法であって、
    前記少なくとも1つのプロセッサにより、公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引、および秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成する段階、
    前記少なくとも1つのプロセッサにより、前記少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成する段階、
    前記少なくとも1つのプロセッサにより、前記ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請する段階、および
    前記少なくとも1つのプロセッサにより、前記取引を証明する段階
    を含む、取引方法。
  2. 公開バランスは、ブロックチェーン上に公開された情報として保存される公開ノートに記録され、
    秘匿バランスは、ブロックチェーン上に暗号化されて保存される秘匿ノートに記録されること
    を特徴とする、請求項1に記載の取引方法。
  3. 前記ブロックチェーンネットワークには、前記少なくとも1つの取引のためのUTXOモデルと、公開バランス間の取引のためのアカウントモデルがともに使用されることを特徴とする、請求項1に記載の取引方法。
  4. 前記隠し秘匿取引は、受信者口座および送金を受け取る秘匿ノートが非公開となり、
    前記ゼロ知識証明ベースの証拠を生成する段階は、
    前記送金を受け取る秘匿ノートの暗号化された情報を知っているということを証明する証拠を生成すること
    を特徴とする、請求項1に記載の取引方法。
  5. 前記取引を証明する段階は、
    前記受信者口座、前記隠し秘匿取引の取引金額、およびランダムシードを記録するノートを生成する段階、
    前記生成された秘匿ノートを受信者の暗号鍵で暗号化して秘匿ノートを生成する段階、および
    前記生成された秘匿ノートをハッシュしたノートハッシュが、前記送金を受け取る秘匿ノートのノートハッシュと等しかを確認する段階
    を含むことを特徴とする、請求項4に記載の取引方法。
  6. 前記ブロックチェーンネットワークの検証者によって、前記隠し秘匿取引の署名、前記送金を受け取る秘匿ノートのノートハッシュの存否と使用の有無、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴とする、請求項4に記載の取引方法。
  7. 前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、
    変換される公開バランスの情報を有する公開ノートが生成され、
    前記生成された公開ノートに、前記送金を受信するために新たに生成された秘匿ノートのノートハッシュが記録され、
    送信者の公開バランスから取引金額が差し引かれること
    を特徴とする、請求項6に記載の取引方法。
  8. 前記公開秘匿取引は、送信者口座が非公開となり、
    前記公開秘匿取引による取引金額の送金後に前記送金を行う第1秘匿ノートの秘匿バランスが残っている場合、前記残っている秘匿バランスのための第2秘匿ノートが生成され、
    前記ゼロ知識証明ベースの証拠を生成する段階は、
    前記第1秘匿ノートが送信者の所有であり、前記第1秘匿ノートの残額が前記公開秘匿取引の取引金額以上であるかを証明する証拠を生成するが、前記第2秘匿ノートが生成される場合には前記第2秘匿ノートの暗号化された情報を知っているということを証明する証拠をさらに生成すること
    を特徴とする、請求項1に記載の取引方法。
  9. 前記取引を証明する段階は、
    前記第1秘匿ノートの秘匿バランスが前記取引金額よりも大きいか等しいかを検証する段階、
    前記第1秘匿ノートが送信者の所有であるかを検証する段階、
    前記第1秘匿ノートの有効性を検証する段階、
    前記第1秘匿ノートの秘匿バランスが前記取引金額よりも大きい場合に生成される第2秘匿ノートの有効性を検証する段階、
    前記第2秘匿ノートの秘匿バランスが前記第1秘匿ノートの秘匿バランスと前記取引金額の差であるかを検証する段階、
    前記第2秘匿ノートが送信者所有であるかを検証する段階、および
    前記公開秘匿取引の署名が送信者の署名であるかを検証する段階
    を含むことを特徴とする、請求項8に記載の取引方法。
  10. 前記ブロックチェーンネットワークの検証者によって、前記第1秘匿ノートの存否と使用の有無、前記第2秘匿ノートの存否、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴とする、請求項8に記載の取引方法。
  11. 前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、
    前記第1秘匿ノートが前記第1秘匿ノートのナリファイアに使用されたノートとして登録され、
    前記第2秘匿ノートが生成される場合、前記第2秘匿ノートのノートハッシュが前記ナリファイアに記録され、
    公開バランスのための受信者の公開ノートが生成され、
    受信者の公開バランスが前記公開秘匿取引の取引金額だけ増加されること
    を特徴とする、請求項10に記載の取引方法。
  12. 前記秘匿取引は、送信者口座、受信者口座、および取引金額が非公開となり、
    前記ゼロ知識証明ベースの証拠を生成する段階は、
    前記秘匿取引による送金を行う第1秘匿ノートが送信者の所有であり、前記第1秘匿ノートの残額の合計と前記秘匿取引によって新たに生成される第2秘匿ノートの残額の合計が等しいかを証明する証拠、前記第1秘匿ノートおよび前記第2秘匿ノートが有効であるかを証明する証拠、および前記秘匿取引の署名が送信者の署名であるかを証明する証拠を生成すること
    を特徴とする、請求項1に記載の取引方法。
  13. 前記取引を証明する段階は、
    前記第1秘匿ノートおよび前記第2秘匿ノートが有効であるかを検証する段階、
    前記第1秘匿ノートの秘匿バランスの合計と前記第2秘匿ノートの秘匿バランスの合計が等しいかを検証する段階、
    前記第1秘匿ノートがすべて送信者所有であるかを検証する段階、
    前記第2秘匿ノートが少なくとも1つの受信者の所有であるかを検証する段階、および
    前記秘匿取引の署名が送信者の署名であるかを検証する段階
    を含むことを特徴とする、請求項12に記載の取引方法。
  14. 前記ブロックチェーンネットワークの検証者によって、前記第1秘匿ノートの存否と使用の有無、前記第2秘匿ノートの存否、および前記ゼロ知識証明ベースの証拠がそれぞれ検証されることを特徴とする、請求項12に記載の取引方法。
  15. 前記検証者による検証が成功的に完了することにより、前記ブロックチェーンネットワークにおいて、
    前記第1秘匿ノートが前記第1秘匿ノートのナリファイアに使用されたノートとして登録され、
    前記第2秘匿ノートが生成される場合、前記第2秘匿ノートのノートハッシュが前記ナリファイアに記録されること
    を特徴とする、請求項14に記載の取引方法。
  16. 前記少なくとも1つのプロセッサにより、前記少なくとも1つの取引を生成する前にオフ-チェーンによって受信者の暗号鍵および受信者アカウントを共有する段階
    をさらに含む、請求項1に記載の取引方法。
  17. コンピュータ装置と結合して請求項1~16のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録された、コンピュータプログラム。
  18. 請求項1~16のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体。
  19. コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
    を含み、
    前記少なくとも1つのプロセッサにより、
    公開バランスから秘匿バランスへの送金のための隠し秘匿取引、秘匿バランスから公開バランスへの送金のための公開秘匿取引、および秘匿バランス間の送金のための秘匿取引のうちの少なくとも1つの取引を生成し、
    前記少なくとも1つの取引に対して非公開となる情報を知っているということを証明するためのゼロ知識証明ベースの証拠を生成し、
    前記ゼロ知識証明ベースの証拠を含む取引をブロックチェーンネットワークに要請し、
    前記取引を証明すること
    を特徴とする、コンピュータ装置。
  20. 公開バランスは、ブロックチェーン上に公開された情報に保存される公開ノートに記録され、
    秘匿バランスは、ブロックチェーン上に暗号化されて保存される秘匿ノートに記録されること
    を特徴とする、請求項19に記載のコンピュータ装置。
JP2022108358A 2021-07-07 2022-07-05 秘匿取引のための方法およびシステム Pending JP2023010648A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210088830A KR102671062B1 (ko) 2021-07-07 2021-07-07 보안 거래를 위한 방법 및 시스템
KR10-2021-0088830 2021-07-07

Publications (1)

Publication Number Publication Date
JP2023010648A true JP2023010648A (ja) 2023-01-20

Family

ID=85109968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022108358A Pending JP2023010648A (ja) 2021-07-07 2022-07-05 秘匿取引のための方法およびシステム

Country Status (2)

Country Link
JP (1) JP2023010648A (ja)
KR (1) KR102671062B1 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102180991B1 (ko) * 2018-11-07 2020-12-17 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 블록 체인 기밀 거래의 규제
CN111602161B (zh) * 2018-12-21 2023-08-22 创新先进技术有限公司 基于通用账户模型和同态加密的区块链数据保护
WO2019072317A2 (en) * 2019-01-31 2019-04-18 Alibaba Group Holding Limited NEGOTIATION OF CROSSED ASSETS IN BLOCKCHAIN NETWORKS
KR102000244B1 (ko) * 2019-04-02 2019-07-16 주식회사 한국정보보호경영연구소 형태보존 암호화가 적용된 영지식증명 기반의 블록체인 시스템 및 그의 제어 방법

Also Published As

Publication number Publication date
KR102671062B1 (ko) 2024-05-30
KR20230008322A (ko) 2023-01-16

Similar Documents

Publication Publication Date Title
JP7364724B2 (ja) ブロックチェーンIoT装置のためのオペレーティングシステム
CN109242675B (zh) 基于区块链的资产发布方法及装置、电子设备
CN111144881B (zh) 对资产转移数据的选择性访问
JP6966544B2 (ja) 匿名エントリを含む分散型データベースのための方法および装置
US20200273028A1 (en) System and method for information protection
KR101660627B1 (ko) 암호화 화폐의 거래를 보호하는 방법 및 장치
JP2022003536A (ja) デジタルコンテンツの制御及び配信のためのブロックチェーンにより実施される方法
JP2024073535A (ja) ブロックチェーンを用いる論理ゲート機能の実装
WO2019109003A1 (en) Blockchain system for confidential and anonymous smart contracts
JP6729334B2 (ja) トランザクション管理方法、トランザクション管理プログラム及びトランザクション管理装置
TW202036335A (zh) 在區塊鏈網路上實施轉移之電腦實施系統及方法
US20210344500A1 (en) Computer-implemented system and method for transferring access to digital resource
KR20220093198A (ko) 전용 및 개방형 블록체인을 이용한 거래의 수행
CN113875188A (zh) 哈希函数攻击
TW202101325A (zh) 基於區塊鏈智慧合約的轉帳方法及系統
KR102074381B1 (ko) 블록체인 기반의 익명 거래 수행 방법, 장치 및 기록 매체
JP7304963B2 (ja) プログラム、データ認証方法、およびコンピュータ装置
Mohanty et al. n-htlc: Neo hashed time-lock commitment to defend against wormhole attack in payment channel networks
US20240202710A1 (en) Method and system for payment for central bank digital currency
JP2021064891A (ja) コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法
KR20210058784A (ko) 탈중앙화 아이디 기반의 가상 자산 서비스 제공 방법 및 이를 이용한 가상 자산 서비스 제공 서버
JP7254954B2 (ja) ブロックチェーンで生成されたデータを認証する方法およびシステム
Suliyanti et al. Evaluation of hash rate-based double-spending based on proof-of-work blockchain
KR102003731B1 (ko) 가상머신을 이용한 암호화폐 보호 시스템 및 방법
JP2023010648A (ja) 秘匿取引のための方法およびシステム