(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6934679
(24)【登録日】2021年8月26日
(45)【発行日】2021年9月15日
(54)【発明の名称】ブロックチェーン取引作成プロトコル、及びブロックチェーンアドレス作成方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20210906BHJP
G06F 21/64 20130101ALI20210906BHJP
G06Q 20/22 20120101ALI20210906BHJP
【FI】
H04L9/00 675Z
G06F21/64
G06Q20/22 300
H04L9/00 675B
【請求項の数】3
【全頁数】9
(21)【出願番号】特願2019-46801(P2019-46801)
(22)【出願日】2019年3月14日
(65)【公開番号】特開2020-150428(P2020-150428A)
(43)【公開日】2020年9月17日
【審査請求日】2021年3月17日
【早期審査対象出願】
(73)【特許権者】
【識別番号】510108951
【氏名又は名称】公立大学法人広島市立大学
(74)【代理人】
【識別番号】100163186
【弁理士】
【氏名又は名称】松永 裕吉
(72)【発明者】
【氏名】上土井 陽子
(72)【発明者】
【氏名】若林 真一
(72)【発明者】
【氏名】山内 涼介
【審査官】
松平 英
(56)【参考文献】
【文献】
特開2017−220710(JP,A)
【文献】
特開2018−064142(JP,A)
【文献】
特許第6341491(JP,B1)
【文献】
米国特許出願公開第2018/0167217(US,A1)
【文献】
国際公開第2017/010455(WO,A1)
【文献】
山内 涼介 Ryosuke Yamauchi 他,ブロックチェーンにおける受信者承認なしの取引成立を防ぐ方法について A Way of Preventing Senders from Committing Transactions without Receiver's Authority on the Blockchain,2019年 暗号と情報セキュリティシンポジウム予稿集 Proceedings of 2019 Symposium on Cryptography and Information Security,日本,2019年 暗号と情報セキュリティシンポジウム実行委員会,2019年01月25日,2G3−1、pp.1−6
【文献】
P2P(ピアツーピア)とは?仕組みから活用例まで詳しく解説,[online],日本,Udemyメディア,2018年12月18日,[検索日 2021年6月4日]、インターネット<https://udemy.benesse.co.jp/development/blockchain/p2p.html>
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
19/00
21/00−21/88
G06Q10/00−10/10
20/00−20/42
30/00−30/08
40/00−40/08
50/00−50/20
50/26−99/00
G09C 1/00−5/00
H04K 1/00−3/00
H04L 9/00−9/38
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン方式での取引作成プロトコルに従った電子取引方法において、送信者ノードが送信者アドレスの通知と電子署名を受信者ノードに送信して受信者ノードが送信者アドレスを検証するステップと、受信者ノードが受信者アドレスを作成・返信して送信者ノードが受信者アドレスを受信・検証するステップと、送信者ノードがブロック全体の電子署名を作成するステップと、送信者ノードが作成したブロックをP2Pネットワークへブロードキャストするステップとを含むことを特徴とする、ブロックチェーン取引作成プロトコルに従った電子取引方法。
【請求項2】
ブロックチェーン方式での取引情報に含まれる受信者アドレスを、前記受信者ノードが、受信者ノードの公開鍵と取引情報の電子署名を用いて作成することを特徴とする、請求項1に記載のブロックチェーン取引作成プロトコルに従った電子取引方法。
【請求項3】
ブロックチェーン方式での取引作成プロトコルに従った電子取引方法において、送信者ノードが送信者アドレスの通知と電子署名を受信者ノードに送信して受信者ノードが送信者アドレスを検証するステップと、受信者ノードが受信者アドレスを入金先アドレスとして設定し、送金先アドレスとしての受信者アドレスを作成・返信して送信者ノードが受信者アドレスを受信・検証するステップと、送信者ノードがブロック全体の電子署名を作成するステップと、受信者ノードが入金先アドレスである受信者アドレスの電子署名を作成するステップと、受信者ノードが作成したブロックをP2Pネットワークへブロードキャストするステップとを含むことを特徴とする、ブロックチェーン取引作成プロトコルに従った電子取引方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はネットワーク上での仮想通貨等の送受信方式として知られているブロックチェーン取引作成のためのプロトコル、及び取引に用いられるブロックチェーンアドレスの作成方法に関し、より詳細には、受信者の承諾なしに取引が成立するというブロックチェーン方式の脆弱性(以下、受信者承諾なしの取引が成立することを「本脆弱性」と略記することがある。)を解消するための取引作成プロトコル、及び受信者アドレスの作成方法に関する。
【背景技術】
【0002】
仮想通貨等の送受信方式として、ある時間内に行われたネットワーク参加者間の幾つかの取引を纏めて一つのブロックとし、各ブロックデータを要約したハッシュ値を引き継ぎながら、複数のブロックを時系列的に連結(チェーン)した情報を、自身もネットワーク参加者であるマイナーが承認してネットワーク参加者全員が確認&管理する、
図1にその概要を示す「ブロックチェーン方式」が知られている。(例えば、非特許文献1)
【0003】
ブロックチェーン方式は大規模な中央管理機関を必要としない次世代の分散型管理システムとして期待されているが、発明者等は、鋭意検討の結果、現状のブロックチェーン方式には「悪意のあるネットワーク参加者によって、受信者の承諾なしの取引が成立してしまう。」ことを見出した。
すなわち、
図1からも判るように、各取引には、匿名化はされているが送金先として記した受信者のアドレスが情報として含まれており、SNS情報等から受信者の個人名が特定されれば、
図1に送金元として記した送信者から受信者に電子通貨、トークンを送付することで、受信者の承諾なしの取引(承諾なしの貸付、ウィルスの送付等)が成立してしまう。
【0004】
本脆弱性はブロックチェーン方式でのプロトコル(以下、「通常プロトコル」と略記することがある。)に存在する以下の仕組みに起因して発生しており、本脆弱性の解消には通常プロトコルの一部を変更する必要がある。
1.送信者が取引を作成してネットワーク参加者にブロードキャストする。
2.受信者のアドレスが取引情報の中で公開されている。
3.ある取引で公開されたアドレスがそれ以降の取引でも使用できる。
【0005】
一方、ブロックチェーン方式での代替可能性の低さを解消するための仕組みとしてPay-to-EndPointプロトコル(例えば、非特許文献2)が知られている。
Pay-to-EndPointプロトコルは実際の取引に先だって送信者から受信者に必要な情報を送信し、受信者がそれを確認した後に送受信者間で取引に必要な情報をやり取りし、受信者が取引をネットワークにブロードキャストする方式であり、受信者の承諾なしには取引が実行されることはない。
受信者が承諾をした後に取引が実行されるという点で本脆弱性が解消できたかに見えるが、ある取引に通常プロトコルを用いるかPay-to-EndPointプロトコルを用いるかは送信者が決定できること、通常プロトコルでの取引によって作成される取引情報とPay-to-EndPointプロトコルでの取引によって作成される取引情報との区別がつかないという点で、本脆弱性の解消にはなっていない。
すなわち、悪意の送信者が通常のプロトコルを用いて取引を成立させることができる可能性が残されており、また、マイナーがPay-to-EndPointプロトコルでの取引のみを選択して承認するということができない。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Satoshi Nakamoto,“Bitcoin:A pee-to-peer electronic cash system,”2009.(https://bitcoin.org/bitcoin.pdf)
【非特許文献2】Matthew Haywood,“Improving privacy using Pay-to-EndPoint,” 2018. (https://blockstream.com/2018/08/08/improving-privacy-using-pay-to-endpoint/)
【発明の概要】
【発明が解決しようとする課題】
【0007】
ブロックチェーン方式において、ある取引で公開された受信者アドレスがそれ以降の取引でも使用できることを不可能とすることで、受信者の承諾なしに取引が成立するという通常プロトコルの脆弱性を解消するための新たな取引作成プロトコル、及び受信者アドレス作成方法を提供する。
【課題を解決するための手段】
【0008】
係る目的を達成するための本発明のブロックチェーン取引作成プロトコル、及びブロックチェーンアドレス作成方法は、初めに、送信者が、送金先アドレス(すなわち、受信者アドレス)を記入せず、自身のアドレスと検証用の公開鍵、電子署名を添付した取引情報を受信者に送信し、次いで、受信者が、送付された電子署名を検証して検証可能であれば自身の秘密鍵で電子署名を除く取引に対して電子署名を作成し、秘密鍵に対応する公開鍵と電子署名で新たなアドレス(以下、nアドレスと略記することがある。)を作成して受信者アドレスに設定して前記公開鍵と電子署名を送信者に返信し、その後、返信を受けた送信者が、受信者の電子署名を検証し、検証可能であれば取引全体の情報に対して電子署名を行ってブロードキャストするステップからなることを特徴とする。
電子署名は良く知られた「公開鍵暗号方式」、「ハッシュ値」を用いた方法等によって作成可能であり、詳細な説明は割愛する。(以下、同様)
【0009】
係る目的を達成するための本発明のブロックチェーン取引作成プロトコル、及びブロックチェーンアドレス作成方法は、初めに、送信者が、送金先アドレス(すなわち、受信者アドレス)を記入せず、自身のアドレスと検証用の公開鍵、電子署名を添付した取引情報を受信者に送信し、
次いで、受信者が自身の入金先アドレスを設定し、自身の入金先アドレスが記入された取引に対して電子署名を行い、秘密鍵に対応する公開鍵と電子署名で新たなアドレスを作成して受信者アドレスに設定して、受信者が取引をネットワークにブロードキャストすることとしても良い。
【発明の効果】
【0010】
本発明によれば、各取引で使用される受信者のアドレスはその都度新たに作成されて他の取引には使用することができず、本脆弱性を解消することができる。
【0011】
さらに、Pay-to-EndPointプロトコルと組み合わせた拡張実施によって、本脆弱性と代替可能性の低さを合わせて解消した状態で、ブロックチェーン方式を運用することが可能となる。
【図面の簡単な説明】
【0012】
【
図2】本発明のブロックチェーン取引作成プロトコル、及びブロックチェーンアドレス作成方法の一実施例の概要を示す図
【
図3】
図2のステップ100で、送信者から受信者に送信される情報を示す図
【
図4】
図2のステップ200で、受信者側で実施される検証、nアドレスの作成を示す図
【
図5】
図2のステップ200で、受信者から送信者に返信される情報を示す図
【
図6】
図2のステップ400で、送信者からブロードキャストされる取引情報を示す図
【
図7】マイナーによって実施される検証手順の概要を示す図
【
図8】
図2のステップ100の詳細な手続きを示す図
【
図9】
図8のステップ110で送信者から受信者に送信されるnアドレスに関する情報を示す図
【
図10】本発明のブロックチェーン取引作成プロトコル、及びブロックチェーンアドレス作成方法の他の実施例の概要を示す図
【
図11】
図10のステップ410で、受信者からブロードキャストされる取引情報を示す図
【発明を実施するための形態】
【0013】
(実施形態1)
本発明の一実施形態を、
図2から
図9を用いて説明する。
図において、類似の手順、手続き等のステップについては同一の番号を附して説明を省略することがある。
【0014】
図2は本発明の取引作成プロトコル、及びアドレス作成方法において、送信者側で設定する情報、受信者側で設定する情報、送受信者間での情報のやり取りをステップ毎に示したものであり、各ステップで設定する情報及び情報のやり取りは以下のとおりである。
ステップ100(S100)
送信者が出金先アドレスを設定せず、自身の入金先アドレスと検証用の公開鍵、電子署名を添付したものを受信者に送信する。このとき、入金先アドレスが確かに送信者のものであることを証明するために、送信者はアドレス作成に用いた公開鍵と、出金先アドレスが設定されてない取引情報に対しての電子署名を添付する。受信者は電子署名を検証し、検証可能であればステップ200に進む。
図3は送信者から送信される情報を示したものである。
ステップ200(S200)
受信者は自身の秘密鍵で、電子署名を除く取引に対して電子署名を作成し、秘密鍵に対応する公開鍵と電子署名とでnアドレスを作成する。
図4は受信者側での検証、nアドレスの作成手順を模式的に示したものである。
受信者はnアドレスを出金先アドレスに設定し、nアドレス作成に使用した公開鍵と電子署名を添付して、送信者に返信する。
図5は受信者から送信者に返信される情報を示したものである。
ステップ300(S300)
送信者は受信者からの返信を受け取って受信者の電子署名を検証し、検証可能であれば、取引全体の情報に対して電子署名をする。
ステップ400(S400)
送信者はネットワークに作成した取引情報をブロードキャストする。
図6は送信者によってブロードキャストされる取引情報を示したものである。
【0015】
マイナーは送信者からブロードキャストされた取引情報について、取引の出金先アドレスとして使用されているnアドレスの検証用として、公開鍵とその取引情報の電子署名が記されている場合には、取引情報のハッシュ値と電子署名を公開鍵により復号した値が等しいかを判定し、等しい時に電子署名と公開鍵からnアドレスを作成し、ブロードキャストされた取引情報の出金先アドレスのnアドレスと等しいか検証する。検証できた場合には、マイナーはナンスの探索を行い、ナンスを記して取引を承認されたブロックとして分散台帳に記載する。検証できなかった場合には、当該取引をナンス探索の対象としない。
図7はマイナーによる承認手続きの概要を模式的に示したものである。
【0016】
さらにステップ100の送信者による送信者アドレスの通知と署名の送信と受信者による送信者アドレスの検証について、
図8、
図9を用いて詳細に説明する。
ステップ110(S110)
送信者、受信者は入金先アドレスがnアドレスか、一般的なアドレスかの判定を行い、入金先アドレスがnアドレスでない場合にはステップ150に進み、
図3に示したよう送信者は送信者の公開鍵と署名を受信者に送信し、受信者はその署名を検証する手続きを行う。一方、入金先アドレスがnアドレスである場合には、ステップ120に進む。
ステップ120(S120)
送信者はnアドレスが出金先アドレスとして利用された取引を表すPre Indexという情報を公開鍵の代わりに取引情報に記載する。受信者はPre Indexを辿ることにより、nアドレスに関連する公開鍵が対応する取引に記録されている取引情報をブロックチェーンより参照する。
図9は入金先アドレスがnアドレスであった場合に受信者に送られる情報を示したものである。
ステップ130(S130)
受信者は送信者のnアドレスが参照した取引のnアドレスであることを検証する。
ステップ140(S140)
受信者は、参照した取引に記載のnアドレスの公開鍵を使って、nアドレスを送信者のアドレスとする取引の電子署名を検証することで、入金先のnアドレスの持ち主が送信者であることを確認する。
ステップ150(S150)
図3に示したよう送信者は送信者の公開鍵と署名を受信者に送信し、受信者はその署名を検証する手続きを行う。
【0017】
以上の説明から判るように、本発明の取引作成プロトコル、及びアドレス作成方法によれば、受信者のnアドレスは当該取引のみに使用されて有効なアドレスであり、ブロードキャストによってネットワーク参加者に公開されたとしても、悪意のネットワーク参加者がnアドレスを利用して受信者個人を特定することは不可能であり、脆弱性の原因となる「ある取引で公開されたアドレスがそれ以降の取引でも使用できる。」ことを回避することで、ブロックチェーン方式の脆弱性を解消することができる。
【0018】
(実施形態2)
本発明の他の実施形態について、
図10、
図11を用いて説明する。
【0019】
図10は本発明の他の実施形態を示したものであり、
図2に示したステップ200、ステップ300、ステップ400に代えてステップ210、ステップ310、ステップ410を実施する。
ステップ210(S210)
受信者は自身の入金先アドレスを設定した取引情報を作成し、秘密鍵で当該取引に対して電子署名を作成し、秘密鍵に対応する公開鍵と電子署名とでnアドレスを作成して、公開鍵と電子署名とnアドレスを取引情報に追加して受信者に送信する。送信者は受信者アドレスを受信し、受信者アドレスを検証し、ステップ310に進む。
ステップ310(S310)
送信者は受信者のアドレスを含めた取引の情報に対する署名を作成し、署名を追加した取引情報を受信者に送信する。更新された署名が追加された取引情報を受け取った受信者は自身が設定した入金先アドレスの公開鍵と署名を取引情報に記載し、ステップ410に進む。
ステップ410(S410)
受信者はネットワークに作成した取引情報をブロードキャストする。
図11は受信者からブロードキャストされる取引情報を示したものである。
【0020】
図10に示した実施形態によって、通常プロトコルの本脆弱性と代替可能性の低下を同時に解消することができるブロックチェーン取引作成プロトコルを実現することができる。
【産業上の利用可能性】
【0021】
本発明によれば、受信者の承諾なしに取引が成立するという脆弱性が解消されたブロックチェーン方式を実現することができる。
【符号の説明】
【0022】
S100:ステップ100
S110:ステップ110
S120:ステップ120
S130:ステップ130
S140:ステップ140
S150:ステップ150
S200:ステップ200
S210:ステップ210
S300:ステップ300
S310:ステップ310
S400:ステップ400
S410:ステップ410