(57)【要約】【課題】Shamir分散情報をCSS分散情報へ変換するのは困難であること。【解決手段】第2装置は、秘密情報のShamir(2,n)法による第2分散値を、第1乱数のShamir(2,n)法による第2分散値でマスクした第2マスク済み分散値を生成して送信し、第3装置は、秘密情報のShamir(2,n)法による第3分散値を、第1乱数のShamir(2,n)法による第3分散値でマスクした第3マスク済み分散値を生成して送信する。第1装置は、受信した第2及び第3マスク済み分散値から、秘密情報を第1乱数でマスクした値を計算して第2及び第3乱数でマスクし、次に、1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を計算する。【選択図】図4
2018045019.tif 000002
【特許請求の範囲】
【請求項１】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含む秘密分散システムであって、
第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持し、
前記第2の情報処理装置は、情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第3の情報処理装置は、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第1の情報処理装置は、
前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、
前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する、
秘密分散システム。
【請求項２】
f1’(x)を、f1’(0)=1, f1’(i)=0である1次の多項式とし、
前記第2の情報処理装置は、前記第1の乱数のShamir(2,n)法による第2の分散値として、r1*f1’(2)を使用し、
前記第3の情報処理装置は、前記第1の乱数のShamir(2,n)法による第3の分散値として、r1*f1’(3)を使用する、
請求項１に記載の秘密分散システム。
【請求項３】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算する第1の処理部と、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する第2の処理部と、
を有する情報処理装置。
【請求項４】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算する第1の処理部と、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する第2の処理部と、
を有する情報処理装置。
【請求項５】
f1’(x)を、f1’(0)=1, f1’(i)=0である1次の多項式とし、
前記第2の情報処理装置は、前記第1の乱数のShamir(2,n)法による第2の分散値として、r1*f1’(2)を使用し、
前記第3の情報処理装置は、前記第1の乱数のShamir(2,n)法による第3の分散値として、r1*f1’(3)を使用する、
請求項３または４に記載の情報処理装置。
【請求項６】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置が実行する分散情報変換方法であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、
前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、
前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、
前記情報を前記第1の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する、
分散情報変換方法。
【請求項７】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置が実行する分散情報変換方法であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する、
分散情報変換方法。
【請求項８】
f1’(x)を、f1’(0)=1, f1’(i)=0である1次の多項式とし、
前記第2の情報処理装置は、前記第1の乱数のShamir(2,n)法による第2の分散値として、r1*f1’(2)を使用し、
前記第3の情報処理装置は、前記第1の乱数のShamir(2,n)法による第3の分散値として、r1*f1’(3)を使用する、
請求項６または７に記載の分散情報変換方法。
【請求項９】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置を構成するコンピュータを、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算する第1の処理部と、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する第2の処理部と、
して機能させるためのプログラム。
【請求項１０】
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置を構成するコンピュータを、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算する第1の処理部と、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する第2の処理部と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密分散システム、情報処理装置、分散情報変換方法、およびプログラムに関する。
【背景技術】
【０００２】
シェアサイズの効率が良く、Shamir(k,n)法のシェアに通信を伴うことなく変換可能な秘密分散法が、本発明者によって提案されている（例えば非特許文献3参照）。以下、この秘密分散法をCSS秘密分散法と称す。
【０００３】
CSS秘密分散法では、以下の手順によって秘密情報を分散する。ここで、Rを定義域が{0,1}L、値域がGF(p)の擬似ランダム関数とする。
【０００４】
(a)秘密情報s1,…,sm∈GF(p)が入力される。なお、m<2Lとする。
(b)擬似ランダム関数の鍵として用いる乱数rを、RSS(複製型秘密分散法)を用いて分散する。
(c)s1’=s1+R(r,1),…,sm’=sm+R(r,m)を計算する。
(d)各si’をk-1個のシェアの値が固定されたShamir(k,n)法で分散する。このようにして分散されて得られた分散情報を、CSS分散情報と称す。
【０００５】
以上の分散手順のポイントは、k-1個のシェアを固定したShamir(k,n)法を用いる点である。k-1個分のシェアは値が固定されているので、ストレージ容量を消費しない。固定する値は0などでよい。Shamir(k,n)法においてランダムなk-1次多項式を用意するのは、秘匿性のためである。CSSにおいては、秘密情報は疑似乱数を加えられてから分散されるため、冗長性のみが担保されればよい。k-1次多項式は、k点で定まるので、si’に関する多項式fi(x)を選択する場合であれば、fi(0)=si’,…,fi(k-1)=0となるk-1次多項式を計算する。サーバP1,…,Pk-1には何も送付せず、Pk,…,Pnには、fi(k),…,fi(n)を配布する。これによって、si’に関するシェアを通常のShamir(k,n)法を用いる場合と比べて、シェアk-1個分節約できる。
【０００６】
また、CSS秘密分散法では、以下の手順によってCSS分散情報から秘密情報を復元する。
【０００７】
(a)擬似ランダム関数の鍵であるrを復元する。
(b)s1’,…,sm’を復元する。
(c)s1=s1’-R(r,1),…,sm=sm’-R(r,m)を計算する。
【０００８】
以上の復元手順を要約すると、擬似乱数が加算された秘密情報と擬似乱数のそれぞれを復元して、差分を取るというものである。
【０００９】
また、CSS秘密分散法では、CSS分散情報を、以下の手順によって、秘密計算を実行可能なShamir分散情報に変換する。
【００１０】
(a)RSS.Convertを用いて、R(r,1),…,R(r,m)に関するShamir(k,n)法のシェアRand(r,1),…,Rand(r,m)を計算する。ここで、RSS.Convertは、RSSのシェアを入力として、これをShamirのシェアに変換するアルゴリズムである。この詳細なアルゴリズムについては、例えば非特許文献4に記載されている。
(b)si’のシェアからR(r,i)のShamir(k,n)法のシェアRand(r,i)を減じたものをsiのシェアとする。
【００１１】
擬似乱数の鍵rがRSSによって分散されていれば、R(r,1),…,R(r,m)に関するShamir(k,n)法のシェアRand(r,1),…,Rand(r,m)を一切の通信を行うことなく計算できる。従って、si+Rand(r,i)のシェアからRand(r,i)のシェアを減ずれば、siに関するシェアが計算できる。つまり、以上の手順はサーバ毎に実行できるため、一切の通信を要しない。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】A. Shamir. How to share a secret. Communications of the ACM, 22(11):612-613, 1979
【非特許文献２】Michael Ben-Or, Shafi Goldwasser and Avi Wigderson, “Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract)”,Proceedings of the 20 th Annual ACM Symposium on Theory of Computing, 1988.
【非特許文献３】荒木俊則，”秘密計算を実行可能なシェアに通信を伴う事無く変換可能で効率の良い秘密分散法”,マルチメディア，分散，協調とモバイルシンポジウム(DICOMO2015) pp. 1600-1603, 2015.
【非特許文献４】Ronald  Cramer，Ivan Damgard, Yuval Ishai, ”Share Conversion, Pseudorandom Secret-Sharing and Applications to Secure Computation” Theory of Cryptography, Second heory of Cryptography Conference(TCC), pp.342-362, 2005.
【非特許文献５】Ryo KIKUCHI, Koji CHIDA, Dai IKARASHI, Wakata OGATA, Koki HAMADA Katsumi TAKAHASHI, “Secret Sharing with Share-Conversion: Achieving Small Share-Size and Extendibility to Multiparty Computation” IEICE TRANS. FUNDAMENTALS, VOL E98-A No.1 JANUARY 2015
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したようにCSS秘密分散法の分散情報をShamir秘密分散法の分散情報へ変換する方法は知られている。しかし、その逆に、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換する方法は知られていない。そのため、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換するのは困難であった。
【００１４】
本発明の目的は、上述した課題、即ち、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換するのは困難である、という課題を解決する秘密分散システム、情報処理装置、分散情報変換方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の一形態に係る秘密分散システムは、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含む秘密分散システムであって、
第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持し、
前記第2の情報処理装置は、情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第3の情報処理装置は、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第1の情報処理装置は、
前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、
前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する、
ように構成されている。
【００１６】
本発明の他の形態に係る情報処理装置は、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算する第1の処理部と、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する第2の処理部と、
を有する。
【００１７】
本発明の他の形態に係る情報処理装置は、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算する第1の処理部と、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する第2の処理部と、
を有する。
【００１８】
本発明の他の形態に係る分散情報変換方法は、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置が実行する分散情報変換方法であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、
前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、
前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、
前記情報を前記第1の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する。
【００１９】
本発明の他の形態に係る分散情報変換方法は、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置が実行する分散情報変換方法であって、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算し、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する。
【００２０】
本発明の他の形態に係るプログラムは、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第１の情報処理装置を構成するコンピュータを、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第2の情報処理装置から受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算する第1の処理部と、
前記情報を前記第1の乱数と前記第2の乱数と前記第3の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算する第2の処理部と、
して機能させる。
【００２１】
本発明の他の形態に係るプログラムは、
第1の情報処理装置と第2の情報処理装置と第3の情報処理装置とを含み、第1の乱数と第2の乱数と第3の乱数のうち、前記第2の乱数と前記第3の乱数を前記第1の情報処理装置が保持し、前記第1の乱数と前記第3の乱数を前記第2の情報処理装置が保持し、前記第1の乱数と前記第2の乱数を前記第3の情報処理装置が保持する、秘密分散システムにおける前記第2の情報処理装置を構成するコンピュータを、
情報のShamir(2,n)法による第2の分散値を、前記第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を、前記第1の情報処理装置へ送信するために計算する第1の処理部と、
前記第1の情報処理装置が、前記第2の情報処理装置から前記第2のマスク済み分散値を受信し、前記情報のShamir(2,n)法による第3の分散値を、前記第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を、前記第3の情報処理装置から受信し、前記第2のマスク済み分散値と前記第3のマスク済み分散値とから、前記情報を前記第1の乱数でマスクした値を計算し、前記情報を前記第１の乱数でマスクした値を、前記第2の乱数と前記第3の乱数で更にマスクしたマスク済み情報を計算し、前記情報を前記第１の乱数と前記第２の乱数と前記第３の乱数でマスクした前記マスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値を、前記第1の情報処理装置と前記第2の情報処理装置と前記第3の情報処理装置とで分散して保持するために計算した後、前記第2の情報処理装置のための分散値を前記第1の情報処理装置から受信する第2の処理部と、
して機能させる。
【発明の効果】
【００２２】
本発明は上述したような構成を有することにより、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第1の実施形態に係る秘密分散システムの構成例を示す図である。
【図２】本発明の第1の実施形態に係る秘密分散システムを構成する情報処理装置の構成例を示す図である。
【図３】本発明の第1の実施形態に係る秘密分散システムを構成する情報処理装置における第2の変換部の構成例を示す図である。
【図４】本発明の第1の実施形態に係る秘密分散システムの動作の一例を示すフローチャートである。
【図５】本発明の第2の実施形態における分散情報生成装置100と分散情報記憶装置200の構成例を示す図である。
【図６】本発明の第2の実施形態における分散情報記憶装置200と分散情報変換装置300の構成例を示す図である。
【図７】本発明の第2の実施形態における分散情報記憶装置200と復元装置400の構成例を示す図である。
【図８】本発明の第2の実施形態における分散情報生成装置100の動作の一例を示すフローチャートである。
【図９】本発明の第2の実施形態における分散情報変換装置300の動作の一例を示すフローチャートである。
【図１０】本発明の第2の実施形態における秘密情報復元装置400の動作の一例を示すフローチャートである。
【図１１】本発明の第2の実施形態における主再変換装置500と従再変換装置600の構成例を示す図である。
【図１２】本発明の第2の実施形態における主再変換装置500と従再変換装置600の動作を示すフローチャートである。
【発明を実施するための形態】
【００２４】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態に係る秘密分散システムは、第1の情報処理装置11と第2の情報処理装置12と第3の情報処理装置13とを含む。第1の情報処理装置11と第2の情報処理装置12と第3の情報処理装置13とは、ネットワーク2を通じて相互に通信可能に接続されている。ネットワーク2は、例えばインターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを用いることができる。
【００２５】
図2を参照すると、情報処理装置1i(i=1,2,3)の一例は、通信I/F(インターフェース)部11と、操作入力部12と、画面表示部13と、記憶部14と、演算処理部15とを含む。
【００２６】
通信I/F部11は、専用のデータ通信回路からなり、ネットワーク2を介して接続された他の情報処理装置などの各種装置との間でデータ通信を行う機能を有している。
【００２７】
操作入力部12は、キーボードやマウスなどの操作入力装置からなり、オペレータの操作を検出して演算処理部15に出力する機能を有している。
【００２８】
画面表示部13は、LCD（Liquid Crystal Display）やPDP(Plasma Display Panel)などの画面表示装置からなり、演算処理部15からの指示に応じて、操作メニューなどの各種情報を画面表示する機能を有している。
【００２９】
記憶部14は、ハードディスクやメモリなどの記憶装置からなり、演算処理部15での各種処理に必要な処理情報やプログラム14Aを記憶する機能を有している。プログラム14Aは、演算処理部15に読み込まれて実行されることにより各種処理部を実現するプログラムであり、通信I/F部11などのデータ入出力機能を介して外部装置（図示せず）や記憶媒体（図示せず）から予め読み込まれて記憶部14に保存される。記憶部14で記憶される主な処理情報として、入力情報14B、中間情報14C、および出力情報14Dがある。
【００３０】
入力情報14Bは、秘密分散法の入力となる情報である。中間情報14Cは、秘密分散法の処理の過程で生成される情報である。出力情報14Dは、秘密分散法の出力となる情報である。
【００３１】
演算処理部15は、CPUなどのマイクロプロセッサとその周辺回路を有し、記憶部14からプログラム14Aを読み込んで実行することにより、上記ハードウェアとプログラム14Aとを協働させて各種処理部を実現する機能を有している。演算処理部15で実現される主な処理部として、分散部15Aと復元部15Bと第1の変換部15Cと第2の変換部15Dとがある。
【００３２】
分散部15Aは、CSS秘密分散法による秘密情報の分散を行う機能を有する。分散部15Aは、入力情報14Bとして秘密情報などを入力し、中間情報14Cとして秘密情報を乱数でマスクした値などを保持し、出力情報14DとしてCSS秘密分散法による分散情報を出力する。
【００３３】
復元部15Bは、CSS秘密分散法による分散情報から秘密情報を復元する機能を有する。復元部15Bは、入力情報14BとしてCSS秘密分散法による分散情報などを入力し、中間情報14Cとして乱数によってマスクされた秘密情報などを保持し、出力情報14Dとして秘密情報などを出力する。
【００３４】
第1の変換部15Cは、CSS秘密分散法による分散情報をShamir秘密分散法による分散情報に変換する機能を有する。第1の変換部15Cは、入力情報14BとしてCSS秘密分散法による分散情報などを入力し、中間情報14CとしてRSS.Convertの変換結果などを保持し、出力情報14DとしてShamir秘密分散法による分散情報などを出力する。
【００３５】
第2の変換部15Dは、Shamir秘密分散法による分散情報をCSS秘密分散法による分散情報に変換する機能を有する。第2の変換部15Dは、入力情報14BとしてShamir秘密分散法による分散情報などを入力し、中間情報14Cとして乱数をShamir秘密分散法で分散した分散情報や乱数でマスクされた秘密情報などを保持し、出力情報14DとしてCSS秘密分散法による分散情報などを出力する。
【００３６】
上記の分散部15A、復元部15B、および第1の変換部15Cは、例えば非特許文献3に記載された手法によって実現することができる。以下では、第2の変換部15Dについて詳細に説明する。
【００３７】
図3を参照すると、第2の変換部15Dは、入力部15D1と第1の処理部15D2と第2の処理部15D3と出力部15D4とを含む。
【００３８】
入力部15D1は、通信I/F部11或いは操作入力部12からShamir秘密分散法による分散情報などを入力し、入力情報14Bとして記憶部14に保存する機能を有する。Shamir秘密分散法による分散情報として、Shamir(2,n)法による分散情報を用いる場合、1つの情報処理装置には入力部15D1を通じて高々1つの分散情報だけを入力する。その理由は、2つ以上の分散情報を入力すると、入力された2つ以上の分散情報から復元部15Bによって秘密情報が復元できてしまうためである。
【００３９】
第1の処理部15D2および第2の処理部15D3は、それぞれ主たる処理と従たる処理との2つの処理のうち、何れか一方の処理を行う。Shamir(2,n)法による分散情報をCSS秘密分散法による分散情報に変換する作業は、3つの情報処理装置11,12,13が共同して行う。このとき、何れか1つの情報処理装置が主たる処理を実行し、残りの2つの情報処理装置が従たる処理を実行する。
【００４０】
第1の処理部15D2は、従たる処理では、Shamir(2,n)法による分散値を、所定の乱数のShamir(2,n)法による分散値でマスクしたマスク済み分散値を計算し、主たる処理を行う情報処理装置へ送信する。また、第1の処理部15D2は、主たる処理では、従たる処理を行う情報処理装置から上記マスク済み分散値を受信し、そのマスク済み分散値から秘密情報を上記所定の乱数でマスクした値を計算(復元)し、さらに、別の所定の乱数で更にマスクしたマスク済み情報を計算する。
【００４１】
第2の処理部15D3は、主たる処理では、第1の処理部15D2によって計算された所定の乱数でマスクしたマスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値(即ち、CSS秘密分散法による分散値)を計算し、自情報処理装置用の分散値は自身で保持し、他情報処理装置用の分散値は当該他情報処理装置へ送信する。また、第2の処理部15D3は、従たる処理では、主たる処理を行う情報処理装置から送信されてくる分散値(即ち、CSS秘密分散法による分散値)を受信して保持する。
【００４２】
出力部15D4は、第2の処理部15D3によって保持されたCSS秘密分散法による分散値を、画面表示部13に表示し、或いは、通信I/F部11から外部装置へ送信する。
【００４３】
図4は、本実施形態に係る秘密分散システムを構成する3つの情報処理装置11,12,13によりShamir秘密分散法による分散情報をCSS秘密分散法による分散情報に変換する処理の流れの一例を示すフローチャートである。図4に示す例では、情報処理装置11が主たる処理を行い、情報処理装置12,13が従たる処理を行う。
【００４４】
図4を参照すると、先ず、情報処理装置11の入力部15D1は、秘密情報のShamir(2,n)法による第1の分散値と、第1の乱数と第2の乱数と第3の乱数との3つの乱数のうちの第2の乱数と第3の乱数を、操作入力部12或いは通信I/F部11から入力し、入力情報14Bとして記憶部14に記憶する(S-1)。また、情報処理装置12の入力部15D1は、秘密情報のShamir(2,n)法による第2の分散値と、第1の乱数と第3の乱数を、操作入力部12或いは通信I/F部11から入力し、入力情報14Bとして記憶部14に記憶する(S-2)。また、情報処理装置13の入力部15D1は、秘密情報のShamir(2,n)法による第3の分散値と、第1の乱数と第2の乱数を、操作入力部12或いは通信I/F部11から入力し、入力情報14Bとして記憶部14に記憶する(S-3)。なお、上記の例では、第1乃至第3の乱数を外部から入力したが、擬似乱数生成のシードを入力し、このシードを用いて第1乃至第3の乱数を発生させるようにしてもよい。
【００４５】
次に、情報処理装置12の第1の処理部15D2は、記憶部14の入力情報14Bから、秘密情報のShamir(2,n)法による第2の分散値と第1の乱数とを読み出し、上記第2の分散値を、第1の乱数のShamir(2,n)法による第2の分散値でマスクした第2のマスク済み分散値を計算し、通信I/F部11を通じて情報処理装置11へ送信する(S-4)。また、情報処理装置13の第1の処理部15D2は、記憶部14の入力情報14Bから、秘密情報のShamir(2,n)法による第3の分散値と第1の乱数とを読み出し、上記第3の分散値を、第1の乱数のShamir(2,n)法による第3の分散値でマスクした第3のマスク済み分散値を計算し、通信I/F部11を通じて情報処理装置11へ送信する(S-5)。
【００４６】
次に、情報処理装置11の第1の処理部15D2は、以下のような処理を実行する(S-6)。先ず、第1の処理部15D2は、情報処理装置12,13から上記第2のマスク済み分散値と第3のマスク済み分散値とを通信I/F部11を通じて受信し、上記第2および第3のマスク済み分散値から、秘密情報を第1の乱数でマスクした値を計算(復元)する。次に、第1の処理部15D2は、記憶部14の入力情報14Bから第2の乱数と第3の乱数とを読み出し、上記復元した値を第2の乱数と第3の乱数で更にマスクしたマスク済み情報を計算し、中間情報14Cとして記憶部14に記憶する。
【００４７】
次に、情報処理装置11の第2の処理部15D3は、以下のような処理を実行する(S-7)。先ず、第2の処理部15D3は、記憶部14の中間情報14Cから第1の処理部15D2によって計算したマスク済み情報を読み出し、このマスク済み情報を1個のシェアの値が固定されたShamir(2,n)法によって分散した分散値(即ち、CSS秘密分散法による分散値)を計算する。次に、第2の処理部15D3は、自分用の1つの分散値を記憶部14の出力情報14Dに記憶し、情報処理装置12と情報処理装置13用の分散値を通信I/F部11を通じてそれらの情報処理装置へ送信する。
【００４８】
次に、情報処理装置12の第2の処理部15D3は、情報処理装置11から送信された自分用の分散値を通信I/F部11を通じて受信し、出力情報14Dとして記憶部14に記憶する(S-8)。また、情報処理装置13の第2の処理部15D3は、情報処理装置11から送信された自分用の分散値を通信I/F部11を通じて受信し、出力情報14Dとして記憶部14に記憶する(S-9)。
【００４９】
次に、情報処理装置11,12,13の出力部15D4は、記憶部14の出力情報14DからCSS秘密分散法による分散値を読み出し、画面表示部13に表示し、或いは通信I/F部11から外部装置へ送信する(S-10,S-11,S-12)。
【００５０】
次に、3つの情報処理装置11,12,13によりShamir秘密分散法による分散情報をCSS秘密分散法による分散情報に変換する処理を、具体的な例を挙げて説明する。
【００５１】
前提として、秘密情報は{0,1,…,6}であり、(2,3)しきい値法で分散されているものする。このとき、秘密情報s=1のShamir(2,3)法による分散情報は、(g1,g2,g3)=(4,0,3)になる。その理由は、(1,4),(2,0),(3,3)が、g(x)=1+3x mod 7上の分散情報となっているためである。また、r1=4,r2=5,r3=6が秘密情報sをマスクするために用いられる乱数とする。
【００５２】
図4のステップS-1では、分散情報g1と乱数r2,r3が情報処理装置11に入力され、ステップS-2では、分散情報g2と乱数r1,r3が情報処理装置12に入力され、ステップS-3では、分散情報g3と乱数r1,r2が情報処理装置13に入力される。
【００５３】
図4のステップs-4では、情報処理装置12において、分散値g2を、乱数r1のShamir(2,3)法による第2の分散値でマスクした第2のマスク済み分散値を計算し、通信I/F部11を通じて情報処理装置11へ送信する。また、図4のステップs-5では、情報処理装置13において、分散値g3を、乱数r1のShamir(2,3)法による第3の分散値でマスクした第3のマスク済み分散値を計算し、通信I/F部11を通じて情報処理装置11へ送信する。
【００５４】
ここで、f1’(x)を、f1’(0)=1,f1’(i)=0である1次の多項式とすると、乱数r1のShamir(2,3)法による第2の分散値として、r1*f1’(2)を使用することができ、乱数r1のShamir(2,3)法による第3の分散値として、r1*f1’(3)を使用することができる。従って、情報処理装置12は、以下の値を計算し、情報処理装置11へ送信する。
g2+r1*f1’(2) mod 7
また、情報処理装置13は、以下の値を計算し、情報処理装置11へ送信する。
g3+r1*f1’(3) mod 7
ここで、以下が成立する。
f1’(x)=1+6x mod 7,  f1’(1)=0,  f1’(2)=6,  f1’(3)=5
f2’(x)=1+3x mod 7,  f2’(1)=4,  f2’(2)=0,  f2’(3)=3
f3’(x)=1+2x mod 7,  f3’(1)=3,  f3’(2)=5,  f3’(3)=0
従って、g2+r1*f1’(2) mod 7=0+4*6 mod 7=3、g3+r1*f1’(3) mod 7=3+4*5 mod 7=2である。
【００５５】
図4のステップs-6では、情報処理装置11は、情報処理装置12,13から受信した第2のマスク済み分散値(=3)および第3のマスク済み分散値(=2)から、秘密情報sを乱数r1でマスクした値を計算(復元)する。これは、第2および第3のマスク済み分散値はShamir(2,3)法によるシェアであるため、Shamir(2,3)法の復元処理を行えばよい。即ち、(2,3),(3,2)を通るmod 7上の1次多項式g’(x)を求めて、x=0のときの値を計算すればよい。その結果は、
g’(x)=5-x mod 7
g’(0)=5-0 mod 7=5
となる。これは、s+r1=1+4 mod 7=5に等しい。
【００５６】
また図4のステップs-6では、情報処理装置11は、上記復元した値(s+r1)を第2の乱数r2と第3の乱数r3とで更にマスクする。即ち、以下のように、s+r1に対してr2とr3をmod 7上で加算する。
s+r1+r2+r3 mod 7=5+5+6 mod 7=2
【００５７】
図4のステップs-7では、情報処理装置11は、秘密情報sを乱数r1,r2,r3によってマスクした値(=2)を、1個のシェアの値が固定されたShamir(2,3)法によって分散した分散値を計算する。これは、mod 7上で(0,2),(1,0)を通る以下のような1次多項式f’(x)を求めればよい。
f’(x)=2+5x mod 7
そして、情報処理装置11は、f’(2)=5を計算し、その計算結果の分散情報(2,5)を情報処理装置12へ送信する。また、情報処理装置11は、f’(3)=3を計算し、その計算結果の分散情報(3,3)を情報処理装置13へ送信する。また、情報処理装置11は、f’(1)=0に相当する分散情報(1,0)を自情報処理装置11の分散情報とする。図4のステップs-8,s-9では、情報処理装置12,13は、情報処理装置11から上記分散情報を受信し、保持する。
【００５８】
上記の分散情報(1,0),(2,5),(3,3)は、秘密情報s=1を、乱数r1=4,r2=5,r3=6でマスクした値を、(0,1)を通る1次多項式によって分散した値、即ち、CSS秘密分散法の分散情報となっている。
【００５９】
このように本実施形態によれば、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換することができる。
【００６０】
[第2の実施形態]
次に本発明の第2の実施形態について説明する。
【００６１】
本実施形態は、秘密計算法に適用可能な秘密情報分散法によって生成された分散情報を記憶量と通信量の効率が良い方式のものに変換する方法に関する。
【００６２】
秘密計算法は、データを保管する主体に対して計算過程と結果を秘匿することができる技術である。クラウドのような第3者が管理するサーバにデータを保管し、その保管しているデータに対するあらゆる演算を実行することができる。第3者には、入力データ、計算過程、計算結果を知られることがないため、個人情報のような機微な情報に対する分析処理をアウトソースすることができる。
【００６３】
本実施形態では、非特許文献3に記載の秘密分散法の有する課題を解決する。以下では、前提技術として、秘密分散法、秘密計算法、非特許文献3の技術、およびこれらに関連する技術について説明する。
【００６４】
・秘密分散法について
秘密分散法とは、秘密情報から複数の分散情報を生成する技術である。分散情報はあらかじめ定められた組み合わせからは秘密情報を復元できるが、それ以外の組み合わせからは秘密情報が復元できないように作られる。定められた組み合わせには様々な構造をとることができ、その構造はアクセス構造と呼ばれる。様々なアクセス構造があるが、代表的なアクセス構造として、しきい値型アクセス構造について説明する。しきい値型アクセス構造は、生成される分散情報の数nと、しきい値kの二つのパラメータで表される。k個以上の分散情報からは秘密情報が復元できるがk個未満の分散情報からは秘密情報が復元できないというものである。以降、分散情報の数がnであり、しきい値がkのしきい値型アクセス構造の秘密分散法を(k,n)法と呼ぶ。(k,n)法の実現方法は様々知られているが、非特許文献1に記載のShamir(k,n)法に関して秘密情報を分散する処理、復元する処理、および特徴を説明する。
【００６５】
・Shamir(k,n)法
Shamir(k,n)しきい値法は、有限体Zの要素である秘密情報を入力としてn個の分散情報を生成するための分散処理(以降、Shamir_Distと呼ぶ)と、k個以上の分散情報から秘密情報を復元する復元処理(以降、Shamir_Recと呼ぶ)とを含む。なお、+は有限体上の加算を表し、*は乗算を表す。
【００６６】
分散処理(Shamir_Dist)
入力：秘密情報s、しきい値k、分散情報数n
処理：
1.定数項がsに等しい有限体Z上のk-1次多項式f(x)=s+r1*x+r2*x2+…+rk-1*xk-1を生成する。定数項以外の係数r1,…,rk-1は有限体の要素から一様ランダムに選択する。
2.v1=f(1),…,vn=f(n)を計算する。
出力：v1,…,vnを分散情報として出力する。
【００６７】
復元処理(Shamir_Rec)
入力：ｊ≧k個の分散情報vi,1,…,vi,j(しきい値であるk個以上の分散情報が入力される)、しきい値k
処理：
1.((i,1),vi,1),…,((i_j),vi,j)を通る有限体Z上のk-1次多項式f’(x)を計算する。
2.f(0)を計算する。
出力：f(0)
【００６８】
ここで、Shamir(k,n)法の持つ４つの特徴と記憶容量について説明する。
【００６９】
第1の特徴：k個未満の分散情報からは秘密情報を復元することができない。k-1次多項式はk個の点によって一意に定まり、k個未満の分散情報からは分散処理で用いられたk-1次多項式を定めることができない。そのため、多項式の定数項である秘密情報を得ることもできない。
【００７０】
第2の特徴：k個以上の分散情報から秘密情報を復元することができる。k-1次多項式はk個の点によって定まるので、k個以上の分散情報から分散処理で用いられたk-1次多項式が一意に定まる。そのため、多項式の定数項である秘密情報も得ることができる。なお、多項式の定数項はk-1次多項式の変数に0を代入した値と同じである。これは、n-k個までの分散情報が紛失しても秘密情報が失われないことを表している。
【００７１】
第3の特徴：秘密情報sをShamir(k,n)法によって分散したv1,…,vnにおいて、すべての分散情報にxを加算したv1+x,…,vn+xは、s+xの分散情報となる。これは、Shamir(k,n)法において、秘密情報はk-1次の多項式の定数項に埋め込まれているためである。これは、有限体上の減算に関しても同様である。
【００７２】
第4の特徴：秘密情報sに関して生成された分散情報がv1,…,vn，秘密情報s’に関する分散情報がv1’,…,vn’であるとき、v1+v1’,…,vn+vn’がs+s’の分散情報となる。これは有限体上の減算に関しても同様である。
【００７３】
Shamir_Distの処理において、viを多項式にiを代入した値としているが、すべての分散情報が多項式に異なる0以外の値を入力した値であれば動作する。
【００７４】
Shamirの(k,n)法における各分散情報を記憶するために要する容量は、有限体の要素１つを記憶するためのビット長と等しい。秘密情報を表すのに必要十分なサイズの有限体が用いられている場合、秘密情報を記憶するために要するビット長と分散情報１つを記憶するために要するビット長は同程度となる。
【００７５】
・(k,n)法の利用方法について
前述したような(k,n)しきい値法は、秘密情報の分散管理に用い、秘匿性を高めることができる。例えば、秘密情報sに(2,3)しきい値法の分散処理を適用し、３つの分散情報v1,v2,v3を計算する。v1,v2,v3をそれぞれ異なるサーバに保管する。この時、１台までのサーバに保管されている分散情報が漏えいしても、秘密情報の漏えいを防ぐことができる。例えば、クラウド等のサーバに秘密情報を保管する際、預けたデータをクラウドの管理者に知られないようにするために用いることができる。あるクライアントCが秘密情報sをサーバS1,S2,S3に保管する場合を想定すると、以下のような手順となる。
【００７６】
・データ保管の際の処理
1.クライアントCは、sを(2,3)しきい値法で分散する。その出力である三つのシェアをd1,d2,d3とする。
2.クライアントはS1にd1を、S2にd2を、S3にd3を送付し、保管を依頼する。
【００７７】
・データ復元の際の処理
1.クライアントCはサーバS1とサーバS2のそれぞれに対し、それぞれが保管している情報を送付するように依頼する。
2.サーバS1はd1を、サーバS2はd2をクライアントCに送付する。
3.クライアントはd1とd2を(2,3)しきい値法の復元処理に入力し、その出力である秘密情報を得る。
【００７８】
以上のような方法をとれば、(2,3)しきい値法の性質より、それぞれのサーバは秘密情報の内容について知ることができない。このように秘密分散法を利用すれば、秘密情報をサーバに知られることなく保管することができる。秘密分散法は秘密情報を複数台のサーバに分散して保管することでデータの秘匿性を高めることができる。しかし、サーバに保管したデータに関する計算を実行するためには秘密計算法と呼ばれる技術が用いられる。
【００７９】
・秘密計算法について
この秘密分散法によって分散されたデータに関する計算を実行することができる技術は秘密計算法と呼ばれている。秘密計算法は非特許文献2で提案されて以来、様々な方法が提案されている。秘密計算法によれば、秘密分散法によって複数のサーバに分散して保管されたデータ群に対する任意の演算をデータの復元を伴うことなく実行することができる。秘密計算法には様々な方法があるが、データがShamir(k,n)法を用いて分散されていることを前提とした手法(非特許文献2等に記載)が多く提案されている。
【００８０】
このような秘密計算法は、複数のサーバにデータを分散して登録し、登録したデータに関する任意の演算が実行可能である。計算対象のデータを複数台のサーバに分散して保管し、その解析を秘密計算法で行うことによってサーバにも解析対象とデータと解析結果を知られることなく様々な分析を実行することができる。
【００８１】
前述したが、Shamir(k,n)法の各分散情報を記憶するには分散される秘密情報と同程度の記憶容量が必要となる。クラウドサーバの課金方法に従量制を採られることも多く、データの記憶に要する容量は可能な限り小さい方がよい。このような要求に答える手法として、非特許文献5、非特許文献3に記載の方法が知られている。
【００８２】
非特許文献5、非特許文献3には、記憶量の効率は良いが秘密計算法に適さない方法で分散し、秘密計算法を実行する際に変換処理によって秘密計算に適した分散情報に変換する方法が記載されている。非特許文献5に記載の方法は、変換処理の過程で多くのデータをやり取りする必要がある。非特許文献3に記載の方法は、変換処理の過程で一切の通信を行う必要がない。しかし、非特許文献3に記載の方法は、秘密計算に適した分散情報から記憶量の効率の良い分散情報に変換する方法がなかった。
【００８３】
本実施形態では、秘密計算法に適した分散情報を非特許文献3に記載された記憶量の効率の良い分散情報に変換する方法を提供する。
【００８４】
非特許文献3に記載の方法は、複製型秘密分散法（Replicated Secret sharing、以降RSSと略する）と擬似乱数生成関数を用いている。以下に、それぞれについて説明する。
【００８５】
・RSSについての説明
RSSについては非特許文献4に記載されている。RSSは、任意のアクセス構造を実現可能な秘密分散法であり、有限体の要素を(k,n)しきい値型のアクセス構造で分散することができる。RSSの基本とする処理は、有限体Zの要素である秘密情報sを入力としてn個の分散情報を生成するための分散処理（以降、RSS_Distと呼ぶ）と、k個以上の分散情報から秘密情報を復元する復元処理(以降、RSS_Recと呼ぶ)であり、これらを以下で説明する。なお、+は有限体上の加算を表す。
【００８６】
分散処理(RSS_Dist)
入力：s(有限体Zの要素をする)、しきい値k、分散情報数n
処理：
1.集合(1,…,n)の要素からk-1個の要素を選択した集合それぞれについて有限体Z上の要素をランダムに選択する。ただし、最後の一つはすべての和がsと等しくなるように選択する。
2.viを1.の処理でiを含まない組み合わせについて選択した乱数の集合とする。
出力：v1,…,vnを出力する。
【００８７】
復元処理(RSS_Rec)
入力：ｊ≧k個の分散情報vi,1,…,vi,j,しきい値k
処理：
1.RSS_Distの1の処理において生成されたすべての乱数が揃うので、これらを加算した値を計算する。
【００８８】
出力:１の処理の計算結果
【００８９】
以上のような方法は、任意のアクセス構造に対する秘密分散法が実現できる一方で、Shamirの(k,n)法などと比較すると記憶容量に関する効率が悪い。
【００９０】
例えば、(2,3)しきい値型のアクセス構造を実現する場合、秘密情報sに対し、r1+r2+r3=sとなる三つの乱数が生成される。このとき3つの分散情報v1,v2,v3は、それぞれv1=(r2,r3)、v2=(r1,r3)、v3=(r1,r2)となる。どの１つからも秘密情報は復元できず、どの二つからもr1,r2,r3がそろうため、秘密情報が復元できる。したがって(2,3)しきい値型のアクセス構造が実現されていることが確認できる。一方で、それぞれの分散情報は二つの乱数から構成されており、それぞれに対して秘密情報と同程度の記憶容量を要する。したがって、shamir(k,n)法に比べて効率が悪いことが確認できる。(k,n)しきい値型一般に対しては、a個からb個選ぶ組み合わせの総数をaCbと表してnC(k-1)倍の記憶容量を要するために、単体で利用するためには効率が悪い。そのためRSSは擬似乱数生成関数と組み合わせて利用されることが多い。擬似乱数生成関数について説明したのち、RSSと擬似乱数生成関数を組み合わせた利用方法について説明する。
【００９１】
・擬似乱数生成関数の説明
擬似乱数生成関数の表現は様々であるが、鍵と識別子を入力として乱数を出力する関数とする。擬似乱数生成関数をRandとし、鍵をkとする。鍵がある程度の大きな空間からランダムに選択されるならば、kを知らない限りRand(k,i)は通常の乱数と区別できない。このような擬似乱数生成関数は共通鍵暗号の秘密鍵を鍵とし、識別子を平文として暗号化した値や、ハッシュ関数に鍵と識別子を入力した値などでよい。
【００９２】
・RSSと擬似乱数生成関数の組み合わせについて
RSS擬似乱数生成関数と組み合わせて用いることで乱数を効率的に分散するために利用できる。以下が一例である。
【００９３】
r1,r2,r3が擬似乱数生成関数の鍵として十分な大きさの空間からランダムに選択された値とする。次にv1=(r1,r2)、v2=(r2,r3)、v3=(r1,r3)が３人の異なる管理者に分散されているものとする。すなわち、r1+r2+r3がRSSを用いた(2,3)しきい値法によって分散されている。このとき、任意のiに対して、Rand(r1,i)+Rand(r2,i)+Rand(r3,i)も分散されていることになる。Rand(r1,i)+Rand(r2,i)+Rand(r3,i)の値はr1,r2,r3によって決定されてしまうため、自由に設定することはできないが、暗号に用いる秘密鍵などを共有するために有用である。非特許文献4では、RSSによって(k,n)しきい値構造を持つように生成された分散情報を同じ値に対するShamirの(k,n)法の分散情報に変換する方法が記載されている。この変換は、分散情報の管理者間で通信することなく実行することができる。つまり、v1=(r1,r2)、v2=(r2,r3)、v3=(r1,r3)が分散されているとき、任意のiに対して、Rand(r1,i)+Rand(r2,i)+Rand(r3,i)もShamirの(2,3)しきい値法によって分散されていると言える。
【００９４】
以上のようなRSSと擬似乱数生成関数の組み合わせについては、(k,n)しきい値型を含む線形型のアクセス構造一般に対して行える。以降、記述を簡潔に行うため、RSSで秘密情報sが分散されているとき、秘密情報のi番目の分散情報をrss[s]iと書き、sの分散情報から生成されるj番目の擬似乱数をRand[s,j]と書き、sから生成されるj番目の擬似乱数のi番目の分散情報をRand_rss[s,j]iと書き、Rand[s,j]のi番目の分散情報から変換されたShamir(k,n)法の分散情報をShamir_Rand_rss[s,j]iと書く。このような変換処理は、線形秘密分散法と呼ばれる分類の秘密分散法に関して一般に実行可能である。
【００９５】
前述したように、秘密計算法を行うデータを分散するためにShamir(k,n)法を用いる場合、各分散情報を記憶するには分散される秘密情報と同程度の容量が必要となる。クラウドサーバの課金方法に従量制を採られることも多く、データの記憶に要する容量は可能な限り小さい方がよい。このような要求に答える手法として、非特許文献5、非特許文献3に記載の方法が知られている。前述したが、非特許文献5に記載の方法は、変換処理の過程で多くのデータをやり取りする必要がある。非特許文献5に記載の方法は、変換処理の過程で一切の通信を行う必要がない。しかし、非特許文献5に記載の方法は、秘密計算に適した分散情報から記憶量の効率の良い分散情報に変換する方法がない。
【００９６】
ここで、非特許文献3に記載の方法について説明する。非特許文献3に記載の方法を、本明細書ではCSSと呼ぶ。
【００９７】
非特許文献3に記載の方法は、秘密情報を入力として複数の分散情報を生成する分散処理(CSS_Dist)と、分散情報を入力としてShamirの(k,n)法の分散情報を出力する変換処理(CSS_Conv)と、分散処理によって生成された分散情報から秘密情報を復元する復元処理(CSS_Rec)を含む。
【００９８】
非特許文献3の分散処理は、秘密情報は擬似乱数を加算してからk-1個の分散情報を固定したShamir(k,n)法で、擬似乱数の鍵はRSSを用いて分散する。
【００９９】
次に変換処理について説明する。秘密情報に加算されている擬似乱数に関する分散情報は、擬似乱数の鍵がRSSを用いて分散されているために通信を伴う処理無しにShamir(k,n)法の分散情報に変換できる。秘密情報と擬似乱数の和の分散情報と擬似乱数の分散情報のそれぞれがShamir(k,n)法で分散された値が揃うので、Shamir(k,n)法の持つ第4の性質を用いて秘密情報がShamir(k,n)法で分散された値を計算することができる。この過程には一切の通信を必要としない。
【０１００】
復元処理に関しては、秘密情報と擬似乱数の和と擬似乱数の鍵をそれぞれ復元したのちに減算すればよい。
【０１０１】
[CSSの効果について]
CSSでは、Shamirの(k,n)法の分散情報に関して、k-1個以下のシェアには固定の値を用いる。このことで、k-1個分の分散情報に要する記憶容量が削減される。
【０１０２】
Shamirの(k,n)法の分散情報を生成する過程において、k-1次多項式f(x)=s+r1*x+r2*x2+…+rk-1*xk-1を生成する。このとき、r1,…,rk-1がランダムに選択するのは、その多項式上の点がk個集まらないとｓが復元できないようにするためである。つまり秘密情報の秘匿性の為である。f(1),…,f(k)を分散情報とする場合に、f(1)からf(k-1)をすべて固定にし、f(0)=sとなるようにfを定めてもShamirの(k,n)法の分散情報としての第4の特徴は維持されていることに注意する。
【０１０３】
次に、CSSにおいて秘密情報sはRSSによって分散された擬似乱数rが加算された値s+rとして分散される。k個以下の分散情報からs+rが復元されたとしても、rが不明な限りsの秘匿性は保たれる。rはRSSによって(k,n)しきい値型で分散されているので、k個以下の分散情報から復元されることはない。つまり、(k,n)しきい値型のアクセス構造が実現されている。なお、乱数や擬似乱数を加算する処理をマスクするといい、この加算した値を減ずる処理を、マスクを除去するなどという。マスク処理に加算を用い、マスクを除去する処理を減算としているが、これは逆でもよい。
【０１０４】
そしてrの分散情報は、RSSの持つ性質からrをShamir(k,n)法を用いて分散した値に変換できる。s+rとrに関して同じ方法で分散された分散情報があれば、Shamir(k,n)法の第４の特徴によって、s+r-r=sの分散情報を計算することができる。
【０１０５】
・CSSの効果
CSSは、Shamirの(k,n)法や加法型(n,n)法を用いる場合に比べて、分散情報の記憶容量が少ない秘密分散法を実現する。また、通信処理を伴うことなくShamirの(k,n)法の分散情報に変換可能であるため、効率的な秘密計算法のアルゴリズムを使って種々の計算を行うことができる。非特許文献5に記載されているような従来方法では、変換処理において大量の通信が発生していたが、CSSにおいては発生しない。
【０１０６】
CSSを実施するための形態について図面を参照し説明する。
【０１０７】
CSSの実施の形態は、分散情報を生成する処理を実行するための分散情報生成装置100と、分散情報を記憶するための複数台の分散情報記憶装置200と、分散情報を変換する処理を実行するための分散情報変換装置300と、分散情報を復元する処理を実行するための復元装置400からなる。なお、分散情報記憶装置200の台数はnとし、i代目を分散情報記憶装置200iとする。分散情報変換装置300は、分散情報記憶装置200がそれぞれ一台ずつ備えて分散情報を変換するために用いてもよいし、一台を共有してもよい。
【０１０８】
図5は分散情報生成装置100と分散情報記憶装置2001,…,分散情報記憶装置200nの実施の形態の構成例を示す図である。
【０１０９】
分散情報生成装置100には、秘密情報が入力される。分散情報記憶装置200は、マスク用乱数分散情報記憶装置201と、マスク済み秘密情報分散情報記憶装置202と、固定値情報記憶装置203とを備える。分散情報生成装置100は、マスク用乱数分散手段101と、マスク用擬似乱数生成手段102と、秘密情報マスク装置103と、固定値型秘密情報分散手段104を備え、秘密情報s1,…,smを入力とし、マスク用乱数分散手段101の出力を複数のマスク用乱数分散情報をマスク用乱数分散情報記憶装置401に記憶させ、固定値型秘密情報分散装置104の出力を複数のマスク済み秘密情報分散情報記憶装置402に記憶させる。
【０１１０】
マスク用乱数分散手段101は、アクセス構造データを入力とし、乱数rを生成し、RSSを用いて分散した値r1,…,rnを出力する。マスク用擬似乱数生成手段102は、マスク用乱数分散手段101の出力であるr1,…,rnを入力とし、Rand[r,1],…,Rand[r,m]を出力する。秘密情報マスク手段103は、秘密情報s1,…,smと、アクセス構造データを入力とし、マスク用擬似乱数生成手段102の出力であるRand[r,1],…,Rand[r,m]を入力として、s1+Rand[r,1],…,sm+Rand[r,m]を出力する。固定値型秘密情報分散装置104は、秘密情報マスク手段104の出力であるs1+Rand[r,1],…,sm+Rand[r,m]を入力とし、s1+Rand[r,1],…,sm+Rand[r,m]に関する分散情報を、いくつかの値が固定されるような方法で生成して、出力する。固定値型秘密情報分散手段104、分散情報記憶装置2001、…、分散情報記憶装置200nは、マスク済み秘密情報分散情報のどの値を固定値とするのかが共有されているものとする。対応がとれる方法であればどのような方法でもよい。
【０１１１】
図6は、分散情報記憶装置200iと分散情報変換装置300の実施の形態の構成例を示す図である。
【０１１２】
分散情報変換装置300は、マスク用乱数分散情報変換手段301と、調整手段302を備え、分散情報記憶装置200の記憶する値を入力とし、変換済分散情報を出力する。マスク用乱数分散情報変換手段301は、マスク用乱数分散情報を入力とし、変換済みマスク分散情報を出力する。調整手段202は、マスク済み秘密情報分散情報とマスク値分散情報を入力とし、マスク済み秘密情報分散情報からマスク値分散情報を減じた値を出力する。
【０１１３】
図7は分散情報記憶装置200と復元処理装置400の実施の形態の構成例を示す図である。図7を参照すると、復元装置400は、マスク済秘密情報復元手段401と、マスク用擬似乱数生成手段402と、マスク除去手段403とを備え、複数の分散情報記憶装置200の記憶する値を入力として、秘密情報を出力する。
【０１１４】
マスク済み秘密情報復元手段401は、複数のマスク済み秘密情報分散情報を入力としてマスク済み秘密情報を出力する。マスク用擬似乱数生成手段402は、マスク用擬似乱数生成手段102と同一である。マスク除去手段403は、マスク済み秘密情報復元手段401の出力であるマスク済み秘密情報と、マスク用乱数生成手段402の出力であるマスク値を入力とし、マスク済み秘密情報からマスク値を減じた値を出力する。
【０１１５】
[動作の説明]
図8はCSSの分散情報生成装置100の実施の形態の動作を示すフローチャートである。図8を参照して、分散情報生成装置100の実施の形態の動作について説明する。
【０１１６】
まず、秘密情報s1,…,smが分散情報生成装置100に入力される(ステップA-1)。次に、分散情報生成装置100はマスク用乱数分散手段101を動作させる。マスク用乱数分散手段101は、乱数rを生成し、rを、RSSを用いて分散し、その分散情報をr1,…,rnを出力する。（ステップA-2）。
【０１１７】
次に、分散情報生成装置100は、マスク用乱数分散手段102の出力であるr1,…,rnをマスク用擬似乱数生成手段102に入力する。マスク用擬似乱数生成手段102は、r1,…,rnを入力として、Rand[r,1],…,Rand[r,m]を計算し、出力する(ステップA-3)。
【０１１８】
次に、分散情報生成装置100は、s1,…,smとRand[r,1],…,Rand[r,m]を秘密情報マスク装置103に入力する。秘密情報マスク装置103はs1+Rand[r,1],…,sm+Rand[r,m]を計算し、出力する(ステップA-4)。
【０１１９】
次に、分散情報生成装置100は、s1+Rand[r,1],…,s_m+Rand[r,m]を固定値型秘密情報分散装置104に入力する。固定値型秘密情報分散装置104は、s1+Rand[r,1],…,sm+Rand[r,m]を、いくつかの分散情報が固定された値になる方法で分散する(ステップA-5)。
【０１２０】
次に、分散情報生成装置100は、固定値型秘密情報分散装置104の出力を、分散情報記憶装置200のマスク済秘密情報分散情報記憶装置202に記憶させ、マスク用乱数分散手段101の出力を、分散情報記憶装置200のマスク用乱数分散装置記憶装置202に記憶させる(ステップA-6)。
【０１２１】
図9は、CSSの分散情報変換装置300の実施の形態の動作を表すフローチャートである。図9を参照して、分散情報変換装置300の実施の形態の動作を説明する。
【０１２２】
まず、分散情報変換装置300は、分散情報記憶装置200のマスク用乱数情報記憶装置201の記憶する値を読み出し、マスク用乱数分散情報変換手段301に入力する。マスク用乱数分散情報変換手段301は、マスク済み秘密情報分散情報を分散するために用いた方法と同じ方法で分散した分散情報に変換して出力する。これをマスク用乱数分散情報とする(ステップB-1)。
【０１２３】
次に、分散情報変換装置300は、分散情報記憶装置200のマスク済み秘密情報分散情報記憶装置202の記憶するマスク済秘密情報分散情報と、マスク用乱数分散情報変換手段301の出力を、調整手段に入力する。調整手段は、マスク済み秘密情報分散情報からマスク用乱数分散情報を減じた値を出力する(ステップB-2)。
【０１２４】
図10は、CSSの秘密情報復元装置400の実施の形態の動作を表すフローチャートである。図10を参照して、秘密情報復元装置400の実施の形態の動作を説明する。
【０１２５】
まず、復元装置400は、複数の分散情報記憶装置200の記憶する値を読みだす。(k,n)しきい値型で分散されている場合ならばk個以上の装置から読み出す(ステップC-1)。
【０１２６】
次に、復元装置400は、マスク済み秘密情報分散情報202から読み出した値と固定器情報記憶装置203から読み出した値をマスク済み秘密情報復元手段401に入力する。マスク済み秘密情報復元手段401は、マスク済み秘密情報を復元し、出力する（ステップC-2）
【０１２７】
次に復元装置400は、マスク用擬似乱数生成手段402にマスク用乱数分散情報記憶手段201から読み出した値を入力する。マスク用擬似乱数生成手段402は、マスク用乱数分散情報より、マスク用擬似乱数を計算し、出力する(ステップC-3)。
【０１２８】
次に、復元装置は、マスク済み秘密情報とマスク用乱数をマスク除去手段403に入力する。マスク除去手段403は、マスク済み秘密情報からマスク用擬似乱数を除去し、秘密情報を出力する(ステップC-4)。
【０１２９】
・CSSの実施例
ここでCSSの実施例をひとつ挙げる。
CSSの実施例1の分散処理
入力：秘密情報s1,…,sm,しきい値k，分散情報数n
【０１３０】
処理：
1.乱数rを生成する。
2.RSS_Dist(r)=(rss[s]1,…,rss[s]n)を計算する。RSS_Dist(r)のアクセス構造は(k,n)しきい値型とする。Rss1=rss[s]1,…,rssn=rss[s]nとする。
上記1.2.の処理がマスク用乱数分散手段101の実行する処理に相当する
3.rss[s]1,…,rss[s]nより、Rand[r,1],…,Rand[r_m]を計算する。この処理がマスク用擬似乱数生成手段102の実行する処理に相当する。
4.ms1=s1+Rand[r,1],…,msm=sm+Rand[r,m]を計算する。この処理が秘密情報マスク手段103の実行する処理に相当する。
5.ms1,…,msmを、k-1点を固定したShamir(k,n)法で分散する。msjのn個の分散情報をv{j,1},…,v{j,n}とする。この処理が固定値型秘密情報分散手段104の実行する処理に相当する。
【０１３１】
出力：xi=(v{1,i},…,v{m,i},rssi)をi個目の分散情報として出力する。V{h,i}はh番目の秘密情報に対応している。このような実施例では、固定値は明示的に分けて記憶せずに、マスク済み秘密情報分散情報として記憶されることになる。この処理は、分散情報生成装置100が、分散情報記憶装置200に生成した情報を記憶させる処理に相当する。
【０１３２】
次に、CSSの実施例１の変換処理について説明する。i個目の分散情報に含まれるh番目の秘密情報に関する箇所をShamirの(k,n)法の分散情報に変換する方法を示す。
【０１３３】
入力：i番目の分散情報のh番目の秘密情報に関する箇所v{h,i}とi番目の分散情報の乱数に関する箇所rssi
【０１３４】
処理:
1.rssiからShamir_Rand_rss[s,h]iを計算する。rssi=rss[s1]であるので、RSSの性質より、計算することができる。この処理は、マスク用乱数変換手段301の実行する処理に相当する。
2.v{h,i}’=v{h,i}-Shamir_Rand_rss[s,h]iを計算する。V{h,i}はsh+Rand_rss[s,h]のShamir(k,n)法の分散情報であるので、v{h,i}’はshをShamir(k,n)法を用いて分散したi番目の分散情報となる。この処理は、調整手段302の実行する処理に相当する。
【０１３５】
出力：v{h,i}’
【０１３６】
次に、CSSの実施例１の復元処理について説明する。以下では、b≧k個の分散情報から秘密情報を復元する場合について記載する。説明は、1番目からb番目の分散情報から復元を行う場合について記載するが、他の組み合わせでも同様である。
【０１３７】
入力:b≧k個以上の分散情報i個目の分散情報をxi=（v{1,i},…,v{m,i},rssi)とする。
【０１３８】
処理:
1.c=1,…,mについて、v{1,c},…,v{b,c}に対し、Shamir(k,n)法の復元処理を適用する。復元処理の出力をmscとする。この値はmsc=sc+Rand_rss[r,c]となる。この処理はマスク済み秘密情報復元手段401の実行する処理に相当する。
2.rss1,…,rssbより、Rand_rss[s,1],…,Rand_rss[s,c]を計算する。この処理は、マスク用擬似乱数生成手段402の実行する処理に相当する。
3.c=1,…,mについて、ms1-Rand_rss[r,1],…,msm-Rand_rss[r,m]を計算する。この処理はマスク除去手段404の実行する処理に相当する。
【０１３９】
出力:
ms=1-Rand_rss[r,1],…,msm-Rand_rss[r,m]を出力する。これらは、s1,…,smとなる。
【０１４０】
以上のCSSの実施例において、Shamir(k,n)法の代わりに加法型(n,n)法や、線形秘密分散法を用いても、それらの秘密分散法を使う場合に比べて通信量と記憶容量を削減できる。
【０１４１】
例えば、(2,3)しきい値型で1ギガバイトの秘密情報を分散する場合に本発明を適用すると、マスク済み秘密情報は、ひとつの分散情報の値を固定することができて2ギガバイトの分散情報として分散される。乱数の分散情報は擬似乱数生成関数の鍵として16バイトのデータを用いるならば各分散情報が32バイト程度となり、全体でも2ギガ＋96バイト程度の記憶容量となる。Shamir(k,n)法を用いる場合3ギガバイトになるので1ギガバイト程度のデータ容量を節約できる。
【０１４２】
しかし、秘密計算法を実行する際には、Shamir(k,n)法の分散情報に変換してから秘密計算を実行する。計算結果の分散情報はShamir(k,n)法の分散情報となる。各計算結果に関する分散情報を記憶する場合には、Shamir(k,n)法で分散する場合の記憶容量が必要となる。本発明では、この記憶容量を削減することを課題としている。
【０１４３】
上記課題を解決するために、本実施形態に係る分散情報再変換装置は、Shamir(2,n)法の分散情報と(2,n)法を実現するRSSのシェアを入力として、RSSのシェアをシードとして生成した擬似乱数からShamir(2,n)法の分散情報を計算し、擬似乱数の分散情報とShamir(2,n)法の分散情報の和を送付する従分散情報再変換装置と、従分散情報再変換装置の生成した値と、(2,n)法を実現するRSSのシェアを入力として、従分散情報再変換装置の生成した値に対してShamir(2,n)法の分散情報として復元処理を実行し、RSSのシェアをシードとして生成した擬似乱数を生成し、Shamir(2,n)法を用いて復元した値と、擬似乱数を加算した値を計算し、その結果に対して１点が固定されたShamir(2,n)法を用いて分散情報を生成し、生成した分散情報を外部記憶装置に記憶させる、という構成を採る。
【０１４４】
このように本実施形態は、Shamir(2,n)法分散情報を、CSS_Distによって生成された分散情報に変換する方法を提供するものである。以下に処理の詳細な手順を示すが、前提として、まず、CSSを用いて秘密情報が分散されており、なんらかの秘密計算が実行された後に行われる。なお、nは3以上必要である。
【０１４５】
具体的には、秘密情報s1,…,sm、しきい値2、分散情報数nが分散情報生成装置100に入力され、秘密情報s1,…,smがn台の分散情報記憶装置200-1,…,分散情報記憶装置200-nにCSS_Distによってx1=(v{1,1},…,v{m,1},rss1),…,xn=(v{1,n},…,v{m,n},rssn)に分散され、その後、秘密計算によって、s{m+1}がShamir(2,n)法によって分散された値がv{m+1,1}’…,v{m+1,n}’が計算される。秘密計算は分散情報記憶装置200と分散情報変換装置300を備えるn台のサーバ１,…,サーバnによって実行され、v{m+1,i}’はサーバiが所有するものとする。この状態で、次のような手続きを実行することで、各サーバは、s{m+1}を、CSSを用いて分散した値を取得する。以下では、サーバ1、サーバ2、サーバ3が中心となって手続きを実行するが、これは、他の組み合わせでも良い。
【０１４６】
(2,n)法を実現するRSSは、n個の乱数r1,…,rnを生成する。rssiは{r1,…,rn}からriを除いたものである。このとき、fi’(x)をfi’(0)=1、fi’(i)=0である１次の多項式とするとf(x)=Σri*fi’(x)はr=r1+…+rnを定数項とした1次多項式となる。また、f(i)=Σri*fi’(x)は、fi’(i)=0より、rssiから計算できる。つまり、Σri*fi’(x)はrをShamir(2,n)法で分散した際のi番目の分散情報となっている。
【０１４７】
1.サーバ2は、v{m+1,2}+Rand(r1,m+1)*f1’(2)を計算し、サーバ１に送る。
2.サーバ3は、v{m+1,3}+Rand(r1,m+1)*f1’(3)を計算し、サーバ１に送る。
3.サーバ1は、(2,v{m+1,2})と(3,v{m+1,3})を通る１次多項式の定数項ms{m+1}を計算する。
4.サーバ1はms{m+1}+Rand(r2,m+1)+…Rand(rn,m+1)を、1点を固定した(2,n)法によって分散して配付する。サーバ１用の値も計算して自身で保管する。
【０１４８】
［効果をもたらす手段の働き］
上記1,2の手順に置いて、サーバ１が復元しているのは、s{m+1}+Rand(r1,m+1)であるが、サーバ1はr1を有しないため、s{m+1}を復元することにならない。一方でr2,…,rnは持っているのでms{m+1}+Rand(r2,m+1)+…Rand(rn,m+1)は計算できる。これを他の1点を固定したShamir(2,n)法で分散して他のサーバに配付する。これによって、ms{m+1}はRSSを使って生成した擬似乱数によってマスクされ、k-1点が固定されたShamir(2,n)法によって分散されたことになる。
【０１４９】
本発明の実施の形態は、分散情報を生成する処理を実行するための分散情報生成装置100と、分散情報を記憶するための複数台の分散情報記憶装置200と、分散情報を変換する処理を実行するための分散情報変換装置300と、分散情報を復元する処理を実行するための復元装置400と、主再変換装置500と、従再変換装置600からなる。なお、分散情報記憶装置200の台数はnとし、i台目を分散情報記憶装置200_iとする。分散情報変換装置300は、分散情報記憶装置200がそれぞれ一台ずつ備えて分散情報を変換するために用いてもよいし、一台を共有してもよい。また、主再変換装置500は１台だけあればよく、従再変換装置600は２台あればよい。
【０１５０】
分散情報生成装置100、分散情報記憶装置200、分散情報変換装置300、復元装置400は、非特許文献3に記載のものと同様である。従って、以下では、主再変換装置500と従再変換装置600について詳細に説明する。
【０１５１】
図11は、分散情報記憶装置200と主再変換装置500と従再変換装置600の実施の形態の構成例を示す図である。
【０１５２】
図11を参照すると、主再変換装置500は、マスク済み秘密情報復元手段501と、マスク用擬似乱数生成手段502と、マスク済秘密情報マスク手段503と、固定値型秘密情報分散手段504とを備える。
【０１５３】
マスク済み秘密情報復元手段501は、複数のShamir(2,n)法の分散情報を入力として、対応するマスク済秘密情報を復元する。マスク用擬似乱数生成手段502は、分散情報記憶装置200の記憶するマスク用乱数分散情報を読み出し、マスク用乱数を出力する。マスク済み秘密情報マスク手段503は、マスク済秘密情報と、マスク用乱数を入力とし、それらの和を出力する。固定値型秘密情報分散手段504は、前述した手段と同様であるが、マスク済み秘密情報を固定値型Shamir(2,n)法を用いて分散した分散情報を出力する。
【０１５４】
従再変換装置600は、擬似乱数生成手段601と、擬似乱数分散情報変換手段602と、分散情報加算手段603と、分散情報記憶装置200の記憶する値を読み出す手段を有する。
【０１５５】
擬似乱数生成手段601は、シードと、通し番号を入力として、擬似乱数を出力する。擬似乱数分散情報変換手段602は、上記擬似乱数を入力し、マスク用擬似乱数分散情報を出力する。分散情報加算装置603は、秘密計算の結果の分散情報とマスク用擬似乱数の分散情報を入力し、これらの和を出力する。マスク用擬似乱数の分散情報は分散情報記憶手段200の有するマスク用乱数分散情報記憶装置201から読み出す。
【０１５６】
［動作の説明］
図12は主再変換装置500と従再変換装置600の実施の形態の動作を示すフローチャートである。図12を参照して、主再変換装置500と従再変換装置600の実施の形態の動作を説明する。
【０１５７】
まず、秘密計算の結果のShamir(2,n)法で分散された分散情報が従再変換装置600に入力される。この値をm+1個目の値として各分散情報記憶装置200に記憶させる場合の動作である。このm+1は処理に参加する装置の間で同じ値が用いられていれば、どのような方法で与えられても良い。m+1は、分散情報記憶装置200がこれまでに記憶した分散情報の個数をmとして、その次の数として挙げているが、識別するために利用することができる重複していない値ならば良い。
【０１５８】
従再変換装置600は、分散情報記憶手段200の有するマスク用乱数分散情報記憶装置200からマスク用乱数の分散情報を読み出す（ステップD-1）。
【０１５９】
次に、従再変換装置600は、マスク用乱数の分散情報と、m+1を擬似乱数生成手段601に入力し、マスク用乱数の分散情報とm+1に対応する擬似乱数を出力する（ステップD-2）。
【０１６０】
次に、従再変換装置600は、擬似乱数分散情報変換手段602に擬似乱数を入力し、擬似乱数分散情報変換手段602は、擬似乱数の分散情報を出力する（ステップD-3）。
【０１６１】
次に、従再変換装置600は、擬似乱数の分散情報と秘密計算の結果の分散情報を分散情報加算手段603に入力する。分散情報加算手段603は、入力された値を加算した結果を出力する（ステップD-4）。この値は、主再変換装置500に入力される（ステップD-5）。
【０１６２】
次に、主再変換装置500は、入力された分散情報をマスク済み秘密情報復元手段501に入力する。マスク済み秘密情報復元手段501は、入力された分散情報からマスク済み秘密情報を復元して出力する（ステップD-6）。
【０１６３】
次に、主再変換装置500は、分散情報記憶手段200の有するマスク用乱数分散情報記憶装置201からマスク用乱数の分散情報を読み出す。次に、主再変換装置500は、マスク済秘密情報マスク手段503にマスク用乱数の分散情報とマスク済み秘密情報を入力する。マスク済み秘密情報マスク手段503は、マスク用乱数の分散情報からマスク用の乱数を生成し、これとマスク済み秘密情報を加算した値を再マスク済秘密情報として出力する（ステップD-7）。
【０１６４】
次に、主再変換装置500は、再マスク済み秘密情報を固定値型秘密情報分散手段504に入力する。固定値型秘密情報分散手段504は、再マスク済み秘密情報について、１個の分散情報の値が固定されたShamir(2,n)法を用いた分散情報を生成して出力する（ステップD-8）。
【０１６５】
次に、主再変換装置500は、固定値型秘密情報分散手段504の出力を対応する分散情報記憶装置200に記憶させる。
【０１６６】
このようにして本実施形態は、Shamir秘密分散法の分散情報をCSS秘密分散法の分散情報へ変換する。
【産業上の利用可能性】
【０１６７】
本発明は、大量の秘密データをクラウドサーバに保管し、その秘密情報に関する種々の処理を実行する場合に特に有効である。多くのデータを効率的に保管でき、データの内容や処理結果をクラウドに知られることもない。個人情報のような外部に保管することに抵抗のあるデータを集積して統計演算を行いたい際に、サーバが記憶しなければならない記憶容量を削減できる。特に、演算の結果を記憶する際の記憶容量が削減される。
【符号の説明】
【０１６８】
1…情報処理装置
2…ネットワーク
11…通信I/F部
12…操作入力部
13…画面表示部
14…記憶部
14A…プログラム
14B…入力情報
14C…中間情報
14D…出力情報
15…演算処理部
15A…分散部
15B…復元部
15C…第1の変換部
15D…第2の変換部
15D1…入力部
15D2…第1の処理部
15D3…第2の処理部
15D4…出力部
100…分散情報生成装置
101…マスク用乱数分散手段
102…マスク用擬似乱数生成手段
103…秘密情報マスク手段
104…固定値型秘密情報分散手段
200…分散情報記憶装置
201…マスク用乱数分散情報記憶手段
202…マスク済み秘密情報分散情報記憶手段
300…分散情報変換装置
301…マスク用乱数分散情報変換手段
302…調整手段
400…復元装置
401…マスク済み秘密情報復元手段
402…マスク用乱数復元手段
403…マスク用擬似乱数生成手段
404…マスク除去手段
500…主再変換装置
501…マスク済秘密情報復元手段
502…マスク用擬似乱数生成手段
503…マスク済秘密情報マスク手段
504…固定値型秘密情報分散手段
600…従再変換装置
601…擬似乱数生成手段
602…擬似乱数分散情報変換手段
603…分散情報加算手段
【図１】
2018045019.tif 000003
【図２】
2018045019.tif 000004
【図３】
2018045019.tif 000005
【図４】
2018045019.tif 000006
【図５】
2018045019.tif 000007
【図６】
2018045019.tif 000008
【図７】
2018045019.tif 000009
【図８】
2018045019.tif 000010
【図９】
2018045019.tif 000011
【図１０】
2018045019.tif 000012
【図１１】
2018045019.tif 000013
【図１２】
2018045019.tif 000014