JP4334582B2 - 秘密分散装置、方法及びプログラム - Google Patents

秘密分散装置、方法及びプログラム Download PDF

Info

Publication number
JP4334582B2
JP4334582B2 JP2007168082A JP2007168082A JP4334582B2 JP 4334582 B2 JP4334582 B2 JP 4334582B2 JP 2007168082 A JP2007168082 A JP 2007168082A JP 2007168082 A JP2007168082 A JP 2007168082A JP 4334582 B2 JP4334582 B2 JP 4334582B2
Authority
JP
Japan
Prior art keywords
matrix
information
distributed
secret
columns
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007168082A
Other languages
English (en)
Other versions
JP2009010531A (ja
Inventor
吉弘 藤井
範和 保坂
美奈子 多田
岳久 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007168082A priority Critical patent/JP4334582B2/ja
Priority to US12/114,237 priority patent/US8074068B2/en
Publication of JP2009010531A publication Critical patent/JP2009010531A/ja
Application granted granted Critical
Publication of JP4334582B2 publication Critical patent/JP4334582B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes

Description

本発明は、(k,n)閾値法を用いた秘密分散装置、方法及びプログラムに係り、例えば多項式補間を用いずに高速に実行可能な(k,n)閾値法を実現し得る秘密分散装置、方法及びプログラムに関する。
一般に、暗号化鍵などの秘密情報を紛失した場合の対策としては、予め秘密情報のコピーを作成しておくことが有効である。しかしながら、秘密情報のコピーを作成すると、盗難のリスクが高くなるという問題が生じる。このような問題を解決する手法として、1979年にシャミア(Shamir)が(k,n)閾値法と呼ばれる秘密分散法を提案している(例えば、非特許文献1参照)。
(k,n)閾値法では、秘密情報をn個の分散情報に分割し、n個の分散情報の中から任意のk個を集めれば元の秘密情報を復元できるが、k−1個の分散情報からでは、元の秘密情報に関する情報を全く得られない。すなわち、(k,n)閾値法は、閾値kを境にした秘密情報の復元特性をもっている(なお、2≦k≦n)。
このため、(k,n)閾値法によれば、k−1個以下の分散情報が漏洩しても元の秘密情報が安全であり、n−k個以下の分散情報を紛失しても元の秘密情報を復元できるといった管理を実現できる。
しかしながら、シャミアの(k,n)閾値法では、秘密情報の分散や復元の処理を、多くの計算量を要する多項式補間により実現するので、大量のデータを秘密分散するためには、高速な計算機を必要とする不都合がある。
一方、このような不都合を解決し、計算量を大幅に削減し得る(k,n)閾値法として、藤井らの方式と栗原らの方式が知られている(例えば、非特許文献2、非特許文献3参照)。ここで、藤井らの方式と栗原らの方式は、秘密情報の分散処理や復元処理を排他的論理和演算のみで実現するので、高速に実行可能となっている。
しかしながら、藤井らの方式と栗原らの方式は、閾値kが2又は3に限定されるという不都合がある。
A. Shamir: "How to share a secret", Communications of the ACM, 22, 11, pp.612-613 (1979) 藤井吉弘,多田美奈子,保坂範和,栃窪孝也,加藤岳久: "高速な(2,n)閾値法の構成とシステムへの応用", CSS2005予稿集, (2005) 栗原淳,清本晋作,福島和英,田中俊昭: "XORを用いた(3,n)閾値秘密分散法", SCIS2007予稿集, (2007)
以上説明したように、シャミアによる(k,n)閾値法では、多項式補間を用いるため、高速な計算機が必要となる不都合がある。一方、藤井らの方式と栗原らの方式は、閾値kが2又は3に限定されるという不都合がある。
本発明は上記実情を考慮してなされたもので、多項式補間を用いずに高速に実行可能な任意の閾値kに対する(k,n)閾値法を実現し得る秘密分散装置、方法及びプログラムを提供することを目的とする。
第1の発明は、秘密情報Sが分散されて生成されたn個の分散情報D(1),…,D(n)を個別にn個の記憶装置に配布し、且つ、前記n個の分散情報のうち、任意のk個の分散情報から秘密情報Sを復元可能な(k,n)閾値法(但し、2≦k≦n)の秘密分散装置であって、1個あたりk(n−1)行×(n−1)列のサイズをもつ列ベクトルn個からなり、前記n個の列ベクトルのうちの任意のk個の列ベクトルから構成される行列がフルランクとなるGF(2)の生成行列Gを生成する(但し、前記生成行列Gのサイズはk(n−1)行×n(n−1)列、GF(2)は位数2の有限体)手段と、前記分散情報D(1)〜D(n)が配布される前に、前記秘密情報Sが一時的に記憶される記憶手段と、この秘密情報Sをn−1個に分割すると共に、分割結果に1からn−1までの行番号j(但し、1≦j≦n−1)を割り当てることにより、互いに同一サイズのn−1個の第1分割秘密データK(1),…,K(j),…,K(n−1)を生成する手段と、前記各分割秘密データのサイズと同一サイズの(k−1)(n−1)個の乱数データR(1),…,R((k−1)(n−1))を生成する手段と、前記乱数データ及び前記分割秘密データ(R(1),…,R((k−1)(n−1)),K(1),…,K(j),…,K(n−1))と前記生成行列Gとの行列の積を算出し、この算出結果のj×(n−1)+i列目を分散部分データD(j,i)に割り当てて、n(n−1)個の分散部分データD(j,i)(但し、1≦j≦n、1≦i≦n−1)を算出する分散部分データ算出手段と、前記各分散部分データのうち、同一の行番号jを有するn−1個の前記分散部分データD(j,1)〜D(j,n−1)毎に、行番号jを割り当ててn個のヘッダ情報H(1),…,H(j),…,H(n)を生成する手段と、行番号jを有するヘッダ情報H(j)と、n−1個の分散部分データD(j,1)〜D(j,n−1)の列ベクトルからなるヘッダ情報と同一の行番号を持つ分散情報D(j)を個別に前記n個の記憶装置にそれぞれ配布する手段と、配布したn個の分散情報D(1),…,D(j),…,D(n)のうち任意のk個の分散情報に含まれるk個の列ベクトルから生成行列Gのうちのk(n−1)行×k(n−1)列の部分行列G’を構成し、この部分行列G’を(n−1)行×(n−1)列で区分けした行列単位で1行目からk−1行目までの乱数成分をゼロにするように基本行列B(1),…,B(k-1)を再帰的に部分行列G’,…,G(k-2)に乗じることにより、最後に乗じて得られた部分行列G(k-1)の区分けした単位におけるk行k列目の成分の逆行列を用いて基本行列B(k)を作成し、全ての基本行列を乗じて復元行列B(1)…B(k-1)(k)を算出する手段と、当該k個の分散情報に前記復元行列を乗算することにより、秘密情報を復元する復元手段とを備えた秘密分散装置である。
なお、第1の発明は、「装置」として表現したが、これに限らず、「プログラム」、「プログラムを記憶した記憶媒体」又は「方法」として表現してもよい。
(作用)
第1の発明は、生成行列Gを用いて分散部分データを生成する構成により、秘密情報の分散処理を排他的論理和により非常に高速に実行することができる。また、復元処理においては、生成行列Gの逆行列をそのまま求めることなく、生成行列を区分けしたブロック単位で再帰的に処理して復元行列を求める構成により、生成行列Gの逆行列を求める場合に比べ、高速に実行することができる。
以上説明したように本発明によれば、多項式補間を用いずに高速に実行可能な(k,n)閾値法を実現することができる。
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各装置は、装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
(第1の実施形態)
図1は本発明の第1の実施形態に係る秘密分散システムの構成を示す模式図である。この秘密分散システムは、1台のクライアント装置100及びn−1台の保管サーバ装置200,300,…,n00が互いにインターネット等のネットワークNWを介して接続されている。
これら合計n台の装置100,200,300,…,n00は、(k,n)閾値法におけるn人のメンバに対応する。特に、n台の装置100,200,…,n00が個別に有するn個の保存部101,201,…,n01は、n人のメンバが個別に有するn個の記憶装置に対応する。各装置100,200,300,…,n00には、それぞれ分散情報の配布順番を示すj番号(行番号)が割当てられている。例えば、クライアント装置100には、j=1番目が割り当てられており、保管サーバ装置200にはj=2番目が割り当てられている。保管サーバ装置300にはj=3番目が割り当てられ、…、保管サーバ装置n00にはj=n番目が割り当てられている。
ここで、クライアント装置100は、秘密情報Sが分散されてなるn個(但し、n≧k≧2)の分散情報D(0),…,D(n−1)を個別にn台の装置100,200,…,n00に配布し、且つ、n個の分散情報のうち、任意のk個の分散情報から秘密情報Sを復元可能な(k,n)閾値法の秘密分散装置を実現するものである。なお、分散情報の個数はk個以上であればよい。例えばk=4,n=5とし、秘密情報Sをn−1(=4)個に分割して後述するK(1),K(2),K(3),K(4)とし、配布した5個の分散情報D(1),D(2),D(3),D(4),D(5)から任意の4個の分散情報を用いて秘密情報Sを復元してもよい。
クライアント装置100は、保存部101、入力部102、生成行列生成部103、復元行列生成部104、分散部分データ生成部105、ハッシュ値生成部106、元データ復元部107、ハッシュ値検証部108、制御部109、出力部110及び通信部111が互いにバスを介して接続されている。
保存部101は、制御部109から読出/書込可能なハードウェア資源としての記憶装置であり、後述する分散情報D(1)〜D(n)が配布される前に、秘密情報Sが一時的に記憶される。また、保存部101は、分散情報D(1)〜D(n)が作成されると、分散情報作成情報が記憶され、分散情報が配布された後、j=1番目の分散情報D(1)が記憶されると共に、秘密情報Sが削除される。ここで、分散情報作成情報は、分散情報D(j)の識別情報jと、分散情報D(j)の配布先識別情報(装置ID、装置のアドレス情報等)とが互いに関連付けられた情報である。
入力部102は、キーボード又はマウス等の通常の入力デバイスであり、操作者の操作により、分散処理又は復号処理の開始等の命令や、秘密情報S等の情報をクライアント装置100内に入力する機能をもっている。
生成行列生成部103は、制御部109により制御され、図2にk=4,n=5とした(4,5)閾値法の例を示す如き、1個あたりk(n−1)行×(n−1)列のサイズをもつn個の列ベクトルからなり、n個の列ベクトルのうちの任意のk個の列ベクトルがフルランクとなるGF(2)の生成行列Gを生成する機能をもっている。但し、生成行列Gのサイズはk(n−1)行×n(n−1)列である。GF(2)は位数2の有限体である。フルランクとは、行列の基本変形を施して得られるランク(rank:階数)がフル(full:満杯)(=k(n−1))であり、線形独立であることを意味している。
具体的には、生成行列生成部103は、入力された分散数n及び閾値kが保存部101に記憶されたとき、保存部101内の分散数n及び閾値kに基づいて、(n−1)行×(n−1)列の単位で行列を区分けした際に、区分けしたi行j列のブロックについて、(n−1)行×(n−1)列の単位行列Eの最終行に1行×(n−1)列のゼロ行列を追加し、n行×(n−1)列の図3に示す如き行列E’を生成する処理と、n行×(n−1)列の行列E’を縦方向に(i−1)(j−1)回巡回シフトして行列E’((i-1)(j-1))を作成する図4の処理と、この行列E’((i-1)(j-1))から最終行を除いた(n−1)行×(n−1)列の行列E((i-1)(j-1))を取得して、i行j列のブロックに割り当てる図5の処理とをi行j列の全てのブロック(1≦i≦k、1≦j≦n)に対して実行することにより、図6に示すような生成行列Gを得る処理を実行する機能を持っている。なお、巡回シフトにおける縦方向は、上方向でも下方向でも同一方向であればよい。
復元行列生成部104は、制御部109により制御され、図7乃至図10に示すように、配布されたn個の分散情報D(1),…,D(j),…,D(n)のうち任意のk個の分散情報に含まれるk個の列ベクトルから生成行列Gのうちのk(n−1)行×k(n−1)列の部分行列G’を構成する機能と、この部分行列G’=(g(D(i_1),…,D(i_k)))=(U(1,1),…,U(i,j),…,U(k,k))(但し、U(i,j)=E((i-1)(j-1)))から当該部分行列G’を(n−1)行×(n−1)列の単位で区分けした際に、区分けした1行目の成分を全てゼロにするための基本行列B(1)を生成する機能と、部分行列G’に基本行列B(1)を乗じて、区分けした1行目の成分を全てゼロにする処理を行い、部分行列G(1)=G’B(1)を得る処理と、当該部分行列G(1)を(n−1)行×(n−1)列の単位で区分けした際に、区分けした2行目の成分を全てゼロにするための基本行列B(2)を生成する機能と、部分行列G(1)に基本行列B(2)を乗じて、区分けした2行目の成分を全てゼロにする処理を行い、部分行列G(2)=G(1)(2)を得る処理と、以下同様にして、得られた部分行列を部分行列G(d-1)としたとき、この部分行列G(d-1)を(n−1)行×(n−1)列の単位で区分けした際に、区分けしたd行目の成分を全てゼロにするための基本行列B(d)を生成する基本行列生成処理と、部分行列G(d-1)に基本行列B(d)を乗じて、区分けしたd行目の成分を全てゼロにする処理を行い、部分行列G(d)=G(d-1)(d)を得る部分行列生成処理と、これら基本行列生成処理及び部分行列生成処理をd=k−1行目まで再帰的に実行し、部分行列G(k-1)=G(k-2)(k-1)を得る処理と、部分行列G(k-1)におけるk行k列目の行列U(k,k)の逆行列U(k,k) -1をk行k列目に配置して他の成分をゼロにした基本行列B(k)を算出する機能と、全ての基本行列B(1),…,B(k-1),B(k)を乗じて復元行列B(1)…B(k-1)(k)を生成する機能とをもっている。なお、復元行列は、基本行列B(k)を求める前に、行列の積B(1)…B(k-1)を算出しておき、このB(1)…B(k-1)にB(k)を乗じることにより、生成してもよい。
また、部分行列G(k-1)は、次式で表すこともできる。
(k-1)=G(k-2)(k-1)
=G(k-3)(k-2)(k-1)

=G(1)(2)…B(k-2)(k-1)
=G’B(1)(2)…B(k-2)(k-1)
また、部分行列G(k-1)の逆行列(G(k-1)-1の(n−1)行(n−1)列で区分けした最後の右(n−1)列の行列と、基本行列B(k)の(n−1)行(n−1)列で区分けした最後の右(n−1)列の行列は等しくなる。
ここで、g(D(j))は、j個目の分散情報D(j)を算出するのに使用した生成行列Gの部分行列であり、列ベクトルともいう。また、(i_1)の表記は、任意の1個目を表し、(i_j)の表記は任意のj個目を表し、(i_k)の表記は任意のk個目を表している。すなわち、カッコ内の左側のiと下線“i_”は、“任意の”を表している(表記“i_”のiは行番号ではない)。また、例えばD(i_1)は、任意の1個目のD(*)なので、D(1)〜D(5)のいずれでもよい。
基本行列B(d)(=B(1),…,B(k-1))は、k(n−1)行×k(n−1)列の行列であり、(n−1)行×(n−1)列の単位で区分けしたk行k列の成分をb1,1,…,bi,j,…,bk,kとするとき、部分行列G(d-1)(但し、G(0)=G’)の成分U(i,j)、単位行列E及びゼロ行列0を用いて図8及び以下のように示される(但し、1≦d≦k−1)。
i,j=E (i=d, d+1≦j≦k)、
i,j=U(d,j) -1×U(d,d) (i=j, d+1≦i,j≦k)、
i,j=0 (上記以外のi,j)
また、基本行列B(d)(=B(1),…,B(k-1))は、k(n−1)行×k(n−1)列の行列であり、(n−1)行×(n−1)列の単位で区分けしたk行k列の成分をb1,1,…,bi,j,…,bk,kとするとき、部分行列G(d-1)(但し、G(0)=G’)の成分U(i,j)、単位行列E及びゼロ行列0を用いて図9及び以下のように示すこともできる(但し、1≦d≦k−1)。
i,j=E (i=j, d+1≦i,j≦k)、
i,j=U(d,d) -1×U(d,j) (i=d, d+1≦j≦k)、
i,j=0 (上記以外のi,j)
また、基本行列B(k)は、k(n−1)行×k(n−1)列の行列であり、(n−1)行×(n−1)列の単位で区分けしたk行k列の成分をb1,1,…,bi,j,…,bk,kとするとき、部分行列G(k-1)のk行k列目の成分の逆行列U(k,k) -1及びゼロ行列0を用いて図10及び以下のように示される。
i,j=U(k,k) -1 (i=j=k)、
i,j=0 (上記以外のi,j)
なお、図11は基本行列B(1)の一例を示しており、図12はk=4,n=5とした(4,5)閾値法における図8に示される基本行列を用いて構成した復元行列B(1)(2)(3)(4)の一例を示している。このような復元行列B(1)(2)…B(k-1)(k)は、k(n−1)行×k(n−1)列の行列を(n−1)行×(n−1)列の単位で区分けしたk行k列の成分のうち、1列目〜k−1列目の成分がゼロ行列であることから、k列目の成分のみが演算に用いられる。このため、復元行列B(1)(2)…B(k-1)(k)による復元処理は、k(n−1)行×k(n−1)列の行列の逆行列による復元処理に比べ、演算の負荷が小さいという利点がある。さらに図8の基本行列よりも、図9の基本行列を用いた行列の基本変形を行うほうが、逆行列演算の回数が少なくなるという利点がある。
分散部分データ生成部105は、制御部109により制御され、保存部101に一時的に記憶された秘密情報Sに基づいて、図13に一例(k=4,n=5の例)を示すように、n(n−1)個の分散部分データD(j,i)を生成する機能をもっている。具体的には、分散部分データ生成部105は、以下の各機能(f105−1)〜(f105−3)をもっている。
(f105−1) 保存部101に記憶された秘密情報Sをn−1個に分割すると共に、分割結果に1からn−1までの行番号j(但し、1≦j≦n−1)を割り当てることにより、互いに同一サイズのn−1個の分割秘密データK(1),…,K(j),…,K(n−1)を生成する機能。
(f105−2) 各分割秘密データのサイズと同一のサイズの乱数を(k−1)(n−1)個生成し、乱数データR(1),…,R((k−1)(n−1))を生成する機能。なお、各乱数R(i)、1≦i≦(k−1)(n−1)は、互いに独立である。
(f105−3) 分割秘密データK(1),…,K(j),…,K(n−1)、乱数データR(1),…,R((k−1)(n−1))、生成行列Gに基づいて、行列(R(1),…,R((k−1)(n−1)),K(1),…,K(j),…,K(n−1))と生成行列Gの積を算出し(但し、GF(2)上の演算)、計算結果のj×(n−1)+i列目のデータをD(j,i)に割り当てて、n(n−1)個の分散部分データD(j,i)を算出する(但し、1≦j≦n,1≦i≦n−1)機能。
ハッシュ値生成部106は、制御部109により制御され、制御部109からバスを介してヘッダ情報H(j)が入力されると、ヘッダ情報H(j)のハッシュ値h(H(j))を生成し、得られたハッシュ値h(H(j))をバスに出力する機能をもっている。なお、ハッシュ値生成部106は、ヘッダ情報H(j)を検証しない場合、省略可能である。
元データ復元部107は、制御部109に制御され、n台の装置100,…,n00に配布されたn個の分散情報D(1)〜D(n)のうち、任意のk個の分散情報D(i_1),…,D(i_j),…,D(i_k)(但し、1≦i_j≦n)に基づいて、秘密情報Sを復元する復元機能をもっている。具体的には元データ復元部107は、以下の各機能(f107−1)〜(f107−2)をもっている。
(f107−1) 収集されたk個の分散情報D(i_1),…,D(i_j),…,D(i_k)及び生成行列Gから復元行列生成部104により取得した復元行列を用いて、行列の積を算出し、計算結果を分割秘密データK(1),…,K(n−1)として出力する機能。
(f107−2) 復元されたn−1個の分割秘密データK(1),…,K(n−1)を互いに連接することにより、秘密情報S=K(1)‖K(2)‖…‖K(n−1)を復元する機能(但し、‖は連接を表す記号)。
ハッシュ値検証部108は、制御部109により制御され、制御部109からバスを介してヘッダ情報H(j)及びそのハッシュ値h(H(j))が入力されると、ハッシュ値h(H(j))に基づいてヘッダ情報H(j)を検証し、検証結果をバスに出力する機能をもっている。検証内容は、ヘッダ情報H(j)から計算したハッシュ値と、入力されたハッシュ値h(H(j))との一致により、ヘッダ情報H(j)を正当と判定する方式である。なお、ハッシュ値検証部108は、ヘッダ情報H(j)を検証しない場合、省略可能である。
ここで、ヘッダ情報H(j)は、図14の上方に一例を示すように、行番号jを示すデータ識別子、ヘッダのサイズを表すヘッダーサイズ、元データのサイズを表す元データサイズm、元の秘密情報Sの分割数を示す分割数n−1、分散部分データD(j,i)の処理単位ビットを示す処理単位ビット長a、乱数R(j)のデータサイズを示す乱数データサイズa、分割秘密データK(j)のサイズを表す分割データサイズa、パディングの有無やアルゴリズムを表すパディングアルゴリズム、ハッシュアルゴリズム情報(オプション)、生成行列Gの部分行列g(D(j))(オプション)などが考えられる。
ハッシュアルゴリズム情報は、ヘッダ情報のハッシュ値を算出し、ヘッダ情報の原本性を保証する場合などに追加される。すなわち、ハッシュアルゴリズム情報は、セキュリティの要件などに応じて追加又は省略される。但し、セキュリティの要件として予めシステムでハッシュアルゴリズムを決めている場合には、ハッシュアルゴリズム情報は、ヘッダ情報から省略可能である。
なお、分散情報D(j)のデータフォーマットは、図14の下方に一例を示すように、ヘッダ情報H(j)、そのハッシュ値h(H(j))、n−1個の分散部分データD(j,1),D(j,1),…,D(j,n-1)から構成されている。ここで、ハッシュ値h(H(j))は、オプション(option)であり、ヘッダ情報H(j)内のハッシュアルゴリズム情報と同様に、セキュリティの要件に応じて省略可能となっている。
制御部109は、入力部102から入力される命令に基づいて、後述する図15乃至図18のフローチャートに基づいて、各部101,103〜108,110,111を制御する機能をもっている。また、制御部109は、例えば、以下の機能(f109−1)〜(f109−2)をもっている。
(f109−1) 分散部分データ生成部105により生成された各分散部分データのうち、同一の行番号jを有するn−1個の分散部分データD(j,1)〜D(j,n-1)毎に、行番号jを割り当ててn個のヘッダ情報H(1),…,H(j),…,H(n)を生成する機能。
(f109−2) 互いに同一の行番号jを有するヘッダ情報H(j)及び分散部分データD(j,1)〜D(j,n-1)からなるn個の分散情報D(1),…,D(j),…,D(n)を通信部111を介して個別にn台の装置100,200,…,n00に配布する機能。なお、制御部109は、分散情報D(1)〜D(n)の漏洩防止の観点から、分散情報D(1)〜D(n)を暗号化した状態で配布してもよい。
出力部110は、ディスプレイ装置やプリンタ装置等の通常の出力デバイスであり、制御部109により制御され、命令等の入力画面や、復元後の秘密情報S等の出力画面等を出力する機能をもっている。
通信部111は、制御部109により制御され、クライアント装置100とネットワークNWとの間の通信インターフェイス機能をもっている。
一方、各保管サーバ装置200〜n00について説明する。
各保管サーバ装置200〜n00は、記憶する分散情報D(1)〜D(n)が互いに異なる他は互いに同一構成のため、ここではn=2の保管サーバ装置200を代表例に挙げて説明する。
保管サーバ装置200は、保存部201及び通信部202を備えている。
保存部201は、通信部202から読出/書込可能なハードウェア資源としての記憶装置であり、クライアント装置100から配布された分散情報D(2)(=D(n)でn=2)が記憶される。
通信部202は、クライアント装置100から配布された分散情報D(2)を保存部201に書き込む機能と、クライアント装置100から要求された分散情報D(2)を保存部201から読み出してこの分散情報D(2)をクライアント装置100に返信する機能とをもっている。
なお、通信部202は、分散情報D(2)の漏洩防止の観点から、クライアント装置100の認証機能を有してもよく、この場合、クライアント装置100の認証の後、分散情報D(2)を返信する構成として設けられる。
ここで、各保管サーバ装置200,300,…,n00は、他のクライアント装置や、USB(Universal Serial Bus)メモリ、携帯電話、PDA(Personal Digital Assistants:携帯情報端末)に置き換え可能であり、あるいは外付けHDD(Hard Disc Drive: 固定磁気ディスク装置)などのように、コンピュータ以外の他の装置と置き換えることも可能である。
なお、各保管装置200,300,…,n00は、他のクライアント装置に置き換えられる場合、前述同様に、分散部分データ生成部105や元データ復元部107などの機能を保持していてもよい。すなわち、秘密情報を復元できる装置は、クライアント装置100以外にあってもよい。例えば、各保管装置200,300,…,n00のうちの任意の台数の装置j00,…が秘密情報を復元できる構成としてもよい。
なお、分散の場合も同様に、秘密情報を分散できる装置は、クライアント装置100以外にあってもよい。例えば、各保管装置200,300,…,n00のうちの任意の台数の装置j00,…が分散情報を配布できる構成としてもよい。
また、各保管装置200,300,…,n00がUSBメモリや携帯電話などのように物理的な接続手段又は無線通信手段を有する装置に置き換えられる場合、ネットワークNWを省略してもよい。上述した各保管装置200,300,…,n00を他の装置に置き換えた変形例は、以下の各実施形態でも同様に適用可能である。
次に、以上のように構成された秘密分散システムの動作を図15乃至図18のフローチャートを参照しながら説明する。
始めに、n人のメンバ(初期メンバ)に、秘密情報Sを(k,n)閾値法で分散した分散情報D(j)を配布する場合を考える。このときnは素数を選ばなければならない。従って、合成数のn人に分散情報を配布したい場合は、n<n’でありかつn’が素数となるようなn’について秘密分散法を適用することになる。以下では(k,n)閾値法についての一例を示す。
(分散処理の動作)
クライアント装置100においては、分散情報D(1)〜D(n)を配布する前に、ビット長mの秘密情報Sが一時的に保存部101に記憶されているとする。
このとき、クライアント装置100においては、図15に示すように、操作者の操作により、分散処理の開始命令が入力部102から入力されたとする(ST1)。
クライアント装置100は、この開始命令に基づいて、分散処理を開始する。制御部109は、分散数をn、閾値をk、秘密情報Sのビット長をm、処理単位ビットをaと定める(ST1)。なお、秘密情報Sのビット長mは、保存部101内の秘密情報Sから分かる。処理単位ビットaは、分散データ生成部13の仕様により予め定まっている。
続いて、制御部109は、ビット長mの秘密情報Sをn−1個に分割した際のビット長(m/(n−1))が処理単位ビットaを超える(m/(n−1)>a)か否かを判定し(ST2)、処理単位ビットaを超える場合、nより大きい素数n’を探索し、得られた素数n’を分散数nと置き換えて(ST3)、ステップST1に戻る。
一方、ステップST2の判定結果が否の場合、制御部109は、分散数n及び閾値kを生成行列生成部103に入力する。
生成行列生成部103は、分散数n、閾値kの生成行列G(但し、任意のk個の列ベクトルがフルランク、行列Gのサイズはk(n−1)×n(n−1)、列ベクトルのサイズはk(n−1)×(n−1))を制御部109に出力する(ST4)。
以下、ステップST4における生成行列Gの生成処理の手順を説明する。
生成行列生成部103は、図16に示すように、(n−1)行×(n−1)列で区分けした行列に対して、それぞれ(n−1)行×(n−1)列の単位行列Eの最終行に1行のゼロ行列を追加して得られたn行×(n−1)列の行列E’を縦方向に(i-1)(j-1)ビット巡回シフトし、得られた行列E’((i-1)(j-1))の上から(n−1)行×(n−1)列を抽出した小行列E((i-1)(j-1))を配置して生成行列Gを生成する(ST4−1)。(4,5)閾値法の例では、生成行列Gは図2に示すような構成となる。
しかる後、生成行列生成部103は、得られた生成行列Gを制御部109に出力する(ST4−2)。
以上により生成行列Gの生成処理が完了する。
ステップST4の完了後、制御部109は、秘密情報S、生成行列G、分散数n及び閾値kを分散部分データ生成部105に入力する。
分散部分データ生成部105は、図15に示すように、秘密情報S及び分散数nに基づいて、ビット長mの秘密情報Sをn−1個に分割した際のビット長(m/(n−1))が処理単位ビットaと等しいか(m/(n−1)=a)か否かを判定する(ST5)。
ステップST4の判定結果が否の場合、分散部分データ生成部105は、秘密情報Sをn−1個の分割秘密データK(1)〜K(n−1)に分割した際の末尾の分割秘密データK(n−1)をパディングする(パディング有)とし(ST6)、ステップST7に進む。
なお、パディングは、必ずしも末尾の分割秘密データK(n-2)に行わなくても良く、他の分割秘密データK(j)に行っても良い。但し、本実施形態では、秘密情報Sは4個にちょうど分割できた場合(パディング無し)を例に挙げて述べる。また、図2に示した如き、分散数n=5,閾値k=4の(4,5)閾値法を例に挙げて述べる。
ステップST5の判定の結果、処理単位ビットaと等しい場合、分散部分データ生成部105は、この秘密情報Sをn−1個に分割すると共に、分割結果に1からn−1までの行番号j(但し、1≦j≦n−1)を割り当てることにより、互いに同一サイズのn−1個の分割秘密データK(1),…,K(j),…,K(n−1)を生成する(ST7)。(4,5)閾値法の例では、分割秘密データK(1),…,K(4)が生成される。
次に、各分割秘密データのサイズと同一のサイズの乱数を(k−1)(n−1)個生成し、乱数データR(1),…,R((k−1)(n−1))を生成する(ST7)。(4,5)閾値法の例では、乱数データR(1),…,R(12)が生成される。
分割秘密データK(1),…,K(j),…,K(n−1)、乱数データR(1),…,R((k−1)(n−1))及び生成行列Gに基づいて、n(n−1)個の分散部分データ(D(1,1),…,D(j,i),…,D(n,n−1))=(R(1),…,R((k−1)(n−1)),K(1),…,K(j),…,K(n−1))Gを算出する(ST8)。なお、処理単位ビットaにあわせて、生成行列Gの要素が1の場合はa×aのGF(2)上の単位行列、0の場合はa×aのGF(2)上のゼロ行列として扱う。(4,5)閾値法の例では、図13に示したように、20個の分散部分データD(j,i)が生成される。例えば、分散部分データD(1,1)の算出過程を図20に示す。
しかる後、分散部分データ生成部105は、得られた分散部分データn(n−1)個の分散部分データD(j,i)を制御部109に出力する。
制御部109は、各分散部分データのうち、同一の行番号jを有するn−1個の分散部分データD(j,1)〜D(j,n−1)毎に、行番号jを割り当ててn個のヘッダ情報H(1),…,H(j),…,H(n)を生成する(ST9)。ヘッダ情報H(j)には、K(n−1)に対するパディングの有無、元データのサイズなどの情報が含まれる。
制御部109は、互いに同一の行番号jを有するヘッダ情報H(j)及び分散部分データD(j,1)〜D(j,n-1)からなるn個の分散情報D(1),…,D(j),…,D(n)を個別にn個の保存部101,201,…,n01に配布するように、分散情報D(1)を保存部101に書き込み、分散情報D(2),…,D(n)を個別に保管サーバ装置200,…,n00に配布する(ST10)。(4,5)閾値法の例では、5個の分散情報D(1),…,D(5)が配布される。各保管サーバ装置200〜500では、配布された分散情報D(2),…,D(5)を保存部201〜501に記憶する。
以上により、秘密情報の分散処理が完了する。
なお、(4,5)閾値法において、必ずしも5個の分散情報D(1)〜D(5)を配布する必要は無い。例えば4個の分散情報D(1)〜D(4)を配布しておき、残り1個の分散情報D(5)を管理者が適切に保管しておき、新メンバが追加されたときに新メンバに配布してもよい。
(復元処理の動作)
クライアント装置100においては、操作者の操作により、復元処理の開始命令が入力部102から入力されたとする。
クライアント装置100は、この開始命令に基づいて、図17に示すように、復元処理を開始する。制御部109は、n台の装置100,…,n00に配布したn個の分散情報D(1)〜D(n)のうち、任意のk個の分散情報D(i_1),…,D(i_j),…,D(i_k)(但し、1≦i_j≦n)を収集する(ST11)。
制御部109は、分散情報D(i_1),…,D(i_j),…,D(i_k)のヘッダ情報H(i_1),…,H(i_j),…,H(i_k)から生成行列Gのk個の列ベクトルg(D(i_1)),…,g(D(i_j)),…,g(D(i_k)を得ると、このk個の列ベクトルから生成行列Gの部分行列G’=(g(D(i_1)),…,g(D(i_j)),…,g(D(i_k))を形成して取得する(ST12)。
次に、制御部109は、生成行列Gの部分行列G’を復元行列生成部104に入力する。
復元行列生成部104は、生成行列Gの部分行列G’=(g(D(i_1)),…,g(D(i_j)),…,g(D(i_k))から当該部分行列G’を(n−1)行×(n−1)列の単位で区分けした際に、区分けした1行目の成分を全てゼロにするための基本行列B(1)を生成する。
具体的には、復元行列生成部104は、k(n−1)行×k(n−1)列の行列を(n−1)行×(n−1)列の単位で区分けした行列のd行d+1〜k列に単位行列Eを配置する(ST13−1)。
さらに、復元行列生成部104は、当該区分けした行列のd+1〜k行d+1〜k列に、部分行列G’から得られるUd,j -1×Ud,dを配置する(ST13−2)。
また、復元行列生成部104は、当該区分けした行列の残りの成分に、ゼロ行列を配置し(ST13−3)、基本行列B(1)を生成する。
続いて、復元行列生成部104は、部分行列G’に基本行列B(1)を乗じて、区分けした1行目の成分を全てゼロにする処理を行い、部分行列G(1)=G’B(1)を得る。
また同様に、復元行列生成部104は、当該部分行列G(1)を(n−1)行×(n−1)列の単位で区分けした際に、区分けした2行目の成分を全てゼロにするための基本行列B(2)を生成し、部分行列G(1)に基本行列B(2)を乗じて、区分けした2行目の成分を全てゼロにする処理を行い、部分行列G(2)=G(1)(2)を得る。
以下同様にして、再帰的にk−1行目まで処理を実行し、部分行列G(k-1)=G(k-2)(k-1)を得る(ST13)。
また別の具体例として、復元行列生成部104は、k(n−1)行×k(n−1)列の行列を(n−1)行×(n−1)列の単位で区分けした行列のd+1〜k行d+1〜k列に単位行列Eを配置する(ST13’−1)。
さらに、復元行列生成部104は、当該区分けした行列のd行d+1〜k列に、部分行列G’から得られるUd,d -1×Ud,jを配置する(ST13’−2)。
また、復元行列生成部104は、当該区分けした行列の残りの成分に、ゼロ行列を配置し(ST13’−3)、基本行列B(1)を生成する。
続いて、復元行列生成部104は、部分行列G’に基本行列B(1)を乗じて、区分けした1行目の成分を全てゼロにする処理を行い、部分行列G(1)=G’B(1)を得る。
また同様に、復元行列生成部104は、当該部分行列G(1)を(n−1)行×(n−1)列の単位で区分けした際に、区分けした2行目の成分を全てゼロにするための基本行列B(2)を生成し、部分行列G(1)に基本行列B(2)を乗じて、区分けした2行目の成分を全てゼロにする処理を行い、部分行列G(2)=G(1)(2)を得る。
以下同様にして、再帰的にk−1行目まで処理を実行し、部分行列G(k-1)=G(k-2)(k-1)を得る(ST13)。
このとき、復元行列生成部104は、基本行列の積B(1)…B(k-1)を算出する(ST14−1)。続いて、復元行列生成部104は、部分行列G(k-1)におけるk行k列目の行列U(k,k)の逆行列U(k,k) -1をk行k列目に配置して他の成分をゼロにした基本行列B(k)を算出し、前述した基本行列の積B(1)…B(k-1)にこの基本行列B(k)を乗じて復元行列B(1)…B(k-1)(k)を算出する(ST14−2)。
(4,5)閾値法の例では、分散情報D(1),D(2),D(3),D(4)に対応する部分行列G’(g(D(1)),g(D(2)),g(D(3)),g(D(4)))は図2の1列目〜16列目に示したような行列になり、分散情報D(1),D(2),D(3),D(4)に対して、図18または図19に示すように基本行列を用いて(n−1)行(n−1)列で区分けした成分を全てゼロにする処理を1行目から3行目まで繰り返し、最後に区分けしたk行k列目の逆行列を算出することで復元行列B(1)(2)(3)(4)を算出する。図18で示した基本行列を用いた場合における復元行列は図12に示したような行列となる。
制御部109は、生成行列Gの復元行列と分散情報D(i_1),…,D(i_j),…,D(i_k)を元データ復元部107に入力する。
元データ復元部107は、分散情報D(i_1),…,D(i_j),…,D(i_k)のヘッダ情報H(i_1),…,H(i_j),…,H(i_k)から、図17に示すように、分散情報D(i_1),…,D(i_j),…,D(i_k)であることを解析する。(4,5)閾値法の例では、例えば分散情報D(1),D(2),D(3),D(4)であることを確認する。
次に、分散情報からなる行列(D(i_1),…,D(i_j),…,D(i_k))と復元行列B(1)(2)…B(k-1)(k)との積を算出し、分割秘密データK(1),…,K(n−1)を得る(ST15)。なお、処理単位ビットaにあわせて、復元行列の要素が1の場合はa×aのGF(2)上の単位行列、0の場合はa×aのGF(2)上のゼロ行列として扱う。
具体的には(4,5)閾値法において、分散情報D(2),D(3),D(4),D(5)から復元した場合、図21に示したように、例えば復元行列の13列目から分割秘密データK(1)が算出される。同様に14列目、15列目、16列目から、それぞれK(2)、K(3)、K(4)を算出する。このとき、復元行列の1列目〜12列目はゼロ行列であって演算に用いられないので、演算の負荷が小さくて済む。
制御部109は、分割秘密データK(1),…,K(n−1)に対して、ヘッダ情報H(i),H(j)に基づいて、パディングなどの処理があれば除去する。
しかる後、制御部109は、分割秘密データK(1),…,K(n−1)を互いに連接することにより、秘密情報S=K(1)‖K(2)‖…‖K(n−1)を復元する(ST16)。この例では、秘密情報S=K(1)‖K(2)‖…‖K(4)が復元される。
上述したように本実施形態によれば、生成行列Gを用いて分散部分データを生成する構成により、秘密情報の分散や復元の処理を排他的論理和により非常に高速に実現し、多項式補間を用いずに高速に実行可能な(k,n)閾値法を実現することができる。
本実施形態は、分散数n及び閾値kが限定されないので、各種のシステムへの応用範囲を広げることができる。
また、本実施形態の分散処理は、多項式補間が不要であり、XORのみで実行するため、前述した高速に実行可能なことに加え、大容量データを扱うのに好適である。
また、復元処理は生成行列Gの部分行列G’の逆行列を求めることなく、生成行列Gの部分行列G’を(n−1)行(n−1)列のブロック単位で再帰的に処理して復元行列を求める構成により、部分行列G’の逆行列を求める場合よりも高速に実行可能であり、低スペック機器でも秘密分散を実行できる利点を有する。
この利点について、計算量の面で比較する。ここで、行列の乗算の計算量は行列のサイズの2乗のオーダーであり、逆行列の計算量は行列のサイズの3乗のオーダーとなることが知られている。したがって、逆行列の計算量のほうが乗算の計算量よりも大きいので、復元処理の計算量は逆行列のサイズや回数で評価することができる。
まず、生成行列Gの逆行列を用いる場合の計算量は、生成行列Gのサイズがk(n−1)行×k(n−1)列なので、計算量は(k(n−1))であり、一般的にはO((kn))で表すことができる。
ここでO(・)は、計算量のオーダーが・であることを意味する。
次に、図8のように再帰的に処理して復元行列を求める場合は、サイズ(n−1)行×(n−1)列の逆行列の計算が
Figure 0004334582
回必要となるので、逆行列の計算は(n−1)であり、その回数が((k−2)(k−1)/2)+1回であるので、その計算量は一般的にO(k)で表すことができる。
次に、図9のように再帰的に処理して復元行列を求める場合は、サイズ(n−1)行×(n−1)列の逆行列の計算が(k−2)+1回必要となるので、その計算量はO(kn)で表すことができる。
したがって、図8よりも図9のように処理するほうが、より好ましい実施形態といえる。
また、復元処理においては、復元行列を求める処理が高速なことに加え、復元行列の乗算処理も高速に実行できる。乗算処理が高速な理由は、復元行列を(n−1)行×(n−1)列の単位で区分けした行列において、復元行列の1列目からk−1列目の成分がゼロ行列であって乗算に用いられず、復元行列のk列目の成分のみが乗算に用いられるためである。
なお、本実施形態は、生成行列生成部103により生成行列Gを生成し、復元行列生成部104により復元行列を生成した場合について説明したが、これに限らず、分散数n及び閾値kが予め分かっていれば、図22に示すように、生成行列生成部103及び復元行列生成部104に代えて、予め生成行列G及びGの復元行列のデータが保存された読出/書込可能な記憶装置としての行列保存部112を備えた構成に変形してもよい。このように変形することで排他的論理和演算のみで分散・復元処理が可能な(k,n)閾値法を実現することができる。
また同様に、分散数nと閾値kとの組合せ毎に、予め生成行列G及びGの復元行列のデータを行列保存部112に保存しておき、入力されたn,kの値を検索キーにして、行列保存部112から生成行列G及びGの復元行列のデータを読み出す構成に変形してもよいことはいうまでもない。
また一般に、(k,n)閾値法において、秘密情報Sのサイズを|S|とすると、分散に必要な乱数のサイズ|R|が次式を満たすことが知られている。
|R|≧(k−1)|S|
ここで、本実施形態においては、乱数のサイズが上式の下限を満たしていることが明らかであり、次式の通り、乱数のサイズ|R|が(k,n)閾値法の分散に必要な最小のサイズとなっている。
|R|=(k−1)|S|
このため、本実施形態では、秘密情報Sの分散処理に必要な演算を高い効率で実施することができる。
一方、非特許文献3に記載の(3,5)閾値法の乱数のサイズを比較のために述べる。非特許文献3においては、秘密情報Sを分割した部分秘密情報Siと乱数成分R,Tを分割した乱数情報Ri,TiからなるベクトルUをU=(S1,…S4,R1,…R4,T1,…T5)と表記し、(3,5)閾値法の生成行列をG(3)とすると、G(3)は非特許文献3の表3から次のようになる。
Figure 0004334582
ここで、G(2)は非特許文献2の表2の(2,5)閾値法における生成行列とし、(3,5)閾値法における乱数成分Tと関係する下の区分けしたブロックは、本実施形態で示したE’そのものであり、そのサイズが5×4行列となっている。従って、非特許文献3記載の方式の乱数成分のサイズ|R|は次式で表される。
Figure 0004334582
すなわち、非特許文献3記載の方式は、本実施形態とは異なり、乱数成分のサイズ|R|が下限になっていないことが分かる。
次に、本実施形態において、生成行列Gを構成するGiについて考察する。(k,n)閾値法において、生成行列Gを構成する区分けしたiブロック目のGi,kと、(k−1,n)閾値法において、生成行列Gを構成する区分けしたiブロック目のGi,k-1とには次式の関係がある。
Figure 0004334582
すなわち、(k,n)閾値法のGi,kは、(k−1、n)閾値法のGi,k-1を用いて帰納的に求めることができる。
(第2の実施形態)
次に、本発明の第2の実施形態に係る秘密分散システムについて説明する。
本実施形態は、第1の実施形態の変形例である。第1の実施形態においては、生成行列Gを(n−1)行(n−1)列の単位行列Eにゼロ行列を付加した行列E’を巡回シフトさせることにより、生成行列Gを生成する。
一方、本実施形態では、第1の実施形態の単位行列Eに代えて、図23に示す如き、より一般的に行列式が1となる(n−1)行(n−1)列の行列を巡回シフトさせることにより、生成行列Gを生成する構成となっている。ここで、行列式が1となる行列とは、ランクがフルランクな行列を意味する。
すなわち、本実施形態は、第1の実施形態に比べ、行列式が1となる(n−1)行(n−1)列の行列を用いて生成行列Gを生成する点のみ異なり、他の処理については第1の実施形態と同一構成となっている。
以上のような構成としても、第1の実施形態と同様の作用効果を得ることができる。
(第3の実施形態)
次に、本発明の第3の実施形態に係る秘密分散システムについて説明する。
本実施形態は、第1の実施形態の変形例である。第1の実施形態においては、(k,n)閾値法を用いて、分散処理及び復元処理を実行している。
一方、本実施形態では、第1の実施形態の(k,n)閾値法に代えて、(n,n)閾値法を用いることにより、復元処理の高速化を図っている。これに伴い、復元行列生成部104に代えて、逆行列G-1の生成処理が必要となる。
分散部分データ生成部105は、制御部109により制御され、保存部101に一時的に記憶された秘密情報S及び生成行列Gに基づいて、n個の分散情報D(1)〜D(n)を生成する機能を持っている。
具体的には、予め分散処理で作成した生成行列Gに対して逆行列G-1を求め、図24に示すように、その逆行列G-1を生成行列Gとみなしてn個の分散情報D(1)〜D(n)を生成する。
復元時には、n個の分散情報D(1)〜D(n)を集め、図25に示すように、分散処理で生成した生成行列Gを復元行列とみなして復元処理を行う。
以上のような構成によれば、第1の実施形態と同様の作用効果に加え、復元処理を高速に実行することができる。
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の第1の実施形態に係る秘密分散システムの構成を示す模式図である。 同実施形態における生成行列の一例を示す模式図である。 同実施形態における区分けした1ブロックの行列を説明するための模式図である。 同実施形態における1ブロックの行列の巡回シフトを説明するための模式図である。 同実施形態における巡回シフト後の行列の取得及び割当てを説明するための模式図である。 同実施形態における生成行列を説明するための模式図である。 同実施形態における基本行列の生成を説明するための模式図である。 同実施形態における基本行列の構成を説明するための模式図である。 同実施形態における基本行列の別の構成を説明するための模式図である。 同実施形態における基本行列の構成を説明するための模式図である。 同実施形態における基本行列の一例を示す模式図である。 同実施形態における復元行列の一例を示す模式図である。 同実施形態における分散情報を説明するための模式図である。 同実施形態におけるヘッダ情報および分散情報の一例を示す模式図である。 同実施形態における分散処理の動作を説明するためのフローチャートである。 同実施形態における分散処理の動作を説明するためのフローチャートである。 同実施形態における復元処理の動作を説明するためのフローチャートである。 同実施形態における復元処理の動作を説明するためのフローチャートである。 同実施形態における別の基本行列を用いた復元処理の動作を説明するためのフローチャートである。 同実施形態における分散部分データの算出過程を説明するための模式図である。 同実施形態における分割秘密データの算出過程を説明するための模式図である。 同実施形態における変形構成を示す模式図である。 本発明の第2の実施形態に係る秘密分散システムに適用される行列式の一例を示す模式図である。 本発明の第3の実施形態に係る秘密分散システムに適用される生成行列の一例を示す模式図である。 同実施形態における復元行列の一例を示す模式図である。
符号の説明
100…クライアント装置、101…保存部、102…入力部、103…生成行列生成部、104…復元行列生成部、105…分散部分データ生成部、106…ハッシュ値生成部、107…元データ復元部、108…ハッシュ値検証部、109…制御部、110…出力部、111…通信部、112…行列保存部、200,300,〜,n00…保管サーバ装置、NW…ネットワーク。

Claims (6)

  1. 秘密情報Sが分散されて生成されたn個の分散情報D(1),…,D(n)を個別にn個の記憶装置に配布し、且つ、前記n個の分散情報のうち、任意のk個の分散情報から秘密情報Sを復元可能な(k,n)閾値法(但し、2≦k≦n)の秘密分散装置であって、
    1個あたりk(n−1)行×(n−1)列のサイズをもつ列ベクトルn個からなり、前記n個の列ベクトルのうちの任意のk個の列ベクトルから構成される行列がフルランクとなるGF(2)の生成行列Gを生成する(但し、前記生成行列Gのサイズはk(n−1)行×n(n−1)列、GF(2)は位数2の有限体)手段と、
    前記分散情報D(1)〜D(n)が配布される前に、前記秘密情報Sが一時的に記憶される記憶手段と、
    この秘密情報Sをn−1個に分割すると共に、分割結果に1からn−1までの行番号j(但し、1≦j≦n−1)を割り当てることにより、互いに同一サイズのn−1個の第1分割秘密データK(1),…,K(j),…,K(n−1)を生成する手段と、
    前記各分割秘密データのサイズと同一サイズの(k−1)(n−1)個の乱数データR(1),…,R((k−1)(n−1))を生成する手段と、
    前記乱数データ及び前記分割秘密データ(R(1),…,R((k−1)(n−1)),K(1),…,K(j),…,K(n−1))と前記生成行列Gとの行列の積を算出し、この算出結果のj×(n−1)+i列目を分散部分データD(j,i)に割り当てて、n(n−1)個の分散部分データD(j,i)(但し、1≦j≦n、1≦i≦n−1)を算出する分散部分データ算出手段と、
    前記各分散部分データのうち、同一の行番号jを有するn−1個の前記分散部分データD(j,1)〜D(j,n−1)毎に、行番号jを割り当ててn個のヘッダ情報H(1),…,H(j),…,H(n)を生成する手段と、
    互いに同一の行番号jを有するヘッダ情報H(j)及び分散部分データD(j,1)〜D(j,n−1)と、前記n個の列ベクトルの各々とからなるn個の分散情報D(1),…,D(j),…,D(n)を個別に前記n個の記憶装置に配布する手段と、
    配布したn個の分散情報D(1),…,D(j),…,D(n)のうち任意のk個の分散情報に含まれるk個の列ベクトルから生成行列Gのうちのk(n−1)行×k(n−1)列の部分行列G’を構成し、この部分行列G’を(n−1)行×(n−1)列で区分けした行列単位で1行目からk−1行目までの乱数成分をゼロにするように基本行列B(1),…,B(k-1)を再帰的に部分行列G’,…,G(k-2)に乗じることにより、最後に乗じて得られた部分行列G(k-1)の区分けした単位におけるk行k列目の成分の逆行列を用いて基本行列B(k)を作成し、全ての基本行列を乗じて復元行列B(1)…B(k-1)(k)を算出する復元行列算出手段と、
    当該k個の分散情報に前記復元行列を乗算することにより、秘密情報を復元する復元手段と
    を備えたことを特徴とする秘密分散装置。
  2. 請求項1に記載の秘密分散装置において、
    前記任意のk個はn個であり、
    前記分散部分データ算出手段は、前記生成行列Gに代えて、前記生成行列の逆行列G-1を用いて前記分散部分データを算出し、
    前記復元行列算出手段及び前記復元手段に代えて、前記k個の分散情報に前記逆行列G-1を乗算することにより、秘密情報を復元する手段を備えたことを特徴とする秘密分散装置。
  3. 請求項1又は請求項2に記載の秘密分散装置が実行する秘密分散方法であって、
    入力された分散数n及び閾値kを前記記憶手段に記憶する工程と、
    前記記憶手段内の分散数n及び閾値kに基づいて、(n−1)行×(n−1)列の単位で行列を区分けした際に、区分けしたi行j列のブロックについて、(n−1)行×(n−1)列の単位行列Eの最終行に1行×(n−1)列のゼロ行列を追加し、n行×(n−1)列の行列E’を生成する工程と、
    n行×(n−1)列の行列E’を縦方向に(i−1)(j−1)回巡回シフトして行列E’((i-1)(j-1))を作成する巡回シフト工程と、
    この行列E’((i-1)(j-1))から最終行を除いた(n−1)行×(n−1)列の行列E((i-1)(j-1))を取得して、i行j列のブロックに割り当てる割当て工程と、
    前記巡回シフト工程及び割当て工程を前記i行j列の全てのブロック(1≦i≦k、1≦j≦n)に対して実行することにより、生成行列Gを生成する工程と、
    を備えたことを特徴とする秘密分散方法。
  4. 請求項3に記載の秘密分散方法であって、
    前記生成行列Gの部分行列G’=(g(D(i_1),…,D(i_k))=(U(1,1),…,U(i,j),…,U(k,k))(但し、U(i,j)=E((i-1)(j-1)))から当該部分行列G’を(n−1)行×(n−1)列の単位で区分けした際に、区分けした1行目の成分を全てゼロにするための基本行列B(1)を生成する工程と、
    前記部分行列G’に基本行列B(1)を乗じて、区分けした1行目の成分を全てゼロにする処理を行い、部分行列G(1)=G’B(1)を得る工程と、
    得られた部分行列を部分行列G(d-1)としたとき、この部分行列G(d-1)を(n−1)行×(n−1)列の単位で区分けした際に、区分けしたd行目の成分を全てゼロにするための基本行列B(d)を生成する基本行列生成工程と、
    前記部分行列G(d-1)に基本行列B(d)を乗じて、区分けしたd行目の成分を全てゼロにする処理を行い、部分行列G(d)=G(d-1)(d)を得る部分行列生成工程と、
    前記基本行列生成工程及び前記部分行列生成工程をd=k−1行目まで再帰的に実行し、部分行列G(k-1)=G(k-2)(k-1)を得る工程と、
    この部分行列G(k-1)におけるk行k列目の行列U(k,k)の逆行列U(k,k) -1をk行k列目の成分に配置すると共に、ゼロ行列を他の成分に配置して基本行列B(k)を算出する工程と、
    全ての基本行列B(1),…,B(k-1),B(k)を乗じて復元行列B(1)…B(k-1)(k)を生成する工程と、
    を備えたことを特徴とする秘密分散方法。
  5. 秘密情報Sが分散されて生成されたn個の分散情報D(1),…,D(n)を個別にn個の記憶装置に配布し、且つ、前記n個の分散情報のうち、任意のk個の分散情報から秘密情報Sを復元可能な(k,n)閾値法(但し、2≦k≦n)の秘密分散装置のプログラムであって、
    前記秘密分散装置のコンピュータを、
    1個あたりk(n−1)行×(n−1)列のサイズをもつ列ベクトルn個からなり、前記n個の列ベクトルのうちの任意のk個の列ベクトルから構成される行列がフルランクとなるGF(2)の生成行列Gを生成する(但し、前記生成行列Gのサイズはk(n−1)行×n(n−1)列、GF(2)は位数2の有限体)手段、
    前記分散情報D(1)〜D(n)が配布される前に、前記秘密情報Sを一時的に前記コンピュータのメモリに書き込む手段、
    前記メモリ内の秘密情報Sをn−1個に分割すると共に、分割結果に1からn−1までの行番号j(但し、1≦j≦n−1)を割り当てることにより、互いに同一サイズのn−1個の第1分割秘密データK(1),…,K(j),…,K(n−1)を生成する手段、
    前記各分割秘密データのサイズと同一サイズの(k−1)(n−1)個の乱数データR(1),…,R((k−1)(n−1))を生成する手段、
    前記乱数データ及び前記分割秘密データ(R(1),…,R((k−1)(n−1)),K(1),…,K(j),…,K(n−1))と前記生成行列Gとの行列の積を算出し(但し、GF(2)上の演算)、この算出結果のj×(n−1)+i列目を分散部分データD(j,i)に割り当てて、n(n−1)個の分散部分データD(j,i)(但し、1≦j≦n、1≦i≦n−1)を算出する分散部分データ算出手段、
    前記各分散部分データのうち、同一の行番号jを有するn−1個の前記分散部分データD(j,1)〜D(j,n−1)毎に、行番号jを割り当ててn個のヘッダ情報H(1),…,H(j),…,H(n)を生成する手段、
    互いに同一の行番号jを有するヘッダ情報H(j)及び分散部分データD(j,1)〜D(j,n−1)と、前記n個の列ベクトルの各々とからなるn個の分散情報D(1),…,D(j),…,D(n)を個別に前記n個の記憶装置に配布する手段、
    配布したn個の分散情報D(1),…,D(j),…,D(n)のうち任意のk個の分散情報に含まれるk個の列ベクトルから生成行列Gのうちのk(n−1)行×k(n−1)列の部分行列G’を構成し、この部分行列G’を(n−1)行×(n−1)列で区分けした行列単位で1行目からk−1行目までの乱数成分をゼロにするように基本行列B(1),…,B(k-1)を再帰的に部分行列G’,…,G(k-2)に乗じることにより、最後に乗じて得られた部分行列G(k-1)の区分けした単位におけるk行k列目の成分の逆行列を用いて基本行列B(k)を作成し、全ての基本行列を乗じて復元行列B(1)…B(k-1)(k)を算出する手段、
    当該k個の分散情報に前記復元行列を乗算することにより、秘密情報を復元する復元手段、
    として機能させるためのプログラム。
  6. 請求項5に記載のプログラムにおいて、
    前記任意のk個はn個であり、
    前記分散部分データ算出手段は、前記生成行列Gに代えて、前記復元行列を用いて前記分散部分データを算出する手段であり、
    前記復元行列算出手段及び前記復元手段に代えて、前記k個の分散情報に前記逆行列G-1を乗算することにより、秘密情報を復元する手段、として前記コンピュータを機能させるためのプログラム。
JP2007168082A 2007-06-26 2007-06-26 秘密分散装置、方法及びプログラム Active JP4334582B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007168082A JP4334582B2 (ja) 2007-06-26 2007-06-26 秘密分散装置、方法及びプログラム
US12/114,237 US8074068B2 (en) 2007-06-26 2008-05-02 Secret sharing device, method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007168082A JP4334582B2 (ja) 2007-06-26 2007-06-26 秘密分散装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009010531A JP2009010531A (ja) 2009-01-15
JP4334582B2 true JP4334582B2 (ja) 2009-09-30

Family

ID=40325198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007168082A Active JP4334582B2 (ja) 2007-06-26 2007-06-26 秘密分散装置、方法及びプログラム

Country Status (2)

Country Link
US (1) US8074068B2 (ja)
JP (1) JP4334582B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5065795B2 (ja) * 2007-08-03 2012-11-07 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP4966232B2 (ja) * 2008-03-13 2012-07-04 株式会社東芝 分散情報追加装置、方法及びプログラム
US7995765B2 (en) * 2008-08-28 2011-08-09 Red Hat, Inc. Sharing a secret using hyperplanes over GF(q)
US8520854B2 (en) * 2008-08-28 2013-08-27 Red Hat, Inc. Sharing a secret using polynomials over polynomials
US7995764B2 (en) * 2008-08-28 2011-08-09 Red Hat, Inc. Sharing a secret using hyperplanes over GF(2m)
US8675877B2 (en) * 2008-08-29 2014-03-18 Red Hat, Inc. Sharing a secret via linear interpolation
JP2010186232A (ja) * 2009-02-10 2010-08-26 Kddi Corp 管理者追加処理システム、管理者追加処理方法およびプログラム
JP5388684B2 (ja) * 2009-05-14 2014-01-15 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP5433297B2 (ja) * 2009-05-14 2014-03-05 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP5388716B2 (ja) * 2009-06-19 2014-01-15 Kddi株式会社 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
EP2375626A1 (en) * 2010-03-29 2011-10-12 British Telecommunications public limited company Data storage
US9124423B2 (en) * 2010-05-14 2015-09-01 International Business Machines Corporation Iterative data secret-sharing transformation
CN101882992B (zh) * 2010-06-21 2012-12-12 中国农业大学 门限秘密信息分配、还原方法及装置
EP2562736B1 (en) * 2010-07-23 2016-06-29 Nippon Telegraph And Telephone Corporation Secret sharing system, sharing apparatus, sharing management apparatus, aquisition apparatus, secret sharing method, program and recording medium
JP5669204B2 (ja) * 2011-03-17 2015-02-12 Necソリューションイノベータ株式会社 分散情報管理システム、分散情報管理方法、および分散情報管理プログラム
JP4875781B1 (ja) * 2011-07-08 2012-02-15 株式会社野村総合研究所 データ分散保管システム
JP4860779B1 (ja) * 2011-07-08 2012-01-25 株式会社野村総合研究所 データ分散保管システム
WO2013159272A1 (en) * 2012-04-23 2013-10-31 Hewlett-Packard Development Company Statistical analysis using graphics processing unit
US10447471B2 (en) * 2012-06-05 2019-10-15 Pure Storage, Inc. Systematic secret sharing
JP6008316B2 (ja) * 2012-08-24 2016-10-19 パナソニックIpマネジメント株式会社 秘密分散装置および秘密分散プログラム
US9430655B1 (en) * 2012-12-28 2016-08-30 Emc Corporation Split tokenization
JP6085261B2 (ja) * 2013-02-21 2017-02-22 新日鉄住金ソリューションズ株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
KR101497669B1 (ko) * 2013-04-29 2015-03-11 서울대학교산학협력단 일정 수 이상의 파일 조각으로 원본 파일을 복구하는 파일 관리 장치 및 방법
KR102084733B1 (ko) * 2013-05-09 2020-03-05 삼성전자주식회사 파일 분산 관리 장치 및 제어 방법
US9514326B1 (en) * 2013-10-15 2016-12-06 Sandia Corporation Serial interpolation for secure membership testing and matching in a secret-split archive
CN107078898A (zh) * 2014-05-20 2017-08-18 神秘双八达通有限公司 一种在多路径网络上建立安全私人互连的方法
WO2016135726A1 (en) * 2015-02-25 2016-09-01 Secret Double Octopus Ltd. Method and system for authenticating and preserving the integrity of communication, secured by secret sharing
JP5864004B1 (ja) * 2015-03-18 2016-02-17 日本電信電話株式会社 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム
US9954680B1 (en) * 2015-12-18 2018-04-24 EMC IP Holding Company LLC Secure management of a master encryption key in a split-key based distributed computing environment
US11068982B2 (en) * 2017-03-21 2021-07-20 Tora Holdings, Inc. Systems and methods to securely match orders by distributing data and processing across multiple segregated computation nodes
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
JP2019168660A (ja) * 2018-03-26 2019-10-03 株式会社日立製作所 秘密分散システム及び秘密分散方法
US11777724B2 (en) * 2020-11-30 2023-10-03 Verizon Patent And Licensing Inc. Data fragmentation and reconstruction

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485474A (en) * 1988-02-25 1996-01-16 The President And Fellows Of Harvard College Scheme for information dispersal and reconstruction
EP0695056B1 (en) * 1994-07-29 2005-05-11 Canon Kabushiki Kaisha A method for sharing secret information, generating a digital signature, and performing certification in a communication system that has a plurality of information processing apparatuses and a communication system that employs such a method
US5764767A (en) * 1996-08-21 1998-06-09 Technion Research And Development Foundation Ltd. System for reconstruction of a secret shared by a plurality of participants
DE69917356T2 (de) * 1998-02-13 2005-02-17 Hitachi, Ltd. Sicherheitstechnik an einem Computernetzwerk
US6182214B1 (en) * 1999-01-08 2001-01-30 Bay Networks, Inc. Exchanging a secret over an unreliable network
JP4676695B2 (ja) 2002-12-19 2011-04-27 エヌ・ティ・ティ・コミュニケーションズ株式会社 データ分割方法、データ分割装置およびコンピュータプログラム
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
EP1714423B1 (en) * 2004-02-10 2017-03-29 NTT Communications Corp. Secret information management scheme based on secret sharing scheme
US20080072071A1 (en) * 2006-09-14 2008-03-20 Seagate Technology Llc Hard disc streaming cryptographic operations with embedded authentication

Also Published As

Publication number Publication date
US20090144543A1 (en) 2009-06-04
JP2009010531A (ja) 2009-01-15
US8074068B2 (en) 2011-12-06

Similar Documents

Publication Publication Date Title
JP4334582B2 (ja) 秘密分散装置、方法及びプログラム
JP4304215B2 (ja) 秘密分散装置、方法及びプログラム
JP4783119B2 (ja) 秘密分散装置、方法及びプログラム
JP4197710B2 (ja) 暗号装置、復号装置、プログラム及び方法
JP6730740B2 (ja) 処理装置、処理方法、処理プログラム、及び暗号処理システム
JP2023063430A (ja) 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム
JP5134281B2 (ja) 分散情報生成装置、秘密情報復元装置、分散情報生成方法、秘密情報復元方法およびプログラム
JP6844897B2 (ja) ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム
JPWO2018061800A1 (ja) 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム
KR102096359B1 (ko) 거듭 행렬 기반의 비밀키 암호화가 가능한 데이터 전송 장치 및 그 동작 방법
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
KR102132685B1 (ko) 순서 노출 암호화를 위한 장치 및 방법
JP6059159B2 (ja) シェア変換システム、シェア変換方法、プログラム
JP6532843B2 (ja) 秘匿計算システム、第一秘匿計算装置、第二秘匿計算装置、秘匿回路生成方法、秘匿回路評価方法、プログラム
CN114817954A (zh) 图像的处理方法、系统和装置
JP6321216B2 (ja) 行列・キー生成装置、行列・キー生成システム、行列結合装置、行列・キー生成方法、プログラム
JP7146722B2 (ja) 安全性評価装置、安全性評価方法及び安全性評価プログラム
JP6067596B2 (ja) ペアリング演算装置、マルチペアリング演算装置、プログラム
Vats et al. LockNKey: Improvised Cloud Storage System using Threshold Cryptography Approach
JP4861369B2 (ja) リカバリ署名システム、署名生成装置、署名検証装置、それらの方法、及びプログラム
WO2023243141A1 (ja) 連合学習システム及び連合学習方法
JP7191804B2 (ja) 安全性評価装置、安全性評価方法及び安全性評価プログラム
KR101688636B1 (ko) 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치
KR20230161195A (ko) 영지식 증명 친화적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치
JP2009021765A (ja) 秘密情報復元装置、秘密情報復元方法およびプログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090623

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4334582

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350