(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-07-04
(45)【発行日】2023-07-12
(54)【発明の名称】秘密分散方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20230705BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2022049561
(22)【出願日】2022-03-25
【審査請求日】2023-03-28
【新規性喪失の例外の表示】特許法第30条第2項適用 「第44回情報理論とその応用シンポジウム(SITA2021)」の講演予稿集において、「多重秘密分散法」に関する研究を公開 公開日:2021年12月1日
【新規性喪失の例外の表示】特許法第30条第2項適用 「第44回情報理論とその応用シンポジウム(SITA2021)」において、「多重秘密分散法」に関する研究を公開 開催日:2021年12月9日
【早期審査対象出願】
(73)【特許権者】
【識別番号】520029550
【氏名又は名称】株式会社リーディングエッジ
(74)【代理人】
【識別番号】100086232
【氏名又は名称】小林 博通
(74)【代理人】
【識別番号】100092613
【氏名又は名称】富岡 潔
(74)【代理人】
【識別番号】100104938
【氏名又は名称】鵜澤 英久
(74)【代理人】
【識別番号】100210240
【氏名又は名称】太田 友幸
(72)【発明者】
【氏名】山本 博資
【審査官】松平 英
(56)【参考文献】
【文献】特開2012-247575(JP,A)
【文献】米国特許出願公開第2019/0311813(US,A1)
【文献】古賀 弘樹 他,短縮化Reed-Solomon符号の検査行列に基づく秘密分散法とその安全性解析,第36回情報理論とその応用シンポジウム予稿集 [CD-ROM] 第36回情報理論とその応用シンポジウム予稿集,日本,電子情報通信学会基礎・境界ソサイエティ 情報理論とその応用サブソサイエティ,2013年11月19日,pp. 300-305
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
コンピュータを用いて分散対象データを複数の分散データに分散し、前記分散データから前記分散対象データを復元する方法であって、
前記分散データを生成する分散ステップと、
前記分散対象データを再構成する復元ステップと、
を備え、
前記分散ステップは、前記分散対象データと、事前に設定された前記分散データの分散総数「n」と、前記分散対象データのデータ長(L)とを読み込む第1ステップと、
乱数を生成し、前記乱数と前記分散対象データのデータ長(L)と前記分散対象データとのデータ列を作成する第2ステップと、
前記データ列を独立一様分布化する第3ステップと、
前記独立一様分布化した前記データ列Sを「n×8」のブロックに分割し、分割された各ブロックに対して式(33)の演算を実行し、分散データ「W
zy」を求める第4ステップと、
【数33】
を有する一方、
前記復元ステップは、前記分散データをもとに式(37)の演算を実行し、分散対象データを復号する第5ステップと、
【数37】
前記復号したデータ列に対して第3ステップの独立一様化と逆の操作を実行する第6ステップと、
前記第6ステップの操作で生成されたデータ列から分散対象データを抽出することで分散対象データを復元する第7ステップと、
を有することを特徴とする秘密分散方法。
【請求項2】
前記第3ステップは、事前に有限体上で適切なマトリクスをもって演算し、行列の要素で乱数を定める第8ステップと、
前記独立一様分布化前のデータ列Xに対し、前から順に前記行列の演算を施して新たなデータ列Yを生成する第9ステップと、
前記データ列Y中の隣り合うデータ間において、上位の任意ビットと下位の任意ビットとの置換を順に行って新たなデータ列Zを生成する第10ステップと、
前記データ列Zに対し、後ろから順に前記行列の演算を施して新たなデータ列Sを独立一様分布化されたデータとして生成する第11ステップと、
を有することを特徴とする請求項1記載の秘密分散方法。
【請求項3】
前記第8ステップにおいて、式(34)により「法2
64」上で前記行列の要素を乱数で定め、その逆行列を求め、
【数34】
mod2
64:法2
64
前記第9ステップは、式(35)により前記データ列Yを生成し、
前記第11ステップは、式(36)により前記データ列Sを生成する
【数35】
【数36】
ことを特徴とする請求項2記載の秘密分散方法。
【請求項4】
前記分散ステップは、分散対象データのハッシュ値を求めて設定するステップをさらに有する一方、
前記復元ステップは、前記第7ステップで抽出された分散対象データのハッシュ値を求めて前記設定されたハッシュ値と比較し、復元された前記分散対象データの正否を判定するステップをさらに有する
ことを特徴とする請求項1~3のいずれか記載の秘密分散方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散対象データとなる秘密情報を複数の分散データ(分散片)に分散化し、分散データが揃うことで前記秘密情報を復元する秘密分散方法(以下、秘密分散法と省略する。)に関する。
【背景技術】
【0002】
秘密分散法(secret sharing scheme,SSS)は、重要な情報(秘密情報)を破壊や漏洩などの脅威から守るための符号化として広く使用されている。
【0003】
例えば非特許文献1~3の(k,n)しきい値秘密分散法「(k,n)-SSS」によれば、秘密情報Sがn個の分散データ、即ちシェア「Wj,j=1,2,・・・,n」に分散符号化され、任意のk個のシェアから複合化できる一方、任意の「k-1」個のシェアからは秘密情報Sがまったく分からないという特性を持つ。
【0004】
ところが、各「Wj」のビット長は、少なくとも秘密情報Sと同じビット長を必要とするため、全シェアのトータルのビット長は秘密情報Sのビット長のn倍となり、各シェアのサイズを秘密情報のサイズより小さくできず、符号化効率が悪い欠点がある。
【0005】
このような欠点は、非特許文献4,5のしきい値ランプ(ramp)秘密分散法「(k,L,n)-RSS」を用いて改善することができる。この手法では、秘密情報Sが、「S=(S1,S2,…,SL)」に分割されて符号化され、任意のk個のシェアからはSの情報が全く分からないという特性を持つ。
【0006】
このとき各シェア「Wj」のビット長は、秘密情報Sのビット長の「1/L」となり、前記欠点が解消される。ただし、シェアの個数「t」が「k-L≦t≦k」の場合は、秘密情報Sに関して「(k-t)/L」の割合のあいまいさが残り弱安全となってしまう。
【0007】
秘密情報Sを分割した各Sjを個別の秘密情報と考えれば、「(k,L,n)-RSS」は、秘密情報(S1,S2,・・・,SL)をシェア「Wj,j=1,2,・・・,n」に多重に符号化する秘密分散法と考えることができる。しかし、「shamir」の「(k,n)-SSS」と同様にk次の多項式を用いる「(k,L,n)-RSS」では、すべての「Si」が(k,n)しきい値特性を満たすとは限らず、秘密情報(S1,S2,・・・,SL)の多重秘密分散法としては使用できない。そこで、非特許文献4により定義された強安全な「(k,L,n)-RSSS」が提案されている。
【0008】
≪従来のしきい値秘密分散法≫
(k,n)しきい値秘密分散法「(k,n)-SSS」と、(k,L,n)しきい値ランプ秘密分散法「(k,L,n)-RSSS」と、強安全な「(k,L,n)-RSSS」とのそれぞれが満たすべき条件を説明する。
【0009】
(1)(k,n)しきい値法
秘密情報Sは、有限離散集合上で一様分布するものとする。秘密情報Sを分散符号化したシェア「Wj,j=1,2,・・・,n」に対して、任意の「Wj1,Wj2,・・・,Wjk」が、以下に示す式(1)(2)の条件を満たすとき、その分散法を「(k,n)-SSS」という。
【0010】
【0011】
【0012】
この条件を満たすためには、各シェア「Wj」は式(3)を満たさなければならない。
【0013】
【0014】
式(3)を等号で満たす方式として、非特許文献1の(k-1)次の多項式を用いる「Shamir」の「(k,n)-SSS」がある。「S=GF(q)」とし、「U1,U2,・・・,Uk-1」を「S」上の値をとる互いに独立な一様乱とする。このとき式(4)に示す(k-1)次の多項式と、「αj∈GF(q),j=1,2,・・・,n」とに対して、シェア「Wj」は式(5)のように決まる。
【0015】
【0016】
【0017】
(2)(k,L,n)しきい値法
任意の「Wj1,Wj2,・・・,Wjt」が、式(6)の条件を満たすとき「(k,L,n)-RSSS」という。
【0018】
【0019】
秘密情報Sを,「S=(S1,S2,・・・,SL)とL分割し、「S=^SL(^S=GF(^q),q=^qL)とする。秘密情報Sが有限離散集合S上を一様分布するとき、各「Si」は「^S)」上を一様分布する。このとき各シェア「Wj」は式(7)を満たさなければならない。
【0020】
【0021】
式(10)の符号化法を用いれば,式(7)を等号で達成できる。したがって、「(k,L,n)-RSSS」を用いれば、「(k,n)-SSS」に比べて、シェアのビット長を「1/L」にすることができる。「(k,L,n)-RSSS」は、「Shamirの(k,n)-SSS」と同様に、(k-1)次の多項式を用いて式(8)のように構成することができる。
【0022】
【0023】
「Ul,l=1,2,・・・,k-L」は、「^S」上の値をとる互いに独立な一様乱数である。この「Shamir」型の「(k,L,n)-RSSS」は、式(6)の条件を満たすが、各「Si」は(k,n)しきい値特性を満たすとは限らない。
【0024】
すなわち、一部の「Si」は、k個より少ないシェアで復号できる可能性がある(非特許文献6参照)。この安全性の問題点を解決したものが、非特許文献4のが「強安全ランプしきい値秘密分散法」である。これは任意の「Wj1,Wj2,・・・,Wjt」と任意の「Si1,Si2,・・・,Sik-t」に対して、式(6)に加えて式(9)の条件を満たす。
【0025】
【0026】
上記の特性より、(k-1)個のシェアが集まっても、任意の「Si」に関して全く情報が漏洩しない。式(9)の特性を達成する符号化は、式(10)のように線形演算で実現できる(非特許文献4参照)。
【0027】
【0028】
ここで「G」は、「k×n」の行列であり,G=[gi,j]は、式(11)の条件を満たすものする。
【0029】
【0030】
「^G」を式(11)と定義したとき、「^G」の任意のk列が線形独立である。
【0031】
≪(k,n)しきい値L多重秘密分散法≫
各「Si,i=1,2,・・・,L」を「^S」上の値をとる互いに独立な秘密情報と考えると、強安全な「(k,L,n)-RSSS」は式(9)に示すように、各「Si」が「(k,n)しきい値」の特性を満たすため、L個の独立な秘密情報「Si」を多重化して一度に「k,n)-RSSS」符号化を行っていると考えることができる。
【0032】
しかしながら、式(9)は、個別の「Si」に対する「(k,n)しきい値特性」よりも強い安全性を要求しており、自由度が制限されている。
【0033】
そこで、個別の「Si」に対する「(k,n)しきい値特性」のみを要求する多重秘密分散法「multiplex SSS」が定義された。
【0034】
(1)定義内容
各「Si,i=1,2,・・・」,「L,1≦L≦k」に対して、任意の「Wj1,Wj2,・・・,Wjk」が、式(12)(13)を満たすとき、(k,n)しきい値L多重秘密分散法「(k,n)-L-MSSS」という。
【0035】
「L=1」の場合は、通常の「(k,n)-SSS」となる。また、式(9)を満たせば、式(13)が成り立つ。
【0036】
したがって,強安全な「(k,L,n)-RSSS」は、「(k,n)-L-MSSS」の条件を満たす。一方、「Shamir」型の「(k,L,n)-RSSS」は、「(k,n)-L-MSSS」の条件を満たすとは限らない。したがって、「RSSS」と「MSSS」は,
図1に示す関係となる。式(12)(13)の条件を満たすとき、各シェア「W
j」のビット長は、式(3)と同様に,式(14)を満たさなければならない。
【0037】
【0038】
【0039】
【0040】
式(14)式を等号で満たす「(k,n)-L-MSSS」を、式(10)の線形演算を用いて実現する場合を考える。
【0041】
式(10)の行列G=[gi,j]と、式(15)に対して、k×(n+1)行列^Giを、「^Gi=[eiG]と定義する。このとき次の定理が成り立つ。
【0042】
【0043】
(2)定理
A:定理内容
「i=1,2,・・・,L」の各々に対して、「^Gi」の任意のk列が線形独立なとき、式(11)で与えられる秘密分散法は、「(k,n)-L-MSSS」である。
【0044】
B:証明
前記定理を次の通り証明する。
【0045】
(a)まず、k個のシェア「Wj1,Wj2,・・・,Wjk」が与えられた場合を考える。このとき「Jk:={j1,j2,・・・,jk}」に対応したGの列からなる「k×k」行列を「^GJk」とすると、
「(Wj1,Wj2,・・・,Wjk)=(S1,・・・,SL,U1,・・・,Uk-L)^GJk」を満たす。前記定理(仮定)によれば、行列「^GJk」のすべての列が線形独立なため、その逆行列「^G-1
Jk」が存在し、
(S1,・・・,SL,U1,・・・,Uk-L)=(Wj1,Wj2,・・・,Wjk)^G-1
Jk
により、すべての「Si,i=1,2,・・・,L」がk個のシェアから復号でき、式(12)が成り立つ。
【0046】
(b)つぎに(k-1)個のシェア「Wj1,Wj2,・・・,Wjk-1」が与えられた場合を考える。「Jk-1:={j1,j2,・・・,jk-1}」に対応したGの列からなる「k×(k-1)」行列を「^GJk-1」とし、「ei」と「^GJk-1」とから構成される「k×k」行列を「^Gi,Jk-1=[ei^GJk-1]」とする。
【0047】
このとき前記定理(仮定)により、「^Gi,Jk-1」のすべての列が線形独立なため、「Jk-1」の列の線形結合で「ei」を作ることができない。すなわち、「Si」を「Wj1,Wj2,・・・,Wj-1」から構成することはできず、「Si,i=1,・・・,L,」および「Ul,l=1,・・,k-L」が「^S」上を一様分布することから、式(13)が成り立つ。
【0048】
前記定理の条件を満たす行列Gを用いて、式(10)で符号化する「(k,n)-L-MSSS」では、各「Si」と各「Ul」が「^S」上を一様分布すれば、各「Wj」も「^S」上を一様分布する。
【0049】
そのため、「(k,L,n)-RSSS」の場合と同様に(S1,S2,・・・,SL)に対するシェアのビット長は、(k,n)しきい値法をL回用いる場合に比べて、「1/L」に削減できる。
【0050】
図1に示すように、「(k,L,n)-RSSS」は、「(k,n)-L-MSSS」でもあるため、新たに「(k,n)-L-MSSS」を考える必要がなく、「(k,n)-L-MSSS」を使用すればよいとも考えられる。
【0051】
ところが、式(10)の行列Gが満たさなければならない条件についてみれば、「(k,L,n)-RSSS」より「(k,n)-L-MSSS」の方が緩いため、符号化・復号化の演算が「(k,L,n)-RSSS」より「(k,n)-L-MSSS」の方がシンプルとなり、実装化が容易となる。
【0052】
そこで、「(n,n)-SSS」が提案されている。「(n,n)-SSS」は、「k<n」の「(k,n)-SSS」に比べて、式(16)(17)の符号化・式(18)の復号化を行うことができる特徴を有している。
【0053】
【0054】
【0055】
【先行技術文献】
【非特許文献】
【0056】
【文献】A. Shamir, “How to share a secret,” Communicationsof the ACM, vol. 22, no. 11, pp. 612_613,1979.
【文献】G. R. Blakley, “Safeguarding cryptographic keys,”Proc. of 1979 International Workshop on Managing Requirements Knowledge (MARK), pp.313_317, 1979
【文献】E. D. Karnin, J. W. Greemne, M. E. Hellman, “On secret sharing systems,” IEEE Trans. on Information Theory, vol. IT-29, no. 1, pp. 35_41, 1983
【文献】山本博資, “(k, L, n) しきい値秘密分散システム,”電子通信学会論文誌, vol.J68-A, no.9, pp.945-952 Sep. 1985
【文献】G. R. Blakley and C. Meadows, “Security of ramp schemes,” Advances in Cryptology-CRYPTO’84,LNCS 196, Springer-Verlag, pp. 242_269, 1985
【文献】M. Iwamoto and H. Yamamoto, “Strongly Secure Ramp Secret Sharing Schemes for General Access Structures,” Information Processing Letters,vol. 97, issue 2, pp.52-57, 2006.
【文献】伊藤, 斎藤, 西関, “一般的なアクセス構造を実現する秘密共有法,” 電子情報通信学会論文誌, vol. J71-A,no. 8, pp. 1592_1598, 1988
【文献】M. Itoh, A. Saito and T._Nishizeki, “Multiple assignmentscheme for sharing secret,” J. of Cryptology,vol. 6, pp. 15_20, 1993
【文献】ISO/IEC, “Information technology _ Security techniques _ Secret sharing_, Part 2: Fundamental mechanisms,” International Standard, ISO/IEC 1952-2, 2017
【文献】五十嵐大,露崎浩太,川原祐斗 ”SHH:オブジェクトストレージ向けの超高速秘密分散ライブラリ”情報処理学会研究報告 Vol.2015-CSEC-70 No.26,Vol.2015-SPT-14 No.26,2015/7/3
【発明の概要】
【発明が解決しようとする課題】
【0057】
「(n,n)-SSS」は、非特許文献7~9に示すように、一般アクセス構造を持つ秘密分散方式を簡単に構成することができるため、様々なところで利用されている。
【0058】
しかしながら、一般の「(k,n)-SSS」と同様に、「(n,n)-SSS」の各シェアのビット長は秘密情報Sと同じビット長になり、シェア全体のビット長は「S」のn倍となってしまう。
【0059】
この欠点を克服するために、「(n,n,n)-RSSS」を使えば、シェア全体のビット長を秘密情報Sと同じビット長まで減らすことができる。ところが、「(n,n,n)-RSSS」は,「(n,n)-SSS」のような簡単な演算で符号化・復号化ができる構成にはならないため、実装が容易ではない。
【0060】
本発明は、このような従来の問題を解決するためになされ、簡単な演算で符号化・復号化できる秘密分散法を提供することを解決課題としている。
【課題を解決するための手段】
【0061】
(1)コンピュータを用いて分散対象データを複数の分散データに分散し、前記分散データから前記分散対象データを復元する方法であって、
前記分散データを生成する分散ステップと、
前記分散対象データを再構成する復元ステップと、
を備え、
前記分散ステップは、前記分散対象データと、事前に設定された前記分散データの分散総数「n」と、前記分散対象データのデータ長(L)とを読み込む第1ステップと、
乱数を生成し、前記乱数と前記分散対象データのデータ長(L)と前記分散対象データとのデータ列を作成する第2ステップと、
前記データ列を独立一様分布化する第3ステップと、
前記独立一様分布化した前記データ列Sを「n×8」のブロックに分割し、分割された各ブロックに対して式(33)の演算を実行し、分散データ「Wzy」を求める第4ステップと、
【0062】
【0063】
を有する一方、
前記復元ステップは、前記分散データをもとに式(37)の演算を実行し、分散対象データを復号する第5ステップと、
【0064】
【0065】
前記復号したデータ列に対して第3ステップの独立一様化と逆の操作を実行する第6ステップと、
前記第6ステップの操作で生成されたデータ列から分散対象データを抽出することで分散対象データを復元する第7ステップと、
を有することを特徴としている。
【0066】
(2)前記第3ステップの一態様は、事前に有限体上で適切なマトリクスをもって演算し、行列の要素で乱数を定める第8ステップと、
前記独立一様分布化前のデータ列Xに対し、前から順に前記行列の演算を施して新たなデータ列Yを生成する第9ステップと、
前記データ列Y中の隣り合うデータ間において、上位の任意ビットと下位の任意ビットとの置換を順に行って新たなデータ列Zを生成する第10ステップと、
前記データ列Zに対し、後ろから順に前記行列の演算を施して新たなデータ列Sを独立一様分布化されたデータとして生成する第11ステップと、
を有することを特徴としている。
【0067】
(3)前記第8ステップの一態様は、式(34)により「法264」上で前記行列の要素を乱数で定め、その逆行列を求め、
【0068】
【0069】
mod264:法264
前記第9ステップは、式(35)により前記データ列Yを生成し、
前記第11ステップは、式(36)により前記データ列Sを生成する
【0070】
【0071】
【0072】
ことを特徴としている。
【0073】
(4)前記分散ステップの一態様は、分散対象データのハッシュ値を求めて設定するステップをさらに有する一方、
前記復元ステップの一態様は、前記第7ステップで抽出された分散対象データのハッシュ値を求めて前記設定されたハッシュ値と比較し、復元された前記分散対象データの正否を判定するステップをさらに有する
ことを特徴としている。
【発明の効果】
【0074】
本発明によれば、簡単な演算で符号化・復号化できる秘密分散法を提供できるため、実装化が容易である。
【図面の簡単な説明】
【0075】
【
図2】本発明の実施形態に係る秘密分散法を実現するシステム構成図。
【
図6】同 独立一様分布化(S04)中のS12の処理図。
【発明を実施するための形態】
【0076】
以下、本発明の実施形態に係る秘密分散法を説明する。この秘密分散法は、マルチプレックスシークレットシェリング「multiplex SSS/(n,n)-n-MSS」を採用する。
【0077】
この「(n,n)-n-MSS」は、
(1)分散データ(シェア「Wj,j=1,2,・・・,n」)の合計容量が、元の秘密情報Sのデータ容量とほぼ同じ
(2)計算量が少なく高速処理が可能
(3)分散データの漏洩に対する完全秘匿性
の利点を有している。
【0078】
また、「(n,n)-n-MSSS」では乱数Ulを用いず、式(19)のような演算となる。
【0079】
【0080】
ここでGは「n×n」行列であり、各「Gi=[ei G]」に対して「Gi」の任意のn列が線形独立でなければならない。「GF(q)」が素体の場合、例えばGとして、式(20)の行列を用いることができる(ただし、q≫nとする。)。
【0081】
【0082】
このとき符号化は式(21)(22)の演算で行うことができる。
【0083】
【0084】
【0085】
また、復号化は式(23)(24)の演算で行うことができる。
【0086】
【0087】
【0088】
式(24)は、「^V=Σn
j=1Wj=[Σn
i=1]+nV=(n+1)Vの関係があることから成り立つ。GF(q)が「q=2m」の拡大体の場合は、例えば「G」として式(25)の行列を用いることができる。ただし、「q≫n」とし、「α」をGF(2m)の原始元とする。
【0089】
【0090】
このとき符号化は、式(26)(27)の演算で行うことができる。
【0091】
【0092】
【0093】
また、複合化は、式(28)(29)の演算で行うことができる。
【0094】
【0095】
【0096】
式(29)の関係は、「式(26)-式(28)」により、式(30)の関係が成り立つことから得られる。
【0097】
【0098】
このような「(n,n)-n-MSSS」の安全性について補足説明すれば、式(27)の関係により、2つのシェア(Wj1,Wj2)から「(Wj1-Wj2)(α-1)-1=Sj1-Sj2」の値が分かる。しかしながら、Sj1とSj2が互いに独立で、「^S」上で一様分布している場合には、式(31)(32)を満たす。
【0099】
【0100】
【0101】
ただし、「H(Sj1Sj2|Wj1,Wj2)=log|^S|=m」となるため、「n≧4」のときは強安全な「(n,n,n)-RSSS」の条件を満たしていない。この点については、「m=64(q=264)」あるいは「m=128(q=2128)程度以上の「m」を用いれば十分な安全性を保つことができる。
【0102】
このとき各「Si」が互いに独立でない場合や、「Si」が「^S」上で一様分布をしない場合(冗長性を含んでいる場合)は冗長性を取り除く処理を事前に行う必要がある。このような「(n,n)-n-MSSS」を多重割り当て法で利用すれば、一般アクセス構造に対する「n多重秘密分散法」を実現することができる。
【実施例】
【0103】
前記秘密分散法の実施例を説明する。この実施例は、本発明を実施するための一例にすぎず、本発明の技術的範囲を限定するための解釈に用いてはならないものとする。
【0104】
≪システム構成例≫
図2および
図3に基づき本実施例の前記秘密分散法を実行する秘密分散システムの構成例を説明する。このシステム1は、クライアント装置2と複数の保管サーバ装置3とを備え、両者2,3をネットワーク経由で接続したコンピュータネットワークにより構成されている。
【0105】
図2中の3-1,3-2,3-nは、クライアント装置2にネットワーク4を経由して接続されたn台の保管サーバ装置3を示している。この保管サーバ装置3は、その一部または全部が同一の組織によって運用されてもよく、あるいは全部が異なる組織に運用されてもよいものとする。
【0106】
クライアント装置2は、通信部11,制御部12,入出力部13,分散データ生成部(秘密分散ライブラリ)14,データ復元部15,乱数生成部16を実装する。この通信部11は保管サーバ等の他の装置との通信を行い、制御部12はクライアント装置2の全体制御を行い、入出力部13は保管サーバ装置3への指示およびデータ等の入力・保管管理サーバ3からの指示およびデータ等の出力を行う。
【0107】
分散データ生成部14は、分散対象データ(秘密情報S)を符号分散化した分散データ(シェア「Wj,j=1,2,・・・,n」)を生成するとともに、秘密情報分散装置として分散データのそれぞれを保管サーバ装置3に配布する。また、データ復元部15は、保管サーバ装置3から分散データを収集して分散対象データの復元を行う。なお、乱数生成部16は、分散データ生成部14の指示に応じて乱数を生成する。
【0108】
保管サーバ装置3は、通信部21,分散データ保存部22を実装する。この通信部21はクライアント装置2等の他の装置との通信を行い、分散データ保存部22は分散データ生成部14の生成した分散データが保存される。
【0109】
すなわち、分散データ生成部14の生成した分散データは、通信部11,21により保管サーバ装置3に送信されて分散データ保存部22に保存される。ここで保存された分散データは分散対象データの復元時にクライアント装置2に通信部11,12により送信され、データ復元部15により分散対象データが復元される。
【0110】
このような保管サーバ装置3およびクライアント装置2は、それぞれ
図3のコンピュータを主体に構成され、通信装置51,入出力装置52,メモリ(主記憶装置)53,補助記憶装置(SSD,HDDなど)54,CPU55,出力装置56を備え、各ハードウェア51~56がバス57を介して接続されており、各ハードウェアとソフトウェアとの協働により前記機能部13~16,21,22を実装する。以下、秘密分散法の主要構成である分散データ生成部14,データ復元部15の処理内容を説明する。
【0111】
≪分散データ生成部14,データ復元部15の処理内容≫
分散データ生成部14は、秘密情報Sを分散対象データとして事前に定められた分散総数に応じた分散データを生成する分散データ生成機能(関数:mass_generate)を備える。一方、データ復元部15は、すべての分散データから元の分散対象データを再構成する再構成機能(関数:mass_reconstruct/)を備える。
【0112】
(1)分散データ生成機能
分散データ生成部14は、
図4中の矢印A,Bに示すように、分散データ生成機能を使って分散対象データからn個の分散データを生成する。このときマルチプレックスシークレットシェリング「(n,n)-n-MSS」を用いる。
【0113】
また、前記関数の引数(入力)の1次元配列Siには、分散対象データなどが格納される。その際に分散総数(n:2~65535)および分散対象データ長(バイト)が指定される。以下、
図5に基づき分散データ生成機能による処理内容を説明する。
【0114】
S01:処理が開始されると、前記関数の引数(入力)の1次配列Si「unsigned char*Si」の先頭アドレスに設定された分散総数n(2バイト)・分散対象データ長L(8バイト)・分散対象データ(Lバイト)が読み込まれる。
【0115】
S02:分散対象データのハッシュ値(OpenSSLのSHA-256)を求める。ここで求めたハッシュ値(32バイト)を前記関数の引数(出力)の2次元配列CS「unsigned char*CS」の先頭アドレスに設定する。
【0116】
S03:乱数生成部16に指示を出力し、乱数(8バイト)を生成させる。ここで生成された乱数を取得して「乱数+分散対象データ長L+分散対象データ」のデータ列を作成する。その際、データ列のバイト数が「n×8」の倍数でない場合は、データ列の後ろに「x’00’」をパディングして「n×8」の倍数とすればよい。
【0117】
S04:S03で生成したデータ列を後述のように独立一様分布化する。
【0118】
S05:S04で独立一様化したデータ列Sを「n×8」のブロックに分割し、分割された各ブロックに対して、非特許文献10の「GF(2)64」上で式(33)の演算を実行し、分散データ「Wzy」を求める。
【0119】
【0120】
S06:S05で求めた分散データ「Wzy」を、前記関数の引数(出力)の2次元配列スSniに設定する。このとき分散番号iの分散データは、前記2次元配列Sniのi行目に割り当てる。例えば分散番号1であれば1行目に割り当てられ、分散番号2であれば2行目に割り当てられる。
【0121】
(2)S04の詳細
「(n,n)-n-MSS」によれば、安全性をクリアするためのアルゴリズム上の制約として、「S(秘密情報:分散対象データ)=(S1y,S2y,・・・,Sxy)」に対して、各「Sxy」が独立で一様分布する必要がある。そこで、S04では、以下に示す独立一様分布化の処理を行う。
【0122】
S11:処理が開始されると、有限体上で適切なマトリクスをもって乗算を行う。例えば式(34)に示すように、「法264(1word 64bit)/GF(2)64」上で行列Aの要素を乱数で決め、その逆行列Bを求めておくものとする。逆行列Bは、行列式|A|の値が「264」と互いに素、即ち奇数であれば求めることができる。
【0123】
【0124】
「mod264」=法264
S12:独立一様分布化する前のデータ列に対し、前から順に「法264」上で行列Aの演算を行って新たなデータ列を生成する。
【0125】
【0126】
式(35)に基づき処理例を説明する。ここでは独立一様分布化する前のデータ列をデータ列X(X(1)X(2)X(3)X(4)X(5)X(6))と示している。また、新たなデータ列をデータ列Y(Y(1)Y(2)Y(3)Y(4)Y(5)Y(6))と示している。なお、この処理例の各生成は、それぞれ「法264」上における行列Aの演算を利用しているものとする。
【0127】
まず、式(35-1)に示すように、データ列X中の(X(1)X(2)X(3))に対し、前記演算を行って式(35-2)の(Y(1)Y(2)Y(3))を生成する。つぎに(35-3)に示すように、データ列X中の(X(2)X(3)X(4))に対し、前記演算を行って式(35-4)の(Y(2)Y(3)Y(4))を生成する。
【0128】
このようにデータ列X中の(X(1)X(2)X(3)X(4)X(5)X(6))の前から順に3個ずつ前記演算を行って、式(35-6)に示すように、(Y(1)Y(2)Y(3)Y(4)Y(5)X(6))を生成する。
【0129】
その後、式(35-7)に示すように、(Y(4)Y(5)X(6))を乱数(X(M-2)X(M-1)X(M)にて暗号化し、(Y(M-2)Y(M-1)X(M))を生成する。ここで生成された(Y(M-2)Y(M-1)X(M))に対し、式(38-8)に示すように、前記演算を行って(Y(M-2)Y(M-1)Y(M))を生成し、データ列(Y(1)Y(2)Y(3)Y(4)Y(5)Y(6))を生成する。
【0130】
S13:S12で生成したデータ列Yに対し、隣接するデータ間で上位32ビット(bit)と下位32ビットの置換を行って、新たなデータ列Zを生成する。
【0131】
例えば
図6に示すように、データY
(1)の下位32ビットとデータY
(2)の上位32ビットを置換し、データY
(2)の下位32ビットとデータY
(3)の上位32ビットを置換し、データY
(3)の下位32ビットとデータY
(4)の上位32ビットを置換し、データY
(4)の下位32ビットとデータY
(5)の上位32ビットを置換し、データY
(5)の下位32ビットとデータY
(6)の上位32ビットを置換し、データY
(6)の下位32ビットとデータY
(1)の上位32ビットを置換することでデータ列Zを生成する。
【0132】
S14:S13で作成したデータ列Zに対し、後ろから順に「法264」上で行列Aの乗算を行って、新たなデータ列Sを生成する。
【0133】
【0134】
式(36)に基づき処理例を説明する。この処理例の各生成も、それぞれ「法264」上における行列Aの演算を利用する。
【0135】
まず、式(36-1)に示すように、データ列Z中の(Z(2)Z(3)Z(4)Z(5)Z(6))を乱数にて暗号化した(Z(M-4)Z(M-3)Z(M-2)Z(M-1)Z(M))を用意する。
【0136】
つぎに式(36-2)(36-3)に示すように、(Z(M-4)Z(M-3)Z(M-2)Z(M-1)Z(M))中の(Z(M-2)Z(M-1)Z(M))に対し、前記演算を行って(S(M-2)S(M-1)S(M))を生成する。その後、式(36-4)(36-5)に示すように、(Z(M-3)Z(M-2)Z(M-1))に対し、前記演算を行って(S(M-3)S(M-2)S(M-1))を生成する。
【0137】
このような演算処理を後ろから順に実行することで式(36-6)の(S(M-4)S(M-3)S(M-2)S(M-1)S(M))が生成され、これにより(Z(1)S(2)S(3)S(4)S(5)S(6))が生成される。その後、(Z(1)S(2)S(3))から(S(1)S(2)S(3))を生成することで新たなデータ列S、即ち(S(1)S(2)S(3)S(4)S(5)S(6))が生成される。
【0138】
(3)再構成機能
図7に基づき再構成機能を説明する。ここでは基本的に分散データ生成機能と逆の処理を実行することにより、
図4中の矢印C,Dに示すように、すべての分散データから元の分散対象データを再構成する。
【0139】
S21:処理が開始されると、2次元配列Sniに設定された分散データを基に「GF(2)64」上で式(37)の演算を行い、分散対象データ「Sxy」を複合する。
【0140】
【0141】
S22:S21で複合化した分散対象データ「Sxy」のデータ列に対し、S04の独立一様化の逆操作を実行する。具体的には
(a)行列Aの逆行列Bを用いて、前記データ列の前から順に「法264」上で行列Bの演算を行う(S12の逆操作)。
(b)前記逆行列Bの演算後のデータ列中、隣接するデータ間で上位32ビットと下位32ビットとの逆置換を行う(S13の逆操作)。
(c)前記逆置換後のデータ列に対して逆行列Bを用いて、後ろから順に「法264」上で逆行列Bの乗算を行う(S14の逆操作)。
【0142】
S23:S22の逆操作に結果として生成されたデータ列から分散対象データを抽出し、ハッシュ値(OpenSSLのSHA-256)を求める。ここで求めたハッシュ値とS02のハッシュ値とを比較し、復元された分散対象データの正否確認を行う。
【0143】
すなわち、両者のハッシュ値が同じであれば、正しく復元できたものとして、戻り値「0」を返す。一方、両者のハッシュ値が異なっていれば、正しく復元できなかったため、戻り値「5」を返す。この場合には再度の復元を試みる設定が好ましい。
【0144】
このように前記秘密分散法によれば、簡単な演算で符号分散化・複合化を実現することができ、例えばユーザ認証システムなど採用すれば簡単な構成で分散対象の秘密情報(パスワードなど)の安全性を確保することができる。また、遺言や契約書などの画像データを分散対象の秘密情報とし、その安全性を確保することもできる。
【符号の説明】
【0145】
1…秘密情報システム
2…クライアント装置
3(3-1,3-2,3-n)…保管サーバ装置
4…ネットワーク
11…通信部
12…制御部
13…入出力部
14…分散データ生成部
15…データ復元部
16…乱数生成部
21…通信部
22…保存部
23…分散データ
【要約】 (修正有)
【課題】簡単な演算で符号化・復号化できる秘密分散法を提供する。
【解決手段】秘密情報システムにおいて、クライアント装置2の分散データ生成部14は、秘密情報Sを分散対象データとして分散総数に応じた分散データを生成する分散データ生成機能を備える。データ復元部15は、すべての分散データから元の分散対象データを再構成する再構成機能を備える。分散データ生成部14は、分散データ生成機能を使って分散対象データからn個の分散データを生成する。このときマルチプレックスシークレットシェリング「(n,n)―n―MSS」を用いる。データ復元部15の再構成機能は、基本的に分散データ生成機能と逆の処理を実行することで全ての分散データから元の分散対象データを再構成する。
【選択図】
図2