(57)【要約】【課題】準同型暗号の暗号化データを用いてより広範な処理を実行することができるようにする。【解決手段】クライアント装置３０と、推論装置とを備える処理システムにおいて、クライアント装置３０は、処理対象の平文データに対して所定の２以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部３７を備え、推論装置は、クライアント装置３０から暗号化データを取得する受信部と、暗号化データを暗号化状態のままで処理を実行する推論部２１と、を備え、クライアント装置３０は、更に、推論装置の推論部による処理結果を取得する受信部３６と、暗号化された処理結果のデータを復号し、復号されたデータを所定の２以上の数の累乗で除算する後処理部３８と、を備えるように構成する。【選択図】図４
2020190614.tif 000002
【特許請求の範囲】
【請求項１】
暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムであって、
前記暗号データ生成装置は、
処理対象の平文データに対して所定の２以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部を備え、
前記暗号処理装置は、
前記データ生成装置から前記暗号化データを取得する第１取得部と、
暗号化データを暗号化状態のままで処理を実行する処理実行部と、を備え、
前記処理結果利用装置は、
前記暗号処理装置の前記処理実行部による処理結果を取得する第２取得部と、
前記暗号化された処理結果のデータを復号し、前記復号されたデータを前記所定の２以上の数の累乗で除算する後処理部と、
を備える暗号処理システム。
【請求項２】
前記暗号処理装置の前記処理実行部が実行する処理は、
所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する暗号文空間上の演算を実行する部分処理を１以上含み、
前記暗号データ生成装置の前処理部は、
処理対象の平文データに対して、所定の２以上の数の累乗を乗算させ、前記処理実行部が実行する処理に含まれる全体の調整値で除算させたデータに対応する準同型暗号の暗号化データを生成する
請求項１に記載の暗号処理システム。
【請求項３】
前記前処理部は、
前記処理対象の平文データに対して、所定の２以上の数の累乗を乗算する変換部と、
前記変換部により得られたデータに対して、前記処理実行部が実行する処理に含まれる全体の調整値で除算する調整除去部と、
前記調整除去部により得られたデータを前記準同型暗号の暗号化データに変換する暗号部と、を備え、
前記調整値は、前記所定の２以上の数を底とする値である、
請求項２に記載の暗号処理システム。
【請求項４】
前記前処理部は、
処理対象の平文データに対して、所定の２以上の数の累乗を乗算する変換部と、
前記変換部により得られたデータを前記準同型暗号の暗号化データに変換する暗号部と、
前記暗号部により得られた暗号化データに対して、前記暗号化データに対応する平文データに対して前記処理実行部が実行する処理に含まれる全体の調整値に対応する逆元を乗算する演算に対応する、前記暗号文空間上の演算を実行する調整除去部と、
を備える請求項２に記載の暗号処理システム。
【請求項５】
前記暗号処理装置の前記処理部が実行する処理は、
所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する暗号文空間上の演算を実行する部分処理を１以上含み、
前記処理実行部は、
前記暗号化データに対応するデータに対して、自身が実行する処理に含まれる全体の調整値に対応する逆元を乗算する演算に対応する、暗号文空間上の演算を実行する
請求項１に記載の暗号処理システム。
【請求項６】
前記処理実行部は、
前記暗号化データに対応するデータに対して、複数の部分処理に含まれるそれぞれの調整値に対応する逆元をまとめて乗算する演算に対応する暗号文空間上の演算を実行する
請求項５に記載の暗号処理システム。
【請求項７】
前記処理実行部は、
前記部分処理において、又は、前記部分処理に対応する処理において、前記部分処理に関わる調整値に対応する逆元を乗算する演算に対応する前記暗号文空間上の演算を実行する
請求項５に記載の暗号処理システム。
【請求項８】
暗号化データを取得する取得部と、
暗号化データを暗号化状態のままで処理を実行する処理実行部と、を備え、
前記処理は、
所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する、暗号文空間上の演算を実行する部分処理を１以上含み、
前記処理実行部は、
前記暗号化データに対応するデータに対して、自身が実行する処理に含まれ、前記暗号化データに対応するデータの乗算に関わる全体の調整値に対応する逆元を乗算する演算に対応する前記暗号文空間上の演算を実行する
暗号処理装置。
【請求項９】
暗号処理装置を構成するコンピュータに実行させる暗号処理プログラムであって、
前記コンピュータに、暗号化データを取得させ、
暗号化データを暗号化状態のままで処理を実行させ、
前記処理は、
所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する、暗号文空間上の演算を実行する部分処理を１以上含み、
前記コンピュータに、
前記暗号化データに対応するデータに対して、自身が実行する処理に含まれ、前記暗号化データに対応するデータの乗算に関わる全体の調整値に対応する逆元を乗算させる演算に対応する、前記暗号文空間上の演算を実行させる、
暗号処理プログラム。
【請求項１０】
暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムによる暗号処理方法であって、
前記暗号データ生成装置は、
処理対象の平文データに対して所定の２以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成し、
前記暗号処理装置は、
前記データ生成装置から前記暗号化データを取得し、
暗号化データを暗号化状態のままで処理を実行し、
前記処理結果利用装置は、
前記暗号処理装置の前記処理部による処理結果を取得し、
前記処理結果のデータを復号し、
前記復号されたデータを前記所定の２以上の数の累乗で除算する
暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの漏洩を防止でき、広範な処理を実行可能にする技術に関する。
【背景技術】
【０００２】
従来、機械学習のアーキテクチャの１つであるニューラルネットワークモデルを用いることにより、画像、文字、及び音声などの認識処理（推論処理）が行われている。
【０００３】
ニューラルネットワークモデルにおける学習済みの係数データは、規模が大きく、クライアント装置のみで処理を行うには負荷が大きかったり、処理の実行が困難であったりという問題がある。これに対して、サーバ・クライアントモデルを用いることにより、大規模な演算が可能なクラウド資源をニューラルネットワークモデルによる推論処理等に利用したいという要求が存在している。
【０００４】
このサーバ・クライアントモデルを用いると、処理対象のデータをクライアント装置からサーバに送信することになるため、データに含まれる個人情報等の機密性の高いデータが漏洩してしまう虞がある。
【０００５】
このような問題に対処するために、データを暗号化したまま演算を行う秘匿演算方法を使用することが考えられる。秘匿演算方法としては、大きく分けると、準同型暗号を用いる方法と、ＭＰＣ（Ｍｕｌｔｉ−Ｐａｒｔｙ−Ｃｏｍｐｕｔａｔｉｏｎ）を用いる方法とがある。
【０００６】
まず、準同型暗号を用いる方法について説明する。
【０００７】
準同型暗号とは、平文と或る演算に対して、準同型な関係にある暗号文と演算との組が存在する暗号方式である。準同型暗号を厳密に表すと、平文ａ，ｂとその二変数関数Ｆ（ａ，ｂ）に対して、暗号化関数をＥｎｃとすると、暗号文ｃ１＝Ｅｎｃ（ａ）、暗号文ｃ２＝Ｅｎｃ（ｂ）が存在し、Ｅｎｃ（Ｆ（ａ，ｂ））＝Ｇ（ｃ１，ｃ２）となる関数Ｇが存在する暗号方式である。
【０００８】
準同型暗号にはいくつか種類があり、Ｆ（ａ，ｂ）＝ａ＋ｂである場合を加法準同型暗号（ＡＨＥ）と呼ぶ。なお、実際には、Ｆ（ａ，ｂ）＝ａ＋ｂ  ｍｏｄ  ｎである場合も、扱う平文が十分小さければ実質ａ＋ｂとみなせるので、加法準同型暗号と呼ばれる。
【０００９】
また、Ｆ（ａ，ｂ）＝ａ×ｂである場合を乗法準同型暗号（ＭＨＥ）と呼ぶ。なお、実際には、Ｆ（ａ，ｂ）＝ａ×ｂ  ｍｏｄ  ｎである場合も、扱う平文が十分小さければ実質ａ×ｂとみなせるので、乗法準同型暗号と呼ばれる。
【００１０】
また、加法と乗法の両方の演算が扱える準同型暗号として、完全準同型暗号（ＦＨＥ）が知られている。しかし、完全準同型暗号は、現在利用できる計算機の能力に比較して、計算量が膨大であるため、実用的ではないとみなされている。
【００１１】
また、加法と乗法の両方の演算が扱える準同型暗号であって、演算の回数に上限を設けることにより完全準同型暗号と比較して計算量を抑制した、Ｓｏｍｅｗｈａｔ準同型暗号（ＳＨＥ）も知られている。
【００１２】
例えば、特許文献１には、完全準同型暗号方式により入力データを暗号化して暗号データを生成する暗号化部と、暗号化部により生成された暗号データをサーバに送信する暗号データ送信部と、サーバにて所定の処理が施された暗号データを受信する暗号データ受信部と、所定の処理が施された暗号データを復号する復号部と、を備える、端末装置が開示されている。この特許文献１の技術によると、処理すべき入力データの内容をサーバに漏らすことなく、入力データに対する処理をサーバに代行させることができる。
【００１３】
一方、ＭＰＣは、複数のコンピュータを用いて通信を行いながら、暗号化されたデータを演算するシステムである。ＭＰＣは、準同型暗号と比べて多種類の演算を行うことができる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１２−４９６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
ニューラルネットワークモデルにおいて、データを暗号化データのままで処理することは、処理負荷が多大となり困難なことがある。例えば、非特許文献１の技術では、活性化関数の演算の都度、クライアント側で活性化関数の演算を実行するために、サーバとクライアントとの間でデータのやり取りが発生する。このため、非特許文献１の技術では、サーバとクライアントとの間の通信量が多くなり、処理時間が長期化する。
【００１６】
また、ニューラルネットワークモデルにおいて、データを暗号化データのままで処理することを考えると、利用できる演算が限定されている加法準同型暗号では、ニューラルネットワークの演算を実行することができないことがある。これに対応するため、より多くの種類の演算が可能な完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号等を用いることも考えられるが、このような暗号による暗号化データは、データ量が多いため、演算における処理負荷が多大になるという問題がある。
【００１７】
処理負荷を抑える点を考慮すると、加法準同型暗号を用いて処理をすることが好ましいが、加法準同型暗号を用いる場合には、利用できる演算が限定されており、実行できる処理が限られてしまう。例えば、加法準同型暗号を用いると、整数以外の乗算（例えば、１未満の数の乗算（除算に相当）も含む）を行う処理が実行できない。例えば、一般にニューラルネットワークモデルにおいては、浮動小数点形式の小数を用いて演算を行っているが、加法準同型暗号は、整数と準同型な関係にあるために、固定小数点形式の小数を用いることが自然であると考えられる。しかしながら、固定小数点形式の小数の乗算を行うとき、固定小数点形式の小数のビット数を調整するための除算が必要となる。上述のように加法準同型暗号では、除算を行うことができないので、結果として、固定小数点形式の小数を入力するデータとして使用できない。
【００１８】
また、加法準同型暗号を用いて処理を行う場合には、ニューラルネットワークモデルを使用した処理に限らず、ニューラルネットワークモデルを使用しない処理においても、同様に、実行できる処理が限られてしまうという問題が生じる。
【００１９】
本発明は、上記事情に鑑みなされたものであり、その目的は、準同型暗号による暗号化データを用いてより広範な処理を実行することのできる技術を提供することにある。
【課題を解決するための手段】
【００２０】
上記目的を達成するため、一の観点に係る暗号処理システムは、暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムであって、暗号データ生成装置は、処理対象の平文データに対して所定の２以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部を備え、暗号処理装置は、データ生成装置から暗号化データを取得する第１取得部と、暗号化データを暗号化状態のままで処理を実行する処理部と、を備え、処理結果利用装置は、暗号処理装置の処理部による処理結果を取得する第２取得部と、暗号化された処理結果のデータを復号し、復号されたデータを所定の２以上の数の累乗で除算する後処理部と、を備える。
【発明の効果】
【００２１】
本発明によれば、準同型暗号による暗号化データを用いてより広範な処理を実行することができるようになる。
【図面の簡単な説明】
【００２２】
【図１】図１は、一実施形態に係る処理システムの全体構成図である。
【図２】図２は、一実施形態に係る学習装置の機能構成図である。
【図３】図３は、一実施形態に係る推論装置の機能構成図である。
【図４】図４は、一実施形態に係るクライアント装置の機能構成図である
【図５】図５は、一実施形態に係る処理システムの一例の機能構成図である。
【図６】図６は、一実施形態に係る処理システムの動作を示すシーケンス図である。
【図７】図７は、一実施形態に係るコンピュータ装置の構成図である。
【図８】図８は、変形例に係る処理システムの一例の機能構成図である。
【発明を実施するための形態】
【００２３】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２４】
まず、一実施形態に係る処理システムについて説明する。
【００２５】
図１は、一実施形態に係る処理システムの全体構成図である。
【００２６】
処理システム１は、暗号処理システムの一例であり、学習装置１０と、暗号処理装置の一例としての推論装置２０と、暗号データ生成装置及び処理結果利用装置の一例としてのクライアント装置３０とを備える。学習装置１０と推論装置２０とは、ネットワーク４０を介して接続されている。また、推論装置２０とクライアント装置３０とは、ネットワーク５０を介して接続されている。ネットワーク４０，５０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｏｗｏｒｋ）や、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等である。なお、図１では、ネットワーク４０と、ネットワーク５０とを別のネットワークとしているが、それらを同一のネットワークとしてもよい。
【００２７】
学習装置１０は、ニューラルネットワークモデルの学習を行う。推論装置２０は、学習装置１０によるニューラルネットワークモデルの学習結果（ニューラルネットワークモデルの係数（重みやバイアス）等の設定値）に基づいてニューラルネットワークモデルを設定し、推論処理を行う。クライアント装置３０は、例えば、ユーザにより利用される装置であり、推論処理の対象となるデータ（対象データ）に対して、例えば、暗号化等の前処理を実行する。そして、クライアント装置３０は、前処理したデータを推論装置２０に送信する。クライアント装置３０は、推論装置２０による暗号化された推論処理の結果（推論結果）を受け取り、暗号化された推論結果に対して後処理を実行し、最終的な推論結果を得る。
【００２８】
図２は、第１実施形態に係る学習装置の機能構成図である。
【００２９】
学習装置１０は、学習部１１と、記憶部１５と、設定値通知部１８とを備える。
【００３０】
学習部１１は、ニューラルネットワークモデル１２と、学習制御部１４とを備える。
【００３１】
ニューラルネットワークモデル１２は、例えば、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。ニューラルネットワークモデル１２は、１以上の処理レイヤー（レイヤー）により構成されている。なお、本実施形態では、ニューラルネットワークモデル１２は、設定値の学習のために使用される。図２の例では、ニューラルネットワークモデル１２は、レイヤー１〜レイヤーＮにより構成されている。ここで、Ｎは、１以上の整数である。各レイヤーにおける処理は、各処理部１３によって実行される。各レイヤーにおける処理は、部分処理の一例である。ニューラルネットワークモデル１２は、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何が含まれているかを推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル１２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００３２】
ニューラルネットワークモデル１２のレイヤーを構成する処理部１３としては、例えば、畳込処理部や、活性化関数部や、プーリング処理部や、アフィン処理部や、ＳｏｆｔＭａｘ処理部等がある。畳込処理部は、複数のフィルタデータ（設定値の一例）のそれぞれを用いて畳込処理を実行する。活性化関数部は、入力されたデータを活性化関数により変換する処理を実行する。プーリング処理部は、入力データについてダウンサンプリングする処理を実行する。アフィン処理部は、入力データについてのアフィン変換処理を実行する。ＳｏｆｔＭａｘ処理部は、入力データについてソフトマックス関数による処理を実行する。
【００３３】
学習制御部１４は、記憶部１５に格納されている学習用データ１６を受け付けて、ニューラルネットワークモデル１２に入力し、ニューラルネットワークモデル１２から出力される推論結果に基づいて、ニューラルネットワークモデル１２における設定値を学習する。学習制御部１４は、学習用データ１６による学習を終えた場合には、学習によって得られた設定値に関する設定値情報１７を記憶部１５に格納する。
【００３４】
記憶部１５は、学習部１１のニューラルネットワークモデル１２の学習に使用する学習用データ１６と、ニューラルネットワークモデル１２の係数等の設定値に関する情報である設定値情報１７とを記憶する。なお、学習用データ１６は、学習用データ１６に対応する推論結果データと対応付けた教師データとして記憶部１５に格納されてもよい。学習用データ１６は、例えば、暗号化されていないデータ（平文データ）であってもよい。設定値情報１７に含まれる設定値としては、例えば、畳込処理部で使用されるフィルタの係数や、アフィン処理部で用いられる重み等があり、これらは、例えば処理部の乗算において乗数として用いられる。
【００３５】
設定値通知部１８は、記憶部１５に格納されている設定値情報１７を、推論装置２０に送信する。
【００３６】
次に、推論装置２０について詳細に説明する。
【００３７】
図３は、一実施形態に係る推論装置の機能構成図である。
【００３８】
推論装置２０は、処理実行部の一例としての推論部２１と、記憶部２５と、第１取得部の一例としての受信部２８と、推論結果送信部２９とを備える。
【００３９】
推論部２１は、ニューラルネットワークモデル２２と、推論制御部２４とを備える。
【００４０】
ニューラルネットワークモデル２２は、例えば、準同型暗号による暗号化が行われた暗号データを入力として、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。準同型暗号は、例えば、Ｐａｉｌｌｉｅｒ暗号やｌｉｆｔｅｄ−ＥｌＧａｍａｌ暗号などである。
ニューラルネットワークモデル２２は、１以上の処理レイヤー（レイヤー）により構成されている。なお、本実施形態では、ニューラルネットワークモデル２２は、学習装置１０のニューラルネットワークモデル１２に対応する処理を暗号化データに対して実行する構成である。本実施形態では、例えば、ニューラルネットワーク１２のそれぞれの処理部１３に、ニューラルネットワーク２２のそれぞれの処理部２３が対応する。図３の例では、ニューラルネットワークモデル２２は、レイヤー１〜レイヤーＮにより構成されている。各レイヤーにおける処理（部分処理）は、各処理部２３によって実行される。ニューラルネットワークモデル２２は、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何が含まれているかを推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル２２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００４１】
ニューラルネットワークモデル２２のレイヤーを構成する処理部２３としては、畳込処理部や、活性化関数部や、プーリング処理部や、アフィン処理部や、ＳｏｆｔＭａｘ処理部等がある。
【００４２】
推論制御部２４は、記憶部２５に格納されている設定値情報２７に基づいて、ニューラルネットワークモデル２２の設定を行う、すなわち、処理レイヤーの処理部２３における係数等を設定する。本実施形態では、推論制御部２４は、整数以外の乗算の処理を実行する学習装置１０の処理部１３に対応する処理部２３に対して、調整乗算値を設定する。調整乗算値とは、処理部２３に対して予め決定されている調整値（例えば、１より大きい数）を、設定値情報２７が示す設定値に乗算して得られる整数である。なお、設定値に調整値を乗算した結果が整数とならない場合には、例えば、その値に近い整数を調整乗算値としてもよい。これにより、処理部２３においては、平文データに対して調整乗算値を乗算する処理に対応する暗号文空間上の演算が、前段から入力される暗号化データに対して行われることとなる。すなわち、この処理部２３においては、対応する処理部１３よりも調整値倍（設定値に調整値を乗算した値が整数とならなかった場合には、ほぼ調整値倍）だけ大きい数を乗算する演算が行われることとなる。例えば、或る処理部２３に入力される暗号データが、対応する処理部１３に入力される平文データを暗号化させた暗号データである場合においては、処理部２３から出力される暗号化データの処理結果を復号すると、処理部１３による処理結果の調整値倍の値となる。
【００４３】
例えば、学習装置１０から送信される設定値（学習装置１０における学習で得られる設定値に相当）が浮動小数点形式のデータである場合には、推論制御部２４が設定値を所定ビット数の固定小数点形式のデータに変換する。そして、推論制御部２４は、固定小数点形式に変換した設定値に調整値を乗算させて整数化して調整乗算値を求めるようにしてもよい。この際、調整値を、所定ビット数の固定小数点形式のデータを整数化可能な２の累乗の調整値としてもよい。このようにすると、調整乗算値を確実に整数化することができる。また、学習装置１０から送信される設定値（学習装置１０における学習で得られる設定値に相当）が固定小数点形式のデータである場合には、設定値に調整値を乗算させて整数化して調整乗算値を求めるようにしてもよい。
【００４４】
ここで、加法準同型暗号について、加法準同型暗号であるＰａｉｌｌｉｅｒ暗号を例に挙げて説明する。
【００４５】
暗号に係る処理を行う場合には、以下のような各種設定を決定しておく。すなわち、暗号において使用する安全な素数ｐ及びｑを用意する。なお、素数の決定における手順や注意点は、ＲＳＡ暗号と同じでよい。また、Ｎ＝ｐ×ｑとする。また、ｋを１≦ｋ≦Ｎ−１の範囲で任意に設定する。ｇ＝１＋ｋＮとする。ここで、ｐ、ｑは、秘密鍵、ｇ、Ｎは、公開鍵、兼システムパラメータである。
【００４６】
例えば、平文データをＡ、Ｂ（０≦Ａ≦Ｎ−１、０≦Ｂ≦Ｎ−１）とすると、それぞれを暗号化した暗号化データｅＡ、ｅＢは、以下の式（１）、（２）に示すように表される。
ｅＡ＝ｇＡ×ｒ１Ｎ  ｍｏｄ  Ｎ２      ・・・（１）
ｅＢ＝ｇＢ×ｒ２Ｎ  ｍｏｄ  Ｎ２      ・・・（２）
ここで、ｒ１（０≦ｒ１≦Ｎ−１）、及びｒ２（０≦ｒ２≦Ｎ−１）は、乱数である。
【００４７】
Ｐａｉｌｌｉｅｒ暗号の暗号化データは、平文データ同士の和演算に対応する演算を、暗号化データの乗算として実行可能である。
暗号化データの乗算、すなわち、ｅＡ×ｅＢは、式（３）に示すようになる。
ｅＡ×ｅＢ＝ｇＡ×ｇＢ×ｒ１Ｎ×ｒ２Ｎ  ｍｏｄ  Ｎ２ 
＝ｇＡ＋Ｂ×ｒ１Ｎ×ｒ２Ｎ  ｍｏｄ  Ｎ２・・・（３）
ここで、ｇ＝（１＋ｋＮ）であるので、ｇＮのｇに（１＋ｋＮ）を代入して、ｇＮ＝（１＋ｋＮ）Ｎが得られる。また、（１＋ｋＮ）Ｎを二項定理で展開すると、（１＋ｋＮ）Ｎ＝１＋ｋＮ２＋…となる。展開後の式１＋ｋＮ２＋…の第二項以降は、全てＮ２の倍数であるため、１＋ｋＮ２＋…をＮ２で割ったあまりは１である。したがって、ｇＮｍｏｄＮ２＝１である。そして、ｇＮ  ｍｏｄ  Ｎ２＝１であるため、ｇ（Ａ＋Ｂ）＝ｇ（Ａ＋Ｂ  ｍｏｄ  Ｎ）が成り立つ。すると、式（３）は、ｇ（Ａ＋Ｂ）＝ｇ（Ａ＋Ｂ  ｍｏｄ  Ｎ）の関係を用いて、下記式のように変形できる。
式（３）＝ｇ（Ａ＋Ｂ  ｍｏｄ  Ｎ）×ｒ１Ｎ×ｒ２Ｎ  ｍｏｄ  Ｎ２
＝ｇ（Ａ＋Ｂ  ｍｏｄ  Ｎ）×（ｒ１×ｒ２）Ｎ  ｍｏｄ  Ｎ２・・・（４）
ｒ３＝ｒ１×ｒ２  ｍｏｄ  Ｎとおいたとき、ｒ１もｒ２も乱数なので、ｒ３も乱数となる。したがって、式（４）は下記式のように変形できる。
式（４）＝ｇ（Ａ＋Ｂ  ｍｏｄ  Ｎ）×ｒ３Ｎ  ｍｏｄ  Ｎ２
＝ｅ（Ａ＋Ｂ  ｍｏｄ  Ｎ）・・・（５）
式（５）に示すｅ（Ａ＋Ｂ  ｍｏｄ  Ｎ）は、復号すると、Ａ＋Ｂ  ｍｏｄ  Ｎとなる。したがって、ＡおよびＢがＮに比べて十分小さければ、実質Ａ＋Ｂとみなすことができるため、暗号化データの乗算は、平文データの和演算に対応していることがわかる。
【００４８】
また、Ｐａｉｌｌｉｅｒ暗号の暗号化データは、平文データと、平文データの整数との乗算に対応する演算を実行可能である。
平文データＡと整数Ｃとの乗算であるＡ×Ｃは、ＡをＣ回加算するという和演算に対応する。したがって、この和演算のそれぞれについて、暗号化データの乗算を行うことにより、暗号化データに対して平文データＡと整数Ｃとの乗算に対応する演算を実行することができる。
具体的には、ｅＡ×ｅＡ×・・・、すなわち暗号化データの累乗（整数Ｃ乗）を行えばよいこととなり、式（６）に示すようになる。
ｅＡ×ｅＡ×・・・＝ｅＡ＋Ａ＋・・・＝ｅＡＣ      ・・・（６）
式（６）に示すｅＡＣは、復号すると、ＡＣとなり、平文データＡと整数Ｃとの乗算の結果となる。したがって、Ｐａｉｌｌｉｅｒ暗号の同じ暗号化データを累乗する演算が、平文データと、平文データの整数との乗算に対応する演算であることがわかる。
【００４９】
また、推論制御部２４は、処理対象のデータである対象データ２６をニューラルネットワークモデル２２に入力し、ニューラルネットワークモデル２２による推論処理を実行させる。本実施形態では、対象データ２６は、準同型暗号で暗号化された暗号化データである。
【００５０】
記憶部２５は、推論部２１のニューラルネットワークモデル２２で推論処理を実行させる対象の対象データ２６と、ニューラルネットワークモデル２２の係数等の設定値に関する情報である設定値情報２７とを記憶する。設定値情報２７に含まれる設定値としては、学習装置１０による学習結果であり、例えば、処理部２３で乗数として使用されるフィルタの係数や、重み等がある。なお、推論装置２０は、推論処理を実行するとき、学習装置１０から設定値情報２７を取得して記憶部２５に格納し、その設定値情報を推論処理に利用してもよい。また、推論装置２０は、学習装置１０によって学習された設定値情報２７を予め記憶部２５に格納するようにし、推論処理の実行時に、記憶部２５から設定値情報２７を読み出して利用してもよい。さらに、推論装置２０は、後述する記録媒体１１１から学習装置１０によって学習された設定値情報２７を読み出して、記憶部２５に格納するようにしてもよい。
【００５１】
受信部２８は、学習装置１０から送信される設定値情報を受信して記憶部２５に格納する。また、受信部２８は、クライアント装置３０から送信される暗号化された対象データ２６を受信して記憶部２５に格納する。
【００５２】
推論結果送信部２９は、推論部２１のニューラルネットワークモデル２２による推論処理の結果、すなわち、暗号化データである推論結果をクライアント装置３０に送信する。
【００５３】
次に、クライアント装置３０について詳細に説明する。
【００５４】
図４は、一実施形態に係るクライアント装置の機能構成図である。
【００５５】
クライアント装置３０は、結果表示部３１と、送信部３２と、記憶部３３と、第２取得部の一例としての受信部３６と、前処理部３７と、後処理部３８とを備える。
【００５６】
記憶部３３は、推論処理を実行させる平文データである対象データ３４と、推論処理の推論結果３５とを記憶する。なお、推論結果３５は、推論装置２０から推論結果が送信されて所定の処理が行われた場合に格納されるものであり、推論装置２０による推論処理が行われていない対象データ３４に対する推論結果については、存在しない。
【００５７】
前処理部３７は、記憶部３３に格納されている暗号化されていない対象データ３４に対して、所定の前処理を実行する。具体的には、前処理部３７は、対象データ３４に対して、所定の２の累乗を乗算させ、推論装置２０において実行される処理に含まれる累積の調整値で除算させた平文データに対応する準同型暗号（例えば、Ｐａｉｌｌｉｅｒ暗号）の暗号化データを生成する前処理を実行する。ここで、推論装置２０において実行される処理に含まれる全体の調整値とは、例えば、処理において、累積的に調整値の乗算が行われる場合には、累積的な乗算に使用された全ての調整値を乗算した値（累積調整値）である。この前処理によると、後続の推論処理２０が実行されると、その推論結果中における調整値による調整の成分が除去されることとなる。なお、推論装置２０における推論処理の全体の調整値は、推論装置２０の構成により特定されるので、予め前処理部３７に設定するようにしてもよく、推論装置２０から処理前に取得して前処理部３７に設定するようにしてもよい。また、前処理部３７は、生成した暗号化データを送信部３２に渡す。
【００５８】
送信部３２は、前処理部３７から渡された暗号化データを、推論処理の対象データとして推論装置２０に送信する。受信部３６は、推論装置２０から推論処理の推論結果を受信して後処理部３８に渡す。
【００５９】
後処理部３８は、受信部３６から渡された推論結果を受け取り、推論結果に対して所定の後処理を実行する。具体的には、後処理部３８は、前処理部３７の暗号方式に対応する復号化を行い、復号された推論結果を、前処理部３７で乗算した所定の２の累乗で除算し、記憶部３３に格納する。
【００６０】
結果表示部３１は、記憶部３３に格納された推論結果３５に基づいて各種情報を表示出力する。結果表示部３１は、推論結果３５をそのまま表示してもよく、推論結果３５に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
【００６１】
次に、処理システム１のより具体的な例を説明する。
【００６２】
図５は、一実施形態に係る処理システムの一例の機能構成図である。
【００６３】
学習装置１０は、処理レイヤー１を構成する処理部１３−１と、処理レイヤー２を構成する処理部１３−２とを有する。
【００６４】
処理部１３−１は、入力されるデータに対して、０．５倍する乗算処理を行う。なお、０．５は、学習装置１０による学習によって処理部１３−１での演算に用いる設定値として得られたものである。例えば、平文データＡが処理部１３−１に入力されると、処理部１３−１では、Ａ×０．５が演算されて、０．５Ａが出力される。なお、学習された処理部１３−１用の設定値（本例では、０．５）は、設定値通知部１８により推論装置２０に送信される。
【００６５】
処理部１３−２は、入力されるデータに対して、０．２５倍する乗算処理を行って出力する。なお、０．２５は、学習装置１０による学習によって処理部１３−２での演算に用いる設定値として得られたものである。例えば、処理部１３−１から出力された平文データである０．５Ａが処理部１３−２に入力されると、処理部１３−２では、０．５Ａ×０．２５が演算されて、０．１２５Ａが出力される。なお、学習された処理部１３−２用の設定値（本例では、０．２５）は、設定値通知部１８により推論装置２０に送信される。
【００６６】
推論装置２０は、処理レイヤー１を構成する処理部２３−１と、処理レイヤー２を構成する処理部２３−２と、推論制御部２４とを有する。
【００６７】
推論制御部２４は、学習装置１０から送信された各設定値に対して、各処理部２３−１、２３−２に対応する調整値を乗算させて整数化させることにより調整乗算値を生成し、調整乗算値を各処理部２３−１、２３−２に設定する。本実施形態では、調整値は、変換部３７ｃで乗算する累乗の底（本例では、２）又はこの底を累乗した値としている。
【００６８】
本例では、処理部２３−１の調整値は、４であり、処理部２３−２の調整値は、４となっている。本例においては、推論調整部２４は、学習装置１０から送信された処理部２３−１用の調整値０．５に、処理部２３−１の調整値４を乗算して、調整乗算値２を生成し、調整乗算値２を処理部２３−１に設定する。また、推論調整部２４は、学習装置１０から送信された処理部２３−２用の調整値０．２５に、処理部２３−２の調整値４を乗算して、調整乗算値１を生成し、調整乗算値１を処理部２３−２に設定する。
【００６９】
クライアント装置３０の前処理部３７は、変換部３７ｃと、調整除去部３７ｂと、暗号化部３７ａとを含む。変換部３７ｃは、浮動小数点形式の平文データを、所定の２の累乗倍することにより、浮動小数点形式の平文データの小数点部文を固定小数点形式のデータに変換する。ここで、所定の２の累乗としては、例えば、２１６としてもよく、十分なビット数が得られるものであればよく、例えば、推論処理による累積調整値以上の値であってもよい。図５の例では、変換部３７ｃは、浮動小数点形式の平文データであるデータＡを２１６倍、すなわち、６５５３６倍した６５５３６Ａに変換する。
【００７０】
調整除去部３７ｂは、推論装置２０における累積調整値の影響を除去するために、対象データから累積調整値に相当する倍数を事前に除去する処理、すなわち、累積調整値を除算する処理を行う。本実施例では、調整除去部３７ｂは、変換部３７ｃで変換された固定小数点形式の平文データを累積調整値で除算する。図５の例では、データ６５５３６Ａを、処理部２３−１の調整値４と処理部２３−２の調整値４とを乗算した累積調整値１６で除算して、４０９６Ａとする。なお、累積調整値については、調整除去部３７ｂが推論制御部２４から受信して設定するようにしてもよく、クライアント装置３０の利用者が累積調整値を取得して設定するようにしてもよい。
【００７１】
暗号化部３７ａは、平文データを、加法準同型暗号、例えば、Ｐａｉｌｌｉｅｒ暗号に暗号化する。図５の例では、平文データ４０９６Ａは、暗号化データｅ４０９６Ａに暗号化される。ここで、ｅ４０９６Ａは、平文データ４０９６Ａを暗号化した値を示す。
【００７２】
このように、前処理部３７で前処理が行われて暗号化された対象データは、推論装置２０に送信される。処理部２３−１は、平文データに対して設定された調整乗算値（同図では、２）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。例えば、Ｐａｉｌｌｉｅｒ暗号を用いている場合には、処理部２３−１は、対応演算として、入力された暗号化データを、調整乗算値だけ累乗する演算を行う。本例では、処理部２３−１は、入力された暗号化データｅ４０９６Ａを、調整乗算値だけ累乗（ここでは、２乗）することにより、ｅ８１９２Ａを算出して出力する。ｅ８１９２Ａは、復号すると、平文データ８１９２Ａとなる。したがって、処理部２３−１の出力結果は、処理部１３−１の出力結果である０．５Ａに対して、調整値倍（４倍）と、前処理部３７で乗算した２の累乗（２１６倍：６５５３６倍）と、累積調整値の除去調整分（１／１６）とを乗算した倍数（ここでは、１６３８４倍）の値となる暗号化データｅ８１９２Ａとなっている。
【００７３】
処理部２３−２は、平文データに対して設定された調整乗算値（同図では、１）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。例えば、Ｐａｉｌｌｉｅｒ暗号を用いている場合には、処理部２３−１は、対応演算として、入力された暗号化データを、調整乗算値だけ累乗する演算を行う。本例では、処理部２３−２は、入力された暗号化データｅ８１９２Ａを、調整乗算値だけ累乗（１乗）することにより、ｅ８１９２Ａを算出して出力する。ｅ８１９２Ａは、復号すると、平文データ８１９２Ａとなる。したがって、処理部２３−２の出力結果は、処理部１３−２の出力結果である０．１２５Ａに対して、処理部２３−１の調整値（４）と、処理部２３−２の調整値（４）と、前処理部３７で乗算した２の累乗（２１６倍：６５５３６倍）と、累積調整値の調整分（１／１６）とを乗算した倍数（ここでは、６５５３６倍）の値となる暗号化データとなっている。ここで、処理部２３−２の出力結果は、処理部１３−２の出力結果である０．１２５Ａに対して、前処理部３７で乗算した２の累乗（２１６倍：６５５３６倍）のみを乗算した倍数の値であり、全体の調整値の影響が除去された値となっている。処理部２３−２の処理結果は、推論結果送信部２９によりクライアント装置３０に送信される。
【００７４】
クライアント装置３０の後処理部３８は、復号部３８ａと、変換部３８ｂとを含む。復号部３８ａは、推論装置２０から送信される暗号化データである推論結果を取得し、暗号化データの暗号方式に対応する復号を行って、平文データの推論結果を得て変換部３８ｂに渡す。例えば、本例では、復号部３８ａは、ｅ８１９２Ａを復号して、平文データ８１９２Ａを得て、変換部３８ｂに渡す。
【００７５】
変換部３８ｂは、前処理部３７における変換部３７ｃの逆変換を行う。すなわち、変換部３８ｂは、固定小数点形式の平文データを、所定の２の累乗で除算することにより、浮動小数点形式の平文データに変換する。図５の例では、変換部３８ｂは、固定小数点形式の平文データであるデータ８１９２Ａを２１６で除算することにより、０．１２５Ａに変換する。これにより、クライアント装置３０では、平文データに対して学習装置１０の処理部１３−１、１３−２の処理を実行した実行結果と同じ値を得ることができる。
【００７６】
以上説明したように、処理システム１では、推論装置２０においては、暗号化データを用いて秘匿状態を維持したまま処理を行うことができ、クライアント装置３０において、平文データに対して処理をした結果と同じ結果を得ることができる。
【００７７】
次に、一実施形態に係る処理システム１における処理動作について説明する。
【００７８】
図６は、一実施形態に係る処理システムの動作を示すシーケンス図である。
【００７９】
学習装置１０の学習制御部１４が記憶部１５に格納されている学習用データ１６を用いて、学習部１１のニューラルネットワークモデル１２により推論処理を実行させることで、ニューラルネットワークモデル１２の処理部１３における各種設定値の学習を行う（Ｓ１０１）。次いで、学習制御部１４は、学習によって得られた設定値に関する設定値情報を記憶部１５に格納する（Ｓ１０２）。
【００８０】
次いで、設定値通知部１８は、記憶部１５に格納された設定値情報１７を読み出して、推論装置２０に送信する（Ｓ１０３）。
【００８１】
推論装置２０の受信部２８は、学習装置１０から送信された設定値情報１７を受信して、記憶部２５に格納する（Ｓ１０４）。次いで、推論処理２０の推論制御部２４は、記憶部２５から設定値情報２７を取得し、設定値情報２７の各処理部２３用の設定値に対して、各処理部２３に対応する調整値を乗算させて整数化させることにより調整乗算値を生成し、調整乗算値を各処理部２３に設定する（Ｓ１０５）。
【００８２】
一方、クライアント装置３０の変換部３７ｃは、記憶部３３から対象データ３４を取得し、対象データを固定小数値形式に変換する（Ｓ１０６）。次いで、調整除去部３７ｂは、固定小数値形式の対象データに対して、累積調整値に相当する倍数を除算する処理を行う（Ｓ１０７）。次いで、暗号部３７ａは、調整除去部３７ｂにより得られた対象データに対して所定の暗号により暗号化し、送信部３２に渡す(Ｓ１０８)。送信部３２は、暗号化された対象データを推論装置２０に送信する（Ｓ１０９）。
【００８３】
推論装置２０の受信部２８は、クライアント装置３０から推論対象の対象データを受信し、記憶部２５に格納する（Ｓ１１０）。
【００８４】
次いで、推論制御部２４は、記憶部２５から暗号化データである対象データ２６を読み出して、ニューラルネットワークモデル２２の最初の処理レイヤー（レイヤー１）の処理部２３に入力する。この結果、ニューラルネットワークモデル２２において、対象データ２６を対象とした推論処理が実行されて、最終の処理レイヤー（レイヤーＮ）の処理部２３から推論結果が推論結果送信部２９に出力されることとなる（Ｓ１１１）。
【００８５】
次いで、推論装置２０の推論結果送信部２９は、ニューラルネットワークモデル２２から渡された推論結果を対象データの推論処理を要求したクライアント装置３０に対して送信する（Ｓ１１２）。
【００８６】
クライアント装置３０の受信部３６は、推論装置２０から推論結果を受信して後処理部３８に渡し、後処理部３８の復号部３８ａが推論結果を復号化し、変換部３８ｂに渡す（Ｓ１１３）。変換部３８ｂは、復号された推論結果に対して、変換部３７ｃの変換処理の逆変換、すなわち、固定小数値形式から浮動小数点形式のデータに戻す処理を実行することにより、最終的な推論結果（推論結果（最終））を生成し（Ｓ１１４）、生成した推論結果(最終)３５を記憶部３３に格納する（Ｓ１１５）。その後、結果表示部３１が、記憶部３３に格納された推論結果３５に基づいて、推論結果を表示出力する（Ｓ１１６）。
【００８７】
以上説明したように、本実施形態に係る処理システム１によると、対象データが浮動小数点形式である場合であっても支障なく推論結果を得ることができる。また、平文データに対する整数以外の乗算処理が必要な場合であっても、推論装置２０側では、暗号化データに対して、平文データに対する整数の乗算処理に対応する処理を実行すれば済むようになる。このため、平文に対する整数以外の乗算処理を含む処理について、推論装置２０側では、暗号化データによる秘匿状態を維持したままで処理をすることができる。これにより、推論装置２０から情報が漏えいしてしまうことを適切に防止することができる。
【００８８】
上記した学習装置１０、推論装置２０、クライアント装置３０は、それぞれコンピュータ装置により構成することができる。
【００８９】
図７は、コンピュータ装置の一実施例を示すブロック図である。なお、本実施形態では、学習装置１０、推論装置２０、及びクライアント装置３０は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、同様な構成を有するものとすることができる。以下の説明では、便宜的に図７に示すコンピュータ装置を用いて、学習装置１０、推論装置２０、及びクライアント装置３０のそれぞれを構成するコンピュータ装置について説明することとする。
【００９０】
コンピュータ装置１００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎ  Ｕｎｉｔ）１０１と、メインメモリ１０２と、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３と、リーダライタ１０４と、通信インターフェース（通信Ｉ／Ｆ）１０５と、補助記憶装置１０６と、入出力インターフェース（入出力Ｉ／Ｆ）１０７と、表示装置１０８と、入力装置１０９とを備える。ＣＰＵ１０１、メインメモリ１０２、ＧＰＵ１０３、リーダライタ１０４、通信Ｉ／Ｆ１０５、補助記憶装置１０６、入出力Ｉ／Ｆ１０７、及び表示装置１０８は、バス１１０を介して接続されている。学習装置１０と、推論装置２０と、クライアント装置３０とは、それぞれコンピュータ装置１００に記載の構成要素の一部または全てを適宜選択して構成される。
【００９１】
ここで、メインメモリ１０２又は補助記憶装置１０６の少なくとも一方が、学習装置１０の記憶部１５、推論装置２０の記憶部２５、及びクライアント装置３０の記憶部３３として機能する。
【００９２】
学習装置１０を構成するコンピュータ装置１００のＣＰＵ１０１は、学習装置１０の全体を統括制御する。ＣＰＵ１０１は、補助記憶装置１０６に格納されているプログラムをメインメモリ１０２に読み出して実行することにより各種処理を実行する。学習装置１０において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、学習部１１のニューラルネットワークモデル１２を構成する。また、推論装置２０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、推論部２１のニューラルネットワークモデル２２を構成する。また、クライアント装置３０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、結果表示部３１、前処理部３７、後処理部３８を構成する。なお、推論装置２０を構成するコンピュータ装置１００のＣＰＵ１０１は、クライアント装置３０を構成するコンピュータ装置１００のＣＰＵ１０１よりも処理性能が良いものとしてもよい。
【００９３】
メインメモリ１０２は、例えば、ＲＡＭ、ＲＯＭ等であり、ＣＰＵ１０１に実行されるプログラム（処理プログラム等）や、各種情報を記憶する。補助記憶装置１０６は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の非一時的記憶デバイス（不揮発性記憶デバイス）であり、ＣＰＵ１０１で実行されるプログラムや、各種情報を記憶する。学習装置１０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、学習データ１６や設定値情報１７を記憶する。推論装置２０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ２６や設定値情報２７を記憶する。クライアント装置３０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ３４や推論結果３５を記憶する。
【００９４】
ＧＰＵ１０３は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、ＧＰＵ１０３は、ＣＰＵ１０１の指示に従って所定の処理を実行する。学習装置１０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、少なくとも１つの処理部１３を構成してもよい。また、推論装置２０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、少なくとも１つの処理部２３を構成してもよい。
【００９５】
リーダライタ１０４は、記録媒体１１１を着脱可能であり、記録媒体１１１からのデータの読み出し、及び記録媒体１１１へのデータの書き込みを行う。記録媒体１１１としては、例えば、ＳＤメモリーカード、ＦＤ（フロッピーディスク：登録商標）、ＣＤ、ＤＶＤ、ＢＤ（登録商標）、フラッシュメモリ等の非一時的記録媒体（不揮発性記録媒体）がある。本実施形態においては、記録媒体１１１に、処理プログラムを格納しておき、リードライタ１０４により、これを読み出して、利用するようにしてもよい。また、学習装置１０を構成するコンピュータ装置１００において、記録媒体１１１に、学習用データを格納しておき、リードライタ１０４により、これを読み出して利用するようにしてもよい。また、クライアント装置３０を構成するコンピュータ装置１００において、記録媒体１１１に、対象データを格納しておき、リードライタ１０４により、これを読み出して記憶部３３に格納するようにしてもよい。
【００９６】
通信Ｉ／Ｆ１０５は、ネットワーク４０、５０に接続されており、ネットワーク４０、５０に接続された他の装置との間でのデータの送受信を行う。学習装置１０は、例えば、通信Ｉ／Ｆ１０５を介してネットワーク４０に接続された推論装置２０に設定値情報を送信する。学習装置１０の設定値通知部１８、推論装置２０の受信部２８及び推論結果送信部２９、並びにクライアント装置３０の送信部３２及び受信部３６は、それぞれを構成するコンピュータ装置１００の通信Ｉ／Ｆ１０５及びＣＰＵ１０１によって構成される。
【００９７】
入出力Ｉ／Ｆ１０７は、例えば、マウス、キーボード等の入力装置１０９と接続されている。学習装置１０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、学習装置１０の管理者による操作入力を受け付ける。また、推論装置２０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、推論装置２０の管理者による操作入力を受け付ける。さらに、クライアント装置３０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、クライアント装置３０のユーザによる操作入力を受け付ける。
【００９８】
表示装置１０８は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【００９９】
次に、変形例に係る処理システム２について説明する。
【０１００】
ここで、加法準同型暗号では暗号データの整数同士の加算しか行うことができないが、加算を繰り返すことで平文の整数の乗算はできる。このため、加法準同型暗号を用いて、暗号データの属する巡回群の位数を法とする逆元を、暗号データである割られる数に乗算することで、条件付きで除算ができる。この条件とは、暗号データである割られる数が、平文の割る数で割り切れることである。暗号化データの割られる数は暗号化されているため、暗号化データからは、割る数で割り切れるか否かは知る方法がない。したがって、加法準同型暗号上において常に除算を行うことはできない。しかしながら、このことは、裏を返せば、割られる数が割り切れることを保証できるなら、逆元を乗算することにより、加法準同型暗号空間上での除算が可能となる。本変形例に係る処理システムでは、割られる数が割り切れることを保証できることにより、加法準同型暗号空間上での除算を可能とすることができる。
【０１０１】
ここで、平文の属する有限巡回群の値（元）についての逆元について説明する。なお、説明を容易化するために、位数を５とする巡回群Ｇ｛０，１，２，３，４｝を例にして逆元を説明する。
【０１０２】
或る元に対する逆元とは、元に対して乗算することにより１となる値を示す。巡回群Ｇにおいては、２の逆元２−１は、２−１≡３（ｍｏｄ５）となる。これは、巡回群Ｇにおける２×３＝２＋２＋２＝１となるからである。ここで、平文データに対して逆元を乗算する演算についての加法準同型暗号の暗号文空間上の計算は、ｅ（Ｄ×２−１）＝ｅ（Ｄ×３）＝ｅ（Ｄ）×ｅ（Ｄ）×ｅ（Ｄ）＝ｅ（Ｄ）＾３となる。なお、Ｄは、平文データの任意の値を示し、ｅ（）は、カッコ内の平文を暗号化したデータを示している。ここで、Ｄが元（２）で割り切れることを条件とすると、ｅ（Ｄ×２−１）＝ｅ（Ｄ）＾３＝ｅ（Ｄ／２）となる。
【０１０３】
或る元に対する逆元については、例えば、公知の拡張ユーグリッドの互除法を用いることで算出することができる。
【０１０４】
図８は、変形例に係る処理システムの一例の機能構成図である。なお、図５に示す処理システムと同様な部分については、同一の符号を付し、説明を省略する場合がある。
【０１０５】
変形例に係る処理システム２は、上記した図５に示す処理システム１において、推論装置２０に代えて、推論装置６０を備え、クライアント装置３０に代えて、クライアント装置７０を備えるようにしたものである。
【０１０６】
クライアント装置７０は、前処理部３７に代えて、前処理部３９を備える。前処理部３９は、暗号化部３７ａと、変換部３７ｃとを備える。
【０１０７】
図８の例では、変換部３７ｃは、浮動小数点形式の平文データであるデータＡを２１６倍、すなわち、６５５３６倍したデータ６５５３６Ａに変換する。
【０１０８】
暗号化部３７ａは、平文データを、加法準同型暗号、例えば、Ｐａｉｌｌｉｅｒ暗号により暗号化する。図８の例では、暗号化部３７ａは、平文データ６５５３６Ａを、暗号化データｅ６５５３６Ａに暗号化する。
【０１０９】
推論装置６０は、処理部２３−１に代えて、処理部６１−１を備え、処理部２３−２に代えて、処理部６１−２を備える。処理部６１−１は、平文データに対して設定された調整乗算値（同図では、２）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。更に、処理部６１−１は、演算により得られた暗号化データに対して、調整乗算値に対応する調整値（同図では、４）についての逆元（同図では、４−１）を乗算する演算に対応する暗号文空間上の演算を行う。ここで、逆元を乗算する処理に対応する暗号文空間上の演算は、暗号文データの逆元の累乗（逆元乗）であり、同一の暗号文データを複数回乗算しなくてはいけない。そこで、この演算においては、例えば、バイナリ法を利用して演算処理の処理量を低減して、処理時間を短縮するようにしてもよい。なお、本変形例では、クライアント装置７０の変換部３７ｃにおいて、所定の２の累乗が行われているので、平文データの値は、調整値により割り切れることが保証されている。
【０１１０】
図８の例では、処理部６１−１は、入力された暗号化データｅ６５５３６Ａを、調整乗算値だけ累乗（ここでは、２乗）する。更に、処理部６１−１は、得られた暗号化データに対して、調整値４の逆元４−１を乗算する演算に対応する暗号文空間上の演算を実行する、すなわち、処理部６１−１は、暗号化データに対して、逆元４−１の累乗を実行する。これにより、処理部６１−１は、平文６５５３６Ａに対して、調整値と、逆元とを乗算した平文３２７６８Ａに対応する暗号化データｅ３２７６８Ａを出力する。したがって、処理部６１−１の出力結果は、処理部１３−１の出力結果である０．５Ａに対して、前処理部３７で乗算した２の累乗倍（２１６倍：６５５３６倍）の値となる暗号化データとなっている。
【０１１１】
また、処理部６１−２は、平文データに対して設定された調整乗算値（同図では、１）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。更に、処理部６１−２は、演算により得られた暗号化データに対して、調整乗算値に対応する調整値（同図では、４）についての逆元（同図では、４−１）を乗算する演算に対応する暗号文空間上の演算を実行する。なお、本変形例では、クライアント装置７０の変換部３７ｃにおいて、所定の２の累乗が行われているので、平文データの値は、調整値により割り切れることが保証されている。
【０１１２】
図８の例では、処理部６１−２は、入力された暗号化データｅ３２７６８Ａを、調整乗算値だけ累乗（ここでは、１乗）する。更に、処理部６１−２は、得られた暗号化データに対して、調整値４の逆元４−１を乗算に対応する暗号空間上の演算を実行する。すなわち、処理部６１−２は、暗号化データに対して、逆元４−１の累乗を実行する。これにより、処理部６１−２は、平文３２７６８Ａに対して、調整値と、逆元とを乗算した平文８１９２Ａに対応する暗号化データｅ８１９２Ａを出力する。したがって、処理部６１−２の出力結果は、処理部１３−１の出力結果である０．１２５Ａに対して、前処理部３７で乗算した２の累乗倍（２１６倍：６５５３６倍）の値となる暗号化データとなっている。この結果、クライアント装置７０には、前処理部３７で乗算した２の累乗倍（２１６倍：６５５３６倍）の値となる暗号化データが送信されることとなる。
【０１１３】
この処理システム２によると、クライアント装置７０では、推論装置６０で使用する調整値による影響を除去する処理をする必要がないので、推論装置６０における調整値に応じて処理を変える必要がなく、共通の構成とすることができる。
【０１１４】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１１５】
例えば、上記実施形態では、前処理部３７における処理を、変換部３７ｃによる変換処理を行い、次に、調整除去部３７ｂによる調整値の補正を行い、次に、暗号化部３７ａの暗号化を行うようにしていたが、本発明はこれに限られず、これらの処理の順番を入れ替えてもよい。但し、実行する順番に応じて、実際に行う具体的な処理の内容を適宜変更し、同一の対象データが生成されるようにする必要がある場合がある。例えば、暗号化部による暗号化の処理を、調整除去部による処理よりも前に実行するようにしてもよく、この場合においては、調整除去部は、暗号化部による処理結果に対応する平文に対して累積調整値の逆元を乗算する処理に対応する暗号文空間上の演算を行う必要がある。例えば、前処理部３７において、図５に示す例と同様な対象データを生成する場合には、調整除去部は、１６−１を乗算する処理に対応する暗号文空間上の演算を行うようにすればよい。また、例えば、対象データが整数である場合においては、例えば、暗号化部による暗号化を行い、その後に、変換部による変換処理を行うようにしてもよい。
【０１１６】
また、上記実施形態において、例えば、前処理部３７に入力されるデータが整数であって、累積調整値により割り切れることが保証される場合であれば、変換部３７ｃを備えなくてもよい。
【０１１７】
また、上記変形例においては、各レイヤー内において、調整値を除去するための逆元を乗算する演算に対応する暗号文空間上の演算を実行するようにしている。本発明はこれに限られず、調整値を除去するための逆元を乗算する演算に対応する暗号文空間上の処理を別のレイヤーで実行してもよい。なお、調整値を含む処理のレイヤーと、調整値を除去するための逆元を乗算する演算に対応する演算のレイヤー（除去レイヤ）とを別のレイヤーとする場合には、これらの対応関係がわかるようにしておいてもよい。例えば、除去レイヤーは、調整値を含む処理の直後のレイヤーとしてもよい。このようにすると、推論装置６０における処理を修正や変更する際に、変更すべきレイヤーを容易に把握することができる。また、推論装置６０において、推論装置６０での処理における累積調整値の影響を全て除去できれば、累積調整値に対応する逆元を乗算する処理に対応する処理を１回実行するようにしてもよく、累積調整値を分解した複数の値の逆元をそれぞれ乗算する処理に対応する暗号文空間上の処理を別々に実行するようにしてもよい。また、複数の部分処理の調整値に対応する複数の逆元をまとめて乗算する処理に対応する暗号文空間上の処理を実行するようにしてもよい。また、逆元の乗算に対応する暗号文空間上の処理を、推論装置６０での処理の最初又は最後に実行するようにしてもよい。
【０１１８】
また、上記実施例において、変換部３７ｃでは、２の累乗を乗算するように、変換部３８ｂでは、２の累乗で除算するようにしていたが、本発明はこれに限られない。本発明は、例えば、変換部３７ｃで、２よりも大きい数の累乗を乗算し、変換部２８では、乗算に使用した２よりも大きい数の累乗で除算するようにしてもよい。要は、本発明は、変換部３７ｃでは、２以上の数の累乗を乗算するようにし、変換部３８ｂでは、乗算に使用した２以上の数の累乗で除算するようにすればよい。ここで、例えば、図８に示す構成のように、暗号化データに対して調整値の逆元を乗算する処理に対応する暗号文空間上の処理を実行する場合には、変換部３７ｃで使用する累乗の底と、調整値の底とを一致させておく必要がある。なお、図５に示す構成のように、暗号化データに対して調整値の逆元を乗算する処理に対応する暗号文空間上の処理を実行する必要がない場合には、変換部３７ｃで使用する累乗の底と、調整値の底とを一致させなくてもよい。
【０１１９】
例えば、上記実施形態では、２つの処理レイヤー（処理部）を有するニューラルネットワークモデルを用いて処理を実行する学習装置及び推論装置を例に示していたが、本発明はこれに限られない。本発明は、１つの処理レイヤー（処理部）のみのニューラルネットワークモデルや、３つ以上の処理レイヤー（処理部）を有するニューラルネットワークモデルを用いて処理を実行する学習装置及び推論装置に対しても同様に適用することができる。
【０１２０】
また、上記実施形態では、ニューラルネットワークモデルを用いた処理を実行する推論装置に適用される例を示していたが、本発明はこれに限られず、例えば、ニューラルネットワークモデルを用いずに処理を実行する暗号処理装置に対しても同様に適用することができる。
【０１２１】
また、上記実施形態においては、準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号としてもよい。ＳｏｍｅＷｈａｔ準同型暗号としては、ＬＷＥ格子暗号を用いてもよい。
【０１２２】
また、上記実施形態において、学習装置１０、推論装置２０（６０）、又はクライアント装置３０（７０）のＣＰＵ１０１がプログラムを実行することにより構成していた機能部の少なくとも一部を、各装置内の他のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。また、学習装置１０のＧＰＵ１０３により構成していた処理部１３を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、推論装置２０（６０）のＧＰＵ１０３により構成していた処理部２３を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。
【０１２３】
また、上記実施形態では、対象データを受け付ける入力部の一例として受信部２８を例に挙げていたが、本発明はこれに限られず、例えば、入力部として、対象データが格納された記録媒体から対象データを読み取るリーダライタとしてもよく、また、対象データとなる画像データを取り込むカメラとしてもよい。
【０１２４】
また、上記実施形態では、学習装置１０と推論装置２０（６０）を別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、同一のハードウェアにより構成してもよい。
【０１２５】
また、上記実施形態では、暗号データ生成装置と、処理結果利用装置とを、一のクライアント装置３０（７０）により構成していたが、暗号データ生成装置と、処理結果利用装置とを別のクライアント装置で実現してもよい。
【符号の説明】
【０１２６】
１…処理システム、１０…学習装置、１１…学習部、１２…ニューラルネットワークモデル、１３…処理部、１４…学習制御部、１５…記憶部、１６…学習用データ、１７…設定値情報、１８…設定値通知部、２０，６０…推論装置、２１…推論部、２２…ニューラルネットワークモデル、２３…処理部、２４…推論制御部、２５…記憶部、２６…対象データ、２７…設定値情報、２８…受信部、２９…推論結果送信部、３０，７０…クライアント装置、３３…記憶部、３７…前処理部、３７ａ…暗号化部、３７ｂ…調整除去部、３７ｃ…変換部、３８…後処理部、１０１…ＣＰＵ
【図１】
2020190614.tif 000003
【図２】
2020190614.tif 000004
【図３】
2020190614.tif 000005
【図４】
2020190614.tif 000006
【図５】
2020190614.tif 000007
【図６】
2020190614.tif 000008
【図７】
2020190614.tif 000009
【図８】
2020190614.tif 000010