(57)【要約】【課題】シェア分散システムを提供する。【解決手段】第１のコンピュータデバイスによって実行される方法は、秘密情報に基づいて、ｎ個のシェアを生成するステップであって、秘密情報は、ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２である、ステップと、ｎ個のシェアに対応するｎ個の第１の識別番号を生成するステップと、共通鍵を使用して、ｎ個のシェアを暗号化するステップと、ｎ個の第１の識別番号、および暗号化したｎ個のシェアを記憶装置に記憶するステップと、ｎ個の第１の識別番号および共通鍵を、第２のコンピュータデバイスに送信するステップを備える。【選択図】図６
2020191552.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータデバイスによって実行される方法であって、
秘密情報に基づいて、ｎ個のシェアを生成するステップであって、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２である、ステップと、
前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成するステップと、
共通鍵を使用して、前記ｎ個のシェアを暗号化するステップと、
前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを記憶装置に記憶するステップと、
前記ｎ個の第１の識別番号および前記共通鍵を、第２のコンピュータデバイスに送信するステップと
を備えたことを特徴とする方法。
【請求項２】
前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを記憶するステップは、前記ｎ個の第１の識別番号のそれぞれと、前記暗号化したｎ個のシェアのそれぞれを１対１で記憶するステップを含む請求項１に記載の方法。
【請求項３】
前記ｎ個の第１の識別番号のうちのいずれか、および前記ｎ個の暗号化したシェアのうち少なくともｋ個の暗号化したシェアを前記記憶装置から読み出すステップと、
前記読み出した第１の識別番号によって、前記第２のコンピュータデバイスに前記共通鍵を要求するステップと、
前記共通鍵を前記第２のコンピュータデバイスから受信するステップと、
前記共通鍵を使用して、前記ｋ個の暗号化したシェアを復号するステップと
をさらに備えたことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記秘密情報に基づいて、前記秘密情報に対応する第２の識別番号を生成するステップと、
前記第２の識別番号を前記第２のコンピュータデバイスに送信するステップと、
前記第２の識別番号の入力を受け付けるステップと、
前記読み出した第１の識別番号と共に、前記受け付けた第２の識別番号によって、前記第２のコンピュータデバイスに前記共通鍵を要求するステップと、
をさらに備えたことを特徴とする請求項３に記載の方法。
【請求項５】
第１のコンピュータデバイスであって、
秘密情報に基づいて、ｎ個のシェアを生成し、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２であり、
前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成し、
共通鍵を使用して、前記ｎ個のシェアを暗号化し、
前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを記憶装置に記憶する
ように構成された制御装置と、
前記ｎ個の第１の識別番号、および前記共通鍵を、第２のコンピュータデバイスに送信するように構成された通信装置と
を備えたことを特徴とする第１のコンピュータデバイス。
【請求項６】
第１のコンピュータデバイスおよび第２のコンピュータデバイスを含むシェア分散システムによって実行される方法であって、
前記第１のコンピュータデバイスによって、
秘密情報に基づいて、ｎ個のシェアを生成するステップであって、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２である、ステップと、
前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成するステップと、
共通鍵を使用して、前記ｎ個のシェアを暗号化するステップと、
前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを第１の記憶装置に記憶するステップと、
前記ｎ個の第１の識別番号および前記共通鍵を、第２のコンピュータデバイスに送信するステップと、
前記第２のコンピュータデバイスによって、
前記ｎ個の第１の識別番号および前記共通鍵を受信するステップと、
前記ｎ個の第１の識別番号および前記共通鍵を、前記秘密情報と関連付けて第２の記憶装置に記憶するステップと
を備えたことを特徴とする方法。
【請求項７】
第１のコンピュータデバイスおよび第２のコンピュータデバイスを備えたシェア分散システムであって、
前記第１のコンピュータデバイスは、
秘密情報に基づいて、ｎ個のシェアを生成し、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２であり、
前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成し、
共通鍵を使用して、前記ｎ個のシェアを暗号化し、
前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを第１の記憶装置に記憶し、
前記ｎ個の第１の識別番号および前記共通鍵を、第２のコンピュータデバイスに送信するように構成され、
前記第２のコンピュータデバイスは、
前記ｎ個の第１の識別番号および前記共通鍵を受信し、
前記ｎ個の第１の識別番号および前記共通鍵を、前記秘密情報と関連付けて第２の記憶装置に記憶するように構成されている
ことを特徴とするシェア分散システム。
【請求項８】
コンピュータ実行可能命令を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、コンピュータによって実行されると、前記コンピュータに請求項１乃至４のいずれか一項に記載の方法を実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、シェア分散システムおよび方法に関し、特に、秘密情報を復元するための秘密情報復元可能値（シェア）を暗号化して記憶することによって、セキュリティを確保するシェア分散システムおよび方法に関する。
【背景技術】
【０００２】
インターネットなどの公衆ネットワークを通じてオンライン上で取引を行うコンピュータシステムが利用されている。上述したコンピュータシステムの例は、ピアツーピア（Ｐ２Ｐ）型の決済網であるビットコイン（Bitcoin）と称される仮想通貨管理システムなどを含む。ビットコインにおいては、対になる２つの鍵を利用してデータの暗号化および復号を行う公開鍵暗号方式が利用される。
【０００３】
以下では、ビットコインでの仮想通貨の送金処理の流れを簡単に説明する。（１）まず、仮想通貨を支払う側（送金元）が公開鍵および秘密鍵のペアを生成する。（２）送金元が公開鍵からアドレス（口座番号）を生成する（このアドレスの集合が「ウォレット（財布）となる」）。（３）送金元が送金情報（送信するビットコイン、アドレス等のトランザクション履歴情報）に自身の秘密鍵を使用して署名する。（４）送金元がＰ２Ｐネットワークに送金情報をブロードキャストする（５）仮想通貨を受け取る側（送金先）が取引内に含まれる公開鍵および署名済みの送金情報を照合して取引が正しいことを検証する。
【０００４】
ビットコインでは、送金元のみが知り得る秘密鍵を使用して送金情報が署名されるので、その秘密鍵は高度なレベルで秘密に管理される必要がある。このことから、ビットコインの仕組みでは、秘密鍵をどのように管理するかという課題が存在する。秘密鍵は、セキュリティ面を考慮し一般的にはランダムな英数字による６４桁の秘密鍵が使われているので、その秘密鍵が分からなくなってしまうと、そのアドレスにあるビットコインは二度と使用できなくなる。よって、様々なデバイスやサービスを使用して秘密鍵の管理を行う利用者が存在する。例えば、ビットコインの使用用途に合わせて複数の口座を所持し、利便性やセキュリティ性などを考慮してそれぞれ異なる方法で管理している利用者が存在する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１９−０５０４８０号公報
【非特許文献】
【０００６】
【非特許文献１】土井 洋、「秘密分散法とその応用について」、情報セキュリティ総合科学、第4巻、［online］、2012年11月、情報セキュリティ大学院大学、［平成29年8月30日検索］、インターネット〈URL：https://www.iisec.ac.jp/proc/vol0004/doi.pdf〉
【非特許文献２】G. R. Blakley, Safeguarding cryptographic keys, Proc. of the National Computer Conference, Vol.48, pp.313-317, 1979, 〈URL：https://www.computer.org/csdl/proceedings/afips/1979/5087/00/50870313.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ビットコインを利用する上で、利用者は、Ｐ２Ｐネットワークに接続されたコンピュータ端末（スマートフォン、タブレットコンピュータおよびパーソナルコンピュータなど）を使用する必要がある。それらの端末がネットワークに接続される以上、悪意のある第三者がコンピュータ端末に不正アクセスすることなどによって、秘密鍵が第三者に漏洩する危険性を完全に排除することはできない。
【０００８】
非特許文献１は、Ｓｈａｍｉｒの閾値法を開示している。Ｓｈａｍｉｒの閾値法では、秘密情報に基づいてｎ個の一意なシェアが生成され、それらの一意なシェアがｎ人の共有者に渡される。そして、ｎ個のうちｋ個（ｋ＜ｎ）のシェアを使用することによって、元の秘密情報を復元することができる。つまり、ｎ−ｋのシェアが漏洩しても、残りのｋ個のシェアを使用して秘密情報を復元することができる。このことは、ｋ−１のシェアを使用しても情報を復元することができないことを意味する。この技術を使用することによって、秘密情報を復元するためのシェアを分散させることができる。
【０００９】
しかしながら、シェアを分散させても、例えば、それらのシェアをネットワークに接続された記憶装置に記憶した場合、第三者が当該記憶装置に不正アクセスすることによってｋ個のシェアが漏洩する危険性がある。このことから、非特許文献１に開示された技術を使用しても、秘密情報を適切に保護することはできない場合がある。特に、ｋ個のシェアを同一のＬＡＮに位置する記憶装置に記憶した場合、第三者がそのＬＡＮの入口となるＧａｔｅｗａｙ（Ｆｉｒｅｗａｌｌ）を通過することによって、ｋ個の全てのシェアが容易に当該第三者に漏洩する可能性がある。
【００１０】
特許文献１は、（ｋ，ｎ）閾値法を使用して、シェアを分散して記憶した技術を開示している。特許文献１に開示されたシステムによれば、物理的に別個の記憶装置にシェアを分散して記憶するので、ｋ−１個のシェアが漏洩した場合でも秘密情報を保護することができる。しかしながら、特許文献１に開示された技術では、分散されたシェアを暗号化するわけではない。例えば、特許文献１に開示された技術に従って、ＲＦＩＤカードなどに記憶した場合、スキミングによって記憶したシェアが漏洩する可能性があり、特に、ｋ個のシェアが漏洩した場合、秘密情報を保護することができない。
【００１１】
少なくともｋ個のシェアを暗号化して記憶することによって、上述した問題を解決することができる。しかしながら、シェアを暗号化する場合、暗号化するための暗号鍵が必要になり、その鍵を保護および管理する必要が生じる。
【課題を解決するための手段】
【００１２】
実施形態に係る方法は、第１のコンピュータデバイスによって実行される方法であって、秘密情報に基づいて、ｎ個のシェアを生成するステップであって、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２である、ステップと、前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成するステップと、共通鍵を使用して、前記ｎ個のシェアを暗号化するステップと、前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを記憶装置に記憶するステップと、前記ｎ個の第１の識別番号および前記共通鍵を、第２のコンピュータデバイスに送信するステップとを含む。
【００１３】
また、実施形態に係るコンピュータデバイスは、第１のコンピュータデバイスであって、秘密情報に基づいて、ｎ個のシェアを生成し、前記秘密情報は、前記ｎ個のシェアのうちの少なくともｋ個のシェアを使用して復元可能であり、ｎ＞＝ｋ＞＝２であり、前記ｎ個のシェアに対応するｎ個の第１の識別番号を生成し、共通鍵を使用して、前記ｎ個のシェアを暗号化し、前記ｎ個の第１の識別番号、および前記暗号化したｎ個のシェアを記憶装置に記憶するように構成された制御装置と、前記ｎ個の第１の識別番号、および前記共通鍵を、第２のコンピュータデバイスに送信するように構成された通信装置とを含む。
【発明の効果】
【００１４】
実施形態に係るシェア分散システムによれば、シェアが第三者に取得され、秘密情報が漏洩することを防止することができる。また、シェアを暗号化した鍵を安全かつ簡易に管理することができる。
【図面の簡単な説明】
【００１５】
【図１】従来技術に従った（ｋ，ｎ）閾値法に従って算出した秘密鍵の値に対応する座標を通るグラフを示す。
【図２】従来技術に従った（ｋ，ｎ）閾値法に従って算出した秘密鍵の値に対応する座標を通るグラフを示す。
【図３】従来技術に従った（ｋ，ｎ）閾値法に従って算出した秘密鍵の値に対応する座標を通るグラフを示す。
【図４】実施形態に係るシェア分散システムを構成するコンピュータシステム全体の構成の例を示す図である。
【図５】実施形態に係るシェア分散システムを構成するコンピュータ端末の詳細な構成の例を示す図である。
【図６】実施形態に係るシェア生成処理の例を示す図である。
【図７】実施形態に係る鍵管理データテーブルの例を示す図である。
【図８】実施形態に係る秘密情報復元処理の例を示す図である。
【００１６】
以下、添付図面を参照して、実施形態に係るシェア分散システムを詳細に説明する。実施形態に係るシェア分散システムは、従来技術に従ったＳｈａｍｉｒの閾値法（秘密分散法）を利用することによって、シェア（シェア）を分散している。ここで、Ｓｈａｍｉｒの閾値法は、秘密情報を復元することができるシェアの数であるｋ（閾値）、およびそのシェアを分散する数であるｎ（シェア数）を定めている。上記に加え、本発明に係るシェア分散システムは、情報を復元することができる／できない集合を任意に定めることができる、いずれかの他の秘密分散法を利用してもよい（非特許文献２を参照）。
【００１７】
まず、従来技術に従ったＳｈａｍｉｒの閾値法の概要を、図１乃至図３を参照して説明する。Ｓｈａｍｉｒの閾値法（以下、「（ｋ，ｎ）閾値法」と称する）では、秘密情報であるＳに対し、その秘密情報Ｓをｎ人で共有することを前提とする。そのｎ人のそれぞれには、所定の多項式を使用して生成されたｎ個のシェアがそれぞれ渡され、そのうちｋ個のシェアによって秘密情報Ｓを復元することができる。つまり、生成されたｎ個のシェアをｎ人の間で共有し、そのうちｋ人が有するｋ個のシェアを使用することによって秘密情報Ｓを復元することができる。本明細書では、このｎの数をシェア数と称し、ｋの数を閾値と称する。
【００１８】
シェアを生成する際は、定数項をＳとする任意のｋ−１次多項式を使用する。ここで、ｋを３とし、ｎを４とし（つまり、４個のシェアを生成し、そのうち３個のシェアを使用することによって、秘密情報Ｓを復元することができる）、秘密情報を９とする。よって、ｋ−１次多項式、つまり定数項を９とする任意の２次多項式を使用することになる。例えば、第１の項の係数に２、第２の項に係数７を使用して、式（１）
ｆ（ｘ）＝２ｘ2−７ｘ＋９                                          式（１）
とする。
【００１９】
ｎ＝４個のシェアを生成する際に、シェア番号として｛１，２，３，４｝を割り当て、ｆ（１）、ｆ（２）、ｆ（３）およびｆ（４）として式（１）に当てはめると、ｎ個のシェアの値の集合、ｎ＝｛（１，４），（２，３），（３，６），（４，１３）｝が算出される。
【００２０】
図１は、上述したように算出されたシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図１に示す曲線は、４個のシェアの値に対応する４箇所の座標を通っている。この曲線が、式（１）の２次多項式を表わしている。（ｋ，ｎ）閾値法では、ｎ＝４個のうちｋ＝３個のシェアを使用することによって秘密情報を復元することができる。つまり、図１に示す４箇所の座標のうち、任意の３箇所の座標を通ることによっても、同様の曲線を描くことができる。一方で、ｋ−１個のシェアを使用することによっては、秘密情報を復元することができない。つまり、図１に示す４箇所の座標のうち、任意の２箇所の座標を通ることによっては、同様の曲線を描くことができない。
【００２１】
図２は、ｋ＝３個のシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図２から理解できるように、閾値であるｋ＝３箇所の座標が分かれば、図１に示す曲線と同一の曲線を描くことができる。図３は、ｋ−１＝２個のシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図２から理解できるように、閾値ｋ−１＝２の箇所の座標のみでは、破線で示す曲線なども描くことができ、必ずしも、図１に示す曲線と同一の曲線を描くことができない。つまり、ｋ−１（２）個のシェアを使用することによっては、式（１）に示した２次多項式を導出することができず、ひいては、秘密情報Ｓを復元することができない。
【００２２】
ｋ個のシェアの値からは、多項式補間を使用することによって秘密情報を復元することができるが、その具体的な算出式を以下に示す。まず、閾値ｋ＝３であることから、シェアを生成する多項式がｙ＝ｘ2＋ｘ＋定数項である２次多項式であることが分かる。そして、各項の係数をａ、ｂおよびｃに置換え、ｙ＝ａ2＋ｂ＋ｃとし、ｋ＝３個のシェアの値の集合、ｋ＝｛（１，４），（２，３），（３，６）｝を代入し、それぞれ、以下のように式（２）乃至式（４）を導出することができる。
ｃ＝−ａ−ｂ＋４                                                    式（２）
ｃ＝−４ａ−２ｂ＋３                                                式（３）
ｃ＝−９ａ−３ｂ＋６                                                式（４）
【００２３】
次に、式（２）を式（３）および式（４）にそれぞれ代入すると、以下のように式（５）および式（６）を介してａ（つまり、式（１）に示した２次多項式の第１の項の係数）を導出することができる。
３ａ＝−ｂ−１                                                      式（５）
８ａ＝−２ｂ＋２                                                    式（６）
ａ＝２
【００２４】
上記式から係数ａの値を導出することができたので、導出したａの値を式（２）および式（３）に代入すると、以下のように式（７）および式（８）を介してｂ（つまり、式（１）に示した２次多項式の第２の項の係数）を導出することができる。
ｃ＝−ｂ＋２                                                        式（７）
ｃ＝−２ｂ−５                                                      式（８）
ｂ＝−７
【００２５】
最後に、導出した係数ａの値および係数ｂの値を式（２）に代入することによって、ｃ＝９（つまり、式（１）に示した２次多項式の定数項の値）を導出することができる。
【００２６】
以上のようにして導出した係数の値を２次多項式に代入すると、式（１）に示した２次多項式、つまり、秘密情報Ｓを復元することができることが分かる。この秘密情報Ｓを復元する具体的な式は、例えば、非特許文献１に開示されているように公知であるので、本明細書では具体的な説明は行わない。
【００２７】
実施形態に係るシェア分散システムは、上述した（ｋ，ｎ）閾値法を含むいずれかの秘密分散法を使用してｎ個のシェアを生成し、ｋ個のシェアを使用して、秘密情報を復元する。（ｋ，ｎ）閾値法では、ｎ＞ｋであるが、使用する秘密分散法によっては、ｎ＝ｋの場合もあり、そのような場合も本発明に係るシェア分散システムが適用することができることに留意されたい。
【００２８】
以下、本明細書では、秘密分散法を使用してｎ個のシェアを生成する際に使用する算出式を、秘密情報復元可能値（シェア）生成式と称する。また、生成したｎ個のシェアのうちｋ個のシェアを使用して秘密情報を復元する際に使用する算出式を秘密情報復元式と称する。本発明に係るシェア分散システムが（ｋ，ｎ）閾値法を利用する場合、シェア生成式および秘密情報復元式はそれぞれ、非特許文献１に示す算出式が使用されてもよい。（ｋ，ｎ）閾値法に加え、本発明に係るシェア分散システムが他の秘密分散法を利用する場合、その秘密分散法に対応する、シェア生成式および秘密情報復元式がそれぞれ使用されてもよい。
【００２９】
次に、図４を参照して、実施形態に係るシェア分散システム１０を構成するコンピュータシステム全体の構成の例を示している。シェア分散システム１０は、第三者への漏洩を防止する必要がある秘密情報を管理し、利用者に使用させるためのスキームを提供する。例えば、シェア分散システム１０は、特定のコンピュータシステムにおいて使用される、認証用の識別番号およびパスワードなどを管理するために使用される。
【００３０】
以下の実施形態では、ビットコインなど、仮想通貨を使用した決済サービスを提供するコンピュータシステム（以下、決済システム）において使用される秘密鍵を管理する例を説明する。この例では、シェア分散システム１０は、決済システムと連動する。本明細書では、シェア分散システム１０のみを説明する。
【００３１】
図４に示すように、シェア分散システム１０は、コンピュータ端末１およびサーバコンピュータ２を含む。コンピュータ端末１およびサーバコンピュータ２は、ネットワーク３（インターネットなどの公衆ネットワーク）を通じて接続される。
【００３２】
コンピュータ端末１は、シェア分散システム１０を実装するコンピュータデバイスである（第１のコンピュータデバイス）。コンピュータ端末１は、例えば、スマートフォン、タブレットコンピュータ、およびパーソナルコンピュータなどによって実装されてもよい。利用者は、コンピュータ端末１を使用して所定の情報を入力することによって、ｎ個のシェアを生成し、そのうちｋ個のシェアを使用して秘密情報を復元する。
【００３３】
サーバコンピュータ２も、シェア分散システム１０を実装するコンピュータデバイスである（第２のコンピュータデバイス）。サーバコンピュータ２は、ホストコンピュータなど、演算機能および通信機能を有するコンピュータデバイスによって実装されてもよい。サーバコンピュータ２は、コンピュータ端末１がシェアを暗号化するために使用される共通鍵を管理する。コンピュータ端末１は、秘密情報を復元するときに、サーバコンピュータ２から共通鍵を取得する。
【００３４】
次に図５を参照して、シェア分散システム１０を構成するコンピュータ端末１およびサーバコンピュータ２の詳細な構成の例を説明する。コンピュータ端末１は、制御装置１１、メモリ１２、記憶装置１３、通信装置１４、入力デバイス１５、入力ドライバ１６、出力デバイス１７、および出力ドライバ１８を含む。それらの構成要素は、内部バスを介して相互に結合される。
【００３５】
制御装置１１は、プロセッサなどで実装され、中央処理装置（ＣＰＵ）、グラフィックプロセシングユニット（ＧＰＵ）、および１つもしくは複数の制御装置コアを含んでもよい。制御装置１１は、記憶装置１３に記憶された所定のプログラム（ＯＳおよびアプリケーションプログラム）を実行することによって、コンピュータ端末１の動作を制御する。メモリ１２は、揮発性または不揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、またはキャッシュメモリを含んでもよい。メモリ１２は、制御装置１１が実行するプログラムデータを一時的に記憶する。
【００３６】
記憶装置１３は、コンピュータ端末１に内蔵された記憶装置である。記憶装置１３は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、およびフラッシュドライブを含んでもよい。記憶装置１３は、生成されたｎ個のうちのいずれかのシェアを記憶してもよい。通信装置１４は、ネットワークインタフェースカード（例えば、ＬＡＮカード）などで実装され、ネットワーク３を介してサーバコンピュータ２とデータを送受信する。通信装置１４はまた、以下で説明するように、シェアをＲＦＩＤカードに記憶する場合、ＲＦＩＤカードに付されたＩＣタグに向かって電波を送信するＲＦＩＤアンテナ、およびその電波を受信するＲＦＩＤリーダを含む。
【００３７】
入力デバイス１５は、利用者によって所定の情報を入力するために使用される入力デバイスである、入力デバイス１５は、キーボード、キーパッド、タッチスクリーン、タッチパッド、マイクロフォン、加速度計、ジャイロスコープ、および生体スキャナなどを含んでもよい。入力デバイス１５は、入力ドライバ１６を介して、利用者による入力を受信し、それを制御装置１１と通信する。
【００３８】
出力デバイス１７は、コンピュータ端末１が所定のプログラムを実行した結果を表示するために使用される出力デバイスである。出力デバイス１７は、ディスプレイ、スピーカ、およびプリンタなどを含んでもよい。出力デバイス１７は、出力ドライバ１８を介して制御装置１１からの出力を受信し、それを出力する（ディスプレイを介した視覚的出力、スピーカを介した音声出力など）。
【００３９】
コンピュータ端末１には、外部記憶装置１９が接続される。外部記憶装置１９は、例えば、ＵＳＢメモリおよびＳＤカードなどのフラッシュメモリ、ＣＤ−ＲＯＭおよびＤＶＤなどの光学記憶媒体、フロッピーディスクなどの磁気記憶媒体など、コンピュータ端末１に着脱可能であり、かつ不揮発性の記憶装置を含む。この場合、外部記憶装置１９がコンピュータ端末１に接続されると、入力ドライバ１６を介して外部記憶装置１９からの情報が制御装置１１と通信される。また、制御装置１１からの出力が出力ドライバ１８を介して外部記憶装置１９に出力（記憶）される。
【００４０】
外部記憶装置１９はまた、接触型ＩＣカードまたは非接触型ＩＣカード、例えば、ＲＦＩＤカードなど、コンピュータ端末１と通信可能であり、不揮発性の記憶領域を有する記憶装置を含む。この場合、例えば、通信装置１４は、外部記憶装置１９に付されたＩＣタグに電波を送信し、ＩＣタグから送信された応答信号を受信することによって通信を開始し、制御装置１１からの出力が通信装置１４を介して外部記憶装置１９に出力（記憶）される。
【００４１】
上述したように、外部記憶装置１９の例を説明したが、外部記憶装置１９は、上述した記憶装置に限定されず、コンピュータ端末１とは物理的に独立し、情報を永続的に記憶することが可能な任意の記憶装置（記憶媒体）またはコンピュータ端末を含む。例えば、外部記憶装置１９は、コンピュータ端末１とは独立した、不揮発性の記憶領域を有するコンピュータ端末であってもよい。
【００４２】
サーバコンピュータ２は、制御装置２１、メモリ２２、記憶装置２３、および通信装置２４を含む。それらの構成要素は、内部バスを介して相互に結合される。
【００４３】
制御装置２１は、制御装置１１と同様にＣＰＵなどで実装される。制御装置２１は、記憶装置２３に記憶された所定のプログラムを実行することによって、サーバコンピュータ２の動作を制御する。メモリ２２は、メモリ１２と同様に、揮発性または不揮発性メモリなどを含み、制御装置２１が実行するプログラムデータを一時的に記憶する。
【００４４】
記憶装置２３は、記憶装置１３と同様に内蔵された記憶装置である。記憶装置２３は、サーバコンピュータ２が実装するＤＢＭＳのデータベーステーブル２３ａを記憶している。通信装置２４は、通信装置１４と同様に、ＬＡＮカードなどで実装され、ネットワーク３を介してコンピュータ端末１とデータを送受信する。
【００４５】
シェア分散システム１０は、決済システムなどの所定のコンピュータシステムと連動することは上述した通りである。つまり、コンピュータ端末１上で、当該所定のコンピュータシステムが提供するアプリケーションプログラムが実行される。シェア分散システム１０は、コンピュータ端末１上で実行されるアプリケーションプログラムに対応するサービスごとに独立して実行されることが望ましい。
【００４６】
例えば、コンピュータ端末１がＡｐｐｌｅ（登録商標）社製のオペレーティングシステム「ｉＯＳ（登録商標）」を実行する場合（ｉＰｈｏｎｅ（登録商標）など）、記憶装置１３が、サービスごとに論理的に独立した記憶領域を構成することになる。この場合、例えば、コンピュータ端末１が複数のアプリケーションプログラムを実行し、各アプリケーションプログラムがシェア分散システム１０と連動する場合、アプリケーションプログラムに対応するサービスごとに論理的に独立した記憶領域を使用することができる。このことは、後述するシェアを記憶装置１３に記憶する際に、実行するアプリケーションプログラムごとに論理的に独立した領域に記憶することができることを意味し、セキュリティがより高まることになる。
【００４７】
コンピュータ端末１がｉＯＳ以外のオペレーティングシステムを実行する場合（Ｗｉｎｄｏｗｓ（登録商標）およびＡｎｄｒｏｉｄ（登録商標）など）、例えば、コンテナ型仮想化技術を使用することによって、サービスごと、またはユーザごとに記憶領域を独立させることができる。このように、複数のアプリケーションプログラムを実行し、各アプリケーションプログラムがシェア分散システム１０と連動する場合、独立した記憶領域を実装することによって、さらなるセキュリティを確保することができる。
【００４８】
次に、図６を参照して、シェア分散システム１０が実行するシェア（シェア）生成処理の例を説明する。本実施形態では、シェア分散システム１０が、ビットコインなどの仮想通貨を使用した決済サービスを提供するコンピュータシステム（以下、決済システム）と連動する例を説明する。この例では、仮想通貨を使用して決済（送金）を行う場合、利用者（送金元）が秘密鍵を生成し、生成した秘密鍵を使用して仮想通貨のトランザクション履歴情報の署名を行なう。秘密鍵は、決済システムによって生成されてもよく、またはシェア分散システム１０によって生成されてもよい。
【００４９】
シェア分散システム１０は、セキュリティ管理されることになる秘密鍵に基づいてｎ個のシェアを生成し、ｎ個のシェアを記憶装置１３および／または外部記憶装置１９に記憶する。よって、本実施形態では、秘密情報は、決済での署名に使用される秘密鍵に相当する。以下の説明では、決済での署名に使用される秘密鍵を、単に秘密鍵と称する。
【００５０】
図６で説明する処理は、コンピュータ端末１の制御装置１１が所定のプログラムを実行し、サーバコンピュータ２の制御装置２１が所定のプログラムを実行することによって実行される。ステップ６１では、制御装置１１は、決済アプリケーションを実行することによって秘密鍵を生成する。この処理は、決済サービスにおいて仮想通貨の送金を行う際に使用する秘密鍵を生成する処理を含む。生成された秘密鍵は、メモリ１２および／または記憶装置１３に記憶される。なお、上述したように、秘密鍵は、決済システムによって生成されてもよい。
【００５１】
ステップ６２では、制御装置１１は、ステップ６１で生成した秘密鍵に基づいて、上述したシェア生成式を使用して、（ｎ）個のシェアを生成する。生成されたシェアは、メモリ１２および／または記憶装置１３に記憶される。上述したように、ｎ個のシェアのうちｋ個のシェアによって、ステップ６１で生成した秘密鍵を復元することができる。
【００５２】
ステップ６３では、制御装置１１は、ｎ個のＵＵＩＤを生成する。ＵＵＩＤは、コンピュータ端末１が実行するアプリケーションプログラムに対応するサービスごとにオブジェクトを一意に識別する番号である。つまり、ＵＵＩＤは、少なくとも上述したサービスごとに、ステップ６２で生成した全てのシェアに対応して一意な番号を有する（ステップ６２で生成したシェアごとに異なる番号を有する）。なお、上記説明したＵＵＩＤは一例にすぎず、シェアに対応して一意な任意の識別番号（第１の識別番号）が使用されてもよい。
【００５３】
ステップ６４では、制御装置１１は、ステップ６２で生成したｎ個のシェアに対して１つの共通鍵を生成する。この処理は、従来技術である共通鍵暗号化方式（例えば、ＤＥＳなど）に従って、共通鍵を生成する処理を含む。生成された共通鍵は、メモリ１２および／または記憶装置１３に記憶される。なお、本実施形態における秘密鍵とは、上述した決済システムにおける署名の際に使用される鍵である。一方、共通鍵とは、後述するように、ステップ６２で生成したｎ個のシェアを暗号化および復号するために使用される鍵である。
【００５４】
ステップ６５では、制御装置１１は、ステップ６４で生成した共通鍵を使用して、ステップ６２で生成したｎ個のシェアの全てを暗号化する。つまり、ステップ６５では、ｎ個の暗号化されたシェアが生成される。
【００５５】
ステップ６６では、制御装置１１は、ステップ６５で生成したｎ個の暗号化されたシェアおよびステップ６３で生成したｎ個のＵＵＩＤを所定の記憶領域にそれぞれ記憶する。つまり、暗号化されたシェアとＵＵＩＤとが１対１のペアで記憶領域に記憶する。ＵＵＩＤおよび暗号化されたシェアは、シェアおよび／またはＵＵＩＤを生成する際に１対１で関連付けられてもよく、本ステップで任意に組み合わされてもよい。以下では、ｎ個のシェアのうちの１つのシェア１とｎ個のＵＵＩＤのうちの１つのＵＵＩＤ１とのペアをペア１と称する（同様に、シェア２とＵＵＩＤ２のペアをペア２、シェアｎとＵＵＩＤｎのペアをペアｎ）。
【００５６】
なお、利用者の便宜を考慮して、本実施形態では、シェアとＵＵＩＤとをペアで記憶しているが、ｎ個のＵＵＩＤは、シェアが記憶される領域に関係なく記憶されてもよい。例えば、ｎ個のシェアが３個の独立した外部記憶装置１９に記憶され、ｎ個のＵＵＩＤが上述した３個の独立した外部記憶装置１９とは異なるさらなる３個の独立した外部記憶装置１９に記憶されてもよい。
【００５７】
ここで、所定の記憶領域とは、コンピュータ端末１の記憶装置１３の所定の領域または外部記憶装置１９（ＲＦＩＤカード、ＵＳＢメモリなど）を含む。つまり、ｎ個のペアは、記憶装置１３および外部記憶装置１９を含む任意の記憶装置に記憶される。秘密情報のセキュリティを高めるために、暗号化されたシェアおよびＵＵＩＤのｎ個のペアは、ｎ個のそれぞれ別個の外部記憶装置１９に記憶されることが望ましい。
【００５８】
ステップ６６で記憶される暗号化されたシェアは、例えば、対応するＵＵＩＤを含む「ＵＵＩＤ．ｔｘｔ」のファイル名を有するファイルに書き込まれてもよい。この場合、ファイルの中に、暗号化されたシェアの値が書き込まれる。代わりに、暗号化されたシェアは、ペアとなるＵＵＩＤを含むディレクトリ名を有するディレクトリに記憶されてもよい。つまり、暗号化されたシェアおよびＵＵＩＤは、関連付けられて記憶される。
【００５９】
ステップ６７では、制御装置１１は、ステップ６１で生成した秘密鍵に基づいて、当該秘密鍵に対応して一意な番号を有する識別番号を生成する。この処理は、従来技術であるハッシュ関数などに従って、一意な数値を生成する処理を含む。この識別番号は、後述するサーバコンピュータ２から共通鍵を取得する際の認証として使用される番号である。この識別番号を、秘密情報識別番号（第２の識別番号）と称する。なお、秘密情報識別番号は、秘密鍵（つまり、秘密情報）に基づいて生成される代わりに、単純に、秘密情報を一意に識別するための識別番号であってもよい。
【００６０】
ステップ６８では、通信装置１４は、ステップ６３で生成したｎ個のＵＵＩＤ、ステップ６４で生成した共通鍵、およびステップ６７で生成した秘密情報識別番号をサーバコンピュータ２に送信する。
【００６１】
ステップ６９では、制御装置２１は、ステップ６８で送信されたｎ個のＵＵＩＤ、共通鍵、および秘密情報識別番号を、データベーステーブル２３ａに鍵管理データテーブル７００のデータレコードとして記憶する。
【００６２】
図７を参照して、鍵管理データテーブル７００の例を説明する。鍵管理データテーブル７００は、コンピュータ端末１において生成されたＵＵＩＤおよび共通鍵を管理するためのデータベーステーブルである。各々のデータレコードは、秘密情報（本実施形態では、ステップ６１で生成された秘密鍵）ごとにデータレコードが生成される。
【００６３】
図７に示すように、鍵管理データテーブル７００は、データフィールドとして、秘密情報識別番号７０１、ＵＵＩＤ７０２（ＵＵＩＤ１、ＵＵＩＤ２、…ＵＵＩＤｎ）、共通鍵７０３、および状態７０４を含む。秘密情報識別番号７０１、ＵＵＩＤ７０２、および共通鍵７０３には、ステップ６９でコンピュータ端末１から送信された秘密情報識別番号、ｎ個のＵＵＩＤ、および共通鍵が設定される。ＵＵＩＤ７０２には、ｎ個のＵＵＩＤがそれぞれ記憶される。
【００６４】
状態７０４は、対象のデータレコードの有効状態または無効状態を示す値が設定され、初期値として、例えば、「０：有効」が設定される。状態７０４に設定された値は、後述する鍵管理データテーブル７００の対象のデータレコードを無効にする際に更新される。
【００６５】
なお、本実施形態では、鍵管理データテーブル７００によって、ＵＵＩＤおよび共通鍵が管理されるが、それらのデータは、必ずしもデータベーステーブルの形式で実装される必要はない。例えば、サーバコンピュータ２の記憶装置１３において、図７で示したようなデータ項目を有するデータファイルが記憶されてもよい。
【００６６】
図６で示した処理によって、ｎ個のシェアが暗号化され、暗号化されたシェアが記憶される。よって、仮に、ｋ個のシェアが第三者に取得された場合でも、共通鍵が取得されない限り、第三者は秘密情報を復元することができない。また、シェアに対応するＵＵＩＤが、シェアを暗号化した共通鍵と共にサーバコンピュータ２において管理されることになる。サーバコンピュータ２に記憶された鍵管理データテーブル７００は、後述する秘密情報復元処理において使用される。
【００６７】
なお、制御装置１１は、メモリ１２または記憶装置１３に記憶した秘密情報、少なくともシェアを生成した後（ステップ６２の処理の後）に削除してもよい。また、制御装置１１は、メモリ１２または記憶装置１３に記憶したｎ個のシェアおよび共通鍵を、少なくともシェアを暗号化した後（ステップ６５の後）に削除してもよい。この処理によって、コンピュータ端末１には秘密情報、およびそれを復元するための情報が存在しなくなり、秘密情報のセキュリティが高まる。
【００６８】
次に、図８を参照して、シェア分散システム１０が実行する秘密情報復元処理を説明する。本実施形態で説明する秘密情報復元処理は、図６で説明したシェア生成処理において生成された秘密情報を、通常の利用において復元する処理である。本実施形態では、上述した決済サービスにおける仮想通貨の送金の際のトランザクション履歴情報の署名に使用する秘密鍵を復元する例を説明する。
【００６９】
図８で説明する処理は、コンピュータ端末１の制御装置１１が所定のプログラムを実行し、サーバコンピュータ２の制御装置２１が所定のプログラムを実行することによって実行される。ステップ８１では、制御装置１１は、ステップ６６で所定の記憶領域に記憶したｎ個のＵＵＩＤのうちの少なくともいずれか１つのＵＵＩＤを読み出す。
【００７０】
ステップ８２では、通信装置１４は、ステップ８１で読み出したＵＵＩＤ、および復元されることになる秘密情報に対応する秘密情報識別番号をサーバコンピュータ２に送信する。秘密情報識別番号は、コンピュータ端末１の入力デバイス１５を介して利用者から入力されてもよい。秘密情報識別番号の入力によって、コンピュータ端末１は、利用者が復元する秘密情報を識別することができる。
【００７１】
ステップ８３では、制御装置２１は、ステップ８２で送信されたＵＵＩＤに基づいて、鍵管理データテーブル７００から対象の鍵管理データレコードを取得する。このときに、任意選択として、制御装置２１は、ステップ８２で送信された秘密情報識別番号が、取得された鍵管理データレコードの秘密情報識別番号７０１に設定された秘密情報識別番号と一致するかを検査してもよい。つまり、制御装置２１は、利用者から入力された秘密情報識別番号が、鍵管理データテーブル７００に記憶された秘密情報識別番号と一致するかを検査する。この任意選択の処理は、利用者を認証する役割を果たし、秘密情報のセキュリティを高めることになる。
【００７２】
なお、本実施形態では、少なくとも１つのＵＵＩＤに基づいて鍵管理データレコードを取得している。つまり、外部記憶装置１９などに記憶したｎ個のＵＵＩＤのうち少なくとも１つのＵＵＩＤを読み出すことによって、サーバコンピュータから共通鍵を取得することができる。セキュリティをさらに高めるために、記憶したｎ個のＵＵＩＤのうちのいずれか２つ以上に基づいて鍵管理データレコードを取得してもよい。つまり、ステップ８３では、２つ以上のＵＵＩＤの全てに一致する２つ以上のＵＵＩＤが設定されたが取得される。
【００７３】
また、上述した秘密情報識別番号を使用する代わりに、例えば、利用者ごとに割り当てられた利用者識別番号およびパスワードの組み合わせによって認証が行われてもよい。この場合、上述した秘密情報識別番号を生成する処理などは不要となる。
【００７４】
ステップ８３の処理では、制御装置１１がステップ８１において少なくとも１つのＵＵＩＤを読み出すことによって、読み出したＵＵＩＤに対応する共通鍵が鍵管理データテーブル７００から取得される。この共通鍵によって、後述する処理において暗号化されたシェアが復号されることになる。つまり、利用者は、秘密情報を復元する際、シェアと共に記憶されたＵＵＩＤを外部記憶装置１９などから読み出す必要がある（任意選択で、秘密情報ごとに生成した秘密情報識別番号を入力する）。
【００７５】
ステップ８４では、通信装置１４は、ステップ８３で取得した共通鍵をコンピュータ端末１に送信する。ステップ８５では、制御装置１１は、ステップ６６で所定の記憶領域に記憶したｎ個の暗号化されたシェアのうち、少なくともｋ個の暗号化されたシェアを読み出す。
【００７６】
ステップ８６では、制御装置１１は、ステップ８４で送信された共通鍵を使用して、ステップ８５で読み出したｋ個の暗号化されたシェアを復号する。ステップ８７では、制御装置１１は、ステップ８６で復号したｋ個のシェアに基づいて、上述した秘密情報復元式を使用して、秘密鍵を復元する。復元した秘密鍵は、上述した決済サービスにおける仮想通貨のトランザクション履歴情報の署名に使用される。
【００７７】
図８で示した処理によって、コンピュータ端末１は、外部記憶装置１９などに記憶されたＵＵＩＤ（任意選択で、秘密情報識別番号）によりサーバコンピュータ２に共通鍵を要求し、共通鍵を取得することができる。よって、よって、仮に、ｋ個のシェアが第三者に取得された場合でも、共通鍵が取得されない限り、第三者は秘密情報を復元することができない。
【００７８】
なお、上述したｎ個のシェアまたはｎ個のＵＵＩＤなどが第三者に取得された場合など、秘密情報の漏洩を防止するために、例えば、鍵管理データテーブル７００から、対象の鍵管理データレコードを無効にしてもよい。この場合、利用者の入力デバイス１５を介した入力に応じて、コンピュータ端末１からがサーバコンピュータ２に、対象のデータレコードを無効にすることを指示する。
【００７９】
対象のデータレコードを無効にすることは、制御装置２１が鍵管理データテーブル７００から、対象のデータレコードを削除することを含んでもよい。また、無効にすることは、制御装置２１が対象のデータレコードに含まれる状態７０４に、例えば、「１：無効」を設定することを含んでもよい。この場合、制御装置２１は、ステップ８３において対象の鍵管理データレコードを取得する際に状態７０４を参照し、「１：無効」が設定されている場合は、コンピュータ端末１にエラーメッセージを返してもよい。
【００８０】
以上のように、シェア分散システム１０を説明した。シェア分散システム１０によれば、生成したｎ個のシェアを暗号化し、暗号化に使用した共通鍵をサーバコンピュータ２に記憶するので、ｋ個のシェアが第三者に取得されても秘密情報が漏洩せず、セキュリティを高めることができる。また、秘密情報ごとに共通鍵を生成し、ＵＵＩＤと共にサーバコンピュータ２において管理するので、シェアを暗号化するための鍵の管理が容易になる。
【００８１】
上記実施形態で説明した式およびハードウェアの構成要素は例示的なものにすぎず、その他の構成も可能であることに留意されたい。また、上記実施形態で説明した処理の順序は、必ずしも説明した順序で実行される必要がなく、任意の順序で実行されてもよい。さらに、本発明の基本的な概念から逸脱することなく、追加のステップが新たに加えられてもよい。
【００８２】
また、シェア分散システム１０は、コンピュータ端末１によって実行されるコンピュータプログラムによって実装されるが、当該コンピュータプログラムは、非一時的記憶媒体に記憶されてもよい。サーバコンピュータ２によって実行されるコンピュータプログラムも同様である。非一時的記憶媒体の例は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリ装置、内蔵ハードディスクおよび取外可能ディスク装置などの磁気媒体、光磁気媒体、ならびにＣＤ−ＲＯＭディスクおよびデジタル多用途ディスク（ＤＶＤ）などの光学媒体などを含む。
【符号の説明】
【００８３】
１    コンピュータ端末
２    サーバコンピュータ
３    ネットワーク
１０    シェア分散システム
【図１】
2020191552.tif 000003
【図２】
2020191552.tif 000004
【図３】
2020191552.tif 000005
【図４】
2020191552.tif 000006
【図５】
2020191552.tif 000007
【図６】
2020191552.tif 000008
【図７】
2020191552.tif 000009
【図８】
2020191552.tif 000010