(57)【特許請求の範囲】
【請求項１】
秘密情報Ｓが分散されてなるｎ個（但し、ｎ≧２）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置であって、
前記分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段と、
この秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する手段と、
前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）を生成する手段と、
前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する手段と、
前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する手段（但し、(+)は排他的論理和を表す記号）と、
前記各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する手段と、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する手段と、
前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段と、
を備えたことを特徴とする秘密分散装置。
【請求項２】
秘密情報Ｓが分散されてなるｎ個（但し、ｎ≧２）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置により実行される秘密分散方法であって、
前記分散情報Ｄ（０）〜Ｄ（n-1）を配布する前に、前記秘密情報Ｓを、前記秘密分散装置が有する記憶装置に一時的に記憶する記憶工程と、
この秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する工程と、
前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）を生成する工程と、
前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する工程と、
前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する工程（但し、(+)は排他的論理和を表す記号）と、
前記各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する工程と、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する工程と、
前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元工程と、
を備えたことを特徴とする秘密分散方法。
【請求項３】
秘密情報Ｓが分散されてなるｎ個（但し、ｎ≧２）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置のプログラムであって、
前記秘密分散装置のコンピュータを、
前記分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、
この秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する手段、
前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）（＝０）を生成する手段、
前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する手段、
前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する手段（但し、(+)は排他的論理和を表す記号）、
前記各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する手段、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する手段、
前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する秘密情報復元手段、
として機能させるためのプログラム。
【請求項４】
請求項３に記載のプログラムにおいて、
前記秘密情報復元手段は、
前記２個の分散情報Ｄ（ｉ），Ｄ（ｊ）のうち、一方の分散情報Ｄ（ｉ）に関し、行番号ｉと同一の列番号ｉが割り当てられた分散部分データＤ（ｉ，ｉ）を含むか否かを判定する手段、
この判定の結果、分散情報Ｄ（ｉ）が分散部分データＤ（ｉ，ｉ）を含むとき、この分散部分データＤ（ｉ，ｉ）と、他方の分散情報Ｄ（ｊ）に含まれる同一列番号ｉの分散部分データＤ（ｊ，ｉ）と、第２分割秘密データＫ（０）（＝０）とに基づいて、第１分割秘密データＫ（ｒ）＝Ｄ（ｉ，ｉ）(+)Ｄ（ｊ，ｉ）(+)Ｋ（０）を復元する第１の復元手段（但し、ｒ＝ｊ−ｉ(mod ｎ)）、
この第１分割秘密データＫ（ｒ）の復元後、第１終了条件ｉ−ｒ＝ｎ−１を満たすか否かを判定する手段、
この判定結果が第１終了条件を満たさないとき、前記第１分割秘密データＫ（ｒ）の復元の式をｒだけずらすことにより、前記第１終了条件を満たすまで、順次、他の第１分割秘密データＫ（ｒ＋ｒ），…，Ｋ（(n-1)ｒ）を復元する第２の復元手段（但し、Ｋ（ｒ＋ｒ）＝Ｄ（ｉ，ｉ−ｒ）(+)Ｄ（ｊ，ｉ−ｒ）(+)Ｋ（ｒ），…，Ｋ（(n-1)ｒ）＝Ｄ（ｉ，ｉ−(n-2)ｒ）(+)Ｄ（ｊ，ｉ−(n-2)ｒ）(+)Ｋ（(n-2)ｒ））、
前記判定結果が第１終了条件を満たすとき又は前記分散情報Ｄ（ｉ）が分散部分データＤ（ｉ，ｉ）を含まないとき、他方の分散情報Ｄ（ｊ）における行番号ｊと同一の列番号ｊが割り当てられた分散部分データＤ（ｊ，ｊ）と、一方の分散情報Ｄ（ｉ）に含まれる同一列番号ｊの分散部分データＤ（ｉ，ｊ）と、前記第２分割秘密データＫ（０）（＝０）とに基づいて、他の第１分割秘密データＫ（−ｒ）＝Ｄ（ｉ，ｊ）(+)Ｄ（ｊ，ｊ）(+)Ｋ（０）を復元する第３の復元手段、
この第１分割秘密データＫ（−ｒ）の復元後、第２終了条件ｊ＋ｒ＝ｎ−１を満たすか否かを判定する手段、
この判定結果が第２終了条件を満たさないとき、前記第１分割秘密データＫ（−ｒ）の復元の式をｒだけずらすことにより、前記第２終了条件を満たすまで、順次、残りの第１分割秘密データＫ（−ｒ−ｒ），…，Ｋ（−(n-1)ｒ）を復元する第４の復元手段（但し、Ｋ（−ｒ−ｒ）＝Ｄ（ｉ，ｊ＋ｒ）(+)Ｄ（ｊ，ｊ＋ｒ）(+)Ｋ（−ｒ），…，Ｋ（−(n-1)ｒ）＝Ｄ（ｉ，ｊ＋(n-2)ｒ）(+)Ｄ（ｊ，ｊ＋(n-2)ｒ）(+)Ｋ（−(n-2)ｒ））、
前記各復元手段のうち、該当する各復元手段により復元されたｎ−１個の第１分割秘密データＫ（１），…，Ｋ（n-1）を互いに連接することにより、前記秘密情報Ｓ＝Ｋ（１）‖Ｋ（２）‖…‖Ｋ（n-1）を復元する手段（但し、‖は連接を表す記号）、
を含んでいることを特徴とするプログラム。
【請求項５】
秘密情報Ｓが分散されてなるｎ’個（但し、ｎ’≧３）の分散情報Ｄ（０），…，Ｄ（n’-1）のうち、ｎ個（但し、ｎ＜ｎ’）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置のプログラムであって、
前記秘密分散装置のコンピュータを、
前記分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、
この秘密情報Ｓをｎ’−１個に分割すると共に、分割結果に１からｎ’−１までの行番号ｊ（但し、０≦ｊ≦ｎ’−１）を割り当てることにより、互いに同一サイズのｎ’−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n’-1）を生成する手段、
前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）（＝０）を生成する手段、
前記各分割秘密データのサイズ以上のサイズを有するｎ’−１個の乱数を生成すると共に、各生成結果に０からｎ’−２までの列番号ｉ（但し、０≦ｉ≦ｎ’−２）を割り当ててｎ’−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n’-2）を生成する手段、
前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n’-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n’-2）に基づいて、ｎ（ｎ’−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ’)）(+)Ｒ（ｉ）を算出する手段（但し、(+)は排他的論理和を表す記号）、
前記各分散部分データのうち、同一の行番号ｊを有するｎ’−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する手段、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する手段、
前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する秘密情報復元手段、
前記（２，ｎ）型を（２，ｎ＋ｔ）型に変更したいとき、変更可能条件ｔ≦ｎ’−ｎを満たすか否かを判定する手段、
前記判定結果が変更可能条件を満たすとき、前記任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、ｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成する分散情報生成手段、
この生成したｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を前記ｎ個の記憶装置とは異なるｔ個の記憶装置に個別に配布する手段、
として機能させるためのプログラム。
【請求項６】
秘密情報Ｓが分散されてなる５個の分散情報Ｄ（０），…，Ｄ（４）を個別に５個の記憶装置に配布し、且つ、前記５個の分散情報のうち、任意の３個の分散情報から秘密情報Ｓを復元可能な（３，５）型の秘密分散装置のプログラムであって、
前記秘密分散装置のコンピュータを、
前記分散情報Ｄ（０）〜Ｄ（４）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、
この秘密情報Ｓを２個に分割すると共に、分割結果に０から１までの識別番号を割り当てることにより、互いに同一サイズの２個の分割秘密データＫ（０），Ｋ（１）を生成する手段、
前記各分割秘密データのサイズと同一サイズを有する４個の乱数を生成すると共に、各生成結果に０から３までの識別番号を割り当てて４個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３）を生成する手段、
前記２個の分割秘密データＫ（０），Ｋ（１）、前記４個の乱数データＲ（０）〜Ｒ（３）及び下記１０個の式に基づいて（但し、(+)は排他的論理和を表す記号）、互いに２つの識別番号の組合せで識別可能な１０個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（１，０），Ｄ（１，１），Ｄ（２，０），Ｄ（２，１），Ｄ（３，０），Ｄ（３，１），Ｄ（４，０），Ｄ（４，１）を算出する手段、
Ｄ（０，０）＝Ｒ（０）、
Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、
Ｄ（１，０）＝Ｒ（１）、
Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、
Ｄ（２，０）＝Ｒ（２）、
Ｄ（２，１）＝Ｋ（０）(+)Ｒ（３）(+)Ｒ（０）、
Ｄ（３，０）＝Ｒ（３）、
Ｄ（３，１）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（１）、
Ｄ（４，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（２）、
Ｄ（４，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）、
前記各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する２個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１）毎に、行番号ｊを割り当てて、５個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４）を生成する手段、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１）からなる５個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４）を個別に前記５個の記憶装置に配布する手段、
前記配布された５個の分散情報Ｄ（０）〜Ｄ（４）のうち、任意の３個の分散情報Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段、
として機能させるためのプログラム。
【請求項７】
秘密情報Ｓが分散されてなる７個の分散情報Ｄ（０），…，Ｄ（６）を個別に７個の記憶装置に配布し、且つ、前記７個の分散情報のうち、任意の３個の分散情報から秘密情報Ｓを復元可能な（３，７）型の秘密分散装置のプログラムであって、
前記秘密分散装置のコンピュータを、
前記分散情報Ｄ（０）〜Ｄ（６）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、
この秘密情報Ｓを３個に分割すると共に、分割結果に０から２までの識別番号を割り当てることにより、互いに同一サイズの３個の分割秘密データＫ（０），Ｋ（１），Ｋ（２）を生成する手段、
前記各分割秘密データのサイズと同一サイズを有する６個の乱数を生成すると共に、各生成結果に０から５までの識別番号を割り当てて６個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３），Ｒ（４），Ｒ（５）を生成する手段、
前記３個の分割秘密データＫ（０）〜Ｋ（２）、前記６個の乱数データＲ（０）〜Ｒ（５）及び下記２１個の式に基づいて（但し、(+)は排他的論理和を表す記号）、互いに２つの識別番号の組合せで識別可能な２１個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（０，２），Ｄ（１，０），Ｄ（１，１），Ｄ（１，２），Ｄ（２，０），Ｄ（２，１），Ｄ（２，２），Ｄ（３，０），Ｄ（３，１），Ｄ（３，２），Ｄ（４，０），Ｄ（４，１）Ｄ（４，２），Ｄ（５，０），Ｄ（５，１），Ｄ（５，２），Ｄ（６，０），Ｄ（６，１），Ｄ（６，２）を算出する手段、
Ｄ（０，０）＝Ｒ（０）、
Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、
Ｄ（０，２）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（５）、
Ｄ（１，０）＝Ｒ（１）、
Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、
Ｄ（１，２）＝Ｋ（０）(+)Ｒ（０）(+)Ｒ（４）、
Ｄ（２，０）＝Ｒ（２）、
Ｄ（２，１）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（４）、
Ｄ（２，２）＝Ｋ（１）(+)Ｒ（１）(+)Ｒ（５）、
Ｄ（３，０）＝Ｒ（３）、
Ｄ（３，１）＝Ｋ（０）(+)Ｒ（４）(+)Ｒ（５）、
Ｄ（３，２）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（２）、
Ｄ（４，０）＝Ｒ（４）、
Ｄ（４，１）＝Ｋ（１）(+)Ｒ（５）(+)Ｒ（０）、
Ｄ（４，２）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）、
Ｄ（５，０）＝Ｒ（５）、
Ｄ（５，１）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（１）、
Ｄ（５，２）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（４）、
Ｄ（６，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（３）、
Ｄ（６，１）＝Ｋ（２）(+)Ｒ（１）(+)Ｒ（４）、
Ｄ（６，２）＝Ｋ（０）(+)Ｒ（２）(+)Ｒ（５）、
前記各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する３個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）毎に、行番号ｊを割り当てて、７個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４），Ｈ（５），Ｈ（６）を生成する手段、
互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）からなる７個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４），Ｄ（５），Ｄ（６）を個別に前記７個の記憶装置に配布する手段、
前記配布された７個の分散情報Ｄ（０）〜Ｄ（６）のうち、任意の３個の分散情報Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密情報を分散させた分散情報を配布し、収集した分散情報から秘密情報を復元する秘密分散装置、方法及びプログラムに係り、例えば多項式補間を用いずに高速に実行可能な完全秘密分散を実現し得る秘密分散装置、方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、暗号化鍵などの秘密情報を紛失した場合の対策としては、予め秘密情報のコピーを作成しておくことが有効である。しかしながら、秘密情報のコピーを作成すると、盗難のリスクが高くなるという問題が生じる。このような問題を解決する手法として、１９７９年にシャミア（Shamir）が（ｋ，ｎ）しきい値秘密分散法と呼ばれる秘密分散法を提案している（例えば、非特許文献１参照）。
【０００３】
（ｋ，ｎ）しきい値秘密分散法では、秘密情報をｎ個の分散情報に分割し、ｎ個の分散情報の中から任意のｋ個を集めれば元の秘密情報を復元できるが、ｋ−１個の分散情報からでは、元の秘密情報に関する情報を全く得られない。すなわち、（ｋ，ｎ）しきい値秘密分散法は、しきい値ｋを境にした秘密情報の復元特性をもっている（なお、１＜ｋ＜ｎ）。
【０００４】
このため、（ｋ，ｎ）しきい値秘密分散法によれば、ｋ−１個以下の分散情報が漏洩しても元の秘密情報が安全であり、ｎ−ｋ個以下の分散情報を紛失しても元の秘密情報を復元できるといった管理を実現できる。
【０００５】
しかしながら、シャミアの（ｋ，ｎ）しきい値秘密分散法では、秘密情報の分散や復元の処理を、多くの計算量を要する多項式補間により実現するので、大量のデータを秘密分散するためには、高速な計算機を必要とする不都合がある。
【０００６】
一方、このような不都合を解決し、計算量を大幅に削減し得る（ｋ，ｎ）しきい値秘密分散法として、荻原らの方式が知られている（例えば、特許文献１参照）。ここで、荻原らの方式は、秘密情報の分散処理や復元処理を排他的論理和演算のみで実現するので、高速に実行可能となっている。しかしながら、荻原らの方式は、例えば（３，４）しきい値法においては、分散データの取り方によっては、２個の分散データで元の秘密情報を復元できるなど（例えば、第１３２段落参照）、完全秘密分散ではない不都合がある。ここで、完全秘密分散とは、分散データの取り方によらずに、しきい値を境にした秘密情報の復元特性を有することを意味する。
【非特許文献１】A. Shamir: “How to share a secret", Communications of the ACM, 22, 11, pp.612-613 (1979)
【特許文献１】特開２００４−２１３６５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上説明したように、シャミアによる（ｋ，ｎ）しきい値秘密分散法では、多項式補間を用いるため、高速な計算機が必要となる不都合がある。一方、荻原らの方式は、分散データの取り方によっては、完全秘密分散ではない不都合がある。
【０００８】
また、本発明者の検討によれば、従来のシステムで分散情報を追加したい場合、次のように、（Ａ）分散情報を全メンバに再配布する手法、又は（Ｂ）分散情報を追加メンバのみに配布する手法が考えられる。具体的には、手法（Ａ）においては、追加後の人数に基づき、全ての分散情報を作成し直して全てのメンバに再配布する。手法（Ｂ）においては、ディーラーが予め分散情報を多めに作成して保持しておき、メンバ追加時に、この多めに作成してある分散情報を追加メンバのみに配布する。または手法（Ｂ）においては、ディーラーが秘密情報を保持しておき、追加人数分の分散情報を秘密情報から作成し、追加メンバのみに配布する方式としてもよい。
【０００９】
しかしながら、追加時の手法（Ａ）は、既存のメンバにも分散情報を再配布する必要があるので、手間がかかってしまう。また、手法（Ｂ）は、秘密情報を復元可能な数の分散情報、又は秘密情報それ自体を１箇所でディーラーが保持する必要があるので、セキュリティ性を低下させてしまう。
【００１０】
本発明は上記実情を考慮してなされたもので、多項式補間を用いずに高速に実行可能な完全秘密分散を実現し得る秘密分散装置、方法及びプログラムを提供することを目的とする。
【００１１】
本発明の他の目的は、メンバを追加したい場合に、分散情報を既存のメンバに配布する必要がなく、また、秘密情報を復元可能な数の分散情報又は秘密情報を１箇所に保存せずに、セキュリティ性を向上し得る秘密分散装置のプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
第１の発明は、秘密情報Ｓが分散されてなるｎ個（但し、ｎ≧２）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置であって、前記分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段と、この秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する手段と、前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）を生成する手段と、前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する手段と、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する手段（但し、(+)は排他的論理和を表す記号）と、前記各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する手段と、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する手段と、前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段とを備えた秘密分散装置である。
【００１３】
第２の発明は、秘密情報Ｓが分散されてなるｎ’個（但し、ｎ’≧３）の分散情報Ｄ（０），…，Ｄ（n’-1）のうち、ｎ個（但し、ｎ＜ｎ’）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の記憶装置に配布し、且つ、前記ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置のプログラムであって、前記秘密分散装置のコンピュータを、前記分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、この秘密情報Ｓをｎ’−１個に分割すると共に、分割結果に１からｎ’−１までの行番号ｊ（但し、０≦ｊ≦ｎ’−１）を割り当てることにより、互いに同一サイズのｎ’−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n’-1）を生成する手段、前記各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて第２分割秘密データＫ（０）（＝０）を生成する手段、前記各分割秘密データのサイズ以上のサイズを有するｎ’−１個の乱数を生成すると共に、各生成結果に０からｎ’−２までの列番号ｉ（但し、０≦ｉ≦ｎ’−２）を割り当ててｎ’−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n’-2）を生成する手段、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n’-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n’-2）に基づいて、ｎ（ｎ’−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ’)）(+)Ｒ（ｉ）を算出する手段（但し、(+)は排他的論理和を表す記号）、前記各分散部分データのうち、同一の行番号ｊを有するｎ’−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する手段、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別に前記ｎ個の記憶装置に配布する手段、前記配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する秘密情報復元手段、前記（２，ｎ）型を（２，ｎ＋ｔ）型に変更したいとき、変更可能条件ｔ≦ｎ’−ｎを満たすか否かを判定する手段、前記判定結果が変更可能条件を満たすとき、前記任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、ｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成する分散情報生成手段、この生成したｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を前記ｎ個の記憶装置とは異なるｔ個の記憶装置に個別に配布する手段、として機能させるためのプログラムである。
【００１４】
第３の発明は、秘密情報Ｓが分散されてなる５個の分散情報Ｄ（０），…，Ｄ（４）を個別に５個の記憶装置に配布し、且つ、前記５個の分散情報のうち、任意の３個の分散情報から秘密情報Ｓを復元可能な（３，５）型の秘密分散装置のプログラムであって、前記秘密分散装置のコンピュータを、前記分散情報Ｄ（０）〜Ｄ（４）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、この秘密情報Ｓを２個に分割すると共に、分割結果に０から１までの識別番号を割り当てることにより、互いに同一サイズの２個の分割秘密データＫ（０），Ｋ（１）を生成する手段、前記各分割秘密データのサイズと同一サイズを有する４個の乱数を生成すると共に、各生成結果に０から３までの識別番号を割り当てて４個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３）を生成する手段、前記２個の分割秘密データＫ（０），Ｋ（１）、前記４個の乱数データＲ（０）〜Ｒ（３）及び下記１０個の式に基づいて（但し、(+)は排他的論理和を表す記号）、互いに２つの識別番号の組合せで識別可能な１０個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（１，０），Ｄ（１，１），Ｄ（２，０），Ｄ（２，１），Ｄ（３，０），Ｄ（３，１），Ｄ（４，０），Ｄ（４，１）を算出する手段、  Ｄ（０，０）＝Ｒ（０）、  Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、  Ｄ（１，０）＝Ｒ（１）、  Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、  Ｄ（２，０）＝Ｒ（２）、  Ｄ（２，１）＝Ｋ（０）(+)Ｒ（３）(+)Ｒ（０）、  Ｄ（３，０）＝Ｒ（３）、  Ｄ（３，１）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（１）、  Ｄ（４，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（２）、  Ｄ（４，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）、前記各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する２個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１）毎に、行番号ｊを割り当てて、５個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４）を生成する手段、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１）からなる５個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４）を個別に前記５個の記憶装置に配布する手段、前記配布された５個の分散情報Ｄ（０）〜Ｄ（４）のうち、任意の３個の分散情報Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段、として機能させるためのプログラムである。
【００１５】
第４の発明は、秘密情報Ｓが分散されてなる７個の分散情報Ｄ（０），…，Ｄ（６）を個別に７個の記憶装置に配布し、且つ、前記７個の分散情報のうち、任意の３個の分散情報から秘密情報Ｓを復元可能な（３，７）型の秘密分散装置のプログラムであって、前記秘密分散装置のコンピュータを、前記分散情報Ｄ（０）〜Ｄ（６）が配布される前に、前記秘密情報Ｓが一時的に記憶される記憶手段、この秘密情報Ｓを３個に分割すると共に、分割結果に０から２までの識別番号を割り当てることにより、互いに同一サイズの３個の分割秘密データＫ（０），Ｋ（１），Ｋ（２）を生成する手段、前記各分割秘密データのサイズと同一サイズを有する６個の乱数を生成すると共に、各生成結果に０から５までの識別番号を割り当てて６個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３），Ｒ（４），Ｒ（５）を生成する手段、前記３個の分割秘密データＫ（０）〜Ｋ（２）、前記６個の乱数データＲ（０）〜Ｒ（５）及び下記２１個の式に基づいて（但し、(+)は排他的論理和を表す記号）、互いに２つの識別番号の組合せで識別可能な２１個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（０，２），Ｄ（１，０），Ｄ（１，１），Ｄ（１，２），Ｄ（２，０），Ｄ（２，１），Ｄ（２，２），Ｄ（３，０），Ｄ（３，１），Ｄ（３，２），Ｄ（４，０），Ｄ（４，１）Ｄ（４，２），Ｄ（５，０），Ｄ（５，１），Ｄ（５，２），Ｄ（６，０），Ｄ（６，１），Ｄ（６，２）を算出する手段、  Ｄ（０，０）＝Ｒ（０）、  Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、  Ｄ（０，２）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（５）、  Ｄ（１，０）＝Ｒ（１）、  Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、  Ｄ（１，２）＝Ｋ（０）(+)Ｒ（０）(+)Ｒ（４）、  Ｄ（２，０）＝Ｒ（２）、  Ｄ（２，１）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（４）、  Ｄ（２，２）＝Ｋ（１）(+)Ｒ（１）(+)Ｒ（５）、  Ｄ（３，０）＝Ｒ（３）、  Ｄ（３，１）＝Ｋ（０）(+)Ｒ（４）(+)Ｒ（５）、  Ｄ（３，２）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（２）、  Ｄ（４，０）＝Ｒ（４）、  Ｄ（４，１）＝Ｋ（１）(+)Ｒ（５）(+)Ｒ（０）、  Ｄ（４，２）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）、  Ｄ（５，０）＝Ｒ（５）、  Ｄ（５，１）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（１）、  Ｄ（５，２）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（４）、  Ｄ（６，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（３）、  Ｄ（６，１）＝Ｋ（２）(+)Ｒ（１）(+)Ｒ（４）、  Ｄ（６，２）＝Ｋ（０）(+)Ｒ（２）(+)Ｒ（５）、前記各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する３個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）毎に、行番号ｊを割り当てて、７個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４），Ｈ（５），Ｈ（６）を生成する手段、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）からなる７個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４），Ｄ（５），Ｄ（６）を個別に前記７個の記憶装置に配布する手段、前記配布された７個の分散情報Ｄ（０）〜Ｄ（６）のうち、任意の３個の分散情報Ｄ（ｊ）に基づいて、前記秘密情報Ｓを復元する復元手段、として機能させるためのプログラムである。
【００１６】
（作用）
第１〜第４の各発明は、排他的論理和を用いた（２，ｎ）型、（３，５）型、又は（３，７）型のしきい値秘密分散により、秘密情報の分散や復元の処理を非常に高速に実現し、多項式補間を用いずに高速に実行可能な完全秘密分散を実現することができる。
【００１７】
これに加え、第２の発明は、メンバを追加したい場合に、配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、追加人数分のｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成し、この分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を追加メンバに配布する。
【００１８】
これにより、第２の発明は、メンバを追加したい場合に、分散情報を既存のメンバに配布する必要がなく、また、秘密情報を復元可能な数の分散情報又は秘密情報を１箇所に保存せずに、セキュリティ性を向上させることができる。
【発明の効果】
【００１９】
以上説明したように本発明によれば、多項式補間を用いずに高速に実行可能な完全秘密分散を実現することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の各実施形態を図面を用いて説明する。なお、以下の各装置は、各装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【００２１】
（第１の実施形態）
図１は本発明の第１の実施形態に係る秘密分散システムの構成を示す模式図である。この秘密分散システムは、１台のクライアント装置１０及びｎ−１台の保管サーバ装置２０，３０，…，ｎ０が互いにインターネット等のネットワークＮＷを介して接続されている。
【００２２】
これら合計ｎ台の装置１０，２０，３０，…，ｎ０は、（ｋ，ｎ）しきい値秘密分散法におけるｎ人のメンバに対応する。特に、ｎ台の装置１０，２０，…，ｎ０が個別に有するｎ個の保存部１１，２１，…，ｎ１は、ｎ人のメンバが個別に有するｎ個の記憶装置に対応する。各装置１０，２０，３０，…，ｎ０には、それぞれ分散情報の配布順番を示すｊ番号（行番号）が割当てられている。例えば、クライアント装置１０には、ｊ＝０番目が割り当てられており、保管サーバ装置２０にはｊ＝１番目が割り当てられている。保管サーバ装置３０にはｊ＝２番目が割り当てられ、…、保管サーバ装置ｎ０にはｊ＝ｎ−１番目が割り当てられている。
【００２３】
ここで、クライアント装置１０は、秘密情報Ｓが分散されてなるｎ個（但し、ｎ≧２）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ台の装置１０，２０，…，ｎ０に配布し、且つ、ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置を実現するものである。なお、分散情報の個数は２個以上であればよい。例えばｎ＝２とし、秘密情報Ｓをｎ−１（＝１）個に分割して後述するＫ（１）とし、配布した２個の分散情報Ｄ（０），Ｄ（１）から秘密情報Ｓを復元してもよい。
【００２４】
具体的にはクライアント装置１０は、保存部１１、入力部１２、分散部分データ生成部１３、ハッシュ値生成部１４、元データ復元部１５、ハッシュ値検証部１６、制御部１７、出力部１８及び通信部１９が互いにバスを介して接続されている。
【００２５】
保存部１１は、制御部１９から読出／書込可能なハードウェア資源としての記憶装置であり、後述する分散情報Ｄ（０）〜Ｄ（n-1）が配布される前に、秘密情報Ｓが一時的に記憶され、分散情報Ｄ（０）〜Ｄ（n-1）が作成されると、分散情報作成情報が記憶され、分散情報が配布された後、ｊ＝０番目の分散情報Ｄ（０）が記憶されると共に、秘密情報Ｓが削除される。ここで、分散情報作成情報は、分散情報Ｄ（ｊ）の識別情報ｊと、分散情報Ｄ（ｊ）の配布先識別情報（装置ＩＤ、装置のアドレス情報等）とが互いに関連付けられた情報である。
【００２６】
入力部１２は、キーボード又はマウス等の通常の入力デバイスであり、操作者の操作により、分散処理又は復号処理の開始等の命令や、秘密情報Ｓ等の情報をクライアント装置１０内に入力する機能をもっている。
【００２７】
分散部分データ生成部１３は、制御部１７により制御され、保存部１１に一時的に記憶された秘密情報Ｓに基づいて、図２に一例（ｎ＝５の例）を示すように、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）を生成する機能をもっている。具体的には、分散部分データ生成部１２は、以下の各機能（ｆ１２−１）〜（ｆ１２−４）をもっている。
【００２８】
（ｆ１２−１）  保存部１１に記憶された秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する機能。
【００２９】
（ｆ１２−２）  各分割秘密データのサイズと同一サイズのゼロ値データを作成し、作成結果に行番号ｊ＝０を割り当てて分割秘密データＫ（０）を生成する機能。
【００３０】
（ｆ１２−３）  各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する機能。なお、各乱数Ｒ（ｉ）は、互いに異なる値である。
【００３１】
（ｆ１２−４）  分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する機能（但し、(+)は排他的論理和を表す記号）。なお、Ｋ（ｊ−ｉ(mod ｎ)）＝Ｋ（０）（＝０）の場合、必ずしもＫ（０）の項を計算する必要は無く、例えばＫ（０）の項の計算無しにＤ（ｊ，ｉ）＝Ｒ（ｉ）としてもよい。このように、Ｋ（０）（＝０）の場合、必ずしもＫ（０）の項を計算する必要が無いことは、本明細書中の他の箇所でも同様である。
【００３２】
ハッシュ値生成部１４は、制御部１７により制御され、制御部１７からバスを介してヘッダ情報Ｈ（ｊ）が入力されると、ヘッダ情報Ｈ（ｊ）のハッシュ値ｈ（Ｈ（ｊ））を生成し、得られたハッシュ値ｈ（Ｈ（ｊ））をバスに出力する機能をもっている。なお、ハッシュ値生成部１４は、ヘッダ情報Ｈ（ｊ）を検証しない場合、省略可能である。
【００３３】
元データ復元部１５は、制御部１７に制御され、ｎ台の装置１０，…，ｎ０に配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、秘密情報Ｓを復元する秘密情報復元機能をもっている。具体的には元データ復元部１５は、以下の各機能（ｆ１５−１）〜（ｆ１５−８）をもっている。
【００３４】
（ｆ１５−１）  ２個の分散情報Ｄ（ｉ），Ｄ（ｊ）のうち、一方の分散情報Ｄ（ｉ）に関し、行番号ｉと同一の列番号ｉが割り当てられた分散部分データＤ（ｉ，ｉ）を含むか否かを判定する機能。
【００３５】
（ｆ１５−２）  この判定の結果、分散情報Ｄ（ｉ）が分散部分データＤ（ｉ，ｉ）を含むとき、この分散部分データＤ（ｉ，ｉ）と、他方の分散情報Ｄ（ｊ）に含まれる同一列番号ｉの分散部分データＤ（ｊ，ｉ）と、ｊ＝０番目の分割秘密データＫ（０）（＝０）とに基づいて、分割秘密データＫ（ｒ）＝Ｄ（ｉ，ｉ）(+)Ｄ（ｊ，ｉ）(+)Ｋ（０）を復元する第１の復元機能（但し、ｒ＝ｊ−ｉ(mod ｎ)）。なお、Ｋ（０）（＝０）の項は必ずしも計算する必要が無く、例えばＫ（０）の項の計算無しにＫ（ｒ）＝Ｄ（ｉ，ｉ）(+)Ｄ（ｊ，ｉ）としてもよい。
【００３６】
（ｆ１５−３）  この分割秘密データＫ（ｒ）の復元後、第１終了条件ｉ−ｒ＝ｎ−１を満たすか否かを判定する機能。
【００３７】
（ｆ１５−４）  この判定結果が第１終了条件を満たさないとき、分割秘密データＫ（ｒ）の復元の式をｒだけずらすことにより、第１終了条件を満たすまで、順次、他の第１分割秘密データＫ（ｒ＋ｒ），…，Ｋ（(n-1)ｒ）を復元する第２の復元機能（但し、Ｋ（ｒ＋ｒ）＝Ｄ（ｉ，ｉ−ｒ）(+)Ｄ（ｊ，ｉ−ｒ）(+)Ｋ（ｒ），…，Ｋ（(n-1)ｒ）＝Ｄ（ｉ，ｉ−(n-2)ｒ）(+)Ｄ（ｊ，ｉ−(n-2)ｒ）(+)Ｋ（(n-2)ｒ））。
【００３８】
（ｆ１５−５）  ｆ１５−３の判定結果が第１終了条件を満たすとき又はｆ１５−１により分散情報Ｄ（ｉ）が分散部分データＤ（ｉ，ｉ）を含まないとき、他方の分散情報Ｄ（ｊ）における行番号ｊと同一の列番号ｊが割り当てられた分散部分データＤ（ｊ，ｊ）と、一方の分散情報Ｄ（ｉ）に含まれる同一列番号ｊの分散部分データＤ（ｉ，ｊ）と、ｊ＝０番目の分割秘密データＫ（０）（＝０）とに基づいて、他の分割秘密データＫ（−ｒ）＝Ｄ（ｉ，ｊ）(+)Ｄ（ｊ，ｊ）(+)Ｋ（０）を復元する第３の復元機能。なお、Ｋ（０）（＝０）の項は必ずしも計算する必要が無く、例えばＫ（０）の項の計算無しにＫ（−ｒ）＝Ｄ（ｉ，ｊ）(+)Ｄ（ｊ，ｊ）としてもよい。
【００３９】
（ｆ１５−６）  この分割秘密データＫ（−ｒ）の復元後、第２終了条件ｊ＋ｒ＝ｎ−１を満たすか否かを判定する機能。
【００４０】
（ｆ１５−７）  この判定結果が第２終了条件を満たさないとき、分割秘密データＫ（−ｒ）の復元の式をｒだけずらすことにより、第２終了条件を満たすまで、順次、残りの分割秘密データＫ（−ｒ−ｒ），…，Ｋ（−(n-1)ｒ）を復元する第４の復元機能（但し、Ｋ（−ｒ−ｒ）＝Ｄ（ｉ，ｊ＋ｒ）(+)Ｄ（ｊ，ｊ＋ｒ）(+)Ｋ（−ｒ），…，Ｋ（−(n-1)ｒ）＝Ｄ（ｉ，ｊ＋(n-2)ｒ）(+)Ｄ（ｊ，ｊ＋(n-2)ｒ）(+)Ｋ（−(n-2)ｒ））。
【００４１】
（ｆ１５−８）  各復元機能のうち、該当する各復元機能により復元されたｎ−１個の分割秘密データＫ（１），…，Ｋ（n-1）を互いに連接することにより、秘密情報Ｓ＝Ｋ（１）‖Ｋ（２）‖…‖Ｋ（n-1）を復元する機能（但し、‖は連接を表す記号）。
【００４２】
ハッシュ値検証部１６は、制御部１７により制御され、制御部１７からバスを介してヘッダ情報Ｈ（ｊ）及びそのハッシュ値ｈ（Ｈ（ｊ））が入力されると、ハッシュ値ｈ（Ｈ（ｊ））に基づいてヘッダ情報Ｈ（ｊ）を検証し、検証結果をバスに出力する機能をもっている。検証内容は、ヘッダ情報Ｈ（ｊ）から計算したハッシュ値と、入力されたハッシュ値ｈ（Ｈ（ｊ））との一致により、ヘッダ情報Ｈ（ｊ）を正当と判定する方式である。なお、ハッシュ値検証部１６は、ヘッダ情報Ｈ（ｊ）を検証しない場合、省略可能である。
【００４３】
ここで、ヘッダ情報Ｈ（ｊ）は、図３の上方に一例を示すように、行番号ｊを示すデータ識別子、ヘッダのサイズを表すヘッダーサイズ、元データのサイズを表す元データサイズｍ、元の秘密情報Ｓの分割数を示す分割数ｎ−１、分散部分データＤ（ｉ，ｊ）の処理単位ビットを示す処理単位ビット長ａ、乱数Ｒ（ｉ）のデータサイズを示す乱数データサイズａ、分割秘密データＫ（ｊ）のサイズを表す分割データサイズａ、パディングの有無やアルゴリズムを表すパディングアルゴリズム、ハッシュアルゴリズム情報（オプション）などが考えられる。ハッシュアルゴリズム情報は、ヘッダ情報のハッシュ値を算出し、ヘッダ情報の原本性を保証する場合などに追加される。すなわち、ハッシュアルゴリズム情報は、セキュリティの要件などに応じて追加又は省略される。但し、セキュリティの要件として予めシステムでハッシュアルゴリズムを決めている場合には、ハッシュアルゴリズム情報は、ヘッダ情報から省略可能である。
【００４４】
なお、分散情報Ｄ（ｊ）のデータフォーマットは、図３の下方に一例を示すように、ヘッダ情報Ｈ（ｊ）、そのハッシュ値ｈ（Ｈ（ｊ））、ｎ−１個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），…，Ｄ（ｊ，n-2）から構成されている。ここで、ハッシュ値ｈ（Ｈ（ｊ））は、オプション（option）であり、ヘッダ情報Ｈ（ｊ）内のハッシュアルゴリズム情報と同様に、セキュリティの要件に応じて省略可能となっている。
【００４５】
制御部１７は、入力部１２から入力される命令に基づいて、後述する図４及び図５のフローチャートに基づいて、各部１１，１３〜１６，１８，１９を制御する機能をもっている。また、制御部１７は、例えば、以下の機能（ｆ１７−１）〜（ｆ１７−２）をもっている。
【００４６】
（ｆ１７−１）  分散部分データ生成部１３により生成された各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する機能。
【００４７】
（ｆ１７−２）  互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を通信部１９を介して個別にｎ台の装置１０，２０，…，ｎ０に配布する機能。なお、制御部１７は、分散情報Ｄ（０）〜Ｄ（n-1）の漏洩防止の観点から、分散情報Ｄ（０）〜Ｄ（n-1）を暗号化した状態で配布してもよい。
【００４８】
出力部１８は、ディスプレイ装置やプリンタ装置等の通常の出力デバイスであり、制御部１８により制御され、命令等の入力画面や、復元後の秘密情報Ｓ等の出力画面等を出力する機能をもっている。
【００４９】
通信部１９は、制御部１７により制御され、クライアント装置１０とネットワークＮＷとの間の通信インターフェイス機能をもっている。
【００５０】
一方、各保管サーバ装置２０〜ｎ０について説明する。  
各保管サーバ装置２０〜ｎ０は、記憶する分散情報Ｄ（１）〜Ｄ（n-1）が互いに異なる他は互いに同一構成のため、ここでは保管サーバ装置２０を代表例に挙げて説明する。
【００５１】
保管サーバ装置２０は、保存部２１及び通信部２２を備えている。
【００５２】
保存部２１は、通信部２２から読出／書込可能なハードウェア資源としての記憶装置であり、クライアント装置１０から配布された分散情報Ｄ（１）が記憶される。
【００５３】
通信部２２は、クライアント装置１０から配布された分散情報Ｄ（１）を保存部２１に書き込む機能と、クライアント装置１０から要求された分散情報Ｄ（１）を保存部２１から読み出してこの分散情報Ｄ（１）をクライアント装置１０に返信する機能とをもっている。
【００５４】
なお、通信部２２は、分散情報Ｄ（１）の漏洩防止の観点から、クライアント装置１０の認証機能を有してもよく、この場合、クライアント装置１０の認証の後、分散情報Ｄ（１）を返信する構成として設けられる。
【００５５】
ここで、各保管サーバ装置２０，３０，…，ｎ０は、他のクライアント装置や、ＵＳＢ(Universal Serial Bus)メモリ、携帯電話、ＰＤＡ(Personal Digital Assistants：携帯情報端末)に置き換え可能であり、あるいは外付けＨＤＤ(Hard Disc Drive: 固定磁気ディスク装置)などのように、コンピュータ以外の他の装置と置き換えることも可能である。
【００５６】
なお、各保管装置２０，３０，…，ｎ０は、他のクライアント装置に置き換えられる場合、前述同様に、分散部分データ生成部１３や元データ復元部１５などの機能を保持していてもよい。すなわち、秘密情報を復元できる装置は、クライアント装置１０以外にあってもよい。例えば、各保管装置２０，３０，…，ｎ０のうちの任意の台数の装置ｊ０，…が秘密情報を復元できる構成としてもよい。なお、分散の場合も同様に、秘密情報を分散できる装置は、クライアント装置１０以外にあってもよい。例えば、各保管装置２０，３０，…，ｎ０のうちの任意の台数の装置ｊ０，…が分散情報を配布できる構成としてもよい。また、各保管装置２０，３０，…，ｎ０がＵＳＢメモリや携帯電話などのように物理的な接続手段又は無線通信手段を有する装置に置き換えられる場合、ネットワークＮＷを省略してもよい。上述した各保管装置２０，３０，…，ｎ０を他の装置に置き換えた変形例は、以下の各実施形態でも同様に適用可能である。
【００５７】
次に、以上のように構成された秘密分散システムの動作を説明する。ここでは（２，ｎ）型のしきい値秘密分散法を例に挙げて述べる。
【００５８】
始めに、ｎ人のメンバ（初期メンバ）に、秘密情報Ｓを（２，ｎ）しきい値秘密分散法で分散した分散情報Ｄ（ｊ）を配布する場合を考える。このときｎは素数を選ばなければならない。従って、合成数のｎ人に分散情報を配布したい場合は、ｎ＜ｎ’でありかつｎ’が素数となるようなｎ’について秘密分散法を適用することになる。以下では（２，ｎ）秘密分散法についての一例を示す。
【００５９】
（分散処理の動作）
クライアント装置１０においては、分散情報Ｄ（０）〜Ｄ（n-1）を配布する前に、ビット長ｍの秘密情報Ｓが一時的に保存部１１に記憶されているとする。
【００６０】
このとき、クライアント装置１０においては、図４に示すように、操作者（以下、ディーラーともいう）の操作により、分散処理の開始命令が入力部１２から入力されたとする（ＳＴ１）。
【００６１】
クライアント装置１０は、この開始命令に基づいて、分散処理を開始する。制御部１７は、秘密情報Ｓのビット長をｍ、分散数をｎ、処理単位ビットをａと定める（ＳＴ１）。なお、秘密情報Ｓのビット長ｍは、保存部１１内の秘密情報Ｓから分かる。処理単位ビットａは、分散データ生成部１３の仕様により予め定まっている。
【００６２】
続いて、制御部１７は、ビット長ｍの秘密情報Ｓをｎ−１個に分割した際のビット長（ｍ／（n-1））が処理単位ビットａを超える（ｍ／（n-1）＞ａ）か否かを判定し（ＳＴ２）、処理単位ビットａを超える場合、ｎより大きい素数ｎ’を探索し、得られた素数ｎ’を分散数ｎと置き換えて（ＳＴ３）、ステップＳＴ１に戻る。
【００６３】
一方、ステップＳＴ２の判定の結果が否の場合、制御部１７は、秘密情報Ｓ及び分散数ｎを分散部分データ生成部１３に入力する。
【００６４】
分散部分データ生成部１３は、秘密情報Ｓ及び分散数ｎに基づいて、ビット長ｍの秘密情報Ｓをｎ−１個に分割した際のビット長（ｍ／（n-1））が処理単位ビットａと等しいか（ｍ／（n-1）＝ａ）か否かを判定する（ＳＴ４）。
【００６５】
ステップＳＴ４の判定結果が否の場合、分散部分データ生成部１３は、秘密情報Ｓをｎ−１個の分割秘密データＫ（０）〜Ｋ（n-2）に分割した際の末尾の分割秘密データＫ（n-2）をパディングする（パディング有）とし（ＳＴ５）、ステップＳＴ６に進む。
【００６６】
なお、パディングは、必ずしも末尾の分割秘密データＫ（n-2）に行わなくても良く、他の分割秘密データＫ（ｊ）に行っても良い。但し、本実施形態では、秘密情報Ｓは４個にちょうど分割できた場合（パディング無し）を例に挙げて述べる。また、図２に示した如き、分散数ｎ＝５，しきい値ｋ＝２の（２，５）型を例に挙げて述べる。
【００６７】
ステップＳＴ４の判定の結果、処理単位ビットａと等しい場合、分散部分データ生成部１３は、この秘密情報Ｓをｎ−１個に分割すると共に、分割結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てることにより、互いに同一サイズのｎ−１個の分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）を生成する。（２，５）型の例では、分割秘密データＫ（１），…，Ｋ（４）が生成される。
【００６８】
また、分散部分データ生成部１３は、各分割秘密データのサイズと同一サイズのゼロ値を作成し、作成結果に行番号ｊ＝０を割り当てて分割秘密データＫ（０）を生成する。
【００６９】
さらに、分散部分データ生成部１３は、各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数を生成すると共に、各生成結果に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当ててｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）を生成する（ＳＴ６）。（２，５）型の例では、４個の乱数データＲ（０），…，Ｒ（３）が生成される。
【００７０】
次に、分散部分データ生成部１３は、分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）に基づいて、ｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）を算出する（ＳＴ７）。この算出は、行番号ｊを０からn-1まで繰り返すと共に、列番号ｉを０からn-2まで繰り返すことにより行う。（２，５）型の例では、図２に示したように、２０個の分散部分データＤ（ｊ，ｉ）が生成される。また、Ｋ（ｊ−ｉ(mod ｎ)）＝Ｋ（０）（＝０）の場合、Ｋ（０）の項を計算せずに、Ｄ（ｊ，ｉ）＝Ｒ（ｉ）としてもよい。
【００７１】
しかる後、分散部分データ生成部１３は、得られた分散部分データｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）を制御部１７に出力する。
【００７２】
制御部１７は、各分散部分データのうち、同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に、行番号ｊを割り当ててｎ個のヘッダ情報Ｈ（０），…，Ｈ（ｊ），…，Ｈ（n-1）を生成する（ＳＴ８）。ヘッダ情報Ｈ（ｊ）には、Ｋ（n-1）に対するパディングの有無、元データのサイズなどの情報が含まれる。
【００７３】
制御部１７は、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）からなるｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）を個別にｎ個の保存部１１，２１，…，ｎ１に配布するように、分散情報Ｄ（０）を保存部１１に書き込み、分散情報Ｄ（１），…，Ｄ（n-1）を個別に保管サーバ装置２０，…，ｎ０に配布する（ＳＴ９）。（２，５）型の例では、５個の分散情報Ｄ（０），…，Ｄ（４）が配布される。各保管サーバ装置２０〜５０では、配布された分散情報Ｄ（１），…，Ｄ（４）を保存部２１〜５１に記憶する。
【００７４】
以上により、秘密情報の分散処理が完了する。
【００７５】
なお、（２，５）型において、必ずしも５個の分散情報Ｄ（０）〜Ｄ（４）を配布する必要は無い。例えば４個の分散情報Ｄ（０）〜Ｄ（３）を配布しておき、残り１個の分散情報Ｄ（４）を新メンバが追加されたときに新メンバに配布してもよい。このことについては、後の第２の実施形態で述べる。
【００７６】
（復元処理の動作）
クライアント装置１０においては、操作者の操作により、復元処理の開始命令が入力部１２から入力されたとする。
【００７７】
クライアント装置１０は、この開始命令に基づいて、復元処理を開始する。制御部１７は、ｎ台の装置１０，…，ｎ０に配布したｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）を収集し（ＳＴ１１）、得られた分散情報Ｄ（ｉ），Ｄ（ｊ）を元データ復元部１５に入力する。
【００７８】
元データ復元部１５は、分散情報Ｄ（ｉ），Ｄ（ｊ）を受けると、２つの分散情報Ｄ（ｉ），Ｄ（ｊ）のヘッダ情報Ｈ（ｉ），Ｈ（ｊ）から、図６及び図７に示すように、例えば、ｊ＝（ｉ＝）１番目、ｊ＝３番目の分散情報Ｄ（ｉ），Ｄ（ｊ）であることを解析する（ＳＴ１２）。例えば分散情報Ｄ（１），Ｄ（３）であることを確認する。
【００７９】
元データ復元部１５は、２個の分散情報Ｄ（ｉ），Ｄ（ｊ）のうち、一方の分散情報Ｄ（ｉ）に関し、行番号ｉと同一の列番号ｉが割り当てられた分散部分データＤ（ｉ，ｉ）を含むか否かを判定する（ＳＴ１３）。例えば分散情報Ｄ（１）に関し、分散部分データＤ（１，１）を含むかを判定する。
【００８０】
ステップＳＴ１３の判定の結果、分散情報Ｄ（ｉ）が分散部分データＤ（ｉ，ｉ）を含むとき（ＳＴ１３；ＹＥＳ）、元データ復元部１５は、ステップＳＴ１４を実行する。
【００８１】
ステップＳＴ１４においては、この分散部分データＤ（ｉ，ｉ）と、他方の分散情報Ｄ（ｊ）に含まれる同一列番号ｉの分散部分データＤ（ｊ，ｉ）と、ｊ＝０番目の分割秘密データＫ（０）（＝０）とに基づいて、分割秘密データＫ（ｒ）＝Ｄ（ｉ，ｉ）(+)Ｄ（ｊ，ｉ）(+)Ｋ（０）を復元する（但し、ｒ＝ｊ−ｉ(mod ｎ)）。
【００８２】
例えば、分散部分データＤ（１，１）と、分割秘密データＫ（０）（＝０）との排他的論理和に基づいて、乱数データＲ（１）を算出する（ＳＴ１４−１）。なお、Ｋ（０）（＝０）との排他的論理和を計算せずに、Ｄ（１，１）＝Ｒ（１）としてもよい。続いて、乱数データＲ（１）と、分散部分データＤ（３，１）との排他的論理和に基づいて、分割秘密データＫ（２）を復元する（ＳＴ１４−２）。
【００８３】
また、この分割秘密データＫ（ｒ）の復元後、第１終了条件ｉ−ｒ＝ｎ−１を満たすか否かを判定する。例えばＫ（２）の復元後、第１終了条件ｉ−ｒ(mod 5)＝１−２(mod 5)＝４が、ｎ−１＝５−１＝４を満たすか否かを判定する。この場合は満たす。
【００８４】
この判定結果が第１終了条件を満たさないとき、分割秘密データＫ（ｒ）の復元の式をｒだけずらすことにより、第１終了条件を満たすまで、順次、他の第１分割秘密データＫ（ｒ＋ｒ），…，Ｋ（(n-1)ｒ）を復元する。但し、
Ｋ（ｒ＋ｒ）＝Ｄ（ｉ，ｉ−ｒ）(+)Ｄ（ｊ，ｉ−ｒ）(+)Ｋ（ｒ），
…，
Ｋ（(n-1)ｒ）＝Ｄ（ｉ，ｉ−(n-2)ｒ）(+)Ｄ（ｊ，ｉ−(n-2)ｒ）(+)Ｋ（(n-2)ｒ））。
【００８５】
一方、ステップＳＴ１４中の判定結果が第１終了条件を満たすとき又はステップＳＴ１３の判定結果が否のとき、元データ復元部１５は、ステップＳＴ１５を実行する。
【００８６】
ステップＳＴ１５においては、他方の分散情報Ｄ（ｊ）における行番号ｊと同一の列番号ｊが割り当てられた分散部分データＤ（ｊ，ｊ）と、一方の分散情報Ｄ（ｉ）に含まれる同一列番号ｊの分散部分データＤ（ｉ，ｊ）と、ｊ＝０番目の分割秘密データＫ（０）（＝０）とに基づいて、他の分割秘密データＫ（−ｒ）＝Ｄ（ｉ，ｊ）(+)Ｄ（ｊ，ｊ）(+)Ｋ（０）を復元する。
【００８７】
例えば、分散部分データＤ（３，３）と、分割秘密データＫ（０）（＝０）との排他的論理和に基づいて、乱数データＲ（３）を算出する（ＳＴ１５−１）。なお、Ｋ（０）（＝０）との排他的論理和を計算せずに、Ｄ（３，３）＝Ｒ（３）としてもよい。続いて、乱数データＲ（３）と、分散部分データＤ（１，３）との排他的論理和に基づいて、分割秘密データＫ（３）を復元する（ＳＴ１５−２）。
【００８８】
また、この分割秘密データＫ（−ｒ）の復元後、第２終了条件ｊ＋ｒ＝ｎ−１を満たすか否かを判定する。例えばＫ（３）の復元後、第２終了条件ｊ＋ｒ(mod 5)＝３＋２(mod 5)＝５(mod 5)＝０が、ｎ−１＝４を満たすか否かを判定する。この場合は満たさない。
【００８９】
この判定結果が第２終了条件を満たさないとき、分割秘密データＫ（−ｒ）の復元の式をｒだけずらすことにより、第２終了条件を満たすまで、順次、残りの分割秘密データＫ（−ｒ−ｒ），…，Ｋ（−(n-1)ｒ）を復元する。但し、
Ｋ（−ｒ−ｒ）＝Ｄ（ｉ，ｊ＋ｒ）(+)Ｄ（ｊ，ｊ＋ｒ）(+)Ｋ（−ｒ），
…，
Ｋ（−(n-1)ｒ）＝Ｄ（ｉ，ｊ＋(n-2)ｒ）(+)Ｄ（ｊ，ｊ＋(n-2)ｒ）(+)Ｋ（−(n-2)ｒ））。
【００９０】
例えば、図６及び図７のステップＳＴ１５−３からＳＴ１５−６により、残りの分割秘密データＫ（１），Ｋ（４）を復元する。
【００９１】
ステップＳＴ１５が完了すると、元データ復元部１５は、復元されたｎ−１個の分割秘密データＫ（１），…，Ｋ（n-1）を制御部１７に送出する。この例では、４個の分割秘密データＫ（１），…，Ｋ（４）が送出される。
【００９２】
制御部１７は、分割秘密データＫ（１），…，Ｋ（n-1）に対して、ヘッダ情報Ｈ（ｉ），Ｈ（ｊ）に基づいて、パディングなどの処理があれば除去する（ＳＴ１６）。しかる後、制御部１７は、分割秘密データＫ（１），…，Ｋ（n-1）を互いに連接することにより、秘密情報Ｓ＝Ｋ（１）‖Ｋ（２）‖…‖Ｋ（n-1）を復元する（ＳＴ１７）。この例では、秘密情報Ｓ＝Ｋ（１）‖Ｋ（２）‖…‖Ｋ（４）が復元される。
【００９３】
上述したように本実施形態によれば、排他的論理和を用いた（２，ｎ）型のしきい値秘密分散により、秘密情報の分散や復元の処理を非常に高速に実現し、多項式補間を用いずに高速に実行可能な完全秘密分散を実現することができる。
【００９４】
補足すると、本実施形態は、特許文献１記載の技術とは異なり、完全秘密分散法を実現しているため、ｋ−１個以下の分散部分データから、元の秘密情報を復元できないだけでなく、秘密情報の部分データも復元できないという効果を得ることができる。
【００９５】
これに加え、本実施形態によれば、分散部分データをＫ（＊）＋Ｒ（＊）として、Ｋ（０）を擬似的に作ることで全て同じ形式となり、アルゴリズム的に分散部分データを作成することが可能である。これに対し、特許文献１での分散部分データはＫ（＊）＋Ｒ（＊）、Ｋ（＊）＋Ｒ（＊）＋Ｒ（＊）、Ｒ（＊）など、分散部分データ毎に部分秘密データと乱数の組み合わせが異なっているため、うまくアルゴリズム的に作成できない。また、特許文献１の分散部分データでは、Ｋ（＊）＋Ｒ（＊）＋Ｒ（＊）といった分散部分データから復元する際に、計算量がどうしても多くなるため、本実施形態と比べて計算量が増大している。
【００９６】
（第２の実施形態）
次に、本発明の第２の実施形態について図１を参照しながら説明する。  
本実施形態は、第１の実施形態の変形例であり、（２，ｎ）型のしきい値秘密分散を（２，ｎ’）型のしきい値秘密分散（ｎ＜ｎ’）に拡張可能な構成により、新メンバを追加可能とした形態となっている。
【００９７】
ここで、ｎは、第１の実施形態とは異なり、素数に限らない。ｎが素数でない場合はｎよりも大きな素数ｎ’を用いて（２，ｎ’）型の秘密分散法を構築し、そのうちｎ人に分散情報を配布することで（２，ｎ）型の秘密分散システムを実現する。この場合、ｎ’−ｎ人だけ新メンバの追加が可能である。例えば、（２，５）型の秘密分散法を構築しておき、そのうち４人に分散情報を配布することで（２，４）型の秘密分散システムを実現する。この場合、１人だけ新メンバの追加が可能である。
【００９８】
新メンバ用の分散情報は、追加時にクライアント装置１０が作成してもよく、あるいは、最も権限があるユーザ、前述したディーラー、又は信頼できる第三者機関（trusted third party）などのクライアント装置又は保管サーバ装置等が作成することが考えられる。これは任意のユーザがメンバーを追加可能なシステムでは、ユーザ全体を管理することが困難なためである。特定のユーザや機関によってのみ追加可能な形態が望まれる。
【００９９】
次に、第２の実施形態の具体的な構成を述べる。
【０１００】
クライアント装置１０は、秘密情報Ｓが分散されてなるｎ’個（但し、ｎ’≧３）の分散情報Ｄ（０），…，Ｄ（n’-1）のうち、ｎ個（但し、ｎ＜ｎ’）の分散情報Ｄ（０），…，Ｄ（n-1）を個別にｎ個の保存部１１，…，ｎ０に配布し、且つ、ｎ個の分散情報のうち、任意の２個の分散情報から秘密情報Ｓを復元可能な（２，ｎ）型の秘密分散装置を実現している。
【０１０１】
ここで、制御部１７は、前述した機能に加え、（２，ｎ）型を（２，ｎ＋ｔ）型に変更したいとき、変更可能条件ｔ≦ｎ’−ｎを満たすか否かを判定する機能と、判定結果が変更可能条件を満たすとき、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、ｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成する機能と、この生成したｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）をｎ個の保存部１１，…，ｎ０とは異なるｔ個の記憶装置に個別に配布する機能とをもっている。
【０１０２】
次に、以上のように構成された秘密分散システムの動作を説明する。
【０１０３】
図８に示すように、複数のメンバーからなるあるグループで、秘密情報Ｓを（ｋ，ｎ’）しきい値秘密分散法（ｎ＜ｎ’、ｋ≦ｎ）を用いて分散し、ｎ’個の分散情報のうち、ｎ個の分散情報をｎ人のメンバーに配布した状態において、新たにｔ人の新規メンバーがそのグループに追加される場合を考える（ＳＴ２１）。
【０１０４】
例えば、図９に示すように、秘密情報Ｓを（２，５）しきい値秘密分散法を用いて分散し、ｎ’＝５個の分散情報のうち、ｎ＝４個の分散情報を４人のメンバーに配布した状態において、新たにｔ＝１人の新規メンバーがそのグループに追加される場合である。
【０１０５】
まず、分散情報を既に保持しているメンバーの分散情報を用いてディーラーが新規メンバー用の分散情報を作成する場合を考える。
【０１０６】
このとき、クライアント装置１０においては、制御部１７が、保存部１１内の分散情報作成情報に基づいて、配布済みの分散情報Ｄ（ｊ）の個数ｎを確認し、変更可能条件ｔ≦ｎ’−ｎを満たすか否かを判定する（ＳＴ２２）。
【０１０７】
制御部１７は、ステップＳＴ２２の判定結果が変更可能条件を満たすとき、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）を収集し（ＳＴ２３）、この分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、ｎ＋１番目の分散部分データＤ（ｎ，０）〜Ｄ（ｎ，n’-2）を生成し、以下同様に、順次、ｎ＋ｔ番目の分散部分データＤ（n-1+t，０）〜Ｄ（n-1+t，n’-2）を生成する（ＳＴ２４）。
【０１０８】
例えば、制御部１７は、図１０に示すように、２個の分散情報Ｄ（１），Ｄ（３）に基づいて、５番目の分散部分データＤ（４，０）〜Ｄ（４，３）を生成する。このとき、分散部分データＤ（４，０）〜Ｄ（４，３）は、次のように算出される。
【０１０９】
Ｄ（４，０）＝Ｄ（１，０）(+)Ｄ（１，２）(+)Ｄ（３，２）、
Ｄ（４，１）＝Ｄ（１，１）(+)Ｄ（１，３）(+)Ｄ（３，３）、
Ｄ（４，２）＝Ｄ（１，０）(+)Ｄ（１，１）(+)Ｄ（１，３）(+)Ｄ（３，０）(+)Ｄ（３，１）(+)Ｄ（３，２）(+)Ｄ（３，３）、
Ｄ（４，３）＝Ｄ（１，０）(+)Ｄ（１，３）(+)Ｄ（３，０）。
【０１１０】
制御部１７は、各分散部分データのうち、同一の行番号ｊを有するｎ’−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）毎に、行番号ｊを割り当ててｔ個のヘッダ情報Ｈ（ｎ），…，Ｈ（n-1+t）を生成する（ＳＴ２５）。この例では、ｔ＝１なので、ヘッダ情報Ｈ（４）が生成される。
【０１１１】
制御部１７は、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n’-2）からなるｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成する。この例では、ｔ＝１個の分散情報Ｄ（４）が生成される。また、制御部１７は、分散情報作成情報を、ｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）の識別情報ｊ（＝ｎ，…，n-1+t）を含むように更新する（ＳＴ２６）。この例では、分散情報作成情報は、識別情報ｊ＝４を含むように更新される。
【０１１２】
しかる後、制御部１７は、この生成したｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）をｎ個の保存部１１，…，ｎ０とは異なるｔ個の記憶装置に個別に配布する（ＳＴ２７）。この例では、ｔ＝１個の分散情報Ｄ（４）が１個の記憶装置に配布される。
【０１１３】
これにより、（２，ｎ）型の秘密分散システムは（２，n+t）型の秘密分散システムに拡張される。この例では、（２，４）型が（２，５）型に拡張される。ここで、ｔ＝ｎ’−ｎの場合、（２，n+t）型は（２，ｎ’）型である。
【０１１４】
一方、ステップＳＴ２２の判定結果が変更可能条件を満たさないとき、ｎ’よりも大きな素数ｎ”について（２，ｎ”）型の秘密分散法を適用し、全てのメンバー（ｎ＋ｔ人）に分散情報を配布しなおす（ＳＴ２９）。この場合も（２，ｎ）型が（２，n+t）型に拡張される。
【０１１５】
上述したように本実施形態によれば、第１の実施形態の効果に加え、（２，ｎ）型の秘密分散法を（２，n+t）型又は（２，ｎ’）型の秘密分散システムに拡張することができる（ｔ≦ｎ’−ｎ、ｎ＜ｎ’）。
【０１１６】
補足すると、メンバを追加したい場合に、配布されたｎ個の分散情報Ｄ（０）〜Ｄ（n-1）のうち、任意の２個の分散情報Ｄ（ｉ），Ｄ（ｊ）に基づいて、追加人数分のｔ個の分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を生成し、この分散情報Ｄ（ｎ），…，Ｄ（n-1+t）を追加メンバに配布している。
【０１１７】
例えば（２，４）型を（２，５）型に拡張する場合、４番目の分散情報Ｄ（４）を新たなメンバーに配布することで、予め配布していた分散情報Ｄ（０）〜Ｄ（３）を更新することなく、（２，５）型の秘密分散法に拡張可能となっている。
【０１１８】
この際、追加する分散情報Ｄ（ｎ），…は、２個の分散情報から元の秘密情報を復元することなく作成可能となっている。また、データ分割時にｎ’を大きくとっておくことでメンバーの追加に対応可能である。
【０１１９】
また、本実施形態によれば、初期に配布した分散情報を更新することなく新たなメンバーを追加することが可能になる。また、ディーラーが既存の分散情報を使って新たに分散情報を作成するので、元の秘密情報をディーラー又はその他のメンバーが保持している必要がなく、セキュリティ上セキュアなシステムを構築することが可能になる。すなわち、本実施形態によれば、メンバを追加したい場合に、分散情報を既存のメンバに配布する必要がなく、また、秘密情報を復元可能な数の分散情報又は秘密情報を１箇所に保存せずに、セキュリティ性を向上させることができる。また、権限を保持している既存のメンバーが協力して新たなメンバーに分散情報を配布することも可能になる。
【０１２０】
（第３の実施形態）
図１１は本発明の第３の実施形態に係る秘密分散システムの構成を示す模式図であり、図１と同一部分には同一符号を付し、ほぼ同一部分にはアルファベットの添字を付してその詳しい説明を省略する。なお、以下の各実施形態も同様にして重複した説明を省略する。
【０１２１】
本実施形態は、第１の実施形態の変形例であり、（３，５）型の秘密分散システムとなっている。これに伴い、分散部分データ生成部１３ａ、元データ復元部１５ａ及び制御部１７ａの機能が（３，５）型の秘密分散システムに対応して変更されている。また、保管サーバ装置２０，３０，４０，５０の台数は、ｎ−１＝４台と定まっている。
【０１２２】
ここで、分散部分データ生成部１３ａは、具体的には、以下の機能（ｆ１３ａ−１）〜（ｆ１３ａ−４）をもっている。
【０１２３】
（ｆ１３ａ−１）  制御部１７ａから受けた秘密情報Ｓを２個に分割すると共に、分割結果に０から１までの識別番号を割り当てることにより、互いに同一サイズの２個の分割秘密データＫ（０），Ｋ（１）を生成する機能。
【０１２４】
（ｆ１３ａ−２）  各分割秘密データのサイズと同一サイズを有する４個の乱数を生成すると共に、各生成結果に０から３までの識別番号を割り当てて４個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３）を生成する機能。
【０１２５】
（ｆ１３ａ−３）  ２個の分割秘密データＫ（０），Ｋ（１）、４個の乱数データＲ（０）〜Ｒ（３）及び下記１０個の式に基づいて（但し、(+)は排他的論理和を表す記号）、互いに２つの識別番号の組合せで識別可能な１０個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（１，０），Ｄ（１，１），Ｄ（２，０），Ｄ（２，１），Ｄ（３，０），Ｄ（３，１），Ｄ（４，０），Ｄ（４，１）を算出する機能。
【０１２６】
Ｄ（０，０）＝Ｒ（０）、
Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、
Ｄ（１，０）＝Ｒ（１）、
Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、
Ｄ（２，０）＝Ｒ（２）、
Ｄ（２，１）＝Ｋ（０）(+)Ｒ（３）(+)Ｒ（０）、
Ｄ（３，０）＝Ｒ（３）、
Ｄ（３，１）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（１）、
Ｄ（４，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（２）、
Ｄ（４，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）。
【０１２７】
（ｆ１３ａ−４）  算出した１０個の分散部分データＤ（ｊ，ｉ）を制御部１７ａに送出する機能。
【０１２８】
元データ復元部１５ａは、配布された５個の分散情報Ｄ（０）〜Ｄ（４）のうち、任意の３個の分散情報Ｄ（ｊ）が制御部１７ａから入力されると、この３個の分散情報Ｄ（ｊ）に基づいて、秘密情報Ｓを復元する復元機能をもっている。
【０１２９】
制御部１７ａは、入力部１２から入力される命令に基づいて、後述する図１２及び図１４のフローチャートに基づいて、各部１１，１３ａ，１４，１５ａ，１６，１８，１９を制御する機能をもっている。また、制御部１７ａは、例えば、以下の機能（１７ａ−１）〜（１７ａ−２）をもっている。
【０１３０】
（１７ａ−１）  各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する２個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１）毎に、行番号ｊを割り当てて、５個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４）を生成する機能。
【０１３１】
（１７ａ−２）  互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１）からなる５個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４）を個別に５個の保存部１１〜５１に配布する機能。
【０１３２】
次に、以上のように構成された秘密分散システムの動作を説明する。
【０１３３】
（分散処理の動作）
クライアント装置１０においては、分散情報Ｄ（０）〜Ｄ（４）を配布する前に、ビット長ｍの秘密情報Ｓが一時的に保存部１１に記憶されているとする。
【０１３４】
このとき、クライアント装置１０においては、操作者の操作により、分散処理の開始命令が入力部１２から入力されると、分散処理を開始する。
【０１３５】
制御部１７ａは、保存部１１内の秘密情報Ｓを分散部分データ生成部１３ａに入力する。
【０１３６】
分散部分データ生成部１３ａは、図１２に示すように、秘密情報Ｓを２個に分割すると共に、分割結果に０から１までの識別番号を割り当てることにより、互いに同一サイズの２個の分割秘密データＫ（０），Ｋ（１）を生成する（ＳＴ３１）。
【０１３７】
ここで、２個の分割秘密データＫ（０），Ｋ（１）は、互いに同一サイズでなければいけない。このため、秘密情報Ｓが奇数ビットのサイズの場合、２の倍数のビット（桁）で表現されるように、末尾に０が付加（パディング）される。その後、パディング済みの秘密情報Ｓを同じデータサイズになるように２個に分ける。データサイズはビット単位で扱う。２の倍数のビットとは、例えば１０１００１１０のように表現される。
【０１３８】
次に、分散部分データ生成部１３ａは、分割秘密データＫ（０）、Ｋ（１）と同一サイズを有する４個の乱数を生成すると共に、各生成結果に０から３までの識別番号を割り当てて４個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３）を生成する（ＳＴ３２）。
【０１３９】
分散部分データ生成部１３ａは、２個の分割秘密データＫ（０），Ｋ（１）、４個の乱数データＲ（０）〜Ｒ（３）に基づいて、図１３に示すように、１０個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（１，０），Ｄ（１，１），Ｄ（２，０），Ｄ（２，１），Ｄ（３，０），Ｄ（３，１），Ｄ（４，０），Ｄ（４，１）を算出する。
【０１４０】
しかる後、分散部分データ生成部１３ａは、これら分散部分データを制御部１７ａに送出する。
【０１４１】
制御部１７ａは、各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する２個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１）毎に、行番号ｊを割り当てて、５個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４）を生成する（ＳＴ３３）。
【０１４２】
次に、制御部１７ａは、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１）からなる５個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４）を生成する。例えば、分散情報Ｄ（０）は、ヘッダ情報Ｈ（ｊ）と、分散部分データＤ（０，０）と、分散部分データＤ（０，１）とをビット列単位で結合したものである。
【０１４３】
しかる後、制御部１７ａは、５個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４）を個別に５個の保存部１１〜５１に配布するように、分散情報Ｄ（０）を保存部１１に書き込み、分散情報Ｄ（１），…，Ｄ（４）を個別に保管サーバ装置２０，…，５０に配布する（ＳＴ３４）。各保管サーバ装置２０〜５０では、配布された分散情報Ｄ（１），…，Ｄ（４）を保存部２１〜５１に記憶する。
【０１４４】
以上により、秘密情報の分散処理が完了する。
【０１４５】
（復元処理の動作）
クライアント装置１０においては、操作者の操作により、復元処理の開始命令が入力部１２から入力されたとする。
【０１４６】
クライアント装置１０は、この開始命令に基づいて、復元処理を開始する。制御部１７ａは、図１４に示すように、５台の装置１０，…，５０に配布した５個の分散情報Ｄ（０）〜Ｄ（４）のうち、任意の３個の分散情報を収集し（ＳＴ３５）、得られた分散情報を元データ復元部１５ａに入力する。この例では、５個の分散情報のうち、Ｄ（０）、Ｄ（２）、Ｄ（４）を用いることとする。
【０１４７】
元データ復元部１５ａは、分散情報Ｄ（０）、Ｄ（２）、Ｄ（４）を受けると、分散情報のヘッダ情報Ｈ（０），Ｈ（２），Ｈ（４）を参照し、分散情報Ｄ（ｊ）毎に、分散部分データＤ（ｊ，０），Ｄ（ｊ，１）を確認する（ＳＴ３６）。
【０１４８】
元データ復元部１５ａは、分散情報Ｄ（ｊ）毎の分散部分データＤ（ｊ，０），Ｄ（ｊ，１）に基づいて、２個の分割秘密データＫ（０），Ｋ（１）を算出する（ＳＴ３７）。
【０１４９】
例えば、図１５に示すように、分散部分データＤ（０，０）、Ｄ（２，０）とＤ（４，０）との排他的論理和により、分割秘密データＫ（１）を算出する（ＳＴ３７−１）。
【０１５０】
分散部分データＤ（０，０）とＤ（２，１）との排他的論理和により、中間データＫ（０）(+) Ｒ（３）を算出する（ＳＴ３７−２）。
【０１５１】
分散部分データＤ（２，０）とＤ（０，１）との排他的論理和により、中間データＫ（０）(+) Ｒ（１）を算出する（ＳＴ３７−３）。
【０１５２】
中間データＫ（０）(+) Ｒ（３）とＫ（０）(+) Ｒ（１）との排他的論理和により、中間データＲ（１）(+) Ｒ（３）を算出する（ＳＴ３７−４）。
【０１５３】
中間データＲ（１）(+) Ｒ（３）と、分散部分データＤ（４，１）とにより、分割秘密データＫ（０）を算出する（ＳＴ３７−５）。
【０１５４】
元データ復元部１５ａは、これら分割秘密データＫ（０），Ｋ（１）とヘッダ情報Ｈ（０），Ｈ（２），Ｈ（４）に基づいて、元の秘密情報Ｓ＝Ｋ（０）‖Ｋ（１）を復元する（ＳＴ３８）。
【０１５５】
上述したように本実施形態によれば、排他的論理和を用いた（３，５）型のしきい値秘密分散により、秘密情報の分散や復元の処理を非常に高速に実現し、多項式補間を用いずに高速に実行可能な完全秘密分散を実現することができる。
【０１５６】
（第４の実施形態）
図１６は本発明の第４の実施形態に係る秘密分散システムの構成を示す模式図である。
【０１５７】
本実施形態は、第１の実施形態の変形例であり、（３，７）型の秘密分散システムとなっている。これに伴い、分散部分データ生成部１３ｂ、元データ復元部１５ｂ及び制御部１７ｂの機能が（３，７）型の秘密分散システムに対応して変更されている。また、保管サーバ装置２０，３０，４０，５０，６０，７０の台数は、ｎ−１＝６台と定まっている。
【０１５８】
ここで、分散部分データ生成部１３ｂは、具体的には、以下の機能（ｆ１３ｂ−１）〜（ｆ１３ｂ−４）をもっている。
【０１５９】
（ｆ１３ｂ−１）  制御部１７ｂから受けた秘密情報Ｓを３個に分割すると共に、分割結果に０から２までの識別番号を割り当てることにより、互いに同一サイズの３個の分割秘密データＫ（０），Ｋ（１），Ｋ（１）を生成する機能。
【０１６０】
（ｆ１３ｂ−２）  各分割秘密データのサイズと同一サイズを有する６個の乱数を生成すると共に、各生成結果に０から５までの識別番号を割り当てて６個の乱数データＲ（０），Ｒ（１），Ｒ（２），Ｒ（３），Ｒ（４），Ｒ（５）を生成する機能。
【０１６１】
（ｆ１３ｂ−３）  ３個の分割秘密データＫ（０）〜Ｋ（２）、６個の乱数データＲ（０）〜Ｒ（５）及び下記２１個の式に基づいて、互いに２つの識別番号の組合せで識別可能な２１個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（０，２），Ｄ（１，０），Ｄ（１，１），Ｄ（１，２），Ｄ（２，０），Ｄ（２，１），Ｄ（２，２），Ｄ（３，０），Ｄ（３，１），Ｄ（３，２），Ｄ（４，０），Ｄ（４，１）Ｄ（４，２），Ｄ（５，０），Ｄ（５，１），Ｄ（５，２），Ｄ（６，０），Ｄ（６，１），Ｄ（６，２）を算出する機能。
【０１６２】
Ｄ（０，０）＝Ｒ（０）、
Ｄ（０，１）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（２）、
Ｄ（０，２）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（５）、
Ｄ（１，０）＝Ｒ（１）、
Ｄ（１，１）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（３）、
Ｄ（１，２）＝Ｋ（０）(+)Ｒ（０）(+)Ｒ（４）、
Ｄ（２，０）＝Ｒ（２）、
Ｄ（２，１）＝Ｋ（２）(+)Ｒ（３）(+)Ｒ（４）、
Ｄ（２，２）＝Ｋ（１）(+)Ｒ（１）(+)Ｒ（５）、
Ｄ（３，０）＝Ｒ（３）、
Ｄ（３，１）＝Ｋ（０）(+)Ｒ（４）(+)Ｒ（５）、
Ｄ（３，２）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（２）、
Ｄ（４，０）＝Ｒ（４）、
Ｄ（４，１）＝Ｋ（１）(+)Ｒ（５）(+)Ｒ（０）、
Ｄ（４，２）＝Ｋ（０）(+)Ｒ（１）(+)Ｒ（３）、
Ｄ（５，０）＝Ｒ（５）、
Ｄ（５，１）＝Ｋ（２）(+)Ｒ（０）(+)Ｒ（１）、
Ｄ（５，２）＝Ｋ（１）(+)Ｒ（２）(+)Ｒ（４）、
Ｄ（６，０）＝Ｋ（１）(+)Ｒ（０）(+)Ｒ（３）、
Ｄ（６，１）＝Ｋ（２）(+)Ｒ（１）(+)Ｒ（４）、
Ｄ（６，２）＝Ｋ（０）(+)Ｒ（２）(+)Ｒ（５）。
【０１６３】
（ｆ１３ｂ−４）  算出した２１個の分散部分データＤ（ｊ，ｉ）を制御部１７ｂに送出する機能。
【０１６４】
元データ復元部１５ｂは、配布された７個の分散情報Ｄ（０）〜Ｄ（６）のうち、任意の３個の分散情報Ｄ（ｊ）が制御部１７ａから入力されると、この３個の分散情報Ｄ（ｊ）に基づいて、秘密情報Ｓを復元する復元機能をもっている。
【０１６５】
制御部１７ｂは、入力部１２から入力される命令に基づいて、後述する図１７及び図１９のフローチャートに基づいて、各部１１，１３ｂ，１４，１５ｂ，１６，１８，１９を制御する機能をもっている。また、制御部１７ｂは、例えば、以下の機能（１７ｂ−１）〜（１７ｂ−２）をもっている。
【０１６６】
（１７ｂ−１）  各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する３個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）毎に、行番号ｊを割り当てて、７個のヘッダ情報Ｈ（０），Ｈ（１），Ｈ（２），Ｈ（３），Ｈ（４），Ｈ（５），Ｈ（６）を生成する機能。
【０１６７】
（１７ｂ−２）  互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）からなる７個の分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３），Ｄ（４），Ｄ（５），Ｄ（６）を個別に７個の保存部１１〜７１に配布する機能。
【０１６８】
次に、以上のように構成された秘密分散システムの動作を説明する。
【０１６９】
（分散処理の動作）
クライアント装置１０においては、分散情報Ｄ（０）〜Ｄ（６）を配布する前に、ビット長ｍの秘密情報Ｓが一時的に保存部１１に記憶されているとする。
【０１７０】
このとき、クライアント装置１０においては、操作者の操作により、分散処理の開始命令が入力部１２から入力されると、分散処理を開始する。
【０１７１】
制御部１７ｂは、保存部１１内の秘密情報Ｓを分散部分データ生成部１３ｂに入力する。
【０１７２】
分散部分データ生成部１３ｂは、図１７に示すように、秘密情報Ｓを３個に分割すると共に、分割結果に０から２までの識別番号を割り当てることにより、互いに同一サイズの３個の分割秘密データＫ（０），Ｋ（１），Ｋ（２）を生成する（ＳＴ４１）。
【０１７３】
ここで、３個の分割秘密データＫ（０），Ｋ（１），Ｋ（２）は、互いに同一サイズでなければいけない。このため、秘密情報Ｓが３の倍数のビット（桁）で表現されるように、末尾に０が付加（パディング）される。その後、パディング済みの秘密情報Ｓを同じデータサイズになるように３個に分ける。データサイズはビット単位で扱う。３の倍数のビットとは、例えば１０１００１１００のように表現される。
【０１７４】
次に、分散部分データ生成部１３ｂは、分割秘密データＫ（０），Ｋ（１），Ｋ（２）と同一サイズを有する６個の乱数を生成すると共に、各生成結果に０から５までの識別番号を割り当てて６個の乱数データＲ（０），Ｒ（１），…，Ｒ（５）を生成する（ＳＴ４２）。
【０１７５】
分散部分データ生成部１３ｂは、３個の分割秘密データＫ（０）〜Ｋ（２）、６個の乱数データＲ（０）〜Ｒ（５）に基づいて、図１８に示すように、２１個の分散部分データＤ（０，０），Ｄ（０，１），Ｄ（０，２），Ｄ（１，０），Ｄ（１，１），Ｄ（１，２），Ｄ（２，０），Ｄ（２，１），Ｄ（２，２），Ｄ（３，０），Ｄ（３，１），Ｄ（３，２），Ｄ（４，０），Ｄ（４，１）Ｄ（４，２），Ｄ（５，０），Ｄ（５，１），Ｄ（５，２），Ｄ（６，０），Ｄ（６，１），Ｄ（６，２）を算出する。
【０１７６】
しかる後、分散部分データ生成部１３ｂは、これら分散部分データを制御部１７ｂに送出する。
【０１７７】
制御部１７ｂは、各分散部分データの２つの識別番号を行番号ｊ，列番号ｉとし、各分散部分データをＤ（ｊ，ｉ）と表すとき、同一の行番号ｊを有する３個の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）毎に、行番号ｊを割り当てて、７個のヘッダ情報Ｈ（０），Ｈ（１），…，Ｈ（６）を生成する（ＳＴ４３）。
【０１７８】
次に、制御部１７ｂは、互いに同一の行番号ｊを有するヘッダ情報Ｈ（ｊ）及び分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）からなる７個の分散情報Ｄ（０），Ｄ（１），…，Ｄ（６）を生成する。例えば、分散情報Ｄ（０）は、ヘッダ情報Ｈ（ｊ）、分散部分データＤ（０，０），Ｄ（０，１），Ｄ（０，２）を互いにビット列単位で結合したものである。
【０１７９】
しかる後、制御部１７ｂは、７個の分散情報Ｄ（０），…，Ｄ（６）を個別に７個の保存部１１〜７１に配布するように、分散情報Ｄ（０）を保存部１１に書き込み、分散情報Ｄ（１），…，Ｄ（６）を個別に保管サーバ装置２０，…，７０に配布する（ＳＴ４４）。各保管サーバ装置２０〜７０では、配布された分散情報Ｄ（１），…，Ｄ（６）を保存部２１〜７１に記憶する。
【０１８０】
以上により、秘密情報の分散処理が完了する。
【０１８１】
（復元処理の動作）
クライアント装置１０においては、操作者の操作により、復元処理の開始命令が入力部１２から入力されたとする。
【０１８２】
クライアント装置１０は、この開始命令に基づいて、復元処理を開始する。制御部１７ｂは、図１９に示すように、５台の装置１０，…，７０に配布した７個の分散情報Ｄ（０）〜Ｄ（６）のうち、任意の３個の分散情報を収集し（ＳＴ４５）、得られた分散情報を元データ復元部１５ｂに入力する。この例では、７個の分散情報のうち、Ｄ（０）、Ｄ（２）、Ｄ（６）を用いることとする。
【０１８３】
元データ復元部１５ｂは、分散情報Ｄ（０）、Ｄ（２）、Ｄ（６）を受けると、分散情報のヘッダ情報Ｈ（０），Ｈ（２），Ｈ（６）を参照し、分散情報Ｄ（ｊ）毎に、分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）を確認する（ＳＴ４６）。
【０１８４】
元データ復元部１５ｂは、分散情報Ｄ（ｊ）毎の分散部分データＤ（ｊ，０），Ｄ（ｊ，１），Ｄ（ｊ，２）に基づいて、３個の分割秘密データＫ（０），Ｋ（１），Ｋ（２）を算出する（ＳＴ４７）。
【０１８５】
例えば、図２０に示すように、分散部分データＤ（０，１）とＤ（６，２）との排他的論理和により、中間データＲ（１）(+) Ｒ（５）を算出する（ＳＴ４７−１）。
【０１８６】
中間データＲ（１）＋Ｒ（５）と、分散部分データＤ（２，２）との排他的論理和により、分割秘密データＫ（１）を算出する（ＳＴ４７−２）。
【０１８７】
分割秘密データＫ（１）と、分散部分データＤ（６，０）とＤ（０、０）との排他的論理和により、乱数データＲ（３）を算出する（ＳＴ４７−３）。
【０１８８】
分散部分データＤ（２，１）とＤ（６，１）との排他的論理和により、中間データＲ（１）(+) Ｒ（３）を算出する（ＳＴ４７−４）。
【０１８９】
中間データＲ（１）(+) Ｒ（３）と、乱数データＲ（３）との排他的論理和により、乱数データＲ（１）を算出する（ＳＴ４７−５）。
【０１９０】
乱数データＲ（１）とＲ（２）と、分散部分データＤ（０，１）との排他的論理和により、分割秘密データＫ（０）を算出する（ＳＴ４７−６）。
【０１９１】
中間データＲ（１）(+) Ｒ（５）と、乱数データＲ（１）との排他的論理和により、乱数データＲ（５）を算出する（ＳＴ４７−７）。
【０１９２】
分散部分データＤ（０，２）と、乱数データＲ（３）とＲ（５）との排他的論理和により、分割秘密データＫ（２）を算出する（ＳＴ５７−８）。
【０１９３】
元データ復元部１５ｂは、これら分割秘密データＫ（０）〜Ｋ（２）とヘッダ情報Ｈ（０），Ｈ（２），Ｈ（６）に基づいて、元の秘密情報Ｓ＝Ｋ（０）‖Ｋ（１）‖Ｋ（２）を復元する（ＳＴ４８）。
【０１９４】
上述したように本実施形態によれば、排他的論理和を用いた（３，７）型のしきい値秘密分散により、秘密情報の分散や復元の処理を非常に高速に実現し、多項式補間を用いずに高速に実行可能な完全秘密分散を実現することができる。
【０１９５】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１９６】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１９７】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０１９８】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【０１９９】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２００】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２０１】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２０２】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０２０３】
【図１】本発明の第１の実施形態に係る秘密分散システムの構成を示す模式図である。
【図２】同実施形態における分散部分データの一例を示す模式図である。
【図３】同実施形態におけるヘッダ情報及び分散情報の一例を示す模式図である。
【図４】同実施形態における分散処理の動作を説明するためのフローチャートである。
【図５】同実施形態における復元処理の動作を説明するためのフローチャートである。
【図６】同実施形態における復元処理の動作を説明するための模式図である。
【図７】同実施形態における復元処理の動作を説明するための参考図である。
【図８】本発明の第２の実施形態に係る秘密分散システムの動作を説明するためのフローチャートである。
【図９】同実施形態における分散部分データの一例を示す模式図である。
【図１０】同実施形態における復元処理の動作を説明するための参考図である。
【図１１】本発明の第３の実施形態に係る秘密分散システムの構成を示す模式図である。
【図１２】同実施形態における分割処理の動作を説明するためのフローチャートである。
【図１３】同実施形態における分散部分データの一例を示す模式図である。
【図１４】同実施形態における復元処理の動作を説明するためのフローチャートである。
【図１５】同実施形態における復元処理の動作を説明するための模式図である。
【図１６】本発明の第４の実施形態に係る秘密分散システムの構成を示す模式図である。
【図１７】同実施形態における分割処理の動作を説明するためのフローチャートである。
【図１８】同実施形態における分散部分データの一例を示す模式図である。
【図１９】同実施形態における復元処理の動作を説明するためのフローチャートである。
【図２０】同実施形態における復元処理の動作を説明するための模式図である。
【符号の説明】
【０２０４】
１０…クライアント装置、１１〜ｎ１…保存部、１２…入力部、１３，１３ａ，１３ｂ…分散部分データ生成部、１４…ハッシュ値生成部、１５，１５ａ，１５ｂ…元データ復元部、１６…ハッシュ値検証部、１７，１７ａ，１７ｂ…制御部、１８…出力部、１９，２２〜ｎ２…通信部、２０，３０，…，ｎ０…保管サーバ装置、ＮＷ…ネットワーク。
【図１】
0004783119.tif 000002
【図２】
0004783119.tif 000003
【図３】
0004783119.tif 000004
【図４】
0004783119.tif 000005
【図５】
0004783119.tif 000006
【図６】
0004783119.tif 000007
【図７】
0004783119.tif 000008
【図８】
0004783119.tif 000009
【図９】
0004783119.tif 000010
【図１０】
0004783119.tif 000011
【図１１】
0004783119.tif 000012
【図１２】
0004783119.tif 000013
【図１３】
0004783119.tif 000014
【図１４】
0004783119.tif 000015
【図１５】
0004783119.tif 000016
【図１６】
0004783119.tif 000017
【図１７】
0004783119.tif 000018
【図１８】
0004783119.tif 000019
【図１９】
0004783119.tif 000020
【図２０】
0004783119.tif 000021