以下、本発明をその実施の形態を示す図面に基づいて詳述する。
(実施の形態1)
図1は、IoTシステムの構成例を示すブロック図である。本実施の形態では、IoT端末であるデバイス1に機械学習の成果物である推論モデル121をインストールし、デバイス1が推論モデル121を利用して、入力データから適切な出力データを推論する推論処理を行う形態について述べる。なお、本明細書において「推論」とは機械学習結果を利用した処理全般を表す文言として用い、「推論モデル」とは機械学習により生成された学習済みモデルを表す文言として用いる。
IoTシステムは、デバイス1と、サーバ3とを有する。デバイス1は、インターネットであるネットワークNに接続された電子機器であり、例えば監視カメラ、車両に搭載されたECU(Electronic Control Unit)、生産設備やインフラ設備の異常監視装置等、種々の機器であり得る。本実施の形態においてデバイス1は監視カメラであるものとして説明する。
サーバ3は、デバイス1の動作状況を管理する管理装置であり、ネットワークNを介して複数のデバイス1に通信接続されている。本実施の形態では、サーバ3が機械学習を行って推論モデル121を生成し、生成した推論モデル121のデータ(図1に示す推論モデル用パラメータ281)をデバイス1に配信する。デバイス1は、当該データに基づいて推論モデル121を自装置のメモリ上に展開し、推論処理を行う。例えばデバイス1が監視カメラである場合、デバイス1は撮像画像に含まれる物体が何であるかを推論(推定)し、推論結果を外部に通知する。
また、サーバ3は、自装置と推論モデル121のデータを同期する各デバイス1の情報を収集し、データベース上で管理する。なお、本実施の形態ではデバイス1側での処理について説明し、サーバ3の処理内容については実施の形態4以降で詳述する。
デバイス1は、デバイス本体10と、セキュアエレメント(セキュアなユニット、セキュア部)20とを有する。デバイス本体10は、SoC(System on Chip)により構成され、デバイス1の多く又は全部の機能を実現するデバイス1の本体部分である。セキュアエレメント20は、デバイス本体10とは分離されたハードウェアであり、外部からの物理的又は論理的な攻撃に対して耐タンパ性を有するチップである。セキュアエレメント20は内部に不揮発性メモリを有し、データを安全に保管する。なお、セキュアエレメント20はUICC(Universal Integrated Circuit Card)のように、デバイス1に対して着脱自在な構成であってもよい。デバイス本体10及びセキュアエレメント20は、例えばISO(International Organization Standardization)7816、SPI(Serial Peripheral Interface)等の規格で相互に接続されている。
デバイス本体10は、制御部11、記憶部12、入出力I/F13、通信部14、入力部15、及び撮像部16を備える。
制御部11は、一又は複数のCPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等の演算処理装置を有し、記憶部12に記憶されたプログラムP1を読み出して実行することにより、デバイス1に係る種々の情報処理、制御処理を行う。記憶部12は、RAM(Random Access Memory)、ROM(Read Only Memory)等を有し、制御部11が演算処理を実行するために必要なプログラムP1、その他のデータを記憶する。また、記憶部12は、後述するように、セキュアエレメント20に格納された推論モデル用パラメータ281に基づき構築した推論モデル121を記憶する。
入出力I/F13は、セキュアエレメント20と情報の入出力を行うためのインターフェイスであり、上述の如く、ISO7816、SPI等の規格で情報の入出力を行う。通信部14は、インターネット通信に関する処理を行うための処理回路、アンテナ等を含み、ネットワークNを介してサーバ3等と情報の送受信を行う。入力部15は、ユーザから情報の入力を受け付ける入力インターフェイスであり、デバイス1の種類に応じて、例えばメカニカルキー、タッチパネル、音声入力マイク等、種々の形態であり得る。撮像部16は、CMOS(Complementary Metal Oxide Semiconductor)センサ等を有する撮像機構であり、画像の撮像を行う。
セキュアエレメント20は、読出部21、スクランブル部22、乱数発生器23、デスクランブル部24、照合部25、計数部26、入出力I/F27、記憶部28を備える。
読出部21は、記憶部28からデータを読み出してデバイス本体10に出力する。入出力I/F27は、デバイス本体10の入出力I/F13との間でデータの入出力を行う。記憶部28は不揮発性メモリであり、後述するように、デバイス本体10が推論モデル121を展開するために必要な推論モデル用パラメータ281を記憶している。
スクランブル部22は、記憶部28に記憶してある推論モデル用パラメータ281をスクランブル化するスクランブル処理を実行する。乱数発生器23は、スクランブルに用いる乱数値を生成する。デスクランブル部24は、スクランブル化された推論モデル用パラメータ281を復号するデスクランブル処理を実行する。照合部25は、後述するように、推論モデル用パラメータ281のスクランブルが正しく解除されたか否かを検証するため、スクランブル解除後、当該パラメータに予め付加されているCRC(Cyclic Redundancy Check)値を照合する処理を行う。計数部26は、デスクランブル部24によるパラメータのスクランブル解除回数をカウントする。
サーバ3は、制御部31、主記憶部32、通信部33、及び補助記憶部34を備える。
制御部31は、一又は複数のCPU、MPU等の演算装置を備え、サーバ3に係る種々の情報処理、制御処理を行う。主記憶部32は、RAM等の揮発性メモリであり、制御部31が処理を実行する上で必要なデータを一時的に記憶する。通信部33は、通信に関する処理を行う処理回路等を有し、ネットワークNを介してデバイス1等と通信を行う。
補助記憶部34は、大容量メモリ、ハードディスク等であり、サーバ3が処理を行うために必要なプログラムP2、その他のデータを記憶している。また、補助記憶部34は、推論モデル用パラメータ281及びデバイスDB341を記憶している。推論モデル用パラメータ281は、デバイス1に配信する最新の推論モデル121のデータであり、デバイス1が推論モデル121を展開する上で必要なパラメータである。デバイスDB341は、サーバ3と推論モデル121のデータを同期する各デバイス1を管理するためのデータベースである。
なお、補助記憶部34はサーバ3に接続された外部記憶装置であってもよい。また、サーバ3は複数のコンピュータからなるマルチサーバであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよい。
図2は、推論モデル121の展開処理における処理動作を示す説明図である。図2では、デバイス本体10がセキュアエレメント20から推論モデル用パラメータ281を読み出し、当該パラメータに基づいて推論モデル121をメモリ上に展開する様子を概念的に図示している。
上述の如く、セキュアエレメント20は記憶部28に、機械学習により生成された推論モデル121を展開するための推論モデル用パラメータ281を記憶している。本実施の形態において推論モデル121は、ディープラーニングにより生成されたニューラルネットワークであるものとして説明する。なお、機械学習のアルゴリズムはディープラーニングに限定されるものではなく、例えば回帰法、決定木学習、ベイズ法、クラスタリング等であってもよく、また、推論モデル121はニューラルネットワークに限定されるものではなく、線形モデル、決定木、ベイジアンネットワーク等であってもよい。
例えばサーバ3は、定期的に推論モデル121のアップデート(学習)を行い、最新の推論モデル用パラメータ281をデバイス1に配信する。デバイス1は、サーバ3から配信された推論モデル用パラメータ281をセキュアエレメント20に格納しておく。なお、機械学習は、パラメータの配信元であるサーバ3が主体となって行うものでもよく、他のコンピュータが機械学習を行って学習結果をサーバ3に保存しておいてもよい。
推論モデル用パラメータ281は、ハイパーパラメータ281a(図3参照)と、学習パラメータ281b(図4参照)とから成るデータ群である。ハイパーパラメータ281aは、コンピュータに機械学習を行わせるために手動設定される設定値であり、推論モデル121の基本構造を一意に特定可能なパラメータである。学習パラメータ281bは、ハイパーパラメータ281aで規定されるネットワーク構造の下、機械学習によりコンピュータが学習した学習値である。サーバ3は、正解値付きの教師データの入力を受け、各ニューロンに適用する学習パラメータ281bを学習する。なお、各パラメータの詳細については後述する。
なお、機械学習は教師なし学習、半教師学習等であってもよい。また、機械学習は強化学習であってもよく、この場合、推論モデル用パラメータ281はQ値(Q(s,a);sは状態、aは行動)であってもよい。
図2において符号P1〜P8で示す処理プロセスについて、順に説明する。なお、初期段階でデバイス本体10には推論モデル121が未展開であるものとする。
例えばデバイス1の起動時、又は推論を伴うアプリケーションの動作開始時等に、デバイス本体10の制御部11は、セキュアエレメント20に対して推論モデル用パラメータ281の読み出しを要求する(P1)。
読出要求を受け付けた場合、セキュアエレメント20の読出部21は、記憶部28から推論モデル用パラメータ281を読み出す(P2)。具体的には、読出部21は上記のハイパーパラメータ281a及び学習パラメータ281bを読み出す。
読出部21は、読み出した推論モデル用パラメータ281をスクランブル部22に出力し、パラメータのスクランブル化を要求する(P3)。具体的には、読出部21は、後述するようにハイパーパラメータ281aで基本構造が決定される推論モデル121に対して適用する学習パラメータ281bのスクランブル化を要求する。
スクランブル化の要求を受け付けた場合、スクランブル部22は記憶部28から、固有ID282及びスクランブル鍵283を取得する(P4)。固有ID282は、個々のデバイス1に搭載されているセキュアエレメント20に固有の個体識別情報であり、例えば製造番号等、同種のセキュアエレメント20であっても個体によって別々に割り当てられた識別情報である。なお、固有IDは個体に応じて異なる固有の情報であればよく、例えばセキュアエレメント20ではなくデバイス1自体の製造番号等であってもよい。
スクランブル鍵283は、スクランブル化に用いる鍵値であり、例えば共通鍵方式の共通鍵、公開鍵方式の公開鍵等の秘密の固定値である。スクランブル鍵283は、全てのデバイス1のセキュアエレメント20において共通としても良いが、固有ID282に紐付かせ、個体毎に個別化すると好適である。本実施の形態では、スクランブル鍵283はセキュアエレメント20毎に異なるものとする。
また、スクランブル部22は、乱数発生器23から乱数値を取得する(P5)。
スクランブル部22は、取得した固有ID282、スクランブル鍵283、及び乱数値に基づいてマスク値を演算し、演算したマスク値を用いて推論モデル用パラメータ281のスクランブル化を行う。具体的には、スクランブル部22は、推論モデル用パラメータ281のうち、学習パラメータ281bのスクランブル値を演算する。学習パラメータ281bのスクランブル化について、詳細は後述する。スクランブル部22は、スクランブル化されていない平文のハイパーパラメータ281aと、スクランブル化された学習パラメータ281bとを含む推論モデル用パラメータ281を、デバイス本体10に出力する(P6)。また、スクランブル部22は、スクランブル時に用いたマスク値を記憶部28に保存しておく(P7)。
推論モデル用パラメータ281を取得した場合、デバイス本体10の制御部11は、当該パラメータに基づいて、メモリ(記憶部12)上に推論モデル121を展開する(P8)。具体的には以下に説明するように、制御部11は、ハイパーパラメータ281aに基づいて推論モデル121の基本構造を決定し、基本構造を決定した推論モデル121に対して学習パラメータ281bのスクランブル値を適用することで、演算処理内容を暗号化した推論モデル121のモデルデータを構築する。
図3は、推論モデル121の基本構造に関する説明図である。図3の上側に示す表は、ハイパーパラメータ281aの一例である。例えば図3に示すように、推論モデル121がニューラルネットワークである場合、ハイパーパラメータ281aは、各ニューロン層に入力される入力数、各ニューロン層から出力される出力数、ニューロン間の層間結合、各ニューロンの演算処理に用いられる活性化関数等が該当し、ニューロン層毎に構造を一意に特定可能なように規定されている。
図3では、ハイパーパラメータ281aに基づいてニューラルネットワークの基本構造を決定する様子を概念的に図示している。図3の例では、第0層(入力層)の入力数は「3」に規定されているため、デバイス本体10の制御部11は、入力値x0〜x2を想定する。また、第0層の出力数は「3」であるため、制御部11は、ニューロンを3つ配置する。また、層間結合は「全結合」であるため、制御部11は、第0層の全てのニューロンの出力値を、次の層(第1層)の全てのニューロンに対して入力する。さらに、第0層の活性化関数はReLU(Rectified Linear Unit)で定義されているため、制御部11は、第0層の各ニューロンにおいて、ReLU関数を用いて出力値を演算する。
以下同様にして、制御部11は、各ニューロン層における構造を決定する。これによって制御部11は、図3に示すように、入力から出力に至るニューラルネットワークの基本構造を決定する。
図4は、学習パラメータ281bのスクランブル化及び推論モデル121への適用処理を説明するための説明図である。図4では、セキュアエレメント20が学習パラメータ281bのスクランブル値を演算すると共に、スクランブル化されたパラメータを推論モデル121に適用することで、演算内容を暗号化したモデルデータを展開する様子を図示している。なお、図4では簡潔のため、第0〜3層のニューロン層からなるニューラルネットワークのうち、第0層の部分についてのみ図示してある。
図4の右側中段に示す表は、ニューラルネットワークに適用される学習パラメータ281bの一例である。例えば推論モデル121がニューラルネットワークである場合、学習パラメータ281bは、各ニューロンに入力される入力値に対して乗算される重み付け係数、各ニューロンにおいて演算を行う際に加えられるバイアス値等が該当する。なお、図4に示す学習パラメータ281bの表において、「0」〜「2」の縦列に示す値は重み付け係数であり、「bias」の縦列に示す値はバイアス値であり、「CRC」の列に示す値は、学習パラメータ281bに付加されているCRC値である。CRC値については後述する。本実施の形態において学習パラメータ281bは、16ビットの半精度浮動小数点数で表現されている。
まず、セキュアエレメント20によるスクランブル処理について説明する。セキュアエレメント20は、上述の如く、固有ID282、スクランブル鍵283、及び乱数値に基づいてマスク値を計算し、当該マスク値に基づいて学習パラメータ281bをスクランブル値に変換する。例えばセキュアエレメント20は、乱数発生器23が生成した16バイトの乱数値と、同じく16バイトで規定されている固有ID282とを連結し、16バイトのスクランブル鍵283を用いて連結値からマスク値を計算する。例えばセキュアエレメントは、HMAC−SHA256の関数を用いてMAC値を計算し、計算したMAC値をマスク値とする。
セキュアエレメント20は、マスク値を10バイト毎に分割した後、分割したマスク値と、半精度浮動小数点で表現された学習パラメータ281bとの排他的論理和演算を行って、スクランブル値(図4右上の表参照)を計算する。なお、セキュアエレメント20は、学習パラメータ281bに付加されているCRC値もスクランブル値に変換する。
なお上記では排他的論理和演算を用いて学習パラメータ281bのスクランブル化を行っているが、本実施の形態はこれに限定されるものではない。例えばセキュアエレメント20は、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等の共通鍵暗号方式、あるいはRSA、ECC(Elliptic Curve Cryptography;楕円曲線暗号)等の公開鍵暗号方式を用いてスクランブル処理を行ってもよい。なお、鍵値は上記のマスク値と同様、セキュアエレメント20内部で生成して使用すればよい。このように、セキュアエレメント20は学習パラメータ281bを解析困難なようにスクランブル化することができればよく、論理演算以外の手法でスクランブル処理を行ってもよい。
次に、デバイス本体10におけるスクランブル値の適用処理について説明する。セキュアエレメント20は、上記のようにして計算したスクランブル値をデバイス本体10に出力する。デバイス本体10は、セキュアエレメント20から取得した学習パラメータ281bのスクランブル値を、本来の学習パラメータ281bを適用すべきニューラルネットワーク上の適用箇所にそのまま適用していく。例えば第0層でニューロン番号が「0」のニューロンについて考えた場合、デバイス本体10は、0番目のニューロンに入力される入力値x0〜x2の重み付け係数として、セキュアエレメント20が演算した重み付け係数のスクランブル値を、元のパラメータに復号することなく、そのまま設定する。また、デバイス本体10は、当該ニューロンにおいて演算時に用いるバイアス値として、セキュアエレメント20が演算したバイアス値のスクランブル値をそのまま設定する。これにより、図4左上に示すように、本来設定されるべき学習パラメータ281b(図4右下の表参照)に代えて、当該パラメータをスクランブル化したパラメータ(図4右上の表参照)が0番目のニューロンに対して設定される。デバイス本体10は、第0層の1番目、2番目のニューロン、及び第1〜3層のニューロンについても同様に、学習パラメータ281bのスクランブル値を設定していく。
なお、デバイス本体10は重み付け係数やバイアス値と同様にして、各ニューロンに対応付けてCRC値(のスクランブル値)を推論モデル121上に格納しておく。後述するように、デバイス本体10は学習パラメータ281bのスクランブル解除をセキュアエレメント20に要求する場合、CRC値も併せてセキュアエレメント20に受け渡し、セキュアエレメント20は、CRC値も復号する。
上記により、デバイス1は、学習パラメータ281bがスクランブル化された推論モデル121をメモリ上に展開する。この状態でデバイス1のメモリダンプを行っても、推論モデル121を構築可能な学習パラメータ281bを搾取することができない。これによって、安全性が確保される。
一方で、このままでは推論処理自体を実行できないため、デバイス1は、推論処理を実行する場合に学習パラメータ281bのスクランブルを解除(デスクランブル)することで、搾取に備えつつ演算を行う。具体的には、デバイス1は、演算対象とするニューロンに適用してあるスクランブル値を逐次セキュアエレメント20に出力し、セキュアエレメント20にスクランブルの解除を実行させ、スクランブルが解除された学習パラメータ281bを元のニューロンに適用する。これにより、デバイス1は推論モデル121を演算可能な状態にし、演算を行う。
図5は、推論処理に関する説明図である。図5では、デバイス本体10が推論モデル121に基づく推論処理を実行する際に、セキュアエレメント20が学習パラメータ281bのスクランブルを解除し、解除したパラメータをデバイス本体10に返送して、デバイス本体10が演算を行う様子を概念的に図示している。図5では、図4と対比する形で、第0層(入力層)のニューロンに適用されている学習パラメータ281bのスクランブルを解除する様子を図示している。
図5において符号P21〜P28で示す処理プロセスについて、順に説明する。まずデバイス本体10の制御部11は、推論を行うニューロン層の入力値を用意する(P21)。図5の例は入力層であるため、推論対象とする入力データのパラメータを用意する。例えばデバイス1が監視カメラである場合、デバイス本体10は、撮像部16で撮像した画像を入力データとして取得し、当該画像データのパラメータ(例えば画素値)を入力値x0〜x2として準備する。
制御部11は、演算を行う層における一のニューロンについて、当該ニューロンに適用されているスクランブル値を抽出する(P22)。図5の例では、制御部11は、まず第0層の0番目のニューロンに設定してあるスクランブル値を抽出する。具体的には、制御部11は、入力値x0〜x2を0番目のニューロンに入力する際に乗算される重み付け係数、0番目のニューロンにおいて演算を行う際のバイアス値、及び当該ニューロンと対応付けて格納されているCRC値について、各々のパラメータのスクランブル値を抽出する。
制御部11は、抽出した学習パラメータ281bのスクランブル値を、スクランブル解除対象とする学習パラメータ281bを特定可能な特定情報と共にセキュアエレメント20へ出力し、スクランブルの解除を要求する(P23)。特定情報は、推論モデル121における学習パラメータ281bの適用箇所を示す情報であり、推論モデル121がニューラルネットワークである場合、学習パラメータ281bが適用されているニューロンの層番号、ニューロン番号等の情報である。図5の例の場合、制御部11は、第0層の0番目のニューロンが解除対象である旨の情報を出力する。後述するように、セキュアエレメント20がスクランブル解除に用いるマスク値を特定可能なように、デバイス本体10は、学習パラメータ281bのスクランブル値と共に特定情報を出力する。
解除要求を受け付けた場合、まずセキュアエレメント20の計数部26が、スクランブル解除回数(デスクランブルの実行回数)をカウントし、解除回数が一定回数に達していないか否かを確認する(P24)。例えば計数部26は、スクランブル解除の残回数を保持しており、デバイス本体10からの要求に応じて解除を試行する度に、残回数をデクリメントする。そして計数部26は、残回数が0になっていないかを確認する。残回数が0になった場合、セキュアエレメント20は以降の処理を行わず、スクランブルを解除しない。これにより、外部からの不正なスクランブル解除の試行を抑止することができる。
解除回数が一定回数に達していない場合、セキュアエレメント20は、デバイス本体10から取得した特定情報を参照して、スクランブル解除に必要なマスク値を特定する(P25)。図5の例では、第0層の0番目のニューロンであることから、セキュアエレメント20は、第0層の0番目のニューロンの学習パラメータ281bをスクランブル化した際に用いたマスク値を、記憶部28に記憶してあるマスク値から特定する。このように、セキュアエレメント20は、学習パラメータ281bをスクランブル化した際に用いたマスク値、つまり学習パラメータ281bのスクランブル解除に必要なデータを特定する。
セキュアエレメント20のデスクランブル部24は、デバイス本体10から取得したスクランブル値に対し、上記で特定したマスク値を適用して、スクランブルが解除された平文の学習パラメータ281bを取得する(P26)。例えばデスクランブル部24は、上述の重み付け係数、バイアス値、及びCRC値のスクランブルを解除する。
セキュアエレメント20の照合部25は、スクランブル解除後の学習パラメータ281bからCRC値を計算し、スクランブルを解除することで取得したCRC値と照合する(P27)。CRC値は、上述の如く学習パラメータ281bに予め付加された検査値であり、学習パラメータ281bの改竄検知用に付加されたパラメータである。照合部25は、デスクランブル部24がスクランブルを解除した重み付け係数及びバイアス値から、CRC値を計算する。また、CRC値は、重み付け係数やバイアス値と同様にスクランブル化した上で推論モデル121に格納されており、デスクランブル部24は、CRC値についてもスクランブルの解除を行っている。照合部25は、スクランブル解除後にCRC値を除く学習パラメータ281bから計算したCRC値と、スクランブル解除により得たCRC値との比較を行い、両者が一致するか否かを確認する。このように、CRC値のようなパラメータを付加しておき、スクランブル解除後に検算を行うことで、学習パラメータ281bが第三者によって改竄されている事態を検知することができる。
CRC値が一致しない場合、セキュアエレメント20は、学習パラメータ281bが改竄されているものと判断する。セキュアエレメント20は、スクランブル解除が失敗した旨をデバイス本体10に通知し、推論を実行させない。CRC値が一致する場合、セキュアエレメント20は、学習パラメータ281bをデバイス本体10に出力する(P28)。
セキュアエレメント20から学習パラメータ281bが返送された場合、デバイス本体10の制御部11は、スクランブル解除後の学習パラメータ281bを推論モデル121に適用し、出力値を演算する(P29)。図5の例の場合、制御部11は第0層の0番目のニューロンに対して学習パラメータ281bを設定し、入力値x0〜x2を当該ニューロンに入力する。制御部11は演算を行い、当該ニューロンから次のニューロン層(第1層)に出力する出力値を演算する。
一のニューロン(上記では0番目のニューロン)において演算が終了した場合、制御部11は、当該ニューロンの学習パラメータ281bを再び演算不可能な状態に戻す。例えば制御部11は、演算終了後にセキュアエレメント20に対して再スクランブルを要求し、適用されているパラメータをスクランブル値に戻す。また、例えば制御部11は、学習パラメータ281bを一旦破棄し、一連の推論処理が終了後にセキュアエレメント20からスクランブル値を取得して推論モデル121に再設定するようにしてもよい。
デバイス1は、第0層の1番目、2番目のニューロンについても順次パラメータのスクランブルを解除し、出力値を演算していく。第0層の演算が完了後、デバイス1は第1層、第2層についても同様にスクランブル解除を行い、出力層(第3層)の最後のニューロンまで演算を繰り返す。これにより、デバイス1は最終的な出力値y0〜y2を得て、推論モデル121による推論を完了する。例えばデバイス1は、画像内に含まれる物体が、機械学習時にその特徴量を学習した特定の物体である確率を示す値を出力値として演算し、特定の物体が撮像されたか否かを推論(推定)して、推論結果を出力する。
なお、上記ではニューロン単位で学習パラメータ281bのデスクランブル及び演算を行っているが、例えば層単位で一度にスクランブルを解除して演算を行う等してもよい。つまり、デバイス1はニューラルネットワーク上の所定区分毎にデスクランブルを実行することができればよく、個々のニューロン単位でデスクランブルを実行せずともよい。
図6は、デバイス1が実行する処理手順の一例を示すフローチャートである。図6に基づき、デバイス1が実行する全般的な処理内容について説明する。
デバイス1は、セキュアエレメント20から推論モデル用パラメータ281を読み出し、メモリ(記憶部12)上に推論モデル121を展開する処理を実行する(ステップS11)。具体的には、デバイス1はセキュアエレメント20から、平文のハイパーパラメータ281aと、学習パラメータ281bのスクランブル値とを取得する。デバイス1は、ハイパーパラメータ281aに基づいて推論モデル121の基本構造を決定し、当該推論モデルに対して学習パラメータ281bのスクランブル値を適用することで、演算内容を暗号化した推論モデル121を構築する。
デバイス1は、推論モデル121に基づく推論処理を実行する(ステップS12)。具体的には、デバイス本体10はセキュアエレメント20に対して学習パラメータ281bのスクランブル解除を要求し、当該要求に対してセキュアエレメント20は学習パラメータ281bのデスクランブルを行う。デバイス本体10は、セキュアエレメント20から返送された学習パラメータ281bを推論モデル121に適用し、推論に係る演算処理を実行する。デバイス1は、一連の処理を終了する。
図7は、モデル展開処理のサブルーチンの一例を示すフローチャートである。図7に基づき、ステップS11のモデル展開処理について説明する。
デバイス本体10の制御部11は、セキュアエレメント20に対し、推論モデル121を展開するために必要な推論モデル用パラメータ281の出力を要求する(ステップS31)。パラメータの出力要求を受け付けた場合、セキュアエレメント20は、記憶部28に記憶してある推論モデル用パラメータ281を読み出す(ステップS32)。具体的には、セキュアエレメント20は、推論モデル121の基本構造を一意に特定可能なハイパーパラメータ281aと、ハイパーパラメータ281aで規定するモデル構造の下で、コンピュータ(サーバ3)が機械学習により学習した学習パラメータ281bとを読み出す。
セキュアエレメント20は、読み出したパラメータをスクランブル部22に入力し、当該パラメータのスクランブル化を行う(ステップS33)。具体的には、セキュアエレメント20は、推論モデル用パラメータ281のうち、学習パラメータ281bのスクランブル値を演算する。例えばセキュアエレメント20は、セキュアエレメント20に固有の個体識別情報である固有ID282と、個々のセキュアエレメント20に応じて個別化されているスクランブル鍵283と、セキュアエレメント20内の乱数発生器23で生成した乱数とに基づき、スクランブル用のマスク値を計算する。セキュアエレメント20は、当該マスク値を学習パラメータ281bに適用し、スクランブル値を計算する。セキュアエレメント20は、計算したスクランブル値をデバイス本体10に出力する(ステップS34)。より詳しくは、セキュアエレメント20は、平文のハイパーパラメータ281aと、学習パラメータ281bのスクランブル値とを出力する。
セキュアエレメント20から推論モデル用パラメータ281が出力された場合、デバイス本体10の制御部11は、ハイパーパラメータ281aに基づいて推論モデル121の基本構造を決定する(ステップS35)。制御部11は、基本構造を決定した当該推論モデル121に対し、学習パラメータ281bのスクランブル値を適用する(ステップS36)。これにより、制御部11は推論モデル121を展開する。制御部11は、サブルーチンをリターンする。
図8は、推論処理のサブルーチンの一例を示すフローチャートである。図8に基づき、ステップS12の推論処理のサブルーチンについて説明する。
デバイス本体10の制御部11は、推論モデル121に入力する入力値を取得する(ステップS51)。例えばデバイス1が監視カメラである場合、制御部11は、撮像部16で撮像した画像のパラメータを入力値として用意する。制御部11は、当該入力値の入力対象であるニューロンに適用されている学習パラメータ281bのスクランブル値を、推論モデル121から抽出する(ステップS52)。制御部11は、抽出したスクランブル値と、該スクランブル値に係る学習パラメータ281bを特定する特定情報とをセキュアエレメント20へ出力する(ステップS53)。特定情報は、推論モデル121において学習パラメータ281bが適用される適用箇所を示す情報であり、推論モデル121がニューラルネットワークである場合、学習パラメータ281bを適用するニューロンを示す情報である。
スクランブル値及び特定情報をデバイス本体10から取得した場合、セキュアエレメント20は、デスクランブルの実行回数(解除回数)をカウントする(ステップS54)。セキュアエレメント20は、実行回数が一定回数に達したか否かを判定する(ステップS55)。一定回数に達していないと判定した場合(S55:NO)、セキュアエレメント20は特定情報を参照して、学習パラメータ281bのスクランブル化を行った際に用いたマスク値を特定する(ステップS56)。マスク値は、学習パラメータ281bのデスクランブルに必要なデータであり、上記のように、デバイス1の固有ID282、乱数値、及びスクランブル鍵283から生成されたデータである。
セキュアエレメント20は、マスク値を用いて学習パラメータ281bのデスクランブルを実行する(ステップS57)。セキュアエレメント20は、学習パラメータ281bに付加してある検査値の照合を行う(ステップS58)。当該検査値は、学習パラメータ281bの改竄を検知するために付加してあるパラメータであり、例えば学習パラメータ281bから計算されたCRC値である。セキュアエレメント20は、デスクランブル後の学習パラメータ281bから抽出したCRC値が、CRC値を除くデスクランブル後の学習パラメータ281bから計算したCRC値と一致したか否かを判定する(ステップS59)。
デスクランブルの実行回数が一定回数に達したと判定した場合(S55:YES)、又は検査値が一致しないと判定した場合(S59:NO)、セキュアエレメント20は、デスクランブルに失敗した旨をデバイス本体10に通知する(ステップS60)。当該通知を受けた場合、デバイス本体10の制御部11は、推論モデル121に基づく処理動作を停止し(ステップS61)、サブルーチンをリターンする。
検査値が一致したと判定した場合(S59:YES)、セキュアエレメント20は、デスクランブルを行った学習パラメータ281bをデバイス本体10に出力する(ステップS62)。デバイス本体10の制御部11は、ステップS53の出力要求に対してセキュアエレメント20から返送された当該パラメータを、推論モデル121の該当箇所に適用し、推論に係る演算処理を行う(ステップS63)。制御部11は、全ての演算が完了したか否かを判定する(ステップS64)。全ての演算が完了していないと判定した場合(S64:NO)、制御部11は、処理をステップS52に戻す。これにより、デバイス1は次の演算箇所(ニューロン)についてスクランブル値を解除し、演算を進めていく。全ての演算が完了したと判定した場合(S64:YES)、制御部11は、推論結果を出力し(ステップS65)、サブルーチンをリターンする。
なお、上記では全ての推論モデル用パラメータ281をセキュアエレメント20に格納し、デバイス本体10は全ての推論モデル用パラメータ281をセキュアエレメント20から読み出して推論モデル121を構築することとした。一方で、例えばスクランブル対象である学習パラメータ281bのみをセキュアエレメント20に格納し、ハイパーパラメータ281aはデバイス本体10に予めセットする等、推論モデル用パラメータ281を一部だけセキュアエレメント20に用意するようにしてもよい。
また、上記では別段説明しなかったが、例えばニューロン層毎に異なる乱数値を用いてマスク値を計算するなど、マスク値の計算方法については種々の応用が考えられる。
また、スクランブル解除回数の管理についても種々の応用が考えられる。例えば推論処理が完了した場合に解除回数をリセットする、ニューロン層毎に解除回数をカウントする等、運用形態に応じて変更が考えられる。
また、例えばセキュアエレメント20は、上記でカウントしたスクランブルの解除回数(デスクランブルの実行回数)をサーバ3へ通知し、サーバ3で個々のデバイス1における解除回数を管理するようにしてもよい。例えばセキュアエレメント20は、推論処理の実行完了後、カウントした解除回数を、自身の固有ID282と共にサーバ3へ通知する。サーバ3は、固有ID282と対応付けて、通知された解除回数をデバイスDB341に記憶する。これにより、サーバ3は個々のデバイス1における推論回数を遠隔監視することができる。
また、上記では、スクランブル解除回数が一定回数に達した場合は以降の推論処理を行わないこととしている。つまり、残回数が0となった場合は推論処理を実行できない。この場合、例えばデバイス1はサーバ3と通信を行って、スクランブル解除回数を制限回数(上限数)にリセットすると共に、サーバ3から最新の推論モデル121のパラメータを取得し、推論モデル121を更新するようにしてもよい。例えばサーバ3は、デバイス1から残回数が0になった旨の通知を受けた場合、所定の認証処理(スクランブル鍵283を用いた暗号認証等)を行ってデバイス1の正当性を確認した後、最新の推論モデル用パラメータ281を配信すると共に、解除回数をリセットするよう指示する。これにより、不正なスクランブル解除の試行を抑止しつつ、デバイス1における動作を適切に推移させることができる。
なお、例えば最新のパラメータの配信を契機として、デバイス1のユーザ宛にアップデート名目で料金を請求する処理(例えばクレジットカード会社への支払請求通知等)を行ってもよい。
また、上記では最新の推論モデル用パラメータ281をデバイス1に配信することにしたが、例えば最新の推論モデル用パラメータ281を格納したセキュアエレメント20をユーザ宛に発行することで対応してもよい。つまり、何らかの手段でセキュアエレメント20内のパラメータを更新することができればよい。
以上より、本実施の形態1によれば、デバイス1は、デバイス本体10に推論モデル121の学習パラメータ281bをスクランブル化して保持しておき、デスクランブルに必要なデータはセキュアエレメント20に保持しておく。そしてデバイス1は、推論処理を行う場合に必要なデータをセキュアエレメント20から取り出し、デスクランブルした学習パラメータ281bを推論モデル121に適用して演算を行う。これにより、第三者がデバイス本体10から推論モデル121のデータを搾取しても、学習パラメータ281bはスクランブル化されているため、推論モデル121を構築できない。従って、IoT端末であるデバイス1において、機械学習結果を利用した処理を安全に実行することができる。
また、本実施の形態1によれば、デバイス本体10よりも安全なセキュアエレメント20でパラメータのデスクランブルを行うことで、安全性をより高めることができる。
また、本実施の形態1によれば、推論モデル121がニューラルネットワークである場合に、各ニューロンに適用したスクランブル値を逐次デスクランブルして処理を行っていく。これにより、全てのニューロンが同時に演算可能な状態とはならないため、パラメータ搾取に対する安全性を高めることができる。
また、本実施の形態1によれば、デスクランブル回数を制限することで、外部からの不正なデスクランブル試行を抑止することができる。
また、本実施の形態1によれば、学習パラメータ281bに付加された検査値をデスクランブル後に照合することで、デバイス本体10に展開されている推論モデル121のパラメータ改竄等を検知することができる。
また、本実施の形態1によれば、セキュアエレメント20がデスクランブルのみではなく、学習パラメータ281bのスクランブルも行うことで、推論モデル121展開時の安全性も確保することができる。
また、本実施の形態1によれば、セキュアエレメント20は、自身の固有IDを用いて学習パラメータ281bのスクランブルを行う。これにより、第三者による学習パラメータ281bの解析をより困難にすることができる。
また、本実施の形態1によれば、セキュアエレメント20内で生成した乱数値を用いてスクランブルを行う。これにより、第三者による学習パラメータ281bの解析をより困難にすることができる。
(実施の形態2)
実施の形態1では、セキュアエレメント20において学習パラメータ281bのスクランブル解除を行った。本実施の形態では、デバイス本体10においてスクランブルを解除する形態について述べる。なお、実施の形態1と重複する内容については同一の符号を付して説明を省略する。
図9は、実施の形態2に係るデスクランブル処理に関する説明図である。図9では図5と同様に、デバイス1が学習パラメータ281bのスクランブルを解除して推論モデル121に適用する様子を図示している。図9において符号P31〜P40に示す処理プロセスについて、順に説明する。
実施の形態1と同様に、デバイス本体10は、推論を行うニューロン層の入力値を用意する(P31)。また、デバイス本体10は、当該ニューロン層の一のニューロンに適用してある学習パラメータ281bのスクランブル値を抽出する(P32)。
本実施の形態においてデバイス本体10は、学習パラメータ281bのスクランブル値をセキュアエレメント20に出力せず、学習パラメータ281bの特定情報のみを出力し、当該学習パラメータ281bのスクランブル解除に必要なマスク値を出力するようセキュアエレメント20に要求する(P33)。このように、本実施の形態ではスクランブル解除に必要なマスク値の授受を行い、推論モデル121のパラメータ自体の授受は行わない。
特定情報を取得した場合、セキュアエレメント20はまず、スクランブル解除回数をカウントする(P34)。解除回数が一定回数に達していない場合、セキュアエレメント20は、特定情報に基づき、解除対象であるニューロンの学習パラメータ281bのスクランブル解除に必要なマスク値を特定する(P35)。そしてセキュアエレメント20は、当該マスク値をデバイス本体10に出力する(P36)。
なお、上記でセキュアエレメント20は、学習パラメータ281bとの論理演算(スクランブル)に用いたマスク値をデバイス本体10へ供給することにしたが、例えばマスク値の計算に用いた固有ID282、スクランブル鍵283等の情報をデバイス本体10に出力し、デバイス本体10にマスク値の計算を行わせてもよい。
セキュアエレメント20からマスク値を取得した場合、デバイス本体10の制御部11は、当該マスク値をスクランブル値に適用して、学習パラメータ281bのスクランブルを解除する(P36)。そして制御部11は、CRC値の照合を行った後(P38)、スクランブルを解除した学習パラメータ281bを対象ニューロンに適用し(P39)、出力値を演算する(P40)。
図10は、実施の形態2に係る推論処理のサブルーチンの一例を示すフローチャートである。図10に基づき、本実施の形態における推論処理の処理内容について説明する。
推論モデル121から学習パラメータ281bのスクランブル値を抽出した後(ステップS52)、デバイス1は以下の処理を実行する。デバイス本体10の制御部11は、抽出した学習パラメータ281bを特定可能な特定情報を、学習パラメータ281bのスクランブルを解除するために必要なマスク値を格納するセキュアエレメント20に出力する(ステップS201)。特定情報は、実施の形態1と同様に、例えばニューロン層の番号、各ニューロンに割り当てられたニューロン番号等である。
スクランブル解除回数をカウントし(ステップS54)、解除回数が一定回数に達していないと判定した場合(S55:NO)、セキュアエレメント20は、デバイス本体10から取得した特定情報を参照して、デバイス本体10がスクランブル解除を実行するために必要なマスク値を特定する(ステップS202)。セキュアエレメント20は、当該マスク値をデバイス本体10に出力する(ステップS203)。
セキュアエレメント20からマスク値を取得した場合、デバイス本体10の制御部11は、当該マスク値を用いて学習パラメータ281bのスクランブルを解除する(ステップ204)。制御部11は、学習パラメータ281bに付加してある検査値(CRC値)の照合を行う(ステップS205)。制御部11は、デスクランブル後の学習パラメータ281bから抽出した検査値が、CRC値を除くデスクランブル後の学習パラメータ281bから計算した検査値と一致したか否かを判定する(ステップS206)。検査値が一致しないと判定した場合(S206:NO)、制御部11は推論処理の処理動作を停止し(ステップS61)、サブルーチンをリターンする。
検査値が一致すると判定した場合(S206:YES)、制御部11は、スクランブル解除後の学習パラメータ281bを推論モデル121に適用した上で、入力値から出力値を演算する演算処理を実行する(ステップS207)。制御部11は、処理をステップS64に移行する。
なお、本実施の形態では特定情報のみをデバイス本体10からセキュアエレメント20に出力し、デバイス本体10がセキュアエレメント20からマスク値を得てデスクランブルを実行したが、本実施の形態はこれに限定されるものではない。例えばデバイス本体10は、特定情報だけでなく、解除対象である学習パラメータ281bの一部(例えばバイアス値)もセキュアエレメント20に出力し、セキュアエレメント20が当該一部のパラメータのスクランブルを解除する一方、デバイス本体10が他のパラメータ(例えば重み付け係数)のスクランブルを解除するようにしてもよい。つまり、実施の形態1及び2を組み合わせて、一部のパラメータのスクランブル解除をセキュアエレメント20で、他のパラメータのスクランブル解除をデバイス本体10で行うようにしてもよい。
以上より、本実施の形態2によれば、セキュアエレメント20ではスクランブル解除を行わず、デバイス本体10でスクランブルを解除する。従って、例えばセキュアエレメント20の計算能力が低い一方で推論を頻繁に行う場合等、よりマシンパワーの大きいデバイス本体10で解除を実施することが適切なケースに対応することができる。
上述の如く、デバイス本体10は少なくともパラメータの特定情報をセキュアエレメント20に受け渡し、セキュアエレメント20がデスクランブル対象のパラメータを特定可能であればよく、デスクランブルを実行する処理主体はデバイス本体10であってもよい。
(実施の形態3)
実施の形態1では、学習パラメータ281bのスクランブル及びデスクランブルを行う処理主体がセキュアエレメント20である場合について説明した。本実施の形態では、デバイス1において仮想的に構築されたトラステッド実行環境(TEE;Trusted Execution Environment)においてスクランブル及びデスクランブルを行う形態について説明する。
図11は、実施の形態3に係るIoTシステムの構成例を示すブロック図である。本実施の形態に係るデバイス1は、例えばTrustZone(登録商標)と称される技術を用いることによって、ソフトウェア(OS、アプケーションなど)の実行環境を、通常実行環境(REE;Rich Execution Environment)41と、トラステッド実行環境42とに分離している。
通常実行環境41は、広く一般的に利用されている汎用OS411の実行環境であり、トラステッド実行環境42へのアクセスが制限される以外に、特段の機能制約がない実行環境である。汎用OS411は、通常実行環境41においてOSの機能を果たすソフトウェアであり、アプリケーション412からの要求に応じて、デバイス1に接続されたハードウェアの制御等を含む各種OS機能を提供する。制御部11は、汎用OS411上でアプリケーション412を実行することで、デバイス1の基本的、汎用的な処理を実行する。
トラステッド実行環境42は、セキュリティ機能を隔離する目的で、同一のSoC上で通常実行環境とは別に提供される独立した実行環境である。トラステッド実行環境42は、通常実行環境41からのアクセスが制限されており、実行可能な機能も限定されている。なお、トラステッド実行環境は、TEEのような称呼に限定されるものではなく、通常実行環境41と分離され、セキュリティ上より安全な実行環境であれば、どのような称呼の実行環境であってもよい。デバイス1は、セキュリティ上保護すべきソフトウェア及びデータをトラステッド実行環境42に配置すると共に、通常実行環境41及びデバイス1の外部からのアクセスを制限することで、安全性を確保する。
上述のように、通常実行環境41からトラステッド実行環境42にはアクセスできないように制限されており、通常実行環境41からはトラステッド実行環境42の存在を認識できない。通常実行環境41からトラステッド実行環境42で実行する処理を呼び出すためには、ソフトウェア上実現されるセキュアモニタ43を経由しなければならない。
トラステッドOS421は、トラステッド実行環境42においてOSの機能を果たすソフトウェアであり、アプリケーション422からの要求に応じて、セキュリティ機能を中心としたOS機能を提供する。制御部11は、トラステッドOS421上でアプリケーション422を実行することで、本実施の形態に係るパラメータのスクランブル及びデスクランブル処理を含む、セキュリティ上重要な処理を実行する。
なお、本実施の形態では、デバイス1の各種機能がOS、アプリケーションのいずれで実装されるかは本質的事項ではなく、実装者が適宜選択すべき設計事項であることから、OS、アプリケーションの機能分担については説明を省略する。
図11に示すように、本実施の形態においてデバイス1の制御部11は、トラステッド実行環境42に推論モデル用パラメータ281、固有ID282、及びスクランブル鍵283を配置する。制御部11は、トラステッド実行環境42において推論モデル用パラメータ281(学習パラメータ281b)のスクランブル化を行い、スクランブル値を通常実行環境41へ受け渡す。制御部11は、通常実行環境41において推論モデル121を展開し、推論処理を実行する。
推論処理を実行する場合、制御部11は、演算対象とするニューロンに設定されたスクランブル値をトラステッド実行環境42に受け渡す。制御部11は、トラステッド実行環境においてパラメータのスクランブル解除、解除回数のカウント、及びCRC値の照合等を行い、スクランブル解除後のパラメータを通常実行環境41に返送する。制御部11は、返送されたパラメータを推論モデル121に適用し、推論処理に係る演算を行う。
以上より、本実施の形態3によれば、デバイス1は、通常実行環境41と、通常実行環境41よりもセキュアなトラステッド実行環境42とを構築し、トラステッド実行環境42においてパラメータのスクランブル及びデスクランブル処理を実行する。このように、セキュアエレメント20を搭載せずとも、ソフトウェア上の構成によって推論処理に係る安全性を確保することができる。
上述の如く、デバイス1は、推論処理に係る演算を実行するコンポーネントよりもセキュアなコンポーネント(セキュア部)を有し、当該セキュアなコンポーネントにおいてデスクランブルに必要なデータを保持し、デスクランブルを実行可能(あるいは実施の形態2のようにデスクランブルに必要なデータを供給可能)であればよい。当該セキュアなコンポーネントは、ハードウェア上分離されたセキュアエレメント20等であってもよく、ソフトウェア上分離されたトラステッド実行環境42等であってもよい。
セキュアエレメント20に代えてトラステッド実行環境42を実装する以外は実施の形態1と共通するため、本実施の形態では詳細な図示及び説明を省略する。
(実施の形態4)
本実施の形態では、デバイス1が外部のサーバ3と相互に通信を行い、サーバ3が推論モデル用パラメータ281のスクランブル及びデスクランブルを行う形態について説明する。
図12は、実施の形態4に係るIoTシステムの構成例を示すブロック図である。本実施の形態では、デバイス1は、推論モデル用パラメータ281のスクランブル及びデスクランブルに関わるセキュアエレメント20を有していない。一方で、サーバ3が推論モデル用パラメータ281のスクランブル及びデスクランブルに関わるスクランブル部35、乱数発生器36、デスクランブル部37、照合部38、及び計数部39を有する。
図13は、デバイスDB341のレコードレイアウトの一例を示す説明図である。デバイスDB341は、固有ID列、スクランブル鍵列、解除回数列、乱数列を有する。固有ID列は、個々のデバイス1を識別可能な固有ID282を記憶している。スクランブル鍵列は、固有ID282と対応付けて、各デバイス1について学習パラメータ281bのスクランブル化を行う際に用いるスクランブル鍵283を記憶している。解除回数列は、固有ID282と対応付けて、各デバイス1についてデスクランブルを実行した回数(例えば残回数)を記憶している。乱数列は、固有ID282と対応付けて、各デバイス1に配信したパラメータのスクランブル時に用いた乱数値を記憶している。
本実施の形態では、デバイス1内部のセキュアエレメント20ではなく、外部のサーバ3がパラメータのスクランブル及びデスクランブルを行う。
まずサーバ3は、推論モデル用パラメータ281の出力要求をデバイス1から受け付けた場合、学習パラメータ281bのスクランブル化を行い、学習パラメータ281bのスクランブル値を含む推論モデル用パラメータ281をデバイス1に送信する。具体的には、デバイス1は自装置の固有ID282を送信して出力要求を行う。サーバ3は、当該固有ID282と対応付けられたスクランブル鍵283をデバイスDB341から読み出す。また、サーバ3は、乱数発生器36により乱数値を生成する。サーバ3は、実施の形態1でセキュアエレメント20が行った処理と同様に、固有ID282、スクランブル鍵283、及び乱数値を用いてマスク値を生成し、当該マスク値を学習パラメータ281bに適用してスクランブル値を演算する。なお、サーバ3は、スクランブル時に生成した乱数値をデバイスDB341に格納し、デバイス1からスクランブル解除要求があった場合に当該乱数値を用いてスクランブルを解除できるようにしておく。
サーバ3は、平文のハイパーパラメータ281aと、スクランブル化した学習パラメータ281bとを含む推論モデル用パラメータ281をデバイス1に送信する。デバイス1の制御部11は、当該パラメータに基づいて推論モデル121をメモリ上に展開する。具体的には実施の形態1と同様に、制御部11は、学習パラメータ281bのスクランブル値を適用した推論モデル121を構築する。
推論処理を実行する場合、デバイス1は、学習パラメータ281bのスクランブルを解除するようサーバ3に要求する。具体的には、デバイス1は、推論モデル121に適用されている学習パラメータ281bのスクランブル値と、自装置の固有ID282とを送信し、スクランブル解除を要求する。解除要求を受け付けた場合、サーバ3は解除回数のチェックを行い、解除回数が一定回数に達していない場合、スクランブル解除を行う。サーバ3は、デバイス1から送信された固有ID282に基づき、デバイスDB341から、スクランブル解除に必要なスクランブル鍵283及び乱数値を読み出す。サーバ3は、デバイス1の固有ID282と、デバイスDB341から読み出したスクランブル鍵283及び乱数値とに基づき、学習パラメータ281bのスクランブルを解除する。
サーバ3は、スクランブルを解除した学習パラメータ281bをデバイス1に返信する。デバイス1は、サーバ3から返信された学習パラメータ281bを推論モデル121に適用し、推論処理に係る演算を行う。
以上より、本実施の形態4によれば、デバイス1内部のセキュアエレメント20ではなく、外部のサーバ3においてスクランブル及びデスクランブルを行う。当該構成であっても、実施の形態1と同様の効果を奏する。
上述の如く、本システムは、推論処理を実行するユニット(デバイス本体10)と、当該ユニットよりもセキュアなユニットとを有し、当該セキュアなユニットにおいてデスクランブルに必要なデータを保持し、デスクランブルを実行可能(あるいは実施の形態2のようにデスクランブルに必要なデータを供給可能)であればよい。当該セキュアなユニットは、デバイス1内部のコンポーネント(セキュアエレメント20、トラステッド実行環境42等)であってもよく、デバイス1に通信接続された外部装置(ネットワークN上のサーバ3)であってもよい。
セキュアエレメント20に代えてサーバ3がスクランブル及びデスクランブルを行う以外は実施の形態1と共通するため、本実施の形態では詳細な図示及び説明を省略する。
(実施の形態5)
実施の形態1〜4では、パラメータのスクランブルを行う主体と、スクランブル解除を行う又はスクランブル解除に必要なデータを供給する主体とが同一であるものとして説明した。本実施の形態では、スクランブルを行う主体(第1のセキュアなユニット)と、スクランブル解除を行う主体(第2のセキュアなユニット)とが異なる形態について説明する。
図14は、実施の形態5に係るスクランブル処理に関する説明図である。本実施の形態では、パラメータのスクランブル及びデスクランブルを複数の処理主体に分けて行う場合の一例として、サーバ3がパラメータのスクランブル化を行い、デバイス1のセキュアエレメント20がデスクランブルを行う形態について説明する。
サーバ3は、スクランブル部35、乱数発生器36等、パラメータのスクランブル化に関わる構成を有する。一方、デバイス1のセキュアエレメント20は、デスクランブル部24等、パラメータのスクランブル解除に関わる構成を有する。
また、本実施の形態に係るセキュアエレメント20は、通信路開設部29を有する。通信路開設部29は、セキュアエレメント20(デバイス1)とサーバ3との間で秘匿通信路51(図15参照)を開設する処理を行う。秘匿通信路51については後述する。
また、セキュアエレメント20は、記憶部28に許可フラグ284をセットしてある。許可フラグ284は、セキュアエレメント20でのスクランブル解除が許可又は禁止されている旨を表すフラグであり、サーバ3からの指示に従って設定される。許可フラグ284については後述する。
まず、図14に基づいて、推論モデル121の展開時の処理について、符号P51〜P61に示す処理プロセスを順に説明する。なお、図14では図示の便宜のため、デバイス本体10の入出力I/F13及び通信部14、セキュアエレメント20の入出力I/F27、サーバ3の通信部33を点線の矩形枠により図示してある。
まずデバイス本体10の制御部11は、セキュアエレメント20に対し、固有ID282の読み出しを要求する(P51)。読出要求を受け付けた場合、セキュアエレメント20の読出部21は、記憶部28から固有ID282を読み出し、デバイス本体10に出力する(P52)。
デバイス本体10の制御部11は、セキュアエレメント20から取得した固有ID282をサーバ3に送信し、推論モデル用パラメータ281の出力を要求する(P53)。出力要求を受け付けた場合、サーバ3の制御部31は、補助記憶部34に記憶してある推論モデル用パラメータ281を読み出す(P54)。
制御部31は、読み出した推論モデル用パラメータ281のうち、学習パラメータ281bをスクランブル部35に出力し、スクランブル化を要求する(P55)。具体的には、制御部31は、補助記憶部34から読み出した学習パラメータ281bと、デバイス1から取得した固有ID282とをスクランブル部35に受け渡す。
スクランブル部35は、デバイスDB341から、スクランブル化に必要なスクランブル鍵283を読み出す(P56)。具体的には、スクランブル部35は、制御部31から取得したデバイス1の固有ID282に対応付けて記憶されている、各デバイス1(セキュアエレメント20)に応じて個別化されているスクランブル鍵283を読み出す。実施の形態4で既に述べたように、デバイスDB341には、各セキュアエレメント20(デバイス1)に固有の固有ID282と対応付けて、個々のセキュアエレメント20専用のスクランブル鍵283が記憶されており、当該スクランブル鍵283は、デバイス1及びサーバ3の間で共有されている。サーバ3は、セキュアエレメント20毎に個別化されたスクランブル鍵283を用いてスクランブル処理を行う。
また、スクランブル部35は、乱数発生器36から乱数値を取得する(P57)。そしてスクランブル部35は、デバイス1から取得した固有ID282、当該固有IDに対応するスクランブル鍵283、及び自装置で生成した乱数値を用いて、学習パラメータ281bのスクランブル化を実行する。スクランブル部35は、学習パラメータ281bのスクランブル値を制御部31に出力する(P58)。また、デスクランブル部37は、学習パラメータ281bのスクランブル化に用いた乱数値を、固有ID282と対応付けてデバイスDB341に記憶しておく(P59)
サーバ3の制御部31は、平文のハイパーパラメータ281aと、スクランブル化した学習パラメータ281bとを含む推論モデル用パラメータ281をデバイス1に送信する(P60)。デバイス本体10の制御部11は、サーバ3から取得した推論モデル用パラメータ281に基づき、学習パラメータ281bのスクランブル値を適用した推論モデル121をメモリ上に展開する(P61)。
図15は、実施の形態5に係るデスクランブル処理に関する説明図である。デバイス1が推論処理を行う際の処理内容について、図15で符号P71〜P80に示す処理プロセスを順に説明する。
推論対象である入力データを取得し、推論処理を実行する場合、まずデバイス本体10の制御部11は、セキュアエレメント20に対し、サーバ3との間で乱数値を同期するよう要求する(P71)。上述の如く、パラメータのスクランブル化は固有ID282、スクランブル鍵283、及び乱数値を用いて行われているため、デスクランブルを行う場合、各データが必要になる。この三者のうち、セキュアエレメント20は固有ID282及びスクランブル鍵283を保有しているが、乱数値はサーバ3が生成したものであるため、保有していない。そこでデバイス1はまず、サーバ3との間で乱数値を同期する。
同期要求を受け付けた場合、セキュアエレメント20の通信路開設部29は、サーバ3との間でエンドツーエンドの秘匿通信路51を開設する(P72)。秘匿通信路51は、例えばTLS(Transport Layer Security)のプロトコルで通信内容を暗号化した通信路である。通信路開設部29は、デバイス本体10におけるネットワークNとの通信インターフェイスである通信部14を経由して、サーバ3との間の秘匿通信路51を開設する。
なお、秘匿通信路51は通信内容を秘匿可能であればよく、例えばSSL(Secure Sockets Layer)等のプロトコルを採用してもよい。また、上記ではデバイス本体10の物理的な通信手段(通信部14)を経由して秘匿通信路51を確立しているが、セキュアエレメント20がサーバ3との間で秘匿通信路51を開設可能であればよく、セキュアエレメント20自体が物理的な通信手段(LAN、Wi−Fi(登録商標)等)を有する場合、セキュアエレメント20はサーバ3との間で秘匿通信路51を直接確立してもよい。
セキュアエレメント20は、当該秘匿通信路51を介してサーバ3から乱数値を取得する(P73)。具体的には、セキュアエレメント20がサーバ3に対し、自身の固有ID282を送信して乱数値の出力を要求する。サーバ3は、当該固有ID282に対応付けてデバイスDB341に保存してある乱数値を読み出し、セキュアエレメント20に返信する。
また、サーバ3の制御部31は、セキュアエレメント20に対し、スクランブル解除を許可する旨の許否情報を送信する(P74)。許否情報は、IoT端末であるデバイス1でのスクランブル解除の是非を管理するための情報であり、スクランブル解除の許可又は禁止を表す情報である。サーバ3は、デバイス1で推論処理を実行し、スクランブルの解除処理を行う場合、許否情報を送信してスクランブル解除を遠隔管理する。これにより、第三者が不正にスクランブル解除を試行する事態を抑止する。許否情報を受信した場合、セキュアエレメント20は、記憶部28で保持してある許可フラグ284を「禁止」から「許可」に変更することで、サーバ3によりデスクランブルが許可された旨の許否情報を保持する(P75)。なお、サーバ3も、デバイス1に対してスクランブル解除を許可した旨をデバイスDB341に保持しておく(P76)。
セキュアエレメント20のデスクランブル部24は、サーバ3から取得した乱数値と、記憶部28に記憶してある固有ID282及びスクランブル鍵283とを用いて、推論モデル121に適用されている学習パラメータ281bのスクランブルを解除する(P77)。詳細な図示及び説明は省略するが、デスクランブル部24は実施の形態1と同様に、デバイス本体10から各ニューロンの学習パラメータ281bのスクランブル値及び特定情報を逐次取得し、スクランブル解除回数、CRC値等を確認した上でスクランブル解除を行う。本実施の形態ではさらに、デスクランブル部24は、許可フラグ284が「許可」に設定されているか否かを確認した上でスクランブル解除を行う。許可フラグ284が「禁止」に設定されている場合、デスクランブル部24はスクランブル解除を行わずにその旨をデバイス本体10に通知し、処理を終了する。
全てのニューロンについてスクランブル解除が完了した場合、セキュアエレメント20はサーバ3に対し、推論処理の完了を通知する(P78)。なお、セキュアエレメント20は、デバイス本体10から取得した特定情報に基づき、解除要求がなされたニューロンが最後のニューロンであるか否かを判定することで、スクランブル解除の完了を検知する。または、セキュアエレメント20は、自身がカウントしているスクランブル解除回数に基づき、スクランブル解除の完了を検知してもよい。デバイス1から推論処理の完了通知を受信した場合、サーバ3の制御部31は、スクランブル解除を禁止する旨の許否情報をデバイス1に返信する(P79)。また、制御部31は、デバイスDB341で管理してある許否情報を「許可」から「禁止」に変更する(P80)。
当該許否情報を受信した場合、セキュアエレメント20は、許可フラグ284を「許可」から「禁止」に変更する(P81)。セキュアエレメント20は、サーバ3から受信した乱数値、及びスクランブル解除のため演算したマスク値等、スクランブル解除のために用いたデータを破棄し、一連の処理を完了する。
上述の如く、本システムは複数の処理主体に分けて動作することができる。これにより、推論モデル121に係るセキュリティが特定のユニットに依存しない構成とすることができ、安全性を高めることができる。
図16は、実施の形態5に係るモデル展開のサブルーチンの一例を示すフローチャートである。図16に基づき、本実施の形態に係るステップS11のサブルーチンの処理内容について説明する。
デバイス本体10の制御部11は、セキュアエレメント20に対し、固有ID282の出力を要求する(ステップS501)。固有ID282の出力要求を受け付けた場合、セキュアエレメント20は、記憶部28から固有ID282を読み出してデバイス本体10に出力する(ステップS502)。
デバイス本体10の制御部11は、セキュアエレメント20から取得した固有ID282をサーバ3へ送信し、推論モデル用パラメータ281の出力を要求する(ステップS503)。パラメータの出力要求を受け付けた場合、サーバ3の制御部31は、推論モデル用パラメータ281を補助記憶部34から読み出す(ステップS504)。また、制御部31は、デバイス本体10から取得した固有ID282を参照して、スクランブル処理に用いるスクランブル鍵283をデバイスDB341から読み出す(ステップS505)。上述の如く、デバイスDB341には各セキュアエレメント20(デバイス1)に応じて個別化されたスクランブル鍵283が記憶されており、当該スクランブル鍵283は、デバイス1及びサーバ3の間で共有されている。制御部31は、デバイス1との間で共有している個別のスクランブル鍵283を、デバイス1から取得した固有ID282に基づいて特定する。
制御部31は、乱数発生器36により乱数値を生成する(ステップS506)。そして制御部31は、デバイス1から取得した固有ID282と、当該固有ID282に基づき特定したスクランブル鍵283と、自装置の乱数発生器36で生成した乱数値とに基づいて、推論モデル用パラメータ281をスクランブル化する処理を実行する(ステップS507)。具体的には実施の形態1と同様に、制御部31は、固有ID282、スクランブル鍵283及び乱数値に基づいてマスク値を計算し、当該マスク値を学習パラメータ281bに適用することで、学習パラメータ281bのスクランブル値を計算する。制御部11は、平文のハイパーパラメータ281aと、スクランブル化した学習パラメータ281bとを含む推論モデル用パラメータ281をデバイス1に出力する(ステップS508)。
推論モデル用パラメータ281をサーバ3から取得した場合、デバイス本体10の制御部11は、推論モデル用パラメータ281のうち、ハイパーパラメータ281aに基づいて推論モデル121の基本構造を決定する(ステップS509)。そして制御部11は、基本構造を決定した推論モデル121に対して学習パラメータ281bのスクランブル値を適用する(ステップS510)。これにより、制御部11は、学習パラメータ281bのスクランブル値を設定した推論モデル121をメモリ上に展開する。制御部11は、サブルーチンをリターンする。
図17及び図18は、実施の形態5に係る推論処理のサブルーチンの一例を示すフローチャートである。図17及び図18に基づき、本実施の形態に係るステップS12のサブルーチンの処理内容について説明する。
推論モデル121に入力する入力値を取得した後(ステップS51)、デバイス本体10の制御部11は、以下の処理を実行する。制御部11はセキュアエレメント20に対し、サーバ3との間で乱数値を同期するよう要求する(ステップS521)。同期要求を受け付けた場合、セキュアエレメント20は、通信内容を暗号化した秘匿通信路51をサーバ3との間に開設する(ステップS522)。セキュアエレメント20は、当該秘匿通信路51を介して、サーバ3に対し乱数値の同期を要求する(ステップS523)。具体的には、セキュアエレメント20は、デバイス1(又はセキュアエレメント20)に固有の固有ID282をサーバ3へ送信し、デバイス本体10に展開されている推論モデル121の学習パラメータ281bのスクランブル解除に必要な乱数値を出力するよう要求する。
出力要求を受け付けた場合、サーバ3の制御部31は、スクランブル解除に必要な乱数値を、秘匿通信路51を介してデバイス1に出力する(ステップS524)。具体的には、制御部31は、セキュアエレメント20から取得した固有ID282を参照して、当該固有ID282に対応付けられた乱数値をデバイスDB341から読み出し、デバイス1へ返信する。
また、制御部31は、デバイス1におけるスクランブル解除を許可する旨の許否情報をデバイス1に送信する(ステップS525)。許否情報は、IoT端末であるデバイス1でのスクランブル解除の是非を管理するための情報であり、デバイス1でのスクランブル解除の許可又は禁止を表す情報である。制御部31は、乱数値をセキュアエレメント20へ送信(出力)後、スクランブル解除を許可する旨の許否情報を送信し、解除を許可する。なお、制御部31は、デバイスDB341に記憶してある許否情報を更新し、スクランブル解除を許可した旨の許否情報をデバイスDB341に記憶しておく。
許否情報を受信した場合、セキュアエレメント20は、記憶部12に記憶してある許可フラグ284を「許可」に設定することで、許否情報を保持する(ステップS526)。セキュアエレメント20は、デバイス本体10に対して学習パラメータ281bのスクランブル値の出力を要求し(ステップS527)、処理をステップS52に移行する。
デバイス本体10から学習パラメータ281bの特定情報及びスクランブル値を取得した場合(ステップS53)、セキュアエレメント20は、許可フラグ284(許否情報)を参照して、スクランブル解除が許可されているか否かを判定する(ステップS528)。許可されていないと判定した場合(S528:NO)、セキュアエレメント20は処理をステップS60に移行し、スクランブル解除を実行しない旨をデバイス本体10に通知して、推論処理に係る処理動作を停止させる(図18参照)。スクランブル解除が許可されていると判定した場合(S528:YES)、セキュアエレメント20は処理をステップS54に移行する。
デスクランブルの実行回数(解除回数)が一定回数に達していないと判定した場合(S55:NO)、セキュアエレメント20は、記憶部28に予め記憶してある固有ID282及びスクランブル鍵283と、ステップS524でサーバ3から取得した乱数値とに基づき、デスクランブルに必要なマスク値を生成する(ステップS529)。そしてセキュアエレメント20は、デバイス本体10から取得した推論モデル用パラメータ281のデスクランブル処理を実行する(ステップS530)。セキュアエレメント20は、処理をステップS58に移行する。
図18に移って、スクランブル解除後のパラメータをデバイス本体10に出力した後(ステップS62)、セキュアエレメント20は、デバイス本体10から要求されたデスクランブル処理の実行内容、又はデスクランブル処理の実行回数に応じて、推論モデル121に基づく一連の推論処理を完了したか否かを判定する(ステップS531)。例えばセキュアエレメント20は、デバイス本体10からスクランブル値と共に取得した特定情報を参照して、最後のニューロンに係る演算を実行したか否かを判定する。または、例えばセキュアエレメント20は、ステップS55でカウントした実行回数(解除回数)に基づき、最後のニューロンに係る演算を実行したか否かを判定する。推論処理が完了していないと判定した場合(S531:NO)、セキュアエレメント20は、処理をステップS528に戻す。
推論処理が完了したと判定した場合(S531:YES)、セキュアエレメント20は、推論処理が完了した旨をサーバ3に通知する(ステップS532)。当該通知を取得した場合、サーバ3の制御部31は、スクランブル解除を禁止する旨の許否情報をセキュアエレメント20に送信する(ステップS533)。なお、サーバ3自体も、スクランブル解除を禁止した旨をデバイスDB341に記憶しておく。
サーバ3から許否情報を取得した場合、セキュアエレメント20は、許可フラグ284を「許可」から「禁止」に変更する(ステップS534)。セキュアエレメント20は、スクランブル解除に用いた乱数値、マスク値等のデータを削除し(ステップS535)、サブルーチンをリターンする。
なお、上記でセキュアエレメント20(第2のユニット)は学習パラメータ281bのスクランブルを解除しているが、実施の形態2のように、スクランブル解除のためのマスク値等のデータをデバイス本体10へ出力し、デバイス本体10がデスクランブルを行ってもよい。
以上より、本実施の形態5によれば、複数の処理主体にスクランブル及びデスクランブルに必要なデータ(例えば固有ID282、スクランブル鍵283等)を共有させ、一の処理主体(第1のユニット)で学習パラメータ281bのスクランブル処理を、他の処理主体(第2のユニット)でデスクランブル処理を実行する。複数の処理主体に分けて学習パラメータ281bのスクランブル及びデスクランブル(又はデスクランブルに必要なデータの供給)を行うことで、本システムのセキュリティを特定の要素に依存しない構成とすることができる。
また、本実施の形態5によれば、推論処理を実行する際、スクランブルを行った処理主体(上記ではサーバ3)がデスクランブルを行う処理主体(上記ではセキュアエレメント20)に対し、乱数値等、デスクランブルに必要なデータを与えて同期する。好適には、推論処理完了後、後者は前者から与えられたデータを破棄することが望ましい。これにより、デスクランブルを行う処理主体は、通常時においてスクランブルを解除できないため、安全性を高めることができる。
また、本実施の形態5によれば、セキュアエレメント20はデスクランブルの許否を定める許否情報(許可フラグ284)を保持し、許否情報においてデスクランブルが禁止されている場合、スクランブル解除を実行しない。これにより、不正なスクランブル解除の試行を抑止し、安全性を高めることができる。
また、本実施の形態5によれば、セキュアエレメント20は、管理装置であるサーバ3からの指示に従って許否情報を設定する。これにより、サーバ3においてデバイス1の遠隔管理を行い、セキュリティの確保を図ることができる。
(実施の形態6)
図19は、上述した形態のデバイス1の動作を示す機能ブロック図である。制御部11がプログラムP1を実行することにより、デバイス1は以下のように動作する。記憶部191は、機械学習により生成された学習済みモデルに対し、該学習済みモデルに基づく処理を実行する際に必要なパラメータのスクランブル値を適用したモデルデータを記憶する。実行部192は、前記学習済みモデルに基づく処理を実行する。出力部193は、該実行部192が処理を実行する場合、前記パラメータを特定する情報を、前記実行部192よりもセキュアなユニットであって、前記パラメータのデスクランブルに必要なデータを保持するセキュアなユニットに対して出力する。前記実行部192は、前記セキュアなユニットから返送されるデータに基づき、デスクランブルされた前記パラメータを用いて処理を実行する。
本実施の形態6は以上の如きであり、その他は実施の形態1から5と同様であるので、対応する部分には同一の符号を付してその詳細な説明を省略する。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。