JP2021103516A - 取引システム、取引装置、取引方法及び取引プログラム - Google Patents
取引システム、取引装置、取引方法及び取引プログラム Download PDFInfo
- Publication number
- JP2021103516A JP2021103516A JP2020203408A JP2020203408A JP2021103516A JP 2021103516 A JP2021103516 A JP 2021103516A JP 2020203408 A JP2020203408 A JP 2020203408A JP 2020203408 A JP2020203408 A JP 2020203408A JP 2021103516 A JP2021103516 A JP 2021103516A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- information
- argument
- trading
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 82
- 230000006870 function Effects 0.000 description 56
- 230000008569 process Effects 0.000 description 38
- 238000003860 storage Methods 0.000 description 28
- 238000012795 verification Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000005065 mining Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
このようなデジタルコンテンツデータの売買取引では、購入者が対価を支払った後で販売者がコンテンツデータのデータを購入者に提供し、あるいは販売者がデータを提供したあとで購入者が対価を支払うことが典型的に行われる。
すなわち、相対での売買取引とは異なり、商品としてのデジタルコンテンツデータの提供と対価の支払いのタイミングにタイムラグがある。このことが不適切な売買取引を様々に引き起こし得る。一つには商品または対価の持ち逃げである。
購入者は対価を支払ったにも係わらず販売者が商品(デジタルコンテンツデータ)を提供しなかったり、販売者が商品を提供したにも係わらず購入者が対価を支払わなかったりする。
近年では、クラウドソーシングと呼ばれる、コンテンツデータの制作者と制作依頼者のマッチングを行い、制作業務の委託を行うサービスが普及している。
このようなサービスにおいても、制作されたコンテンツデータ(成果物)と対価のやり取りに関してトラブルが起きるケースがある。
例えば、成果物を受領したまま依頼者が対価を支払わなかったり、対価のみ受け取って製作者が成果物を送付しなかったりするケースがあり、大きな問題となっている。
このような問題に対しては、特許文献1には、販売したデジタルコンテンツデータの利用にあたって利用許諾を求めることが開示されている。
デジタルコンテンツデータの購入者は、対価の支払いとともに許諾要求を行い、許諾が行われることではじめてコンテンツデータを利用出来る。
また特許文献2には、デジタルコンテンツデータを暗号化することが記載されている。デジタルコンテンツデータの購入者が、対価の支払いとともに復号キーを入手することで、デジタルコンテンツデータを利用することが出来る。
対価を支払うことによって利用許諾や受け、あるいは復号キーを入手しないかぎりはコンテンツデータを利用出来ないので、デジタルコンテンツデータのみを持ち逃げしても意味がないとも言える。
一側面として、購入者と販売者との間でコンテンツデータと対価が適切に交換され得る取引システムを提案する。
分散型台帳は、例えば、ブロックチェーンまたはDAG(Directed acyclic graph)などである。以下の説明では、一例として、分散型台帳がブロックチェーンであるものとして説明する。
なお、DAGでは、ユーザがトランザクションを作成したとき、先に公開されている未承認のトランザクションを承認する。ユーザが作成したトランザクションも、後から公開される未承認のトランザクションに承認される。閾値以上の未承認のトランザクションから直接または間接的に承認されたとき、ユーザが作成したトランザクションは、ネットワークで合意されたものとみなされる、というコンセンサスアルゴリズムを採用している。
上記のようにDAGは、以下で説明するブロックチェーンと、コンセンサスアルゴリズムに違いがあるものの、トランザクションの構造はブロックチェーンと同様のものを採用することができる。
したがって、分散型台帳としてブロックチェーンを利用した処理と、分散型台帳としてDAGを利用する処理とは、同様の構成のトランザクションを用いて実行することができる。このため、以下で説明する分散型台帳としてブロックチェーンを利用する処理は、分散型台帳としてDAGを利用して実行することも可能である。
後に詳述するが、ブロックチェーンと暗号資産の送金について概説する。
ブロックチェーンとは、複数の取引情報を含むブロックを生成し、生成したブロックを連結することにより、分散型ネットワークにデータを記録するデータベースのことである。
ブロックには、複数の取引情報に加えて、1つ前に生成されたブロックの内容を示すハッシュ値を含むので、ブロックチェーンは、生成されたブロックが時系列に沿ってつながっていくデータ構造を有する。ビットコインやモナコイン、イーサリアム等に代表される暗号資産(仮想通貨)の基礎技術である。
マイニングに成功するとマイニング報酬が得られる。そのマイニング報酬を目当てにマイニングに投入される計算資源の多さによって、古いデータほど改ざんが難しくなる仕組みを、PoW(Proof of Work)型のブロックチェーンシステムと呼ぶ。
このように、何らかの報酬を与えることで、データベースへの信頼性を担保するための資源を提供させる仕組みのことをブロックチェーンと呼ぶ。
PoW型ブロックチェーン以外にもPoS型、PoI型のブロックチェーンも適用が可能だが説明は割愛する。
現在主流となっている暗号資産には大きく分けて2種類がある。ビットコインから派生して開発されているビットコインやライトコイン、モナコインなどと、イーサリアムから派生して開発されているルートストックなどである。
前者の場合、暗号資産の実体は未使用のトランザクションの出力(Unspent Transaction Output、UTXO)である。
UTXOは通常、ECDSAという楕円曲線暗号を用いた電子署名によってのみアンロック可能なようにロックされている。また、特定の秘密鍵を持つ「所有者」にのみアンロックが可能とするため、通常UTXOには秘密鍵に対応する公開鍵が記述されている。
実際には、UTXOにはscriptPubKeyと呼ばれる領域があり、そこにはScriptと呼ばれるプログラミング言語で記述されたプログラムが書いてある。そのUTXOに接続しようとするトランザクションの入力には、scriptSigと呼ばれる領域があり、この2つがちょうど対応づいている場合に、UTXOはアンロックされる。 イーサリアムやそこから派生した暗号資産については、スマートコントラクトを用いることで同様の仕組みを実現することが出来る。
ネットワークは、取引装置70と、取引装置80と、ネットワーク30と、ネットワーク40と、ネットワーク200、とを含む。そして、取引装置70と、取引装置80と、ネットワーク30と、ネットワーク40とはネットワーク200を介して互いに通信可能に接続されている。
取引装置70及び取引装置80は、例えば、後述するコンピュータ装置である。以下の説明では、一例として、取引装置70をコンテンツデータの販売者が操作する取引装置として説明する。また、取引装置80を、コンテンツデータの購入者が操作する取引装置として説明する。
ネットワークには取引装置10と取引装置20が含まれるが、これらは実施形態が基づいているアトミックスワップを説明するために参照される。
以下の説明では、一例として、ネットワーク30は、例えば、ビットコインのコンセンサスアルゴリズムであるプルーフオブワーク(PoW)を採用しているものとして説明する。また、ネットワーク40は、例えば、ライトコインのコンセンサスアルゴリズムであるプルーフオブワークを採用しているものとして説明する。
ネットワーク200は、ネットワーク30及びネットワーク40に限らず、さらに他のネットワークと接続されてもよい。また、ネットワーク200は、取引装置70及び取引装置80に加えて、さらに他の取引装置と接続されてもよい。
図2(a)は、取引情報の構成を説明する図である。図2(b)は、取引情報を接続する処理を説明する図である。取引情報とは、暗号資産の引き渡しと、受け取りとを実行し、暗号資産の所有権を移転する処理に用いられるトランザクションのことである。
以下の説明では、トランザクションスクリプトとして、P2PKH(Pay to Public Key Hash)を用いるものとして説明する。なお、トランザクションスクリプトとして、P2PK(Pay to Public Key)を用いる場合には、UTXOをロックするScriptPubKeyは、UTXOの受領者である送信先の利用者の公開鍵を含む。また、P2PKにおいて、UTXOをアンロックするScriptSigは、UTXOの授与者であるトランザクションを作成する送信元の利用者の秘密鍵を用いて生成した電子署名を含む。
トランザクションは、暗号資産の所有の移転をまとめた取引情報である。トランザクションは、インプット(input)と、アウトプット(output)とを含む。
インプットは、トランザクションを作成する送信元の利用者が所有する前トランザクションのUTXOをアンロックするための情報である。そして、インプットは、ScriptSigを含む。
ScriptSigは、送信元の利用者が所有するUTXOをアンロックするためのスクリプトである。ScriptSigは、送信元の利用者の電子署名と公開鍵とを含む。ScriptSigに含まれる電子署名及び公開鍵は、送信元の利用者の秘密鍵を用いて生成された値である。
ScriptPubKeyは、トランザクションのアウトプットをアンロックするための条件を定義したスクリプトである。ScriptPubKeyは、送信先の利用者の秘密鍵を用いて生成された公開鍵のハッシュ値(以下、公開鍵ハッシュともいう。)を含む。
前トランザクションのアウトプットは、送金額とScirptPubKey0とを含むアウトプット0(output0)と、送金額とScirptPubKey1とを含むアウトプット1(output1)と、を含む。アウトプット0とアウトプット1とは、それぞれIndex0とIndex1と関連付けられている。Index0とIndex1とは、それぞれアウトプット0とアウトプット1とを識別する識別子である。
新規トランザクションのインプット0は、ScriptSig0と、前トランザクションのトランザクションハッシュと、前トランザクションのアウトプット0の識別子であるIndex0とを含む。
トランザクションハッシュは、前トランザクション全体のハッシュ値である。そして、トランザクションハッシュは、前トランザクションを識別するためのトランザクションIDとして用いられる。Index0は、前トランザクションにおける接続先のアウトプット0を識別する識別子である。
上記の前トランザクションに含まれるアウトプット0と、新規トランザクションに含まれるインプット0とが接続される処理を説明する。以下の説明では、前トランザクションがビットコインのブロックチェーンに記録された状態であるものとする。
そして、ノード装置300は、承認した新規トランザクションをブロックに含ませて、ナンスを探す作業を実行する。ノード装置300は、正しいナンスを発見すると、正しいナンスが含まれるブロックを生成し、ノード装置300が保持するブロックチェーンに新たに生成したブロックを連結する。また、ノード装置300は、ブロックチェーンのネットワーク上に新たに生成したブロックを送信する。これにより、新たに生成したブロックは、ネットワークに接続された他のノード装置が保持するブロックチェーンにも連結され、新規トランザクションがブロックチェーンに記録される。
図4以降で説明する本実施形態の取引方法は、このアトミックスワップの仕組みを応用したものである。
従って、本実施形態の取引方法を説明する前に、図3を用いてアトミックスワップの処理を説明する。
前提として、暗号資産には、異なる特徴を有する複数の種類の暗号資産がある。このため、利用者は、暗号資産を使用するとき、用途に適した暗号資産を選択して利用する。暗号資産の種類には、例えば、ビットコイン(BTC:登録商標)、イーサリアム(ETH:登録商標)、ライトコイン(LTC)、及びモナコイン(MONA:登録商標)などがある。暗号資産の用途には、例えば、価値の保存、商品の購入、及び契約内容の管理の手数料などがある。
上記のように、複数の種類の暗号資産を用途に応じて使い分けるため、異なる暗号資産を交換する取引が行われている。異なる暗号資産を交換する取引には、利用者間の直接の取引である直接取引と、利用者間に取引所などの第三者を介する取引である仲介取引とがある。
例えば、利用者Aは、自身が所有するビットコインと、利用者Bが所有するライトコインとの交換取引を行うとき、ビットコインを利用者Bに送金する。そして、利用者Bは、ビットコインが利用者Aから届いたことを確認すると、利用者Aにライトコインを送金する。
直接取引において、利用者Bは、利用者Aからビットコインが届いたことを確認したあと、利用者Aにライトコインを送金しないでビットコインを持ち逃げすることが可能である。したがって、利用者Aは、取引相手が信用できることを前提として、ビットコインを取引相手に送金しなければならない。
例えば、利用者Aは、自身が所有するビットコインを取引所に預ける。また、利用者Bは、自身が所有するライトコインを取引所に預ける。そして、取引所は、利用者Aに利用者Bが預けたライトコインを送金し、利用者Bに利用者Aが預けたビットコインを送金する。
仲介取引において、利用者Aと利用者Bとは取引所に暗号資産を預けているので、取引所の不正及び取引所のハッキングなどにより、暗号資産が盗難される恐れがある。また、仲介取引では、取引所を利用するので、手数料が直接取引と比較して割高になることがある。したがって、利用者Aは、取引所が信用できること及び手数料が割高になることを前提として、ビットコインを取引所に預けなければならない。
二者間で異なるブロックチェーンを用いた暗号資産同士の交換を行うとき、単純に利用者Aと利用者Bとの間でお互いの暗号資産を送りあうと、利用者Aから利用者Bへの送金及び利用者Bから利用者Aへの送金が同時に行われることは保証できない。これは、ブロックチェーンによって承認までの期間が異なること、及びお互いの暗号資産を送信するタイミングが異なること、などに起因する。
また、承認前の送金トランザクションは取り下げが可能であるため、言い換えれば、先に承認された取引のみを有効とし、残った取引を取り下げることで、片方が暗号資産を持ち逃げすることができてしまう。
ビットコイン及びそこから派生したブロックチェーンシステムにおいて、Atomic Swapは、UTXOのアンロックの条件を記述したScriptと呼ばれるプログラミング言語を用いる。そして、Atomic Swapは、Scriptの命令セットに、一方向ハッシュ関数であるSHA256を求める命令と、値の比較を行う命令があることを利用している。
以下の説明では、一例として、取引相手が所有するビットコインと、利用者が所有するライトコインとを交換する処理について説明する。取引装置10が秘密値Rを生成する処理を説明するが、利用者Bの取引装置が秘密値Rを生成してもよい。すなわち、以下で説明する利用者Aの取引装置の実行する処理を利用者Bの取引装置が実行し、利用者Bの取引装置が実行する処理を利用者Aの取引装置が実行してもよい。また、説明の簡単化のため、各トランザクションのアウトプットには、1つのアウトプットが含まれるものとし、アウトプットをIndexに応じて参照する処理の説明を省略する。なお、交換する暗号資産の数量(交換数量)は、アトミックスワップの処理の前に利用者と取引相手との間で為替レートなどに基づいて決定してもよい。また、利用者と取引相手とは、アトミックスワップの処理の前にそれぞれお互いのアドレス及び公開鍵を交換してもよい。利用者Aと利用者Bとは、暗号資産の交換数量の決定、並びにアドレス及び公開鍵の交換を、メール及び記録媒体の提供などの任意の通信手段により行ってもよい。
利用者Aは乱数によって秘密値Rを定め、秘密値Rのハッシュ値Hを計算する。
利用者Aは、「引数の1つが利用者Bの公開鍵に対応する電子署名であること(すなわち受取人が利用者Bであること)及び、もう1つの引数のSHA256ハッシュ値がハッシュ値Hであること」をアンロック条件としたトランザクションTx1を発行し、承認を待つ。
利用者Bは、承認されたトランザクションTx1がブロックチェーンに公開されるため、ハッシュ値Hを知ることができる。
すなわち、利用者Aの取引装置10は、秘密値Rをランダムに生成する。また、利用者Aの取引装置10は、秘密値Rにハッシュ関数を適用し、ハッシュ値Hを生成する。利用者Aの取引装置10が秘密値Rをハッシュ化するときに用いられるハッシュ関数は、例えば、SHA−2、MD5、及びSHA−1などの一方向ハッシュ関数である。
ハッシュ関数にSHA−2を用いる場合、SHA256を2度適用してハッシュ値Hを計算する。ハッシュ値Hの計算に際してSHA256を2度適用するのは、上記Scriptにそのような命令があるためであり、SHA256の適用は1度であってもよい。
トランザクションTx1のインプットは、利用者Aの電子署名及び利用者Aの公開鍵を含むScriptSigと、アンロックするUTXOを含む前トランザクションのトランザクションIDとを含む。トランザクションTx1のScriptSigによってアンロックするUTXOは、利用者Aが所有するUTXOである。利用者Aの電子署名及び利用者Aの公開鍵は、利用者Aが所有する秘密鍵を用いて生成される。
トランザクションTx1のアウトプットは、ハッシュ値H及び利用者Bの公開鍵ハッシュを含むScriptPubKeyを含む。利用者Bの公開鍵ハッシュは、利用者Bの公開鍵を用いて生成される。利用者Bの公開鍵ハッシュとは、利用者Bの公開鍵にハッシュ関数を適用して得られるハッシュ値のことである。
利用者Bも同様に「引数の1つが利用者Aの公開鍵に対応する電子署名であること(すなわち受取人が利用者Aであること)及び、もう1つの引数のSHA256ハッシュ値がHであること」をアンロック条件としたトランザクションTx2を発行し、承認を待つ。 すなわち、利用者Bの取引装置20は、ライトコインを利用者Aに送金するためのトランザクションTx2を作成する。そして、利用者Bの取引装置20は、作成したトランザクションTx2をネットワーク40に送信する。これにより、トランザクションTx2は、ネットワーク40に公開される。
トランザクションTx2のアウトプットは、ハッシュ値H及び利用者Aの公開鍵ハッシュを含むScriptPubKeyを含む。利用者Aの公開鍵ハッシュは、利用者Aの公開鍵を用いて生成される。利用者Aの公開鍵ハッシュとは、利用者Aの公開鍵にハッシュ関数を適用して得られるハッシュ値のことである。ハッシュ値Hは、トランザクションTx1がネットワーク30に公開されると、利用者Bの取引装置によりトランザクションTx1から取得され、トランザクションTx2のアウトプットに記述される。
利用者Aは、利用者Bが発行したトランザクションTx2が承認され、取り下げや改ざんができなくなったことを確認する。
利用者A自身の秘密鍵による電子署名を作成し、秘密値Rと共にアンロックのための引数として、利用者Bが発行したトランザクションTx2のUTXOを利用して自分自身に送金を行う。
上記のトランザクションが承認され改ざんができなくなると共に、秘密値Rはトランザクション内のデータとしてブロックチェーンに公開されるため、利用者Bは秘密値Rを知ることができる。
すなわち、利用者Aの取引装置10は、ライトコインを利用者Bの取引装置から受け取るためのトランザクションTx3を作成する。そして、利用者Aの取引装置は、作成したトランザクションTx3をネットワーク40に送信する。これにより、トランザクションTx3は、ネットワーク40に公開される。
トランザクションTx3のインプットは、秘密値R、利用者Aの公開鍵、及び利用者Aの電子署名を含むScriptSigと、アンロックするUTXOを含むトランザクションTx2を識別するトランザクションIDとを含む。
トランザクションTx3のアウトプットは、利用者Aの公開鍵ハッシュを含むScriptPubKeyを含む。
ノード装置400は、トランザクションTx3がネットワーク40に送信されると、トランザクションTx3に含まれるトランザクションIDに対応するトランザクションTx2のUTXO(アウトプット)を参照する。また、ノード装置400は、トランザクションTx3のScriptSigに含まれる秘密鍵Rにハッシュ関数を適用して、ハッシュ値を求める。そして、ノード装置400は、求めたハッシュ値と、トランザクションTx2のScriptPubKeyに含まれるハッシュ値Hとが一致するか否かの第1検証を実行する。ノード装置400が秘密値Rのハッシュ値を求めるときに用いるハッシュ関数は、利用者Aの取引装置が秘密値Rをハッシュ化するときに用いるハッシュ関数と同じハッシュ関数である。
ノード装置400は、上記の第1検証、第2検証及び第3検証が成功すると、トランザクションTx2のUTXOを利用者Aのアドレスにロックする。すなわち、ノード装置400は、利用者Aがライトコインを受け取ったことを示すアウトプットを作成し、作成したアウトプットをトランザクションTx3に含まれる、利用者Aが所有するUTXOとしてロックする。これにより、ライトコインの所有は、利用者Bから利用者Aに移転する。
利用者B自身の秘密鍵による電子署名と秘密値Rによって、トランザクションTx1のUTXOをアンロックし、利用者B自身に送金する
すなわち、利用者Bの取引装置は、利用者Aによってネットワーク40に公開されたトランザクションTx3に含まれる秘密値Rを取得し、ビットコインを利用者Aの取引装置から受け取るためのトランザクションTx4を作成する。そして、利用者Bの取引装置は、作成したトランザクションTx4をネットワーク30に送信する。これにより、トランザクションTx4は、ネットワーク30に公開される。
トランザクションTx4のインプットは、秘密値R、利用者Bの公開鍵、及び利用者Bの電子署名を含むScriptSigと、アンロックするUTXOを含むトランザクションTx1を識別するトランザクションIDとを含む。
トランザクションTx4のアウトプットは、利用者Bの公開鍵ハッシュを含むScriptPubKeyを含む。
ノード装置300は、トランザクションTx4がネットワーク30に送信されると、トランザクションTx4に含まれるトランザクションIDに対応するトランザクションTx1のUTXO(アウトプット)を参照する。また、ノード装置300は、トランザクションTx4のScriptSigに含まれる秘密鍵Rにハッシュ関数を適用して、ハッシュ値を求める。そして、ノード装置300は、求めたハッシュ値と、トランザクションTx1のScriptPubKeyに含まれるハッシュ値Hとが一致するか否かの第4検証を実行する。ノード装置300が秘密値Rのハッシュ値を求めるときに用いるハッシュ関数は、利用者Aの取引装置が秘密値Rをハッシュ化するときに用いるハッシュ関数と同じハッシュ関数である。
1.OP_HASH256
2.OP_PUSH H
3.OP_EQUALVERIFY
4.OP_PUSH 公開鍵
5.OP_CHECKSIG
1.〜3.の命令群では、引数のハッシュ値を計算してハッシュ値Hと比較している。4.、5.は、最もシンプルな送金手法であるP2PK(pay-to-pubkey)形式であるが、
P2PKH(pay-to-pubkey-hash)形式のものでも良い。
1.OP_PUSH 電子署名
2.OP_PUSH R
このscriptSigがなければトランザクションTx2のUTXOをアンロックできないことからも、利用者Aが受け取った時点で秘密値Rが公開される。
また、何らかの事情で利用者Aが秘密値Rを公開しなかった場合、利用者Aも利用者Bも双方の暗号資産を取り出すことができなくなり、暗号資産の所有権が宙に浮いてしまう。そのため、実用上は「もしくは、一定期間が過ぎた場合、送金主の公開鍵に対応する電子署名によって取り戻すことができる」という条件を追加する。具体的には、scriptPubKeyを以下のようにする。
1.OP_IF
2.OP_HASH256
3.OP_PUSH H
4.OP_EQUALVERIFY
5.OP_PUSH 宛先公開鍵
6.OP_CHECKSIG
7.OP_ELSE
8.OP_CHECKLOCKTIMEVERIFY
9.OP_PUSH 送金主公開鍵
10.OP_CHECKSIG
11.OP_ENDIF
IF命令で分岐して、2種類のscriptSigを受け付けるようにしている。
1.OP_PUSH 宛先秘密鍵の電子署名
2.OP_PUSH R
3.OP_PUSH 1
このスクリプトは、redeem scriptと呼ばれる。
最後の1をOP_IFが読み取り、前半のプログラムが実行される。
何らかの理由で秘密値Rが公開されなかった場合は、以下のscriptSigで暗号資産を取り戻せる
1.OP_PUSH 送信主秘密鍵の電子署名
2.OP_PUSH 0
このスクリプトは、refund scriptと呼ばれる。
最後の0をOP_IFが読み取り、OP_ELSE以降のプログラムが実行され、取り戻しが行われる。ただし、OP_CHECKLOCKTIMEVERIFYが含まれているため、一定期間経過後である必要がある。
他にもいくつかハッシュ関数を計算する命令が存在するため、ハッシュ値Hの計算方法はそれに合わせたものにする必要がある。
以上の手順に従えば、利用者Aが暗号資産を受け取るためには秘密値Rを公開せざるを得ず、秘密値Rが公開されると同時に利用者Bも暗号資産を受け取ることができることとなる。
利用者Aが秘密値Rを公開しない場合、利用者Aは利用者Bの暗号資産を受け取ることができないので、秘密値Rの公開が強制されている、と見ることもできる。
上記に説明した異なる暗号資産同士の交換取引の場合とは異なり、図1に示したもののうち購入者が対価の支払いに用いる暗号資産のネットワークのみ(ここでは、ネットワーク30)が用いられる。
以下の説明において、取引装置70は販売者の取引装置であり、取引装置80は購入者の取引装置である。
以下で説明する取引装置70が実行する処理を取引装置80が実行し、取引装置80が実行する処理を取引装置70が実行してもよい。また、説明の簡単化のため、ブロックチェーンを介した送金処理における各トランザクションのアウトプットには、1つのアウトプットが含まれるものとし、アウトプットをIndexに応じて参照する処理の説明を省略する。また、販売者と購入者とは、交換取引の処理の前にそれぞれお互いのアドレス及び公開鍵を交換してもよい。
例えばクラウドソーシングの場合のように、コンテンツデータを発注した購入者とコンテンツデータを受注した販売者とが1対1である場合には、以下の手順で持ち逃げを防ぎ、コンテンツデータと暗号資産を安全に交換することができる。
次に取引装置70は、選択した秘密コンテンツ鍵kにハッシュ関数を適用し、公開コンテンツ鍵uを生成する。
秘密コンテンツ鍵kのハッシュ化に用いられるハッシュ関数は、例えば、SHA−2、MD5、及びSHA−1などの一方向ハッシュ関数である。
ハッシュ関数にSHA−2を用いる場合、取引装置70は、公開コンテンツ鍵u=SHA256(SHA256(k))を求める。
SHA256を2度掛けているが、ビットコインで採用されているScriptと呼ばれるプログラムの命令でSHA256を2回計算する命令があるためである。これは下記ステップ(14)で取引装置80が発行する送金トランザクションのアンロック条件次第で変化しうる。SHA256の計算は例えば1回であってもよい。
この際、取引装置70は、コンテンツデータを周波数分離し、低周波成分は平文のままとし、高周波成分を秘密コンテンツ鍵kで暗号化する。
動画像や音声の圧縮の際、周波数変換を用いるものが多い。JPEG、MPEG、MP3などは全て周波数変換を用いて圧縮を行っている。
周波数変換を行った後、低周波成分と高周波成分に分離し、高周波成分のみを圧縮した後に暗号化し、低周波成分は圧縮した後に平文のままとする。
これによれば、復号キーを持たない状態であれば、低周波成分のみ伸張が可能となり、動画像であれば低解像度な映像が、音声であれば低品質な伸張結果を得ることができる。納品されたコンテンツデータが正しく発注したコンテンツデータであることを確認しつつも、実用にはできない伸張データを得ることができる。
暗号化後に圧縮を行おうとすると、エントロピーが高い情報となるため圧縮がほとんどできない。
通常、動画像や音声の圧縮に用いられる周波数変換、DCTや重複直交変換などは、三角関数を用いた浮動小数での演算となるため、一般的には非可逆圧縮となるが、例えばアダマール変換を用いれば可逆圧縮でも応用可能である。
周波数変換を行わない圧縮方式、例えばJPEG−LSや、DPCMなどの場合は、ほとんど隣接サンプルとの差分を圧縮する方法がとられている。その場合でも、例えばサンプルが0123456789…と並んでいる場合、123、567、9は高周波成分として直前サンプルとの差分を取り、048は低周波成分として、0と4の差分、4と8の差分を取ることで、同様の効果を得ることができる。
暗号化コンテンツデータと公開コンテンツ鍵uは、任意のクラウドストレージやダウンロードサービスなどにアップロード、登録して購入者にダウンロードさせてもよいし、E−mailに添付して送付されてもよい。
またCD−RやUSBメモリなどの記憶媒体に格納されて手渡しで授受されてもよい。 上記のうち何れかの方法で、暗号化コンテンツデータを取得した取引装置80は、ステップ(13)において、暗号コンテンツデータのうち低周波成分を伸張する。
低周波成分は、暗号化されていないためそのまま伸張することが出来るが、画質や音質が低く再配布には向かないデータである。
この時点で、購入者は低周波成分を参照して成果物の内容を確認することが出来るが、対価の支払い前に高画質、高音質の高周波成分を取得して再配布することは出来ない。
この時点で購入者は、低品質のコンテンツデータしか手に入れておらず、持ち逃げのリスクはないと言える。
なお、下記に説明する理由によって、暗号化コンテンツデータにおいて低周波成分が公開コンテンツ鍵uで暗号化されていてもよい。
取引装置80は、作成したトランザクションTx11をネットワーク30に送信する。これにより、トランザクションTx11は、ネットワーク30に公開される。
トランザクションTx11のインプットは、購入者の電子署名及び購入者のウォレットの公開鍵(購入者のウォレット公開鍵)を含むScriptSigと、アンロックするUTXOを含む前トランザクションのトランザクションIDと、を含む。
ウォレットとは、例えば、仮想通貨を保管するために用いる秘密鍵が格納された暗号資産ウォレットである。そして、購入者のウォレット公開鍵は、購入者のウォレットの公開鍵を用いて生成される。
トランザクションTx11のScriptSigによってアンロックするUTXOは、購入者が所有するUTXOである。購入者の電子署名及び購入者の公開鍵は、購入者が所有する秘密鍵を用いて生成される。
販売者のウォレットの公開鍵ハッシュは、販売者のウォレットの公開鍵(販売者のウォレット公開鍵)を用いて生成される。販売者のウォレットの公開鍵ハッシュとは、販売者のウォレット公開鍵にハッシュ関数を適用して得られるハッシュ値のことである。また、販売者のウォレット公開鍵は、販売者のウォレットの公開鍵を用いて生成される。
トランザクションTx11は、コンテンツデータの対価となる暗号資産の送金先を販売者とし、追加のアンロック条件として公開コンテンツ鍵uを記述し、秘密コンテンツ鍵kの開示を要求する。
UTXOに記載するscriptPubKey(アンロック条件)は、例えば以下のようなプログラムとなる。
1.OP_HASH256
2.OP_PUSH u
3.OP_EQUALVERIFY
4.OP_PUSH 販売者のウォレット公開鍵
5.OP_CHECKSIG
これはもっとも簡単な例であり、秘密コンテンツ鍵kのSHA256を2回(又は1回)計算してuとの一致を確認後、購入者のウォレットの秘密鍵による電子署名を検証する。
上記プログラムは、送付先をウォレット公開鍵とするP2PKと呼ばれる形式に従っているが、一般的に使われている送付先をウォレット公開鍵のハッシュ値とするP2PKHに基づいてもよい。
また、一定期間内に受け取りがなかった場合(秘密コンテンツ鍵kが開示されない場合)に購入者が取り戻すことができるようなプログラムにするとより安全である。
先頭のOP_HASH256の代わりにOP_SHA256を使用する場合、公開コンテンツ鍵u=SHA256(k)で算出すれば同様の動作をする。どちらを使ってもセキュリティ上の差異も実用上の差異もない。
トランザクションTx12のインプットは、秘密コンテンツ鍵k、販売者のウォレットの公開鍵、及び販売者の電子署名を含むScriptSigと、アンロックするUTXOを含むトランザクションTx12を識別するトランザクションIDと、を含む。
トランザクションTx12のアウトプットは、販売者のウォレットの公開鍵ハッシュを有するScriptPubKeyを含む。
販売者の取引装置70は、販売者自らのウォレットの秘密鍵による電子署名と秘密コンテンツ鍵kによって、ステップ(14)で発行されたUTXOをアンロックし、暗号資産を受け取る。
ここで購入者が送金した暗号資産の所有を販売者に移転する処理について、一例として、トランザクションTx12を用いてトランザクションTx11のUTXOをアンロックし、アンロックしたUTXOを販売者のアドレスにロックする処理を説明する。販売者のアドレスとは、例えば、販売者のウォレットの公開鍵ハッシュを変換した値である。
コンテンツデータの購入者は、再配布に向かない品質のデータによってコンテンツデータの内容を事前に確認したうえでコンテンツデータに対する対価となる暗号資産の送金を行う。それに対して販売者が秘密コンテンツ鍵kを開示して暗号資産の受け取りを行うことで、購入者は、コンテンツデータの高品質部分を復号出来る。
購入者、販売者の双方が、夫々暗号資産の送金、秘密コンテンツ鍵kの開示を行わない限りは、暗号資産、秘密コンテンツ鍵kの受け取りを何れも行うことが出来ない。
従って、購入者によるコンテンツデータの持ち逃げや、逆に販売者による暗号資産の持ち逃げが不可能である。購入者と販売者との間でコンテンツデータと対価が適切にやりとりされる適正な取引を実現することが出来る。
このような問題に対して、独自ファイル形式として、公開コンテンツ鍵uと暗号化コンテンツデータを1つのファイルにパッケージングすれば問題がない。しかしながら暗号的に安全にするためには低周波成分を公開コンテンツ鍵uで暗号化する方法が考えられる。 ステップ(12)で低周波成分を公開コンテンツ鍵u、高周波成分を秘密コンテンツ鍵kで暗号化すれば、ステップ(13)で購入者が納品されたコンテンツデータを確認する際に受け取った公開コンテンツ鍵uと低周波成分の実際の暗号鍵が異なる場合、伸張に失敗する。
この時点で、ステップ(12)で秘密コンテンツ鍵k以外の鍵でコンテンツデータの高周波成分を暗号されたことがわかるため、取引をやり直すことができる。
正しい手順で取引がなされた場合、ステップ(13)において、取引装置80は、公開コンテンツ鍵uを用いて低周波成分を復号・伸張できる。また、正しい手順で取引がなされた場合、ステップ(16)において、公開コンテンツ鍵u及び秘密コンテンツ鍵kの両方が購入者側にあるため、取引装置80は、暗号化コンテンツデータの全体を復号・伸張できる。
以下の説明では、トランザクションスクリプトとして、図4と同様にP2PKHを用いるものとして説明する。
ステップS101において、販売者の取引装置70は、秘密コンテンツ鍵kを用いてコンテンツデータの高周波成分を暗号化する。
ステップS102において、販売者の取引装置70は、秘密コンテンツ鍵kにハッシュ関数を適用して公開コンテンツ鍵uを生成する。
ステップS103において、販売者の取引装置70は、暗号化された高周波成分と平文のままの低周波成分を含む暗号化コンテンツデータと公開コンテンツ鍵uをクラウドストレージなどに送信する。あるいは、購入者宛に、E−mailで送信する。
ステップS111において、購入者の取引装置80は、クラウドストレージなどから暗号化コンテンツデータと公開コンテンツ鍵uを取得する。
ステップS112において、購入者の取引装置80は、低周波成分を伸張し、内容を確認する。
ステップS104において、販売者の取引装置70は、公開されたトランザクションTx11に対して、秘密コンテンツ鍵kと販売者の公開鍵をインプットに含む、暗号資産を受け取るトランザクションTx12を作成し、ネットワーク30に公開する。
ステップS114において、購入者の取引装置80は、公開されたトランザクションTx12に記載される秘密コンテンツ鍵kを用いて暗号化コンテンツデータの高周波成分を復号する。
図6は、1対多でのコンテンツデータと暗号資産の交換手法の一例を示す図である。
なお図6の方法は、一人の販売者と一人の購入者による1対1でのコンテンツデータと暗号資産の交換にも適用出来る。
図4で説明した1対1の取引手法を、一対多の取引に使用しようとすると、購入者1人ずつに個別の秘密コンテンツ鍵kを用意して個別の暗号化コンテンツデータを用意する必要がある。その場合特に動画のようにファイルサイズが大きい場合には管理が大変である。
この問題は、イーサリアムのスマートコントラクトを使用することで解決可能である。 予めイーサリアム上に、以下の機能を有するスマートコントラクト500をデプロイしておく。
スマートコントラクト自体がアカウントであるため、スマートコントラクト自身が暗号資産を所有でき、スマートコントラクトへの送金・操作時にはその引数がブロックチェーン上に記録される。
スマートコントラクト500に対して送信するトランザクションには、スマートコントラクト500に対して実行を命令するメソッドと、その引数が記載される。
例えば、トランザクションは「AAという名前のメソッドを、引数BBで実行せよ」という命令を含む。
スマートコントラクト500は、命令されたメソッドを指定された引数とともに実行することによって例えば下記(1)〜(4)の機能を実現することが出来る。
スマートコントラクト500は、
(1)暗号資産を預かる機能
(2)暗号資産を預かる際に受取人アドレスと、後述する楕円曲線上の点Pを記録する機能
(3)暗号資産を取り出す機能
(4)暗号資産の取り出しには、取り出し時と預かり時の受取人アドレスと一致すること、及びP=hGを満たす引数hが指定されていること、を条件とする機能
を有する。
このような機能を有するスマートコントラクト500をデプロイしておくことで、送金側が知りうる公開コンテンツ鍵u=kGに対応する秘密コンテンツ鍵kをブロックチェーンに公開しないと暗号資産が引き出せないことを保証することが出来る。
また、一定時間を経過したら、送金側が取り返すことができる機能をつけてもよい。
以下の説明において、乱数を生成する場合は常に暗号的に安全な乱数を生成するものとする。
ステップ(22)において、取引装置70は、コンテンツデータの低周波成分は平文のままとし、高周波成分は秘密コンテンツ鍵kにより暗号化した暗号化コンテンツデータを生成する。
取引装置70は、楕円曲線暗号を用いて秘密コンテンツ鍵kを暗号化した公開コンテンツ鍵u=kGと共に、暗号化コンテンツデータをクラウドストレージ等に公開する。
公開コンテンツ鍵u=kGは、離散対数問題が困難な群上の基点Gを秘密コンテンツ鍵kによりスカラー倍した値である。
[楕円曲線暗号]
の形式で表される方程式(厳密にはその解の集合)を楕円曲線と呼ぶ。ここで、x及びyが変数、a及びbは定数(パラメータ)である。
方程式を実数の範囲で解き、x−y平面上にプロットすると曲線を描くが、コンピュータで真の意味での実数を扱うことは不可能である。そのため、素数pを定めて、a、b、x、yのすべてを0以上p未満の整数とした上で、加算を(n+m) mod p、乗算を(n×m) mod pで定義することで、有限体を構成する。
前記の方程式をその有限体上で解いた解は、x−y平面上0以上p未満の整点(x座標及びy座標がともに整数となる点)の集合としてプロットされる。
楕円曲線の方程式の解は、実数上で解く場合も有限体上で解く場合も、xとyで2次元平面上の座標を表す点となるが、この点2つの演算を次のように定義する。
また、
。
ただし、2つの点が同一の点である場合は分母が0となるため、極限を計算し、
また
とする。
以上のルールの演算は、一般的に楕円曲線上の点同士の加算と定義されている。そう定義することで、楕円曲線上の点は有限巡回群の性質を持つようになる。つまり、楕円曲線上の点Pと点Qは加算ができ、P+Q=Rという演算ができる。そして、点Pを有限回加算し続ける(P+P+P+…)つまり、m×Pを計算することもでき、群の位数nをかける(n個のPを加算し続ける)とnP=Oが成り立つ。
ここで重要なのは、秘密の整数(0以上n未満)kを決めたとき、kPを求めることは簡単である(Pをk回足すとpのビット長Lに対して2Lに比例する計算量が必要だが、バイナリ法などの手法を用いることで、Lに比例する計算量で済む)が、反対にkPを与えられたときにkを求めることは現実的に不可能であるという点である。
現在知られている手法では2Lとまではいかないまでも、それに匹敵する計算量が必要である。
つまり、k→kPの演算は簡単だがkP→kの演算は難しいという非対称性があり、これをECDLP(楕円曲線離散対数問題)と呼ぶ。
これを活用するのが楕円曲線暗号である。暗号資産の送金で使用するECDSAもこの非対称性を用いたものである。
FIPS−186やSEC.2では、a、b、pのパラメータの他、有限巡回群を構成する起点となる点G(ベースポイントと呼ばれる)と、nG=Oとなるnも公開されている。
ビットコインや、そこから派生した暗号資産の場合、SEC.2で定義されているsecp256k1という曲線を使用している。
ステップ(23)において、購入者の取引装置80は、乱数により一時鍵tを決め、安全な通信経路で販売者の取引装置70へ送付する。例えば一時鍵tは、暗号化された通信回線を介して取引装置70に送付されてもよい。
また一時鍵tは、記憶媒体に格納された状態で購入者から販売者に直接的に手渡されてもよい。どのような形態をとる場合でも、一時鍵tは他者に秘匿された状態で購入者の取引装置80から販売者の取引装置70に対して送付される。
低周波成分がコンテンツデータの低周波成分と確認されると、ステップ(24)において、購入者の取引装置80は、スマートコントラクト500に対して、販売者のアドレス(販売者のウォレット公開鍵のハッシュ)に送金を行うためにトランザクションTx21(第2取引情報)を送信する。
トランザクションTx21は、暗号資産を送金するメソッドを、公開コンテンツ鍵u、販売者のウォレットの公開鍵ハッシュ、を引数にして実行させる命令を含む。
このトランザクションTx21に対して、スマートコントラクト500は、上記(1)の機能を実行し、公開コンテンツ鍵uを用いて、販売者を受取人とした暗号資産を預かる。より具体的には、スマートコントラクト500は、販売者のアドレスを送金先とした暗号資産を預かる。
販売者のアドレスは、トランザクションTx21で指定されていた販売者のウォレットの公開鍵ハッシュである。
スマートコントラクト500は、暗号資産を預かる際に上記(2)の機能を実行し、公開コンテンツ鍵uを用いて、楕円曲線上の点Pを記録する。
スマートコントラクト500は、P=tG+uを演算し、演算した点Pを記録する。ここで、tG+u=(t+k)Gが成り立つ。Gは、上記のように有限巡回群(離散対数問題が困難な群)の起点である。
すなわち、トランザクションTx22は、暗号資産を送金するメソッドを、引数h=(t+k) mod n、販売者のウォレットの公開鍵ハッシュを引数にして実行させる命令を含む。
トランザクションTx22に対して、スマートコントラクト500は、上記(3)の機能を実行し、トランザクションTx21に対応して預かっていた暗号資産を引き出す。
すなわちスマートコントラクト500は、販売者を受取人とし、販売者のアドレスに暗号資産を送金するトランザクション(引き出しメソッドによる暗号資産の引き出しトランザクション)を作成する。
上記のように、P=tG+u=(t+k)Gが成り立つので、引数h=(t+k) mod nが指定されることで、P=hGが満たされる。
スマートコントラクト500は、トランザクションTx22とトランザクションTx21で指定されていた暗号資産の受取人アドレスの一致していること、及びP=hGを満たす引数hが指定されていることの検証がとれると、預かっていた暗号資産を販売者のアドレスに送金する。
以上説明したような仕組みによれば、コンテンツデータの購入者は、再配布に向かない品質のデータによってコンテンツデータの内容を事前に確認したうえで、コンテンツデータに対する対価となる暗号資産の送金を行う。そして、販売者は、秘密コンテンツ鍵kに基づく引数を開示して暗号資産の受け取りを行う。これにより、購入者は、ブロックチェーン上に公開された秘密コンテンツ鍵kを取得し、コンテンツデータの高品質部分を復号することができる。購入者が暗号資産を送金し、販売者が秘密コンテンツ鍵kに基づく引数の開示を行わない限りは、販売者及び購入者は、それぞれ暗号資産及び秘密コンテンツ鍵kの受け取りを行うことができない。
また、販売者側では単一の秘密コンテンツ鍵kを一つだけ用意し、購入者が用意した一時鍵tをもとに秘密コンテンツ鍵kに基づく引数を生成する。従って、購入者毎に秘密コンテンツ鍵kを用意してコンテンツデータを暗号化することに比べて販売者の負担を著しく低減することが出来る。
しかしながら、一時鍵tが他者に流出した場合には、他者は、ステップ(26)における購入者と同様に、一時鍵tを用いてk=(a+n−t) mod nを計算して秘密コンテンツ鍵kが入手できる。そして、他者は入手したコンテンツ鍵kを用いてコンテンツの高品質部分を復号することが出来てしまう。
しかしながら、正規に入手された秘密コンテンツ鍵kによって復号されたコンテンツデータであっても、第三者が閲覧可能な状態でクラウドストレージ等にアップロードされる可能性がある。このことを考慮すれば、一時鍵tの流出によるコンテンツデータの流出は大きな問題とはならない。
また、図4で説明した方法と同様に、低周波成分を公開コンテンツ鍵uで暗号化した方がより好ましい。
また、この説明では楕円曲線とその点を用いたが、離散対数問題が困難な有限巡回群であれば、例えば有限体の乗法群であっても適用できる。楕円曲線を用いるメリットは、点を表現するのに必要なビット長が少なく済むため、トランザクション手数料を安く抑えることが出来る点にある。
また、上記では、引数hを一時鍵tと秘密コンテンツ鍵kの和に基づいて求めていたが、一時鍵tと秘密コンテンツ鍵kの差に基づいて求めてもよい。引数hは、(t−k) mod nであってもよい。
ステップS201において、販売者の取引装置70は、秘密コンテンツ鍵kを用いてコンテンツデータの高周波成分を暗号化する。
ステップS202において、販売者の取引装置70は、秘密コンテンツ鍵kにハッシュ関数を適用して公開コンテンツ鍵uを生成する。
ステップS203において、販売者の取引装置70は、暗号化された高周波成分と平文のままの低周波成分からなる暗号化コンテンツデータと公開コンテンツ鍵uをクラウドストレージなどに送信する。あるいは、購入者宛に、E−mailで送信する。
ステップS211において、購入者の取引装置80は、クラウドストレージなどから暗号化コンテンツデータと公開コンテンツ鍵uを取得する。
ステップS212において、購入者の取引装置80は、低周波成分を伸張し、内容を確認する。
ステップS213において、購入者の取引装置80は一時鍵tを決定して、販売者の取引装置70に送信する。
ステップS204において、販売者の取引装置70は一時鍵tを受け付ける。
ステップS205において、販売者の取引装置70は、公開されたトランザクションTx21に対して、秘密コンテンツ鍵kと一時鍵tに基づく引数と販売者の公開鍵をインプットに含む、暗号資産を受け取る上記のトランザクションTx22を作成し、スマートコントラクトに送信する。
ステップS215において、購入者の取引装置80は、公開されたトランザクションTx22に記載される引数から秘密コンテンツ鍵kを導出する。
ステップS216において、購入者の取引装置80は、秘密コンテンツ鍵kを用いて暗号化コンテンツデータの高周波成分を復号する。
図8は、取引装置の一実施例を示す機能ブロック図である。
図8は取引装置70及び取引装置80が有する機能を示すブロック図である。
図8(a)を参照して、取引装置70の機能を説明する。なお、取引装置80は、取引装置70の機能の少なくとも1つ以上の機能を有してもよい。
取引装置70は、制御部60と、通信部91と、記憶部92とを含む。
制御部60は、分離部61と、暗号化部62と、生成部63と、受渡部64と、作成部65(第1作成部)と、公開部66(第1公開部)と、を含む。通信部91は、取引装置70をネットワークに接続する。記憶部92は、各種情報を記憶する。
分離部61は、周波数変換したコンテンツデータを高周波成分と低周波成分に分離する。
暗号化部62は、記憶部92に記憶される秘密コンテンツ鍵kを用いて、コンテンツデータの高周波成分を暗号化する。また暗号化部62は、公開コンテンツ鍵uを用いて低周波成分を暗号化してもよい。
受渡部64は、暗号化コンテンツデータと公開コンテンツ鍵uを、クラウドストレージなど外部に送信する。あるいは、これらをE−mailで送信する。
作成部65は、暗号資産を送金するトランザクションTx11がネットワーク30に公開されたあと、暗号資産を受け取るためのトランザクションTx12を作成する。
また作成部65は、スマートコントラクト500に対して暗号資産を送金するトランザクションTx21が公開されたあと、暗号資産を受け取るためのトランザクションTx22を作成する。
公開部66は、作成部65が作成したトランザクションTx12をネットワーク30に公開する。また公開部66は、作成部65が作成したトランザクションTx22をネットワーク30に公開する。
取引装置80は、制御部100と、通信部111と、記憶部112と、表示部113とを含む。
制御部100は、取得部101と、伸張部102と、作成部103(第2作成部)と、公開部104と、算出部105、復号部106と、送信部107、とを含む。記憶部112は、各種情報を記憶する。
取得部101は、クラウドストレージなどから暗号化コンテンツデータ、公開コンテンツ鍵uを取得する。また、取得部101は、ネットワーク30に公開された秘密コンテンツ鍵k、あるいは秘密コンテンツ鍵kに基づく引数h=(t+k) mod nを取得する。
伸張部102は、復号された、あるいは暗号化されていなかったコンテンツデータを伸張して表示装置に表示する。コンテンツが音声データであれは、取引装置80が備えるスピーカーから出力する。
作成部103は、暗号資産を送金するためのトランザクションTx11、トランザクションTx21を作成する。また、作成部103は、一時鍵tを作成する。
公開部104は、作成部103が作成したトランザクションTx11、トランザクションTx21をネットワーク30に公開する。
算出部105は、取得部101が取得した引数h=(t+k) mod nに基づいて秘密コンテンツ鍵kを算出する。
復号部106は、取得部101が取得し、あるいは算出部105が算出した秘密コンテンツ鍵kを用いて暗号化された高周波成分を復号する。
送信部107は、作成部103が作成した一時鍵tを送信する。
図9を参照して、コンピュータ装置50の構成について説明する。
図9において、コンピュータ装置50は、制御回路51と、記憶装置52と、読書装置53と、記録媒体54、通信インターフェイス55と、入出力インターフェイス56と、入力装置57と、表示装置58とを含む。また、通信インターフェイス55は、ネットワーク600と接続される。そして、各構成要素は、バス59により接続される。取引装置10、取引装置20、取引装置70、及び取引装置80は、コンピュータ装置50に記載の構成要素の一部または全てを適宜選択して構成することができる。
RAMに読み出された取引プログラムを制御回路51で実行することにより、取引装置70は、分離処理と、暗号化処理と、生成処理と、受渡処理と、作成処理と、公開処理と、のいずれか1以上を含む取引処理を実行する。
また、取引装置80は、RAMに読み出された取引プログラムを制御回路51で実行することにより、取得処理と、伸張処理と、作成処理と、公開処理と、算出処理と、復号処理と、送信処理と、のいずれか1以上を含む取引処理を実行する。なお、取引プログラムは、制御回路51が通信インターフェイス55を介してアクセス可能であれば、ネットワーク600上のサーバが有する記憶装置に記憶されていても良い。
記録媒体54は、各種データを保存する。記録媒体54は、例えば、取引処理プログラムを記憶する。記録媒体54は、例えば、Secure Digital(SD)メモリーカード、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu−ray(登録商標) Disk(BD)、及びフラッシュメモリなどの不揮発性メモリ(非一時的記録媒体)である。
入出力インターフェイス56は、例えば、各種入力装置と着脱可能に接続するインターフェイスである。入出力インターフェイス56は、接続された各種入力装置とコンピュータ装置50とを通信可能に接続する。そして、入出力インターフェイス56は、接続された各種入力装置から入力された信号を、バス59を介して制御回路51に出力する。また、入出力インターフェイス56は、制御回路51から出力された信号を、バス59を介して入出力装置に出力する。
ネットワーク600は、例えば、LAN、無線通信、P2Pネットワーク、またはインターネットなどであり、コンピュータ装置50と他の装置を通信接続する。
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
51 制御回路
52 記憶装置
53 読書装置
54 記録媒体
55 通信I/F
56 入出力I/F
57 入力装置
58 表示装置
59 バス
60、100 制御部
70、80 取引装置
91、111 通信部
92、112 記憶部
113 表示部
Claims (9)
- 第1取引装置と、第2取引装置とを備える取引システムであって、
第1取引装置は、
秘密情報を用いてデータを暗号化する暗号化部と、
前記秘密情報を導出可能な引数情報の公開を条件に暗号資産の受け取りを可能にする第1取引情報が分散型台帳に公開されたとき、前記暗号資産を受け取るための第2取引情報であって、前記引数情報を含む前記第2取引情報を分散型台帳に公開する第1公開部と、
を備え、
前記第2取引装置は、
前記第1取引情報を分散型台帳に公開する第2公開部と、
前記第2取引情報が分散型台帳に公開されたとき、前記引数情報を取得する取得部と、
前記引数情報を用いて前記暗号化されたデータを復号する復号部と、
を備えることを特徴とする取引システム。 - 前記第1取引装置は、さらに、
前記秘密情報を用いて公開情報を生成する生成部
を備え、
前記第1取引情報は、
前記公開情報を用いた認証と、前記秘密情報を導出可能な引数情報の公開とを条件に前記暗号資産の受け取りを可能する
ことを特徴とする請求項1に記載の取引システム。 - 前記第1取引装置は、さらに、
離散対数問題が困難な群上の基点を前記秘密情報によりスカラー倍した公開情報を生成する生成部と、
整数の中から選択した一時鍵を前記第2取引装置から受信する受信部と、
を備え、
前記秘密情報は、整数の中から選択した値であり、
前記引数情報は、前記秘密情報と前記一時鍵との和又は差であり、
前記第2取引装置は、さらに、
前記一時鍵を前記第1取引装置に送信する送信部
を備え、
前記取得部は、
前記第2取引情報が分散型台帳に公開されたとき、前記引数情報を取得し、
前記復号部は、
前記引数情報と前記一時鍵とを用いて前記秘密情報を求め、前記暗号化されたデータを復号する
ことを特徴とする請求項1に記載の取引システム。 - 前記第1取引装置は、さらに、
周波数変換したデータを高周波成分と低周波成分とに分離する分離部
を備え、
前記暗号化部は、
前記高周波成分を暗号化し、
前記第2公開部は、
前記低周波成分が前記データの低周波成分であることが確認されたとき、前記第1取引情報を分散型台帳に公開する
ことを特徴とする請求項1から3のいずれか一つに記載の取引システム。 - 秘密情報を用いてデータを暗号化する暗号化部と、
前記秘密情報を導出可能な引数情報の公開を条件に暗号資産の受け取りを可能にする第1取引情報が分散型台帳に公開されたとき、前記暗号資産を受け取るための第2取引情報であって、前記引数情報を含む前記第2取引情報を分散型台帳に公開する公開部と、
を備え、
前記引数情報は、
前記第2取引情報が分散型台帳に公開されることにより前記引数情報を取得した他の取引装置が、前記引数情報を用いて前記暗号化されたデータを復号可能とする引数情報である
ことを特徴とする取引装置。 - 秘密情報を導出可能な引数情報の公開を条件に暗号資産の受け取りを可能にする第1取引情報を分散型台帳に公開する公開部と、
前記暗号資産を受け取るための第2取引情報であって、前記引数情報を含む前記第2取引情報が分散型台帳に公開されたとき、前記引数情報を取得する取得部と、
前記引数情報を用いて、他の取引装置が前記秘密情報を用いて暗号化したデータを復号する復号部と、
を備えたことを特徴とする取引装置。 - プロセッサにより実行される取引方法であって、
秘密情報を用いてデータを暗号化し、
前記暗号化されたデータの復号に用いる引数情報であって、前記秘密情報を導出可能な前記引数情報の公開を条件に、暗号資産の受け取りを可能にする第1取引情報が分散型台帳に公開されたとき、前記暗号資産を受け取るための第2取引情報であって、前記引数情報を含む前記第2取引情報を分散型台帳に公開する
ことを特徴とする取引方法。 - プロセッサにより実行される取引方法であって、
秘密情報を用いて暗号化されたデータの復号に用いる引数情報であって、前記秘密情報を導出可能な前記引数情報の公開を条件に、暗号資産の受け取りを可能にする第1取引情報を分散型台帳に公開し、
前記暗号資産を受け取るための第2取引情報であって、前記引数情報を導出可能な前記第2取引情報が分散型台帳に公開されたとき、前記引数情報を取得し、
前記引数情報を用いて、前記秘密情報で暗号化したデータを復号する、
ことを特徴とする取引方法。 - 請求項7又は8に記載の取引方法をコンピュータに実行させる取引プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/131,288 US11651429B2 (en) | 2019-12-25 | 2020-12-22 | Trading system and recording medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019235025 | 2019-12-25 | ||
JP2019235025 | 2019-12-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021103516A true JP2021103516A (ja) | 2021-07-15 |
JP7040815B2 JP7040815B2 (ja) | 2022-03-23 |
Family
ID=76755424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020203408A Active JP7040815B2 (ja) | 2019-12-25 | 2020-12-08 | 取引システム、取引装置、取引方法及び取引プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7040815B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011530840A (ja) * | 2008-08-13 | 2011-12-22 | トムソン ライセンシング | 画像データを暗号化し、暗号化された画像データを暗号解除する装置および方法、画像データ配信システム |
JP2019106639A (ja) * | 2017-12-13 | 2019-06-27 | 富士通株式会社 | 電子取引装置、電子取引方法及びプログラム |
WO2019220271A1 (en) * | 2018-05-14 | 2019-11-21 | nChain Holdings Limited | Computer-implemented systems and methods for using a blockchain to perform an atomic swap |
-
2020
- 2020-12-08 JP JP2020203408A patent/JP7040815B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011530840A (ja) * | 2008-08-13 | 2011-12-22 | トムソン ライセンシング | 画像データを暗号化し、暗号化された画像データを暗号解除する装置および方法、画像データ配信システム |
JP2019106639A (ja) * | 2017-12-13 | 2019-06-27 | 富士通株式会社 | 電子取引装置、電子取引方法及びプログラム |
WO2019220271A1 (en) * | 2018-05-14 | 2019-11-21 | nChain Holdings Limited | Computer-implemented systems and methods for using a blockchain to perform an atomic swap |
Also Published As
Publication number | Publication date |
---|---|
JP7040815B2 (ja) | 2022-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6841911B2 (ja) | 情報保護用のシステム及び方法 | |
US11544701B2 (en) | Rapid and secure off-ledger cryptocurrency transactions through cryptographic binding of a private key to a possession token | |
JP6724249B2 (ja) | 情報保護用のシステム及び方法 | |
JP6908700B2 (ja) | 情報保護のためのシステム及び方法 | |
JP7482982B2 (ja) | ブロックチェーンにおけるコンピュータ実行方法、システム及び記憶媒体 | |
EP3346633B1 (en) | Permission information management system, user terminal, proprietor terminal, permission information management method, and permission information management program | |
KR101974075B1 (ko) | 분산 해시 테이블과 피어투피어 분산 원장을 사용하여 디지털 자산의 소유권을 검증하기 위한 방법 및 시스템 | |
US20210049600A1 (en) | Digital Asset Delivery Network | |
CN109697365B (zh) | 信息处理方法及区块链节点、电子设备 | |
JP5196883B2 (ja) | 情報セキュリティ装置および情報セキュリティシステム | |
KR20180114942A (ko) | 분산형 해시 테이블 및 블록체인을 사용하여 컴퓨터 소프트웨어를 보호하기 위한 방법 및 시스템 | |
CN116910726A (zh) | 用于将去中心化标识映射到真实实体的系统和方法 | |
KR20180115779A (ko) | 디지털 콘텐츠를 제어 및 배포하기 위한 블록체인 구현 방법 | |
US11651429B2 (en) | Trading system and recording medium | |
KR101976027B1 (ko) | 암호 화폐의 전자 지갑 생성 및 백업 방법 및 이를 이용한 단말 장치와 서버 | |
JP6719410B2 (ja) | 生成装置、検証装置、及びプログラム | |
JP7053031B2 (ja) | 情報処理システム、情報処理装置、情報処理方法及び情報処理プログラム | |
CN105721156A (zh) | 用于模幂加密方案的通用编码函数 | |
CN108805574B (zh) | 基于隐私保护的交易方法和系统 | |
CN115730277A (zh) | 使用非同质化代币nft的补充数字内容访问控制 | |
JP6669609B2 (ja) | データの取引システム及びプログラム | |
JP6909452B2 (ja) | 情報処理方法、情報処理装置、プログラムならびに情報処理システム | |
JP4410038B2 (ja) | 電子チケット販売・譲渡方法、サーバ装置、プログラム及び記録媒体 | |
JP7040815B2 (ja) | 取引システム、取引装置、取引方法及び取引プログラム | |
US20230109125A1 (en) | Automated Transactions Across Multiple Blockchains with Cryptocurrency Swaps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220203 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220303 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7040815 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |