図1を参照すると、本発明の実施の形態におけるネットワークは、署名システム10と、1以上の利用者システム40(利用者システム1~n)と、1以上の事業者システム50(事業者システム1~m)とを含んでいる。
利用者システム40の夫々は、1以上の事業者システム50と通信可能に接続されており、事業者システム50の夫々は、1以上の利用者システム40と通信可能に接続されている。また、署名システム10は、1以上の利用者システム40と通信可能に接続されており、且つ、1以上の事業者システム50と通信可能に接続されている。署名システム10、利用者システム40及び事業者システム50は、インターネットによって互いに接続されていてもよいし、他のネットワークによって互いに接続されていてもよい。
本実施の形態によれば、全ての利用者システム40が全ての事業者システム50と接続されている。また、署名システム10は、全ての利用者システム40及び全ての事業者システム50と接続されている。署名システム10は、全ての利用者システム40及び全ての事業者システム50に対して後述する署名サービスを提供する。但し、本発明は、これに限られない。例えば、利用者システム40のうちの1つは、事業者システム50の1つのみと接続されていてもよい。また、署名システム10は、この1つの利用者システム40及び1つの事業者システム50のみと接続されていてもよい。即ち、署名システム10は、1つの利用者システム40及び1つの事業者システム50のみに対して署名サービスを提供してもよい。
本実施の形態による利用者システム40の夫々は、操作者(利用者)が保有するPC(personal computer)やスマートフォン等の利用者端末40である。但し、本発明は、これに限られない。例えば、利用者システム40の夫々は、公共施設に設置された端末であってもよい。また、利用者は、署名システム10や事業者システム50の端末を、利用者端末(利用者システム)40として使用してもよい。一方、利用者システム40の夫々は、利用者の業務を行うために利用者が運営する複数のコンピュータからなるシステムであってもよい。即ち、本実施の形態における利用者システム40は、利用者によって操作される端末やシステムである。
図1及び図9を参照すると、署名システム10は、利用者システム40のアカウントを登録した利用者情報26を有している。利用者情報26には、1以上の利用者特定データ262と、1以上の利用者認証データ264とが含まれている。利用者特定データ262は、署名システム10が署名サービスを提供する利用者システム40と夫々対応している。利用者特定データ262の夫々は、対応する利用者システム40を一意に特定可能なデータである。例えば、利用者特定データ262の夫々は、対応する利用者システム40が署名システム10のアカウントを作成した際の利用者ID(identifier)やメールアドレスである。利用者認証データ264は、利用者特定データ262と夫々対応している。利用者認証データ264の夫々は、対応する利用者システム40を認証するためのデータである。利用者認証データ264の夫々は、例えば、パスワードであってもよいし、指紋情報等の生体情報であってもよい。また、利用者情報26は、必要に応じて設ければよい。
署名システム10は、利用者情報26に加えて、事業者システム50のアカウントを登録した事業者情報(図示せず)を有していてもよい。但し、このような事業者情報は、本実施の形態に必須ではないため特に説明しない。
図1を参照すると、署名システム10、利用者システム40及び事業者システム50は、更に他のノード(図示せず)と共にPtoP(Peer to Peer)ネットワークを構成している。PtoPネットワークは、ブロックチェーン70を含んでいる。ブロックチェーン70は、多数のトランザクション80を含むデータ集合体である。詳しくは、ブロックチェーン70は、1以上のブロック(図示せず)を含んでいる。ブロックの夫々は、直前のブロックのハッシュ値を有することで、チェーン状に互いに連結されている。ブロックの夫々は、1以上のトランザクション80を含んでいる。
トランザクション80は、送金等の取引を記録したデータ構造体である。トランザクション80は、PtoPネットワークによって分散的に管理されている。より具体的には、トランザクション80は、多数のノードの記憶装置に分散して記憶されており、多数のノードは、互いに自律的に通信することで、トランザクション80を整合させている。即ち、全てのトランザクション80を物理的に一か所で管理する特定のノードは存在しない。但し、本実施の形態における図1等の図面は、トランザクション80の全てを記憶したブロックチェーン70が1箇所に存在しているように描画している。また、本発明は、このようなブロックチェーン70が実際に存在している場合にも適用可能である。
トランザクション80には、ノード間の様々な取引を記録可能である。例えば、トランザクション80には、証券の取引を記録してもよく、円やドルなどの現実通貨の取引を記録してもよく、仮想通貨の取引を記録してもよい。本実施の形態において、トランザクション80は、仮想通貨の取引を記録している。即ち、本実施の形態において、事業者システム50は、仮想通貨の取引所システムであり、利用者システム40は、仮想通貨の取引所を介して又は介さずに取引を行う会社や個人のシステムである。但し、本発明は、これに限られない。例えば、事業者システム50は、証券所システムや銀行システムであってもよい。
トランザクション80に記録された取引は、トランザクション80に電子署名(以下、単に「署名」という。)を施すことで承認され有効になる。トランザクション80は、1つの署名のみを施すことによって承認されるトランザクションに加えて、複数の署名(多重署名:マルチシグニチャ)を施すことによって承認されるマルチシグトランザクション80Mを含んでいる。本発明は、マルチシグトランザクション80Mに関連している。
本実施の形態において、事業者システム50の夫々は、仮想通貨の保有額を記憶した1以上の口座と、口座に夫々対応する秘密鍵542とを有している。加えて、図1に示した利用者システム40の夫々は、仮想通貨の保有額を記憶した1以上の口座と、口座に夫々対応する秘密鍵442とを有している。但し、本発明は、これに限られず、利用者システム40は、自らの口座及び秘密鍵442を有していなくてもよい。
本実施の形態において、事業者システム50の夫々は、自らの口座のうちの1つから他の事業者システム50(又は利用者システム40)の口座のうちの1つに仮想通貨を送金する。同様に、秘密鍵442を有する利用者システム40の夫々は、自らの口座のうちの1つから他の利用者システム40(又は事業者システム50)の口座のうちの1つに仮想通貨を送金する。事業者システム50(利用者システム40)の夫々は、この送金取引の際に、送金取引の内容を記憶したマルチシグトランザクション80Mを作成して秘密鍵によって署名し、PtoPネットワークにブロードキャストする。即ち、利用者システム40及び事業者システム50の夫々は、送金取引を行う度に、秘密鍵によって署名したマルチシグトランザクション80Mを発行する。
詳しくは、事業者システム50の口座の夫々について、互いに対応する秘密鍵542及び秘密鍵342が設けられている。互いに対応する秘密鍵542及び秘密鍵342の夫々は、マルチシグトランザクション80Mに署名を施すための複数の秘密鍵のうちの1つである。事業者システム50は、互いに対応する秘密鍵542及び秘密鍵342のうちの一方(秘密鍵542)を有しており、署名システム10は、他方(秘密鍵342)を有している。事業者システム50が秘密鍵542によって署名して発行したマルチシグトランザクション80Mは、署名システム10が対応する秘密鍵342によって更に署名して発行することで有効になる。
同様に、利用者システム40の口座の夫々について、互いに対応する秘密鍵442及び秘密鍵342が設けられている。互いに対応する秘密鍵442及び秘密鍵342の夫々は、マルチシグトランザクション80Mに署名を施すための複数の秘密鍵のうちの1つである。利用者システム40は、互いに対応する秘密鍵442及び秘密鍵342のうちの一方(秘密鍵442)を有しており、署名システム10は、他方(秘密鍵342)を有している。利用者システム40が秘密鍵442によって署名して発行したマルチシグトランザクション80Mは、署名システム10が対応する秘密鍵342によって更に署名して発行することで有効になる。
以下の説明において、事業者システム50又は利用者システム40が署名して発行した時点でのマルチシグトランザクション80Mを、未承認のマルチシグトランザクション80Mといい、署名システム10が更に署名して発行した時点でのマルチシグトランザクション80Mを、承認済みのマルチシグトランザクション80Mという。換言すれば、以下の説明において、マルチシグトランザクション80Mについての「未承認」とは、署名システム10が未だ署名していないことを意味し、マルチシグトランザクション80Mについての「承認済み」とは、署名システム10が既に署名していることを意味する。即ち、未承認のマルチシグトランザクション80Mは、署名システム10の署名によって承認されて承認済みのマルチシグトランザクション80Mになる。
本実施の形態において、未承認のマルチシグトランザクション80Mの全てが、署名システム10の署名対象である。但し、本発明は、これに限られず、ブロックチェーン70は、署名システム10の署名対象とならない未承認のマルチシグトランザクション80Mを含んでいてもよい。換言すれば、署名システム10は、ブロックチェーン70に含まれる未承認のマルチシグトランザクション80Mのうちの一部のみについて署名してもよい。
図5は、マルチシグトランザクション80Mに含まれるデータのうち、以下の説明において必要なデータのみを示している。図1及び図5を参照すると、マルチシグトランザクション80Mの夫々は、送信側アドレス82と、送信先アドレス84と、送信額85と、トランザクション発行日時86と、署名データ88とを含んでいる。送信側アドレス82は、マルチシグトランザクション80Mを発行した発行側システム(利用者システム40又は事業者システム50)の口座を特定するデータである。送信先アドレス84は、発行側システムに対する相手側システム(利用者システム40又は事業者システム50)の口座を特定するデータである。送信額85は、送信先アドレス84に対する仮想通貨の送金額を示すデータである。トランザクション発行日時86は、マルチシグトランザクション80Mを発行した日時である。署名データ88は、発行側システムや署名システム10の秘密鍵による署名である。
図5に描画したデータ構造は、本実施の形態を簡潔に説明するための模式的なデータ構造であり、マルチシグトランザクション80Mの実際のデータ構造は、図5に限定されない。特に、署名データ88は、マルチシグトランザクション80Mが発行側システムや署名システム10の秘密鍵(所定の秘密鍵)によって署名されているか否かを何らかの方法で判定できる限り、マルチシグトランザクション80Mにデータとして含まれていなくてもよい。例えば、マルチシグトランザクション80Mは、マルチシグトランザクション80M全体を所定の秘密鍵によって暗号化することで署名してもよい。
図1及び図6を参照すると、事業者システム50の夫々は、事業者秘密鍵54を有している。事業者秘密鍵54には、1以上の秘密鍵542が含まれている。秘密鍵542は、事業者秘密鍵54のデータとして一括管理されていてもよいし、分散管理されていてもよい。
図1、図5及び図6を参照すると、秘密鍵542は、事業者システム50の口座(送信側アドレス82)に夫々対応している。より具体的には、秘密鍵542の夫々は、事業者システム50が秘密鍵542に対応する口座から送金取引を行う際に、マルチシグトランザクション80Mの署名データ88を生成するために使用される。即ち、本実施の形態において、事業者システム50が発行するマルチシグトランザクション80Mの署名データ88は、所定のデータを、マルチシグトランザクション80Mの送信側アドレス82に対応する秘密鍵542によって暗号化したものである。即ち、本実施の形態における秘密鍵542の夫々は、マルチシグトランザクション80Mに署名するための秘密鍵である。但し、事業者システム50は、事業者秘密鍵54に加えて、マルチシグトランザクション80M以外のトランザクション80に署名するための秘密鍵を有していてもよい。
秘密鍵542の夫々は、公開鍵544及びマルチシグアドレス546と対応している。公開鍵544の夫々は、対応する秘密鍵542から生成されており、対応する秘密鍵542によって暗号化されたデータを復号可能である。マルチシグアドレス546の夫々は、対応する公開鍵544に対してハッシュ等の変換を施すことで生成されている。マルチシグアドレス546の夫々は、事業者システム50の口座を特定する口座番号として機能する。公開鍵544及びマルチシグアドレス546は、秘密鍵542と合わせて事業者秘密鍵54に含まれていてもよいし、事業者秘密鍵54とは別に事業者システム50内部に記憶されていてもよい。また、公開鍵544及びマルチシグアドレス546は、事業者システム50が必要な時点で生成してもよい。
図1及び図7を参照すると、利用者システム40の夫々は、事業者秘密鍵54と同様な利用者秘密鍵44を有している。利用者秘密鍵44には、1以上の秘密鍵442が含まれている。秘密鍵442は、利用者秘密鍵44のデータとして一括管理されていてもよいし、分散管理されていてもよい。
図1、図5及び図7を参照すると、秘密鍵442は、利用者システム40の口座(送信側アドレス82)に夫々対応している。より具体的には、秘密鍵442の夫々は、利用者システム40が秘密鍵442に対応する口座から送金取引を行う際に、マルチシグトランザクション80Mの署名データ88を生成するために使用される。即ち、本実施の形態において、利用者システム40が発行するマルチシグトランザクション80Mの署名データ88は、所定のデータを、マルチシグトランザクション80Mの送信側アドレス82に対応する秘密鍵442によって暗号化したものである。
即ち、本実施の形態における秘密鍵442の夫々は、マルチシグトランザクション80Mに署名するための秘密鍵である。但し、利用者システム40は、利用者秘密鍵44に加えて、マルチシグトランザクション80M以外のトランザクション80に署名するための秘密鍵を有していてもよい。また、利用者システム40は、自らの口座を有しておらず、事業者システム50を介してのみマルチシグトランザクション80Mを発行する場合、利用者秘密鍵44を有していなくてもよい。即ち、利用者システム40の夫々は、必要に応じて利用者秘密鍵44を有していればよい。
秘密鍵442の夫々は、公開鍵444及びマルチシグアドレス446と対応している。公開鍵444の夫々は、対応する秘密鍵442から生成されており、対応する秘密鍵442によって暗号化されたデータを復号可能である。マルチシグアドレス446の夫々は、対応する公開鍵444に対してハッシュ等の変換を施すことで生成されている。マルチシグアドレス446の夫々は、利用者システム40の口座を特定する口座番号として機能する。公開鍵444及びマルチシグアドレス446は、秘密鍵442と合わせて利用者秘密鍵44に含まれていてもよいし、利用者秘密鍵44とは別に利用者システム40内部に記憶されていてもよい。また、公開鍵444及びマルチシグアドレス446は、利用者システム40が必要な時点で生成してもよい。
図1及び図8を参照すると、署名システム10は、事業者システム50及び利用者システム40から預かった預かり秘密鍵34を有している。預かり秘密鍵34には、事業者システム50の夫々について、秘密鍵542に夫々対応する1以上の秘密鍵342と、秘密鍵342に夫々対応する1以上の公開鍵344とが含まれている。加えて、預かり秘密鍵34には、利用者システム40の夫々について、秘密鍵442に夫々対応する1以上の秘密鍵342と、秘密鍵342に夫々対応する1以上の公開鍵344とが含まれている。秘密鍵342及び公開鍵344は、預かり秘密鍵34のデータとして一括管理されていてもよいし、分散管理されていてもよい。
例えば、預かり秘密鍵34の事業者秘密鍵j1Y、事業者秘密鍵j2Y及び事業者秘密鍵j3Y(図8参照)は、事業者秘密鍵54の事業者秘密鍵j1X、事業者秘密鍵j2X及び事業者秘密鍵j3X(図6参照)と夫々対応しており、預かり秘密鍵34の利用者秘密鍵i1Y、事業者秘密鍵i2Y及び事業者秘密鍵i3Y(図8参照)は、利用者秘密鍵44の利用者秘密鍵i1X、利用者秘密鍵i2X及び利用者秘密鍵i3X(図7参照)と夫々対応している。
上述したように、公開鍵344は、秘密鍵342と夫々対応している。また、秘密鍵342の夫々は、秘密鍵542及び秘密鍵442のうちのいずれか1つ(相手側秘密鍵)と対応している。更に、秘密鍵542は、公開鍵544と夫々対応しており(図6参照)、秘密鍵442は、公開鍵444と夫々対応している(図7参照)。公開鍵344の夫々は、対応する秘密鍵342の相手側秘密鍵の公開鍵544(又は、公開鍵444)と一致している。事業者システム50又は利用者システム40が相手側秘密鍵によって署名して発行した未承認のマルチシグトランザクション80Mは、相手側秘密鍵と対応する秘密鍵342によって署名されることで承認され有効になる。換言すれば、マルチシグトランザクション80Mは、事業者システム50又は利用者システム40が秘密鍵542又は秘密鍵442によって署名して発行した時点では未承認であり、署名システム10の秘密鍵342による署名によって承認される。
より具体的には、マルチシグトランザクション80Mの署名データ88(図5参照)は、事業者システム50(利用者システム40)に対応する署名1(図示せず)と、署名システム10に対応する署名2(図示せず)の2つのデータから構成してもよい。このように構成することで、署名システム10は、マルチシグトランザクション80Mが未承認なのか又は既に承認されているかを署名データ88から判定できる。詳しくは、この場合、事業者システム50(利用者システム40)は、所定のデータを秘密鍵542(秘密鍵442)によって暗号化して署名データ88の署名1に設定する。署名システム10は、署名1を対応する公開鍵344によって復号して所定のデータを得ることで、署名1を検証する。また、署名システム10は、他の所定のデータを署名1に対応する秘密鍵342によって暗号化して署名データ88の署名2に設定する。
但し、マルチシグトランザクション80Mが未承認なのか又は既に承認されているかを判定する方法は、上述した方法に限られない。例えば、事業者システム50(利用者システム40)は、マルチシグトランザクション80M全体を秘密鍵542(秘密鍵442)によって暗号化することで署名してもよい。この場合、署名システム10は、暗号化されたマルチシグトランザクション80Mを対応する公開鍵344によって復号することで事業者システム50(利用者システム40)のみによって署名済みであること(未承認であること)を検証してもよい。また、署名システム10は、暗号化されたマルチシグトランザクション80M全体を秘密鍵342によって暗号化することで署名して承認してもよい。以下の説明においては、マルチシグトランザクション80Mの署名に関して、署名データ88に言及しない。
以上の説明から理解されるように、署名システム10は、事業者システム50から、事業者システム50が有する秘密鍵542に対応する秘密鍵342を、秘密鍵542の公開鍵544(図6参照)と同一の公開鍵344と共に預かっている。同様に、署名システム10は、利用者システム40から、利用者システム40が有する秘密鍵442に対応する秘密鍵342を、秘密鍵342の公開鍵444(図7参照)と同一の公開鍵344と共に預かっている。
即ち、事業者システム50は、事業者システム50が発行するマルチシグトランザクション80Mを承認するために必要な2つの秘密鍵342,542の一方である秘密鍵542を有しており、署名システム10は、他方である秘密鍵342と、秘密鍵542による暗号を復号可能な公開鍵344とを有している。同様に、利用者システム40は、利用者システム40が発行するマルチシグトランザクション80Mを承認するために必要な2つの秘密鍵342,442の一方である秘密鍵442を有しており、署名システム10は、他方である秘密鍵342と、秘密鍵442による暗号を復号可能な公開鍵344とを有している。
本実施の形態において、マルチシグトランザクション80Mの夫々についての秘密鍵の数は3である。そのうちの2つは、上述したように、事業者システム50(利用者システム40)及び署名システム10が夫々有しており、他の1つは、通常は使用できないように保管されている。トランザクション80は、秘密鍵342,542(秘密鍵342,442)の一方のみの署名によっては有効にならず、2つの秘密鍵342,542(秘密鍵342,442)の署名(連署)によって有効になる。即ち、本実施の形態におけるマルチシグニチャは、2of3方式である。但し、本発明は、これに限られず、様々な方式のマルチシグニチャに適用可能である。
以下、署名システム10の署名サービスについて、利用者システム40のうちの1つ(利用者システムi)及び事業者システム50のうちの1つ(事業者システムj)に着目して説明する。以下の説明において、特に注記しない限り、「利用者システム40」は、利用者システムiを意味しており、「事業者システム50」は、利用者システムjを意味している。
図2から図4までを参照すると、署名システム10は、利用者に関連して事業者システム50が秘密鍵542によって署名して発行した未承認のマルチシグトランザクション80Mに対して、秘密鍵542に対応する他の秘密鍵342によって署名する。図2を参照すると、署名システム10は、署名サービスの1つとして、利用者システム40及び事業者システム50に対して、BtoBtoCサービス(business to business to consumerサービス)を提供する。加えて、図3を参照すると、署名システム10は、署名サービスの他の1つとして、利用者システム40に対して、BtoCサービス(business to business to consumerサービス)を提供する。従って、図4を参照すると、署名システム10は、利用者システム40及び事業者システム50に対して、上述したBtoBtoCサービス(図2参照)とサービスBtoCサービス(図3参照)の2つのサービスを提供できる。
換言すれば、本実施の形態の署名システム10は、図2に示されるBtoBtoCサービスを提供する機能と、図3に示されるBtoBtoCサービスを提供する機能との2つの機能を有している。但し、本発明は、これに限られない。例えば、署名システム10は、BtoBtoCサービスを提供する機能のみを有していてもよく、BtoCサービスを提供する機能のみを有していてもよい。また、署名システム10は、これらのサービスと異なる署名サービスを提供する機能を更に有していてもよい。
以下、署名システム10のBtoBtoCサービスについて説明する。
図2を参照すると、まず、利用者システム40は、利用者システム40の操作者の操作に応じて、事業者システム50に対して、マルチシグトランザクション80Mの発行を依頼する(図2の(1)発行依頼)。例えば、事業者システム50は、仮想通貨の口座を有しており、利用者システム40は、事業者システム50の口座に保管された仮想通貨の一部を所有している。利用者システム40は、事業者システム50の口座から、利用者システム40が所有する仮想通貨の全部又は一部(以下、「送金額」という。)を、他の利用者システム40又は事業者システム50(図2において描画せず)の口座(以下、「送金先口座」という。)に対して送金するように依頼する。
本実施の形態において、図2の(1)発行依頼は、利用者システム40から事業者システム50へのデータ通信によって行われる。但し、本発明は、これに限られない。例えば、利用者システム40の利用者が、電話やFAXによって、事業者システム50の管理者にマルチシグトランザクション80Mの発行を依頼してもよい。
次に、発行依頼を受信した事業者システム50は、利用者システム40が実際に仮想通貨を所有しているかといった検証を行った後、マルチシグトランザクション80Mを作成し、作成したマルチシグトランザクション80Mに署名してマルチシグトランザクション80Mを発行する(図2の(2)署名&発行)。
図2、図5及び図6を参照すると、図2の(2)署名&発行において、事業者システム50は、マルチシグトランザクション80Mの送信側アドレス82に、利用者システム40が所有する仮想通貨を保管している口座を特定するマルチシグアドレス546を設定し、送信先アドレス84に、送金先口座を特定するデータを設定し、送信額85に、送金額を設定し、トランザクション発行日時86に、マルチシグトランザクション80Mを作成した日時を設定する。次に、事業者システム50は、送信側アドレス82に設定したマルチシグアドレス546に対応する秘密鍵542によってマルチシグトランザクション80Mに署名する。次に、事業者システム50は、マルチシグトランザクション80Mをブロードキャストする。この結果、事業者システム50が作成したマルチシグトランザクション80Mがブロックチェーン70に記憶される。即ち、事業者システム50が作成した未承認のマルチシグトランザクション80Mが発行される。
以上のように発行されたマルチシグトランザクション80Mの送信側アドレス82には、マルチシグアドレス546が設定されている。換言すれば、図2の(2)署名&発行において発行されるマルチシグトランザクション80Mは、マルチシグアドレス546から発行されている。
図2を参照すると、次に、事業者システム50は、発行したマルチシグトランザクション80Mに対応するエントリデータ56を作成する。次に、事業者システム50は、署名システム10に対して、作成したエントリデータ56を付したエントリデータ追加依頼を送信し、これによりマルチシグトランザクション80Mを発行したことを署名システム10に通知する(図2の(3)エントリデータ追加依頼)。
図2及び図10を参照すると、エントリデータ56には、トランザクション特定データ560と、トランザクション発行日時562と、送信先アドレス564と、送信額565と、利用者特定データ566とが含まれている。事業者システム50は、エントリデータ56を作成する際、トランザクション発行日時562に、対応するマルチシグトランザクション80Mのトランザクション発行日時86を設定し、送信先アドレス564に、対応するマルチシグトランザクション80Mの送信先アドレス84を設定し、送信額565に、対応するマルチシグトランザクション80Mの送信額85を設定する。
事業者システム50は、エントリデータ56を作成する際、トランザクション特定データ560に、対応するマルチシグトランザクション80Mを特定可能なデータを設定する。例えば、事業者システム50は、対応するマルチシグトランザクション80Mから、署名システム10に通知しているハッシュ方法によるハッシュ値を生成し、生成したハッシュ値を、トランザクション特定データ560に設定する。但し、本発明は、これに限られない。署名システム10が、ブロックチェーン70におけるトランザクション80から対応するマルチシグトランザクション80Mを一意に特定できる限り、トランザクション特定データ560は、どのようなデータであってもよい。
事業者システム50は、エントリデータ56を作成する際、利用者特定データ566に、対応するマルチシグトランザクション80Mの発行を依頼した利用者システム40を特定可能なデータを設定する。例えば、事業者システム50は、利用者システム40が対応するマルチシグトランザクション80Mの発行を依頼した際に(図2の(1)発行依頼)、利用者システム40が利用者特定データ262として登録しているメールアドレスを利用者システム40から受信し、受信したメールアドレスを利用者特定データ566に設定する。但し、本発明は、これに限られない。署名システム10が、マルチシグトランザクション80Mの発行を依頼した利用者システム40を一意に特定できる限り、利用者特定データ566は、どのようなデータであってもよい。
図2及び図11を参照すると、署名システム10は、エントリ24Cを有している。事業者システム50が署名システム10にエントリデータ56を送信すると(図2の(3)エントリデータ追加依頼)、署名システム10は、受信したエントリデータ56をエントリ24Cに追加する。
詳しくは、エントリ24Cは、エントリデータ24の集合体である。エントリデータ24の夫々は、トランザクション特定データ240と、トランザクション発行日時242と、送信先アドレス244と、送信額245と、利用者特定データ246と、ステータス248とを有している。署名システム10は、エントリデータ56を受信する度に、受信したエントリデータ56に基づいて、新たなエントリデータ24を作成してエントリ24Cに追加する。即ち、署名システム10は、事業者システム50から受信したエントリデータ追加依頼(図2の(3)エントリデータ追加依頼)に夫々応じて作成した1以上のエントリデータ24を有している。エントリデータ24の夫々は、マルチシグトランザクション80Mと対応している。
図10及び図11を参照すると、受信したエントリデータ56に基づくエントリデータ24が追加されたとき、追加されたエントリデータ24のトランザクション特定データ240、トランザクション発行日時242、送信先アドレス244、送信額245及び利用者特定データ246には、受信したエントリデータ56のトランザクション特定データ560、トランザクション発行日時562、送信先アドレス564、送信額565及び利用者特定データ566が夫々設定され、ステータス248には「未承認」を意味するデータが設定される。後述するように、ステータス248の「未承認」を意味するデータは、利用者システム40による署名承認や署名否認に応じて、「署名承認済み」を意味するデータや、「署名否認済み」を意味するデータに変更される。
図2及び図11を参照すると、署名システム10は、上述したように、事業者システム50から受信したエントリデータ56をエントリデータ24として集めたエントリ24Cを有している。エントリデータ24の夫々は、事業者システム50が利用者システム40からの発行依頼(図2の(1)発行依頼)に応じて秘密鍵542によって署名して発行したマルチシグトランザクション80Mと対応している。エントリデータ24の夫々には、エントリデータ24に対応するマルチシグトランザクション80Mを特定可能なトランザクション特定データ240と、対応するマルチシグトランザクション80Mを発行依頼した利用者システム40を特定可能な利用者特定データ246とが含まれている。
図2を参照すると、利用者システム40は、事業者システム50に対してトランザクション80の発行を依頼すると(図2の(1)発行依頼)、その後の所定の時点において、署名システム10にログインする(図2の(4)ログイン)。
図2及び図9を参照すると、署名システム10は、利用者システム40からログイン要求を受けると(図2の(4)ログイン)、利用者特定データ262及び利用者認証データ264を使用して利用者システム40を認証したうえで、利用者システム40のログインを許容する。
本実施の形態による署名システム10は、例えば、ログイン要求(図2の(4)ログイン)の際に、利用者システム40から利用者システム40の操作者のメールアドレスや生体情報を受信する。署名システム10は、受信したメールアドレスを、利用者情報26の利用者特定データ262と照合することで、利用者システム40を特定する。また、署名システム10は、受信した生体情報を、特定した利用者システム40の利用者認証データ264と照合することで、利用者システム40を認証する。
図2を参照すると、署名システム10は、利用者システム40のログイン要求(図2の(4)ログイン)によってトランザクション参照依頼が行われたと判断し、以下の処理を行う。但し、本発明は、これに限られない。例えば、利用者システム40は、ログイン要求と異なるタイミングで、署名システム10に対してトランザクション参照依頼を送信してもよい。また、署名システム10は、ログイン中の利用者システム40に対して、所定の時間が経過する度に、トランザクション参照依頼が行われたものとして以下の処理を行ってもよい。
まず、署名システム10は、利用者システム40からのトランザクション参照依頼(図2の(4)ログイン)をトリガーとして、ブロックチェーン70のトランザクション80から、署名対象となるマルチシグトランザクション80Mを収集する(図2の(5)収集)。詳しくは、署名システム10は、利用者に関連するマルチシグトランザクション80Mであって署名システム10の秘密鍵342による署名が必要なマルチシグトランザクション80Mを収集する。
図2、図5及び図11を参照すると、署名システム10は、BtoBtoCサービスにおいて上述したマルチシグトランザクション80Mの収集を行う際、エントリデータ24のトランザクション特定データ240によって特定される未承認のマルチシグトランザクション80Mを、利用者に関連するマルチシグトランザクション80Mとして収集する。
図2を参照すると、次に、署名システム10は、収集したマルチシグトランザクション80Mからトランザクションデータリスト28Lを作成し、作成したトランザクションデータリスト28Lを、トランザクション参照依頼(図2の(4)ログイン)を送信した利用者システム40に送信する(図2の(6)トランザクションデータリスト送信)。
図2及び図12を参照すると、トランザクションデータリスト28Lは、署名システム10が収集した(図2の(5)収集)マルチシグトランザクション80Mに夫々対応するトランザクションデータ28のリストである。トランザクションデータ28の夫々には、トランザクション特定データ280と、トランザクション発行日時282と、事業者識別データ284と、送信先アドレス286と、送信額288とが含まれている。
図2、図11及び図12を参照すると、トランザクションデータ28の夫々は、署名システム10が収集した(図2の(5)収集)マルチシグトランザクション80Mに対応するエントリデータ24に基づいて作成されている。換言すれば、トランザクションデータ28の夫々は、エントリデータ24のいずれかと対応している。トランザクションデータ28の夫々におけるトランザクション特定データ280、トランザクション発行日時282、送信先アドレス286及び送信額288には、対応するエントリデータ24のトランザクション特定データ240、トランザクション発行日時242、送信先アドレス244及び送信額245が夫々設定されている。
図2、図5及び図12を参照すると、BtoBtoCサービスにおいて、トランザクションデータ28の夫々における事業者識別データ284には、「AAA取引所」といった、利用者システム40の操作者が事業者システム50を識別可能なデータが設定されている。例えば、署名システム10は、トランザクションデータ28の夫々について、対応するマルチシグトランザクション80Mの送信側アドレス82を参照して、事業者識別データ284を作成する。
詳しくは、前述したように、マルチシグトランザクション80Mの送信側アドレス82には、マルチシグトランザクション80Mを発行した事業者システム50のマルチシグアドレス546(図6参照)が設定されている。また、署名システム10は、このマルチシグアドレス546を生成可能な公開鍵344(図8参照)を有している。署名システム10は、マルチシグアドレス546を参照してマルチシグトランザクション80Mを発行した事業者システム50を特定し、特定した事業者システム50を、例えば変換テーブルによって事業者名に変換して事業者識別データ284に設定する。
上述したように、トランザクションデータリスト28Lにおけるトランザクションデータ28の夫々には、対応するマルチシグトランザクション80Mを発行した事業者システム50を識別可能なデータである事業者識別データ284が含まれている。本実施の形態における事業者識別データ284は、事業者システム50の事業者の名称である。但し、本発明は、これに限られない。例えば、事業者識別データ284は、事業者のロゴ等の画像データであってもよい。
図2を参照すると、利用者システム40は、後述するように、受信したトランザクションデータリスト28Lを利用者システム40の操作者に表示する。利用者システム40は、操作者の操作に応じて、トランザクションデータリスト28Lのトランザクションデータ28の夫々についての署名承認又は署名否認を署名システム10に送信する(図2の(7)署名承認or署名否認)。前述したように、トランザクションデータ28の夫々は、マルチシグトランザクション80Mのいずれかと対応している。トランザクションデータ28の夫々についての署名承認又は署名否認は、対応するマルチシグトランザクション80Mの署名承認又は署名否認である。
図2及び図12を参照すると、署名システム10は、利用者システム40からトランザクションデータ28の夫々に対応するマルチシグトランザクション80Mの署名承認又は署名否認を受信する。図2、図11及び図12を参照すると、署名システム10は、署名承認されたトランザクションデータ28に対応するエントリデータ24のステータス248に「署名承認済み」を意味するデータを設定し、署名否認されたトランザクションデータ28に対応するエントリデータ24のステータス248に「署名否認済み」を意味するデータを設定する。
図2及び図11を参照すると、次に、署名システム10は、署名承認されたマルチシグトランザクション80Mに対して秘密鍵342によって署名して発行する(図2の(8)署名&発行)。詳しくは、署名システム10は、ブロックチェーン70から、「署名承認済み」を意味するデータを設定したエントリデータ24に対応するマルチシグトランザクション80Mを取得する。次に、署名システム10は、取得したマルチシグトランザクション80Mに対して、送信側アドレス82(図5参照)に設定されているマルチシグアドレス546(図6参照)に対応する秘密鍵342によって署名する。次に、署名システム10は、署名したマルチシグトランザクション80Mをブロードキャストする。この結果、署名システム10が署名したことによって承認された有効なマルチシグトランザクション80Mがブロックチェーン70に記憶される。即ち、承認済みのマルチシグトランザクション80Mが発行される。
署名システム10は、承認済みのマルチシグトランザクション80Mを発行した後、発行したマルチシグトランザクション80Mに対応するエントリデータ24のステータス248に「署名済み」を意味するデータを設定してもよい。
以上に説明したように、本実施の形態によれば、利用者に関連するマルチシグトランザクション80M、例えば、利用者システム40の発行依頼に応じて事業者システム50が秘密鍵542によって署名して発行したマルチシグトランザクション80Mは、署名システム10が利用者システム40からの署名への承認を受信した場合に、署名システム10の秘密鍵342によって署名される。即ち、マルチシグトランザクション80Mは、発行依頼した利用者システム40の利用者による確認という手順を踏んで署名されるため、事業者システム50の秘密鍵542が漏洩した場合も、漏洩した秘密鍵542の不正な使用による被害を防止できる。本発明によれば、マルチシグトランザクション80Mの信頼性を向上可能な新たな署名システム10を提供できる。
特に、本実施の形態によれば、利用者による署名承認が必要なマルチシグトランザクション80Mは、トランザクションデータリスト28Lに纏められて発行依頼した利用者システム40に送信される。従って、利用者は、マルチシグトランザクション80Mに対して署名承認すべきか署名否認すべきかを、取引内容を確認しつつ判断できる。
署名システム10による署名サービスは、上述したBtoBtoCサービスに限られず、必要に応じて様々に応用可能である。以下、署名システム10のBtoCサービスについて説明する。
図3を参照すると、まず、利用者システム40は、利用者システム40の操作者の操作に応じて、利用者システム40の口座から送金先口座に対して送金額を送金するという内容のマルチシグトランザクション80Mを作成する。利用者システム40は、作成したマルチシグトランザクション80Mに対して秘密鍵442によって署名してマルチシグトランザクション80Mを発行する(図3の(1)署名&発行)。
図3、図5及び図7を参照すると、図3の(1)署名&発行において、利用者システム40は、BtoBtoCサービス(図2参照)における事業者システム50と同様に、マルチシグトランザクション80Mのデータを設定する。詳しくは、利用者システム40は、送信側アドレス82に、利用者システム40の仮想通貨を保管している口座を特定するマルチシグアドレス446を設定し、送信先アドレス84に、送金先口座を特定するデータを設定し、送信額85に、送金額を設定し、トランザクション発行日時86に、トランザクション80を作成した日時を設定する。
次に、利用者システム40は、送信側アドレス82に設定したマルチシグアドレス446に対応する秘密鍵442によってマルチシグトランザクション80Mに署名する。次に、利用者システム40は、マルチシグトランザクション80Mをブロードキャストする。この結果、利用者システム40が作成したマルチシグトランザクション80Mがブロックチェーン70に記憶される。即ち、利用者システム40が作成した未承認のマルチシグトランザクション80Mが発行される。BtoCサービスにおいて発行されたマルチシグトランザクション80Mは、マルチシグアドレス446から発行されている。
図3を参照すると、利用者システム40は、マルチシグトランザクション80Mを発行すると(図3の(1)署名&発行)、その後の所定の時点において、BtoBtoCサービス(図2参照)と同様に、署名システム10にログインし、これにより、署名システム10に対してトランザクション参照依頼を行う(図3の(2)ログイン)。署名システム10は、利用者システム40からログイン要求を受けると、BtoBtoCサービス(図2参照)と同様に、利用者特定データ262及び利用者認証データ264(図9参照)を使用して利用者システム40を認証したうえで、利用者システム40のログインを許容する。
署名システム10は、利用者システム40からのトランザクション参照依頼(図3の(2)ログイン)をトリガーとして、ブロックチェーン70のトランザクション80から、署名対象となる未承認のマルチシグトランザクション80Mを収集する(図3の(3)収集)。詳しくは、署名システム10は、BtoCサービスにおいて、利用者システム40が秘密鍵442によって署名してマルチシグアドレス446から発行したマルチシグトランザクション80Mであって署名システム10の秘密鍵342による署名が必要な未承認のマルチシグトランザクション80Mを収集する。
図3、図5及び図13を参照すると、署名システム10は、収集したマルチシグトランザクション80Mの夫々に基づいて対応するエントリデータ24を作成してエントリ24Cに追加する。署名システム10は、追加したエントリデータ24のトランザクション特定データ240に、対応するマルチシグトランザクション80Mを特定可能なデータ、例えば、対応するマルチシグトランザクション80Mのハッシュ値を設定する。署名システム10は、追加したエントリデータ24のトランザクション発行日時242、送信先アドレス244及び送信額245に、対応するマルチシグトランザクション80Mのトランザクション発行日時86、送信先アドレス84及び送信額85を夫々設定する。署名システム10は、追加したエントリデータ24のステータス248に、「未承認」を意味するデータを設定する。
署名システム10は、追加したエントリデータ24の利用者特定データ246に、ログインした利用者システム40を特定可能なデータを設定する。例えば、署名システム10は、利用者特定データ246に、ログインした利用者システム40に対応する利用者特定データ262(図9参照)を設定する。但し、本発明は、これに限られず、利用者特定データ246は、署名システム10が、ログインした利用者システム40を一意に特定できる限り、どのようなデータであってもよい。
図3、図13及び図14を参照すると、署名システム10は、BtoBtoCサービスと同様に、収集したマルチシグトランザクション80Mに夫々対応するトランザクションデータ28のリストであるトランザクションデータリスト28Lを作成し、作成したトランザクションデータリスト28Lを、トランザクション参照依頼(図3の(2)ログイン)を送信した利用者システム40に送信する(図3の(4)トランザクションデータリスト送信)。図13及び図14を参照すると、トランザクションデータ28の夫々は、エントリデータ24のいずれかと対応している。
図3及び図14を参照すると、BtoCサービスにおいて、トランザクションデータ28の夫々における事業者識別データ284には、スペース等の初期値が設定されている。利用者システム40は、事業者識別データ284に初期値が設定されていることで、事業者システム50ではなく利用者システム40が発行したマルチシグトランザクション80Mに対応するトランザクションデータ28であることを識別できる。即ち、BtoCサービスにおいて、トランザクションデータリスト28Lにおけるトランザクションデータ28の夫々には、利用者システム40が発行したマルチシグトランザクション80Mであることを識別可能なデータである事業者識別データ284が含まれている。
図3を参照すると、利用者システム40は、BtoBtoCサービスと同様に、受信したトランザクションデータリスト28Lを利用者システム40の操作者に表示する。利用者システム40は、操作者の操作に応じて、トランザクションデータリスト28Lのトランザクションデータ28の夫々についての署名承認又は署名否認を署名システム10に送信する(図3の(5)署名承認or署名否認)。BtoBtoCサービスと同様に、トランザクションデータ28の夫々は、マルチシグトランザクション80Mのいずれかと対応している。トランザクションデータ28の夫々についての署名承認又は署名否認は、対応するマルチシグトランザクション80Mの署名承認又は署名否認である。
図3及び図14を参照すると、署名システム10は、BtoBtoCサービスと同様に、利用者システム40からトランザクションデータ28の夫々に対応するマルチシグトランザクション80Mの署名承認又は署名否認を受信する。図3及び図13を参照すると、署名システム10は、BtoBtoCサービスと同様に、利用者システム40から受信した署名承認又は署名否認に基づいて、エントリデータ24のステータス248を設定する。次に、署名システム10は、BtoBtoCサービスと同様に、署名承認されたマルチシグトランザクション80Mに対して秘密鍵342によって署名して発行する(図3の(6)署名&発行)。
詳しくは、署名システム10は、「署名承認済み」を意味するデータを設定したエントリデータ24に対応するマルチシグトランザクション80Mを取得する。次に、署名システム10は、取得したマルチシグトランザクション80Mに対して、送信側アドレス82(図5参照)に設定されているマルチシグアドレス446(図7参照)に対応する秘密鍵342によって署名する。次に、署名システム10は、マルチシグトランザクション80Mをブロードキャストする。この結果、署名システム10が署名したことによって承認された有効なマルチシグトランザクション80Mがブロックチェーン70に記憶される。即ち、承認済みのマルチシグトランザクション80Mが発行される。
上述したように、署名システム10は、利用者システム40が秘密鍵442によって署名して発行したマルチシグトランザクション80Mに対して、秘密鍵442に対応する他の秘密鍵342によって署名する。署名システム10がBtoBtoCサービスに加えてBtoCサービスを提供することで、マルチシグトランザクション80Mの信頼性を更に向上できる。
図1を参照すると、以下、本実施の形態における署名システム10のシステム構成を説明すると共に、署名システム10が複数の利用者システム40及び複数の事業者システム50に対して2つのサービスを提供する際の署名システム10の処理について説明する。
図15を参照すると、署名システム10は、パブリックシステム20と、プライベートシステム30とを備えている。
パブリックシステム20は、CPU(central processing unit:図示せず)を含めた様々な電子部品から構成されるパブリックサーバ22と、エントリ24C及び利用者情報26を記憶した記憶装置とを備えている。パブリックサーバ22は、この記憶装置に対して読み込み可能かつ書き込み可能に接続されている。例えば、パブリックサーバ22は、CPUによって様々なプログラムを実行することで、エントリ24C及び利用者情報26の夫々を参照及び更新する。描画したエントリ24C及び利用者情報26は、夫々異なるディスクユニットに記憶されている。但し、本発明は、これに限られず。エントリ24C及び利用者情報26の物理的な記憶方法は特に限定されない。
パブリックサーバ22は、通信回線によって、利用者システム40及び事業者システム50の夫々と通信可能に接続されている。また、パブリックサーバ22は、通信回線を経由して、ブロックチェーン70からマルチシグトランザクション80Mを収集できる。
プライベートシステム30は、パブリックシステム20と同様に、CPUを含めた様々な電子部品から構成されるプライベートサーバ32と、預かり秘密鍵34が記憶された記憶装置とを備えている。プライベートサーバ32は、この記憶装置に対して読み込み可能かつ書き込み可能に接続されている。例えば、プライベートサーバ32は、CPUによって様々なプログラムを実行することで、預かり秘密鍵34を参照可能である。
プライベートサーバ32は、通信回線を経由して、ブロックチェーン70にマルチシグトランザクション80Mを発行できる。また、パブリックサーバ22は、パブリックシステム20のエントリ24Cを読み込み可能かつ書き込み可能に接続されている。この接続を除き、パブリックシステム20とプライベートシステム30との間は、ファイアウォール等によって完全に遮断されており、これにより預かり秘密鍵34が安全に保管されている。
本実施の形態において、パブリックサーバ22及びプライベートサーバ32の夫々がCPUによって様々なプログラムを実行することで、署名システム10の様々なサービスが提供される。換言すれば、署名システム10のサービスは、パブリックサーバ22を備えたパブリックシステム20と、プライベートサーバ32を備えたプライベートシステム30とによって提供される。但し、署名システム10がサービスを提供するためのシステム構成は本実施の形態に限られず、様々に変形可能である。
図4及び図15を参照すると、本実施の形態において、パブリックシステム20は、事業者システム50からのエントリデータ56の受信(図4の(3)エントリデータ追加依頼)と、エントリデータ56に基づくエントリデータ24のエントリ24Cへの追加と、利用者システム40からのトランザクション参照依頼の受信(図4の(5)ログイン)と、ブロックチェーン70からのマルチシグトランザクション80Mの収集(図4の(6)収集)と、トランザクションデータリスト28Lの作成と、作成したトランザクションデータリスト28Lの利用者システム40への送信(図4の(7)トランザクションデータリスト送信)と、利用者システム40からのマルチシグトランザクション80Mの署名承認又は署名否認の受信(図4の(8)署名承認or署名否認)とを行う。プライベートシステム30は、マルチシグトランザクション80Mの署名及び発行(図4の(9)署名&発行)を行う。
上述したパブリックシステム20の処理は、エントリデータ追加処理(図16参照)と、エントリデータ更新処理(図17参照)とに大別できる。一方、プライベートシステム30は、署名処理(図18参照)を行う。以下、エントリデータ追加処理、エントリデータ更新処理及び署名処理の夫々について、フローチャートを使用して詳細に説明する。
図15及び図16を参照すると、エントリデータ追加処理において、パブリックシステム20のパブリックサーバ22は、事業者システム50から、エントリデータ56を伴うエントリデータ追加依頼を受信する(S1602)。このとき、パブリックサーバ22は、エントリデータ追加依頼が送信されたIP(internet protocol)アドレスを参照して、エントリデータ56を受信するか否かを判断してもよい。
次に、パブリックサーバ22は、受信したエントリデータ追加依頼が所定のエントリデータ追加条件を満たすか否か判定する(S1604)。エントリデータ追加条件は、例えば、受信したエントリデータ56に対応するマルチシグトランザクション80Mが存在することである(S1604)。
詳しくは、パブリックサーバ22は、ブロックチェーン70から、受信したエントリデータ56のトランザクション特定データ560(図10参照)によって特定されるマルチシグトランザクション80Mの取得を試みる。このマルチシグトランザクション80Mが取得できない場合、パブリックサーバ22は、エントリデータ追加条件が満たされていないと判定する。このマルチシグトランザクション80Mが取得できた場合、パブリックサーバ22は、エントリデータ56のトランザクション発行日時562、送信先アドレス564及び送信額565(図10参照)が取得したマルチシグトランザクション80Mのデータと一致するか否か判定する。パブリックサーバ22は、一致する場合、エントリデータ追加条件が満たされていると判定し、一致しない場合、エントリデータ追加条件が満たされていないと判定する。
パブリックサーバ22は、エントリデータ追加条件が満たされていないと判定したとき(S1604のNG)、事業者システム50に警告を送信する(S1606)。
一方、パブリックサーバ22は、エントリデータ追加条件が満たされていると判定したとき(S1604のOK)、受信したエントリデータ56をエントリ24Cに追加する(S1608)。詳しくは、前述したように、エントリデータ56に基づくエントリデータ24をエントリ24Cに追加する。
本実施の形態のエントリデータ追加処理によれば、署名システム10は、事業者システム50からエントリデータ56を受信したとき、受信したエントリデータ56が所定のエントリデータ追加条件を満たすか否か判定する。エントリデータ追加条件は、必要に応じて必要な条件を設定すればよい。署名システム10は、エントリデータ追加条件を満たした場合にエントリデータ24を作成してエントリ24Cに追加する。一方、署名システム10は、エントリデータ追加条件を満たさない場合、例えば、不正なエントリデータ56を受信した旨の警告を、事業者システム50に送信する。事業者システム50への警告により、不正なマルチシグトランザクション80Mの承認を防止でき、これによりマルチシグトランザクション80Mの信頼性を更に向上できる。但し、本発明は、これに限られず、エントリデータ追加条件による判定は、必要に応じて行えばよい。
図15及び図17を参照すると、エントリデータ更新処理において、パブリックシステム20のパブリックサーバ22は、利用者システム40からログインデータ(即ち、トランザクション参照依頼)を受信する(S1702)。
次に、パブリックサーバ22は、受信したログインデータを使用して、ログインデータを送信した利用者システム40を認証する(S1704)。例えば、パブリックサーバ22は、ログインデータに含まれる利用者IDが、利用者情報26の利用者特定データ262のいずれかと一致するか否か判定する。パブリックサーバ22は、更に、ログインデータに含まれる生体情報が、ログインデータの利用者IDと一致する利用者特定データ262に対応する利用者認証データ264と一致するか否か判定する。
パブリックサーバ22は、利用者システム40を認証できなかったとき(S1704のNG)、利用者システム40からのログインを拒否する(S1706)。
一方、パブリックサーバ22は、利用者システム40を認証できたとき(S1704のOK)、利用者システム40のログインを許容する。次に、パブリックサーバ22は、ブロックチェーン70から、ログインした(即ち、トランザクション参照依頼を行った)利用者に関連して利用者システム40のマルチシグアドレス446(図7参照)又は事業者システム50のマルチシグアドレス546(図6参照)から発行されており、且つ、利用者システム40の秘密鍵442(図7参照)又は事業者システム50の秘密鍵542(図6参照)によって署名された未承認のマルチシグトランザクション80Mを収集する。
上述の収集の際、パブリックサーバ22は、エントリ24Cを参照し、トランザクション参照依頼を行った利用者システム40を特定している利用者特定データ246(図13参照)を含むエントリデータ24を選択し、選択したエントリデータ24のトランザクション特定データ240(図10参照)によって特定されるマルチシグトランザクション80Mを、利用者に関連して発行されていると判定する(以下、「判定1」という)。
加えて、上述の収集の際、トランザクション参照依頼を行った利用者システム40が利用者システム40の秘密鍵442(図7参照)によって署名して発行したマルチシグトランザクション80M、即ち、利用者システム40のマルチシグアドレス446(図7参照)からのマルチシグトランザクション80Mを、利用者に関連して発行されていると判定する(以下、「判定2」という)。パブリックサーバ22は、この判定2において、更に、マルチシグトランザクション80Mが所定の収集条件を満たすか否かを判定する。
上述の収集条件は、例えば、送信先アドレス84(図5参照)がホワイトリストに載っていることであってもよいし、送信額85(図5参照)の所定期間内(例えば、1日又は1ヵ月)の合計額が所定限度額を超えないことであってもよい。収集条件は、送信側アドレス82(図5参照)がホワイトリストに載っていることであってもよい。収集条件は、利用者システム40からの送信額85の所定期間内の合計額が所定限度額を超えないことであってもよいし、利用者システム40からの所定期間内のマルチシグトランザクション80Mの発行回数が所定限度回数を超えないことであってもよい。
次に、パブリックサーバ22は、判定2を満たすことで収集したマルチシグトランザクション80Mに基づいてエントリ24Cを更新する(S1710)。詳しくは、BtoCサービスについて説明したように、パブリックサーバ22は、収集したマルチシグトランザクション80Mの夫々から新たなエントリデータ24を作成してエントリ24Cに追加する。
次に、パブリックサーバ22は、収集したマルチシグトランザクション80Mに夫々対応するトランザクションデータ28のリストであるトランザクションデータリスト28Lを作成する(S1712)。次に、パブリックサーバ22は、作成したトランザクションデータリスト28Lを、トランザクション参照依頼を行った利用者システム40に送信する(S1714)。このとき、例えば、図19に示されるトランザクションデータリスト28Lが利用者システム40に送信される。
その後、パブリックサーバ22は、利用者システム40からトランザクションデータ28の夫々について、対応するマルチシグトランザクション80Mの署名承認又は署名否認を受信する(S1716)。パブリックサーバ22は、前述したように、署名承認されたマルチシグトランザクション80Mに対応するエントリデータ24を署名承認済みとし、署名否認されたマルチシグトランザクション80Mに対応するエントリデータ24を署名否認済みとする(S1720)。この結果、例えば、エントリデータ24のステータス248は、図20に示されるように更新される。
エントリデータ更新処理によれば、署名システム10は、利用者システム40が利用者システム40の秘密鍵442(図7参照)によって署名して発行したマルチシグトランザクション80Mを収集する際に、マルチシグトランザクション80Mが収集条件を満たすか否かを判定する。収集条件は、前述したように、必要に応じて様々に設定すればよい。
署名システム10は、収集条件を満たしたマルチシグトランザクション80Mから作成したエントリデータ24をエントリ24Cに追加する。一方、署名システム10は、収集条件を満たさないマルチシグトランザクション80Mについて、例えば、不正なマルチシグトランザクション80Mが発行されている旨の警告を、利用者システム40に送信してもよい。利用者システム40への警告により、不正なマルチシグトランザクション80Mの承認を防止でき、これによりマルチシグトランザクション80Mの信頼性を更に向上できる。但し、本発明は、これに限られず、収集条件による判定は、必要に応じて行えばよい。
図15及び図18を参照すると、プライベートシステム30のプライベートサーバ32は、例えば、所定の時間間隔で定期的に署名処理を行う。プライベートサーバ32は、署名処理において、エントリ24Cから、ステータス248(図20参照)に「署名承認済み」を意味するデータが設定されているエントリデータ24(署名承認済みのエントリデータ24)を検索する(S1802)。プライベートサーバ32は、署名承認済みのエントリデータ24の夫々について、下記の処理を行う。
プライベートサーバ32は、署名承認済みのエントリデータ24に対応する未承認のマルチシグトランザクション80M(即ち、署名承認対象のマルチシグトランザクション80M)が所定の署名条件を満たすか否か判定する(S1804)。署名条件は、例えば、署名承認済みのエントリデータ24が、対応する未承認のマルチシグトランザクション80Mのデータと一致することである(S1804)。
詳しくは、プライベートサーバ32は、ブロックチェーン70から、署名承認対象のマルチシグトランザクション80Mの取得を試みる。このマルチシグトランザクション80Mが取得できない場合、プライベートサーバ32は、署名条件が満たされていないと判定する。このマルチシグトランザクション80Mが取得できた場合、プライベートサーバ32は、エントリデータ24のトランザクション発行日時242、送信先アドレス244及び送信額245(図20参照)が取得したマルチシグトランザクション80Mのデータと一致するか否か判定する。プライベートサーバ32は、一致しない場合、署名条件が満たされていないと判定する。プライベートサーバ32は、一致する場合、署名承認対象のマルチシグトランザクション80Mが未だ承認されていないことを確認する。プライベートサーバ32は、署名承認対象のマルチシグトランザクション80Mが既に承認されている場合、署名条件が満たされていないと判定し、未だ承認されていない場合、署名条件が満たされていると判定する。
プライベートサーバ32は、署名条件が満たされていないと判定したとき(S1804のNG)、エントリデータ24の利用者特定データ246(図20参照)によって特定される利用者システム40に警告を送信する(S1806)。
一方、プライベートサーバ32は、署名条件が満たされていると判定したとき(S1804のOK)、預かり秘密鍵34から、署名承認済みのエントリデータ24に対応する秘密鍵342を取得する(S1808)。次に、プライベートサーバ32は、取得した秘密鍵342を使用して署名承認対象のマルチシグトランザクション80Mに署名する(S1810)。次に、プライベートサーバ32は、署名したマルチシグトランザクション80Mを発行する(S1812)。
本実施の形態の署名処理によれば、署名システム10は、利用者システム40からトランザクションデータ28に対応するマルチシグトランザクション80Mに対する署名承認を受信すると、署名承認されたマルチシグトランザクション80Mが所定の署名条件を満たすか否か判定し、署名条件を満たしたマルチシグトランザクション80Mに対して秘密鍵342によって署名する。
署名条件は、必要に応じて様々に設定すればよい。例えば、署名条件のうちの1つは、エントリデータ24が追加されてから署名が行われるまでの間に所定時間以上の時間が経過していないことであってもよい。署名システム10は、署名条件を満たしたマルチシグトランザクション80Mに署名する。一方、署名システム10は、署名条件を満たさないマルチシグトランザクション80Mについて、例えば、マルチシグトランザクション80Mが改ざんされている旨の警告を、利用者システム40に送信する。利用者システム40への警告により、不正なマルチシグトランザクション80Mの承認を防止でき、これによりマルチシグトランザクション80Mの信頼性を更に向上できる。但し、本発明は、これに限られず、署名条件による判定は、必要に応じて行えばよい。
以下、利用者システム40のシステム構成を説明すると共に、利用者システム40が署名システム10にログインする際の利用者システム40の処理について、更に詳細に説明する。
図21を参照すると、本実施の形態による利用者システム40は、例えば、PCやスマートフォン等の利用者端末40である。利用者端末40は、処理装置42と、利用者秘密鍵44が記憶された記憶装置と、入力装置46と、表示装置48とを備えている。処理装置42は、CPUを含めた様々な電子部品から構成されている。入力装置46は、例えば、PCのキーボードやスマートフォンのタッチパネルである。表示装置48は、例えば、PCやスマートフォンの液晶ディスプレイである。但し、利用者システム40のシステム構成はこれに限られず、様々に変形可能である。例えば、利用者システム40は、複数のコンピュータからなるクライアントサーバシステムであってもよい。また、利用者システム40は、必要に応じて利用者秘密鍵44を有していればよい。
処理装置42は、利用者秘密鍵44が記憶された記憶装置に対して読み込み可能かつ書き込み可能に接続されている。例えば、処理装置42は、CPUによって様々なプログラムを実行することで、入力装置46から利用者(操作者)による入力情報を取得したり、利用者秘密鍵44を参照したり、表示装置48に表示情報を表示する等の様々な処理を行う。利用者端末40は、通信回線によって、署名システム10のパブリックシステム20及び事業者システム50の夫々と通信可能に接続されている。特に、利用者端末40は、署名システム10と通信可能である。また、本実施の形態の利用者端末40は、通信回線を経由して、ブロックチェーン70にマルチシグトランザクション80Mを発行できる。但し、本発明は、これに限られない。例えば、利用者端末40が利用者秘密鍵44を有していない場合、利用者端末40は、マルチシグトランザクション80Mを発行できなくてもよい。
本実施の形態において、記憶装置に記憶されたプログラムを処理装置42がローディングしてCPUによって実行することで、利用者端末40は、上述した様々な処理を行う。換言すれば、利用者端末40の記憶装置は、コンピュータを利用者端末40として機能させるためのプログラムを有している。以下、このプログラムによる利用者端末40の処理について、フローチャートを使用して詳細に説明する。
図21及び図22を参照すると、利用者端末40は、入力装置46を使用した操作者のログイン操作により、署名システム10(パブリックシステム20)にログインデータを送信する(S2202)。ログインデータは、例えば、利用者端末40の操作者のメールアドレスと認証データである。
利用者端末40は、署名システム10(パブリックシステム20)からログインの許容又は拒否を受信し、これによりログインが成功したか否か判定する(S2204)。利用者端末40は、ログインが成功しなかった場合(S2204のNO)、処理を終了する(S2206)。
利用者端末40は、ログインが成功した場合(S2204のYES)、署名システム10(パブリックシステム20)にトランザクション参照依頼を送信する(S2208)。但し、ログインデータの送信がトランザクション参照依頼を兼ねていてもよい。即ち、利用者端末40は、何らかの方法によって、署名システム10にトランザクション参照依頼を送信すればよい。
次に、利用者端末40は、署名システム10(パブリックシステム20)からトランザクションデータリスト28Lを受信する(S2210)。利用者端末40は、署名システム10から受信したトランザクションデータリスト28Lに基づく表示データを表示装置48に表示する(S2212)。図23を図19と比較すると、トランザクションデータリスト28Lのトランザクションデータ28の夫々が表示装置48に表示される。例えば、事業者識別データ284が設定されていないトランザクションデータ28(図19におけるトランザクションデータ1)について、事業者の名称に代えて「?」が表示される。
図22及び図23を参照すると、利用者端末40の操作者は、入力装置46のスワイプ等の操作により、表示装置48に表示されたトランザクションデータ28の夫々に対して、署名承認又は署名否認を入力する。利用者端末40は、入力装置46から入力された署名承認又は署名否認を署名システム10に送信する(S2214)。
本実施の形態によれば、未承認のマルチシグトランザクション80Mの内容を、マルチシグトランザクション80Mに関連する利用者端末40の表示装置48に視覚的に表示する。従って、利用者端末40の操作者は、未承認のマルチシグトランザクション80Mが不正に発行されたものか否かを容易に確認できる。
本実施の形態は、既に説明した変形例に加えて、更に様々に変形可能である。例えば、図15を参照すると、プライベートシステム30は、マルチシグトランザクション80Mを発行することなく、預かり秘密鍵34の保管のみを行ってもよい。この場合、パブリックシステム20は、必要に応じてプライベートシステム30から必要な秘密鍵342及び公開鍵344を取得し、取得した秘密鍵342によって署名したマルチシグトランザクション80Mを発行すればよい。
図24を参照すると、変形例における利用者システム(利用者端末)40は、トランザクション参照依頼及び署名承認を、図2に示されるように署名システム10に対して直接的に行うのでなく、事業者システム50を経由して、署名システム10に対して間接的に行ってもよい。
本変形例において、利用者端末40は、利用者端末40の操作者(利用者)の操作に応じて、事業者システム50に対して、マルチシグトランザクション80Mの発行を依頼すると共に、二段階認証コードを送信する(図22の(1)発行依頼with二段階認証コード)。二段階認証コードは、例えば、利用者が、ワンタイムパスワード生成プログラム(図示せず)から取得したワンタイムパスワード(使い捨てパスワード)である。
本実施の形態において、図22の(1)発行依頼with二段階認証コードは、利用者が保有する利用者端末40から事業者システム50へのデータ通信によって行われる。但し、本発明は、これに限られない。例えば、利用者は、事業者である取引所に設置された端末(即ち、事業者システム50の端末)を利用者端末(利用者システム)40として操作してもよい。
事業者システム50は、利用者が実際に仮想通貨を所有しているかといった検証を行った後、BtoBtoCサービスと同様に、マルチシグトランザクション80Mを作成し、作成したマルチシグトランザクション80Mに署名してマルチシグトランザクション80Mを発行する(図22の(2)署名&発行)。
次に、事業者システム50は、BtoBtoCサービスと同様に、発行したマルチシグトランザクション80Mに対応するエントリデータ56を作成する。次に、事業者システム50は、署名システム10に対して、作成したエントリデータ56及び利用者端末40から受信した二段階認証コードを付したエントリデータ追加依頼を送信し、これによりマルチシグトランザクション80Mを発行したことを署名システム10に通知する(図22の(3)エントリデータ追加依頼with二段階認証コード)。
署名システム10は、受信した二段階認証コードを、例えば、ワンタイムパスワード生成プログラム(図示せず)が生成したはずのワンタイムパスワードと照合し、これにより、エントリデータ追加依頼が正当なものであるか否かを検証する。署名システム10は、エントリデータ追加依頼が正当なものであると判断した場合、以下の処理を行う。一方、署名システム10は、エントリデータ追加依頼が不当なものであると判断した場合、事業者システム50に対して警告を送信し、受信したエントリデータ追加依頼についての処理を終了する。
署名システム10は、エントリデータ追加依頼が正当なものであると判断した場合、BtoBtoCサービスと同様に、受信したエントリデータ56に基づくエントリデータ24をエントリ24Cに追加する。次に、署名システム10は、ブロックチェーン70のトランザクション80から、署名対象となるマルチシグトランザクション80Mを収集する(図22の(4)収集)。詳しくは、署名システム10は、追加したエントリデータ24のトランザクション特定データ240(図11参照)によって特定される未承認のマルチシグトランザクション80Mを、利用者に関連するマルチシグトランザクション80Mとして収集する。
次に、署名システム10は、収集したマルチシグトランザクション80Mに対応するエントリデータ24のステータス248(図11参照)に「署名承認済み」を意味するデータを設定する。次に、署名システム10は、BtoBtoCサービスと同様に、署名承認されたマルチシグトランザクション80Mに対して秘密鍵342によって署名して発行する(図22の(5)署名&発行)。
本変形例において、利用者端末40から事業者システム50へのマルチシグトランザクション80Mの発行依頼は、利用者端末40から署名システム10へのトランザクション参照依頼をも意味する。署名システム10は、事業者システム50からエントリデータ追加依頼を受信することで、利用者端末40からトランザクション参照依頼を検知する。署名システム10は、事業者システム50を経由して受信した利用者端末40からのトランザクション参照依頼をトリガーとして、前述の処理を行う。
詳しくは、署名システム10は、利用者端末40からのトランザクション参照依頼をトリガーとして、事業者システム50から、マルチシグトランザクション80Mを特定可能なトランザクション特定データ560(図10参照)を含むエントリデータ56を受信する。署名システム10は、マルチシグトランザクション80Mの収集を行う際、受信したトランザクション特定データ560によって特定されるマルチシグトランザクション80Mを収集する。即ち、署名システム10は、BtoBtoCサービスと同様に、利用者端末40からのトランザクション参照依頼をトリガーとして、秘密鍵342による署名が必要なマルチシグトランザクション80Mを収集する。
また、署名システム10は、事業者システム50を経由して利用者端末40から二段階認証コードを受信する。署名システム10は、受信した二段階認証コードが正当なものである場合、利用者端末40の利用者が署名承認したと判断して、マルチシグトランザクション80Mに対して、署名システム10の秘密鍵342によって署名する。即ち、本変形例によれば、署名システム10は、利用者端末40から、事業者システム50を経由した二段階認証によって、収集したマルチシグトランザクション80Mの署名承認を受信する。
本変形例によれば、マルチシグトランザクション80Mは、発行依頼した利用者端末40から送信された二段階認証コード(ワンタイムパスワード)による認証という手順を踏んで署名される。仮に、利用者端末40から送信された二段階認証コードが漏洩した場合でも、漏洩した二段階認証コードを再度付したエントリデータ追加依頼が署名システム10に対して送信されると、署名システム10は、エントリデータ追加依頼が不当なものであると判断する。従って、事業者システム50の秘密鍵542が漏洩した場合も、漏洩した秘密鍵542の不正な使用による被害を防止できる。本変形例によっても、マルチシグトランザクション80Mの信頼性を向上可能な新たな署名システム10を提供できる。