(57)【特許請求の範囲】
【請求項１】
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行部と、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行部と、
を備え、
前記セキュア実行部は、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理部と、
前記モデル情報を使って前記対象演算を実行する演算実行部と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知部と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御部と、
を備え、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理部は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行部は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知部は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理装置。
【請求項２】
前記出力制御部は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項１に記載の情報処理装置。
【請求項３】
リッチ実行部が、リッチオペレーティングシステムを実行しながらアプリケーションを実行し、
セキュア実行部が、セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行し、
前記セキュア実行部において、
復号処理部が、前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号し、
演算実行部が、前記モデル情報を使って前記対象演算を実行し、
改ざん検知部が、前記暗号化されたモデル情報が改ざん情報であるか判定し、
出力制御部が、前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す
情報処理方法であって、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理部は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行部は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知部は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理方法。
【請求項４】
前記出力制御部は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項３に記載の情報処理方法。
【請求項５】
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行処理と共に、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行処理として、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理と、
前記モデル情報を使って前記対象演算を実行する演算実行処理と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知処理と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御処理と、
をコンピュータに実行させるための情報処理プログラムであって、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行処理は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知処理は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理プログラム。
【請求項６】
前記出力制御処理は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項５に記載の情報処理プログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、学習モデルのモデル情報のための秘匿と改ざん検知に関するものである。
【背景技術】
【０００２】
機械学習によって得られる学習モデルについて、アーキテクチャとパラメータといったモデル情報を秘匿することが望まれている。また、モデル情報が改ざんされた場合に改ざんを検知することが望まれている。【０００３】
非特許文献１は、学習モデル情報の秘匿を実現するための方法を開示している。この方法では、実行環境が仮想的に分離され、セキュアな実行環境（セキュアＯＳ、トラステッドＯＳ）でのみ、暗号化された学習モデル情報が復号され、機械学習の演算が実行される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｐｅｔｅｒ  Ｍ．  ＶａｎＮｏｓｔｒａｎｄら著、「ＣｏｎｆｉｄｅｎｔｉａｌＤｅｅｐ  Ｌｅａｒｎｉｎｇ：Ｅｘｅｃｕｔｉｎｇ  Ｐｒｏｐｒｉｅｔａｒｙ  Ｍｏｄｅｌｓｏｎ  Ｕｎｔｒｕｓｔｅｄ  Ｄｅｖｉｃｅｓ」ａｒＸｉｖ、２０１９年８月２８日発行
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１の方法では、学習モデル情報の秘匿のみが実現され、改ざん検知が実現されない。【０００６】
本開示は、学習モデルのモデル情報の秘匿と学習モデル情報の改ざん検知とを実現することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の情報処理装置は、
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行部と、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行部と、
を備える。
前記セキュア実行部は、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理部と、
前記モデル情報を使って前記対象演算を実行する演算実行部と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知部と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御部と、
を備える。
【発明の効果】
【０００８】
本開示によれば、学習モデルのモデル情報の秘匿と学習モデル情報の改ざん検知とを実現することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における情報処理装置１００の構成図。
【図２】実施の形態１における情報処理方法のフローチャート。
【図３】実施の形態１における情報処理方法のフローチャート。
【図４】実施の形態２における情報処理装置１００の構成図。
【図５】実施の形態２における情報処理方法のフローチャート。
【図６】実施の形態２における情報処理方法のフローチャート。
【図７】実施の形態２におけるＧＣＭの適用例を示す図。
【図８】実施の形態２における３層ニューラルネットワークに対するＧＣＭの適用例を示す図。
【図９】実施の形態における情報処理装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１０】
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１１】
実施の形態１．
情報処理装置１００について、図１から図３に基づいて説明する。
【００１２】
＊＊＊構成の説明＊＊＊
図１に基づいて、情報処理装置１００の構成を説明する。
情報処理装置１００は、プロセッサ１０１とメモリ管理ユニット１０２とリッチメモリ１０３とストレージ１０４とセキュアメモリ１０５といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１３】
プロセッサ１０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ１０１は、ＣＰＵ、ＤＳＰまたはＧＰＵである。
ＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称である。
ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
ＤＳＰは、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略称である。
ＧＰＵは、Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
【００１４】
メモリ管理ユニット１０２は、リッチメモリ１０３へのアクセスを制御する。
【００１５】
リッチメモリ１０３は、汎用のメモリであり、主記憶装置またはメインメモリともいう。
メモリは、揮発性または不揮発性の記憶装置である。例えば、メモリはＲＡＭである。メモリに記憶されたデータは必要に応じてストレージ１０４に保存される。
ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略称である。
【００１６】
ストレージ１０４は、不揮発性の記憶装置であり、補助記憶装置ともいう。
例えば、ストレージ１０４は、ＲＯＭ、ＨＤＤまたはフラッシュメモリである。ストレージ１０４に記憶されたデータは必要に応じてリッチメモリ１０３にロードされる。
ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略称である。
ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略称である。
例えば、ストレージ１０４には、学習モデル情報１９１および参照用認証タグ１９２などが記憶される。
【００１７】
セキュアメモリ１０５は、セキュリティの機能を有してセキュリティが強化されたメモリである。
例えば、セキュアメモリ１０５には、暗号鍵１９３などが記憶される。
【００１８】
情報処理装置１００は、リッチ実行部１１０とセキュア実行部１２０とモニタ部１３０といった要素を備える。これらの要素はソフトウェアで実現される。
【００１９】
ストレージ１０４には、リッチ実行部１１０とセキュア実行部１２０とモニタ部１３０としてコンピュータを機能させるための情報処理プログラムが記憶されている。情報処理プログラムは、リッチメモリ１０３にロードされて、プロセッサ１０１によって実行される。
ストレージ１０４には、さらに、ＯＳが記憶されている。ＯＳの少なくとも一部は、リッチメモリ１０３にロードされて、プロセッサ１０１によって実行される。
プロセッサ１０１は、ＯＳを実行しながら、情報処理プログラムを実行する。
ＯＳは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略称である。
【００２０】
情報処理装置１００は、プロセッサ１０１を代替する複数のプロセッサを備えてもよい。
【００２１】
情報処理プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録（格納）することができる。
【００２２】
リッチ実行部１１０とセキュア実行部１２０とモニタ部１３０について説明する。
リッチ実行部１１０は、リッチＯＳを実行しながらアプリケーション１１１を実行する。
リッチＯＳは、汎用のＯＳである。
アプリケーション１１１は、アプリケーションプログラムである。
【００２３】
セキュア実行部１２０は、セキュアＯＳを実行しながら、対象演算を実行する。
セキュアＯＳは、セキュリティの機能を有してセキュリティが強化されたＯＳである。
対象演算は、学習モデルに基づく演算である。具体的には、対象演算は、機械学習によって学習モデルを更新する演算、又は、学習モデルを利用して入力データを解析する演算である。機械学習の具体例はディープラーニングである。但し、機械学習は、ディープラーニングに限定されず、回帰法、決定木学習、ベイズ方またはクラスタリングなどであってもよい。
【００２４】
セキュア実行部１２０は、演算実行部１２１と復号処理部１２２と改ざん検知部１２３と出力制御部１２４といった要素を備える。これら要素については後述する。
【００２５】
モニタ部１３０は、仮想モニタとして機能し、切替部１３１を備える。
切替部１３１は、情報処理装置１００の実行環境をリッチＯＳによる環境またはセキュアＯＳによる環境に切り替える。
但し、実行環境の切り替えは他の方法によって実現されてもよい。例えば、情報処理装置１００がモニタ部１３０を備えず、メモリ管理ユニット１０２が切替部１３１を備えてもよい。
【００２６】
セキュア実行部１２０の要素について説明する。
復号処理部１２２は、アプリケーション１１１から対象演算の実行が要求された場合に、学習モデル情報１９１からモデル情報を復号する。学習モデル情報１９１は、暗号化モデル情報を含む。暗号化モデル情報は、学習モデルの暗号化されたモデル情報である。
演算実行部１２１は、モデル情報を使って対象演算を実行する。
改ざん検知部１２３は、暗号化モデル情報が改ざん情報であるか判定する。改ざん情報は改ざんされた情報を意味する。
出力制御部１２４は、暗号化モデル情報が改ざん情報でないと判定された場合に、対象演算の実行結果をアプリケーション１１１に渡す。
【００２７】
演算実行部１２１は、暗号化モデル情報が改ざん情報でないと判定された場合に、モデル情報を使って対象演算を実行する。
【００２８】
出力制御部１２４は、暗号化モデル情報が改ざん情報であると判定された場合に、改ざん通知をアプリケーション１１１に渡す。改ざん通知は、暗号化モデル情報の改ざんを知らせるための通知であり、改ざん検知アラートともいう。
【００２９】
＊＊＊動作の説明＊＊＊
情報処理装置１００の動作の手順は情報処理方法に相当する。また、情報処理装置１００の動作の手順は情報処理プログラムによる処理の手順に相当する。
【００３０】
図２および図３に基づいて、情報処理方法を説明する。
ステップＳ１０１において、リッチ実行部１１０は、アプリケーション１１１の実行を開始する。
そして、リッチ実行部１１０は、アプリケーション１１１からの演算要求を切替部１３１に送る。演算要求は、対象演算の実行の要求である。
切替部１３１は、演算要求を演算実行部１２１に送る。
【００３１】
ステップＳ１１１において、演算実行部１２１は、メモリ管理ユニット１０２によって、学習モデル情報１９１を取得する。メモリ管理ユニット１０２は、学習モデル情報１９１をストレージ１０４からリッチメモリ１０３の中の演算実行部１２１用のメモリ領域に読み込む。
学習モデル情報１９１は、参照情報と暗号化モデル情報とを含む。
暗号化モデル情報は、学習モデルの暗号化されたモデル情報である。
モデル情報は、モデル構成情報とパラメータとを含む。モデル構成情報は学習モデルの構成を示す。
参照情報は、暗号化されたモデル構成情報と暗号化パラメータとのそれぞれの参照先を示す。参照先は、学習モデル情報１９１の中の位置を指す。
【００３２】
ステップＳ１１２において、演算実行部１２１は、学習モデル情報１９１の中の参照情報を参照し、暗号化されたモデル構成情報の参照先を復号処理部１２２に通知する。
復号処理部１２２は、メモリ管理ユニット１０２によって、通知された参照先の暗号化されたモデル構成情報を取得する。メモリ管理ユニット１０２は、暗号化されたモデル構成情報をストレージ１０４からリッチメモリ１０３の中の復号処理部１２２用のメモリ領域に読み込む。
そして、復号処理部１２２は、セキュアメモリ１０５に記憶されている暗号鍵１９３を使って、暗号化されたモデル構成情報からモデル構成情報を復号する。
【００３３】
ステップＳ１１３において、演算実行部１２１は、復号処理部１２２からモデル構成情報を取得し、モデル構成情報を対象演算に設定する。
【００３４】
ステップＳ１１４において、演算実行部１２１は、学習モデル情報１９１の中の参照情報を参照し、暗号化されたパラメータの参照先を復号処理部１２２に通知する。
復号処理部１２２は、メモリ管理ユニット１０２によって、通知された参照先の暗号化されたパラメータを取得する。メモリ管理ユニット１０２は、暗号化されたパラメータをストレージ１０４からリッチメモリ１０３の中の復号処理部１２２用のメモリ領域に読み込む。
そして、復号処理部１２２は、セキュアメモリ１０５に記憶されている暗号鍵１９３を使って、暗号化されたパラメータからパラメータを復号する。
【００３５】
ステップＳ１１５において、演算実行部１２１は、復号処理部１２２からパラメータを取得し、パラメータを対象演算に設定する。
【００３６】
ステップＳ１２１において、演算実行部１２１は、学習モデル情報１９１を改ざん検知部１２３に渡す。
改ざん検知部１２３は、学習モデル情報１９１の認証タグを生成する。認証タグは、特定の計算によって算出される。認証タグはメッセージ認証コードともいう。
生成される認証タグを「検証用認証タグ」と称する。
【００３７】
ステップＳ１２２において、改ざん検知部１２３は、メモリ管理ユニット１０２によって、参照用認証タグ１９２を取得する。メモリ管理ユニット１０２は、参照用認証タグ１９２をストレージ１０４からリッチメモリ１０３の中の改ざん検知部１２３用のメモリ領域に読み込む。
参照用認証タグ１９２は、当初の学習モデル情報１９１の認証タグ、つまり、改ざんされていない学習モデル情報１９１の認証タグである。
【００３８】
ステップＳ１２３において、改ざん検知部１２３は、検証用認証タグを参照用認証タグ１９２と照合する。
そして、改ざん検知部１２３は、照合結果に基づいて、暗号化されたモデル情報が改ざん情報であるか判定する。
検証用認証タグが参照用認証タグ１９２と一致する場合、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報でないと判定する。そして、処理はステップＳ１３１に進む。
検証用認証タグが参照用認証タグ１９２と一致しない場合、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報であると判定する。そして、処理はステップＳ１４１に進む。
【００３９】
ステップＳ１３１において、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報でないことを示す判定結果を出力制御部１２４に通知する。
出力制御部１２４は、実行指示を演算実行部１２１に通知する。
演算実行部１２１は、メモリ管理ユニット１０２によって、アプリケーション１１１から入力データを取得する。メモリ管理ユニット１０２は、入力データをリッチメモリ１０３の中のアプリケーション１１１用のメモリ領域からリッチメモリ１０３の中の演算実行部１２１用のメモリ領域に読み込む。
【００４０】
ステップＳ１３２において、演算実行部１２１は、入力データに対して対象演算を実行する。
【００４１】
ステップＳ１３３において、演算実行部１２１は、演算結果を出力制御部１２４に渡す。演算結果は、対象演算の実行結果、すなわち、対象演算を実行して得られた結果である。
出力制御部１２４は、メモリ管理ユニット１０２によって、演算結果をアプリケーション１１１に渡す。メモリ管理ユニット１０２は、演算結果をリッチメモリ１０３の中のアプリケーション１１１用のメモリ領域に書き込む。
ステップＳ１３３の後、処理はステップＳ１５１に進む。
【００４２】
ステップＳ１４１において、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報であることを示す判定結果を出力制御部１２４に通知する。
出力制御部１２４は、メモリ管理ユニット１０２によって、改ざん通知をアプリケーション１１１に渡す。メモリ管理ユニット１０２は、改ざん通知をリッチメモリ１０３の中のアプリケーション１１１用のメモリ領域に書き込む。
ステップＳ１４１の後、処理はステップＳ１５１に進む。
【００４３】
ステップＳ１５１において、出力制御部１２４は、完了応答を切替部１３１に送る。完了応答は演算要求に対する応答である。
切替部１３１は、完了応答をリッチ実行部１１０に送る。
リッチ実行部１１０は、アプリケーション１１１により、演算結果が得られた場合の処理または改ざん通知が得られた場合の処理を実行する。
【００４４】
＊＊＊実施の形態１の効果＊＊＊
セキュアな実行環境での機械学習演算において、情報処理装置１００は、暗号化されたモデル構成情報と暗号化されたパラメータとを復号する。また、情報処理装置１００は、改ざん検知を実施する。そして、情報処理装置１００は、改ざんの有無に基づいて、演算を実行して結果を出力するか、または、改ざん通知を出力するかを選択する。
これにより、セキュアな実行環境において、モデル情報の秘匿とモデル情報の改ざん検知とを両立することができる。
【００４５】
実施の形態２．
メモリリソースおよび計算時間のオーバヘッドを抑える形態について、主に実施の形態１と異なる点を図４から図８に基づいて説明する。
【００４６】
＊＊＊構成の説明＊＊＊
図４に基づいて、情報処理装置１００の構成を説明する。
情報処理装置１００は、さらに、ストレージ参照部１２５を備える。ストレージ参照部１２５は、ソフトウェアによって実現される。
情報処理プログラムは、さらに、ストレージ参照部１２５としてコンピュータを機能させる。
【００４７】
セキュア実行部１２０の要素について説明する。
改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報であるか判定するための計算処理を対象演算と並列に又は対象演算と並行に実行する。
【００４８】
改ざん検知部１２３は、上記計算処理を以下のように実行する。
対象演算は、実行順序が決められた複数の演算関数に対する演算を含む。
暗号化されたモデル情報は、複数の演算関数のそれぞれの暗号化されたパラメータを含む。
復号処理部１２２は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号する。
演算実行部１２１は、実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算する。
改ざん検知部１２３は、実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って上記計算処理を実行する。
【００４９】
具体的には、改ざん検知部１２３は、上記計算処理を以下のように実行する。
暗号化されたモデル情報は、暗号化されたモデル構成情報を含む。
まず、改ざん検知部１２３は、暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成する。
次に、改ざん検知部１２３は、実行順序にしたがって各演算関数の暗号化されたパラメータを使って上記計算処理を実行して暫定認証タグの更新を行う。
次に、改ざん検知部１２３は、更新後の暫定認証タグを用いて検証用認証タグを生成する。
そして、改ざん検知部１２３は、検証用認証タグを参照用認証タグ１９２と照合して、暗号化されたモデル情報が改ざん情報であるか判定する。
【００５０】
出力制御部１２４は、暗号化されたモデル情報が改ざん情報であると判定された場合に、改ざん通知をアプリケーション１１１に渡す。
【００５１】
＊＊＊動作の説明＊＊＊
図５および図６に基づいて、情報処理方法を説明する。
ステップＳ２０１において、リッチ実行部１１０は、アプリケーション１１１からの演算要求を切替部１３１に送る。
ステップＳ２０１は、実施の形態１におけるステップＳ１０１と同じである。
【００５２】
ステップＳ２１１において、演算実行部１２１は、メモリ管理ユニット１０２によって、学習モデル情報１９１を取得する。
ステップＳ２１１は、実施の形態１におけるステップＳ１１１と同じである。
【００５３】
ステップＳ２１２において、演算実行部１２１は、学習モデル情報１９１をストレージ参照部１２５に渡す。
ストレージ参照部１２５は、暗号化されたモデル構成情報を学習モデル情報１９１から取得し、暗号化されたモデル構成情報を復号処理部１２２に渡す。
復号処理部１２２は、セキュアメモリ１０５に記憶されている暗号鍵１９３を使って、暗号化されたモデル構成情報からモデル構成情報を復号する。
【００５４】
ステップＳ２１３において、演算実行部１２１は、復号処理部１２２からモデル構成情報を取得し、モデル構成情報を対象演算に設定する。
ステップＳ２１３は、実施の形態１におけるステップＳ１１３と同じである。
【００５５】
ステップＳ２２１において、ストレージ参照部１２５は、暗号化されたモデル構成情報を改ざん検知部１２３に渡す。
改ざん検知部１２３は、暗号化されたモデル構成情報の認証タグを生成する。
生成される認証タグを「暫定認証タグ」と称する。
【００５６】
ステップＳ２２２において、演算実行部１２１は、メモリ管理ユニット１０２により、アプリケーション１１１から入力データを取得する。メモリ管理ユニット１０２は、入力データをリッチメモリ１０３の中のアプリケーション１１１用のメモリ領域からリッチメモリ１０３の中の演算実行部１２１用のメモリ領域に読み込む。
【００５７】
対象演算は、実行順序が決められた複数の演算関数に対する演算を含む。
ステップＳ２３１からステップＳ２３４は、複数の演算関数の実行順序にしたがって各演算関数に対して実行される。つまり、ステップＳ２３１からステップＳ２３４は、演算関数の数だけ繰り返される。
対象となる演算関数を「対象関数」と称する。
【００５８】
ステップＳ２３１において、ストレージ参照部１２５は、対象関数の暗号化されたパラメータを学習モデル情報１９１から取得し、対象関数の暗号化されたパラメータを復号処理部１２２に渡す。
復号処理部１２２は、セキュアメモリ１０５に記憶されている暗号鍵１９３を使って、対象関数の暗号化されたパラメータからパラメータを復号する。
【００５９】
ステップＳ２３２において、演算実行部１２１は、復号処理部１２２からパラメータを取得し、パラメータを対象関数に設定する。
【００６０】
ステップＳ２３３において、ストレージ参照部１２５は、対象関数の暗号化されたパラメータを改ざん検知部１２３に渡す。
改ざん検知部１２３は、対象関数の暗号化されたパラメータを使って計算処理を実行して暫定認証タグを更新する。
【００６１】
ステップＳ２３４において、演算実行部１２１は、対象関数を演算する。
例えば、対象関数が１番目の演算関数である場合、演算実行部１２１は、入力データに対して対象関数を実行する。また、対象関数が２番目以降の演算関数である場合、演算実行部１２１は、前回の対象関数の演算結果に対して対象関数を実行する。
【００６２】
ステップＳ２３５において、演算実行部１２１は、全ての演算関数の演算が終了したか判定する。
全ての演算関数の演算が終了していない場合、処理はステップＳ２３１に進む。
全ての演算関数の演算が終了した場合、処理はステップＳ２４１に進む。
【００６３】
ステップＳ２４１において、改ざん検知部１２３は、暫定認証タグを用いて検証用認証タグを生成する。
【００６４】
ステップＳ２４２において、ストレージ参照部１２５は、メモリ管理ユニット１０２によって、参照用認証タグ１９２を取得する。メモリ管理ユニット１０２は、参照用認証タグ１９２をストレージ１０４からリッチメモリ１０３の中のストレージ参照部１２５用のメモリ領域に読み込む。
ストレージ参照部１２５は、参照用認証タグ１９２を改ざん検知部１２３に渡す。
改ざん検知部１２３は、参照用認証タグ１９２をストレージ参照部１２５から取得する。
【００６５】
ステップＳ２４３において、改ざん検知部１２３は、検証用認証タグを参照用認証タグ１９２と照合する。
そして、改ざん検知部１２３は、照合結果に基づいて、暗号化されたモデル情報が改ざん情報であるか判定する。
検証用認証タグが参照用認証タグ１９２と一致する場合、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報でないと判定する。そして、処理はステップＳ２５１に進む。
検証用認証タグが参照用認証タグ１９２と一致しない場合、改ざん検知部１２３は、暗号化されたモデル情報が改ざん情報であると判定する。そして、処理はステップＳ２６１に進む。
【００６６】
ステップＳ２５１において、演算実行部１２１は、演算結果を出力制御部１２４に渡す。
ステップＳ２５１は、実施の形態１におけるステップＳ１３３と同じである。但し、出力制御部１２４には、最後の演算関数の実行結果が渡される。
【００６７】
ステップＳ２６１において、出力制御部１２４は、メモリ管理ユニット１０２によって、改ざん通知をアプリケーション１１１に渡す。
ステップＳ２６１は、実施の形態１におけるステップＳ１４１と同じである。
【００６８】
ステップＳ２７１において、出力制御部１２４は、完了応答を切替部１３１に送る。
ステップＳ２７１は、実施の形態１におけるステップＳ１５１と同じである。
【００６９】
＊＊＊実施の形態２の補足＊＊＊
モデル情報の暗号化とモデル情報の改ざん検知のためのアルゴリズムとして、Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ（ＧＣＭ）による認証付き暗号を利用することができる。
図７に基づいて、ＧＣＭによる認証付き暗号処理を実施の形態２に適用した例を説明する。
機械学習アルゴリズムは、機械学習済みの複数の演算関数（ＭＬ）で構成され、入力データ（Ｉｎｐｕｔ  Ｄａｔａ）に対する演算結果（Ｏｕｔｐｕｔ  Ｄａｔａ）を返す。
機械学習演算に用いるパラメータ（Ｐｌａｉｎｔｅｘｔ）は暗号化されている。
演算関数の実行時には、暗号化されたパラメータ（Ｃｉｐｈｅｒｔｅｘｔ）が復号され、パラメータが演算関数に用いられる。また、暫定認証タグ（Ａｕｔｈ  Ｄａｔａ）も逐次的に更新される。
なお、逐次的に展開されるパラメータおよび演算関数によって得らえる中間結果は、演算関数の実行ごとに削除または上書きされる。これにより、リッチメモリ１０３に展開されるデータ量が削減される。
全ての演算関数が実行されると、検証用認証タグ（Ｔａｇ）が生成され、ストレージ１０４に格納された参照用認証タグ１９２（Ａｕｔｈ  Ｔａｇ）と検証用タグが比較され、改ざんの有無が確認される。
改ざんが無い場合には、演算結果（Ｏｕｔｐｕｔ  Ｄａｔａ）が出力される。
改ざんが有る場合には、演算結果の代わりに改ざん通知（Ｏｕｔｐｕｔ  Ｄａｔａ）が出力される。
認証付き暗号処理と機械学習演算処理は、並列で実行されてもよいし、並行で処理されてもよい。
【００７０】
図８に基づいて、学習モデルが３層のニューラルネットワークである場合について、ＧＣＭによる認証付き暗号処理を実施の形態２に適用した例を説明する。
リッチ実行部１１０により、入力データと学習モデル情報１９１と参照用認証タグ１９２が管理される。
学習モデル情報１９１は、暗号化されたモデル構成情報を含む。セキュア実行部１２０により、暗号化されたモデル構成情報からモデル構成情報が復号される。モデル構成情報には、３層のニューラルネットワークの複数の演算関数が設定されている。
参照用認証タグ１９２は、予め生成されている。
まず、入力データがリッチ実行部１１０からセキュア実行部１２０に渡される。
次に、第１層の演算関数（畳込み演算）が実行される。このとき、第１層のパラメータが復号されてセキュア実行部１２０用のメモリ領域に展開される。また、暫定認証タグが更新される。第１層の演算関数の終了後、演算に用いられたデータ（パラメータなど）はメモリ領域から削除される。
次に、第２層の演算関数（畳込み演算）が実行される。このとき、第２層のパラメータが復号されてセキュア実行部１２０用のメモリ領域に展開される。また、暫定認証タグが更新される。第２層の演算関数の終了後、演算に用いられたデータ（パラメータなど）はメモリ領域から削除される。
次に、第３層の第１演算関数（全結合乗算）が実行される。このとき、第３層のパラメータ（重み）が復号されてセキュア実行部１２０用のメモリ領域に展開される。また、暫定認証タグが更新される。第３層の第１演算関数の終了後、演算に用いられたデータ（パラメータなど）はメモリ領域から削除される。
次に、第３層の第２演算関数（全結合加算）が実行される。このとき、第３層のパラメータ（バイアス）が復号されてセキュア実行部１２０用のメモリ領域に展開される。また、暫定認証タグが更新される。第３層の第２演算関数の終了後、演算に用いられたデータ（パラメータなど）はメモリ領域から削除される。
そして、暫定認証タグを用いて検証用認証タグが生成され、検証用認証タグが参照用認証タグ１９２と比較され、改ざんの有無が判定される。
改ざんが無い場合、演算結果（出力データ）がセキュア実行部１２０からリッチ実行部１１０に渡される。
改ざんが有る場合、改ざん通知（出力データ）がセキュア実行部１２０からリッチ実行部１１０に渡される。
１つの層に複数の演算がある場合、第３層のように複数の演算を分離して実行してもよい。また、複数の演算を分離せずにまとめて実行してもよい。
また、２つ以上の層をまとめてもよい。つまり、異なる層の２つ以上の演算をまとめて実行してもよい。さらに、入力データを一定のデータサイズに分割しても各演算を実行してもよい。
【００７１】
＊＊＊実施の形態２の効果＊＊＊
情報処理装置１００は、機械学習演算を演算関数単位で並列または並行に処理する。これにより、メモリリソースおよび計算時間のオーバヘッドを抑えて、セキュアな実行環境においてモデル情報の秘匿とモデル情報の改ざん検知とを両立することができる。
【００７２】
ステップＳ２３１からステップＳ２３４において、全てのパラメータが復号して展開されるのではなく、演算関数ごとにパラメータが復号して展開され演算関数が演算される。これにより、演算時のメモリ使用量を抑えることができる。
【００７３】
＊＊＊実施の形態の補足＊＊＊
図９に基づいて、情報処理装置１００のハードウェア構成を説明する。記憶装置はリッチメモリ１０３、ストレージ１０４およびセキュアメモリ１０５を表している。
情報処理装置１００は処理回路１０９を備える。
処理回路１０９は、リッチ実行部１１０とセキュア実行部１２０とモニタ部１３０とを実現するハードウェアである。
処理回路１０９は、専用のハードウェアであってもよいし、記憶装置に格納されるプログラムを実行するプロセッサ１０１であってもよい。
【００７４】
処理回路１０９が専用のハードウェアである場合、処理回路１０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称である。
ＦＰＧＡは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００７５】
情報処理装置１００は、処理回路１０９を代替する複数の処理回路を備えてもよい。
【００７６】
処理回路１０９において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【００７７】
このように、情報処理装置１００の機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【００７８】
各実施の形態は、好ましい形態の例示であり、本開示の技術的範囲を制限することを意図するものではない。各実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【００７９】
情報処理装置１００の要素である「部」は、「処理」、「工程」、「回路」または「サーキットリ」と読み替えてもよい。
【符号の説明】
【００８０】
１００  情報処理装置、１０１  プロセッサ、１０２  メモリ管理ユニット、１０３  リッチメモリ、１０４  ストレージ、１０５  セキュアメモリ、１０９  処理回路、１１０  リッチ実行部、１１１  アプリケーション、１２０  セキュア実行部、１２１  演算実行部、１２２  復号処理部、１２３  改ざん検知部、１２４  出力制御部、１２５  ストレージ参照部、１３０  モニタ部、１３１  切替部、１９１  学習モデル情報、１９２  参照用認証タグ、１９３  暗号鍵。
【要約】
リッチ実行部（１１０）は、リッチＯＳを実行しながらアプリケーション（１１１）を実行する。セキュア実行部（１２０）は、セキュアＯＳを実行しながら、学習モデルに基づく演算である対象演算を実行する。復号処理部（１２２）は、アプリケーションから対象演算の実行が要求された場合に、学習モデルの暗号化されたモデル情報からモデル情報を復号する。演算実行部（１２１）は、モデル情報を使って対象演算を実行する。改ざん検知部（１２３）は、暗号化されたモデル情報が改ざん情報であるか判定する。出力制御部（１２４）は、暗号化されたモデル情報が改ざん情報でないと判定された場合に、対象演算の実行結果をアプリケーションに渡す。【図１】
0006987308.tif 000002
【図２】
0006987308.tif 000003
【図３】
0006987308.tif 000004
【図４】
0006987308.tif 000005
【図５】
0006987308.tif 000006
【図６】
0006987308.tif 000007
【図７】
0006987308.tif 000008
【図８】
0006987308.tif 000009
【図９】
0006987308.tif 000010