(57)【特許請求の範囲】
【請求項１】
入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定部と、
前記範囲判定部によって生成された前記範囲暗号文と前記入力データから得られる値の暗号文との積の準同型演算を行うことにより、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を計算した結果の結果暗号文を生成する結果生成部と
を備える準同型推論装置。
【請求項２】
前記範囲判定部は、数１に示す前記範囲暗号文ａｊを生成し、
前記結果生成部は、数２に示す前記結果暗号文Ｄを生成する
請求項１に記載の準同型推論装置。
【数１】
0006391900.tif 000007
【数２】
0006391900.tif 000008
【請求項３】
入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定部と、
１を暗号化した暗号文と前記範囲暗号文との積と、−１を暗号化した暗号文と１を暗号化した暗号文から前記範囲暗号文を減じた値との積との和の準同型演算を行うことにより、整数を入力として、前記整数の符号を出力するＳｉｇｎ関数を計算した結果の結果暗号文を生成する結果生成部と
を備える準同型推論装置。
【請求項４】
前記範囲判定部は、数３に示す前記範囲暗号文ａｊを生成し、
前記結果生成部は、数４に示す前記結果暗号文Ｄを生成する
請求項３に記載の準同型推論装置。
【数３】
0006391900.tif 000009
【数４】
0006391900.tif 000010
【請求項５】
準同型推論装置における範囲判定部が、入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成し、
前記準同型推論装置における結果生成部が、前記範囲暗号文と前記入力データから得られる値の暗号文との積の準同型演算を行うことにより、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を計算した結果の結果暗号文を生成する準同型推論方法。
【請求項６】
準同型推論装置における範囲判定部が、入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成し、
前記準同型推論装置における結果生成部が、１を暗号化した暗号文と前記範囲暗号文との積と、−１を暗号化した暗号文と１を暗号化した暗号文から前記範囲暗号文を減じた値との積との和の準同型演算を行うことにより、整数を入力として、前記整数の符号を出力するＳｉｇｎ関数を計算した結果の結果暗号文を生成する準同型推論方法。
【請求項７】
範囲判定部が、入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定処理と、
結果生成部が、前記範囲判定処理によって生成された前記範囲暗号文と前記入力データから得られる値の暗号文との積の準同型演算を行うことにより、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を計算した結果の結果暗号文を生成する結果生成処理と
を行う準同型推論装置としてコンピュータを機能させる準同型推論プログラム。
【請求項８】
範囲判定部が、入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定処理と、
結果生成部が、１を暗号化した暗号文と前記範囲暗号文との積と、−１を暗号化した暗号文と１を暗号化した暗号文から前記範囲暗号文を減じた値との積との和の準同型演算を行うことにより、整数を入力として、前記整数の符号を出力するＳｉｇｎ関数を計算した結果の結果暗号文を生成する結果生成処理と
を行う準同型推論装置としてコンピュータを機能させる準同型推論プログラム。
【請求項９】
入力データを暗号化して入力暗号文を生成する暗号化装置と、
前記暗号化装置によって生成された前記入力暗号文を入力として、前記入力データに対してＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を計算した結果の結果暗号文を生成する準同型推論装置と、
前記準同型推論装置によって生成された前記結果暗号文を復号して、前記結果を示す結果データを生成する復号装置と
を備え、
前記準同型推論装置は、
入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定部と、
前記範囲判定部によって生成された前記範囲暗号文と前記入力データから得られる値の暗号文との積の準同型演算を行うことにより、前記結果暗号文を生成する結果生成部と
を備える秘匿情報処理システム。
【請求項１０】
入力データを暗号化して入力暗号文を生成する暗号化装置と、
前記暗号化装置によって生成された前記入力暗号文を入力として、前記入力データに対して、整数を入力として、前記整数の符号を出力するＳｉｇｎ関数を計算した結果の結果暗号文を生成する準同型推論装置と、
前記準同型推論装置によって生成された前記結果暗号文を復号して、前記結果を示す結果データを生成する復号装置と
を備え、
前記準同型推論装置は、
入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が０より大きいか否かを判定し、前記入力データから得られる値が０より大きい場合には、１を暗号化した暗号文を範囲暗号文とし、前記入力データから得られる値が０以下の場合には、０を暗号化した暗号文を範囲暗号文として生成する範囲判定部と、
１を暗号化した暗号文と前記範囲暗号文との積と、−１を暗号化した暗号文と１を暗号化した暗号文から前記範囲暗号文を減じた値との積との和の準同型演算を行うことにより、前記結果暗号文を生成する結果生成部と
を備える秘匿情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データを暗号化したまま推論を行う技術に関する。
【背景技術】
【０００２】
準同型暗号は、データを暗号化したまま演算できる暗号技術である。昨今、クラウドサービスの利用が広まりつつあるが、クラッキングとクラウドの信頼性との懸念から、クラウド上ではデータを暗号化して保管することが考えられる。準同型暗号は、暗号化されているデータに対して、復号することなく演算を施すことができるため、安全性を損なうことなくクラウドサービスの利用を可能とする技術である。【０００３】
ニューラルネットワークは、画像及び動画の認識に有用な技術である。ニューラルネットワークは、入力層と中間層と出力層という、特定の処理を行う３種類の層からなる。入力層では、データの入力が行われる。中間層では、入力データと中間層の計算結果とについてある計算が行われる。出力層では、中間層の計算結果が出力される。
近年盛んに研究されている、高い推論精度を達成するニューラルネットワークは、非常に多数の中間層を持ち、その推論処理には多大な計算量を要する。計算能力の低い端末ではこのようなニューラルネットワークによる推論処理を行うことが困難であるため、高い計算能力を持ったクラウドに推論処理を委託することが考えられる。ニューラルネットワークへの入力データが、監視カメラ映像等のプライベートなデータである場合、入力データをクラウドから秘匿したまま、ニューラルネットワークの推論処理を行わなければならない。準同型暗号を用いて入力データを暗号化したままニューラルネットワークによる推論処理を行うことで、プライバシーを保ちつつクラウドへ推論処理を委託することができる。【０００４】
準同型暗号でデータを暗号化したまま複雑な計算を行うためには多大な計算量を要する。そのため、暗号化したままニューラルネットワークによる推論処理を行うために、ニューラルネットワークの中間層を簡単な計算を行う中間層に置き換えることが考えられる。
準同型暗号で暗号化したままニューラルネットワークの推論処理を行った例は、非特許文献１，２に示されている。非特許文献１では、層が浅いニューラルネットワークを簡単な計算を行う中間層だけで構成することにより、暗号化したままの推論処理を実現している。非特許文献２では、層が深いニューラルネットワークの中間層で計算される関数を簡単な近似した関数に置き換えることにより、中間層における計算を簡単な計算に置き換えている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｎ．  Ｄｏｗｌｉｎ，  Ｒ．  Ｇｉｌａｄ−Ｂａｃｈｒａｃｈ，  Ｋ．  Ｌａｉｎｅ，  Ｋ．  Ｌａｕｔｅｒ，  Ｍ．  Ｎａｅｈｒｉｇ，  Ｊ．  Ｗｅｒｎｓｉｇ．  “ＣｒｙｐｔｏＮｅｔｓ：  Ａｐｐｌｙｉｎｇ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｔｏ  Ｅｎｃｒｙｐｔｅｄ  Ｄａｔａ  ｗｉｔｈ  Ｈｉｇｈ  Ｔｈｒｏｕｇｈｐｕｔ  ａｎｄ  Ａｃｃｕｒａｃｙ”．  Ｉｎ  ＩＣＭＬ，  ｐａｇｅｓ  ２０１−２１０，  ２０１６．  Ａｌｓｏ  ａｖａｉｌａｂｌｅ  ａｔ  ｈｔｔｐｓ：／／ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｅｎ−ｕｓ／ｒｅｓｅａｒｃｈ／ｗｐ−ｃｏｎｔｅｎｔ／ｕｐｌｏａｄｓ／２０１６／０４／ＣｒｙｐｔｏｎｅｔｓＴｅｃｈＲｅｐｏｒｔ．ｐｄｆ
【非特許文献２】Ｈ．  Ｃｈａｂａｎｎｅ，  Ａ．  ｄｅ  Ｗａｒｇｎｙ，  Ｊ．  Ｍｉｌｇｒａｍ，  Ｃ．  Ｍｏｒｅｌ，  Ｅ．  Ｐｒｏｕｆｆ．  Ｐｒｉｖａｃｙ−Ｐｒｅｓｅｒｖｉｎｇ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｏｎ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ．  Ｉｎ  Ｒｅａｌ  Ｗｏｒｌｄ  Ｃｒｙｐｔｏ  ２０１７．Ａｌｓｏ  ａｖａｉｌａｂｌｅ  ａｔ  ｈｔｔｐｓ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２０１７／０３５．ｐｄｆ．
【非特許文献３】Ｉｌａｒｉａ  Ｃｈｉｌｌｏｔｉ，  Ｎｉｃｏｌａｓ  Ｇａｍａ，  Ｍａｒｉｙａ  Ｇｅｏｒｇｉｅｖａ，  ａｎｄ  Ｍａｌｉｋａ  Ｉｚａｂａｃｈ｀ｅｎｅ．  Ｉｍｐｒｏｖｉｎｇ  ＴＦＨＥ  ｆａｓｔｅｒ  ｐａｃｋｅｄ  ｈｏｍｏｍｏｒｐｈｉｃ  ｏｐｅｒａｔｉｏｎｓ  ａｎｄ  ｅｆｆｉｃｉｅｎｔ  ｃｉｒｃｕｉｔ  ｂｏｏｔｓｔｒａｐｐｉｎｇ．  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  Ｒｅｐｏｒｔ  ２０１７／４３０，  ２０１７．  Ａｖａｉｌａｂｌｅ  ａｔ  ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２０１７／４３０．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献２では、中間層で計算される関数を簡単な関数に置き換えていた。しかし、関数を置き換える前のニューラルネットワークとは異なる計算が行われるため、暗号化データと暗号化されていないデータとの間の推論誤差を避けることはできなかった。したがって、ニューラルネットワークが暗号化されていないデータに対して高い推論精度を達成できたとしても、暗号化データに対して高い推論精度を達成できるとは限らなかった。つまり、暗号化されていないデータに対して高い認識精度を達成できるニューラルネットワークが存在していたとしても、新たに暗号化データ用にニューラルネットワークを構成する必要があった。
この発明は、中間層の関数といった非多項式演算を含む推論を、近似した関数への置き換えを行うことなく計算可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る準同型推論装置は、
入力データが暗号化された入力暗号文を入力として、前記入力データから得られる値が基準範囲に入るか否かを判定し、判定された結果に応じた範囲暗号文を生成する範囲判定部と、
前記範囲判定部によって生成された前記範囲暗号文に対して準同型演算を行うことにより、前記入力データに対して非多項式演算を含む推論を行った結果の結果暗号文を生成する結果生成部と
を備える。
【発明の効果】
【０００８】
この発明では、入力暗号文を入力として、入力データから得られる値が基準範囲に入るか否かが判定され、判定された結果に応じた範囲暗号文が生成される。そして、範囲暗号文に対して準同型演算を行うことにより推論を行った結果の結果暗号文が生成される。これにより、非多項式演算を含む推論を近似した関数への置き換えを行うことなく実現できる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る秘匿情報処理システム１０の構成図。
【図２】実施の形態１に係る鍵生成装置２０の構成図。
【図３】実施の形態１に係る暗号化装置３０の構成図。
【図４】実施の形態１に係る準同型推論装置４０の構成図。
【図５】実施の形態１に係る復号装置５０の構成図。
【図６】実施の形態１に係る鍵生成装置２０の動作のフローチャート。
【図７】実施の形態１に係る暗号化装置３０の動作のフローチャート。
【図８】実施の形態１に係る準同型推論装置４０の動作のフローチャート。
【図９】ＲｅＬＵ関数の説明図。
【図１０】実施の形態１に係る範囲判定処理のフローチャート。
【図１１】実施の形態１に係る結果生成処理のフローチャート。
【図１２】実施の形態１に係る復号装置５０の動作のフローチャート。
【図１３】変形例２に係る鍵生成装置２０の構成図。
【図１４】変形例２に係る暗号化装置３０の構成図。
【図１５】変形例２に係る準同型推論装置４０の構成図。
【図１６】変形例２に係る復号装置５０の構成図。
【発明を実施するための形態】
【００１０】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係る秘匿情報処理システム１０の構成を説明する。
秘匿情報処理システム１０は、鍵生成装置２０と、暗号化装置３０と、準同型推論装置４０と、復号装置５０とを備える。
鍵生成装置２０と、暗号化装置３０と、準同型推論装置４０と、復号装置５０とは、ネットワーク６０を介して接続される。ネットワーク６０は、具体例としては、インターネットである。ネットワーク６０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）といった他の種類のネットワークであってもよい。
【００１１】
図２を参照して、実施の形態１に係る鍵生成装置２０の構成を説明する。
鍵生成装置２０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）といったコンピュータである。
鍵生成装置２０は、プロセッサ２１と、メモリ２２と、ストレージ２３と、通信インタフェース２４とのハードウェアを備える。プロセッサ２１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１２】
鍵生成装置２０は、機能構成要素として、取得部２１１と、鍵生成部２１２と、出力部２１３とを備える。鍵生成装置２０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ２３には、鍵生成装置２０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ２１によりメモリ２２に読み込まれ、プロセッサ２１によって実行される。これにより、鍵生成装置２０の各機能構成要素の機能が実現される。
また、ストレージ２３は、鍵記憶部２３１の機能を実現する。
【００１３】
図３を参照して、実施の形態１に係る暗号化装置３０の構成を説明する。
暗号化装置３０は、ＰＣといったコンピュータである。
暗号化装置３０は、プロセッサ３１と、メモリ３２と、ストレージ３３と、通信インタフェース３４とのハードウェアを備える。プロセッサ３１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１４】
暗号化装置３０は、機能構成要素として、取得部３１１と、暗号化部３１２と、出力部３１３とを備える。暗号化装置３０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ３３には、暗号化装置３０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ３１によりメモリ３２に読み込まれ、プロセッサ３１によって実行される。これにより、暗号化装置３０の各機能構成要素の機能が実現される。
また、ストレージ３３は、公開鍵記憶部３３１の機能を実現する。
【００１５】
図４を参照して、実施の形態１に係る準同型推論装置４０の構成を説明する。
準同型推論装置４０は、大容量の記憶装置を有するサーバ等のコンピュータである。
準同型推論装置４０は、プロセッサ４１と、メモリ４２と、ストレージ４３と、通信インタフェース４４とのハードウェアを備える。プロセッサ４１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１６】
準同型推論装置４０は、機能構成要素として、取得部４１１と、範囲判定部４１２と、結果生成部４１３と、出力部４１４とを備える。準同型推論装置４０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ４３には、準同型推論装置４０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ４１によりメモリ４２に読み込まれ、プロセッサ４１によって実行される。これにより、準同型推論装置４０の各機能構成要素の機能が実現される。
また、ストレージ４３は、公開鍵記憶部４３１と、暗号文記憶部４３２との機能を実現する。
【００１７】
図５を参照して、実施の形態１に係る復号装置５０の構成を説明する。
復号装置５０は、ＰＣといったコンピュータである。
復号装置５０は、プロセッサ５１と、メモリ５２と、ストレージ５３と、通信インタフェース５４とのハードウェアを備える。プロセッサ５１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１８】
復号装置５０は、機能構成要素として、取得部５１１と、復号部５１２と、出力部５１３とを備える。復号装置５０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ５３には、復号装置５０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ５１によりメモリ５２に読み込まれ、プロセッサ５１によって実行される。これにより、復号装置５０の各機能構成要素の機能が実現される。
また、ストレージ５３は、鍵記憶部５３１の機能を実現する。
【００１９】
プロセッサ２１，３１，４１，５１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ２１，３１，４１，５１は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００２０】
メモリ２２，３２，４２，５２は、データを一時的に記憶する記憶装置である。メモリ２２，３２，４２，５２は、具体例としては、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２１】
ストレージ２３，３３，４３，５３は、データを保管する記憶装置である。ストレージ２３，３３，４３，５３は、具体例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ２３，３３，４３，５３は、ＳＤ（登録商標，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記憶媒体であってもよい。
【００２２】
通信インタフェース２４，３４，４４，５４は、外部の装置と通信するためのインタフェースである。通信インタフェース２４，３４，４４，５４は、具体例としては、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＨＤＭＩ（登録商標，Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）のポートである。
【００２３】
図２では、プロセッサ２１は、１つだけ示されている。しかし、鍵生成装置２０は、プロセッサ２１を代替する複数のプロセッサを備えていてもよい。同様に、暗号化装置３０は、プロセッサ３１を代替する複数のプロセッサを備え、準同型推論装置４０は、プロセッサ４１を代替する複数のプロセッサを備え、復号装置５０は、プロセッサ５１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、各機能構成要素の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ２１，３１，４１，５１と同じように、演算処理を行うＩＣである。
【００２４】
＊＊＊動作の説明＊＊＊
図６から図１２を参照して、実施の形態１に係る秘匿情報処理システム１０の動作を説明する。
実施の形態１に係る秘匿情報処理システム１０の動作は、実施の形態１に係る秘匿情報処理方法に相当する。また、実施の形態１に係る秘匿情報処理システム１０の動作は、実施の形態１に係る秘匿情報処理プログラムの処理に相当する。
【００２５】
図６を参照して、実施の形態１に係る鍵生成装置２０の動作を説明する。
実施の形態１に係る鍵生成装置２０の動作は、実施の形態１に係る鍵生成方法に相当する。また、実施の形態１に係る鍵生成装置２０の動作は、実施の形態１に係る鍵生成プログラムの処理に相当する。
【００２６】
（ステップＳ１１：取得処理）
取得部２１１は、通信インタフェース２４を介して、パラメータλを取得する。取得部２１１は、取得されたパラメータλをメモリ２２に書き込む。
【００２７】
（ステップＳ１２：鍵生成処理）
鍵生成部２１２は、ステップＳ１１で書き込まれたパラメータλをメモリ２２から読み出す。鍵生成部２１２は、パラメータλを入力として、公開鍵ＰＫ及び秘密鍵ＳＫを生成する。鍵生成部２１２は、生成された公開鍵ＰＫと及び秘密鍵ＳＫを鍵記憶部２３１に書き込む。
ここでは、鍵生成部２１２は、ＲＧＳＷ暗号方式の公開鍵ＰＫと及び秘密鍵ＳＫを生成するものとする。ＲＧＳＷ暗号方式については、非特許文献３に記載されている。
【００２８】
（ステップＳ１３：出力処理）
出力部２１３は、ステップＳ１２で書き込まれた公開鍵ＰＫと及び秘密鍵ＳＫを鍵記憶部２３１から読み出す。出力部２１３は、通信インタフェース２４を介して、公開鍵ＰＫを暗号化装置３０と準同型推論装置４０と復号装置５０とに送信する。また、出力部２１３は、通信インタフェース２４を介して、秘密鍵ＳＫを秘密裡に復号装置５０に送信する。秘密裡に送信するとは、既存の暗号化方式により暗号化した上で送信するといった意味である。なお、公開鍵ＰＫ及び秘密鍵ＳＫは、郵送といった他の方法により送信されてもよい。
すると、暗号化装置３０では、取得部３１１が公開鍵ＰＫを取得し、公開鍵記憶部３３１に書き込む。準同型推論装置４０では、取得部４１１が公開鍵ＰＫを取得し、公開鍵記憶部４３１に書き込む。復号装置５０では、取得部５１１が公開鍵ＰＫ及び秘密鍵ＳＫを取得し、鍵記憶部５３１に書き込む。復号装置５０では、秘密鍵ＳＫは外部に漏えいしないように厳重に保管される。復号装置５０は、秘密鍵ＳＫを保管する保管装置として機能する。
【００２９】
図７を参照して、実施の形態１に係る暗号化装置３０の動作を説明する。
実施の形態１に係る暗号化装置３０の動作は、実施の形態１に係る暗号化方法に相当する。また、実施の形態１に係る暗号化装置３０の動作は、実施の形態１に係る暗号化プログラムの処理に相当する。
【００３０】
（ステップＳ２１：取得処理）
取得部３１１は、通信インタフェース３４を介して、暗号化対象のデータである、ｉ＝１，．．．，ｎについての入力データｘｉを取得する。ここで、ｎは１以上の整数である。入力データｘｉは、具体例としては、工場等に設置されたセンサで検出されたデータである。取得部３１１は、取得された入力データをメモリ３２に書き込む。
【００３１】
（ステップＳ２２：暗号化処理）
暗号化部３１２は、ステップＳ２１で書き込まれた入力データｘｉをメモリ３２から読み出す。また、暗号化部３１２は、公開鍵記憶部３３１から公開鍵ＰＫを読み出す。
暗号化部３１２は、公開鍵ＰＫに基づき、ｉ＝１，．．．，ｎの各整数ｉについて、入力データｘｉを暗号化して入力暗号文Ｃｉを生成する。ここでは、暗号化部３１２は、ＲＧＳＷ暗号方式により、入力データｘｉを暗号化する。暗号化部３１２は、生成された入力暗号文Ｃｉをメモリ３２に書き込む。
【００３２】
（ステップＳ２３：出力処理）
出力部３１３は、ステップＳ２２で書き込まれた入力暗号文Ｃｉをメモリ３２から読み出す。出力部３１３は、通信インタフェース３４を介して、入力暗号文Ｃｉを準同型推論装置４０に送信する。
すると、準同型推論装置４０では、取得部４１１が入力暗号文Ｃｉを取得し、暗号文記憶部４３２に書き込む。準同型推論装置４０は、入力暗号文Ｃｉを保管する保管装置として機能する。
【００３３】
図８を参照して、実施の形態１に係る準同型推論装置４０の動作を説明する。
実施の形態１に係る準同型推論装置４０の動作は、実施の形態１に係る準同型推論方法に相当する。また、実施の形態１に係る準同型推論装置４０の動作は、実施の形態１に係る準同型推論プログラムの処理に相当する。
【００３４】
準同型推論装置４０は、入力暗号文Ｃｉを入力として、非多項式演算を含む推論を行う。ここでは、非多項式演算を含む推論として、ニューラルネットワークにおける活性化関数の一種であるＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を用いた場合を説明する。特に、ここでは、ニューラルネットワークにおける重みｗｉが＋１又は−１である場合について説明する。また、ニューラルネットワークにおけるバイアスをｂとする。
図９に示すように、ＲｅＬＵ関数は、入力値が０より大きい場合には、入力値を返し、入力値が０以下の場合には０を返す関数である。したがって、ＲｅＬＵ関数は、非多項式演算を含む推論に該当する。
【００３５】
（ステップＳ３１：取得処理）
取得部４１１は、公開鍵記憶部４３１から公開鍵ＰＫを読み出す。
また、取得部４１１は、処理対象の入力暗号文Ｃｉの指定を受け付ける。取得部４１１は、暗号文記憶部４３２から処理対象の入力暗号文Ｃｉを読み出す。
【００３６】
（ステップＳ３２：範囲判定処理）
範囲判定部４１２は、ｉ＝１，．．．，ｎについての入力データｘｉが暗号化された入力暗号文Ｃｉを入力として、入力データｘｉから得られる値Ｖが基準範囲に入るか否かを判定する。そして、範囲判定部４１２は、判定された結果に応じた範囲暗号文ａｊを生成する。
値Ｖは、非多項式演算を含む推論に応じて定められる値であり、基準範囲は、非多項式演算を含む推論に応じた範囲である。値Ｖ及び基準範囲は、実行する推論に応じて事前に設定される。ここでは、非多項式演算を含む推論としてニューラルネットワークにおける活性化関数の一種であるＲｅＬＵ関数が用いられる。そこで、値Ｖは、ｉ＝１，．．．，ｎの各整数ｉについて、入力データｘｉに重みｗｉを乗じた値の和（Σｉｘｉｗｉ）とし、基準範囲は、０より大きい範囲とする。
【００３７】
ここでは、範囲判定部４１２は、ｉ＝１，．．．，ｎの各整数ｉについて、入力データｘｉに重みｗｉを乗じた値の和（Σｉｘｉｗｉ）を値Ｖとして、値Ｖが０より大きいか否かを判定する。そして、範囲判定部４１２は、値Ｖが０より大きい場合には、１を暗号化した暗号文を範囲暗号文ａｊとして生成し、値Ｖが０以下の場合には、０を暗号化した暗号文を範囲暗号文ａｊとして生成する。
【００３８】
図１０を参照して、実施の形態１に係る範囲判定処理を説明する。
（ステップＳ３２１：ＲＧＳＷエンコーディング処理）
範囲判定部４１２は、バイアスｂと、重みｗｉ∈｛＋１，−１｝と、ｉ＝１，．．．，ｎについての入力暗号文Ｃｉとを入力として、ＲｅＬＵ（ｂ＋Σｉｘｉｗｉ）のＲＧＳＷエンコーディングを生成する。
【００３９】
具体的には、まず、範囲判定部４１２は、Ａ０：＝Ｘｂ・Ｇを計算する。ここで、Ｘは、ＲＧＳＷにおける多項式環の多項式を構成する変数である。Ｇは、ｇとＩ２とのテンソル積である。ｇ：＝（１，２，２２，．．．，２Ｌ−１）である。Ｌは、ｌｏｇｑ以上の最小の整数である。ｑは、正の整数である。Ｉ２は、２×２の単位行列である。
次に、範囲判定部４１２は、ｉ：＝１，．．．，ｎの各整数ｉについて昇順に、数１１を計算して、暗号文Ａｎを生成する。範囲判定部４１２は、暗号文Ａｎをメモリ４２に書き込む。
【数１１】
0006391900.tif 000002
ここで、ＳｗｉｔｃｈＫｅｙアルゴリズムは、非特許文献３に記載されている。ここでは、ｓ（１／ｘ）→ｓ（ｘ）であるため、ＳｗｉｔｃｈＫｅｙアルゴリズムは、ｓ（１／ｘ）で復号できる暗号文をｓ（ｘ）で復号できる暗号文に変換する処理である。ｓは、ＲＧＳＷ暗号方式における秘密鍵である。Ｇ−１は、行列の各整数要素を２進表現に変換する処理である。
数１１によって生成される暗号文Ａｎは、値ＶであるΣｉｘｉｗｉがＲＧＳＷ暗号方式により暗号化された暗号文である。
【００４０】
（ステップＳ３２２：範囲暗号文生成処理）
範囲判定部４１２は、ｊ＝０，．．．，Ｌ−１の各整数ｊについて、ステップＳ３１１で計算された暗号文Ａｎを入力として、数１２を計算して、範囲暗号文ａｊを生成する。範囲判定部４１２は、範囲暗号文ａｊをメモリ４２に書き込む。
【数１２】
0006391900.tif 000003
ここで、ＳａｍｐｌｅＥｘｔｒａｃｔアルゴリズムは、非特許文献３に記載されている。ＳａｍｐｌｅＥｘｔｒａｃｔアルゴリズムは、入力の平文多項式の定数項を暗号化した暗号文を出力する処理である。ｔｊ（Ｘ）：＝２ｊ（１−Ｘ−Ｘ２−．．．）である。
数１２によって生成される範囲暗号文ａｊは、値Ｖが０より大きい場合には、１を暗号化した暗号文であり、値Ｖが０以下の場合には、０を暗号化した暗号文である。但し、数１２によって計算される範囲暗号文ａｊは、ＲＧＳＷ暗号方式における暗号文ではなく、ＬＷＥ（Ｌｅａｒｎｉｎｇ  ｗｉｔｈ  Ｅｒｒｏｒｓ）暗号方式における暗号文である。
【００４１】
（ステップＳ３３：結果生成処理）
結果生成部４１３は、ステップＳ３２で生成された範囲暗号文ａｊに対して準同型演算を行うことにより、入力データｘｉに対して非多項式演算を含む推論を行った結果に対する暗号文である結果暗号文Ｄを生成する。
つまり、ここでは、結果生成部４１３は、値Ｖが０より大きい場合には、値Ｖを暗号化した暗号文を結果暗号文Ｄとして生成し、値Ｖが０以下の場合には、０を暗号化した暗号文を結果暗号文Ｄとして生成する。
【００４２】
図１１を参照して、実施の形態１に係る結果生成処理を説明する。
（ステップＳ３３１：方式変換処理）
結果生成部４１３は、ステップＳ３２２で書き込まれた範囲暗号文ａｊをメモリ４２から読み出す。そして、結果生成部４１３は、ＬＷＥ暗号方式における暗号文である範囲暗号文ａｊを、ＲＧＳＷ暗号方式における暗号文である範囲暗号文Ａ’に変換する。
具体的には、結果生成部４１３は、ｊ＝０，．．．，Ｌ−１の各整数ｊと、ｋ＝０，１の各整数ｋとについて、数１３を計算して、範囲暗号文Ａ’を生成する。
【数１３】
0006391900.tif 000004
ここで、ＳｗｉｔｃｈＫｅｙアルゴリズムは、非特許文献３に記載されている。ここでは、ｓ→ｓ（斜体）の場合であるため、ＳｗｉｔｃｈＫｅｙアルゴリズムは、ｓで復号できる暗号文をｓ（斜体）で復号できる暗号文に変換する処理である。
【００４３】
（ステップＳ３３２：結果計算処理）
結果生成部４１３は、ステップＳ３２１で書き込まれた値Ｖの暗号文Ａｎをメモリ４２から読み出す。そして、結果生成部４１３は、ステップＳ３３１で生成された範囲暗号文Ａ’と、入力データｘｉから得られる値Ｖの暗号文Ａｎとの積の準同型演算を行って、結果暗号文Ｄを生成する。
範囲暗号文Ａ’は、値Ｖが０より大きい場合には、１を暗号化した暗号文であり、値Ｖが０以下の場合には、０を暗号化した暗号文である。したがって、範囲暗号文Ａ’と暗号文Ａｎとの積が計算されると、値Ｖが０より大きい場合には、値Ｖの暗号文が結果暗号文Ｄとして生成され、値Ｖが０以下の場合には、０を暗号化した暗号文が結果暗号文Ｄとして生成される。
具体的には、結果生成部４１３は、数１４を計算して、結果暗号文Ｄを生成する。結果生成部４１３は、結果暗号文Ｄをメモリ４２に書き込む。
【数１４】
0006391900.tif 000005
【００４４】
（ステップＳ３４：出力処理）
出力部４１４は、ステップＳ３３で書き込まれた結果暗号文Ｄを暗号文記憶部４３２から読み出す。出力部４１４は、結果暗号文Ｄを暗号文記憶部４３２に書き込む。
【００４５】
図１２を参照して、実施の形態１に係る復号装置５０の動作を説明する。
実施の形態１に係る復号装置５０の動作は、実施の形態１に係る復号方法に相当する。また、実施の形態１に係る復号装置５０の動作は、実施の形態１に係る復号プログラムの処理に相当する。
【００４６】
（ステップＳ４１：取得処理）
取得部５１１は、通信インタフェース５４を介して、準同型推論装置４０に対して処理対象の結果暗号文Ｄの取得要求を送信する。そして、取得部５１１は、通信インタフェース５４を介して、取得要求により要求した結果暗号文Ｄを取得する。取得部５１１は、取得された結果暗号文Ｄをメモリ５２に書き込む。
【００４７】
（ステップＳ４２：復号処理）
復号部５１２は、ステップＳ４１で取得された結果暗号文Ｄを復号して、入力データｘｉに対して非多項式演算を含む推論を行った結果を示す結果データｄを生成する。ここでは、復号部５１２は、ＲＧＳＷ暗号方式により、結果暗号文Ｄを復号する。ここでは、復号部５１２は、入力データｘｉから得られる値ＶをＲｅＬＵ関数の入力とした場合に得られる結果データｄを生成する。復号部５１２は、生成された結果データｄをメモリ５２に書き込む。
【００４８】
（ステップＳ４３：出力処理）
出力部５１３は、ステップＳ４２で書き込まれた結果データｄをメモリ５２から読み出す。そして、出力部５１３は、通信インタフェース５４を介して、結果データｄを表示装置等に出力する。
【００４９】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係る秘匿情報処理システム１０では、準同型推論装置４０は、入力暗号文Ｃｉを入力として、入力データｘｉから得られる値が基準範囲に入るか否かを判定し、判定された結果に応じた範囲暗号文ａｊを生成する。そして、準同型推論装置４０は、範囲暗号文ａｊに対して準同型演算を行うことにより推論を行った結果の結果暗号文Ｄを生成する。
これにより、秘匿情報処理システム１０は、ニューラルネットワークにおける中間層の関数といった非多項式演算を含む推論を、近似した関数への置き換えを行うことなく、少ない準同型乗算回数で計算可能である。具体的には、非特許文献２に記載された方法では、６回の準同型乗算が必要であったのに対して、秘匿情報処理システム１０では、２回の準同型乗算により計算可能である。
秘匿情報処理システム１０は、近似した関数への置き換えを行うことなく、ニューラルネットワークにおける推論を行うことができるため、高い推論精度を達成することができる。また、暗号化データに対して別途ニューラルネットワークを構成する必要がないため、コストの削減に繋がる。
【００５０】
特に、準同型推論装置４０は、入力データｘｉから得られる値が基準範囲に入るか否かに応じて、１を暗号化した暗号文を範囲暗号文ａｊとするか、あるいは、０を暗号化した暗号文を範囲暗号文ａｊとする。これにより、非多項式演算を含む推論を少ない演算回数で計算可能である。
【００５１】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、非多項式演算を含む推論として、ニューラルネットワークにおける活性化関数の一種であるＲｅＬＵ関数が用いられた。しかし、非多項式演算を含む推論は、ＲｅＬＵ関数に限らない。
【００５２】
変形例１では、非多項式演算を含む推論として、ニューラルネットワークにおける活性化関数の一種であるＳｉｇｎ関数を用いた場合を説明する。Ｓｉｇｎ関数は、入力の符号（＋１  ｏｒ  −１）を返す関数である。変形例１では、実施の形態１と異なる点を説明し、同一の点については説明を省略する。
【００５３】
図１１を参照して、変形例１に係る結果生成処理を説明する。
ステップＳ３３１との処理は、実施の形態１と同じである。
【００５４】
（ステップＳ３３２：結果計算処理）
結果生成部４１３は、ステップＳ３２１で書き込まれた値Ｖの暗号文Ａｎをメモリ４２から読み出す。そして、結果生成部４１３は、１を暗号化した暗号文と範囲暗号文Ａ’との積と、−１を暗号化した暗号文と１を暗号化した暗号文から範囲暗号文Ａ’を減じた値との積との和の準同型演算を行って、結果暗号文Ｄを生成する。
範囲暗号文Ａ’は、値Ｖが０より大きい場合には、１を暗号化した暗号文であり、値Ｖが０以下の場合には、０を暗号化した暗号文である。したがって、値Ｖが０より大きい場合には、１を暗号化した暗号文から範囲暗号文Ａ’を減じた値は０になるので、−１を暗号化した暗号文と１を暗号化した暗号文から範囲暗号文Ａ’を減じた値との積は０になる。そのため、１を暗号化した暗号文と範囲暗号文Ａ’との積である１を暗号化した暗号文が結果暗号文Ｄとして生成される。一方、値Ｖが０以下の場合には、１を暗号化した暗号文と範囲暗号文Ａ’との積は０になる。また、１を暗号化した暗号文から範囲暗号文Ａ’を減じた値は１になる。そのため、−１を暗号化した暗号文と１を暗号化した暗号文から範囲暗号文Ａ’を減じた値との積である−１を暗号化した暗号文が結果暗号文Ｄとして生成される。
具体的には、結果生成部４１３は、数１５を計算して、結果暗号文Ｄを生成する。結果生成部４１３は、結果暗号文Ｄをメモリ４２に書き込む。
【数１５】
0006391900.tif 000006
数１５において、ＸＧは、１を暗号化した暗号文であり、Ｘ−１Ｇは、−１を暗号化した暗号文である。
【００５５】
なお、変形例１では、非多項式演算を含む推論をＳｉｇｎ関数とした場合を説明した。しかし、他の活性化関数についても、秘匿情報処理システム１０を適用可能な場合がある。また、活性化関数に限らず、非多項式演算を含む他の推論に対しても秘匿情報処理システム１０を適用可能な場合がある。
【００５６】
＜変形例２＞
実施の形態１では、各機能構成要素がソフトウェアで実現された。しかし、変形例２として、各機能構成要素はハードウェアで実現されてもよい。この変形例２について、実施の形態１と異なる点を説明する。
【００５７】
図１３を参照して、変形例２に係る鍵生成装置２０の構成を説明する。
機能がハードウェアで実現される場合、鍵生成装置２０は、プロセッサ２１とメモリ２２とストレージ２３とに代えて、電子回路２５を備える。電子回路２５は、鍵生成装置２０の機能構成要素と、メモリ２２とストレージ２３との機能とを実現する専用の回路である。
【００５８】
図１４を参照して、変形例２に係る暗号化装置３０の構成を説明する。
機能がハードウェアで実現される場合、暗号化装置３０は、プロセッサ３１とメモリ３２とストレージ３３とに代えて、電子回路３５を備える。電子回路３５は、暗号化装置３０の機能構成要素と、メモリ３２とストレージ３３との機能とを実現する専用の回路である。
【００５９】
図１５を参照して、変形例２に係る準同型推論装置４０の構成を説明する。
機能がハードウェアで実現される場合、準同型推論装置４０は、プロセッサ４１とメモリ４２とストレージ４３とに代えて、電子回路４５を備える。電子回路４５は、準同型推論装置４０の機能構成要素と、メモリ４２とストレージ４３との機能とを実現する専用の回路である。
【００６０】
図１６を参照して、変形例２に係る復号装置５０の構成を説明する。
機能がハードウェアで実現される場合、復号装置５０は、プロセッサ５１とメモリ５２とストレージ５３とに代えて、電子回路５５を備える。電子回路５５は、復号装置５０の機能構成要素と、メモリ５２とストレージ５３との機能とを実現する専用の回路である。
【００６１】
電子回路２５，３５，４５，５５は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
鍵生成装置２０の各機能構成要素の機能を１つの電子回路２５で実現してもよいし、各機能構成要素の機能を複数の電子回路２５に分散させて実現してもよい。同様に、暗号化装置３０と準同型推論装置４０と復号装置５０とのそれぞれについて、各機能構成要素の機能を１つの電子回路３５，４５，５５で実現してもよいし、各機能構成要素の機能を複数の電子回路３５，４５，５５に分散させて実現してもよい。
【００６２】
＜変形例３＞
変形例３として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、各機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００６３】
プロセッサ２１，３１，４１，５１とメモリ２２，３２，４２，５２とストレージ２３，３３，４３，５３と電子回路２５，３５，４５，５５とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【符号の説明】
【００６４】
１０  秘匿情報処理システム、２０  鍵生成装置、２１  プロセッサ、２２  メモリ、２３  ストレージ、２４  通信インタフェース、２５  電子回路、２１１  取得部、２１２  鍵生成部、２１３  出力部、２３１  鍵記憶部、３０  暗号化装置、３１  プロセッサ、３２  メモリ、３３  ストレージ、３４  通信インタフェース、３５  電子回路、３１１  取得部、３１２  暗号化部、３１３  出力部、３３１  公開鍵記憶部、４０  準同型推論装置、４１  プロセッサ、４２  メモリ、４３  ストレージ、４４  通信インタフェース、４５  電子回路、４１１  取得部、４１２  範囲判定部、４１３  結果生成部、４１４  出力部、４３１  公開鍵記憶部、４３２  暗号文記憶部、５０  復号装置、５１  プロセッサ、５１  プロセッサ、５２  メモリ、５３  ストレージ、５４  通信インタフェース、５５  電子回路、５１１  取得部、５１２  復号部、５１３  出力部、５３１  鍵記憶部、６０  ネットワーク。
【要約】
範囲判定部（４１２）は、入力データが暗号化された入力暗号文Ｃｉを入力として、入力データから得られる値が基準範囲に入るか否かを判定し、判定された結果に応じた範囲暗号文ａｊを生成する。結果生成部（４１３）は、範囲判定部（４１２）によって生成された範囲暗号文ａｊに対して準同型演算を行うことにより、入力データに対して非多項式演算を含む推論を行った結果の結果暗号文Ｄを生成する。出力部（４１４）は、結果暗号文Ｄを出力する。【図１】
0006391900.tif 000011
【図２】
0006391900.tif 000012
【図３】
0006391900.tif 000013
【図４】
0006391900.tif 000014
【図５】
0006391900.tif 000015
【図６】
0006391900.tif 000016
【図７】
0006391900.tif 000017
【図８】
0006391900.tif 000018
【図９】
0006391900.tif 000019
【図１０】
0006391900.tif 000020
【図１１】
0006391900.tif 000021
【図１２】
0006391900.tif 000022
【図１３】
0006391900.tif 000023
【図１４】
0006391900.tif 000024
【図１５】
0006391900.tif 000025
【図１６】
0006391900.tif 000026