(57)【要約】      （修正有）【課題】秘密情報のオーナが知らない間に、秘密情報が漏洩することを抑制することができる秘密分散システムを提供する。【解決手段】ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の分散値によって秘密情報を復元でき、ｋ個未満では秘密情報を復元できないシステムにおいて、生成装置１２は、秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、少なくともｋ−１個以下の分散値の各々に対応する値を生成する。【選択図】図１
2020046558.tif 000002
【特許請求の範囲】
【請求項１】
ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の前記分散値によって前記秘密情報を復元でき、ｋ個未満では前記秘密情報を復元できないシステムにおいて、
前記秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、少なくともｋ−１個以下の前記分散値の各々に対応する値を生成する生成部
を備えた生成装置。
【請求項２】
ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の前記分散値によって前記秘密情報を復元でき、ｋ個未満では前記秘密情報を復元できないシステムにおいて、
前記秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、ｋ−１個以下の前記分散値を生成する生成部
を備えた生成装置。
【請求項３】
前記生成部は、生成した値及び前記秘密情報を用いて前記ｋ−１個以下の前記分散値以外の分散値を求めるための係数を算出する
請求項２に記載の生成装置。
【請求項４】
請求項１又は請求項２に記載の生成装置により生成された値を受信する受信部と、
前記受信部により受信された値を用いて前記秘密情報を復元する復元部と、
を備えた復元装置。
【請求項５】
請求項３に記載の生成装置により生成された係数を用いて同一の秘密情報から生成された異なる分散値の組み合わせによって２回以上前記秘密情報を復元する復元部
を備えた復元装置。
【請求項６】
秘密情報に対して、第１の乱数及び第２の乱数を作用させて第１の送信データを生成し、
前記秘密情報に対して、前記第１の乱数に代えた第３の乱数及び前記第２の乱数に代えた第４の乱数を同様に作用させて第２の送信データを生成する生成部と、
前記第１の送信データ及び前記第２の送信データを同一の受信装置に送信する送信部と、
を備えた送信装置。
【請求項７】
請求項６に記載の送信装置により送信された第１の送信データ及び第２の送信データを受信する受信部と、
前記第１の送信データから前記第２の乱数を排除した結果と、前記第２の送信データから前記第４の乱数を排除した結果との差分が、前記第１の乱数と前記第３の乱数との差分に等しいか否かを検証する検証部と、
を備えた受信装置。
【請求項８】
ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の前記分散値によって前記秘密情報を復元でき、ｋ個未満では前記秘密情報を復元できないシステムにおいて、
前記秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、少なくともｋ−１個以下の前記分散値の各々に対応する値を生成する
処理をコンピュータに実行させるための生成プログラム。
【請求項９】
ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の前記分散値によって前記秘密情報を復元でき、ｋ個未満では前記秘密情報を復元できないシステムにおいて、
前記秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、ｋ−１個以下の前記分散値を生成する
処理をコンピュータに実行させるための生成プログラム。
【請求項１０】
生成した値及び前記秘密情報を用いて前記ｋ−１個以下の前記分散値以外の分散値を求めるための係数を算出する
処理を更に前記コンピュータに実行させるための請求項９に記載の生成プログラム。
【請求項１１】
請求項８又は請求項９に記載の生成プログラムが実行されることにより生成された値を受信し、
受信した値を用いて前記秘密情報を復元する
処理をコンピュータに実行させるための復元プログラム。
【請求項１２】
請求項１０に記載の生成プログラムが実行されることにより生成された係数を用いて同一の秘密情報から生成された異なる分散値の組み合わせによって２回以上前記秘密情報を復元する
処理をコンピュータに実行させるための復元プログラム。
【請求項１３】
秘密情報に対して、第１の乱数及び第２の乱数を作用させて第１の送信データを生成し、
前記秘密情報に対して、前記第１の乱数に代えた第３の乱数及び前記第２の乱数に代えた第４の乱数を同様に作用させて第２の送信データを生成し、
前記第１の送信データ及び前記第２の送信データを同一の受信装置に送信する
処理をコンピュータに実行させるための送信プログラム。
【請求項１４】
請求項１３に記載の送信プログラムが実行されることにより送信された第１の送信データ及び第２の送信データを受信し、
前記第１の送信データから前記第２の乱数を排除した結果と、前記第２の送信データから前記第４の乱数を排除した結果との差分が、前記第１の乱数と前記第３の乱数との差分に等しいか否かを検証する
処理をコンピュータに実行させるための受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、生成装置、復元装置、送信装置、受信装置、生成プログラム、復元プログラム、送信プログラム、及び受信プログラムに関する。
【背景技術】
【０００２】
近年、新たなネットワーク技術としてクラウドコンピューティングが注目されている。クラウドコンピューティングとは、ユーザの持つデータをクラウドと呼ばれるネットワーク上の複数のサーバにより構成される仮想の大容量ストレージに分散して保管する技術である。クラウドコンピューティングでは、分散して保管されたデータに対し、ユーザがどこからでもネットワーク経由で必要に応じてアクセスすることを可能にする。さらに、データを暗号化して秘匿計算を実現することで単にデータを保管するだけでなく、クラウド上に分散して保管されたデータを用いて、個々のデータを秘匿しながら任意の処理を行うことが求められている。
【０００３】
このような秘匿計算を実現するために秘密分散法の利用が注目されている。秘密分散法とは１個の秘密情報をｎ個に分散し、ｎ個に分散した分散値のうち、ｋ個（ｋ≦ｎ）の分散値を集めることで元の秘密情報が復元できるという技術である。また、秘密分散法では、ｎ個に分散した分散値のうち、ｋ個未満の分散値からは秘密情報に関する情報を得ることができない。この秘密分散法として、Ｓｈａｍｉｒによる（ｋ、ｎ）閾値秘密分散法（以下、「Ｓｈａｍｉｒ法」ともいう）が知られている。
【０００４】
また、分散値全体のデータサイズの小型化を実現するためのランプ型秘密分散法も知られている。また、非特許文献１では、非対称秘密分散法と呼ばれる秘密分散法が提案されている。
【０００５】
また、特許文献１には、秘密分散のデータ復元処理の計算量を抑制する秘密分散システムが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−２４３４４１号公報
【非特許文献】
【０００７】
【非特許文献１】高橋慧、岩村惠市、“クラウドコンピューティングに適した計算量的安全性を持つ秘密分散法”、ＣＳＳ２０１２（２０１２）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、Ｓｈａｍｉｒ法をはじめとする秘密分散法では、正当な復元者ではない攻撃者が、分散値が保管されているサーバを攻撃し、ｋ個以上の分散値を得ることができれば、そのｋ個以上の分散値から秘密情報を復元できてしまう。また、非対称秘密分散法でも、攻撃者が鍵サーバ及びデータサーバにアクセスできる状態にあり、鍵を用いて生成した分散値を含めｋ個の分散値を得ることができれば、秘密情報を復元することができてしまう。
【０００９】
すなわち、前述した各種の秘密分散法では、秘密情報のオーナが知らない間に、秘密情報が漏洩してしまう場合があった。
【００１０】
本開示は、以上の事情を鑑みて成されたものであり、秘密情報のオーナが知らない間に、秘密情報が漏洩することを抑制することができる生成装置、復元装置、送信装置、受信装置、生成プログラム、復元プログラム、送信プログラム、及び受信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
開示の技術は、一つの態様として、ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の前記分散値によって前記秘密情報を復元でき、ｋ個未満では前記秘密情報を復元できないシステムにおいて、生成装置が、前記秘密情報を識別する識別情報を、１つの秘密鍵を用いて変換することによって、少なくともｋ−１個以下の前記分散値の各々に対応する値を生成する生成部を備える。
【発明の効果】
【００１２】
本開示によれば、秘密情報のオーナが知らない間に、秘密情報が漏洩することを抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】第１〜第４実施形態に係る秘密分散システムの構成の一例を示すブロック図である。
【図２】第１〜第４実施形態に係る生成装置のハードウェア構成の一例を示すブロック図である。
【図３】第１〜第４実施形態に係る復元装置のハードウェア構成の一例を示すブロック図である。
【図４】第１実施形態に係る分散処理の一例を示すフローチャートである。
【図５】第１実施形態に係る復元処理の一例を示すフローチャートである。
【図６】第２実施形態に係る分散処理の一例を示すフローチャートである。
【図７】第２実施形態に係る復元処理の一例を示すフローチャートである。
【図８】第３実施形態に係る分散処理の一例を示すフローチャートである。
【図９】第３実施形態に係る復元処理の一例を示すフローチャートである。
【図１０】第４実施形態に係る分散処理の一例を示すフローチャートである。
【図１１】第４実施形態に係る復元処理の一例を示すフローチャートである。
【図１２】第５実施形態に係る通信システムの構成の一例を示すブロック図である。
【図１３】第５実施形態に係る送信装置のハードウェア構成の一例を示すブロック図である。
【図１４】第５実施形態に係る受信装置のハードウェア構成の一例を示すブロック図である。
【図１５】第５実施形態に係る送信処理の一例を示すフローチャートである。
【図１６】第５実施形態に係る受信処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本開示の技術を実施するための形態例を詳細に説明する。
【００１５】
まず、実施形態の詳細を説明する前に、Ｓｈａｍｉｒ法及び非対称秘密分散法の詳細と問題点とを説明する。
【００１６】
＜Ｓｈａｍｉｒ法＞
Ｓｈａｍｉｒ法による秘密分散システムでは、ｎ台のサーバに秘密情報が分散される。秘密情報のオーナは、秘密分散時にのみ存在するディーラに秘密情報の分散を依頼し、ディーラは、秘密分散演算を行うことによりｎ個の分散値を計算し、分散値をｎ台のサーバに分散して保管する。もしくは、秘密情報のオーナは、秘密分散時に自らディーラとなって秘密情報を分散する。一方、復元者は、ｎ台のサーバに分散されたｎ個の分散値のうち、ｋ個の分散値を集めることによって、秘密情報を復元することができる。Ｓｈａｍｉｒ法での秘密情報の分散及び復元は、以下に示すように行われる。
【００１７】
＜分散＞
１．ディーラは、ｓ＜ｐで、かつｎ＜ｐである任意の素数ｐを選ぶ。なお、ｓは秘密情報を表す。
２．ディーラは、Ｚ／ｐＺから、異なるｎ個のｘｉ（ｉ＝１、２、…、ｎ）を選び、選んだｘｉをｎ台のサーバそれぞれのサーバＩＤとする。
３．ディーラは、Ｚ／ｐＺから、ｋ−１個の乱数ａｌ（ｌ＝１、２、…、ｋ−１）を選び、以下の（１）式（以下、「分散式」ともいう）を生成する。
【００１８】
【数１】
2020046558.tif 000003
【００１９】
４．ディーラは、上記（１）式のｘｉに各サーバＩＤを代入して分散値Ｗｉを計算し、各サーバに（ｘｉ、Ｗｉ）を配布する。
【００２０】
＜復元＞
１．復元に用いる分散値をＷｉ（ｉ＝１、２、…、ｋ）とする。また、その分散値に対応するサーバＩＤをｘｉ（ｉ＝１、２、…、ｋ）とする。
２．復元者は、ｋ個の（ｘｉ、Ｗｉ）を集め、集めたｋ個の（ｘｉ、Ｗｉ）を上記（１）式に代入し、ｋ個の連立方程式を解くことによって秘密情報であるｓを復元する。なお、ｓを復元する際には、例えば、Ｌａｇｒａｎｇｅの補間公式を用いることができる。
【００２１】
＜非対称秘密分散法＞
クラウドシステムを構成するｎ台のサーバからｔ台(ｔ＜ｋ)のサーバを選択し、選択したｔ台のサーバを鍵サーバとする。鍵サーバは、分散値を保管せず、擬似乱数を生成するための鍵情報を保管する。ｎ台のサーバのうち、鍵サーバ以外のサーバをデータサーバと呼び、データサーバは、分散値を生成するユーザから送られた分散値を保管する。また、秘密情報を管理する各ユーザｙには、ユーザを識別する情報であるＩＤ［ｙ］（ｙ＝１、…、ｒ）が割り当てられているものとする。また、それぞれのユーザｙが管理するｍ個の秘密情報ｓ１ｊ、…、ｓｍｊ（ｊ＝１、…、ｒ）にも、それぞれ秘密情報を識別する情報であるｄＩＤ［ｓｉｊ］（ｉ＝１、…、ｍ）が割り当てられているものとする。また、以下では、Ｅｎｃ（ａ、ｂ）は、ａをｂという鍵を用いて暗号化する処理を表すものとする。
【００２２】
＜分散＞
ここでは、ユーザｙがディーラとなる場合を説明する。また、ここでは、説明を分かり易くするために、ｒ＝１とし、ｓｉｊをｓｉと表す。
１．ユーザｙは、自身のＩＤ［ｙ］を鍵サーバｘ１、…、ｘｔに送る。
２．ＩＤ［ｙ］を受け取った鍵サーバは、自身が有する暗号装置と鍵ｋｅｙｊ（ｊ＝１、…、ｔ）とを用いて、以下の（２）式により、Ｅｉｄ（ｙ、ｊ）を生成し、生成したＥｉｄ（ｙ、ｊ）をユーザｙに送る。
Eid(y,j)=Enc(ID[y],keyj)  (j=1,…,t)  …(2)
３．Ｅｉｄ（ｙ、ｊ）を受け取ったユーザｙは、自身が管理する秘密情報ｓｉを識別するｄＩＤ［ｓｉ］（ｉ＝１、…、ｍ）を用いて、以下の（３）式により、擬似乱数ｑｉｊを生成する。
qij=Enc(dID[si],Eid(y,j))  …(3)
４．まず、ユーザｙは、式（１）のｋ−１次の分散式の係数ベクトルＡ（ｉ）＝［ｓｉ、ａｉ１、…、ａｉｋ−１］Ｔにおけるｋ−１−ｔ次の部分ベクトルＡ’ｋ−１−ｔ＝［ａｉｔ＋１、…、ａｉｋ−１］Ｔを、真性乱数を用いてｉごとに定める。次に、ユーザｙは、（３）式により生成したｔ次の擬似乱数系列Ｑ＝［ｑｉ１、…、ｑｉｔ］Ｔ及び鍵サーバのＩＤ系列を用いて、以下の（４）式により、残りの部分ベクトルＡ’ｔ（ｉ）＝［ａｉ１、…、ａｉｔ］Ｔをｉごとに算出する。
【００２３】
【数２】
2020046558.tif 000004
【００２４】
ここで、上記（４）式においてＳ＝［ｓｉ、…、ｓｉ］Ｔとすると、以下の（５）式で表される。
A(i)k-1=X'-1(Q-S)  …(5)
これにより、ユーザｙは、ｋ−１次の分散式の係数ベクトルＡ（ｉ）＝［ｓｉ、ａｉ１、…、ａｉｋ−１］Ｔにおけるｋ−１次の部分ベクトルＡ（ｉ）ｋ−１＝［ａｉ１、…、ａｉｋ−１］Ｔを全て求めることができる。
５．また、ユーザｙは、データサーバｘｔ＋１、…、ｘｎに関する分散値Ｗｉｔ＋１、…、Ｗｉｎを、４．の手順で生成した係数行列を用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により算出する。
６．ユーザｙは、各データサーバに、生成した分散値Ｗ１ｊ、…、Ｗｍｊ（ｊ＝ｔ＋１、…、ｎ）を送る。
【００２５】
＜復元＞
１．復元者は、ｎ個のサーバｘ１、…、ｘｎから任意のｋ個のサーバを選択し、選択したサーバに対して、ユーザｙのＩＤ［ｙ］及び秘密情報ｓｉのｄＩＤ［ｓｉ］を送る。
２．鍵サーバのうち、（ＩＤ［ｙ］、ｄＩＤ［ｓｉ］）を受け取ったサーバは、自身の持つ鍵ｋｅｙｊ及び暗号装置を利用して、（２）式によりＥｉｄ（ｙ、ｊ）を生成し、（３）式により擬似乱数ｑｉｊを生成する。そして、サーバは、生成した擬似乱数ｑｉｊを復元者に送る。
３．データサーバのうち、（ＩＤ［ｙ］、ｄＩＤ［ｓｉ］）を受け取ったサーバは、自身のサーバＩＤに対応する分散値Ｗｉｊを復元者に送る。
４．復元者は、受け取った擬似乱数ｑｉｊ及び分散値Ｗｉｊを用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により、秘密情報ｓｉを復元する。
【００２６】
しかしながら、Ｓｈａｍｉｒ法をはじめとする秘密分散法では、正当な復元者ではない攻撃者が、分散値が保管されているサーバを攻撃し、ｋ個以上の分散値を得ることができれば、そのｋ個以上の分散値から秘密情報を復元できてしまう。また、非対称秘密分散法でも、攻撃者が鍵サーバ及びデータサーバにアクセスできる状態にあり、鍵を用いて生成した分散値を含め、ｋ個の分散値を得ることができれば、秘密情報を復元することができてしまう。従って、Ｓｈａｍｉｒ法及び非対称秘密分散法を含む秘密分散法では、秘密情報のオーナが知らない間に、秘密情報が漏洩してしまう場合がある。
【００２７】
また、Ｓｈａｍｉｒ法及び非対称秘密分散法を含む秘密分散法では、攻撃者がサーバを乗っ取り、復元時に偽の分散値を出力した場合、復元者は、正しい秘密情報を復元できず、更に、復元した秘密情報の正当性を検証することもできない。
【００２８】
そこで、以下の実施形態では、以下の３つの問題点を解決する手法を説明する。
（Ａ）秘密情報のオーナが知らない間に、秘密情報が漏洩する。
（Ｂ）偽の分散値が出力されても、それを検証することができない。
一方、一般に暗号技術では暗号文に相当するものは１つであるため、ｎ＝ｋ＝１と解釈できる。また、鍵を用いて暗号化しているために、ｋ＝１個の分散値に相当する暗号文が漏洩しても、鍵が安全に管理されていれば秘密情報は漏洩しない。従って、暗号技術では(Ａ)は解決されているが、偽の暗号文が出力されると正しく復号できず、復号結果が乱数等である場合、それが正しいか検証できないのが一般的である。よって、暗号技術では(Ｂ）は解決されていない。一般に、秘密分散法及び暗号技術では、秘密情報、分散値、及び暗号文に対してＭＡＣ（Message Authentication Code）等の仕組みの異なる技術を用いて復号結果の正当性を検証できるが、秘密分散法又は暗号技術のみでは復号結果の正当性を検証することはできない。よって、（Ｂ）と同様の原理によって以下の（Ｃ）も解決する。
（Ｃ）暗号技術において偽の暗号文が出力されても、それを検証することができない。
【００２９】
［第１実施形態］
まず、図１を参照して、本実施形態に係る秘密分散システム１０の構成を説明する。図１に示すように、秘密分散システム１０は、生成装置１２、復元装置１４、及び複数台のサーバ１６を含む。生成装置１２、復元装置１４、及び複数台のサーバ１６は、ネットワークＮに接続され、互いに通信可能とされる。本実施形態に係る秘密分散システム１０は、ｎを２以上の整数、ｋを２以上ｎ以下の整数とし、秘密情報をｎ個の分散値に分散し、ｋ個の分散値によって秘密情報を復元でき、ｋ個未満では秘密情報を復元できないシステムである。
【００３０】
生成装置１２は、秘密情報のオーナ（以下、単に「オーナ」という）によって操作される装置であり、生成装置１２の例としては、パーソナルコンピュータ等の情報処理装置が挙げられる。復元装置１４は、秘密情報を復元する復元者（以下、単に「復元者」という）によって操作される装置であり、復元装置１４の例としては、パーソナルコンピュータ等の情報処理装置が挙げられる。
【００３１】
前述したＳｈａｍｉｒ法において（１）式を用いて分散値Ｗｉを生成する場合、（１）式にサーバＩＤであるｘｉを代入し、ｘｉに対応する分散値Ｗｉを得る。従って、ｘｉは、分散値Ｗｉを識別する値であると言える。一般に、ｘｉが分からなければ、分散値Ｗｉをｋ個集めても秘密情報を復元することはできない。そこで、本実施形態では、以下に示す処理によって、攻撃者がｋ個の分散値Ｗｉを集めたとしても、秘密情報を復元できないようにする。
【００３２】
以下では、生成装置１２は、１つの秘密鍵ｋｅｙ０、及びｍ（ｍは１以上の整数）個の秘密情報ｓ１、…、ｓｍを保管し、各秘密情報ｓｊ（ｊ＝１、…、ｍ）には、秘密情報ｓｊを識別する識別情報の一例としてのｄＩＤ［ｓｊ］が割り振られているものとする。また、前述したｘｉを秘密情報毎に区別するためにｘｉｊ（ｉ＝１、…、ｎ、ｊ＝１、…、ｍ）と表記する。また、分散値を保管するサーバ１６（以下、「データサーバ１６」ともいう）はｎ台準備されている。また、２≦ｔ≦ｋ−１とし、ｎ−ｔ（＜ｋ）台のサーバ１６のｘｉｊは、予め定められているものとする。また、以下では、Ｅｎｃ（ａ、ｂ）は、ａをｂという鍵を用いて暗号化することを意味し、ａ｜ｂは、ａの後にｂを連結することを意味する。
【００３３】
次に、図２を参照して、本実施形態に係る生成装置１２のハードウェア構成を説明する。図２に示すように、生成装置１２は、ＣＰＵ（Central Processing Unit）２０、一時記憶領域としてのメモリ２１、不揮発性の記憶部２２を含む。また、生成装置１２は、液晶ディスプレイ等の表示装置２３、キーボード等の入力装置２４、及びネットワークＮに接続されるネットワークＩ／Ｆ２５（InterFace）を含む。ＣＰＵ２０、メモリ２１、記憶部２２、表示装置２３、入力装置２４、及びネットワークＩ／Ｆ２５は、バス２６に接続される。
【００３４】
記憶部２２は、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、及びフラッシュメモリ等によって実現される。記憶媒体としての記憶部２２には、生成プログラム２８が記憶される。ＣＰＵ２０は、記憶部２２から生成プログラム２８を読み出してからメモリ２１に展開し、展開した生成プログラム２８を実行する。ＣＰＵ２０が生成プログラム２８を実行することで、開示の技術の生成部として動作する。また、記憶部２２には、前述した秘密鍵ｋｅｙ０及び秘密情報ｓｊが記憶される。
【００３５】
次に、図３を参照して、本実施形態に係る復元装置１４のハードウェア構成を説明する。図３に示すように、復元装置１４は、ＣＰＵ３０、一時記憶領域としてのメモリ３１、不揮発性の記憶部３２を含む。また、復元装置１４は、液晶ディスプレイ等の表示装置３３、キーボード等の入力装置３４、及びネットワークＮに接続されるネットワークＩ／Ｆ３５を含む。ＣＰＵ３０、メモリ３１、記憶部３２、表示装置３３、入力装置３４、及びネットワークＩ／Ｆ３５は、バス３６に接続される。
【００３６】
記憶部３２は、ＨＤＤ、ＳＳＤ、及びフラッシュメモリ等によって実現される。記憶媒体としての記憶部３２には、復元プログラム３８が記憶される。ＣＰＵ３０は、記憶部３２から復元プログラム３８を読み出してからメモリ３１に展開し、展開した復元プログラム３８を実行する。ＣＰＵ３０が復元プログラム３８を実行することで、開示の技術の受信部及び復元部として動作する。
【００３７】
次に、図４及び図５を参照して、本実施形態に係る秘密分散システム１０の作用を説明する。まず、図４を参照して、秘密情報を分散する分散処理を説明する。生成装置１２のＣＰＵ２０が生成プログラム２８を実行することで、図４に示す分散処理を実行する。
【００３８】
図４のステップＳ１０で、ＣＰＵ２０は、以下に示す（６）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ台のサーバ１６に対応するｔ個のｘｉｊを生成する。このｘｉｊが分散値Ｗｉｊの各々に対応する値の一例である。
xij=Enc(dID[sj]|i,key0)  (i=1,…,t,j=1,…,m)  …(6)
【００３９】
ステップＳ１２で、ＣＰＵ２０は、ｋ−１個の乱数ａｌ（ｌ＝１、…、ｋ−１）を生成し、分散式（上記（１）式）を決定する。
【００４０】
ステップＳ１４で、ＣＰＵ２０は、ステップＳ１０で生成したｔ個のｘｉｊと、予め定められたｎ−ｔ個のｘｉｊとを用いて、ステップＳ１２で決定した分散式に従って、各ｘｉｊに対応する分散値Ｗｉｊを算出する。ステップＳ１６で、ＣＰＵ２０は、ステップＳ１４で算出した分散値Ｗｉｊを、対応するサーバ１６に送信する。各サーバ１６は、受信した分散値Ｗｉｊを保管する。ステップＳ１６の処理が終了すると、本分散処理が終了する。
【００４１】
次に、図５を参照して、図４に示す分散処理によって分散された分散値から、秘密情報を復元する復元処理を説明する。復元装置１４のＣＰＵ３０が復元プログラム３８を実行することで、図５に示す復元処理を実行する。
【００４２】
図５のステップＳ２０で、ＣＰＵ３０は、ｄＩＤ［ｓｊ］に対応する分散値Ｗｉｊをｋ台のサーバ１６から取得する。ステップＳ２２で、ＣＰＵ３０は、ｘｉｊが予め定められているｎ−ｔ台のサーバ１６以外のサーバ１６に対応するｘｉｊの送信を要求する要求情報を生成装置１２に送信する。
【００４３】
オーナは、生成装置１２が要求情報を受信した後、秘密情報の復元を許可する場合は、入力装置２４を介して復元を許可する操作を行い、秘密情報の復元を許可しない場合は、入力装置２４を介して復元を禁止する操作を行う。生成装置１２のＣＰＵ２０は、オーナにより復元を許可する操作が行われた場合に、ステップＳ１０と同様の処理によりｘｉｊを生成し、生成したｘｉｊを復元装置１４に送信する。また、ＣＰＵ２０は、オーナにより復元を禁止する操作が行われた場合は、ｘｉｊを生成しない。すなわち、この場合、ＣＰＵ２０は、ｘｉｊを復元装置１４に送信しない。ただし、この送信処理はオーナによる入力装置２４を介した操作がなくても、オーナが予め許可する条件を設定しておき、要求情報がその条件を満たす場合に自動的に送信を行い、満たさない場合に送信しないよう予めプログラム等により設定しておいても良い。これは、以降も同様である。
【００４４】
ステップＳ２４で、ＣＰＵ３０は、ステップＳ２２での要求に対応して生成装置１２から送信されたｘｉｊを受信したか否かを判定する。この判定が肯定判定となった場合は、処理はステップＳ２６に移行する。
【００４５】
ステップＳ２６で、ＣＰＵ３０は、ステップＳ２０で取得した分散値Ｗｉｊ及びステップＳ２４で受信したｘｉｊを用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により、秘密情報ｓｊを復元する。ステップＳ２６の処理が終了すると、本復元処理が終了する。
【００４６】
一方、例えば、オーナが秘密情報の復元を禁止する操作を行ったことにより、ステップＳ２２でｘｉｊの送信を要求してから所定期間を経過してもｘｉｊが受信されなかった場合、または拒絶信号が送付された場合、ステップＳ２４の判定が否定判定となる。ステップＳ２４の判定が否定判定となった場合は、ステップＳ２６の処理は実行されずに本復元処理が終了する。
【００４７】
ところで、Ｌａｇｒａｎｇｅの補間公式では、ｘ座標が異なるｋ個の点（ｘ１、ｙ１）、…、（ｘｋ、ｙｋ）から、それらの点を通るｋ−１次以下の多項式Ｗ（ｘ）を求めることができる。前述した非対称秘密分散法の分散の４．の処理は、Ｌａｇｒａｎｇｅの補間公式によって多項式を求めることを意味するが、ｘとｙとの関係は入れ替えてもよい。このため、ｙ座標が異なるｋ個の点（ｘ１、ｙ１）、…、（ｘｋ、ｙｋ）から、それらの点を通るｋ−１次以下の多項式Ｆ（ｙ）を求めることもでき、求めた曲線はＷ（ｘ）＝Ｆ（ｙ）となる。すなわち、本実施形態は、ｘ座標を公開し、ｙ座標を分散値として生成・秘匿していた従来の秘密分散法に対して、生成した分散値を公開し、その基となるｘ座標を生成・秘匿することに対応する。また、オーナは、ステップＳ２２で送信された要求情報に対して復元を許可しない場合、復元を禁止する操作を行うことによってｘｉｊを復元装置１４に送信しないことにより、秘密情報の復元を制御することができる。この結果、秘密情報のオーナが知らない間に、秘密情報が漏洩することを抑制することができる。また、非対称秘密分散法と同等以上の安全性を確保することができる。
【００４８】
なお、本実施形態では、分散処理のステップＳ１０で、ｄＩＤ［ｓｊ］とｉとを連結して得られた情報を、ｋｅｙ０を用いて暗号化することによってｘｉｊを生成する場合について説明したが、これに限定されない。例えば、ｉを、ｋｅｙ０を用いて暗号化することによってｋｅｙｉを生成し、ｄＩＤ［ｓｊ］を、ｋｅｙｉを用いて暗号化することによってｘｉｊを生成してもよい。また、例えば、ｄＩＤ［ｓｊ］を、ｋｅｙ０を用いて暗号化することによってｋｅｙｊを生成し、ｉを、ｋｅｙｊを用いて暗号化することによってｘｉｊを生成してもよい。
【００４９】
また、本実施形態では、ｔ個のｘｉｊを生成し、残りのｎ−ｔ個のｘｉｊが予め定められている場合について説明したが、これに限定されない。分散処理のステップＳ１０で、ｎ個全てのｘｉｊ（ｉ＝１、…、ｎ）を生成してもよい。この場合、復元処理のステップＳ２２で、復元に必要な全てのｘｉｊの送信を要求する要求情報を生成装置１２に送信する形態が例示される。
【００５０】
［第２実施形態］
開示の技術の第２実施形態を説明する。なお、秘密分散システム１０の構成（図１参照）、生成装置１２のハードウェア構成（図２参照）、及び復元装置１４のハードウェア構成（図３参照）は、第１実施形態と同様であるため説明を省略する。
【００５１】
前述した非対称秘密分散法は、復元時に秘密情報のオーナによる復元の許諾処理を導入していないため、鍵サーバを含めてｋ個の分散値を得ることができたユーザは、攻撃者であっても秘密情報を復元できる。また、ユーザが複数人いることを想定した場合、特定のオーナが鍵サーバを管理することができない。また、ユーザを１人とし、そのユーザ（すなわち、秘密情報のオーナ）が全ての鍵サーバを管理する、すなわち、非対称秘密分散法の＜分散＞の１．及び２．の処理をオーナが行えば、ｋ−１個までの分散値をオーナが生成できるが、＜復元＞においてオーナによる復元の許諾処理を含んでいない。また、非対称秘密分散法では、鍵サーバがあることを前提とするため、鍵サーバが保管する鍵を用いて分散値を生成する手順に固定されている。本実施形態では、より汎用的な形とした手法を説明する。この手法により、上記（Ａ）の問題点が汎用的に解決される。
【００５２】
なお、本実施形態では、全てのサーバ１６のサーバＩＤ（ｘｉｊ）は予め定められており、公開されているものとする。また、本実施形態では、サーバ１６のうち、鍵サーバとして機能するサーバ１６を「鍵サーバ１６」といい、データサーバとして機能するサーバ１６を「データサーバ１６」という。ただし、鍵サーバ１６は生成装置１２内に存在するため、図において明示されているサーバ１６はデータサーバ１６であり、ｎ−ｔ台準備されている。それ以外の前提は第１実施形態と同様である。
【００５３】
図６及び図７を参照して、本実施形態に係る秘密分散システム１０の作用を説明する。まず、図６を参照して、本実施形態に係る秘密情報を分散する分散処理を説明する。生成装置１２のＣＰＵ２０が生成プログラム２８を実行することで、図６に示す分散処理を実行する。
【００５４】
図６のステップＳ３０で、ＣＰＵ２０は、以下に示す（７）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ個のｘｉｊ（ｉ＝１、…、ｔ）に対応する分散値ｑｉｊを生成する。
qij=Enc(dID[sj]|i,key0)  (i=1,…,t,j=1,…,m)  …(7)
【００５５】
ステップＳ３２で、ＣＰＵ２０は、上記（１）式のｋ−１次の分散式の係数ベクトルＡ（ｉ）＝［ｓｉ、ａｉ１、…、ａｉｋ−１］Ｔにおけるｋ−１−ｔ次の部分ベクトルＡ’ｋ−１−ｔ＝［ａｉｔ＋１、…、ａｉｋ−１］Ｔを、真性乱数を用いてｉごとに定める。その後、ＣＰＵ２０は、ステップＳ３０で生成したｔ個の擬似乱数であるｑｉｊからなるＱ＝［ｑｉ１、…、ｑｉｔ］Ｔ及び鍵サーバ１６のＩＤ系列を用いて、以下の（８）式に従って、分散式のｋ−１次の部分ベクトルＡ（ｉ）ｋ−１＝［ａｉ１、…、ａｉｋ−１］Ｔにおける残りの部分ベクトルＡ’ｔ（ｉ）＝［ａｉ１、…、ａｉｔ］Ｔをｉごとに算出する。
【００５６】
【数３】
2020046558.tif 000005
【００５７】
ステップＳ３４で、ＣＰＵ２０は、サーバＩＤがｘｉｔ＋１、…、ｘｉｎであるデータサーバ１６に関する分散値Ｗｉｔ＋１、…、Ｗｉｎを、ステップＳ３２で生成した係数行列を用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により算出する。
【００５８】
ステップＳ３６で、ＣＰＵ２０は、ステップＳ３４で算出した分散値Ｗｉｊ（ｊ＝ｔ＋１、…、ｎ）を、対応するデータサーバ１６に送信する。各データサーバ１６は、受信した分散値Ｗｉｊを保管する。ステップＳ３６の処理が終了すると、本分散処理が終了する。
【００５９】
次に、図７を参照して、図６に示す分散処理によって分散された分散値から、秘密情報を復元する復元処理を説明する。復元装置１４のＣＰＵ３０が復元プログラム３８を実行することで、図７に示す復元処理を実行する。
【００６０】
図７のステップＳ４０で、ＣＰＵ３０は、ｄＩＤ［ｓｊ］に対応する分散値の送信を要求する要求情報を生成装置１２に送信する。オーナは、生成装置１２が要求情報を受信した後、秘密情報の復元を許可する場合は、入力装置２４を介して復元を許可する操作を行い、秘密情報の復元を許可しない場合は、入力装置２４を介して復元を禁止する操作を行う。生成装置１２のＣＰＵ２０は、オーナにより復元を許可する操作が行われた場合に、ステップＳ３０と同様の処理により分散値ｑｉｊを生成し、生成した分散値ｑｉｊを復元装置１４に送信する。また、ＣＰＵ２０は、オーナにより復元を禁止する操作が行われた場合は、分散値ｑｉｊを生成しない。すなわち、この場合、ＣＰＵ２０は、分散値ｑｉｊを復元装置１４に送信しない。
【００６１】
ステップＳ４２で、ＣＰＵ３０は、ステップＳ４０での要求に対応して生成装置１２から送信された分散値ｑｉｊを受信したか否かを判定する。この判定が肯定判定となった場合は、処理はステップＳ４４に移行する。
【００６２】
ステップＳ４４で、ＣＰＵ３０は、データサーバ１６のＷｉｊと合わせて得られたｋ個の分散値を用いて、秘密情報ｓｊを復元する。ステップＳ４４の処理が終了すると、本復元処理が終了する。
【００６３】
一方、例えば、ステップＳ４０で分散値ｑｉｊの送信を要求してから所定期間を経過しても分散値ｑｉｊが受信されなかった場合等では、ステップＳ４２の判定が否定判定となる。ステップＳ４２の判定が否定判定となった場合は、ステップＳ４４の処理は実行されずに本復元処理が終了する。
【００６４】
なお、本実施形態では、分散処理のステップＳ３０で、ｄＩＤ［ｓｊ］とｉとを連結して得られた情報を、ｋｅｙ０を用いて暗号化することによってｑｉｊを生成する場合について説明したが、これに限定されない。例えば、ｉを、ｋｅｙ０を用いて暗号化することによってｋｅｙｉを生成し、ｄＩＤ［ｓｊ］を、ｋｅｙｉを用いて暗号化することによってｑｉｊを生成してもよい。また、例えば、ｄＩＤ［ｓｊ］を、ｋｅｙ０を用いて暗号化することによってｋｅｙｊを生成し、ｉを、ｋｅｙｊを用いて暗号化することによってｑｉｊを生成してもよい。
【００６５】
［第３実施形態］
開示の技術の第３実施形態を説明する。なお、秘密分散システム１０の構成（図１参照）、生成装置１２のハードウェア構成（図２参照）、及び復元装置１４のハードウェア構成（図３参照）は、第１実施形態と同様であるため説明を省略する。
【００６６】
第１実施形態では分散値を識別するｘｉｊを１つの秘密鍵ｋｅｙ０を用いて生成し、第２実施形態では分散値ｑｉｊを１つの秘密鍵ｋｅｙ０を用いて生成する形態例を説明したが、本実施形態では、これらの形態例を組み合わせた形態例を説明する。この組み合わせによって、上記（Ａ）の問題点に加え、上記（Ｂ）の問題点も解決することができる。
【００６７】
一般に、秘密情報ｓは、ｋ個の分散値ｙｉと、分散値ｙｉを識別するｋ個の値ｘｉとを用いて、Ｌａｇｒａｎｇｅの補間公式から以下に示すように求められる。ｘ座標が異なるｋ個の点（ｘ１、ｙ１）、（ｘ２、ｙ２）、…、（ｘｋ、ｙｋ）を通るｋ−１次以下の多項式Ｗ（ｘ）は以下の（９）式で表される。
【００６８】
【数４】
2020046558.tif 000006
【００６９】
ただし、
【００７０】
【数５】
2020046558.tif 000007
【００７１】
とする。従って、秘密情報ｓはＷ（０）の値となる。ここで、サーバ１６が攻撃者に乗っ取られ、乗っ取られたサーバ１６が偽の値ｙｉ＋Δｙｉを出力した場合、偽のＷ’（０）は以下に示す（１０）式で表される。
【００７２】
【数６】
2020046558.tif 000008
【００７３】
例えば、１回目の復元で偽の分散値ｙｉ＋Δｙｉがサーバ１６から出力されてＷ’（０）が復元され、２回目の復元で１回目とは異なる偽のｙｊ＋Δｙｊがサーバ１６から出力されてＷ’’（０）が復元された場合、その差分は以下に示す（１１）式で表される。
【００７４】
【数７】
2020046558.tif 000009
【００７５】
従って、ΔｙｉとΔｙｊとに以下に示す（１２）式の関係があれば、Ｗ’（０）とＷ’’（０）との差分は０となる、すなわち、１回目と２回目とにそれぞれ復元された秘密情報が一致する。このため、この場合、復元された秘密情報が偽りの値であることは判定できない。
【００７６】
【数８】
2020046558.tif 000010
【００７７】
しかしながら、
【００７８】
【数９】
2020046558.tif 000011
【００７９】
は、全てのｘｋが特定できなければ定まらない。従って、攻撃者にとって未知のｘｋが存在する場合、攻撃者は乗っ取ったサーバ１６に対して、Ｗ’（０）とＷ’’（０）との差分が０となるΔｙｉ及びΔｙｊを設定することができない。
【００８０】
そこで、本実施形態では、以下に示す処理を行うことによって、秘密情報の漏洩に関する上記（Ａ）の問題点、及び秘密情報の改ざんに関する上記（Ｂ）の問題点の双方を解決する。なお、以下では、第２実施形態と同様にサーバ１６はデータサーバ１６のみでｎ−ｔ台準備され、そのデータサーバ１６のサーバＩＤであるｘｉｊは予め定められ、かつ公開されているものとする。また、ｎ＞ｋであり、これら以外の前提は第１実施形態と同様とする。
【００８１】
図８及び図９を参照して、本実施形態に係る秘密分散システム１０の作用を説明する。まず、図８を参照して、本実施形態に係る秘密情報を分散する分散処理を説明する。生成装置１２のＣＰＵ２０が生成プログラム２８を実行することで、図８に示す分散処理を実行する。
【００８２】
図８のステップＳ５０で、ＣＰＵ２０は、以下に示す（１３）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ台のサーバ１６に対応するｔ個のｘｉｊを生成する。
xij=Enc(dID[sj]|i|0,key0)  (i=1,…,t,j=1,…,m)  …(13)
【００８３】
ステップＳ５２で、ＣＰＵ２０は、以下に示す（１４）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ個のｘｉｊ（ｉ＝１、…、ｔ）に対応する分散値ｑｉｊを生成する。
qij=Enc(dID[sj]|i|1,key0)  (i=1,…,t,j=1,…,m)  …(14)
【００８４】
このように、本実施形態では、ステップＳ５０で生成されるｔ（≦ｋ−１）個のｘｉｊは、連結させる値（ｘｉｊは０、ｑｉｊは１）を異ならせることにより、分散値ｑｉｊとは異なる値として生成される。連結させる値は０及び１を用いたがこれに限られず、任意の値を用いてもよい。
【００８５】
ステップＳ５４で、ＣＰＵ２０は、ステップＳ５０、Ｓ５２で生成した値を用いて、ｔ個の分散値ｑｉｊ以外の分散値Ｗｉｔ＋１、…、Ｗｉｎを求めるための係数を算出する。具体的には、ＣＰＵ２０は、上記（１）式のｋ−１次の分散式の係数ベクトルＡ（ｉ）＝［ｓｉ、ａｉ１、…、ａｉｋ−１］Ｔにおけるｋ−１−ｔ次の部分ベクトルＡ’ｋ−１−ｔ＝［ａｉｔ＋１、…、ａｉｋ−１］Ｔを、真性乱数を用いてｉごとに定める。その後、ＣＰＵ２０は、ステップＳ５０で生成したｔ個の擬似乱数であるｑｉｊからなるＱ＝［ｑｉ１、…、ｑｉｔ］Ｔ及びステップＳ５２で生成した鍵サーバ１６のＩＤ系列を用いて、以下の（１５）式に従って、分散式のｋ−１次の部分ベクトルＡ（ｉ）ｋ−１＝［ａｉ１、…、ａｉｋ−１］Ｔにおける残りの部分ベクトルＡ’ｔ（ｉ）＝［ａｉ１、…、ａｉｔ］Ｔをｉごとに算出する。
【００８６】
【数１０】
2020046558.tif 000012
【００８７】
ステップＳ５６で、ＣＰＵ２０は、サーバＩＤがｘｉｔ＋１、…、ｘｉｎであるデータサーバ１６に関する分散値Ｗｉｔ＋１、…、Ｗｉｎを、ステップＳ５４で生成した係数行列を用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により算出する。
【００８８】
ステップＳ５８で、ＣＰＵ２０は、ステップＳ５６で算出した分散値Ｗｉｊ（ｊ＝ｔ＋１、…、ｎ）を、対応するデータサーバ１６に送信する。各データサーバ１６は、受信した分散値Ｗｉｊを保管する。ステップＳ５８の処理が終了すると、本分散処理が終了する。
【００８９】
次に、図９を参照して、図８に示す分散処理によって分散された分散値から、秘密情報を復元する復元処理を説明する。復元装置１４のＣＰＵ３０が復元プログラム３８を実行することで、図９に示す復元処理を実行する。
【００９０】
図９のステップＳ６０で、ＣＰＵ３０は、データサーバ１６に保管されているｋ−ｔ＋ｕ個の分散値Ｗｉｊを受信する。なお、ｕは、検証用の分散値の数（１以上の整数）を表す。ステップＳ６２で、ＣＰＵ３０は、ｔ個の分散値と、その分散値を識別するためのｘｉｊとの送信を要求する要求情報を生成装置１２に送信する。オーナは、生成装置１２が要求情報を受信した後、秘密情報の復元を許可する場合は、入力装置２４を介して復元を許可する操作を行い、秘密情報の復元を許可しない場合は、入力装置２４を介して復元を禁止する操作を行う。生成装置１２のＣＰＵ２０は、オーナにより復元を許可する操作が行われた場合に、ステップＳ５０、Ｓ５２と同様の処理によりｘｉｊ及び分散値ｑｉｊを生成し、生成したｘｉｊ及び分散値ｑｉｊを復元装置１４に送信する。また、ＣＰＵ２０は、オーナにより復元を禁止する操作が行われた場合は、ｘｉｊ及び分散値ｑｉｊを生成しない。すなわち、この場合、ＣＰＵ２０は、ｘｉｊ及び分散値ｑｉｊを復元装置１４に送信しない。
【００９１】
ステップＳ６４で、ＣＰＵ３０は、ステップＳ６２での要求に対応して生成装置１２から送信されたｘｉｊ及び分散値ｑｉｊを受信したか否かを判定する。この判定が肯定判定となった場合は、処理はステップＳ６６に移行する。
【００９２】
ステップＳ６６で、ＣＰＵ３０は、得られたｋ＋ｕ個のｑｉｊ、Ｗｉｊ、及びｘｉｊを用いて、データサーバ１６から得られた分散値Ｗｉｊを異ならせて（ｑｉｊは同一）、秘密情報ｓｊをｕ＋１回復元する。換言すると、ＣＰＵ３０は、ステップＳ５４で生成された係数を用いてステップＳ５６で同一の秘密情報から生成された異なる分散値の組み合わせによって、秘密情報を２回以上復元する。
【００９３】
ステップＳ６８で、ＣＰＵ３０は、ステップＳ６６で復元したｕ＋１個の秘密情報ｓｊを用いて、復元した秘密情報ｓｊを検証する。具体的には、ＣＰＵ３０は、ステップＳ６６で復元したｕ＋１個の秘密情報ｓｊが一致した場合は、その秘密情報ｓｊは正しいと判断し、異なる場合は、その秘密情報ｓｊは不正である、すなわち、データサーバ１６の少なくとも１台が攻撃されたと判断する。ＣＰＵ３０は、秘密情報ｓｊが正しいと判断した場合は、その秘密情報ｓｊを用いた処理を行う。一方、ＣＰＵ３０は、秘密情報ｓｊが不正であると判断した場合は、例えば、表示装置３３にエラーメッセージを表示する。ステップＳ６８の処理が終了すると、本復元処理が終了する。
【００９４】
一方、例えば、ステップＳ６２でｘｉｊ及び分散値ｑｉｊの送信を要求してから所定期間を経過してもｘｉｊ及び分散値ｑｉｊが受信されなかった場合等では、ステップＳ６４の判定が否定判定となる。ステップＳ６４の判定が否定判定となった場合は、ステップＳ６６、Ｓ６８の処理は実行されずに本復元処理が終了する。
【００９５】
以下に具体例を用いて説明する。例えば、ｋ＝３、ｎ＝４、ｔ＝２、ｕ＝ｎ−ｋ＝１とした場合、生成装置１２はｔ＝２より２台分の鍵サーバ１６を含むため、それをｘ１、ｘ２とし、ｘ１、ｘ２に対応する分散値ｑｉｊを生成する。また、この場合、データサーバ１６はｎ−ｔ＝２より２台存在し、そのサーバＩＤであるｘ３、ｘ４は公開されている。この２台のデータサーバ１６が、攻撃者により乗っ取られ、偽の分散値ｙ３＋Δｙ３、ｙ４＋Δｙ４を出力する場合を考える。
【００９６】
この場合、復元装置１４は、外部からの分散値を異ならせて復元処理を行う、すなわち１回目はｘ１、ｘ２、ｘ３の組み合わせによって秘密情報の復元を行い、２回目はｘ１、ｘ２、ｘ４の組み合わせによって秘密情報の復元を行う。ここで、ｘ１、ｘ２は生成装置１２が生成した分散値を識別する値であるため、攻撃者はｘ１、ｘ２を知ることはできない。この場合、１回目の復元によって、以下の（１６）式に示す偽のＷ’（０）が復元される。
【００９７】
【数１１】
2020046558.tif 000013
【００９８】
また、この場合、２回目の復元によって、以下の（１７）式に示す偽のＷ’’（０）が復元される。
【００９９】
【数１２】
2020046558.tif 000014
【０１００】
ここで、ｘ３、ｘ４に対応する２台のデータサーバ１６が同一の攻撃者によって乗っ取られたとしても、その攻撃者は、ｘ１、ｘ２を知ることはできないため、以下の（１８）式の関係のΔｙ３及びΔｙ４を設定することができない。このため、Ｗ’（０）とＷ’’（０）とは一致しない。従って、復元装置１４は、データサーバ１６から偽の分散値が出力されたことを検証することができる。
【０１０１】
【数１３】
2020046558.tif 000015
【０１０２】
上記の例では、ｕ＝１とし、ｘ３に対応するデータサーバ１６の他に、ｘ４に対応するデータサーバ１６から検証用の分散値を得ている。この場合、２台のデータサーバ１６のうちの何れか、又は双方が不正であるかは判断できない。
【０１０３】
例えば、ｋ＝３、ｎ＝５、ｔ＝２、ｕ＝ｎ−ｋ＝２とすれば、３台のデータサーバ１６が存在し、ｘ３の他に２つの分散値を検証用に使用することができる。ここで、ｘ５に対応するデータサーバ１６のみが乗っ取られ、偽の分散値ｙ５＋Δｙ５を出力する場合を考える。この場合、ｘ３、ｘ４に対応する分散値を用いて２回の復元により得られた２つの秘密情報は、Δｙ３＝Δｙ４＝０となるため一致し、ｘ５に対応する分散値を用いて復元された秘密情報のみが他の秘密情報と異なる。すなわち、この場合、不正なデータサーバ１６を特定することができる。
【０１０４】
また、２台のデータサーバ１６が乗っ取られた場合、３回の復元により得られた３つの秘密情報が全て異なるため、この場合は、２台以上のデータサーバ１６が不正であると判断することができる。従って、乗っ取られて偽の分散値を出力するデータサーバ１６の数をｅとした場合、ｅ＜ｕであれば、不正なデータサーバ１６を特定することができる。
【０１０５】
なお、本実施形態では、分散処理のステップＳ５０、Ｓ５２において分散値ｑｉｊと、分散値ｑｉｊを識別するｘｉｊとを異なる数（本実施形態では０と１）を連結させることによって異なる値として生成する場合について説明したが、これに限定されない。ｘｉｊと分散値ｑｉｊとは異なる値であれば、他の任意の手法によって生成してもよい。
【０１０６】
また、本実施形態では、分散処理のステップＳ５０、Ｓ５２においてｘｉｊ及び分散値ｑｉｊをｄＩＤ［ｓｊ］、ｉ、及び０（又は１）を連結させ、かつ１回の暗号化によって生成する場合について説明したが、これに限定されない。例えば、連結させる組み合わせを本実施形態とは異ならせてもよいし、複数回の暗号化によってｘｉｊ及び分散値ｑｉｊを生成してもよい。
【０１０７】
また、第１〜第３実施形態を通して、ｘｉｊは秘密情報ｓｉごとに生成しているが、これは、１つの秘密情報の復元時に、生成装置１２からｘｉｊを得ることができても、異なるｘｉｊが設定されている他の秘密情報を復元できないようにするためである。これにより、安全性の低下を抑制することができる。また、攻撃者が分散値からｘｉｊを得ようとしても、分散値はｎ−ｔ（＜ｋ）台のデータサーバ１６にしか保管されていないため、同様にｘｉｊを得ることはできない。
【０１０８】
［第４実施形態］
開示の技術の第４実施形態を説明する。なお、秘密分散システム１０の構成（図１参照）、生成装置１２のハードウェア構成（図２参照）、及び復元装置１４のハードウェア構成（図３参照）は、第１実施形態と同様であるため説明を省略する。
【０１０９】
第３実施形態では、ｎ＞ｋを前提とし、検証用の分散値を使用する形態例を説明した。本実施形態では、ｎ＝ｋとし、検証用の分散値を使用しない形態例を説明する。本実施形態では、１つの秘密情報を異なる分散式で２回分散し、第３実施形態と同様に、２回の復元によって得られた秘密情報が一致するか否かによって検証する。
【０１１０】
図１０及び図１１を参照して、本実施形態に係る秘密分散システム１０の作用を説明する。まず、図１０を参照して、本実施形態に係る秘密情報を分散する分散処理を説明する。生成装置１２のＣＰＵ２０が生成プログラム２８を実行することで、図１０に示す分散処理を実行する。
【０１１１】
図１０のステップＳ７０で、ＣＰＵ２０は、以下に示す（１９）式及び（２０）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｘｉｊ及びｘ’ｉｊを生成する。このｘｉｊ及びｘ’ｉｊは、互いに異なる２個のサーバＩＤに対応する。
xij=Enc(dID[sj]|i|0,key0)  (i=1,…,t,j=1,…,m)  …(19)
x'ij=Enc(dID[sj]|i|2,key0)  (i=1,…,t,j=1,…,m)  …(20)
【０１１２】
ステップＳ７２で、ＣＰＵ２０は、以下に示す（２１）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ個のｘｉｊ（ｉ＝１、…、ｔ）に対応する分散値ｑｉｊを生成する。また、ＣＰＵ２０は、以下に示す（２２）式に従って、秘密情報ｓｊを識別する識別情報ｄＩＤ［ｓｊ］を、１つの秘密鍵ｋｅｙ０を用いて変換することによって、ｔ個のｘ’ｉｊ（ｉ＝１、…、ｔ）に対応する分散値ｑ’ｉｊを生成する。
qij=Enc(dID[sj]|i|1,key0)  (i=1,…,t,j=1,…,m)  …(21)
q'ij=Enc(dID[sj]|i|2,key0)  (i=1,…,t,j=1,…,m)  …(22)
【０１１３】
ステップＳ７４で、ＣＰＵ２０は、非対称秘密分散法の＜分散＞の４．の手順を用いて、ｔ個の（ｘｉｊ、ｑｉｊ）と（０、ｓｊ）とを通るｋ−１次の多項式Ｗ（ｘ）を求める。多項式Ｗ（ｘ）は、以下の（２３）式で表される。
【０１１４】
【数１４】
2020046558.tif 000016
【０１１５】
ステップＳ７６で、ＣＰＵ２０は、非対称秘密分散法の＜分散＞の４．の手順を用いて、ｔ個の（ｘ’ｉｊ、ｑ’ｉｊ）と（０、ｓｊ）とを通るｋ−１次の多項式Ｖ（ｘ）を求める。多項式Ｖ（ｘ）は、以下の（２４）式で表される。
【０１１６】
【数１５】
2020046558.tif 000017
【０１１７】
ステップＳ７８で、ＣＰＵ２０は、サーバＩＤがｘｉｔ＋１、…、ｘｉｎであるデータサーバ１６に関する分散値Ｗｉｔ＋１、…、Ｗｉｎを、ステップＳ７４で算出した多項式Ｗ（ｘ）を用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により算出する。
【０１１８】
ステップＳ８０で、ＣＰＵ２０は、サーバＩＤがｘｉｔ＋１、…、ｘｉｎであるデータサーバ１６に関する分散値Ｖｉｔ＋１、…、Ｖｉｎを、ステップＳ７６で算出した多項式Ｖ（ｘ）を用いて、（ｋ、ｎ）閾値秘密分散法と同様の手順により算出する。
【０１１９】
ステップＳ８２で、ＣＰＵ２０は、ステップＳ７８、Ｓ８０で算出した分散値Ｗｉｊ、Ｖｉｊ（ｊ＝ｔ＋１、…、ｎ）を、対応するデータサーバ１６に送信する。各データサーバ１６は、受信した分散値Ｗｉｊ、Ｖｉｊを保管する。ステップＳ８２の処理が終了すると、本分散処理が終了する。
【０１２０】
次に、図１１を参照して、図１０に示す分散処理によって分散された分散値から、秘密情報を復元する復元処理を説明する。復元装置１４のＣＰＵ３０が復元プログラム３８を実行することで、図１１に示す復元処理を実行する。
【０１２１】
図１１のステップＳ９０で、ＣＰＵ３０は、データサーバ１６に保管されているｋ−ｔ個の分散値Ｗｉｊ、Ｖｉｊを受信する。ステップＳ９２で、ＣＰＵ３０は、ｔ個の分散値ｑｉｊ、ｑ’ｉｊと、その分散値ｑｉｊ、ｑ’ｉｊを識別するためのｘｉｊ、ｘ’ｉｊの送信を要求する要求情報を生成装置１２に送信する。オーナは、生成装置１２が要求情報を受信した後、秘密情報の復元を許可する場合は、入力装置２４を介して復元を許可する操作を行い、秘密情報の復元を許可しない場合は、入力装置２４を介して復元を禁止する操作を行う。生成装置１２のＣＰＵ２０は、オーナにより復元を許可する操作が行われた場合に、ステップＳ７０、Ｓ７２と同様の処理によりｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊを生成し、生成したｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊを復元装置１４に送信する。また、ＣＰＵ２０は、オーナにより復元を禁止する操作が行われた場合は、ｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊを生成しない。すなわち、この場合、ＣＰＵ２０は、ｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊを復元装置１４に送信しない。
【０１２２】
ステップＳ９４で、ＣＰＵ３０は、ステップＳ９２での要求に対応して生成装置１２から送信されたｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊを受信したか否かを判定する。この判定が肯定判定となった場合は、処理はステップＳ９６に移行する。
【０１２３】
ステップＳ９６で、ＣＰＵ３０は、得られたｋ個のｑｉｊ、Ｗｉｊ、及びｘｉｊを用いて、多項式Ｗ（ｘ）により秘密情報ｓｊを復元する。また、ＣＰＵ３０は、得られたｋ個のｑ’ｉｊ、Ｖｉｊ、及びｘ’ｉｊを用いて、多項式Ｖ（ｘ）により秘密情報ｓｊを復元する。
【０１２４】
ステップＳ９８で、ＣＰＵ３０は、ステップＳ９６で復元した２個の秘密情報ｓｊを用いて、復元した秘密情報ｓｊを検証する。具体的には、ＣＰＵ３０は、多項式Ｗ（ｘ）により復元した秘密情報ｓｊと多項式Ｖ（ｘ）により復元した秘密情報ｓｊとが一致した場合、その秘密情報ｓｊが正しいと判断する。一方、ＣＰＵ３０は、多項式Ｗ（ｘ）により復元した秘密情報ｓｊと多項式Ｖ（ｘ）により復元した秘密情報ｓｊとが異なる場合、その秘密情報ｓｊは不正である、すなわち、データサーバ１６の少なくとも１台が攻撃されたと判断する。ＣＰＵ３０は、秘密情報ｓｊが正しいと判断した場合は、その秘密情報ｓｊを用いた処理を行う。一方、ＣＰＵ３０は、秘密情報ｓｊが不正であると判断した場合は、例えば、表示装置３３にエラーメッセージを表示する。ステップＳ９８の処理が終了すると、本復元処理が終了する。
【０１２５】
一方、例えば、ステップＳ９２でｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊの送信を要求してから所定期間を経過してもｘｉｊ、ｘ’ｉｊ及び分散値ｑｉｊ、ｑ’ｉｊが受信されなかった場合等では、ステップＳ９４の判定が否定判定となる。ステップＳ９４の判定が否定判定となった場合は、ステップＳ９６、Ｓ９８の処理は実行されずに本復元処理が終了する。
【０１２６】
以下に具体例を用いて説明する。例えば、ｎ＝ｋ＝２、ｔ＝１とした場合を考える。この場合、データサーバ１６はｎ−ｔ＝１台であり、このデータサーバ１６のサーバＩＤをｘ２とし、攻撃者に乗っ取られているものとする。このｘ２に対応するデータサーバ１６が偽の分散値Ｗ２＋ΔＷ２、Ｖ２＋ΔＶ２を出力する場合を考える。
【０１２７】
この場合、復元装置１４は、１回目には、多項式Ｗ（ｘ）により秘密情報の復元を行うことによって、以下の（２５）式で表されるＷ’（０）を復元する。
【０１２８】
【数１６】
2020046558.tif 000018
【０１２９】
更に、この場合、復元装置１４は、２回目には、多項式Ｖ（ｘ）により秘密情報の復元を行うことによって、以下の（２６）式で表されるＶ’（０）を復元する。
【０１３０】
【数１７】
2020046558.tif 000019
【０１３１】
Ｗ’（０）とＶ’（０）との差分は、ΔＷ２とΔＶ２とが以下の（２７）式の関係であれば０となるが、攻撃者はｘ１、ｘ’１を知ることはできないため、Ｗ’（０）とＶ’（０）との差分が０となるΔＷ２とΔＶ２とを設定することはできない。このため、Ｗ’（０）とＶ’（０）とは一致しない。従って、復元装置１４は、データサーバ１６から偽の分散値が出力されたことを検証することができる。
【０１３２】
【数１８】
2020046558.tif 000020
【０１３３】
［第５実施形態］
開示の技術の第５実施形態を説明する。第３及び第４実施形態では、分散値の検証のためにＭＡＣ等の秘密分散とは異なる技術を用いずに、検証用の分散値を用いることによって、復元した秘密情報の正当性を検証する手法を説明した。この手法は、ＭＡＣ等を用いずに同じ形式の分散値を用いるため簡易であり、かつビット長等の形式を同じにすることができる（ＭＡＣはビット長が規定されている）。本実施形態では、第３及び第４実施形態と同様の特徴を持つ復号結果の検証法を暗号技術に適用した形態例を説明する。
【０１３４】
まず、図１２を参照して、本実施形態に係る通信システム４０の構成を説明する。図１２に示すように、通信システム４０は、送信装置４２及び受信装置４４を含む。送信装置４２及び受信装置４４は、ネットワークＮに接続され、互いに通信可能とされる。また、本実施形態では、送信装置４２及び受信装置４４は、同一の秘密鍵を記憶している。
【０１３５】
送信装置４２は、秘密情報を送信する送信者によって操作される装置であり、送信装置４２の例としては、パーソナルコンピュータ等の情報処理装置が挙げられる。受信装置４４は、秘密情報を受信する受信者によって操作される装置であり、受信装置４４の例としては、パーソナルコンピュータ等の情報処理装置が挙げられる。
【０１３６】
次に、図１３を参照して、本実施形態に係る送信装置４２のハードウェア構成を説明する。図１３に示すように、送信装置４２は、ＣＰＵ５０、一時記憶領域としてのメモリ５１、不揮発性の記憶部５２を含む。また、送信装置４２は、液晶ディスプレイ等の表示装置５３、キーボード等の入力装置５４、及びネットワークＮに接続されるネットワークＩ／Ｆ５５を含む。ＣＰＵ５０、メモリ５１、記憶部５２、表示装置５３、入力装置５４、及びネットワークＩ／Ｆ５５は、バス５６に接続される。
【０１３７】
記憶部５２は、ＨＤＤ、ＳＳＤ、及びフラッシュメモリ等によって実現される。記憶媒体としての記憶部５２には、送信プログラム５８が記憶される。ＣＰＵ５０は、記憶部５２から送信プログラム５８を読み出してからメモリ５１に展開し、展開した送信プログラム５８を実行する。ＣＰＵ５０が送信プログラム５８を実行することで、開示の技術の生成部及び送信部として動作する。
【０１３８】
次に、図１４を参照して、本実施形態に係る受信装置４４のハードウェア構成を説明する。図１４に示すように、受信装置４４は、ＣＰＵ６０、一時記憶領域としてのメモリ６１、不揮発性の記憶部６２を含む。また、受信装置４４は、液晶ディスプレイ等の表示装置６３、キーボード等の入力装置６４、及びネットワークＮに接続されるネットワークＩ／Ｆ６５を含む。ＣＰＵ６０、メモリ６１、記憶部６２、表示装置６３、入力装置６４、及びネットワークＩ／Ｆ６５は、バス６６に接続される。
【０１３９】
記憶部６２は、ＨＤＤ、ＳＳＤ、及びフラッシュメモリ等によって実現される。記憶媒体としての記憶部６２には、受信プログラム６８が記憶される。ＣＰＵ６０は、記憶部６２から受信プログラム６８を読み出してからメモリ６１に展開し、展開した受信プログラム６８を実行する。ＣＰＵ７０が受信プログラム６８を実行することで、開示の技術の受信部及び検証部として動作する。
【０１４０】
次に、図１５及び図１６を参照して、本実施形態に係る通信システム４０の作用を説明する。まず、図１５を参照して、秘密情報を送信する送信処理を説明する。送信装置４２のＣＰＵ５０が送信プログラム５８を実行することで、図１５に示す送信処理を実行する。
【０１４１】
図１５のステップＳ１００で、ＣＰＵ５０は、秘密鍵を用いて、第１の乱数ａ１及び第２の乱数α１を生成する。ステップＳ１０２で、ＣＰＵ５０は、秘密情報ａに対して、ステップＳ１００で生成した第１の乱数ａ１及び第２の乱数α１を作用させて第１の送信データを生成する。具体的には、ＣＰＵ５０は、秘密情報ａに第１の乱数ａ１を加算して得られた結果に、第２の乱数α１を乗算することによって暗号化した第１の送信データ（α１（ａ＋ａ１））を生成する。ステップＳ１０４で、ＣＰＵ５０は、ステップＳ１０２で生成した第１の送信データを受信装置４４に送信する。
【０１４２】
ステップＳ１０６で、ＣＰＵ５０は、秘密鍵を用いて、第３の乱数ａ２及び第４の乱数α２を生成する。ステップＳ１０８で、ＣＰＵ５０は、秘密情報ａに対して、ステップＳ１０２における第１の乱数ａ１に代えた第３の乱数ａ２及び第２の乱数α１に代えた第４の乱数α２を同様に作用させて第２の送信データを生成する。具体的には、ＣＰＵ５０は、秘密情報ａに第３の乱数ａ２を加算して得られた結果に、第４の乱数α２を乗算することによって暗号化した第２の送信データ（α２（ａ＋ａ２））を生成する。ステップＳ１１０で、ＣＰＵ５０は、ステップＳ１０８で生成した第２の送信データを、第１の送信データの送信先と同一の受信装置４４に送信する。ステップＳ１１０の処理が終了すると、本送信処理が終了する。
【０１４３】
次に、図１６を参照して、図１５に示す送信処理によって送信された情報を受信する受信処理を説明する。受信装置４４のＣＰＵ６０が受信プログラム６８を実行することで、図１６に示す受信処理を実行する。
【０１４４】
図１６のステップＳ１２０で、ＣＰＵ６０は、送信処理のステップＳ１０４で送信装置４２から送信された第１の送信データを受信する。ステップＳ１２２で、ＣＰＵ６０は、送信装置４２が記憶している秘密鍵と同一の秘密鍵を用いて、第１の乱数ａ１及び第２の乱数α１を生成する。
【０１４５】
ステップＳ１２４で、ＣＰＵ６０は、ステップＳ１２０で受信した第１の送信データから、ステップＳ１２２で生成した第２の乱数α１を排除する。具体的には、ＣＰＵ６０は、第１の送信データを第２の乱数α１で除算する。すなわち、第１の送信データから第２の乱数α１を排除した結果は、α１（ａ＋ａ１）／α１で表される。
【０１４６】
ステップＳ１２６で、ＣＰＵ６０は、送信処理のステップＳ１１０で送信装置４２から送信された第２の送信データを受信する。ステップＳ１２８で、ＣＰＵ６０は、送信装置４２が記憶している秘密鍵と同一の秘密鍵を用いて、第３の乱数ａ２及び第４の乱数α２を生成する。
【０１４７】
ステップＳ１３０で、ＣＰＵ６０は、ステップＳ１２６で受信した第２の送信データから、ステップＳ１２８で生成した第４の乱数α２を排除する。具体的には、ＣＰＵ６０は、第２の送信データを第４の乱数α２で除算する。すなわち、第２の送信データから第４の乱数α２を排除した結果は、α２（ａ＋ａ２）／α２で表される。
【０１４８】
ステップＳ１３２で、ＣＰＵ６０は、ステップＳ１２４による排除結果と、ステップＳ１３０による排除結果との差分を算出する。この差分は、以下に示す（２８）式で表される。
α１（ａ＋ａ１）／α１−α２（ａ＋ａ２）／α２・・・（２８）
【０１４９】
そして、ＣＰＵ６０は、算出した差分が、ステップＳ１２２で生成した第１の乱数ａ１と、ステップＳ１２８で生成した第３の乱数ａ２との差分（ａ１−ａ２）に等しいか否かを検証する。具体的には、ＣＰＵ６０は、（２８）式で算出した差分が、第１の乱数ａ１と第３の乱数ａ２との差分に等しい場合、受信したデータが正しいと判断し、秘密情報ａを復号する。一方、ＣＰＵ６０は、（２８）式で算出した差分が、第１の乱数ａ１と第３の乱数ａ２との差分とは異なる場合、受信したデータに改ざんや偽造等の不正があると判断し、例えば、エラーメッセージを表示装置６３に表示する。ステップＳ１３２の処理が終了すると、本受信処理が終了する。
【０１５０】
本実施形態において、攻撃者が、偽の第１の送信データとしてα１（ａ＋ａ１）＋Δ１を受信装置４４に受信させ、偽の第２の送信データとしてα２（ａ＋ａ２）＋Δ２を受信装置４４に受信させることができる。しかしながら、攻撃者はａ１、α１、ａ２、α２を知ることはできないため、（２８）式で表される差分とａ１−ａ２とが等しくなるような偽の送信データを生成することはできない。従って、受信装置４４は、受信したデータの正当性を検証することができる。
【０１５１】
なお、上記各実施形態でＣＰＵがソフトウェア（プログラム）を実行することにより実行した各種処理を、ＣＰＵ以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、ＦＰＧＡ（Field-Programmable Gate Array）等の製造後に回路構成を変更可能なＰＬＤ（Programmable Logic Device）、及びＡＳＩＣ（Application Specific Integrated Circuit）等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、各種処理を、これらの各種のプロセッサのうちの１つで実行してもよいし、同種又は異種の２つ以上のプロセッサの組み合わせ（例えば、複数のＦＰＧＡ、及びＣＰＵとＦＰＧＡとの組み合わせ等）で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【０１５２】
また、上記第１〜第４実施形態では、生成プログラム２８が記憶部２２に予め記憶（インストール）されている態様を説明したが、これに限定されない。生成プログラム２８は、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）、及びＵＳＢ（Universal Serial Bus）メモリ等の記録媒体に記録された形態で提供されてもよい。また、生成プログラム２８は、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【０１５３】
また、上記第１〜第４実施形態では、復元プログラム３８が記憶部３２に予め記憶（インストール）されている態様を説明したが、これに限定されない。復元プログラム３８は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及びＵＳＢメモリ等の記録媒体に記録された形態で提供されてもよい。また、復元プログラム３８は、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【０１５４】
また、上記第５実施形態では、送信プログラム５８が記憶部５２に予め記憶（インストール）されている態様を説明したが、これに限定されない。送信プログラム５８は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及びＵＳＢメモリ等の記録媒体に記録された形態で提供されてもよい。また、送信プログラム５８は、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【０１５５】
また、上記第５実施形態では、受信プログラム６８が記憶部６２に予め記憶（インストール）されている態様を説明したが、これに限定されない。受信プログラム６８は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及びＵＳＢメモリ等の記録媒体に記録された形態で提供されてもよい。また、受信プログラム６８は、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【符号の説明】
【０１５６】
１０  秘密分散システム
１２  生成装置
１４  復元装置
１６  サーバ
２０、３０、５０、６０  ＣＰＵ
２１、３１、５１、６１  メモリ
２２、３２、５２、６２  記憶部
２８  生成プログラム
３８  復元プログラム
４０  通信システム
４２  送信装置
４４  受信装置
５８  送信プログラム
６８  受信プログラム
【図１】
2020046558.tif 000021
【図２】
2020046558.tif 000022
【図３】
2020046558.tif 000023
【図４】
2020046558.tif 000024
【図５】
2020046558.tif 000025
【図６】
2020046558.tif 000026
【図７】
2020046558.tif 000027
【図８】
2020046558.tif 000028
【図９】
2020046558.tif 000029
【図１０】
2020046558.tif 000030
【図１１】
2020046558.tif 000031
【図１２】
2020046558.tif 000032
【図１３】
2020046558.tif 000033
【図１４】
2020046558.tif 000034
【図１５】
2020046558.tif 000035
【図１６】
2020046558.tif 000036