(57)【要約】【課題】ユーザによる所望の演算方法の導入を可能とすると共に、閾値以上の分散データが第三者に取得された場合でも秘密データの容易な復元を阻止できる秘密分散装置を提供する。【解決手段】秘密分散装置１は、複数の秘密サブデータから構成される秘密データＳを格納する分散用データ格納部１６と、複数の乱数サブデータからそれぞれ構成される閾値よりも１つ少ない組数の乱数データＲを取得し、当該乱数データＲと秘密データＳとに基づき、複数の分散サブデータからそれぞれ構成される複数組の分散データＡ〜Ｃを生成する分散処理部１３とを備え、分散処理部１３は、秘密データＳにおける秘密サブデータと乱数データＲの各々における乱数サブデータとを変数とする所定の分散データ生成関数により、前記分散サブデータを生成する構成とする。【選択図】図２
2014044264.tif 000002
【特許請求の範囲】
【請求項１】
秘密データを閾値以上の組数の分散データに分散し、前記閾値未満の組数の分散データでは前記秘密データの復元を不可能とする秘密分散装置であって、
複数の分散演算用サブデータから構成される組を少なくとも１つ有し且つ前記閾値よりも１つ少ない組数の分散演算用データと、複数の秘密サブデータから構成される前記秘密データとに基づき、複数の分散サブデータから構成される前記分散データを複数組、生成する分散データ生成手段を備え、
前記分散データ生成手段は、前記秘密データにおける秘密サブデータと、前記分散演算用データにおける分散演算用サブデータとを変数とする所定の分散データ生成関数により、前記分散データにおける分散サブデータを生成することを特徴とする秘密分散装置。
【請求項２】
前記分散演算用データは、前記分散演算用サブデータとしての乱数データを含むことを特徴とする請求項１に記載の秘密分散装置。
【請求項３】
前記分散演算用データは、前記分散演算用サブデータとして、前記秘密サブデータまたは当該秘密サブデータを加工したデータを含むことを特徴とする請求項１または請求項２に記載の秘密分散装置。
【請求項４】
前記分散データ生成関数による処理は、前記秘密サブデータおよび前記分散演算用サブデータと前記分散サブデータとの対応を示す所定の参照テーブルに基づき実行されることを特徴とする請求項１から請求項３のいずれかに記載の秘密分散装置。
【請求項５】
前記分散データ生成関数は、互いに異なる複数の関数からなることを特徴とする請求項１から請求項４のいずれかに記載の秘密分散装置。
【請求項６】
前記複数の分散サブデータは、前記秘密データにおける１つの秘密サブデータと前記分散演算用データの各々における１つの分散演算用サブデータとの互いに異なる組み合わせを用いてそれぞれ生成されることを特徴とする請求項１から請求項５のいずれかに記載の秘密分散装置。
【請求項７】
秘密データを閾値以上の組数の分散データに分散し、前記閾値未満の組数の分散データでは前記秘密データの復元を不可能とする秘密分散装置として用いられるコンピュータを、
複数の分散演算用サブデータから構成される組を少なくとも１つ有し且つ前記閾値よりも１つ少ない組数の分散演算用データと、複数の秘密サブデータから構成される前記秘密データとに基づき、複数の分散サブデータから構成される前記分散データを複数組、生成する分散データ生成手段
として機能させるための秘密分散プログラムであって、
前記分散データ生成手段は、前記秘密データにおける秘密サブデータと、前記分散演算用データにおける分散演算用サブデータとを変数とする所定の分散データ生成関数により、前記分散データにおける分散サブデータを生成することを特徴とする秘密分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密データ（元データ）を閾値以上の数の分散データに分散し、閾値未満の分散データでは秘密データの復元を不可能とする秘密分散装置および秘密分散プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した情報処理技術の急速な普及にともない、電子化された企業の機密情報や個人情報等の重要情報を安全に保存・管理する必要性が高まっている。特に、ネットワークを介してサーバからの各種サービスの提供を受けるクラウドコンピューティング等では、ネットワーク上に送出された重要情報の漏洩等が生じやすいため、そのようなセキュリティリスクを回避するための技術が開発されている。
【０００３】
この種の技術として、重要情報を含む秘密データをｎ個の分散データに分散し、それらのｎ個の分散データの中からｋ個（閾値）以上を集めることにより秘密データの復元が可能となるようにした秘密分散法（閾値法）が存在し、中でも多項式補間を利用する方法がよく知られている（非特許文献１参照）。この閾値法によれば、計算量的な安全性に基づくＲＳＡ（Rivest Shamir Adleman）暗号等の暗号技術の場合とは異なり、ｋ個に満たない分散データが第三者に取得されても、情報処理装置（復元装置）の演算能力に拘わらず情報理論的に安全性が確保されるという利点がある。
【０００４】
一方、上記閾値法では、多項式演算等に関する処理負荷（処理時間）が大きいため、リアルタイム性を必要とする処理や、大量のデータ処理には適用が難しくなる。そこで、多項式補間の代わりにＸＯＲ（排他的論理和）を用いて処理を高速化する技術が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【非特許文献１】Ａ．Ｓｈａｍｉｒ：“Ｈｏｗ  ｔｏ  Ｓｈａｒｅ  ａ  Ｓｅｃｒｅｔ”，Ｃｏｍｍｕｎｉｃａｉｏｎｓ  ｏｆ  ｔｈｅ  Ａ，ＣＭ，  Ｎｏｖｅｍｂｅｒ  １９７９，  Ｖｏｌｕｍｅ  ２２，  Ｎｕｍｂｅｒ  １１．
【特許文献１】特開２００７−１２４０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献２に記載の従来技術では、ＸＯＲを用いることが前提となるため、ユーザが所望の演算方法を導入することは難しく、柔軟性に乏しいという問題がある。また、上記従来技術では、閾値法の性質上、閾値以上の分散データが第三者に取得されれば、秘密データは当然に復元可能となってしまうという不都合もある。
【０００７】
本発明は、このような従来技術の課題を鑑みて案出されたものであり、従来の閾値法を改良した方法により、ユーザによる所望の演算方法の導入を可能とすると共に、閾値以上の分散データが第三者に取得された場合でも秘密データの容易な復元を阻止できる秘密分散装置および秘密分散プログラムを提供することを主目的とする。
【課題を解決するための手段】
【０００８】
本発明の秘密分散装置は、秘密データを閾値以上の組数の分散データに分散し、前記閾値未満の組数の分散データでは前記秘密データの復元を不可能とする秘密分散装置であって、複数の分散演算用サブデータから構成される組を少なくとも１つ有し且つ前記閾値よりも１つ少ない組数の分散演算用データと、複数の秘密サブデータから構成される前記秘密データとに基づき、複数の分散サブデータから構成される前記分散データを複数組、生成する分散データ生成手段を備え、前記分散データ生成手段は、前記秘密データにおける秘密サブデータと、前記分散演算用データにおける分散演算用サブデータとを変数とする所定の分散データ生成関数により、前記分散データにおける分散サブデータを生成することを特徴とする。
【発明の効果】
【０００９】
このように本発明によれば、従来の閾値法を改良した方法により、ユーザによる所望の演算方法の導入を可能とすると共に、閾値以上の分散データが第三者に取得された場合でも秘密データの容易な復元を阻止できるという優れた効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る秘密分散装置を備えた秘密分散システムの構成図
【図２】第１実施形態に係る秘密分散装置による秘密データの分散処理の要領を示す説明図
【図３】第１実施形態に係る秘密データの分散処理における分散データの生成の要領を示す説明図（（Ａ）分散データＡ、（Ｂ）分散データＢ、（Ｃ）分散データＣ）
【図４】図３に示した２つの分散データＡ，Ｂに基づく秘密データの復元処理の流れを示すフロー図
【図５】図３に示した２つの分散データＡ，Ｂに基づく秘密データの復元処理の要領を示す説明図
【図６】図３に示した２つの分散データＡ，Ｃに基づく秘密データの復元処理の流れを示すフロー図
【図７】図３に示した２つの分散データＡ，Ｃに基づく秘密データの復元処理の要領を示す説明図
【図８】図３に示した２つの分散データＢ，Ｃに基づく秘密データの復元処理の流れを示すフロー図
【図９】図３に示した２つの分散データＢ，Ｃに基づく秘密データの復元処理の要領を示す説明図
【図１０】図２に示した秘密データの分散処理の変形例を示す説明図
【図１１】図１に示した秘密分散装置の詳細構成を示す機能ブロック図
【図１２】第２実施形態に係る秘密データの分散処理における分散データの生成の要領を示す説明図（（Ａ）分散データＡ、（Ｂ）分散データＢ、（Ｃ）分散データＣ、（Ｄ）分散データＤ）
【図１３】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１４】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１５】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１６】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１７】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１８】第２実施形態に係る秘密データの分散処理における分散データ生成の一過程を示す説明図
【図１９】第２実施形態に係る３組の分散データＡ，Ｂ，Ｃに基づく秘密データの復元処理の流れを示すフロー図
【図２０】第３実施形態に係る秘密データの分散処理に用いられる分散データ生成関数を示す説明図
【図２１】第３実施形態に係る秘密データの分散処理における分散データの生成の要領を示す説明図（（Ａ）分散データＡ、（Ｂ）分散データＢ、（Ｃ）分散データＣ）
【図２２】第３実施形態に係る秘密分散装置における分散データＡ，Ｂに基づく秘密データの復元処理の流れを示すフロー図
【図２３】第３実施形態に係る秘密分散装置における分散データＡ，Ｃに基づく秘密データの復元処理の要領を示す説明図
【図２４】第３実施形態に係る秘密分散装置における分散データＢ，Ｃに基づく秘密データの復元処理の要領を示す説明図
【図２５】第３実施形態に係る分散データの生成方法の変形例を示す説明図
【図２６】第３実施形態に係る秘密データの復元方法の変形例を示す説明図
【図２７】従来の閾値法による分散処理の要領を示す説明図（第１実施形態に係る秘密データの分散処理の比較例）
【図２８】従来の閾値法による分散処理の要領を示す説明図（第３実施形態に係る秘密データの分散処理の比較例）
【発明を実施するための形態】
【００１１】
上記課題を解決するためになされた第１の発明は、秘密データを閾値以上の組数の分散データに分散し、前記閾値未満の組数の分散データでは前記秘密データの復元を不可能とする秘密分散装置であって、複数の分散演算用サブデータから構成される組を少なくとも１つ有し且つ前記閾値よりも１つ少ない組数の分散演算用データと、複数の秘密サブデータから構成される前記秘密データとに基づき、複数の分散サブデータから構成される前記分散データを複数組、生成する分散データ生成手段を備え、前記分散データ生成手段は、前記秘密データにおける秘密サブデータと、前記分散演算用データにおける分散演算用サブデータとを変数とする所定の分散データ生成関数により、前記分散データにおける分散サブデータを生成することを特徴とする。
【００１２】
この第１の発明に係る秘密分散装置によれば、従来の閾値法の改良により、秘密サブデータと分散演算用サブデータとを変数とする所定の分散データ生成関数を用いて分散サブデータを生成する構成としたため、ユーザによる所望の演算方法の導入（分散データ生成関数の変更）を可能とすると共に、閾値以上の分散データが第三者に取得された場合でも秘密データの容易な復元を阻止することが可能となる。
【００１３】
また、第２の発明は、上記第１の発明において、前記分散演算用データが前記分散演算用サブデータとしての乱数データを含む構成とする。
【００１４】
この第２の発明に係る秘密分散装置によれば、分散演算用サブデータを秘密データと無関係な乱数とすることにより、分散データの安全性を高めることができる。特に、乱数が物理乱数であれば、情報理論的安全性を実現できる。
【００１５】
また、第３の発明は、上記第１または第２の発明において、前記分散演算用データが、前記分散演算用サブデータとして、前記秘密サブデータまたは当該秘密サブデータを加工したデータを含む構成とする。
【００１６】
この第３の発明に係る秘密分散装置によれば、分散データの安全性を保持しつつ、データサイズを小さくすることができる。つまり、ランプ型閾値秘密分散を実現できる。
【００１７】
また、第４の発明は、上記第１から第３の発明のいずれかにおいて、前記分散データ生成関数による処理が、前記秘密サブデータおよび前記分散演算用サブデータと前記分散サブデータとの対応を示す所定の参照テーブルに基づき実行される構成とする。
【００１８】
この第４の発明に係る秘密分散装置によれば、簡易な処理により分散データを生成することができる。
【００１９】
また、第５の発明は、上記第１から第４の発明のいずれかにおいて、前記分散データ生成関数が互いに異なる複数の関数からなる構成とする。
【００２０】
この第５の発明に係る秘密分散装置によれば、秘密データの復元の際に、互いに異なる複数の関数を把握することが必要となるため、秘密データの安全性を高めることができる。
【００２１】
また、第６の発明は、上記第１から第５の発明のいずれかにおいて、前記複数の分散サブデータは、前記秘密データにおける１つの秘密サブデータと前記分散演算用データの各々における１つの分散演算用サブデータとの互いに異なる組み合わせを用いてそれぞれ生成される構成とする。
【００２２】
この第６の発明に係る秘密分散装置によれば、各分散サブデータの値が他の分散サブデータの値の影響を受けることはなく、ユーザによる所望の演算方法の導入（分散データ生成関数の変更）の際の自由度を高めることができる。
【００２３】
また、第７の発明は、秘密データを閾値以上の組数の分散データに分散し、前記閾値未満の組数の分散データでは前記秘密データの復元を不可能とする秘密分散装置として用いられるコンピュータを、複数の分散演算用サブデータから構成される組を少なくとも１つ有し且つ前記閾値よりも１つ少ない組数の分散演算用データと、複数の秘密サブデータから構成される前記秘密データとに基づき、複数の分散サブデータから構成される前記分散データを複数組、生成する分散データ生成手段として機能させるための秘密分散プログラムであって、前記分散データ生成手段は、前記秘密データにおける秘密サブデータと、前記分散演算用データにおける分散演算用サブデータとを変数とする所定の分散データ生成関数により、前記分散データにおける分散サブデータを生成することを特徴とする秘密分散プログラムである。
【００２４】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００２５】
＜第１実施形態＞
図１は本発明の第１実施形態に係る秘密分散装置を備えた秘密分散システムの構成図である。この秘密分散システムでは、秘密分散に関する処理機能を有する秘密分散装置１と、分散データの格納先となる複数の分散先装置２と、秘密分散装置１を利用するクライアント装置３とがネットワーク４を介して相互に通信可能に接続されている。秘密分散装置１は後述する秘密分散処理用のプログラムが導入されたサーバ（コンピュータ）からなり、各分散先装置２はオンラインストレージ機能を備えたサーバからなる。また、クライアント装置３はＰＣ（Personal Computer）からなる。
【００２６】
この秘密分散システムでは、秘密分散装置１は、クライアント装置３からの要求に応じて、秘密分散法（電子割符技術）に基づき秘密データから複数組の分散データを生成し、それら分散データを各分散先装置２に格納する。一方、秘密分散装置１は、クライアント装置３からの要求に応じて、それら分散データから秘密データを復元することができる。
【００２７】
なお、ここで用いる「秘密データ」は、必ずしも公になっていない秘密のデータを意味するものではなく、ユーザが保護（第三者への漏洩等を防止）すべきと考える任意の元データ（それに附属するデータを含む）である。また、秘密分散装置１が用いられる秘密分散システムは、ここに示すものに限らず、各装置の構成や配置の変更などを含めて種々の変更が可能である。場合によっては、１つの情報処理装置（ＰＣおよびそれに付属するストレージ等）により、上記秘密分散システムと同様の機能を果たすようにしてもよい。
【００２８】
図２は図１に示した秘密分散装置による秘密データの分散処理の要領を示す説明図であり、図３はその分散処理における分散データの生成の要領を示す説明図である。
【００２９】
まず、第１実施形態に係る秘密データの分散処理についての理解を容易とするために、図２７を参照して従来のシャミアの閾値法（閾値ｋ＝２、分散数ｎ＝３）による分散処理の要領について説明する。図２７には、ＸＹ座標において秘密データＳが３つの分散データＡ〜Ｃに分散される場合が示されている。ここで、秘密データＳは、４つの秘密サブデータＳ１〜Ｓ４を一組として構成され、また、生成される３つの分散データＡ〜Ｃは、それぞれ４つの分散サブデータＡｉ〜Ｃｉ（ｉ＝１，２，３，４）を一組として構成されるものとする。
【００３０】
また、ここでは、説明の便宜上、ＸＹ座標における秘密データＳのＸ値（Ｘ座標の値）を０とし、各分散データＡ〜ＣのＸ値をそれぞれ固定値ａ〜ｃとする（後述する本発明に関する図２等についても同様）。これにより、秘密サブデータＳ１〜Ｓ４は、直線Ｘ＝０上におけるＹ値（Ｙ座標の値）Ｓ１〜Ｓ４（図２７中の黒丸印参照）として表される。また、分散データＡにおける分散サブデータＡ１〜Ａ４は、直線Ｘ＝ａ上におけるＹ値Ａ１〜Ａ４（図２７中の星印参照）として表される（他の分散データＢ，Ｃについても分散データＡと同様）。なお、実際には、ユーザは、秘密データＳのＸ値およびＹ値として種々の値を用いることが可能であり、また、分散データＡ〜ＣのＸ値およびＹ値を任意の固定値や乱数等を用いて設定することができる。なお、ここでは図を見やすくするため、Ｓ１＜Ｓ２＜Ｓ３＜Ｓ４とするなど、各直線が交わらないように工夫して図示している。しかし実際は、各直線は、Ｓ１〜Ｓ４の大小関係や直線の傾きによって、複雑に交差する。これ以降の関数の図も同様で、図を簡便するために、Ｓ１＜Ｓ２＜Ｓ３＜Ｓ４とするなど、各直線や曲線がなるだけ交差しないように図示している。
【００３１】
この従来の閾値法では、各分散データの生成に所定の次数（閾値ｋ−１）の曲線（ｋ＝２の場合は直線）が用いられる。ここでは、閾値ｋ＝２であるため、Ｙ＝αＸ＋β・・・（式１）で表される直線が用いられる。したがって、秘密サブデータＳ１〜Ｓ４は、式１中の切片βに相当する。図２７に示すように、秘密サブデータＳ１〜Ｓ４を示す各点（０，Ｓ１）、（０，Ｓ２）、（０，Ｓ３）、（０，Ｓ４）を通る４つの直線の傾き（式１中の傾きα）を乱数により決定すると、それら各直線とＸ＝ａ，ｂ，ｃとの各交点におけるＹ値を分散サブデータＡｉ〜Ｃｉ（ｉ＝１，２，３，４）として設定することができる。
【００３２】
このように生成された分散データＡ〜Ｃでは、それらの閾値ｋ未満の集合では、生成に用いた曲線（ここでは、直線）は特定されないため、第三者が秘密データＳを復元することは不可能である。一方、第三者であっても閾値ｋ以上の分散データを取得できれば、分散処理に用いた曲線を特定できるため、秘密データＳを復元可能となる。
【００３３】
次に、図２および図３を参照して秘密分散装置１による分散処理の詳細について説明する。この分散処理では、上述の図２７の場合と同様に、閾値ｋ＝２、分散数ｎ＝３とし、ＸＹ座標において秘密データＳが３つの分散データＡ，Ｂ，Ｃに分散される。
【００３４】
ここで、秘密データＳおよび分散データＡ〜Ｃについては、分散データＢ，Ｃにおける分散サブデータＢｉ，Ｃｉ（ｉ＝１〜５）の数が１つずつ増加していることを除けば、上述の図２７の場合と同様である。一方、上述の図２７の場合とは異なり、分散処理に乱数データＲ（分散演算用データ）が新たに導入されている。乱数データＲは、５つの乱数サブデータＲｊ（ｊ＝１〜５）を一組として構成され、後述するように秘密データＳと共に分散データＡ〜Ｃの生成に用いられる。この乱数データＲについても、説明の便宜上、上述の秘密データＳおよび分散データＡ〜Ｃと同様にＸ値を固定値ｅとする。これにより、ＸＹ座標において、乱数サブデータＲ１〜Ｒ５は、直線Ｘ＝ｅ上におけるＹ値（図２中の◎印参照）として表される。なお、乱数データＲは、特に物理乱数からなることが好ましい。
【００３５】
秘密分散装置１による分散処理では、まず乱数データＲ（乱数サブデータＲ１〜Ｒ５）の値が決定され、その乱数データＲと秘密データＳとに基づき、分散データＡ〜Ｃが生成される。より詳細には、秘密サブデータと乱数サブデータとを変数とする所定の関数（例えば、排他的論理和）を用いることにより、分散データを生成する。例えば、図２に示すように、秘密サブデータＳ１と各乱数サブデータＲ１，Ｒ２，Ｒ３とを通る直線が求められ、それらの直線とＸ＝ａ，ｂ，ｃとの交点におけるＹ値が分散サブデータＡ１，Ｂ２，Ｃ３としてそれぞれ設定される。また、秘密サブデータＳ２と各乱数サブデータＲ２，Ｒ３，Ｒ４とを通る直線が求められ、それらの直線とＸ＝ａ，ｂ，ｃとの交点におけるＹ値が分散サブデータＡ２，Ｂ３，Ｃ４としてそれぞれ設定される。また、秘密サブデータＳ３と各乱数サブデータＲ３，Ｒ４，Ｒ５とを通る直線が求められ、それらの直線とＸ＝ａ，ｂ，ｃとの交点におけるＹ値が分散サブデータＡ３，Ｂ４，Ｃ５としてそれぞれ設定される。また、秘密サブデータＳ４と各乱数サブデータＲ４，Ｒ５とを通る直線が求められ、それらの直線とＸ＝ａ，ｂ，ｃとの交点におけるＹ値が分散サブデータＡ４，Ｂ５としてそれぞれ設定される。さらに、ここでは、後述する秘密データＳの復元を容易とするために、Ｂ１＝Ｃ１＝Ｒ１、Ｃ２＝Ｒ２としている。
【００３６】
なお、秘密サブデータと乱数サブデータとの組合せ（対応づけ）については、ここに示したものに限らず種々の変更が可能である。各秘密サブデータＳ１〜Ｓ４と各乱数サブデータＲ１〜Ｒ５とは全てが対応づけられる必要はない。
【００３７】
このような分散データＡ〜Ｃの生成では、図３（Ａ）〜（Ｃ）に示すように、乱数サブデータの値をそのまま用いる一部の分散サブデータ（Ｂ１，Ｃ１，Ｃ２）を除けば、１つの秘密サブデータと１つの乱数サブデータとから１つの分散サブデータが生成される。つまり、図３（Ａ）〜（Ｃ）は、上２行における乱数サブデータおよびこれに組み合わされた秘密サブデータとを結ぶ１つの直線とＸ＝ａ（またはＸ＝ｂ，Ｘ＝ｃ）との交点におけるＹ値によって、矢印で指示される下１行における分散サブデータが導出されることを示している。これは同一の直線上に複数の分散サブデータが位置する従来の閾値法の場合（図２７参照）とは異なり、複数の分散サブデータそれぞれを、異なる直線上に配置するものである。つまり、「ＡとＲ」、「ＢとＲ」、「ＣとＲ」を結ぶ直線を見て分かるように、１つの直線には、Ａ、Ｂ、Ｃのいずれか１つの分散サブデータしか現れない。この方法は、秘密データから、閾値２、分散数２の分散サブデータを３組（「ＡとＲ」、「ＢとＲ」、「ＣとＲ」）作成するものである。そして、この３組から共通の乱数サブデータＲ（分散演算用サブデータ）の情報を欠落させることで、分散サブデータＡ，Ｂ，Ｃという閾値２、分散数３の秘密分散を実現するものである。なお、図３（Ａ）〜（Ｃ）では、乱数サブデータに組み合わされる秘密サブデータが存在しない場合は、乱数サブデータがそのまま分散サブデータ（Ｂ１，Ｃ１，Ｃ２）とされる。
【００３８】
ここで、図３（Ａ）では、各秘密サブデータＳ１〜Ｓ４が各乱数サブデータＲ１〜Ｒ４にそれぞれ組み合わされている。また、図３（Ｂ）では、図３（Ａ）の状態から乱数サブデータＲ１〜Ｒ４に対して秘密サブデータＳ１〜Ｓ４を右側に１つずらした状態で両者が組み合わされている。また、図３（Ｃ）では、図３（Ａ）の状態から乱数サブデータＲ１〜Ｒ４に対して秘密サブデータＳ１〜Ｓ４を右側に２つずらした状態で両者が組み合わされている。このように、乱数サブデータに対して秘密サブデータを相対的にずらす操作を行うことにより、秘密サブデータと乱数サブデータとの異なる組合せを容易に取得することができる。
【００３９】
なお、秘密サブデータＳ１〜Ｓ４と各乱数サブデータＲ１〜Ｒ４とについては、少なくとも後述するような秘密データＳデータの復元を可能とするものであれば、ここに示すものに限らず、種々の組合せが可能である。また、秘密サブデータＳ１〜Ｓ４については、それぞれ保護を必要とする独立したデータであるが、これに限らず、１つの秘密データＳをそれぞれ分割して生成されたものでもよく、場合によっては、秘密サブデータＳ１〜Ｓ４の一部をダミーデータとしてもよい。
【００４０】
次に、上述の秘密分散装置１による秘密データＳの分散処理の安全性について説明する。
【００４１】
図２７に示した従来の閾値法では、式１における直線の傾きαを乱数として設定したが、これは分散データＡ〜Ｃのいずれかを乱数として設定することと同じことを意味する。つまり、例えば図２７に示した分散データＣにおける各分散サブデータＣ１〜Ｃ４（Ｘ＝ｃにおけるＹ値）をそれぞれ乱数により設定し、それら各分散サブデータＣ１〜Ｃ４と各秘密サブデータＳ１〜Ｓ４とを結ぶ直線をそれぞれ生成すると、それらの直線の傾きαは自ずと決定される。そして、それらの直線とＸ＝ａ，ｂとの交点におけるＹ値から分散データＡ，Ｂを構成する分散サブデータＡ１〜Ａ４，Ｂ１〜Ｂ４を取得することができる。
【００４２】
図２は、閾値２、分散数３の秘密分散を実現するのに、秘密データから閾値２、分散数２の分散データを３組（「ＡとＲ」、「ＢとＲ」、「ＣとＲ」）作成し、ここから共通の乱数データＲ（分散演算用データ）の情報を欠落させているものなので、従来の閾値法による分散データＡ〜Ｃの生成方法と安全性において等価であり、少なくとも従来の閾値法と同等の安全性が確保されていると言える。
【００４３】
なお、秘密分散装置１による分散データＡ〜Ｃの生成方法では、一部の分散サブデータについて乱数サブデータの値がそのまま用いられている（Ｂ１＝Ｃ１＝Ｒ１、Ｃ２＝Ｒ２）が、このように分散データの一部に乱数データがそのまま用いられること自体は、分散データＡ〜Ｃの安全性には悪影響を及ぼさない。
【００４４】
図４は図３に示した２つの分散データＡ，Ｂに基づく秘密データの復元処理の流れを示すフロー図であり、図５はその復元処理の要領を示す説明図である。
【００４５】
分散データＡ，Ｂに基づく秘密データの復元処理では、図４中のステップ(1)〜(15)が順次実行される。これにより、図５中の矢印によって示されるように、乱数サブデータＲ１〜Ｒ４および秘密サブデータＳ１〜Ｓ４が順次取得される。
【００４６】
より詳細には、まず、秘密分散装置１は、分散データＢにおける分散サブデータＢ１から乱数サブデータＲ１を取得する（ステップ(1)）。次に、取得した乱数サブデータＲ１と分散サブデータＡ１とを通る直線１を計算し（ステップ(2)）、この直線１とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ１を取得する（ステップ(3)）。次に、取得した秘密サブデータＳ１と分散サブデータＢ２とを通る直線２を計算し（ステップ(4)）、この直線２とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ２を取得する（ステップ(5)）。次に、取得した乱数サブデータＲ２と分散サブデータＡ２とを通る直線３を計算し（ステップ(6)）、この直線３とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ２を取得する（ステップ(7)）。
【００４７】
次に、取得した秘密サブデータＳ２と分散サブデータＢ３とを通る直線４を計算し（ステップ(8)）、この直線４とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ３を取得する（ステップ(9)）。次に、取得した乱数サブデータＲ３と分散サブデータＡ３とを通る直線５を計算し（ステップ(10)）、この直線５とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ３を取得する（ステップ(11)）。次に、取得した秘密サブデータＳ３と分散サブデータＢ４とを通る直線６を計算し（ステップ(12)）、この直線６とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ４を取得する（ステップ(13)）。最後に、取得した乱数サブデータＲ４と分散サブデータＡ４とを通る直線７を計算し（ステップ(14)）、この直線７とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ４を取得する（ステップ(15)）。
【００４８】
このように、分散データＡ，Ｂは、それぞれ秘密データから閾値２、分散数２の分散データ（「ＡとＲ」、「ＢとＲ」）を作成し、そこから共通の乱数データＲ（分散演算用データ）の情報を欠落させたものであるが、分散データＡと分散データＢが揃うと、この欠落された乱数データＲ（分散演算用データ）の情報が復元でき、それで、秘密データが復元できるものになっている。なお、分散データＡ，Ｂのいずれか一つを入手しただけでは、乱数データＲ（分散演算用データ）が分からないので全く復元できない。
【００４９】
図６は図３に示した２つの分散データＡ，Ｃに基づく秘密データの復元処理の流れを示すフロー図であり、図７はその復元処理の要領を示す説明図である。図６および図７は、上述の分散データＡ，Ｂに関する図４および図５にそれぞれ対応する。
【００５０】
分散データＡ，Ｃに基づく秘密データの復元処理では、図６中のステップ(1)〜(14)が順次実行される。これにより、図７中の矢印によって示されるように、乱数サブデータＲ１〜Ｒ４および秘密サブデータＳ１〜Ｓ４が順次取得される。
【００５１】
なお、図６中の各ステップ(1)〜(14)の詳細については、上述の図４中の各ステップと同様に実行可能であるため説明を省略する。なお、図６において、乱数サブデータＲ１の取得で始まるステップ(1)，(3)，(4)，(7)，(8)，(11)，(12)（図７中に実線で示す矢印参照）については、乱数サブデータＲ２の取得で始まるステップ(2)，(5)，(6)，(9)，(10)，(13)，(14)（図７中に破線で示す矢印参照）とは独立して実行することが可能である。
【００５２】
図８は図３に示した２つの分散データＢ，Ｃに基づく秘密データの復元処理の流れを示すフロー図であり、図９はその復元処理の要領を示す説明図である。図８および図９は、上述の分散データＡ，Ｂに関する図４および図５にそれぞれ対応する。
【００５３】
分散データＢ，Ｃに基づく秘密データの復元処理では、図８中のステップ(1)〜(15)が順次実行される。これにより、図９中の矢印によって示されるように、乱数サブデータＲ１〜Ｒ５および秘密サブデータＳ１〜Ｓ４が順次取得される。なお、図８中の各ステップ(1)〜(15)の詳細については、上述の図４または図６中の各ステップと同様に実行可能であるため説明を省略する。
【００５４】
このように、秘密分散装置１によって生成された複数組（ここでは、３組）の分散データについては、閾値ｋ以上の数組（ここでは、２組）の分散データを取得した場合に、閾値ｋ−１の組数（ここでは、１組）の乱数データ（分散演算用データ）を介して秘密データを復元可能となっている。一方、閾値ｋ未満の組数の分散データを取得しても、秘密データを復元することは不可能である。
【００５５】
図１０は第１実施形態に係る分散データの生成方法の変形例を示す説明図である。上述の分散処理では、分散サブデータを生成するための演算用データとして乱数データを用いた例を示したが、この演算用データとしては、少なくとも第三者に秘匿されたデータであれば、乱数データに限らず所望のデータを用いることができる。
【００５６】
ここでは、図２に示した乱数サブデータの一部（Ｒ３）の代わりに秘密サブデータＳ４を用いた例を示している。このように、分散演算用データの一部、またはすべてを秘密サブデータに置き換えることにより、各分散データＡ〜Ｃのデータ量を低減できるという利点がある（これはランプ型秘密分散である。）なお、分散演算用データの一部、またはすべてを置き換えるためのデータとしては、秘密データそのものでなくてもよく、後に復元可能なように秘密サブデータを加工（変換）したデータでもよい。
【００５７】
図１１は図１に示した秘密分散装置の詳細構成を示す機能ブロック図である。秘密分散装置１には、ネットワーク４（図１参照）を介してクライアント装置３等との間で秘密分散に関するコマンドやデータの送受信を行う通信モジュールからなるネットワーク通信制御部１１と、クライアント装置３から秘密データＳの分散処理のリクエストを受ける分散処理受付部１２と、所定の分散条件にしたがって秘密データＳの分散処理を実行する分散処理部（分散データ生成手段）１３と、分散処理部１３において生成される分散データＡ〜Ｃを識別するためのＩＤを生成するＩＤ生成部１４と、秘密データＳと共に分散データＡ〜Ｃの生成に用いられる乱数データＲを生成する乱数生成部１５と、分散処理に関するデータを格納するメモリからなる分散用データ格納部（秘密データ格納手段）１６と、クライアント装置３から秘密データＳの復元処理のリクエストを受ける復元処理受付部２１と、秘密データＳの復元処理を実行する復元処理部２２と、復元処理に関するデータを格納するメモリからなる復元用データ格納部２３とが設けられている。
【００５８】
ここでは図示しないが、秘密分散装置１は、周知のハードウエアとして、装置を統括的に制御するＣＰＵ、ワークメモリとして機能するＲＡＭ、上述のような分散処理および復元処理を実行可能な秘密分散処理用のプログラムが格納される記憶装置としてのＨＤＤ等を備えている。これにより、上記分散処理受付部１２、分散処理部１３、復元処理受付部２１、及び復元処理部２２等の各部の機能は、ＣＰＵによる秘密分散処理用のプログラムの実行（ソフトウェア処理）によって実現される。なお、それら各部の特定の処理をハードウエアによって実行する構成も可能である。また、分散用データ格納部１６および復元用データ格納部２３としては、不揮発性のメモリに限らず、ＲＡＭ等の揮発性のメモリを用いてもよい。
【００５９】
次に、図１１に示した秘密分散装置１における分散処理の動作について説明する。分散処理受付部１２は、クライアント装置３から分散処理のリクエストを受けると、そのリクエストと共に取得（またはリクエストに応じて設定）した分散条件情報およびアドレス情報ａ１〜ａ４を分散処理部１３に送出する。ここで、分散条件情報には、分散処理部１３が分散処理を実行するために必要な情報として、分散数ｎ（ここでは、３）や閾値ｋ（ここでは、２）等の情報が含まれている。また、アドレス情報ａ１は、分散処理の対象となる秘密データＳの保存先の情報（ここでは、分散用データ格納部１６のアドレス情報）であり、アドレス情報ａ２〜ａ４は、分散処理後に生成される分散データＡ〜Ｃの保存先の情報（ここでは、分散用データ格納部１６のアドレス情報）である。
【００６０】
分散用データ格納部１６には、分散処理を必要とする秘密データＳが予め格納されている。この秘密データＳは、クライアント装置３から予め受信したものであるが、これに限らず、ＵＳＢメモリ等の可搬記録媒体から取得されたものや、秘密分散装置１において生成されたものなどを用いてもよい。
【００６１】
分散処理部１３は、分散処理受付部１２から分散条件情報を取得すると、その分散条件情報にしたがって上述のような分散処理を実行する。このとき、アドレス情報ａ１に基づき分散用データ格納部１６から読み出された秘密データＳと、乱数生成部１５によって生成された乱数データＲとが分散処理に用いられる。乱数データ（分散演算用データ）の個数（乱数サブデータの個数ではなく、乱数データの個数）は、少なくとも閾値ｋよりも１つ少ない数だけ生成される。（ここでは、ｋ＝２なので、乱数データはＲの１つ）また、分散データＡ〜Ｃには、ＩＤ生成部１４によって生成されたＩＤがそのヘッダ情報として付加される。分散データＡ〜Ｃを識別するためのＩＤとしては、所定の固定値や乱数等を用いることができる。そして、分散処理部１３により生成された分散データＡ〜Ｃは、アドレス情報ａ２〜ａ４に基づき分散用データ格納部１６にそれぞれ格納される。分散用データ格納部１６に格納された分散データＡ〜Ｃは、互いに切り離されて複数の分散先装置２（図１参照）にそれぞれ送信される。
【００６２】
なお、分散処理部１３は、乱数生成部１５から取得する上記乱数データＲの代わりに、ユーザによって入力された所定のデータ（第三者に秘匿されたデータ）、または秘密データＳそのものを用いてもよい。また、分散データＡ〜Ｃの保存先は、分散先装置２に限定されるものではなく、場合によっては分散用データ格納部１６にそのまま保存しておくこともできる。
【００６３】
次に、図１１に示した秘密分散装置１における復元処理の動作について説明する。復元処理受付部２１は、クライアント装置３から復元処理のリクエストを受けると、そのリクエストと共に取得（またはリクエストに応じて設定）したアドレス情報ｂ１〜ｂ４を復元処理部２２に送出する。アドレス情報ｂ１〜ｂ３は、復元処理の対象となる分散データＡ〜Ｃの保存先の情報（ここでは、復元用データ格納部２３のアドレス情報）であり、アドレス情報ｂ４は、復元処理後に生成される秘密データＳの保存先の情報（ここでは、復元用データ格納部２３のアドレス情報）である。
【００６４】
復元処理に用いられる分散データＡ〜Ｃは、復元処理のリクエストに応じて保存先（分散先装置２等）から受信したものか、或いは、予め復元用データ格納部２３に格納されていたものである。図１１では、全ての分散データＡ〜Ｃが復元用データ格納部２３に格納されているが、少なくとも閾値以上の分散データが格納されていればよい。
【００６５】
復元処理部２２は、復元処理受付部２１からアドレス情報ｂ２〜ｂ４を取得すると、それらの情報に基づき少なくとも復元に必要な数（閾値ｋ以上）の分散データを復元用データ格納部２３から読み出す。このとき、復元処理部２２は、各分散データのヘッダ情報（ＩＤ）から、その読み出した分散データが適切か否かを判定することができる。その後、復元処理部２２は、上述のような復元処理を実行する。復元された秘密データＳは、アドレス情報ｂ４に基づき復元用データ格納部２３における所定のアドレスに格納される。
【００６６】
復元用データ格納部２３に格納された秘密データＳは、必要に応じてクライアント装置３に送信される。或いは、クライアント装置３からのリクエストに応じて、秘密分散装置１において秘密データＳに対して必要な情報処理がなされる。
【００６７】
なお、上述の分散処理および復元処理における閾値や分散数は適宜変更することが可能であり、その変更に応じて、分散条件情報やアドレス情報等も変更される。また、図１１に示した秘密分散装置１による機能の一部を他の情報処理装置に分担させた構成も可能である。例えば、分散処理と復元処理とを異なる情報処理装置によって実施してもよい。
【００６８】
＜第２実施形態＞
図１２は本発明の第２実施形態に係る秘密データの分散処理における分散データの生成の要領を示す説明図であり、図１３〜図１８はその分散処理における分散データ生成の一過程を示す説明図である。この第２実施形態は、上述の第１実施形態の閾値ｋおよび分散数ｎを変更（ｋ＝３、ｎ＝４）したものであり、第１実施形態と同様の事項については詳細な説明を省略する。
【００６９】
まず、本発明による分散処理についての理解を容易とするために、図２８を参照して従来のシャミアの閾値法（ｋ＝３、ｎ＝４）による分散処理の要領について説明する。図２８には、ＸＹ座標において秘密データＳが４つの分散データＡ〜Ｄに分散される場合が示されている。生成される４つの分散データＡ〜Ｄは、それぞれ複数の分散サブデータＡｉ〜Ｄｉ（ｉ＝１，２，３，４）を一組として構成されるものとする。また、ＸＹ座標において各分散データＡ〜ＤのＸ値を固定値ａ〜ｄとする。
【００７０】
この従来の閾値法では、閾値ｋ＝３であるため、Ｙ＝αＸ２＋βＸ＋γ・・・（式２）で表される２次曲線が用いられる。したがって、秘密サブデータＳ１〜Ｓ４は、式２中の切片γに相当する。そして、図２８に示すように、秘密サブデータＳ１〜Ｓ４を示す各点（０，Ｓ１）、（０，Ｓ２）、（０，Ｓ３）、（０，Ｓ４）を通る２次曲線のα、βを乱数により決定すると、それら各２次曲線とＸ＝ａ，ｂ，ｃ，ｄとの各交点におけるＹ値を分散サブデータＡｉ〜Ｄｉ（ｉ＝１，２，３，４）として設定することができる。
【００７１】
この分散データＡ〜Ｄでは、上述の閾値ｋ＝２の場合と同様に、それらの閾値未満の集合では秘密データＳを復元することが不可能である一方、閾値以上の分散データを取得できれば秘密データＳを復元可能となる。
【００７２】
次に、図１２〜図１８を参照して第２実施形態における分散処理の詳細について説明する。この分散処理では、上述の図２８の場合と同様に、閾値ｋ＝３、分散数ｎ＝４とし、ＸＹ座標において秘密データＳが４つの分散データＡ，Ｂ，Ｃ，Ｄに分散される。
【００７３】
ここで、分散データＡ〜Ｄについては、分散データＡ，Ｄにおける分散サブデータＡｉ，Ｄｉ（ｉ＝１〜７）の数が３つずつ増加し、また、分散データＢ，Ｃにおける分散サブデータＢｉ，Ｃｉ（ｉ＝２〜７）の数が２つずつ増加していることを除けば、上述の図２８の場合と同様である。一方、上述の図２８の場合とは異なり、分散処理に２組の乱数データＲ，ｒ（分散演算用データ）が新たに導入されている。これら第１および第２の乱数データＲ，ｒは、それぞれ７つの乱数サブデータＲｊ，ｒｊ（ｊ＝１〜７）を一組として構成され、後述するように秘密データＳと共に分散データＡ〜Ｄの生成に用いられる。第１および第２の乱数データＲ，ｒについては、説明の便宜上、上述の秘密データＳおよび分散データＡ〜Ｄと同様にそれぞれのＸ値を固定値ｅ，ｆとする。これにより、ＸＹ座標において、乱数サブデータＲ１〜Ｒ７，ｒ１〜ｒ７は、それぞれ固定値ｅ，ｆ上におけるＹ値（図１３〜図１８中の◎印参照）として表される。
【００７４】
この秘密分散装置１による分散処理では、まず第１および第２の乱数データＲ，ｒ（第１および第２の乱数サブデータＲ１〜Ｒ７，ｒ１〜ｒ７）の値が決定され、第１および第２の乱数データＲ，ｒと秘密データＳとに基づき、分散データＡ〜Ｄが生成される。
【００７５】
図１２（Ａ）〜（Ｄ）に示すように、分散データＡ〜Ｄの生成では、上３行における第１および第２の乱数サブデータおよびこれに組み合わされた秘密サブデータとによって、矢印で指示される下１行における分散サブデータが導出される。ここで、分散サブデータＡ１，Ａ２，Ａ３，Ｂ２，Ｃ２，Ｄ１，Ｄ２，Ｄ３の場合のように、上３行において一方の乱数サブデータしかない場合は、その乱数サブデータの値がそのまま用いられ、Ａ１＝Ｒ１，Ａ２＝Ｒ２，Ａ３＝Ｒ３，Ｂ２＝Ｒ１，Ｃ２＝ｒ１，Ｄ１＝ｒ１，Ｄ２＝ｒ２，Ｄ３＝ｒ３となる。また、分散サブデータＢ３，Ｃ３のように、上３行において第１および第２の乱数サブデータしかない（秘密サブデータがない）場合は、それらの乱数サブデータを通る直線が分散サブデータの生成に用いられる。さらに、分散サブデータＡ４〜Ａ７等のように、上３行に２つの乱数サブデータおよび秘密サブデータが存在する場合は、それら２つの乱数サブデータと秘密サブデータとから１つの分散サブデータが生成される。
【００７６】
より詳細には、分散サブデータＡｉ〜Ｄｉ（ｉ≦２）の生成では、図１３に示すように、Ａ１＝Ｂ２＝Ｒ１，Ａ２＝Ｒ２，Ｃ２＝Ｄ１＝ｒ１，Ｄ２＝ｒ２とする。
【００７７】
また、分散サブデータＡｉ〜Ｄｉ（ｉ＝３）の生成では、図１４に示すように、Ａ３＝Ｒ３，Ｄ３＝ｒ３とし、２つの乱数サブデータＲ２，ｒ１を結ぶ直線とＸ＝ｂとの交点のＹ値を分散サブデータＢ３とし、２つの乱数サブデータを結ぶ直線Ｒ１，ｒ２とＸ＝ｃとの交点のＹ値を分散サブデータＣ３とする。
【００７８】
また、分散サブデータＡｉ〜Ｄｉ（ｉ＝４）の生成では、図１５に示すように、２つの乱数サブデータＲ４，ｒ１と秘密サブデータＳ１とを通る２次曲線とＸ＝ａの交点のＹ値を分散サブデータＡ４とし、２つの乱数サブデータＲ３，ｒ２と秘密サブデータＳ１とを通る２次曲線とＸ＝ｂの交点のＹ値を分散サブデータＢ４とし、２つの乱数サブデータＲ２，ｒ３と秘密サブデータＳ１とを通る２次曲線とＸ＝ｃの交点のＹ値を分散サブデータＣ４とし、２つの乱数サブデータＲ１，ｒ４と秘密サブデータＳ１とを通る２次曲線とＸ＝ｄの交点のＹ値を分散サブデータＤ４とする。
【００７９】
また、分散サブデータＡｉ〜Ｄｉ（ｉ＝５）の生成では、図１６に示すように、２つの乱数サブデータＲ５，ｒ２と秘密サブデータＳ２とを通る２次曲線とＸ＝ａの交点のＹ値を分散サブデータＡ５とし、２つの乱数サブデータＲ４，ｒ３と秘密サブデータＳ２とを通る２次曲線とＸ＝ｂの交点のＹ値を分散サブデータＢ５とし、２つの乱数サブデータＲ３，ｒ４と秘密サブデータＳ２とを通る２次曲線とＸ＝ｃの交点のＹ値を分散サブデータＣ５とし、２つの乱数サブデータＲ２，ｒ５と秘密サブデータＳ２とを通る２次曲線とＸ＝ｄの交点のＹ値を分散サブデータＤ５とする。
【００８０】
また、分散サブデータＡｉ〜Ｄｉ（ｉ＝６）の生成では、図１７に示すように、２つの乱数サブデータＲ６，ｒ３と秘密サブデータＳ３とを通る２次曲線とＸ＝ａの交点のＹ値を分散サブデータＡ６とし、２つの乱数サブデータＲ５，ｒ４と秘密サブデータＳ３とを通る２次曲線とＸ＝ｂの交点のＹ値を分散サブデータＢ６とし、２つの乱数サブデータＲ４，ｒ５と秘密サブデータＳ３とを通る２次曲線とＸ＝ｃの交点のＹ値を分散サブデータＣ６とし、２つの乱数サブデータＲ３，ｒ６と秘密サブデータＳ３とを通る２次曲線とＸ＝ｄの交点のＹ値を分散サブデータＤ６とする。
【００８１】
また、分散サブデータＡｉ〜Ｄｉ（ｉ＝７）の生成では、図１８に示すように、２つの乱数サブデータＲ７，ｒ４と秘密サブデータＳ４とを通る２次曲線とＸ＝ａの交点のＹ値を分散サブデータＡ７とし、２つの乱数サブデータＲ６，ｒ５と秘密サブデータＳ４とを通る２次曲線とＸ＝ｂの交点のＹ値を分散サブデータＢ７とし、２つの乱数サブデータＲ５，ｒ６と秘密サブデータＳ４とを通る２次曲線とＸ＝ｃの交点のＹ値を分散サブデータＣ７とし、２つの乱数サブデータＲ４，ｒ７と秘密サブデータＳ４とを通る２次曲線とＸ＝ｄの交点のＹ値を分散サブデータＤ７とする。
【００８２】
これは同一の曲線上に複数の分散データが位置する従来の閾値法の場合（図２８参照）とは異なり、複数の分散データそれぞれを、異なる曲線上（ここでは２次曲線）に配置するものである。つまり、「ＡとＲとｒ」、「ＢとＲとｒ」、「ＣとＲとｒ」、「ＤとＲとｒ」を結ぶ曲線を見て分かるように、１つの曲線には、Ａ、Ｂ、Ｃ、Ｄのいずれか１つの分散データしか現れない。この方法は、秘密データから、閾値３、分散数３の分散データを４組（「ＡとＲとｒ」、「ＢとＲとｒ」、「ＣとＲとｒ」、「ＤとＲとｒ」）作成するものである。そして、この４組から共通の乱数データＲ（分散演算用データ）と共通の乱数データｒ（分散演算用データ）の情報を欠落させることで、分散データＡ，Ｂ，Ｃ，Ｄという閾値３、分散数４の秘密分散を実現するものである。
【００８３】
図１９は第２実施形態に係る３組の分散データＡ，Ｂ，Ｃに基づく秘密データの復元処理の流れを示すフロー図である。
【００８４】
分散データＡ，Ｂ，Ｃに基づく秘密データの復元処理では、図１９中のステップ(1)〜(26)が順次実行される。より詳細には、まず、秘密分散装置１は、上述の図１３および図１４に示した分散データ生成とは逆の手順により、分散サブデータＡ１，Ａ２，Ａ３，Ｃ２からそれぞれ乱数サブデータＲ１，Ｒ２，Ｒ３，ｒ１を取得する（ステップ(1)〜(4)）。次に、取得した乱数サブデータＲ１と分散サブデータＣ３とを通る直線１（図１４参照）を計算し（ステップ(5)）、この直線１とＸ＝ｆとの交点のＹ値を計算することにより、乱数サブデータｒ２を取得する（ステップ(6)）。次に、取得した乱数サブデータＲ３，ｒ２と分散サブデータＢ４とを通る曲線２（図１５参照）を計算し（ステップ(7)）、この曲線２とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ１を取得する（ステップ(8)）。次に、取得した秘密サブデータＳ１、乱数サブデータｒ１、及び分散サブデータＡ４を通る曲線３（図１５参照）を計算し（ステップ(9)）、この曲線３とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ４を取得する（ステップ(10)）。
【００８５】
次に、取得した乱数サブデータＲ２、秘密サブデータＳ１、及び分散サブデータＣ４を通る曲線４（図１５参照）を計算し（ステップ(11)）、この曲線４とＸ＝ｆとの交点のＹ値を計算することにより、乱数サブデータｒ３を取得する（ステップ(12)）。次に、取得した乱数サブデータＲ４，ｒ３と分散サブデータＢ５とを通る曲線５（図１６参照）を計算し（ステップ(13)）、この曲線５とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ２を取得する（ステップ(14)）。次に、取得した秘密サブデータＳ２、乱数サブデータｒ２、及び分散サブデータＡ５とを通る曲線６（図１６参照）を計算し（ステップ(15)）、この曲線６とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ５を取得する（ステップ(16)）。次に、取得した乱数サブデータＲ３、秘密サブデータＳ２、及び分散サブデータＣ５とを通る曲線７（図１６参照）を計算し（ステップ(17)）、この曲線７とＸ＝ｆとの交点のＹ値を計算することにより、乱数サブデータｒ４を取得する（ステップ(18)）。
【００８６】
次に、取得した乱数サブデータＲ５，ｒ４と分散サブデータＢ６とを通る曲線８（図１７参照）を計算し（ステップ(19)）、この曲線８とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ３を取得する（ステップ(20)）。次に、取得した秘密サブデータＳ３、乱数サブデータｒ３、及び分散サブデータＡ６とを通る曲線９（図１７参照）を計算し（ステップ(21)）、この曲線９とＸ＝ｅとの交点のＹ値を計算することにより、乱数サブデータＲ６を取得する（ステップ(22)）。次に、取得した乱数サブデータＲ４、秘密サブデータＳ３、及び分散サブデータＣ６とを通る曲線１０（図１７参照）を計算し（ステップ(23)）、この曲線１０とＸ＝ｆとの交点のＹ値を計算することにより、乱数サブデータｒ５を取得する（ステップ(24)）。最後に、取得した乱数サブデータＲ６，ｒ５と分散サブデータＢ７とを通る曲線１１（図１８参照）を計算し（ステップ(25)）、この曲線１１とＸ＝０との交点のＹ値を計算することにより、秘密サブデータＳ４を取得する（ステップ(26)）。
【００８７】
このように、分散データＡ，Ｂ，Ｃは、それぞれ秘密データから閾値３、分散数３の分散データ（「ＡとＲとｒ」、「ＢとＲとｒ」、「ＣとＲとｒ」）を作成し、そこから共通の乱数データＲ（分散演算用データ）と共通の乱数データｒ（分散演算用データ）の情報を欠落させたものであるが、分散データＡ，Ｂ，Ｃが揃うと、この欠落された乱数データＲ（分散演算用データ）と乱数データｒ（分散演算用データ）の情報が復元でき、それで、秘密データが復元できるものになっている。
【００８８】
なお、他の分散データの閾値ｋ以上の集合（例えば、分散データＡ，Ｂ，Ｄ等）についても、上述の分散データＡ，Ｂ，Ｃと同様に復元処理を実施することができる。また、上記第１および第２実施形態に示した秘密分散の処理に準じて、より高い次数の曲線を用いると共に閾値（ｋ−１）個の乱数データ（分散演算用データ）を導入することにより、閾値ｋをさらに増大させることも可能である。なお、分散数ｎは、秘密データとこれら乱数データ（分散演算用データ）の組合せを変えることでいくつでも増大させることが可能である。
【００８９】
さらに、第１および第２実施形態では、所定の次数の曲線（または直線）の関係に基づき、秘密サブデータと乱数サブデータとから分散サブデータを生成することとしたが、必ずしもこれに限定される必要はない。つまり、秘密分散装置１による分散処理では、秘密サブデータと乱数サブデータとを変数とする所定の関数（以下、分散データ生成関数という。）を用いることにより、分散データを生成することができる。以下、分散データ生成関数を用いる方法について説明する。
【００９０】
＜第３実施形態＞
図２０は第３実施形態に係る秘密データの分散処理に用いられる分散データ生成関数を示す説明図である。第３実施形態では、上述の第１実施形態に係る秘密分散装置１による分散処理（閾値ｋ＝２、分散数ｎ＝３）に用いた直線の関係が分散データ生成関数として一般化されており、第１実施形態と同様の事項については詳細な説明を省略する。
【００９１】
図２０（Ａ）〜（Ｃ）に示すように、分散データＡ〜Ｃを構成する分散サブデータＡｉ〜Ｃｉ（ｉ＝１〜４）は、秘密サブデータＳｍ（ｍ＝１〜４）と乱数サブデータＲｊ（ｊ＝１〜５）とを変数とする分散データ生成関数ＦｕｎｃｔｉｏｎＡ（Ｒｊ，Ｓｍ）、ＦｕｎｃｔｉｏｎＢ（Ｒｊ，Ｓｍ）、ＦｕｎｃｔｉｏｎＣ（Ｒｊ，Ｓｍ）を用いて生成することができる。ここでも、上述の第１および第２実施形態と同様に、１つの秘密サブデータと、各乱数データにおける１つの乱数サブデータとから１つの分散サブデータが生成される。なお、一部の分散サブデータＢ１，Ｃ１，Ｃ２については、乱数サブデータＲ１，Ｒ２のみを変数とした関数となる。
【００９２】
同一の直線、または曲線上に複数の分散データが位置する従来の閾値法の場合（図２７、２８参照）、この分散データ生成関数を、直線、または曲線以外の関数に変更することは不可能であった。例えば図２７で、「Ａ１とＢ１」とのＸＯＲ（排他的論理和）でＳ１が求められるようにしようとすると、「Ａ１とＣ１」、または、「Ｂ１とＣ１」からＳ１を求める方法がなくなる。つまり閾値秘密分散を実現できなくなる。このように、従来の閾値法では、分散データ生成関数は、直線、または曲線を示す多項式の関数に固定されるため、分散・復元処理速度も遅かった。
【００９３】
これに対して、本発明は、秘密データから、「分散データＸ（Ｘ＝１, ２, ・・・，ｎ）」と「ｋ−１」個の乱数データ（分散演算用データ）の組、つまり、閾値ｋ、分散数ｋの組を１組作成し、ここから「ｋ−１」個の乱数データ（分散演算用データ）の情報を欠落させた分散データをＮ個作成することで、閾値ｋ、分散数ｎの閾値秘密分散を実現しているため、このような不自由さがなく、処理速度が高速な関数を分散データ生成関数として利用することが可能である。
【００９４】
それは、それぞれの分散データが、他の分散データとは独立に計算可能だからである。例えば、図２で、「Ａ３とＲ３」とのＸＯＲ（排他的論理和）でＳ３を求められるようにしようとするなら、「Ｓ３とＲ３」とのＸＯＲ（排他的論理和）をＡ３としておけばよい。このようにしたとしても点Ｒ３を通る「Ｓ２とＢ３」や「Ｓ１とＣ３」の関係には何ら影響がない。
【００９５】
分散データ生成関数ＦｕｎｃｔｉｏｎＡ〜Ｃとしては、任意の関数を用いることが可能であるが、演算処理の高速化の観点から、ＸＯＲ（排他的論理和）や高速処理可能な剰余体における乗除算を用いた関数（例えば、分散データの生成を剰余体における乗算で行い、秘密データの復元を剰余体における除算で行う。）とすることが好ましい。
【００９６】
一方で、分散サブデータＡｉ〜Ｃｉ（ｉ＝１〜４）は、図２７に示した従来の閾値法の場合とは異なり、互いに影響しない値に設定することができるため、各分散データ生成関数ＦｕｎｃｔｉｏｎＡ〜Ｃは、互いに異なるものとすることができる。その場合、閾値ｋ以上の分散データを第三者が取得した場合でも、それらの分散データ生成関数の情報を秘匿しておけば、分散データ生成関数自体が一種の暗号として機能して、秘密データの容易な復元を阻止できる。特に、互いに異なる複数の複数の分散データ生成関数を用いることにより、秘密データＳの安全性はより高まる。
【００９７】
なお、ここでは分散データ生成関数をＦｕｎｃｔｉｏｎＡ〜Ｃと３種類だけに限定しているが、実際は、１つ１つの分散サブデータの生成において、計算方法を変えることが可能である。こうすれば更に複雑度が高まり安全性はより強固になる。
【００９８】
図２１は第３実施形態に係る秘密データの分散処理における分散データの生成の要領を示す説明図（（Ａ）分散データＡ、（Ｂ）分散データＢ、（Ｃ）分散データＣ）である。この図２１は、上記第１実施形態における図３に対応する。
【００９９】
第３実施形態における分散データＡ〜Ｃの生成では、図２１（Ａ）〜（Ｃ）に示すように、乱数サブデータの値をそのまま用いる一部の分散サブデータ（Ｂ１，Ｃ１，Ｃ２）を除けば、１つの秘密サブデータと１つの乱数サブデータとを変数とした所定の分散データ生成関数ＦｕｎｃｔｉｏｎＡ〜Ｃが用いられる。
【０１００】
ここで、図２１（Ａ）に示す分散データＡでは、分散サブデータＡ１〜Ａ４を生成するＦｕｎｃｔｉｏｎＡとしてＸＯＲ（排他的論理和）が用いられる（図２１（Ａ）中の丸で囲まれた＋記号はＸＯＲを示す。）。また、図２１（Ｂ）に示す分散データＢでは、分散サブデータＢ２〜Ｂ５を生成するＦｕｎｃｔｉｏｎＢとしてガロア体における乗算が用いられる。例えば、分散サブデータＢ２は、乱数データＲ２と秘密サブデータＳ１との乗算を素数Ｐで割った剰余として生成される。また、図２１（Ｃ）に示す分散データＣでは、分散サブデータＣ３〜Ｃ５を生成するＦｕｎｃｔｉｏｎＣとしてガロア体における加算が用いられる。例えば、分散サブデータＣ３は、乱数データＲ３と秘密サブデータＳ１との加算を素数Ｐで割った剰余として生成される。
【０１０１】
なお、ここでは、異なる分散データに対して異なる分散データ生成関数を用いる構成としたが、同じ分散データを構成する分散サブデータを互いに異なる複数の分散データ生成関数によってそれぞれ生成することもできる。
【０１０２】
図２２は３実施形態に係る秘密分散装置における分散データＡ，Ｂに基づく秘密データの復元処理の流れを示すフロー図である。
【０１０３】
分散データＡ，Ｂに基づく秘密データの復元処理では、図２２中のステップ(1)〜(11)が順次実行される。ここで、分散データＡに関しては、その生成方法と同様にＸＯＲ（排他的論理和）を用いて復元処理が行われる。また、分散データＢに関しては、ガロア体における除算を用いて復元処理が行われる。この除算とは、逆元の乗算に等しいので、元データの逆元（図２２中では、例えば秘密サブデータＳ１の逆元を（Ｓ１）−１と示す。）を計算し、ガロア体での乗算を行う。なお、逆元はユークリッドの互除法を用いて取得することができる。
【０１０４】
より詳細には、図２２に示すように、まず、秘密分散装置１は、分散データＢにおける分散サブデータＢ１から乱数サブデータＲ１を取得する（ステップ(1)）。次に、取得した乱数サブデータＲ１と分散サブデータＡ１とのＸＯＲを計算することにより、秘密サブデータＳ１を取得する（ステップ(2)）。次に、秘密サブデータＳ１の逆元（Ｓ１）−１を求め（ステップ(3)）、Ｂ２×（Ｓ１）−１ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ２を取得する（ステップ(4)）。次に、分散サブデータＡ２と乱数サブデータＲ２とのＸＯＲを計算することにより、秘密サブデータＳ２を取得する（ステップ(5)）。次に、秘密サブデータＳ２の逆元（Ｓ２）−１を求め（ステップ(6)）、Ｂ３×（Ｓ２）−１ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ３を取得する（ステップ(7)）。次に、分散サブデータＡ３と乱数サブデータＲ３とのＸＯＲを計算することにより、秘密サブデータＳ３を取得する（ステップ(8)）。次に、秘密サブデータＳ３の逆元（Ｓ３）−１を求め（ステップ(9)）、Ｂ４×（Ｓ３）−１ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ４を取得する（ステップ(10)）。最後に、分散サブデータＡ４と乱数サブデータＲ４とのＸＯＲを計算することにより、秘密サブデータＳ４を取得する（ステップ(11)）。
【０１０５】
図２３は３実施形態に係る秘密分散装置における分散データＡ，Ｃに基づく秘密データの復元処理の流れを示すフロー図である。
【０１０６】
分散データＡ，Ｃに基づく秘密データの復元処理では、図２３中のステップ(1)〜(8)が順次実行される。ここで、分散データＣおよびこれに対応する乱数データＲに関しては、ガロア体における減算を用いて復元処理が行われる。なお、減算した結果が負の値となる場合には、素数Ｐを加えるものとする。
【０１０７】
より詳細には、図２３に示すように、まず、秘密分散装置１は、分散データＣにおける分散サブデータＣ１，Ｃ２から乱数サブデータＲ１，Ｒ２をそれぞれ取得する（ステップ(1)，(2)）。次に、取得した乱数サブデータＲ１と分散サブデータＡ１とのＸＯＲを計算することにより、秘密サブデータＳ１を取得することができ（ステップ(3)）、また、乱数サブデータＲ２と分散サブデータＡ１とのＸＯＲを計算することにより、秘密サブデータＳ２を取得する（ステップ(4)）。次に、Ｃ３−Ｓ１ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ３を取得することができ（ステップ(5)）、また、Ｃ４−Ｓ２ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ４を取得する（ステップ(6)）。最後に、取得した乱数サブデータＲ３と分散サブデータＡ３とのＸＯＲを計算することにより、秘密サブデータＳ３を取得することができ（ステップ(7)）、また、乱数サブデータＲ４と分散サブデータＡ４とのＸＯＲを計算することにより、秘密サブデータＳ４を取得する（ステップ(8)）。
【０１０８】
図２４は３実施形態に係る秘密分散装置における分散データＢ，Ｃに基づく秘密データの復元処理の流れを示すフロー図である。
【０１０９】
分散データＢ，Ｃに基づく秘密データの復元処理では、図２４中のステップ(1)〜(12)が順次実行される。より詳細には、まず、秘密分散装置１は、分散データＣにおける分散サブデータＣ２から乱数サブデータＲ２を取得する（ステップ(1)）。次に、取得した乱数サブデータＲ２の逆元（Ｒ２）−１を求め（ステップ(2)）、Ｂ２×（Ｒ２）−１ ｍｏｄ Ｐを計算することにより、秘密サブデータＳ１を取得する（ステップ(3)）。次に、Ｃ３−Ｓ１ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ３を取得する（ステップ(4)）。次に、取得した乱数サブデータＲ３の逆元（Ｒ３）−１を求め（ステップ(5)）、Ｂ３×（Ｒ３）−１ ｍｏｄ Ｐを計算することにより、秘密サブデータＳ２を取得する（ステップ(6)）。次に、Ｃ４−Ｓ２ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ４を取得する（ステップ(7)）。次に、取得した乱数サブデータＲ４の逆元（Ｒ４）−１を求め（ステップ(8)）、Ｂ４×（Ｒ４）−１ ｍｏｄ Ｐを計算することにより、秘密サブデータＳ３を取得する（ステップ(9)）。次に、Ｃ５−Ｓ３ ｍｏｄ Ｐを計算することにより、乱数サブデータＲ５取得する（ステップ(10)）。最後に、取得した乱数サブデータＲ５の逆元（Ｒ５）−１を求め（ステップ(11)）、Ｂ５×（Ｒ５）−１ ｍｏｄ Ｐを計算することにより、秘密サブデータＳ４を取得する（ステップ(12)）。
【０１１０】
図２５および図２６は、それぞれ第３実施形態に係る分散データの生成方法および復元方法の変形例を示す説明図である。秘密データの分散処理に用いられる分散データ生成関数としては、上述のような一般的な関数に限らず、以下に示すような参照テーブルを用いてもよい。
【０１１１】
図２５は、分散データ（閾値ｋ＝２、分散数ｎ＝３）を生成するための参照テーブルの一例を示している。この参照テーブルでは、縦軸および横軸（図２５中に太枠で表示）の１組の入力値（ここでは、便宜上、１，２・・・ＦＦＨ（１６進数）の値をとるものとする。）から１つの出力値が得られる。例えば、縦軸の秘密サブデータＳ１を１とし、横軸の乱数サブデータＲ１を１としたデータを入力値とすると、分散サブデータＡ１が出力値のＦＥ０３Ｈとして得られる。
【０１１２】
図２６は、秘密データＳを復元するための参照テーブルの一例を示している。この参照テーブルでは、縦軸の入力値から２つの出力値（ここでは、Ｓ１，Ｒ１の値）が得られる。例えば、上述の図２５の例とは逆に、縦軸の分散サブデータＡ１におけるＦＥ０３Ｈを入力値とすると、秘密サブデータＳ１が出力値の１として得られ、また、乱数サブデータＲ１が出力値の１として得られる。なお、図２５の入力値および出力値を逆転させて、復元用の参照テーブルとして用いてもよい。
【０１１３】
この変形例に示すように、分散処理および復元処理の分散データ生成関数として参照テーブルを利用することにより、簡易な処理により分散データを生成することができるという利点がある。
【０１１４】
以上のように、本発明に係る秘密分散装置１では、従来の閾値法の改良により、秘密サブデータと乱数サブデータ（分散演算用サブデータ）とを変数とする所定の分散データ生成関数を用いて分散サブデータを生成する構成としたため、ユーザによる所望の演算方法の導入（分散データ生成関数の変更）を可能とすると共に、閾値ｋ以上の分散データが第三者に取得された場合でも秘密データの容易な復元を回避することが可能となるという利点がある。
【０１１５】
本発明を特定の実施形態に基づいて説明したが、これらの実施形態はあくまでも例示であって、本発明はこれらの実施形態によって限定されるものではない。なお、上記実施形態に示した本発明に係る秘密分散装置および秘密分散プログラムの各構成要素は、必ずしも全てが必須ではなく、少なくとも本発明の範囲を逸脱しない限りにおいて適宜取捨選択することが可能である。
【産業上の利用可能性】
【０１１６】
本発明に係る秘密分散装置および秘密分散プログラムは、従来の閾値法を改良した方法により、ユーザによる所望の演算方法の導入を可能とすると共に、閾値以上の分散データが第三者に取得された場合でも秘密データの容易な復元を阻止することを可能とし、特に、秘密データを所定の閾値以上の数に分散することにより、少なくとも閾値未満の集合ではその秘密データの復元が不可能な複数の分散データを生成する秘密分散装置および秘密分散プログラムなどとして有用である。
【符号の説明】
【０１１７】
１  秘密分散装置
２  分散先装置
３  クライアント装置
１２  分散処理受付部
１３  分散処理部（分散データ生成手段）
１４  ＩＤ生成部
１５  乱数生成部
１６  分散用データ格納部
２１  復元処理受付部
２３  復元用データ格納部
【図１】
2014044264.tif 000003
【図２】
2014044264.tif 000004
【図３】
2014044264.tif 000005
【図４】
2014044264.tif 000006
【図５】
2014044264.tif 000007
【図６】
2014044264.tif 000008
【図７】
2014044264.tif 000009
【図８】
2014044264.tif 000010
【図９】
2014044264.tif 000011
【図１０】
2014044264.tif 000012
【図１１】
2014044264.tif 000013
【図１２】
2014044264.tif 000014
【図１３】
2014044264.tif 000015
【図１４】
2014044264.tif 000016
【図１５】
2014044264.tif 000017
【図１６】
2014044264.tif 000018
【図１７】
2014044264.tif 000019
【図１８】
2014044264.tif 000020
【図１９】
2014044264.tif 000021
【図２０】
2014044264.tif 000022
【図２１】
2014044264.tif 000023
【図２２】
2014044264.tif 000024
【図２３】
2014044264.tif 000025
【図２４】
2014044264.tif 000026
【図２５】
2014044264.tif 000027
【図２６】
2014044264.tif 000028
【図２７】
2014044264.tif 000029
【図２８】
2014044264.tif 000030