特許第6795863号(P6795863)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

6795863秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム
<>
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000002
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000003
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000004
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000005
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000006
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000007
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000008
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000009
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000010
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000011
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000012
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000013
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000014
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000015
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000016
  • 6795863-秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6795863
(24)【登録日】2020年11月17日
(45)【発行日】2020年12月2日
(54)【発明の名称】秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20201119BHJP
   G06F 21/62 20130101ALI20201119BHJP
   G06N 20/00 20190101ALI20201119BHJP
【FI】
   G09C1/00 650Z
   G06F21/62
   G06N20/00 130
【請求項の数】12
【全頁数】26
(21)【出願番号】特願2020-10145(P2020-10145)
(22)【出願日】2020年1月24日
【審査請求日】2020年1月24日
【早期審査対象出願】
(73)【特許権者】
【識別番号】518334141
【氏名又は名称】EAGLYS株式会社
(74)【代理人】
【識別番号】100210815
【弁理士】
【氏名又は名称】西田 聡子
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech特許業務法人
(72)【発明者】
【氏名】今林 広樹
(72)【発明者】
【氏名】三原 健太郎
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特開2006−146677(JP,A)
【文献】 特開2010−287055(JP,A)
【文献】 KOLESNIKOV, V., SADEGHI, A. R. and SCHNEIDER, T.,From Dust to Dawn: Practically Effcient Two-Party Secure Function Evaluation Protocols and their Modular Design,Cryptology ePrint Archive,[online],2013年,Report 2010/079,pp.1-26,[2020年5月28日検索],URL,https://eprint.iarc.org/2010/079
【文献】 JUNVEKAR, C., VAIKUNTANATHAN, V. and CHANDRAKASAN, A.,GAZELLE: A Low Latency Framework for Secure Neural Network Inference,Cryptology ePrint Archive,[online],2018年,Report 2018/073,pp.1-17,[2020年5月28日検索],URL,https://eprint.iarc.org/2018/073
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/62
G06N 20/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
秘密計算の対象データを取得する取得部と、
秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、
前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換する変換処理部と、
前記秘密計算用データを出力する出力部と、を備え、
前記対象データは、第1のデータに対する機械学習に関連する第2のデータを少なくとも含み、
前記第2のデータは、前記第1のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記変換処理部は、前記記憶された対応テーブルの中から、前記第2のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算用変換装置。
【請求項2】
前記取得部は、前記秘密計算に対する要求条件データを取得し、
前記変換処理部は、前記抽出した入力フォーマットのうち、前記要求条件データに基づいて選択した入力フォーマットに従って、前記変換を行う、請求項に記載の秘密計算用変換装置。
【請求項3】
前記機械学習の仕様データは、前記機械学習で用いるアルゴリズムに関する情報またはソースコードを含む、請求項に記載の秘密計算用変換装置。
【請求項4】
前記対象データは、前記第1のデータを前記機械学習したデータを含み、
前記変換処理部は、前記変換として、前記機械学習したデータを、前記選択した入力フォーマットで規定する暗号手法に従って暗号化する暗号化部を含む、請求項に記載の秘密計算用変換装置。
【請求項5】
前記対象データは、前記第1のデータを含み、
前記変換処理部は、前記変換として、前記第1のデータを、前記選択した入力フォーマットで規定する暗号手法に従って暗号化する暗号化部を含む、請求項に記載の秘密計算用変換装置。
【請求項6】
前記要求条件データは、秘密計算に関する選択的条件および/またはスコア付けされた複数の評価条件を含み、
前記変換処理部は、前記選択的条件および/または前記スコアに基づいて前記選択される入力フォーマットに従って、前記変換を行う、請求項2から請求項5のいずれか一項に記載の秘密計算用変換装置。
【請求項7】
前記評価条件は、処理速度、セキュリティレベル、コストに関する条件を少なくとも一つ含み、
前記評価条件は、グラフィカル・ユーザ・インタフェース(GUI)を介して入力される、請求項に記載の秘密計算用変換装置。
【請求項8】
前記記憶部は、前記要求条件データおよび当該要求条件データに応じて実行された変換の入力フォーマットを記憶し、
前記記憶された要求条件データと、要求条件データに応じて実行された変換の入力フォーマットとの関係を学習する学習部をさらに備え、
前記変換処理部は、前記学習された関係に従って、前記変換を行う、請求項2から請求項7のいずれか一項に記載の秘密計算用変換装置。
【請求項9】
前記入力フォーマットは、秘密計算のための、暗号の種類、暗号の形式、暗号化するデータの単位、データ構造、処理プロトコル、アーキテクチャのいずれか、またはその組み合わせによって規定されるデータである、請求項1から請求項のいずれか一項に記載の秘密計算用変換装置。
【請求項10】
秘密計算の対象データに対する処理要求を送る処理要求部と、秘密計算用変換部と、秘密計算実行部と、を備える秘密計算システムであって、
前記秘密計算用変換部は、
前記処理要求部を介して前記対象データを取得する取得部と、
秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、
前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換する変換処理部と、
前記秘密計算用データを前記秘密計算実行部に出力する出力部と、を含み、
前記対象データは、第1のデータに対する機械学習に関連する第2のデータを少なくとも含み、
前記第2のデータは、前記第1のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記変換処理部は、前記記憶された対応テーブルの中から、前記第2のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算システム。
【請求項11】
秘密計算の対象データを秘密計算用データに変換する変換方法であって、前記変換方法は、制御部および記憶部を備えるコンピュータにおいて実行され、
前記制御部が、秘密計算の対象データを取得するステップと、
前記制御部が、秘密計算を行うための入力フォーマットを規定した対応テーブルを前記記憶部に記憶するステップと、
前記制御部が、前記対応テーブルに従って、前記取得した対象データを秘密計算用データに変換するステップと、
前記制御部が、前記秘密計算用データを出力するステップと、を備え、
前記対象データは、第1のデータに対する機械学習に関連する第2のデータを少なくとも含み、
前記第2のデータは、前記第1のデータに対する機械学習の仕様データを有し、
前記対応テーブルは、前記機械学習の仕様と前記入力フォーマットとが対応付けられており、
前記制御部は、前記記憶された対応テーブルの中から、前記第2のデータに基づいて、前記機械学習の仕様データに対応する入力フォーマットを抽出し、抽出した入力フォーマットに従って、前記変換を行う、秘密計算用変換方法。
【請求項12】
請求項11に記載の秘密計算用変換方法をコンピュータに実行させるための秘密計算用変換プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラムに関する。
【背景技術】
【0002】
人工知能技術の普及に伴い、個人情報などの機微データを分析する目的で機械学習が活用されるようになっている。例えばデータサイエンティスト等の名称で呼ばれる技術者は、目的や用途に応じた機械学習ライブラリ(「AIライブラリ」とも呼ぶ。)を適用し、機械学習を用いてデータ分析を行っている。
【0003】
一方、情報漏洩防止のため、データを暗号化状態のまま演算することができる暗号技術が知られている。例えば、特許文献1には、加法・減法に対して準同型の性質を持つ暗号関数を利用し、暗号化状態のまま加法、減法、乗法、除法の演算をすることができる公開鍵暗号ベースの秘密計算に関する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−227193号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
機微データなど機密性の保持が求められるデータの分析は、上述のような暗号化状態のまま行われることが望ましい。従来は、秘密計算およびAIに関する専門知識を有する技術者が、事案に応じて、AIライブラリ等によって生成された学習モデルを最適な秘密計算用フォーマットに変換するなどして秘密計算ライブラリに適用できるよう対応していたため、時間と手間がかかり作業効率が悪かった。そこで、専門的な知識がなくとも、AIに関する入力データを秘密計算ライブラリに適用することができる技術(例えば、AIに関するソースコードを秘密計算可能なソースコードに変換することができる、もしくはAIに関する入力データを秘密計算ライブラリが受付可能なフォーマット(データ暗号化、その暗号方式、最適化された入力構造など)に変換することができる等)の開発が期待されている。
【0006】
本開示は、上記課題を解決すべくなされたものであって、その目的は、入力データを秘密計算に対応可能な入力フォーマットに変換する秘密計算用変換装置を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本開示に係る秘密計算用変換装置は、秘密計算の対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを出力する出力部と、を備える。
【0008】
上記目的を達成するため、本開示に係る秘密計算システムは、秘密計算の対象データに対する処理要求を送る処理要求部と、秘密計算用変換部と、秘密計算実行部と、を備えるシステムであって、秘密計算用変換部は、処理要求部を介して対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを秘密計算実行部に出力する出力部と、を含む。
【0009】
また、上記目的を達成するため、本開示に係る秘密計算用変換方法は、秘密計算の対象データを秘密計算用データに変換する方法であって、変換方法は、制御部および記憶部を備えるコンピュータにおいて実行され、制御部が、秘密計算の対象データを取得するステップと、制御部が、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶部に記憶するステップと、制御部が、対応テーブルに従って、取得した対象データを秘密計算用データに変換するステップと、制御部が、秘密計算用データを出力するステップと、を備える。
【0010】
また、上記目的を達成するため、本開示に係る秘密計算用変換プログラムは、上記秘密計算用変換方法をコンピュータに実行させる。
【発明の効果】
【0011】
本開示によれば、入力データを秘密計算に対応可能な入力フォーマットに変換することができる。
【図面の簡単な説明】
【0012】
図1】秘密計算システム10の概念図である。
図2】秘密計算システム10内のモジュールを示す構成図である。
図3】変換モジュール26の機能構成を示すブロック図である。
図4】学習モデルの一例を示す図である。
図5】要求条件データ35の一例を示す図である。
図6】要求条件データ35の入力画面の一例を示す図である。
図7】アルゴリズム対応テーブル113の一例を示す図である。
図8】スコア対応テーブル114の一例を示す図である。
図9】秘密計算用データ37の一例を示す図である。
図10】秘密計算用データ37の別の一例を示す図である。
図11】変換モジュール26の処理の一例を示すフローチャートである。
図12】要求条件データ35の選択的条件に適合する組み合わせの選択方法を説明するための図である。
図13】要求条件データ35の評価条件に適合する組み合わせの選択方法を説明するための図である。
図14】秘密計算システム1410内のモジュールを示す構成図である。
図15】変換モジュール1526の機能ブロック図である。
図16】変換モジュール1526の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0014】
<実施形態1>
(実施形態1の概要)
本実施形態に係る秘密計算システムは、暗号化したまま計算できる秘密計算を実行するためのシステムであり、秘密計算の対象データを、秘密計算を行うための秘密計算用データに自動的に変換し、秘密計算を行う。
【0015】
近年、個人情報などの機微データを機械学習させ、生成された学習モデルに基づいたデータ分析が行われている。一方、機微データなど機密性の保持が求められるデータ分析は、暗号化したまま行われることが望ましい。従来、機械学習や秘密計算では、ソフトウェア・ライブラリが利用されるが、AIライブラリによって生成された学習モデルを秘密計算ライブラリに適用するには、秘密計算およびAIに関する専門知識が必要であり、また、相応の変換コストがかかるため既存のライブラリを利用するのは容易ではなかった。
【0016】
そこで、本実施形態に係る秘密計算システムは、AIライブラリに適用して生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに自動的に変換し、秘密計算ライブラリに適用させる。これにより、秘密計算およびAIに関する高度な専門知識を有していなくても、既存のライブラリを利用してセキュリティを担保しつつ学習モデルに基づくデータ分析等の演算処理を行うことができる。
【0017】
(秘密計算システム10の構成)
図1は、本実施形態に係る秘密計算システム10の概念図である。図1を参照して、実施形態1に係る秘密計算システム10の構成について説明する。
【0018】
秘密計算システム10は、処理ユニット12と機能的に接続する記憶ユニット14を含むコンピュータシステムである。
【0019】
処理ユニット12は、ソフトウェアおよび/またはファームウェアのための命令を実行するように構成された1つ、または複数の装置である。処理ユニット12は、1つ、または複数のコンピュータプロセッサを含んでもよいし、コンピュータプロセッサの分散グループを含んでもよい。
【0020】
記憶ユニット14は、コンピュータ可読情報を記憶するように構成された1つ、または複数の装置である。記憶ユニット14は、メモリ16と、ストレージ18を含む。ストレージ18は、非一時的であって、単なる一時的な電子信号や電磁信号ではない1つ又は複数のコンピュータ可読の記憶装置である。ストレージ18は、1つ、または複数の(非一時的な)ストレージ媒体、および/または、(非一時的な)ストレージ媒体の分散グループを含みうる。
【0021】
秘密計算システム10は、1つ、または複数のコンピュータ、サーバ、ワークステーション等を含んでもよい。これらは、それぞれ独立して、直接又は(ネットワーク接続を含み)間接的に相互接続されている。したがって、秘密計算システム10は、互いに離れて設けられたプロセッサ、メモリ16、および/または、ストレージ18を含みうる。
【0022】
秘密計算システム10は、本明細書で説明する方法を行うようにプログラムされてもよいし、当該方法を行うための命令を記憶していてもよい。秘密計算システム10の記憶ユニット14は、命令を記憶しており、当該命令は、処理ユニット12により実行されると、本明細書で説明する1つ、または複数の方法を秘密計算システム10に行わせる。
【0023】
本明細書で説明するブロック図およびフローチャート等は、種々の例示的な実施形態による、システム、方法、及びプログラムの実現可能な実施態様を示す。この点において、ブロック図またはフローチャートにおける各ブロックは、モジュール、セグメント、または、コードの一部を表すこともあり、これらは、特定の1つ、または複数の論理機能を実行するための1つ、または複数の実行可能な命令である。なお、いくつかの代替の実施態様において、ブロックに記載した機能は、図示した順序とは異なる順序で実行してもよい。例えば、連続して示されている2つのブロックの機能は、その機能によっては、実質的に同時に行われてもよいし、逆の順序で行われてもよい。
【0024】
(秘密計算システム10の機能構成)
図2は、本実施形態に係る秘密計算システム10内のモジュールを示す構成図である。図2を参照して、秘密計算システム10の機能構成について説明する。なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム、以下、単に「プログラム」と記載する場合もある。)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはプログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(計算機にそれぞれの手順を実行させるためのプログラム、計算機をそれぞれの手段として機能させるためのプログラム、計算機にそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、「保存する」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1つの計算機によって実行されてもよいし、分散又は並列環境における計算機によって1モジュールが複数の計算機で実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。
【0025】
また、システム又は装置とは、複数の計算機、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つの計算機、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。
【0026】
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものであってもよい。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
【0027】
図2において、秘密計算システム10は、データ入力モジュール22と、機械学習モジュール24と、変換モジュール26と、秘密計算モジュール28とを備える。これらのモジュールは、エージェント、プログラム、プロセス、手順とも呼ばれ、例えば、記憶ユニット14に保存されており、処理ユニット12によって実行される命令、および/またはデータを含んでもよい。
【0028】
秘密計算システム10は、AIライブラリに基づいて生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに変換し、秘密計算ライブラリに基づいてユーザから要求される処理を行うように構成されている。
【0029】
データ入力モジュール22は、「処理要求部」として機能し、秘密計算システム10のユーザ(不図示)からデータセット31を受信するように構成されている。データセット31は、機械学習の対象となる機微データ33(「第1のデータ」に相当。)および、機械学習モジュール24において適用するAIライブラリの情報34を含む。
【0030】
機微データ33は、入力データと、当該入力データに対する出力データのセットであり、いわゆる教師あり学習のために十分な数のセットが含まれている。なお、本実施形態では、教師データありの場合について説明するが、教師データなしであっても本システムは適用できる。
【0031】
AIライブラリの情報34は、例えば、あらかじめAIライブラリを使って作成されたソースコードであってもよいし、機械学習モジュール24において記憶されているAIライブラリ25のうち適用するAIライブラリ(アルゴリズム)を指定する情報および当該アルゴリズムに入力するパラメータの情報であってもよいし、機械学習の手法(決定木や、ニューラルネットワークなど)を指定する情報や、当該手法の実行に必要なパラメータの情報、およびそれらのいかなる組合わせであってもよい。
【0032】
また、データセット31は、学習モデル36(後述)に対するデータ分析などの処理を要求するユーザからの処理要求32や、ユーザから指定された秘密計算に関する条件を示す要求条件データ35(後述)を含むが、処理要求32および要求条件データ35がデータ入力モジュール22に入力されるタイミングを、機微データ33やAIライブラリの情報34と異なるタイミングとすることを妨げるものではない。
【0033】
機械学習モジュール24は、機微データ33およびAIライブラリの情報34に基づいて学習モデル36を生成するよう構成されている。また、機械学習モジュール24は、AIライブラリ25を記憶している。
【0034】
AIライブラリ25は、複数の機械学習のためのアルゴリズムを含む。例えば、Keras,Tensor Flow,MXNet,Deeplearning4j,CNTK,Theano,ScikitLearn,NumPy,Scipy,Pandasなどである。各機械学習アルゴリズムは、入力されたデータを、当該機械学習アルゴリズムに容易に適用できるようにするため、共通インターフェイスに適合するように構成されることが好ましい。共通インターフェイスは、データの入出力のための共通のフォーマット、各機械学習アルゴリズムのための共通手続呼出等を規定する。例えば、機械学習アルゴリズムは、同じ態様でパラメータ値を出力したり、同様の機能を実行するために、共通形式のデータセット(例えば、特定のファイル形式の構成、特定の行や列の指定を有する構成)に対して機能したりするように構成される。
【0035】
したがって、AIライブラリ25の各機械学習アルゴリズムは、似た態様で区別なく用いることができる。すなわち、入力データはアルゴリズムに同様に適用され、関数も同様に呼び出される。さらに、AIライブラリ25は、拡張可能であり、新たなアルゴリズムを追加して、利用可能とすることができる。
【0036】
機械学習モジュール24は、AIライブラリの情報34が、AIライブラリ25のうち適用するAIライブラリを指定する情報であったり、機械学習の手法を指定する情報であったりする場合は、機微データ33をAIライブラリに適用できる形式に前処理して、機械学習を行う。
【0037】
学習モデル36は、機械学習モジュール24において機微データ33に対して実行された機械学習により生成された学習モデル(「第1のデータに対する機械学習に関連する第2のデータ」に相当。)であって、機械学習アルゴリズムの仕様データ41と、パラメータ情報43との組み合わせを含む。仕様データ41は、機械学習アルゴリズムの情報であって、適用するアルゴリズムの種類の情報や、層情報などであり、例えば、アルゴリズムが、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)の場合は、ノード数や、第1層:畳み込み層、第2層:活性化層、第3層:プーリング層、第4層:全結合層、第5層:活性化層というような層情報である。また、例えば、アルゴリズムが決定木(ランダムフォレスト)の場合は、木の深さ(木の本数やグラディエントブーストなど、アンサンブル学習に必要な情報)であって、例えば、木の深さ:3という情報である。パラメータ情報43は、機械学習アルゴリズムにより学習されたパラメータ(重み)であって、例えば、CNNの場合は、各層の重み係数(結合係数)等を示す。また、例えば、決定木の場合は、木の数、木の深さ、各ノードの分岐事象、分岐条件やノードの構成情報等を示す。なお、上述した仕様データ41やパラメータ情報43は、一例であって、これらに限られないことは言うまでもない。
【0038】
変換モジュール26は、「秘密計算用変換部」として機能し、秘密計算の対象データを取得し、秘密計算用データに変換するよう構成されている。変換モジュール26は、例えば、機械学習モジュール24において生成された学習モデル36を、秘密計算モジュール28において秘密計算ライブラリ29の各アルゴリズムに適用できる入力フォーマットに変換し、秘密計算用データ37として出力する。
【0039】
秘密計算用データ37は、仕様データ41および要求条件データ35に基づいて最適な暗号手法の入力フォーマットを示した規定情報42を含み、規定情報42は、例えば、機械学習で用いたアルゴリズムや、アルゴリズムにおけるパラメータ(層情報やアーキテクチャ(層構造や各層での処理内容))、オプション(後述)、暗号のパラメータ、暗号の種類、形式、粒度、暗号鍵等を規定するが、秘密計算を実行するソースコードであってもよい。また、秘密計算用データ37は、当該最適な暗号手法によって、パラメータ情報43が暗号化された暗号化パラメータ情報44を含む。変換モジュール26については図3において詳述する。
【0040】
秘密計算モジュール28は、「秘密計算実行部」として機能し、入力データを暗号化したまま、所定の演算処理(四則演算や論理演算等)を実行するよう構成されている。例えば、本実施形態では、データを暗号化したまま演算処理を行うことができる暗号技術である準同型暗号(例えば、格子暗号、ペリエ(Paillier)暗号など)や、マルチパーティ計算(例えば、ガーブレッド回路等)のアルゴリズムを用いる。秘密計算モジュール28は、秘密計算ライブラリ29を記憶している。
【0041】
秘密計算ライブラリ29は、複数の秘密計算のためのアルゴリズムを含む。例えば、代表的な準同型暗号のライブラリであるHElibの他、SEAL,FV-NFlib,FHEWなどである。また、例えば、マルチパーティ計算のライブラリであるObliVMやABYなどである。なお、秘密計算のための各アルゴリズムは、上述の機械学習アルゴリズムと同様、入力されたデータを、当該秘密計算のためのアルゴリズムに容易に適用できるようにするため、共通インターフェイスに適合するように構成されることが好ましい。さらに、秘密計算ライブラリ29は、拡張可能であり、新たなアルゴリズムを追加して、利用可能とすることができる。
【0042】
秘密計算モジュール28は、変換モジュール26で出力された秘密計算用データ37に基づいたアルゴリズムを秘密計算ライブラリ29から選択し、処理要求32に基づいた演算を実行する。
【0043】
(変換モジュール26の機能構成)
図3は、変換モジュール26の機能構成を示すブロック図である。図3を参照して、変換モジュール26の機能構成について説明する。
【0044】
変換モジュール26は、「秘密計算用変換装置」に相当し、取得部100と、記憶部110と、変換処理部120と、出力部130と、を備える。
【0045】
取得部100は、秘密計算の対象データを取得するよう構成され、本実施形態では、上述の学習モデル36である。学習モデル36は、仕様データ41と、パラメータ情報43とを含む。また、取得部100は、秘密計算システム10のユーザが秘密計算に対して要求する条件を示す要求条件データ35を取得する。
【0046】
要求条件データ35は、秘密計算に関する選択的条件および/またはスコア付けされた複数の評価条件を含む。秘密計算に関する選択的条件は、例えば、秘密計算を行うサーバ等(アーキテクチャ)の数に関する条件であり、1または複数の条件である。また、評価条件は、秘密計算の処理速度、セキュリティレベル、コストに関する条件のうちの少なくとも一つを含み、要求条件データ35は、少なくとも2つ以上の評価条件の組み合わせを含む。ユーザは、評価条件を、例えば、グラフィカル・ユーザ・インタフェース(GUI)を介して入力したり、10段階評価の数値によって入力したりしてもよい。
【0047】
記憶部110は、秘密計算を行うための暗号手法を示す入力フォーマットを規定した対応テーブル112を記憶している。対応テーブル112は、アルゴリズム対応テーブル113と、スコア対応テーブル114とを含む。アルゴリズム対応テーブル113は、機械学習アルゴリズムの情報と、当該アルゴリズムと組み合わせ可能な1つ、または複数の暗号手法とが対応付けられたテーブルである。また、スコア対応テーブル114は、暗号手法のうちの暗号の種類や形式等について、ユーザに要求される条件とスコア付けされたテーブルである。
【0048】
変換処理部120は、学習モデル36を、対応テーブル112に従って、秘密計算用データ37に変換するように構成され、変換部121と、暗号化部122とを含む。秘密計算用データ37は、規定情報42と暗号化パラメータ情報44とを含む。
【0049】
より具体的には、変換部121は、対応テーブル112と、要求条件データ35とに基づいて、仕様データ41を、秘密計算用の入力フォーマットの規定情報42に変換する。また、暗号化部122は、当該入力フォーマットで規定される暗号手法でパラメータ情報43を暗号化し、暗号化パラメータ情報44とする。なお、暗号化部122は、鍵管理サーバ(不図示)から暗号化で用いる鍵(公開鍵)を取得し、暗号化で用いた鍵を示す情報を規定情報42に含ませる。
【0050】
出力部130は、変換処理部120において変換された秘密計算用データ37を秘密計算モジュール28(図2参照)に出力する。
【0051】
(データ構造)
以下、図4図10を参照して、上述した各データのデータ構造について説明する。
図4は、学習モデルの一例を示す図である。図4(a)および図4(b)は、それぞれ異なる学習モデルの例を示している。上述したように、学習モデルは、仕様データおよびパラメータ情報から構成される。
【0052】
図4(a)の例では、仕様データ401は、項目「アルゴリズム」と項目「層情報」とを含み、「アルゴリズム」として「CNN(畳み込みニューラルネットワーク)」、「層情報」として「第1層:畳み込み層」、「第2層:活性化層」、「第3層:プーリング層」、「第4層:全結合層」、「第5層:活性化層」が記載されている。なお、層情報は、これらに限られず、活性化関数の情報など演算に関する情報を含む。
【0053】
また、パラメータ情報403は、項目「データファイル」を含み、機械学習によって求められたネットワーク内のパラメータ(重み係数など)が記載されたファイル名やパス等が記載される。図4(a)の例では、ファイル名「weight03.param」が記載されている。
【0054】
図4(b)の例では、仕様データ411は、項目「アルゴリズム」と項目「木の深さ」とを含み、「アルゴリズム」として「決定木」、「木の深さ」として「3」が記載されている。また、パラメータ情報413は、上述したように、機械学習によって求められた決定木のパラメータ(分岐事象、分岐条件など)が記載されたファイル名やパス等が記載される。図4(b)の例では、ファイル名「weight23.param」が記載されている。
【0055】
図5は、要求条件データ35の一例を示す図である。要求条件データ35は、秘密計算に関する選択的条件およびスコア付けされた複数の評価条件から構成される。図5の例では、選択的条件として項目「サーバ数」が「2」、評価条件として項目「速度」が「8」、「機密性」が「4」、「コスト」が「3」と記載されている。なお、図5の例では、選択的条件は、「サーバ数」の1つであるが、複数の項目を条件として設定してもよい。
【0056】
評価条件は、「速度」、「機密性」、「コスト」に限られず、様々な判断基準を設定してもよい。また、各評価条件は、例えば、10段階評価で優先度が高いほど大きな数値を設定するなどしてユーザが入力する。なお、スコア付けは、10段階評価に限られず、優先度が区別できるものであれば、任意の形式であってよい。例えば、コストについて、具体的な金額や計算リソース、通信量等によって示したり、機密性について、セキュリティレベル(Pマークレベル、国家機密レベル等)を具体的に示したりしてもよい。
【0057】
図6は、要求条件データ35の入力画面の一例を示す図である。図6において、入力画面500は、秘密計算に関する「速度」、「機密性」、「コスト」の評価条件を入力するための、グラフィカル・ユーザ・インタフェース(GUI)の一例を示している。スライドバー502,504,506によって、条件の重み付けを行うことができる。スライドバー502,504,506では、それぞれボタン503,505,507を左右にスライドさせて動かし、例えば、左端に近いほど重みを小さく(優先度を低く)、右端に近いほど重みを大きく(優先度を高く)設定することができる。図6の例では、「速度:8」、「機密性:4」、「コスト:3」を示している。スライドバーで重み付けを行うことによりユーザは柔軟な条件設定を行うことができ、条件を入力する際に有用である。
【0058】
図6において、入力画面510は、サーバ数を入力するためのGUIの一例を示している。入力プルダウン512は、サーバ数を選択するためのプルダウンであり、例えば、サーバ数が2であることを入力する場合は、入力プルダウン512により「2」を選択する。なお、選択的条件を入力するためのインターフェイスはプルダウンに限られず、ラジオボタンや、テキスト入力であったりしてもよい。
【0059】
なお、要求条件データ35の入力方法は、上述のようなGUIに限定されず、コマンドライン・インターフェース(CLI)等の他の方法を用いてもよいことは言うまでもない。
【0060】
図7は、アルゴリズム対応テーブル113の一例を示す図である。アルゴリズム対応テーブル113は、複数の暗号手法を示す暗号テーブル602と、機械学習アルゴリズムの仕様データに適用可能な上記暗号手法の組み合わせを示す組み合わせテーブル604とを含む。
【0061】
暗号テーブル602は、項目「番号」、「暗号種類」、「暗号形式」、「暗号粒度」、「アーキテクチャ(サーバ数)」、「オプション(ブートストラップ)」、「オプション(ガーブレッド回路)」、「オプション(紛失通信)」等を含む。なお、各項目は一例であって、上記以外の項目を含むことを妨げない。
【0062】
項目「番号」は、後述する「暗号種類」、「暗号形式」、「暗号粒度」、「アーキテクチャ(サーバ数)」、「オプション(ブートストラップ)」、「オプション(ガーブレッド回路)」、「オプション(紛失通信)」の組み合わせで示される暗号手法を識別する識別子である。
【0063】
項目「暗号種類」は、暗号の種類を示しており、例えば、格子暗号やペリエ暗号、TFHE暗号などである。
【0064】
項目「暗号形式」は、上述の各暗号種類における形式を示しており、扱うことができる乗算の回数や、暗号のベースとなる問題、暗号文の表現形式などによって分類される。例えば、格子暗号の場合は、BGV形式、HEAAN形式、GSW形式等の形式がある。
【0065】
項目「暗号粒度」は、暗号化を行うデータの単位であり、例えば、ビットごと、数字ごと、ベクトルごと、などである。
【0066】
項目「アーキテクチャ(サーバ数)」は、秘密計算を行うサーバ数を示し、1または1より大きい数で示される。
【0067】
項目「オプション(ブートストラップ)」は、格子暗号で演算ごとに暗号文に付加されるノイズを解消するための手法であるブートストラップ(bootstrapping)の適用の有無を示す。
【0068】
項目「オプション(ガーブレッド回路)」は、演算をビット演算回路に分割し、それらを暗号化して複数サーバで計算するガーブレッド回路(Garbled Circuit))の適用の有無を示す。
【0069】
項目「オプション(紛失通信)」は、各サーバが情報を秘匿しながらデータをやり取りする紛失通信の適用の有無を示す。
【0070】
上記項目で組み合わされた暗号手法は、時間計算量が増えるものの空間計算量が減る、計算速度は遅くなるが、乗算回数の上限が小さくない、など一長一短の特徴があり、機械学習アルゴリズムの仕様データとユーザが入力する要求条件とに基づいて最適な暗号手法が決定される。決定方法については後述する。
【0071】
図7において、暗号テーブル602の番号「1」は、「暗号種類:格子暗号」、「暗号形式:BGV」、「暗号粒度:ベクトル」、「アーキテクチャ(サーバ数):2」、「オプション(ブートストラップ):無」、「オプション(ガーブレッド回路):有」、「オプション(紛失通信):有」を示しており、当該組み合わせは、準同型暗号と秘密分散のハイブリッド型の暗号手法である。
【0072】
また、暗号テーブル602の番号「2」は、「暗号種類:格子暗号」、「暗号形式:HEAAN」、「暗号粒度:行列」、「アーキテクチャ(サーバ数):3」、「オプション(ブートストラップ):有」、「オプション(ガーブレッド回路):無」、オプション(紛失通信):有」を示しており、当該組み合わせは、準同型暗号型の暗号手法である。
【0073】
また、暗号テーブル602の番号「3」は、「暗号種類」、「暗号形式」、「暗号粒度」、「オプション(ブートストラップ)」が「−(NULL)」、「アーキテクチャ(サーバ数):3」、「オプション(ガーブレッド回路):有」、「オプション(紛失通信):無」を示しており、当該組み合わせは、秘密分散型の暗号手法である。
【0074】
また、暗号テーブル602の番号「4」は、「暗号種類:ペリエ」、「暗号形式:−(NULL)」、「暗号粒度:要素」、「アーキテクチャ(サーバ数):1」、「オプション(ブートストラップ):無」、「オプション(ガーブレッド回路):−(NULL)」、「オプション(紛失通信):有」を示している。
【0075】
組み合わせテーブル604は、項目「アルゴリズム」、「層(乗算回数)」、「活性化層」、「組み合わせ可能な暗号手法番号」を含む。なお、各項目は一例であって、上記以外の項目を含むことを妨げない。
【0076】
項目「アルゴリズム」は、機械学習で用いられたアルゴリズム名を示す。項目「層(乗算回数)」は、線形変換層で行われる乗算の総数を示す。項目「活性化層」は、活性化関数を示す。項目「組み合わせ可能な暗号手法番号」は、上述した「アルゴリズム」、「層(乗算回数)」、「活性化層」の機械学習アルゴリズムについて、暗号テーブル602で示される各暗号手法のうち、組み合わせ可能な手法の番号を示す。
【0077】
図7において、組み合わせテーブル604の「アルゴリズム:NN(ニューラルネットワーク)」、「層(乗算回数):10以上」、「活性化層:ReLU」で示される機械学習アルゴリズムについては、暗号テーブル602の番号「1」,「2」,「3」,「4」の暗号手法が組み合わせ可能であることを示している。
【0078】
また、組み合わせテーブル604の「アルゴリズム:NN(ニューラルネットワーク)」、「層(乗算回数):10未満」、「活性化層:ReLU」で示される機械学習アルゴリズムについては、暗号テーブル602の番号「1」,「2」の暗号手法が組み合わせ可能であることを示している。
【0079】
また、組み合わせテーブル604の「アルゴリズム:NN(ニューラルネットワーク)」、「層(乗算回数):10以上」、「活性化層:Tanh」で示される機械学習アルゴリズムについては、暗号テーブル602の番号「3」,「4」,「5」,「6」(番号「5」、「6」は暗号テーブル602において不図示)の暗号手法が組み合わせ可能であることを示している。
【0080】
また、組み合わせテーブル604の「アルゴリズム:決定木」、「層(乗算回数):10未満」、「活性化層:−(NULL)」で示される機械学習アルゴリズムについては、暗号テーブル602の番号「11」,「12」,「13」(番号「11」〜「13」は暗号テーブル602において不図示)の暗号手法が組み合わせ可能であることを示している。
【0081】
図8は、スコア対応テーブル114の一例を示す図である。上述の暗号テーブル602の各項目と、計算の処理速度、機密性、コストとが対応付けられている。
【0082】
例えば、項目「暗号種類」および「形式」の組み合わせの暗号の特徴に基づいて、システムの開発者側で予め「速度」、「機密性」、「コスト」についてそれぞれスコア付けされている。図8の例では、「暗号種類:格子」と「暗号形式:BGV」との組み合わせ801については、「速度:4」、「機密性:8」、「コスト:5」のようにスコア付けされており、計算速度は劣るが、機密性は優れた暗号手法であることが示されている。また、「暗号種類:ペリエ」と、「暗号形式:−(NULL)」の組み合わせ804については、「速度:9」、「機密性:4」、「コスト:5」のようにスコア付けされており、計算速度が優れた暗号手法であることが示されている。
【0083】
同様に、項目「暗号粒度」と「形式」の組み合わせ811〜815や、オプション821〜824のそれぞれについて、「速度」、「機密性」、「コスト」がそれぞれスコア付けされている。なお、図8には示されていないが、秘密分散についてもスコア付けされていてもよい。
【0084】
図9は、秘密計算用データ37の一例を示す図である。図9において、秘密計算用データ900は、例えば、図4(a)で示した学習モデルを変換した秘密計算用データである。
【0085】
秘密計算用データ900は、規定情報902と暗号化パラメータ情報904とから構成される。図9の例では、規定情報902は、暗号テーブル602から、要求条件データ35や仕様データ41等に基づいて抽出された組み合わせ(暗号手法)と、当該組み合わせに関連付けられたオプションを実行するためのオプション情報とを示しているが、層情報や、アーキテクチャ(層構造や、各層での処理内容)、暗号化において用いられるパラメータ(不図示)や暗号化に用いた鍵を示す情報(不図示)も含む。すなわち、規定情報902は、秘密計算を行うための入力フォーマットに従ったデータを示している。
【0086】
図9の例では、抽出された組み合わせは、「暗号種類:格子暗号」、「暗号形式:BGV」、「暗号粒度:行」、「アーキテクチャ(サーバ数):2」、「オプション(ブートストラップ):無」、「オプション(ガーブレッド回路):有」を示しており、格子暗号とガーブレッド回路を組み合わせたハイブリッド型秘密計算の構成である。また、図9の例では、オプション情報として示される計算手順の第2層でオプション(ガーブレッド回路)を実行することが示されている。「オプション」は、準同型暗号を用いると計算量が大きくなる、もしくは、根本的に演算が実行できない層において適用されるようあらかじめ条件が設定されている。例えば、活性化層の種類(例えば、シグモイドなど)によっては計算量(乗算数)が大きくなるため、所定量以上の計算量の場合は、「オプション」としてガーブレッド回路が適用される。また、比較演算が必要な、ReLuなどの活性化関数やマックスプーリングなどの層は、根本的に準同型暗号では実行できないため、「オプション」が適用される。比較演算を含まないような活性化層やプーリング層に関しては、計算量に基づいて、「オプション」を適用するか条件設定されていてもよい。また、全結合層などの線形層に関しては、原則として「オプション」は適用されない。なお、「オプション」の適用は、必要に応じてユーザが決定できるよう構成しておいてもよい。
【0087】
学習モデルに含まれるパラメータ情報(重み)は、規定情報902に従って暗号化部122において暗号化され、暗号化パラメータ情報904に変換される。
【0088】
図10は、秘密計算用データ37の別の一例を示す図である。図10において、秘密計算用データ910は、例えば、図4(b)で示した学習モデルを変換した秘密計算用データである。
【0089】
秘密計算用データ910は、規定情報912と暗号化パラメータ情報914とから構成される。図10の例において、規定情報912は、暗号テーブル602から、要求条件データ35や仕様データ41等に基づいて抽出された組み合わせ(暗号手法)と、当該組み合わせに関連付けられたオプションを実行するためのオプション情報とを示しているが、層情報や、アーキテクチャ(層構造や、各層での処理内容)、暗号化において用いられるパラメータ(不図示)や暗号化に用いた鍵を示す情報(不図示)も含む。すなわち、規定情報912は、秘密計算を行うための入力フォーマットに従ったデータを示している。
【0090】
図10の例では、抽出された組み合わせは、「暗号種類:ペリエ」、「暗号粒度:要素」、「アーキテクチャ(サーバ数):3」、「オプション(シークレットシェアリング):有」、「オプション(紛失通信):有」を示しており、ペリエ暗号と紛失通信を組み合わせたハイブリッド型秘密計算の構成である。また、図10の例では、オプション情報として示される計算手順のステップ2において、サーバ1,2,3間で「シークレットシェアリング」が実行され、計算手順のステップ3において、サーバ1および2間で「紛失通信」が実行される。なお、「オプション」の「シークレットシェアリング」は、複数サーバにおいて実行されるため、アーキテクチャ(サーバ数)が決定されると、どのサーバでどのように情報を分割するかをあらかじめ設定しておいた条件に従って適用される。また、「オプション」を実行するのに必要なサーバ数は、ユーザによって選択的条件として指定、もしくは、「オプション」に基づいてあらかじめ設定しておいてもよい。
【0091】
学習モデルに含まれるパラメータ情報は、規定情報912に従って暗号化部122において暗号化され、暗号化パラメータ情報914に変換される。
【0092】
以上、秘密計算システム10において扱うデータ構造について説明した。
【0093】
図11は、変換モジュール26の処理の一例を示すフローチャートである。図11及び図3を参照して、変換モジュール26における処理について説明する。
【0094】
ステップS102において、取得部100は、要求条件データ35および学習モデル36を取得する。学習モデル36は、秘密計算モジュール28で実行される秘密計算の対象データである。取得部100は、取得した要求条件データ35および学習モデル36を変換処理部120へ送る。
【0095】
ステップS104において、変換処理部120の変換部121は、学習モデル36に含まれる仕様データ41について、記憶部110のアルゴリズム対応テーブル113(暗号テーブル602および組み合わせテーブル604)を参照して、適用できる暗号手法の組み合わせを抽出する。
【0096】
ステップS106において、変換部121は、要求条件データ35とスコア対応テーブル114を参照して、ステップS104において抽出された組み合わせの中から要求条件データ35に適合する暗号手法の組み合わせを選択する。要求条件データ35に適合する暗号手法の組み合わせの選択方法については、図12及び図13を用いて後述する。
【0097】
ステップS108において、変換部121は、ステップS106において選択された暗号手法の組み合わせに基づいて、学習モデル36を秘密計算用データ37に変換する。すなわち、仕様データ41を規定情報42に変換する。また、暗号化部122は、パラメータ情報43を、選択された暗号手法に従って暗号化し、暗号化パラメータ情報44とする。
【0098】
ステップS110において、出力部130は、規定情報42および暗号化パラメータ情報44を含む秘密計算用データ37を出力する。
【0099】
図12は、要求条件データ35の選択的条件に適合する組み合わせの選択方法を説明するための図である。図12において、リスト1002および1004、要求条件データ1003が示されている。
【0100】
リスト1002は、例えば、図11のステップS104において、アルゴリズム対応テーブル113(暗号テーブル602および組み合わせテーブル604)を参照して抽出された暗号手法の組み合わせを示す。すなわち、仕様データに基づき、組み合わせテーブル604を参照して、適用可能な暗号手法を暗号テーブル602から抽出したもので、番号「#01」、「#02」、「#03」で識別される暗号手法である。
【0101】
要求条件データ1003は、ユーザからの選択的条件として「サーバ数:1」、評価条件として「速度:8」、「機密性:4」、「コスト:3」のようにスコア付けされている。
【0102】
リスト1004は、リスト1002の暗号手法の中から要求条件データ1003のうち選択的条件に適合する暗号手法を抽出したものである。すなわち、まず、要求条件データ1003のうち、選択的条件である「サーバ数」に着目する。リスト1002の暗号手法のうち、番号「#01」はサーバ数が「2」であり、ユーザの要求するサーバ数「1」と適合しないので、番号「#01」の暗号手法は除外する。したがって、リスト1004には、選択的条件に適合する番号「#02」、「#03」の組み合わせが抽出される。なお、選択的条件に適合する(サーバの)数に幅を持たせるようにして組み合わせを抽出するようにしてもよい。例えば、図12において、選択的条件としてユーザの要求するサーバ数「1」の「±1」の範囲で適合する番号「#01」、「#02」、「#03」の組み合わせを抽出してもよい。これにより、組み合わせの選択方法に柔軟性を持たせることができる。
【0103】
次いで、図12で抽出された暗号手法の組み合わせから、要求条件データ1003の評価条件に基づいて、暗号手法の組み合わせを選択する方法について説明する。
【0104】
図13は、要求条件データ35の評価条件に適合する組み合わせの選択方法を説明するための図である。図8において述べたように、スコア対応テーブル114において、暗号種類および形式、暗号粒度および形式、オプション等のそれぞれにつき、各特徴に基づいて速度、機密性、コストには予め(例えば、開発者や機械学習などによって)10段階評価によるスコア付けがされている。そこで、リスト1004の各組み合わせの暗号手法について、スコア対応テーブル114に基づき、ユーザからの要求条件データ1003の評価条件に従ったスコアを算出し、スコアの最も高い暗号手法を、最適な暗号手法として選択する。
【0105】
図13において例えば、番号「#02」のスコア算出方法について具体的に説明する。図示するように、「暗号種類」、「暗号形式」、「暗号粒度」の組み合わせ801,811、オプション821,822について「速度」、「機密性」、「コスト」のスコア付けがされている。この各スコアをユーザの評価条件で重み付けした重み平均を、暗号手法の「スコア」とする。なお、図13で説明するスコアリングの方法は一例であって、この方法に限定されないのは言うまでもない。
【0106】
例えば、「速度」については、ユーザの評価条件は、「8」である。また、「暗号種類:格子」、「暗号形式:BGV」については「4」、「暗号粒度:要素」については「4」、「オプション:ブートストラップ」については「2」、「オプション:紛失通信」については「5」である。したがって、「速度」に関する重み平均は、図示するように、「8/10×(4+4+2+5)/4=3」である。同様に、「機密性」および「コスト」についても計算し、「速度」、「機密性」「コスト」の算出結果の和「7.3」が「#02」のスコアとなる。
【0107】
同様に、番号「#03」の暗号手法について重み平均を算出すると、スコアが「8.0」となる。番号「#02」と「#03」のスコアを比較すると、番号「#03」のスコアの方が大きい。したがって、図13の例では、番号「#03」の組み合わせの暗号手法が、要求条件データ35を満たす暗号手法として選択される。
【0108】
(効果の説明)
上述したように、本実施形態に係る秘密計算システムは、AIライブラリに適用して生成された学習モデルを、秘密計算ライブラリに適用できる入力フォーマットに自動的に変換し、秘密計算ライブラリに適用させる。これにより、秘密計算およびAIに関する高度な専門知識を有していなくても、既存のライブラリを利用してセキュリティを担保しつつ学習モデルに基づくデータ分析等の演算処理を行うことができる。
【0109】
<実施形態2>
(実施形態2の概要)
実施形態1に係る秘密計算システムの変換モジュールは、機械学習された学習モデルを秘密計算ライブラリに適用できる入力フォーマットに変換した。これに対し、本実施形態に係る秘密計算システムの変換モジュールは、機微データ(生データ)および秘密計算モジュールにおいて実行される機械学習の情報(仕様データ)を、秘密計算ライブラリに適用できる入力フォーマットに変換する。これにより、高度な専門知識を有していなくても、既存の秘密計算ライブラリを利用して、セキュリティが担保された状態で、機微データの機械学習を行うことができ、また、当該機械学習により生成された学習モデルに基づくデータ分析等の演算処理も行うことができる。機微データが暗号化された状態で学習モデルを生成できるので、より機密性が高い環境でデータを扱うことができる。
【0110】
図14は、実施形態2に係る秘密計算システム1410内のモジュールを示す構成図である。図14において、秘密計算システム1410は、データ入力モジュール1422と、変換モジュール26と、秘密計算モジュール1428とを備える。なお、図2と共通する構成については同じ符号を付し、説明を省略する。
【0111】
秘密計算システム1410は、機械学習させる機微データおよび当該機械学習の情報を、秘密計算ライブラリに適用できる入力フォーマットに変換する。そして、秘密計算ライブラリに基づいて、機械学習を実行して学習モデルを生成し、ユーザから要求されるデータ分析等の処理を行うように構成されている。
【0112】
データ入力モジュール1422は、「処理要求部」として機能し、秘密計算システム1410のユーザ(不図示)からデータセット1431を受信するように構成されている。データセット1431は、機械学習の対象となる機微データ33および、当該機械学習の仕様データ1434を含む。また、データセット1431は、秘密計算モジュール1428に対するユーザからの処理要求32および秘密計算に対する要求条件データ35を含む。
【0113】
仕様データ1434は、機械学習ライブラリを使って生成されたソースコード(バイナリファイル)、または、機械学習に用いるアルゴリズムやパラメータの情報である。また、仕様データ1434は、学習時に使用する最適化アルゴリズム(SGD、Adam、など)や学習率(0〜1までの数)を含む。
【0114】
変換モジュール26は、対応テーブル112(組み合わせテーブル604(図7参照)には、例えば、学習時に使用する最適化アルゴリズム等を示す項目も含む)に基づいて、仕様データ1434を規定情報1442に変換する。規定情報1442は、例えば、機械学習で用いたアルゴリズムや、アルゴリズムにおけるパラメータ(層情報やアーキテクチャ(層構造や各層での処理内容))、オプション、暗号のパラメータ、暗号の種類、形式、粒度、暗号鍵、学習時に使用する最適化アルゴリズムや学習率等を規定する。
【0115】
また、規定情報1442で規定される暗号手法に従って、暗号化部122は機微データ33を暗号化して、暗号化機微データ1444とする。すなわち、変換モジュール26は、機微データ33および仕様データ1434を、規定情報1442および暗号化機微データ1444を含む秘密計算用データ1437に変換する。なお、機微データ33は、変換モジュール26において暗号化されるのではなく、秘密計算モジュール1428において、規定情報1442で規定される暗号手法に従って暗号化される構成にしてもよい。
【0116】
秘密計算モジュール1428は、学習部1425と、演算部1427と、秘密計算ライブラリ1429とを含む。学習部1425は、規定情報1442に基づいて、秘密計算ライブラリ1429を適用し、暗号化機微データ1444について機械学習を行う。また、演算部1427は、処理要求32に応じて、当該機械学習により生成された学習モデルに基づいたデータ分析等の演算を行う。
【0117】
(効果の説明)
上述したように、本実施形態では、機微データ(生データ)及び秘密計算モジュールにおいて実行される機械学習の情報(仕様データ)を、秘密計算ライブラリに適用できる入力フォーマットに変換する。高度な専門知識を有していなくても、既存の秘密計算ライブラリを利用して、機微データの機械学習を行うことができ、機微データが暗号化された状態で学習モデルを生成できるので、より機密性が高い環境でデータを扱うことができる。
【0118】
<実施形態3>
(実施形態3の概要)
実施形態1および2に係る秘密計算システムの変換モジュールは、アルゴリズム対応テーブルを参照して抽出された暗号手法の組み合わせの中から、要求条件データとスコア対応テーブルとに基づいて算出されたスコアに従って、最適な暗号手法の組み合わせを選択した。これに対し、本実施形態に係る秘密計算システムの変換モジュールは、要求条件データと上記選択された暗号手法の組み合わせとを学習データとして記憶し、要求条件データと暗号手法の組み合わせとの相関関係を学習した学習モデルを生成する。そして、この生成した学習モデルをスコア対応テーブルの代わりに用いることにより、スコアを算出することなく、アルゴリズム対応テーブルを参照して抽出された暗号手法の組み合わせの中から最適な暗号手法の組み合わせを選択する。スコアを算出することなく最適な暗号手法の組み合わせを選択することが出来るので、計算量を削減することができる。また、スコアに従った決定的な選択よりも、より柔軟な確率的な選択が可能になり、よりアルゴリズムやデータおよびユーザの要求等に適した手法を選択することができる。
【0119】
図15は、実施形態3に係る変換モジュール1526の機能ブロック図である。図15に示す変換モジュール1526は、変換処理部1520と、学習部1500とを含み、記憶部1510が学習データ1515および学習モデル1516を記憶する。すなわち、秘密計算システム10の変換モジュール26と、暗号手法の組み合わせの選択に係る構成が相違する。なお、図3と共通する構成については同じ符号を付し、説明を省略する。
【0120】
変換処理部1520は、暗号化部1522と、変換部1521とを含む。
【0121】
学習データ1515は、要求条件データ35と、当該要求条件データ35に基づいて、選択された最適な暗号手法の組み合わせとが対となって格納されている。
【0122】
学習部1500は、学習データ1515に基づいて、要求条件データ(特に、評価条件)と、変換部1521に選択された暗号手法の組み合わせとの相関関係を学習し(図16において詳述)、学習結果を学習モデル1516に格納する。なお、変換部1521に選択された暗号手法の組み合わせの代わりに、要求条件データに応じて、ユーザ(秘密計算等の専門知識を有する者)等が選択した組み合わせに基づいて相関関係を学習してもよい。
【0123】
学習モデル1516は、上述のように、要求条件データ35と暗号手法の組み合わせとの相関関係が示されるデータである。変換部1521は、アルゴリズム対応テーブル113に基づいて抽出した暗号手法の組み合わせについて、スコア対応テーブル114に代わって、学習モデル1516に基づいて、最適な暗号手法の組み合わせを選択する。
【0124】
図16は、変換モジュール1526の処理の一例を示すフローチャートである。図16を参照して、変換モジュール1526における処理について説明する。なお、処理の順序は一例であって、順序を限定するものではない。例えば、以下の説明では、学習モデル1516は、ステップS214において学習データ1515が記憶された後で生成(更新)されているが、ステップS210において学習モデル1516を用いる前に生成(更新)されるように構成してもよい。
【0125】
ステップS202において、取得部100は、要求条件データ35および学習モデル36を取得する。学習モデル36は、秘密計算モジュール28で実行される秘密計算の対象データである。取得部100は、取得した要求条件データ35および学習モデル36を変換処理部1520へ送る。なお、ユーザから暗号手法の項目として必須条件を受け付け、要求条件データ35に含ませるようにしてもよい。
【0126】
ステップS204において、変換処理部1520の変換部1521は、学習モデル36に含まれる仕様データ41について、記憶部1510の対応テーブル112(すなわち、アルゴリズム対応テーブル113(暗号テーブル602および組み合わせテーブル604))を参照して、適用できる暗号手法の組み合わせを抽出する。
【0127】
ステップS206において、変換部1521は、学習データ1515に格納された要求条件データと暗号手法の組み合わせとの対となるデータが所定量以上であるか判断する。学習データ1515が所定量以上ではないと判断した場合(ステップS206において、NO)、ステップS208において、変換部1521は、要求条件データ35とスコア対応テーブル114を参照して、ステップS204において抽出された組み合わせの中から要求条件データ35に適合する暗号手法の組み合わせを選択する。すなわち、学習データが極端に少ない場合は、学習の精度が悪いため、学習モデル1516ではなく、図11において説明したように、スコア対応テーブル114を参照して暗号手法の組み合わせを選択する。なお、後述するステップS212において、ユーザから暗号手法の組み合わせの指定を受け付けるために、暗号手法の組み合わせを条件の適合度の高い順などで複数選択するようにしてもよい。
【0128】
一方、学習データ1515が所定量以上であると判断した場合(ステップS206において、YES)、ステップS210において、変換部1521は、学習モデル1516に基づいて、要求条件データ35に適合する組み合わせを選択する。なお、変換部1521が選択する組み合わせは、後述するステップS212においてユーザに提示し、どれを秘密計算用データの変換のために適用するかユーザに選択させるため、複数選択するように構成する。
【0129】
ステップS212において、変換部1521は、学習モデル1516に基づいて選択した暗号手法の組み合わせをユーザに表示部(不図示)等を介して提示する。ユーザは提示された暗号手法について、必要に応じて、要求条件データ35に適合しているか判断する。学習モデル1516が精度よく生成されている場合は、ユーザの要求条件に適合している可能性が高いが、精度が悪い場合は、ユーザの要求条件に適合していない可能性があるからである。なお、暗号手法の組み合わせを提示する際、各組み合わせのコストや速度、機密性等も併せて表示するようにしてもよい。また、選択されなかった暗号手法の組み合わせについてもコストや速度、機密性等とともにユーザに示すようにしてもよい。これにより、ユーザは各組み合わせのコスト等について参照することができ、暗号手法の組み合わせの指定(後述)を容易にすることができる。
【0130】
変換部1521は、ユーザから秘密計算用データの変換のために適用する暗号手法の組み合わせの指定を受け付ける。なお、ユーザの暗号分野やAI分野における専門知識の有無、理解の程度に応じて、ステップS212の処理を行わないようにしてもよい。専門知識がないユーザには、どの暗号手法の組み合わせが適切なのか判断が困難であるため、そのようなユーザについては、変換部1521が一つの組み合わせを選択し、秘密計算用データの変換のために適用する暗号手法の組み合わせとして決定する。例えば、ステップS210において、変換部1521は、暗号手法の組み合わせを複数選択するのではなく、相関関係が最も高い組み合わせを選択する。
【0131】
また、ステップS212において、ユーザから、提示された暗号手法の組み合わせ以外の暗号手法の組み合わせの指定を受け付けるようにしてもよい。例えば、ユーザが要求条件としてコストを最重視していたが、選択されなかった暗号手法の組み合わせのうち(上述のように)表示されたコストが予算以内のものがあった場合、他の評価条件を優先して暗号手法の組み合わせを指定したいこともあり得るからである。
【0132】
ステップS214において、変換部1521は、要求条件データ35およびステップS212において受け付けた組み合わせの対を学習データ1515として記憶部1510に記憶させる。すなわち、記憶部1510の学習データ1515は、暗号手法の組み合わせが選択される都度、データが格納されていくので、学習データの量が増加し、生成される学習モデルの精度が向上する。なお、ステップS212においてユーザが指定した暗号手法の組み合わせについては、重み付け等により、相関関係が強くなるようにスコアリングを行ってもよい。これにより、より精度よく、暗号手法の組み合わせについての学習モデルを生成することができる。
【0133】
ステップS216において、学習部1500は、学習データ1515から学習モデル1516を生成する。なお、上述したように、変換モジュール1526の処理において、学習モデル1516を生成する順序は、ステップS214後とは限られない。
【0134】
ステップS218において、変換部1521は、選択された暗号手法の組み合わせに基づいて、学習モデル36を秘密計算用データ37に変換する。すなわち、仕様データ41を規定情報42に変換する。また、暗号化部1522は、パラメータ情報43を、選択された暗号手法に従って暗号化し、暗号化パラメータ情報44とする。
【0135】
ステップS220において、出力部130は、規定情報42および暗号化パラメータ情報44を秘密計算用データ37として出力し、処理は終了する。
【0136】
なお、出力された秘密計算用データ37を秘密計算モジュール28(図2参照)において実行させた際のパフォーマンス(実行速度・時間、空間計算量、通信量コスト、インスタンス台数、そのスペック等の情報など)を、学習部1500が学習モデル1516を生成するためにフィードバックさせるようにしてもよい。すなわち、要求条件データ35および暗号手法の組み合わせと、上記パフォーマンスとの相関関係に基づいて学習モデルを生成する。これにより、より最適な暗号手法の組み合わせを確度よく選択することができる。
【0137】
(効果の説明)
上述したように、本実施形態では、変換部1521は、アルゴリズム対応テーブル113に基づいて抽出した暗号手法の組み合わせについて、スコア対応テーブル114に代わって、学習モデル1516に基づいて、最適な暗号手法の組み合わせを選択する。これにより、抽出された各組み合わせについてのスコアを算出する必要がなくなるため、計算量を削減することができる。
【0138】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【0139】
10 秘密計算システム、12 処理ユニット、14 記憶ユニット、16 メモリ、18 ストレージ、22 データ入力モジュール、24 機械学習モジュール、25 AIライブラリ、26、1526 変換モジュール、28、1428 秘密計算モジュール、29 秘密計算ライブラリ、100 取得部、110 記憶部、120、1520 変換処理部、121、1521 変換部、122、1522 暗号化部、130 出力部、1425、1500 学習部、1427 演算部、1515 学習データ、1516 学習モデル

【要約】
【課題】秘密計算の対象となる入力データを秘密計算ライブラリに対応可能な入力フォーマットに変換する秘密計算用変換装置を提供すること。
【解決手段】
本発明に係る秘密計算用変換装置は、秘密計算の対象データを取得する取得部と、秘密計算を行うための入力フォーマットを規定した対応テーブルを記憶する記憶部と、対応テーブルに従って、取得した対象データを秘密計算用データに変換する変換処理部と、秘密計算用データを出力する出力部と、を備える。
【選択図】図3
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16