(57)【特許請求の範囲】
【請求項１】
分散数ｎ個（但し、２＜ｎ）の分散情報のうち、任意の２個の分散情報から秘密情報Ｋを復元可能な（２，ｎ）型の秘密分散法を用い、前記秘密情報Ｋをｎ−１個に分割した結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てて生成可能なｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）と、前記各第１分割秘密データのサイズと同一サイズのゼロ値に行番号ｊ＝０を割り当てて生成可能な第２分割秘密データＫ（０）と、前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当てて生成可能なｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）と、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）から算出可能なｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）（但し、(+)は排他的論理和を表す記号）とに基づいて、前記各分散部分データにおける同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に行番号ｊを割り当てて生成可能なｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）のうち、生成されたｎ’個（但し、２≦ｎ’＜ｎ）の分散情報を個別に保存し且つ当該保存する分散情報の行番号ｊにより個別に識別可能なｎ’台の第１保存サーバ装置と、
前記第１保存サーバ装置の行番号ｊの値とは異なる値の行番号ｊにより個別に識別可能なｎ−ｎ’台の第２保存サーバ装置と
の合計ｎ台の保存サーバ装置に通信可能で且つ、２台の第１保存サーバ装置内の分散情報に基づいて、いずれかの第２保存サーバ装置の行番号ｊを有する新たな分散情報Ｄ（ｊ）を生成し、前記新たな分散情報Ｄ（ｊ）を当該行番号ｊにより識別可能な第２保存サーバ装置に追加するための分散情報追加装置であって、
書き込まれたデータを記憶するための記憶手段と、
前記ｎ台の保存サーバ装置を個別に識別可能な行番号ｊのうち、２台の第１保存サーバ装置を識別可能な行番号ｘ，ｙと、少なくとも１台の第２保存サーバ装置を識別可能な行番号ｚとを入力するための入力手段と、
前記入力された行番号ｘ，ｙ，ｚに基づいて、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを送出する番号選択手段と、
前記送出された第１番号（ｘ，ｉ）を当該行番号ｘにより識別可能な第１保存サーバ装置に送信すると共に、前記送出された第２番号（ｙ，ｉ）を当該行番号ｙにより識別可能な第１保存サーバ装置に送信する列番号送信手段と、
前記送信した第１又は第２番号内の列番号ｉが１個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データを受信し、前記送信した第１又は第２番号内の列番号ｉが複数個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データ同士の排他的論理和を演算した演算結果データを受信するデータ受信手段と、
前記各第１保存サーバ装置から受信した各データを前記記憶手段に書き込む受信データ書込手段と、
前記記憶手段内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成する部分データ作成手段と、
前記作成した分散部分データＤ（ｚ，ｉ）を前記記憶手段に書き込む部分データ書込手段と、
前記分散部分データＤ（ｚ，ｉ）の書き込みの後、前記記憶手段内の前記受信した各データを消去する受信データ消去手段と、
前記消去の完了後、０以上ｎ−２以下の列番号ｉのうち、分散部分データＤ（ｚ，ｉ）を作成していない列番号ｉに対し、前記番号選択手段、前記列番号送信手段、前記データ受信手段、前記受信データ書込手段、前記部分データ作成手段、前記部分データ書込手段及び前記受信データ消去手段を繰り返し実行するように当該各手段を制御する制御手段と、
前記制御の完了後、前記記憶手段内のｎ−１個の分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる追加対象の分散情報Ｄ（ｚ）を、前記行番号ｚにより識別可能な第２保存サーバ装置に送信する分散情報送信手段と、
を備えたことを特徴とする分散情報追加装置。
【請求項２】
請求項１に記載の分散情報追加装置において、
前記番号選択手段は、
前記入力された行番号ｘにより識別可能な一方の第１保存サーバ装置の分散部分データＤ（ｘ，ｉ）に関し、当該分散部分データＤ（ｘ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｘ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｘ［変数］＝フラグの関係をもつ第１配列Ｘを前記記憶手段に設定する手段と、
前記入力された行番号ｙにより識別可能な他方の第１保存サーバ装置の分散部分データＤ（ｙ，ｉ）に関し、当該分散部分データＤ（ｙ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｙ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｙ［変数］＝フラグの関係をもつ第２配列Ｙを前記記憶手段に設定する手段と、
前記入力された行番号ｘ，ｙ，ｚのうち、第１保存サーバ装置の行番号ｘ，ｙの差分ｄ＝ｙ−ｘ（但し、ｘ＜ｙ）を算出する手段と、
前記各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第１配列Ｘのフラグを立てることにより、前記第１配列ＸをＸ［ｈ］＝１と設定し、前記第２配列ＹをＹ［ｈ］＝０と設定する第１初期化手段と、
前記変数ｈ、前記差分ｄ及び分散数ｎに基づいて、ｈ＋ｄ＝ｎ−１(mod ｎ)であるか否かを判定する第１判定手段と、
前記第１判定手段による判定結果が否の場合、前記変数ｈ及び前記差分ｄに基づいて、前記各配列Ｘ，ＹをＸ［ｈ＋ｄ］＝Ｙ［ｈ＋ｄ］＝１と設定する第１の配列設定手段と、
前記第１の配列設定手段による設定の後、前記差分ｄ及び分散数ｎに基づいて、前記変数ｈをｈ＝ｈ＋ｄ (mod ｎ)に更新する第１更新手段と、
前記第１更新手段による更新の後、前記部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｘ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｘ−ｈ(mod ｎ)であるか否かを判定する第２判定手段と、
前記第２判定手段による判定結果が否の場合、前記第１判定手段に戻って処理を繰り返す手段と、
前記第１判定手段による判定結果がｈ＋ｄ＝ｎ−１(mod ｎ)である場合、前記各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第２配列Ｙ［ｈ］のフラグを立てることにより、前記第２配列ＹをＹ［ｈ］＝１と設定し、前記第１配列ＸをＸ［ｈ］＝０と設定する第２初期化手段と、
前記第２初期化手段による設定の後、前記変数ｈ及び前記差分ｄに基づいて、前記各配列Ｘ，ＹをＸ［ｈ−ｄ］＝Ｙ［ｈ−ｄ］＝１と設定する第２の配列設定手段と、
前記第２の配列設定手段による設定の後、前記差分ｄ及び分散数ｎに基づいて、前記変数ｈをｈ＝ｈ−ｄ (mod ｎ)に更新する第２更新手段と、
前記第２更新手段による更新の後、前記部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｙ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｙ−ｈ(mod ｎ)であるか否かを判定する第３判定手段と、
前記第３判定手段による判定結果が否の場合、前記第２の配列設定手段に戻って処理を繰り返す手段と、
前記第３判定手段による判定結果がｚ−ｉ＝ｙ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を前記分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を前記分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第１選択手段と、
前記第２判定手段による判定結果がｚ−ｉ＝ｘ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を前記分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を前記分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第２選択手段と、
前記第１又は第２選択手段により選択された各々の列番号ｉに基づいて、前記第１番号（ｘ，ｉ）及び前記第２番号（ｙ，ｉ）を送出する手段と、
を備えたことを特徴とする分散情報追加装置。
【請求項３】
分散数ｎ個（但し、２＜ｎ）の分散情報のうち、任意の２個の分散情報から秘密情報Ｋを復元可能な（２，ｎ）型の秘密分散法を用い、前記秘密情報Ｋをｎ−１個に分割した結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てて生成可能なｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）と、前記各第１分割秘密データのサイズと同一サイズのゼロ値に行番号ｊ＝０を割り当てて生成可能な第２分割秘密データＫ（０）と、前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当てて生成可能なｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）と、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）から算出可能なｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）（但し、(+)は排他的論理和を表す記号）とに基づいて、前記各分散部分データにおける同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に行番号ｊを割り当てて生成可能なｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）のうち、生成されたｎ’個（但し、２≦ｎ’＜ｎ）の分散情報を個別に保存し且つ当該保存する分散情報の行番号ｊにより個別に識別可能なｎ’台の第１保存サーバ装置と、
前記第１保存サーバ装置の行番号ｊの値とは異なる値の行番号ｊにより個別に識別可能なｎ−ｎ’台の第２保存サーバ装置と
の合計ｎ台の保存サーバ装置に通信可能であり、且つ記憶手段、入力手段、番号選択手段、列番号送信手段、データ受信手段、受信データ書込手段、部分データ作成手段、部分データ書込手段、受信データ消去手段、制御手段及び分散情報送信手段を有し、２台の第１保存サーバ装置内の分散情報に基づいて、いずれかの第２保存サーバ装置の行番号ｊを有する新たな分散情報Ｄ（ｊ）を生成し、前記新たな分散情報Ｄ（ｊ）を当該行番号ｊにより識別可能な第２保存サーバ装置に追加するための分散情報追加装置が実行する分散情報追加方法であって、
前記入力手段が、前記ｎ台の保存サーバ装置を個別に識別可能な行番号ｊのうち、２台の第１保存サーバ装置を識別可能な行番号ｘ，ｙと、少なくとも１台の第２保存サーバ装置を識別可能な行番号ｚとを入力する入力工程と、
前記番号選択手段が、前記入力された行番号ｘ，ｙ，ｚに基づいて、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを送出する番号選択工程と、
前記列番号送信手段が、前記送出された第１番号（ｘ，ｉ）を当該行番号ｘにより識別可能な第１保存サーバ装置に送信すると共に、前記送出された第２番号（ｙ，ｉ）を当該行番号ｙにより識別可能な第１保存サーバ装置に送信する列番号送信工程と、
前記データ受信手段が、前記送信した第１又は第２番号内の列番号ｉが１個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データを受信し、前記送信した第１又は第２番号内の列番号ｉが複数個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データ同士の排他的論理和を演算した演算結果データを受信するデータ受信工程と、
前記受信データ書込手段が、前記各第１保存サーバ装置から受信した各データを前記記憶手段に書き込む受信データ書込工程と、
前記部分データ作成手段が、前記記憶手段内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成する部分データ作成工程と、
前記部分データ書込手段が、前記作成した分散部分データＤ（ｚ，ｉ）を前記記憶手段に書き込む部分データ書込工程と、
前記受信データ消去手段が、前記分散部分データＤ（ｚ，ｉ）の書き込みの後、前記記憶手段内の前記受信した各データを消去する受信データ消去工程と、
前記制御手段が、前記消去の完了後、０以上ｎ−２以下の列番号ｉのうち、分散部分データＤ（ｚ，ｉ）を作成していない列番号ｉに対し、前記番号選択手段、前記列番号送信手段、前記データ受信手段、前記受信データ書込手段、前記部分データ作成手段、前記部分データ書込手段及び前記受信データ消去手段による各工程を繰り返し実行するように当該各手段を制御する制御工程と、
前記分散情報送信手段が、前記制御の完了後、前記記憶手段内のｎ−１個の分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる追加対象の分散情報Ｄ（ｚ）を、前記行番号ｚにより識別可能な第２保存サーバ装置に送信する分散情報送信工程と、
を備えたことを特徴とする分散情報追加方法。
【請求項４】
分散数ｎ個（但し、２＜ｎ）の分散情報のうち、任意の２個の分散情報から秘密情報Ｋを復元可能な（２，ｎ）型の秘密分散法を用い、前記秘密情報Ｋをｎ−１個に分割した結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てて生成可能なｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）と、前記各第１分割秘密データのサイズと同一サイズのゼロ値に行番号ｊ＝０を割り当てて生成可能な第２分割秘密データＫ（０）と、前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当てて生成可能なｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）と、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）から算出可能なｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）（但し、(+)は排他的論理和を表す記号）とに基づいて、前記各分散部分データにおける同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に行番号ｊを割り当てて生成可能なｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）のうち、生成されたｎ’個（但し、２≦ｎ’＜ｎ）の分散情報を個別に保存し且つ当該保存する分散情報の行番号ｊにより個別に識別可能なｎ’台の第１保存サーバ装置と、
前記第１保存サーバ装置の行番号ｊの値とは異なる値の行番号ｊにより個別に識別可能なｎ−ｎ’台の第２保存サーバ装置と
の合計ｎ台の保存サーバ装置に通信可能で且つ記憶手段を有し、２台の第１保存サーバ装置内の分散情報に基づいて、いずれかの第２保存サーバ装置の行番号ｊを有する新たな分散情報Ｄ（ｊ）を生成し、前記新たな分散情報Ｄ（ｊ）を当該行番号ｊにより識別可能な第２保存サーバ装置に追加するための分散情報追加装置に用いられるプログラムであって、
前記分散情報追加装置を、
前記ｎ台の保存サーバ装置を個別に識別可能な行番号ｊのうち、２台の第１保存サーバ装置を識別可能な行番号ｘ，ｙと、少なくとも１台の第２保存サーバ装置を識別可能な行番号ｚとを入力するための入力手段、
前記入力された行番号ｘ，ｙ，ｚに基づいて、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを送出する番号選択手段、
前記送出された第１番号（ｘ，ｉ）を当該行番号ｘにより識別可能な第１保存サーバ装置に送信すると共に、前記送出された第２番号（ｙ，ｉ）を当該行番号ｙにより識別可能な第１保存サーバ装置に送信する列番号送信手段、
前記送信した第１又は第２番号内の列番号ｉが１個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データを受信し、前記送信した第１又は第２番号内の列番号ｉが複数個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データ同士の排他的論理和を演算した演算結果データを受信するデータ受信手段、
前記各第１保存サーバ装置から受信した各データを前記記憶手段に書き込む受信データ書込手段、
前記記憶手段内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成する部分データ作成手段、
前記作成した分散部分データＤ（ｚ，ｉ）を前記記憶手段に書き込む部分データ書込手段、
前記分散部分データＤ（ｚ，ｉ）の書き込みの後、前記記憶手段内の前記受信した各データを消去する受信データ消去手段、
前記消去の完了後、０以上ｎ−２以下の列番号ｉのうち、分散部分データＤ（ｚ，ｉ）を作成していない列番号ｉに対し、前記番号選択手段、前記列番号送信手段、前記データ受信手段、前記受信データ書込手段、前記部分データ作成手段、前記部分データ書込手段及び前記受信データ消去手段を繰り返し実行するように当該各手段を制御する制御手段、
前記制御の完了後、前記記憶手段内のｎ−１個の分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる追加対象の分散情報Ｄ（ｚ）を、前記行番号ｚにより識別可能な第２保存サーバ装置に送信する分散情報送信手段、
として機能させるためのプログラム。
【請求項５】
請求項４に記載のプログラムにおいて、
前記番号選択手段は、前記分散情報追加装置を、
前記入力された行番号ｘにより識別可能な一方の第１保存サーバ装置の分散部分データＤ（ｘ，ｉ）に関し、当該分散部分データＤ（ｘ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｘ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｘ［変数］＝フラグの関係をもつ第１配列Ｘを前記記憶手段に設定する手段と、
前記入力された行番号ｙにより識別可能な他方の第１保存サーバ装置の分散部分データＤ（ｙ，ｉ）に関し、当該分散部分データＤ（ｙ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｙ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｙ［変数］＝フラグの関係をもつ第２配列Ｙを前記記憶手段に設定する手段と、
前記入力された行番号ｘ，ｙ，ｚのうち、第１保存サーバ装置の行番号ｘ，ｙの差分ｄ＝ｙ−ｘ（但し、ｘ＜ｙ）を算出する手段、
前記各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第１配列Ｘ［ｈ］のフラグを立てることにより、前記第１配列ＸをＸ［ｈ］＝１と設定し、前記第２配列ＹをＹ［ｈ］＝０と設定する第１初期化手段、
前記変数ｈ、前記差分ｄ及び分散数ｎに基づいて、ｈ＋ｄ＝ｎ−１(mod ｎ)であるか否かを判定する第１判定手段、
前記第１判定手段による判定結果が否の場合、前記変数ｈ及び前記差分ｄに基づいて、前記各配列Ｘ，ＹをＸ［ｈ＋ｄ］＝Ｙ［ｈ＋ｄ］＝１と設定する第１の配列設定手段、
前記第１の配列設定手段による設定の後、前記差分ｄ及び分散数ｎに基づいて、前記変数ｈをｈ＝ｈ＋ｄ (mod ｎ)に更新する第１更新手段、
前記第１更新手段による更新の後、前記部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｘ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｘ−ｈ(mod ｎ)であるか否かを判定する第２判定手段、
前記第２判定手段による判定結果が否の場合、前記第１判定手段に戻って処理を繰り返す手段、
前記第１判定手段による判定結果がｈ＋ｄ＝ｎ−１(mod ｎ)である場合、前記各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第２配列Ｙ［ｈ］のフラグを立てることにより、前記第２配列ＹをＹ［ｈ］＝１と設定し、前記第１配列ＸをＸ［ｈ］＝０と設定する第２初期化手段、
前記第２初期化手段による設定の後、前記変数ｈ及び前記差分ｄに基づいて、前記各配列Ｘ，ＹをＸ［ｈ−ｄ］＝Ｙ［ｈ−ｄ］＝１と設定する第２の配列設定手段、
前記第２の配列設定手段による設定の後、前記差分ｄ及び分散数ｎに基づいて、前記変数ｈをｈ＝ｈ−ｄ (mod ｎ)に更新する第２更新手段、
前記第２更新手段による更新の後、前記部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｙ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｙ−ｈ(mod ｎ)であるか否かを判定する第３判定手段、
前記第３判定手段による判定結果が否の場合、前記第２の配列設定手段に戻って処理を繰り返す手段、
前記第３判定手段による判定結果がｚ−ｉ＝ｙ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を前記分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を前記分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第１選択手段、
前記第２判定手段による判定結果がｚ−ｉ＝ｘ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を前記分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を前記分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第２選択手段、
前記第１又は第２選択手段により選択された各々の列番号ｉに基づいて、前記第１番号（ｘ，ｉ）及び前記第２番号（ｙ，ｉ）を送出する手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、元の秘密情報を復元することなく、かつ復元可能な分散情報を管理者が保持せずに、新たに分散情報を追加し得る分散情報追加装置、方法及びプログラムに関する。
【背景技術】
【０００２】
１９７９年にシャミアが（ｋ，ｎ）しきい値秘密分散法と呼ばれる秘密分散法を提案している。（ｋ，ｎ）しきい値秘密分散法では、秘密情報をｎ個の分散情報に分割し、ｎ個の分散情報の中から任意のｋ個を集めれば元の秘密情報を復元できるが、ｋ−１個の分散情報からでは、元の秘密情報に関する情報を全く得られない。すなわち、（ｋ，ｎ）しきい値秘密分散法は、しきい値ｋを境にした秘密情報の復元特性をもっている（なお、１＜ｋ＜ｎ）。このため、（ｋ，ｎ）しきい値秘密分散法によれば、ｋ−１個以下の分散情報が漏洩しても元の秘密情報が安全であり、ｎ−ｋ個以下の分散情報を紛失しても元の秘密情報を復元できるといった管理を実現できる。
【０００３】
しかしながら、シャミアの（ｋ，ｎ）しきい値秘密分散法に代表されるｋ−１次多項式を使った秘密分散法では、従来の場合、分散情報を追加したいときに、元の秘密情報を復元又は使用して、追加する分散情報を生成する必要がある。補足すると、既存の分散情報から復元した元の秘密情報、または別途漏えいしないように耐タンパ装置などで保持していた元の秘密情報を用いて、新たに秘密分散処理により分散情報を生成し、追加する分散情報管理者に新たに作成した分散情報を配布する必要がある。
【０００４】
但し、最近の場合、ｋ−１次多項式を使った秘密分散法においても、元の秘密情報及び既存の分散情報を秘密にしたまま、新たに分散情報を追加可能となっている（例えば、特許文献１参照。）。
【０００５】
特許文献１記載の方式によれば、元の秘密情報及び既存の分散情報を秘密にしたまま、新たに追加する分散情報を作成できる。しかしながら、特許文献１記載の方式では、ｋ−１次の多項式演算を用いて各分散情報の管理者が中間計算を行う必要があり、多大な計算が必要である。
【０００６】
一方、多大な計算を不要とする観点から、ｋ−１次多項式を使わずにビット単位の排他的論理和演算でのみ実現する秘密分散法が提案されている（例えば、特許文献２参照。）。非特許文献２においては、（２，ｎ）型のしきい値秘密分散を（２，ｎ’）型のしきい値秘密分散に拡張可能な構成により、新メンバを追加可能とした形態が開示されている。
【特許文献１】特開２００４−３４１１５２号公報
【特許文献２】特開２００７−１２４０３２号公報、特に第９６−１１９段落
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、以上のような非特許文献２記載の技術では、本発明者の検討によれば、以下の点で改良の余地があると考えられる。
【０００８】
すなわち、非特許文献２記載の技術においては、元の秘密情報を復元することなく、かつ復元可能な分散情報を管理者が保持せずに、新たに分散情報を追加する方式が未知となっている。
【０００９】
本発明は上記実情を考慮してなされたもので、元の秘密情報を復元することなく、かつ復元可能な分散情報を管理者が保持せずに、新たに分散情報を追加し得る分散情報追加装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の発明は、分散数ｎ個（但し、２＜ｎ）の分散情報のうち、任意の２個の分散情報から秘密情報Ｋを復元可能な（２，ｎ）型の秘密分散法を用い、前記秘密情報Ｋをｎ−１個に分割した結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てて生成可能なｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）と、前記各第１分割秘密データのサイズと同一サイズのゼロ値に行番号ｊ＝０を割り当てて生成可能な第２分割秘密データＫ（０）と、前記各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当てて生成可能なｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）と、前記第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び前記乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）から算出可能なｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）（但し、(+)は排他的論理和を表す記号）とに基づいて、前記各分散部分データにおける同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に行番号ｊを割り当てて生成可能なｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）のうち、生成されたｎ’個（但し、２≦ｎ’＜ｎ）の分散情報を個別に保存し且つ当該保存する分散情報の行番号ｊにより個別に識別可能なｎ’台の第１保存サーバ装置と、前記第１保存サーバ装置の行番号ｊの値とは異なる値の行番号ｊにより個別に識別可能なｎ−ｎ’台の第２保存サーバ装置との合計ｎ台の保存サーバ装置に通信可能で且つ、２台の第１保存サーバ装置内の分散情報に基づいて、いずれかの第２保存サーバ装置の行番号ｊを有する新たな分散情報Ｄ（ｊ）を生成し、前記新たな分散情報Ｄ（ｊ）を当該行番号ｊにより識別可能な第２保存サーバ装置に追加するための分散情報追加装置であって、書き込まれたデータを記憶するための記憶手段と、前記ｎ台の保存サーバ装置を個別に識別可能な行番号ｊのうち、２台の第１保存サーバ装置を識別可能な行番号ｘ，ｙと、少なくとも１台の第２保存サーバ装置を識別可能な行番号ｚとを入力するための入力手段と、前記入力された行番号ｘ，ｙ，ｚに基づいて、前記行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを送出する番号選択手段と、前記送出された第１番号（ｘ，ｉ）を当該行番号ｘにより識別可能な第１保存サーバ装置に送信すると共に、前記送出された第２番号（ｙ，ｉ）を当該行番号ｙにより識別可能な第１保存サーバ装置に送信する列番号送信手段と、前記送信した第１又は第２番号内の列番号ｉが１個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データを受信し、前記送信した第１又は第２番号内の列番号ｉが複数個のとき、当該列番号ｉを送信した第１保存サーバ装置から前記選択した分散部分データ同士の排他的論理和を演算した演算結果データを受信するデータ受信手段と、前記各第１保存サーバ装置から受信した各データを前記記憶手段に書き込む受信データ書込手段と、前記記憶手段内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成する部分データ作成手段と、前記作成した分散部分データＤ（ｚ，ｉ）を前記記憶手段に書き込む部分データ書込手段と、前記分散部分データＤ（ｚ，ｉ）の書き込みの後、前記記憶手段内の前記受信した各データを消去する受信データ消去手段と、前記消去の完了後、０以上ｎ−２以下の列番号ｉのうち、分散部分データＤ（ｚ，ｉ）を作成していない列番号ｉに対し、前記番号選択手段、前記列番号送信手段、前記データ受信手段、前記受信データ書込手段、前記部分データ作成手段、前記部分データ書込手段及び前記受信データ消去手段を繰り返し実行するように当該各手段を制御する制御手段と、前記制御の完了後、前記記憶手段内のｎ−１個の分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる追加対象の分散情報Ｄ（ｚ）を、前記行番号ｚにより識別可能な第２保存サーバ装置に送信する分散情報送信手段と、を備えた分散情報追加装置である。
【００１１】
なお、第１の発明は、「装置」として表現したが、これに限らず、「方法」、「プログラム」又は「プログラムを記憶したコンピュータ読み取り可能な記憶媒体」として表現してもよい。
【００１２】
（作用）
第１の発明において、分散情報追加装置は、行番号ｘ，ｙ，ｚに基づき、行番号ｚの分散部分データＤ（ｚ，ｉ）毎に、選択した番号（ｘ，ｉ）,（ｙ，ｉ）を第１保存サーバ装置に送出する。
【００１３】
第１保存サーバ装置は、この番号に基づき、分散部分データ又は分散部分データ同士の排他的論理和データを分散情報追加装置に送信する。
【００１４】
分散情報追加装置は、各データ同士を排他的論理和演算して分散部分データＤ（ｚ，ｉ）を作成し、各データを消去する。
【００１５】
分散情報追加装置は、各分散部分データＤ（ｚ，ｉ）に上記処理を繰り返し、得られた分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる分散情報Ｄ（ｚ）を第２保存サーバ装置に送信する。
【００１６】
このように、分散情報追加装置は、分散情報Ｄ（ｘ），Ｄ（ｙ）を受信せず、必要最小限の各データを受信して分散部分データＤ（ｚ，ｉ）を作成し、且つＤ（ｚ，ｉ）の作成毎に、当該受信した各データを消去する構成となっている。
【００１７】
従って、元の秘密情報を復元することなく、かつ復元可能な分散情報を管理者（分散情報追加装置）が保持せずに、新たに分散情報を追加できる。
【発明の効果】
【００１８】
以上説明したように本発明によれば、元の秘密情報を復元することなく、かつ復元可能な分散情報を管理者が保持せずに、新たに分散情報を追加できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施形態について図面を用いて説明する。この実施形態は、既存の分散情報を用いて秘密情報を復元することなく、新たに分散情報を作成して新たな分散情報管理者に配布する形態である。また、本実施形態に用いられる各装置は、装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【００２０】
図１は本発明の一実施形態に係る秘密分散システムの構成を示す模式図である。この秘密分散システムは、ｎ台の保存サーバ装置１０0，１０1，…，１０n-1及び１台の分散情報追加装置２０が互いに通信可能となっている。なお、各装置１０0，１０1，…，１０n-1，２０は、ここではインターネット等のネットワークＮＷを介して又は直接に接続されて通信可能としているが、これに限らず、無線通信手段等により通信可能としてもよい。
【００２１】
ここで、ｎ台の保存サーバ装置１０0，…，１０ｊ，…，１０n-1は、０以上ｎ−１以下の番号ｊで識別可能となっている。各保存サーバ装置１０0，…，１０ｊ，…，１０n-1は、互いに同一のハードウェア構成であるので、ここでは、保存サーバ装置１０1を代表例に挙げて説明する。
【００２２】
保存サーバ装置１０1は、保存部１１1、通信部１２1、制御部１３1、ＸＯＲ演算部１４1を備えている。
【００２３】
保存部１１1は、各部１２1〜１４1から読出／書込み可能な記憶装置であり、分散情報Ｄ（１）を保存している。なお、本実施形態では、保存部１１0，１１1，１１2，１１3は、秘密分散システムの追加動作開始時には既に分散情報Ｄ（０），Ｄ（１），Ｄ（２），Ｄ（３）を保存しているものとする。一方、本実施形態では、保存部１１4は、秘密分散システムの追加動作開始時には分散情報Ｄ（４）を保存しておらず、秘密分散システムによる追加動作により、追加される分散情報Ｄ（４）が書き込まれるものとする。
【００２４】
具体的には本実施形態は、特許文献２記載の（２，５）しきい値秘密分散法に基づき、４つの分散情報Ｄ（０）〜Ｄ（３）を配布済みとし、１つの分散情報Ｄ（４）が未配布とした場合に、配布済の２つの分散情報Ｄ（１），Ｄ（３）から未配布の分散情報Ｄ（４）を作成して配布する例を示している。
【００２５】
なお、特許文献２記載の（２，５）しきい値秘密分散法においては、保存サーバ装置１０ｊ（０≦ｊ≦４）に保存される分散部分データＤ（ｊ，ｉ）（０≦ｊ≦４，０≦ｉ≦３）からなる分散情報Ｄ（ｊ）は図２及び以下に示すようになる。
【００２６】
ここで、Ｄ（ｊ）は、ｎ−１個のＤ（ｊ，ｉ）を含んでいる。ｎ−１個のＤ（ｊ，ｉ）は、Ｄ（ｊ，０），Ｄ（ｊ，１），…，Ｄ（ｊ，ｎ−２）である。Ｄ（ｊ，０），…，Ｄ（ｊ，ｎ−２）は、それぞれ次のようにＫ（ｊ−ｉ (mod ｎ)）とＲ（ｉ）を含んでいる。
【００２７】
Ｄ（ｊ，０）＝Ｋ（ｊ−０ (mod ｎ)）(＋)Ｒ（０）、
Ｄ（ｊ，１）＝Ｋ（ｊ−１ (mod ｎ)）(＋)Ｒ（１）、
：
Ｄ（ｊ，ｉ）＝Ｋ（ｊ−ｉ (mod ｎ)）(＋)Ｒ（ｉ）、
：
Ｄ（ｊ，ｎ−２）＝Ｋ（ｊ−（ｎ−２） (mod ｎ)）(＋)Ｒ（ｎ−２）
各式中、(＋)はＸＯＲ（排他的論理和）演算子を表す記号とする。
【００２８】
Ｋ（０），…，Ｋ（ｎ−１）及びＲ（０），…，Ｒ（ｎ−２）は全て同じ長さの０と１から値をとるバイナリデータである。Ｋ（０），…，Ｋ（ｎ−１）のうち、Ｋ（０）を除くＫ（１），…，Ｋ（ｎ−１）は、秘密情報Ｋをｎ−１個に分割した情報であり、Ｋ＝Ｋ（１）‖Ｋ（２）‖Ｋ（３）‖Ｋ（４）の関係がある。Ｋ（０）はゼロ値データである。Ｒ（０）、Ｒ（１）、Ｒ（２）、Ｒ（３）はランダムな値である。
【００２９】
補足すると、本実施形態は、ｎ’個の分散情報が個別に配布されたｎ’台の保存サーバ装置１０x，１０y，…が（２，ｎ）しきい値法で秘密分散された分散情報Ｄ（ｘ），Ｄ（ｙ），…を各々保存しており（但し、２≦ｎ’＜ｎ）、追加可能なｎ−ｎ’個の分散情報Ｄ（ｚ），…を他の保存サーバ装置１０z，…に追加する場合において、ｎ＝５、ｎ’＝４、ｘ＝１，ｙ＝３，ｚ＝４とした例を示している。
【００３０】
すなわち、本実施形態において、配布済みのｎ’個のＤ（ｊ）には、Ｄ（ｘ），Ｄ（ｙ）が含まれる。追加可能なｎ−ｎ’個のＤ（ｊ）には、Ｄ（ｚ）が含まれる。番号ｘ，ｙ，ｚは、それぞれ０以上ｎ−１以下の範囲にある番号ｊの任意の値である（但し、ｘ＜ｙ、ｘ≠ｙ≠ｚ）。
【００３１】
通信部１２1は、制御部１３1により制御され、分散情報追加装置２０と通信するための通信機能をもっている。
【００３２】
制御部１３1は、通信部１２1を介して分散情報追加装置２０からＤ（ｚ，ｉ）を計算するために必要となる分散部分データＤ（ｘ，ｉ）の番号（行番号ｘ，列番号ｉ）を受信すると、この番号に基づいて、保存部１１1内の該当する分散部分データＤ（ｘ，ｉ）を読み出す機能と、読み出した分散部分データＤ（ｘ，ｉ）が複数個の場合には各Ｄ（ｘ，ｉ）をＸＯＲ演算部１４1へ送出し、ＸＯＲ演算部１４1から受けたＸＯＲ演算結果データＤXOR（ｘ，ｉ）を通信部１２1から分散情報追加装置２０へ送信する機能と、読み出した分散部分データＤ（ｘ，ｉ）が１個の場合には当該Ｄ（ｘ，ｉ）を通信部１２1から分散情報追加装置２０へ送信する機能とをもっている。
【００３３】
ＸＯＲ演算部１４1は、制御部１３1から送出された複数の分散部分データＤ（ｘ，ｉ）を互いにＸＯＲ演算し、得られたＸＯＲ演算結果データＤXOR＝Ｄ（ｘ，ｉ）(＋)Ｄ（ｘ，ｉ）を制御部１３1へ送出する機能をもっている。
【００３４】
一方、分散情報追加装置２０は、保存部２１、入力部２２、制御部２３、分散情報生成部２４、通信部２５及び出力部２６を備えている。
【００３５】
保存部２１は、各部２２〜２６からアクセス可能な記憶装置であり、例えば、各保存サーバ装置１０x，１０yから受信した分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）や新たに作成した分散情報Ｄ（ｚ）が一時的に保存される。
【００３６】
入力部２２は、ｎ台の保存サーバ装置１０0〜１０4を個別に識別可能な行番号ｊのうち、２台の保存サーバ装置１０x，１０yを識別可能な行番号ｘ，ｙと、少なくとも１台の保存サーバ装置１０zを識別可能な行番号ｚとを入力するための入力機能をもっている。入力部２２の入力機能は、分散情報追加装置２０が既存の任意の分散情報Ｄ（ｘ），Ｄ（ｙ）を指定する機能に変更してもよく、オプショナルな機能部である。
【００３７】
制御部２３は、図３に示す動作を実行するように各部２１，２４〜２６を制御するものであり、例えば、以下の各機能(f23-1)〜(f23-8)をもっている。
【００３８】
(f23-1)  入力部２２から入力された行番号ｘ，ｙ，ｚに基づいて、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを送出するように、番号選択要求を分散情報生成部２４に送出する機能。
【００３９】
(f23-2)  分散情報生成部２４から送出された第１番号（ｘ，ｉ）を当該行番号ｘにより識別可能な保存サーバ装置１０xに通信部２５を介して送信すると共に、分散情報生成部２４から送出された第２番号（ｙ，ｉ）を当該行番号ｙにより識別可能な保存サーバ装置１０yに通信部２５を介して送信する機能。
【００４０】
(f23-3)  各保存サーバ装置１０x，１０yから受信した各データを保存部２１に書き込む機能。ここで、各データとしては、送信した第１又は第２番号内の列番号ｉが１個のとき、分散情報生成部２４により選択した分散部分データである。また、各データとしては、送信した第１又は第２番号内の列番号ｉが複数個のとき、分散情報生成部２４により選択した分散部分データ同士の排他的論理和を保存サーバ装置１０x，１０yが演算してなる演算結果データである。
【００４１】
(f23-4)  保存部２１内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成するように、演算命令を分散情報生成部２４に送出する機能。
【００４２】
(f23-5)  分散情報生成部２４により作成した分散部分データＤ（ｚ，ｉ）を保存部２１に書き込む機能。
【００４３】
(f23-6)  分散部分データＤ（ｚ，ｉ）の書き込みの後、保存部２１内の受信した各データを消去する機能。
【００４４】
(f23-7)  消去の完了後、０以上ｎ−２以下の列番号ｉのうち、分散部分データＤ（ｚ，ｉ）を作成していない列番号ｉに対し、前述した各機能(f23-1)〜(f23-6)を繰り返し実行するように当該各(f23-1)〜(f23-6)を制御する機能。
【００４５】
(f23-8)  制御の完了後、保存部２１内のｎ−１個の分散部分データＤ（ｚ，０），…，Ｄ（ｚ，ｉ），…，Ｄ（ｚ，n-2）からなる追加対象の分散情報Ｄ（ｚ）を、行番号ｚにより識別可能な保存サーバ装置１０zに通信部２５を介して送信する機能。
【００４６】
分散情報生成部２４は、以下の各機能(f24-1)，(f24-2)をもっている。  
(f24-1)  制御部２３から受けた番号選択要求により、入力部２２から入力された行番号ｘ，ｙ，ｚに基づいて、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）に関し、当該分散部分データＤ（ｚ，ｉ）を示す列番号ｉ毎に、当該分散部分データＤ（ｚ，ｉ）を作成するための行番号ｘ，ｙの分散部分データＤ（ｘ，ｉ），Ｄ（ｙ，ｉ）を個別に示す列番号ｉを選択し、当該選択した列番号ｉ及び当該Ｄ（ｘ，ｉ）の行番号ｘからなる第１番号（ｘ，ｉ）と、当該選択した列番号ｉ及び当該Ｄ（ｙ，ｉ）の行番号ｙからなる第２番号（ｙ，ｉ）とを制御部２３に送出する機能。
【００４７】
(f24-2)  制御部２３から受けた演算命令に従い、保存部２１内の各データ同士の排他的論理和を演算することにより、列番号ｉの分散部分データＤ（ｚ，ｉ）を作成し、得られた分散部分データＤ（ｚ，ｉ）を制御部２３に送出する機能。
【００４８】
ここで、分散情報生成部２４の機能(f24-1)は、図４に示す動作を実行するように、以下の各機能(f24-1-1)〜(f24-1-18)を備えている。
【００４９】
(f24-1-1)  入力された行番号ｘにより識別可能な一方の保存サーバ装置１０xの分散部分データＤ（ｘ，ｉ）に関し、当該分散部分データＤ（ｘ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｘ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｘ［変数］＝フラグの関係をもつ第１配列Ｘを保存部２１に設定する機能。
【００５０】
(f24-1-2)  入力された行番号ｙにより識別可能な他方の保存サーバ装置１０yの分散部分データＤ（ｙ，ｉ）に関し、当該分散部分データＤ（ｙ，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（ｙ，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｙ［変数］＝フラグの関係をもつ第２配列Ｙを保存部２１に設定する機能。
【００５１】
(f24-1-3)  入力された行番号ｘ，ｙ，ｚのうち、保存サーバ装置１０x，１０yの行番号ｘ，ｙの差分ｄ＝ｙ−ｘ（但し、ｘ＜ｙ）を算出する機能。
【００５２】
(f24-1-4)  各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第１配列Ｘのフラグを立てることにより、第１配列ＸをＸ［ｈ］＝１と設定し、前記第２配列ＹをＹ［ｈ］＝０と設定する第１初期化機能。
【００５３】
(f24-1-5)  変数ｈ、差分ｄ及び分散数ｎに基づいて、ｈ＋ｄ＝ｎ−１(mod ｎ)であるか否かを判定する第１判定機能。
【００５４】
(f24-1-6)  第１判定機能による判定結果が否の場合、変数ｈ及び差分ｄに基づいて、各配列Ｘ，ＹをＸ［ｈ＋ｄ］＝Ｙ［ｈ＋ｄ］＝１と設定する第１の配列設定機能。
【００５５】
(f24-1-7)  第１の配列設定機能による設定の後、差分ｄ及び分散数ｎに基づいて、変数ｈをｈ＝ｈ＋ｄ (mod ｎ)に更新する第１更新機能。
【００５６】
(f24-1-8)  第１更新機能による更新の後、部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｘ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｘ−ｈ(mod ｎ)であるか否かを判定する第２判定機能。
【００５７】
(f24-1-9)  第２判定機能による判定結果が否の場合、第１判定機能に戻って処理を繰り返す機能。
【００５８】
(f24-1-10)  第１判定機能による判定結果がｈ＋ｄ＝ｎ−１(mod ｎ)である場合、各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第２配列Ｙ［ｈ］のフラグを立てることにより、第２配列ＹをＹ［ｈ］＝１と設定し、第１配列ＸをＸ［ｈ］＝０と設定する第２初期化機能。
【００５９】
(f24-1-12)  第２初期化機能による設定の後、変数ｈ及び差分ｄに基づいて、各配列Ｘ，ＹをＸ［ｈ−ｄ］＝Ｙ［ｈ−ｄ］＝１と設定する第２の配列設定機能。
【００６０】
(f24-1-13)  第２の配列設定機能による設定の後、差分ｄ及び分散数ｎに基づいて、変数ｈをｈ＝ｈ−ｄ (mod ｎ)に更新する第２更新機能。
【００６１】
(f24-1-14)  第２更新機能による更新の後、部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｙ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｙ−ｈ(mod ｎ)であるか否かを判定する第３判定機能。
【００６２】
(f24-1-15)  第３判定機能による判定結果が否の場合、第２の配列設定機能に戻って処理を繰り返す機能。
【００６３】
(f24-1-16)  第３判定機能による判定結果がｚ−ｉ＝ｙ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第１選択機能。
【００６４】
(f24-1-17)  第２判定機能による判定結果がｚ−ｉ＝ｘ−ｈ(mod ｎ)である場合、フラグが１に設定された第１配列Ｘの変数を分散部分データＤ（ｘ，ｉ）の列番号ｉとして選択すると共に、フラグが１に設定された第２配列Ｙの変数を分散部分データＤ（ｙ，ｉ）の列番号ｉとして選択する第２選択機能。
【００６５】
(f24-1-18)  第１又は第２選択機能により選択された各々の列番号ｉに基づいて、第１番号（ｘ，ｉ）及び第２番号（ｙ，ｉ）を制御部２３に送出する機能。
【００６６】
通信部２５は、制御部２３により制御され、各保存サーバ装置１０x，１０y，１０zと通信するための通信機能をもっている。
【００６７】
出力部２６は、制御部２３の制御により、追加する分散情報Ｄ（ｚ）を出力する機能をもっている。但し、分散情報Ｄ（ｚ）を出力する機能は必須ではなく、省略してもよい。
【００６８】
次に、以上のように構成された秘密分散システムによる分散情報追加方法について図３及び図４のフローチャートを用いて説明する。なお、ここでは分散数ｎ＝５、配布済み数ｎ’＝４を例に挙げて述べる。
【００６９】
この秘密分散システムにおいては、分散数ｎ個（但し、２＜ｎ）の分散情報のうち、任意の２個の分散情報から秘密情報Ｋを復元可能な（２，ｎ）型の秘密分散法が用いられている。
【００７０】
この秘密分散法では、図２にｎ＝５の例を示したように、秘密情報Ｋをｎ−１個に分割した結果に１からｎ−１までの行番号ｊ（但し、０≦ｊ≦ｎ−１）を割り当てて生成可能なｎ−１個の第１分割秘密データＫ（１），…，Ｋ（ｊ），…，Ｋ（n-1）と、各第１分割秘密データのサイズと同一サイズのゼロ値に行番号ｊ＝０を割り当てて生成可能な第２分割秘密データＫ（０）と、各分割秘密データのサイズ以上のサイズを有するｎ−１個の乱数に０からｎ−２までの列番号ｉ（但し、０≦ｉ≦ｎ−２）を割り当てて生成可能なｎ−１個の乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）と、第１及び第２分割秘密データＫ（０），Ｋ（１），…，Ｋ（ｊ），…，Ｋ（n-1）及び乱数データＲ（０），…，Ｒ（ｉ），…，Ｒ（n-2）から算出可能なｎ（ｎ−１）個の分散部分データＤ（ｊ，ｉ）＝Ｋ（ｊ−ｉ(mod ｎ)）(+)Ｒ（ｉ）（但し、(+)は排他的論理和を表す記号）とに基づいて、各分散部分データにおける同一の行番号ｊを有するｎ−１個の分散部分データＤ（ｊ，０）〜Ｄ（ｊ，n-2）毎に行番号ｊを割り当ててｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）が生成可能となっている。
【００７１】
また、４台の保存サーバ装置１０0〜１０3は、生成可能なｎ個の分散情報Ｄ（０），…，Ｄ（ｊ），…，Ｄ（n-1）のうち、生成された４個の分散情報を個別に保存し且つ当該保存する分散情報の行番号ｊにより個別に識別可能となっている。
【００７２】
１台の保存サーバ装置１０4は、保存サーバ装置１０0〜１０3の行番号ｊの値とは異なる値の行番号ｊにより個別に識別可能となっている。
【００７３】
分散情報追加装置２０は、合計５台の保存サーバ装置１０0〜１０4に通信可能で且つ、２台の保存サーバ装置１０1，１０3内の分散情報Ｄ（１），Ｄ（３）に基づいて、保存サーバ装置１０4の行番号ｊを有する新たな分散情報Ｄ（４）を生成し、新たな分散情報Ｄ（４）を当該行番号ｊにより識別可能な保存サーバ装置１０4に追加可能となっている。
【００７４】
すなわち、以下の説明では、図５に示すように、ｎ＝５，ｎ’＝４として、（２，ｎ）しきい値法で秘密分散した後、分散情報Ｄ（１）とＤ（３）から分散情報Ｄ（４）を追加する例を挙げて述べる。既存の保存サーバ装置１０x，１０yを示す番号ｘ，ｙはそれぞれｘ＝１，ｙ＝３とする。追加する保存サーバ装置１０zを示す番号ｚは、ｚ＝４とする。
【００７５】
分散情報追加装置２０においては、操作者の操作により、分散数ｎ、分散情報の長さＬ、分散情報Ｄ（ｘ），Ｄ（ｙ）を保存している各保存サーバ装置１０x，１０yの番号（ｘ＝１，ｙ＝３）、追加する分散情報Ｄ（ｚ）を配布する保存サーバ装置１０zの番号（ｚ＝４）が入力部２２から制御部２３に入力される（ＳＴ１）。  
各番号ｘ，ｙ，ｚの大小関係は、説明の便宜上、０≦ｘ＜ｙ≦ｎ’−１＜ｚ≦ｎ−１、とする。実際は、０≦ｘ＜ｙ≦ｎ−１、０≦ｚ≦ｎ−１、ｘ≠ｙ≠ｚ、であればよい。
【００７６】
ｎ’：既存の保存サーバ装置の台数
制御部２３は、分散数ｎと、分散情報の長さＬと、分散情報Ｄ（ｘ），Ｄ（ｙ）を保存している保存サーバ装置１０1，１０3の番号（ｘ＝１，ｙ＝３）と、追加する分散情報Ｄ（ｚ）を配布する保存サーバ装置１０4の番号（ｚ＝４）とを含む番号選択要求を分散情報生成部２４へ送出する。
【００７７】
分散情報生成部２４は、これらのデータｎ，Ｌ，ｘ，ｙ，ｚを含む番号選択要求を受けると、図４に示す選択アルゴリズムにより、追加する分散部分データＤ（ｚ，ｉ）毎に、Ｄ（ｚ，ｉ）の計算に必要な分散部分データを、既存の分散情報Ｄ（ｘ），Ｄ（ｙ）内の分散部分データ｛Ｄ（ｘ，０），Ｄ（ｘ，１），…，Ｄ（ｘ，ｎ−２），Ｄ（ｙ，０），Ｄ（ｙ，１），…，Ｄ（ｙ，ｎ−２）｝から選択する（ＳＴ２）。
【００７８】
例えばｉ＝０として、追加する分散部分データＤ（４，０）を計算する場合、分散情報生成部２４は、分散情報Ｄ（ｘ）を保存している番号（ｘ＝１）の保存サーバ装置１０1が保存する分散部分データＤ（ｘ，０），Ｄ（ｘ，１），…，Ｄ（ｘ，ｎ−２）から０番目と２番目の分散部分データＤ（１，０），Ｄ（１，２）を選択する。
【００７９】
同様に、分散情報生成部２４は、分散情報Ｄ（ｙ）を保存している番号（ｙ＝３）の保存サーバ装置１０3が保存する分散部分データＤ（ｙ，０），Ｄ（ｙ，１），…，Ｄ（ｙ，ｎ−２）から２番目の分散部分データＤ（３，２）を選択する。なお、ステップＳＴ２の選択アルゴリズムの詳細については後述する。
【００８０】
選択された分散部分データＤ（１，０），Ｄ（１，２），Ｄ（３，２）の番号（ｘ＝１、ｉ＝０，２），（ｙ＝３、ｉ＝２）は、分散情報生成部２４から制御部２３に送出される。
【００８１】
制御部２３は、送出された番号（ｘ＝１、ｉ＝０，２）を当該行番号ｘにより識別可能な１番目の保存サーバ装置１０1へ通信部２５を介して送信すると共に、送出された番号（ｙ＝３、ｉ＝２）を当該行番号ｙにより識別可能な３番目の保存サーバ装置１０3へ通信部２５を介して送信する（ＳＴ３）。
【００８２】
１番目の保存サーバ装置１０1の制御部１３1は、通信部１２1を介して分散情報追加装置２０からＤ（ｚ，ｉ）を計算するために必要となる分散部分データＤ（ｘ，ｉ）の番号（ｘ＝１，ｉ＝０，２）を受信すると、この番号に基づいて、保存部１１1内の該当する分散部分データＤ（１，０），Ｄ（１，２）を読み出す。
【００８３】
制御部１３1は、読み出した分散部分データＤ（１，０），Ｄ（１，２）をＸＯＲ演算部１４1へ送出する。
【００８４】
ＸＯＲ演算部１４1は、送出された分散部分データＤ（１，０），Ｄ（１，２）を互いにＸＯＲ演算し、得られたＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝０，２）＝Ｄ（１，０）(＋)Ｄ（１，２）を制御部１３1へ送出する。
【００８５】
制御部１３1は、このＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝０，２）を通信部１２1から分散情報追加装置２０へ送信する（ＳＴ４）。
【００８６】
同様に、３番目の保存サーバ装置１０3の制御部１３3は、通信部１２3を介して分散情報追加装置２０からＤ（ｚ，ｉ）を計算するために必要となる分散部分データＤ（ｙ，ｉ）の番号（ｙ＝３，ｉ＝２）を受信すると、この番号に基づいて、保存部１１3内の該当する分散部分データＤ（３，２）を読み出す。
【００８７】
制御部１３3は、読み出した分散部分データＤ（３，２）が１個であるので、ＸＯＲ演算部１４3へ送出せず、この分散部分データＤ（３，２）を通信部１２3から分散情報追加装置２０へ送信する（ＳＴ４）。
【００８８】
分散情報追加装置２０においては、制御部２３が通信部２５を介して２つの保存サーバ装置１０1，１０3から受信したＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝０，２）と、分散部分データＤ（３，２）と保存部２１に書き込む。
【００８９】
しかる後、分散情報追加装置２０においては、制御部２３が保存部２１内の各データ同士の演算命令を分散情報生成部２４へ送出する。
【００９０】
分散情報生成部２４は、この演算命令を受けると、保存部２１内の２つのデータをＸＯＲ演算し（ＳＴ５）、演算結果を分散部分データＤ（ｚ，ｉ）＝Ｄ（４，０）＝ＤXOR（ｘ＝１，ｉ＝０，２）(＋)Ｄ（３，２）として制御部２３へ送出する。
【００９１】
制御部２３は、この分散部分データＤ（４，０）を保存部２１に書き込む。しかる後、制御部２３は、保存部２１内の各保存サーバ装置１０1，１０3から受信した２つのデータＤXOR（ｘ＝１，ｉ＝０，２）及びＤ（３，２）を消去する（ＳＴ６）。
【００９２】
制御部２３は、以上の処理を０≦ｉ≦ｎ−２の範囲で繰り返すことにより、０≦ｉ≦ｎ−２の番号ｉ毎に、追加する分散部分データＤ（ｚ，ｉ）を計算する。
【００９３】
すなわち、ｉ＝１として、追加する分散部分データＤ（４，１）を計算する場合、分散情報追加装置は、図４の選択アルゴリズムにより、必要な分散部分データＤ（ｘ，ｉ）の番号（ｘ＝１，ｉ＝０，３）を保存サーバ装置１０1へ送信すると共に、必要な分散部分データＤ（ｙ，ｉ）の番号（ｙ＝３，ｉ＝３）を保存サーバ装置１０3へ送信する。
【００９４】
保存サーバ装置１０1は、この番号（ｘ＝１，ｉ＝０，３）に基づいて、該当する分散部分データのＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝０，３）＝Ｄ（１，０）(＋)Ｄ（１，３）を分散情報追加装置２０へ送信する。保存サーバ装置１０3は、この番号（ｙ＝３，ｉ＝３）に基づいて、該当する分散部分データＤ（３，３）を分散情報追加装置２０に送信する。
【００９５】
分散情報追加装置２０は、２つの保存サーバ装置１０1，１０3から受信したデータＤXOR（ｘ＝１，ｉ＝０，３）及びＤ（３，３）を互いにＸＯＲ演算し、演算結果を分散部分データＤ（４，１）＝ＤXOR（ｘ＝１，ｉ＝０，３）(＋)Ｄ（３，３）として保存部２１に保存した後、受信したデータＤXOR（ｘ＝１，ｉ＝０，３）及びＤ（３，３）を削除する。
【００９６】
続いて、ｉ＝２として、追加する分散部分データＤ（４，２）を計算する場合、分散情報追加装置２０は、図４の選択アルゴリズムより、必要な分散部分データＤ（ｘ，ｉ）の番号（ｘ＝１，ｉ＝０，１，３）を保存サーバ装置１０1へ送信すると共に、必要な分散部分データＤ（ｙ，ｉ）の番号（ｙ＝３，ｉ＝０，１，２，３）を保存サーバ装置１０3へ送信する。
【００９７】
保存サーバ装置１０1は、この番号（ｘ＝１，ｉ＝０，１，３）に基づいて、該当する分散部分データのＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝０，１，３）＝Ｄ（１，０）(＋)Ｄ（１，１）(＋)Ｄ（１，３）を分散情報追加装置２０へ送信する。保存サーバ装置１０3は、この番号（ｙ＝３，ｉ＝０，１，２，３）に基づいて、該当する分散部分データの演算結果データＤXOR（ｙ＝３，ｉ＝０，１，２，３）＝Ｄ（３，０）(＋)Ｄ（３，１）(＋)Ｄ（３，２）(＋)Ｄ（３，３）を分散情報追加装置２０に送信する。
【００９８】
分散情報追加装置２０は、２つの保存サーバ装置１０1，１０3から受信したデータＤXOR（ｘ＝１，ｉ＝０，１，３）及びＤXOR（ｙ＝３，ｉ＝０，１，２，３）を互いにＸＯＲ演算し、演算結果を分散部分データＤ（４，２）＝ＤXOR（ｘ＝１，ｉ＝０，１，３）(＋)ＤXOR（ｙ＝３，ｉ＝０，１，２，３）として保存部２１に保存した後、受信したデータＤXOR（ｘ＝１，ｉ＝０，１，３）及びＤXOR（ｙ＝３，ｉ＝０，１，２，３）を削除する。
【００９９】
最後にｉ＝３として、追加する分散部分データＤ（４，３）を計算する場合、分散情報追加装置は、図４の選択アルゴリズムより、必要な分散部分データＤ（ｘ，ｉ）の番号（ｘ＝１，ｉ＝１，３）を保存サーバ装置１０1へ送信すると共に、必要な分散部分データＤ（ｙ，ｉ）の番号（ｙ＝３，ｉ＝０）を保存サーバ装置１０3へ送信する。
【０１００】
保存サーバ装置１０1は、この番号（ｘ＝１，ｉ＝１，３）に基づいて、該当する分散部分データのＸＯＲ演算結果データＤXOR（ｘ＝１，ｉ＝１，３）＝Ｄ（１，０）(＋)Ｄ（１，３）を分散情報追加装置２０へ送信する。保存サーバ装置１０3は、この番号（ｙ＝３，ｉ＝０）に基づいて、該当する分散部分データＤ（３，０）を分散情報追加装置２０に送信する。
【０１０１】
分散情報追加装置２０は、２つの保存サーバ装置１０1，１０3から受信したデータＤXOR（ｘ＝１，ｉ＝１，３）及びＤ（３，０）を互いにＸＯＲ演算し、演算結果を分散部分データＤ（４，３）＝ＤXOR（ｘ＝１，ｉ＝１，３）(＋)Ｄ（３，０）として保存部２１に保存した後、受信したデータＤXOR（ｘ＝１，ｉ＝１，３）及びＤ（３，０）を削除する。
【０１０２】
以上により、０≦ｉ≦ｎ−２（＝３）までの繰り返し処理が完了する。
【０１０３】
制御部２３は、繰り返し処理が完了すると、保存部２１内の番号ｉ毎の分散部分データ（４，０），…，（４，３）からなる分散情報Ｄ（ｚ）を通信部２５から保存サーバ装置１０4に送信する（ＳＴ７）。
【０１０４】
保存サーバ装置１０4は、この分散情報Ｄ（ｚ）を保存部１１4に保存する（ＳＴ８）。
【０１０５】
以上の操作により、図５に示すように、ｎ＝５，ｎ’＝４の例において、（２，ｎ）しきい値法で秘密分散した後、元の秘密情報を復元することなく、かつ元の秘密情報の一部も漏えいすることなく、分散情報Ｄ（１）とＤ（３）から新たな分散情報Ｄ（４）を作成することができる。
【０１０６】
また、説明を容易にするため、ｘ＜ｙ＜ｚとして実施形態を説明したが、ｘ＜ｙを満たし、ｚは０≦ｚ≦ｎ−１であれば同様に分散情報を追加することができる。
【０１０７】
（ステップＳＴ２の選択アルゴリズムの詳細）
次に、ステップＳＴ２の選択アルゴリズムについて図４のフローチャート及び図６乃至図９の模式図を参照しながら詳細に説明する。
【０１０８】
分散情報生成部２４は、分散数ｎと、分散情報の長さＬと、分散情報Ｄ（ｘ），Ｄ（ｙ）を保存している保存サーバ装置の番号（ｘ＝１，ｙ＝３）と、追加する分散情報Ｄ（ｚ）を配布する保存サーバ装置の番号（ｚ＝４）とを含む番号選択要求を制御部２３から受けると、図４に示すように、既存の保存サーバ装置の番号の差分ｄ＝ｙ−ｘを算出する（ＳＴ２−１）。なお、ｘ＜ｙである。
【０１０９】
また、分散情報生成部２４は、入力された行番号ｘ＝１により識別可能な一方の保存サーバ装置１０1の分散部分データＤ（１，ｉ）に関し、当該分散部分データＤ（１，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（１，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｘ［変数］＝フラグの関係をもつ第１配列Ｘを保存部２１に設定する。
【０１１０】
同様に、分散情報生成部２４は、入力された行番号ｙ＝３により識別可能な他方の保存サーバ装置１０3の分散部分データＤ（３，ｉ）に関し、当該分散部分データＤ（３，ｉ）の列番号ｉに相当するｎ−１個の変数と、変数毎に分散部分データＤ（３，ｉ）を選択するか否かを示すフラグとを互いに関連付けてなり、Ｙ［変数］＝フラグの関係をもつ第２配列Ｙを保存部２１に設定する。
【０１１１】
しかる後、分散情報生成部２４は、各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第１配列Ｘのフラグを立てることにより、第１配列ＸをＸ［ｈ］＝１と設定し、第２配列ＹをＹ［ｈ］＝０と設定する（ＳＴ２−２）。なお、０≦ｉ≦ｎ−２であり、ｉの初期値は０である。すなわち、ステップＳＴ２−２では、配列Ｘ［０］＝１とする。また、ステップＳＴ２−２〜ＳＴ２−１４は、図４、図６乃至図９に示すように、変数ｉを０から３（＝ｎ−２）まで変えて繰り返し実行される。また、ステップＳＴ２−２〜ＳＴ２−１４において、演算はｍｏｄ  ５（＝ｍｏｄ  ｎ）で実行される。
【０１１２】
続いて、分散情報生成部２４は、差分ｄ及び分散数ｎに基づいて、ｈ＋ｄ＝ｎ−１(mod ｎ)であるか否かを判定し（ＳＴ２−３）、判定結果がｈ＋ｄ＝ｎ−１である場合にはステップＳＴ２−７に進む。
【０１１３】
一方、ステップＳＴ２−３の判定結果が否の場合には、分散情報生成部２４は、変数ｈ及び差分ｄに基づいて、各配列Ｘ，Ｙを配列Ｘ［ｈ＋ｄ］＝Ｙ［ｈ＋ｄ］＝１とする（ＳＴ２−４）。
【０１１４】
しかる後、分散情報生成部２４は、差分ｄ及び分散数ｎに基づいて、変数ｈをｈ＝ｈ＋ｄ (mod ｎ)に更新する（ＳＴ２−５）。
【０１１５】
更に、分散情報生成部２４は、部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｘ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｘ−ｈ(mod ｎ)であるか否かを判定し（ＳＴ２−６）、判定結果がｚ−ｉ＝ｘ−ｈである場合にはステップＳＴ２−１１に進む。
【０１１６】
一方、ステップＳＴ２−６の判定結果が否の場合には、分散情報生成部２４は、ステップＳＴ２−３に戻る。
【０１１７】
このようなステップＳＴ２−３〜ＳＴ２−６の処理を繰り返した結果、ステップＳＴ２−３の判定結果がｈ＋ｄ＝ｎ−１となった場合を説明する。
【０１１８】
分散情報生成部２４は、各配列Ｘ，Ｙの全ての変数に対してフラグを０に初期化した後、行番号ｚの分散情報Ｄ（ｚ）を構成する分散部分データＤ（ｚ，ｉ）を示す列番号ｉを変数ｈとして第２配列Ｙ［ｈ］のフラグを立てることにより、第２配列ＹをＹ［ｈ］＝１と設定し、第１配列ＸをＸ［ｈ］＝０と設定する（ＳＴ２−７）。なお、０≦ｉ≦ｎ−２であり、ｉの初期値は０である。すなわち、ステップＳＴ２−７では、配列Ｙ［０］＝１とする。
【０１１９】
続いて、分散情報生成部２４は、変数ｈ及び差分ｄに基づいて、各配列Ｘ，ＹをＸ［ｈ−ｄ］＝Ｙ［ｈ−ｄ］＝１と設定する（ＳＴ２−８）。また、分散情報生成部２４は、差分ｄ及び分散数ｎに基づいて、変数ｈをｈ＝ｈ−ｄ (mod n)に更新する（ＳＴ２−９）。
【０１２０】
更に、分散情報生成部２４は、部分分散データＤ（ｚ，ｉ）を示す行番号ｚ及び列番号ｉ、行番号ｙ、変数ｈ、分散数ｎに基づいて、ｚ−ｉ＝ｙ−ｈ(mod ｎ)であるか否かを判定し（ＳＴ２−１０）、判定結果がｚ−ｉ＝ｙ−ｈである場合にはステップＳＴ２−１１に進む。
【０１２１】
一方、ステップＳＴ２−１０の判定結果が否の場合には、分散情報生成部２４は、ステップＳＴ２−８に戻る。
【０１２２】
次に、ステップＳＴ２−６又はＳＴ２−１０の判定結果により、ステップＳＴ２−１１に進む場合を説明する。なお、０≦ｔ≦ｎ−２であり、ｔの初期値は０である。ステップＳＴ２−１１〜ＳＴ２−１４は、変数ｔを０からｎ−２まで変えて繰り返し実行される。
【０１２３】
分散情報生成部２４は、配列Ｘ［ｔ］＝１であるか否かを判定し（ＳＴ２−１１）、否の場合にはステップ２−１３に進み、ステップＳＴ２−１１の判定結果がＸ［ｔ］＝１である場合には、変数ｔをＤ（ｘ）の分散部分データの列番号ｉとして選択した後（ＳＴ２−１２）、ステップＳＴ２−１３に進む。
【０１２４】
続いて、分散情報生成部２４は、配列Ｙ［ｔ］＝１であるか否かを判定し（ＳＴ２−１３）、否の場合には処理を終了し、ステップＳＴ２−１３の判定結果がＹ［ｔ］＝１である場合には、変数ｔをＤ（ｙ）の分散部分データの列番号ｉとして選択する（ＳＴ２−１４）。しかる後、分散情報生成部２４は、ステップＳＴ２−１２，ＳＴ２−１４により選択した分散部分データの列番号ｉに基づいて、分散部分データを示す番号（ｘ，ｉ）及び（ｙ，ｉ）を制御部２３に送出する。
【０１２５】
次に、上述した選択アルゴリズムについて補足的に説明する。
【０１２６】
この選択アルゴリズムにおいては、追加する分散情報Ｄ（ｚ）の分散部分データＤ（ｚ，ｉ）毎に、この分散部分データＤ（ｚ，ｉ）に含める部分秘密情報Ｋ（＊）を含む既存の分散部分データＤ（ｘ，ｉ）又はＤ（ｙ，ｉ）を探索する。
【０１２７】
例えば、ｘ＝１の場合、既存の分散部分データＤ（１，ｉ）は、それぞれ次に示す部分秘密情報Ｋ（＊）をもっている。
【０１２８】
Ｄ（１，０）：Ｋ（１）、
Ｄ（１，１）：Ｋ（０）、
Ｄ（１，２）：Ｋ（４）、
Ｄ（１，３）：Ｋ（３）
同様に、ｙ＝３の場合、既存の分散部分データＤ（３，ｉ）は、それぞれ次に示す部分秘密情報Ｋ（＊）をもっている。
【０１２９】
Ｄ（３，０）：Ｋ（３）、
Ｄ（３，１）：Ｋ（２）、
Ｄ（３，２）：Ｋ（１）、
Ｄ（３，３）：Ｋ（０）
ここで、ｘ，ｙを一般化してｊで表すと、既存の分散部分データＤ（ｊ，ｉ）のｉが１ずつ増加するに従い、含まれる部分秘密情報Ｋ（＊）の＊が１ずつ減るといった対応関係があることが分かる。また、部分秘密情報Ｋ（２）を含むＤ（ｘ，ｉ）は存在しないことが分かる。
【０１３０】
また、分散部分データＤ（ｊ，ｉ）内の部分秘密情報Ｋ（＊）は、Ｋ（ｊ−ｉ）で表される。すなわち、部分秘密情報Ｋ（＊）は、Ｋ（［ｊ−ｉ］ｍｏｄ ５）である。
【０１３１】
従って、追加する分散部分データＤ（ｚ，ｉ）がＤ（４，０）の場合、Ｄ（４，０）に含まれる部分秘密情報Ｋ（＊）は、Ｋ（ｚ−ｉ）＝Ｋ（４）で表される。この部分秘密情報Ｋ（４）を含む分散部分データＤ（ｊ，ｉ）であるＤ（ｘ，ｘ−ｉ）又はＤ（ｙ，ｙ−ｉ）をステップＳＴ２−２〜ＳＴ２−１０で探索する。
【０１３２】
このとき、ステップＳＴ２−３の最初の条件分岐「ｈ＋ｄ＝ｎ−１」においては、必要な部分秘密情報Ｋ（＊）を含むＤ（ｘ，ｈ＋ｄ）（＝Ｄ（ｘ，ｉ＋ｄ））がＤ（ｘ）の範囲外（＝Ｄ（ｘ，ｎ−１））か否かを判定するため、「ｈ＋ｄ＝ｎ−１」が成立するか否かを判定する。判定結果が範囲外を示す場合（ＳＴ２−３；ＹＥＳ）にはステップＳＴ２−７に移行して、必要な部分秘密情報Ｋ（＊）を含む分散部分データをＤ（ｙ）から探索する。
【０１３３】
例えば図８に示すように、追加する分散部分データＤ（ｚ，ｉ）がＤ（４，２）の場合、Ｄ（４，２）に含まれる部分秘密情報Ｋ（ｚ−ｉ）＝Ｋ（２）については、前述した通り、Ｋ（２）を含む分散部分データＤ（ｘ，ｉ）が存在しない。このため、Ｋ（２）を含む分散部分データＤ（ｘ，ｉ＋ｄ）＝Ｄ（１，４）の場合には、範囲外と判定される。範囲外を示す判定結果は、存在するＤ（ｘ，ｉ）の範囲がＤ（１，０）〜Ｄ（１，３）であり、Ｄ（１，４）が存在しないことに対応している。換言すると、存在するＤ（ｘ，ｉ）を示す番号ｉの範囲が０≦ｉ≦ｎ−２であり、ｉ＝ｎ−１が成立しないことに対応している。
【０１３４】
次に、ステップＳＴ２−６の最後の条件分岐「ｚ−ｉ＝ｘ−ｈ」においては、追加する分散部分データＤ（ｚ，ｉ）に含まれる部分秘密情報Ｋ（ｚ−ｉ）に関し、Ｋ（ｚ−ｉ）となるＫ（ｘ−ｉ）を含むＤ（ｘ，ｉ）があるか否かを判定する。なお、Ｋ（ｊ−ｉ）＝Ｋ（ｚ−ｉ）＝Ｋ（ｘ−ｉ）＝Ｋ（ｙ−ｉ）の関係がある。
【０１３５】
同様に、ステップＳＴ２−１０の最後の条件分岐「ｚ−ｉ＝ｙ−ｈ」においては、追加する分散部分データＤ（ｚ，ｉ）に含まれる部分秘密情報Ｋ（ｚ−ｉ）に関し、Ｋ（ｚ−ｉ）となるＫ（ｙ−ｉ）を含むＤ（ｙ，ｉ）があるか否かを判定する。
【０１３６】
換言すると、ステップＳＴ２−３の最初の条件分岐「ｈ＋ｄ＝ｎ−１」により、追加するＤ（ｚ，ｉ）毎に、必要な部分秘密情報Ｋ（ｚ−ｉ）がＤ（ｘ）にあるか無いかを判定し、Ｄ（ｘ）にある場合、ステップＳＴ２−３〜ＳＴ２−６のループ処理が実行される。そして、ステップＳＴ２−６の最後の条件分岐「ｚ−ｉ＝ｘ−ｈ」においては、必要な部分秘密情報Ｋ（ｚ−ｉ）を含む分散部分データＤ（ｘ，ｉ）を探索したか否かを判定し、探索した場合にはステップＳＴ２−１１に進んでいる。また、ステップＳＴ２−３の判定により、必要な部分秘密情報Ｋ（ｚ−ｉ）がＤ（ｘ）に無い場合、ステップＳＴ２−７〜ＳＴ２−１０のループ処理が実行される。そして、ステップＳＴ２−１０の最後の条件分岐「ｚ−ｉ＝ｙ−ｈ」においては、必要な部分秘密情報Ｋ（ｚ−ｉ）を含む分散部分データＤ（ｙ，ｉ）を探索したか否かを判定し、探索した場合にはステップＳＴ２−１１に進んでいる。
【０１３７】
一方、ステップＳＴ２−２又はＳＴ２−７において、初期化後に最初にフラグを立てた配列Ｘ［ｉ］又はＹ［ｉ］は、分散部分データＤ（ｘ，ｉ）又はＤ（ｙ，ｉ）を示し、この分散部分データＤ（ｘ，ｉ）又はＤ（ｙ，ｉ）は、追加する乱数成分Ｒ（ｉ）と、不要な分散部分データＫ（ｚ−ｉ＋ｄ）を打ち消す分散部分データＫ（ｘ−ｉ）又はＫ（ｙ−ｉ）とを含んでいる。すなわち、以下の通りである。
【０１３８】
Ｘ［ｉ］；Ｄ（ｘ，ｉ）＝Ｒ（ｉ）(＋)Ｋ（ｘ−ｉ）、
Ｙ［ｉ］；Ｄ（ｙ，ｉ）＝Ｒ（ｉ）(＋)Ｋ（ｙ−ｉ）
なお、不要な乱数成分Ｒ（ｉ＋ｄ）や不要な部分秘密情報Ｋ（ｚ−ｉ＋ｄ）は、それぞれ打ち消される。すなわち、不要な乱数成分Ｒ（ｉ＋ｄ）は、ステップＳＴ２−４又はＳＴ２−８に基づき、同一番号ｔの分散部分データＤ（ｘ，ｔ），Ｄ（ｙ，ｔ）を選択することにより、互いに打ち消される。例えば、Ｄ（４，０）の計算に必要なＤ（１，０），Ｄ（１，２），Ｄ（３，２）の場合、不要な乱数成分Ｒ（２）は、ステップＳＴ２−４又はＳＴ２−８に基づき、ステップＳＴ２−１１〜ＳＴ２−１４により、同一番号ｔ＝２の分散部分データＤ（ｘ，２），Ｄ（ｙ，２）を選択することにより、互いに打ち消される。
【０１３９】
また、不要な部分秘密情報Ｋ（ｚ−ｉ＋ｄ）は、必要な部分秘密情報Ｋ（＊）（＝Ｋ（ｚ−ｉ））を含む分散部分データＤ（ｘ，ｘ−＊）又はＤ（ｙ，ｙ−＊）に対して同一番号（ｊ−＊）の分散部分データＤ（ｙ，ｙ−＊）又はＤ（ｘ，ｘ−＊）に含まれる部分秘密情報Ｋ（＊＋ｄ）と同一の部分秘密情報Ｋ（ｘ−＊）又はＫ（ｙ−＊）を含む他の分散部分データＤ（ｘ，ｉ）又はＤ（ｙ，ｉ）をステップＳＴ２−２又はＳＴ２−７に基づき、ステップＳＴ２−１１，ＳＴ２−１２又はステップＳＴ２−１３，ＳＴ２−１４で選択することにより、互いに打ち消される。
【０１４０】
例えば、Ｄ（４，０）の計算に必要なＤ（１，０），Ｄ（１，２），Ｄ（３，２）の場合、不要な部分秘密情報Ｋ（ｚ−ｉ＋ｄ）＝Ｋ（１）は、必要な部分秘密情報Ｋ（ｚ−ｉ）＝Ｋ（４）を含む分散部分データＤ（ｘ，ｘ−＊）＝Ｄ（１，２）に対して同一番号（２）の分散部分データＤ（ｙ，２）＝Ｄ（３，２）に含まれる部分秘密情報Ｋ（＊＋ｄ）＝Ｋ（１）と同一の部分秘密情報Ｋ（１）を含む他の分散部分データＤ（ｘ，ｉ）＝Ｄ（１，０）をステップＳＴ２−２，ＳＴ２−１１，ＳＴ２−１２で選択することにより、互いに打ち消される。なお、この例ではｚ＝４、ｉ＝０、ｄ＝２、＊＝４、ｘ＝１、ｙ＝３であり、演算はｍｏｄ ５の下で実行される。
【０１４１】
従って、図４に示す選択アルゴリズムは、不要なＲ（ｉ＋ｄ），Ｋ（ｚ−ｉ＋ｄ）をそれぞれ打ち消しながら、必要な部分秘密情報Ｋ（ｚ−ｉ）を追加するためのループ処理と見なすこともできる。
【０１４２】
上述したように本実施形態によれば、分散情報追加装置２０が、分散情報Ｄ（ｘ），Ｄ（ｙ）を受信せず、必要最小限の各データを受信して分散部分データＤ（ｚ，ｉ）を作成し、且つＤ（ｚ，ｉ）の作成毎に、当該受信した各データを消去する構成により、元の秘密情報Ｋを復元することなく、かつ元の秘密情報Ｋを復元可能な分散情報Ｄ（１），Ｄ（３）を管理者（分散情報追加装置）が保持せずに、新たに分散情報Ｄ（４）を追加することができる。
【０１４３】
換言すると、ｋ−１次多項式を使わずにビット単位の排他的論理和演算のみで秘密情報を分散・復元する秘密分散システムにおいて、新たに分散情報管理者（保管サーバ装置１０4）を追加する場合に元の秘密情報を復元可能な分散情報を保持せずに、新たに追加する分散情報を生成し、分散情報管理者に配布することができる。これにより、追加処理における秘密情報の漏洩リスクを軽減でき、セキュリティ性を向上させることができる。
【０１４４】
また、本実施形態によれば、既存の分散情報から新たな分散情報を作成するためのアルゴリズムが明確になっているので、容易に実施することができる。
【０１４５】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１４６】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１４７】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０１４８】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１４９】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１５０】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１５１】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１５２】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０１５３】
【図１】本発明の第１の実施形態に係る秘密分散システムの構成を示す模式図である。
【図２】同実施形態における分散情報の構成例を示す模式図である。
【図３】同実施形態における動作を説明するためのフローチャートである。
【図４】同実施形態における動作を詳細に説明するためのフローチャートである。
【図５】同実施形態における分散情報を追加した場合の一例を示す模式図である。
【図６】同実施形態における動作を説明するための模式図である。
【図７】同実施形態における動作を説明するための模式図である。
【図８】同実施形態における動作を説明するための模式図である。
【図９】同実施形態における動作を説明するための模式図である。
【符号の説明】
【０１５４】
１０0，１０1，…，１０n-1…保存サーバ装置、１１0，１１1，１１n-1…保存部、１２0，１２1，１２n-1…通信部、１３0，１３1，１３n-1…制御部、１４0，１４1，１４n-1…ＸＯＲ演算部、２０…分散情報追加装置、２１…保存部、２２…入力部、２３…制御部、２４…分散情報生成部、２５…通信部、２６…出力部、ＮＷ…ネットワーク。
【図１】
0004966232.tif 000002
【図２】
0004966232.tif 000003
【図３】
0004966232.tif 000004
【図４】
0004966232.tif 000005
【図５】
0004966232.tif 000006
【図６】
0004966232.tif 000007
【図７】
0004966232.tif 000008
【図８】
0004966232.tif 000009
【図９】
0004966232.tif 000010