以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
図1は、第1の実施の形態に係る証明書配付システムの構成例を示す図である。第1の実施の形態では、ブロックチェーンによって複数のブロックを保持するネットワーク1が設けられている。ネットワーク1には、複数のブロックチェーンノード3a,3b,3cが含まれる。複数のブロックチェーンノード3a,3b,3cは、例えばプロセッサやメモリを有するコンピュータである。またネットワーク1には、複数の端末装置2a,2b,2cが接続されている。複数の端末装置2a,2b,2cは、例えばプロセッサやメモリを有するコンピュータである。
複数の端末装置2a,2b,2cのうち、例えば端末装置2aは、証明対象情報4aに対する電子証明書の発行を希望するユーザ8が使用する。証明対象情報4aは、例えばユーザ8が有する公開鍵である。また端末装置2b,2cは、例えばシステムの管理者9a,9bが使用する。
ここでユーザ8が、証明対象情報4aの所有者がユーザ8であることの電子証明書の発行を希望するものとする。その場合、ユーザ8は、端末装置2aに証明対象情報4aを入力し、端末装置2aに、証明対象情報4aのネットワーク1への登録を指示する。すると端末装置2aは、ユーザ8が所有する証明対象情報4aを含むブロック4(第1ブロック)を作成する。ブロック4には、例えばユーザ8の電子署名4b(所有者電子署名)が含まれる。電子署名4bは、例えば証明対象情報4aを、ユーザ8の秘密鍵で暗号化したものである。ブロック4に、ユーザ8を一意に特定する識別子を含めてもよい。
端末装置2aは、作成したブロック4の登録要求を、ネットワーク1内の複数のブロックチェーンノード3a,3b,3cのうちの1台に送信する。複数のブロックチェーンノード3a,3b,3cは、ブロック4の登録要求に応じて、ブロック4をブロックチェーンによって分散して保持する。
複数の第2の端末装置2b,2cは、ネットワーク1から、証明対象情報4aを含むブロック4,4−1(第2ブロック)を、承認対象ブロックとして取得する。そして複数の第2の端末装置2b,2cは、管理者9a,9bからの入力に応じて、証明対象情報4aの登録承認を示す電子署名5a,5nと承認対象ブロック4,4−1とを含むブロック4−1,4−2を作成する。すなわち承認対象ブロック4,4−1に電子署名5a,5nを付加したものが、新たなブロック4−1,4−2となる。
例えば管理者9a,9bは、承認対象ブロック4,4−1に含まれる証明対象情報4aの所有者がユーザ8であることを、オフラインなどの別の手続きによって確認し、確認できた場合に、登録承認の入力を行う。そして複数の第2の端末装置2b,2cは、ブロック4−1,4−2の登録要求を、ネットワーク1へ出力する。複数のブロックチェーンノード3a,3b,3cは、ブロック4−1,4−2の登録要求に応じて、ブロック4−1,4−2をブロックチェーンによって分散して保持する。
保持したブロック4,4−1,4−2のなかに、包含する電子署名5a,5nの数が所定数に達した署名数充足ブロックがある場合、そのことを、複数のブロックチェーンノード3a,3b,3cのうちの1台が検出する。図1の例では、ブロックチェーンノード3cが、ブロック4−2が署名数充足ブロックであると検出したものとする。するとブロックチェーンノード3cは、証明対象情報4aの所有者がユーザ8であることを証明する電子証明書6とブロック4−2とを含むブロック4−3(第3ブロック)を作成する。
例えばブロックチェーンノード3cは、証明書発行部7を有している。証明書発行部7は、例えばスマートコントラクトである。証明書発行部7は、証明対象情報4aに対して、証明書発行部7の電子署名6a(有効化用電子署名)付与し、電子証明書6とする。なお証明書発行部7の電子署名6aは、ブロックチェーンノード3cの電子署名でもある。そして複数のブロックチェーンノード3a,3b,3cが、作成されたブロック4−3をブロックチェーンによって分散して保持する。
電子証明書6が付与されたブロック4−3がブロックチェーンによって分散して保持されることで、証明対象情報4aが有効化される。すなわち、任意のユーザが、自身の使用する端末装置を用いてブロック4−3を参照できる。そしてブロック4−3内に含まれている電子証明書6により、ブロック4−3に含まれている証明対象情報4aの所有者がユーザ8であることを確認できる。
例えば、証明対象情報4aを使用するユーザが使用する端末装置(図示せず)は、ブロックチェーンノード3a,3b,3cから、ブロックチェーンノード3a,3b,3c自身の公開鍵(証明書発行部7の公開鍵)を取得する。そして端末装置は、取得した公開鍵により電子証明書6の正当性を検証する。例えば端末装置は、電子証明書6に含まれる電子署名を取得した公開鍵で復号する。端末装置は、復号されたデータと証明対象情報4aとが一致する場合、電子証明書6が正しいと判断する。端末装置は、正しく検証できた場合、証明対象情報4aの所有者がユーザ8であると判断する。ブロック4−3にユーザ8の識別子が含まれていれば、証明対象情報4aの所有者が、その識別子で示されるユーザ8であることが分かる。証明対象情報4aがユーザ8の公開鍵であれば、例えば証明対象情報4aを使用するユーザは、ユーザ8の識別子を宛先として送信するデータを、その公開鍵で暗号化することで、データを安全にユーザ8に送信することができる。
このように、電子証明書の発行をブロックチェーンを用いて行うことで、電子証明書の発行が1つのサーバに集中せず、一部のノードが故障しても、電子証明書の発行を継続できる。その結果、電子証明書の発行を安定して継続することができ、システムの可用性が向上する。
しかも、多数の管理者のうちの所定数の管理者が登録承認を行えば、電子証明書が発行されるため、ある承認者が承認できない場合でも他の管理者の承認により、電子証明書が発行できる。そのため、電子証明書の発行手続きが停止することが抑止される。
なお電子証明書6を発行するために要求される管理者の電子署名の数(所定数)は、1以上の任意の数を設定できる。この所定数として、2以上の数を設定することで、複数の管理者が承認することを、電子証明書6の発行条件とすることができる。複数の管理者の登録承認が確認できたときにのみ電子証明書6を発行させることで、管理者の手違いによる誤った電子証明書6の発行を抑止できる。
ユーザ8は、有効化した証明対象情報4aを、ユーザ8の意思で無効化できる。例えばユーザ8は、端末装置2aに対して、証明対象情報4aの破棄を指示する入力を行う。端末装置2aは、ユーザ8からの、証明対象情報4aの破棄を指示する入力に応じて、破棄を示すフラグとブロック4−3とを含むブロックの登録要求を、ネットワーク1へ出力する。複数のブロックチェーンノード3a,3b,3cは、その登録要求に応じて、該当ブロックをブロックチェーンによって分散して保持する。また複数のブロックチェーンノード3a,3b,3cのうちのいずれか1台が、保持したブロックに破棄を示すフラグが含まれることを検出する。そして検出したブロックチェーンノード3a,3b,3cは、そのブロックに含まれる情報に対するブロックチェーンノード自身の電子署名(無効化用電子署名)とそのブロックとを含むブロックを生成する。そして複数のブロックチェーンノード3a,3b,3cが、生成したブロックをブロックチェーンによって分散して保持する。
破棄を示すフラグを含むブロックに、いずれかのブロックチェーンノードが電子署名をすることで、該当ブロックに含まれる証明対象情報4aは無効となる。このように、証明対象情報4aを無効化する際には、ユーザ8が、破棄を示すブロックの登録手続きをするだけでよく、管理者の手間をかけずに済む。その結果、証明対象情報4aを迅速に無効化することができる。
なお、端末装置2aは、ユーザ8から、証明対象情報4aの破棄を指示する入力を受け取ったときに生成するブロックに、ブロック4−3内の情報に対するユーザ8の電子署名(所有者電子署名)を含めてもよい。ユーザ8の電子署名は、ブロック4−3内の情報を、ユーザ8の秘密鍵で暗号化したものである。複数のブロックチェーンノード3a,3b,3cは、登録要求に応じて保持したブロックに破棄を示すフラグが含まれることを検出すると、ユーザ8の公開鍵(所有者公開鍵)を用いて、ユーザ8の電子署名の正当性を検証する。例えば複数のブロックチェーンノード3a,3b,3cは、ユーザ8の電子署名を、ユーザ8の公開鍵で復号し、復号されたデータとブロック4−3内の情報とを比較し、一致すれば、ユーザ8の電子署名が正当であると判断する。複数のブロックチェーンノード3a,3b,3cは、ユーザ8の電子署名が正当であることが確認できた場合、そのブロックに含まれる情報に対するブロックチェーンノード自身の電子署名とそのブロックとを含むブロックを生成する。そして複数のブロックチェーンノード3a,3b,3cが、生成したブロックを、ブロックチェーンによって分散して保持する。
このように、証明対象情報4aの破棄を示すブロックに、ユーザ8の電子署名を付加し、その電子署名を検証した後に証明対象情報4aを無効化することで、ユーザ8以外の第三者により証明対象情報4aが無効化されることを抑止することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、ブロックチェーンネットワークにおける電子証明書の発行と管理を、集中管理するサーバを用いずに実現するものである。なお、以下の説明では、電子証明書を、単に証明書と呼ぶこととする。
ブロックチェーンネットワークは、幾つかのノードがダウンしても電子情報を受け渡すことができ、高い可用性が実現されている。しかし、ブロックチェーンネットワークにおいて使用する証明書がサーバで集中管理されていたのでは、そのサーバがダウンするとブロックチェーンネットワークの運用に支障がでる。すなわち証明書管理用のサーバがダウンすると、ブロックチェーンを利用しているユーザの端末装置は、公開鍵の証明書が参照できなくなり、公開鍵を用いたデータの暗号化ができなくなる。
また証明書をサーバで集中管理した場合、ブロックチェーンのノード数が多くなると、証明書管理用のサーバへのアクセスが集中し、処理の遅延が発生しやすくなる。アクセスの集中は、悪意がある者による攻撃でも発生する。証明書管理用のサーバの処理の遅延が、ブロックチェーンを介した取引の遅延を招くこととなる。
しかも証明書管理用のサーバにおいてユーザの証明書は、そのサーバの管理者によるユーザの身元確認などの手続きを経て発行される。このように、特定の管理者の作業が介在するため、管理者のミスにより、不正な証明書が登録される可能性がある。また証明書の発行が集中管理されているため、管理者の作業遅延などが発生すると、なかなか証明書が登録されない可能性がある。
第2の実施の形態は、証明書の発行と管理についてもブロックチェーンを用いて実現することで、証明書の発行と管理を証明書管理用のサーバで集中管理することによる問題点を解決する。
図2は、第2の実施の形態のネットワークシステムの構成の一例を示す図である。第2の実施の形態のネットワークシステムでは、ネットワークスイッチ31〜35を介して、複数のブロックチェーンノード200,200a〜200fが接続されている。ブロックチェーンノード200,200a〜200fそれぞれは、ブロックチェーンネットワーク上の1ノードとして機能するコンピュータである。またネットワークには、複数の端末装置100,100a〜100cが接続されている。複数の端末装置100,100a〜100cは、ネットワークを介した取引を行うユーザ41,42、またはネットワークの管理者51,52が使用するコンピュータである。
なお第2の実施の形態のネットワークシステムには、ブロックチェーンノード200,200a〜200f以外にも、図示していない多数のブロックチェーンノードが接続されている。同様に第2の実施の形態のネットワークシステムには、複数の端末装置100,100a〜100c以外にも、図示していない多数の端末装置が接続されている。
図3は、第2の実施の形態に用いる端末装置のハードウェアの一構成例を示す図である。端末装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、端末装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、端末装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワークスイッチ31に接続されている。ネットワークインタフェース108は、ネットワークスイッチ31を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態における端末装置100の処理機能を実現することができる。端末装置100a〜100cについても、端末装置100と同様のハードウェアで実現することができる。ブロックチェーンノード200,200a〜200fについても、端末装置100と同様のハードウェアで実現することができる。さらに、第1の実施の形態に示した端末装置2a,2b,2cやブロックチェーンノード3a,3b,3cも、図3に示した端末装置100と同様のハードウェアにより実現することができる。
端末装置100,100a〜100cまたはブロックチェーンノード200,200a〜200fは、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。端末装置100,100a〜100cまたはブロックチェーンノード200,200a〜200fに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、端末装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また端末装置100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
第2の実施の形態では、このようなハードウェア構成のシステムを用いて、ブロックチェーンを用いた証明書の発行や管理が行われる。すなわち第2の実施の形態のシステムでは、ビットコインなどの取引を行うブロックチェーンネットワークとは別に、証明書管理用のサーバの代わりとなる新たな証明書格納用のブロックチェーンネットワークが構築されている。
図4は、第2の実施の形態におけるブロックチェーンネットワークの一例を示す図である。第2の実施の形態では、2つのブロックチェーンネットワーク60,61が設けられている。ブロックチェーンネットワーク60は、電子情報の取引に関するブロック60a,60b保存用のブロックチェーンネットワークである。ブロックチェーンネットワーク61は、証明書に関するブロック61a,61b保存用のブロックチェーンネットワークである。
以下、ブロックチェーンネットワーク60,61に関する処理を実施するための、端末装置とブロックチェーンノードとの機能について説明する。
図5は、端末装置とブロックチェーンノードとの機能の一例を示すブロック図である。ユーザ41が使用する端末装置100は、OS110とWebブラウザ120とを有している。Webブラウザ120は、公開鍵の登録要求や参照を行う証明書利用部121を有している。証明書利用部121が、公開鍵の登録要求の送信処理、公開鍵の破棄要求の送信処理、他のユーザの公開鍵の使用処理などを実行する。
管理者51が使用する端末装置100aは、OS110aとWebブラウザ120aとを有している。Webブラウザ120aは、証明書の発行手続きを行う証明書管理部122aを有している。
ブロックチェーンノード200は、OS210、Webサーバ220、およびブロックチェーンサブシステム230を有している。ブロックチェーンサブシステム230は、2つのブロックチェーンネットワーク60,61を介して、ブロックの配布および保持を行う。例えばブロックチェーンサブシステム230は、ブロック記憶部231を有しており、端末装置100または他のブロックチェーンノード200aから取得したブロックを、ブロック記憶部231に格納する。またブロックチェーンサブシステム230は、スマートコントラクト232を有している。スマートコントラクト232は、ブロックチェーンネットワーク61上での証明書の発行や無効化を行う。
同様にブロックチェーンノード200aは、OS210a、Webサーバ220a、およびブロックチェーンサブシステム230aを有している。ブロックチェーンサブシステム230aは、ブロックを保持するためのブロック記憶部231aや、証明書の発行や無効化を行うスマートコントラクト232aを有している。
ブロックチェーン参加者であるユーザ41は、端末装置100を用いて、ブロックチェーンネットワーク60を介して取引を行うと共に、ブロックチェーンネットワーク61を介して、証明書による本人証明を行う。管理者51は、端末装置100aを用いて、ブロックチェーンネットワーク60で保持される電子情報の管理や、ブロックチェーンネットワーク61で保持される証明書の発行および管理を行う。
例えばユーザ41は、端末装置100を用いて、リファレンスフラグ「0」(登録)の値と公開鍵とを含むデータを作成し、そのデータに自分の秘密鍵で電子署名を行う。電子署名を行うとは、署名対象のデータまたはそのデータのハッシュ値を、秘密鍵で暗号化することである。以下、電子署名を行うことで生成される暗号化されたデータを、単に「署名」と呼ぶ。そしてユーザ41は、端末装置100aを用いて、署名付きのデータを、ブロックチェーンネットワーク61上に登録する。この際、秘密鍵は、各参加者が保持しておく。
管理者51は、端末装置100aを用いて、証明書発行前(リファレンスフラグが「0」)のブロックに自分の署名を付与したデータを作成する。そして管理者51は、端末装置100aを用いて、作成したデータを、ブロックチェーンネットワーク61上に登録する。
ブロックチェーンネットワーク61上のスマートコントラクト232,232aは、規定数以上の数の承認を得たブロックを確認した場合に、そのブロックのリファレンスフラグを「0」より大きい値「1」(有効)に変更する。さらにスマートコントラクト232,232aは、そのブロックにスマートコントラクト232,232aの署名を付与したブロックを生成する。そしてスマートコントラクト232,232aは、生成したブロックを、公開鍵証明書として新たに、ブロックチェーンサブシステム230,230aに登録することを要求する。
ユーザ41に電子情報を送信する他のユーザは、ブロックチェーンネットワーク61上に登録された、値が「0」より大きいリファレンスフラグの証明書に含まれる公開鍵を、ユーザ41へ送る情報の暗号化に使用する。
ユーザ41の公開鍵の証明書の無効化は、ユーザ41がリファレンスフラグの値を「−1」(無効)にしたデータに電子署名を行い、ブロックチェーンサブシステム230に登録を要求する。スマートコントラクト232は、このリファレンスフラグの値が「−1」のブロックを読み込み、ユーザ41自身が登録したかを署名によって検証する。スマートコントラクト232は、検証できれば、そのブロックにスマートコントラクト232自身の署名を付けて、ブロックチェーンサブシステム230に登録する。これにより、管理者51の手を煩わせずに、証明書を無効化できる。
以下、図6を参照して、証明書の発行、および管理のためのブロックチェーンについて説明する。
図6は、証明書の発行および無効化のブロックチェーンの一例を示す図である。ブロックチェーンの参加者であるユーザ41は、例えば端末装置100を用いて、ユーザ41宛てのデータの暗号化に使用する公開鍵62bと、その公開鍵62bで暗号化されたデータの復号に使用する秘密鍵とを生成する。そして公開鍵62bの所有者であるユーザ41は、端末装置100を用いてブロック62−1を生成し、そのブロック62−1の登録要求を、ブロックチェーンノード200に送信する。
ブロック62−1には、値が「0」のリファレンスフラグ62a、ユーザ41の公開鍵62b、公開鍵62bに対する鍵所有者(ユーザ41)の署名62cが含まれる。このブロック62−1は、ブロックチェーンネットワーク61を介して、すべてのブロックチェーンノードに配布される。
そしてブロック62−1に対して、複数の管理者が、公開鍵62bの承認を示す電子署名を行う。例えば、最初に管理者51が電子署名を行うことで、1番目の管理者51の署名62dを付与したブロック62−2が、ブロックチェーンネットワーク61上に登録される。このブロック62−2には、前のブロック62−1のハッシュ値62eが含まれている。同様に、所定数の管理者が電子署名を行う。図6の例では、N人(Nは1以上の整数)の管理者が電子署名を行うことが、公開鍵62bの証明書の発行条件となっている。
例えば管理者52がN番目の管理者として、登録承認の電子署名を行う。管理者52が電子署名を行うことで、N番目の管理者52の署名62fを含むブロック62−3が、ブロックチェーンネットワーク61上に登録される。ブロック62−3には、N−1番目の管理者が登録承認を行ったことで生成されたブロックのハッシュ値62gが含まれる。ブロック62−3では、リファレンスフラグ62aの値がまだ「0」のままである。
規定数(N)の管理者の承認が得られた場合、ブロックチェーンネットワーク61上のスマートコントラクト232aが、登録されたブロック62−3のリファレンスフラグ62aを「1」(有効)に変更し、リファレンスフラグ62aの電子署名を行う。その結果、ブロック62−4が生成される。ブロック62−4には、ユーザ41の署名62cと、登録承認を行った管理者の署名62d,62fに加え、スマートコントラクトの署名62hが含まれる。またブロック62−4には、前のブロック62−3のハッシュ値62iと公開鍵証明書62jが含まれる。公開鍵証明書62jは、公開鍵62bを含んでおり、この公開鍵62bの所有者がユーザ41であることを示している。
公開鍵証明書62jを含むブロック62−4によって、公開鍵62bの所有者がユーザ41であることが証明される。他のユーザは、ブロック62−4から取得した公開鍵62bを用いてユーザ41に送信する電子情報を暗号化することで、その電子情報を安全にユーザ41に渡すことができる。
ユーザ41は、公開鍵62bを無効化させる場合、ブロック62−4におけるリファレンスフラグ62aの値を「−1」(無効)にしたブロック62−5を、ブロックチェーンネットワーク61上に登録する。ブロック62−5には、ブロック62−4のハッシュ値62kが含まれている。ブロック62−5が登録されると、例えばスマートコントラクト232aが電子署名を行う。
なお、第2の実施の形態では、リファレンスフラグ62aの値が「1」のブロックで、ブロックチェーンネットワーク61上のスマートコントラクトの署名があるものだけが、有効でかつ他のユーザから参照可能なブロックである。
以下、ブロックチェーンネットワーク61上に登録するブロックの作成方法について、図7〜図13を参照して説明する。
図7は、公開鍵登録用のブロックの作成例を示す図である。ユーザ41は、例えば端末装置100に対して公開鍵62bと、その公開鍵62bで暗号化したデータの復号に用いる秘密鍵62mとを入力する。なお秘密鍵62mで暗号化したデータは、公開鍵62bで復号することができる。ユーザ41は、公開鍵62bの登録指示を、端末装置100に入力する。
すると端末装置100は、ユーザ41の公開鍵62bに対して、秘密鍵62mで電子署名を行う。例えば端末装置100は、公開鍵62bのハッシュ値を秘密鍵62mで暗号化する。これにより、鍵の所有者であるユーザ41の署名62cが生成される。端末装置100は、ユーザ41の公開鍵62b、値が「0」のリファレンスフラグ62a、および鍵所有者(ユーザ41)の署名62cを含む登録ブロック63を生成する。そして端末装置100は、ブロックチェーンノード200に登録ブロック63を送信し、ブロックチェーンサブシステム230に、登録ブロック63のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230は、登録ブロック63を、図6に示したブロック62−1としてブロック記憶部231に格納すると共に、他のブロックチェーンノードに送信する。
図8は、最初の登録承認時のブロックの作成例を示す図である。管理者51は、自身の公開鍵71と、公開鍵71で暗号化したデータの復号に用いる秘密鍵72とを有している。なお、秘密鍵72で暗号化したデータは、公開鍵71で復号することができる。また、管理者51が使用する端末装置100aに接続されたブロックチェーンノード200aのブロックチェーンサブシステム230aは、ブロック記憶部231a内に、ユーザ41が登録したブロック62−1を記憶している。
端末装置100aは、管理者51からの入力に応じて、リファレンスフラグ62aの値が「0」のブロック62−1を、ブロックチェーンサブシステム230a内のブロック記憶部231aから読み込む。そして端末装置100aは、公開鍵62bの登録承認処理を行う。例えば管理者51は、秘密鍵72を端末装置100aに入力する。端末装置100aは、公開鍵62bと、その公開鍵62bの所有者の署名62cとのハッシュ値を算出する。次に端末装置100aは、算出したハッシュ値を、1番目の管理者51の秘密鍵72で暗号化する。暗号化されたデータが、1番目の管理者51の署名62dとなる。端末装置100aは、値が「0」のリファレンスフラグ62a、公開鍵62b、鍵所有者の署名62c、および1番目の管理者51の署名62dを含む登録ブロック64を生成する。そして端末装置100aは、ブロックチェーンノード200aに登録ブロック64を送信し、ブロックチェーンサブシステム230aに、登録ブロック64のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230aは、登録ブロック64に、ブロック62−1のハッシュ値を追加して、ブロック62−2を生成する。そしてブロックチェーンサブシステム230aは、ブロック62−2を、ブロック記憶部231aに格納すると共に、他のブロックチェーンノードに送信する。
以後同様に、他の管理者も、管理者の署名の数がN個になるまで、登録承認を行う。
図9は、N番目の登録承認時のブロックの作成例を示す図である。管理者52は、自身の公開鍵73と、公開鍵73で暗号化したデータの復号に用いる秘密鍵74とを有している。なお、秘密鍵74で暗号化したデータは、公開鍵73で復号することができる。また、管理者52が使用する端末装置100bに接続されたブロックチェーンノード200aのブロックチェーンサブシステム230aは、ブロック記憶部231a内に、N−1番目に登録承認を行った管理者が登録したブロック62−6を記憶している。
このブロック62−6のリファレンスフラグ62aの値は、まだ「0」である。またブロック62−6には、公開鍵62b、公開鍵62bの所有者の署名62c、および既に登録承認を行った各管理者の署名が含まれる。図9の例では、ブロック62−6には、1番目の管理者の署名62dからN−1番目の管理者の署名62nが含まれている。
端末装置100bは、管理者52からの入力に応じて、リファレンスフラグ62aの値が「0」のブロック62−6を、ブロックチェーンサブシステム230a内のブロック記憶部231aから読み込む。そして端末装置100bは、公開鍵62bの登録承認処理を行う。例えば管理者52は、秘密鍵74を端末装置100bに入力する。端末装置100bは、公開鍵62b、その公開鍵62bの所有者の署名62c、および1番目からN−1番目の管理者の署名のハッシュ値を算出する。次に端末装置100aは、算出したハッシュ値を、N番目の管理者52の秘密鍵74で暗号化する。暗号化されたデータが、N番目の管理者52の署名62fとなる。端末装置100bは、値が「0」のリファレンスフラグ62a、公開鍵62b、鍵所有者の署名62c、および1番目〜N番目の各管理者の署名を含む登録ブロック65を生成する。そして端末装置100bは、ブロックチェーンノード200aに登録ブロック65を送信し、ブロックチェーンサブシステム230aに、登録ブロック65のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230aは、登録ブロック65に、ブロック62−6のハッシュ値を追加して、ブロック62−3を生成する。そしてブロックチェーンサブシステム230aは、ブロック62−3を、ブロック記憶部231aに格納すると共に、他のブロックチェーンノードに送信する。
このようにして、規定の人数分の登録承認が完了すると、いずれかのブロックチェーンノードで実行されているスマートコントラクトが公開鍵証明書を発行する。
図10は、スマートコントラクトによる公開鍵証明書の作成例を示す図である。スマートコントラクト232aは、自身の公開鍵75と、公開鍵75で暗号化したデータの復号に用いる秘密鍵76とを有している。なお、秘密鍵76で暗号化したデータは、公開鍵75で復号することができる。また、ブロックチェーンサブシステム230aは、ブロック記憶部231a内に、N番目に登録承認を行った管理者が登録したブロック62−3を記憶している。
このブロック62−3のリファレンスフラグ62aの値は、まだ「0」である。またブロック62−3には、公開鍵62b、公開鍵62bの所有者の署名62c、および既に登録承認を行った各管理者の署名が含まれる。図10の例では、ブロック62−3には、1番目の管理者の署名62dからN番目の管理者の署名62fが含まれている。
スマートコントラクト232aは、リファレンスフラグ62aの値が「0」のブロック62−3をブロック記憶部231aから読み込む。そしてスマートコントラクト232aは、公開鍵62bについての公開鍵証明書62jを作成する。例えばスマートコントラクト232aは、公開鍵62bのハッシュ値を、スマートコントラクト232aの秘密鍵76で暗号化する。暗号化されたデータが、スマートコントラクト232aの署名である。スマートコントラクト232aは、署名を公開鍵62bに付与し、公開鍵証明書62jとする。またスマートコントラクト232aは、リファレンスフラグ62aの値を、有効を表す値「1」に変更する。そしてスマートコントラクト232aは、値が「1」のリファレンスフラグ62a、公開鍵62b、鍵所有者の署名62c、1番目〜N番目の各管理者の署名、および公開鍵証明書62jを含む登録ブロック66を生成する。そしてスマートコントラクト232aは、ブロックチェーンサブシステム230aに登録ブロック66のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230aは、登録ブロック66に、ブロック62−3のハッシュ値を追加して、ブロック62−4を生成する。そしてブロックチェーンサブシステム230aは、ブロック62−4を、ブロック記憶部231aに格納すると共に、他のブロックチェーンノードに送信する。
このようにしてユーザ41が登録した公開鍵62bに関する公開鍵証明書62jが発行され、他のユーザが公開鍵62bを安心して使用できるようになる。使用可能となった公開鍵62bは、ユーザ41の意思で破棄することができる。
図11は、公開鍵破棄時のブロックの作成例を示す図である。ユーザ41は、公開鍵62bの破棄指示を、端末装置100に入力する。すると端末装置100は、ブロックチェーンサブシステム230からブロック62−4を読み込む。次に端末装置100は、公開鍵62b、鍵所有者の署名62c、各管理者の署名62d,・・・,62f、および公開鍵証明書62jのハッシュ値を秘密鍵62mで暗号化する。これにより、鍵の所有者であるユーザ41の署名62nが生成される。また端末装置100は、リファレンスフラグ62aの値を、無効であることを示す値「−1」に変更する。さらに端末装置100は、ユーザ41の公開鍵62b、値が「−1」のリファレンスフラグ62a、鍵所有者の署名62c、各管理者の署名62d,・・・,62f、公開鍵証明書62j、および追加された鍵所有者の署名62nを含む登録ブロック67を生成する。そして端末装置100は、ブロックチェーンノード200に登録ブロック67を送信し、ブロックチェーンサブシステム230に、登録ブロック67のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230は、ブロック62−4のハッシュ値を登録ブロック67に追加して、ブロック62−5を作成する。そしてブロックチェーンサブシステム230は、ブロック62−5をブロック記憶部231に格納すると共に、他のブロックチェーンノードに送信する。
ユーザ41の公開鍵62bの破棄を示すブロック62−5がブロックチェーンネットワーク61に登録されると、いずれかのブロックチェーンノードで実行されているスマートコントラクトにより、公開鍵62bの無効化処理が行われる。
図12は、スマートコントラクトによる公開鍵の無効化の例を示す図である。スマートコントラクト232は、自身の公開鍵77と、公開鍵77で暗号化したデータの復号に用いる秘密鍵78とを有している。なお、秘密鍵78で暗号化したデータは、公開鍵77で復号することができる。また、ブロックチェーンサブシステム230は、ブロック記憶部231内に、破棄の処理が行われたブロック62−5を記憶している。
このブロック62−5のリファレンスフラグ62aの値は「−1」である。またブロック62−5には、公開鍵62b、公開鍵62bの所有者の署名62c、既に登録承認を行った各管理者の署名、公開鍵証明書62j、および破棄の処理で追加された公開鍵62bの所有者の署名62nが含まれる。
スマートコントラクト232は、リファレンスフラグ62aの値が「−1」のブロック62−5をブロック記憶部231から読み込む。そしてスマートコントラクト232は、ブロック62−5に含まれるすべての署名(公開鍵証明書62jを含む)とリファレンスフラグ62aとのハッシュ値を、スマートコントラクト232の秘密鍵78で暗号化する。暗号化されたデータが、スマートコントラクト232の署名62oである。スマートコントラクト232は、ブロック62−5に含まれていた情報に署名62oを追加した登録ブロック68を生成する。そしてスマートコントラクト232は、ブロックチェーンサブシステム230に登録ブロック68のブロックチェーンネットワーク61への登録を依頼する。
ブロックチェーンサブシステム230は、登録ブロック68に、ブロック62−5のハッシュ値を追加して、ブロック62−8を生成する。そしてブロックチェーンサブシステム230は、ブロック62−8を、ブロック記憶部231に格納すると共に、他のブロックチェーンノードに送信する。
ブロックチェーンネットワーク61では、関連する複数のブロックのうち、最後に更新されたブロックのみが有効となる。そのため、ブロック62−8が登録されたことにより、ブロック62−4は使用不能となる。またブロック62−8には、公開鍵62bが無効であることを示すリファレンスフラグ62a「−1」が設定されている。その結果、以後の公開鍵62bの使用が抑止される。
なお無効化される前であれば、ユーザ41以外のユーザは、ブロック62−4を参照して、ユーザ41の公開鍵62bを利用することができる。
図13は、公開鍵の使用例を示す図である。ユーザ42が端末装置100cに対して、ユーザ41の公開鍵62bの取得を指示する。すると端末装置100cは、ブロックチェーンノード200cのブロックチェーンサブシステム230c内のブロック記憶部231cから、ブロック62−4を読み込む。また端末装置100cは、ブロックチェーンサブシステム230c内のブロック記憶部231cから、スマートコントラクト232aの公開鍵75を含むブロック62−7を読み込む。ブロック62−7には、例えば公開鍵75についての公開鍵証明書が含まれる。その公開鍵75は、例えば、端末装置100cが既に有している鍵によって検証できるものとする。
端末装置100cは、スマートコントラクト232aの公開鍵75を用いて、公開鍵証明書62jの検証を行う。例えば端末装置100cは、公開鍵証明書62jに含まれるスマートコントラクト232aの署名を、スマートコントラクト232aの公開鍵75で復号する。次に端末装置100cは、復号されたデータと、ブロック62−4に含まれている公開鍵62bのハッシュ値とを比較する。復号されたデータと公開鍵62bのハッシュ値とが一致した場合、公開鍵62bの所有者がユーザ41であることが確認される。
公開鍵62bの所有者がユーザ41であることが確認できた場合、端末装置100cは、ユーザ42の指示に従って、公開鍵62bを使用して、ユーザ41に渡す電子情報を暗号化する。端末装置100cは、暗号化した電子情報を含む登録ブロックを生成し、そのブロックのブロックチェーンネットワーク60への登録要求を、ブロックチェーンサブシステム230cに送信する。
以下、図14〜図19を参照して、証明書の発行、および管理処理の手順について、詳細に説明する。
図14は、公開鍵登録処理の手順の一例を示すシーケンス図である。端末装置100は、ユーザ41によって指定された場所から、公開鍵ファイルを取得する(ステップS101)。公開鍵ファイルには、ユーザ41の公開鍵62bが含まれる。次に端末装置100は、公開鍵ファイルと、値が「0」のリファレンスフラグ62aを生成する(ステップS102)。次に端末装置100は、ユーザ41の公開鍵62bのハッシュ値に、ユーザ41の秘密鍵62mで電子署名をする(ステップS103)。そして端末装置100は、登録ブロック63を作成し、登録ブロック63の登録要求を、ブロックチェーンノード200に送信する(ステップS104)。
ブロックチェーンノード200は、受信した登録ブロック63を、ブロックチェーンネットワーク61上のブロック62−1(図6参照)として記憶する(ステップS105)。またブロックチェーンノード200は、ブロック62−1を、他のブロックチェーンノードに配布する(ステップS106)。
図15は、登録承認処理の手順の一例を示すシーケンス図である。管理者51が使用する端末装置100aは、リファレンスフラグ62aの値が「0」のブロックの取得要求を、ブロックチェーンノード200aに送信する(ステップS111)。ブロックの取得要求に応じて、ブロックチェーンノード200aは、登録されているブロックのうち、リファレンスフラグ62aの値が「0」のブロック62−1を、端末装置100aに送信する(ステップS112)。
ブロックを取得した端末装置100aは、管理者51の秘密鍵72で、ユーザ41の公開鍵62bと署名62cとのハッシュ値に電子署名を行う(ステップS113)。このとき、リファレンスフラグ62aの値は「0」のままである。端末装置100aは、取得したブロック62−1に、管理者51の署名62dを追加した登録ブロック64の登録要求を、ブロックチェーンノード200aに送信する(ステップS114)。
ブロックチェーンノード200aは、受信した登録ブロック64にブロック62−1のハッシュ値を追加し、ブロックチェーンネットワーク61上のブロック62−2(図6参照)として記憶する(ステップS115)。またブロックチェーンノード200aは、ブロック62−2を、他のブロックチェーンノードに配布する(ステップS116)。
このような登録承認が、N人の管理者によって行われると、公開鍵62bを有効化するための公開鍵証明書の発行処理が行われる。
図16は、公開鍵証明書発行処理の手順の一例を示すシーケンス図である。なお、公開鍵証明書発行処理は、ブロックチェーンノード200aの内部処理であるため、図16では、ブロックチェーンノード200a内の各要素の処理をシーケンス図で表している。
スマートコントラクト232aは、ブロックチェーンサブシステム230aに登録されているブロックのうち、公開鍵62bの登録要求に関するブロックの承認状況を監視する(ステップS121)。例えばスマートコントラクト232aは、ブロックチェーンサブシステム230aに対して、管理者の署名がN個以上となった未承認(リファレンスフラグ62aの値が「0」)のブロック62−3を要求する。ブロックチェーンサブシステム230aは、管理者の署名がN個以上となった未承認のブロック62−3を検出すると、そのブロック62−3をスマートコントラクト232aに送信する(ステップS122)。
スマートコントラクト232aは、管理者の署名がN個以上となった未承認のブロック62−3を取得できたか否かを判断する(ステップS123)。該当ブロック62−3が取得できない場合、スマートコントラクト232aは、ブロックの承認状況の監視を続ける。該当ブロック62−3が取得できた場合、スマートコントラクト232aは、取得したブロックのリファレンスフラグ62aの値を「1」に変更する(ステップS124)。次にスマートコントラクト232aは、取得したブロック62−3に含まれる公開鍵62bのハッシュ値にスマートコントラクト232aの秘密鍵76で署名した公開鍵証明書62jを作成する(ステップS125)。そしてスマートコントラクト232aは、取得したブロック62−3に公開鍵証明書62jを含めた登録ブロック66の登録要求を、ブロックチェーンサブシステム230aに送信する(ステップS126)。
ブロックチェーンサブシステム230aは、受信した登録ブロック66にブロック62−3のハッシュ値を追加し、ブロックチェーンネットワーク61上のブロック62−4(図6参照)として記憶する(ステップS127)。またブロックチェーンサブシステム230aは、ブロック62−4を、他のブロックチェーンノードに配布する(ステップS128)。
公開鍵証明書62jが発行されることで、公開鍵62bは有効化される。公開鍵62bは所有者であるユーザ41からの指示で破棄される。
図17は、公開鍵の破棄処理の手順の一例を示すシーケンス図である。端末装置100は、ユーザ41から公開鍵62bの破棄の指示が入力されると、ブロックチェーンノード200に、リファレンスフラグ62aの値が「1」のブロック62−4の取得要求を送信する(ステップS131)。ブロックチェーンノード200は、取得要求に応じて、リファレンスフラグ62aの値が「1」のブロック62−4を、端末装置100に送信する(ステップS132)。
ブロック62−4を取得した端末装置100は、リファレンスフラグ62aの値を「−1」(無効)に更新する(ステップS133)。次に端末装置100は、取得したブロック62−4に含まれる公開鍵62b、各種署名、および公開鍵証明書62jのハッシュ値を計算し、そのハッシュ値にユーザ41の秘密鍵62mで電子署名を行う(ステップS134)。そして端末装置100は、取得したブロック62−4に、新たに生成した署名62nを追加した登録ブロック67の登録要求を、ブロックチェーンノード200に送信する(ステップS135)。
ブロックチェーンノード200は、受信した登録ブロック67にブロック62−4のハッシュ値を追加し、ブロックチェーンネットワーク61上のブロック62−5(図6参照)として記憶する(ステップS136)。またブロックチェーンノード200は、ブロック62−5を、他のブロックチェーンノードに配布する(ステップS137)。
公開鍵62bの破棄処理が行われると、ブロックチェーンネットワーク61上で、公開鍵62bが無効化される。
図18は、公開鍵無効化処理の手順の一例を示すシーケンス図である。なお、公開鍵無効化処理は、ブロックチェーンノード200の内部処理であるため、図18では、ブロックチェーンノード200内の各要素の処理をシーケンス図で表している。
スマートコントラクト232は、ブロックチェーンサブシステム230に登録されているブロックのうち、破棄された公開鍵62bに関するブロックの有無を監視する(ステップS141)。例えばスマートコントラクト232は、ブロックチェーンサブシステム230に対して、リファレンスフラグ62aの値が「−1」のブロック62−5を要求する。ブロックチェーンサブシステム230は、該当するブロック62−5を検出すると、そのブロック62−5をスマートコントラクト232に送信する(ステップS142)。
スマートコントラクト232は、リファレンスフラグ62aの値が「−1」(無効)のブロック62−5を取得できたか否かを判断する(ステップS143)。該当ブロック62−5が取得できない場合、スマートコントラクト232は、破棄ブロックの監視を続ける。該当ブロック62−5が取得できた場合、破棄時にユーザ41が追加した署名62nを検証する(ステップS144)。例えばスマートコントラクト232は、署名62nを、ユーザ41の公開鍵62bで復号した結果と、署名に用いられたデータのハッシュ値とを比較し、一致していれば、ユーザ41の正しい署名であると判断する。
署名が正しければ、スマートコントラクト232は、ブロック62−5に含まれるすべての署名(公開鍵証明書62jを含む)とリファレンスフラグ62aとのハッシュ値に、スマートコントラクト232の秘密鍵78で電子署名をする(ステップS145)。そしてスマートコントラクト232は、取得したブロック62−5に、スマートコントラクト232による新たな署名62oを含めた登録ブロック68の登録要求を、ブロックチェーンサブシステム230に送信する(ステップS146)。
ブロックチェーンサブシステム230は、受信した登録ブロック68にブロック62−5のハッシュ値を追加し、ブロックチェーンネットワーク61上のブロック62−8として記憶する(ステップS147)。またブロックチェーンサブシステム230は、ブロック62−8を、他のブロックチェーンノードに配布する(ステップS148)。
このようにして、ユーザ41が破棄を指示した公開鍵62bが無効化される。
次に、他のユーザ41による有効な公開鍵62bの使用手順について説明する。
図19は、公開鍵の使用手順の一例を示すシーケンス図である。公開鍵62bの使用者であるユーザ42は、端末装置100cに対して、例えばユーザ41の公開鍵62bを使用したデータの暗号化を指示する。すると端末装置100cは、公開鍵証明書を含むユーザ41の最新ブロックの取得要求を、ブロックチェーンノード200cに送信する(ステップS151)。ブロックチェーンノード200cは、ユーザ41の公開鍵62bを含む最新のブロックを、端末装置100cに送信する(ステップS152)。
ブロックを取得した端末装置100cは、取得したブロックに示されているリファレンスフラグ62aの値が「0」より大きいか否かを判断する(ステップS153)。端末装置100cは、リファレンスフラグ62aの値が「0」より大きければ、処理をステップS154に進める。また端末装置100cは、リファレンスフラグ62aの値が「0」以下であれば、処理をステップS157に進める。
端末装置100cは、ハッシュ値の比較により、取得したブロックに含まれる公開鍵証明書に付与されているスマートコントラクト232aの署名を検証する(ステップS154)。例えば端末装置100cは、ブロックチェーンネットワーク61を介してスマートコントラクト232aの公開鍵62bを取得し、その公開鍵62bで署名を復号する。端末装置100cは、復号されたデータと、公開鍵62bのハッシュ値とを比較し、一致すれば、正しい署名であると判断する。
端末装置100は、スマートコントラクト232aの署名が正しく検証できたか否かを判断する(ステップS155)。端末装置100cは、正しく検証できた場合、処理をステップS156に進める。また端末装置100cは、正しく検証できなかった場合、処理をステップS157に進める。
正しく検証できた場合、端末装置100cは、公開鍵62bを使用して、ユーザ41に送信するデータの暗号化などの処理を行う(ステップS156)。また端末装置100cは、リファレンスフラグ62aが「0」以下であるか、スマートコントラクト232aの公開鍵62bの正当性が確認できない場合、ユーザ41の公開鍵62bが使用できない旨のメッセージを出力する(ステップS157)。
このようにして、スマートコントラクト232aの署名によって正当性が担保されている場合に限り、公開鍵62bを使用することができる。
次に、第2の実施の形態に係る処理をブロックチェーンシステムに実行させるためのユーザインタフェースについて、図20〜図22を参照して説明する。
図20は、公開鍵登録画面の一例を示す図である。ユーザ41が使用する端末装置100が、公開鍵登録画面81を表示する。公開鍵登録画面81には、公開鍵ファイル指定用のテキストボックス81a、ファイル選択用のボタン81b、OKボタン81c、およびキャンセルボタン81dが含まれている。公開鍵62bを登録するユーザ41は、例えばテキストボックス81aに、公開鍵62bを含むファイルの名称を入力する。またユーザ41は、ボタン81bを選択することで、端末装置100内のファイルのリストを画面表示させることができる。ユーザ41は、表示されたファイルのリストの中から、公開鍵62bを含むファイルを選択する。すると選択されたファイルのファイル名が、テキストボックス81aに設定される。
ユーザ41がOKボタン81cを押下すると、端末装置100は、テキストボックス81aに示されているファイル内の公開鍵62bを含むブロックの登録要求を、ブロックチェーンノード200に送信する。またユーザ41がキャンセルボタン81dを押下すると、端末装置100は、ブロックの登録要求を送信せずに、公開鍵登録画面81を閉じる。
図21は、登録承認画面の一例を示す図である。管理者51が使用する端末装置100aが、登録承認画面82を表示する。登録承認画面82には、公開鍵表示部82a、管理者数表示部82b、既承認人数表示部82c、署名ファイル指定用のテキストボックス82d、署名ファイル選択用のボタン82e、承認ボタン82f、およびキャンセルボタン82gが含まれる。
公開鍵表示部82aには、ユーザ41の公開鍵62bが表示される。管理者数表示部82bには、登録承認を行うことができる管理者の人数が表示される。既承認人数表示部82cには、既に登録承認を行った管理者の人数が表示される。
公開鍵62bを承認する管理者51は、例えばテキストボックス82dに、管理者51の秘密鍵を含むファイルの名称を入力する。また管理者51は、ボタン82eを選択することで、端末装置100a内のファイルのリストを画面表示させることができる。管理者51は、表示されたファイルのリストの中から、秘密鍵を含むファイルを選択する。すると選択されたファイルのファイル名が、テキストボックス82dに設定される。
管理者51が承認ボタン82fを押下すると、端末装置100aは、管理者51の署名を含む登録ブロックの登録要求を、ブロックチェーンノード200aに送信する。登録承認が正常に終了すると、例えば端末装置100aの画面に、登録承認結果画面83が表示される。登録承認結果画面83には、例えば登録承認を行った管理者の人数が表示される。また登録承認結果画面83には、求められている人数の管理者が登録承認を行い、公開鍵62bが有効化された場合、公開鍵62bの有効化を示すメッセージが表示される。管理者51がOKボタン83aを押下すると、端末装置100aは、登録承認結果画面83を閉じる。
また管理者51がキャンセルボタン82gを押下すると、端末装置100aは、ブロックの登録要求を送信せずに、登録承認画面82を閉じる。
図22は、公開鍵無効化画面の一例を示す図である。ユーザ41が使用する端末装置100が、公開鍵無効化画面84を表示する。公開鍵無効化画面84には、公開鍵ファイル指定用のテキストボックス84a、ファイル選択用のボタン84b、OKボタン84c、およびキャンセルボタン84dが含まれている。公開鍵62bを無効化するユーザ41は、例えばテキストボックス84aに、公開鍵62bを含むファイルの名称を入力する。またユーザ41は、ボタン84bを選択することで、端末装置100内のファイルのリストを画面表示させることができる。ユーザ41は、表示されたファイルのリストの中から、公開鍵62bを含むファイルを選択する。すると選択されたファイルのファイル名が、テキストボックス84aに設定される。
ユーザ41がOKボタン84cを押下すると、端末装置100は、テキストボックス84aに示されているファイル内の公開鍵62bの破棄を示すブロック(リファレンスフラグ62aの値が「−1」)の登録要求を、ブロックチェーンノード200に送信する。またユーザ41がキャンセルボタン84dを押下すると、端末装置100は、ブロックの登録要求を送信せずに、公開鍵無効化画面84を閉じる。
無効化が正常に終了すると、例えば端末装置100の画面に、無効化結果画面85が表示される。無効化結果画面85には、公開鍵表示部85aに、無効化された公開鍵62bが表示される。ユーザ41がOKボタン85bを押下すると、端末装置100は、無効化結果画面85を閉じる。
以上のようにして、ブロックチェーンネットワーク61を用いて公開鍵証明書の発行および管理を行うことができる。その結果、証明書管理サーバで公開鍵証明書の発行や管理を行う場合に比べ、可用性が向上する。すなわち第2の実施の形態では、公開鍵62bの発行や管理処理が集中化してしまうことがなく、特定のサーバのダウンにより、公開鍵証明書が発行できなくなったり、公開鍵62bが参照できなくなったりすることが抑止される。
しかも、第2の実施の形態では、複数の管理者の多数決で承認を行うため、登録ミスを防止できる。さらに、複数の管理者で承認を行うため、ある承認者が公開鍵62bを承認できない場合でも他の管理者がその公開鍵62bを承認することができる。その結果、公開鍵証明書が発行されるまでの時間を短縮できる。
さらに第2の実施の形態では、公開鍵62bを管理するブロックにリファレンスフラグ62aを設け、リファレンスフラグ62aによって登録・有効・無効の各状態を管理している。これにより、例えば公開鍵62bを無効化する場合、ユーザ41自身が、公開鍵62bの破棄を示すブロックを登録するだけでよい、管理者の手間をかけずに済むとともに、無効化を迅速に行うことができる。
〔第3の実施の形態〕
次に、第3の実施の形態について説明する。第3の実施の形態は、電子署名をする際に、署名の対象のハッシュ値を計算せず、直接署名を付与するものである。ハッシュ値の計算を省略することで、処理の効率化が可能となる。以下、図23〜図31を参照し、第3の実施の形態における第2の実施の形態との相違点を説明する。
図23は、第3の実施の形態における公開鍵登録用のブロックの作成例を示す図である。第3の実施の形態では、端末装置100は、公開鍵62bを、ユーザ41の秘密鍵62mで暗号化する。そして公開鍵62bを直接暗号化したデータが、ユーザ41の署名62c−1となる。
図24は、第3の実施の形態における最初の登録承認時のブロックの作成例を示す図である。第3の実施の形態では、端末装置100aは、公開鍵62bと、その公開鍵62bの所有者の署名62c−1とを、管理者51の秘密鍵72で暗号化する。暗号化したデータが、管理者51の署名62d−1となる。
図25は、第3の実施の形態におけるN番目の登録承認時のブロックの作成例を示す図である。端末装置100bは、公開鍵62b、その公開鍵62bの所有者の署名62c−1、および1番目からN−1番目の管理者の署名62d−1,・・・,62n−1を、管理者52の秘密鍵74で暗号化する。暗号化したデータが、管理者52の署名62f−1となる。
図26は、第3の実施の形態における公開鍵破棄時のブロックの作成例を示す図である。端末装置100は、公開鍵62b、その公開鍵62bの所有者の署名62c−1、および1番目からN番目の管理者の署名62d−1,・・・,62f−1を、ユーザ41の秘密鍵62mで暗号化する。暗号化したデータが、ユーザ41の署名62n−1となる。
図27は、第3の実施の形態におけるスマートコントラクトによる公開鍵の無効化の例を示す図である。スマートコントラクト232は、ブロック62−5に含まれるすべての署名(公開鍵証明書62jを含む)と、値が「−1」のリファレンスフラグ62aとを、スマートコントラクト232の秘密鍵78で暗号化する。暗号化されたデータが、スマートコントラクト232の署名62o−1である。
図28は、第3の実施の形態における公開鍵登録処理の手順の一例を示すシーケンス図である。図28に示す処理のうち、第2の実施の形態(図14参照)と相違するのは、ステップS103aの処理である。第3の実施の形態では、ステップS103aにおいて、端末装置100は、ハッシュ値を計算せずに、ユーザ41の公開鍵62bに、ユーザ41の秘密鍵62mで電子署名をする。
図29は、第3の実施の形態における登録承認処理の手順の一例を示すシーケンス図である。図29に示す処理のうち、第2の実施の形態(図15参照)と相違するのは、ステップS113aの処理である。第3の実施の形態では、ステップS113aにおいて、端末装置100aは、ハッシュ値を計算せずに、ユーザ41の公開鍵62bと署名とに、管理者51の秘密鍵72で電子署名をする。
図30は、第3の実施の形態における公開鍵証明書発行処理の手順の一例を示すシーケンス図である。図30に示す処理のうち、第2の実施の形態(図16参照)と相違するのは、ステップS125aの処理である。第3の実施の形態では、ステップS125aにおいて、スマートコントラクト232aは、ハッシュ値を計算せずに、ユーザ41の公開鍵62bにスマートコントラクト232aの秘密鍵76で署名した公開鍵証明書62jを作成する。
図31は、第3の実施の形態における公開鍵の破棄処理の手順の一例を示すシーケンス図である。図31に示す処理のうち、第2の実施の形態(図17参照)と相違するのは、ステップS134aの処理である。第3の実施の形態では、ステップS134aにおいて、端末装置100は、ハッシュ値を計算せずに、公開鍵62b、各種署名、および公開鍵証明書62jに、ユーザ41の秘密鍵62mで電子署名をする。
図32は、第3の実施の形態における公開鍵無効化処理の手順の一例を示すシーケンス図である。図32に示す処理のうち、第2の実施の形態(図18参照)と相違するのは、ステップS145aの処理である。第3の実施の形態では、ステップS145aにおいて、スマートコントラクト232は、ハッシュ値を計算せずに、すべての署名(公開鍵証明書62jを含む)とリファレンスフラグ62aに、スマートコントラクト232の秘密鍵78で電子署名をする。
図33は、第3の実施の形態における公開鍵使用手順の一例を示すシーケンス図である。図33に示す処理のうち、第2の実施の形態(図19参照)と相違するのは、ステップS154aの処理である。第3の実施の形態では、ステップS154aにおいて、端末装置100cは、ハッシュ値ではなく、ユーザ41の公開鍵62bの比較により、スマートコントラクト232aの署名を検証する。
このように第3の実施の形態では、ハッシュ値の計算を省略しているため、処理を効率的に行うことができる。
〔その他の実施の形態〕
第2、第3の実施の形態では、ブロックチェーンネットワーク60を用いた取引に使用する公開鍵証明書をブロックチェーンネットワーク61で発行しているが、これは、公開鍵証明書の用途の一例である。すなわち、ブロックチェーンネットワーク61を用いた公開鍵証明書は、ブロックチェーンネットワーク60以外にも利用できる。
また第2、第3の実施の形態では、公開鍵62bについて証明書を発行しているが、他の情報について、その情報の所有者の証明する証明書を発行することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。