【文献】
VANNOSTRAND, Peter M. et al.,Confidential Deep Learning: Executing Proprietary Models on Untrusted Devices,arXiv.org,2019年08月28日,arXiv:1908.10730v1,pp. 1-6,インターネット,[2021年3月10日検索],<URL:https://arxiv.org/abs/1908.10730v1>
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【0011】
実施の形態1.
情報処理装置100について、
図1から
図3に基づいて説明する。
【0012】
***構成の説明***
図1に基づいて、情報処理装置100の構成を説明する。
情報処理装置100は、プロセッサ101とメモリ管理ユニット102とリッチメモリ103とストレージ104とセキュアメモリ105といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【0013】
プロセッサ101は、演算処理を行うICであり、他のハードウェアを制御する。例えば、プロセッサ101は、CPU、DSPまたはGPUである。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
DSPは、Digital Signal Processorの略称である。
GPUは、Graphics Processing Unitの略称である。
【0014】
メモリ管理ユニット102は、リッチメモリ103へのアクセスを制御する。
【0015】
リッチメモリ103は、汎用のメモリであり、主記憶装置またはメインメモリともいう。
メモリは、揮発性または不揮発性の記憶装置である。例えば、メモリはRAMである。メモリに記憶されたデータは必要に応じてストレージ104に保存される。
RAMは、Random Access Memoryの略称である。
【0016】
ストレージ104は、不揮発性の記憶装置であり、補助記憶装置ともいう。
例えば、ストレージ104は、ROM、HDDまたはフラッシュメモリである。ストレージ104に記憶されたデータは必要に応じてリッチメモリ103にロードされる。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
例えば、ストレージ104には、学習モデル情報191および参照用認証タグ192などが記憶される。
【0017】
セキュアメモリ105は、セキュリティの機能を有してセキュリティが強化されたメモリである。
例えば、セキュアメモリ105には、暗号鍵193などが記憶される。
【0018】
情報処理装置100は、リッチ実行部110とセキュア実行部120とモニタ部130といった要素を備える。これらの要素はソフトウェアで実現される。
【0019】
ストレージ104には、リッチ実行部110とセキュア実行部120とモニタ部130としてコンピュータを機能させるための情報処理プログラムが記憶されている。情報処理プログラムは、リッチメモリ103にロードされて、プロセッサ101によって実行される。
ストレージ104には、さらに、OSが記憶されている。OSの少なくとも一部は、リッチメモリ103にロードされて、プロセッサ101によって実行される。
プロセッサ101は、OSを実行しながら、情報処理プログラムを実行する。
OSは、Operating Systemの略称である。
【0020】
情報処理装置100は、プロセッサ101を代替する複数のプロセッサを備えてもよい。
【0021】
情報処理プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
【0022】
リッチ実行部110とセキュア実行部120とモニタ部130について説明する。
リッチ実行部110は、リッチOSを実行しながらアプリケーション111を実行する。
リッチOSは、汎用のOSである。
アプリケーション111は、アプリケーションプログラムである。
【0023】
セキュア実行部120は、セキュアOSを実行しながら、対象演算を実行する。
セキュアOSは、セキュリティの機能を有してセキュリティが強化されたOSである。
対象演算は、学習モデルに基づく演算である。具体的には、対象演算は、機械学習によって学習モデルを更新する演算、又は、学習モデルを利用して入力データを解析する演算である。機械学習の具体例はディープラーニングである。但し、機械学習は、ディープラーニングに限定されず、回帰法、決定木学習、ベイズ方またはクラスタリングなどであってもよい。
【0024】
セキュア実行部120は、演算実行部121と復号処理部122と改ざん検知部123と出力制御部124といった要素を備える。これら要素については後述する。
【0025】
モニタ部130は、仮想モニタとして機能し、切替部131を備える。
切替部131は、情報処理装置100の実行環境をリッチOSによる環境またはセキュアOSによる環境に切り替える。
但し、実行環境の切り替えは他の方法によって実現されてもよい。例えば、情報処理装置100がモニタ部130を備えず、メモリ管理ユニット102が切替部131を備えてもよい。
【0026】
セキュア実行部120の要素について説明する。
復号処理部122は、アプリケーション111から対象演算の実行が要求された場合に、学習モデル情報191からモデル情報を復号する。学習モデル情報191は、暗号化モデル情報を含む。暗号化モデル情報は、学習モデルの暗号化されたモデル情報である。
演算実行部121は、モデル情報を使って対象演算を実行する。
改ざん検知部123は、暗号化モデル情報が改ざん情報であるか判定する。改ざん情報は改ざんされた情報を意味する。
出力制御部124は、暗号化モデル情報が改ざん情報でないと判定された場合に、対象演算の実行結果をアプリケーション111に渡す。
【0027】
演算実行部121は、暗号化モデル情報が改ざん情報でないと判定された場合に、モデル情報を使って対象演算を実行する。
【0028】
出力制御部124は、暗号化モデル情報が改ざん情報であると判定された場合に、改ざん通知をアプリケーション111に渡す。改ざん通知は、暗号化モデル情報の改ざんを知らせるための通知であり、改ざん検知アラートともいう。
【0029】
***動作の説明***
情報処理装置100の動作の手順は情報処理方法に相当する。また、情報処理装置100の動作の手順は情報処理プログラムによる処理の手順に相当する。
【0030】
図2および
図3に基づいて、情報処理方法を説明する。
ステップS101において、リッチ実行部110は、アプリケーション111の実行を開始する。
そして、リッチ実行部110は、アプリケーション111からの演算要求を切替部131に送る。演算要求は、対象演算の実行の要求である。
切替部131は、演算要求を演算実行部121に送る。
【0031】
ステップS111において、演算実行部121は、メモリ管理ユニット102によって、学習モデル情報191を取得する。メモリ管理ユニット102は、学習モデル情報191をストレージ104からリッチメモリ103の中の演算実行部121用のメモリ領域に読み込む。
学習モデル情報191は、参照情報と暗号化モデル情報とを含む。
暗号化モデル情報は、学習モデルの暗号化されたモデル情報である。
モデル情報は、モデル構成情報とパラメータとを含む。モデル構成情報は学習モデルの構成を示す。
参照情報は、暗号化されたモデル構成情報と暗号化パラメータとのそれぞれの参照先を示す。参照先は、学習モデル情報191の中の位置を指す。
【0032】
ステップS112において、演算実行部121は、学習モデル情報191の中の参照情報を参照し、暗号化されたモデル構成情報の参照先を復号処理部122に通知する。
復号処理部122は、メモリ管理ユニット102によって、通知された参照先の暗号化されたモデル構成情報を取得する。メモリ管理ユニット102は、暗号化されたモデル構成情報をストレージ104からリッチメモリ103の中の復号処理部122用のメモリ領域に読み込む。
そして、復号処理部122は、セキュアメモリ105に記憶されている暗号鍵193を使って、暗号化されたモデル構成情報からモデル構成情報を復号する。
【0033】
ステップS113において、演算実行部121は、復号処理部122からモデル構成情報を取得し、モデル構成情報を対象演算に設定する。
【0034】
ステップS114において、演算実行部121は、学習モデル情報191の中の参照情報を参照し、暗号化されたパラメータの参照先を復号処理部122に通知する。
復号処理部122は、メモリ管理ユニット102によって、通知された参照先の暗号化されたパラメータを取得する。メモリ管理ユニット102は、暗号化されたパラメータをストレージ104からリッチメモリ103の中の復号処理部122用のメモリ領域に読み込む。
そして、復号処理部122は、セキュアメモリ105に記憶されている暗号鍵193を使って、暗号化されたパラメータからパラメータを復号する。
【0035】
ステップS115において、演算実行部121は、復号処理部122からパラメータを取得し、パラメータを対象演算に設定する。
【0036】
ステップS121において、演算実行部121は、学習モデル情報191を改ざん検知部123に渡す。
改ざん検知部123は、学習モデル情報191の認証タグを生成する。認証タグは、特定の計算によって算出される。認証タグはメッセージ認証コードともいう。
生成される認証タグを「検証用認証タグ」と称する。
【0037】
ステップS122において、改ざん検知部123は、メモリ管理ユニット102によって、参照用認証タグ192を取得する。メモリ管理ユニット102は、参照用認証タグ192をストレージ104からリッチメモリ103の中の改ざん検知部123用のメモリ領域に読み込む。
参照用認証タグ192は、当初の学習モデル情報191の認証タグ、つまり、改ざんされていない学習モデル情報191の認証タグである。
【0038】
ステップS123において、改ざん検知部123は、検証用認証タグを参照用認証タグ192と照合する。
そして、改ざん検知部123は、照合結果に基づいて、暗号化されたモデル情報が改ざん情報であるか判定する。
検証用認証タグが参照用認証タグ192と一致する場合、改ざん検知部123は、暗号化されたモデル情報が改ざん情報でないと判定する。そして、処理はステップS131に進む。
検証用認証タグが参照用認証タグ192と一致しない場合、改ざん検知部123は、暗号化されたモデル情報が改ざん情報であると判定する。そして、処理はステップS141に進む。
【0039】
ステップS131において、改ざん検知部123は、暗号化されたモデル情報が改ざん情報でないことを示す判定結果を出力制御部124に通知する。
出力制御部124は、実行指示を演算実行部121に通知する。
演算実行部121は、メモリ管理ユニット102によって、アプリケーション111から入力データを取得する。メモリ管理ユニット102は、入力データをリッチメモリ103の中のアプリケーション111用のメモリ領域からリッチメモリ103の中の演算実行部121用のメモリ領域に読み込む。
【0040】
ステップS132において、演算実行部121は、入力データに対して対象演算を実行する。
【0041】
ステップS133において、演算実行部121は、演算結果を出力制御部124に渡す。演算結果は、対象演算の実行結果、すなわち、対象演算を実行して得られた結果である。
出力制御部124は、メモリ管理ユニット102によって、演算結果をアプリケーション111に渡す。メモリ管理ユニット102は、演算結果をリッチメモリ103の中のアプリケーション111用のメモリ領域に書き込む。
ステップS133の後、処理はステップS151に進む。
【0042】
ステップS141において、改ざん検知部123は、暗号化されたモデル情報が改ざん情報であることを示す判定結果を出力制御部124に通知する。
出力制御部124は、メモリ管理ユニット102によって、改ざん通知をアプリケーション111に渡す。メモリ管理ユニット102は、改ざん通知をリッチメモリ103の中のアプリケーション111用のメモリ領域に書き込む。
ステップS141の後、処理はステップS151に進む。
【0043】
ステップS151において、出力制御部124は、完了応答を切替部131に送る。完了応答は演算要求に対する応答である。
切替部131は、完了応答をリッチ実行部110に送る。
リッチ実行部110は、アプリケーション111により、演算結果が得られた場合の処理または改ざん通知が得られた場合の処理を実行する。
【0044】
***実施の形態1の効果***
セキュアな実行環境での機械学習演算において、情報処理装置100は、暗号化されたモデル構成情報と暗号化されたパラメータとを復号する。また、情報処理装置100は、改ざん検知を実施する。そして、情報処理装置100は、改ざんの有無に基づいて、演算を実行して結果を出力するか、または、改ざん通知を出力するかを選択する。
これにより、セキュアな実行環境において、モデル情報の秘匿とモデル情報の改ざん検知とを両立することができる。
【0045】
実施の形態2.
メモリリソースおよび計算時間のオーバヘッドを抑える形態について、主に実施の形態1と異なる点を
図4から
図8に基づいて説明する。
【0046】
***構成の説明***
図4に基づいて、情報処理装置100の構成を説明する。
情報処理装置100は、さらに、ストレージ参照部125を備える。ストレージ参照部125は、ソフトウェアによって実現される。
情報処理プログラムは、さらに、ストレージ参照部125としてコンピュータを機能させる。
【0047】
セキュア実行部120の要素について説明する。
改ざん検知部123は、暗号化されたモデル情報が改ざん情報であるか判定するための計算処理を対象演算と並列に又は対象演算と並行に実行する。
【0048】
改ざん検知部123は、上記計算処理を以下のように実行する。
対象演算は、実行順序が決められた複数の演算関数に対する演算を含む。
暗号化されたモデル情報は、複数の演算関数のそれぞれの暗号化されたパラメータを含む。
復号処理部122は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号する。
演算実行部121は、実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算する。
改ざん検知部123は、実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って上記計算処理を実行する。
【0049】
具体的には、改ざん検知部123は、上記計算処理を以下のように実行する。
暗号化されたモデル情報は、暗号化されたモデル構成情報を含む。
まず、改ざん検知部123は、暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成する。
次に、改ざん検知部123は、実行順序にしたがって各演算関数の暗号化されたパラメータを使って上記計算処理を実行して暫定認証タグの更新を行う。
次に、改ざん検知部123は、更新後の暫定認証タグを用いて検証用認証タグを生成する。
そして、改ざん検知部123は、検証用認証タグを参照用認証タグ192と照合して、暗号化されたモデル情報が改ざん情報であるか判定する。
【0050】
出力制御部124は、暗号化されたモデル情報が改ざん情報であると判定された場合に、改ざん通知をアプリケーション111に渡す。
【0051】
***動作の説明***
図5および
図6に基づいて、情報処理方法を説明する。
ステップS201において、リッチ実行部110は、アプリケーション111からの演算要求を切替部131に送る。
ステップS201は、実施の形態1におけるステップS101と同じである。
【0052】
ステップS211において、演算実行部121は、メモリ管理ユニット102によって、学習モデル情報191を取得する。
ステップS211は、実施の形態1におけるステップS111と同じである。
【0053】
ステップS212において、演算実行部121は、学習モデル情報191をストレージ参照部125に渡す。
ストレージ参照部125は、暗号化されたモデル構成情報を学習モデル情報191から取得し、暗号化されたモデル構成情報を復号処理部122に渡す。
復号処理部122は、セキュアメモリ105に記憶されている暗号鍵193を使って、暗号化されたモデル構成情報からモデル構成情報を復号する。
【0054】
ステップS213において、演算実行部121は、復号処理部122からモデル構成情報を取得し、モデル構成情報を対象演算に設定する。
ステップS213は、実施の形態1におけるステップS113と同じである。
【0055】
ステップS221において、ストレージ参照部125は、暗号化されたモデル構成情報を改ざん検知部123に渡す。
改ざん検知部123は、暗号化されたモデル構成情報の認証タグを生成する。
生成される認証タグを「暫定認証タグ」と称する。
【0056】
ステップS222において、演算実行部121は、メモリ管理ユニット102により、アプリケーション111から入力データを取得する。メモリ管理ユニット102は、入力データをリッチメモリ103の中のアプリケーション111用のメモリ領域からリッチメモリ103の中の演算実行部121用のメモリ領域に読み込む。
【0057】
対象演算は、実行順序が決められた複数の演算関数に対する演算を含む。
ステップS231からステップS234は、複数の演算関数の実行順序にしたがって各演算関数に対して実行される。つまり、ステップS231からステップS234は、演算関数の数だけ繰り返される。
対象となる演算関数を「対象関数」と称する。
【0058】
ステップS231において、ストレージ参照部125は、対象関数の暗号化されたパラメータを学習モデル情報191から取得し、対象関数の暗号化されたパラメータを復号処理部122に渡す。
復号処理部122は、セキュアメモリ105に記憶されている暗号鍵193を使って、対象関数の暗号化されたパラメータからパラメータを復号する。
【0059】
ステップS232において、演算実行部121は、復号処理部122からパラメータを取得し、パラメータを対象関数に設定する。
【0060】
ステップS233において、ストレージ参照部125は、対象関数の暗号化されたパラメータを改ざん検知部123に渡す。
改ざん検知部123は、対象関数の暗号化されたパラメータを使って計算処理を実行して暫定認証タグを更新する。
【0061】
ステップS234において、演算実行部121は、対象関数を演算する。
例えば、対象関数が1番目の演算関数である場合、演算実行部121は、入力データに対して対象関数を実行する。また、対象関数が2番目以降の演算関数である場合、演算実行部121は、前回の対象関数の演算結果に対して対象関数を実行する。
【0062】
ステップS235において、演算実行部121は、全ての演算関数の演算が終了したか判定する。
全ての演算関数の演算が終了していない場合、処理はステップS231に進む。
全ての演算関数の演算が終了した場合、処理はステップS241に進む。
【0063】
ステップS241において、改ざん検知部123は、暫定認証タグを用いて検証用認証タグを生成する。
【0064】
ステップS242において、ストレージ参照部125は、メモリ管理ユニット102によって、参照用認証タグ192を取得する。メモリ管理ユニット102は、参照用認証タグ192をストレージ104からリッチメモリ103の中のストレージ参照部125用のメモリ領域に読み込む。
ストレージ参照部125は、参照用認証タグ192を改ざん検知部123に渡す。
改ざん検知部123は、参照用認証タグ192をストレージ参照部125から取得する。
【0065】
ステップS243において、改ざん検知部123は、検証用認証タグを参照用認証タグ192と照合する。
そして、改ざん検知部123は、照合結果に基づいて、暗号化されたモデル情報が改ざん情報であるか判定する。
検証用認証タグが参照用認証タグ192と一致する場合、改ざん検知部123は、暗号化されたモデル情報が改ざん情報でないと判定する。そして、処理はステップS251に進む。
検証用認証タグが参照用認証タグ192と一致しない場合、改ざん検知部123は、暗号化されたモデル情報が改ざん情報であると判定する。そして、処理はステップS261に進む。
【0066】
ステップS251において、演算実行部121は、演算結果を出力制御部124に渡す。
ステップS251は、実施の形態1におけるステップS133と同じである。但し、出力制御部124には、最後の演算関数の実行結果が渡される。
【0067】
ステップS261において、出力制御部124は、メモリ管理ユニット102によって、改ざん通知をアプリケーション111に渡す。
ステップS261は、実施の形態1におけるステップS141と同じである。
【0068】
ステップS271において、出力制御部124は、完了応答を切替部131に送る。
ステップS271は、実施の形態1におけるステップS151と同じである。
【0069】
***実施の形態2の補足***
モデル情報の暗号化とモデル情報の改ざん検知のためのアルゴリズムとして、Galois/Counter Mode(GCM)による認証付き暗号を利用することができる。
図7に基づいて、GCMによる認証付き暗号処理を実施の形態2に適用した例を説明する。
機械学習アルゴリズムは、機械学習済みの複数の演算関数(ML)で構成され、入力データ(Input Data)に対する演算結果(Output Data)を返す。
機械学習演算に用いるパラメータ(Plaintext)は暗号化されている。
演算関数の実行時には、暗号化されたパラメータ(Ciphertext)が復号され、パラメータが演算関数に用いられる。また、暫定認証タグ(Auth Data)も逐次的に更新される。
なお、逐次的に展開されるパラメータおよび演算関数によって得らえる中間結果は、演算関数の実行ごとに削除または上書きされる。これにより、リッチメモリ103に展開されるデータ量が削減される。
全ての演算関数が実行されると、検証用認証タグ(Tag)が生成され、ストレージ104に格納された参照用認証タグ192(Auth Tag)と検証用タグが比較され、改ざんの有無が確認される。
改ざんが無い場合には、演算結果(Output Data)が出力される。
改ざんが有る場合には、演算結果の代わりに改ざん通知(Output Data)が出力される。
認証付き暗号処理と機械学習演算処理は、並列で実行されてもよいし、並行で処理されてもよい。
【0070】
図8に基づいて、学習モデルが3層のニューラルネットワークである場合について、GCMによる認証付き暗号処理を実施の形態2に適用した例を説明する。
リッチ実行部110により、入力データと学習モデル情報191と参照用認証タグ192が管理される。
学習モデル情報191は、暗号化されたモデル構成情報を含む。セキュア実行部120により、暗号化されたモデル構成情報からモデル構成情報が復号される。モデル構成情報には、3層のニューラルネットワークの複数の演算関数が設定されている。
参照用認証タグ192は、予め生成されている。
まず、入力データがリッチ実行部110からセキュア実行部120に渡される。
次に、第1層の演算関数(畳込み演算)が実行される。このとき、第1層のパラメータが復号されてセキュア実行部120用のメモリ領域に展開される。また、暫定認証タグが更新される。第1層の演算関数の終了後、演算に用いられたデータ(パラメータなど)はメモリ領域から削除される。
次に、第2層の演算関数(畳込み演算)が実行される。このとき、第2層のパラメータが復号されてセキュア実行部120用のメモリ領域に展開される。また、暫定認証タグが更新される。第2層の演算関数の終了後、演算に用いられたデータ(パラメータなど)はメモリ領域から削除される。
次に、第3層の第1演算関数(全結合乗算)が実行される。このとき、第3層のパラメータ(重み)が復号されてセキュア実行部120用のメモリ領域に展開される。また、暫定認証タグが更新される。第3層の第1演算関数の終了後、演算に用いられたデータ(パラメータなど)はメモリ領域から削除される。
次に、第3層の第2演算関数(全結合加算)が実行される。このとき、第3層のパラメータ(バイアス)が復号されてセキュア実行部120用のメモリ領域に展開される。また、暫定認証タグが更新される。第3層の第2演算関数の終了後、演算に用いられたデータ(パラメータなど)はメモリ領域から削除される。
そして、暫定認証タグを用いて検証用認証タグが生成され、検証用認証タグが参照用認証タグ192と比較され、改ざんの有無が判定される。
改ざんが無い場合、演算結果(出力データ)がセキュア実行部120からリッチ実行部110に渡される。
改ざんが有る場合、改ざん通知(出力データ)がセキュア実行部120からリッチ実行部110に渡される。
1つの層に複数の演算がある場合、第3層のように複数の演算を分離して実行してもよい。また、複数の演算を分離せずにまとめて実行してもよい。
また、2つ以上の層をまとめてもよい。つまり、異なる層の2つ以上の演算をまとめて実行してもよい。さらに、入力データを一定のデータサイズに分割しても各演算を実行してもよい。
【0071】
***実施の形態2の効果***
情報処理装置100は、機械学習演算を演算関数単位で並列または並行に処理する。これにより、メモリリソースおよび計算時間のオーバヘッドを抑えて、セキュアな実行環境においてモデル情報の秘匿とモデル情報の改ざん検知とを両立することができる。
【0072】
ステップS231からステップS234において、全てのパラメータが復号して展開されるのではなく、演算関数ごとにパラメータが復号して展開され演算関数が演算される。これにより、演算時のメモリ使用量を抑えることができる。
【0073】
***実施の形態の補足***
図9に基づいて、情報処理装置100のハードウェア構成を説明する。記憶装置はリッチメモリ103、ストレージ104およびセキュアメモリ105を表している。
情報処理装置100は処理回路109を備える。
処理回路109は、リッチ実行部110とセキュア実行部120とモニタ部130とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、記憶装置に格納されるプログラムを実行するプロセッサ101であってもよい。
【0074】
処理回路109が専用のハードウェアである場合、処理回路109は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
ASICは、Application Specific Integrated Circuitの略称である。
FPGAは、Field Programmable Gate Arrayの略称である。
【0075】
情報処理装置100は、処理回路109を代替する複数の処理回路を備えてもよい。
【0076】
処理回路109において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【0077】
このように、情報処理装置100の機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【0078】
各実施の形態は、好ましい形態の例示であり、本開示の技術的範囲を制限することを意図するものではない。各実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【0079】
情報処理装置100の要素である「部」は、「処理」、「工程」、「回路」または「サーキットリ」と読み替えてもよい。
リッチ実行部(110)は、リッチOSを実行しながらアプリケーション(111)を実行する。セキュア実行部(120)は、セキュアOSを実行しながら、学習モデルに基づく演算である対象演算を実行する。復号処理部(122)は、アプリケーションから対象演算の実行が要求された場合に、学習モデルの暗号化されたモデル情報からモデル情報を復号する。演算実行部(121)は、モデル情報を使って対象演算を実行する。改ざん検知部(123)は、暗号化されたモデル情報が改ざん情報であるか判定する。出力制御部(124)は、暗号化されたモデル情報が改ざん情報でないと判定された場合に、対象演算の実行結果をアプリケーションに渡す。