説明

情報処理装置、コード生成方法、コード検証方法およびプログラム

【課題】分散情報の改ざんを高確率および効率的に検知可能とし、かつ、パラメータ設定の自由度を大きくした情報処理装置を提供する。
【解決手段】秘密情報sを一方が秘密情報sの元の集合から一様にランダムに選択された要素となるように秘密情報s_1および秘密情報s_2に分割する秘密情報分割部と、関数M()についてM(s_1, s_2)の値をチェック用データvとして算出するコード生成部と、秘密情報sとチェック用データvが埋め込まれた(k-1)次多項式Fを出力するコード分散部と、復元対象のk組分の分散符号語情報の点を通る(k-1)次多項式F'を生成し、F'に埋め込まれた秘密情報s'およびチェック用データv'を復元するコード復元部と、秘密情報s'から分割された秘密情報s'_1および秘密情報s'_2について関数M(s'_1, s'_2)の値とチェック用データv'が等しいかを否かを判定するコード検証部と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの改ざんを検知する情報処理装置、コード生成方法、コード検証方法、およびその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【0002】
秘密にしておきたい情報(以下、秘密情報と称する)を保管する場合、秘密情報の紛失だけでなく、破壊の脅威、盗難の脅威がある。前者の脅威に対しては秘密情報のコピーを作成することが有効であるが、後者の盗難に対する脅威が増してしまう。
【0003】
このような問題を解決する手段の1つとして、秘密分散法が知られている。秘密分散法の1つである(k,n)閾値法について簡単に説明する。秘密情報をn個の分散情報に符号化する。n個の分散情報のうち任意のk個以上の分散情報を集めれば、秘密情報を完全に復元できるが、k-1個以下の分散情報を集めても、元の秘密情報に関する情報をまったく得られない。したがって、k-1個までの分散情報が盗難にあったとしても秘密情報が他人に漏れることがなく、n-k個までの分散情報が破壊されても、秘密情報を復元できる。
【0004】
(k, n)閾値法の一例が、非特許文献1に開示されている。この非特許文献1に開示された、shamirの提案する方式が効率的であるため、この方式が広く用いられている。
【0005】
非特許文献1の方式は、素数または素数のべき乗pに対する有限体GF(p)を秘密情報のデータ集合として用い、秘密情報sを定数項に持つGF(p)上のランダムな(k-1)次多項式f(x)上の点、(x_1,f(x_1)),...,(x_n,f(x_n))を分散情報とする方式である。k個の分散情報からk-1次の多項式は一意に復元でき、f(0)である秘密情報sを復元することができる。また、k-1個以下の分散情報からはf(0)を定めることはできず、秘密情報sに関する情報は一切漏れない。秘密情報を埋め込む箇所はf(0)以外の任意の箇所でもよい。また、多項式の係数などでもよい。
【0006】
また、xi(i=1,...,n)は互いに異なる値であればよい。
【0007】
このような(k, n)閾値法を用いることで対処できる脅威もあるが、以下に示すような脅威も存在する。
【0008】
(k, n)閾値法において分散情報の作成、配付が正しく行われ、その後、秘密情報を復元するために分散情報を複数集める状況を考える。
【0009】
このとき、分散情報を要求された側が配付された値を改竄することなく渡すとは限らない。また、単純な(k, n)閾値法を用いる場合、改竄された分散情報を用いて復元された値は、秘密情報と異なる値になってしまう可能性を持っている。
【0010】
現実の状況を例示すると、遺言状を分散したデータを作成して複数の子孫に渡しておいたところ、データが改ざんされ、一部の子孫にとって都合のよい内容に書き換えられてしまうということが挙げられる。
【0011】
このような攻撃が非特許文献1の方式に行われた場合、秘密情報をsとし、有限体上の加算を+と書くと、改ざん者は、s+s'が復元されるような改ざんを行うことができることが知られている。そのため、先の遺言状の例のような改ざんが行われた場合には、その事実を検知できるような方式が望ましい。
【0012】
このような機能を、非特許文献1に開示されている(k,n)閾値法に付与する方法は様々知られている。演算処理が効率的な方法としては、以下の方法が知られている。この方法について、秘密情報を分散する分散フェーズと、秘密情報を復元する復元フェーズに分けて概要を記述する。
【0013】
[分散フェーズ]
1.秘密情報になんらかの処理を適用する。なお、処理を適用した後の値をコードと呼ぶ。
2.コードを既存の(k,n)閾値法で分散する。
【0014】
[復元フェーズ]
1.コードを復元する。
2.コードの正当性を調べる。ここで正当でないものであると判明した場合、改ざんがあったものとする。
【0015】
このような構成を採用し、秘密情報を入力としてコードを出力する装置をGenCode()とし、生成されたコードを入力としてそのコードが正当性なものであるかどうかを出力する関数をVerCode()とし、ある秘密情報sについてのコードをcとする。このとき、VerCode(c+c')が正当なものであるという出力を行うようなc'を、改ざん者が生成することができる確率は十分に低い。それだけでなく、コードが正当なときには、必ずコードに対応する秘密情報を出力するものを用いることで、上述の(k,n)閾値法に対する不正が高い確率で検知可能となる。
【0016】
この方法を実行する情報処理装置について説明する。
【0017】
図8Aは関連する分散情報生成装置の一構成例を示すブロック図である。図8Bは関連する復元装置の一構成例を示すブロック図である。
【0018】
図8Aおよび図8Bに示すように、分散情報生成装置700および復元装置800のそれぞれには、分散情報を格納するための複数の保管装置900が接続されている。
【0019】
はじめに、図8Aを参照して、分散情報生成装置700の構成を説明する。
【0020】
分散情報生成装置700は、コード生成部701およびコード分散部702を有する。分散情報生成装置700は、秘密情報用データ集合Sの元と、閾値kと、分散情報数nと、保管先装置指定データとが入力されると、保管先装置指定データの指定するn個の保管装置900のそれぞれに対し、分散コードデータ集合BSの元である分散コード情報を格納する。
【0021】
コード生成部701は、秘密情報用データ集合Sの元sが入力されると、コード情報用データ集合Cの元cを出力する。
【0022】
コード分散部702は、集合Cの元と、閾値kと、分散情報数nと、保管先装置指定データとが入力されると、保管先装置指定データの指定するn個の保管装置900のそれぞれに対して分散コードデータ集合BSの元を格納する。
【0023】
次に、図8Bを参照して、復元装置800の構成を説明する。
【0024】
復元装置800は、コード復元部801およびコード正当性検証部802を有する。復元装置800は、集合Cの元と、閾値kと、分散情報数nと、保管先装置指定データとが入力されると、複数の保管装置900から、それぞれが記憶するBSの元を読み出し、秘密情報用データ集合Sの元のデータ、または、不正の検出を表す記号を出力する。
【0025】
コード復元部801は、集合Cの元と、閾値kと、保管先装置指定データとが入力されると、複数の保管装置900から、それぞれの記憶部901が記憶するBSの元を読み出し、Cの元を出力する。
【0026】
コード正当性検証部802は、Cの元が入力されると、Sの元のデータ、またはコードが不正であったことを表すデータを出力する。なお、保管装置900は、分散コード用データ集合BCの元を記憶する記憶部901を有する。
【0027】
次に、分散情報生成装置700の動作手順を、図9のフローチャートを参照して説明する。
【0028】
閾値kと、分散情報数nと、保管先装置指定データと、秘密情報用データ集合Sの元sが分散情報生成装置700に入力される(ステップA1)。
【0029】
コード生成部701は、入力されたsに対応するコード情報用データ集合Cの元であるcを出力する(ステップA2)。
【0030】
コード分散部702は、閾値kと、分散情報数nと、保管先装置指定データと、コード生成部701の出力であるcとが入力されると、cを(k,n)閾値法で分散符号化し、分散符号化されたcを、保管先装置指定データの指定する保管装置900の記憶部901に格納する(ステップA3)。
【0031】
次に、復元装置800の動作手順を、図10のフローチャートを参照して説明する。
【0032】
閾値kと分散情報数nが復元装置800に入力される(ステップB1)。コード復元部801は、k機以上の複数の保管装置900の記憶部901からデータを読み出す(ステップB2)。続いて、コード復元部801は、読み出したデータと閾値kとから、コード分散部702の分散符号化方法に対応する復元方法を用いて復元処理を行った結果であるCの元c'を出力する(ステップB3)。
【0033】
コード正当性検証部802は、コード復元部801からc'を受け取ると、c'の正当性を検証する処理を行い、正当なコードであった場合には、c'に対応するSの元s'を出力し、それ以外の場合には、不正の検出を表す記号を出力する(ステップB4)。
【0034】
なお、GenCodeの入力には、秘密情報以外の情報を入力する場合もある。また、cは有限体の要素がひとつであるとは限らず、複数の異なる有限体の要素からなる場合もある。例えば、3つの要素からなる場合を考えるとc=(c1,c2,c3)となる場合もある。このとき、c=(c1,c2,c3)とc'=(c1',c2',c3')に対し、+をc1,c2,c3の各要素に対応する有限体上で定義されている加算であるとすると、c+c'は(c1+c1',c2+c2',c3+c3')を表しているものとする。
【0035】
なお、コードの集合が小さければ小さいほど分散情報のサイズが小さく、秘密情報を分散して保管する場合に必要とする記憶容量が少なくて済み、好ましい。
【0036】
提案されている方式には、非特許文献1よりも演算処理が効率的な方式として、非特許文献2、非特許文献3および非特許文献4に開示されているものがある。そして、これら3つの文献に開示された方式を2種類に分類すると、非特許文献2および非特許文献3に開示された方式と、非特許文献4に開示された方式とに分けられる。以下にそれぞれの説明を行う。
【0037】
非特許文献2および非特許文献3に開示されている処理装置は、秘密情報と、乱数と、秘密情報およびこれらの乱数をある関数に入力したときの出力とをコードとして生成する処理を行うコード生成装置と、コードを入力としてその正当性を検証するコード正当性検証装置とからなる。
【0038】
これらの方式は、秘密情報そのものの乱数性とは関係なく、乱数Rはそれ自体が選ばれる元の集合から一様にランダムに選ばれることを条件として、秘密情報が選ばれる集合と乱数が選ばれる集合とコードの集合上の加算を+と表し、ある関数をM()と表すと、秘密情報s1と乱数r1について、s1とc1 = M(s1,r1)を取得した改ざん者がM(s1+s1', r1+r1')= M(s1,r1)+c1'を満たすs1',r1',c1'を生成するという改ざんを高い確率で検知可能となっている。
【0039】
このような、秘密情報と一様な乱数の改ざんを検知するためのコード生成装置とコード検証装置の構成の一例を説明する。なお、この方式のコード生成装置を「改ざん検知コード生成装置」と称し、コード検証装置を「改ざん検知コード検証装置」と称する。
【0040】
図11Aは非特許文献2または非特許文献3に開示されたコード生成装置の一構成例を示すブロック図である。図11Bは非特許文献2または非特許文献3に開示されたコード検証装置の一構成例を示すブロック図である。
【0041】
図11Aに示すように、改ざん検知コード生成装置100は、チェック用データ生成部101を有する。改ざん検知コード生成装置100は、秘密情報用データ集合Sの元である秘密情報sと、乱数情報用データ集合Rの元である乱数rとが入力されると、sとrを出力するとともに、sとrをチェック用データ生成部101に入力し、その結果としてチェック用データ集合Cの元であるcをチェック用データとして出力する。
【0042】
また、図11Bに示すように、改ざん検知コード検証装置200は、チェック用データ生成部101および同一性判定部201を有する。
【0043】
改ざん検知コード検証装置200は、秘密情報用データ集合Sの元である秘密情報sと、乱数情報用データ集合Rの元である乱数rと、チェック用データ集合Cの元であるチェック用データcとが入力されると、sとrをチェック用データ生成部101に入力する。チェック用データ生成部101は、sとrが入力されると、c'を生成して出力する。同一判定部201は、チェック用データcと、チェック用データ生成部101の出力であるc'とが入力されると、判定処理を行う。同一判定部201は、判定処理の結果、c'=cである場合にはコードの整合性がとれていたことを表す記号を出力し、それ以外の場合はコードの整合性がとれていないことを表す記号を出力する。また、改ざん検知コード検証装置200は、秘密情報sを出力する。
【0044】
非特許文献2の方式は、改ざんを検知できる確率を(1-ε)とすると、秘密情報が要素数sの集合から選ばれるとき、乱数が要素数1/εの集合の要素、関数の出力が要素数1/εの集合の要素となる。つまりコードはおよそ要素数がs*1/(ε^2)であるような集合の要素となる。この方式はsと1/εがほぼ等しい場合にのみ動作するというパラメータ上の条件がある。これは、εは1/2^80程度で十分であってもsが2^1000であればεも1/2^1000とする必要があることを表す。コードの長さに影響し、これらのパラメータは自由に設定できる方が好ましい。
【0045】
具体的には、以下に説明する通りである。
【0046】
非特許文献2に開示された方式は、pを素数とし、Z/pZを秘密情報の集合Sとしたとき、Sの要素であるsのコードとして、sと、Z/pZから一様ランダムに選択した要素rと、*をZ/pZ上の乗算として、s*r mod pをチェック用データとする方式である。
【0047】
Z/pZの代わりにqを素数のべき乗としたとき、それぞれの集合をガロア体GF(q)の要素として乗算をガロア体上の乗算としてもよい。
【0048】
非特許文献3の方式は、改ざんを検知できる確率を(1-ε)とすると、秘密情報が要素数sの集合から選ばれるとき、乱数が要素数1/εの集合の要素、関数の出力が要素数1/εの集合の要素となる。よって、コードはおよそ要素数がs*1/(ε^2)であるような集合の要素となる。つまり効率は非特許文献2の方式と同程度だが、sと1/εをほぼ独立に設定することができるという特徴がある。そのため、非特許文献2にあった問題が解決された方式であるといえる。
【0049】
具体的には、以下に説明する通りである。
【0050】
非特許文献3に開示された方式は、pを素数とし、Nを正の整数として、(Z/pZ)^Nを秘密情報の集合とする方式である。(Z/pZ)^Nの元をsまたは、(s_1,s_2,...,s_N)と記す。また、(Z/pZ)^Nの代わりにガロア体GF(p^N)を用いてもよい。
【0051】
このとき、(s_1,s_2,...,s_N)のコードとして、sと、Z/pZから一様ランダムに選択した要素rと、*をZ/pZ上の乗算として、s_1*r + s_2*r^2 + ... + s_{N-1}*r^{N-1} + s_{N}*r^{N+1} mod p をチェック用データとする方式である。
【0052】
Z/pZの代わりにqを素数のべき乗としたとき、それぞれの集合をガロア体GF(q)の要素として乗算をガロア体上の乗算としてもよい。
【0053】
一方、非特許文献4に開示されている方式では、秘密情報の集合の要素を入力して秘密情報よりも大きな集合の部分集合の要素を出力する関数であって、異なる値が入力されたときは必ず異なる値が出力される関数を用いる方法である。このような関数をN()と表すとき、コードの生成装置は秘密情報sが入力されると、N(s)をコードとして出力する。コードの検証装置は、コードが入力されると、そのコードに対応する秘密情報の要素があるかどうかを調べ、秘密情報の要素がある場合にはその秘密情報に改ざんがなかったことを表す記号を出力し、それ以外の場合は秘密情報に改ざんがあったことを表す記号を出力する。この方式では、秘密情報が選ばれる集合から一様にランダムに選ばれることを条件としてコードの改ざんを高い確率で検知可能である。
【0054】
具体的には、以下の通りである。
【0055】
秘密情報の集合Sとして要素数がpである集合を用いる場合、N= (p(p-1) +1)としたときの{0,...p(p-1)}の要素数がpである部分集合Bであって、その部分集合の任意の異なる2つの要素s1とs2についてs1-s2 mod Nがすべて異なるという性質をもった部分集合を用いる方式である。
【0056】
より具体的には、SのコードとしてSの要素をBの要素に写像する関数を用いる方式である。この方式の検証方法はSからBに写像を行った際の逆を計算する関数を用いる。このとき、コードに対応するSの元がない場合には改ざんがあるものとみなす方式である。
【0057】
また、非特許文献4に開示された方式は、改ざんを検知できる確率を(1-ε)とすると、秘密情報が要素数sの集合から選ばれるとき、関数の出力は要素数s*(1/ε)の集合の要素となる。また、sと1/εがほぼ等しい場合にのみ動作するというパラメータ上の条件がある。つまり、非特許文献2の方式と同様の課題を持つ方式であるといえる。ただし、非特許文献2や非特許文献3の方式を用いた場合に比べてコードの要素数の集合は1/εだけ少ないため演算処理の効率のよい方式となっていることがわかる。
【0058】
このような、一様な秘密情報の改ざんを検知するためのコード生成装置とコード検証装置の構成の一例を説明する。なお、この方式のコード生成装置を「改ざん検知コード生成装置」と称し、コード検証装置を「改ざん検知コード検証装置」と称する。
【0059】
図12Aは非特許文献4に開示されたコード生成装置の一構成例を示すブロック図である。図12Bは非特許文献4に開示されたコード検証装置の一構成例を示すブロック図である。
【0060】
図12Aに示すように、改ざん検知コード生成装置300は、秘密情報符号化部301を有する。改ざん検知コード生成装置300は、秘密情報用データ集合Sの元である秘密情報sが入力されると、sを秘密情報符号化部301に入力し、その出力のコード用データ集合Cの元であるcをコードとして出力する。
【0061】
図12Bに示すように、改ざん検知コード検証装置400は、秘密情報符号化部301に対応する秘密情報復号化部401と、復号結果判定部402とを有する。
【0062】
改ざん検知コード検証装置400は、コード用データ集合Cの元であるcが入力されると、cを秘密情報復号化部401に入力し、秘密情報復号化部401の出力を復号結果判定部402に入力する。復号結果判定部402は、秘密情報復号化部401から受信した値が秘密情報用データ集合の要素である場合、その値をそのまま出力し、それ以外の場合、改ざんがあったことを表す記号を出力する。
【先行技術文献】
【非特許文献】
【0063】
【非特許文献1】Adi Shamir. How to share a secret. Comm.ACM,22(11) 612-613(1979).
【非特許文献2】Sergio Cabello, Carles Padro', Germa'n Sa'ez: Secret Sharing Schemes with Detection of Cheaters for a General Access Structure. Des. Codes Cryptography 25(2): 175-188 (2002)
【非特許文献3】Toshinori Araki, Satoshi Obana: Flaws in Some Secret Sharing Schemes Against Cheating. ACISP 2007: 122-132
【非特許文献4】Wakaha Ogata. Kaoru Kurosawa. Douglas R Stinson:Optimum Secret Sharing Scheme Secure Against Cheating SIAM J.Discrete Math.,vol.20,no1,pages 79-95,2006
【発明の概要】
【発明が解決しようとする課題】
【0064】
(k,n)閾値法を用いて分散情報を生成する際、分散情報の改ざんを高確率で検知可能なコードを生成する方法として、非特許文献4の方式と同程度の演算効率であって、パラメータを自由に設定可能なものはなかった。
【0065】
本発明の目的は、(k, n)閾値法による分散情報の改ざんを高確率および効率的に検知可能とし、かつ、パラメータ設定の自由度を大きくした情報処理装置、コード生成方法、コード検証方法、およびその方法をコンピュータに実行させるためのプログラムを提供することである。
【課題を解決するための手段】
【0066】
上記目的を達成するための本発明の情報処理装置は、(k, n)閾値法により生成される情報の改ざんを検知する情報処理装置であって、
秘密情報sが入力されると、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報sを前記秘密情報s_1および秘密情報s_2に分割する秘密情報分割部と、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出するコード生成部と、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力するコード分散部と、
復元対象となる、k組分の分散符号語情報として(x1', F_1')乃至(xk', F_k')が入力されると、該(x1', F_1')から該(xk', F_k')の点を通る(k-1)次多項式F'を生成し、該(k-1)次多項式F'に埋め込まれた秘密情報s'およびチェック用データv'を復元するコード復元部と、
前記秘密情報分割部によって前記秘密情報s'が分割された秘密情報s'_1および秘密情報s'_2を該秘密情報分割部から受け取ると、関数M(s'_1, s'_2)の値と前記チェック用データv'が等しいかを否かを判定し、関数M(s'_1, s'_2)の値と該チェック用データv'が等しい場合、前記秘密情報s'は改ざんされていないと判定し、関数M(s'_1, s'_2)の値と該チェック用データv'が等しくない場合、前記秘密情報s'は改ざんされていると判定するコード検証部と、を有する。
【0067】
また、本発明のコード生成方法は、(k, n)閾値法により生成される情報の改ざんを検知するためのコード生成方法であって、
符号化対象の秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出し、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力するものである。
【0068】
また、本発明のコード検証方法は、(k, n)閾値法により生成された情報の改ざんを検知するためのコード検証方法であって、
(k-1)次多項式Fとして、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))のうち、復元対象となる、k組分の分散符号語情報の(x1, F_1)乃至(xk, F_k)に対して、該(x1, F_1)から該(xk, F_k)の点を通る(k-1)次多項式F'を生成し、
前記(k-1)次多項式F'に埋め込まれた秘密情報sおよびチェック用データvを復元し、
前記秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、関数M(s_1, s_2)の値と前記チェック用データvが等しいかを否かを判定し、関数M(s_1, s_2)の値と該チェック用データvが等しい場合、前記秘密情報sは改ざんされていないと判定し、関数M(s_1, s_2)の値と該チェック用データvが等しくない場合、前記秘密情報sは改ざんされていると判定するものである。
【0069】
また、本発明のプログラムは、(k, n)閾値法により生成される情報の改ざんを検知するためのコードを生成するコンピュータに実行させるプログラムであって、
符号化対象の秘密情報sが入力されると、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報sを前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出し、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力する処理を前記コンピュータに実行させるものである。
【0070】
さらに、本発明のプログラムは、(k, n)閾値法により生成された情報の改ざんを検知するためのコードを検証するコンピュータに実行させるプログラムであって、
(k-1)次多項式Fとして、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))のうち、復元対象となる、k組分の分散符号語情報の(x1, F_1)乃至(xk, F_k)が入力されると、該(x1, F_1)から該(xk, F_k)の点を通る(k-1)次多項式F'を生成し、
前記(k-1)次多項式F'に埋め込まれた秘密情報sおよびチェック用データvを復元し、
前記秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、関数M(s_1, s_2)の値と前記チェック用データvが等しいかを否かを判定し、関数M(s_1, s_2)の値と該チェック用データvが等しい場合、前記秘密情報sは改ざんされていないと判定し、関数M(s_1, s_2)の値と該チェック用データvが等しくない場合、前記秘密情報sは改ざんされていると判定する処理を前記コンピュータに実行させるものである。
【発明の効果】
【0071】
本発明によれば、(k, n)閾値法による分散情報の改ざんを高確率および効率的に検知可能とし、かつ、パラメータ設定の自由度を大きくすることができる。
【図面の簡単な説明】
【0072】
【図1】本実施形態の情報処理装置の一構成例を示すブロック図である。
【図2】図1に示した情報処理装置の具体的構成例を示すブロック図である。
【図3A】本実施形態の情報処理装置に含まれるコード生成装置の一構成例を示すブロック図である。
【図3B】本実施形態の情報処理装置に含まれるコード検証装置の一構成例を示すブロック図である。
【図4】図3Aに示したコード生成装置の動作手順を示すフローチャートである。
【図5】図3Bに示したコード検証装置の動作手順を示すフローチャートである。
【図6】本実施形態による、分散情報を生成する手順を示すフローチャートである。
【図7】本実施形態による、分散情報を復元する手順を示すフローチャートである。
【図8A】関連する分散情報生成装置の一構成例を示すブロック図である。
【図8B】関連する復元装置の一構成例を示すブロック図である。
【図9】図8Aに示した分散情報生成装置の動作手順を示すフローチャートである。
【図10】図8Bに示した復元装置の動作手順を示すフローチャートである。
【図11A】非特許文献2または非特許文献3に開示されたコード生成装置の一構成例を示すブロック図である。
【図11B】非特許文献2または非特許文献3に開示されたコード検証装置の一構成例を示すブロック図である。
【図12A】非特許文献4に開示されたコード生成装置の一構成例を示すブロック図である。
【図12B】非特許文献4に開示されたコード検証装置の一構成例を示すブロック図である。
【発明を実施するための形態】
【0073】
本実施形態について図面を参照して詳細に説明する。図1は本実施形態の情報処理装置の一構成例を示すブロック図である。
【0074】
図1に示すように、本実施形態の情報処理装置10は、記憶部35と、制御部25とを有する。制御部25は、コード分散部702と、改ざん検知コード生成部100と、改ざん検知コード検証部200と、コード復元部801と、後述する秘密情報分割部501とを有する。
【0075】
図2は図1に示した情報処理装置の具体的構成例を示すブロック図である。
【0076】
図2に示すように、プログラムにしたがって処理を実行するCPU(Central Processing Unit)11と、CPU11に供給するプログラムおよび演算処理過程の情報を一時的に保存するためのRAM(Random Access Memory)13と、プログラムが予め格納された主記憶部12と、秘密情報、閾値および分散情報数などの演算処理に必要な情報が格納されたデータ蓄積部14と、記憶部35の各記憶領域間のデータ転送を制御するメモリ制御インタフェイス部15と、情報を入力するための入力部20と、演算結果を出力するための出力部30と、入力部20および出力部30の入出力制御を行うI/Oインタフェイス部16とを有する。これらの構成は、バス18を介して接続されている。
【0077】
プログラムには、コード分散部702、改ざん検知コード生成部100、改ざん検知コード検証部200、コード復元部801、および秘密情報分割部501の機能をCPU11に実行させるための処理手順が書き込まれている。CPU11がプログラムを実行することで、コード分散部702、改ざん検知コード生成部100、改ざん検知コード検証部200、コード復元部801、および秘密情報分割部501が情報処理装置10に仮想的に構成される。
【0078】
なお、プログラムに、秘密情報符号化部301、秘密情報復号化部401および復号結果判定部402の機能をCPU11に実行させるための処理手順がさらに書き込まれていてもよい。
【0079】
なお、データ蓄積部14は、情報処理装置10内に設けていなくてもよく、情報処理装置10とは別に設けていてもよい。また、データ蓄積部14は、記憶部901を有する保管装置900としてもよい。
【0080】
また、演算処理に必要なプログラムやデータを格納した記憶媒体を入力部20に装着し、それらの情報を入力部20を介して情報処理装置10に入力するようにしてもよい。記憶部媒体には、例えば、磁気ディスク、半導体メモリ、光ディスクなどがあるが、その他の記録媒体であってもよい。
【0081】
次に、チェック用データに相当するコードの生成と検証に注目して、図1に示した情報処理装置10が実行する情報改ざん検知方法を説明する。本実施形態で処理対象となる秘密情報は、例えば、文書の暗号化のための秘密鍵となる素数である。この場合、秘密情報の元の集合は素数の集合となる。また、ここでは、情報処理装置10を、コードの生成処理を行うコード生成装置とコードの検証処理を行うコード検証装置の2つの装置に分けて説明する。
【0082】
図3Aは本実施形態の情報処理装置に含まれるコード生成装置の一構成例を示すブロック図である。図3Bは本実施形態の情報処理装置に含まれるコード検証装置の一構成例を示すブロック図である。本実施形態の情報処理装置10は、コード生成装置500およびコード検証装置600を含む構成である。
【0083】
図3Aに示すように、コード生成装置500は、秘密情報分割部501および改ざん検知コード生成部100を有する。この改ざん検知コード生成部100は、上述の改ざん検知コード生成装置100と同様な機能を有しているため同じ符号が用いられている。改ざん検知コード生成部100は、改ざん検知コード生成装置100と同様な構成であるため、ここでは、その詳細な説明を省略する。
【0084】
コード生成装置500は、秘密情報用データ集合Sの元である秘密情報sが入力されると、改ざん検知コード生成部の出力である、チェック用データ集合Cの元を出力し、また、入力されたsを出力する。
【0085】
秘密情報分割部501は、Sの元であるsが入力されると、秘密情報用データ集合S'の元である秘密情報s'と乱数用データ集合Rの元であるr'を改ざん検知コード生成部100へ出力する。改ざん検知コード生成部100は、秘密情報分割部501からs'とr'を受け取ると、s'とr'を用いてチェック用データ集合Cの要素であるcを生成し、生成したcを出力する。
【0086】
次に、コード検証装置600について説明する。
【0087】
図3Bに示すように、コード検証装置600は、上述した秘密情報分割部501と、改ざん検知コード検証部200とを有する。この改ざん検知コード検証部200は、上述の改ざん検知コード検証装置200と同様な機能を有しているため同じ符号が用いられている。改ざん検知コード検証部200は、改ざん検知コード検証装置200と同様な構成であるため、ここでは、その詳細な説明を省略する。
【0088】
コード検証装置600は、復元対象の秘密情報sと、復元対象の秘密情報から取り出されたチェック用データ集合Cの元cとが入力されると、sと改ざん検知コード検証部200の出力である検証結果を出力し、また、入力されたsを出力する。
【0089】
秘密情報分割部501は、その出力の秘密情報と一様乱数の改ざん検知コード生成部の出力である秘密情報と一様乱数の改ざん検知コード生成部の入力である秘密情報用データ集合S'の元である秘密情報s'とし、秘密情報と一様乱数の改ざん検知コード生成部の入力である乱数用データ集合Rの元であるr'とする。
【0090】
改ざん検知コード検証部200は、s'とr'とcとが入力されると、これらの情報を用いて検証処理を行い、検証結果を出力する。
【0091】
次に、コード生成装置500の動作手順を、図4のフローチャートを参照して説明する。
【0092】
秘密情報用データ集合Sの元sがコード生成装置500に入力される(ステップC1)。秘密情報分割部501は、秘密情報sが入力されると、秘密情報用データ集合S'の元である秘密情報s'と、乱数用データ集合Rの元であるr'を生成し、s'およびr'を改ざん検知コード生成部100へ出力する(ステップC2)。
【0093】
改ざん検知コード生成部100は、秘密情報用データ集合S'の元である秘密情報s'と、乱数用データ集合Rの元であるr'が入力されると、これらを用いてチェック用データ集合Cの元であるcを生成し、生成したcを出力する(ステップC3)。
【0094】
ここでは、詳細な説明を省略するが、ステップC3で生成されたチェック用データcが分散情報に埋め込まれる。
【0095】
次に、コード検証装置600の動作手順を、図5のフローチャートを参照して説明する。
【0096】
復元対象の秘密情報用データ集合Sの元sと、秘密情報から取り出された、チェック用データ集合Cの元であるcとがコード検証装置600に入力される(ステップD1)。秘密情報分割部501は、sが入力されると、sを用いて、秘密情報用データ集合S'の元である秘密情報s'と、乱数用データ集合Rの元であるr'を生成し、s'およびr'を改ざん検知コード検証部200へ出力する(ステップD2)。
【0097】
改ざん検知コード検証部200は、s'およびr'を秘密情報分割部501より受け取り、c'が入力されると、これらの情報を用いて検証処理を行い、検証結果を出力する(ステップD3)。改ざん検知コード検証部200は、s'およびr'を用いて算出される値とc'とが一致している場合、情報が改ざんされていないと判定し、それらの値が一致していない場合、情報が改ざんされていると判定する。
【0098】
ここまで、チェック用データのコードに注目して説明したが、チェック用データを分散情報に埋め込む場合の処理方法について説明する。
【0099】
ここでは、コード分散部702は分散符号語生成部(不図示)を含み、コード復元部801は符号語復元部(不図示)を含み、改ざん検知コード検証部200が符号語検証部(不図示)を含むものとする。これらの構成もCPU11がプログラムを実行することで仮想的に構成されるものである。
【0100】
はじめに、秘密情報に対して分散符号化処理を行って、分散情報を生成する手順を説明する。図6は、本実施形態による、分散情報を生成する手順を示すフローチャートである。
【0101】
図6に示すように、秘密情報分割部501は、秘密情報sを秘密情報s_1および秘密情報s_2の2つに分割する処理を行う(ステップE1)。その際、秘密情報分割部501は、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が秘密情報sの元の集合から一様にランダムに選択された要素となるようにする。続いて、改ざん検知コード生成部100は、秘密情報s_1と秘密情報s_2を入力とする2入力の関数M()の出力としてチェック用データvを算出する(ステップE2)。
【0102】
その後、分散符号語生成部(不図示)は、秘密情報sとチェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値x1乃至xnを多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として生成し、分散符号語情報を出力する(ステップE3)。
【0103】
次に、復元対象となる情報が入力されたとき、その情報が改ざんされているか否かを判定する手順を説明する。図7は、本実施形態による、分散情報を復元する手順を示すフローチャートである。
【0104】
符号語復元部(不図示)は、k組分の分散符号語情報として(x1', F_1')乃至(xk', F_k')が入力されると、これらの点を通る(k-1)次多項式F'を生成し、多項式F'に埋め込まれた秘密情報s'とチェック用データv'を読み出して出力する(ステップF1)。秘密情報分割部501は、s'が入力されると、s'をs'_1とs'_2に分割する(ステップF2)。
【0105】
符号語検証部(不図示)は、M(s'_1,s'_2)とv'が等しいか否かを判定する。その結果、符号語検証部(不図示)は、M(s'_1,s'_2)とv'が等しい場合、情報が改ざんされていない旨の検証結果を出力し、M(s'_1,s'_2)とv'が等しくない場合、情報が改ざんされている旨の検証結果を出力する(ステップF3)。
【0106】
本実施形態では、コード生成方法において、秘密情報sを2つの情報s2_1とs2_2に分割する際、乱数の元s2_2は乱数Rが選ばれる集合から一様にランダムに選択された要素となるように分割し、s2_1をsとし、s2_2をrとして、ある関数M()にそれらを入力し、その出力をコードとしている。
【0107】
このような方法により、秘密情報が選ばれる集合と乱数が選ばれる集合とコードの集合上の加算を+と表すとき、秘密情報s1と乱数r1について、s1とc1 = M(s1,r1)を与えられた改ざん者がM(s1+s1' ,r1+r1')= M(s1, r1)+c1'を満たすs1'、r1'、c1'を生成するという改ざんを高い確率で検知可能となっている。
【0108】
そして、s2_2の乱数性とM()の性質によって、s2_1、s2_2を与えられない改ざん者は、M(s2_1+s2_1',s2_2+s2_2')=M(s2_1,s2_2)+c'となるようなs2_1'、s2_2'、c'を生成することは困難となる。
【0109】
さらに、本実施形態では、秘密情報用データ集合Sの元である秘密情報sと乱数用データ集合Rの元であるrのサイズを独立に設定可能なため、パラメータを自由に設定可能となる。よって、(k,n)閾値法による分散情報の改ざんを高確率および効率的に検知可能とし、かつ、パラメータ設定の自由度を大きくすることができる。
【実施例1】
【0110】
本実施例は、上述した実施形態に、非特許文献3の方法を適用したものである。本実施例では、非特許文献3の方式を適用する場合を説明するが、上述した実施形態の情報改ざん検知方法の関数M()に他の方式を適用してもよい。
【0111】
非特許文献3の方法は、背景技術の欄で説明したように、以下の通りである。
【0112】
非特許文献3に開示された方法は、pを素数とし、Nを正の整数として、(Z/pZ)^Nを秘密情報の集合とする方式である。(Z/pZ)^Nの元をs、または(s_1,s_2,...,s_N)と記す。また、(Z/pZ)^Nの代わりにガロア体GF(p^N)を用いてもよい。
【0113】
このとき、(s_1,s_2,...,s_N)のコードとして、sと、Z/pZから一様ランダムに選択した要素rとし、*をZ/pZ上の乗算とすると、s_1*r + s_2*r^2 + ... + s_{N-1}*r^{N-1} + s_{N}*r^{N+1} mod p をチェック用データとする。
【0114】
Z/pZの代わりにqを素数のべき乗としたとき、それぞれの集合をガロア体GF(q)の要素として乗算をガロア体上の乗算としてもよい。
【0115】
次に、本実施例の動作手順を図3Aおよび図3Bを参照して説明する。
【0116】
はじめにコード生成方法について説明する。コード生成装置500に、秘密情報sとして(Z/pZ)^{N+1}の要素である(s1,s2,...,s{N+1})が入力された場合を例に説明する。
【0117】
コード生成装置500は、秘密情報分割部501に、s=(s1,s2,...,s{N+1})を入力する。なお、各siは一様にランダム選ばれた値であるものとする。
【0118】
秘密情報分割部501は、sを、S'=(s1,s2,...,sN)とR'=s{N+1}と分割して出力する。ここでは、単純にs{N+1}をR'としたが、s1からsNのうちいずれの値でもよい。
【0119】
続いて、改ざん検知コード生成部100は、S'とR'が入力されると、s1*s{N+1} + s2*s{N+1}^2 + ... + s{N-1}*s{N+1}^{N-1} + s_{N}*s{N+1}^{N+1} mod p= Cとして計算する。コード生成装置500はsとcを出力する。
【0120】
次に、コード検証方法について説明する。
【0121】
コード検証装置600に、秘密情報sとして(Z/pZ)^{N+1}の要素であるs'= (s1', s2',...,s{N+1}')が入力され、チェック用データとしてc'が入力された場合を例に説明する。
【0122】
コード検証装置600は、秘密情報分割部501に、s'=(s1',s2',...,s{N+1}')を入力する。秘密情報分割装置501は、s'が入力されると、s'をS'=(s1',s2',...,sN')とR'=s{N+1}'とに分割して出力する。なお、ここでは単純にs{N+1}をR'としたが、s1からsNのうちいずれの値でもよい。
【0123】
続いて、コード検証装置600は、s'とr'とc'を改ざん検知コード検証部200に入力する。改ざん検知コード検証部200は、s'とr'とc'が入力されると、s1'*s{N+1}' + s2'*s{N+1}'^2 + ... + s{N-1}'*s{N+1}'^{N-1} + s{N}'*s{N+1}'^{N+1} mod pを計算し、計算結果をc'と比較する。改ざん検知コード検証部200は、比較の結果、これらの値が等しかった場合には改ざんが無かったことを表す記号を出力する。それ以外の場合は改ざんがあったことを表す記号を出力する。コード検証装置600は、入力のs'と改ざん検知コード検証装置200の出力結果を出力する。
【0124】
ここで、コード生成装置500の処理内容を詳細に見ると、s=(s1,s2,...,s{N+1})とc= s1*s{N+1} + s2*s{N+1}^2 + ... + s{N-1}*s{N+1}^{N-1} + s_{N}*s{N+1}^{N+1} mod pのセットである(s1,s2,...,s{N+1},c)がコードとなっている。
【0125】
このコードについて、(s1+d1,s2+d2,...,s{N+1}+d{N+1},c+dc)の検証結果が正しくなるようなd1,d2,...,d{N+1},dcを生成することは、非特許文献3の方式において、s= (s1, s2,...,s{N})を秘密情報s{N+1}を乱数として生成されたチェック用データcについて、s={s1+d1,...,sN+dN}を秘密情報とし、s{N+1}+d{N+1}を乱数とし、c+dcをチェック用データとしたときの検証結果が、改ざんがなかったとなるような(d1, d2,..., d{N+1}, dc)を生成することに他ならない。
【0126】
よって非特許文献3に開示された方式の持つ安全性により、改ざんの検知確率が高い値に保たれる。
【0127】
また、この方式においてはs{N+1}が選ばれる集合の大きさが非特許文献3における乱数の選ばれる集合の大きさになっている。この乱数の選ばれる集合の大きさのサイズが改ざん検知の成功確率にかかわっている。そのため、s{N+1}が選ばれる集合の大きさを調節することによってコードの長さと改ざんの成功確率を調整することが可能となっており、非特許文献4の方式に対してパラメータが柔軟にとれるようになっていることがわかる。
【0128】
そして、非特許文献4の方式では秘密情報の選ばれる集合のサイズを|S|とし、改ざん者による改ざんの成功確率をδとしたとき、コードの集合のサイズはおよそ|S|/δであった。
【0129】
一方、上述した方法では非特許文献3による方式の性質より、s{N+1}が選ばれる集合の大きさを|s{N+1}|とすると、ほぼ1/|s{N+1}|が改ざんの成功確率となる。|s{N+1}|はチェック用データのサイズとほぼ等しいため、この方式のコードの集合のサイズはおよそ|S|/δとなっていることがわかる。
【0130】
つまり、本実施例の方法では、秘密情報の集合の要素数はs*rとなり、改ざんの確率は1/r程度となる。このとき、コードの集合の要素数はおよそrとなり、非特許文献4の方式と同程度の演算効率となることがわかる。
【0131】
さらに、非特許文献4のsとrのサイズは非特許文献3の方式の性質によってほぼ独立に設定することが可能であるので、パラメータが自由に設定可能な方式となる。よって非特許文献4に記載されている方式と同程度の効率を持ちながら、M()として非特許文献3に開示された技術を用いることで、パラメータを自由に設定可能となる。
【産業上の利用可能性】
【0132】
本発明を秘密鍵などの機密情報の分散管理に利用できる。
【符号の説明】
【0133】
10 情報処理装置
11 CPU
12 主記憶部
13 RAM
14 データ蓄積部
15 メモリ制御インタフェイス部
16 I/Oインタフェイス部
20 入力部
25 制御部
30 出力部
35 記憶部
101 チェック用データ生成部
201 同一性判定部
501 秘密情報分割部
701 コード生成部
702 コード分散部
801 コード復元部
802 コード正当性検証部

【特許請求の範囲】
【請求項1】
(k, n)閾値法により生成される情報の改ざんを検知する情報処理装置であって、
秘密情報sが入力されると、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報sを前記秘密情報s_1および秘密情報s_2に分割する秘密情報分割部と、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出するコード生成部と、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力するコード分散部と、
復元対象となる、k組分の分散符号語情報として(x1', F_1')乃至(xk', F_k')が入力されると、該(x1', F_1')から該(xk', F_k')の点を通る(k-1)次多項式F'を生成し、該(k-1)次多項式F'に埋め込まれた秘密情報s'およびチェック用データv'を復元するコード復元部と、
前記秘密情報分割部によって前記秘密情報s'が分割された秘密情報s'_1および秘密情報s'_2を該秘密情報分割部から受け取ると、関数M(s'_1, s'_2)の値と前記チェック用データv'が等しいかを否かを判定し、関数M(s'_1, s'_2)の値と該チェック用データv'が等しい場合、前記秘密情報s'は改ざんされていないと判定し、関数M(s'_1, s'_2)の値と該チェック用データv'が等しくない場合、前記秘密情報s'は改ざんされていると判定するコード検証部と、
を有する情報処理装置。
【請求項2】
pを素数とし、Nを正の整数とし、(Z/pZ)^{N+1}を秘密情報sの集合とし、(Z/pZ)^{N+1}の元を(x_1,x_2,...,x_{N+1})とし、さらに、*をZ/pZ上の乗算とすると、
前記秘密情報分割部は、
前記元x_1, x_2,..., x_{N+1}のうちいずれか1つの値を選択してその値を秘密情報s_2とし、選択した値以外を秘密情報s_1 = (x'_1, x'_2,...,x'_{N})とすると、M(s_1, s_2)= x'_1*s_2 + x'_2*s_2^2 + ... + x'_{N-1}*s_2^{N-1} + x'_{N}*s_2^{N+1} mod pを計算し、計算結果を前記チェック用データvとする、請求項1に記載の情報処理装置。
【請求項3】
(k, n)閾値法により生成される情報の改ざんを検知するためのコード生成方法であって、
符号化対象の秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出し、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力する、コード生成方法。
【請求項4】
pを素数とし、Nを正の整数とし、(Z/pZ)^{N+1}を秘密情報sの集合とし、(Z/pZ)^{N+1}の元を(x_1,x_2,...,x_{N+1})とし、さらに、*をZ/pZ上の乗算とすると、
前記元x_1, x_2,..., x_{N+1}のうちいずれか1つの値を選択してその値を秘密情報s_2とし、選択した値以外を秘密情報s_1 = (x'_1, x'_2,...,x'_{N})とすると、M(s_1, s_2)= x'_1*s_2 + x'_2*s_2^2 + ... + x'_{N-1}*s_2^{N-1} + x'_{N}*s_2^{N+1} mod pを計算し、計算結果を前記チェック用データvとする、請求項3に記載のコード生成方法。
【請求項5】
(k, n)閾値法により生成された情報の改ざんを検知するためのコード検証方法であって、
(k-1)次多項式Fとして、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))のうち、復元対象となる、k組分の分散符号語情報の(x1, F_1)乃至(xk, F_k)に対して、該(x1, F_1)から該(xk, F_k)の点を通る(k-1)次多項式F'を生成し、
前記(k-1)次多項式F'に埋め込まれた秘密情報sおよびチェック用データvを復元し、
前記秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、関数M(s_1, s_2)の値と前記チェック用データvが等しいかを否かを判定し、関数M(s_1, s_2)の値と該チェック用データvが等しい場合、前記秘密情報sは改ざんされていないと判定し、関数M(s_1, s_2)の値と該チェック用データvが等しくない場合、前記秘密情報sは改ざんされていると判定する、コード検証方法。
【請求項6】
pを素数とし、Nを正の整数とし、(Z/pZ)^{N+1}を秘密情報sの集合とし、(Z/pZ)^{N+1}の元を(x_1,x_2,...,x_{N+1})とし、さらに、*をZ/pZ上の乗算とすると、
前記元x_1, x_2,..., x_{N+1}のうちいずれか1つの値を選択してその値を秘密情報s_2とし、選択した値以外を秘密情報s_1 = (x'_1, x'_2,...,x'_{N})とすると、M(s_1, s_2)= x'_1*s_2 + x'_2*s_2^2 + ... + x'_{N-1}*s_2^{N-1} + x'_{N}*s_2^{N+1} mod pを計算し、計算結果を前記チェック用データvとする、請求項5に記載のコード検証方法。
【請求項7】
(k, n)閾値法により生成される情報の改ざんを検知するためのコードを生成するコンピュータに実行させるプログラムであって、
符号化対象の秘密情報sが入力されると、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報sを前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、前記秘密情報s_1と前記秘密情報s_2を入力とする関数M(s_1, s_2)の値をチェック用データvとして算出し、
前記秘密情報sと前記チェック用データvが埋め込まれた(k-1)次多項式Fを生成し、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))を分散符号語情報として出力する処理を前記コンピュータに実行させるためのプログラム。
【請求項8】
(k, n)閾値法により生成された情報の改ざんを検知するためのコードを検証するコンピュータに実行させるプログラムであって、
(k-1)次多項式Fとして、互いに異なるn個の値であるx1乃至xnを前記(k-1)次多項式Fに入力したときの、入力と出力との組である(x1, F(x1))乃至(xn, F(xn))のうち、復元対象となる、k組分の分散符号語情報の(x1, F_1)乃至(xk, F_k)が入力されると、該(x1, F_1)から該(xk, F_k)の点を通る(k-1)次多項式F'を生成し、
前記(k-1)次多項式F'に埋め込まれた秘密情報sおよびチェック用データvを復元し、
前記秘密情報sを、秘密情報s_1および秘密情報s_2からなる2つの分割情報のうち少なくとも一方が前記秘密情報sの元の集合から一様にランダムに選択された要素となるように、前記秘密情報s_1および秘密情報s_2に分割し、
2入力の関数M()について、関数M(s_1, s_2)の値と前記チェック用データvが等しいかを否かを判定し、関数M(s_1, s_2)の値と該チェック用データvが等しい場合、前記秘密情報sは改ざんされていないと判定し、関数M(s_1, s_2)の値と該チェック用データvが等しくない場合、前記秘密情報sは改ざんされていると判定する処理を前記コンピュータに実行させるためのプログラム。
【請求項9】
pを素数とし、Nを正の整数とし、(Z/pZ)^{N+1}を秘密情報sの集合とし、(Z/pZ)^{N+1}の元を(x_1,x_2,...,x_{N+1})とし、さらに、*をZ/pZ上の乗算とすると、
前記元x_1, x_2,..., x_{N+1}のうちいずれか1つの値を選択してその値を秘密情報s_2とし、選択した値以外を秘密情報s_1 = (x'_1, x'_2,...,x'_{N})とすると、M(s_1, s_2)= x'_1*s_2 + x'_2*s_2^2 + ... + x'_{N-1}*s_2^{N-1} + x'_{N}*s_2^{N+1} mod pを計算し、計算結果を前記チェック用データvとする、請求項7または8に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12A】
image rotate

【図12B】
image rotate


【公開番号】特開2011−13428(P2011−13428A)
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願番号】特願2009−156904(P2009−156904)
【出願日】平成21年7月1日(2009.7.1)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】