(57)【要約】      （修正有）【課題】トラステッド実行環境(TEE)における演算を、機密性を保持しつつ、外部リソースに動作を委託する方法を提供する。【解決手段】トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成する（３０２）。次いで、第１の暗号文をグラフィックス処理ユニット（GPU）に伝達する（３０４）。次いで、前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成する（３０６）。更に、前記第２の暗号文を前記TEEに伝達し（３０８）、前記TEEにおいて、前記第２の暗号文を復号して、関数を算出する（３１０）。【選択図】図３
2019191575.tif 000002
【特許請求の範囲】
【請求項１】
動作を委託する方法であって、
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成するステップと、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達するステップと、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成するステップと、
前記第２の暗号文を前記TEEに伝達するステップと、
前記TEEにおいて、前記第２の暗号文を復号して、関数を算出するステップと、
を含む方法。
【請求項２】
前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成するステップと、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するステップと、
のうちの少なくとも１つをさらに含む、請求項１に記載の方法。
【請求項４】
複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価するステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
前記第２の暗号文を復号することは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号することを含む、請求項１に記載の方法。
【請求項６】
前記少なくとも１つのSHE評価動作を実行することは、中間関数に基づいて、前記第１の暗号文を評価することを含む、請求項１に記載の方法。
【請求項７】
前記データを暗号化することは、準同型暗号を用いて前記データを暗号化することを含む、請求項１に記載の方法。
【請求項８】
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成する動作と、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達する動作と、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成する動作と、
前記第２の暗号文を前記TEEに伝達する動作と、
前記TEEにおいて、前記第２の暗号文を復号して、関数を生成する動作と、
を実行するよう構成されている１つ以上の処理ユニット
を有するシステム。
【請求項９】
前記１つ以上の処理ユニットは、前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定する動作を実行するようさらに構成されている、請求項８に記載のシステム。
【請求項１０】
前記１つ以上の処理ユニットは、
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成する動作と、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行する動作と、
のうちの少なくとも１つを実行するようさらに構成されている、請求項８に記載のシステム。
【請求項１１】
前記１つ以上の処理ユニットは、複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価する動作を実行するようさらに構成されている、請求項８に記載のシステム。
【請求項１２】
前記TEEは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号するよう構成されている、請求項８に記載のシステム。
【請求項１３】
前記１つ以上の処理ユニットは、中間関数に基づいて、前記第１の暗号文を評価する動作を実行するようさらに構成されている、請求項８に記載のシステム。
【請求項１４】
前記データは、準同型暗号を用いて暗号化される、請求項８に記載のシステム。
【請求項１５】
命令を含む１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記命令が、１つ以上のプロセッサにより実行されたときに、前記命令は、前記１つ以上のプロセッサに複数の動作を実行させるよう構成されており、前記複数の動作は、
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成する動作と、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達する動作と、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成する動作と、
前記第２の暗号文を前記TEEに伝達する動作と、
前記TEEにおいて、前記第２の暗号文を復号して、関数を生成する動作と、
を含む、コンピュータ読み取り可能な媒体。
【請求項１６】
前記複数の動作は、
前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定する動作
をさらに含む、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項１７】
前記複数の動作は、
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成する動作と、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行する動作と、
のうちの少なくとも１つをさらに含む、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記複数の動作は、
複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価する動作
をさらに含む、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記第２の暗号文を復号することは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号することを含む、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記少なくとも１つのSHE評価動作を実行することは、中間関数に基づいて、前記第１の暗号文を評価することを含む、請求項１５に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示に記載の実施形態は、準同型暗号を用いて処理動作を委託することに関する。
【背景技術】
【０００２】
プロセッサのセキュアな領域であるトラステッド実行環境（TEE）は、ユーザデータに対して動作（例えば演算）を実行している間であっても、ユーザデータの機密性等、セキュリティ保障を提供することができる。
【０００３】
本出願において特許請求される主題は、あらゆる欠点を解決する実施形態又は上記のような環境においてのみ動作する実施形態に限定されるものではない。そうではなく、この背景技術の記載は、本開示に記載のいくつかの実施形態が実施され得る１つの例示的な技術領域を示すために提供されているに過ぎない。
【発明の概要】
【０００４】
一実施形態の一態様に従うと、方法は、トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成するステップを含み得る。この方法はまた、前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達するステップを含み得る。さらに、この方法は、前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成するステップを含み得る。さらに、この方法は、前記第２の暗号文を前記TEEに伝達するステップを含み得る。さらに、この方法は、前記TEEにおいて、前記第２の暗号文を復号して、関数を生成するステップを含み得る。
【０００５】
実施形態の目的及び利点が、少なくとも請求項において特に示される要素、特徴、及び組み合わせにより、実現及び達成される。
【０００６】
前述の総括的な説明及び以下の詳細な説明の両方ともが、例示的で説明的なものであり、特許請求される発明を限定するものではない。
【図面の簡単な説明】
【０００７】
例示的な実施形態が、添付の図面を使用して、より具体的且つ詳細に記載及び説明される。
【図１】トラステッド実行環境を含む例示的なシステムを示す図。
【図２】動作を委託するどうかを決定する方法の例示的なフロー図。
【図３】暗号化を用いて動作を委託する方法の例示的なフロー図。
【図４】複数の処理ユニットにおいて動作を処理する例示的なタイミング図。
【図５】複数の処理ユニットを含む例示的なシステムを示す図。
【図６】例示的なコンピューティングシステムのブロック図。
【発明を実施するための形態】
【０００８】
本開示に記載の様々な実施形態は、暗号化（例えば準同型暗号）を用いて１つ以上の処理動作を委託することに関する。より詳細には、例えば、１つ以上の処理動作（例えばTEE演算）は、暗号化（例えば準同型暗号）を用いて、（例えば中央処理ユニット（CPU）の）TEEから別の処理ユニット（例えばグラフィックス処理ユニット（GPU））に委託され得る。
【０００９】
完全準同型暗号（FHE）は、処理動作（例えば演算）がメッセージの暗号文に対して実行されることを可能にし得る。さらに、FHEは、メッセージの復号及び復元を可能にし得る。FHEは、本質的に非効率的であり、実用的ではないと考えられ得る。「somewhat準同型暗号」（SHE）と呼ばれる、FHEの「より弱い」変形版は、準同型暗号を可能にするが、制限された又はより少ない動作（例えば演算）しか可能にしない。多くのインスタンスにおいて、SHEはFHEよりもはるかに速い。
【００１０】
TEEは、外部パーティによりアクセス、変更、又は調査され得ない、プロセッサ（例えばメインプロセッサ（例えば中央処理ユニット（CPU）））のセキュアな領域である。TEEは、様々な暗号動作の実行を可能にする。TEEは、比較的効率的である（例えば、平文での演算よりもわずかに遅い）。しかしながら、TEEは、比較的少量のメモリしかサポートせず、外部リソース（例えばGPU）の使用を可能にしないことがある。
【００１１】
GPUは、並列化及び／又は単一命令複数データ（SIMD）処理のために構成され得る。さらに、CPUと比較して、GPUは、低いクロック速度を有し得る。GPUは、元々は、グラフィックス処理のために設計されたのかもしれないが、より最近では、GPUは、より一般的な演算のために設計されている。
【００１２】
本開示の様々な実施形態において、SHEは、GPU等の外部リソースを使用して、TEEによるより効率的なセキュア演算を実現するために、TEE内で用いられ得る。例えば、少なくともいくつかの実施形態において、１つ以上のセキュア演算は、複数のSHE演算に分割され得、ここで、TEEが、セキュアに用いられ得る。
【００１３】
本出願において開示される様々な実施形態は、ソフトウェアFHE等の遅い暗号方式に訴えることなく、高コストの演算を効率的に実行するために、TEEの欠点のうちの一部を取り除くことができる。
【００１４】
したがって、本開示の様々な実施形態は、本開示においてより詳細に説明されるように、人間により合理的には行われ得ないテクノロジから生じる１つ以上の問題に対する技術的解決策を提供し、本出願において開示される様々な実施形態は、上述した問題及び／又は課題を克服するために、コンピュータテクノロジに根差している。さらに、本出願において開示される少なくともいくつかの実施形態は、コンピュータにより以前には実行できなかった機能のコンピュータ実行を可能にすることにより、コンピュータ関連テクノロジを向上させることができる。
【００１５】
本開示の実施形態が、添付の図面を参照しながら、これより説明される。
【００１６】
図１は、本開示の少なくとも１つの実施形態に従った例示的なシステム１００を示している。システム１００は、中央処理ユニット（CPU）１０２、TEE１０４、及び処理ユニット１０６を含む。少なくともいくつかの実施形態において、TEE１０４は、CPU１０２内に存在し得る。例えば、処理ユニット１０６は、グラフィックス処理ユニット（GPU）を含み得る。
【００１７】
少なくともいくつかの実施形態に従うと、TEE１０４は、入力（例えばメッセージ）を暗号化し、暗号文を生成するよう構成され得る。より具体的には、例えば、TEE１０４は、入力x（例えば、処理ユニット１０２において受信された入力）を受信し、Encrypt（暗号化）関数１０８を介して、暗号文cを生成するよう構成され得る。さらに、暗号文は、処理ユニット１０６に伝達され得、本開示においてより詳細に説明されるように、処理ユニット１０６は、別の暗号文を生成するよう構成され得る。少なくともいくつかの実施形態において、暗号文c及び関数f（本開示において、中間関数（intermediate  function）とも呼ばれる）が、TEE１０４から処理ユニット１０６に伝達され得る。
【００１８】
さらに、例えば、処理ユニット１０６は、暗号文cを受信し、暗号文cに対して、関数fのSHE動作（例えばSHE評価）を（例えばEval（評価）関数１１０を介して）実行して、暗号文c’を生成するよう構成され得る。さらに、処理ユニット１０６は、復号のために、別の暗号文（例えば暗号文c’）をTEE１０４に伝達するよう構成され得る。例えば、TEE１０４は、暗号文c’を受信すると、暗号文c’を（例えばDecrypt（復号）関数を介して）復号して、関数f(x)を生成することができる。TEE１０４は、復号（例えば、暗号文c’の復号）のために使用され得る秘密鍵skを生成するためのKeygen（鍵生成）関数１１４をさらに含み得る。
【００１９】
本開示のいくつかの実施形態は、TEE（例えばTEE１０４）が、１つ以上の動作（例えば演算）を別の処理ユニット（例えば処理ユニット１０６）に委託するべきかどうかを決定することに関し得る。少なくともいくつかの実施形態において、１つ以上の動作を委託するかどうかを決定する際に、様々なファクタが考慮され得る。例えば、TEE（例えばTEE１０４）における関数の演算時間、TEEにおける入力（例えばメッセージ）の暗号化時間、別の処理ユニット（例えば処理ユニット１０６）における関数の動作時間（例えば評価時間）、及び／又はTEEにおける暗号文の復号時間が、動作（例えば演算）を委託するかどうかを決定する際に考慮され得る。
【００２０】
図２は、本開示の１つ以上の実施形態に従った、動作を委託するかどうかを決定する例示的な方法２００のフローチャートを示している。いくつかの実施形態において、方法２００に関連付けられている動作のうちの１つ以上の動作は、図１のシステム１００により実行され得る。代替的又は追加的に、方法２００は、任意の適切なシステム、装置、又はデバイスにより実行されてもよい。例えば、図６に示されているシステム６００のプロセッサ６１０が、方法２００に関連付けられている動作のうちの１つ以上の動作を実行してもよい。別個のブロックを用いて図示されているが、方法２００のブロックのうちの１つ以上のブロックに関連付けられているステップ及び動作は、所望される実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わせられることもあるし、除去されることもある。
【００２１】
ブロック２０２において、システム（例えば、図１のシステム１００）に関連付けられている１つ以上の動作についての１つ以上の処理時間が決定され得、方法２００は、ブロック２０４に進み得る。例えば、中央処理ユニット（例えば、図１のCPU１０２）のTEE（例えば、図１のTEE１０４）において関数（例えば、関数f（図１参照））を実行するための演算時間、TEEにおける入力（例えば、入力x（図１参照））の暗号化時間、別の処理ユニット（例えば、図１の処理ユニット１０６）における関数の評価時間（例えば準同型評価時間）、及びTEEにおける暗号文（例えば、図１の暗号文c’）の復号時間のうちの１つ以上が、決定され得る。
【００２２】
ブロック２０４において、１つ以上の動作を委託するかどうかが決定され得る。いくつかの実施形態において、この決定は、ブロック２０２において決定された処理時間のうちの少なくとも１つに基づいてなされ得る。１つ以上の動作を委託すると決定された場合、方法２００は、ブロック２０６に進み得る。１つ以上の動作を委託しないと決定された場合、方法２００は、ブロック２０８に進み得る。
【００２３】
例えば、少なくともいくつかの実施形態において、TEE（例えばTEE１０４）における関数の演算時間が、１）TEEにおける入力の暗号化時間と、２）別の処理ユニット（例えば処理ユニット１０６）における関数の評価時間と、３）TEEにおける暗号文の復号時間と、の合計よりも大きい場合、演算を別の処理ユニット（例えば、図１の処理ユニット１０６）に委託すると決定され得る（例えば、（TEE１０４における関数fの演算時間）  >  （（TEE１０４における入力xの暗号化時間）  +  （処理ユニット１０６における関数fの準同型評価時間）  +  （TEE１０４における暗号文c’の復号時間））である場合、関数fの演算が委託され得る）。
【００２４】
TEE（例えばTEE１０４）における関数の演算時間が、１）TEEにおける入力の暗号化時間と、２）別の処理ユニット（例えば処理ユニット１０６）における関数の評価時間と、３）TEEにおける暗号文の復号時間と、の合計以下である場合、演算を別の処理ユニットに委託しないと決定され得る（例えば、（TEE１０４における関数fの演算時間）  !>  （（TEE１０４における入力xの暗号化時間）  +  （処理ユニット１０６における関数fの準同型評価時間）  +  （TEE１０４における暗号文c’の復号時間））である場合、関数fの演算が委託され得ない）。
【００２５】
ブロック２０６において、１つ以上の動作が、別の処理ユニット（例えば、図１の処理ユニット１０６）において実行され得る。ブロック２０８において、１つ以上の動作が、TEE（例えば、図１のCPU１０２）において実行され得る。
【００２６】
本開示の範囲から逸脱することなく、方法２００に対して、変更、追加、又は省略が可能である。例えば、いくつかの実施形態では、ブロック２０２において、TEEにおける（例えば、（例えば、f1(x1)，．．．，fn(xn)の）評価のための）n個の関数fiの演算時間、TEEにおける入力（例えば、入力x（図１参照））の暗号化時間、別の処理ユニット（例えば、図１の処理ユニット１０６）におけるn個の関数fiの評価時間（例えば準同型評価時間）、及び暗号文（例えば、図１の暗号文c’n）の復号時間が、決定されてもよい。
【００２７】
さらに、この例では、ブロック２０４において、TEE（例えばTEE１０４）におけるn個の関数の演算時間が、１）TEEにおける入力の暗号化時間と、２）別の処理ユニット（例えば処理ユニット１０６）におけるn個の関数の評価時間と、３）TEEにおける暗号文の復号時間と、の合計よりも大きい場合、動作を別の処理ユニット（例えば、図１の処理ユニット１０６）に委託すると決定され得る。
【００２８】
さらに、例えば、方法２００の動作は、異なる順番で実行されることもある。さらに、説明された動作及びステップは、例として提供されているに過ぎず、動作及びステップのうちの一部は、開示されている実施形態の本質を損なうことなく、任意的であることもあるし、より少ない動作及びステップに組み合わせられることもあるし、追加の動作及びステップに拡張されることもある。
【００２９】
図３は、本開示の１つ以上の実施形態に従った、暗号化を用いて動作を委託する例示的な方法３００のフローチャートを示している。いくつかの実施形態において、方法３００に関連付けられている動作のうちの１つ以上の動作は、図１のシステム１００により実行され得る。代替的又は追加的に、方法３００は、任意の適切なシステム、装置、又はデバイスにより実行されてもよい。例えば、図６に示されているシステム６００のプロセッサ６１０が、方法３００に関連付けられている動作のうちの１つ以上の動作を実行してもよい。別個のブロックを用いて図示されているが、方法３００のブロックのうちの１つ以上のブロックに関連付けられているステップ及び動作は、所望される実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わせられることもあるし、除去されることもある。
【００３０】
ブロック３０２において、入力が、第１の処理ユニットにおいて、暗号化されて、第１の暗号文が生成され得、方法３００は、ブロック３０４に進み得る。例えば、図１を参照すると、入力x（例えばメッセージ）が、CPU１０２において、準同型暗号を用いて暗号化されて、暗号文cが生成され得る。より具体的には、例えば、入力xが、CPU１０２のTEE１０４において暗号化され得る。さらに、例えば、入力は、図６のプロセッサ６１０により暗号化され得る。
【００３１】
ブロック３０４において、第１の暗号文が、第２の処理ユニットに伝達され得、方法３００は、ブロック３０６に進み得る。例えば、図１を参照すると、暗号文cが、例えばGPUを含み得る処理ユニット１０６に伝達され得る。さらに、少なくともいくつかの実施形態において、関数（例えば、関数f（図１参照））が、CPU１０２から処理ユニット１０６に伝達され得る。
【００３２】
ブロック３０６において、動作が、第１の暗号文に対して実行されて、第２の暗号文が生成され得、方法３００は、ブロック３０８に進み得る。例えば、図１を再度参照すると、（例えば、Eval（評価）関数を介する）SHE評価が、（例えば、関数fに基づいて）暗号文cに対して実行されて、暗号文c’が生成され得る。
【００３３】
ブロック３０８において、第２の暗号文が、第１の処理ユニットに伝達され得、方法３００は、ブロック３１０に進み得る。例えば、暗号文c’が、処理ユニット１０６から処理ユニット１０２に伝達され得る（図１参照）。
【００３４】
ブロック３１０において、第２の暗号文が復号されて、関数が決定（例えば算出又は生成）され得る。例えば、図１を参照すると、暗号文c’が、TEE１０４において（例えば、Decrypt（復号）関数１１２を介して）復号されて、関数f(x)が算出され得る。さらに、例えば、第２の暗号文が、図６のプロセッサ６１０により復号され得る。
【００３５】
本開示の範囲から逸脱することなく、方法３００に対して、変更、追加、又は省略が可能である。例えば、方法３００の動作は、異なる順番で実行されることもある。さらに、説明された動作及びステップは、例として提供されているに過ぎず、動作及びステップのうちの一部は、開示されている実施形態の本質を損なうことなく、任意的であることもあるし、より少ない動作及びステップに組み合わせられることもあるし、追加の動作及びステップに拡張されることもある。
【００３６】
少なくともいくつかの実施形態において、TEE（例えば、図１のTEE１０４）における演算及び別の処理ユニット（例えば、図１の処理ユニット１０６）における演算は、（例えば、パイプラインを構築することにより）並列に実行され得る。図４は、関数（例えば、f1(x1)，．．．，fn(xn)）の評価の例示的なタイミング図４００を示している。例えば、時間T1において、入力（例えばメッセージ）x1が、TEE（例えば、図１のTEE１０４）において暗号化されて、暗号文c1が生成され得る。さらに、時間T2において、入力（例えばメッセージ）x2が、TEEにおいて暗号化され得る。また、時間T2において、暗号文c1が、（例えば、関数f1に基づいて、）GPUにおいて評価されて、暗号文c’1が生成され得る。時間T3において、入力（例えばメッセージ）x3が、TEEにおいて暗号化されて、暗号文c3が生成され得、暗号文c’1が、TEEにおいて復号され得、暗号文c2が、（例えば、関数f2に基づいて、）GPUにおいて評価されて、暗号文c’2が生成され得る。さらに、時間T4において、入力（例えばメッセージ）x4が、TEEにおいて暗号化され得、暗号文c’2が、TEEにおいて復号され得、暗号文c3が、（例えば、関数f3に基づいて、）GPUにおいて評価され得る。
【００３７】
行列乗算を含む１つの例示的なユースケースにおいて、次元O(n)の行列について、加算及び乗算の観点では、コストは、O(n3)であり得る、又は、内積評価の観点では、コストは、O(n2)であり得る。
【００３８】
大きな行列について、GPU実装は、（例えば、アルゴリズムが、高度に並列化可能であるので）はるかに速いものであり得る。（例えば、TEE及びGPUを用いる）準同型暗号について、TEEにおいて発生する、暗号化／復号についてのコストは、O(n2)のコストを有し得る。評価についてのコストは、O(n3)のままであり得る。高速SHE方式について、GPUにおける評価コストは、TEE内部での平文の乗算よりも相当小さいものであり得る。さらに、内積演算のために非常に高速であり並列化可能であるSHE方式が、利用可能である。
【００３９】
完全準同型暗号方式は、本開示の様々な実施形態に従って、SHE方式をブートストラップすることにより、任意の関数をサポートすることができる。例えば、ブートストラップは、暗号文を周期的にリフレッシュすることにより、実現され得る。FHE方式のボトルネックであり得るブートストラップが、様々な実施形態に従って、実行され得る。
【００４０】
例えば、図５は、TEE５０２及びGPU５０４を含む例示的なシステム５００を示している。１つの企図される動作において、TEE５０２は、入力x0を暗号化して、暗号文c1を生成し得、暗号文c1が、GPU５０４に送信され得る。さらに、GPU５０４は、暗号文c1を評価して、暗号文c’1を生成し得、暗号文c’1が、TEE５０２に伝達され得る。さらに、TEE５０２は、暗号文c’i-1を復号して、xi-1を生成し得る。さらに、TEE５０２は、xi-1を暗号化して、ciを生成し得る。さらに、GPU５０４は、暗号文ciを評価して、暗号文c’iを生成し得、暗号文c’iが、TEE５０２に伝達され得る。
【００４１】
例えば、セキュアな深層学習アプリケーションにおいて、ニューラルネットワークが、本開示の１つ以上の実施形態を介して、セキュアに評価され得る。ニューラルネットワークは、内積及び閾値処理という２つの基本動作の階層実行を含み得る。内積評価は、TEE（例えば、図１のTEE１０４）において秘密鍵SHEを適用した後に、プロセッサ（例えば、GPUを含み得る、図１の処理ユニット１０６）に委託され得る単純な形の乗算であり得る。
【００４２】
この実施形態において、プロセッサ（例えばGPU）はまた、（例えば、SIMD線形代数演算を介して）全ての入力にわたって内積演算を促進することができる。したがって、様々な実施形態に従うと、GPUは、ニューラルネットワークの各層の並列演算のために利用され得る。
【００４３】
別の例として、固有値及び固有ベクトルが、セキュアに計算され得る。この例において、一般的アルゴリズムが、主成分分析及び二次最適化問題等、多くのより上位レベルのアルゴリズムに適用され得る。今度は、これらのアルゴリズムが、サポートベクタマシン（SVM）及びドメイン固有問題（例えば、PageRank及びレコメンデーションシステム）等、多くの機械学習アルゴリズムにおいて使用され得る。この例は、ベクトル・行列積演算の反復を含み得る。
【００４４】
様々な実施形態に従うと、反復が、線形代数演算をサポートし得るプロセッサ（例えば処理ユニット１０６（例えばGPU））に委託され得、暗号化された反復結果が、TEE（例えば、図１のTEE１０４）を用いてリフレッシュされ得る。
【００４５】
図６は、本開示に記載の少なくとも１つの実施形態に従った例示的なシステム６００を示している。システム６００は、動作を委託するかどうかを決定する且つ／又は暗号化を用いて１つ以上の動作を委託するよう構成されている任意の適切なシステム、装置、又はデバイスを含み得る。システム６００は、プロセッサ６１０、記憶デバイス６２０、メモリ６３０、及び通信デバイス６４０を含み得、これらは全て、通信可能に接続され得る。記憶デバイス６２０は、動作／処理時間（例えば、演算時間、暗号化時間、評価時間、及び／又は復号時間）、データ（例えば、暗号化されたデータ及び／又は復号されたデータ）、関数データ、秘密鍵、及び／又は、暗号化を用いて１つ以上の動作を委託すること（及び、必要に応じて、動作を委託するかどうかを決定すること）に関連する他のデータ等の様々なタイプのデータを含み得る。
【００４６】
概して、プロセッサ６１０は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な専用又は汎用のコンピュータ、コンピューティングエンティティ、又は処理デバイスを含み得、任意の適用可能なコンピュータ読み取り可能な記憶媒体に記憶されている命令を実行するよう構成され得る。例えば、プロセッサ６１０は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、又は、プログラム命令を解釈及び／又は実行し、且つ／又はデータを処理するよう構成されている任意の他のデジタル回路若しくはアナログ回路を含み得る。
【００４７】
プロセッサ６１０は、図６において１つのプロセッサとして示されているが、プロセッサ６１０は、本開示に記載の任意の数の動作を個別的又は集合的に実行するよう構成されている、任意の数のネットワーク又は物理的位置にわたって分散される任意の数のプロセッサを含んでもよいことが理解されよう。いくつかの実施形態において、プロセッサ６１０は、記憶デバイス６２０、メモリ６３０、又は記憶デバイス６２０とメモリ６３０との両方に記憶されているプログラム命令を解釈及び／又は実行し、且つ／又は、記憶デバイス６２０、メモリ６３０、又は記憶デバイス６２０とメモリ６３０との両方に記憶されているデータを処理することができる。いくつかの実施形態において、プロセッサ６１０は、記憶デバイス６２０からプログラム命令をフェッチして、プログラム命令をメモリ６３０にロードすることができる。
【００４８】
プログラム命令がメモリ６３０にロードされた後、プロセッサ６１０は、本開示に記載の方法２００及び／又は方法３００の１つ以上のブロックを実行するための命令等のプログラム命令を実行することができる。様々な実施形態に従うと、プロセッサ６１０は、SHE動作及び／又はFHE動作を実行することができる。例えば、プロセッサは、動作／処理時間（例えば、演算時間、暗号化時間、評価時間、及び／又は復号時間）を決定することができる。さらに、例えば、プロセッサ６１０は、SHE動作（例えば、Eval（評価）関数）を実行することができ、データ（例えば、入力及び／又はメッセージ）を暗号化及び／又は復号することができる。
【００４９】
記憶デバイス６２０及びメモリ６３０は、コンピュータ実行可能な命令又はデータ構造を運ぶ又は記憶する１つ以上のコンピュータ読み取り可能な記憶媒体を含み得る。そのようなコンピュータ読み取り可能な記憶媒体は、プロセッサ６１０等の汎用又は専用のコンピュータによりアクセスされ得る任意の利用可能な媒体を含み得る。
【００５０】
限定ではなく例として、そのようなコンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ（RAM）、読み取り専用メモリ（ROM）、電気的に消去可能なプログラム可能な読み取り専用メモリ（EEPROM）、コンパクトディスク読み取り専用メモリ（CD-ROM）若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス（例えばソリッドステートメモリデバイス）、又は、コンピュータ実行可能な命令又はデータ構造の形態の所望のプログラムコードを運ぶ又は記憶するために使用され得る任意の他の記憶媒体であって、汎用又は専用のコンピュータによりアクセスされ得る任意の他の記憶媒体、を含む非一時的なコンピュータ読み取り可能な記憶媒体を含み得る。上記の組み合わせも、コンピュータ読み取り可能な記憶媒体の範囲に含まれ得る。コンピュータ実行可能な命令は、例えば、プロセッサ６１０に所定の動作又は動作群を実行させるよう構成されている命令及びデータを含み得る。
【００５１】
通信デバイス６４０は、ネットワークを介して情報を送信又は受信するよう構成されている任意のコンポーネント、デバイス、システム、又はこれらの組み合わせを含み得る。いくつかの実施形態において、通信デバイス６４０は、他の位置にある他のデバイス、同じ位置にある他のデバイス、又は、同じシステム内の他のコンポーネントと通信することができる。例えば、通信デバイス６４０は、モデム、ネットワークカード（無線又は有線）、赤外線通信デバイス、光通信デバイス、無線通信デバイス（アンテナ等）、及び／若しくはチップセット（Bluetooth（登録商標）デバイス、802.6デバイス（例えばメトロポリタンエリアネットワーク（MAN））、Wi-Fi（登録商標）デバイス、WiMAX（登録商標）デバイス、セルラ通信設備等）、並びに／又は同様のものを含み得る。通信デバイス６４０は、ネットワークとの間で且つ／又は本開示に記載の任意の他のデバイス又はシステムとの間でデータが交換されることを可能にし得る。
【００５２】
本開示の範囲から逸脱することなく、システム６００に対して、変更、追加、又は省略が可能である。例えば、記憶デバイス６２０は、複数の位置に配置され、ネットワークを介してプロセッサ６１０によりアクセスされる複数の異なる記憶媒体であってもよい。
【００５３】
上記で示されたように、本開示に記載の実施形態は、以下でより詳細に説明されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む専用又は汎用のコンピュータ（例えば、図６のプロセッサ６１０）の使用を含み得る。さらに、上記で示されたように、本開示に記載の実施形態は、コンピュータ実行可能な命令又はデータ構造を運ぶ又は記憶するコンピュータ読み取り可能な媒体（例えば、図６の記憶デバイス６２０又はメモリ６３０）を使用して実現され得る。
【００５４】
本開示において使用される場合、「モジュール」又は「コンポーネント」という用語は、モジュール又はコンポーネントの動作を実行するよう構成されている特定のハードウェア実装、及び／又は、例えば、処理ユニット１０２（図１参照）、処理ユニット１０４（図１参照）、及び／又は、コンピューティングシステム６００に記憶され得る且つ／又は処理ユニット１０２（図１参照）、処理ユニット１０４（図１参照）、及び／又は、コンピューティングシステム６００により実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを指し得る。いくつかの実施形態において、本開示に記載の異なるコンポーネント及びモジュールは、コンピューティングシステム上で実行されるオブジェクト又はプロセスとして（例えば別個のスレッドとして）実装され得る。本開示に記載のシステム及び方法のうちの一部は、（システム６００に記憶される且つ／又はシステム６００により実行される）ソフトウェアにより実装されるとして一般に説明されるが、特定のハードウェア実装又はソフトウェアと特定のハードウェア実装との組み合わせも可能であり企図されている。本開示において、「コンピューティングエンティティ」は、本開示において定義された任意のコンピューティングシステム、又は、システム６００等のコンピューティングシステム上で動作する任意のモジュール又はモジュールの組み合わせを含み得る。
【００５５】
本開示及び特に請求項（例えば請求項の本体部分）において使用される用語は、一般に、「オープンな」用語であるとして意図される（例えば、「〜を備える」という用語は、「〜を備えるが、〜に限定されるものではない」として解釈されるべきであり、「〜を有する」という用語は、「少なくとも〜を有する」として解釈されるべきであり、「〜を含む」という用語は、「〜を含むが、〜に限定されるものではない」として解釈されるべきである、等）。
【００５６】
さらに、導入される請求項記載事項の特定の数が意図される場合、そのような意図は、当該請求項中に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、請求項中に、請求項記載事項を導入するための「少なくとも１つの」及び「１つ以上の」といった導入句の使用が含まれることがある。しかしながら、このような導入句の使用は、「a」又は「an」といった不定冠詞による請求項記載事項の導入が、同一の請求項中に「１つ以上の」又は「少なくとも１つの」といった導入句と「a」又は「an」といった不定冠詞とが含まれるとしても、当該導入された請求項記載事項を含む特定の請求項が、当該請求項記載事項を１つしか含まない実施形態に限定されることを意味するとして解釈されるべきではない（例えば、「a」及び／又は「an」は、「少なくとも１つの」又は「１つ以上の」を意味するとして解釈されるべきである）。請求項記載事項を導入するために使用される定冠詞の使用についても同じことが当てはまる。
【００５７】
さらに、導入される請求項記載事項の特定の数が明示的に記載されている場合であっても、そのような記載は、少なくとも記載されている数を意味するとして解釈されるべきである（例えば、他の修飾語のない「２つの記載事項」という単なる記載は、少なくとも２つの記載事項又は２つ以上の記載事項を意味する）ことが、当業者であれば認識されよう。さらに、「Ａ、Ｂ、及びＣ等のうちの少なくとも１つ」又は「Ａ、Ｂ、及びＣ等のうちの１つ以上」に類する表記が使用される場合、一般に、そのような構造は、Ａのみ、Ｂのみ、Ｃのみ、Ａ及びＢの両方、Ａ及びＣの両方、Ｂ及びＣの両方、又は、Ａ、Ｂ、及びＣの全て、等を含むことが意図される。
【００５８】
さらに、２つ以上の選択可能な用語を表すいかなる離接語又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの１つ、それらの用語の組合せ、又は、それらの用語の全てを含む可能性を意図するとして理解されるべきである。例えば、「Ａ又はＢ」という句は、「Ａ」若しくは「Ｂ」又は「Ａ及びＢ」の可能性を含むとして理解されるべきである。
【００５９】
本開示において記載された全ての例及び条件付き文言は、当該技術を促進させるために本発明者によって寄与されるコンセプト及び本発明を読者が理解するのを助ける教育上の目的のために意図され、そのような具体的に記載された例及び条件に限定されるものではないとして解釈されるべきである。本開示の実施形態が詳細に説明されたが、それら実施形態に対する様々な変形、置換、及び変更が、本開示の主旨及び範囲から逸脱することなく可能である。
【００６０】
以上の実施形態に関し、さらに以下の付記を開示する。
【００６１】
（付記１）
動作を委託する方法であって、
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成するステップと、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達するステップと、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成するステップと、
前記第２の暗号文を前記TEEに伝達するステップと、
前記TEEにおいて、前記第２の暗号文を復号して、関数を算出するステップと、
を含む方法。
【００６２】
（付記２）
前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定するステップ
をさらに含む、付記１に記載の方法。
【００６３】
（付記３）
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成するステップと、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するステップと、
のうちの少なくとも１つをさらに含む、付記１に記載の方法。
【００６４】
（付記４）
複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価するステップ
をさらに含む、付記１に記載の方法。
【００６５】
（付記５）
前記第２の暗号文を復号することは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号することを含む、付記１に記載の方法。
【００６６】
（付記６）
前記少なくとも１つのSHE評価動作を実行することは、中間関数に基づいて、前記第１の暗号文を評価することを含む、付記１に記載の方法。
【００６７】
（付記７）
前記データを暗号化することは、準同型暗号を用いて前記データを暗号化することを含む、付記１に記載の方法。
【００６８】
（付記８）
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成する動作と、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達する動作と、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成する動作と、
前記第２の暗号文を前記TEEに伝達する動作と、
前記TEEにおいて、前記第２の暗号文を復号して、関数を生成する動作と、
を実行するよう構成されている１つ以上の処理ユニット
を有するシステム。
【００６９】
（付記９）
前記１つ以上の処理ユニットは、前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定する動作を実行するようさらに構成されている、付記８に記載のシステム。
【００７０】
（付記１０）
前記１つ以上の処理ユニットは、
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成する動作と、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行する動作と、
のうちの少なくとも１つを実行するようさらに構成されている、付記８に記載のシステム。
【００７１】
（付記１１）
前記１つ以上の処理ユニットは、複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価する動作を実行するようさらに構成されている、付記８に記載のシステム。
【００７２】
（付記１２）
前記TEEは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号するよう構成されている、付記８に記載のシステム。
【００７３】
（付記１３）
前記１つ以上の処理ユニットは、中間関数に基づいて、前記第１の暗号文を評価する動作を実行するようさらに構成されている、付記８に記載のシステム。
【００７４】
（付記１４）
前記データは、準同型暗号を用いて暗号化される、付記８に記載のシステム。
【００７５】
（付記１５）
命令を含む１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記命令が、１つ以上のプロセッサにより実行されたときに、前記命令は、前記１つ以上のプロセッサに複数の動作を実行させるよう構成されており、前記複数の動作は、
トラステッド実行環境（TEE）において、データを暗号化して、第１の暗号文を生成する動作と、
前記第１の暗号文をグラフィックス処理ユニット（GPU）に伝達する動作と、
前記GPUにおいて、前記第１の暗号文に対して、少なくとも１つのsomewhat準同型暗号（SHE）評価動作を実行して、第２の暗号文を生成する動作と、
前記第２の暗号文を前記TEEに伝達する動作と、
前記TEEにおいて、前記第２の暗号文を復号して、関数を生成する動作と、
を含む、コンピュータ読み取り可能な媒体。
【００７６】
（付記１６）
前記複数の動作は、
前記データを暗号化することと、前記SHE評価動作を実行することと、前記第２の暗号文を復号することと、のうちの少なくとも１つの推定される処理時間に基づいて、前記SHE評価動作を前記GPUに委託するかどうかを決定する動作
をさらに含む、付記１５に記載のコンピュータ読み取り可能な媒体。
【００７７】
（付記１７）
前記複数の動作は、
前記第１の暗号文に対して、前記少なくとも１つのSHE評価動作を実行するのと実質的に同時に、前記TEEにおいて、第２のデータを暗号化して、第３の暗号文を生成する動作と、
前記第２の暗号文を復号するのと実質的に同時に、前記第３の暗号文に対して、前記少なくとも１つのSHE評価動作を実行する動作と、
のうちの少なくとも１つをさらに含む、付記１５に記載のコンピュータ読み取り可能な媒体。
【００７８】
（付記１８）
前記複数の動作は、
複数のSHE方式をブートストラップすることにより、１つ以上の任意の関数を評価する動作
をさらに含む、付記１５に記載のコンピュータ読み取り可能な媒体。
【００７９】
（付記１９）
前記第２の暗号文を復号することは、前記TEEにおいて生成された秘密鍵を用いて、前記第２の暗号文を復号することを含む、付記１５に記載のコンピュータ読み取り可能な媒体。
【００８０】
（付記２０）
前記少なくとも１つのSHE評価動作を実行することは、中間関数に基づいて、前記第１の暗号文を評価することを含む、付記１５に記載のコンピュータ読み取り可能な媒体。
【符号の説明】
【００８１】
１００  システム
１０２  中央処理ユニット（CPU）
１０４  トラステッド実行環境（TEE）
１０６  処理ユニット
５００  システム
５０２  トラステッド実行環境（TEE）
５０４  グラフィックス処理ユニット（GPU）
６００  （コンピューティング）システム
６１０  プロセッサ
６２０  記憶デバイス
６３０  メモリ
６４０  通信デバイス
【図１】
2019191575.tif 000003
【図２】
2019191575.tif 000004
【図３】
2019191575.tif 000005
【図４】
2019191575.tif 000006
【図５】
2019191575.tif 000007
【図６】
2019191575.tif 000008