(57)【要約】  個人情報を秘匿したままデータ処理を行う。登録者端末２は、登録時入力パスワードを秘密分散して秘密計算サーバ１へ分配する。秘密計算サーバ１は、パスワードが一致するか否かを検証する。登録者端末２は、処理対象データを秘密分散して秘密分散サーバ１へ分配する。秘密計算サーバ１は、データ分散値を記憶する。利用者端末３は、利用時入力パスワードを秘密分散して秘密計算サーバ１へ分配する。秘密計算サーバ１は、パスワードが一致するか否かを検証する。利用者端末３は、データ処理要求を秘密計算サーバ１へ送信する。秘密計算サーバ１は、データ分散値に対して秘密計算を実行し、処理結果の分散値を生成する。利用者端末３は、処理結果分散値を復元して処理結果を得る。
2015114947.tif 000002
【特許請求の範囲】
【請求項１】
n,kは2以上の整数であり、n≧kであり、
n台の秘密計算サーバの記憶部に、情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値が記憶されており、
登録者端末の認証要求部が、上記情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の上記秘密計算サーバへ分配する登録時認証要求ステップと、
少なくともk台の上記秘密計算サーバの認証実行部が、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証する登録時認証実行ステップと、
上記登録者端末の秘密分散部が、上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散ステップと、
上記登録者端末の登録要求部が、上記データ分散値をn台の上記秘密分散サーバへ分配する登録要求ステップと、
n台の上記秘密計算サーバの登録実行部が、上記データ分散値を上記記憶部へ記憶する登録実行ステップと、
利用者端末の認証要求部が、上記情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の上記秘密計算サーバへ分配する利用時認証要求ステップと、
少なくともk台の上記秘密計算サーバの認証実行部が、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する利用時認証実行ステップと、
上記利用者端末の演算要求部が、上記処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求ステップと、
少なくともk台の上記秘密計算サーバの秘密計算部が、上記データ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算ステップと、
上記利用者端末の結果復元部が、上記処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の上記処理結果分散値を復元して上記処理結果を得る結果復元ステップと、
を含む秘密計算方法。
【請求項２】
請求項１に記載の秘密計算方法であって、
上記処理対象データは、個人を特定することが可能な個人情報を含むものであり、
上記秘密分散ステップは、上記処理対象データ全体をまとめて秘密分散することで上記データ分散値を生成するものである
秘密計算方法。
【請求項３】
請求項１又は２に記載の秘密計算方法であって、
上記データ処理要求は、上記処理対象データを整列するソート処理及び／又は上記処理対象データから条件に合致するデータを抽出するマッチング処理を含むものであり、
上記秘密計算ステップは、上記データ分散値に対して秘密ソート計算及び／又は秘密マッチング計算を実行することで、上記処理結果分散値を生成するものである
秘密計算方法。
【請求項４】
n,kは2以上の整数であり、n≧kであり、
n台の秘密計算サーバ、少なくとも1台の登録者端末及び少なくとも1台の利用者端末を含む秘密計算システムであって、
上記登録者端末は、
情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の上記秘密計算サーバへ分配する認証要求部と、
上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散部と、
上記データ分散値をn台の上記秘密分散サーバへ分配する登録要求部と、
を含み、
上記利用者端末は、
情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の上記秘密計算サーバへ分配する認証要求部と、
上記処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求部と、
上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して処理結果を得る結果復元部と、
を含み、
上記秘密計算サーバは、
上記情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び上記情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値を記憶する記憶部と、
上記登録時入力パスワード分散値を受信したときは、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証し、上記利用時入力パスワード分散値を受信したときは、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する認証実行部と、
上記データ分散値を上記記憶部へ記憶する登録実行部と、
上記データ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理結果分散値を生成する秘密計算部と、
を含む秘密計算システム。
【請求項５】
n,kは2以上の整数であり、n≧kであり、
情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値を記憶する記憶部と、
上記情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値を受信したときは、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証し、上記情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値を受信したときは、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する認証実行部と、
上記情報提供者が入力した処理対象データをn個に秘密分散したデータ分散値を上記記憶部へ記憶する登録実行部と、
上記処理対象データに対するデータ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算部と、
を含む秘密計算サーバ。
【請求項６】
n,kは2以上の整数であり、n≧kであり、
情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の秘密計算サーバへ分配する認証要求部と、
上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散部と、
上記データ分散値をn台の上記秘密分散サーバへ分配する登録要求部と、
を含む登録者端末。
【請求項７】
n,kは2以上の整数であり、n≧kであり、
情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の秘密計算サーバへ分配する認証要求部と、
上記情報分析者が入力した処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求部と、
上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して上記処理結果を得る結果復元部と、
を含む利用者端末。
【請求項８】
請求項５に記載の秘密計算サーバ、請求項６に記載の登録者端末又は請求項７に記載の利用者端末としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号応用技術に関し、特に、入力データを明かすことなく関数計算や統計処理を行う秘密計算技術に関する。
【背景技術】
【０００２】
近年、個人情報保護法の遵守などによるプライバシ保護の重要性が高まっている。そのため、例えば、ビッグデータを利用したデータマイニング、希少症例の処方新薬開発、国家計画のような国勢調査情報の利活用などの統計分析では、個人情報を秘匿したままデータ処理する要望が高まっている。しかしながら、蓄積された貴重なデータは機密管理されている場合が多く、要望の高い市場分析や計画策定のための統計分析には十分に対処できておらず、データの蓄積にとどまり、記録の域を出ていないと言える。【０００３】
個人情報を秘匿したままの情報利活用には、個人情報を含むデータベースを物理的に隔離し、必要な情報へのアクセスを運用で対処するアプローチが考えられる。例えば、データベースから個人情報に関する項目を削除する、データ保存時に暗号化し加工時には平文に復号する、運用によりシステム管理者等に限定したアクセス制御を行う、個人が特定できないように個人情報をマスキングする、等の手法が考えられる。【０００４】
上記のようなアプローチにより個人情報を秘匿したまま関数計算や統計処理を行うことを目的とした技術には、例えば、非特許文献１から９に挙げるものが存在する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Dan Bogdanov, Margus Niitsoo, Tomas Toft, Jan Willemson, “High-performance secure multi-party computation for data mining applications”, International Journal of Information Security, vol. 11, issue 6, pp 403-418, 2012
【非特許文献２】Martin Burkhart, Mario Strasser, Dilip Many, Xenofontas Dimitropoulos, “SEPIA: Privacy-Preserving Aggregation of Multi-Domain Network Events and Statistics”, USENIX Security, 2010
【非特許文献３】Raluca Ada Popa, Catherine M. S. Redfield, Nickolai Zeldovich, Hari Balakrishnan, “CryptDB: Protecting Confidentiality with Encrypted Query Processing”, SOSP '11 Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, pp. 85-100, 2011
【非特許文献４】Craig Gentry, “Fully Homomorphic Encryption Using Ideal Lattices”, STOC '09 Proceedings of the 41st annual ACM symposium on Theory of computing, pp. 169-178, 2009
【非特許文献５】日本オラクル株式会社、“Oracle Advanced Security”、[online]、[平成26年1月24日検索]、インターネット<URL：http://www.oracle.com/technetwork/jp/database/enterprise-edition/ds-security-advanced-security-11gr2-134506-ja.pdf>
【非特許文献６】三菱電機株式会社、“秘匿検索基盤ソフトウェア”、[online]、[平成26年1月24日検索]、インターネット<URL：http://www.mitsubishielectric.co.jp/news/2013/pdf/0703-a.pdf>
【非特許文献７】日本アイ・ビー・エム株式会社、“IBM InfoSphere Optim Data Masking Solution for Oracle E-Business Suite”、[online]、[平成26年1月24日検索]、インターネット<URL：http://www-06.ibm.com/software/jp/data/optim/solutionbrief/IMS14011_JPJA_01.pdf>
【非特許文献８】株式会社富士通研究所、“世界初！暗号化したまま統計計算や生体認証などを可能にする準同型暗号の高速化技術を開発”、[online]、[平成26年1月24日検索]、インターネット<URL：http://pr.fujitsu.com/jp/news/2013/08/28.html>
【非特許文献９】日本電気株式会社、“NEC、世界初、データベースの情報を暗号化したまま処理できる秘匿計算技術を開発”、[online]、[平成26年1月24日検索]、インターネット<URL：http://jpn.nec.com/press/201311/20131106_01.html>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のアプローチによる個人情報を秘匿した情報利活用には以下のような課題がある。データベースから個人情報を削除する手法では、例えば、希少症例の分析などデータの全体数が少ない場合には、個人情報以外の値から個人を類推することが可能であり、安全性が担保されない。データを保存時に暗号化する手法では、データの加工時に平文に復号する必要があり、情報漏洩の危険性は排除できない。運用によりアクセス制御する手法では、内部からの不正アクセスにより情報漏洩する危険性がある。データをマスキングする手法では、一度マスキングすると元に戻すことができず、様々な統計分析要望に対応できるだけの柔軟性に欠ける。【０００７】
この発明の目的は、データに含まれる個人情報を秘匿したまま復元することなく様々なデータ処理を行うことができる秘密計算技術を提供することである。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、この発明の秘密計算方法は、n,kは2以上の整数であり、n≧kであり、n台の秘密計算サーバの記憶部に、情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値が記憶されており、登録者端末の認証要求部が、情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の秘密計算サーバへ分配する登録時認証要求ステップと、少なくともk台の秘密計算サーバの認証実行部が、登録時入力パスワード分散値と登録パスワード分散値とを用いて、登録パスワードと登録時入力パスワードとが一致するか否かを検証する登録時認証実行ステップと、登録者端末の秘密分散部が、情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散ステップと、登録者端末の登録要求部が、データ分散値をn台の秘密分散サーバへ分配する登録要求ステップと、n台の秘密計算サーバの登録実行部が、データ分散値を記憶部へ記憶する登録実行ステップと、利用者端末の認証要求部が、情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の秘密計算サーバへ分配する利用時認証要求ステップと、少なくともk台の秘密計算サーバの認証実行部が、利用時入力パスワード分散値と利用パスワード分散値とを用いて、利用パスワードと利用時入力パスワードとが一致するか否かを検証する利用時認証実行ステップと、利用者端末の演算要求部が、処理対象データに対するデータ処理要求をn台の秘密計算サーバへ送信する演算要求ステップと、少なくともk台の秘密計算サーバの秘密計算部が、データ処理要求に従って、データ分散値に対して秘密計算を実行し、処理対象データに対してデータ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算ステップと、利用者端末の結果復元部が、処理結果分散値のうち、秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して処理結果を得る結果復元ステップと、を含む。
【発明の効果】
【０００９】
この発明によれば、データに含まれる個人情報を秘匿したまま復元することなく様々なデータ処理を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、秘密計算システムの機能構成を例示する図である。
【図２】図２は、秘密計算サーバの機能構成を例示する図である。
【図３】図３は、登録者端末の機能構成を例示する図である。
【図４】図４は、利用者端末の機能構成を例示する図である。
【図５】図５は、秘密計算方法の処理フローを例示する図である。
【図６】図６は、秘密計算方法の処理フローを例示する図である。
【発明を実施するための形態】
【００１１】
実施形態の説明に先立ち、この発明で利用する基本的な技術概念を説明する。
［秘密分散技術］
秘密分散とは、データを複数の分散値に変換し、一定個数以上の分散値を用いれば元のデータを復元でき、一定個数未満の分散値からは元のデータを一切復元できなくする技術である。秘密分散の一種である(k,n)-秘密分散は、入力された平文をn個に分割した分散値をn個の計算主体に分散しておき、任意のk個の分散値が揃えば平文を復元でき、k個未満の分散値からは平文に関する一切の情報を得られないような秘密分散である。このとき、n,kは1以上の整数であり、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年（参考文献４）」に記載されている。
【００１４】
［秘密計算認証技術］
秘密計算認証は、複数の計算主体にログインやパスワードなどの認証情報を秘密分散して保存しておき、認証情報を復元することなく他の計算主体と協力して利用者が入力した認証情報が正しいか否かを検証する技術である。
【００１５】
この発明では、任意の秘密計算認証方法を利用することができる。例えば、「菊池亮、五十嵐大、千田浩司、濱田浩気、“無条件秘匿性を持つマルチパーティシステム用パスワード認証方式”、コンピュータセキュリティシンポジウム2013、2013年（参考文献５）」に記載の秘密計算認証方法を利用することができる。
【００１６】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
［実施形態］
図１を参照して、実施形態に係る秘密計算システムの構成例を説明する。秘密計算システムは、n（≧2）台の秘密計算サーバ１1,…,１n、少なくとも1台の登録者端末２、少なくとも1台の利用者端末３及びネットワーク９を含む。秘密計算サーバ１1,…,１n、登録者端末２及び利用者端末３はネットワーク９にそれぞれ接続される。ネットワーク９は、秘密計算サーバ１1,…,１nそれぞれの間、秘密計算サーバ１1,…,１nそれぞれと登録者端末２の間、秘密計算サーバ１1,…,１nそれぞれと利用者端末３の間が相互に通信可能なように構成されていればよく、例えばインターネットやＬＡＮ、ＷＡＮなどで構成することができる。秘密計算サーバ１1,…,１nそれぞれの間の通信路は、暗号技術などにより秘匿性の高い通信が実現されていることが望ましい。また、秘密計算サーバ１1,…,１n、登録者端末２及び利用者端末３は必ずしもネットワーク９を介してオンラインで通信可能である必要はない。例えば、登録者端末２が出力する情報をＵＳＢメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体からいずれかの秘密計算サーバ１i（1≦i≦n）へオフラインで入力するように構成してもよい。
【００１７】
図２を参照して、秘密計算システムに含まれる秘密計算サーバ１i（i=1,…,n）の構成例を説明する。秘密計算サーバ１iは、認証実行部１０、登録実行部１２、秘密計算部１４及び記憶部１６を含む。秘密計算サーバ１iは、例えば、中央演算処理装置（Central Processing Unit、ＣＰＵ）、主記憶装置（Random Access Memory、ＲＡＭ）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算サーバ１iは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算サーバ１iに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて読み出されて他の処理に利用される。記憶部１６は、例えば、ＲＡＭ（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ（Flash Memory）のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【００１８】
図３を参照して、秘密計算システムに含まれる登録者端末２の構成例を説明する。登録者端末２は、認証要求部２０、データ入力部２２、秘密分散部２４及び登録要求部２６を含む。登録者端末２は、例えば、中央演算処理装置（Central Processing Unit、ＣＰＵ）、主記憶装置（Random Access Memory、ＲＡＭ）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。登録者端末２は、例えば、中央演算処理装置の制御のもとで各処理を実行する。登録者端末２に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて読み出されて他の処理に利用される。登録者端末２は、具体的には、デスクトップ型もしくはラップトップ型のパーソナル・コンピュータや携帯電話、スマートフォン、タブレット端末などである。
【００１９】
図４を参照して、秘密計算システムに含まれる利用者端末３の構成例を説明する。利用者端末３は、認証要求部３０、演算入力部３２、演算要求部３４及び結果復元部３６を含む。利用者端末３は、例えば、中央演算処理装置（Central Processing Unit、ＣＰＵ）、主記憶装置（Random Access Memory、ＲＡＭ）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。利用者端末３は、例えば、中央演算処理装置の制御のもとで各処理を実行する。利用者端末３に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて読み出されて他の処理に利用される。利用者端末３は、具体的には、デスクトップ型もしくはラップトップ型のパーソナル・コンピュータや携帯電話、スマートフォン、タブレット端末などである。
【００２０】
図５、６を参照しながら、実施形態に係る秘密計算システムが実行する秘密計算方法の処理フローの一例を、手続きの順に従って説明する。図５は、登録者端末２がデータ処理の対象とするデータを秘密計算サーバ１1,…,１nへ登録する手順である。
【００２１】
秘密計算サーバ１i（i=1,…,n）の記憶部１６には、登録者端末２を利用する情報提供者もしくは利用者端末３を利用する情報分析者に個々に設定されたパスワードをn個に秘密分散した分散値のうち、i番目の分散値が記憶されている。以下、情報提供者のパスワードを登録パスワードと呼び、登録パスワードをn個に分散した分散値を登録パスワード分散値と呼ぶ。また、情報分析者のパスワードを利用パスワードと呼び、利用パスワードをn個に分散した分散値を利用パスワード分散値と呼ぶ。パスワードを秘密分散する方法は、上述の秘密計算認証技術を利用可能な秘密分散方法である必要がある。例えば、参考文献５に記載の秘密分散方法を適用することができる。
【００２２】
ステップＳ２０ａにおいて、登録者端末２の認証要求部２０は、情報提供者が入力したパスワードをn個に秘密分散した分散値をn台の秘密計算サーバ１1,…,１nへ分配する。以下、情報提供者が入力したパスワードを登録時入力パスワードと呼び、登録時入力パスワードをn個に分散した分散値を登録時入力パスワード分散値と呼ぶ。分配とは、iを1以上n以下の各整数として、i番目の登録時入力パスワード分散値を、i番目の秘密計算サーバ１iへ通信路を介して送信することである。
【００２３】
ステップＳ１０ａにおいて、秘密計算サーバ１iの認証実行部１０は、登録者端末２から受信した登録時入力パスワード分散値と記憶部１６に記憶されている登録パスワード分散値とを用いて、登録パスワードと登録時入力パスワードとが一致するか否かを検証する。ステップＳ１０ａは、n台の秘密計算サーバ１1,…,１nのうち、少なくともk台が協調して実行すればよい。パスワードを検証する具体的な方法は、上記の参考文献４を参照されたい。
【００２４】
ステップＳ１０ｂにおいて、秘密計算サーバ１iの認証実行部１０は、登録パスワードと登録時入力パスワードとが一致すると判定した場合には、認証成功を示す認証結果を登録者端末２へ送信する。登録パスワードと登録時入力パスワードとが一致しないと判定した場合には、認証失敗を示す認証結果を登録者端末２へ送信する。
【００２５】
ステップＳ２０ｂにおいて、登録者端末２の認証要求部２０は、秘密計算サーバ１iから受信した認証結果が認証失敗を示す場合には処理を終了する。秘密計算サーバ１iから受信した認証結果が認証成功を示す場合にはステップＳ２２へ処理を進める。認証結果は少なくともk台の秘密計算サーバ１から受信することになるが、すべての認証結果が認証成功を示していない限りは、認証失敗と判定する。
【００２６】
ステップＳ２２において、登録者端末２のデータ入力部２２には、データ処理の対象となる処理対象データが入力される。処理対象データには、個人を特定することが可能な個人情報が含まれている。個人情報は、例えば、氏名や住所、生年月日、性別のような個人の属性を表す情報である。処理対象データのうち個人情報以外の情報はデータ処理の目的に応じて必要な項目が設定される。
【００２７】
ステップＳ２４において、登録者端末２の秘密分散部２４は、処理対象データをn個に秘密分散してデータ分散値を生成する。処理対象データを秘密分散する方法は、上述の秘密計算技術を利用可能な秘密分散方法である必要がある。例えば、上記の参考文献２から４のいずれかに記載の秘密分散方法を適用することができる。このとき、処理対象データに含まれる個人情報に該当する項目と個人情報以外の項目とをまとめて、処理対象データ全体として秘密分散する。
【００２８】
ステップＳ２６において、登録者端末２の登録要求部２６は、データ分散値をn台の秘密分散サーバ１1,…,１nへ分配する。分配とは、iを1以上n以下の各整数として、i番目のデータ分散値を、i番目の秘密計算サーバ１iへ通信路を介して送信することである。
【００２９】
ステップＳ１２において、秘密計算サーバ１1,…,１nの登録実行部１２は、登録者端末２から受信したデータ分散値を記憶部１６へ記憶する。
【００３０】
図６を参照して、秘密計算サーバ１1,…,１nへ登録された処理対象データの分散値を用いて、利用者端末３の要求するデータ処理を行う手順を説明する。
【００３１】
ステップＳ３０ａにおいて、利用者端末３の認証要求部３０は、情報分析者が入力したパスワードをn個に秘密分散した分散値をn台の秘密計算サーバ１1,…,１nへ分配する。以下、情報分析者が入力したパスワードを利用時入力パスワードと呼び、利用時入力パスワードをn個に秘密分散した分散値を利用時入力パスワード分散値と呼ぶ。分配とは、iを1以上n以下の各整数として、i番目の利用時入力パスワード分散値を、i番目の秘密計算サーバ１iへ通信路を介して送信することである。
【００３２】
ステップＳ１０ｃにおいて、秘密計算サーバ１iの認証実行部１０は、利用者端末３から受信した利用時入力パスワード分散値と記憶部１６に記憶されている利用パスワード分散値とを用いて、利用パスワードと利用時入力パスワードとが一致するか否かを検証する。ステップＳ１０ｃは、n台の秘密計算サーバ１1,…,１nのうち、少なくともk台が協調して実行すればよい。パスワードを検証する具体的な方法は、上記の参考文献５を参照されたい。
【００３３】
ステップＳ１０ｄにおいて、秘密計算サーバ１iの認証実行部１０は、利用パスワードと利用時入力パスワードとが一致すると判定した場合には、認証成功を示す認証結果を利用者端末３へ送信する。利用パスワードと利用時入力パスワードとが一致しないと判定した場合には、認証失敗を示す認証結果を利用者端末３へ送信する。
【００３４】
ステップＳ３０ｂにおいて、利用者端末３の認証要求部３０は、秘密計算サーバ１iから受信した認証結果が認証失敗を示す場合には処理を終了する。秘密計算サーバ１iから受信した認証結果が認証成功を示す場合にはステップＳ３２へ処理を進める。認証結果は少なくともk台の秘密計算サーバ１から受信することになるが、すべての認証結果が認証成功を示していない限りは、認証失敗と判定する。
【００３５】
ステップＳ３２において、利用者端末３の演算入力部３２には、処理対象データに対するデータ処理の内容を記述したデータ処理要求が入力される。データ処理要求は、例えば、あらかじめ定めたプログラミング言語で記述されたスクリプトである。具体的には、統計解析向けにオープンソースプロジェクトで開発されているＲ言語などが利用できる。Ｒ言語についての詳細は、「The R Project、“The R Project for Statistical Computing”、[online]、[平成26年1月14日検索]、インターネット<URL：http://www.r-project.org/index.html>（参考文献６）」を参照されたい。データ処理要求には、加算や乗算等の基本演算に加えて、処理対象データを整列するソート処理や処理対象データから条件に合致するデータを抽出するマッチング処理が含まれていてもよい。
【００３６】
ステップＳ３４において、利用者端末３の演算要求部３４は、データ処理要求を、n台の秘密計算サーバ１1,…,１nへ送信する。送信経路はn台の秘密計算サーバ１1,…,１nすべてがデータ処理要求を受信できればどのようなものでもよい。例えば、利用者端末３がn台の秘密計算サーバ１1,…,１nすべてに対して個別に送信してもよいし、利用者端末３からいずれか1台の秘密計算サーバ１iに送信し、秘密計算サーバ１iから他の秘密計算サーバ１j（j=1,…,n、i≠j）に転送してもよい。
【００３７】
ステップＳ１４ａにおいて、秘密計算サーバ１iの秘密計算部１４は、利用者端末３から受信したデータ処理要求に従って、記憶部１６に記憶されているデータ分散値に対して秘密計算を実行し、処理対象データに対してデータ処理要求を実行した処理結果をn個に分散した分散値を生成する。以下、処理結果をn個に分散した分散値を処理結果分散値と呼ぶ。ステップＳ１４ａは、n台の秘密計算サーバ１1,…,１nのうち、少なくともk台が協調して実行すればよい。
【００３８】
ステップＳ１４ｂにおいて、秘密計算サーバ１iの秘密計算部１４は、処理結果分散値を利用者端末３へ送信する。
【００３９】
ステップＳ３６において、利用者端末３の結果復元部３６は、秘密計算サーバ１iから受信した処理結果分散値を復元して処理結果を得る。処理結果分散値はn台の秘密計算サーバ１1,…,１nすべてから受信する必要はなく、少なくともk台の秘密計算サーバ１からk個以上の処理結果分散値を受信していれば、処理結果を復元することができる。
【００４０】
このように、この発明の秘密計算技術によれば、秘密計算認証により安全に認証を経た上で、登録者端末により処理対象データ全体が秘密分散された分散値に対して、個人情報を秘匿したまま統計分析や検索などのデータ処理を行い、処理結果の分散値を利用者端末へ返却する。これにより、秘密計算サーバに対して、処理対象データ及び処理結果に含まれる個人情報を秘匿したまま復元することなく様々なデータ処理を行うことができる。
【００４１】
［従来技術との比較］
非特許文献１に記載の秘密計算技術には、統計分析に必要なソート処理が行えない、特殊な言語コンパイラを利用するため情報処理の拡張性が低い、計算ノード数が固定である、などの課題がある。この発明の秘密計算技術によれば、情報を秘匿したままソート処理が利用でき、汎用的なプログラミング言語が利用でき、計算ノード数は可変である。
【００４２】
非特許文献２に記載の秘密計算技術では、基本演算性能が低い、ソート処理が行えない、プログラム拡張が行えない、などの課題がある。この発明の秘密計算技術によれば、情報を秘匿したままソート処理が利用でき、汎用的なプログラミング言語が利用できる。また、非特許文献２に記載の秘密計算技術では、基本演算性能が秒間8万回乗算と低いが、この発明の秘密計算技術は、秒間100万回乗算と高い基本演算性能を持つ。
【００４３】
非特許文献３に記載の秘密計算技術は、複数の暗号を階層的に利用することにより暗号化した状態でのソートを実現しているが、処理できる演算の種類が制限される。また、処理を重ねるに従って順序関係などの推測が可能であるという課題がある。この発明の秘密計算技術によれば、ソート処理やマッチング処理などの様々な演算が可能であり、秘密分散により情報を秘匿したままソート処理ができるため、安全性が高い。
【００４４】
非特許文献４に記載の秘密計算技術は、完全準同型暗号を利用して暗号化した状態で任意の演算が可能であるが、実行時間が遅く実用性が低い。この発明の秘密計算技術は、上記のとおり、基本演算性能が高い。
【００４５】
非特許文献５に記載の秘密計算技術は、データベースを暗号化するが、データ処理のために暗号化データの復元が必要である。この発明の秘密計算技術は、すべての演算が情報を秘匿したまま復元することなく実行可能である。
【００４６】
非特許文献６に記載の秘密計算技術は、データを復号せずに検索が可能であるが、データ提供主体の間で秘密鍵を共有する必要があり、秘匿性が担保されない。この発明の秘密計算技術は、秘密鍵を利用しない秘密分散により情報の秘匿を行うため、安全性が高い。
【００４７】
非特許文献７に記載の秘密計算技術は、個人情報や機密情報をデータの意味を維持しながらマスキングすることができるが、個人情報以外は平文で扱われるため医療や行政の分野のような機微データを扱う特定分野では利用が難しい。この発明の秘密計算技術は、個人情報以外を含めて処理対象データをまとめて全体として秘密分散を行うため、処理対象データ数が少ない場合であっても個人情報以外から個人を推測することが困難である。
【００４８】
非特許文献８に記載の秘密計算技術は、一台のサーバによる論理演算により平均値、標準偏差、合計などの統計処理が可能であるが、ソート処理ができないため統計処理であっても最大値、最小値、中央値などを求めることができず拡張性が低い。また、基本演算性能が低いという課題もある。この発明の秘密計算技術によれば、情報を秘匿したままソート処理が利用できるため、最大値、最小値、中央値などを求めることができる。また、この発明の秘密計算技術は、上記のとおり、基本演算性能が高い。
【００４９】
非特許文献９に記載の秘密計算技術は、リレーショナルデータベースを暗号化したままデータ処理が可能であるが、一部の演算はクライアント側で実行する必要がある。また、演算毎に暗号化方式が異なるため情報処理の拡張性が低い、などの課題がある。この発明の秘密計算技術は秘密計算サーバ間のみで秘密演算を行い、データ処理に利用者端末等が関与することはない。また、すべての演算が特定の秘密分散技術で秘密分散した分散値を用いて行われるため、データ処理内容の設計の自由度が高い。
【００５０】
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００５１】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００５２】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００５３】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５４】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５５】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2015114947.tif 000003
【図２】
2015114947.tif 000004
【図３】
2015114947.tif 000005
【図４】
2015114947.tif 000006
【図５】
2015114947.tif 000007
【図６】
2015114947.tif 000008
【手続補正書】
【提出日】平成28年6月24日(2016.6.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上記の課題を解決するために、この発明の秘密計算方法は、n,kは2以上の整数であり、n≧kであり、n台の秘密計算サーバの記憶部に、情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値が記憶されており、登録者端末の認証要求部が、情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の秘密計算サーバへ分配する登録時認証要求ステップと、少なくともk台の秘密計算サーバの認証実行部が、登録時入力パスワード分散値と登録パスワード分散値とを用いて、登録パスワードと登録時入力パスワードとが一致するか否かを検証する登録時認証実行ステップと、登録者端末の秘密分散部が、情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散ステップと、登録者端末の登録要求部が、データ分散値をn台の秘密計算サーバへ分配する登録要求ステップと、n台の秘密計算サーバの登録実行部が、データ分散値を記憶部へ記憶する登録実行ステップと、利用者端末の認証要求部が、情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の秘密計算サーバへ分配する利用時認証要求ステップと、少なくともk台の秘密計算サーバの認証実行部が、利用時入力パスワード分散値と利用パスワード分散値とを用いて、利用パスワードと利用時入力パスワードとが一致するか否かを検証する利用時認証実行ステップと、利用者端末の演算要求部が、処理対象データに対するデータ処理要求をn台の秘密計算サーバへ送信する演算要求ステップと、少なくともk台の秘密計算サーバの秘密計算部が、データ処理要求に従って、データ分散値に対して秘密計算を実行し、処理対象データに対してデータ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算ステップと、利用者端末の結果復元部が、処理結果分散値のうち、秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して処理結果を得る結果復元ステップと、を含む。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
ステップＳ２６において、登録者端末２の登録要求部２６は、データ分散値をn台の秘密計算サーバ１1,…,１nへ分配する。分配とは、iを1以上n以下の各整数として、i番目のデータ分散値を、i番目の秘密計算サーバ１iへ通信路を介して送信することである。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
n,kは2以上の整数であり、n≧kであり、
n台の秘密計算サーバの記憶部に、情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値が記憶されており、
登録者端末の認証要求部が、上記情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の上記秘密計算サーバへ分配する登録時認証要求ステップと、
少なくともk台の上記秘密計算サーバの認証実行部が、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証する登録時認証実行ステップと、
上記登録者端末の秘密分散部が、上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散ステップと、
上記登録者端末の登録要求部が、上記データ分散値をn台の上記秘密計算サーバへ分配する登録要求ステップと、
n台の上記秘密計算サーバの登録実行部が、上記データ分散値を上記記憶部へ記憶する登録実行ステップと、
利用者端末の認証要求部が、上記情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の上記秘密計算サーバへ分配する利用時認証要求ステップと、
少なくともk台の上記秘密計算サーバの認証実行部が、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する利用時認証実行ステップと、
上記利用者端末の演算要求部が、上記処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求ステップと、
少なくともk台の上記秘密計算サーバの秘密計算部が、上記データ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算ステップと、
上記利用者端末の結果復元部が、上記処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の上記処理結果分散値を復元して上記処理結果を得る結果復元ステップと、
を含む秘密計算方法。
【請求項２】
請求項１に記載の秘密計算方法であって、
上記処理対象データは、個人を特定することが可能な個人情報を含むものであり、
上記秘密分散ステップは、上記処理対象データ全体をまとめて秘密分散することで上記データ分散値を生成するものである
秘密計算方法。
【請求項３】
請求項１又は２に記載の秘密計算方法であって、
上記データ処理要求は、上記処理対象データを整列するソート処理及び／又は上記処理対象データから条件に合致するデータを抽出するマッチング処理を含むものであり、
上記秘密計算ステップは、上記データ分散値に対して秘密ソート計算及び／又は秘密マッチング計算を実行することで、上記処理結果分散値を生成するものである
秘密計算方法。
【請求項４】
n,kは2以上の整数であり、n≧kであり、
n台の秘密計算サーバ、少なくとも1台の登録者端末及び少なくとも1台の利用者端末を含む秘密計算システムであって、
上記登録者端末は、
情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の上記秘密計算サーバへ分配する認証要求部と、
上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散部と、
上記データ分散値をn台の上記秘密計算サーバへ分配する登録要求部と、
を含み、
上記利用者端末は、
情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の上記秘密計算サーバへ分配する認証要求部と、
上記処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求部と、
上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して処理結果を得る結果復元部と、
を含み、
上記秘密計算サーバは、
上記情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び上記情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値を記憶する記憶部と、
上記登録時入力パスワード分散値を受信したときは、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証し、上記利用時入力パスワード分散値を受信したときは、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する認証実行部と、
上記データ分散値を上記記憶部へ記憶する登録実行部と、
上記データ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理結果分散値を生成する秘密計算部と、
を含む秘密計算システム。
【請求項５】
nは2以上の整数であり、
情報提供者の登録パスワードをn個に秘密分散した登録パスワード分散値及び情報分析者の利用パスワードをn個に秘密分散した利用パスワード分散値を記憶する記憶部と、
上記情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値を受信したときは、上記登録時入力パスワード分散値と上記登録パスワード分散値とを用いて、上記登録パスワードと上記登録時入力パスワードとが一致するか否かを検証し、上記情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値を受信したときは、上記利用時入力パスワード分散値と上記利用パスワード分散値とを用いて、上記利用パスワードと上記利用時入力パスワードとが一致するか否かを検証する認証実行部と、
上記情報提供者が入力した処理対象データをn個に秘密分散したデータ分散値を上記記憶部へ記憶する登録実行部と、
上記処理対象データに対するデータ処理要求に従って、上記データ分散値に対して秘密計算を実行し、上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値を生成する秘密計算部と、
を含む秘密計算サーバ。
【請求項６】
nは2以上の整数であり、
情報提供者が入力した登録時入力パスワードをn個に秘密分散した登録時入力パスワード分散値をn台の秘密計算サーバへ分配する認証要求部と、
上記情報提供者が入力した処理対象データをn個に秘密分散してデータ分散値を生成する秘密分散部と、
上記データ分散値をn台の上記秘密計算サーバへ分配する登録要求部と、
を含む登録者端末。
【請求項７】
n,kは2以上の整数であり、n≧kであり、
情報分析者が入力した利用時入力パスワードをn個に秘密分散した利用時入力パスワード分散値をn台の秘密計算サーバへ分配する認証要求部と、
上記情報分析者が入力した処理対象データに対するデータ処理要求をn台の上記秘密計算サーバへ送信する演算要求部と、
上記処理対象データに対して上記データ処理要求を実行した処理結果をn個に秘密分散した処理結果分散値のうち、上記秘密計算サーバから受信した少なくともk個の処理結果分散値を復元して上記処理結果を得る結果復元部と、
を含む利用者端末。
【請求項８】
請求項５に記載の秘密計算サーバ、請求項６に記載の登録者端末又は請求項７に記載の利用者端末としてコンピュータを機能させるためのプログラム。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2015114947.tif 000009
【国際調査報告】
2015114947.tif 000010
2015114947.tif 000011