説明

秘密情報復元装置、秘密情報復元方法およびプログラム

【課題】XORを用いた(k、n)閾値分散法において、秘密情報の高速な復元を可能とする。
【解決手段】部分分散情報生成手段21は、k個(kは正の整数)の分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する。行列生成手段22は、k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。復元手段23は、生成された行列を部分分散情報に適用して、部分秘密情報を復元し、連結手段24は、復元した部分秘密情報を連結して元の秘密情報Kを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元装置、秘密情報復元方法およびプログラムに関する。
【背景技術】
【0002】
近年、情報セキュリティの重要性が高まるにつれ、情報の盗難対策と紛失対策が重要な課題となっている。このようなことから、非特許文献1に示されるような(k,n)閾値秘密分散法は、情報の秘匿と紛失によるリスクの回避を同時に実現する手法として、注目を浴びている。ここで、(k,n)閾値秘密分散は、機密情報をn個の分散情報に分散し、そのうち任意のk個の分散情報が集まれば、復元できることを意味する。
【0003】
しかしながら、非特許文献1に示されている(k,n)閾値秘密分散法は、情報の分散、復元時に、(k−1)次の多項式を処理する必要があり、その計算量が膨大になる。
【0004】
これに対して、XORを用いて、(k,n)閾値秘密分散法を構築することにより、高速に情報の分散および復元を可能とする方式が開示されている(例えば、非特許文献2および3参照。)。この非特許文献2および3で開示された方法は、その構造において等価なものであり、単純に高速動作を行うだけでなく、非特許文献1と同様に、完全な情報論理的安全性が保証されており、分散情報のデータ長が秘密情報のデータ長と等しいという特徴を有している。
【非特許文献1】A.Shamir,“How to Share a Secret,”Commun.ACM, vol.22 no.11 pp.612−613, 1979.
【非特許文献2】J.Kurihara、S.Kiyomoto、K.Fukushima、T.Tanaka、“A Fast (4、n)−Threshold Secret Sharing Scheme Using Exclusive−OR Operation and its Extension to (k、n)−Threshold Schemes”、電子情報通信学会技術研究報告、vol.107、No.44、情報セキュリティ、ISSN0913−5685、ISEC2007−4
【非特許文献3】藤井吉弘、栃窪孝也、保坂範和、多田美奈子、加藤岳久、“排他的論理和を用いた(k、n)しきい値法の構成法”、電子情報通信学会技術研究報告、vol.107、No.44、情報セキュリティ、ISSN0913−5685、ISEC2007−5
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献2または3に記載された技術では、秘密情報の復元時に、分散情報の生成行列を構成し、その全体に、あるいは行列を分割してブロックごとに、ガウスの消去法や、LU分解、ガウスジョルダンの消去法など逆行列探索演算を行うことで、秘密情報を復元するための分散情報の組み合わせを探索していた(以降、「事前計算」と呼ぶ)。このとき、事前計算にかかる演算量は生成行列の行数をRとすると、O(R)、即ち、行列の行数の三乗倍となる。また、生成行列のサイズはk、nに依存しており、k、nが大きければ大きいほど事前計算の演算量が増加していくという問題がある。
【0006】
また、事前計算では、「探索」の作業、即ち、行列の特定の部分の数値が何であるかを条件判定し、それよって処理を振り分けることが必要となる。これは、条件分岐の多さを意味しており、プログラム・装置等に実装した場合に動作が低速になるという問題がある。例えば、プログラムの場合、等価な処理を行う論理的記述(出来る限り条件分岐をなくした記述)をしたプログラムとif文記述を多用したプログラムとでは、コンピュータの性質上、前者の方が高速に動作することが知られている。
【0007】
そこで、本発明は、上述の課題に鑑みてなされたものであり、XORを用いた(k、n)閾値分散法において、秘密情報の高速な復元を可能とする秘密情報復元装置、秘密情報復元方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の事項を提案している。
(1)本発明は、XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元装置であって、k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する部分分散情報生成手段(例えば、図2の分散情報分割部21に相当)と、前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する行列生成手段(例えば、図2の行列生成部22に相当)と、該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する復元手段(例えば、図2の部分秘密情報復元部23に相当)と、該復元した部分秘密情報を連結して元の秘密情報Kを生成する連結手段(例えば、図2の連結部24に相当)と、を備えたことを特徴とする秘密情報復元装置を提案している。
【0009】
この発明によれば、部分分散情報生成手段は、k個(kは正の整数)の分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する。行列生成手段は、k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。復元手段は、生成された行列を部分分散情報に適用して、部分秘密情報を復元し、連結手段は、復元した部分秘密情報を連結して元の秘密情報Kを生成する。したがって、秘密情報を復元するための分散情報の組み合わせを示す行列を機械的に構築することから、従来のように、分散情報の生成行列を構築する必要がなく、さらには分散情報の生成行列内部の要素が何であるかを条件判定して処理を振り分け、生成行列を変形していく、というような逆行列の探索処理が一切必要なく、単純に分散情報のインデックス番号(それぞれ何番目の分散情報かを示したもの。)のみがわかれば、秘密情報を復元するための分散情報の組み合わせ表す行列を生成できる。
【0010】
(2)本発明は、(1)の秘密情報復元装置について、前記行列生成手段が、k(n−1)行k(n−1)列のバイナリ行列Xを生成する第1の行列生成器(例えば、図3の行列X生成器31に相当)と、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成する第2の行列生成器(例えば、図3の行列X生成器32に相当)と、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成する第3の行列生成器(例えば、図3の行列Xm−1生成器33a、33mに相当)と、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成する第4の行列生成器(例えば、図3の行列Xk−1生成器34に相当)と、前記第1の行列生成器から第4の行列生成器において生成された行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する第5の行列生成器(例えば、図3の行列M生成器35に相当)と、を備えたことを特徴とする秘密情報復元装置を提案している。
【0011】
この発明によれば、行列生成手段が、k(n−1)行k(n−1)列のバイナリ行列Xを生成する第1の行列生成器と、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成する第2の行列生成器と、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成する第3の行列生成器と、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成する第4の行列生成器とを並列に備え、第5の行列生成器が、第1の行列生成器から第4の行列生成器において生成された行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する。したがって、従来は、内部での処理手順として生成行列を生成・分割した上で、その一部に対して逆行列探索演算を複数回繰り返す必要があるのに対し、本発明においては、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0012】
(3)本発明は、(1)の秘密情報復元装置について、前記行列生成手段が、単位行列を生成する単位行列生成器(例えば、図8の単位行列生成器41に相当)と、該生成した単位行列を行基本変形する第1の行基本変形演算器(例えば、図8の行基本変形演算器42に相当)と、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行基本変形演算器において演算された行列を行基本変形する第2の行基本変形演算器(例えば、図8の行基本変形演算器43に相当)と、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行基本変形演算器において演算された行列を行基本変形する第3の行基本変形演算器(例えば、図8の行基本変形演算器44a、44mに相当)と、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行基本変形演算器において演算された行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第4の行基本変形演算器(例えば、図8の行基本変形演算器45に相当)と、を備えたことを特徴とする秘密情報復元装置を提案している。
【0013】
この発明によれば、行列生成手段が、単位行列を生成する単位行列生成器と、生成した単位行列を行基本変形する第1の行基本変形演算器と、インデックス番号t、t、・・・、tk−1の値に基づいて、第1の行基本変形演算器において演算された行列を行基本変形する第2の行基本変形演算器と、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、第2の行基本変形演算器において演算された行列を行基本変形する第3の行基本変形演算器と、インデックス番号t、t、・・・、tk−1の値に基づいて、第3の行基本変形演算器において演算された行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する第4の行基本変形演算器とを備えている。したがって、逆行列を複数求めるのではなく、直接、単位行列を変形することにより、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0014】
(4)本発明は、XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元方法であって、k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する第1のステップ(例えば、図4のステップS101に相当)と、前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第2のステップ(例えば、図4のステップS102からステップS106に相当)と、該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する第3のステップ(例えば、図4のステップS107に相当)と、該復元した部分秘密情報を連結して元の秘密情報Kを生成する第4のステップ(例えば、図4のステップS108に相当)と、を備えたことを特徴とする秘密情報復元方法を提案している。
【0015】
この発明によれば、k個(kは正の整数)の分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成し、k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力して、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。そして、生成された行列を部分分散情報に適用して、部分秘密情報を復元し、復元した部分秘密情報を連結して元の秘密情報Kを生成する。したがって、単純に分散情報のインデックス番号(それぞれ何番目の分散情報かを示したもの。)のみで、秘密情報を復元するための分散情報の組み合わせ表す行列を生成することができる。
【0016】
(5)本発明は、(4)の秘密情報復元方法について、前記第2のステップにおいて、k(n−1)行k(n−1)列のバイナリ行列Xを生成(例えば、図4のステップS102に相当)し、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し(例えば、図4のステップS103に相当)、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し(例えば、図4のステップS104に相当)、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し(例えば、図4のステップS105に相当)、前記生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する(例えば、図4のステップS106に相当)ことを特徴とする秘密情報復元方法を提案している。
【0017】
この発明によれば、第2のステップにおいて、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し、生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する。したがって、従来は、内部での処理手順として生成行列を生成・分割した上で、その一部に対して逆行列探索演算を複数回繰り返す必要があるのに対し、本発明においては、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0018】
(6)本発明は、(4)の秘密情報復元方法について、前記第2のステップにおいて、単位行列を生成し、該生成した単位行列を行基本変形して、第1の行列を生成し(例えば、図9のステップS203に相当)、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行列を行基本変形して、第2の行列を生成し(例えば、図9のステップS204に相当)、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行列を行基本変形して、第3の行列を生成し(例えば、図9のステップS205に相当)、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する(例えば、図9のステップS206に相当)ことを特徴とする秘密情報復元方法を提案している。
【0019】
この発明によれば、第2のステップにおいて、単位行列を生成し、生成した単位行列を行基本変形して、第1の行列を生成し、インデックス番号t、t、・・・、tk−1の値に基づいて、第1の行列を行基本変形して、第2の行列を生成し、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、第2の行列を行基本変形して、第3の行列を生成し、インデックス番号t、t、・・・、tk−1の値に基づいて、第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。したがって、逆行列を複数求めるのではなく、直接、単位行列を変形することにより、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0020】
(7)本発明は、XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元方法をコンピュータに実行させるためのプログラムであって、k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する第1のステップ(例えば、図4のステップS101に相当)と、前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第2のステップ(例えば、図4のステップS102からステップS106に相当)と、該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する第3のステップ(例えば、図4のステップS107に相当)と、該復元した部分秘密情報を連結して元の秘密情報Kを生成する第4のステップ(例えば、図4のステップS108に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0021】
この発明によれば、k個(kは正の整数)の分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成し、k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力して、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。そして、生成された行列を部分分散情報に適用して、部分秘密情報を復元し、復元した部分秘密情報を連結して元の秘密情報Kを生成する。したがって、単純に分散情報のインデックス番号(それぞれ何番目の分散情報かを示したもの。)のみで、秘密情報を復元するための分散情報の組み合わせ表す行列を生成することができる。
【0022】
(8)本発明は、(7)のプログラムについて、前記第2のステップにおいて、k(n−1)行k(n−1)列のバイナリ行列Xを生成(例えば、図4のステップS102に相当)し、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し(例えば、図4のステップS103に相当)、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し(例えば、図4のステップS104に相当)、前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し(例えば、図4のステップS105に相当)、前記生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する(例えば、図4のステップS106に相当)ことを特徴とするプログラムを提案している。
【0023】
この発明によれば、第2のステップにおいて、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し、生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する。したがって、従来は、内部での処理手順として生成行列を生成・分割した上で、その一部に対して逆行列探索演算を複数回繰り返す必要があるのに対し、本発明においては、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0024】
(9)本発明は、(7)のプログラムについて、前記第2のステップにおいて、単位行列を生成し、該生成した単位行列を行基本変形して、第1の行列を生成し(例えば、図9のステップS203に相当)、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行列を行基本変形して、第2の行列を生成し(例えば、図9のステップS204に相当)、前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行列を行基本変形して、第3の行列を生成し(例えば、図9のステップS205に相当)、前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する(例えば、図9のステップS206に相当)ことを特徴とするプログラムを提案している。
【0025】
この発明によれば、第2のステップにおいて、単位行列を生成し、生成した単位行列を行基本変形して、第1の行列を生成し、インデックス番号t、t、・・・、tk−1の値に基づいて、第1の行列を行基本変形して、第2の行列を生成し、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、第2の行列を行基本変形して、第3の行列を生成し、インデックス番号t、t、・・・、tk−1の値に基づいて、第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。したがって、逆行列を複数求めるのではなく、直接、単位行列を変形することにより、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【発明の効果】
【0026】
本発明によれば、事前計算の実装において、条件判定・条件分岐の回数を大幅に削減することができるという効果がある。また、行列の機械的な導出を行うことにより、探索演算を行うことなく、組み合わせを示す行列を一意に決定することができるため、行列導出における理論上の計算量はO(1)となり、非常に微小なものとなる。こうしたことから、秘密情報を復元するための分散情報の組み合わせ導出のための演算量を大幅に削減でき、XORを用いた高速な(k、n)閾値秘密分散法において、より高速な復元処理が可能となるという効果がある。
【発明を実施するための最良の形態】
【0027】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0028】
まず、本発明の秘密情報復元処理の説明の前に、分散情報の生成について説明する。図1は、分散情報の生成の概要を示す機能ブロック図である。
【0029】
図1において、秘密情報Kは分割器11に送られ、(n−1)個の部分秘密情報Kに分割される。また、ダミー情報生成器12でダミー部分秘密情報Kが生成される。ダミー部分秘密情報K及び部分秘密情報Kは、部分分散情報生成器13に送られる。
【0030】
また、乱数発生器14は、互いに独立な乱数Rを発生している。そして、同様な乱数発生器14をk−1個備えている。乱数発生器14からの乱数Rは、部分分散情報生成器13に送られる。
【0031】
部分分散情報生成器13では、ダミー部分秘密情報K及び(n−1)個の部分秘密情報Kと、乱数発生器14からの乱数Rとを用いて、排他的論理和(XOR)演算により、部分分散情報が生成される。この部分分散情報が連結器16により連結されて、n個の分散情報Sが生成される。この分散情報Sは、送信装置17により、管理者Pにセキュアに送信される。
【0032】
なお、秘密情報を(n−1)個に等分割する必要がある。但し、nは分散数nについてn≧nを満たす素数である。そのため、希望する分散数nが合成数である場合には、n>nを満たす素数nを用いた(k、n)閾値法の分散情報を、n個用いることで、(k,n)閾値法を実現する。
【0033】
次に、閾値秘密分散法について、更に、詳述する。先ず、閾値秘密分散法を説明するに先立ち、本明細書中で使用する演算子及び記号について、以下のように、定義する。
【0034】
【数1】

【0035】
先ず、分散処理方法について説明する。閾値秘密分散法では、以下の手順に従って分散処理を行って、(k,n)閾値秘密分散法が実現される。
【0036】
なお、前述したように、秘密情報Kは、(n−1)個に等分割する必要があり、nは分散数nについてn≧nを満たす素数である。そのため、希望する分散数nが合成数である場合には、n>nを満たす素数nを用いた(k、n)閾値秘密分散法の分散情報を、n個用いることで、(k,n)閾値法を実現する。
【0037】
(ステップ1)
秘密情報Kを(n−1)個の部分秘密情報Kに分割する。
【0038】
【数2】

【0039】
(ステップ2)
ダミーの部分秘密情報Kを生成する。
【0040】
(ステップ3)
個ずつの乱数R、・・・、Rk−2の計(k−1)n個の乱数を全て独立に生成する。
【0041】
(ステップ4)
XOR演算により、以下のように部分分散情報S(i,m)を生成する。
【0042】
【数3】

【0043】
(ステップ5)
部分分散情報S(i、0)、・・・、S(i,np−2)を連結して分散情報Sを生成し、管理者Pへセキュアに配付する。
【0044】
【数4】

【0045】
以上のステップにより構成される部分分散情報の構成表は、表1のようになる。また、1人の管理者に配布されるビット数は、Kのビット数と等しくなる。
【0046】
【表1】

【0047】
<秘密情報復元装置の構成>
上記の分散情報の生成処理を踏まえて、本発明の秘密情報復元装置について説明する。本実施形態に係る秘密情報復元装置は、図2に示すように、分散情報分割部21と、行列生成部22と、部分秘密情報復元部23と、連結部24とから構成されている。
【0048】
分散情報分割部21は、例えば、k個(kは正の整数)の分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する。行列生成部22は、例えば、k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。部分秘密情報復元部23は、行列生成部22において生成された行列を部分分散情報に適用して、部分秘密情報を復元する。連結部24は、復元した部分秘密情報を連結して元の秘密情報Kを生成する。
【0049】
また、行列生成部22は、図3に示すように、行列X生成器31と、行列X生成器32と、行列Xm−1生成器33a、33mと、行列Xk−1生成器34と、行列M生成器35とから構成されている。
【0050】
ここで、行列X生成器31は、k(n−1)行k(n−1)列のバイナリ行列Xを生成する。行列X生成器32は、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成する。行列Xm−1生成器33a、33mは、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成する。行列Xk−1生成器34は、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成する。行列M生成器35は、行列X生成器31、行列X生成器32、行列Xm−1生成器33a、33m、行列Xk−1生成器34において生成されたそれぞれの行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列Mを生成する。
【0051】
<秘密情報復元装置の処理>
次に、図4から図7を用いて、本実施形態に係る秘密情報復元装置の処理について説明する。
まず、分散情報分割部21にk個の分散情報が入力され、k(n−1)個の部分分散情報が生成されて、部分秘密情報復元部23に出力される(ステップS101)。一方、行列生成部22には、k個の分散情報についてのインデックス番号が入力される。
【0052】
そして、行列X生成器31では、数5に示すようなk(n−1)行k(n−1)列のバイナリ行列Xが生成される(ステップS102)。なお、数5において、Iは、(n−1)行(n−1)列の単位行列である。
【0053】
【数5】

【0054】
行列X生成器32では、数6に示すように、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xが生成される(ステップS103)。なお、数6において、F、G(2≦i≦k−1)は、インデックスの値のみから機械的に生成される(n−1)行(n−1)列のバイナリ行列であり、具体的には、図5に示すようなアルゴリズムで生成される。
【0055】
【数6】

【0056】
行列Xm−1生成器33a、33mでは、数7に示すように、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1が生成される(ステップS104)。なお、数7において、F、G(m≦i≦k−1)は、インデックスの値のみから機械的に生成される(n−1)行(n−1)列のバイナリ行列であり、具体的には、図6に示すようなアルゴリズムで生成される。
【0057】
【数7】

【0058】
行列Xk−1生成器34では、数8に示すように、インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1が生成される(ステップS105)。なお、数8において、Zは、インデックスの値のみから機械的に生成される(n−1)行(n−1)列のバイナリ行列であり、具体的には、図7に示すようなアルゴリズムで生成される。
【0059】
【数8】

【0060】
そして、行列M生成器35において、行列X生成器31の出力X、行列X生成器32の出力X、行列Xm−1生成器33a、33mの出力Xm−1、行列Xk−1生成器34の出力Xk−1を数9に従って乗じ、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列Mを生成する(ステップS106)。
【0061】
【数9】

【0062】
生成された行列Mは、部分秘密情報復元部23に入力され、行列Mをk(n−1)個の部分分散情報に適用して、部分秘密情報を復元する(ステップS107)。そして、連結部24において、復元された部分秘密情報を連結して秘密情報Kを復元する(ステップS108)。
【0063】
したがって、本実施形態によれば、秘密情報を復元するための分散情報の組み合わせを示す行列を機械的に構築することから、従来のように、分散情報の生成行列を構築する必要がなく、さらには分散情報の生成行列内部の要素が何であるかを条件判定して処理を振り分け、生成行列を変形していく、というような逆行列の探索処理が一切必要なく、単純に分散情報のインデックス番号(それぞれ何番目の分散情報かを示したもの。)のみがわかれば、秘密情報を復元するための分散情報の組み合わせ表す行列を生成できる。
【0064】
また、従来は、内部での処理手順として生成行列を生成・分割した上で、その一部に対して逆行列探索演算を複数回繰り返す必要があったが、上記の方法によれば、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0065】
<変形例>
次に、図8および図9を用いて、上記実施形態の変形例について説明する。
本変形例は、上記の実施形態に対して、行列生成部22の構成が異なっている。具体的は、本変形例に係る行列生成部は、図8に示すように、単位行列生成器41と、行基本変形演算器42と、行基本変形演算器43と、行基本変形演算器44a、44mと、行基本変形演算器45とからなり、これらが直列に接続されている。
【0066】
ここで、単位行列生成器41は、k(n−1)行k(n−1)列の単位行列を生成する。行基本変形演算器42は、生成された単位行列を行基本変形し、第1の行列を生成する。行基本変形演算器43は、インデックス番号t、t、・・・、tk−1の値に基づいて、行基本変形演算器42において演算された第1の行列を行基本変形し、第2の行列を生成する。
【0067】
行基本変形演算器44a、44mは、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、行基本変形演算器43において演算された行列を行基本変形し、第3の行列を生成する。行基本変形演算器45は、インデックス番号t、t、・・・、tk−1の値に基づいて、行基本変形演算器44a、44mにおいて演算された行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する。
【0068】
<秘密情報の復元処理>
次に、図9を用いて、本変形例における秘密情報の復元処理について説明する。
まず、分散情報分割部21にk個の分散情報が入力され、k(n−1)個の部分分散情報が生成されて、部分秘密情報復元部23に出力される(ステップS201)。一方、行列生成部22には、k個の分散情報についてのインデックス番号が入力される。
【0069】
そして、単位行列生成器41において、k(n−1)行k(n−1)列の単位行列が生成される(ステップS202)。行基本変形演算器42では、生成された単位行列を行基本変形し、第1の行列を生成する(ステップS203)。行基本変形演算器43では、インデックス番号t、t、・・・、tk−1の値に基づいて、行基本変形演算器42において演算された第1の行列を行基本変形し、第2の行列を生成する(ステップS204)。
【0070】
行基本変形演算器44a、44mでは、インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、行基本変形演算器43において演算された行列を行基本変形し、第3の行列を生成する(ステップS205)。行基本変形演算器45では、インデックス番号t、t、・・・、tk−1の値に基づいて、行基本変形演算器44a、44mにおいて演算された行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための部分分散情報の組み合わせを示す行列を生成する(ステップS206)。
【0071】
そして、生成された行列は、部分秘密情報復元部23に入力され、行列をk(n−1)個の部分分散情報に適用して、部分秘密情報を復元する(ステップS207)。さらに、連結部24において、復元された部分秘密情報を連結して秘密情報Kを復元する(ステップS208)。
【0072】
したがって、本変形例によれば、逆行列を複数求めるのではなく、直接、単位行列を変形することにより、組み合わせを示す行列をインデックス番号のみより完全に機械的に求めることができる。
【0073】
なお、秘密情報復元装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを秘密情報復元装置に読み込ませ、実行することによって本発明の秘密情報復元装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0074】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0075】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。更に、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0076】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0077】
【図1】XORを用いた(k、n)閾値法における分散情報生成装置の構成を例示した図である。
【図2】本実施形態に係る秘密情報復元装置の構成図である。
【図3】本実施形態に係る行列生成部の構成図である。
【図4】本実施形態に係る秘密情報復元処理のフローである。
【図5】行列X生成器32において、F、G(2≦i≦k−1)を生成するためのアルゴリズムを例示した図である。
【図6】行列X生成器33a、33mにおいて、F、G(m≦i≦k−1)を生成するためのアルゴリズムを例示した図である。
【図7】行列X生成器34において、Zを生成するためのアルゴリズムを例示した図である。
【図8】本変形例における行列生成部の構成図である。
【図9】本変形例に係る秘密情報復元処理のフローである。
【符号の説明】
【0078】
11・・・分割器、12・・・ダミー情報生成器、13・・・部分分散情報生成器、14・・・乱数発生器、16・・・連結器、17・・・送信装置、21・・・分散情報分割部、22・・・行列生成部、23・・・部分秘密情報復元部、24・・・連結部、31・・・行列X生成器、32・・・行列X生成器、33a、33m・・・行列Xm−1生成器、34・・・行列Xk−1生成器、35・・・行列M生成器、41・・・単位行列生成器、42、43、44a、44m、45・・・行基本変形演算器


【特許請求の範囲】
【請求項1】
XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元装置であって、
k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する部分分散情報生成手段と、
前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する行列生成手段と、
該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する復元手段と、
該復元した部分秘密情報を連結して元の秘密情報Kを生成する連結手段と、
を備えたことを特徴とする秘密情報復元装置。
【請求項2】
前記行列生成手段が、
k(n−1)行k(n−1)列のバイナリ行列Xを生成する第1の行列生成器と、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成する第2の行列生成器と、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成する第3の行列生成器と、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成する第4の行列生成器と、
前記第1の行列生成器から第4の行列生成器において生成された行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成する第5の行列生成器と、
を備えたことを特徴とする請求項1に記載の秘密情報復元装置。
【請求項3】
前記行列生成手段が、
単位行列を生成する単位行列生成器と、
該生成した単位行列を行基本変形する第1の行基本変形演算器と、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行基本変形演算器において演算された行列を行基本変形する第2の行基本変形演算器と、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行基本変形演算器において演算された行列を行基本変形する第3の行基本変形演算器と、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行基本変形演算器において演算された行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第4の行基本変形演算器と、
を備えたことを特徴とする請求項1に記載の秘密情報復元装置。
【請求項4】
XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元方法であって、
k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する第1のステップと、
前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第2のステップと、
該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する第3のステップと、
該復元した部分秘密情報を連結して元の秘密情報Kを生成する第4のステップと、
を備えたことを特徴とする秘密情報復元方法。
【請求項5】
前記第2のステップにおいて、
k(n−1)行k(n−1)列のバイナリ行列Xを生成し、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し、
前記生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成することを特徴とする請求項4に記載の秘密情報復元方法。
【請求項6】
前記第2のステップにおいて、
単位行列を生成し、
該生成した単位行列を行基本変形して、第1の行列を生成し、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行列を行基本変形して、第2の行列を生成し、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行列を行基本変形して、第3の行列を生成し、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成することを特徴とする請求項4に記載の秘密情報復元方法。
【請求項7】
XORを用いた(k、n)閾値分散法により生成された分散情報から秘密情報を復元する秘密情報復元方法をコンピュータに実行させるためのプログラムであって、
k個(kは正の整数)の前記分散情報を入力し、k(n−1)個(nは、正の素数)の部分分散情報を生成する第1のステップと、
前記k個の分散情報に対応するインデックス番号t、t、・・・、tk−1(0≦t、t、・・・、tk−1≦k−1)を入力し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成する第2のステップと、
該生成された行列を前記部分分散情報に適用して、部分秘密情報を復元する第3のステップと、
該復元した部分秘密情報を連結して元の秘密情報Kを生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項8】
前記第2のステップにおいて、
k(n−1)行k(n−1)列のバイナリ行列Xを生成し、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xを生成し、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値により、k(n−1)行k(n−1)列のバイナリ行列Xm−1を生成し、
前記インデックス番号t、t、・・・、tk−1の値により、k(n−1)行k(n−1)列のバイナリ行列Xk−1を生成し、
前記生成されたすべての行列を乗じて部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列Mを生成することを特徴とする請求項7に記載のプログラム。
【請求項9】
前記第2のステップにおいて、
単位行列を生成し、
該生成した単位行列を行基本変形して、第1の行列を生成し、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第1の行列を行基本変形して、第2の行列を生成し、
前記インデックス番号tm−2、tm−1、・・・、tk−1(m=3、4、・・・、k−1)の値に基づいて、該第2の行列を行基本変形して、第3の行列を生成し、
前記インデックス番号t、t、・・・、tk−1の値に基づいて、該第3の行列を行基本変形し、部分秘密情報K、・・・、Knp−1を復元するための前記部分分散情報の組み合わせを示す行列を生成することを特徴とする請求項7に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−21765(P2009−21765A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2007−182070(P2007−182070)
【出願日】平成19年7月11日(2007.7.11)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】