IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社日立製作所の特許一覧

<>
  • 特開-情報処理方法及び情報処理システム 図1
  • 特開-情報処理方法及び情報処理システム 図2
  • 特開-情報処理方法及び情報処理システム 図3
  • 特開-情報処理方法及び情報処理システム 図4
  • 特開-情報処理方法及び情報処理システム 図5
  • 特開-情報処理方法及び情報処理システム 図6
  • 特開-情報処理方法及び情報処理システム 図7
  • 特開-情報処理方法及び情報処理システム 図8
  • 特開-情報処理方法及び情報処理システム 図9
  • 特開-情報処理方法及び情報処理システム 図10
  • 特開-情報処理方法及び情報処理システム 図11
  • 特開-情報処理方法及び情報処理システム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024164476
(43)【公開日】2024-11-27
(54)【発明の名称】情報処理方法及び情報処理システム
(51)【国際特許分類】
   H04L 9/10 20060101AFI20241120BHJP
   G06F 21/60 20130101ALI20241120BHJP
   G06N 3/02 20060101ALI20241120BHJP
【FI】
H04L9/10 A
G06F21/60 320
G06N3/02
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023079973
(22)【出願日】2023-05-15
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】藤原 啓成
(72)【発明者】
【氏名】佐藤 尚宜
(57)【要約】
【課題】複数層の処理層による機械学習等の処理時に、機密情報である機械学習パラメータを保護する。
【解決手段】ニューラルネットワークによる情報処理方法では、信頼領域38において、通常領域310において秘匿化機械学習パラメータ515に基づいて秘匿化入力データ516に対して実行された第i層処理部312の実行結果を、パラメータ保護乱数528により除算するパラメータ秘匿化影響除去処理537を実行する。そして、パラメータ秘匿化影響除去処理537の実行結果から入力秘匿化影響除去パラメータ529を減算する入力秘匿化影響除去処理538を実行し、推論結果531を出力する。
【選択図】図3
【特許請求の範囲】
【請求項1】
複数の第i層(iは1以上N以下の自然数)からなるニューラルネットワークによる情報処理を実行する情報処理システムが行う情報処理方法であって、
前記情報処理システムは、プロセッサと、メモリと、を有し、
前記メモリは、通常領域から隔離されたTEE(Trusted Execution Environment)である隔離領域を含み、
前記隔離領域は、
前記第i層の処理に用いられる第i層パラメータと、
前記第i層パラメータを保護する乱数である第i層パラメータ保護乱数と、
前記第i層へ入力される第i層入力データと、
前記第i層入力データを保護する乱数である第i層入力データ保護乱数と、を保持し、
前記プロセッサが、前記隔離領域において、
前記第i層パラメータと前記第i層パラメータ保護乱数とを乗算して該第i層パラメータを秘匿化した第i層秘匿化パラメータを生成するパラメータ秘匿化処理を前記第i層毎に実行し、該第i層秘匿化パラメータを前記通常領域へ出力し、
前記第i層パラメータと前記第i層入力データ保護乱数とを乗算して前記第i層入力データに対して施された秘匿化を除去する第i層入力データ秘匿化除去パラメータを生成して前記隔離領域に保持する入力秘匿化影響除去パラメータ生成処理を前記第i層毎に実行し、
前記第i層入力データ保護乱数を前記第i層入力データに加算して該第i層入力データに対して秘匿化を施した第i層秘匿化入力データを生成する秘匿化入力データ生成処理を実行し、該第i層秘匿化入力データを前記第i層入力データとして前記通常領域へ出力し、
前記通常領域において前記第i層秘匿化パラメータに基づいて前記第i層秘匿化入力データに対して実行された前記第i層の処理の実行結果を該通常領域から取得し、該実行結果を前記第i層パラメータ保護乱数により除算するパラメータ秘匿化影響除去処理を実行し、
前記パラメータ秘匿化影響除去処理の実行結果から前記第i層入力データ秘匿化除去パラメータを減算する入力秘匿化影響除去処理を実行し、該入力秘匿化影響除去処理の実行結果を前記第i層から出力される第i層出力データとする
各処理を含んだことを特徴とする情報処理方法。
【請求項2】
請求項1に記載の情報処理方法であって、
前記メモリは、前記通常領域を含み、
前記プロセッサが、前記通常領域において、
前記第i層秘匿化パラメータに基づいて前記第i層秘匿化入力データに対して前記第i層の処理を実行し、該第i層の処理の実行結果を前記隔離領域へ出力する
処理を含んだことを特徴とする情報処理方法。
【請求項3】
請求項1に記載の情報処理方法であって、
前記プロセッサが、前記隔離領域において、
前記第i層入力データ毎に対する前記第i層の処理毎に一時的な乱数を生成し、前記第i層入力データ保護乱数と該一時的な乱数とを乗算した結果を前記第i層入力データに加算して前記第i層秘匿化入力データを生成する前記秘匿化入力データ生成処理を実行し、該第i層秘匿化入力データを前記第i層入力データとして前記通常領域へ出力し、
前記パラメータ秘匿化影響除去処理の実行結果から前記第i層入力データ秘匿化除去パラメータと前記一時的な乱数とを乗算した結果を減算する前記入力秘匿化影響除去処理を実行し、該入力秘匿化影響除去処理の実行結果を前記第i層から出力される第i層出力データとする
処理を含んだことを特徴とする情報処理方法。
【請求項4】
請求項3に記載の情報処理方法であって、
前記プロセッサが、
前記第i層入力データ保護乱数に代えて、該第i層入力データ保護乱数と同一のサイズの全ての要素が1の行列を用いる
ことを特徴とする情報処理方法。
【請求項5】
請求項1に記載の情報処理方法であって、
前記隔離領域は、
前記第i層の処理を前記通常領域及び前記隔離領域の何れにおいて実行するかを示す情報である各層処理秘匿化設定情報を保持し、
前記プロセッサが、
前記各層処理秘匿化設定情報に応じて前記通常領域及び前記隔離領域の何れかにおいて前記第i層の処理を実行する
ことを特徴とする情報処理方法。
【請求項6】
請求項1に記載の情報処理方法であって、
前記ニューラルネットワークは、CNN(Convolutional Neural Network)であり、
前記第i層パラメータは、CNNの機械学習パラメータである
ことを特徴とする情報処理方法。
【請求項7】
複数の第i層(iは1以上N以下の自然数)からなるニューラルネットワークによる情報処理を実行する情報処理システムであって、
プロセッサと、メモリと、を有し、
前記メモリは、通常領域から隔離されたTEE(Trusted Execution Environment)である隔離領域を含み、
前記隔離領域は、
前記第i層の処理に用いられる第i層パラメータと、
前記第i層パラメータを保護する乱数である第i層パラメータ保護乱数と、
前記第i層へ入力される第i層入力データと、
前記第i層入力データを保護する乱数である第i層入力データ保護乱数と、を保持し、
前記プロセッサは、前記隔離領域において、
前記第i層パラメータと前記第i層パラメータ保護乱数とを乗算して該第i層パラメータを秘匿化した第i層秘匿化パラメータを生成するパラメータ秘匿化処理を前記第i層毎に実行し、該第i層秘匿化パラメータを前記通常領域へ出力し、
前記第i層パラメータと前記第i層入力データ保護乱数とを乗算して前記第i層入力データに対して施された秘匿化を除去する第i層入力データ秘匿化除去パラメータを生成して前記隔離領域に保持する入力秘匿化影響除去パラメータ生成処理を前記第i層毎に実行し、
前記第i層入力データ保護乱数を前記第i層入力データに加算して該第i層入力データに対して秘匿化を施した第i層秘匿化入力データを生成する秘匿化入力データ生成処理を実行し、該第i層秘匿化入力データを前記第i層入力データとして前記通常領域へ出力し、
前記通常領域において前記第i層秘匿化パラメータに基づいて前記第i層秘匿化入力データに対して実行された前記第i層の処理の実行結果を該通常領域から取得し、該実行結果を前記第i層パラメータ保護乱数により除算するパラメータ秘匿化影響除去処理を実行し、
前記パラメータ秘匿化影響除去処理の実行結果から前記第i層入力データ秘匿化除去パラメータを減算する入力秘匿化影響除去処理を実行し、該入力秘匿化影響除去処理の実行結果を前記第i層から出力される第i層出力データとする
ことを特徴とする情報処理システム。
【請求項8】
請求項7に記載の情報処理システムであって、
前記メモリは、前記通常領域を含み、
前記プロセッサは、前記通常領域において、
前記第i層秘匿化パラメータに基づいて前記第i層秘匿化入力データに対して前記第i層の処理を実行し、該第i層の処理の実行結果を前記隔離領域へ出力する
ことを特徴とする情報処理システム。
【請求項9】
請求項7に記載の情報処理システムであって、
前記プロセッサは、前記隔離領域において、
前記第i層入力データ毎に対する前記第i層の処理毎に一時的な乱数を生成し、前記第i層入力データ保護乱数と該一時的な乱数とを乗算した結果を前記第i層入力データに加算して前記第i層秘匿化入力データを生成する前記秘匿化入力データ生成処理を実行し、該第i層秘匿化入力データを前記第i層入力データとして前記通常領域へ出力し、
前記パラメータ秘匿化影響除去処理の実行結果から前記第i層入力データ秘匿化除去パラメータと前記一時的な乱数とを乗算した結果を減算する前記入力秘匿化影響除去処理を実行し、該入力秘匿化影響除去処理の実行結果を前記第i層から出力される第i層出力データとする
ことを特徴とする情報処理システム。
【請求項10】
請求項9に記載の情報処理システムであって、
前記プロセッサは、
前記第i層入力データ保護乱数に代えて、該第i層入力データ保護乱数と同一のサイズの全ての要素が1の行列を用いる
ことを特徴とする情報処理システム。
【請求項11】
請求項7に記載の情報処理システムであって、
前記隔離領域は、
前記第i層の処理を前記通常領域及び前記隔離領域の何れにおいて実行するかを示す情報である各層処理秘匿化設定情報を保持し、
前記プロセッサは、
前記各層処理秘匿化設定情報に応じて前記通常領域及び前記隔離領域の何れかにおいて前記第i層の処理を実行する
ことを特徴とする情報処理システム。
【請求項12】
請求項7に記載の情報処理システムであって、
前記ニューラルネットワークは、CNN(Convolutional Neural Network)であり、
前記第i層パラメータは、CNNの機械学習パラメータである
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘匿情報処理方法及び秘匿情報処理に関する。
【背景技術】
【0002】
近年、官民が連携した個人データ活用スキームが進展している。例えば、公共サービス及び民間サービスの連携等、多様な情報を連携した新たな価値の創出されている。多様な情報を連携した新たな価値を創出するためには、回帰分析等の統計解析及びCNN(Convolutional Neural Network)等の機械学習が有効とされる。統計解析及びの機械学習は、安価に利用可能なパブリッククラウド等を用いて、様々な企業が容易に実行できる基盤も提供されている。
【0003】
一方、プライバシーの保護を目的とした規制強化も進展している。したがって、病院及び銀行等のデータホルダが所有する機密情報を秘匿したまま活用する技術が求められる。
【0004】
こうした背景のもと、救急と警備会社等の官民が情報連携した公共サービスや、公共サービスとの相乗効果を生む製薬、保険、交通、及び情報銀行等の民間サービスの連携等、多様な情報を連携した新たな価値の創出が促進されている。多様なデータを分析して新たな価値を創出するためには、回帰分析等の統計解析や機械学習等の分析処理が有効とされる。さらに、これらのサービスが実現されるためには、病院や銀行等のデータホルダが所有する個人情報等の機密情報を、個人のプライバシーを保護したまま、公共サービスや民間サービスの提供者が分析し活用することを可能とする秘匿情報処理技術が求められる。
【0005】
従来技術では、データを暗号化したまま特定の処理を可能とすることで、機密情報を秘匿した状態の活用を実現している。しかし、従来技術で実行可能な処理は、検索及び順序比較等の基本的な処理に限定されており、処理の自由度に限界があった。そのため、処理の高い自由度が必要とされる高度な統計処理及びCNN等の機械学習を用いた画像処理に対応できる技術が求められている。
【0006】
近年、CPU(Central Processing Unit)には、TEE(Trusted Execution Environment)機能が搭載されている。TEE機能は、秘匿情報の処理に有効であると考えられる。TEE機能は、コンピュータ上で稼働するOSの管理者権限を奪われても情報を読み取られない信頼領域を提供する機能である。信頼領域内で暗号化データの復号及び処理の実行を行うことで、安全かつ高度な処理が可能となる。
【0007】
TEE機能の信頼領域を利用する技術として、特許文献1に記載の技術がある。特許文献1は、推論パイプラインでの機密入力データの情報漏洩を軽減するプライバシー強化型Deep Learningシステムを開示している。
【0008】
特許文献1に記載の技術は、ニューラルネットワークの階層構造を利用して、各Deep Learningモデルを信頼領域で処理するFrontNetと通常領域で処理するBackNetに分割する。
【0009】
特許文献1に記載の技術において、エンドユーザが利用する端末は、暗号化された入力と暗号化されたFrontNetをシステムに送信する。特許文献1に記載の技術は、クラウドインフラストラクチャ上のTEE機能を利用して、FrontNetのエンクレーブ(TEE機能における隔離実行プロセス)にてDeep Learningの処理を実施し、ユーザ入力の機密性と完全性を暗号で保護する。
【0010】
一方、特許文献1に記載の技術において、BackNetの推論計算では安全なエンクレーブが不足し、クラウドマシンにGPU(Graphical Processing Unit)等のDeep Learningアクセラレーションチップが搭載されている場合は、パフォーマンスの向上によるメリットが得られる。
【0011】
特許文献1に記載の技術は、プライバシー保護とパフォーマンス要件のバランスをとる、モデル固有の最適な分割ポイントを決定するために、ニューラルネットワークの階層構造を利用し、各Deep LearningモデルをFrontNet及びBackNetに仕切る。特許文献1に記載の技術は、Deep Learning推論システムが、各層の中間データのセットごとに類似性を測定し、入力情報に最も類似している中間データの選択されたサブセットを使用して、2つのパーティションに分割するために使用される分割ポイントを決定する。
【0012】
また、TEE機能の信頼領域を利用する技術として、非特許文献1に記載の技術がある。非特許文献1は、Deep Learningの線形演算処理を高速化するGPUを活用する推論パイプラインにおいて、GPUへ入力する機密入力データの情報漏えいを軽減する機密入力データの秘匿化方法を開示している。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許出願公開第2020/0082259号明細書
【非特許文献】
【0014】
【非特許文献1】F. Tramer and D. Boneh, “Slalom: Fast, verifiable and private execution of neural networks intrusted hardware,” in International Conference on Learning Representations (ICLR),2019.
【発明の概要】
【発明が解決しようとする課題】
【0015】
しかし、特許文献1に記載のシステムは、未知の入力情報のDeep Leaning処理時に、未知の入力情報が学習段階で学習していない個人のプライバシー情報や企業秘密等の機密情報を含む場合、機密情報の漏出を防げない場合がある。具体的には、BackNetでは、Deep Learningモデルを構成する機械学習パラメータを通常領域で処理するため、機械学習パラメータが機密情報である場合にDeep Learningモデルの漏出を防げない。
【0016】
また、非特許文献1に記載の秘匿化方法は、Deep Learningモデルの一部である線形演算処理に使用する機械学習パラメータを通常領域のGPUで秘匿化することなく処理するため、機械学習パラメータが機密情報である場合にその漏出を防げない。
【0017】
そこで、本発明の一態様は、複数層の処理層による機械学習等の処理時に、機密情報である機械学習パラメータを保護することを目的とする。
【課題を解決するための手段】
【0018】
上記課題を解決するために本発明の一態様は以下の構成を採用する。すなわち複数の第i層(iは1以上N以下の自然数)からなるニューラルネットワークによる情報処理を実行する情報処理システムが行う情報処理方法であって、前記情報処理システムは、プロセッサと、メモリと、を有し、前記メモリは、通常領域から隔離されたTEE(Trusted Execution Environment)である隔離領域を含み、前記隔離領域は、前記第i層の処理に用いられる第i層パラメータと、前記第i層パラメータを保護する乱数である第i層パラメータ保護乱数と、前記第i層へ入力される第i層入力データと、前記第i層入力データを保護する乱数である第i層入力データ保護乱数と、を保持し、前記プロセッサが、前記隔離領域において、前記第i層パラメータと前記第i層パラメータ保護乱数とを乗算して該第i層パラメータを秘匿化した第i層秘匿化パラメータを生成するパラメータ秘匿化処理を前記第i層毎に実行し、該第i層秘匿化パラメータを前記通常領域へ出力し、前記第i層パラメータと前記第i層入力データ保護乱数とを乗算して前記第i層入力データに対して施された秘匿化を除去する第i層入力データ秘匿化除去パラメータを生成して前記隔離領域に保持する入力秘匿化影響除去パラメータ生成処理を前記第i層毎に実行し、前記第i層入力データ保護乱数を前記第i層入力データに加算して該第i層入力データに対して秘匿化を施した第i層秘匿化入力データを生成する秘匿化入力データ生成処理を実行し、該第i層秘匿化入力データを前記第i層入力データとして前記通常領域へ出力し、前記通常領域において前記第i層秘匿化パラメータに基づいて前記第i層秘匿化入力データに対して実行された前記第i層の処理の実行結果を該通常領域から取得し、該実行結果を前記第i層パラメータ保護乱数により除算するパラメータ秘匿化影響除去処理を実行し、前記パラメータ秘匿化影響除去処理の実行結果から前記第i層入力データ秘匿化除去パラメータを減算する入力秘匿化影響除去処理を実行し、該入力秘匿化影響除去処理の実行結果を前記第i層から出力される第i層出力データとする各処理を含んだことを特徴とする。
【発明の効果】
【0019】
本発明の一態様によれば、複数層の処理層による機械学習等の処理時に、機密情報である機械学習パラメータを保護することができる。
【0020】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0021】
図1】秘匿情報処理システムのシステム構成例を示すブロック図である。
図2】秘匿情報処理システムのハードウェア構成例を示すブロック図である。
図3】秘匿推論処理のための機能構成例及びデータ処理フローの一例を示す説明図である。
図4】秘匿推論準備処理のデータ処理フローの一例を示すシーケンス図である。
図5】秘匿推論実行処理のデータ処理フローの一例を示すシーケンス図である。
図6】パラメータ秘匿化処理の一例を示すフローチャートである。
図7】入力秘匿化影響除去パラメータ生成処理の一例を示すフローチャートである。
図8】秘匿化入力データ生成処理の一例を示すフローチャートである。
図9】パラメータ秘匿化影響除去処理の一例を示すフローチャートである。
図10】入力秘匿化影響除去処理の一例を示すフローチャートである。
図11】機械学習パラメータ秘匿化設定情報入力画面の一例を示すダイアログ図である。
図12】各層処理秘匿化設定情報テーブルの一例を示す表である。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【0023】
(1)秘匿情報処理システム1の構成例
図1は、秘匿情報処理システム1のシステム構成例を示すブロック図である。秘匿情報処理システム1は、機械学習パラメータ等の企業秘密である機密情報を保持するパラメータホルダから暗号化した機械学習パラメータ等を預託される。また秘匿情報処理システム1は、個人情報等の機密情報を保持するデータホルダから暗号化したデータを預託される。秘匿情報処理システム1は、預託された機械学習パラメータ等とデータを、機密情報を秘匿化したまま処理結果利用者の処理要求に応じて処理し、当該処理結果を処理結果利用者に提供する。
【0024】
秘匿情報処理システム1は、例えば、パラメータホルダが機械学習パラメータ等を暗号化し預託するために用いられるパラメータホルダ端末50を有する。また秘匿情報処理システム1は、データホルダがデータを暗号化し預託するために用いられるデータホルダ端末10を有する。また秘匿情報処理システム1は、処理結果利用者が処理要求を生成して送信し、処理結果を参照する処理結果利用者端末20を有する。また秘匿情報処理システム1は、パラメータホルダから預託された機械学習パラメータ等に基づきデータホルダから預託されたデータに対し処理結果利用者から受信した処理要求の処理を秘匿化したまま実行し処理結果を送信する秘匿情報処理サーバ30を有する。パラメータホルダ端末50、データホルダ端末10、処理結果利用者端末20、及び秘匿情報処理サーバ30は、インターネット等のネットワーク40で互いに接続されている。
【0025】
なお、秘匿情報処理システム1は、複数のパラメータホルダ端末50を含んでもよいし、複数のデータホルダ端末10を含んでもよいし、複数の処理結果利用者端末20を含んでもよいし、複数の秘匿情報処理サーバを含んでもよい。なお、パラメータホルダ端末50とデータホルダ端末10が同一の端末であってもよいし、データホルダ端末10と処理結果利用者端末20が同一の端末であってもよい。
【0026】
図2は、秘匿情報処理システム1のハードウェア構成例を示すブロック図である。データホルダ端末10は、例えば、パーソナルコンピュータ、スマートフォン、若しくはサーバ装置等の計算機、又は仮想計算機である。データホルダ端末10は、例えば内部通信線で互いに接続された、CPU(Control Processing Unit)11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16を備える計算機によって構成される。
【0027】
CPU11は、プロセッサを含み、メモリ12に格納されたプログラムを実行する。メモリ12は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS(Basic Input/Output System))等を格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU11が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【0028】
なおCPU11は、TEE(Trusted Execution Environment)機能を有するTEE対応のCPUであり、メモリ12は、TEE対応のCPU21がメモリ上に確保するハードウェア的な信頼領域であってメモリ上の他の領域と隔離されたTEE信頼領域17を有する。第一の実施形態においては、CPU11はTEE機能を有していなくてもよいし、メモリ12はTEE信頼領域17を有していなくてもよい。なお、TEE信頼領域17で扱えるメモリ量が通常領域のメモリ量よりも小さく限られていてもよく(例えば128MB程度)、この場合、CPU11は、TEE信頼領域17上で処理を実行すると、通常領域上で処理を実行する場合と比較して処理速度が低下する。
【0029】
補助記憶装置13は、例えば、磁気記憶装置(HDD(Hard Disk Drive))、フラッシュメモリ(SSD(Solid State Drive))等の大容量かつ不揮発性の記憶装置であり、CPU11が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置13から読み出されて、メモリ12にロードされて、CPU11によって実行される。
【0030】
表示装置15は、ディスプレイやプリンタ等の、プログラムの実行結果をオペレータが視認可能な形式で出力する装置である。入力装置16は、キーボードやマウス等の、オペレータからの入力を受ける装置である。ネットワークインタフェース14は、所定のプロトコルに従って、他の装置との通信を制御する。また、ネットワークインタフェース14は、例えば、USB等のシリアルインターフェースを含んでもよい。
【0031】
CPU11が実行するプログラムは、予め、コンピュータ読み取り可能な非一時的記憶媒体である不揮発性の補助記憶装置13に格納されていてもよいし、非一時的記憶媒体であるリムーバブルメディア(CD-ROM、フラッシュメモリ等)でもよい。又は、他の装置の非一時的記憶装置からネットワークを介してデータホルダ端末10に提供され、補助記憶装置13に格納されてもよい。このため、データホルダ端末10は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。これは、処理結果利用者端末20及び秘匿情報処理サーバ30においても同様である。
【0032】
なお、本実施形態においてCPU及びGPUが実行する機能部による機能の一部又は全部が、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等のハードウェアによって実現されてもよい。
【0033】
なお、本実施形態において、秘匿情報処理システム1が使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよく、例えば、リスト、テーブル、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【0034】
パラメータホルダ端末50は、例えば、パーソナルコンピュータ、スマートフォン、若しくはサーバ装置等の計算機、又は仮想計算機である。パラメータホルダ端末50は、例えば、内部通信線で互いに接続された、CPU51、メモリ52、補助記憶装置53、ネットワークインタフェース54、表示装置55、及び入力装置56を備える計算機によって構成される。
【0035】
CPU51、メモリ52、補助記憶装置53、ネットワークインタフェース54、表示装置55、及び入力装置56は、CPU11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16と同様のハードウェアである。但し、CPU51はTEE機能を有している必要はなく、メモリ52には信頼領域を構築する必要はない。
【0036】
処理結果利用者端末20は、例えば、パーソナルコンピュータ、スマートフォン、若しくはサーバ装置等の計算機、又は仮想計算機である。処理結果利用者端末20は、例えば、内部通信線で互いに接続された、CPU21、メモリ22、補助記憶装置23、ネットワークインタフェース24、表示装置25、及び入力装置26を備える計算機によって構成される。
【0037】
CPU21、メモリ22、補助記憶装置23、ネットワークインタフェース24、表示装置25、及び入力装置26は、CPU11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16と同様のハードウェアである。但し、CPU21はTEE機能を有している必要はなく、メモリ22には信頼領域を構築する必要はない。
【0038】
秘匿情報処理サーバ30は、例えば、パーソナルコンピュータ、スマートフォン、若しくはサーバ装置等の計算機、又は仮想計算機である。秘匿情報処理サーバ30は、例えば、バス等の内部通信線で互いに接続された、CPU31、メモリ32、補助記憶装置33、ネットワークインタフェース34、表示装置35、入力装置36、及びGPU(Graphics Processing Unit)39を備える計算機によって構成される。
【0039】
CPU31、メモリ32、補助記憶装置33、ネットワークインタフェース34、表示装置35、及び入力装置36は、CPU11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16と同様のハードウェアである。但し、秘匿情報処理サーバ30のCPU31は、TEE機能を有するTEE対応のCPUである。秘匿情報処理サーバ30のメモリ32は、TEE対応のCPU31がメモリ上に確保するハードウェア的な信頼領域であり、メモリ上の他の領域と隔離された実行領域であるTEE信頼領域38を有する。TEE信頼領域38は、通常領域から隔離された隔離領域ともいう。GPU39は、プロセッサを含み、メモリ32に格納されたプログラムをメモリ32のTEE信頼領域38外の領域(通常領域)を用いて高速に実行する。なお、秘匿情報処理サーバ30はGPU39を有していなくてもよい。
【0040】
なお、本実施形態においてはパラメータホルダ端末50、データホルダ端末10及び秘匿情報処理サーバ30がTEE機能を有しているが、メモリ上において通常領域と隔離された安全な実行領域での演算が可能な、TEE機能とは異なる方式を採用してもよい。
【0041】
なお、CPU11、CPU21、CPU31、CPU51、及びGPU39によって実行される処理の一部又は全部が、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等のハードウェアによって実行されてもよい。
【0042】
なお、パラメータホルダ端末50、データホルダ端末10、処理結果利用者端末20、及び秘匿情報処理サーバ30はいずれも、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムである。しかしパラメータホルダ端末50、データホルダ端末10、処理結果利用者端末20、及び秘匿情報処理サーバ30は、同一の計算機上で別個のスレッドで動作してもよく、また複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【0043】
ネットワーク40は、有線通信若しくは無線通信によるインターネット、社内ネットワーク等のイントラネット、又は衛星回線等の通信ネットワークである。
【0044】
(2)秘匿情報処理システム1の機能構成例及び秘匿推論処理のデータ処理例
図3は、秘匿推論処理のための機能構成例及びデータ処理フローの一例を示す説明図である。
【0045】
先ず、本実施形態に係る秘匿情報処理システム1が実行する秘匿推論処理の全体を説明する。秘匿情報処理システム1では、先ずパラメータホルダ端末50が、各層処理秘匿化設定情報等の機密情報を含む機械学習パラメータ情報を暗号化して秘匿情報処理サーバ30へ送信する。各層処理秘匿化設定情報は、CNN(Convolutional Neural Network)といったニューラルネットワークの機械学習パラメータと各層の処理を秘匿化したまま実行する領域を指定する情報である。
【0046】
次に、秘匿情報処理サーバ30は機械学習パラメータ情報をTEE信頼領域38で復号して、パラメータ秘匿化設定情報をTEE信頼領域38に保持する。そして、パラメータ秘匿化処理及び入力秘匿化影響除去パラメータ生成処理をTEE信頼領域38で実行し、秘匿化機械学習パラメータ情報を通常領域に出力して保持し、入力秘匿化除去パラメータをTEE信頼領域38に保持する。
【0047】
次に、秘匿情報処理システム1は、データホルダ端末10が、個人情報等の機密情報を含む入力データを暗号化して秘匿情報処理サーバ30に送信する。
【0048】
次に、秘匿情報処理サーバ30は入力データをTEE信頼領域38で復号して、複数の処理層を含むDeep Learningの推論処理の各層の処理を、パラメータ秘匿化設定情報に基づく秘匿化設定確認処理の結果に応じてTEE信頼領域38又は通常領域で実行し、推論結果を暗号化して処理結果利用者端末20へ送信する。そして、処理結果利用者端末20は、受信した暗号化された推論結果を復号し、推論結果を取得する。
【0049】
以下、上述した各処理について、図3を参照しながら機能構成例とデータ処理フローの一例を詳しく説明する。
【0050】
秘匿情報処理サーバ30は、例えば、通常のCPU及びメモリ並びにGPU等のアクセラレーションチップによる高速処理を行うためのメモリ32上の通常領域310を有する。また秘匿情報処理サーバ30は、CPUのTEE機能等が提供する高安全に隔離された処理実行領域であるメモリ32上のTEE信頼領域38を有する。
【0051】
通常領域310は、例えば、第i層処理部312を含む。第i層処理部312は、CNN等の多層構造の機械学習(以下、CNNを例に説明をする)における各層の処理を実行する。なおCNNは一例にすぎず、本実施形態はRNN(Recurrent Neural Network)等のその他のニューラルネットワークにも適用可能である。
【0052】
第i層処理部312は、秘匿化機械学習パラメータ515に基づき、秘匿化入力データ516の層の処理を実行して秘匿化中間データ517を生成し、TEE信頼領域38のパラメータ秘匿化影響除去処理部533へ入力する。
【0053】
TEE信頼領域38は、例えば、第i層処理部326、復号処理部522、復号処理部322、パラメータ秘匿化処理部534、入力秘匿化影響除去パラメータ生成処理部535、及び第i層秘匿化設定確認処理部536を有する。またTEE信頼領域38は、秘匿化入力データ生成処理部525、パラメータ秘匿化影響除去処理部533、入力秘匿化影響除去処理部538、乱数生成部539、及び暗号化処理部329を有する。
【0054】
第i層処理部326は、CNNの層の処理を実行する。乱数生成部539は、各種の秘匿化処理に用いる乱数の生成を実行する。復号処理部522は、TEE信頼領域38に保存されている暗号鍵532を用いて暗号化された機械学習パラメータ情報521(機械学習パラメータ、各層処理秘匿化設定情報を含む)を復号する。復号処理部522は、復号した機械学習パラメータ情報521を、TEE信頼領域38に、機械学習パラメータ523、各層処理秘匿化設定情報524として保存する。復号処理部322は、TEE信頼領域38に保存されている暗号鍵331を用いて暗号化データ103を復号し、第i層秘匿化設定確認処理部536へ入力する。
【0055】
パラメータ秘匿化処理部534は、機械学習パラメータ523が含む各層の機械学習パラメータ523と、乱数生成部539が生成する各層毎に異なるパラメータを保護するパラメータ保護乱数528を入力とし、秘匿化機械学習パラメータ515を生成する。パラメータ秘匿化処理部534は、生成した秘匿化機械学習パラメータ515を通常領域310へ保存する。
【0056】
入力秘匿化影響除去パラメータ生成処理部535は、各層の機械学習パラメータ523と、乱数生成部539が生成する各層毎に異なる各層の入力データを保護する入力データ保護乱数526を入力とし、入力秘匿化影響除去パラメータ529を生成する。入力秘匿化影響除去パラメータ生成処理部535は、生成した入力秘匿化影響除去パラメータ529をTEE信頼領域38に保存する。
【0057】
第i層秘匿化設定確認処理部536は、当該層の入力データ(入力データ323又は中間データ530)及び当該処理層の層番号iを入力とする。第i層秘匿化設定確認処理部536は、各層処理秘匿化設定情報524における当該層番号の第i層処理を実行する領域の情報を参照し、参照した結果が「信頼領域」を示す場合は入力データを第i層処理部326へ入力する。一方第i層秘匿化設定確認処理部536は、参照した結果が「通常領域」を示す場合は入力データを秘匿化入力データ生成処理部525へ入力する。
【0058】
第i層処理部326は、TEE信頼領域38内にてCNN等の多層構造の機械学習における層の処理を実行し、最終層以外の場合は実行結果を中間データ327として出力し、最終層の場合は実行結果を推論結果328として出力する。
【0059】
秘匿化入力データ生成処理部525は、当該層の入力データを入力とし、入力データ保護乱数526における当該層の乱数を読出し、乱数生成部539が秘匿入力データ生成処理の度に生成する一時入力データ保護乱数537を読み出す。秘匿化入力データ生成処理部525は、これらの乱数に基づいて入力データを秘匿化する処理を実行し、秘匿化入力データ516を出力する。なお、秘匿化入力データ生成処理部525において、一時入力データ保護乱数537は使用せず秘匿化を行ってもよい。
【0060】
パラメータ秘匿化影響除去処理部533は、入力された秘匿化中間データ517に対し、各層のパラメータ保護乱数528に基づき、パラメータの秘匿化の影響を秘匿化中間データ517から取り除くパラメータ秘匿化影響除去処理を実行する。パラメータ秘匿化影響除去処理部533は、パラメータ秘匿化影響除去処理の実行結果を入力秘匿化影響除去処理部538へ入力する。
【0061】
入力秘匿化影響除去処理部538は、入力されたデータに対し、当該層の入力秘匿化影響除去パラメータ529と一時入力データ保護乱数537に基づいて、当該層への入力データの秘匿化の影響を取り除く入力秘匿化影響除去処理を実行する。入力秘匿化影響除去処理部538は、当該層が最終層以外の場合は推論結果531を出力し、当該層が最終層の場合は推論結果531を暗号化処理部329へ入力する。なお、当該層の秘匿化入力データ生成処理において、一時入力データ保護乱数537を使用せず秘匿化を行った場合、入力秘匿化影響除去処理において一時入力データ保護乱数537は用いない。また、一時入力データ保護乱数537は、秘匿推論準備処理の段階で事前に生成しておいてもよい。
【0062】
暗号化処理部229は、入力された推論結果328又は推論結果531に対し、TEE信頼領域38に保存されている暗号鍵332を用いた暗号化を実行し、暗号化推論結果330を通常領域310を経て出力する。
【0063】
また、パラメータホルダ端末50は、メモリ52、補助記憶装置53、TEE信頼領域57に格納された暗号鍵504を用いて機械学習パラメータ情報501等を暗号化する暗号化処理部502を含む。データホルダ端末10は、メモリ12、補助記憶装置13、又はTEE信頼領域17に格納された暗号鍵104を用いてデータを暗号化する暗号化処理部102を含む。処理結果利用者端末20は、メモリ22又は補助記憶装置23に格納された暗号鍵204を用いて暗号化推論結果等を復号する復号処理部202を備える。なお、パラメータホルダ端末50、データホルダ端末10及び処理結果利用者端末のいずれか2つ又は全てが同一端末でもよく、その場合、暗号化処理部502、暗号化処理部102、復号処理部202のいずれか2つ又は全てを同一端末が備える。
【0064】
また、GPU39は、メモリ32の通常領域にロードされた第i層処理プログラムに従って動作することで、第i層処理部312としての処理を実行する。また、TEE対応のCPU51は、メモリ52のTEE信頼領域57にロードされた暗号化処理プログラムに従って動作することで、暗号化処理部502としての処理を実行する。また、TEE対応のCPU11は、メモリ12のTEE信頼領域17にロードされた暗号化処理プログラムに従って動作することで、暗号化処理部102としての処理を実行する。また、CPU21は、メモリ22にロードされた推論結果表示プログラムに従って動作することで、メモリ22にロードされた復号処理プログラムに従って動作することで、復号処理部202としての処理を実行する。
【0065】
以下、図3図4とを用いて、第一の実施形態にかかる秘匿推論準備処理のデータ処理フローを説明する。図4は、秘匿推論準備処理のデータ処理フローの一例を示すシーケンス図である。先ずパラメータホルダ端末50のCPU51は、メモリ52にロードされた機械学習パラメータ秘匿化設定情報入力画面表示プログラムに従って、図11に示す機械学習パラメータ秘匿化設定情報入力画面を表示装置55に表示する。そしてCPU51は、利用者による対象とする機械学習パラメータの名称、対象の機械学習パラメータの層数、対象の機械学習パラメータの秘匿化要否及び対象の機械学習パラメータの各層処理秘匿化設定情報の入力を受付ける(ステップS401)。
【0066】
次に、パラメータホルダ端末50の暗号化処理部502は、図11に示す利用者の入力に基づく名称の機械学習パラメータを補助記憶装置53から読出して暗号化する(ステップS402)。次に暗号化処理部502は、利用者の入力に基づく各層処理秘匿化設定情報をメモリ52から読出して暗号化する(ステップS403)。次に暗号化処理部502は、これらの暗号化した機械学習パラメータ情報を秘匿情報処理サーバ30へ送信することで機械学習パラメータ及び各層処理秘匿化設定情報を登録する(ステップS404)。秘匿情報処理サーバ30は暗号化データ503を受信するとTEE信頼領域38へ入力する。TEE信頼領域38の復号処理部522が、暗号化データ503を復号することで、機械学習パラメータ523及び図12に示すデータ構造を備える各層処理秘匿化設定情報524を生成する(ステップS405)。
【0067】
次に、パラメータ秘匿化処理部534は、図6に示すパラメータ秘匿化処理を実行して実行結果を通常領域310へ出力し(ステップS406)、秘匿化機械学習パラメータ515として通常領域310へ保存する(ステップS407)。
【0068】
次に、入力秘匿化影響除去パラメータ生成処理部535は、図7に示す入力秘匿化影響除去パラメータ生成処理を実行し(ステップS408)、実行結果を入力秘匿化影響除去パラメータ529としてTEE信頼領域38に保存し、パラメータホルダ端末50へ登録完了の応答を送信する(ステップS409)。
【0069】
以下、図3図5とを用いて、第一の実施形態にかかる秘匿推論実行処理のデータ処理フローを説明する。図5は、秘匿推論実行処理のデータ処理フローの一例を示すシーケンス図である。先ずデータホルダ端末10の暗号化処理部102は、機密情報を含むデータ101を暗号化することで暗号化データ103を生成し(ステップS501)、暗号化データ103を秘匿情報処理サーバ30へ送信することでデータ登録をする(ステップS502)。秘匿情報処理サーバ30は暗号化データ103を受信するとTEE信頼領域38へ入力する。TEE信頼領域38の復号処理部322が、暗号化データ103を復号することで、入力データ323を生成し(ステップS503)、当該処理の層番号を示す変数iの値を1として初期化する(ステップS504)。
【0070】
第i層秘匿化設定確認処理部536は、各層処理秘匿化設定情報524における第i層処理を実行する領域の情報を読出す(ステップS505)。その後第i層秘匿化設定確認処理部536は、ステップS506に遷移し、読出した結果が「信頼領域」を示す(ステップS506No)場合、入力データを第i層処理部326へ入力して第i層の機械学習パラメータ情報を読出す(ステップS507)。そして第i層秘匿化設定確認処理部536は、TEE信頼領域38内で第i層処理を実行する(ステップS508)。
【0071】
一方第i層秘匿化設定確認処理部536は、読出した結果が「通常領域」を示す場合(ステップS506Yes)、入力データを秘匿化入力データ生成処理部525へ入力して図8に示す秘匿化入力データ生成処理を実行する(ステップS509)。そして第i層秘匿化設定確認処理部536は、実行結果の第i層秘匿化入力データを通常領域310へ出力する(ステップS510)。
【0072】
また第i層秘匿化設定確認処理部536は、ステップS508の後にステップS517へ遷移し、第i層が最後の処理層でない場合(ステップS517No)、第i層処理の出力データを次の層の入力データとしiをインクリメントしてステップS505へ遷移する。一方第i層秘匿化設定確認処理部536は、第i層が最後の処理層である場合(ステップS517Yes)、暗号化処理部329が第i層処理の出力データを推論結果として暗号化して処理結果利用者端末20へ送信する(ステップS518)。
【0073】
次に、通常領域310の第i層処理部312は、第i層の秘匿化入力データ516を入力として読出す(ステップS511)。次に第i層処理部312は、第i層処理を実行し、実行結果を秘匿化中間データ517としてTEE信頼領域38のパラメータ秘匿化影響除去処理部533へ入力する(ステップS512)。
【0074】
例えば、式(1)を用いて第i層処理が実行される。式(1)は、第i層秘匿化入力データx_i´行列と第i層の秘匿化機械学習パラメータW_i´行列の積を実行し、実行結果y_i´を算出する演算を表す。
【0075】
【数1】
【0076】
次に、パラメータ秘匿化影響除去処理部533は、図9に示すパラメータ秘匿化影響除去処理を実行し、実行結果である第i層のパラメータ秘匿化影響除去中間データを入力秘匿化影響除去処理部538へ入力する(ステップS513)。
【0077】
次に入力秘匿化影響除去処理部538は、図10に示す入力秘匿化影響除去処理を実行し(ステップS514)、ステップS515へ遷移する。入力秘匿化影響除去処理部538は、第i層が最後の処理層でない場合(ステップS515No)、実行結果である第i層の出力データを次の層の入力データとしiをインクリメントしてステップS505へ遷移する。一方入力秘匿化影響除去処理部538は、第i層が最後の処理層である場合(ステップS515Yes)、実行結果である第i層の出力データを推論結果として暗号化処理部329へ入力する。そして入力秘匿化影響除去処理部538は、暗号化した推論結果を処理結果利用者端末20へ送信する(ステップS518)。
【0078】
図6は、パラメータ秘匿化処理の一例を示すフローチャートである。TEE信頼領域38のパラメータ秘匿化処理部534は、先ずiの値を1として初期化する(ステップS601)。
【0079】
次に、パラメータ秘匿化処理部534は、各層処理秘匿化設定情報524から第i層処理を実行する領域の情報を読出し(ステップS602)てステップS603へ遷移する。パラメータ秘匿化処理部534は、読出した結果が「信頼領域」を示す場合(ステップ603No)、ステップS607へ遷移する。一方パラメータ秘匿化処理部534は、読出した結果が「通常領域」を示す場合(ステップ603Yes)、ステップS604へ遷移する。
【0080】
次に、パラメータ秘匿化処理部534は、機械学習パラメータ523から第i層の機械学習パラメータを読み出す(ステップS604)。そしてパラメータ秘匿化処理部534は、乱数生成部539が生成する第i層のパラメータ保護用の乱数を取得してパラメータ保護乱数528に追加し保存する(ステップS605)。
【0081】
例えば、第i層の機械学習パラメータは、式(2)を用いて表される。式(2)のW_iは、p行q列の行列を表す。また、例えば、第i層のパラメータを保護するための第i層パラメータ保護乱数は、式(3)を用いて表される。式(3)のβ_iはスカラーの乱数である。
【0082】
【数2】
【0083】
【数3】
【0084】
次に、パラメータ秘匿化処理部534は、第i層の機械学習パラメータと第i層の機械学習パラメータを乗算し、第i層の秘匿化機械学習パラメータを算出する(ステップS606)。
【0085】
例えば、式(4)を用いて秘匿化機械学習パラメータが算出される。式(4)のW_i´は、秘匿化された第i層の機械学習パラメータである第i層秘匿化パラメータの一例であり、p行q列の行列を表す。
【0086】
【数4】
【0087】
次にパラメータ秘匿化処理部534は、第i層が最後の処理層ではない場合(ステップS607No)、iをインクリメント(ステップS608)してステップS602へ遷移する。一方パラメータ秘匿化処理部534は、第i層が最後の処理層である場合(ステップS607Yes)、算出した秘匿機械学習パラメータ群を通常領域310へ出力し秘匿化機械学習パラメータ515として保存し、パラメータ秘匿化処理を終了する。
【0088】
図7は、入力秘匿化影響除去パラメータ生成処理の一例を示すフローチャートである。TEE信頼領域38の入力秘匿化影響除去パラメータ生成処理部535は、先ずiの値を1として初期化する(ステップS701)。
【0089】
次に入力秘匿化影響除去パラメータ生成処理部535は、各層処理秘匿化設定情報524から第i層処理を実行する領域の情報を読出し(ステップS702)てステップS703へ遷移する。入力秘匿化影響除去パラメータ生成処理部535は、読出した結果が「信頼領域」を示す(ステップ703No)場合、ステップS707へ遷移する。一方入力秘匿化影響除去パラメータ生成処理部535は、読出した結果が「通常領域」を示す場合(ステップ703Yes)、ステップS704へ遷移する。
【0090】
次に、入力秘匿化影響除去パラメータ生成処理部535は、乱数生成部539が生成する第i層の入力データ保護用の入力データ保護乱数を取得してTEE信頼領域38の入力データ保護乱数526に追加して保存する(ステップS704)。次に入力秘匿化影響除去パラメータ生成処理部535は、機械学習パラメータ523から第i層の機械学習パラメータを読み出す(ステップS705)。
【0091】
例えば、式(5)を用いて第i層の入力データ保護乱数が表される。式(5)のr_iは第i層入力データ保護乱数の一例であり、m行n列の行列を表し、行列の各要素はそれぞれ異なる乱数である。
【0092】
【数5】
【0093】
また、例えば、式(6)を用いて第i層の入力データ保護乱数が表される。式(6)のr_i^(j)は、第i層の入力データ保護乱数の一例であり、1個のm行n列の行列群を表し、行列の各要素はそれぞれ異なる乱数である。
【0094】
【数6】
【0095】
次に、入力秘匿化影響除去パラメータ生成処理部535は、第i層の入力データ保護乱数と第i層の機械学習パラメータを乗算して第i層の入力秘匿化影響除去パラメータを算出する(ステップS706)。
【0096】
例えば、式(7)を用いて第i層の入力秘匿化影響除去パラメータが算出される。式(7)のu_iは第i層の入力データから秘匿化の影響を除去する第i層入力データ秘匿化除去パラメータの一例であり、第i層の入力データ保護乱数r_i行列と第i層の機械学習パラメータW_i行列の積により算出される。
【0097】
【数7】
【0098】
また例えば、式(8)を用いて第i層の入力秘匿化影響除去パラメータが算出される。式(8)のu_i^(j)は第i層の入力秘匿化影響除去パラメータ群の一例であり、第i層の入力データ保護乱数r_i^(j)行列と第i層の機械学習パラメータW_i行列の積により算出される。
【0099】
【数8】
【0100】
次に入力秘匿化影響除去パラメータ生成処理部535は、ステップS707において、第i層が最後の処理層ではない場合(ステップS707No)、iをインクリメント(ステップS708)してステップS702へ遷移する。一方入力秘匿化影響除去パラメータ生成処理部535は、第i層が最後の処理層である場合(ステップS707Yes)、算出した入力秘匿化影響除去パラメータ群をTEE信頼領域38の入力秘匿化影響除去パラメータ529として保存する(ステップS707)。入力秘匿化影響除去パラメータ生成処理部535は、ステップS707が終了すると、入力秘匿化影響除去パラメータ生成処理を終了する。
【0101】
図8は、秘匿化入力データ生成処理の一例を示すフローチャートである。TEE信頼領域38の秘匿化入力データ生成処理部525は、先ず当該層である第i層の入力データを読み出す(ステップS801)。
【0102】
例えば、式(9)を用いて第i層の入力データが表される。式(9)のx_iは第i層の入力データの一例であり、m行n列の行列を表し、行列の各要素はそれぞれ数値である。
【0103】
【数9】
【0104】
次に、秘匿化入力データ生成処理部525は、入力データ保護乱数526から第i層の入力データ保護乱数を読出し(ステップS802)、乱数生成部539から新たな乱数を取得して一時入力データ保護乱数537として保存する(ステップS803)。
【0105】
例えば、式(10)を用いて第i層の一時入力データ保護乱数が表される。式(10)のα_iは第i層の一時入力データ保護乱数の一例であり、単一の乱数を表す。
【0106】
【数10】
【0107】
また、例えば、式(11)を用いて第i層の一時入力データ保護乱数が表される。式(11)のα_i^(j)は、l個のそれぞれ異なる乱数である。
【0108】
【数11】
【0109】
次に、秘匿化入力データ生成処理部525は、一時入力データ保護乱数537を第i層の入力データ保護乱数に乗算し第i層の一時入力データ保護乱数を算出する(ステップS804)。
【0110】
次に、秘匿化入力データ生成処理部525は、第i層の入力データと第i層の一時入力データ保護乱数を加算し第i層の秘匿化入力データを算出し、通常領域310へ出力して秘匿化入力データ516として保存し、処理を終了する(ステップS805)。
【0111】
例えば、式(12)を用いて第i層の秘匿化入力データが算出される。式(12)のx_i´は、秘匿化入力データの一例であり、m行n列の行列を表す。
【0112】
【数12】
【0113】
また例えば、式(13)を用いて第i層の秘匿化入力データが算出される。式(13)のx_i´は、秘匿化入力データの一例であり、m行n列の行列を表す。
【0114】
【数13】
【0115】
図9は、パラメータ秘匿化影響除去処理の一例を示すフローチャートである。TEE信頼領域38のパラメータ秘匿化影響除去処理部533は、先ず当該層である第i層の秘匿化中間データ517を読み出す(ステップS901)。次にパラメータ秘匿化影響除去処理部533は、パラメータ保護乱数528から当該層である第i層のパラメータ保護乱数を読み出す(ステップS902)。次にパラメータ秘匿化影響除去処理部533は、第i層の秘匿化中間データ517を第i層のパラメータ保護乱数で除算し、第i層のパラメータ秘匿化影響除去中間データを算出してTEE信頼領域38に保存する(ステップS903)。
【0116】
例えば、式(14)を用いて第i層のパラメータ秘匿化影響除去中間データが算出される。式(14)のy_i^~は、第i層のパラメータ秘匿化影響除去中間データ秘匿化入力データの一例であり、行列を表す。
【0117】
【数14】
【0118】
図10は、入力秘匿化影響除去処理の一例を示すフローチャートである。TEE信頼領域38の入力秘匿化影響除去処理部538は、先ず当該層である第i層のパラメータ秘匿化影響除去中間データを読出す(ステップS1001)。次に入力秘匿化影響除去処理部538は、一時入力データ保護乱数537を読出す(ステップS1002)。次に入力秘匿化影響除去処理部538は、入力秘匿化影響除去パラメータ529から当該層である第i層の入力秘匿化影響除去パラメータを読出す(ステップS1003)。
【0119】
次に、入力秘匿化影響除去処理部538は、一時入力データ保護乱数537と第i層の入力秘匿化影響除去パラメータを乗算し、第i層の一時入力秘匿化影響除去パラメータを算出する(ステップS1004)。
【0120】
次に、入力秘匿化影響除去処理部538は、第i層の秘匿化パラメータ影響除去中間データから第i層の一時入力秘匿化影響除去パラメータを減算した結果を第i層の出力データとして出力し、処理を終了する(ステップS1005)。
【0121】
例えば、式(15)を用いて、第i層の出力データが算出される。式(15)は、入力秘匿化影響除去処理の実行結果である第i層出力データの一例であり、y_iは式(16)の行列で表される。
【0122】
【数15】
【0123】
【数16】
【0124】
また、例えば、式(17)を用いて、第i層の出力データが算出される。式(17)は、第i層の出力データの一例であり、y_iは式(16)の行列で表される。
【0125】
【数17】
【0126】
図11は、機械学習パラメータ秘匿化設定情報入力画面の一例を示すダイアログ図である。パラメータホルダ端末50のCPU51は、メモリ52にロードされた機械学習パラメータ秘匿化設定情報入力画面表示プログラムに従って、機械学習パラメータ秘匿化設定情報入力画面1100を表示装置55に表示する。
【0127】
機械学習パラメータ秘匿化設定情報入力画面1100の対象パラメータ入力部1101は、秘匿情報処理サーバ30へ送信する対象とする機械学習パラメータの識別情報(ファイル名等)を利用者が入力する入力フォームである。処理層総数入力部1102は、対象とする機械学習パラメータの総数を利用者が入力する、又はCPU51が機械学習パラメータから層数を読み取り入力する入力フォームである。パラメータ秘匿化要否入力部1103は、利用者が対象とする機械学習パラメータを秘匿情報処理サーバ30に対して秘匿化することの要否を指定する、又はCPU51が対象とする機械学習パラメータから秘匿化の要件を読み取り入力する入力フォームである。
【0128】
機械学習パラメータ秘匿化設定情報入力画面1100の層処理タイプ入力部1111~1114は、利用者が各処理層の演算の種類を入力する、又はCPU51が対象とする機械学習パラメータから各層の演算の種類を読み取り入力する入力フォームである。信頼領域秘匿処理可否入力部1121~1124は、利用者が当該層の演算がTEE信頼領域38で処理可能であるか否かを入力する、又はCPU51が対象とする機械学習パラメータから各層の演算の種類に基づき入力する入力フォームである。通常領域秘匿処理可否入力部1131~1134は、利用者が当該層の演算が通常領域310で秘匿化したまま演算可能であるか否かを入力する、又はCPU51が対象とする機械学習パラメータから各層の演算の種類に基づき入力する入力フォームである。第i層処理実行領域入力部1141~1144は、利用者が当該層の演算を通常領域310で実行するかTEE信頼領域38で実行するかを入力する、又はCPU51が対象とする機械学習パラメータから各層の演算の種類に基づき入力する入力フォームである。
【0129】
機械学習パラメータ秘匿化設定情報入力画面1100の入力確定操作部1105は、利用者が各フォームへの入力内容を確定する際に、マウス等の入力装置56を用いて押下する入力ボタンである。入力取消操作部1106は、利用者が各フォームへの入力内容を取消して入力を中止する際に、マウス等の入力装置56を用いて押下する入力ボタンである。
【0130】
図12は、各層処理秘匿化設定情報のデータ構造の一例を示す表である。図12では、TEE信頼領域38の各層処理秘匿化設定情報524の一例として、パラメータホルダ端末50が送信した機械学習パラメータの各層の処理の秘匿化設定の情報を格納した各層処理秘匿化設定情報524が示されている。
【0131】
図12の各層処理秘匿化設定情報524は、層番号、層の処理タイプ、信頼領域での秘匿処理可否、通常領域での秘匿処理可否、及び第i層処理を実行する領域のカラムを有して構成される。具体的に例えば、3行目のレコード5243は、複数の処理層の3層目の層の処理タイプがdenseという線形演算を実行する処理であることを示す。またレコード5243は、信頼領域での機密パラメータ・データを保護したまま処理する秘匿処理が可能であることを示す。またレコード5243は、通常領域での機密パラメータ・データを保護したまま処理する秘匿処理が可能であり、利用者が指定した第3層処理を実行する領域が通常領域であることを示す。なお、当然ながら、本実施形態に係る秘匿情報処理システム1で利用できる各層処理秘匿化設定情報524は、上記のような設定情報データに限定されるものではなく、データベース等のデータ構造全般を採用することができる。
【0132】
(3)実施形態の効果
上述の実施形態の秘匿情報処理サーバ30は、機密情報である機械学習パラメータの預託を受けた際、GPU等の高速な処理が可能な通常領域に機械学習パラメータを配置する前に、TEE信頼領域において機械学習パラメータのパラメータ秘匿化処理を実行する。このため、秘匿情報処理サーバ30の通常領域のデータにアクセスできるサーバ管理者や管理者の権限を奪ったサイバー攻撃者に対し、機密情報である機械学習パラメータの情報漏洩を防ぐことができる。
【0133】
また秘匿情報処理サーバ30は、機密情報である入力情報に対してCNN等の複数層の処理からなる推論処理を通常領域で実行する際に、TEE信頼領域において秘匿化入力データ生成処理を実行してから通常領域へ秘匿化入力データを出力する。そして、GPU等の高速な処理が可能な通常領域にて秘匿化入力データと秘匿化機械学習パラメータに基づきCNN等の各層の処理を実行して秘匿化中間データを生成する。そして、生成した秘匿化中間データをTEE信頼領域に入力してからパラメータ秘匿化影響除去処理及び入力秘匿化影響除去処理を実行して推論処理結果を算出する。そして、TEE信頼領域にて機密情報である推論処理結果を暗号化して、処理結果利用者端末20又はデータホルダ端末10へ送信する。よって、機密情報である入力データ、機械学習パラメータ及び推論結果をGPU等の高速な処理が可能な通常領域で保存又は処理する際に常に秘匿化又は暗号化した状態で取り扱うことができる。これにより、複数層の処理からなる推論処理をGPU等の高速な処理が可能な通常領域で実行する際に、秘匿情報処理サーバ30の攻撃者に対し、機密情報である入力データ、機械学習パラメータ及び推論処理結果が情報漏洩することを防ぐことができる。
【0134】
また秘匿情報処理サーバ30は、機密情報である入力情報に対してCNN等の複数層の処理からなる推論処理を通常領域で実行する際に、TEE信頼領域においてその入力情報のみに使用する一時乱数を生成する。そして、入力情報毎に異なる乱数を含む秘匿化入力データ生成処理を実行してから通常領域へ秘匿化入力データを出力する。このため、入力情報毎に異なる一時乱数を使用しない場合に秘匿情報処理サーバ30のサーバ管理者やサイバー攻撃者が入力情報を意図的に0として秘匿化入力データ生成処理を行う。よって入力データ保護乱数を特定し入力情報を暴露することによる情報漏洩を防ぐことができる。
【0135】
また、秘匿情報処理サーバ30は、パラメータホルダ端末50の利用者が指定した各層処理秘匿化設定情報に基づき、機械学習パラメータの各層毎に、通常領域で処理するかTEE信頼領域で処理するかを指定できる。このため、機械学習パラメータの各層の種類等の特徴毎に異なるGPUによる処理の可否や高速化効果の有無等を考慮した各層毎の処理を実行する領域の指定ができ、CNN等の複数層の処理からなる推論処理を効率化することができる。
【0136】
(4)その他の実施形態
(4-1)第i層の処理の実行主体
上述の実施形態では、秘匿情報処理サーバ30は、通常領域310において第i層の処理を実行し、TEE信頼領域38において第i層パラメータと第i層入力データの秘匿化及び秘匿化の解除を行うとした。第i層の処理は、必ずしも秘匿情報処理サーバ30によって実行される必要はなく、秘匿情報処理サーバ30と通信を介して接続される通常領域を有する外部装置で実行されてもよい。すなわち秘匿情報処理サーバ30は、第i層の処理の実行指示を外部装置に出力する。そして外部装置は、実行指示に応じて、通常領域において第i層の処理を実行し、実行結果を秘匿情報処理サーバ30に返す。そして秘匿情報処理サーバ30は、外部装置から第i層の処理の実行結果を取得するとしてもよい。
【0137】
(4-2)第i層の入力データ保護のための一時乱数
上述の実施形態では、第i層入力データ保護乱数(式(5))に第i層の入力データを保護する一時乱数α_i(式(10))を乗算した第i層一時入力データ保護乱数α_i・r_iを用いて(式(12))、第i層の入力データの秘匿化を行う。しかし必ずしも第i層の一時乱数α_iを用いる必要はなく、第i層の一時乱数α_iに代えて“1”を用いてもよい。
【0138】
(4-3)第i層入力データ保護乱数
上述の実施形態では、第i層入力データ保護乱数(式(5))に第i層の入力データを保護する一時乱数α_i(式(10))を乗算した第i層一時入力データ保護乱数α_i・r_iを用いて(式(12))、第i層の入力データの秘匿化を行う。しかし必ずしも第i層入力データ保護乱数を用いる必要はなく、第i層入力データ保護乱数に代えて、第i層入力データ保護乱数とサイズが同一の行列であって要素が全て“1”の行列を用いてもよい。
【0139】
本発明は上述した実施形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施形態の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【0140】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよい。また前述した各構成、機能、処理部、処理手段等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0141】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
【0142】
また、図面において制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【0143】
また、本発明は、個人情報に加えて営業機密等、機密性が高く社内規則等で社外への公開が制限されている機密情報を秘匿化して社外組織等に提供する場合にも、同様の効果を得ることができる。
【0144】
そして本発明は、顧客情報や医療情報等の個人情報、及び営業機密等の機密情報を扱う複数の組織において、個人情報や営業機密情報を秘匿したまま高度なDeep Learning等の処理効率を向上することができるため、多様な機密情報を連携する公共・民間サービス向けの情報処理システムに広く適用することができる。
【符号の説明】
【0145】
1:秘匿情報処理システム、30:秘匿情報処理サーバ、31:CPU、38:TEE信頼領域、310:通常領域、312:第i層処理部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12