JP2020191552A - シェア分散システムおよび方法 - Google Patents
シェア分散システムおよび方法 Download PDFInfo
- Publication number
- JP2020191552A JP2020191552A JP2019096139A JP2019096139A JP2020191552A JP 2020191552 A JP2020191552 A JP 2020191552A JP 2019096139 A JP2019096139 A JP 2019096139A JP 2019096139 A JP2019096139 A JP 2019096139A JP 2020191552 A JP2020191552 A JP 2020191552A
- Authority
- JP
- Japan
- Prior art keywords
- shares
- common key
- identification numbers
- computer
- secret information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】シェア分散システムを提供する。【解決手段】第1のコンピュータデバイスによって実行される方法は、秘密情報に基づいて、n個のシェアを生成するステップであって、秘密情報は、n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2である、ステップと、n個のシェアに対応するn個の第1の識別番号を生成するステップと、共通鍵を使用して、n個のシェアを暗号化するステップと、n個の第1の識別番号、および暗号化したn個のシェアを記憶装置に記憶するステップと、n個の第1の識別番号および共通鍵を、第2のコンピュータデバイスに送信するステップを備える。【選択図】図6
Description
本開示は、シェア分散システムおよび方法に関し、特に、秘密情報を復元するための秘密情報復元可能値(シェア)を暗号化して記憶することによって、セキュリティを確保するシェア分散システムおよび方法に関する。
インターネットなどの公衆ネットワークを通じてオンライン上で取引を行うコンピュータシステムが利用されている。上述したコンピュータシステムの例は、ピアツーピア(P2P)型の決済網であるビットコイン(Bitcoin)と称される仮想通貨管理システムなどを含む。ビットコインにおいては、対になる2つの鍵を利用してデータの暗号化および復号を行う公開鍵暗号方式が利用される。
以下では、ビットコインでの仮想通貨の送金処理の流れを簡単に説明する。(1)まず、仮想通貨を支払う側(送金元)が公開鍵および秘密鍵のペアを生成する。(2)送金元が公開鍵からアドレス(口座番号)を生成する(このアドレスの集合が「ウォレット(財布)となる」)。(3)送金元が送金情報(送信するビットコイン、アドレス等のトランザクション履歴情報)に自身の秘密鍵を使用して署名する。(4)送金元がP2Pネットワークに送金情報をブロードキャストする(5)仮想通貨を受け取る側(送金先)が取引内に含まれる公開鍵および署名済みの送金情報を照合して取引が正しいことを検証する。
ビットコインでは、送金元のみが知り得る秘密鍵を使用して送金情報が署名されるので、その秘密鍵は高度なレベルで秘密に管理される必要がある。このことから、ビットコインの仕組みでは、秘密鍵をどのように管理するかという課題が存在する。秘密鍵は、セキュリティ面を考慮し一般的にはランダムな英数字による64桁の秘密鍵が使われているので、その秘密鍵が分からなくなってしまうと、そのアドレスにあるビットコインは二度と使用できなくなる。よって、様々なデバイスやサービスを使用して秘密鍵の管理を行う利用者が存在する。例えば、ビットコインの使用用途に合わせて複数の口座を所持し、利便性やセキュリティ性などを考慮してそれぞれ異なる方法で管理している利用者が存在する。
土井 洋、「秘密分散法とその応用について」、情報セキュリティ総合科学、第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〉
ビットコインを利用する上で、利用者は、P2Pネットワークに接続されたコンピュータ端末(スマートフォン、タブレットコンピュータおよびパーソナルコンピュータなど)を使用する必要がある。それらの端末がネットワークに接続される以上、悪意のある第三者がコンピュータ端末に不正アクセスすることなどによって、秘密鍵が第三者に漏洩する危険性を完全に排除することはできない。
非特許文献1は、Shamirの閾値法を開示している。Shamirの閾値法では、秘密情報に基づいてn個の一意なシェアが生成され、それらの一意なシェアがn人の共有者に渡される。そして、n個のうちk個(k<n)のシェアを使用することによって、元の秘密情報を復元することができる。つまり、n−kのシェアが漏洩しても、残りのk個のシェアを使用して秘密情報を復元することができる。このことは、k−1のシェアを使用しても情報を復元することができないことを意味する。この技術を使用することによって、秘密情報を復元するためのシェアを分散させることができる。
しかしながら、シェアを分散させても、例えば、それらのシェアをネットワークに接続された記憶装置に記憶した場合、第三者が当該記憶装置に不正アクセスすることによってk個のシェアが漏洩する危険性がある。このことから、非特許文献1に開示された技術を使用しても、秘密情報を適切に保護することはできない場合がある。特に、k個のシェアを同一のLANに位置する記憶装置に記憶した場合、第三者がそのLANの入口となるGateway(Firewall)を通過することによって、k個の全てのシェアが容易に当該第三者に漏洩する可能性がある。
特許文献1は、(k,n)閾値法を使用して、シェアを分散して記憶した技術を開示している。特許文献1に開示されたシステムによれば、物理的に別個の記憶装置にシェアを分散して記憶するので、k−1個のシェアが漏洩した場合でも秘密情報を保護することができる。しかしながら、特許文献1に開示された技術では、分散されたシェアを暗号化するわけではない。例えば、特許文献1に開示された技術に従って、RFIDカードなどに記憶した場合、スキミングによって記憶したシェアが漏洩する可能性があり、特に、k個のシェアが漏洩した場合、秘密情報を保護することができない。
少なくともk個のシェアを暗号化して記憶することによって、上述した問題を解決することができる。しかしながら、シェアを暗号化する場合、暗号化するための暗号鍵が必要になり、その鍵を保護および管理する必要が生じる。
実施形態に係る方法は、第1のコンピュータデバイスによって実行される方法であって、秘密情報に基づいて、n個のシェアを生成するステップであって、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2である、ステップと、前記n個のシェアに対応するn個の第1の識別番号を生成するステップと、共通鍵を使用して、前記n個のシェアを暗号化するステップと、前記n個の第1の識別番号、および前記暗号化したn個のシェアを記憶装置に記憶するステップと、前記n個の第1の識別番号および前記共通鍵を、第2のコンピュータデバイスに送信するステップとを含む。
また、実施形態に係るコンピュータデバイスは、第1のコンピュータデバイスであって、秘密情報に基づいて、n個のシェアを生成し、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2であり、前記n個のシェアに対応するn個の第1の識別番号を生成し、共通鍵を使用して、前記n個のシェアを暗号化し、前記n個の第1の識別番号、および前記暗号化したn個のシェアを記憶装置に記憶するように構成された制御装置と、前記n個の第1の識別番号、および前記共通鍵を、第2のコンピュータデバイスに送信するように構成された通信装置とを含む。
実施形態に係るシェア分散システムによれば、シェアが第三者に取得され、秘密情報が漏洩することを防止することができる。また、シェアを暗号化した鍵を安全かつ簡易に管理することができる。
以下、添付図面を参照して、実施形態に係るシェア分散システムを詳細に説明する。実施形態に係るシェア分散システムは、従来技術に従ったShamirの閾値法(秘密分散法)を利用することによって、シェア(シェア)を分散している。ここで、Shamirの閾値法は、秘密情報を復元することができるシェアの数であるk(閾値)、およびそのシェアを分散する数であるn(シェア数)を定めている。上記に加え、本発明に係るシェア分散システムは、情報を復元することができる/できない集合を任意に定めることができる、いずれかの他の秘密分散法を利用してもよい(非特許文献2を参照)。
まず、従来技術に従ったShamirの閾値法の概要を、図1乃至図3を参照して説明する。Shamirの閾値法(以下、「(k,n)閾値法」と称する)では、秘密情報であるSに対し、その秘密情報Sをn人で共有することを前提とする。そのn人のそれぞれには、所定の多項式を使用して生成されたn個のシェアがそれぞれ渡され、そのうちk個のシェアによって秘密情報Sを復元することができる。つまり、生成されたn個のシェアをn人の間で共有し、そのうちk人が有するk個のシェアを使用することによって秘密情報Sを復元することができる。本明細書では、このnの数をシェア数と称し、kの数を閾値と称する。
シェアを生成する際は、定数項をSとする任意のk−1次多項式を使用する。ここで、kを3とし、nを4とし(つまり、4個のシェアを生成し、そのうち3個のシェアを使用することによって、秘密情報Sを復元することができる)、秘密情報を9とする。よって、k−1次多項式、つまり定数項を9とする任意の2次多項式を使用することになる。例えば、第1の項の係数に2、第2の項に係数7を使用して、式(1)
f(x)=2x2−7x+9 式(1)
とする。
f(x)=2x2−7x+9 式(1)
とする。
n=4個のシェアを生成する際に、シェア番号として{1,2,3,4}を割り当て、f(1)、f(2)、f(3)およびf(4)として式(1)に当てはめると、n個のシェアの値の集合、n={(1,4),(2,3),(3,6),(4,13)}が算出される。
図1は、上述したように算出されたシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図1に示す曲線は、4個のシェアの値に対応する4箇所の座標を通っている。この曲線が、式(1)の2次多項式を表わしている。(k,n)閾値法では、n=4個のうちk=3個のシェアを使用することによって秘密情報を復元することができる。つまり、図1に示す4箇所の座標のうち、任意の3箇所の座標を通ることによっても、同様の曲線を描くことができる。一方で、k−1個のシェアを使用することによっては、秘密情報を復元することができない。つまり、図1に示す4箇所の座標のうち、任意の2箇所の座標を通ることによっては、同様の曲線を描くことができない。
図2は、k=3個のシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図2から理解できるように、閾値であるk=3箇所の座標が分かれば、図1に示す曲線と同一の曲線を描くことができる。図3は、k−1=2個のシェアの値を座標とし、各座標を通る曲線を描いたグラフを示している。図2から理解できるように、閾値k−1=2の箇所の座標のみでは、破線で示す曲線なども描くことができ、必ずしも、図1に示す曲線と同一の曲線を描くことができない。つまり、k−1(2)個のシェアを使用することによっては、式(1)に示した2次多項式を導出することができず、ひいては、秘密情報Sを復元することができない。
k個のシェアの値からは、多項式補間を使用することによって秘密情報を復元することができるが、その具体的な算出式を以下に示す。まず、閾値k=3であることから、シェアを生成する多項式がy=x2+x+定数項である2次多項式であることが分かる。そして、各項の係数をa、bおよびcに置換え、y=a2+b+cとし、k=3個のシェアの値の集合、k={(1,4),(2,3),(3,6)}を代入し、それぞれ、以下のように式(2)乃至式(4)を導出することができる。
c=−a−b+4 式(2)
c=−4a−2b+3 式(3)
c=−9a−3b+6 式(4)
c=−a−b+4 式(2)
c=−4a−2b+3 式(3)
c=−9a−3b+6 式(4)
次に、式(2)を式(3)および式(4)にそれぞれ代入すると、以下のように式(5)および式(6)を介してa(つまり、式(1)に示した2次多項式の第1の項の係数)を導出することができる。
3a=−b−1 式(5)
8a=−2b+2 式(6)
a=2
3a=−b−1 式(5)
8a=−2b+2 式(6)
a=2
上記式から係数aの値を導出することができたので、導出したaの値を式(2)および式(3)に代入すると、以下のように式(7)および式(8)を介してb(つまり、式(1)に示した2次多項式の第2の項の係数)を導出することができる。
c=−b+2 式(7)
c=−2b−5 式(8)
b=−7
c=−b+2 式(7)
c=−2b−5 式(8)
b=−7
最後に、導出した係数aの値および係数bの値を式(2)に代入することによって、c=9(つまり、式(1)に示した2次多項式の定数項の値)を導出することができる。
以上のようにして導出した係数の値を2次多項式に代入すると、式(1)に示した2次多項式、つまり、秘密情報Sを復元することができることが分かる。この秘密情報Sを復元する具体的な式は、例えば、非特許文献1に開示されているように公知であるので、本明細書では具体的な説明は行わない。
実施形態に係るシェア分散システムは、上述した(k,n)閾値法を含むいずれかの秘密分散法を使用してn個のシェアを生成し、k個のシェアを使用して、秘密情報を復元する。(k,n)閾値法では、n>kであるが、使用する秘密分散法によっては、n=kの場合もあり、そのような場合も本発明に係るシェア分散システムが適用することができることに留意されたい。
以下、本明細書では、秘密分散法を使用してn個のシェアを生成する際に使用する算出式を、秘密情報復元可能値(シェア)生成式と称する。また、生成したn個のシェアのうちk個のシェアを使用して秘密情報を復元する際に使用する算出式を秘密情報復元式と称する。本発明に係るシェア分散システムが(k,n)閾値法を利用する場合、シェア生成式および秘密情報復元式はそれぞれ、非特許文献1に示す算出式が使用されてもよい。(k,n)閾値法に加え、本発明に係るシェア分散システムが他の秘密分散法を利用する場合、その秘密分散法に対応する、シェア生成式および秘密情報復元式がそれぞれ使用されてもよい。
次に、図4を参照して、実施形態に係るシェア分散システム10を構成するコンピュータシステム全体の構成の例を示している。シェア分散システム10は、第三者への漏洩を防止する必要がある秘密情報を管理し、利用者に使用させるためのスキームを提供する。例えば、シェア分散システム10は、特定のコンピュータシステムにおいて使用される、認証用の識別番号およびパスワードなどを管理するために使用される。
以下の実施形態では、ビットコインなど、仮想通貨を使用した決済サービスを提供するコンピュータシステム(以下、決済システム)において使用される秘密鍵を管理する例を説明する。この例では、シェア分散システム10は、決済システムと連動する。本明細書では、シェア分散システム10のみを説明する。
図4に示すように、シェア分散システム10は、コンピュータ端末1およびサーバコンピュータ2を含む。コンピュータ端末1およびサーバコンピュータ2は、ネットワーク3(インターネットなどの公衆ネットワーク)を通じて接続される。
コンピュータ端末1は、シェア分散システム10を実装するコンピュータデバイスである(第1のコンピュータデバイス)。コンピュータ端末1は、例えば、スマートフォン、タブレットコンピュータ、およびパーソナルコンピュータなどによって実装されてもよい。利用者は、コンピュータ端末1を使用して所定の情報を入力することによって、n個のシェアを生成し、そのうちk個のシェアを使用して秘密情報を復元する。
サーバコンピュータ2も、シェア分散システム10を実装するコンピュータデバイスである(第2のコンピュータデバイス)。サーバコンピュータ2は、ホストコンピュータなど、演算機能および通信機能を有するコンピュータデバイスによって実装されてもよい。サーバコンピュータ2は、コンピュータ端末1がシェアを暗号化するために使用される共通鍵を管理する。コンピュータ端末1は、秘密情報を復元するときに、サーバコンピュータ2から共通鍵を取得する。
次に図5を参照して、シェア分散システム10を構成するコンピュータ端末1およびサーバコンピュータ2の詳細な構成の例を説明する。コンピュータ端末1は、制御装置11、メモリ12、記憶装置13、通信装置14、入力デバイス15、入力ドライバ16、出力デバイス17、および出力ドライバ18を含む。それらの構成要素は、内部バスを介して相互に結合される。
制御装置11は、プロセッサなどで実装され、中央処理装置(CPU)、グラフィックプロセシングユニット(GPU)、および1つもしくは複数の制御装置コアを含んでもよい。制御装置11は、記憶装置13に記憶された所定のプログラム(OSおよびアプリケーションプログラム)を実行することによって、コンピュータ端末1の動作を制御する。メモリ12は、揮発性または不揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、またはキャッシュメモリを含んでもよい。メモリ12は、制御装置11が実行するプログラムデータを一時的に記憶する。
記憶装置13は、コンピュータ端末1に内蔵された記憶装置である。記憶装置13は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、およびフラッシュドライブを含んでもよい。記憶装置13は、生成されたn個のうちのいずれかのシェアを記憶してもよい。通信装置14は、ネットワークインタフェースカード(例えば、LANカード)などで実装され、ネットワーク3を介してサーバコンピュータ2とデータを送受信する。通信装置14はまた、以下で説明するように、シェアをRFIDカードに記憶する場合、RFIDカードに付されたICタグに向かって電波を送信するRFIDアンテナ、およびその電波を受信するRFIDリーダを含む。
入力デバイス15は、利用者によって所定の情報を入力するために使用される入力デバイスである、入力デバイス15は、キーボード、キーパッド、タッチスクリーン、タッチパッド、マイクロフォン、加速度計、ジャイロスコープ、および生体スキャナなどを含んでもよい。入力デバイス15は、入力ドライバ16を介して、利用者による入力を受信し、それを制御装置11と通信する。
出力デバイス17は、コンピュータ端末1が所定のプログラムを実行した結果を表示するために使用される出力デバイスである。出力デバイス17は、ディスプレイ、スピーカ、およびプリンタなどを含んでもよい。出力デバイス17は、出力ドライバ18を介して制御装置11からの出力を受信し、それを出力する(ディスプレイを介した視覚的出力、スピーカを介した音声出力など)。
コンピュータ端末1には、外部記憶装置19が接続される。外部記憶装置19は、例えば、USBメモリおよびSDカードなどのフラッシュメモリ、CD−ROMおよびDVDなどの光学記憶媒体、フロッピーディスクなどの磁気記憶媒体など、コンピュータ端末1に着脱可能であり、かつ不揮発性の記憶装置を含む。この場合、外部記憶装置19がコンピュータ端末1に接続されると、入力ドライバ16を介して外部記憶装置19からの情報が制御装置11と通信される。また、制御装置11からの出力が出力ドライバ18を介して外部記憶装置19に出力(記憶)される。
外部記憶装置19はまた、接触型ICカードまたは非接触型ICカード、例えば、RFIDカードなど、コンピュータ端末1と通信可能であり、不揮発性の記憶領域を有する記憶装置を含む。この場合、例えば、通信装置14は、外部記憶装置19に付されたICタグに電波を送信し、ICタグから送信された応答信号を受信することによって通信を開始し、制御装置11からの出力が通信装置14を介して外部記憶装置19に出力(記憶)される。
上述したように、外部記憶装置19の例を説明したが、外部記憶装置19は、上述した記憶装置に限定されず、コンピュータ端末1とは物理的に独立し、情報を永続的に記憶することが可能な任意の記憶装置(記憶媒体)またはコンピュータ端末を含む。例えば、外部記憶装置19は、コンピュータ端末1とは独立した、不揮発性の記憶領域を有するコンピュータ端末であってもよい。
サーバコンピュータ2は、制御装置21、メモリ22、記憶装置23、および通信装置24を含む。それらの構成要素は、内部バスを介して相互に結合される。
制御装置21は、制御装置11と同様にCPUなどで実装される。制御装置21は、記憶装置23に記憶された所定のプログラムを実行することによって、サーバコンピュータ2の動作を制御する。メモリ22は、メモリ12と同様に、揮発性または不揮発性メモリなどを含み、制御装置21が実行するプログラムデータを一時的に記憶する。
記憶装置23は、記憶装置13と同様に内蔵された記憶装置である。記憶装置23は、サーバコンピュータ2が実装するDBMSのデータベーステーブル23aを記憶している。通信装置24は、通信装置14と同様に、LANカードなどで実装され、ネットワーク3を介してコンピュータ端末1とデータを送受信する。
シェア分散システム10は、決済システムなどの所定のコンピュータシステムと連動することは上述した通りである。つまり、コンピュータ端末1上で、当該所定のコンピュータシステムが提供するアプリケーションプログラムが実行される。シェア分散システム10は、コンピュータ端末1上で実行されるアプリケーションプログラムに対応するサービスごとに独立して実行されることが望ましい。
例えば、コンピュータ端末1がApple(登録商標)社製のオペレーティングシステム「iOS(登録商標)」を実行する場合(iPhone(登録商標)など)、記憶装置13が、サービスごとに論理的に独立した記憶領域を構成することになる。この場合、例えば、コンピュータ端末1が複数のアプリケーションプログラムを実行し、各アプリケーションプログラムがシェア分散システム10と連動する場合、アプリケーションプログラムに対応するサービスごとに論理的に独立した記憶領域を使用することができる。このことは、後述するシェアを記憶装置13に記憶する際に、実行するアプリケーションプログラムごとに論理的に独立した領域に記憶することができることを意味し、セキュリティがより高まることになる。
コンピュータ端末1がiOS以外のオペレーティングシステムを実行する場合(Windows(登録商標)およびAndroid(登録商標)など)、例えば、コンテナ型仮想化技術を使用することによって、サービスごと、またはユーザごとに記憶領域を独立させることができる。このように、複数のアプリケーションプログラムを実行し、各アプリケーションプログラムがシェア分散システム10と連動する場合、独立した記憶領域を実装することによって、さらなるセキュリティを確保することができる。
次に、図6を参照して、シェア分散システム10が実行するシェア(シェア)生成処理の例を説明する。本実施形態では、シェア分散システム10が、ビットコインなどの仮想通貨を使用した決済サービスを提供するコンピュータシステム(以下、決済システム)と連動する例を説明する。この例では、仮想通貨を使用して決済(送金)を行う場合、利用者(送金元)が秘密鍵を生成し、生成した秘密鍵を使用して仮想通貨のトランザクション履歴情報の署名を行なう。秘密鍵は、決済システムによって生成されてもよく、またはシェア分散システム10によって生成されてもよい。
シェア分散システム10は、セキュリティ管理されることになる秘密鍵に基づいてn個のシェアを生成し、n個のシェアを記憶装置13および/または外部記憶装置19に記憶する。よって、本実施形態では、秘密情報は、決済での署名に使用される秘密鍵に相当する。以下の説明では、決済での署名に使用される秘密鍵を、単に秘密鍵と称する。
図6で説明する処理は、コンピュータ端末1の制御装置11が所定のプログラムを実行し、サーバコンピュータ2の制御装置21が所定のプログラムを実行することによって実行される。ステップ61では、制御装置11は、決済アプリケーションを実行することによって秘密鍵を生成する。この処理は、決済サービスにおいて仮想通貨の送金を行う際に使用する秘密鍵を生成する処理を含む。生成された秘密鍵は、メモリ12および/または記憶装置13に記憶される。なお、上述したように、秘密鍵は、決済システムによって生成されてもよい。
ステップ62では、制御装置11は、ステップ61で生成した秘密鍵に基づいて、上述したシェア生成式を使用して、(n)個のシェアを生成する。生成されたシェアは、メモリ12および/または記憶装置13に記憶される。上述したように、n個のシェアのうちk個のシェアによって、ステップ61で生成した秘密鍵を復元することができる。
ステップ63では、制御装置11は、n個のUUIDを生成する。UUIDは、コンピュータ端末1が実行するアプリケーションプログラムに対応するサービスごとにオブジェクトを一意に識別する番号である。つまり、UUIDは、少なくとも上述したサービスごとに、ステップ62で生成した全てのシェアに対応して一意な番号を有する(ステップ62で生成したシェアごとに異なる番号を有する)。なお、上記説明したUUIDは一例にすぎず、シェアに対応して一意な任意の識別番号(第1の識別番号)が使用されてもよい。
ステップ64では、制御装置11は、ステップ62で生成したn個のシェアに対して1つの共通鍵を生成する。この処理は、従来技術である共通鍵暗号化方式(例えば、DESなど)に従って、共通鍵を生成する処理を含む。生成された共通鍵は、メモリ12および/または記憶装置13に記憶される。なお、本実施形態における秘密鍵とは、上述した決済システムにおける署名の際に使用される鍵である。一方、共通鍵とは、後述するように、ステップ62で生成したn個のシェアを暗号化および復号するために使用される鍵である。
ステップ65では、制御装置11は、ステップ64で生成した共通鍵を使用して、ステップ62で生成したn個のシェアの全てを暗号化する。つまり、ステップ65では、n個の暗号化されたシェアが生成される。
ステップ66では、制御装置11は、ステップ65で生成したn個の暗号化されたシェアおよびステップ63で生成したn個のUUIDを所定の記憶領域にそれぞれ記憶する。つまり、暗号化されたシェアとUUIDとが1対1のペアで記憶領域に記憶する。UUIDおよび暗号化されたシェアは、シェアおよび/またはUUIDを生成する際に1対1で関連付けられてもよく、本ステップで任意に組み合わされてもよい。以下では、n個のシェアのうちの1つのシェア1とn個のUUIDのうちの1つのUUID1とのペアをペア1と称する(同様に、シェア2とUUID2のペアをペア2、シェアnとUUIDnのペアをペアn)。
なお、利用者の便宜を考慮して、本実施形態では、シェアとUUIDとをペアで記憶しているが、n個のUUIDは、シェアが記憶される領域に関係なく記憶されてもよい。例えば、n個のシェアが3個の独立した外部記憶装置19に記憶され、n個のUUIDが上述した3個の独立した外部記憶装置19とは異なるさらなる3個の独立した外部記憶装置19に記憶されてもよい。
ここで、所定の記憶領域とは、コンピュータ端末1の記憶装置13の所定の領域または外部記憶装置19(RFIDカード、USBメモリなど)を含む。つまり、n個のペアは、記憶装置13および外部記憶装置19を含む任意の記憶装置に記憶される。秘密情報のセキュリティを高めるために、暗号化されたシェアおよびUUIDのn個のペアは、n個のそれぞれ別個の外部記憶装置19に記憶されることが望ましい。
ステップ66で記憶される暗号化されたシェアは、例えば、対応するUUIDを含む「UUID.txt」のファイル名を有するファイルに書き込まれてもよい。この場合、ファイルの中に、暗号化されたシェアの値が書き込まれる。代わりに、暗号化されたシェアは、ペアとなるUUIDを含むディレクトリ名を有するディレクトリに記憶されてもよい。つまり、暗号化されたシェアおよびUUIDは、関連付けられて記憶される。
ステップ67では、制御装置11は、ステップ61で生成した秘密鍵に基づいて、当該秘密鍵に対応して一意な番号を有する識別番号を生成する。この処理は、従来技術であるハッシュ関数などに従って、一意な数値を生成する処理を含む。この識別番号は、後述するサーバコンピュータ2から共通鍵を取得する際の認証として使用される番号である。この識別番号を、秘密情報識別番号(第2の識別番号)と称する。なお、秘密情報識別番号は、秘密鍵(つまり、秘密情報)に基づいて生成される代わりに、単純に、秘密情報を一意に識別するための識別番号であってもよい。
ステップ68では、通信装置14は、ステップ63で生成したn個のUUID、ステップ64で生成した共通鍵、およびステップ67で生成した秘密情報識別番号をサーバコンピュータ2に送信する。
ステップ69では、制御装置21は、ステップ68で送信されたn個のUUID、共通鍵、および秘密情報識別番号を、データベーステーブル23aに鍵管理データテーブル700のデータレコードとして記憶する。
図7を参照して、鍵管理データテーブル700の例を説明する。鍵管理データテーブル700は、コンピュータ端末1において生成されたUUIDおよび共通鍵を管理するためのデータベーステーブルである。各々のデータレコードは、秘密情報(本実施形態では、ステップ61で生成された秘密鍵)ごとにデータレコードが生成される。
図7に示すように、鍵管理データテーブル700は、データフィールドとして、秘密情報識別番号701、UUID702(UUID1、UUID2、…UUIDn)、共通鍵703、および状態704を含む。秘密情報識別番号701、UUID702、および共通鍵703には、ステップ69でコンピュータ端末1から送信された秘密情報識別番号、n個のUUID、および共通鍵が設定される。UUID702には、n個のUUIDがそれぞれ記憶される。
状態704は、対象のデータレコードの有効状態または無効状態を示す値が設定され、初期値として、例えば、「0:有効」が設定される。状態704に設定された値は、後述する鍵管理データテーブル700の対象のデータレコードを無効にする際に更新される。
なお、本実施形態では、鍵管理データテーブル700によって、UUIDおよび共通鍵が管理されるが、それらのデータは、必ずしもデータベーステーブルの形式で実装される必要はない。例えば、サーバコンピュータ2の記憶装置13において、図7で示したようなデータ項目を有するデータファイルが記憶されてもよい。
図6で示した処理によって、n個のシェアが暗号化され、暗号化されたシェアが記憶される。よって、仮に、k個のシェアが第三者に取得された場合でも、共通鍵が取得されない限り、第三者は秘密情報を復元することができない。また、シェアに対応するUUIDが、シェアを暗号化した共通鍵と共にサーバコンピュータ2において管理されることになる。サーバコンピュータ2に記憶された鍵管理データテーブル700は、後述する秘密情報復元処理において使用される。
なお、制御装置11は、メモリ12または記憶装置13に記憶した秘密情報、少なくともシェアを生成した後(ステップ62の処理の後)に削除してもよい。また、制御装置11は、メモリ12または記憶装置13に記憶したn個のシェアおよび共通鍵を、少なくともシェアを暗号化した後(ステップ65の後)に削除してもよい。この処理によって、コンピュータ端末1には秘密情報、およびそれを復元するための情報が存在しなくなり、秘密情報のセキュリティが高まる。
次に、図8を参照して、シェア分散システム10が実行する秘密情報復元処理を説明する。本実施形態で説明する秘密情報復元処理は、図6で説明したシェア生成処理において生成された秘密情報を、通常の利用において復元する処理である。本実施形態では、上述した決済サービスにおける仮想通貨の送金の際のトランザクション履歴情報の署名に使用する秘密鍵を復元する例を説明する。
図8で説明する処理は、コンピュータ端末1の制御装置11が所定のプログラムを実行し、サーバコンピュータ2の制御装置21が所定のプログラムを実行することによって実行される。ステップ81では、制御装置11は、ステップ66で所定の記憶領域に記憶したn個のUUIDのうちの少なくともいずれか1つのUUIDを読み出す。
ステップ82では、通信装置14は、ステップ81で読み出したUUID、および復元されることになる秘密情報に対応する秘密情報識別番号をサーバコンピュータ2に送信する。秘密情報識別番号は、コンピュータ端末1の入力デバイス15を介して利用者から入力されてもよい。秘密情報識別番号の入力によって、コンピュータ端末1は、利用者が復元する秘密情報を識別することができる。
ステップ83では、制御装置21は、ステップ82で送信されたUUIDに基づいて、鍵管理データテーブル700から対象の鍵管理データレコードを取得する。このときに、任意選択として、制御装置21は、ステップ82で送信された秘密情報識別番号が、取得された鍵管理データレコードの秘密情報識別番号701に設定された秘密情報識別番号と一致するかを検査してもよい。つまり、制御装置21は、利用者から入力された秘密情報識別番号が、鍵管理データテーブル700に記憶された秘密情報識別番号と一致するかを検査する。この任意選択の処理は、利用者を認証する役割を果たし、秘密情報のセキュリティを高めることになる。
なお、本実施形態では、少なくとも1つのUUIDに基づいて鍵管理データレコードを取得している。つまり、外部記憶装置19などに記憶したn個のUUIDのうち少なくとも1つのUUIDを読み出すことによって、サーバコンピュータから共通鍵を取得することができる。セキュリティをさらに高めるために、記憶したn個のUUIDのうちのいずれか2つ以上に基づいて鍵管理データレコードを取得してもよい。つまり、ステップ83では、2つ以上のUUIDの全てに一致する2つ以上のUUIDが設定されたが取得される。
また、上述した秘密情報識別番号を使用する代わりに、例えば、利用者ごとに割り当てられた利用者識別番号およびパスワードの組み合わせによって認証が行われてもよい。この場合、上述した秘密情報識別番号を生成する処理などは不要となる。
ステップ83の処理では、制御装置11がステップ81において少なくとも1つのUUIDを読み出すことによって、読み出したUUIDに対応する共通鍵が鍵管理データテーブル700から取得される。この共通鍵によって、後述する処理において暗号化されたシェアが復号されることになる。つまり、利用者は、秘密情報を復元する際、シェアと共に記憶されたUUIDを外部記憶装置19などから読み出す必要がある(任意選択で、秘密情報ごとに生成した秘密情報識別番号を入力する)。
ステップ84では、通信装置14は、ステップ83で取得した共通鍵をコンピュータ端末1に送信する。ステップ85では、制御装置11は、ステップ66で所定の記憶領域に記憶したn個の暗号化されたシェアのうち、少なくともk個の暗号化されたシェアを読み出す。
ステップ86では、制御装置11は、ステップ84で送信された共通鍵を使用して、ステップ85で読み出したk個の暗号化されたシェアを復号する。ステップ87では、制御装置11は、ステップ86で復号したk個のシェアに基づいて、上述した秘密情報復元式を使用して、秘密鍵を復元する。復元した秘密鍵は、上述した決済サービスにおける仮想通貨のトランザクション履歴情報の署名に使用される。
図8で示した処理によって、コンピュータ端末1は、外部記憶装置19などに記憶されたUUID(任意選択で、秘密情報識別番号)によりサーバコンピュータ2に共通鍵を要求し、共通鍵を取得することができる。よって、よって、仮に、k個のシェアが第三者に取得された場合でも、共通鍵が取得されない限り、第三者は秘密情報を復元することができない。
なお、上述したn個のシェアまたはn個のUUIDなどが第三者に取得された場合など、秘密情報の漏洩を防止するために、例えば、鍵管理データテーブル700から、対象の鍵管理データレコードを無効にしてもよい。この場合、利用者の入力デバイス15を介した入力に応じて、コンピュータ端末1からがサーバコンピュータ2に、対象のデータレコードを無効にすることを指示する。
対象のデータレコードを無効にすることは、制御装置21が鍵管理データテーブル700から、対象のデータレコードを削除することを含んでもよい。また、無効にすることは、制御装置21が対象のデータレコードに含まれる状態704に、例えば、「1:無効」を設定することを含んでもよい。この場合、制御装置21は、ステップ83において対象の鍵管理データレコードを取得する際に状態704を参照し、「1:無効」が設定されている場合は、コンピュータ端末1にエラーメッセージを返してもよい。
以上のように、シェア分散システム10を説明した。シェア分散システム10によれば、生成したn個のシェアを暗号化し、暗号化に使用した共通鍵をサーバコンピュータ2に記憶するので、k個のシェアが第三者に取得されても秘密情報が漏洩せず、セキュリティを高めることができる。また、秘密情報ごとに共通鍵を生成し、UUIDと共にサーバコンピュータ2において管理するので、シェアを暗号化するための鍵の管理が容易になる。
上記実施形態で説明した式およびハードウェアの構成要素は例示的なものにすぎず、その他の構成も可能であることに留意されたい。また、上記実施形態で説明した処理の順序は、必ずしも説明した順序で実行される必要がなく、任意の順序で実行されてもよい。さらに、本発明の基本的な概念から逸脱することなく、追加のステップが新たに加えられてもよい。
また、シェア分散システム10は、コンピュータ端末1によって実行されるコンピュータプログラムによって実装されるが、当該コンピュータプログラムは、非一時的記憶媒体に記憶されてもよい。サーバコンピュータ2によって実行されるコンピュータプログラムも同様である。非一時的記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリ装置、内蔵ハードディスクおよび取外可能ディスク装置などの磁気媒体、光磁気媒体、ならびにCD−ROMディスクおよびデジタル多用途ディスク(DVD)などの光学媒体などを含む。
1 コンピュータ端末
2 サーバコンピュータ
3 ネットワーク
10 シェア分散システム
2 サーバコンピュータ
3 ネットワーク
10 シェア分散システム
Claims (8)
- 第1のコンピュータデバイスによって実行される方法であって、
秘密情報に基づいて、n個のシェアを生成するステップであって、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2である、ステップと、
前記n個のシェアに対応するn個の第1の識別番号を生成するステップと、
共通鍵を使用して、前記n個のシェアを暗号化するステップと、
前記n個の第1の識別番号、および前記暗号化したn個のシェアを記憶装置に記憶するステップと、
前記n個の第1の識別番号および前記共通鍵を、第2のコンピュータデバイスに送信するステップと
を備えたことを特徴とする方法。 - 前記n個の第1の識別番号、および前記暗号化したn個のシェアを記憶するステップは、前記n個の第1の識別番号のそれぞれと、前記暗号化したn個のシェアのそれぞれを1対1で記憶するステップを含む請求項1に記載の方法。
- 前記n個の第1の識別番号のうちのいずれか、および前記n個の暗号化したシェアのうち少なくともk個の暗号化したシェアを前記記憶装置から読み出すステップと、
前記読み出した第1の識別番号によって、前記第2のコンピュータデバイスに前記共通鍵を要求するステップと、
前記共通鍵を前記第2のコンピュータデバイスから受信するステップと、
前記共通鍵を使用して、前記k個の暗号化したシェアを復号するステップと
をさらに備えたことを特徴とする請求項1または2に記載の方法。 - 前記秘密情報に基づいて、前記秘密情報に対応する第2の識別番号を生成するステップと、
前記第2の識別番号を前記第2のコンピュータデバイスに送信するステップと、
前記第2の識別番号の入力を受け付けるステップと、
前記読み出した第1の識別番号と共に、前記受け付けた第2の識別番号によって、前記第2のコンピュータデバイスに前記共通鍵を要求するステップと、
をさらに備えたことを特徴とする請求項3に記載の方法。 - 第1のコンピュータデバイスであって、
秘密情報に基づいて、n個のシェアを生成し、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2であり、
前記n個のシェアに対応するn個の第1の識別番号を生成し、
共通鍵を使用して、前記n個のシェアを暗号化し、
前記n個の第1の識別番号、および前記暗号化したn個のシェアを記憶装置に記憶する
ように構成された制御装置と、
前記n個の第1の識別番号、および前記共通鍵を、第2のコンピュータデバイスに送信するように構成された通信装置と
を備えたことを特徴とする第1のコンピュータデバイス。 - 第1のコンピュータデバイスおよび第2のコンピュータデバイスを含むシェア分散システムによって実行される方法であって、
前記第1のコンピュータデバイスによって、
秘密情報に基づいて、n個のシェアを生成するステップであって、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2である、ステップと、
前記n個のシェアに対応するn個の第1の識別番号を生成するステップと、
共通鍵を使用して、前記n個のシェアを暗号化するステップと、
前記n個の第1の識別番号、および前記暗号化したn個のシェアを第1の記憶装置に記憶するステップと、
前記n個の第1の識別番号および前記共通鍵を、第2のコンピュータデバイスに送信するステップと、
前記第2のコンピュータデバイスによって、
前記n個の第1の識別番号および前記共通鍵を受信するステップと、
前記n個の第1の識別番号および前記共通鍵を、前記秘密情報と関連付けて第2の記憶装置に記憶するステップと
を備えたことを特徴とする方法。 - 第1のコンピュータデバイスおよび第2のコンピュータデバイスを備えたシェア分散システムであって、
前記第1のコンピュータデバイスは、
秘密情報に基づいて、n個のシェアを生成し、前記秘密情報は、前記n個のシェアのうちの少なくともk個のシェアを使用して復元可能であり、n>=k>=2であり、
前記n個のシェアに対応するn個の第1の識別番号を生成し、
共通鍵を使用して、前記n個のシェアを暗号化し、
前記n個の第1の識別番号、および前記暗号化したn個のシェアを第1の記憶装置に記憶し、
前記n個の第1の識別番号および前記共通鍵を、第2のコンピュータデバイスに送信するように構成され、
前記第2のコンピュータデバイスは、
前記n個の第1の識別番号および前記共通鍵を受信し、
前記n個の第1の識別番号および前記共通鍵を、前記秘密情報と関連付けて第2の記憶装置に記憶するように構成されている
ことを特徴とするシェア分散システム。 - コンピュータ実行可能命令を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、コンピュータによって実行されると、前記コンピュータに請求項1乃至4のいずれか一項に記載の方法を実行させることを特徴とするコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019096139A JP2020191552A (ja) | 2019-05-22 | 2019-05-22 | シェア分散システムおよび方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019096139A JP2020191552A (ja) | 2019-05-22 | 2019-05-22 | シェア分散システムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020191552A true JP2020191552A (ja) | 2020-11-26 |
Family
ID=73454759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019096139A Pending JP2020191552A (ja) | 2019-05-22 | 2019-05-22 | シェア分散システムおよび方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020191552A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023276740A1 (ja) * | 2021-06-30 | 2023-01-05 | 学校法人東京理科大学 | 第三者装置、秘匿計算システム、及びプログラム |
-
2019
- 2019-05-22 JP JP2019096139A patent/JP2020191552A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023276740A1 (ja) * | 2021-06-30 | 2023-01-05 | 学校法人東京理科大学 | 第三者装置、秘匿計算システム、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2016228544B2 (en) | Mutual authentication of software layers | |
TWI764043B (zh) | 社交密鑰恢復的方法及相關裝置 | |
US20160192194A1 (en) | Secure way to build internet credit system and protect private information | |
US20160294794A1 (en) | Security System For Data Communications Including Key Management And Privacy | |
CN106537432A (zh) | 对存储加密货币的钱包进行安全访问的方法及装置 | |
KR20200118303A (ko) | 월렛 앱이 설치된 소유 디바이스 및/또는 블록체인 노드에 키를 분산 저장하는 비밀 키 보안 방법 | |
US9686251B2 (en) | Devices and techniques for controlling disclosure of sensitive information | |
JP6566278B1 (ja) | パーソナルデータ管理システム | |
EP3531365B1 (en) | Computer system, connection apparatus, and processing method using transaction | |
JPWO2020075396A1 (ja) | 推論装置、推論方法及び推論プログラム | |
EP3455763B1 (en) | Digital rights management for anonymous digital content sharing | |
EP4369652A1 (en) | Cold wallet apparatus and method of controlling the same | |
JP6909452B2 (ja) | 情報処理方法、情報処理装置、プログラムならびに情報処理システム | |
WO2018043466A1 (ja) | データ抽出システム、データ抽出方法、登録装置及びプログラム | |
US20230259926A1 (en) | Address generation method, blockchain information processing method, and related device | |
TWI678640B (zh) | 用於將為了復原機密資訊之機密資訊復原可能值分散記憶之利用電腦執行之方法及電腦設備 | |
CN114641772A (zh) | 用于安全密钥管理的系统、方法和计算机程序产品 | |
JP2020191552A (ja) | シェア分散システムおよび方法 | |
US20160203479A1 (en) | System and method for the protection of consumer financial data utilizing dynamic content shredding | |
US20220138760A1 (en) | Dynamic Ledger Address Masking | |
KR102289478B1 (ko) | 보안키 관리 방법 및 보안키 관리 서버 | |
JP6830635B1 (ja) | データ管理方法 | |
JP2013235535A (ja) | データ管理システムおよびデータ管理用プログラム | |
JP7041650B2 (ja) | 秘密鍵を再製するためのシステム | |
JP2015207205A (ja) | データ管理システム、データ管理方法及びデータ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190607 |