(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024065849
(43)【公開日】2024-05-15
(54)【発明の名称】データ保持システム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240508BHJP
H04L 9/08 20060101ALI20240508BHJP
【FI】
G09C1/00 650Z
H04L9/08 A
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022174915
(22)【出願日】2022-10-31
(71)【出願人】
【識別番号】000155469
【氏名又は名称】株式会社野村総合研究所
(74)【代理人】
【識別番号】100216677
【弁理士】
【氏名又は名称】坂次 哲也
(72)【発明者】
【氏名】川口 将司
(57)【要約】
【課題】秘密鍵などの元データから秘密分散により得られたシェアをより安全に保持する。
【解決手段】(m,n)秘密分散ベースのマルチパーティ計算(MPC)に利用されるn個のシェア32をn個のシェア保持サーバ4に分散して保持し、各シェア保持サーバ4において連携して、乱数に基づいて、元データ31の復元時に乱数の影響が相殺されるように各シェア32を更新して新たなリビジョンとするデータ保持システム1であって、(m-1)個のシェア保持サーバ4において同一のリビジョンのシェア32に対するアクセスが発生し、もしくは発生する可能性があるというアクセス状態である場合に、他の(n-(m-1))個のシェア保持サーバ4において、保持するシェア32に対するアクセスをロックする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
(m,n)秘密分散ベースのマルチパーティ計算(MPC)に利用されるn個のシェアをn個のシェア保持サーバに分散して保持し、前記各シェア保持サーバにおいて連携して、乱数に基づいて、元データの復元時に前記乱数の影響が相殺されるように各シェアを更新して新たなリビジョンとするデータ保持システムであって、
(m-1)個の前記シェア保持サーバにおいて同一のリビジョンのシェアに対するアクセスが発生し、もしくは発生する可能性があるというアクセス状態である場合に、他の(n-(m-1))個の前記シェア保持サーバにおいて、保持するシェアに対するアクセスをロックする、データ保持システム。
【請求項2】
請求項1に記載のデータ保持システムにおいて、
第1のシェア保持サーバは、自身が保持するシェアに対するアクセス要求が発生した場合、当該アクセスを許可する前に、他の(n-1)個の第2のシェア保持サーバに対して、アクセス要求が発生した旨のメッセージを送信し、
前記各第2のシェア保持サーバは、前記メッセージを受信した場合に、自身が保持するシェアについてアクセス状態にあるか否かを示す情報と、当該シェアのリビジョンの情報と、を含む応答を前記第1のシェア保持サーバに送信し、
前記第1のシェア保持サーバは、前記各第2のシェア保持サーバから受信した前記応答に基づいて、自身が保持するシェアのリビジョンと同一のリビジョンのシェアについてアクセス状態にある前記シェア保持サーバの数を集計する、データ保持システム。
【請求項3】
請求項2に記載のデータ保持システムにおいて、
前記第1のシェア保持サーバは、前記メッセージを送信した後、所定の時間の間、前記各第2のシェア保持サーバからの前記応答を受信し、前記所定の時間の経過後、前記応答を受信した前記各第2のシェア保持サーバの数n’と、受信した前記応答に基づいて集計した、アクセス状態にある前記シェア保持サーバの数m’と、に基づいて、(m-m’)が(n-n’)以下である場合に、保持するシェアに対するアクセスをロックする、データ保持システム。
【請求項4】
請求項3に記載のデータ保持システムにおいて、
前記第1のシェア保持サーバは、(m-m’)が(n-n’)以下である場合に、保持するシェアに対するアクセスをロックするのに代えて、当該シェアのリビジョンが更新されるのを待ち、当該シェアのリビジョンが更新された後に、他の(n-1)個の前記各第2のシェア保持サーバに対して改めて前記メッセージを送信する、データ保持システム。
【請求項5】
請求項2に記載のデータ保持システムにおいて、
前記第2のシェア保持サーバは、自身が保持するシェアに対するアクセス要求が発生した場合に、アクセスを許可するか否かを判定する前であっても、前記第1のシェア保持サーバから送信された前記メッセージを受信した場合に、自身が保持するシェアについてアクセス状態にある旨の前記応答を送信する、データ保持システム。
【請求項6】
請求項2に記載のデータ保持システムにおいて、
前記第2のシェア保持サーバは、前記第1のシェア保持サーバから受信した前記メッセージに対して、自身が保持するシェアについてアクセス状態にない旨の前記応答を送信した場合、その後第1の期間の間、第2の期間毎に継続的に、自身が保持するシェアについてアクセス状態にあるか否かの情報を含む前記応答を送信する、データ保持システム。
【請求項7】
請求項2に記載のデータ保持システムにおいて、
前記第2のシェア保持サーバは、前記第1のシェア保持サーバからの前記メッセージの受信の有無に関わらず、他の(n-1)個の前記シェア保持サーバに対して、第2の期間毎に継続的に、自身が保持するシェアについてアクセス状態にあるか否かの情報を含む前記応答を送信する、データ保持システム。
【請求項8】
請求項6に記載のデータ保持システムにおいて、
前記第1のシェア保持サーバは、自身が保持するシェアに対するアクセス要求が発生した場合、当該アクセスを許可する前に、前記第1の期間の間、前記各第2のシェア保持サーバからの前記応答を受信し、前記第1の期間の経過後、前記各第2のシェア保持サーバから受信した前記応答のうち最新のリビジョンのものに基づいて、自身が保持するシェアのリビジョンと同一のリビジョンのシェアについてアクセス状態にある前記シェア保持サーバの数を集計する、データ保持システム。
【請求項9】
請求項8に記載のデータ保持システムにおいて、
前記第1のシェア保持サーバは、自身が保持するシェアに対するアクセス要求が発生してから前記第1の期間の経過時点が、当該シェアのリビジョンの更新時点から第3の期間が経過するまでの間にある場合、前記第1の期間の後さらに前記第3の期間が経過するまでの間、前記各第2のシェア保持サーバからの前記応答を受信し、前記第1の期間の後さらに前記第3の期間が経過した後に、前記各第2のシェア保持サーバから受信した前記応答のうち最新のリビジョンのものに基づいて、自身が保持するシェアのリビジョンと同一のリビジョンのシェアについてアクセス状態にある前記シェア保持サーバの数を集計する、データ保持システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを保持する技術に関し、特に、秘密分散法により分割されたデータを保持するデータ保持システムに適用して有効な技術に関するものである。
【背景技術】
【0002】
ブロックチェーン技術を利用した暗号資産(仮想通貨)の普及が進んでいる。暗号資産の送金等の際には利用者のアカウントの秘密鍵によって署名がされることから、秘密鍵は秘匿して管理し、利用者以外の他人に知られないように管理しなければならない。
【0003】
秘密鍵の秘匿管理においては、例えば、パスワードと暗号化による秘匿の場合はパスワードの漏洩によって容易に復号されてしまうリスクがある。そこで、いわゆる秘密分散の技術を利用して、秘密鍵のデータを複数のシェア(所定の数以上集めなければ元の秘密鍵を復元できないようなデータ)に分割し、分割したシェアをそれぞれ異なるサーバや異なるパーティによる管理下に分散して保持するという手法もとられている。
【0004】
このとき、署名等の処理を行うために、シェアの形で秘密分散されている状態から元の秘密鍵のデータを都度復元するものとすると、復元されて秘密鍵として存在している間に漏洩等が生じてしまうリスクがある。そこで、シェアの形で秘密分散された状態のまま演算を行って結果を得るという秘密分散ベースのマルチパーティ計算(Multi-Party Computation、MPC)の技術を用いて、シェアの形で秘密分散された秘密鍵を復元せずに署名等の処理を行う技術も用いられている。
【0005】
このような技術により、秘密鍵のセキュリティは大きく強化されているが、秘密分散技術によってもセキュリティを完全に維持することはできない。例えば、シェアを保持している各パーティにおいてシェアにアクセスできる権限を持った管理者等が、結託して必要な数以上のシェアを取得する(管理者等の能力不足によりシェアが流出することも含む)ことで秘密鍵を復元することができてしまう。
【0006】
このようにMPCの参加者が結託することによる秘密の漏洩への対策に係る技術として、例えば、特開2021-128261号公報(特許文献1)には、MPCに参加する各装置が有するシェアの値を、各環境において定期的に乱数によって更新するものとし、当該乱数によってそれぞれ更新された各装置のシェアを合わせると、当該乱数による影響が相殺されて元のデータが復元されるように設計されており、さらに、定期的に更新されるシェアのリビジョンと、当該リビジョンのシェアに対するアクセスの履歴情報とを対応付けて記録することが記載されている。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に記載されたような従来技術によれば、同じリビジョンのシェアが所定の数以上流出しない限り元の秘密鍵が流出することはないことから、各パーティの管理者等が結託するにしても時間的に制限を設けることができ、安全性を高めることができるとともに、仮に同じリビジョンのシェアが所定の数以上流出したとしても、アクセスの履歴情報が対応付けられていることから、結託した管理者等を絞り込むことができ、トレーサビリティを高めるとともに結託に対する抑止力とすることもできる。
【0009】
一方で、このような対策を施したとしても、管理者等が結託して同じリビジョンのシェアを流出させて秘密鍵を得ることが困難とはなるものの、全くできなくなるわけではない。また、シェアを流出させた管理者等を後から絞り込むことが可能ではあるとはいえ、流出自体がなかったことになるわけではない。しかし、秘密鍵の流出は暗号資産の流出につながることから厳に回避することが要求される。
【0010】
そこで本発明の目的は、秘密鍵などの元データから秘密分散により得られたシェアをより安全に保持するデータ保持システムを提供することにある。
【0011】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【0013】
本発明の代表的な実施の形態であるデータ保持システムは、(m,n)秘密分散ベースのマルチパーティ計算(MPC)に利用されるn個のシェアをn個のシェア保持サーバに分散して保持し、前記各シェア保持サーバにおいて連携して、乱数に基づいて、元データの復元時に前記乱数の影響が相殺されるように各シェアを更新して新たなリビジョンとするデータ保持システムであって、(m-1)個の前記シェア保持サーバにおいて同一のリビジョンのシェアに対するアクセスが発生し、もしくは発生する可能性があるというアクセス状態である場合に、他の(n-(m-1))個の前記シェア保持サーバにおいて、保持するシェアに対するアクセスをロックするものである。
【発明の効果】
【0014】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【0015】
すなわち、本発明の代表的な実施の形態によれば、秘密鍵などの元データから秘密分散により得られたシェアをより安全に保持することが可能となる。
【図面の簡単な説明】
【0016】
【
図1】本発明の一実施の形態であるデータ保持システムの構成例について概要を示した図である。
【
図2】本発明の一実施の形態におけるシェアの更新の例について概要を示した図である。
【
図3】本発明の一実施の形態におけるシェアの更新の例について概要を示した図である。
【
図4】本発明の一実施の形態における結託防止の仕組みの例について概要を示した図である。
【
図5】本発明の一実施の形態におけるデータ所有者端末の構成例について概要を示した図である。
【
図6】本発明の一実施の形態におけるデータ検証者端末の構成例について概要を示した図である。
【
図7】本発明の一実施の形態におけるシェア保持サーバの構成例について概要を示した図である。
【
図8】(a)、(b)は、本発明の一実施の形態におけるシェアをシェア保持サーバに分散保持する構成の例について概要を示した図である。
【
図9】本発明の一実施の形態におけるアクセスのロックに係る処理の流れの例について概要を示した図である。
【
図10】本発明の一実施の形態におけるアクセスのロックに係る処理の流れの他の例について概要を示した図である。
【
図11】(a)~(c)は、本発明の一実施の形態におけるアクセス要求が発生した際のアクセス可否の判定タイミングの例について概要を示した図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。一方で、ある図において符号を付して説明した部位について、他の図の説明の際に再度の図示はしないが同一の符号を付して言及する場合がある。
【0018】
<概要>
本発明の一実施の形態であるデータ保持システムは、上述の特許文献1に記載されたような、m-out-of-nの秘密分散(元データをn個のシェアに分散し、元データを復元するにはそのうちm個以上のシェアを必要とするもの。以下では「(m,n)秘密分散」と記載する場合がある)ベースのMPCに利用されるシェアを保持する仕組みである。
【0019】
特許文献1に記載された技術では、MPCに参加する各装置が有するシェアの値を、各環境において定期的に乱数によって更新するものとし、当該乱数によってそれぞれ更新された各装置のシェアを合わせると、当該乱数による影響が相殺されて元のデータが復元されるように設計されており、さらに、定期的に更新されるシェアのリビジョンと、当該リビジョンのシェアに対するアクセスの履歴情報とを対応付けて記録する。本実施の形態では、上記の仕組みにおいて、さらに、管理者等が結託して同じリビジョンのシェアを流出させて元のデータを得ることを防止することを可能とするものである。
【0020】
(m,n)秘密分散では、n個のシェアのうちm個以上を集めると元データを復元することができる一方、集めたシェアが(m-1)個までの場合は、元データを復元できないばかりでなく、元データについての何らのヒントも得ることができない(元データが取り得る範囲を絞り込むこともできない)。例えば、(2,2)秘密分散の例として、元データをS、2つのシェアをS1、S2とすると、
S=(S1+S2)mod P (式1)
もしくは
S=S1 XOR S2 (式2)
の式を満たすものとしてシェアを得ることができる。なお、上記の式1において「+」の演算子は加算であり、Pは素数もしくはガロア拡大体(2k(kはSのビット長以上の任意の整数))である。また、式2において「XOR」の演算子は排他的論理和である。以下に説明する本実施の形態では、上記の式1を用いてシェアを生成するものとするが、式2を用いる場合でも同様に適用することができる。
【0021】
図2、
図3は、本発明の一実施の形態におけるシェアの更新の例について概要を示した図である。例えば、左端に示すように、元データが「7」である場合、上記の式1において法P=16、すなわち16で巡回する環境を考えると、図示するようにシェアA(S
1)=15、シェアB(S
2)=8とすれば、式1により、
(15+8)mod16=7
となり、元データの7を復元することができる。
【0022】
上述したように、本実施の形態では、特許文献1の仕組みと同様に、各環境において定期的に乱数によってシェアを更新するものとし、当該乱数によってそれぞれ更新された各装置のシェアを合わせると、当該乱数による影響が相殺されて元のデータが復元されるようにする。例えば、シェア更新用の乱数を生成し、シェアAには当該乱数を加算する一方で、シェアBから当該乱数を減算することでシェアAとシェアBを上記の式1により加算したときの影響を相殺することができる。
【0023】
乱数による更新の影響を相殺する他の例として、シェアAには更新用の乱数を加算する一方で、シェアBには、法16の元でゼロとなる値を加算することも可能である。
図2の例では、左端の状態に対して、シェア更新用の乱数として「3」が生成された場合、シェアAには「3」を加算する一方、シェアBには、3との組み合わせで法16の元でゼロとなる値である「13」を加算する。この場合、シェアAとシェアBにそれぞれ加算した値を法16の元で合計するとゼロとなることから、上記に式1において元データに与える影響はゼロとなる。次も同様に、シェア更新用の乱数として「6」が生成された場合、シェアAには「6」を加算する一方、シェアBには6との組み合わせで法16の元でゼロとなる値である「10」を加算することで、元データに与える影響をゼロとしつつシェアを更新することができる。以降の例も同様である。
【0024】
図2の例において各シェアに更新用の値を順次加算してシェアの値を計算していったときの例を
図3に示している。左端のシェアAの値「15」を更新する際、
図2の例に示すように法16の元で「3」を加算すると、
(15+3)mod16=2
となって、シェアAの値は「2」となる。同様に、シェアBの値「8」を更新する際、
図2の例に示すように法16の元で「13」を加算すると、
(8+13)mod16=5
となって、シェアBの値は「5」となる。ここで更新後のシェアAとシェアBから、式1により、
(2+5)mod16=7
として元データの「7」を復元することができる。
図3に示す以降の例も同様である。このようにそれぞれ同じ更新用の乱数に基づいて順次更新された、すなわち同じリビジョンのシェアAとシェアBからは元データを正しく復元することができる一方、対応するシェアAとシェアBではないずれた関係、すなわち異なるリビジョンのシェアAとシェアBとでは、正しく元データを復元することができないことが分かる。
【0025】
図4は、本発明の一実施の形態における結託防止の仕組みの例について概要を示した図である。
図4の例では、上述したような手法により元データから生成したシェアAとシェアBを異なる環境(サーバ)上に分散保管し、各環境において乱数により各シェアを順次更新していく状況を示している。なお、各環境においてリビジョンの情報は管理されており、リビジョンを更新するタイミングも共有されているものとする。例えば、1日1回24時のタイミングで更新するとか、10分に1回更新するなど、定期的な更新タイミングを取り決めておいて各環境がそれに従うようにしてもよいし、更新タイミングは不定期だが、各環境が通信により相互に合意形成してリビジョン更新のタイミングの同期をとるようにしてもよい。
【0026】
上述したように、同じリビジョンのシェア同士でなければ正しく元データを復元することができないため、例えば、図中の「シェアA1」や「シェアA4」、「シェアB5」のように、各環境の管理者等がシェアにアクセスしてこれを入手したとしても、同一リビジョンの対応するシェアが合計でm個以上(
図4の例では2個)アクセスされていない限り、元データが漏洩することはない。
【0027】
一方で、「シェアA2」および「シェアB2」のように、各環境の管理者等により同一リビジョンのシェアが結託してアクセスされた場合には元データが復元されてしまう。しかし、同一リビジョンのシェアにアクセスするには同一時間帯にアクセスする必要があることから、各環境でのアクセス履歴を記録しておくことで事後的にデータ漏洩をもたらした管理者等を絞り込むことができ、トレーサビリティを向上させるとともに抑止力とすることもできる。
【0028】
特許文献1に記載された技術は、シェアの値を更新することで機密性を高めるProactive Secret Sharing(PSS)という手法を定期的に実施した上で、各環境においてシェアに対するアクセス履歴を残すことで、不正に元のデータを復元しようとした者を特定しようとする技術であった。これに対し、本発明の一実施の形態であるデータ保持システムは、(m-1)個の環境(パーティ、サーバ)においてシェアへのアクセスが発生したとき、まだアクセスが発生していない残りの(n-(m-1))個の環境上でシェアへのアクセスをロックすることで、m個以上のシェアが取得されて元のデータが復元されることを防止するものである。
【0029】
この仕組みによる場合、基本的には元のデータを一切復元することができなくなる。一方で、例えば、暗号資産(仮想通貨)を保持するためのウォレットプログラムにおいて管理されている秘密鍵のようなデータについては、シェアの状態でMPCによる署名等の限られた計算処理を行うことができればよく、元のデータを復元する必要は全く生じない(もしくはほぼない)。このような用途においては、元のデータを復元することができなくても特段の問題はなく、むしろ秘密鍵などの元のデータの漏洩を高いレベルで防止することができる。
【0030】
なお、上述したように、本実施の形態ではPSSの手法によりシェアの値を更新しているが、PSSの手法は上記で例示したものに限られるものではない。加法的秘密分散法に基づくPSSであれば任意の手法を採用することができる。
【0031】
<システム構成>
図1は、本発明の一実施の形態であるデータ保持システムの構成例について概要を示した図である。データ保持システム1は、例えば、n個以上のシェア保持サーバ4から構成される。
図1の例では、元データ31を所有するデータ所有者2が使用するデータ所有者端末3において(2,2)秘密分散により生成された2つのシェアを保持するものとして、シェア保持サーバA(4a)とシェア保持サーバB(4b)の2つを有する構成を示している。図中では、各シェア保持サーバ4によるMPCの計算結果である結果データ61を検証するデータ検証者5が使用するデータ検証者端末6についても示している。データ保持システム1として、データ所有者端末3やデータ検証者端末6まで含む構成であってもよい。 なお、各シェア保持サーバ4とデータ所有者端末3の間、および各シェア保持サーバ4とデータ検証者端末6の間はそれぞれ、図示しないインターネット等のネットワークにより通信可能に構成される。
【0032】
各シェア保持サーバ4は、それぞれサーバ機器やクラウドコンピューティングサービス上に構築された仮想サーバ、PC等により構成され、図示しないCPU(Central Processing Unit)により、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記録装置からメモリ上に展開したOS(Operating System)やDBMS(DataBase Management System)、Webサーバプログラム等のミドルウェアや、その上で稼働するソフトウェアを実行することで、シェア32の保持とMPCに係る各種機能を実現する。なお、各シェア保持サーバ4は、それぞれが独立した別の環境(パーティ)によって管理され、上記機能を実現できる限り具体的な構成は異なっていてもよい。
【0033】
データ所有者端末3およびデータ検証者端末6は、それぞれPCやタブレット端末、スマートフォン等の情報処理端末により構成され、図示しないCPUによりHDDやSSD等の記録装置からメモリ上に展開したOS等のミドルウェアや、その上で稼働するWebブラウザその他のソフトウェアを実行することで、シェア32の生成や分散保管、および結果データ61の検証等に係る各種機能を実現する。
【0034】
図1の例では、データ所有者端末3において元データ31からシェアA(32a)とシェアB(32b)の2つのシェア32を生成し、それぞれをシェア保持サーバA(4a)とシェア保持サーバB(4b)に保持することを示している。一方で、シェア保持サーバA(4a)とシェア保持サーバB(4b)との間でシェアA(32a)とシェアB(32b)に対して行ったMPCの計算処理の結果である結果シェアA(62a)と結果シェアB(62b)の2つの結果シェア62をデータ検証者端末6が取得して、結果データ61を復元して計算処理の結果を検証することを示している。
【0035】
図5は、本発明の一実施の形態におけるデータ所有者端末3の構成例について概要を示した図である。データ所有者端末3は、例えば、ソフトウェアとして実装されたシェア生成部33および分散処理部34などの各部を有する。シェア生成部33は、元データ31に対して(m,n)秘密分散によりn個のシェア32を生成する機能を有する。また、分散処理部34は、シェア生成部33により生成されたn個のシェア32を、それぞれ異なるn個のシェア保持サーバ4に送信して分散保管する機能を有する。
【0036】
図6は、本発明の一実施の形態におけるデータ検証者端末6の構成例について概要を示した図である。データ検証者端末6は、例えば、ソフトウェアとして実装されたシェア収集部63およびデータ検証部64などの各部を有する。シェア収集部33は、m個以上のシェア保持サーバ4から、各シェア保持サーバ4でのMPCの計算処理の結果であるm個以上の結果シェア62を取得する機能を有する。また、データ検証部64は、シェア収集部63により取得したm個以上の結果シェア62から結果データ61を復元して、MPCの計算結果を得る機能を有する。計算結果に対して所定の処理を行い、処理結果を検証する機能を有していてもよい。
【0037】
図7は、本発明の一実施の形態におけるシェア保持サーバ4の構成例について概要を示した図である。シェア保持サーバ4は、例えば、ソフトウェアとして実装されたシェア管理部41、MPC計算部42、シェア更新用乱数取得部43、シェア更新部44、アクセス管理部45およびシェアロック部46などの各部を有する。また、データベースやファイルテーブル等により実装されたシェア管理データベース(DB)47およびアクセス履歴DB48などの各データストアを有する。
【0038】
シェア管理部41は、データ所有者端末3から送信されたシェア32をシェア管理DB47に記録して保持するとともに、シェア管理DB47に保持するシェア32に対する参照や更新、削除などの要求を受け付けて対応する処理を行う機能を有する。また、MPC計算部42は、他のシェア保持サーバ4に対して要求し、もしくは他のシェア保持サーバ4からの要求を受けて、シェア管理部41を介してシェア32を参照し、要求されたMPCの計算処理を行う機能を有する。計算結果の結果シェア62をシェア管理部41を介してシェア管理DB47に記録する機能を有していてもよい。
【0039】
シェア更新用乱数取得部43は、シェア管理DB47に保持しているシェア32に対する上述のPSSの実施として、シェア32の値を定期的に更新するための乱数を取得する機能を有し、シェア更新部44は、シェア更新用乱数取得部43により取得した乱数に基づいて、他のシェア保持サーバ4と連携もしくは同期してシェア32の値を更新し、新しいリビジョンのシェア32を生成する機能を有する。
【0040】
上述したように、本実施の形態では、各シェア保持サーバ4において定期的に乱数によってシェア32を更新するものとし、当該乱数に基づいてそれぞれ更新された各シェア保持サーバ4のシェア32(同じリビジョンのシェア32)を合わせると、当該乱数による影響が相殺されて元データ31が復元されるように設計されている。なお、更新用の乱数の生成は、例えば、図示しない他の乱数生成用サーバ等により行われて、ここから各シェア保持サーバ4が乱数を取得する構成としてもよいし、いずれかのシェア保持サーバ4のシェア更新用乱数取得部44が乱数を生成して、ここから他のシェア保持サーバ4がこれを取得する構成としてもよい。なお、シェア32が更新された場合、更新前の古いシェア32についてはシェア管理DB47から破棄・削除するようにしてもよい。
【0041】
アクセス管理部45は、シェア管理DB47に保持するシェア32に対するアクセス要求があった場合に、そのときのシェア32のリビジョンとアクセス要求や処理内容とを対応付けてアクセス履歴DB48に履歴情報として記録する機能を有する。
【0042】
シェアロック部46は、詳細は後述するが、他のシェア保持サーバ4と連携して、シェア管理DB47に保持するシェア32に対するアクセスの可否を判断し、所定の場合にアクセスをロックしてシェア32の取得を拒否する仕組みに係る機能を有する。上述したように、本実施の形態では、(m-1)個のシェア保持サーバ4においてシェア32へのアクセスが発生したとき、まだアクセスが発生していない残りの(n-(m-1))個のシェア保持サーバ4上でシェア32へのアクセスをロックすることで、管理者等が結託したとしてもm個以上のシェア32が取得されて元のデータが復元されることを防止する。
【0043】
<アクセスのロックの仕組み>
例えば上述の
図1に示したような、元データ31から秘密分散法によりシェア32(
図1の例ではシェアA(32a)とシェアB(32b))を生成してシェア保持サーバ4(
図1の例ではシェア保持サーバA(4a)とシェア保持サーバB(4b))に分散保持するような構成は以下の2つのパターンに分類することができる。
【0044】
図8は、本発明の一実施の形態におけるシェア32をシェア保持サーバ4に分散保持する構成の例について概要を示した図である。
図8(a)に示すパターン1は、各シェア保持サーバ4(
図8の例ではシェア保持サーバA(4a)とシェア保持サーバB(4b))が互いの所在(IPアドレス等)を知っていて直接通信することができる構成である。例えば、各シェア保持サーバ4において秘密分散法によるMPCを行うような形態などが該当する。
図8(b)に示すパターン2は、各シェア保持サーバ4が他のシェア保持サーバ4と直接通信する手段を有するとは限らない構成である。例えば、互いの所在(IPアドレス等)が隠蔽された状態で運用されていたり、互いに異なるネットワークで管理されていたり(ネットワークが分断されている)といった状況が該当する。
【0045】
パターン2の場合、各シェア保持サーバ4のいずれか、もしくは各シェア保持サーバ4以外のサーバ等が仲介役となって、間接的に各シェア保持サーバ4間の通信を行うことで、パターン1の場合と同様の処理を行うことが可能である。
図8(b)の例では、仲介役としてシェア保持サーバ4以外の仲介サーバ7を設けた構成を示している。シェア保持サーバA(4a)とシェア保持サーバB(4b)は、直接通信することはできないが、それぞれ仲介サーバ7を介することで相互に通信することができる。なお、仲介サーバ7の役割を、例えば、元データ31を保持するデータ所有者端末3など、元データ31にアクセスすることができる装置が担う構成とすることも可能である。
【0046】
図9は、本発明の一実施の形態におけるアクセスのロックに係る処理の流れの例について概要を示した図である。各シェア保持サーバ4においてシェア32に対するアクセスがロックされていない状況で、例えば、新たにシェア32に対するアクセス要求が発生(S01)したシェア保持サーバ(
図9の例では、シェア保持サーバA(4a))は、アクセス要求をしてきたユーザにアクセスを許可する前に、シェアロック部46等により、他の(n-1)個の全てのシェア保持サーバ4に対して「アクセス要求が発生した」旨のメッセージを送信して通知する(S02)。
【0047】
メッセージを受信した(n-1)個の各シェア保持サーバ4では、アクセス管理部45等により、自身が保持するシェア32に対するアクセスの状態を確認し(S03)、アクセス状態にあるか否かを示す情報と、シェア32の現在のリビジョンの情報を、メッセージ送信元のシェア保持サーバ4に応答する(S04)。応答に含まれるアクセス状態にあるか否かを示す情報としては、例えば、アクセス状態であるか否かのBOOL値もしくはアクセス数(アクセスしているプロセスの数等)などとすることが可能である。
【0048】
自身以外の(n-1)個の全てのシェア保持サーバ4から応答を受信したシェア保持サーバA(4a)では、シェアロック部46により、受信した応答のうち自身が保持するシェアA(32a)のリビジョンと同一のリビジョンである応答について、アクセス状態にあるものを抽出し、その数を集計して、現在アクセス状態にあるシェア保持サーバ4(パーティ)の数m’とする(S05)。そして、m’が(m-1)未満であるか否かを判定し(S06)、(m-1)未満の場合は、ユーザからのアクセス要求を許可しても全体でm個以上のシェア32が取得されることにはならないので、アクセス要求を許可する(S07)。一方、m’が(m-1)以上の場合、ユーザからのアクセス要求を許可すると全体でm個以上のシェア32が取得されることになるため、アクセス要求を拒否する(S08)。
【0049】
上記の処理の流れは、シェア保持サーバA(4a)以外の(n-1)個の全てのシェア保持サーバ4から応答が送信された場合の正常系の例であるが、全てのシェア保持サーバ4が応答可能な状態にあるとは限らず、一部もしくは全部のシェア保持サーバ4から応答が得られないという異常系も想定する必要がある。そこで本実施の形態では、メッセージ送信元のシェア保持サーバ4における応答の待ち時間に上限を設けてタイムアウト処理を行うものとする。
【0050】
図10は、本発明の一実施の形態におけるアクセスのロックに係る処理の流れの他の例について概要を示した図である。図中のステップS11~S14までの一連の処理は、上述の
図9におけるステップS01~S04までと同様であるため再度の説明は省略する。
【0051】
ステップS12で「アクセス要求が発生した」旨のメッセージを送信したシェア保持サーバA(4a)では、タイムアウトに達したか否かを判定し(S15)、タイムアウトに達するまでは、それまでに受信した応答の数n’が(n-1)個に達したか否かを判定する(S16)。自身以外の他の(n-1)個の全てのシェア保持サーバ4から応答を受信した場合(ステップS16でYes)もしくはタイムアウトに達した場合(ステップS15でYes)は、それまでに受信した応答に基づいて、
図9のステップS05と同様の処理により、現在アクセス状態にあるシェア保持サーバ4(パーティ)の数m’を集計する(S17)。
【0052】
その後、アクセス要求に対する可否を判断する。受信した応答の数n’に対して、応答を受け取れなかったシェア保持サーバ4の数は(n-n’)である。この値が、元データ31を復元するのに最低限必要なシェア32の数mと、アクセス状態にあるシェア保持サーバ4の数m’の差分である(m-m’)よりも少ない場合は、仮に応答を受け取れなかった(n-n’)個のシェア保持サーバ4が全てアクセス状態にあったとしても、全体でm個以上のシェア32が取得されることはないため、元データ31を復元されることはないといえる。
【0053】
したがって、(n-n’)が(m-m’)より少ないか否かを判定し(S18)、少ない場合はユーザからのアクセス要求を許可する(S19)。一方、(n-n’)が(m-m’)以上である場合は、全体でm個以上のシェア32が取得されてしまう可能性があるため、ユーザからのアクセス要求を拒否する(S20)。もしくは、アクセス要求の拒否に代えて、例えば「アクセス許可待ち状態」とし、シェア32のリビジョンが更新されたタイミングでステップS11に戻り、他の(n-1)個の全てのシェア保持サーバ4に対して「アクセス要求が発生した」旨のメッセージを再送するようにしてもよい。
【0054】
以上に示した手法では、シェア32へのアクセス要求を受けたシェア保持サーバ4が、他の(n-1)個の全てのシェア保持サーバ4に対してその旨のメッセージを送信し、これに対する応答からアクセス状態にあるシェア保持サーバ4の数を集計することで、全体でm個以上のシェア32が取得されてしまう可能性があるか否かによりアクセス可否を判断している。
【0055】
しかしながら、上述したような手法では、シェア32に対するアクセス要求が発生してから実際にアクセスの可否を判定するまでにタイムラグがあることから、例えば、複数のシェア保持サーバ4に同時にアクセス要求が発生した場合や、シェア32のリビジョンの更新のタイミング付近でのアクセス要求に対して許可を与えたシェア保持サーバ4がある場合などでは、本来許可すべきではないアクセス要求に対して許可したり、逆に許可すべきアクセス要求に対して拒否してロックしてしまったりといった状況に陥る可能性がある。
【0056】
このような状況を回避するため、本実施の形態では、例えば、アクセス要求が発生したシェア保持サーバ4では、アクセス管理部45やシェアロック部46により、アクセスを許可する前であっても、既にアクセス状態にあるものとみなして、他のシェア保持サーバ4からアクセス要求が発生した旨のメッセージを受信した場合に、アクセス状態にある(もしくはアクセス数>0)旨を応答するものとする。
【0057】
一方で、他のシェア保持サーバ4からアクセス要求が発生した旨のメッセージを受信した際に、アクセス状態にない(もしくはアクセス数<1)旨を応答したシェア保持サーバ4については、引き続きT1秒間の間、T2秒毎に現在のアクセス状態を継続的に応答するものとする(T1およびT2はいずれも任意の値であり適宜調整可能)。もしくは、他のシェア保持サーバ4からのアクセス要求が発生した旨のメッセージの受信の有無に関わらず、各シェア保持サーバ4は、他の(n-1)個の全てのシェア保持サーバ4に対してT2秒毎に現在のアクセス状態を継続的に送信するものとしてもよい。
【0058】
そして、シェア32に対するアクセス要求が発生したシェア保持サーバ4では、その旨のメッセージを他の(n-1)個のシェア保持サーバ4に送信してから、アクセスの可否を判定する前に、T1秒間の間、他の(n-1)個のシェア保持サーバ4からの応答の受信を継続する。すなわち、アクセス要求が発生した旨のメッセージを送信してからT1秒間待った後にアクセス可否を判定する。
【0059】
図11は、本発明の一実施の形態におけるアクセス要求が発生した際のアクセス可否の判定タイミングの例について概要を示した図である。(a)~(c)の各図では、左から右方向への時系列で、シェア保持サーバ4においてアクセス要求が発生した時刻Tと、アクセスの可否を判定するタイミング、およびシェア32のリビジョンの更新タイミングを示している。
【0060】
図11(a)では、アクセス要求が発生した時刻TからT
1秒間経過後のタイミングでアクセス可否を判定しているが、その間リビジョンの更新はなく、アクセス可否を判定した後にリビジョンが更新された場合の例を示している。また、
図11(b)では、時刻TからT
1秒間経過する前にリビジョンの更新がされ、その後にアクセス可否を判定する場合の例を示している。
【0061】
このように、T
1秒間が経過するまでの間にリビジョンが更新される場合があることから、本実施の形態では、T
1秒間の間に他の各シェア保持サーバ4から受信した応答(同一のシェア保持サーバ4からT
2秒毎に継続的に送信されるものも含む)について、シェア保持サーバ4毎に最新のリビジョンのもののみを残し、これに基づいて、自身が保持する現在のシェア32のリビジョンと同一のリビジョンであり、かつアクセス状態にあるシェア保持サーバ4の数を集計してm’とする。その後のアクセス可否の判定に係る処理は、上述した
図9のステップS06や
図10のステップS18と同様である。
【0062】
図11(c)は、リビジョンの更新時刻からアクセス可否を判定するタイミング(アクセス要求が発生した時刻TからT
1秒間経過後)までの間が短すぎる場合の例を示している。この場合、更新後の古いリビジョンに基づいてアクセス可否が判定されてしまう危険性がある。そこで、この場合、すなわち
図11(c)の例に示すように、時刻TからT
1秒間経過後の時刻(図中の点線の△印)が、リビジョン更新時刻からT
3秒間(T
3は任意の値)の間にある場合は、時刻Tからアクセス可否を判定するまでの待ち時間を、T
1秒間から(T
1+T
3)秒間に延長して、リビジョン更新時刻から十分な時間が経過した後にアクセス可否を判定するようにしてもよい。これにより、リビジョンの更新タイミング近辺でのアクセス要求に対しても、アクセス可否をより適切に判断することが可能となる。
【0063】
以上に説明したように、本発明の一実施の形態であるデータ保持システム1によれば、(m-1)個のシェア保持サーバ4においてシェア32に対するアクセス状態にある、すなわち、シェア32へのアクセスが発生し、もしくは発生する可能性があるとき、まだアクセスが発生していない残りの(n-(m-1))個のシェア保持サーバ4上でシェア32へのアクセスをロックすることで、m個以上のシェア32が取得されて元データ31が復元されることを防止することが可能となる。
【0064】
なお、上述したように、本実施の形態によれば基本的には元データ31を一切復元することができなくなるが、暗号資産(仮想通貨)を保持するためのウォレットプログラムにおいて管理されている秘密鍵のようなデータについては、シェア32の状態のままでMPCによる署名等の限られた計算処理を行うことができればよく、元データ31を復元する必要は全く生じない(もしくはほぼない)。このような用途においては、元データ31を復元することができなくても特段の問題はなく、むしろ秘密鍵などの元データ31の漏洩を高いレベルで防止することができるため、特に有効である。
【0065】
一方で、例えば、MPCを行うシェア保持サーバ4などでは、複数のシェア保持サーバ4においてMPCの計算処理のためにシェア32に対するアクセスが頻繁に行われることがあり、MPCを実行するプロセスがシェア32へのアクセスをロックされてしまうと支障が生じ得る。したがって、このようなプロセスについてはロックの対象から個別に除外する構成とすることも可能である。例えば、m個以上のシェア保持サーバ4でのシェア32へのアクセスを許可してもよいというプロセスをホワイトリストとしてまとめ、各シェア保持サーバ4においてシェア32に対するアクセス状態を調べる際に、ホワイトリストに含まれているプロセスについてはアクセス数に含めないようにするなどの実装が考えられる。
【0066】
同様に、例えば、各国の法律に基づいて特別に許可もしくは要求されるデータへのアクセス(例えば、各種照会制度等)に対応するために特権アカウントを用意し、当該特権アカウントによるアクセスをアクセス数に含めないようにする構成とすることも可能である。
【0067】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。また、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0068】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD等の記録装置、またはICカード、SDカード、DVD等の記録媒体に置くことができる。
【0069】
また、上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【産業上の利用可能性】
【0070】
本発明は、イベントや行為、事実等を証明するイベント証明システムに利用可能である。
【符号の説明】
【0071】
1…データ保持システム、2…データ所有者、3…データ所有者端末、4…シェア保持サーバ、4a…シェア保持サーバA、4b…シェア保持サーバB、5…データ検証者、6…データ検証者端末、7…仲介サーバ、
31…元データ、32…シェア、32a…シェアA、32b…シェアB、33…シェア生成部、34…分散処理部、
41…シェア管理部、42…MPC計算部、43…シェア更新用乱数取得部、44…シェア更新部、45…アクセス管理部、46…シェアロック部、47…シェア管理DB、48…アクセス履歴DB、
61…結果データ、62…結果シェア、62a…結果シェアA、62b…結果シェアB
63…シェア収集部、64…データ検証部