(57)【特許請求の範囲】
【請求項１】
nを所定の３以上の整数とし，kをn未満の所定の正の整数とし，xをk以上n未満の整数として，(k,n)秘密分散法により分散されたn個の分散データの１つをそれぞれ格納するn個の秘密計算サーバと，
上記n個の秘密計算サーバのそれぞれが，秘密計算可能な状態であるかを判断する判断部と，秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択部とを含む管理サーバと，を含み，
上記選択されたx個の秘密計算サーバは，上記選択されたx個の秘密計算サーバにそれぞれ１つずつ格納された全部でx個の分散データに基づいて秘密計算が可能である
秘密計算システム。
【請求項２】
判断部が，nを所定の３以上の整数とし，kをn未満の所定の正の整数とし，xをk以上n未満の整数として，(k,n)秘密分散法により分散されたn個の分散データの１つをそれぞれ格納するn個の秘密計算サーバのそれぞれが，秘密計算可能な状態であるかを判断する判断ステップと，
選択部が，秘密計算可能な状態であると判断された秘密計算サーバの中からx
個の秘密計算サーバを選択する選択ステップと，を含み，
上記選択されたx個の秘密計算サーバは，上記選択されたx個の秘密計算サーバにそれぞれ１つずつ格納された全部でx個の分散データに基づいて秘密計算が可能である，
秘密計算方法。
【請求項３】
nを所定の３以上の整数とし，kをn未満の所定の正の整数とし，xをk以上n未満の整数として，(k,n)秘密分散法により分散されたn個の分散データの１つをそれぞれ格納するn個の秘密計算サーバと，
上記n個の秘密計算サーバのそれぞれが，秘密計算可能な状態であるかを判断する判断部と，秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択部と，を含み，
上記選択されたx個の秘密計算サーバは，上記選択されたx個の秘密計算サーバにそれぞれ１つずつ格納された全部でx個の分散データに基づいて秘密計算が可能である，
管理サーバ。
【請求項４】
請求項３の管理サーバの各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術に関する。
【背景技術】
【０００２】
n個のサーバで秘密計算をする技術として、特許文献１に記載された秘密計算技術が知られている（例えば、特許文献１参照。）。
【０００３】
また、サーバの障害に対する備えとして、事前に用意した予備のサーバに切り替えることでシステム全体の機能を維持する方法が一般的に知られている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】特願２０１４−１３０８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
秘密計算によるデータの統計分析等の各種演算処理を例えば行うn台のサーバのうち、1台でも障害が発生すると分析処理を継続できなくなる。このため、単一障害点を持たない構成にするためにn個のサーバのそれぞれに予備のサーバを用意することによりサーバを冗長化すると、最低でも2n台もの計算サーバが必要になる。
【０００６】
この発明は、従来よりも少ない数のサーバで冗長化された秘密計算システム並びに管理サーバ及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様による秘密計算システムは、nを所定の３以上の整数とし、kをn未満の所定の正の整数とし、xをk以上n未満の整数として、(k,n)秘密分散法により分散されたn個の分散データをそれぞれ格納するn個の秘密計算サーバと、n個の秘密計算サーバのそれぞれが、秘密計算可能な状態であるかを判断する判断部と、秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択部とを含む管理サーバと、を備え、選択されたx個の秘密計算サーバは、選択されたx個の秘密計算サーバにそれぞれ格納されたx個の分散データに基づいて秘密計算が可能である。
【０００８】
本発明の一態様による秘密計算方法は、判断部が、nを所定の３以上の整数とし、kをn未満の所定の正の整数とし、xをk以上n未満の整数として、(k,n)秘密分散法により分散されたn個の分散データをそれぞれ格納するn個の秘密計算サーバのそれぞれが、秘密計算可能な状態であるかを判断する判断ステップと、選択部が、秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択ステップと、を含み、選択されたx個の秘密計算サーバは、選択されたx個の秘密計算サーバにそれぞれ格納されたx個の分散データに基づいて秘密計算が可能である。
【０００９】
本発明の一態様による管理サーバは、nを所定の３以上の整数とし、kをn未満の所定の正の整数とし、xをk以上n未満の整数として、(k,n)秘密分散法により分散されたn個の分散データをそれぞれ格納するn個の秘密計算サーバと、n個の秘密計算サーバのそれぞれが、秘密計算可能な状態であるかを判断する判断部と、秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択部と、を含み、選択されたx個の秘密計算サーバは、選択されたx個の秘密計算サーバにそれぞれ格納されたx個の分散データに基づいて秘密計算が可能である。
【発明の効果】
【００１０】
従来よりも少ない数のサーバで冗長化された秘密計算システムを構成することができる。
【図面の簡単な説明】
【００１１】
【図１】秘密計算システムの機能ブロック図。
【図２】秘密計算方法の処理の例を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について説明する。
【００１３】
秘密計算システムは、図１に示すように、n個の秘密計算サーバ１と、管理サーバ２とを例えば備えている。nは３以上の所定の正の整数である。秘密計算方法は、秘密計算システムの各サーバが、図２に例示する各ステップを実行することにより実現される。秘密計算システムは、秘密計算システムを利用するＰＣ、携帯電話、スマートフォン等の端末３と通信可能に接続されている。
【００１４】
秘密計算サーバ１には、(k,n)秘密分散法により分散されたn個の分散データがそれぞれ格納されている。kは、n未満の所定の正の整数である。例えばk=n-1とする。
【００１５】
(k,n)秘密分散法では、データがn個の分散データに分散されているとして、このn個の分散データの中の任意のk個の分散データがそろえば元のデータが復元可能である。(k,n)秘密分散法については、参考文献１を参照のこと。
【００１６】
〔参考文献１〕A. Shamir,“How to share a secret,” Communications of the ACM, Vol.22(11), pp.612-613, 1979.
管理サーバ２は、n個の秘密計算サーバ１のそれぞれが、秘密計算可能な状態であるかを判断する判断部２１と、秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバを選択する選択部２２とを備えている。
【００１７】
端末３から秘密計算の依頼を受けると、管理サーバ２の判断部２１は、n個の秘密計算サーバ１のそれぞれが、秘密計算可能な状態であるかを判断する（ステップＳ１）。判断結果は、選択部２２に送信される。選択部２２は、秘密計算可能な状態であると判断された秘密計算サーバの中からx個の秘密計算サーバ１を選択し（ステップＳ２）、選択されたx個の秘密計算サーバ１で秘密計算の制御を行う。
【００１８】
(k,n)秘密分散法を用いているため、選択されたk個の秘密計算サーバ１は、選択されたx個の秘密計算サーバにそれぞれ格納されたx個の分散データに基づいて秘密計算が可能である。秘密計算は、例えば、統計分析をするための秘密計算であってもよい。また、秘密計算は、文字列に対する検索や集合に対する演算を行うための秘密計算であってもよい。選択されたx個の秘密計算サーバ１は、例えば、他の秘密計算サーバ１から受け取った情報に対して計算を行い、その計算結果を別の他の秘密計算サーバ１に受け渡すことを繰り返すことにより秘密計算を行う。
【００１９】
管理サーバ２の判断部２１及び選択部２２の処理により、秘密計算サーバ１のいくつかに障害が発生していても、障害が発生した秘密計算サーバ１の数がn-x以下であれば、障害が発生していない正常な秘密計算サーバ１の中からx個の秘密計算サーバ１を選択して秘密計算が可能となる。
【００２０】
このように、(k,n)秘密分散法を用いることにより、従来よりも少ない数のサーバで冗長化された秘密計算システムを構成することができる。また、例えばn=x+1とすると、冗長な秘密計算サーバ１の数が高々１個で、単一障害点を持たない秘密計算システムを構成することができる。
【００２１】
［変形例等］
上記説明した処理は、記載の順にしたがって時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００２２】
また、各サーバにおける各種の処理機能をコンピュータによって実現してもよい。その場合、各サーバが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、各サーバにおける各種の処理機能がコンピュータ上で実現される。
【００２３】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００２４】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
【００２５】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００２６】
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
0006309432.tif 000002
【図２】
0006309432.tif 000003