(57)【特許請求の範囲】
【請求項１】
秘密情報をアクセス構造にしたがって分散符号化する秘密情報分散手段と、
乱数情報をアクセス構造にしたがって分散符号化する乱数情報分散手段と、
前記秘密情報と前記乱数情報に対応するチェック用データを生成するチェック用データ生成手段と、を有する分散情報生成装置であって、
前記チェック用データ生成手段は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、関数 h (h: E×S→A)と、関数 f (f: R×[1,n]→A)に対して、h(e_i,s)=f(r,i)を満たすn個の集合 E の元e_1,e_2,...,e_nをランダムに選ぶことを特徴とし、
前記 f は、任意の相異なる k-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1以上 n以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の Aの元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記h は、 任意の相異なる S の元 s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする分散情報生成装置。
【請求項２】
前記分散符号化された秘密情報と、前記分散符号化された乱数情報と、チェック用データとをそれぞれ格納する記憶手段を有することを特徴とする請求項１記載の分散情報生成装置。
【請求項３】
前記チェック用データ生成手段は、要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-2] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N*s_N で定義されることを特徴とする請求項１又は２記載の分散情報生成装置。
【請求項４】
前記秘密情報分散手段は、秘密分散法のアクセス構造として、(k,n)しきい値法のアクセス構造を用いることを特徴とする請求項１から３いずれか１項記載の分散情報生成装置。
【請求項５】
前記秘密情報分散手段は、秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい値法を用いることを特徴とする請求項１から３のいずれか１項記載の分散情報生成装置。
【請求項６】
秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データと、を格納する記憶手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元手段と、
前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報を出力し、対応していない場合は不正を示す信号を出力する不正検知手段と、を有する復元装置であって、
前記不正検知手段は、
集合Sの元である秘密情報sと、
乱数情報集合Rの元である乱数情報rと、
秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、
関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j)を満たすとき、前記読み出されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,...,f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、rを振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦εを満足することを特徴とする復元装置。
【請求項７】
要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-2] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N*s_N で定義されることを特徴とする請求項６記載の復元装置。
【請求項８】
前記秘密分散法のアクセス構造として、(k,n)しきい値法のアクセス構造を用いることを特徴とする請求項６又は７記載の復元装置。
【請求項９】
前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい値法を用いることを特徴とする請求項６又は７記載の復元装置。
【請求項１０】
秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データと、を格納する記憶手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元手段と、
前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報及び復元した乱数情報を出力し、対応していない場合は不正を示す信号を出力する不正検知手段と、を有することを特徴とする復元装置であり、
前記不正検知手段は、
集合Sの元である秘密情報sと、
乱数情報集合Rの元である乱数情報rと、
秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]を入力とし、
関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j)を満たすとき、前記読み出されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、 Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、 前記 h は、 任意の相異なる S の元 s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする復元装置。
【請求項１１】
要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、 f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-2] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N*s_N で定義されることを特徴とする請求項１０記載の復元装置。
【請求項１２】
前記秘密分散法のアクセス構造として、(k,n)しきい値法のアクセス構造を用いることを特徴とする請求項１０又は１１記載の復元装置。
【請求項１３】
前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい値法を用いることを特徴とした請求項１０又は１１記載の復元装置。
【請求項１４】
秘密情報と、乱数情報と、チェック用データと、を取得し、前記チェック用データが前記秘密情報と前記乱数情報に対応している場合は、秘密情報の非改竄性が検証されたことを示す信号を出力し、対応していない場合は不正を示す信号を出力することを特徴とする検証装置であって、
集合Sの元である秘密情報sと、
乱数情報集合Rの元である乱数情報rと、
秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、
関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j)を満たすとき、チェック用データが前記秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数i_1,i_2, ...,i_[k-1] と、任意の相異なる k-1 個の Aの元 a_1,a_2,...,a_[k-1]に対して、Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする検証装置。
【請求項１５】
要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-2] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N*s_N で定義されることを特徴とする請求項１４記載の検証装置。
【請求項１６】
前記秘密分散法のアクセス構造として、(k,n)しきい値法のアクセス構造を用いることを特徴とする請求項１４又は１５記載の検証装置。
【請求項１７】
前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい値法を用いることを特徴とする請求項１４又は１５記載の検証装置。
【請求項１８】
請求項１記載の分散情報生成装置と、
請求項６記載の復元装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されている、
ことを特徴とする秘密情報分散システム。
【請求項１９】
請求項３記載の分散情報生成装置と、
請求項７記載の復元装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されている、
ことを特徴とする秘密情報分散システム。
【請求項２０】
請求項４記載の分散情報生成装置と、
請求項８記載の復元装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されている、
ことを特徴とする秘密情報分散システム。
【請求項２１】
請求項５記載の分散情報生成装置と、
請求項９記載の復元装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されている、
ことを特徴とする秘密情報分散システム。
【請求項２２】
請求項１記載の分散情報生成装置と、
請求項１０記載の復元装置と、
請求項１４記載の検証装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されており、
前記検証装置は、前記復元装置の秘密情報復元手段によって復元された秘密情報と、前記復元装置の乱数情報復元手段によって復元された乱数情報と、前記復元装置の前記記憶手段に格納されたチェック用データと、を取得する、
ことを特徴とする秘密情報分散システム。
【請求項２３】
請求項３記載の分散情報生成装置と、
請求項１１記載の復元装置と、
請求項１５記載の検証装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されており、
前記検証装置は、前記復元装置の秘密情報復元手段によって復元された秘密情報と、前記復元装置の乱数情報復元手段によって復元された乱数情報と、前記復元装置の前記記憶手段に格納されたチェック用データと、を取得する、
ことを特徴とする秘密情報分散システム。
【請求項２４】
請求項４記載の分散情報生成装置と、
請求項１２記載の復元装置と、
請求項１６記載の検証装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されており、
前記検証装置は、前記復元装置の秘密情報復元手段によって復元された秘密情報と、前記復元装置の乱数情報復元手段によって復元された乱数情報と、前記復元装置の前記記憶手段に格納されたチェック用データと、を取得する、
ことを特徴とする秘密情報分散システム。
【請求項２５】
請求項５記載の分散情報生成装置と、
請求項１３記載の復元装置と、
請求項１７記載の検証装置と、
を有し、
前記復元装置の記憶手段には、前記分散情報生成装置の秘密情報分散手段によって分散符号化された秘密情報と、前記分散情報生成装置の乱数情報分散手段によって分散符号化された乱数情報と、前記分散情報生成装置のチェック用データ生成手段によって、生成されたチェック用データと、が格納されており、
前記検証装置は、前記復元装置の秘密情報復元手段によって復元された秘密情報と、前記復元装置の乱数情報復元手段によって復元された乱数情報と、前記復元装置の前記記憶手段に格納されたチェック用データと、を取得する、
ことを特徴とする秘密情報分散システム。
【請求項２６】
秘密情報をアクセス構造にしたがって分散符号化する秘密情報分散手段と、
乱数情報をアクセス構造にしたがって分散符号化する乱数情報分散手段と、
前記秘密情報と前記乱数情報に対応するチェック用データを生成するチェック用データ生成手段と、してコンピュータを機能させる分散情報生成プログラムであって、
前記チェック用データ生成手段は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、関数 h (h: E×S→A)と、関数 f (f: R×[1,n]→A)に対して、h(e_i,s)=f(r,i)を満たすn個の集合 E の元e_1,e_2,...,e_nをランダムに選ぶことを特徴とし、
前記 f は、任意の相異なる k-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1以上 n以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の Aの元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記h は、 任意の相異なる S の元 s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする分散情報生成プログラム。
【請求項２７】
秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データと、を格納する記憶手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元手段と、
前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元手段と、
前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報を出力し、対応していない場合は不正を示す信号を出力する不正検知手段と、してコンピュータを機能させる復元プログラムであって、
前記不正検知手段は、
集合Sの元である秘密情報sと、
乱数情報集合Rの元である乱数情報rと、
秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、
関数 h (h: E×S→A)と、 関数 f (f: R×[1,n]→A)に対して、 h(e_[i_j],s)=f(r,i_j) を満たすとき、前記読み出されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,..., f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s,s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする復元プログラム。
【請求項２８】
秘密情報と、乱数情報と、チェック用データと、を取得し、前記チェック用データが前記秘密情報と前記乱数情報に対応している場合は、秘密情報の非改竄性が検証されたことを示す信号を出力し、対応していない場合は不正を示す信号を出力する手段として、コンピュータを機能させる検証プログラムであって、
前記手段は、
集合Sの元である秘密情報sと、
乱数情報集合Rの元である乱数情報rと、
秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、
関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j)を満たすとき、チェック用データが前記秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数i_1,i_2, ...,i_[k-1] と、任意の相異なる k-1 個の Aの元 a_1,a_2,...,a_[k-1]に対して、Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s" と任意の A の元 a, a" に対して |{e | h(e,s)=a, h(e,s")=a"}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする検証プログラム。
【請求項２９】
請求項２６から２８のいずれか１項記載のプログラムの処理を記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は分散情報生成装置、復元装置、検証装置、秘密情報分散システム、プログラム及び記録媒体に関し、特に秘密情報を分散して安全に保管する分散情報生成装置、復元装置、検証装置、秘密情報分散システム、プログラム及び記録媒体に関する。
【背景技術】
【０００２】  秘密情報（例えば暗号化に用いる秘密鍵）を保管する場合、紛失や破壊の脅威と盗難の脅威とがある。前者の脅威に対しては秘密情報のコピーを作成すれば有効であるが、コピーを作成することで後者の盗難に対する脅威が増してしまう。このような問題を解決するための情報セキュリティ技術の1つとして秘密分散法を用いて暗号化を行う方法が知られている（特許文献１、特許文献２参照）。【０００３】  秘密分散法は、秘密複数の分散情報に分散し、予め定められた分散情報を集めると秘密を一意に復元可能であるが、それ以外の分散情報を集めても秘密に関する情報を全く漏らさないという特徴を持つ。本明細書では、分散情報の数を n とし、各分散情報を 1 からn で識別する。秘密分散法では、秘密を復元できる分散情報の集合をアクセス構造という分散情報の集合族 Γ で定義することが可能である。アクセス構造 Γ は、秘密を復元できる最小の分散情報の識別子の集合を要素として持つ集合族であり、アクセス構造Γを持つ秘密分散法において、分散情報の集合 ｗ が秘密を復元可能であるとは、ｗ に対応する分散情報の識別子集合 Ｗ に対して、V∈Γ かつ V⊆W となるような Ｖ が存在することを意味する。また、前記のような性質を満たす分散情報識別子の集合ＷをΓのアクセス集合と定義する。【０００４】  例えば、(k,n)閾値法と呼ばれる、（１）n個の分散情報のうち、k個未満の分散情報では秘密に関する情報は全く得られない、（２）k個以上の分散情報からは秘密は一意に復元されるという特徴を持つ秘密分散法に置けるアクセス構造 Γ は Γ={V | V⊆[1,...,n] かつ V の要素数は k} という集合族によって定義される。以下、秘密分散法において、秘密情報を復元する際の問題点について考える。【０００５】  秘密情報を復元する場合、分散情報を保持する他のものから分散情報を集める必要がある。このとき、分散情報の被要求側が配付された値を改竄することなく復元者へ渡すとは限らない。なお、ここで言う「改竄」とは、意図的なものだけでなく、装置故障や単なるミス等の意図しない変更も含むものとする。【０００６】  改竄された分散情報を用いて秘密情報を復元すると、その値は秘密情報と異なる値になってしまうことがある。そのため、秘密分散法には復元に用いる分散情報に改竄された値が存在することを高い確率で検知できる手法が望まれる。また、運用形態によって分散情報が選択される手段は様々であり、分散情報がどのような確率分布にしたがって選択されても改竄された値の検知率が高いことが望まれる。これらの問題を解決するための一つの技術として下記の非特許文献２〜３、非特許文献５〜７の方法が知られている。【０００７】  非特許文献２には、秘密情報がどのような確率分布にしたがって選択されても、 n-1個の分散情報を参照し、そのうち高々k-1個の分散情報に対して改竄を行う不正を (1-ε)の確率で検知できる(k,n)しきい値法について記載されている。非特許文献１に記載された方法では、秘密情報を要素数sの集合とするとき、分散情報は要素数 ((s-1)(k-1)/ε+k)^2 の集合となる。【０００８】  非特許文献３には、秘密情報が一様な確率分布にしたがって選択されることを条件にk- 1個の分散情報を参照し、そのうち高々k-1個の分散情報の改竄を行う不正を(1- ε)の確率で検知できる(k,n)しきい値法について記載されている。非特許文献３に記載された方法では、秘密情報を要素数sの集合とするとき、分散情報は要素数 (1+(s-1)/ε)の集合になる。非特許文献４には、(n,n)しきい値型の秘密分散法が記載されている。【０００９】  非特許文献５には、秘密情報がどのような確率分布にしたがって選択されても、 k-1個の分散情報を参照し、そのうち高々k-1個の分散情報に対して改竄を行う不正を (1-ε)の確率で検知できる秘密分散法について記載されている。非特許文献５に記載された方法では、秘密情報を要素数sの集合とするとき、分散情報は要素数 s/(ε^2) の集合となる。【００１０】  非特許文献６には、分散情報がどのような確率分布にしたがって選択されても、 n-1個の分散情報を参照し、そのうち高々k-1個の分散情報に対して改竄を行う不正を (1-ε)の確率で検知できる(k,n)しきい値法について記載されている。非特許文献６に記載された方法では、秘密情報を要素数sの集合とし、s が s≦1/εとなる時、 s^2/εの集合となる。【００１１】  非特許文献７には、分散情報がどのような確率分布にしたがって選択されても、 n-1個の分散情報を参照し、そのうち高々k-1個の分散情報に対して改竄を行う不正を (1-ε)の確率で検知できる(k,n)しきい値法について記載されている。非特許文献７に記載された方法では、秘密情報を要素数sの集合とし、s が s≦1/εとなる時、およそ s*(log s)^[k+1]/εの集合となる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００５−３４６６５９号公報
【特許文献２】特開２００６−３１１３８３号公報
【非特許文献】
【００１３】
【非特許文献１】Adi Shamir, "How to share a secret", Comm. ACM, 22(11), 612-613(1979)
【非特許文献２】Martin Tompa, Heather Woll, "How to Share a Secret with Cheaters", Journal of Cryptology, vol.1, pages 133-138, 1988
【非特許文献３】Wakaha Ogata, Kaoru Kurosawa, Douglas R. Stinson, "Optimum Secret Sharing Scheme Secure Against Cheating", SIAM Journal on Discrete Mathematics, vol.20, no1, pages 79-95, 2006
【非特許文献４】J. Benaloh and J. Leichter, Generalized secret sharing and monotone functions, in "Advances in Cryptology -- CRYPTO '88", S. Goldwasser,ed., Lecture Notes in Computer Science 403, pages 27-35, 1989
【非特許文献５】Satoshi Obana and Toshinori Araki, "Almost Optimum Secret Sharing Schemes Secure Against Cheating for Arbitrary Secret Distribution",Advances in Cryptology -- Asiacrypt 2006, Lecture Notes in Computer Science 4284, pp. 364--379, 2006
【非特許文献６】Toshinori Araki, "Efficient (k,n) Threshold Secret Sharing Schemes Secure Against Cheating from n-1 Cheaters", Proceedings of ACISP 2007, Lecture Notes in Computer Science 4586, pp. 133--142, 2007
【非特許文献７】尾花 賢, "n-1人の不正者に対して安全な秘密分散法の一般的構成法", 2008年暗号と情報セキュリティシンポジウム, SCIS2008概要集, 2008
【発明の概要】
【発明が解決しようとする課題】
【００１４】  上述の技術で、秘密情報がどのような確率で選択されていも、n-1個の分散情報を参照し、そのうち高々k-1個の分散情報を改竄する不正に対して安全な技術は、非特許文献３、６、および７だけである。しかしながら、非特許文献３および非特許文献６は(k,n )しきい値法についてしか方式を提案しておらず、しきい値法以外の秘密分散法で、n-1個の分散情報を参照して、そのうちの一つまたは複数の分散情報を改竄する不正に対して安全な秘密分散法は提案されていない。【００１５】  非特許文献７は、任意の秘密分散法に適用可能な方式である。非特許文献７ではチェック用のデータと、復元される秘密から計算される関数の値が所望のものになるかによって、分散情報の改竄検知を行う方式であるが、方式の安全性が、改竄検知に利用する関数の構造に強く結び付いており、そのため適用できるハッシュ関数が一種類しかないという問題を有している。【００１６】  本発明はこのような状況に鑑みてなされたものであり、秘密情報がどのような分布に従って選ばれても不正の検知が可能であり、かつ分散情報数nに対し、n-1個の分散情報を参照し、そのうちの一つまたは複数の分散情報を改竄する不正に対して安全な秘密分散を行うことを目的とする。
【課題を解決するための手段】
【００１７】  本発明に係る第１の分散情報生成装置は、秘密情報をアクセス構造にしたがって分散符号化する秘密情報分散手段と、乱数情報をアクセス構造にしたがって分散符号化する乱数情報分散手段と、前記秘密情報と前記乱数情報に対応するチェック用データを生成するチェック用データ生成手段と、を有する分散情報生成装置であって、前記チェック用データ生成手段は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、関数 h (h: E×S→A)と、関数 f (f: R×[1,n]→A)に対して、h(e_i,s)=f(r,i)を満たすn個の集合 E の元e_1,e_2,...,e_nをランダムに選ぶことを特徴とし、前記 f は、任意の相異なる k-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1以上 n以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、 Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする分散情報生成装置である。【００１８】  本発明に係る第２の分散情報生成装置は、上記第１の分散情報生成装置において、前記分散符号化された秘密情報と、前記分散符号化された乱数情報と、チェック用データとをそれぞれ格納する記憶手段を有することを特徴とする。【００１９】  本発明に係る第３の分散情報生成装置は、上記第１又は第２の分散情報生成装置において、前記チェック用データ生成手段は、要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-1] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N+s_N で定義されることを特徴とする。【００２０】  本発明に係る第４の分散情報生成装置は、上記第１から３のいずれか１項記載の分散情報生成装置において、前記秘密情報分散手段は、秘密分散法のアクセス構造として、(k,n)しきい法のアクセス構造を用いることを特徴とする。【００２１】  本発明に係る第４の分散情報生成装置は、上記第１から３のいずれか１項記載の分散情報生成装置において、前記秘密情報分散手段は、前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい法を用いることを特徴とする。【００２２】  本発明に係る第１の復元装置は、秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データと、を格納する記憶手段と、前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元手段と、前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元手段と、前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報を出力し、対応していない場合は不正を示す信号を出力する不正検知手段と、を有する復元装置であって、前記不正検知手段は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j) を満たすとき、前記復元されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,...,f(r,i_[k-1])] =1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする復元装置である。【００２３】  本発明に係る第２の復元装置は、上記第１の復元装置において、前記チェック用データ生成手段は、要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-1] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N+s_N で定義されることを特徴とする。【００２４】  本発明に係る第３の復元装置は、上記第１又は２の復元装置において、前記秘密情報分散手段は、秘密分散法のアクセス構造として、(k,n)しきい法のアクセス構造を用いることを特徴とする。【００２５】  本発明に係る第４の復元装置は、上記第１又は２の復元装置において、前記秘密情報分散手段は、前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい法を用いることを特徴とする。【００２６】  本発明に係る第５の復元装置は、秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データデータと、を格納する記憶手段と、前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元手段と、前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元手段と、前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報及び復元した乱数を出力し、対応していない場合は不正を示す信号を出力する不正検知手段と、を有することを特徴とする復元装置であり、前記不正検知手段は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]を入力とし、関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j) を満たすとき、前記復元されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個 （なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、 Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |[e | h(e,s)=a, h(e,s')=a']|/|[e | h(e,s)=a]|≦ε を満足することを特徴とする復元装置である。【００２７】  本発明に係る第１の検証装置は、秘密情報と、乱数情報と、チェック用データと、を取得し、前記チェック用データが前記秘密情報と前記乱数情報に対応している場合は、秘密情報の非改竄性が検証されたことを示す信号を出力し、対応していない場合は不正を示す信号を出力することを特徴とする検証装置であって、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j) を満たすとき、チェック用データが前記秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数i_1,i_2, ...,i_[k-1] と、任意の相異なる k-1 個の A の元 a_1,a_2,...,a_[k-1]に対して、 Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、 前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする検証装置である。【００２８】  本発明に係る第２の検証装置は、上記第１の検証装置において、前記チェック用データ生成手段は、要素数p^Nの体の元である秘密情報 s=(s_1,s_2,...,s_N)と、要素数p^[k-1]の体の元である乱数情報 r=(r_1,r_2,...,r_[k-1])とに対して、関数 f が、f(r,i) = r_1 + r_2 * i + r_3 * i^2 + ... + r_[k-1] * i^[k-1] であり、関数 h が、 h((e_0,e_1),s) = e_0 + e_1*s_1 + e_1^2*s_2 + ... + e_1^N+s_N で定義されることを特徴とする。【００２９】  本発明に係る第３の検証装置は、上記第１又は２の検証装置において、前記秘密情報分散手段は、秘密分散法のアクセス構造として、(k,n)しきい法のアクセス構造を用いることを特徴とする。【００３０】  本発明に係る第３の検証装置は、上記第１又は２の検証装置において、前記秘密情報分散手段は、前記秘密分散法として、秘密の復元を全分散情報の和を取ることによって行う(n,n)しきい法を用いることを特徴とする。【００３１】  本発明に係る第１の秘密情報分散システムは、上記第１の分散情報生成装置と、上記第１の復元装置と、を有することを特徴とする秘密情報分散システムである。【００３２】  本発明に係る第２の秘密情報分散システムは、上記第３の分散情報生成装置と、上記第２の復元装置と、を有することを特徴とする秘密情報分散システムである。【００３３】  本発明に係る第３の秘密情報分散シス��ムは、上記第４の分散情報生成装置と、上記第３の復元装置と、を有することを特徴とする秘密情報分散システムである。【００３４】  本発明に係る第４の秘密情報分散システムは、上記第５の分散情報生成装置と、上記第４の復元装置と、を有することを特徴とする秘密情報分散システムである。【００３５】  本発明に係る第５の秘密情報分散システムは、上記第１の分散情報生成装置と、上記第１の復元装置と、上記第１の検証装置と、を有することを特徴とする秘密情報分散システムである。【００３６】  本発明に係る第６の秘密情報分散システムは、上記第３の分散情報生成装置と、上記第２の復元装置と、上記第２の検証装置と、を有することを特徴とする秘密情報分散システムである。【００３７】  本発明に係る第７の秘密情報分散システムは、上記第４の分散情報生成装置と、上記第３の復元装置と、上記第３の検証装置と、を有することを特徴とする秘密情報分散システムである。【００３８】  本発明に係る第８の秘密情報分散システムは、上記第５の分散情報生成装置と、上記第４の復元装置と、上記第４の検証装置と、を有することを特徴とする秘密情報分散システムである。【００３９】  本発明に係る分散情報生成プログラムは、秘密情報をアクセス構造にしたがって分散符号化する秘密情報分散処理と、乱数情報をアクセス構造にしたがって分散符号化する乱数情報分散処理と、前記秘密情報と前記乱数情報に対応するチェック用データを生成するチェック用データ生成処理と、をコンピュータに実行させる分散情報生成プログラムであって、前記チェック用データ生成処理は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、関数 h (h: E×S→A)と、関数 f (f: R×[1,n]→A)に対して、h(e_i,s)=f(r,i)を満たすn個の集合 E の元e_1,e_2,...,e_nをランダムに選ぶことを特徴とし、前記 f は、任意の相異なる k-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1以上 n以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする分散情報生成プログラムである。【００４０】  本発明に係る復元プログラムは、秘密分散法のアクセス構造にしたがって分散符号化された秘密情報と、前記秘密分散法のアクセス構造にしたがって分散符号化された乱数情報と、前記秘密情報と前記乱数情報に対応して生成されたチェック用データと、を格納する記憶処理と、前記アクセス構造に対応する前記記憶手段から分散符号化された秘密情報を読み出し、前記アクセス構造にしたがって前記秘密情報を復元する秘密情報復元処理と、前記アクセス構造に対応する前記記憶手段から分散符号化された乱数情報を読み出し、前記アクセス構造にしたがって前記乱数情報を復元する乱数情報復元処理と、前記アクセス構造に対応する全ての前記記憶手段からチェック用データを読み出し、読み出された前記チェック用データ全てが前記秘密情報復元手段で復元された秘密情報と前記乱数情報復元手段で復元された乱数情報に対応している場合は復元した秘密情報を出力し、対応していない場合は不正を示す信号を出力する不正検知処理と、をコンピュータに実行させる復元プログラムであって、前記不正検知処理は、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、関数 h (h: E×S→A)と、 関数 f (f: R×[1,n]→A)に対して、 h(e_[i_j],s)=f(r,i_j) を満たすとき、前記復元されたチェック用データが前記秘密情報復元手段で復元された秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数 i_1,i_2,...,i_[k-1] と、任意の相異なる k-1 個の A の元a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)= a_2,...,f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする復元プログラムである。【００４１】  本発明に係る検証プログラムは、秘密情報と、乱数情報と、チェック用データと、を取得し、前記チェック用データが前記秘密情報と前記乱数情報に対応している場合は、秘密情報の非改竄性が検証されたことを示す信号を出力し、対応していない場合は不正を示す信号を出力することを特徴とする検証プログラムであって、集合Sの元である秘密情報sと、乱数情報集合Rの元である乱数情報rと、秘密分散法のアクセス構造に対応するチェック用データe_[i_1],e_[i_2],..., e_[i_m]とを入力とし、関数 h (h: E×S→A)と, 関数 f (f: R×[1,n]→A)に対して、h(e_[i_j],s)=f(r,i_j) を満たすとき、チェック用データが前記秘密情報に対応していると判定することを特徴とし、前記 f は、任意の相異なるk-1 個（なお、kは秘密を復元するのに必要な分散情報の最大数）の 1 以上 n 以下の整数i_1,i_2, ...,i_[k-1] と、任意の相異なる k-1 個の A の元 a_1,a_2,...,a_[k-1]に対して、Pr[f(r,i_1)=a_1, f(r,i_2)=a_2,...,f(r,i_[k-1])]= 1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、前記 h は、 任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足することを特徴とする検証プログラムである。【００４２】  本発明に係る記録媒体は、上記分散情報生成プログラム、復元プログラム及び検証プログラムのいずれかのプログラムの処理を記録したコンピュータ読取り可能な記録媒体である。
【発明の効果】
【００４３】  本発明によれば、秘密情報がどのような分布に従って選ばれても、n-1個の分散情報を参照し、そのうちの一つまたは複数の分散情報を改竄する不正を検知可能であり、かつ任意の秘密分散法にも適用することが出来る。【００４４】  また、復元されたチェック用データが復元された秘密情報に対応しているか否かを判定することで不正の検知が可能であり、チェック用データとして要素数の少ないデータ集合を用いれば分散情報のデータサイズを小さくできる。【００４５】  また、チェック用データを一様にランダムに選ぶことができるため、秘密情報がどのような分布にしたがって選ばれ、n-1個の分散情報が参照された場合でも高い不正の検知率が保証できる。【００４６】  また、チェック用データおよび非改竄性のチェックは、適用する秘密分散法に非依存のものであるため、任意の秘密分散法に適用可能であり、非常に広範なクラスの関数から改竄検知を行える。さらに、非改竄性チェックに用いるチェック式に、チェック用データと復元された秘密の値を入力した結果が、ランダム性の高い値になるよう設定することにより、非特許文献７での問題であった、チェック式を一種類しか選択できないという問題を解決することもできる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態に係る分散情報生成装置の構成ブロック図である。
【図２】本発明の実施形態に係る復元装置の構成ブロック図である。
【図３】本発明の実施形態に係る分散情報生成装置及び復元装置が行う処理を実行する処理装置の構成ブロック図である。
【図４】本発明の実施形態に係る分散情報生成装置の動作処理を示すフローチャートである。
【図５】本発明の実施形態に係る復元装置の動作処理を示すフローチャートである。
【図６】本発明の実施形態に係る検証装置の構成ブロック図である。
【発明を実施するための形態】
【００４８】  以下に、本発明の実施形態について図面を用いて詳細に説明する。なお、以下に述べる実施の形態は、本発明の好適な実施の形態であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。
【００４９】  最初に本明細書で使用する用語について簡単に説明する。  アクセス構造、アクセス集合：アクセス構造とは秘密分散法において秘密情報を復元可能な最小の分散情報の集合を要素としてもつ集合族である。また、アクセス構造 Γに対し、Ｖ∈ΓかつＶ⊆ＷとなるようなＶが存在するような集合ＷをΓのアクセス集合と定義する。アクセス集合 Ｗ に対応する秘密の分散情報を集めると、秘密の復元が可能となる。  秘密情報データ集合Ｓ：保管対象となる秘密情報ｓの集合を指す。  乱数データ集合Ｒ：分散される乱数rの集合を指す。  分散秘密情報データ集合VS_1,VS_2,...,VS_n：秘密情報ｓ∈Ｓを分散符号化したデータ（分散情報）の集合を指す。VS_i は第i番目の分散情報の集合を表している。  乱数分散情報データ集合VR_1,VR_2,...,VR_n：乱数ｒ∈Ｒを分散符号化したデータ（分散情報）の集合を指す。VR_i は第i番目の分散情報の集合を表している。  チェック用データ集合Ｅ：秘密情報ｓ∈Ｓと乱数ｒ∈Ｒに対応して生成したチェック用データの集合を指す。  演算子：本明細書において、+、-、*、^の記号をそれぞれ、和、差、積、冪乗演算子として用いる。
【００５０】  本発明の実施形態に係る秘密情報分散システムは、秘密情報を保管する場合、秘密情報に対応するチェック用データを生成し、秘密情報及びチェック用データをそれぞれ予め定められたアクセス構造にしたがって分散符号化し、それらを記憶装置に格納する。
【００５１】  また、秘密情報を復元する場合、アクセス構造のいずれかの元に対応する複数の記憶装置から分散符号化された秘密情報及び分散符号化されたチェック用データを読み出し、秘密情報及びチェック用データを復元する。そして、復元後のチェック用データが秘密情報に対応したものであるかを判定し、対応している場合は復元した秘密情報が正しいと判断し、対応していない場合は不正（改竄されている）と判断する。
【００５２】  本発明の実施形態に係る秘密情報分散システムは、図１に示すように、分散情報生成装置１００、復元装置２００及び複数の記憶装置３００＿１〜３００＿ｎを有する構成である。記憶装置３００＿１〜３００＿ｎは、分散秘密情報データ集合VS_1〜VS_nの元が格納される分散秘密情報記憶部３０１＿１〜３０１＿ｎと、乱数分散情報データ集合 VR_1〜VS_n の元が格納される乱数分散情報記憶部３０２＿１〜３０２＿ｎと、チェック用データ集合Ｅの元が格納されるチェック用データ記憶部３０３＿１〜３０３＿ｎとを備えている。
【００５３】  まず、分散情報生成装置１００の構成について図１を用いて説明する。図１は分散情報生成装置１００の構成ブロック図である。図１に示すように、分散情報生成装置１００は、秘密情報分散部１０１、乱数情報分散部１０２、チェック用データ生成装置１０３を備えている。
【００５４】  秘密情報分散部１０１は、秘密情報ｓ（２）を入力とし、秘密情報ｓ（２）を予め定められたアクセス構造Γにしたがって分散符号化したn個のデータ vs_1,vs_2,...,vs_n (vs_i∈VS)を出力する。
【００５５】  乱数情報分散部１０２は、内部で乱数r∈Rを生成し、生成した前記乱数rと、前記乱数r を前記アクセス構造Γにしたがって分散符号化したn個のデータ vr_1,vr_2,...,vr_n とを出力する。
【００５６】  チェック用データ生成部１０３は、秘密情報s∈Sと、乱数情報分散部１０２の出力である乱数r∈Rとを入力とし、n個の独立なチェック用データe_1,e_2,...,e_n (ただし e_i∈E を出力する。
【００５７】  本実施形態では、各チェック用データ e_i∈Eは、 h(e_i,s)=f(r,i) を満足するデータとする。ただし、上記 f は、kを秘密を復元するのに必要な分散情報の最大数とした時、任意の相異なる k-1 個の 1 以上 n 以下の整数i_1,i_2,... ,i_[k-1] と、任意の相異なる k-1 個の A の元 a_1,a_2,...,a_[k-1] に対して、Pr[f(r,i_1)=a_1,f(r,i_2)= a_2,...,f(r,i_[k-1])]=1/|A|^[k-1] (ただし、前記確率は、r を振ることで計算)を満足する関数であり、h は、任意の相異なる S の元 s, s' と任意の A の元 a, a' に対して |{e | h(e,s)=a, h(e,s')=a'}|/|{e | h(e,s)=a}|≦ε を満足する関数である。
【００５８】  分散情報生成装置１００は秘密情報データ集合Ｓの元(要素)である秘密情報ｓを入力とし、記憶部３０１〜３０１内の分散秘密情報記憶部３０１＿１〜３０１＿ｎに秘密情報分散部の出力であるＶＳの元vs_1〜vs_nを、乱数分散情報記憶部３０２＿１〜３０２＿ｎに乱数分散装置１０２の出力である乱数分散情報ＶＲの元vr_1〜vr_nを、チェック用データ記憶部３０３＿１〜３０３＿ｎにチェック用データ集合Ｅの元であるチェック用データe_ 1〜e_nをそれぞれ格納する。
【００５９】  次に復元装置２００の構成について図２を用いて説明する。図２は復元装置２００の構成ブロック図である。図２に示すように、復元装置２００は、秘密情報復元部２０１、乱数情報復元部２０２及び不正検出部２０３を備えている。
【００６０】  秘密情報復元部２０１は予め定められたアクセス構造Γの任意のアクセス集合Ｗ対応する複数の記憶部３０１が備える分散秘密情報記憶部３０２に格納されたデータを読み出し、復元した秘密情報データs∈Sを出力する。
【００６１】  乱数情報復元部２０２は前記アクセス構造Γと前記アクセス集合Ｗに対し、Ｗに対応する複数の記憶部３０１が備える乱数分散情報記憶部３０２に格納されたデータを読み出し、復元した乱数r∈Rを出力する。
【００６２】  不正検出部２０３は、秘密情報復元部２０１で復元された秘密情報データ s∈Sと乱数情報復元部２０２で復元された乱数r=(r_1,r_2,...,r_[k-1])∈Rと前記Ｗに対応する複数の記憶部３０１が備えるチェック用データ記憶部３０３に格納されたチェック用データを読み出し、読み出された全てのチェック用データ e_i∈Eに対して、h(e_i,s)=f(r,i) が成立するかどうかを判定し、成立する時は復元した秘密情報s∈Sを出力し、成立しない時は不正を検知したことを示す記号を出力する。
【００６３】  図１に示した分散情報生成装置１００及び図２に示した復元装置２００は、例えば論理回路等から構成されるＬＳＩ（Large Scale Integration）やＤＳＰ（Digital Signal Processor）等の半導体集積回路によって実現される。また、分散情報生成装置１００及び復元装置２００は、図３に示すように、プログラムにしたがって所定の処理を実行する処理装置１０と、処理装置１０に対してコマンドや情報等を入力するための入力装置２０と、処理装置１０の処理結果をモニタするための出力装置３０とを備えたコンピュータによって実現してもよい。
【００６４】  図３に示す処理装置１０は、ＣＰＵ１１と、ＣＰＵ１１の処理に必要な情報を一時的に記憶する主記憶部１２と、ＣＰＵ１１に後述する分散情報生成部１０２または復元装置２００としての処理を実行させるためのプログラムが記録された記録媒体１３と、秘密情報やアクセス構造データが格納されるデータ蓄積部１４と、主記憶部１２、記録媒体１３及びデータ蓄積装置１４とのデータ転送を制御するメモリ制御インタフェース部１５と、入力装置２０及び出力装置３０とのインタフェース部であるＩ／Ｏインタフェース部１６とを有し、それらがバス１８を介して接続された構成である。なお、データ蓄積部１４は、処理装置１０内にある必要はなく、処理装置１０から独立して備えていてもよい。また、データ蓄積部１４は、分散秘密情報記憶部３０１及び乱数分散情報記憶部３０２及び分散チェック用データ記憶部３０３を備える記憶部３００として用いてもよい。
【００６５】  処理装置１０は、記録媒体１３に記録されたプログラムにしたがって後述する分散情報生成部１０２または復元装置２００としての機能を実現する。記録媒体１３は、磁気ディスク、半導体メモリ、光ディスクあるいはその他の記録媒体であってもよい。
【００６６】  次に本実施形態の秘密情報分散システムの動作について図４及び図５を用いて説明する。図４は分散情報生成装置１００の動作を示すフローチャートであり、図５は復元装置２００の動作を示すフローチャートである。
【００６７】  図４に示すように、分散情報生成部１０２には、秘密情報データ集合Ｓの元である秘密情報ｓ（２）が入力される（ステップＳ１）。
【００６８】  分散情報生成装置１００は、秘密情報分散部１０１に秘密情報ｓが入力されると、秘密情報ｓを予め定められたアクセス構造Γに応じて分散符号化し、記憶装置３００の分散秘密情報記憶部３０１に格納する（ステップＳ２）。
【００６９】  また、分散情報生成装置１００は、乱数情報分散部１０２により、乱数rを生成し、生成したrを前記アクセス構造Γに応じて分散符号化し、記憶装置３００の乱数分散情報記憶部３０２に格納する（ステップＳ３）。
【００７０】  分散情報生成装置１００は、チェック用データ生成部１０３により、秘密情報ｓ、ステップＳ３で生成した乱数rに対して、 h(e_i,s)=f(r,i) を満足する n 個のe_i (i=1,2,...,n)をランダムに生成し、記憶装置３００のチェック用データ記憶部３０３に格納する（ステップＳ４）。
【００７１】  図５に示すように、復元装置２００は、前記アクセス構造Γの任意のアクセス集合Ｗに対応する複数の記憶装置３００の分散秘密情報記憶部３０１から読み出したデータを秘密情報復元部２０１に入力し、秘密情報データ集合Ｓの元ｓを復元する（ステップＳ５）。
【００７２】  また、復元装置２００は、前記アクセス集合Ｗに対応する複数の前記記憶装置３００の乱数分散情報記憶部３０２から読み出したデータを乱数情報復元部２０２に入力し、乱数情報集合Ｒの元ｒを復元する（ステップＳ６）。
【００７３】  次に、復元装置２００は、ステップＴ５で復元された秘密情報データ集合Ｓの元ｓとステップＴ６で復元されたｒと、前記アクセス集合Ｗに対応する複数の前記記憶装置３００のチェック用データ記憶部から読み出した全てのデータ e_i に対して、h_i=h(e_i,s) を計算する（ステップＳ７）。
【００７４】  ステップＳ７で計算された全ての h_i に対してh_i=f(r,i) が成立する場合（ステップＳ８／Ｙｅｓ）、復元装置２００はｓを出力して終了する（ステップＳ１０）。いずれかの h_i に対して h_i=f(r,i) が成立しない場合（ステップＳ８／Ｎｏ）、復元装置２００は、不正検出を表す記号を出力して終了する（ステップＳ９）。
【００７５】  上記実施形態によれば、復元されたチェック用データが復元された秘密情報に対応しているか否かを判定することで不正の検知が可能であり、チェック用データとして要素数の少ないデータ集合を用いれば分散情報のデータサイズを小さくできる。
【００７６】  また、チェック用データを一様にランダムに選ぶことができるため、秘密情報がどのような分布にしたがって選ばれても高い不正の検知率が保証できる。
【００７７】  また、不正検知のチェックを復元された後の秘密情報で行っていることにより、利用する秘密分散の方式に関わらず不正の検知が可能であるという特徴を有している。
【００７８】  次に本発明の他の実施形態について説明する。本実施形態における秘密情報分散システムは、分散情報生成装置１００、復元装置２００、検証装置４００、及び複数の記憶装置３００＿１〜３００＿ｎを有する構成である。記憶装置３００＿１〜３００＿ｎは、分散秘密情報データ集合VS_1〜VS_nの元が格納される分散秘密情報記憶部３０１＿１〜３０１＿ｎと、乱数分散情報データ集合VR_1〜VS_nの元が格納される乱数分散情報記憶部３０２＿１〜３０２＿ｎと、チェック用データ集合Ｅの元が格納されるチェック用データ記憶部３０３＿１〜３０３＿ｎとを備えている。
【００７９】  本実施形態における、分散情報生成装置１００の構成は、図１に示す通りである。次に本実施形態に係る復元装置２００の構成は、図２に示す通りである。復元装置２００は、秘密情報復元部２０１、乱数情報復元部２０２及び不正検出部２０３を備えている。本実施形態に係る秘密情報復元部２０１及び乱数情報復元部２０２は上記実施形態と同様である。
【００８０】  不正検出部２０３は、秘密情報復元部２０１で復元された秘密情報データ s∈Sと乱数情報復元部２０２で復元された乱数r∈Rと前記Ｗ に対応する複数の記憶部３０１が備えるチェック用データ記憶部３０３に格納されたチェック用データを読み出し、読み出された全てのチェック用データ e_i∈Eに対して、h(e_i,s)=f(r,i) が成立するかどうかを判定し、成立する時は復元した秘密情報ｓ∈Ｓおよび復元した乱数ｒ∈Ｒを出力し、成立しない時は不正を検知したことを示す記号を出力する。
【００８１】  上記実施形態と比較すると、本実施形態に係る不正検出部２０３は、秘密情報だけでなく乱数も出力する点で異なる。
【００８２】  次に、本実施形態に係る検証装置４００について図６を用いて説明する。検証装置４００は、秘密情報復元部２０１で復元された秘密情報データs∈Sと乱数情報復元部２０２で復元された乱数r∈Rと記憶装置３００＿ｉが備えるチェック用データ記憶部３０２＿ｉに格納されたチェック用データを読み出し、読み出されたチェック用データ e_i∈Eに対して、h(e_i,s)=f(r,i) が成立するかどうかを判定し、成立する時は復元した秘密情報が正しいことを表す記号を出力し、成立しない時は不正を検知したことを示す記号を出力する。
【００８３】  本実施形態では、記憶装置３００＿ｉが秘密復元時にデータを提供しなかった場合でも、秘密が復元された後に、復元装置２００から出力された秘密情報ｓおよび乱数情報ｒと、前記記憶装置３００＿ｉに格納されているチェック用データを検証装置４００に入力することにより、復元されたｓの非改竄性を検証することが可能であるという特徴を有している。
【００８４】  次に、本発明の実施例について説明する。［第１実施例］  本実施例におけるに秘密情報分散システムは、秘密情報 s=(s_1,s_2,...,s_N) のデータ集合にGF(p^N)(p: 素数, GF:ガロア体)を、乱数データ r=(r_0,r_1,...,r_[k-2])として、GF(p^[k-1]) の元を、チェック用データ e=(e_0,e_1) として GF(p)^2 として用いる。
【００８５】  また、本実施例では、秘密分散のアクセス構造を (k,n)しきい値型のアクセス構造とし、秘密情報分散部１０１及び乱数情報分散部１０２は、非特許文献１に記載された(k,n) しきい値法を用いて分散符号化し、秘密情報復元部２０１及び乱数情報復元部２０２は、その(k,n)しきい値法に対応する復元方法を用いて秘密情報及び乱数情報を復元することが可能である。
【００８６】  次に本実施例に係る分散情報生成装置１００及び復元装置２００について説明する。本実施例に係る分散情報生成装置１００には、秘密情報s=(s_1,s_2,...,s_N)∈ GF(p^N) (各s_i∈GF(p))が入力される。
【００８７】  分散情報生成装置１００は、秘密情報ｓが入力されると、秘密情報分散部１０１によりGF(p^N)上の定数項がｓであるk-1次多項式をランダムに生成する。このk-1次多項式をf_s (x)と記す。
【００８８】  秘密情報分散部１０１は、相異なる 1,2,...,n に対して、 f_s(1),f_s(2), …,f_s(n)を計算し、その計算結果を記憶装置３００＿１の分散秘密情報記憶部３０１＿１、記憶装置３００＿２の分散秘密情報記憶部３０１＿２,…,記憶装置３００＿ｎの分散秘密情報記憶部３０１＿ｎにそれぞれ格納する。
【００８９】  乱数情報分散部１０２は、GF(p^[k-1])の元である乱数r を生成し、GF(p^[k-1]) 上の定数項がrであるk-1次多項式をランダムに生成する。このk-1次多項式をf_r(x) と記す。
【００９０】  次に、乱数情報分散部１０２は、前記 i_1,i_2,...,i_n に対して f_r(1),f_r(2), …,f_r(n)を計算し、その計算結果を記憶装置３００＿１の乱数分散情報記憶部３０２＿１、記憶装置３００＿２の乱数分散情報記憶部３０２＿２,…, 記憶装置３００＿ｎの乱数分散情報記憶部３０２＿ｎにそれぞれ格納する。
【００９１】  チェック用データ生成部１０３は、i=1,2,...,n に対して, 式 H(e_[i_j],s)=F(r,i) が成立するような(e_[i0],e_[i1]) を GF(p) 上からランダムに選び、得られた e_[i]=(e_[i0],e_[i1])(i=1,2,...,n) を記憶装置３００＿ｉのチェック用データ記憶部３０３＿ｉに格納する。ただし、上記で H, F はそれぞれ次のように定義される関数である。H(e_[i],s)=e_[i0]+(s_1*e_[i1]+s_2*e_[i1]^2+...+s_N*e_[i1]^N,F(r,i)=r_0+r_1*i+r_2*i^2+...+r_[k-2]*i^[k-2]
【００９２】  一方、本実施例に係る復元装置２００は、記憶部301_[i_1],301_[i_2], …, 301_[i_k] の各分散秘密情報記憶部３０１からデータを読み出す。これらのデータを vs_[i_1], vs_[ i_2], …,vs_[i_k]と記す。
【００９３】  秘密情報復元部201は、(i_1,vs_[i_1]),(i_2,vs_[i_2]),…,(i_k,vs_[i_k])を入力とし、座標(i_1,vs_[j_1]),(i_2,vs_[i_2]),…,(i_k,vs_[i_k])を通る GF(p^N) 上の k-1次多項式g_s(x)のg_s(0)生成する。具体的には、連立方程式を解く方法やラグランジュ補間を用いる方法などによりs'=g_s(0)を計算する。
【００９４】  また、復元装置２００は、記憶装置３００_[i_1],300_[i_2],…,300_[i_k]の各乱数分散情報記憶部302からデータを読み出す。これらのデータをvr_[i_1],vr_[i_2],..., vr_[i_k]と記す。
【００９５】  乱数情報復元部２０２は、(i_1,vr_[j_1]),(i_2,vr_[i_2]),…,(i_k,vr_[i_k])を入力とし、座標(i_1,vr_[i_1]),(i_2,vr_[i_2]),…,(i_k,vr_[i_k])を通る GF(p^[k-1])のk-1 次多項式g_r(x)のg_r(0)を生成する。具体的には、連立方程式を解く方法やラグランジュ補間を用いる方法などによりr'=g_r(0)を計算する。
【００９６】  次に、復元装置２００は、記憶装置３００_[i_1],300_[i_2],…,300_[i_k]の各分散チェック用データ記憶部303からデータを読み出す。これらのデータを e_[i_1],e_[i_2],... , e_[i_k]と記す（各e_[i_j]=(e_[i_j0],e_[i_j1])）。
【００９７】  不正検知装置203は、s'=(s'_1,s'_2,...,s'_N), r'=(r'_0,r'_1,...,r'_[k-2]), e_[i_1]=(e_[i_10],e_[i_11]),e_[i_2]=(e_[i_20],e_[i_21]),..., e_[i_k]=(e_[i_k0],e_[i_k1])を入力とし、j=1,2,...,k について H(e_[i_j],s')=F(r',i_j) が成立するか否かをチェックし、全てのe_[i_j] (j=1,...,k)について成立する場合は、s' を秘密情報として出力し、成立していない場合は不正を検知したことを示す記号として、例えば⊥を出力する。
【００９８】  本実施例に係る秘密情報分散システムでは、秘密情報のサイズはp^Nであり、分散情報のサイズはp^[N+k+1]であり、不正の検出率は(1-N/p)である。
【００９９】  ここで、秘密情報のサイズをs、不正の検出率を(1-ε)と記すと、分散情報のサイズはほぼs*((log s)/ε)^[k+1]で表せる。
【０１００】  上述した非特許文献２に記載された秘密分散法の分散情報のサイズは ((s-1)(k-1) / ε+k)^2、非特許文献６の分散情報のサイズは s^2/ε である。そのため s が大きく k が小さい場合は、本実施例の分散情報のサイズの方が両方式より小さくなることが分かる。
【０１０１】［第２実施例］  本実施例におけるに秘密情報分散システムは、秘密情報 s=(s_1,s_2,...,s_N) のデータ集合にGF(p^N)(p: 素数, GF:ガロア体)を、乱数データ r=(r_0,r_1,...,r_[n-2])として、GF(p^[n-1]) の元を、チェック用データ e=(e_0,e_1) として GF(p)^2 として用いる。
【０１０２】  また、本実施例では、秘密分散のアクセス構造を (n,n)しきい値型のアクセス構造とし、秘密情報分散部１０１及び乱数情報分散部１０２は、非特許文献４に記載された(n,n) しきい値法を用いて分散符号化し、秘密情報復元部２０１及び乱数情報復元部２０２は、その(n,n)しきい値法に対応する復元方法を用いて秘密情報及び乱数情報を復元することが可能である。
【０１０３】  次に本実施例に係る分散情報生成装置１００及び復元装置２００について説明する。本実施例に係る分散情報生成装置１００には、秘密情報s=(s_1,s_2,...,s_N)∈ GF(p^N) (各s_i∈GF(p))が入力される。
【０１０４】  分散情報生成装置１００は、秘密情報ｓが入力されると、秘密情報分散部１０１によりvs_1+vs_2+...+vs_n=s となるGF(p^N)上の元 vs_1,vs_2,...,vs_nをランダムに選び、各 vs_i (i=1,2,...,n)を記憶装置３００＿ｉの分散秘密情報記憶部３０１＿ｉに格納する。
【０１０５】  乱数情報分散部１０２は、GF(p^[n-1])の元である乱数r を生成し、 vr_1+vr_2+...+vr_n=r となるGF(p^[n-1])上の元 vr_1,vr_2,...,vr_nをランダムに選び、各 vr_i (i=1,2,...,n)を記憶装置３００＿ｉの分散秘密情報記憶部３０２＿ｉに格納する。
【０１０６】  チェック用データ生成部１０３は、i=1,2,...,n に対して, 式 H(e_[i],s)=F(r,i) が成立するような(e_[i0],e_[i1]) を GF(p) 上からランダムに選び、得られた (e_[i0],e_[i1])(i=1,2,...,n)を記憶装置３００＿ｉのチェック用データ記憶部３０３＿ｉに格納する。ただし、上記で H, F はそれぞれ次のように定義される関数である。H(e_[i],s)=e_[i0]+(s'_1*e_[i1]+s'_2*e_[i1]^2+...+s'_N*e_[i1]^N,F(r,i)=r_0+r'_1*i+r'_2*i^2+...+r'_[n-2]*i^[n-2] 
【０１０７】  一方、本実施例に係る復元装置２００は、記憶部301_1,301_2, …,301_n の各分散秘密情報記憶部３０１からデータを読み出す。これらのデータをvs_1, vs_2, …,vs_nと記す。
【０１０８】  秘密情報復元部201は、vs_1,vs_2,...,vs_n を入力とし、s'=vs_1+vs_2+...+vs_n により s' を計算する。
【０１０９】  また、復元装置２００は、記憶装置３００_1,300_2,…,300_n の各乱数分散情報記憶部302からデータを読み出す。これらのデータを vr_1,vr_2,...,vr_nと記す。
【０１１０】  乱数情報復元部２０２は、vr_1,vr_2,…,vr_nを入力とし、座標 r'=vr_1+vr_2+...+vr_n により r' を計算する。
【０１１１】  次に、復元装置２００は、記憶装置３００_1,300_2,…,300_nの各分散チェック用データ記憶部303からデータを読み出す。これらのデータを e_1,e_2,... ,e_nと記す（各 e_i=(e_[i0],e_[i1])）。
【０１１２】  不正検知装置203は、s'=(s'_1,s'_2,...,s'_N), r'=(r'_0,r'_1,...,r'_[n-2]), e_1=(e_[10],e_[11]),e_2=(e_[20],e_[21]),..., e_n=(e_[n0],e_[n1])を入力とし、j=1,2,...,n について H(e_[j],s)=F(r,j) が成立するか否かをチェックし、全ての e_j (j=1,...,n)について成立する場合は、s' を秘密情報として出力し、成立していない場合は不正を検知したことを示す記号として、例えば⊥を出力する。
【０１１３】  本実施例に係る秘密情報分散システムでは、秘密情報のサイズはp^Nであり、分散情報のサイズはp^[N+n+1]であり、不正の検出率は(1-N/p)である。
【０１１４】  ここで、秘密情報のサイズをs、不正の検出率を(1-ε)と記すと、分散情報のサイズはほぼs*((log s)/ε)^[k+1]で表せる。
【０１１５】  上述した非特許文献２に記載された秘密分散法の分散情報のサイズは ((s-1)(k-1) / ε+k)^2、非特許文献６の分散情報のサイズは s^2/ε である。そのため s が大きく k が小さい場合は、本実施例の分散情報のサイズの方が両方式より小さくなることが分かる。
【０１１６】［第３実施例］  本実施例におけるに秘密情報分散システムは、秘密情報 s=(s_1,s_2,...,s_N) のデータ集合にGF(p^N)(p: 素数, GF:ガロア体)を、乱数データ r=(r_0,r_1,...,r_[k-2])として、GF(p^[k-1]) の元を、チェック用データ e=(e_0,e_1) として GF(p)^2 として用いる。
【０１１７】  また、本実施例では、第1実施例と同様に秘密分散のアクセス構造を(k,n)しきい値型のアクセス構造とし、秘密情報分散部１０１及び乱数情報分散部１０２は、非特許文献１に記載された(k,n) しきい値法を用いて分散符号化し、秘密情報復元部２０１及び乱数情報復元部２０２は、その(k,n)しきい値法に対応する復元方法を用いて秘密情報及び乱数情報を復元することが可能である。
【０１１８】  次に本実施例に係る分散情報生成装置１００及び復元装置２００について説明する。本実施例に係る分散情報生成装置１００には、秘密情報s=(s_1,s_2,...,s_N)∈ GF(p^N) (各s_i∈GF(p))が入力される。
【０１１９】  分散情報生成装置１００は、秘密情報ｓが入力されると、秘密情報分散部１０１によりGF(p^N)上の定数項がｓであるk-1次多項式をランダムに生成する。このk-1次多項式をf_s (x)と記す。
【０１２０】  秘密情報分散部１０１は、相異なる 1,2,...,n に対して、 f_s(1),f_s(2), …,f_s(n)を計算し、その計算結果を記憶装置３００＿１の分散秘密情報記憶部３０１＿１、記憶装置３００＿２の分散秘密情報記憶部３０１＿２,…,記憶装置３００＿ｎの分散秘密情報記憶部３０１＿ｎにそれぞれ格納する。
【０１２１】  乱数情報分散部１０２は、GF(p^[k-1])の元である乱数r を生成し、GF(p^[k-1]) 上の定数項がrであるk-1次多項式をランダムに生成する。このk-1次多項式をf_r(x) と記す。
【０１２２】  次に、乱数情報分散部１０２は、前記 i_1,i_2,...,i_n に対して f_r(1),f_r(2), …,f_r(n)を計算し、その計算結果を記憶装置３００＿１の乱数分散情報記憶部３０２＿１、記憶装置３００＿２の乱数分散情報記憶部３０２＿２,…, 記憶装置３００＿ｎの乱数分散情報記憶部３０２＿ｎにそれぞれ格納する。
【０１２３】  チェック用データ生成部１０３は、i=1,2,...,n に対して, 式 H(e_[i_j],s)=F(r,i) が成立するような(e_[i0],e_[i1]) を GF(p) 上からランダムに選び、得られた e_[i]=(e_[i0],e_[i1])(i=1,2,...,n)を記憶装置３００＿ｉのチェック用データ記憶部３０３＿ｉに格納する。ただし、上記で H, F はそれぞれ次のように定義される関数である。H(e_[i],s)=e_[i0]+(s_1*e_[i1]+s_2*e_[i1]^2+...+s_N*e_[i1]^N, F(r,i)=r_0+r_1*i+r_2*i^2+...+r_[k-2]*i^[k-2]
【０１２４】  一方、本実施例に係る復元装置２００は、記憶部301_[i_1],301_[i_2], …, 301_[i_k] の各分散秘密情報記憶部３０１からデータを読み出す。これらのデータを vs_[i_1], vs_[ i_2], …,vs_[i_k]と記す。
【０１２５】  秘密情報復元部201は、(i_1,vs_[i_1]),(i_2,vs_[i_2]),…,(i_k,vs_[i_k])を入力とし、座標(i_1,vs_[j_1]),(i_2,vs_[i_2]),…,(i_k,vs_[i_k])を通る GF(p^N) 上の k-1次多項式g_s(x)のg_s(0)生成する。具体的には、連立方程式を解く方法やラグランジュ補間を用いる方法などによりs'=g_s(0)を計算する。
【０１２６】  また、復元装置２００は、記憶装置３００_[i_1],300_[i_2],…,300_[i_k]の各乱数分散情報記憶部302からデータを読み出す。これらのデータを vr_[i_1],vr_[i_2],...,vr_[i_k]と記す。
【０１２７】  乱数情報復元部２０２は、(i_1,vr_[j_1]),(i_2,vr_[i_2]),…,(i_k,vr_[i_k])を入力とし、座標(i_1,vr_[i_1]),(i_2,vr_[i_2]),…,(i_k,vr_[i_k])を通る GF(p^[k-1])のk-1次多項式g_r(x)のg_r(0)を生成する。具体的には、連立方程式を解く方法やラグランジュ補間を用いる方法などによりr'=g_r(0)を計算する。
【０１２８】  次に、復元装置２００は、記憶装置３００_[i_1],300_[i_2],…,300_[i_k]の各分散チェック用データ記憶部303からデータを読み出す。これらのデータを e_[i_1],e_[i_2],..., e_[i_k]と記す（各e_[i_j]=(e_[i_j0],e_[i_j1])）。
【０１２９】  不正検知装置203は、s'=(s'_1,s'_2,...,s'_N), r'=(r'_0,r'_1,...,r'_[k-2]), e_[i_1]=(e_[i_10],e_[i_11]),e_[i_2]=(e_[i_20],e_[i_21]),..., e_[i_k]=(e_[i_k0],e_[i_k1])を入力とし、j=1,2,...,k について H(e_[i_j],s')=F(r',i_j) が成立するか否かをチェックし、全てのe_[i_j] (j=1,...,k)について成立する場合は、s' を秘密情報、r' を乱数情報として出力し、成立していない場合は不正を検知したことを示す記号として、例えば⊥を出力する。
【０１３０】  本実施例に係る検証装置４００は、記憶装置300_iの各分散秘密情報記憶部303_i から読み出したチェック用データ e_i=(e_[i0],e_[i1])と、秘密情報 s'=(s'_1,s'_2,...,s'_N)とr'=(r'_1,r'_2,...,r'_[k-1])を入力とし、H(e_[i_j],s')=F(r',i_j) が成立するか否かをチェックし、成立する時は復号した秘密情報が正しいことを表す記号を出力し、成立しない時は不正を検知したことを示す記号を出力する。
【０１３１】  検証装置４００を用いることにより、秘密の復元時に分散情報を復元部に入力しなかった記憶装置300_iも、秘密復元後に、記憶装置300_iのチェック用データ記憶装置 303_iに格納されているチェック用データと、復元された秘密情報s'と、復元された乱数情報r'とから、復元された秘密情報s'の非改竄性を検証することが可能となる。
【０１３２】  本実施例に係る秘密情報分散システムでは、秘密情報のサイズはp^Nであり、分散情報のサイズはp^[N+k+1]であり、不正の検出率は(1-N/p)である。
【０１３３】  ここで、秘密情報のサイズをs、不正の検出率を(1-ε)と記すと、分散情報のサイズはほぼs*((log s)/ε)^[k+1]で表せる。
【０１３４】  上述した非特許文献２に記載された秘密分散法の分散情報のサイズは ((s-1)(k-1) / ε+k)^2、非特許文献６の分散情報のサイズは s^2/ε である。そのため s が大きく k が小さい場合は、本実施例の分散情報のサイズの方が両方式より小さくなることが分かる。
【０１３５】  なお、各図のフローチャートに示す処理を、ＣＰＵが実行するためのプログラムは本発明によるプログラムを構成する。このプログラムを記録する記録媒体としては、半導体記憶部や光学的及び／又は磁気的な記憶部等を用いることができる。このようなプログラム及び記録媒体を、前述した各実施形態とは異なる構成のシステム等で用い、そこのＣＰＵで上記プログラムを実行させることにより、本発明と実質的に同じ効果を得ることができる。
【０１３６】  以上、本発明を好適な実施形態、実施例に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【０１３７】  この出願は、２００８年５月２３日に出願された日本出願特願２００８−１３５６１９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１３８】  １００    分散情報生成装置  １０１    秘密情報分散部  １０２    乱数情報分散部  １０３    チェック用データ生成部  ２００    復元装置  ２０１    秘密情報復元部  ２０２    乱数情報復元部  ２０３    不正検知部  ３００＿１〜３００＿ｎ    記憶装置  ３０１＿１〜３０１＿ｎ    分散秘密情報記憶部  ３０２＿１〜３０２＿ｎ    乱数分散情報記憶部  ３０３＿１〜３０３＿ｎ    チェック用データ記憶部  ４００    検証装置
【図１】
0005381981.tif 000002
【図２】
0005381981.tif 000003
【図３】
0005381981.tif 000004
【図４】
0005381981.tif 000005
【図５】
0005381981.tif 000006
【図６】
0005381981.tif 000007