(57)【要約】  元データの複数個の秘密分散値に対応する複数個の元データ断片を複数個の秘密計算装置に転送し、当該元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求を当該秘密計算装置のそれぞれに転送し、当該結果断片を転送する中継装置１２を設ける。中継装置１２は、元データ断片を転送するタイミングおよび送信要求を転送するタイミングを制御する。
2016056473.tif 000002
【特許請求の範囲】
【請求項１】
元データの複数個の秘密分散値に対応する複数個の元データ断片を複数個の秘密計算装置に転送する第１通信部と、
前記元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求を前記秘密計算装置のそれぞれに転送する第２通信部と、
前記結果断片を転送する第３通信部と、
前記元データ断片を転送するタイミングおよび前記送信要求を転送するタイミングを制御するトランザクション管理部と、
を有する中継装置。
【請求項２】
請求項１の中継装置であって、
前記元データ断片のそれぞれは、前記秘密計算装置のそれぞれで復号可能なように前記秘密分散値のそれぞれを暗号化して得られた暗号文であり、および／または、前記結果断片のそれぞれは、分析装置で復号可能なように前記秘密計算結果をそれぞれ暗号化して得られた暗号文である、中継装置。
【請求項３】
請求項１または２の中継装置であって、
前記トランザクション管理部は、前記元データ断片の何れかが前記秘密計算装置に正しく反映されなかった場合に、すべての前記秘密計算装置に対して前記元データ断片の取り消しを指示する、中継装置。
【請求項４】
請求項１から３の何れかの中継装置であって、
前記トランザクション管理部は、
前記元データ断片の転送が開始された場合に前記元データ断片の転送が完了するまで前記送信要求の転送を保留し、
前記送信要求の転送が開始された場合に前記結果断片の転送が完了するまで前記元データ断片の転送を保留する、中継装置。
【請求項５】
請求項１から４の何れかの中継装置であって、
前記第１通信部は、第２元データの複数個の秘密分散値に対応する複数個の第２元データ断片を前記秘密計算装置に転送し、
前記第２通信部は、前記第２元データ断片の何れかに対応する秘密計算結果に基づく第２結果断片の送信要求を前記秘密計算装置のそれぞれに転送し、
前記第３通信部は、前記第２結果断片を転送し、
前記トランザクション管理部は、前記元データ断片の転送が開始された場合に前記元データ断片の転送が完了するまで前記第２元データ断片の転送を保留する、中継装置。
【請求項６】
登録装置と中継装置と分析装置と複数個の秘密計算装置とを有し、
前記登録装置は、元データの複数個の秘密分散値に対応する複数個の元データ断片を前記中継装置に送信し、
前記中継装置は、前記元データ断片を前記秘密計算装置に転送し、
前記分析装置は、前記元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求を前記中継装置に送信し、
前記中継装置は、前記送信要求を前記秘密計算装置のそれぞれに転送し、
前記秘密計算装置のそれぞれは、前記送信要求に対する前記結果断片を前記中継装置に送信し、
前記中継装置は、前記結果断片を前記分析装置に転送し、
前記中継装置は、前記元データ断片を転送するタイミングおよび前記送信要求を転送するタイミングを制御する、秘密計算システム。
【請求項７】
請求項１から５の何れかの中継装置または請求項６の秘密計算システムが実行する方法。
【請求項８】
請求項１から５の何れかの中継装置としてコンピュータを機能させるためのプログラム。
【請求項９】
請求項１から５の何れかの中継装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号応用技術に関し、特に秘密計算技術に関する。
【背景技術】
【０００２】
従来の秘密計算技術（例えば、非特許文献１等参照）では、データ保有者が元データを秘密分散した複数個の断片を複数個の秘密計算装置に送信しておき、分析者からの分析要求に応じ、秘密計算装置が秘密計算によって秘匿化したまま処理を行い、分析者は複数個の秘密計算装置からの応答を用いて分析結果を得る。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】千田浩司、五十嵐大、宮田輝子、瀧口浩義、桐淵直人、「高機密データも安全に二次利用可能な『秘密計算技術』」、ＮＴＴ技術ジャーナル、２０１４年、ｐ．６７〜７０．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の秘密計算技術では、断片の送信や分析要求の送信の開始タイミングによっては、秘密計算装置の相互間で断片や分析要求が到達する順序に不整合が生じ、誤った分析結果が得られる可能性がある。【０００５】
本発明はこのような点に鑑みてなされたものであり、処理の開始タイミングにかかわらず、正しい分析結果を得ることができる技術を提供する。
【課題を解決するための手段】
【０００６】
元データの複数個の秘密分散値に対応する複数個の元データ断片を複数個の秘密計算装置に転送し、当該元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求を当該秘密計算装置のそれぞれに転送し、当該結果断片を転送する中継装置を設ける。中継装置は、元データ断片を転送するタイミングおよび送信要求を転送するタイミングを制御する。
【発明の効果】
【０００７】
本発明では、中継装置が元データ断片および送信要求を転送するタイミングを制御するため、処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態の秘密計算システムの機能構成を例示したブロック図である。
【図２】図２Ａは実施形態の登録装置の機能構成を例示したブロック図であり、図２Ｂは実施形態の分析装置の機能構成を例示したブロック図である。
【図３】図３は実施形態の中継装置の機能構成を例示したブロック図である。
【図４】図４は実施形態の秘密計算装置を例示したブロック図である。
【図５】図５は実施形態の登録装置での登録処理を説明するためのフロー図である。
【図６】図６は実施形態の中継装置での登録処理を説明するためのフロー図である。
【図７】図７は実施形態の秘密計算装置での登録処理を説明するためのフロー図である。
【図８】図８Ａは実施形態の分析装置での分析処理を説明するためのフロー図であり、図８Ｂは実施形態の中継装置での分析処理を説明するためのフロー図であり、図８Ｃは実施形態の秘密計算装置での分析処理を説明するためのフロー図である。
【図９】図９は第３実施形態の登録処理（正常時）の具体例を説明するためのシーケンス図である。
【図１０】図１０は第３実施形態の登録処理（正常時）の具体例を説明するためのシーケンス図である。
【図１１】図１１は第３実施形態の登録処理（異常時）の具体例（Ｎ＝２）を説明するためのシーケンス図である。
【図１２】図１２は第３実施形態の登録処理（異常時）の具体例（Ｎ＝２）を説明するためのシーケンス図である。
【発明を実施するための形態】
【０００９】
実施形態の説明に先立ち、本発明の各実施形態で利用する基本的な技術概念を説明する。
［秘密分散技術］
秘密分散とは、データを複数の分散値（秘密分散値）に変換し、一定個数以上の秘密分散値を用いれば元のデータを復元でき、一定個数未満の秘密分散値からは元のデータを一切復元できなくする技術である。秘密分散の一種である(k,n)-秘密分散は、入力された平文をn個に分割した秘密分散値をn個の計算主体に分散しておき、任意のk個の秘密分散値が揃えば平文を復元でき、k個未満の秘密分散値からは平文に関する一切の情報を得られないような秘密分散である。このとき、n,kは1以上の整数(ただし、n,kが２以上の整数のとき秘密分散として機能する)であり、n≧kである。(k,n)-秘密分散の代表的な例は、「A.Shamir, “How to share a secret”, Communications of the ACM, Volume 22 Issue 11, pp. 612-613, 1979.（参考文献１）」に記載されている、Shamir秘密分散である。各実施形態で利用する秘密分散は、後述の秘密計算が利用可能な方法であればどのようなものであってもよい。
【００１０】
［秘密計算技術］
秘密計算は、複数の計算主体に計算対象のデータ（元データ）を秘密分散して保存しておき、元データを復元することなく他の計算主体と協力して元データの関数値の秘密分散値を計算する技術である。秘密計算では要素技術として秘密分散を利用する。
【００１１】
各実施形態で利用する秘密計算は、所望のデータ処理に必要な各種演算が特定の秘密分散方法による秘密分散値に対して可能なものを適宜利用すればよい。秘密分散値に対して加算や乗算等の基本演算を行う秘密計算技術は、例えば、「千田浩司、濱田浩気、五十嵐大、高橋克己、“軽量検証可能３パーティ秘匿関数計算の再考”、コンピュータセキュリティシンポジウム2010、2010年（参考文献２）」に記載されている。データ列の秘密分散値から情報を秘匿したまま検索を行う秘密マッチング技術は、例えば、「千田浩司、寺田雅之、山口高康、五十嵐大、濱田浩気、高橋克巳、“統計的開示制御を考慮したセキュアマッチングプロトコル”、情報処理学会研究報告、2011-CSEC-52(12)、2011年（参考文献３）」に記載されている。データ列の秘密分散値を秘匿したまま整列する秘密ソート技術は、例えば、「濱田浩気、五十嵐大、千田浩司、高橋克巳、“秘匿関数計算上の線形時間ソート”、コンピュータセキュリティシンポジウム2011、2011年（参考文献４）」に記載されている。
【００１２】
以下、各実施形態を説明する。
［第１実施形態］
本形態では、元データの複数個の秘密分散値に対応する複数個の元データ断片を複数個の秘密計算装置に転送し、当該元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求（分析要求）を当該秘密計算装置のそれぞれに転送し、当該結果断片を転送する中継装置を設ける。中継装置は、元データ断片を転送するタイミングおよび分析要求を転送するタイミングを制御する。これにより、処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。
【００１３】
例えば、中継装置は、元データ断片の転送が開始された場合に、元データ断片の転送が完了するまで分析要求の転送を保留し、分析要求の転送が開始された場合には、結果断片の転送が完了するまで元データ断片の転送を保留する。これにより、元データ断片の登録処理が開始されたタイミングおよび分析要求が開始されたタイミングにかかわらず、すべての元データ断片の転送が完了した後に分析要求の転送が開始されるか、または、分析要求に対するすべての結果断片の転送が完了した後に元データ断片の転送が開始される。その結果、秘密計算装置の相互間で元データ断片や分析要求が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。
【００１４】
また中継装置は、例えば、さらに第２元データの複数個の秘密分散値に対応する複数個の第２元データ断片を秘密計算装置に転送し、当該第２元データ断片の何れかに対応する秘密計算結果に基づく第２結果断片の送信要求を秘密計算装置のそれぞれに転送し、当該第２結果断片を転送する。中継装置は、上述の元データ断片の転送が開始された場合に上述の元データ断片の転送が完了するまで第２元データ断片の転送を保留する。これにより、上述の元データ断片の登録処理が開始されたタイミングおよび第２元データ断片の登録処理にかかわらず、すべての元データ断片の転送が完了した後に第２元データ断片の転送が開始される。その結果、秘密計算装置の相互間で元データ断片および第２元データ断片が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。
【００１５】
以下、本形態を詳細に説明する。
＜全体構成＞
図１に例示するように、本形態の秘密計算システム１は、登録装置１１と中継装置１２と複数個の秘密計算装置１３−１〜１３−Ｎと分析装置１４とを有する。ただし、Ｎは２以上の整数である。本形態の中継装置１２は、ネットワーク１５１を介して登録装置１１および分析装置１４と通信可能に構成されており、ネットワーク１５２を介して秘密計算装置１３−１〜１３−Ｎと通信可能に構成されている。秘密計算の方式によっては、複数の秘密計算装置１３−１〜１３−Ｎ相互間でネットワーク１５２を介した通信が可能であってもよい。また、ネットワーク１５１，１５２は、互いに同一のネットワークであってもよいし、異なるネットワークであってもよい。登録装置１１、中継装置１２、秘密計算装置１３−１〜１３−Ｎ、および分析装置１４は、例えば、ＣＰＵ（central processing unit）等のプロセッサ（ハードウェア・プロセッサ）やＲＡＭ（random-access memory）・ＲＯＭ（read-only memory）等のメモリや通信装置等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは１個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めＲＯＭ等に記録されていてもよい。また、ＣＰＵのようにプログラムが読み込まれることで機能構成を実現する電子回路（circuitry）ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、１個の装置を構成する電子回路が複数のＣＰＵを含んでいてもよい。
【００１６】
＜登録装置１１＞
図２Ａに例示するように、本形態の登録装置１１は、制御部１１１とインタフェース部１１２と記憶部１１３と断片化部１１４と通信部１１５とを有し、断片化部１１４は秘密分散部１１４１を有する。登録装置１１は、制御部１１１の制御に基づいて各処理を実行する。
【００１７】
＜中継装置１２＞
図３に例示するように、本形態の中継装置１２は、通信部１２１１，１２１２，１２２１，１２２２とトランザクション管理部１２３と制御部１２４とを有し、トランザクション管理部１２３は、記憶部１２３１，１２３４と登録管理部１２３２と分析管理部１２３３とを有する。中継装置１２は、制御部１２４の制御に基づいて各処理を実行する。
【００１８】
＜秘密計算装置１３−ｉ＞
図４に例示するように、本形態の各秘密計算装置１３−ｉ（ただしｉ＝１，…，Ｎ）は、通信部１３１−ｉ，１３２−ｉと反映管理部１３４−ｉと記憶部１３５−ｉと演算部１３６−ｉと制御部１３７−ｉとを有し、演算部１３６−ｉは秘密計算部１３６１−ｉを有する。各秘密計算装置１３−ｉは、制御部１３７−ｉの制御に基づいて各処理を実行する。
【００１９】
＜分析装置１４＞
図２Ｂに例示するように、本形態の分析装置１４は、制御部１４１とインタフェース部１４２と分析部１４４と通信部１４５とを有し、分析部１４４は復元部１４４１を有する。分析装置１４は、制御部１４１の制御に基づいて各処理を実行する。
【００２０】
＜登録処理＞
登録処理では、登録装置１１が計算対象となる元データを秘密分散して秘密計算装置１３−１〜１３−Ｎに保存する。登録処理は何回実行されてもよいし、それぞれの登録処理を開始するタイミングにも制約はない。以下、図５〜図７のフロー図を参照しつつ、本形態の登録処理を説明する。
【００２１】
まず、元データが登録装置１１（図２Ａ）のインタフェース部１１２に入力され、記憶部１１３に格納される。元データは、秘密計算の対象となる演算の一部または全部の被演算子であり、例えば、数値や文字を含むテキストデータ（CSV(comma-separated values)ファイル等）、画像データ、音響データなどである（図５：ステップＳ１１０１）。次に、断片化部１１４の秘密分散部１１４１が、記憶部１１３から読み込んだ元データを秘密分散してＮ個の秘密分散値を得、それらを元データ断片α１，・・・，αＮ（複数個の元データ断片）として出力する（ステップＳ１１０２）。元データ断片α１，・・・，αＮは通信部１１５に送られ、通信部１１５は、元データ断片α１，・・・，αＮをネットワーク１５１経由で中継装置１２に送信する（ステップＳ１１０４）。
【００２２】
元データ断片α１，・・・，αＮは、中継装置１２（図３）の通信部１２１１で受信され、トランザクション管理部１２３の記憶部１２３１に格納される（図６：ステップＳ１２０１）。登録管理部１２３２は、分析管理部１２３３と情報をやり取りし、何れかの処理で「待ち状態」となっているかを判定する。なお「待ち状態」とは、処理の保留が命じられた状態を意味する。この「待ち状態」は、登録処理または後述の分析処理で発生する。初期状態では何れの処理も「待ち状態」ではない（ステップＳ１２０３）。ここで、「待ち状態」であると判定された場合には、それが解消するまで処理を保留し、ステップＳ１２０３の判定を繰り返す。これにより、元データ断片α１，・・・，αＮを転送するタイミングを制御する。一方、「待ち状態」ではないと判定された場合には、登録管理部１２３２が待ち設定を行う。これにより新たな「待ち状態」が発生し、以降の他の処理を保留状態する（ステップＳ１２０４）。次に登録管理部１２３２は、記憶部１２３１から元データ断片α１，・・・，αＮを読み込み、通信部１２２１に送る。通信部１２２１（第１通信部）は、元データ断片α１，・・・，αＮ（元データの複数個の秘密分散値に対応する複数個の元データ断片）を、ネットワーク１５２経由で複数個の秘密計算装置１３−１，・・・，１３−Ｎに転送（送信）する。これによって、複数個の元データ断片α１，・・・，αＮが複数個の秘密計算装置１３−１，・・・，１３−Ｎに分散される。本形態の通信部１２２１は、各元データ断片αｉを各秘密計算装置１３−ｉに転送する（ステップＳ１２０５）。中継装置１２から転送された元データ断片αｉは、秘密計算装置１３−ｉ（図４）の通信部１３１−ｉで受信され（図７：ステップＳ１３０１−ｉ）、反映管理部１３４−ｉに送られる。反映管理部１３４−ｉは、元データ断片αｉを記憶部１３５−ｉに上書き保存する（ステップＳ１３０７−ｉ）。
【００２３】
中継装置１２（図３）の通信部１２２１は、すべての元データ断片α１，・・・，αＮが秘密計算装置１３−１，・・・，１３−Ｎに転送済みであるかを判定する（図６：ステップＳ１２０８）。ここで、すべての元データ断片α１，・・・，αＮが転送済みでない場合には、ステップＳ１２０５に戻る。一方、すべての元データ断片α１，・・・，αＮが転送済みである場合には、登録管理部１２３２は登録通知を通信部１２１１に送り、通信部１２１１は登録通知をネットワーク１５１経由で登録装置１１に送信する（ステップＳ１２１４）。登録通知は登録装置１１（図２Ａ）の通信部１１５で受信される（図５：ステップＳ１１０５）。その後、中継装置１２（図３）の登録管理部１２３２は、ステップＳ１２０４での待ち設定を解除する。これにより、テップＳ１２０４で発生した「待ち状態」が解除される（図６：ステップＳ１２１５）。
【００２４】
＜分析処理＞
分析処理では、分析装置１４が、結果断片の送信要求を行い、送られた複数個の結果断片から分析結果を復元する。各結果断片は、秘密計算装置１３−１〜１３−Ｎに保存された元データ断片α１，・・・，αＮに対する秘密計算結果に基づくものである。分析処理は何回実行されてもよいし、それぞれの分析処理を開始するタイミングにも制約はない。以下、図８Ａ〜図８Ｃのフロー図を参照しつつ、本形態の分析処理を説明する。
【００２５】
まず、分析装置１４（図２Ｂ）の通信部１４５が、分析要求（結果断片の送信要求（情報））を、ネットワーク１５１経由で中継装置１２に送信する（図８Ａ：ステップＳ１１１１）。分析要求は、中継装置１２（図３）の通信部１２１２で受信され、記憶部１２３４に格納される（図８Ｂ：ステップＳ１２３１）。分析管理部１２３３は、登録管理部１２３２と情報をやり取りし、前述の登録処理の「待ち状態」となっているか（ステップＳ１２０４〜Ｓ１２１５の状態にあるか）を判定する（ステップＳ１２３２）。ここで、登録処理の「待ち状態」であると判定された場合にはそれが解消するまで処理を保留し、ステップＳ１２３２の判定を繰り返す。これにより、分析要求（結果断片の送信要求）を転送するタイミングを制御する。一方、登録処理の「待ち状態」ではないと判定された場合には、分析管理部１２３３が待ち設定を行う。なお、分析処理での「待ち状態」（ステップＳ１２３３〜Ｓ１２３７の状態）であるが、登録処理の「待ち状態」でない場合にも「登録処理の「待ち状態」ではない」と判定する。この待ち設定により新たな「待ち状態」が発生し、以降の登録処理を保留状態する（ステップＳ１２３３）。次に、分析管理部１２３３は、記憶部１２３１から分析要求を読み込み、通信部１２２２に送る。通信部１２２２（第２通信部）は、分析要求（元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求）を、ネットワーク１５２経由でＮ個の秘密計算装置１３−１，・・・，１３−Ｎに転送（送信）する（ステップＳ１２３４）。
【００２６】
分析要求が転送された秘密計算装置１３−ｉ（図４）は、通信部１３２−ｉで分析要求を受信して演算部１３６−ｉに送る（図８Ｃ：ステップＳ１３２１−ｉ）。演算部１３６−ｉの秘密計算部１３６１−ｉは、記憶部１３５−ｉから元データ断片αｉを読み込み、元データ断片αｉに対する秘密計算を行い、その秘密計算結果を結果断片βｉとして出力する。この秘密計算は、データ断片αｉのみを用いて行われてもよいし、さらに元データ断片αｉ以外の値を用いて行われてもよいし、その他の秘密計算装置１３−ｍ（ただし、ｍ≠ｉ、ｍ∈｛１，・・・，Ｎ｝）と協力して行われてもよい（ステップＳ１３２３−ｉ）。結果断片βｉは通信部１３２−ｉに送られ、通信部１３２−ｉは結果断片βｉをネットワーク１５２経由で中継装置１２に送信する（ステップＳ１３２５−ｉ）。
【００２７】
各秘密計算装置１３−φ（ｊ）（ただし、ｊ∈１，・・・，Ｋ）から送信された結果断片βφ（ｊ）は、中継装置１２（図３）の通信部１２２２で受信されて分析管理部１２３３に送られる。ただし、｛φ（１），・・・，φ（Ｋ）｝⊆｛１，・・・，Ｎ｝であり、Ｋは２以上Ｎ以下の整数（Ｋ≦Ｎ）である。Ｋの大きさは使用された秘密分散の方式に依存し、Ｋ個の秘密分散値（結果断片）が揃えば結果を復元できる。分析管理部１２３３は各結果断片βφ（ｊ）を通信部１２１２に送り、通信部１２１２（第３通信部）は、各結果断片βφ（ｊ）（元データ断片の何れかに対応する秘密計算結果に基づく結果断片）を、ネットワーク１５１経由で分析装置１４に転送（送信）する（図８Ｂ：ステップＳ１２３５）。分析管理部１２３３は、すべての結果断片βφ（ｊ）（ただし、ｊ∈１，・・・，Ｋ）が分析装置１４に転送済みであるか、を判定する（ステップＳ１２３６）。ここで、何れかの結果断片βφ（ｊ）が転送済みでない場合には、ステップＳ１２３５に戻る。一方、すべての結果断片βφ（１），・・・，βφ（Ｋ）が転送済みである場合には、分析管理部１２３３は、ステップＳ１２３３での待ち設定を解除する。これにより、ステップＳ１２３３で発生した「待ち状態」が解除される（ステップＳ１２３７）。
【００２８】
分析装置１４（図２Ｂ）の通信部１４５は、中継装置１２から転送された結果断片βφ（ｊ）を受信し、分析部１４４に送る（図８Ａ：ステップＳ１１１２）。分析部１４４の復元部１４４１は送られた結果断片βφ（１），・・・，βφ（Ｋ）を用い、秘密分散の復元処理によって分析結果を復元して出力する。出力された復元結果はインタフェース部１４２から出力される（ステップＳ１１１４）。
【００２９】
＜本形態の特徴＞
本形態では、登録装置１１および分析装置１４と秘密計算装置１３−１〜１３−Ｎとの間の通信経路に中継装置１２を配置し、トランザクション管理を行う。これにより、各処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。すなわち、中継装置１２は、登録処理時に、登録装置１１から送られた元データ断片α１，・・・，αＮを秘密計算装置１３−１〜１３−Ｎに転送し、分析処理時に、分析装置１４から送られた分析要求を秘密計算装置１３−φ（１），・・・，１３−φ（Ｋ）に転送し、それらの転送のタイミングを制御する。例えば、中継装置１２は、元データ断片の転送が開始された場合に元データ断片の転送が完了するまで分析要求の転送を保留し（図６：ステップＳ１２０４，Ｓ１２１５、図８Ｂ：ステップＳ１２３２）、分析要求の転送が開始された場合には結果断片の転送が完了するまで元データ断片の転送を保留する（図８Ｂ：ステップＳ１２３３，Ｓ１２３７、ステップＳ１２０３）。これにより、秘密計算装置１３−１〜１３−Ｎの相互間で元データ断片や分析要求が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。また、中継装置１２は、複数の登録処理が実行された場合でも、それらの転送のタイミングを制御する。例えば、中継装置１２は、上述の元データ断片α１，・・・，αＮの転送が開始された場合に、それらの転送が完了するまで別の第２元データ断片α１’，・・・，αＮ’の転送を保留する（図６：ステップＳ１２０３，Ｓ１２０４，Ｓ１２１５）。これにより、秘密計算装置１３−１〜１３−Ｎの相互間で、元データ断片α１，・・・，αＮおよび第２元データ断片α１’，・・・，αＮ’が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。なお、複数回の分析処理が開始された場合であっても、それらの分析処理間のタイミングの制御は行われない（図８Ｂ：ステップＳ１２３２）。複数の分析処理の競合によって秘密計算装置１３−１〜１３−Ｎに格納されたデータに不整合が生じることはないからである。これにより、不要な待ち設定による処理の遅延を防止できる。
【００３０】
［第２実施形態］
中継装置は複数の元データ断片や結果断片を入手可能であり、脆弱な中継装置の場合、元データや分析結果が漏洩する可能性がある。この問題に対処するため、本形態では、登録装置と秘密計算装置との間の通信経路を暗号化する。すなわち、秘密計算装置のそれぞれで復号可能なように秘密分散値のそれぞれを暗号化して得られた暗号文を「元データ断片」とする（対処１）。これにより、元データの漏洩を防止できる。また、分析装置と秘密計算装置との間の通信経路を暗号化する。すなわち、分析装置で復号可能なように秘密計算結果をそれぞれ暗号化して得られた暗号文を「結果断片」とする（対処２）。これにより、分析結果の漏洩を防止できる。なお、暗号文の秘密分散値を「元データ断片」とするのではなく、秘密計算装置のそれぞれで復号可能なように秘密分散値のそれぞれを暗号化して得られた暗号文を「元データ断片」とする。前者の場合、暗号方式および秘密分散方式に特別な工夫がなされない限り、秘密計算装置が「元データ断片」を用いて秘密計算を行うことができない。本形態では、秘密計算装置のそれぞれで復号可能なように秘密分散値のそれぞれを暗号化して得られた暗号文を「元データ断片」とすることで、登録装置と秘密計算装置との間の通信経路を暗号化しつつ、秘密計算装置での秘密計算を可能にしている。対処１，２の両方がなされることが望ましいが、対処１，２の何れか一方のみがなされてもよい。以下では、対処１，２の両方がなされる例を説明する。以降、すでに説明した事項と共通する部分については、それまで用いた参照番号を流用して説明を省略する。
【００３１】
＜全体構成＞
図１に例示するように、本形態の秘密計算システム２は、第１実施形態の秘密計算システム１の登録装置１１および分析装置１４を登録装置２１および分析装置２４にそれぞれ置換したものであり、登録装置２１と中継装置１２と複数個の秘密計算装置２３−１〜２３−Ｎと分析装置２４とを有する。本形態の中継装置１２は、ネットワーク１５１を介して登録装置２１および分析装置２４と通信可能に構成されており、ネットワーク１５２を介して秘密計算装置２３−１〜２３−Ｎと通信可能に構成されている。秘密計算の方式によっては、複数の秘密計算装置２３−１〜２３−Ｎ相互間でネットワーク１５２を介した通信が可能であってもよい。登録装置２１、秘密計算装置２３−１〜２３−Ｎ、および分析装置２４は、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。
【００３２】
＜登録装置２１＞
図２Ａに例示するように、本形態の登録装置２１は、制御部１１１とインタフェース部１１２と記憶部１１３と断片化部２１４と通信部１１５とを有する。断片化部２１４は、秘密分散部１１４１と暗号化部２１４２と復号部２１４３を有する。登録装置２１は、制御部１１１の制御に基づいて各処理を実行する。
【００３３】
＜秘密計算装置２３−ｉ＞
図４に例示するように、本形態の各秘密計算装置２３−ｉ（ただしｉ＝１，…，Ｎ）は、通信部１３１−ｉ，１３２−ｉと反映管理部２３４−ｉと記憶部１３５−ｉと演算部２３６−ｉと制御部１３７−ｉとを有する。演算部１３６−ｉは、秘密計算部１３６１−ｉと復号部２３６３−ｉと暗号化部２３６４−ｉとを有する。各秘密計算装置２３−ｉは、制御部１３７−ｉの制御に基づいて各処理を実行する。
【００３４】
＜分析装置２４＞
図２Ｂに例示するように、本形態の分析装置２４は、制御部１４１とインタフェース部１４２と分析部２４４と通信部１４５とを有する。分析部２４４は、復元部１４４１と復号部２４４２と暗号化部２４４３とを有する。分析装置２４は、制御部１４１の制御に基づいて各処理を実行する。
【００３５】
＜登録処理＞
図５〜図７のフロー図を参照しつつ、本形態の登録処理を説明する。まず、登録装置２１（図２Ａ）が第１実施形態で説明したステップＳ１１０１およびＳ１１０２（図５）の処理を行う。Ｓ１１０２で得られたＮ個の秘密分散値ａ１，・・・，ａＮは暗号化部２１４２に送られる。暗号化部２１４２は、各秘密分散値ａｉ（ただしｉ＝１，…，Ｎ）を各秘密計算装置１３−ｉで復号可能なように暗号化し、各秘密分散値ａｉの暗号文Ｅｎｃ１（ａｉ）を元データ断片αｉとして出力する。この暗号化に使用する暗号化方式に限定はなく、公知の共通鍵暗号方式や公開鍵暗号方式やＩＤベース暗号方式などを用いることができる。例えば、共通鍵暗号方式を用いる場合、暗号化部２１４２と秘密計算装置２３−ｉとが共通鍵Ｋ１（ｉ）を共有し、暗号化部２１４２は、所定の共通鍵暗号方式に則り、共通鍵Ｋ１（ｉ）で秘密分散値ａｉを暗号化して暗号文αｉ＝Ｅｎｃ１（ａｉ）を得る。暗号文αｉは、例えば秘密分散値ａｉを含むリクエストの暗号文である（ステップＳ２１０３）。元データ断片α１，・・・，αＮ（複数個の元データ断片）は通信部１１５に送られ、通信部１１５は、元データ断片α１，・・・，αＮをネットワーク１５１経由で中継装置１２に送信する（ステップＳ１１０４）。
【００３６】
その後、第１実施形態で説明したように、中継装置１２がステップＳ１２０１〜Ｓ１２１５（図６）の処理を行う。中継装置１２から転送された元データ断片αｉは、秘密計算装置２３−ｉ（図３）の通信部１３１−ｉで受信され、演算部２３６−ｉの復号部２３６３−ｉに送られる。復号部２３６３−ｉは、ステップＳ２１０３（図５）の暗号化方式に則り、元データ断片αｉ＝Ｅｎｃ１（ａｉ）を復号して秘密分散値ａｉを得る。例えば、ステップＳ２１０３の暗号化方式が共通鍵暗号方式である場合、復号部２３６３−ｉは、共通鍵Ｋ１（ｉ）を用いて元データ断片αｉ＝Ｅｎｃ１（ａｉ）を復号して秘密分散値ａｉを得る（図７：ステップＳ２３０６−ｉ）。秘密分散値ａｉは反映管理部２３４−ｉに送られ、反映管理部２３４−ｉは、秘密分散値ａｉを記憶部１３５−ｉに上書き保存する（ステップＳ２３０７−ｉ）。反映管理部２３４−ｉは、登録通知（レスポンス）を生成して演算部２３６−ｉの暗号化部２３６４−ｉに送る。暗号化部２３６４−ｉは登録通知を登録装置２１で復号可能なように暗号化し、暗号化された登録通知を出力する。この暗号化に使用する方式に限定はなく、公知の共通鍵暗号方式や公開鍵暗号方式やＩＤベース暗号方式などを用いることができる。例えば、共通鍵暗号方式を用いる場合、暗号化部２３６４−ｉと分析装置２４とが共通鍵Ｋ２（ｉ）を共有し、暗号化部２３６４−ｉは、所定の共通鍵暗号方式に則り、共通鍵Ｋ２（ｉ）で秘登録通知を暗号化して暗号化された登録通知を得る。暗号化された登録通知は、通信部１３２−ｉから中継装置１２に送信される（ステップＳ２３０８−ｉ）。暗号化された登録通知は、中継装置１２の通信部１２２２で受信され、通信部１２１から登録装置２１に送信（転送）される（図６：ステップＳ２２１４）。登録通知は登録装置２１（図２Ａ）の通信部１１５で受信され（図５：ステップＳ２１０５）、断片化部２１４の復号部２１４３に送られる。復号部２１４３は、暗号化された登録通知を復号して登録通知を得る（ステップＳ２１０６）。
【００３７】
＜分析処理＞
図８Ａ〜図８Ｃのフロー図を参照しつつ、本形態の分析処理を説明する。
まず、分析装置２４（図２Ｂ）の分析部２４４の暗号化部２４４３が、分析要求を各秘密計算装置２３−ｉで復号可能なように暗号化し、暗号化された分析要求を生成する（ステップＳ２１１０）。暗号化された分析要求は、通信部１４５から中継装置１２に送信される（ステップＳ２１１１）。中継装置１２はステップＳ１２３１〜Ｓ１２３４（図８Ｂ）の処理を行う。ただし、本形態では「分析要求」に代えて「暗号化された分析要求」が用いられる。秘密計算装置２３−ｉ（図４）は、通信部１３２−ｉで暗号化された分析要求を受信して演算部２３６−ｉに送る（図８Ｃ：ステップＳ２３２１−ｉ）。演算部２３６−ｉの復号部２３６３−ｉは、暗号化された分析要求を復号して分析要求を復元し（ステップＳ２３２２−ｉ）、それに従って記憶部１３５−ｉから秘密分散値ａｉを読み込んで秘密計算部１３６１−ｉに送る。秘密計算部１３６１−ｉは、データ断片αｉに代えて秘密分散値ａｉに対し、第１実施形態で説明したように秘密計算を行い、その秘密計算結果ｂｉを出力する（ステップＳ１３２３−ｉ）。秘密計算結果ｂｉは暗号化部２３６４−ｉに送られる。暗号化部２３６４−ｉは、秘密計算結果ｂｉを分析装置２４で復号可能なように暗号化し、秘密計算結果ｂｉの暗号文Ｅｎｃ２（ｂｉ）を結果断片βｉ（元データ断片の何れかの秘密計算結果に基づく結果断片）として出力する。この暗号化に使用する方式に限定はなく、公知の共通鍵暗号方式や公開鍵暗号方式やＩＤベース暗号方式などを用いることができる。例えば、共通鍵暗号方式を用いる場合、暗号化部２３６４−ｉと分析装置２４とが共通鍵Ｋ２（ｉ）を共有し、暗号化部２３６４−ｉは、所定の共通鍵暗号方式に則り、共通鍵Ｋ２（ｉ）で秘密計算結果ｂｉを暗号化して暗号文βｉ＝Ｅｎｃ２（ｂｉ）を得る（ステップＳ２３２４−ｉ）。結果断片βｉ＝Ｅｎｃ２（ｂｉ）は通信部１３２−ｉに送られ、通信部１３２−ｉは結果断片βｉをネットワーク１５２経由で中継装置１２に送信する（ステップＳ１３２５−ｉ）。
【００３８】
各秘密計算装置２３−φ（ｊ）（ただし、ｊ∈１，・・・，Ｋ）から送信された結果断片βφ（ｊ）＝Ｅｎｃ２（ｂφ（ｊ））は、中継装置１２（図３）の通信部１２２２で受信されて分析管理部１２３３に送られる。その後、第１実施形態で説明したように、中継装置１２がステップＳ１２３５〜Ｓ１２３７（図８Ｂ）の処理を行う。
【００３９】
分析装置２４（図２Ｂ）の通信部１４５は、中継装置１２から転送された結果断片βφ（ｊ）＝Ｅｎｃ２（ｂφ（ｊ））を受信し、分析部２４４に送る（図８Ａ：ステップＳ１１１２）。分析部２４４の復号部２４４２は、ステップＳ２３２４−ｉ（図８Ｃ）の暗号化方式に則り、結果断片βφ（ｊ）＝Ｅｎｃ２（ｂφ（ｊ））を復号して秘密計算結果ｂφ（ｊ）を得る。例えば、ステップＳ２３２４−ｉの暗号化方式が共通鍵暗号方式である場合、復号部２４４２は、共通鍵Ｋ２（φ（ｊ））を用いて結果断片βφ（ｊ）＝Ｅｎｃ２（ｂφ（ｊ））を復号して秘密計算結果ｂφ（ｊ）を得る（ステップＳ２１１３）。秘密計算結果ｂφ（ｊ）は復元部１４４１に送られ、第１実施形態で説明したステップＳ１１１４の処理が実行される。
【００４０】
＜本形態の特徴＞
本形態でも、登録装置２１および分析装置２４と秘密計算装置２３−１〜２３−Ｎとの間の通信経路に中継装置１２を配置し、トランザクション管理を行う。これにより、各処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。さらに、本形態では、各元データ断片が各秘密分散値を暗号化して得られた暗号文であり、および／または、各結果断片が秘密計算結果をそれぞれ暗号化して得られた暗号文である。これにより、中継装置１２が脆弱であったとしても、元データや分析結果が第三者に漏洩することを抑制できる。なお、本形態の登録処理では、暗号文である元データ断片を復号してから各秘密計算装置２３−ｉに保存した。しかしながら、登録処理において、暗号文である元データ断片を受け取った各秘密計算装置２３−ｉがそれをそのまま保存してもよい。この場合、分析処理時に秘密計算装置が元データ断片を復号して秘密分散値を生成し、秘密計算を行えばよい。
【００４１】
［第３実施形態］
元データ断片を秘密計算装置に転送後、秘密計算装置の不具合等によって一部の元データ断片が秘密計算装置に正しく反映されなかった場合、秘密計算装置の相互間の元データ断片に不整合が生じ、誤った分析結果が得られる可能性がある。例えば、ある秘密計算装置ｘでは、最新の値「５」の秘密分散値に対応する元データ断片αｘ（５）が格納されたが、他の秘密計算装置ｙでは、最新の値「５」の秘密分散値に対応する元データ断片αｙ（５）の格納に失敗し、過去の値「３」の秘密分散値に対応する元データ断片αｙ（３）が残存していたとする。このような元データ断片の不整合が生じた場合、それらに対応する結果断片にも不整合が生じ、分析結果が誤ってしまう。
【００４２】
そこで本形態の中継装置では、登録処理において、２相コミットを用いたトランザクション制御を行う。この登録処理では、まず、中継装置が元データ断片を各秘密計算装置に転送する。この登録処理の対象となるすべての元データ断片が秘密計算装置に正しく反映された場合、各秘密計算装置への元データ断片の登録を完了する。一方、転送した元データ断片の何れかが秘密計算装置に正しく反映されなかった場合、中継装置はこの登録処理で元データ断片を保存したすべての秘密計算装置に対してその取り消しを指示する。これにより、システム停止、故障データの削除、元データ断片の再登録依頼等の処理を手動で行うことなく、秘密計算装置の相互間での元データ断片の不整合をなくし、誤った分析結果が得られることを防止する。本形態では、第１実施形態に２相コミットを用いたトランザクション制御を適用した例を説明する。
【００４３】
＜全体構成＞
図１に例示するように、本形態の秘密計算システム３は、第１実施形態の中継装置１２および秘密計算装置１３−１〜１３−Ｎを中継装置３２および秘密計算装置３３−１〜３３−Ｎにそれぞれ置換したものであり、登録装置１１と中継装置３２と複数個の秘密計算装置３３−１〜３３−Ｎと分析装置１４とを有する。本形態の中継装置３２は、ネットワーク１５１を介して登録装置１１および分析装置１４と通信可能に構成されており、ネットワーク１５２を介して秘密計算装置３３−１〜３３−Ｎと通信可能に構成されている。中継装置３２および秘密計算装置３３−１〜３３−Ｎは、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。
【００４４】
＜中継装置３２＞
図３に例示するように、本形態の中継装置３２は、通信部３２１１，１２１２，３２２１，１２２２とトランザクション管理部３２３と制御部１２４とを有し、トランザクション管理部３２３は、記憶部１２３１，１２３４とログ記憶部３２３５と登録管理部３２３２と分析管理部１２３３とを有する。中継装置３２は、制御部１２４の制御に基づいて各処理を実行する。記憶部１２３１，１２３４は、例えば半導体メモリ等のメモリ上で実現される記憶領域である。
【００４５】
＜秘密計算装置３３−ｉ＞
図４に例示するように、本形態の各秘密計算装置３３−ｉ（ただしｉ＝１，…，Ｎ）は、通信部３３１−ｉ，１３２−ｉと反映管理部３３４−ｉと一時記憶部３３３−ｉと記憶部１３５−ｉと演算部１３６−ｉと制御部１３７−ｉとを有し、演算部１３６−ｉは秘密計算部１３６１−ｉを有する。各秘密計算装置３３−ｉは、制御部１３７−ｉの制御に基づいて各処理を実行する。
【００４６】
＜登録処理＞
以下、図５〜図７および図９〜図２１を参照しつつ、本形態の登録処理を説明する。
まず、登録装置１１が第１実施形態で説明したステップＳ１１０１〜Ｓ１１０４（図５，６，９，１１）の処理を行い、元データ断片α１，・・・，αＮを中継装置３２に送信する。
【００４７】
元データ断片α１，・・・，αＮは、中継装置３２（図３）の通信部１２１１で受信され、トランザクション管理部１２３の記憶部１２３１に格納される（図６，９，１１：ステップＳ１２０１）。このように元データ断片α１，・・・，αＮが受け付けられると、登録管理部３２３２が処理内容を表すログの作成を開始する。これ以降、作成されたログは登録管理部３２３２の一時メモリ（図示せず）に格納されていく（ステップＳ３２０２）。次に、第１実施形態で説明したステップＳ１２０３およびＳ１２０４の処理が行われた後、登録管理部３２３２は、記憶部１２３１から元データ断片α１，・・・，αＮを読み込み、通信部１２２１に送る。通信部１２２１は、元データ断片α１，・・・，αＮを、ネットワーク１５２経由で複数個の秘密計算装置３３−１，・・・，３３−Ｎに転送（送信）する。本形態の通信部１２２１は、各元データ断片αｉを各秘密計算装置３３−ｉに転送する（ステップＳ１２０５）。
【００４８】
中継装置３２から転送された元データ断片αｉは、秘密計算装置３３−ｉ（図４）の通信部１３１−ｉで受信され（図７，９，１１：ステップＳ１３０１−ｉ）、一時記憶部３３３−ｉに一時的に記憶される（ステップＳ３３０２−ｉ）。反映管理部３３４−ｉは、元データ断片αｉの一時記憶部３３３−ｉへの記憶（反映）が成功したか否かを判定する（ステップＳ３３０３−ｉ）。ここで、元データ断片αｉの一時記憶部３３３−ｉへの記憶が成功したと判定された場合、反映管理部３３４−ｉは反映が成功した旨の反映結果（「反映成功」を表す情報）を通信部３３１−ｉに送り、通信部３３１−ｉはこの反映結果（反映成功）をネットワーク１５２経由で中継装置３２に送信する（ステップＳ３３０４−ｉ）。一方、元データ断片αｉの一時記憶部３３３−ｉへの記憶が失敗したと判定された場合、反映管理部３３４−ｉは反映が失敗した旨の反映結果（「反映失敗」を表す情報）を通信部３３１−ｉに送り、通信部３３１−ｉはこの反映結果（反映失敗）をネットワーク１５２経由で中継装置３２に送信する（ステップＳ３３１１−ｉ）。
【００４９】
反映結果（反映成功または反映失敗）は、中継装置３２（図３）の通信部３２２１で受信され、登録管理部３２３２に送られる（図６：ステップＳ３２０６）。登録管理部３２３２は送られた反映結果が反映成功を表すか否かを判定する（ステップＳ３２０７）。
【００５０】
ここで、送られた反映結果が反映成功を表す（反映成功）と判定された場合、登録管理部３２３２は、すべての元データ断片α１，・・・，αＮが秘密計算装置３３−１，・・・，３３−Ｎに転送済みであるかを判定する（ステップＳ１２０８）。ここで、すべての元データ断片α１，・・・，αＮが転送済みでない場合には、ステップＳ１２０５に戻る。一方、すべての元データ断片α１，・・・，αＮが転送済みである場合には、登録管理部３２３２は、それまでに作成されたログ（少なくとも、中継装置３２が元データ断片α１，・・・，αＮを受け付けてからすべての秘密計算装置３３−１〜３３−Ｎに出力するまでのログ）をログ記憶部３２３５に保存する（図６，９：ステップＳ３２０９）。次に、登録管理部３２３２はコミット要求を通信部３２２１に送る。通信部３２２１は、ネットワーク１５２を介し、各秘密計算装置３３−ｉに対してコミット要求を送信する（図６，１０：ステップＳ３２１０）。
【００５１】
コミット要求は、各秘密計算装置３３−ｉ（図４）の通信部３３１−ｉで受信され、反映管理部３３４−ｉに送られる。コミット要求が送られた反映管理部３３４−ｉは（図７：ステップＳ３３０５−ｉ，Ｓ３３０６−ｉ）、一時記憶部３３３−ｉに一時記憶されている元データ断片αｉを記憶部１３５−ｉに上書き保存する（図７，１０：ステップＳ１３０７−ｉ）。その後、反映管理部３３４−ｉはコミット完了通知を通信部３３１−ｉに送り、通信部３３１−ｉは、ネットワーク１５２を介し、コミット完了通知を中継装置３２に送信する（ステップＳ３３０８−ｉ）。
【００５２】
コミット完了通知は、中継装置３２（図３）の通信部３２２１で受信され、登録管理部３２３２に送られる（図６，１０：ステップＳ３２１１）。登録管理部３２３２は、すべての秘密計算装置３３−１〜３３−Ｎからコミット完了通知が送られたかを判定する（ステップＳ３２１２）。ここで、少なくとも一部のコミット完了通知が送られていないのであれば、登録管理部３２３２は、すべてのコミット完了通知を待つ。一方、すべての秘密計算装置３３−１〜３３−Ｎからコミット完了通知が送られたのであれば、登録管理部３２３２は、ログ記憶部３２３５からログを削除する（ステップＳ３２１３）。その後、第１実施形態で説明したステップＳ１２１４，１２１５の処理が行われる。
【００５３】
一方、ステップＳ３２０７（図６）で反映結果が反映失敗を表す（反映失敗）と判定された場合、登録管理部３２３２は、それまでに作成されたログ（少なくとも、中継装置３２が元データ断片α１，・・・，αＮを受け付けてから何れかの秘密計算装置３３−ｉに出力するまでのログ）をログ記憶部３２３５に保存する（図６,１１：ステップＳ３２１６）。次に、登録管理部３２３２はロールバック要求を通信部３２２１に送る。通信部３２２１は、ネットワーク１５２を介し、各秘密計算装置３３−ｉに対してロールバック要求を送信する。この際、反映失敗と判定された秘密計算装置３３−ｉにはロールバック要求を送信してもしなくてもよい（ステップＳ３２１７）。
【００５４】
ロールバック要求は、各秘密計算装置３３−ｉ（図４）の通信部３３１−ｉで受信され、反映管理部３３４−ｉに送られる。ロールバック要求が送られた反映管理部３３４−ｉは（図７，１２：ステップＳ３３０５−ｉ）、一時記憶部３３３−ｉに一時記憶されている元データ断片αｉを削除（ロールバック）する（ステップＳ３３０９−ｉ）。その後、反映管理部３３４−ｉはロールバック完了通知を通信部３３１−ｉに送り、通信部３３１−ｉは、ネットワーク１５２を介し、ロールバック完了通知を中継装置３２に送信する（ステップＳ３３１０−ｉ）。
【００５５】
ロールバック完了通知は、中継装置３２（図３）の通信部３２２１で受信され、登録管理部３２３２に送られる（図６，１２：ステップＳ３２１８）。登録管理部３２３２は、ロールバック要求を送信したすべての秘密計算装置３３−ｉからロールバック完了通知が送られたかを判定する（ステップＳ３２１９）。ここで、少なくとも一部のロールバック完了通知が送られていないのであれば、登録管理部３２３２は、その他のロールバック完了通知を待つ。一方、ロールバック要求を送信したすべての秘密計算装置３３−ｉからロールバック完了通知が送られたのであれば、登録管理部３２３２は、ログ記憶部３２３５からログを削除する（ステップＳ３２２０）。その後、登録管理部３２３２は、エラー通知を通信部３２１１に送り、通信部３２１１はエラー通知を登録装置１１に送る（ステップＳ３２２１）。その後、第１実施形態で説明したステップ１２１５の処理が行われる。
【００５６】
＜本形態の特徴＞
本形態でも、登録装置１１および分析装置１４と秘密計算装置３３−１〜３３−Ｎとの間の通信経路に中継装置３２を配置し、トランザクション管理を行う。これにより、各処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。２相コミットを用いたトランザクション制御を行うことで、元データ断片の登録処理が部分的に失敗した場合でも人手を介さずにサービスを継続することができる。
【００５７】
また、本形態の中継装置３２は、元データ断片を受け付けてから秘密計算装置３３−ｉに出力するまでのログを格納し（ステップＳ３２０９）、すべての元データ断片が秘密計算装置３３−ｉに正しく反映された場合にログを削除し（ステップＳ３２１３）、何れかの元データ断片が秘密計算装置３３−ｉに正しく反映されなかった場合には、すべての秘密計算装置３３−ｉで元データ断片の取り消しが完了した後にログを削除するステップＳ３２２１）。これにより、登録処理中に中継装置３２で不具合が生じた場合であっても、ログを確認することで登録処理の経過を知ることができるとともに、ログが不要となった時点でログを削除することで記憶容量を節約することができる。
【００５８】
なお、第３実施形態では、第１実施形態に２相コミットを用いたトランザクション制御やログ管理を適用した例を説明した。しかしながら、第２実施形態に上述のような２相コミットを用いたトランザクション制御やログ管理を適用してもよい。すなわち、第３実施形態の元データ断片のそれぞれが、秘密計算装置のそれぞれで復号可能なように秘密分散値のそれぞれを暗号化して得られた暗号文であり、および／または、結果断片のそれぞれが、分析装置で復号可能なように秘密計算結果をそれぞれ暗号化して得られた暗号文であってもよい。秘密分散値や秘密計算結果の暗号化や復号の処理は第２実施形態で説明した通りである。
【００５９】
［その他の変形例等］
なお、本発明は上述の実施の形態に限定されるものではない。例えば、各装置がネットワークを通じて情報をやり取りするのではなく、少なくとも一部の組の装置が可搬型記録媒体を介して情報をやり取りしてもよい。或いは、少なくとも一部の組の装置が非可搬型の記録媒体を介して情報をやり取りしてもよい。すなわち、これらの装置の一部からなる組み合わせが、同一の装置であってもよい。また、中継装置によって中継される登録装置や分析装置が複数存在してもよい。この場合でも中継装置の処理は上述の各実施形態と同じでよい。
【００６０】
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００６１】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な（non-transitory）記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【００６２】
このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。
【００６４】
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【符号の説明】
【００６５】
１〜３  秘密計算システム
１１，２１  登録装置
１２，３２  中継装置
１３−ｉ，２３−ｉ，３３−ｉ  秘密計算装置
１４，２４  分析装置
【図１】
2016056473.tif 000003
【図２】
2016056473.tif 000004
【図３】
2016056473.tif 000005
【図４】
2016056473.tif 000006
【図５】
2016056473.tif 000007
【図６】
2016056473.tif 000008
【図７】
2016056473.tif 000009
【図８】
2016056473.tif 000010
【図９】
2016056473.tif 000011
【図１０】
2016056473.tif 000012
【図１１】
2016056473.tif 000013
【図１２】
2016056473.tif 000014
【手続補正書】
【提出日】平成29年3月29日(2017.3.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
中継装置１２（図３）の通信部１２２１は、すべての元データ断片α１，・・・，αＮが秘密計算装置１３−１，・・・，１３−Ｎに転送済みであるかを判定する（図６：ステップＳ１２０８）。ここで、すべての元データ断片α１，・・・，αＮが転送済みでない場合には、ステップＳ１２０５に戻る。一方、すべての元データ断片α１，・・・，αＮが転送済みである場合には、登録管理部１２３２は登録通知を通信部１２１１に送り、通信部１２１１は登録通知をネットワーク１５１経由で登録装置１１に送信する（ステップＳ１２１４）。登録通知は登録装置１１（図２Ａ）の通信部１１５で受信される（図５：ステップＳ１１０５）。その後、中継装置１２（図３）の登録管理部１２３２は、ステップＳ１２０４での待ち設定を解除する。これにより、ステップＳ１２０４で発生した「待ち状態」が解除される（図６：ステップＳ１２１５）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
まず、分析装置１４（図２Ｂ）の通信部１４５が、分析要求（結果断片の送信要求（情報））を、ネットワーク１５１経由で中継装置１２に送信する（図８Ａ：ステップＳ１１１１）。分析要求は、中継装置１２（図３）の通信部１２１２で受信され、記憶部１２３４に格納される（図８Ｂ：ステップＳ１２３１）。分析管理部１２３３は、登録管理部１２３２と情報をやり取りし、前述の登録処理の「待ち状態」となっているか（ステップＳ１２０４〜Ｓ１２１５の状態にあるか）を判定する（ステップＳ１２３２）。ここで、登録処理の「待ち状態」であると判定された場合にはそれが解消するまで処理を保留し、ステップＳ１２３２の判定を繰り返す。これにより、分析要求（結果断片の送信要求）を転送するタイミングを制御する。一方、登録処理の「待ち状態」ではないと判定された場合には、分析管理部１２３３が待ち設定を行う。なお、分析処理での「待ち状態」（ステップＳ１２３３〜Ｓ１２３７の状態）であるが、登録処理の「待ち状態」でない場合にも「登録処理の「待ち状態」ではない」と判定する。この待ち設定により新たな「待ち状態」が発生し、以降の登録処理を保留状態する（ステップＳ１２３３）。次に、分析管理部１２３３は、記憶部１２３４から分析要求を読み込み、通信部１２２２に送る。通信部１２２２（第２通信部）は、分析要求（元データ断片の何れかに対応する秘密計算結果に基づく結果断片の送信要求）を、ネットワーク１５２経由でＮ個の秘密計算装置１３−１，・・・，１３−Ｎに転送（送信）する（ステップＳ１２３４）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
分析装置１４（図２Ｂ）の通信部１４５は、中継装置１２から転送された結果断片βφ（ｊ）を受信し、分析部１４４に送る（図８Ａ：ステップＳ１１１２）。分析部１４４の復元部１４４１は送られた結果断片βφ（１），・・・，βφ（Ｋ）を用い、秘密分散の復元処理によって分析結果を復元して出力する。出力された分析結果はインタフェース部１４２から出力される（ステップＳ１１１４）。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
＜本形態の特徴＞
本形態では、登録装置１１および分析装置１４と秘密計算装置１３−１〜１３−Ｎとの間の通信経路に中継装置１２を配置し、トランザクション管理を行う。これにより、各処理を開始するタイミングにかかわらず、正しい分析結果を得ることができる。すなわち、中継装置１２は、登録処理時に、登録装置１１から送られた元データ断片α１，・・・，αＮを秘密計算装置１３−１〜１３−Ｎに転送し、分析処理時に、分析装置１４から送られた分析要求を秘密計算装置１３−φ（１），・・・，１３−φ（Ｋ）に転送し、それらの転送のタイミングを制御する。例えば、中継装置１２は、元データ断片の転送が開始された場合に元データ断片の転送が完了するまで分析要求の転送を保留し（図６：ステップＳ１２０４，Ｓ１２１５、図８Ｂ：ステップＳ１２３２）、分析要求の転送が開始された場合には結果断片の転送が完了するまで元データ断片の転送を保留する（図８Ｂ：ステップＳ１２３３，Ｓ１２３７、図６：ステップＳ１２０３）。これにより、秘密計算装置１３−１〜１３−Ｎの相互間で元データ断片や分析要求が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。また、中継装置１２は、複数の登録処理が実行された場合でも、それらの転送のタイミングを制御する。例えば、中継装置１２は、上述の元データ断片α１，・・・，αＮの転送が開始された場合に、それらの転送が完了するまで別の第２元データ断片α１’，・・・，αＮ’の転送を保留する（図６：ステップＳ１２０３，Ｓ１２０４，Ｓ１２１５）。これにより、秘密計算装置１３−１〜１３−Ｎの相互間で、元データ断片α１，・・・，αＮおよび第２元データ断片α１’，・・・，αＮ’が到達する順序に不整合が生じることがなく、正しい分析結果を得ることができる。なお、複数回の分析処理が開始された場合であっても、それらの分析処理間のタイミングの制御は行われない（図８Ｂ：ステップＳ１２３２）。複数の分析処理の競合によって秘密計算装置１３−１〜１３−Ｎに格納されたデータに不整合が生じることはないからである。これにより、不要な待ち設定による処理の遅延を防止できる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
＜秘密計算装置２３−ｉ＞
図４に例示するように、本形態の各秘密計算装置２３−ｉ（ただしｉ＝１，…，Ｎ）は、通信部１３１−ｉ，１３２−ｉと反映管理部２３４−ｉと記憶部１３５−ｉと演算部２３６−ｉと制御部１３７−ｉとを有する。演算部２３６−ｉは、秘密計算部１３６１−ｉと復号部２３６３−ｉと暗号化部２３６４−ｉとを有する。各秘密計算装置２３−ｉは、制御部１３７−ｉの制御に基づいて各処理を実行する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
＜登録処理＞
図５〜図７のフロー図を参照しつつ、本形態の登録処理を説明する。まず、登録装置２１（図２Ａ）が第１実施形態で説明したステップＳ１１０１およびＳ１１０２（図５）の処理を行う。Ｓ１１０２で得られたＮ個の秘密分散値ａ１，・・・，ａＮは暗号化部２１４２に送られる。暗号化部２１４２は、各秘密分散値ａｉ（ただしｉ＝１，…，Ｎ）を各秘密計算装置２３−ｉで復号可能なように暗号化し、各秘密分散値ａｉの暗号文Ｅｎｃ１（ａｉ）を元データ断片αｉとして出力する。この暗号化に使用する暗号化方式に限定はなく、公知の共通鍵暗号方式や公開鍵暗号方式やＩＤベース暗号方式などを用いることができる。例えば、共通鍵暗号方式を用いる場合、暗号化部２１４２と秘密計算装置２３−ｉとが共通鍵Ｋ１（ｉ）を共有し、暗号化部２１４２は、所定の共通鍵暗号方式に則り、共通鍵Ｋ１（ｉ）で秘密分散値ａｉを暗号化して暗号文αｉ＝Ｅｎｃ１（ａｉ）を得る。暗号文αｉは、例えば秘密分散値ａｉを含むリクエストの暗号文である（ステップＳ２１０３）。元データ断片α１，・・・，αＮ（複数個の元データ断片）は通信部１１５に送られ、通信部１１５は、元データ断片α１，・・・，αＮをネットワーク１５１経由で中継装置１２に送信する（ステップＳ１１０４）。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
その後、第１実施形態で説明したように、中継装置１２がステップＳ１２０１〜Ｓ１２１５（図６）の処理を行う。中継装置１２から転送された元データ断片αｉは、秘密計算装置２３−ｉ（図４）の通信部１３１−ｉで受信され、演算部２３６−ｉの復号部２３６３−ｉに送られる。復号部２３６３−ｉは、ステップＳ２１０３（図５）の暗号化方式に則り、元データ断片αｉ＝Ｅｎｃ１（ａｉ）を復号して秘密分散値ａｉを得る。例えば、ステップＳ２１０３の暗号化方式が共通鍵暗号方式である場合、復号部２３６３−ｉは、共通鍵Ｋ１（ｉ）を用いて元データ断片αｉ＝Ｅｎｃ１（ａｉ）を復号して秘密分散値ａｉを得る（図７：ステップＳ２３０６−ｉ）。秘密分散値ａｉは反映管理部２３４−ｉに送られ、反映管理部２３４−ｉは、秘密分散値ａｉを記憶部１３５−ｉに上書き保存する（ステップＳ２３０７−ｉ）。反映管理部２３４−ｉは、登録通知（レスポンス）を生成して演算部２３６−ｉの暗号化部２３６４−ｉに送る。暗号化部２３６４−ｉは登録通知を登録装置２１で復号可能なように暗号化し、暗号化された登録通知を出力する。この暗号化に使用する方式に限定はなく、公知の共通鍵暗号方式や公開鍵暗号方式やＩＤベース暗号方式などを用いることができる。例えば、共通鍵暗号方式を用いる場合、暗号化部２３６４−ｉと分析装置２４とが共通鍵Ｋ２（ｉ）を共有し、暗号化部２３６４−ｉは、所定の共通鍵暗号方式に則り、共通鍵Ｋ２（ｉ）で登録通知を暗号化して暗号化された登録通知を得る。暗号化された登録通知は、通信部１３２−ｉから中継装置１２に送信される（ステップＳ２３０８−ｉ）。暗号化された登録通知は、中継装置１２の通信部１２２２で受信され、通信部１２１１から登録装置２１に送信（転送）される（図６：ステップＳ２２１４）。登録通知は登録装置２１（図２Ａ）の通信部１１５で受信され（図５：ステップＳ２１０５）、断片化部２１４の復号部２１４３に送られる。復号部２１４３は、暗号化された登録通知を復号して登録通知を得る（ステップＳ２１０６）。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
＜登録処理＞
以下、図５〜図７および図９〜図１２を参照しつつ、本形態の登録処理を説明する。
まず、登録装置１１が第１実施形態で説明したステップＳ１１０１〜Ｓ１１０４（図５，９，１１）の処理を行い、元データ断片α１，・・・，αＮを中継装置３２に送信する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
元データ断片α１，・・・，αＮは、中継装置３２（図３）の通信部３２１１で受信され、トランザクション管理部３２３の記憶部１２３１に格納される（図６，９，１１：ステップＳ１２０１）。このように元データ断片α１，・・・，αＮが受け付けられると、登録管理部３２３２が処理内容を表すログの作成を開始する。これ以降、作成されたログは登録管理部３２３２の一時メモリ（図示せず）に格納されていく（ステップＳ３２０２）。次に、第１実施形態で説明したステップＳ１２０３およびＳ１２０４の処理が行われた後、登録管理部３２３２は、記憶部１２３１から元データ断片α１，・・・，αＮを読み込み、通信部３２２１に送る。通信部３２２１は、元データ断片α１，・・・，αＮを、ネットワーク１５２経由で複数個の秘密計算装置３３−１，・・・，３３−Ｎに転送（送信）する。本形態の通信部３２２１は、各元データ断片αｉを各秘密計算装置３３−ｉに転送する（ステップＳ１２０５）。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
中継装置３２から転送された元データ断片αｉは、秘密計算装置３３−ｉ（図４）の通信部３３１−ｉで受信され（図７，９，１１：ステップＳ１３０１−ｉ）、一時記憶部３３３−ｉに一時的に記憶される（ステップＳ３３０２−ｉ）。反映管理部３３４−ｉは、元データ断片αｉの一時記憶部３３３−ｉへの記憶（反映）が成功したか否かを判定する（ステップＳ３３０３−ｉ）。ここで、元データ断片αｉの一時記憶部３３３−ｉへの記憶が成功したと判定された場合、反映管理部３３４−ｉは反映が成功した旨の反映結果（「反映成功」を表す情報）を通信部３３１−ｉに送り、通信部３３１−ｉはこの反映結果（反映成功）をネットワーク１５２経由で中継装置３２に送信する（ステップＳ３３０４−ｉ）。一方、元データ断片αｉの一時記憶部３３３−ｉへの記憶が失敗したと判定された場合、反映管理部３３４−ｉは反映が失敗した旨の反映結果（「反映失敗」を表す情報）を通信部３３１−ｉに送り、通信部３３１−ｉはこの反映結果（反映失敗）をネットワーク１５２経由で中継装置３２に送信する（ステップＳ３３１１−ｉ）。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
コミット完了通知は、中継装置３２（図３）の通信部３２２１で受信され、登録管理部３２３２に送られる（図６，１０：ステップＳ３２１１）。登録管理部３２３２は、すべての秘密計算装置３３−１〜３３−Ｎからコミット完了通知が送られたかを判定する（ステップＳ３２１２）。ここで、少なくとも一部のコミット完了通知が送られていないのであれば、登録管理部３２３２は、すべてのコミット完了通知を待つ。一方、すべての秘密計算装置３３−１〜３３−Ｎからコミット完了通知が送られたのであれば、登録管理部３２３２は、ログ記憶部３２３５からログを削除する（ステップＳ３２１３）。その後、第１実施形態で説明したステップＳ１２１４，Ｓ１２１５の処理が行われる。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
ロールバック要求は、各秘密計算装置３３−ｉ（図４）の通信部３３１−ｉで受信され、反映管理部３３４−ｉに送られる。ロールバック要求が送られた反映管理部３３４−ｉは（図７：ステップＳ３３０５−ｉ）、一時記憶部３３３−ｉに一時記憶されている元データ断片αｉを削除（ロールバック）する（ステップＳ３３０９−ｉ）。その後、反映管理部３３４−ｉはロールバック完了通知を通信部３３１−ｉに送り、通信部３３１−ｉは、ネットワーク１５２を介し、ロールバック完了通知を中継装置３２に送信する（ステップＳ３３１０−ｉ）。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
ロールバック完了通知は、中継装置３２（図３）の通信部３２２１で受信され、登録管理部３２３２に送られる（図６，１２：ステップＳ３２１８）。登録管理部３２３２は、ロールバック要求を送信したすべての秘密計算装置３３−ｉからロールバック完了通知が送られたかを判定する（ステップＳ３２１９）。ここで、少なくとも一部のロールバック完了通知が送られていないのであれば、登録管理部３２３２は、その他のロールバック完了通知を待つ。一方、ロールバック要求を送信したすべての秘密計算装置３３−ｉからロールバック完了通知が送られたのであれば、登録管理部３２３２は、ログ記憶部３２３５からログを削除する（ステップＳ３２２０）。その後、登録管理部３２３２は、エラー通知を通信部３２１１に送り、通信部３２１１はエラー通知を登録装置１１に送る（ステップＳ３２２１）。その後、第１実施形態で説明したステップＳ１２１５の処理が行われる。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
また、本形態の中継装置３２は、元データ断片を受け付けてから秘密計算装置３３−ｉに出力するまでのログを格納し（ステップＳ３２０９）、すべての元データ断片が秘密計算装置３３−ｉに正しく反映された場合にログを削除し（ステップＳ３２１３）、何れかの元データ断片が秘密計算装置３３−ｉに正しく反映されなかった場合には、すべての秘密計算装置３３−ｉで元データ断片の取り消しが完了した後にログを削除する（ステップＳ３２２１）。これにより、登録処理中に中継装置３２で不具合が生じた場合であっても、ログを確認することで登録処理の経過を知ることができるとともに、ログが不要となった時点でログを削除することで記憶容量を節約することができる。
【手続補正１５】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2016056473.tif 000015
【手続補正１６】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2016056473.tif 000016
【手続補正１７】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2016056473.tif 000017
【国際調査報告】
2016056473.tif 000018
2016056473.tif 000019
2016056473.tif 000020
2016056473.tif 000021