(57)【特許請求の範囲】
【請求項１】
秘密計算の対象データを取得する取得部と、
秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、
前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換する変換処理部と、
前記秘密計算用データを出力する出力部と、を備え、
前記対象データは、第１のデータに対する機械学習に関連する第２のデータを少なくとも含み、
前記第２のデータは、前記第１のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記変換処理部は、前記記憶された対応テーブルの中から、前記第２のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算用変換装置。
【請求項２】
前記取得部は、前記秘密計算に対する要求条件データを取得し、
前記変換処理部は、前記抽出した入力フォーマットのうち、前記要求条件データに基づいて選択した入力フォーマットに従って、前記変換を行う、請求項１に記載の秘密計算用変換装置。
【請求項３】
前記機械学習の仕様データは、前記機械学習で用いるアルゴリズムに関する情報またはソースコードを含む、請求項２に記載の秘密計算用変換装置。
【請求項４】
前記対象データは、前記第１のデータを前記機械学習したデータを含み、
前記変換処理部は、前記変換として、前記機械学習したデータを、前記選択した入力フォーマットで規定する暗号手法に従って暗号化する暗号化部を含む、請求項３に記載の秘密計算用変換装置。
【請求項５】
前記対象データは、前記第１のデータを含み、
前記変換処理部は、前記変換として、前記第１のデータを、前記選択した入力フォーマットで規定する暗号手法に従って暗号化する暗号化部を含む、請求項３に記載の秘密計算用変換装置。
【請求項６】
前記要求条件データは、秘密計算に関する選択的条件および／またはスコア付けされた複数の評価条件を含み、
前記変換処理部は、前記選択的条件および／または前記スコアに基づいて前記選択される入力フォーマットに従って、前記変換を行う、請求項２から請求項５のいずれか一項に記載の秘密計算用変換装置。
【請求項７】
前記評価条件は、処理速度、セキュリティレベル、コストに関する条件を少なくとも一つ含み、
前記評価条件は、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を介して入力される、請求項６に記載の秘密計算用変換装置。
【請求項８】
前記記憶部は、前記要求条件データおよび当該要求条件データに応じて実行された変換の入力フォーマットを記憶し、
前記記憶された要求条件データと、要求条件データに応じて実行された変換の入力フォーマットとの関係を学習する学習部をさらに備え、
前記変換処理部は、前記学習された関係に従って、前記変換を行う、請求項２から請求項７のいずれか一項に記載の秘密計算用変換装置。
【請求項９】
前記入力フォーマットは、秘密計算のための、暗号の種類、暗号の形式、暗号化するデータの単位、データ構造、処理プロトコル、アーキテクチャのいずれか、またはその組み合わせによって規定されるデータである、請求項１から請求項８のいずれか一項に記載の秘密計算用変換装置。
【請求項１０】
秘密計算の対象データに対する処理要求を送る処理要求部と、秘密計算用変換部と、秘密計算実行部と、を備える秘密計算システムであって、
前記秘密計算用変換部は、
前記処理要求部を介して前記対象データを取得する取得部と、
秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、
前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換する変換処理部と、
前記秘密計算用データを前記秘密計算実行部に出力する出力部と、を含み、
前記対象データは、第１のデータに対する機械学習に関連する第２のデータを少なくとも含み、
前記第２のデータは、前記第１のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記変換処理部は、前記記憶された対応テーブルの中から、前記第２のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算システム。
【請求項１１】
秘密計算の対象データを秘密計算用データに変換する変換方法であって、前記変換方法は、制御部および記憶部を備えるコンピュータにおいて実行され、
前記制御部が、秘密計算の対象データを取得するステップと、
前記制御部が、秘密計算を行うための入力フォーマットを規定した対応テーブルを前記記憶部に記憶するステップと、
前記制御部が、前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換するステップと、
前記制御部が、前記秘密計算用データを出力するステップと、を備え、
前記対象データは、第１のデータに対する機械学習に関連する第２のデータを少なくとも含み、
前記第２のデータは、前記第１のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記制御部は、前記記憶された対応テーブルの中から、前記第２のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算用変換方法。
【請求項１２】
請求項１１に記載の秘密計算用変換方法をコンピュータに実行させるための秘密計算用変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラムに関する。
【背景技術】
【０００２】
人工知能技術の普及に伴い、個人情報などの機微データを分析する目的で機械学習が活用されるようになっている。例えばデータサイエンティスト等の名称で呼ばれる技術者は、目的や用途に応じた機械学習ライブラリ（「ＡＩライブラリ」とも呼ぶ。）を適用し、機械学習を用いてデータ分析を行っている。
【０００３】
一方、情報漏洩防止のため、データを暗号化状態のまま演算することができる暗号技術が知られている。例えば、特許文献１には、加法・減法に対して準同型の性質を持つ暗号関数を利用し、暗号化状態のまま加法、減法、乗法、除法の演算をすることができる公開鍵暗号ベースの秘密計算に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２２７１９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
機微データなど機密性の保持が求められるデータの分析は、上述のような暗号化状態のまま行われることが望ましい。従来は、秘密計算およびＡＩに関する専門知識を有する技術者が、事案に応じて、ＡＩライブラリ等によって生成された学習モデルを最適な秘密計算用フォーマットに変換するなどして秘密計算ライブラリに適用できるよう対応していたため、時間と手間がかかり作業効率が悪かった。そこで、専門的な知識がなくとも、ＡＩに関する入力データを秘密計算ライブラリに適用することができる技術（例えば、ＡＩに関するソースコードを秘密計算可能なソースコードに変換することができる、もしくはＡＩに関する入力データを秘密計算ライブラリが受付可能なフォーマット（データ暗号化、その暗号方式、最適化された入力構造など）に変換することができる等）の開発が期待されている。
【０００６】
本開示は、上記課題を解決すべくなされたものであって、その目的は、入力データを秘密計算に対応可能な入力フォーマットに変換する秘密計算用変換装置を提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本開示に係る秘密計算用変換装置は、秘密計算の対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを出力する出力部と、を備える。
【０００８】
上記目的を達成するため、本開示に係る秘密計算システムは、秘密計算の対象データに対する処理要求を送る処理要求部と、秘密計算用変換部と、秘密計算実行部と、を備えるシステムであって、秘密計算用変換部は、処理要求部を介して対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを秘密計算実行部に出力する出力部と、を含む。
【０００９】
また、上記目的を達成するため、本開示に係る秘密計算用変換方法は、秘密計算の対象データを秘密計算用データに変換する方法であって、変換方法は、制御部および記憶部を備えるコンピュータにおいて実行され、制御部が、秘密計算の対象データを取得するステップと、制御部が、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶部に記憶するステップと、制御部が、対応テーブルに従って、取得した対象データを秘密計算用データに変換するステップと、制御部が、秘密計算用データを出力するステップと、を備える。
【００１０】
また、上記目的を達成するため、本開示に係る秘密計算用変換プログラムは、上記秘密計算用変換方法をコンピュータに実行させる。
【発明の効果】
【００１１】
本開示によれば、入力データを秘密計算に対応可能な入力フォーマットに変換することができる。
【図面の簡単な説明】
【００１２】
【図１】秘密計算システム１０の概念図である。
【図２】秘密計算システム１０内のモジュールを示す構成図である。
【図３】変換モジュール２６の機能構成を示すブロック図である。
【図４】学習モデルの一例を示す図である。
【図５】要求条件データ３５の一例を示す図である。
【図６】要求条件データ３５の入力画面の一例を示す図である。
【図７】アルゴリズム対応テーブル１１３の一例を示す図である。
【図８】スコア対応テーブル１１４の一例を示す図である。
【図９】秘密計算用データ３７の一例を示す図である。
【図１０】秘密計算用データ３７の別の一例を示す図である。
【図１１】変換モジュール２６の処理の一例を示すフローチャートである。
【図１２】要求条件データ３５の選択的条件に適合する組み合わせの選択方法を説明するための図である。
【図１３】要求条件データ３５の評価条件に適合する組み合わせの選択方法を説明するための図である。
【図１４】秘密計算システム１４１０内のモジュールを示す構成図である。
【図１５】変換モジュール１５２６の機能ブロック図である。
【図１６】変換モジュール１５２６の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【００１４】
＜実施形態１＞
（実施形態１の概要）
本実施形態に係る秘密計算システムは、暗号化したまま計算できる秘密計算を実行するためのシステムであり、秘密計算の対象データを、秘密計算を行うための秘密計算用データに自動的に変換し、秘密計算を行う。
【００１５】
近年、個人情報などの機微データを機械学習させ、生成された学習モデルに基づいたデータ分析が行われている。一方、機微データなど機密性の保持が求められるデータ分析は、暗号化したまま行われることが望ましい。従来、機械学習や秘密計算では、ソフトウェア・ライブラリが利用されるが、ＡＩライブラリによって生成された学習モデルを秘密計算ライブラリに適用するには、秘密計算およびＡＩに関する専門知識が必要であり、また、相応の変換コストがかかるため既存のライブラリを利用するのは容易ではなかった。
【００１６】
そこで、本実施形態に係る秘密計算システムは、ＡＩライブラリに適用して生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに自動的に変換し、秘密計算ライブラリに適用させる。これにより、秘密計算およびＡＩに関する高度な専門知識を有していなくても、既存のライブラリを利用してセキュリティを担保しつつ学習モデルに基づくデータ分析等の演算処理を行うことができる。
【００１７】
（秘密計算システム１０の構成）
図１は、本実施形態に係る秘密計算システム１０の概念図である。図１を参照して、実施形態１に係る秘密計算システム１０の構成について説明する。
【００１８】
秘密計算システム１０は、処理ユニット１２と機能的に接続する記憶ユニット１４を含むコンピュータシステムである。
【００１９】
処理ユニット１２は、ソフトウェアおよび／またはファームウェアのための命令を実行するように構成された１つ、または複数の装置である。処理ユニット１２は、１つ、または複数のコンピュータプロセッサを含んでもよいし、コンピュータプロセッサの分散グループを含んでもよい。
【００２０】
記憶ユニット１４は、コンピュータ可読情報を記憶するように構成された１つ、または複数の装置である。記憶ユニット１４は、メモリ１６と、ストレージ１８を含む。ストレージ１８は、非一時的であって、単なる一時的な電子信号や電磁信号ではない１つ又は複数のコンピュータ可読の記憶装置である。ストレージ１８は、１つ、または複数の（非一時的な）ストレージ媒体、および／または、（非一時的な）ストレージ媒体の分散グループを含みうる。
【００２１】
秘密計算システム１０は、１つ、または複数のコンピュータ、サーバ、ワークステーション等を含んでもよい。これらは、それぞれ独立して、直接又は（ネットワーク接続を含み）間接的に相互接続されている。したがって、秘密計算システム１０は、互いに離れて設けられたプロセッサ、メモリ１６、および／または、ストレージ１８を含みうる。
【００２２】
秘密計算システム１０は、本明細書で説明する方法を行うようにプログラムされてもよいし、当該方法を行うための命令を記憶していてもよい。秘密計算システム１０の記憶ユニット１４は、命令を記憶しており、当該命令は、処理ユニット１２により実行されると、本明細書で説明する１つ、または複数の方法を秘密計算システム１０に行わせる。
【００２３】
本明細書で説明するブロック図およびフローチャート等は、種々の例示的な実施形態による、システム、方法、及びプログラムの実現可能な実施態様を示す。この点において、ブロック図またはフローチャートにおける各ブロックは、モジュール、セグメント、または、コードの一部を表すこともあり、これらは、特定の１つ、または複数の論理機能を実行するための１つ、または複数の実行可能な命令である。なお、いくつかの代替の実施態様において、ブロックに記載した機能は、図示した順序とは異なる順序で実行してもよい。例えば、連続して示されている２つのブロックの機能は、その機能によっては、実質的に同時に行われてもよいし、逆の順序で行われてもよい。
【００２４】
（秘密計算システム１０の機能構成）
図２は、本実施形態に係る秘密計算システム１０内のモジュールを示す構成図である。図２を参照して、秘密計算システム１０の機能構成について説明する。なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム、以下、単に「プログラム」と記載する場合もある。）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはプログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（計算機にそれぞれの手順を実行させるためのプログラム、計算機をそれぞれの手段として機能させるためのプログラム、計算機にそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、「保存する」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１つの計算機によって実行されてもよいし、分散又は並列環境における計算機によって１モジュールが複数の計算機で実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。
【００２５】
また、システム又は装置とは、複数の計算機、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つの計算機、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。
【００２６】
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものであってもよい。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００２７】
図２において、秘密計算システム１０は、データ入力モジュール２２と、機械学習モジュール２４と、変換モジュール２６と、秘密計算モジュール２８とを備える。これらのモジュールは、エージェント、プログラム、プロセス、手順とも呼ばれ、例えば、記憶ユニット１４に保存されており、処理ユニット１２によって実行される命令、および／またはデータを含んでもよい。
【００２８】
秘密計算システム１０は、ＡＩライブラリに基づいて生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに変換し、秘密計算ライブラリに基づいてユーザから要求される処理を行うように構成されている。
【００２９】
データ入力モジュール２２は、「処理要求部」として機能し、秘密計算システム１０のユーザ（不図示）からデータセット３１を受信するように構成されている。データセット３１は、機械学習の対象となる機微データ３３（「第１のデータ」に相当。）および、機械学習モジュール２４において適用するＡＩライブラリの情報３４を含む。
【００３０】
機微データ３３は、入力データと、当該入力データに対する出力データのセットであり、いわゆる教師あり学習のために十分な数のセットが含まれている。なお、本実施形態では、教師データありの場合について説明するが、教師データなしであっても本システムは適用できる。
【００３１】
ＡＩライブラリの情報３４は、例えば、あらかじめＡＩライブラリを使って作成されたソースコードであってもよいし、機械学習モジュール２４において記憶されているＡＩライブラリ２５のうち適用するＡＩライブラリ（アルゴリズム）を指定する情報および当該アルゴリズムに入力するパラメータの情報であってもよいし、機械学習の手法（決定木や、ニューラルネットワークなど）を指定する情報や、当該手法の実行に必要なパラメータの情報、およびそれらのいかなる組合わせであってもよい。
【００３２】
また、データセット３１は、学習モデル３６（後述）に対するデータ分析などの処理を要求するユーザからの処理要求３２や、ユーザから指定された秘密計算に関する条件を示す要求条件データ３５（後述）を含むが、処理要求３２および要求条件データ３５がデータ入力モジュール２２に入力されるタイミングを、機微データ３３やＡＩライブラリの情報３４と異なるタイミングとすることを妨げるものではない。
【００３３】
機械学習モジュール２４は、機微データ３３およびＡＩライブラリの情報３４に基づいて学習モデル３６を生成するよう構成されている。また、機械学習モジュール２４は、ＡＩライブラリ２５を記憶している。
【００３４】
ＡＩライブラリ２５は、複数の機械学習のためのアルゴリズムを含む。例えば、Keras，Tensor Flow，MXNet，Deeplearning4j，CNTK，Theano，ScikitLearn，NumPy，Scipy，Pandasなどである。各機械学習アルゴリズムは、入力されたデータを、当該機械学習アルゴリズムに容易に適用できるようにするため、共通インターフェイスに適合するように構成されることが好ましい。共通インターフェイスは、データの入出力のための共通のフォーマット、各機械学習アルゴリズムのための共通手続呼出等を規定する。例えば、機械学習アルゴリズムは、同じ態様でパラメータ値を出力したり、同様の機能を実行するために、共通形式のデータセット（例えば、特定のファイル形式の構成、特定の行や列の指定を有する構成）に対して機能したりするように構成される。
【００３５】
したがって、ＡＩライブラリ２５の各機械学習アルゴリズムは、似た態様で区別なく用いることができる。すなわち、入力データはアルゴリズムに同様に適用され、関数も同様に呼び出される。さらに、ＡＩライブラリ２５は、拡張可能であり、新たなアルゴリズムを追加して、利用可能とすることができる。
【００３６】
機械学習モジュール２４は、ＡＩライブラリの情報３４が、ＡＩライブラリ２５のうち適用するＡＩライブラリを指定する情報であったり、機械学習の手法を指定する情報であったりする場合は、機微データ３３をＡＩライブラリに適用できる形式に前処理して、機械学習を行う。
【００３７】
学習モデル３６は、機械学習モジュール２４において機微データ３３に対して実行された機械学習により生成された学習モデル（「第１のデータに対する機械学習に関連する第２のデータ」に相当。）であって、機械学習アルゴリズムの仕様データ４１と、パラメータ情報４３との組み合わせを含む。仕様データ４１は、機械学習アルゴリズムの情報であって、適用するアルゴリズムの種類の情報や、層情報などであり、例えば、アルゴリズムが、ＣＮＮ（Convolutional Neural Network：畳み込みニューラルネットワーク）の場合は、ノード数や、第１層：畳み込み層、第２層：活性化層、第３層：プーリング層、第４層：全結合層、第５層：活性化層というような層情報である。また、例えば、アルゴリズムが決定木（ランダムフォレスト）の場合は、木の深さ（木の本数やグラディエントブーストなど、アンサンブル学習に必要な情報）であって、例えば、木の深さ：３という情報である。パラメータ情報４３は、機械学習アルゴリズムにより学習されたパラメータ（重み）であって、例えば、ＣＮＮの場合は、各層の重み係数（結合係数）等を示す。また、例えば、決定木の場合は、木の数、木の深さ、各ノードの分岐事象、分岐条件やノードの構成情報等を示す。なお、上述した仕様データ４１やパラメータ情報４３は、一例であって、これらに限られないことは言うまでもない。
【００３８】
変換モジュール２６は、「秘密計算用変換部」として機能し、秘密計算の対象データを取得し、秘密計算用データに変換するよう構成されている。変換モジュール２６は、例えば、機械学習モジュール２４において生成された学習モデル３６を、秘密計算モジュール２８において秘密計算ライブラリ２９の各アルゴリズムに適用できる入力フォーマットに変換し、秘密計算用データ３７として出力する。
【００３９】
秘密計算用データ３７は、仕様データ４１および要求条件データ３５に基づいて最適な暗号手法の入力フォーマットを示した規定情報４２を含み、規定情報４２は、例えば、機械学習で用いたアルゴリズムや、アルゴリズムにおけるパラメータ（層情報やアーキテクチャ（層構造や各層での処理内容））、オプション（後述）、暗号のパラメータ、暗号の種類、形式、粒度、暗号鍵等を規定するが、秘密計算を実行するソースコードであってもよい。また、秘密計算用データ３７は、当該最適な暗号手法によって、パラメータ情報４３が暗号化された暗号化パラメータ情報４４を含む。変換モジュール２６については図３において詳述する。
【００４０】
秘密計算モジュール２８は、「秘密計算実行部」として機能し、入力データを暗号化したまま、所定の演算処理（四則演算や論理演算等）を実行するよう構成されている。例えば、本実施形態では、データを暗号化したまま演算処理を行うことができる暗号技術である準同型暗号（例えば、格子暗号、ペリエ（Paillier）暗号など）や、マルチパーティ計算（例えば、ガーブレッド回路等）のアルゴリズムを用いる。秘密計算モジュール２８は、秘密計算ライブラリ２９を記憶している。
【００４１】
秘密計算ライブラリ２９は、複数の秘密計算のためのアルゴリズムを含む。例えば、代表的な準同型暗号のライブラリであるHElibの他、SEAL，FV-NFlib，FHEWなどである。また、例えば、マルチパーティ計算のライブラリであるObliVMやABYなどである。なお、秘密計算のための各アルゴリズムは、上述の機械学習アルゴリズムと同様、入力されたデータを、当該秘密計算のためのアルゴリズムに容易に適用できるようにするため、共通インターフェイスに適合するように構成されることが好ましい。さらに、秘密計算ライブラリ２９は、拡張可能であり、新たなアルゴリズムを追加して、利用可能とすることができる。
【００４２】
秘密計算モジュール２８は、変換モジュール２６で出力された秘密計算用データ３７に基づいたアルゴリズムを秘密計算ライブラリ２９から選択し、処理要求３２に基づいた演算を実行する。
【００４３】
（変換モジュール２６の機能構成）
図３は、変換モジュール２６の機能構成を示すブロック図である。図３を参照して、変換モジュール２６の機能構成について説明する。
【００４４】
変換モジュール２６は、「秘密計算用変換装置」に相当し、取得部１００と、記憶部１１０と、変換処理部１２０と、出力部１３０と、を備える。
【００４５】
取得部１００は、秘密計算の対象データを取得するよう構成され、本実施形態では、上述の学習モデル３６である。学習モデル３６は、仕様データ４１と、パラメータ情報４３とを含む。また、取得部１００は、秘密計算システム１０のユーザが秘密計算に対して要求する条件を示す要求条件データ３５を取得する。
【００４６】
要求条件データ３５は、秘密計算に関する選択的条件および／またはスコア付けされた複数の評価条件を含む。秘密計算に関する選択的条件は、例えば、秘密計算を行うサーバ等（アーキテクチャ）の数に関する条件であり、１または複数の条件である。また、評価条件は、秘密計算の処理速度、セキュリティレベル、コストに関する条件のうちの少なくとも一つを含み、要求条件データ３５は、少なくとも２つ以上の評価条件の組み合わせを含む。ユーザは、評価条件を、例えば、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を介して入力したり、１０段階評価の数値によって入力したりしてもよい。
【００４７】
記憶部１１０は、秘密計算を行うための暗号手法を示す入力フォーマットを規定した対応テーブル１１２を記憶している。対応テーブル１１２は、アルゴリズム対応テーブル１１３と、スコア対応テーブル１１４とを含む。アルゴリズム対応テーブル１１３は、機械学習アルゴリズムの情報と、当該アルゴリズムと組み合わせ可能な１つ、または複数の暗号手法とが対応付けられたテーブルである。また、スコア対応テーブル１１４は、暗号手法のうちの暗号の種類や形式等について、ユーザに要求される条件とスコア付けされたテーブルである。
【００４８】
変換処理部１２０は、学習モデル３６を、対応テーブル１１２に従って、秘密計算用データ３７に変換するように構成され、変換部１２１と、暗号化部１２２とを含む。秘密計算用データ３７は、規定情報４２と暗号化パラメータ情報４４とを含む。
【００４９】
より具体的には、変換部１２１は、対応テーブル１１２と、要求条件データ３５とに基づいて、仕様データ４１を、秘密計算用の入力フォーマットの規定情報４２に変換する。また、暗号化部１２２は、当該入力フォーマットで規定される暗号手法でパラメータ情報４３を暗号化し、暗号化パラメータ情報４４とする。なお、暗号化部１２２は、鍵管理サーバ（不図示）から暗号化で用いる鍵（公開鍵）を取得し、暗号化で用いた鍵を示す情報を規定情報４２に含ませる。
【００５０】
出力部１３０は、変換処理部１２０において変換された秘密計算用データ３７を秘密計算モジュール２８（図２参照）に出力する。
【００５１】
（データ構造）
以下、図４〜図１０を参照して、上述した各データのデータ構造について説明する。
図４は、学習モデルの一例を示す図である。図４（ａ）および図４（ｂ）は、それぞれ異なる学習モデルの例を示している。上述したように、学習モデルは、仕様データおよびパラメータ情報から構成される。
【００５２】
図４（ａ）の例では、仕様データ４０１は、項目「アルゴリズム」と項目「層情報」とを含み、「アルゴリズム」として「ＣＮＮ(畳み込みニューラルネットワーク)」、「層情報」として「第１層：畳み込み層」、「第２層：活性化層」、「第３層：プーリング層」、「第４層：全結合層」、「第５層：活性化層」が記載されている。なお、層情報は、これらに限られず、活性化関数の情報など演算に関する情報を含む。
【００５３】
また、パラメータ情報４０３は、項目「データファイル」を含み、機械学習によって求められたネットワーク内のパラメータ（重み係数など）が記載されたファイル名やパス等が記載される。図４（ａ）の例では、ファイル名「weight03.param」が記載されている。
【００５４】
図４（ｂ）の例では、仕様データ４１１は、項目「アルゴリズム」と項目「木の深さ」とを含み、「アルゴリズム」として「決定木」、「木の深さ」として「３」が記載されている。また、パラメータ情報４１３は、上述したように、機械学習によって求められた決定木のパラメータ（分岐事象、分岐条件など）が記載されたファイル名やパス等が記載される。図４（ｂ）の例では、ファイル名「weight23.param」が記載されている。
【００５５】
図５は、要求条件データ３５の一例を示す図である。要求条件データ３５は、秘密計算に関する選択的条件およびスコア付けされた複数の評価条件から構成される。図５の例では、選択的条件として項目「サーバ数」が「２」、評価条件として項目「速度」が「８」、「機密性」が「４」、「コスト」が「３」と記載されている。なお、図５の例では、選択的条件は、「サーバ数」の１つであるが、複数の項目を条件として設定してもよい。
【００５６】
評価条件は、「速度」、「機密性」、「コスト」に限られず、様々な判断基準を設定してもよい。また、各評価条件は、例えば、１０段階評価で優先度が高いほど大きな数値を設定するなどしてユーザが入力する。なお、スコア付けは、１０段階評価に限られず、優先度が区別できるものであれば、任意の形式であってよい。例えば、コストについて、具体的な金額や計算リソース、通信量等によって示したり、機密性について、セキュリティレベル（Ｐマークレベル、国家機密レベル等）を具体的に示したりしてもよい。
【００５７】
図６は、要求条件データ３５の入力画面の一例を示す図である。図６において、入力画面５００は、秘密計算に関する「速度」、「機密性」、「コスト」の評価条件を入力するための、グラフィカル・ユーザ・インタフェース（ＧＵＩ）の一例を示している。スライドバー５０２，５０４，５０６によって、条件の重み付けを行うことができる。スライドバー５０２，５０４，５０６では、それぞれボタン５０３，５０５，５０７を左右にスライドさせて動かし、例えば、左端に近いほど重みを小さく（優先度を低く）、右端に近いほど重みを大きく（優先度を高く）設定することができる。図６の例では、「速度：８」、「機密性：４」、「コスト：３」を示している。スライドバーで重み付けを行うことによりユーザは柔軟な条件設定を行うことができ、条件を入力する際に有用である。
【００５８】
図６において、入力画面５１０は、サーバ数を入力するためのＧＵＩの一例を示している。入力プルダウン５１２は、サーバ数を選択するためのプルダウンであり、例えば、サーバ数が２であることを入力する場合は、入力プルダウン５１２により「２」を選択する。なお、選択的条件を入力するためのインターフェイスはプルダウンに限られず、ラジオボタンや、テキスト入力であったりしてもよい。
【００５９】
なお、要求条件データ３５の入力方法は、上述のようなＧＵＩに限定されず、コマンドライン・インターフェース（ＣＬＩ）等の他の方法を用いてもよいことは言うまでもない。
【００６０】
図７は、アルゴリズム対応テーブル１１３の一例を示す図である。アルゴリズム対応テーブル１１３は、複数の暗号手法を示す暗号テーブル６０２と、機械学習アルゴリズムの仕様データに適用可能な上記暗号手法の組み合わせを示す組み合わせテーブル６０４とを含む。
【００６１】
暗号テーブル６０２は、項目「番号」、「暗号種類」、「暗号形式」、「暗号粒度」、「アーキテクチャ（サーバ数）」、「オプション（ブートストラップ）」、「オプション（ガーブレッド回路）」、「オプション（紛失通信）」等を含む。なお、各項目は一例であって、上記以外の項目を含むことを妨げない。
【００６２】
項目「番号」は、後述する「暗号種類」、「暗号形式」、「暗号粒度」、「アーキテクチャ（サーバ数）」、「オプション（ブートストラップ）」、「オプション（ガーブレッド回路）」、「オプション（紛失通信）」の組み合わせで示される暗号手法を識別する識別子である。
【００６３】
項目「暗号種類」は、暗号の種類を示しており、例えば、格子暗号やペリエ暗号、ＴＦＨＥ暗号などである。
【００６４】
項目「暗号形式」は、上述の各暗号種類における形式を示しており、扱うことができる乗算の回数や、暗号のベースとなる問題、暗号文の表現形式などによって分類される。例えば、格子暗号の場合は、ＢＧＶ形式、ＨＥＡＡＮ形式、ＧＳＷ形式等の形式がある。
【００６５】
項目「暗号粒度」は、暗号化を行うデータの単位であり、例えば、ビットごと、数字ごと、ベクトルごと、などである。
【００６６】
項目「アーキテクチャ（サーバ数）」は、秘密計算を行うサーバ数を示し、１または１より大きい数で示される。
【００６７】
項目「オプション（ブートストラップ）」は、格子暗号で演算ごとに暗号文に付加されるノイズを解消するための手法であるブートストラップ(bootstrapping)の適用の有無を示す。
【００６８】
項目「オプション（ガーブレッド回路）」は、演算をビット演算回路に分割し、それらを暗号化して複数サーバで計算するガーブレッド回路（Garbled Circuit））の適用の有無を示す。
【００６９】
項目「オプション（紛失通信）」は、各サーバが情報を秘匿しながらデータをやり取りする紛失通信の適用の有無を示す。
【００７０】
上記項目で組み合わされた暗号手法は、時間計算量が増えるものの空間計算量が減る、計算速度は遅くなるが、乗算回数の上限が小さくない、など一長一短の特徴があり、機械学習アルゴリズムの仕様データとユーザが入力する要求条件とに基づいて最適な暗号手法が決定される。決定方法については後述する。
【００７１】
図７において、暗号テーブル６０２の番号「１」は、「暗号種類：格子暗号」、「暗号形式：ＢＧＶ」、「暗号粒度：ベクトル」、「アーキテクチャ（サーバ数）：２」、「オプション（ブートストラップ）：無」、「オプション（ガーブレッド回路）：有」、「オプション（紛失通信）：有」を示しており、当該組み合わせは、準同型暗号と秘密分散のハイブリッド型の暗号手法である。
【００７２】
また、暗号テーブル６０２の番号「２」は、「暗号種類：格子暗号」、「暗号形式：ＨＥＡＡＮ」、「暗号粒度：行列」、「アーキテクチャ（サーバ数）：３」、「オプション（ブートストラップ）：有」、「オプション（ガーブレッド回路）：無」、オプション（紛失通信）：有」を示しており、当該組み合わせは、準同型暗号型の暗号手法である。
【００７３】
また、暗号テーブル６０２の番号「３」は、「暗号種類」、「暗号形式」、「暗号粒度」、「オプション（ブートストラップ）」が「−（NULL）」、「アーキテクチャ（サーバ数）：３」、「オプション（ガーブレッド回路）：有」、「オプション（紛失通信）：無」を示しており、当該組み合わせは、秘密分散型の暗号手法である。
【００７４】
また、暗号テーブル６０２の番号「４」は、「暗号種類：ペリエ」、「暗号形式：−（NULL）」、「暗号粒度：要素」、「アーキテクチャ（サーバ数）：１」、「オプション（ブートストラップ）：無」、「オプション（ガーブレッド回路）：−（NULL）」、「オプション（紛失通信）：有」を示している。
【００７５】
組み合わせテーブル６０４は、項目「アルゴリズム」、「層（乗算回数）」、「活性化層」、「組み合わせ可能な暗号手法番号」を含む。なお、各項目は一例であって、上記以外の項目を含むことを妨げない。
【００７６】
項目「アルゴリズム」は、機械学習で用いられたアルゴリズム名を示す。項目「層（乗算回数）」は、線形変換層で行われる乗算の総数を示す。項目「活性化層」は、活性化関数を示す。項目「組み合わせ可能な暗号手法番号」は、上述した「アルゴリズム」、「層（乗算回数）」、「活性化層」の機械学習アルゴリズムについて、暗号テーブル６０２で示される各暗号手法のうち、組み合わせ可能な手法の番号を示す。
【００７７】
図７において、組み合わせテーブル６０４の「アルゴリズム：ＮＮ（ニューラルネットワーク）」、「層（乗算回数）：１０以上」、「活性化層：ＲｅＬＵ」で示される機械学習アルゴリズムについては、暗号テーブル６０２の番号「１」，「２」，「３」，「４」の暗号手法が組み合わせ可能であることを示している。
【００７８】
また、組み合わせテーブル６０４の「アルゴリズム：ＮＮ（ニューラルネットワーク）」、「層（乗算回数）：１０未満」、「活性化層：ＲｅＬＵ」で示される機械学習アルゴリズムについては、暗号テーブル６０２の番号「１」，「２」の暗号手法が組み合わせ可能であることを示している。
【００７９】
また、組み合わせテーブル６０４の「アルゴリズム：ＮＮ（ニューラルネットワーク）」、「層（乗算回数）：１０以上」、「活性化層：Ｔａｎｈ」で示される機械学習アルゴリズムについては、暗号テーブル６０２の番号「３」，「４」，「５」，「６」（番号「５」、「６」は暗号テーブル６０２において不図示）の暗号手法が組み合わせ可能であることを示している。
【００８０】
また、組み合わせテーブル６０４の「アルゴリズム：決定木」、「層（乗算回数）：１０未満」、「活性化層：−（NULL）」で示される機械学習アルゴリズムについては、暗号テーブル６０２の番号「１１」，「１２」，「１３」（番号「１１」〜「１３」は暗号テーブル６０２において不図示）の暗号手法が組み合わせ可能であることを示している。
【００８１】
図８は、スコア対応テーブル１１４の一例を示す図である。上述の暗号テーブル６０２の各項目と、計算の処理速度、機密性、コストとが対応付けられている。
【００８２】
例えば、項目「暗号種類」および「形式」の組み合わせの暗号の特徴に基づいて、システムの開発者側で予め「速度」、「機密性」、「コスト」についてそれぞれスコア付けされている。図８の例では、「暗号種類：格子」と「暗号形式：ＢＧＶ」との組み合わせ８０１については、「速度：４」、「機密性：８」、「コスト：５」のようにスコア付けされており、計算速度は劣るが、機密性は優れた暗号手法であることが示されている。また、「暗号種類：ペリエ」と、「暗号形式：−（ＮＵＬＬ）」の組み合わせ８０４については、「速度：９」、「機密性：４」、「コスト：５」のようにスコア付けされており、計算速度が優れた暗号手法であることが示されている。
【００８３】
同様に、項目「暗号粒度」と「形式」の組み合わせ８１１〜８１５や、オプション８２１〜８２４のそれぞれについて、「速度」、「機密性」、「コスト」がそれぞれスコア付けされている。なお、図８には示されていないが、秘密分散についてもスコア付けされていてもよい。
【００８４】
図９は、秘密計算用データ３７の一例を示す図である。図９において、秘密計算用データ９００は、例えば、図４（ａ）で示した学習モデルを変換した秘密計算用データである。
【００８５】
秘密計算用データ９００は、規定情報９０２と暗号化パラメータ情報９０４とから構成される。図９の例では、規定情報９０２は、暗号テーブル６０２から、要求条件データ３５や仕様データ４１等に基づいて抽出された組み合わせ（暗号手法）と、当該組み合わせに関連付けられたオプションを実行するためのオプション情報とを示しているが、層情報や、アーキテクチャ（層構造や、各層での処理内容）、暗号化において用いられるパラメータ（不図示）や暗号化に用いた鍵を示す情報（不図示）も含む。すなわち、規定情報９０２は、秘密計算を行うための入力フォーマットに従ったデータを示している。
【００８６】
図９の例では、抽出された組み合わせは、「暗号種類：格子暗号」、「暗号形式：ＢＧＶ」、「暗号粒度：行」、「アーキテクチャ（サーバ数）：２」、「オプション（ブートストラップ）：無」、「オプション（ガーブレッド回路）：有」を示しており、格子暗号とガーブレッド回路を組み合わせたハイブリッド型秘密計算の構成である。また、図９の例では、オプション情報として示される計算手順の第２層でオプション（ガーブレッド回路）を実行することが示されている。「オプション」は、準同型暗号を用いると計算量が大きくなる、もしくは、根本的に演算が実行できない層において適用されるようあらかじめ条件が設定されている。例えば、活性化層の種類（例えば、シグモイドなど）によっては計算量（乗算数）が大きくなるため、所定量以上の計算量の場合は、「オプション」としてガーブレッド回路が適用される。また、比較演算が必要な、ReLuなどの活性化関数やマックスプーリングなどの層は、根本的に準同型暗号では実行できないため、「オプション」が適用される。比較演算を含まないような活性化層やプーリング層に関しては、計算量に基づいて、「オプション」を適用するか条件設定されていてもよい。また、全結合層などの線形層に関しては、原則として「オプション」は適用されない。なお、「オプション」の適用は、必要に応じてユーザが決定できるよう構成しておいてもよい。
【００８７】
学習モデルに含まれるパラメータ情報（重み）は、規定情報９０２に従って暗号化部１２２において暗号化され、暗号化パラメータ情報９０４に変換される。
【００８８】
図１０は、秘密計算用データ３７の別の一例を示す図である。図１０において、秘密計算用データ９１０は、例えば、図４（ｂ）で示した学習モデルを変換した秘密計算用データである。
【００８９】
秘密計算用データ９１０は、規定情報９１２と暗号化パラメータ情報９１４とから構成される。図１０の例において、規定情報９１２は、暗号テーブル６０２から、要求条件データ３５や仕様データ４１等に基づいて抽出された組み合わせ（暗号手法）と、当該組み合わせに関連付けられたオプションを実行するためのオプション情報とを示しているが、層情報や、アーキテクチャ（層構造や、各層での処理内容）、暗号化において用いられるパラメータ（不図示）や暗号化に用いた鍵を示す情報（不図示）も含む。すなわち、規定情報９１２は、秘密計算を行うための入力フォーマットに従ったデータを示している。
【００９０】
図１０の例では、抽出された組み合わせは、「暗号種類：ペリエ」、「暗号粒度：要素」、「アーキテクチャ（サーバ数）：３」、「オプション（シークレットシェアリング）：有」、「オプション（紛失通信）：有」を示しており、ペリエ暗号と紛失通信を組み合わせたハイブリッド型秘密計算の構成である。また、図１０の例では、オプション情報として示される計算手順のステップ２において、サーバ１，２，３間で「シークレットシェアリング」が実行され、計算手順のステップ３において、サーバ１および２間で「紛失通信」が実行される。なお、「オプション」の「シークレットシェアリング」は、複数サーバにおいて実行されるため、アーキテクチャ（サーバ数）が決定されると、どのサーバでどのように情報を分割するかをあらかじめ設定しておいた条件に従って適用される。また、「オプション」を実行するのに必要なサーバ数は、ユーザによって選択的条件として指定、もしくは、「オプション」に基づいてあらかじめ設定しておいてもよい。
【００９１】
学習モデルに含まれるパラメータ情報は、規定情報９１２に従って暗号化部１２２において暗号化され、暗号化パラメータ情報９１４に変換される。
【００９２】
以上、秘密計算システム１０において扱うデータ構造について説明した。
【００９３】
図１１は、変換モジュール２６の処理の一例を示すフローチャートである。図１１及び図３を参照して、変換モジュール２６における処理について説明する。
【００９４】
ステップＳ１０２において、取得部１００は、要求条件データ３５および学習モデル３６を取得する。学習モデル３６は、秘密計算モジュール２８で実行される秘密計算の対象データである。取得部１００は、取得した要求条件データ３５および学習モデル３６を変換処理部１２０へ送る。
【００９５】
ステップＳ１０４において、変換処理部１２０の変換部１２１は、学習モデル３６に含まれる仕様データ４１について、記憶部１１０のアルゴリズム対応テーブル１１３（暗号テーブル６０２および組み合わせテーブル６０４）を参照して、適用できる暗号手法の組み合わせを抽出する。
【００９６】
ステップＳ１０６において、変換部１２１は、要求条件データ３５とスコア対応テーブル１１４を参照して、ステップＳ１０４において抽出された組み合わせの中から要求条件データ３５に適合する暗号手法の組み合わせを選択する。要求条件データ３５に適合する暗号手法の組み合わせの選択方法については、図１２及び図１３を用いて後述する。
【００９７】
ステップＳ１０８において、変換部１２１は、ステップＳ１０６において選択された暗号手法の組み合わせに基づいて、学習モデル３６を秘密計算用データ３７に変換する。すなわち、仕様データ４１を規定情報４２に変換する。また、暗号化部１２２は、パラメータ情報４３を、選択された暗号手法に従って暗号化し、暗号化パラメータ情報４４とする。
【００９８】
ステップＳ１１０において、出力部１３０は、規定情報４２および暗号化パラメータ情報４４を含む秘密計算用データ３７を出力する。
【００９９】
図１２は、要求条件データ３５の選択的条件に適合する組み合わせの選択方法を説明するための図である。図１２において、リスト１００２および１００４、要求条件データ１００３が示されている。
【０１００】
リスト１００２は、例えば、図１１のステップＳ１０４において、アルゴリズム対応テーブル１１３（暗号テーブル６０２および組み合わせテーブル６０４）を参照して抽出された暗号手法の組み合わせを示す。すなわち、仕様データに基づき、組み合わせテーブル６０４を参照して、適用可能な暗号手法を暗号テーブル６０２から抽出したもので、番号「＃０１」、「＃０２」、「＃０３」で識別される暗号手法である。
【０１０１】
要求条件データ１００３は、ユーザからの選択的条件として「サーバ数：１」、評価条件として「速度：８」、「機密性：４」、「コスト：３」のようにスコア付けされている。
【０１０２】
リスト１００４は、リスト１００２の暗号手法の中から要求条件データ１００３のうち選択的条件に適合する暗号手法を抽出したものである。すなわち、まず、要求条件データ１００３のうち、選択的条件である「サーバ数」に着目する。リスト１００２の暗号手法のうち、番号「＃０１」はサーバ数が「２」であり、ユーザの要求するサーバ数「１」と適合しないので、番号「＃０１」の暗号手法は除外する。したがって、リスト１００４には、選択的条件に適合する番号「＃０２」、「＃０３」の組み合わせが抽出される。なお、選択的条件に適合する（サーバの）数に幅を持たせるようにして組み合わせを抽出するようにしてもよい。例えば、図１２において、選択的条件としてユーザの要求するサーバ数「１」の「±１」の範囲で適合する番号「＃０１」、「＃０２」、「＃０３」の組み合わせを抽出してもよい。これにより、組み合わせの選択方法に柔軟性を持たせることができる。
【０１０３】
次いで、図１２で抽出された暗号手法の組み合わせから、要求条件データ１００３の評価条件に基づいて、暗号手法の組み合わせを選択する方法について説明する。
【０１０４】
図１３は、要求条件データ３５の評価条件に適合する組み合わせの選択方法を説明するための図である。図８において述べたように、スコア対応テーブル１１４において、暗号種類および形式、暗号粒度および形式、オプション等のそれぞれにつき、各特徴に基づいて速度、機密性、コストには予め（例えば、開発者や機械学習などによって）１０段階評価によるスコア付けがされている。そこで、リスト１００４の各組み合わせの暗号手法について、スコア対応テーブル１１４に基づき、ユーザからの要求条件データ１００３の評価条件に従ったスコアを算出し、スコアの最も高い暗号手法を、最適な暗号手法として選択する。
【０１０５】
図１３において例えば、番号「＃０２」のスコア算出方法について具体的に説明する。図示するように、「暗号種類」、「暗号形式」、「暗号粒度」の組み合わせ８０１，８１１、オプション８２１，８２２について「速度」、「機密性」、「コスト」のスコア付けがされている。この各スコアをユーザの評価条件で重み付けした重み平均を、暗号手法の「スコア」とする。なお、図１３で説明するスコアリングの方法は一例であって、この方法に限定されないのは言うまでもない。
【０１０６】
例えば、「速度」については、ユーザの評価条件は、「８」である。また、「暗号種類：格子」、「暗号形式：ＢＧＶ」については「４」、「暗号粒度：要素」については「４」、「オプション：ブートストラップ」については「２」、「オプション：紛失通信」については「５」である。したがって、「速度」に関する重み平均は、図示するように、「8/10×(4+4+2+5)/4=3」である。同様に、「機密性」および「コスト」についても計算し、「速度」、「機密性」「コスト」の算出結果の和「７．３」が「＃０２」のスコアとなる。
【０１０７】
同様に、番号「＃０３」の暗号手法について重み平均を算出すると、スコアが「８．０」となる。番号「＃０２」と「＃０３」のスコアを比較すると、番号「＃０３」のスコアの方が大きい。したがって、図１３の例では、番号「＃０３」の組み合わせの暗号手法が、要求条件データ３５を満たす暗号手法として選択される。
【０１０８】
（効果の説明）
上述したように、本実施形態に係る秘密計算システムは、ＡＩライブラリに適用して生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに自動的に変換し、秘密計算ライブラリに適用させる。これにより、秘密計算およびＡＩに関する高度な専門知識を有していなくても、既存のライブラリを利用してセキュリティを担保しつつ学習モデルに基づくデータ分析等の演算処理を行うことができる。
【０１０９】
＜実施形態２＞
（実施形態２の概要）
実施形態１に係る秘密計算システムの変換モジュールは、機械学習された学習モデルを秘密計算ライブラリに適用できる入力フォーマットに変換した。これに対し、本実施形態に係る秘密計算システムの変換モジュールは、機微データ（生データ）および秘密計算モジュールにおいて実行される機械学習の情報（仕様データ）を、秘密計算ライブラリに適用できる入力フォーマットに変換する。これにより、高度な専門知識を有していなくても、既存の秘密計算ライブラリを利用して、セキュリティが担保された状態で、機微データの機械学習を行うことができ、また、当該機械学習により生成された学習モデルに基づくデータ分析等の演算処理も行うことができる。機微データが暗号化された状態で学習モデルを生成できるので、より機密性が高い環境でデータを扱うことができる。
【０１１０】
図１４は、実施形態２に係る秘密計算システム１４１０内のモジュールを示す構成図である。図１４において、秘密計算システム１４１０は、データ入力モジュール１４２２と、変換モジュール２６と、秘密計算モジュール１４２８とを備える。なお、図２と共通する構成については同じ符号を付し、説明を省略する。
【０１１１】
秘密計算システム１４１０は、機械学習させる機微データおよび当該機械学習の情報を、秘密計算ライブラリに適用できる入力フォーマットに変換する。そして、秘密計算ライブラリに基づいて、機械学習を実行して学習モデルを生成し、ユーザから要求されるデータ分析等の処理を行うように構成されている。
【０１１２】
データ入力モジュール１４２２は、「処理要求部」として機能し、秘密計算システム１４１０のユーザ（不図示）からデータセット１４３１を受信するように構成されている。データセット１４３１は、機械学習の対象となる機微データ３３および、当該機械学習の仕様データ１４３４を含む。また、データセット１４３１は、秘密計算モジュール１４２８に対するユーザからの処理要求３２および秘密計算に対する要求条件データ３５を含む。
【０１１３】
仕様データ１４３４は、機械学習ライブラリを使って生成されたソースコード（バイナリファイル）、または、機械学習に用いるアルゴリズムやパラメータの情報である。また、仕様データ１４３４は、学習時に使用する最適化アルゴリズム（ＳＧＤ、Ａｄａｍ、など）や学習率（０〜１までの数）を含む。
【０１１４】
変換モジュール２６は、対応テーブル１１２（組み合わせテーブル６０４（図７参照）には、例えば、学習時に使用する最適化アルゴリズム等を示す項目も含む）に基づいて、仕様データ１４３４を規定情報１４４２に変換する。規定情報１４４２は、例えば、機械学習で用いたアルゴリズムや、アルゴリズムにおけるパラメータ（層情報やアーキテクチャ（層構造や各層での処理内容））、オプション、暗号のパラメータ、暗号の種類、形式、粒度、暗号鍵、学習時に使用する最適化アルゴリズムや学習率等を規定する。
【０１１５】
また、規定情報１４４２で規定される暗号手法に従って、暗号化部１２２は機微データ３３を暗号化して、暗号化機微データ１４４４とする。すなわち、変換モジュール２６は、機微データ３３および仕様データ１４３４を、規定情報１４４２および暗号化機微データ１４４４を含む秘密計算用データ１４３７に変換する。なお、機微データ３３は、変換モジュール２６において暗号化されるのではなく、秘密計算モジュール１４２８において、規定情報１４４２で規定される暗号手法に従って暗号化される構成にしてもよい。
【０１１６】
秘密計算モジュール１４２８は、学習部１４２５と、演算部１４２７と、秘密計算ライブラリ１４２９とを含む。学習部１４２５は、規定情報１４４２に基づいて、秘密計算ライブラリ１４２９を適用し、暗号化機微データ１４４４について機械学習を行う。また、演算部１４２７は、処理要求３２に応じて、当該機械学習により生成された学習モデルに基づいたデータ分析等の演算を行う。
【０１１７】
（効果の説明）
上述したように、本実施形態では、機微データ（生データ）及び秘密計算モジュールにおいて実行される機械学習の情報（仕様データ）を、秘密計算ライブラリに適用できる入力フォーマットに変換する。高度な専門知識を有していなくても、既存の秘密計算ライブラリを利用して、機微データの機械学習を行うことができ、機微データが暗号化された状態で学習モデルを生成できるので、より機密性が高い環境でデータを扱うことができる。
【０１１８】
＜実施形態３＞
（実施形態３の概要）
実施形態１および２に係る秘密計算システムの変換モジュールは、アルゴリズム対応テーブルを参照して抽出された暗号手法の組み合わせの中から、要求条件データとスコア対応テーブルとに基づいて算出されたスコアに従って、最適な暗号手法の組み合わせを選択した。これに対し、本実施形態に係る秘密計算システムの変換モジュールは、要求条件データと上記選択された暗号手法の組み合わせとを学習データとして記憶し、要求条件データと暗号手法の組み合わせとの相関関係を学習した学習モデルを生成する。そして、この生成した学習モデルをスコア対応テーブルの代わりに用いることにより、スコアを算出することなく、アルゴリズム対応テーブルを参照して抽出された暗号手法の組み合わせの中から最適な暗号手法の組み合わせを選択する。スコアを算出することなく最適な暗号手法の組み合わせを選択することが出来るので、計算量を削減することができる。また、スコアに従った決定的な選択よりも、より柔軟な確率的な選択が可能になり、よりアルゴリズムやデータおよびユーザの要求等に適した手法を選択することができる。
【０１１９】
図１５は、実施形態３に係る変換モジュール１５２６の機能ブロック図である。図１５に示す変換モジュール１５２６は、変換処理部１５２０と、学習部１５００とを含み、記憶部１５１０が学習データ１５１５および学習モデル１５１６を記憶する。すなわち、秘密計算システム１０の変換モジュール２６と、暗号手法の組み合わせの選択に係る構成が相違する。なお、図３と共通する構成については同じ符号を付し、説明を省略する。
【０１２０】
変換処理部１５２０は、暗号化部１５２２と、変換部１５２１とを含む。
【０１２１】
学習データ１５１５は、要求条件データ３５と、当該要求条件データ３５に基づいて、選択された最適な暗号手法の組み合わせとが対となって格納されている。
【０１２２】
学習部１５００は、学習データ１５１５に基づいて、要求条件データ（特に、評価条件）と、変換部１５２１に選択された暗号手法の組み合わせとの相関関係を学習し（図１６において詳述）、学習結果を学習モデル１５１６に格納する。なお、変換部１５２１に選択された暗号手法の組み合わせの代わりに、要求条件データに応じて、ユーザ（秘密計算等の専門知識を有する者）等が選択した組み合わせに基づいて相関関係を学習してもよい。
【０１２３】
学習モデル１５１６は、上述のように、要求条件データ３５と暗号手法の組み合わせとの相関関係が示されるデータである。変換部１５２１は、アルゴリズム対応テーブル１１３に基づいて抽出した暗号手法の組み合わせについて、スコア対応テーブル１１４に代わって、学習モデル１５１６に基づいて、最適な暗号手法の組み合わせを選択する。
【０１２４】
図１６は、変換モジュール１５２６の処理の一例を示すフローチャートである。図１６を参照して、変換モジュール１５２６における処理について説明する。なお、処理の順序は一例であって、順序を限定するものではない。例えば、以下の説明では、学習モデル１５１６は、ステップＳ２１４において学習データ１５１５が記憶された後で生成（更新）されているが、ステップＳ２１０において学習モデル１５１６を用いる前に生成（更新）されるように構成してもよい。
【０１２５】
ステップＳ２０２において、取得部１００は、要求条件データ３５および学習モデル３６を取得する。学習モデル３６は、秘密計算モジュール２８で実行される秘密計算の対象データである。取得部１００は、取得した要求条件データ３５および学習モデル３６を変換処理部１５２０へ送る。なお、ユーザから暗号手法の項目として必須条件を受け付け、要求条件データ３５に含ませるようにしてもよい。
【０１２６】
ステップＳ２０４において、変換処理部１５２０の変換部１５２１は、学習モデル３６に含まれる仕様データ４１について、記憶部１５１０の対応テーブル１１２（すなわち、アルゴリズム対応テーブル１１３（暗号テーブル６０２および組み合わせテーブル６０４））を参照して、適用できる暗号手法の組み合わせを抽出する。
【０１２７】
ステップＳ２０６において、変換部１５２１は、学習データ１５１５に格納された要求条件データと暗号手法の組み合わせとの対となるデータが所定量以上であるか判断する。学習データ１５１５が所定量以上ではないと判断した場合（ステップＳ２０６において、ＮＯ）、ステップＳ２０８において、変換部１５２１は、要求条件データ３５とスコア対応テーブル１１４を参照して、ステップＳ２０４において抽出された組み合わせの中から要求条件データ３５に適合する暗号手法の組み合わせを選択する。すなわち、学習データが極端に少ない場合は、学習の精度が悪いため、学習モデル１５１６ではなく、図１１において説明したように、スコア対応テーブル１１４を参照して暗号手法の組み合わせを選択する。なお、後述するステップＳ２１２において、ユーザから暗号手法の組み合わせの指定を受け付けるために、暗号手法の組み合わせを条件の適合度の高い順などで複数選択するようにしてもよい。
【０１２８】
一方、学習データ１５１５が所定量以上であると判断した場合（ステップＳ２０６において、ＹＥＳ）、ステップＳ２１０において、変換部１５２１は、学習モデル１５１６に基づいて、要求条件データ３５に適合する組み合わせを選択する。なお、変換部１５２１が選択する組み合わせは、後述するステップＳ２１２においてユーザに提示し、どれを秘密計算用データの変換のために適用するかユーザに選択させるため、複数選択するように構成する。
【０１２９】
ステップＳ２１２において、変換部１５２１は、学習モデル１５１６に基づいて選択した暗号手法の組み合わせをユーザに表示部（不図示）等を介して提示する。ユーザは提示された暗号手法について、必要に応じて、要求条件データ３５に適合しているか判断する。学習モデル１５１６が精度よく生成されている場合は、ユーザの要求条件に適合している可能性が高いが、精度が悪い場合は、ユーザの要求条件に適合していない可能性があるからである。なお、暗号手法の組み合わせを提示する際、各組み合わせのコストや速度、機密性等も併せて表示するようにしてもよい。また、選択されなかった暗号手法の組み合わせについてもコストや速度、機密性等とともにユーザに示すようにしてもよい。これにより、ユーザは各組み合わせのコスト等について参照することができ、暗号手法の組み合わせの指定（後述）を容易にすることができる。
【０１３０】
変換部１５２１は、ユーザから秘密計算用データの変換のために適用する暗号手法の組み合わせの指定を受け付ける。なお、ユーザの暗号分野やＡＩ分野における専門知識の有無、理解の程度に応じて、ステップＳ２１２の処理を行わないようにしてもよい。専門知識がないユーザには、どの暗号手法の組み合わせが適切なのか判断が困難であるため、そのようなユーザについては、変換部１５２１が一つの組み合わせを選択し、秘密計算用データの変換のために適用する暗号手法の組み合わせとして決定する。例えば、ステップＳ２１０において、変換部１５２１は、暗号手法の組み合わせを複数選択するのではなく、相関関係が最も高い組み合わせを選択する。
【０１３１】
また、ステップＳ２１２において、ユーザから、提示された暗号手法の組み合わせ以外の暗号手法の組み合わせの指定を受け付けるようにしてもよい。例えば、ユーザが要求条件としてコストを最重視していたが、選択されなかった暗号手法の組み合わせのうち（上述のように）表示されたコストが予算以内のものがあった場合、他の評価条件を優先して暗号手法の組み合わせを指定したいこともあり得るからである。
【０１３２】
ステップＳ２１４において、変換部１５２１は、要求条件データ３５およびステップＳ２１２において受け付けた組み合わせの対を学習データ１５１５として記憶部１５１０に記憶させる。すなわち、記憶部１５１０の学習データ１５１５は、暗号手法の組み合わせが選択される都度、データが格納されていくので、学習データの量が増加し、生成される学習モデルの精度が向上する。なお、ステップＳ２１２においてユーザが指定した暗号手法の組み合わせについては、重み付け等により、相関関係が強くなるようにスコアリングを行ってもよい。これにより、より精度よく、暗号手法の組み合わせについての学習モデルを生成することができる。
【０１３３】
ステップＳ２１６において、学習部１５００は、学習データ１５１５から学習モデル１５１６を生成する。なお、上述したように、変換モジュール１５２６の処理において、学習モデル１５１６を生成する順序は、ステップＳ２１４後とは限られない。
【０１３４】
ステップＳ２１８において、変換部１５２１は、選択された暗号手法の組み合わせに基づいて、学習モデル３６を秘密計算用データ３７に変換する。すなわち、仕様データ４１を規定情報４２に変換する。また、暗号化部１５２２は、パラメータ情報４３を、選択された暗号手法に従って暗号化し、暗号化パラメータ情報４４とする。
【０１３５】
ステップＳ２２０において、出力部１３０は、規定情報４２および暗号化パラメータ情報４４を秘密計算用データ３７として出力し、処理は終了する。
【０１３６】
なお、出力された秘密計算用データ３７を秘密計算モジュール２８（図２参照）において実行させた際のパフォーマンス（実行速度・時間、空間計算量、通信量コスト、インスタンス台数、そのスペック等の情報など）を、学習部１５００が学習モデル１５１６を生成するためにフィードバックさせるようにしてもよい。すなわち、要求条件データ３５および暗号手法の組み合わせと、上記パフォーマンスとの相関関係に基づいて学習モデルを生成する。これにより、より最適な暗号手法の組み合わせを確度よく選択することができる。
【０１３７】
（効果の説明）
上述したように、本実施形態では、変換部１５２１は、アルゴリズム対応テーブル１１３に基づいて抽出した暗号手法の組み合わせについて、スコア対応テーブル１１４に代わって、学習モデル１５１６に基づいて、最適な暗号手法の組み合わせを選択する。これにより、抽出された各組み合わせについてのスコアを算出する必要がなくなるため、計算量を削減することができる。
【０１３８】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【０１３９】
１０  秘密計算システム、１２  処理ユニット、１４  記憶ユニット、１６  メモリ、１８  ストレージ、２２  データ入力モジュール、２４  機械学習モジュール、２５  ＡＩライブラリ、２６、１５２６  変換モジュール、２８、１４２８  秘密計算モジュール、２９  秘密計算ライブラリ、１００  取得部、１１０  記憶部、１２０、１５２０  変換処理部、１２１、１５２１  変換部、１２２、１５２２  暗号化部、１３０  出力部、１４２５、１５００  学習部、１４２７  演算部、１５１５  学習データ、１５１６  学習モデル
【要約】
【課題】秘密計算の対象となる入力データを秘密計算ライブラリに対応可能な入力フォーマットに変換する秘密計算用変換装置を提供すること。
【解決手段】
本発明に係る秘密計算用変換装置は、秘密計算の対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを出力する出力部と、を備える。
【選択図】図３【図１】
0006795863.tif 000002
【図２】
0006795863.tif 000003
【図３】
0006795863.tif 000004
【図４】
0006795863.tif 000005
【図５】
0006795863.tif 000006
【図６】
0006795863.tif 000007
【図７】
0006795863.tif 000008
【図８】
0006795863.tif 000009
【図９】
0006795863.tif 000010
【図１０】
0006795863.tif 000011
【図１１】
0006795863.tif 000012
【図１２】
0006795863.tif 000013
【図１３】
0006795863.tif 000014
【図１４】
0006795863.tif 000015
【図１５】
0006795863.tif 000016
【図１６】
0006795863.tif 000017