(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-11-14
(45)【発行日】2024-11-22
(54)【発明の名称】プログラム、サーバ、方法、及びシステム
(51)【国際特許分類】
H04L 9/08 20060101AFI20241115BHJP
【FI】
H04L9/08 A
(21)【出願番号】P 2023187475
(22)【出願日】2023-11-01
【審査請求日】2023-12-11
(73)【特許権者】
【識別番号】520242539
【氏名又は名称】株式会社HashPort
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】辻野 晃一
(72)【発明者】
【氏名】稲永 大地
(72)【発明者】
【氏名】八塚 弘樹
(72)【発明者】
【氏名】吉田 世博
【審査官】平井 誠
(56)【参考文献】
【文献】特開2007-300157(JP,A)
【文献】特開2020-155911(JP,A)
【文献】特開2021-118406(JP,A)
【文献】特開2021-136645(JP,A)
【文献】特開2023-132485(JP,A)
【文献】米国特許出願公開第2014/0355757(US,A1)
【文献】山澤 昌夫 ほか,暗号通貨(ビットコイン)・ブロックチェーンの高信頼化へ向けてのMELT-UP活動,2018年 暗号と情報セキュリティシンポジウム概要集,日本,電子情報通信学会,2010年01月19日,pp.1-8
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00-5/00
H04L 9/00-40
(57)【特許請求の範囲】
【請求項1】
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、前記サーバは、プロセッサと記憶部とを備え、前記サーバを動作させるためのプログラムであって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記プログラムは、前記プロセッサに、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、を実行させ
、
前記鍵断片の要求に、前記ユーザ端末が暗号資産に関するサービスに対するログイン認証に成功したことを示す情報が含まれており、
前記ログイン認証に成功したことを示す情報は、前記ログイン認証を行うサーバにより発行されるトークンを含み、
前記認証を行うステップにおいて、前記トークンが前記ログイン認証を行うサーバにより発行されたものか検証することにより、前記認証を行う、プログラム。
【請求項2】
前記認証を行うステップにおいて、前記複数のサーバのうち、少なくとも1つの他のサーバとは異なる認証方式で前記認証を行う、
請求項1に記載のプログラム。
【請求項3】
前記複数の前記サーバの各々は、異なる暗号資産の秘密鍵を管理する事業を行う者により管理されるサーバである、
請求項1又は請求項2に記載のプログラム。
【請求項4】
前記ログイン認証は、複数の前記サービスについてのシングルサインオンを行うためのログイン認証である、
請求項1に記載のプログラム。
【請求項5】
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、プロセッサと記憶部とを備える前記サーバであって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記サーバの制御部が、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、を実行
し、
前記鍵断片の要求に、前記ユーザ端末が暗号資産に関するサービスに対するログイン認証に成功したことを示す情報が含まれており、
前記ログイン認証に成功したことを示す情報は、前記ログイン認証を行うサーバにより発行されるトークンを含み、
前記認証を行うステップにおいて、前記トークンが前記ログイン認証を行うサーバにより発行されたものか検証することにより、前記認証を行う、するサーバ。
【請求項6】
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、プロセッサと記憶部とを備える前記サーバが実行する方法であって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記プロセッサが、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、
を実行
し、
前記鍵断片の要求に、前記ユーザ端末が暗号資産に関するサービスに対するログイン認証に成功したことを示す情報が含まれており、
前記ログイン認証に成功したことを示す情報は、前記ログイン認証を行うサーバにより発行されるトークンを含み、
前記認証を行うステップにおいて、前記トークンが前記ログイン認証を行うサーバにより発行されたものか検証することにより、前記認証を行う、する方法。
【請求項7】
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、
前記システムは、複数のサーバと、前記ユーザのユーザ端末とを含み、
前記サーバの記憶部は、前記ユーザのユーザ端末によって暗号化された秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記サーバの制御部が、
前記ユーザのユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、
前記ユーザ端末の制御部が、
前記複数のサーバの各々に、前記サーバの保有する前記鍵断片を要求するステップと、
前記複数のサーバの各々から、前記鍵断片を取得するステップと、
複数の前記鍵断片から、暗号化された前記秘密鍵を復元するステップと、
前記暗号化された前記秘密鍵を復号するステップと、
を実行
し、
前記鍵断片の要求に、前記ユーザ端末が暗号資産に関するサービスに対するログイン認証に成功したことを示す情報が含まれており、
前記ログイン認証に成功したことを示す情報は、前記ログイン認証を行うサーバにより発行されるトークンを含み、
前記認証を行うステップにおいて、前記トークンが前記ログイン認証を行うサーバにより発行されたものか検証することにより、前記認証を行う、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム、サーバ、方法、及びシステムに関する。
【背景技術】
【0002】
自律分散ネットワークに、複数の利用者のノードコンピュータと、監視ノードコンピュータ群が接続されており、利用者のノードコンピュータは、仮想通貨の保管手段として機能する自律分散型電子割符ウォレット実行プログラムを備え、自律分散型電子割符ウォレット実行プログラムは、保管した仮想通貨データを保護するために、暗号から成る秘密鍵を生成し、分割し、分割した秘密鍵の各部は、監視ノードコンピュータ群の一つの監視ノードコンピュータが無作為に選択した複数の匿名のノードコンピュータに、分散して格納され、使用時に再生される、という技術がある(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記技術では、自律分散ネットワーク上の複数のノードに鍵断片を格納しておくことで安全性を高める技術であるため、監視ノードの監視下におけるサーバに鍵断片が管理される。しかし、鍵断片の通信路が盗聴されることなどにより集められた場合、秘密鍵が復元されてしまうため、暗号資産の管理リスクが生じてしまう、という問題があった。また、ユーザ自身が秘密鍵を管理すると、ユーザが秘密鍵を管理する負担が生じてしまう、という問題があった。
【0005】
そこで、本開示において、暗号資産の管理リスクを低減させると共に、ユーザに秘密鍵を管理する負担をかけないようにする技術を提供する。
【課題を解決するための手段】
【0006】
本開示に係るプログラムは、暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数の前記サーバを含み、前記サーバは、プロセッサと記憶部とを備え、前記サーバを動作させるためのプログラムであって、前記記憶部は、ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、前記プログラムは、前記プロセッサに、前記ユーザのユーザ端末から前記鍵断片の要求を受信するステップと、前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、前記認証に成功したことに応じて、前記鍵断片をユーザ端末に送信するステップと、を実行させる。
【発明の効果】
【0007】
本開示によれば、暗号資産の管理リスクを低減させると共に、ユーザに秘密鍵を管理する負担をかけないようにすることができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、システム1の全体の構成を示す図である。
【
図2】
図2は、サーバ10の機能的な構成を示す図である。
【
図3】
図3は、データベースのデータ構造を示す図である。
【
図4】
図4は、データベースのデータ構造を示す図である。
【
図5】
図5は、ユーザ端末20の機能的な構成を示す図である。
【
図6】
図6は、保管サーバ30の機能的な構成を示す図である。
【
図7】
図7は、データベースのデータ構造を示す図である。
【
図8】
図8は、システム1における処理の流れの一例を示す図である。
【
図9】
図9は、システム1における処理の流れの一例を示す図である。
【
図10】
図10は、本開示の技術を用いた例を説明するためのイメージ図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しつつ、本開示の実施形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称及び機能も同じである。従って、それらについての詳細な説明は繰り返さない。
【0010】
<1.実施形態>
<1.1.システム1の全体構成>
システム1は、本開示に係る暗号資産の秘密鍵を管理するためのシステムである。
【0011】
図1に示すように、システム1は、サーバ10と、ユーザ端末20と、複数の保管サーバ30(
図1では保管サーバ30A及び保管サーバ30Bを示している。これらをまとめてサーバ群3と呼ぶ。)と、提供サーバ40と、ネットワーク80とを含む。サーバ10と、ユーザ端末20と、提供サーバ40とは、ネットワーク80を介して通信接続する。本開示では、サーバ群3に含まれる保管サーバ30は、異なる秘密鍵管理事業者(暗号資産の秘密鍵を管理する事業を行う者)のサーバである場合を例に説明する。なお、サーバ群3に含まれる保管サーバ30の各々は、全て同じ秘密鍵管理事業者のものとして構成しても、一部の保管サーバ30を異なる秘密鍵管理事業者のものとして構成してもよい。
【0012】
サーバ10は、ユーザが暗号資産に関するサービスにログインする機能を発揮する情報処理装置である。サーバ10は、据え置き型のPC(Personal Computer)、ラップトップPCなどにより実現される。また、サーバ10は、データセンター等に構築された複数のサーバにより1つのサーバとして機能するように構成されたものであってもよい。
【0013】
図1に示すように、サーバ10は、通信IF12と、入出力IF13と、メモリ15と、ストレージ16と、プロセッサ19と、を備える。
【0014】
通信IF12は、サーバ10が外部の装置と通信するため、信号を入出力するためのインタフェースである。入出力IF13は、ユーザからの入力操作を受け付けるための入力装置、及びユーザに対し情報を提示するための出力装置とのインタフェースとして機能する。入出力IF13は、プログラム、及びプログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。メモリ15は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。ストレージ16は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。プロセッサ19は、メモリ15に記憶されたプログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。
【0015】
ユーザ端末20は、システム1を利用するユーザが操作する情報処理装置である。ユーザ端末20は、移動体通信システムに対応したスマートフォン、タブレット等の携帯端末、据え置き型のPC(Personal Computer)、ラップトップPCなどにより実現される。
【0016】
図1に示すように、ユーザ端末20は、通信IF22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29と、を備える。
【0017】
通信IF22は、ユーザ端末20が外部の装置と通信するため、信号を入出力するためのインタフェースである。入出力IF23は、ユーザからの入力操作を受け付けるための入力装置、及びユーザに対し情報を提示するための出力装置とのインタフェースとして機能する。入出力IF23は、プログラム、及びプログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。メモリ25は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。ストレージ26は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。プロセッサ29は、メモリ25に記憶されたプログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。
【0018】
保管サーバ30は、ユーザの秘密鍵を分割した鍵断片を管理する機能を発揮する情報処理装置である。保管サーバ30は、据え置き型のPC(Personal Computer)、ラップトップPCなどにより実現される。また、保管サーバ30は、データセンター等に構築された複数のサーバにより1つのサーバとして機能するように構成されたものであってもよい。
【0019】
図1に示すように、保管サーバ30は、通信IF32と、入出力IF33と、メモリ35と、ストレージ36と、プロセッサ39と、を備える。
【0020】
通信IF32は、保管サーバ30が外部の装置と通信するため、信号を入出力するためのインタフェースである。入出力IF33は、ユーザからの入力操作を受け付けるための入力装置、及びユーザに対し情報を提示するための出力装置とのインタフェースとして機能する。入出力IF33は、プログラム、及びプログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。メモリ35は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。ストレージ36は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。プロセッサ39は、メモリ35に記憶されたプログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。
【0021】
提供サーバ40は、暗号資産に関するサービスを提供する情報処理装置である。当該サービスは、例えば、Web3ウォレットのようなブロックチェーンを用いるサービスである。ブロックチェーンとしては、例えば、PLT(パレットトークン(登録商標))、ETH(イーサリアム)、MATIC(暗号資産ポリゴン)などの種々のブロックチェーンがある。提供サーバ40は、据え置き型のPC(Personal Computer)、ラップトップPCなどにより実現される。また、提供サーバ40は、データセンター等に構築された複数のサーバにより1つのサーバとして機能するように構成されたものであってもよい。
【0022】
<1.2.サーバ10の機能的な構成>
図2は、サーバ10の機能的な構成を示す図である。
図2に示すように、サーバ10は、通信部101と、記憶部102と、制御部103としての機能を発揮する。
【0023】
通信部101は、外部の装置と通信するための処理を行う。
【0024】
記憶部102は、使用するデータ及びプログラムを記憶する。
【0025】
具体的には、記憶部102は、第1DB(データベース)121、及び第2DB122、などを記憶する。
【0026】
以下に、
図3及び
図4に示すサーバ10が記憶する第1DB121及び第2DB122のデータ構造について説明する。なお、
図3及び
図4は、各データベースのデータ構造を示す図である。
【0027】
第1DB121は、ユーザの暗号資産のサービスに関する認証に必要な情報を保持するデータベースである。
図3に示すように、第1DB121は、項目「ID」と、項目「メールアドレス」と、項目「ウォレットID」と、項目「サービスID」と、を含む。
【0028】
項目「ID」は、ユーザを識別するための情報である。
【0029】
項目「メールアドレス」は、ユーザのメールアドレスである。
【0030】
項目「ウォレットID」は、ユーザの暗号資産についてのウォレットIDである。具体的には、ウォレットIDは、例えばウォレットアドレスである。
【0031】
項目「サービスID」は、ウォレットIDを利用できるサービスを識別するための情報である。具体的には、項目「サービスID」は、1つのウォレットIDに対して、1以上のサービスIDが格納される。
【0032】
第2DB122は、ユーザの鍵断片の認証に必要な情報を保持するデータベースである。
図4に示すように、第2DB122は、項目「ID」と、項目「認証情報」と、項目「アクセストークン」と、を含む。
【0033】
項目「ID」は、ユーザを識別するための情報である。
【0034】
項目「認証情報」は、サーバ10とユーザ端末20とが鍵断片をやり取りするための認証を行う際に用いる情報である。具体的には、項目「認証情報」は、認証がOIDC認証であれば、OIDCプロバイダのサーバ(図示しない)及びユーザ端末とのOIDC認証を行うために必要なデータが格納される。
項目「アクセストークン」は、アクセストークンを発行するために必要な情報が格納される。アクセストークンは、任意の方法で発行される。
【0035】
制御部103は、サーバ10のプロセッサがプログラムにしたがって処理を行うことにより、各種モジュールとして示す機能を発揮する。制御部103は、受信制御部131、送信制御部132、及び第1認証部133等を含む。
【0036】
受信制御部131は、サーバ10が外部の装置から通信プロトコルにしたがって信号を送受信する処理を制御する。
【0037】
送信制御部132は、サーバ10が外部の装置に対し通信プロトコルにしたがって信号を送信する処理を制御する。
【0038】
第1認証部133は、ログイン認証を行う。具体的には、第1認証部133は、暗号資産に関するサービスを提供する提供サーバ40から、ユーザ端末20から、当該サービスに対するログイン認証の要求を受け付ける。例えば、提供サーバ40は、ユーザ端末20から当該サービスにアクセスがあると、サーバ10に、当該ログイン認証をリダイレクトする。当該ログイン認証は、複数のサービスについてのシングルサインオンを行うためのログイン認証である。
【0039】
第1認証部133は、ログイン認証に基づいて、ユーザ端末20に対してログイン認証に必要な認証情報を要求する。認証情報は、当該サービスのログインに用いる認証情報である。そして、第1認証部133は、ユーザ端末20から、認証情報を取得すると、当該認証情報に基づいて、ログイン認証を行う。例えば、第1認証部133は、当該ログイン認証として、OIDC(OpenID Connect)認証を用いることができる。この場合、第1認証部133は、外部のOIDCプロバイダのサーバ(図示しない)に対して、当該ユーザのOIDC認証を求める。第1認証部133は、OIDCプロバイダのサーバと通信を行うことで、OIDC認証を行う。そして、第1認証部133は、OIDCプロバイダのサーバから認証結果を取得する。
【0040】
第1認証部133は、ログイン認証の結果を、提供サーバ40に送信する。また、第1認証部133は、ログイン認証が成功したことに応じて、アクセストークンを発行する。そして、第1認証部133は、ユーザ端末20に、アクセストークンを送信することにより、秘密鍵の復元を求める。
【0041】
<1.3.ユーザ端末20の機能的な構成>
図5は、ユーザ端末20の機能的な構成を示す図である。
図5に示すように、ユーザ端末20は、通信部201と、記憶部202と、記憶部202としての機能を発揮する。
【0042】
通信部201は、外部の装置と通信するための処理を行う。
【0043】
記憶部202は、使用するデータ及びプログラムを記憶する。記憶部202は、例えば、サービスにログインするための情報、鍵断片を取得するために各サーバ10と認証を行うための情報、鍵断片を復元するために必要な情報、秘密鍵に対応する公開鍵などを予め記憶する。
【0044】
制御部203は、ユーザ端末20のプロセッサがプログラムにしたがって処理を行うことにより、各種モジュールとして示す機能を発揮する。制御部203は、受信制御部231、送信制御部232、サービス部233、復元部234、及び暗号化部235等を含む。
【0045】
受信制御部231は、ユーザ端末20が外部の装置から通信プロトコルにしたがって信号を送受信する処理を制御する。
【0046】
送信制御部232は、ユーザ端末20が外部の装置に対し通信プロトコルにしたがって信号を送信する処理を制御する。
【0047】
サービス部233は、ユーザに提供サーバ40により提供されるサービスを利用させるための機能を発揮する。具体的には、サービス部233は、ユーザの操作により、当該サービスにアクセスする。次に、サービス部233は、当該サービスにログインする。当該サービスにログインすることにより、ユーザが当該サービスを利用することができるようになる。サービス部233は、例えば、当該サービスにログインするための機能、当該サービスをブラウザ、アプリケーション等により実行する。
【0048】
復元部234は、複数の鍵断片から、秘密鍵を復元する。具体的には、復元部234は、サービスにログインすると、サーバ10から、アクセストークンを取得する。復元部234は、サーバ群3に含まれる複数の保管サーバ30の各々に、当該保管サーバ30の保有するユーザの鍵断片を要求する。このとき、復元部234は、鍵断片の要求にアクセストークンを含める。復元部234は、複数の保管サーバ30の各々から、アクセストークンを用いた認証に成功することにより鍵断片を取得する。そして、復元部234は、取得した複数の鍵断片から、ユーザの秘密鍵を復元する。
【0049】
復元部234は、復元した秘密鍵を復号する。具体的には、復元部234が復元した秘密鍵は暗号化された秘密鍵であるため、当該暗号化された秘密鍵を復号する。このとき、復元部234は、ユーザに所定の操作を行わせることで、復号する処理を行うように構成されてもよい。所定の操作は、例えば、ユーザかパスコードの入力をする等の操作である。この場合、復元部234は、ユーザにパスコード入力画面を表示する。復元部234は、ユーザにより入力されたパスコードが正しい場合に、秘密鍵の復号を行う。
【0050】
また、復元部234は、ユーザ端末20が、ログイン認証によりログインしたことに対して、ログアウトした場合、秘密鍵を復元して所定期間を経過した場合などにおいて、復元した秘密鍵を破棄することもできる。
【0051】
暗号化部235は、ユーザの秘密鍵を暗号化する。具体的には、暗号化部235は、任意のタイミングでユーザの秘密鍵を、所定の暗号方式を用いて、暗号化する。暗号化部235は、例えば、ユーザの操作により、当該秘密鍵を暗号化する。暗号化部235は、暗号化した秘密鍵を、鍵断片に分割する。そして、暗号化部235は、鍵断片を、鍵断片を管理する各保管サーバ30に預ける。
【0052】
<1.4.保管サーバ30の機能的な構成>
図6は、保管サーバ30の機能的な構成を示す図である。
図6に示すように、保管サーバ30は、通信部301と、記憶部302と、制御部303としての機能を発揮する。
【0053】
通信部301は、外部の装置と通信するための処理を行う。
【0054】
記憶部302は、使用するデータ及びプログラムを記憶する。
具体的には、記憶部302は、第3DB(データベース)321などを記憶する。
【0055】
以下に、
図7に示す保管サーバ30が記憶する第3DB321のデータ構造について説明する。なお、
図7は、データベースのデータ構造を示す図である。
第3DB321は、ユーザの鍵断片を保持するデータベースである。
図7に示すように、第3DB321は、項目「ID」と、項目「鍵断片」と、項目「認証情報」と、を含む。
【0056】
項目「ID」は、ユーザを識別するための情報である。
【0057】
項目「鍵断片」は、保管サーバ30が保管するユーザにより暗号化された秘密鍵を分割した鍵断片である。ユーザの秘密鍵は、予めユーザ端末20により暗号化される。この暗号化された秘密鍵が、予め鍵断片に分割される。分割する方法は、任意の方法を用いることができる。
【0058】
項目「認証情報」は、保管サーバ30とユーザ端末20とが鍵断片をやり取りするための認証を行う際に用いる情報である。具体的には、項目「認証情報」は、サーバ10により生成されたアクセストークンが正しいものであるかを検証するために必要な情報が格納される。
【0059】
制御部303は、保管サーバ30のプロセッサがプログラムにしたがって処理を行うことにより、各種モジュールとして示す機能を発揮する。制御部303は、受信制御部331、送信制御部332、第2認証部333、及び鍵管理部334等を含む。
【0060】
受信制御部331は、保管サーバ30が外部の装置から通信プロトコルにしたがって信号を送受信する処理を制御する。
【0061】
送信制御部332は、保管サーバ30が外部の装置に対し通信プロトコルにしたがって信号を送信する処理を制御する。
【0062】
第2認証部333は、ユーザ端末20からの鍵断片の要求に応じて、前記ユーザ端末に対する認証を行う。
【0063】
具体的には、第2認証部333は、ユーザのユーザ端末から前記鍵断片の要求を受信すると、鍵断片の要求に含まれるアクセストークンの検証を行う。第2認証部333は、アクセストークンが、サーバ10によって発行された正しいものであるかどうかを検証する。
【0064】
なお、第2認証部333は、アクセストークン以外の方法で、ユーザ端末20との間で認証を行ってもよい。この場合、認証方法は、保管サーバ30毎に異なることが好ましい。これは、各保管サーバ30、例えば保管サーバ30Aと保管サーバ30Bとが、異なる事業者によって管理されているからである。同一の事業者によって保管サーバ30Aと保管サーバ30Bとが管理されている場合であっても、異なる認証方法としてもよい。また、保管サーバ30は、少なくとも他の保管サーバ30と異なる認証方法を採用してもよい。各保管サーバ30とユーザ端末20とは、予め当該認証を行うための情報が格納されており、それぞれの認証方法により通信を介して当該認証を行う処理が実行できるように構成すればよい。認証方法は、例えば、パスワード認証を用いることができる。保管サーバ30毎に認証方法を異ならせることにより、保管サーバ30の各々とユーザ端末20との間の1つが盗聴されたとしても、秘密鍵の復元は盗聴者に困難となる。これにより、単一の保管サーバで秘密鍵を保管することによるリスクを低減することができる。
【0065】
鍵管理部334は、第2認証部333による認証に成功したことに応じて、鍵断片をユーザ端末20に送信する。
【0066】
具体的には、鍵管理部334は、認証に成功したことに応じて第3DB321から鍵断片を取得する。そして、鍵管理部334は、当該鍵断片をユーザ端末20に送信する。
【0067】
<1.5.システム1の処理の流れ>
次に、システム1の処理の流れについて説明する。
【0068】
図8及び
図9は、システム1における処理の流れの一例を示す。
【0069】
ステップS601において、ユーザ端末20は、使用するブロックチェーンサービスにアクセスする。具体的には、ユーザ端末20は、所定のアプリケーションにより、使用するブロックチェーンサービスを提供する提供サーバ40にアクセスする。
【0070】
ステップS603において、提供サーバ40は、ログイン認証をサーバ10にリダイレクトする。具体的には、提供サーバ40は、ユーザ端末20から提供するサービスにアクセスがあると、ログイン認証を、予め定めたログイン認証を行うサーバ10にリダイレクトする。
【0071】
ステップS605において、サーバ10は、ユーザ端末20に、ログイン認証に必要な認証情報を要求する。
【0072】
具体的には、サーバ10は、提供サーバ40からログイン認証をリダイレクトされると、ユーザ端末20に、ログイン認証に必要な認証情報を要求する。
【0073】
ステップS607において、ユーザ端末20は、サーバ10に、認証情報を送信する。
【0074】
ステップS609において、サーバ10は、ログイン認証を行う。
【0075】
具体的には、サーバ10の第1認証部133は、外部のOIDCプロバイダのサーバに対して、当該ユーザのOIDC認証を求める。第1認証部133は、OIDCプロバイダのサーバと通信を行うことで、OIDC認証を行う。そして、第1認証部133は、OIDCプロバイダのサーバから認証結果を取得する。また、認証に成功した場合、第1認証部133は、アクセストークンを発行する。
【0076】
ステップS611において、サーバ10は、ログイン認証の結果を提供サーバ40に送信する。
【0077】
ステップS613において、サーバ10は、ユーザ端末20にアクセストークンを送信する。
【0078】
具体的には、サーバ10の第1認証部133は、ログイン認証の結果を、ログイン認証が成功したことに応じて、ユーザ端末20に、アクセストークンを送信することで、秘密鍵の復元を求める。
【0079】
ステップS615において、ユーザ端末20は、秘密鍵の復元処理を行う。詳細は後述する。
【0080】
ステップS617において、提供サーバ40は、ログイン認証が成功したことに応じて、ユーザ端末に、サービスを提供する。
【0081】
その後、ユーザは、ユーザ端末20が復元した秘密鍵を用いて、提供サーバ40により提供されるブロックチェーンサービスについて暗号資産を利用することができる。
【0082】
図9は、上記ステップS615における秘密鍵の復元処理を示すフローチャートである。
【0083】
ステップS701において、ユーザ端末20は、複数の保管サーバ30の各々に、当該サーバ10の保有する前記鍵断片を要求する。
【0084】
具体的には、ユーザ端末20の復元部234は、鍵断片を管理するサーバ群3に含まれる各保管サーバ30の各々に対し、アクセストークンと共に、当該ユーザの鍵断片を要求する。
【0085】
ステップS703において、保管サーバ30は、鍵断片の要求を受信する。
【0086】
ステップS705において、保管サーバ30は、ユーザ端末20に対する認証を行う。
【0087】
具体的には、保管サーバ30の第2認証部333は、ユーザ端末20から鍵断片の要求を受信したことに応じて、アクセストークンが、サーバ10によって発行された正しいものであるかどうかを検証する。
【0088】
ステップS707において、保管サーバ30は、認証に成功したことに応じて、鍵断片をユーザ端末に送信する。
【0089】
具体的には、保管サーバ30の第2認証部333は、検証結果が正しいことに応じて、第3DB321から鍵断片を取得する。そして、第2認証部333は、当該鍵断片をユーザ端末20に送信する。
【0090】
ステップS709において、ユーザ端末20は、複数の保管サーバ30の各々から、鍵断片を取得する。
【0091】
ステップS711において、ユーザ端末20は、複数の鍵断片から、暗号化された秘密鍵を復元する。
【0092】
具体的には、ユーザ端末20の復元部234は、全ての鍵断片を取得したことに応じて、暗号化された秘密鍵を復元する。
【0093】
ステップS713において、ユーザ端末20は、ユーザにパスコードの入力画面を表示する。
【0094】
ステップS715において、ユーザ端末20は、ユーザからパスコードの入力を受け付ける。
【0095】
ステップS717において、ユーザ端末20は、正しいパスコードが入力されたことに応じて、暗号化された秘密鍵を復号する。
【0096】
ステップS719において、ユーザ端末20は、秘密鍵の復元に成功したことに応じて、サーバ10に復元成功を送信する。
なお、ステップS615における復元処理は、ログイン認証が成功した後であれば、任意のタイミングで行って良い。
【0097】
<1.6.本開示の技術を用いた例>
次に、
図10を用いて、本開示の技術を用いた例を説明する。
図10は、本実施形態を説明するためのイメージ図である。
【0098】
図10において、ユーザ端末20は、ユーザAが操作するユーザ端末である。ユーザAは、ウォレットアドレス2つ有する。ウォレットアドレス0x111111は、X社で提供するブロックチェーンサービスで用いられる。ウォレットアドレス0x222222は、Y社で提供するブロックチェーンサービスで用いられる。
【0099】
X社は、ブロックチェーンサービスを複数提供する。提供サーバ40A及び提供サーバ40Bは、上記提供サーバ40に相当する。提供サーバ40Aは、ブロックチェーンサービスX1を、提供サーバ40BはブロックチェーンサービスX2をそれぞれ提供する。
【0100】
Y社は、ブロックチェーンサービスを複数提供する。提供サーバ40Cは、上記提供サーバ40に相当する。提供サーバ40Cは、ブロックチェーンサービスY1を提供する。
【0101】
図10の例において、ユーザAがブロックチェーンサービスX1にアクセスすると、サーバ10により、OIDCプロバイダ50との間でログイン認証が行われ、上記説明した処理が行われることで、ユーザ端末20が自動的に秘密鍵の鍵断片をサーバ群3から取得し、秘密鍵を復元する。
【0102】
ユーザAは、復元された秘密鍵を用いて、ブロックチェーンサービスX1を利用することができる。これにより、ユーザAは、複数の秘密鍵管理事業者のサーバにより、予めユーザ端末20により暗号化された秘密鍵が鍵断片に分割して管理されることにより、暗号資産の管理リスクを低減させると共に秘密鍵の管理する負担をかけないこととなる。
【0103】
また、ログイン認証は、シングルサインオンである。当該ログイン認証により、ユーザAは、ブロックチェーンサービスX1及びブロックチェーンサービスX2を使用することができる。ユーザAは、ログインしている間は、同一のウォレットIDで、復元された秘密鍵を用いて、同一の暗号資産についてブロックチェーンサービスX2を利用することができる。
【0104】
また、上記のシングルサインオンで、異なるウォレットアドレスで提供されるブロックチェーンサービスY1も使用することができるものとしてもよい。この場合、ユーザAは、ブロックチェーンサービスY1に切り替える処理を行えば、ログインしている間に、復元された秘密鍵を用いて、同一の暗号資産についてブロックチェーンサービスX2を利用することができる。特に、X社とY社のように、異なる企業ではウォレットアドレスを別に管理して欲しいという要望がある場合に、ユーザに秘密鍵管理の手間をかけさせずにサービスを切り替えることができるため、有用である。
【0105】
<1.7.小括>
以上説明したように、本開示の技術は、暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数の前記サーバを含む。本開示の技術は、サーバの記憶部は、ユーザのユーザ端末により暗号化された秘密鍵であって予め複数の鍵断片に分割したうちの1つの鍵断片を記憶するように構成されている。本開示の技術は、サーバが、ユーザのユーザ端末から鍵断片の要求を受信し、当該鍵断片の要求に応じて、ユーザ端末に対する認証を行う。本開示の技術は、サーバが、認証に成功したことに応じて、鍵断片をユーザ端末に送信する。本開示の技術は、ユーザ端末が、複数のサーバの各々に、当該サーバの保有する鍵断片を要求し、当該複数のサーバの各々から、鍵断片を取得して秘密鍵を復元する。
【0106】
これにより、ユーザは、秘密鍵を自己で管理する必要がない。また、鍵断片は分割される前に暗号化された秘密鍵であるため、鍵断片の通信路が盗聴されることなどにより他者に復元されてしまうというリスクを低減させることができる。よって、本開示の技術は、暗号資産の管理リスクを低減させると共に、ユーザに秘密鍵の管理する負担をかけないようにすることができる。
【0107】
また、本開示の技術は、サーバが鍵断片の要求に対する認証を行うことについて、他のサーバの少なくとも1つの他のサーバとは異なる認証方式で認証を行う。これにより、本開示の技術は、事業者間で異なる認証方式を用いることで、秘密鍵の管理の安全性を高めることができる。
【0108】
また、本開示の技術において、複数のサーバの各々は、異なる暗号資産の秘密鍵を管理する事業を行う者により管理されるサーバである。これにより、本開示の技術は、鍵断片を格納しているのは、異なる事業者により管理されているサーバであるため、1つの事業者により管理されることのリスクを低減させることができる。
【0109】
また、本開示の技術は、サーバが、暗号資産に関するサービスを提供する提供サーバから、ユーザ端末からサービスに対するログイン認証の要求を受け付け、ログイン認証に基づいて、ユーザ端末に対してログイン認証に必要な認証情報を要求する。本開示の技術は、サーバが、ユーザ端末から前記認証情報を取得し、当該認証情報に基づいて、ログイン認証を行う。また、本開示の技術のログイン認証は、複数のサービスについてのシングルサインオンを行うためのログイン認証である。これにより、ユーザは、1回のログインにより、復元された秘密鍵を用いて、同一の暗号資産について複数のブロックチェーンについてのサービスを利用することができるため、複数のサービスについて認証方法を管理しなくてよくなる。よって、本開示の技術は、ユーザに認証方法の管理の負担を軽減することができる。
【0110】
<2.変形例>
以上、本開示のいくつかの実施形態を説明したが、これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態、その変形は、発明の範囲、要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【0111】
上記の開示の技術は、サーバ群3のサーバ全てが鍵断片を記憶する構成としたが、これに限定されるものではない。例えば、サーバ群3の一部のサーバ(2以上)だけが鍵断片を記憶する構成としてもよい。
【0112】
また、上記の開示の技術は、サーバ群3のサーバ全ての鍵断片を用いて秘密鍵を復元する例を説明したが、これに限定されるものではない。例えば、複数のサーバのうち、いくつかのサーバによる鍵断片により秘密鍵が復元できるようにしてもよい。このような構成により、サーバ群3のうち1つのサーバ何らかの理由により使用できない場合(例えば、通信障害)であっても、ユーザは秘密鍵を復元することができる。
【0113】
また、サーバ群3のうち、1つの保管サーバ30が、サーバ10として構成されてもよい。この場合、当該保管サーバ30は、保管サーバ30の機能とサーバ10の機能とを併せ持つ。例えば、本変形例に係るシステムは、保管サーバ30Aに保管サーバ30及びサーバ10の機能を持たせ、保管サーバ30Bは、保管サーバ30の機能のみを持たせる、という構成を採用することができる。
【0114】
<付記>
以上の各実施形態で説明した事項を、以下に付記する。
<付記1>
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、前記サーバは、プロセッサと記憶部とを備え、前記サーバを動作させるためのプログラムであって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記プログラムは、前記プロセッサに、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、を実行させるプログラム。
【0115】
<付記2>
前記認証を行うステップにおいて、前記複数のサーバのうち、少なくとも1つの他のサーバとは異なる認証方式で認証を行う、
<付記1>に記載のプログラム。
【0116】
<付記3>
前記事業者は、暗号資産の秘密鍵を管理する事業を行う者である、
<付記1又は<付記2>に記載のプログラム。
【0117】
<付記4>
前記鍵断片の要求に、前記ユーザ端末が暗号資産に関するサービスに対するログイン認証に成功したことを示す情報が含まれており、
前記認証を行うステップにおいて、前記ログイン認証に成功したことを示す情報を用いて、前記認証を行うステップと、
を実行させる<付記1>に記載のプログラム。
【0118】
<付記5>
前記ログイン認証に成功したことを示す情報は、前記ログイン認証を行うサーバにより発行されるトークンを含み、
前記認証を行うステップにおいて、前記トークンを用いて前記ユーザ端末に対する認証を行う、 <付記4>に記載のプログラム。
【0119】
<付記6>
前記ログイン認証は、複数の前記サービスについてのシングルサインオンを行うためのログイン認証である、
を実行させる<付記4>又は<付記5>に記載のプログラム。
【0120】
<付記7>
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、プロセッサと記憶部とを備える前記サーバであって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記サーバの制御部が、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、を実行するサーバ。
【0121】
<付記8>
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、プロセッサと記憶部とを備える前記サーバが実行する方法であって、
前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記プロセッサが、
前記ユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、
を実行する方法。
【0122】
<付記9>
暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、
前記システムは、複数のサーバと、前記ユーザのユーザ端末とを含み、
前記サーバの記憶部は、前記ユーザのユーザ端末によって暗号化された秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、
前記サーバの制御部が、
前記ユーザのユーザ端末から前記鍵断片の要求を受信するステップと、
前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、
前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、
前記ユーザ端末の制御部が、
前記複数のサーバの各々に、前記サーバの保有する前記鍵断片を要求するステップと、
前記複数のサーバの各々から、前記鍵断片を取得するステップと、
複数の前記鍵断片から、暗号化された前記秘密鍵を復元するステップと、
前記暗号化された前記秘密鍵を復号するステップと、
を実行するシステム。
【符号の説明】
【0123】
1 システム、3 サーバ群、10 サーバ、12 通信IF、13 入出力IF、15 メモリ、16 ストレージ、20 ユーザ端末、22 通信IF、23 入出力IF、25 メモリ、26 ストレージ、30 保管サーバ、32 通信IF、33 入出力IF、35 メモリ、36 ストレージ、40 提供サーバ、80 ネットワーク、101 通信部、102 記憶部、103 制御部、121 第1DB、122 第2DB、131 受信制御部、132 送信制御部、133 第1認証部、201 通信部、202 記憶部、203 制御部、231 受信制御部、232 送信制御部、233 サービス部、234 復元部、235 暗号化部、301 通信部、302 記憶部、303 制御部、331 受信制御部、321 第3DB、332 送信制御部、333 第2認証部、334 鍵管理部。
【要約】
【課題】暗号資産の管理リスクを低減させると共に、ユーザに秘密鍵の管理する負担をかけないようにすることができるようにする。
【解決手段】暗号資産の管理においてブロックチェーンに用いるユーザの秘密鍵を管理するシステムであって、前記システムは、複数のサーバを含み、前記サーバは、プロセッサと記憶部とを備え、前記サーバを動作させるためのプログラムであって、前記記憶部は、前記ユーザのユーザ端末によって暗号化された前記秘密鍵であって予め複数の鍵断片に分割したうちの1つの前記鍵断片を記憶するように構成されており、前記プログラムは、前記プロセッサに、前記ユーザ端末から前記鍵断片の要求を受信するステップと、前記鍵断片の要求に応じて、前記ユーザ端末に対する認証を行うステップと、前記認証に成功したことに応じて、前記鍵断片を前記ユーザ端末に送信するステップと、を実行させる。
【選択図】
図9