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

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

▶ 三菱電機株式会社の特許一覧

特許6987308情報処理装置、情報処理方法および情報処理プログラム
<>
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000002
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000003
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000004
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000005
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000006
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000007
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000008
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000009
  • 特許6987308-情報処理装置、情報処理方法および情報処理プログラム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6987308
(24)【登録日】2021年12月2日
(45)【発行日】2021年12月22日
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
   G06F 21/74 20130101AFI20211213BHJP
   G06F 21/64 20130101ALI20211213BHJP
【FI】
   G06F21/74
   G06F21/64
【請求項の数】6
【全頁数】17
(21)【出願番号】特願2021-522565(P2021-522565)
(86)(22)【出願日】2020年12月17日
(86)【国際出願番号】JP2020047098
【審査請求日】2021年4月23日
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】溝井国際特許業務法人
(72)【発明者】
【氏名】中井 綱人
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開2019−109680(JP,A)
【文献】 特開2019−121141(JP,A)
【文献】 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名)
G06F 21/74
G06F 21/64
G06F 21/53
G06N 20/00
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行部と、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行部と、
を備え、
前記セキュア実行部は、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理部と、
前記モデル情報を使って前記対象演算を実行する演算実行部と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知部と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御部と、
を備え、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理部は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行部は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知部は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理装置。
【請求項2】
前記出力制御部は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項1に記載の情報処理装置。
【請求項3】
リッチ実行部が、リッチオペレーティングシステムを実行しながらアプリケーションを実行し、
セキュア実行部が、セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行し、
前記セキュア実行部において、
復号処理部が、前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号し、
演算実行部が、前記モデル情報を使って前記対象演算を実行し、
改ざん検知部が、前記暗号化されたモデル情報が改ざん情報であるか判定し、
出力制御部が、前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す
情報処理方法であって、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理部は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行部は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知部は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理方法。
【請求項4】
前記出力制御部は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項3に記載の情報処理方法。
【請求項5】
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行処理と共に、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行処理として、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理と、
前記モデル情報を使って前記対象演算を実行する演算実行処理と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知処理と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御処理と、
をコンピュータに実行させるための情報処理プログラムであって、
前記対象演算は、実行順序が決められた複数の演算関数に対する演算を含み、
前記暗号化されたモデル情報は、前記複数の演算関数のそれぞれの暗号化されたパラメータと、暗号化されたモデル構成情報と、を含み、
前記復号処理は、各演算関数の暗号化されたパラメータから各演算関数のパラメータを復号し、
前記演算実行処理は、前記実行順序にしたがって、各演算関数のパラメータを使って各演算関数を演算し、
前記改ざん検知処理は、前記実行順序にしたがって、各演算関数の演算と並列に又は各演算関数の演算と並行に、各演算関数の暗号化されたパラメータを使って計算処理を実行することによって、前記暗号化されたモデル情報が前記改ざん情報であるか判定し、
前記計算処理は、前記暗号化されたモデル構成情報の認証タグを暫定認証タグとして生成し、前記実行順序にしたがって各演算関数の暗号化されたパラメータを使って、生成した前記暫定認証タグの更新を行い、更新後の前記暫定認証タグを用いて検証用認証タグを生成し、前記検証用認証タグを参照用認証タグと照合して前記暗号化されたモデル情報が前記改ざん情報であるか判定する処理である
情報処理プログラム。
【請求項6】
前記出力制御処理は、前記暗号化されたモデル情報が前記改ざん情報であると判定された場合に、改ざん通知を前記アプリケーションに渡す
請求項5に記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、学習モデルのモデル情報のための秘匿と改ざん検知に関するものである。
【背景技術】
【0002】
機械学習によって得られる学習モデルについて、アーキテクチャとパラメータといったモデル情報を秘匿することが望まれている。また、モデル情報が改ざんされた場合に改ざんを検知することが望まれている。
【0003】
非特許文献1は、学習モデル情報の秘匿を実現するための方法を開示している。この方法では、実行環境が仮想的に分離され、セキュアな実行環境(セキュアOS、トラステッドOS)でのみ、暗号化された学習モデル情報が復号され、機械学習の演算が実行される。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Peter M. VanNostrandら著、「ConfidentialDeep Learning:Executing Proprietary Modelson Untrusted Devices」arXiv、2019年8月28日発行
【発明の概要】
【発明が解決しようとする課題】
【0005】
非特許文献1の方法では、学習モデル情報の秘匿のみが実現され、改ざん検知が実現されない。
【0006】
本開示は、学習モデルのモデル情報の秘匿と学習モデル情報の改ざん検知とを実現することを目的とする。
【課題を解決するための手段】
【0007】
本開示の情報処理装置は、
リッチオペレーティングシステムを実行しながらアプリケーションを実行するリッチ実行部と、
セキュアオペレーティングシステムを実行しながら、学習モデルに基づく演算である対象演算を実行するセキュア実行部と、
を備える。
前記セキュア実行部は、
前記アプリケーションから前記対象演算の実行が要求された場合に、前記学習モデルの暗号化されたモデル情報からモデル情報を復号する復号処理部と、
前記モデル情報を使って前記対象演算を実行する演算実行部と、
前記暗号化されたモデル情報が改ざん情報であるか判定する改ざん検知部と、
前記暗号化されたモデル情報が前記改ざん情報でないと判定された場合に、前記対象演算の実行結果を前記アプリケーションに渡す出力制御部と、
を備える。
【発明の効果】
【0008】
本開示によれば、学習モデルのモデル情報の秘匿と学習モデル情報の改ざん検知とを実現することができる。
【図面の簡単な説明】
【0009】
図1】実施の形態1における情報処理装置100の構成図。
図2】実施の形態1における情報処理方法のフローチャート。
図3】実施の形態1における情報処理方法のフローチャート。
図4】実施の形態2における情報処理装置100の構成図。
図5】実施の形態2における情報処理方法のフローチャート。
図6】実施の形態2における情報処理方法のフローチャート。
図7】実施の形態2におけるGCMの適用例を示す図。
図8】実施の形態2における3層ニューラルネットワークに対するGCMの適用例を示す図。
図9】実施の形態における情報処理装置100のハードウェア構成図。
【発明を実施するための形態】
【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の要素である「部」は、「処理」、「工程」、「回路」または「サーキットリ」と読み替えてもよい。
【符号の説明】
【0080】
100 情報処理装置、101 プロセッサ、102 メモリ管理ユニット、103 リッチメモリ、104 ストレージ、105 セキュアメモリ、109 処理回路、110 リッチ実行部、111 アプリケーション、120 セキュア実行部、121 演算実行部、122 復号処理部、123 改ざん検知部、124 出力制御部、125 ストレージ参照部、130 モニタ部、131 切替部、191 学習モデル情報、192 参照用認証タグ、193 暗号鍵。
【要約】
リッチ実行部(110)は、リッチOSを実行しながらアプリケーション(111)を実行する。セキュア実行部(120)は、セキュアOSを実行しながら、学習モデルに基づく演算である対象演算を実行する。復号処理部(122)は、アプリケーションから対象演算の実行が要求された場合に、学習モデルの暗号化されたモデル情報からモデル情報を復号する。演算実行部(121)は、モデル情報を使って対象演算を実行する。改ざん検知部(123)は、暗号化されたモデル情報が改ざん情報であるか判定する。出力制御部(124)は、暗号化されたモデル情報が改ざん情報でないと判定された場合に、対象演算の実行結果をアプリケーションに渡す。
図1
図2
図3
図4
図5
図6
図7
図8
図9