(57)【特許請求の範囲】
【請求項１】
少なくとも１つのサーバを含むクラウドサービスシステムによって実行される方法であって、
第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、前記第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含む、ことと、
データの前記第１のセットが暗号化されているかどうかを判定することと、
データの前記第１のセットが暗号化されている場合には、
データの前記第１のセットと、前記第１の機能を実行するための命令とを前記クライアントデバイスへ送信することであって、前記命令は、前記第１の機能を実行するためのコンピュータコードを含む、ことと、
データの前記第１のセット上での前記機能の暗号化された結果を表す第１の処理された暗号化されたデータを前記クライアントデバイスから受信することと、
データの前記第１のセットが暗号化されていない場合には、
データの前記第１のセット上で前記第１の機能を実行して、第１の処理されたデータを生成することと
を含む方法。
【請求項２】
前記コンピュータコードは、暗号化された形態で前記クライアントデバイスへ送信される、請求項１に記載の方法。
【請求項３】
前記クライアントデバイスのリモート認証を要求することをさらに含み、前記コンピュータコードは、前記クライアントデバイスの満足できる認証を受信した後にのみ、前記クライアントデバイスへ送信される、請求項１または２に記載の方法。
【請求項４】
前記第１の処理された暗号化されたデータを格納することをさらに含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
データの前記第１のセットが暗号化されているかどうかを判定することは、データの前記第１のセットが、機密であるとしてマークされているかどうかを判定することを含む、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記第１の処理されたデータを前記クライアントデバイスへ送信することをさらに含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記コンピュータコードは、実行可能なコンピュータコードを含む、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
少なくとも１つのサーバを含むクラウドサービスシステムによって実行される方法であって、
第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、前記第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含む、ことと、
データの前記第１のセットが暗号化されているかどうかを判定することと、
データの前記第１のセットが暗号化されているという判定に応答して、
データの前記第１のセットと、前記第１の機能を実行するための命令とを前記クライアントデバイスへ送信することであって、前記第１の機能を実行するための前記命令は、前記第１の機能を実行するためのコンピュータコードを含む、ことと、
データの前記第１のセット上での前記機能の暗号化された結果を表す第１の処理された暗号化されたデータを前記クライアントデバイスから受信することと
を含む方法。
【請求項９】
前記コンピュータコードは、暗号化された形態で前記クライアントデバイスへ送信される、請求項８に記載の方法。
【請求項１０】
前記クライアントデバイスのリモート認証を要求することをさらに含み、前記コンピュータコードは、前記クライアントデバイスの満足できる認証を受信した後にのみ、前記クライアントデバイスへ送信される、請求項８または９に記載の方法。
【請求項１１】
前記第１の処理された暗号化されたデータを格納することをさらに含む、請求項８乃至１０のいずれか一項に記載の方法。
【請求項１２】
データの前記第１のセットが暗号化されているかどうかを判定することは、データの前記第１のセットが、機密であるとしてマークされているかどうかを判定することを含む、請求項８乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記コンピュータコードは、実行可能なコンピュータコードを含む、請求項８乃至１２のいずれか一項に記載の方法。
【請求項１４】
プロセッサと非一時的なデータストレージ媒体とを有する少なくとも１つのサーバを含むクラウドサービスシステムであって、前記媒体は、命令を格納しており、前記命令は、前記プロセッサによって実行されたときに、
第１のオペレーションを実行する要求をクライアントデバイスから受信し、前記第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含み、
データの前記第１のセットが暗号化されているかどうかを判定するように動作し、
前記命令は、データの前記第１のセットが暗号化されている場合には、
データの前記第１のセットと、前記第１の機能を実行するための命令とを前記クライアントデバイスへ送信し、前記第１の機能を実行するための前記命令は、前記第１の機能を実行するためのコンピュータコードを含み、
データの前記第１のセット上での前記機能の暗号化された結果を表す第１の処理された暗号化されたデータを前記クライアントデバイスから受信するように動作し、
前記命令は、データの前記第１のセットが暗号化されていない場合には、データの前記第１のセット上で前記第１の機能を実行して、第１の処理されたデータを生成するように動作する
クラウドサービスシステム。
【請求項１５】
前記クラウドサービスシステムは、前記コンピュータコードを、暗号化された形態で前記クライアントデバイスへ送信するように動作する命令を含む、請求項１４に記載のクラウドサービスシステム。
【請求項１６】
前記クライアントデバイスのリモート認証を要求するように動作する命令をさらに含み、前記コンピュータコードは、前記クライアントデバイスの満足できる認証を受信した後にのみ、前記クライアントデバイスへ送信される、請求項１４または１５に記載のクラウドサービスシステム。
【請求項１７】
前記命令は、前記第１の処理された暗号化されたデータを格納するようにさらに動作する、請求項１４乃至１６のいずれか一項に記載のクラウドサービスシステム。
【請求項１８】
データの前記第１のセットが暗号化されているかどうかの前記判定は、データの前記第１のセットが、機密であるとしてマークされているかどうかを判定するように動作する命令を使用して実行される、請求項１４乃至１７のいずれか一項に記載のクラウドサービスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にデータ処理に関する。より具体的には、本開示は、クラウドベースのデータストレージのコンテキストにおける暗号化されたデータの処理に関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、2015年4月10日に出願された「System and Method for Delegation of Cloud Computing Processes」と題されている米国特許仮出願第62/145,959号明細書の非仮出願であり、米国特許仮出願第62/145,959号明細書からの35 U.S.C. 119(e)のもとでの利益を主張するものであり、米国特許仮出願第62/145,959号明細書の開示全体は、参照によって本明細書に組み込まれている。
【０００３】
クラウドベースのデータサービスは、いくつかのプライバシーの問題を引き起こしている。ユーザは、クラウドサービスプロバイダを信頼すること、または暗号化された個人データのためのストレージとしてのみクラウドを使用することのどちらかを余儀なくされている。完全準同型暗号、プライベートクラウド、または、隔離された実行環境および認証の使用のような多くのソリューションが提案されているが、それぞれが独自の不利な点に悩んでいる。
【０００４】
データストレージおよびデータサービスは、クラウドベースのサービスフォーマットへますます移行している。高速の固定ネットワーク接続およびモバイルネットワーク接続は、ユーザがクラウドベースのストレージとの間でデータをシームレスにアップロードおよびダウンロードすることを可能にする。Ｇｏｏｇｌｅ（登録商標）ドキュメントのようなクラウドベースのアプリケーションはまた、複数の異なるデバイスからドキュメントにアクセスしたいと望むユーザに利益をもたらす。クラウドベースのストレージはさらに、モバイルデバイスが壊される、失われる、または盗まれる危険にさらされている際にデータをバックアップする困難を防止する上で役に立つ。クラウドサービスはまた、必要とされる場合にはデータストレージボリュームが拡張されることが可能であるので、拡張性およびフォルトトレランスの利点を提供する。また、アプリケーションを取り巻く状況は変わり始めており、将来は、多くのアプリケーションが、分散アプリケーションプラットフォームを利用するコンテナ化された環境において稼働することになると予測されている。
【０００５】
同時に、人々はまた、より強力なデバイスを有している。現在のラップトップ、デスクトップコンピュータ、ホームサーバ、タブレット、モバイル電話および他のコンピューティングデバイスは、多大なコンピューティングパワーを有している。多くのコンピューティングデバイスは、マルチコアプロセッサを利用しており、コンピューティングプラットフォームとして利用されることも可能である強力なコプロセッサがある。
【０００６】
クラウドベースのサービスおよびストレージは複数の利点を提供するが、多くの人々は、信頼の問題が原因で、自分の情報の全てをクラウドサービスと共有することには気が進まない。個人データをアップロードしてクラウドベースのサービスを利用するには、クラウドサービスプロバイダと、そのプロバイダが実施している操作手順およびセキュリティ規定とをユーザが信頼する必要がある。攻撃者は、システムの特徴を、設計者が予想していなかった方法で利用することができる。セキュリティと使いやすさは、相容れない場合がある。最近の有名人の写真漏洩は、クラウドサービスがプライバシーの問題を有しているという認識を高めた。
【０００７】
プライバシーの問題に対する１つの潜在的なソリューションは、それぞれの個人が自分のデータを、他の誰とも共有されていない、クラウドプロバイダとすら共有されていない一意のキーを使用して暗号化することである。あるシステムは、そのような保護を実施している。そのような保護を実施している一企業であるＮａｓｕｎｉは、クラウドストレージのセキュリティ課題をリストアップしている：
・データの漏洩  −  最良の戦略は、クラウドベンダーは危険にさらされていると最初から想定して、暗号化されたファイルのみをクラウドへ送信することである。  
・クラウドクレデンシャル  −  ストレージの所与のプールへのアクセスは、クレデンシャルに基づいており、あなたが顧客の別の集団と一緒くたに扱われて、同じクレデンシャルを共有している場合には、彼らのうちの１人がそれらのクレデンシャルを入手してあなたのデータにアクセスし得るというリスクがある。  
・スヌーピング  −  データおよびメタデータは、ワイヤ上では、およびクラウド内では、完全に不透明であるべきである。何ものも  −  どんなファイル名も、タイムスタンプも  −  いったんあなたの構内から出ると、解読可能であるべきではない。  
・キー管理  −  キー管理は、ユーザが気づくことさえないほどシンプルであるべきである。暗号化は、自動的であるべきである。  
・パフォーマンス  −  セキュリティは、パフォーマンスに深刻なインパクトを与えるべきではない。
【０００８】
Ｎａｓｕｎｉは、ＯｐｅｎＰＧＰ暗号化を利用することによって、これらの問題に対処している。しかしながら、これは、暗号化されたストレージのプロビジョンにしか対処せず、クラウドベースのソフトウェアアプリケーションサービスを提供することのプライバシーの課題を解決しない。
【０００９】
外部のクラウドサービスプロバイダに依存する代わりに、企業は、自分自身のプライベートクラウドをセットアップして、機密のコンピューティングを全て自分自身の構内において処理することができる。クラウドサービスプロバイダが自分の顧客のために彼らのサービスのみを実行するための専用のサーバを提供するというハイブリッドソリューションもある。このアプローチは、プライベートクラウドインフラストラクチャを保持するためにシステム管理者を充てることができる企業に適している。プライベートクラウドは、企業固有の機密データを処理するために必要とされるサービスのセットをホストすることができる。しかしながら、個人が自分自身のプライベートクラウドを保持すること、およびクラウドサービスソフトウェアを取得することは困難であろうことから、このアプローチは、自分のプライバシーを保護したいと望む個人にとっては、さほど便利ではない。
【００１０】
別の選択肢は、準同型暗号ソリューションであり、この準同型暗号ソリューションは、暗号化されたデータの処理を可能にし、それによって結果も、暗号化されたままとなる。これは、ユーザが自分の暗号化された個人データをクラウド環境へアップロードすることを可能にし、クラウド環境では、データマイニングソフトウェアが、暗号化された個人データを処理して処理結果を返すことができ、それらの処理結果も暗号化されている。ユーザは、それらの結果を復号し、希望に応じて、それらの結果を他者と共有することを決定することができる。クラウドサービスプロバイダは、復号されたコンテンツまたは結果データへのアクセスを有しておらず、完全に信頼される必要はない。
【００１１】
暗号化されたデータ上で計算を実行できることは、実際にはＲＳＡ暗号化アルゴリズムにおいてさえ可能である。ＲＳＡは、乗算に関しては準同型であるが、加算に関しては準同型ではない。例えば、ＲＳＡ暗号化された値が２をかけられて、その結果が復号された場合には、その結果は、元の暗号化されていない値が２をかけられたのと同じである（パディングなしのＲＳＡ表記の使用を想定して）。加算に関して準同型である準同型暗号スキームもある。加算および乗算の両方に関して準同型である暗号化システムは、完全準同型システムと呼ばれている。完全準同型暗号は、近年において非常に活発な研究トピックになっている。
【００１２】
残念なことに、完全準同型暗号は一般に、実際に使用するには遅すぎる。暗号文のサイズ、並びに暗号化オペレーションおよび復号オペレーションの複雑さは、実行されることになるオペレーションの数に伴って膨大に増える。
【００１３】
別のセキュリティオプションは、クラウドサービスが、ＡＲＭベースのモバイルデバイスにおいて典型的に利用可能であるＡＲＭ  ＴｒｕｓｔＺｏｎｅと同様の隔離された実行環境を提供することである。ＡＲＭベースのチップの低い電力消費は、ＡＲＭアーキテクチャを、大規模データセンターにおいてＩｎｔｅｌ（登録商標）ベースのアーキテクチャに対して競争力のあるものにするであろう。なぜなら、電力要件および冷却要件のコストが主要なコストファクタであるからである。ＡＲＭベースのサーバは、システムの残りの部分から隔離されている信頼されているアプリケーションを実行することを可能にするＡＲＭ  ＴｒｕｓｔＺｏｎｅを含むこともできる。しかしながら、クラウドおよびサーバの分野は一般に、Ｉｎｔｅｌアーキテクチャによって支配されている。
【００１４】
伝えられるところによれば、保護されたコンテナ環境をＩｎｔｅｌチップに加えるというＩｎｔｅｌによる計画がある。2013年6月の「Workshop on Hardware and Architectural Support for Security and Privacy」において、Ｉｎｔｅｌは、将来のＩｎｔｅｌチップが、Intel Software Guard Extensions（Intel SGX）と呼ばれるコンセプトを含むことになると発表した。Ｉｎｔｅｌ  ＳＧＸは、下記の８つの目標を報告している。  
１．  アプリケーション開発者が、より高い特権レベルで稼働する不正ソフトウェアによる不正アクセスまたは修正から機密データを保護することを可能にすること。  
２．  アプリケーションが、プラットフォームリソースの使用をスケジュールおよび管理するための正当なシステムソフトウェアの能力を妨げずに機密のコードおよびデータの機密性およびインテグリティを保護することを可能にすること。  
３．  コンピューティングデバイスの消費者が、自らのプラットフォームのコントロールと、自らの選択に応じてアプリケーションおよびサービスをインストールおよびアンインストールする自由とを保持することを可能にすること。  
４．  プラットフォームが、アプリケーションの信頼されているコードを測定すること、並びに、この測定を含むプロセッサに根差している署名された認証、および信頼できる環境においてそのコードが正しく初期化されている旨のその他の証明書を作成することを可能にすること。  
５．  なじみのあるツールおよびプロセスを使用した、信頼されているアプリケーションの開発を可能にすること。  
６．  信頼されているアプリケーションのパフォーマンスが、基礎をなすアプリケーションプロセッサの能力に伴って拡張することを可能にすること。  
７．  ソフトウェアベンダーが、自分の選んだ流通チャネルを使用して、信頼されているアプリケーションを配信し、自分のペースで更新を行うことを可能にすること。  
８．  攻撃者がプラットフォームの物理的なコントロールを有していてメモリ上に直接の攻撃を行うことができる場合でさえ機密性を保持するコードおよびデータのセキュアな領域をアプリケーションが定義することを可能にすること。
【００１５】
Ｉｎｔｅｌ  ＳＧＸは、将来のＩｎｔｅｌアーキテクチャプロセッサに加えられるメモリアクセスのための命令およびメカニズムのセットである。Ｉｎｔｅｌ  ＳＧＸテクノロジーは、特権を与えられているマルウェアの存在下でさえ機密性およびインテグリティを提供する、アプリケーションのアドレス空間内の保護されているエリアであるエンクレーブのコンセプトを含む。エンクレーブ内に存在していない任意のソフトウェアからのエンクレーブメモリエリアへのアクセスも防止される。アプリケーションは、それがエンクレーブの外部に格納したいと望むキーおよびデータを保護するためにそれが使用することができるエンクレーブ固有の、かつプラットフォーム固有のキーを要求することもできる。
【００１６】
クラウドサーバは典型的に、利用可能な信頼されている実行環境をまったく有していないが、それでもなお、クラウドサービスの信頼性を検証するための方法がある。これは、信頼されているブート（または測定されたブート）コンセプトをサポートしていて、かつハードウェアセキュリティモジュール（ＨＳＭ）（典型的には、トラステッドプラットフォームモジュール（ＴＰＭ）と呼ばれるチップ）を含むシステムにおいて行われることが可能である。ＴＰＭは、パブリック／プライベートＲＳＡキーペアを含む。プライベートキーは、ＴＰＭから抽出されることが不可能であるが、パブリックキーは、証明されることが可能である。ＴＰＭはまた、署名のようなオペレーションの静的なセット（ＴＰＭ＿Ｓｉｇｎ）を含む。ＴＰＭはまた、２０バイトのＳＨＡ１ハッシュ値を格納することができるプラットフォーム構成レジスタ（ＰＣＲ）と呼ばれるレジスタの対を含む。ＰＣＲは、読み取られ得るが、それらの値は、ＴＰＭ＿Ｅｘｔｅｎｄオペレーションを使用することによって修正されることのみが可能である。ＴＰＭ＿Ｅｘｔｅｎｄオペレーションは、古いＰＣＲレジスタ値を新たなハッシュ値と連結し、連結されたバイトのＳＨＡ１ハッシュを計算し、その結果をＰＣＲレジスタ内に格納する。
【００１７】
リモート認証コンセプトは、プラットフォームが、呼び出されるそれぞれの実行可能なコンポーネントを測定すると想定している。測定は、コンポーネントのＳＨＡ１ハッシュ値を計算することによって行われる。検証の連鎖もあり、例えば、ブートローダは、ローディングの前にカーネルを測定すべきであり、カーネルは、実行の前にユーザスペースコンポーネントを測定すべきである。測定値が取られる場合は常に、測定ログが、その測定値と、測定された実行可能ファイルの名前とを含むように付加される。カーネルは、少なくとも全てのネイティブの実行可能ファイルおよび共有ライブラリを測定することになり、そして、これらの測定値を追跡把握することになり、それによってコンポーネントは典型的に、それぞれのブートの後に１回だけ測定される。リモートサイトは、システムコンポーネントのシステム構成および予想されるＳＨＡ１ハッシュ値を知っていると想定される。リモートサイトは、認証要求（ランダムノンスを含む）を送信することができる。認証されることになるシステムは、ＰＣＲレジスタ値と、受信されたノンス値とを含む署名されたメッセージを提供するＴＰＭ＿Ｑｕｏｔｅコマンド（受信されたランダムノンスをパラメータとして含む）を発行するはずである。署名されたメッセージおよび測定ログは、リモートサイトへ返され、リモートサイトは、ハッシュ計算と、そしてまた、測定されたハッシュ値が予想値を有していることとをチェックするはずである。リモートは、測定されることになる全てのコンポーネントのＳＨＡ１ハッシュを知っていると予想される。
【００１８】
Ｌｉｎｕｘカーネルは、これらの測定値を生み出すために使用されることが可能であるＩＭＡと呼ばれるコンポーネントを含む。いくつかの仮想マシンをホストしているハードウェアプラットフォーム内に１つのＴＰＭチップしかない場合には、複数の仮想マシンインスタンスからのＴＰＭ測定値どうしが混ぜ合わされて、結果がほとんど役に立たなくなる可能性がある。この問題を解決するために、仮想化されたＴＰＭ（ｖＴＰＭ）が提案されている。認証も、Ｉｎｔｅｌトラステッドエグゼキューションテクノロジー（ＴＸＴ）の重要なコンポーネントである。
【００１９】
認証ベースの方法では、ユーザが完全な参照整合性メトリックを有していて、セキュリティ要素が証明されたキーペアを使用しなければならず、かつユーザが認証ログを再生して結果どうしを比較することができることが必要である。これは、企業および大きな組織にとっては可能であるが、個人にとっては困難である可能性がある。
【００２０】
ＰｒｉｖａｔｅＣｏｒｅは、認証と暗号化を組み合わせているクラウドテクノロジープロバイダの例である。ＰｒｉｖａｔｅＣｏｒｅは、システムにおいて信頼されている必要がある唯一の要素は中央処理装置（ＣＰＵ）であると想定している。ＰｒｉｖａｔｅＣｏｒｅは、ＲＡＭの代わりにＡＥＳ暗号化を使用する。ＰｒｉｖａｔｅＣｏｒｅは、ＲＡＭを使用する代わりにマイクロプロセッサレジスタをもっぱら使用するＡＥＳ暗号化およびそのキー管理を実施するＬｉｎｕｘカーネルパッチを提示しているＴＲＥＳＯＲプロジェクトのものと同様のＣＰＵバウンドな暗号化アプローチを使用する。ＴＲＥＳＯＲは、ディスク暗号化のためのものであり、ＤＭＡベースの攻撃に対しては潜在的に脆弱である。
【００２１】
ＰｒｉｖａｔｅＣｏｒｅは、パブリッククラウドにおける機密データ処理に関連した多くの問題に対処することができるが、それでもなお問題がある。これらのうちの１つが、キー管理である。たとえＰｒｉｖａｔｅＣｏｒｅがＣＰＵの内部にＡＥＳキーを保持することができるとしても、そのキーは、何らかの形で挿入されなければならない。リモート認証を使用すること、および測定された構成を検証することも必要である。ＰｒｉｖａｔｅＣｏｒｅは、高められた機密性保護を提供するが、それでもなお信頼の問題がある。なぜならユーザは、ＰｒｉｖａｔｅＣｏｒｅのクラウドインフラストラクチャに依存しなければならないからである。
【発明の概要】
【００２２】
本明細書における実施形態は、クラウドベースのデータストレージのコンテキストにおける暗号化されたデータの処理に関する。より具体的には、暗号化されたデータの暗号化されていないバージョンにクラウドがアクセスしないように、暗号化されたデータをクライアントとクラウドとの間において分割することに関する。
【００２３】
一実施形態においては、方法が、第１のオペレーションを実行する要求をクライアントデバイスから受信することを含み、第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含む。この方法は、データの第１のセットが暗号化されているかどうかを判定することをさらに含む。データの第１のセットが暗号化されている場合には、データの第１のセットと、第１の機能を実行するための命令とが、クライアントデバイスへ送信され、その命令は、第１の機能を実行するためのコンピュータコードを含み、データの第１のセット上での機能の暗号化された結果を表す第１の処理された暗号化されたデータが、クライアントデバイスから受信される。データの第１のセットが暗号化されていない場合には、第１の機能が、データの第１のセット上で実行されて、第１の処理されたデータを生成する。
【００２４】
一実施形態においては、システムが、プロセッサと非一時的なデータストレージ媒体とを有する少なくとも１つのサーバを含むクラウドサービスを含み、その媒体は、命令を格納しており、それらの命令は、プロセッサによって実行されたときに、第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含む、ことと、データの第１のセットが暗号化されているかどうかを判定することとを行うように機能する。それらの命令は、データの第１のセットが暗号化されている場合には、データの第１のセットと、第１の機能を実行するための命令とをクライアントデバイスへ送信することであって、第１の機能を実行するための命令は、第１の機能を実行するためのコンピュータコードを含む、ことと、データの第１のセット上での機能の暗号化された結果を表す第１の処理された暗号化されたデータをクライアントデバイスから受信することとを行うように機能する。それらの命令は、データの第１のセットが暗号化されていない場合には、データの第１のセット上で第１の機能を実行して、第１の処理されたデータを生成することを行うようにさらに機能する。
【図面の簡単な説明】
【００２５】
【図１】本明細書において記述されている実施形態におけるユーザデバイス、アプリケーションサーバ、通知サーバ、および／または他のネットワークノードとして採用され得る例示的な無線送受信ユニット（ＷＴＲＵ）を示す図である。
【図２】本明細書において記述されている実施形態におけるユーザデバイス、クラウドサーバ、および／または他のネットワークノードとして採用され得る例示的なネットワークエンティティを示す図である。
【図３】機密データの委任処理の方法を示す流れ図である。
【図４】画像処理を行うために採用されている機密データの委任処理の方法を示す流れ図である。
【発明を実施するための形態】
【００２６】
本開示のシステムおよび方法においては、データ処理の機密の部分が、ユーザのパーソナルデバイスへ委任される。様々なアプローチが論じられている。
【００２７】
本明細書において開示されている例示的な実施形態は、無線送受信ユニット（ＷＴＲＵ）または他のネットワークエンティティなど、１つまたは複数の有線ネットワークノードおよび／または無線ネットワークノードを使用して実施される。図１は、例示的なＷＴＲＵ１０２のシステム図であり、このＷＴＲＵ１０２は、本明細書において記述されている実施形態におけるユーザデバイスとして採用されることが可能である。図１において示されているように、ＷＴＲＵ１０２は、プロセッサ１１８、トランシーバ１２０を含む通信インターフェース１１９、送信／受信要素１２２、スピーカー／マイクロフォン１２４、キーパッド１２６、ディスプレイ／タッチパッド１２８、非リムーバブルメモリ１３０、リムーバブルメモリ１３２、電源１３４、ＧＰＳチップセット１３６およびセンサ１３８を含むことができる。ＷＴＲＵ１０２は、実施形態との整合性を保持しながら、上述の要素どうしの任意の下位組合せを含むことができるということが理解されるであろう。
【００２８】
プロセッサ１１８は、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと関連付けられている１つもしくは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他の任意のタイプの集積回路（ＩＣ）、状態マシンなどとすることができる。プロセッサ１１８は、信号符号化、データ処理、パワー制御、入力／出力処理、および／または、ＷＴＲＵ１０２が無線環境において機能し得る他の任意の機能を実行することができる。プロセッサ１１８は、トランシーバ１２０に結合されることが可能であり、トランシーバ１２０は、送信／受信要素１２２に結合されることが可能である。図１は、プロセッサ１１８とトランシーバ１２０を別々のコンポーネントとして示しているが、プロセッサ１１８とトランシーバ１２０は、電子パッケージまたはチップ内にともに統合されることが可能であるということが理解されるであろう。
【００２９】
送信／受信要素１２２は、エアインターフェース１１５／１１６／１１７を介して、基地局に信号を送信するように、または基地局から信号を受信するように構成されることが可能である。例えば、一実施形態においては、送信／受信要素１２２は、ＲＦ信号を送信および／または受信するように構成されているアンテナであることが可能である。別の実施形態においては、送信／受信要素１２２は、例えば、ＩＲ信号、ＵＶ信号または可視光信号を送信および／または受信するように構成されているエミッタ／検知器であることが可能である。さらに別の実施形態においては、送信／受信要素１２２は、ＲＦ信号および光信号の両方を送信および受信するように構成されることが可能である。送信／受信要素１２２は、無線信号の任意の組合せを送信および／または受信するように構成されることが可能であるということが理解されるであろう。
【００３０】
また、送信／受信要素１２２は、図１においては単一の要素として示されているが、ＷＴＲＵ１０２は、任意の数の送信／受信要素１２２を含むことができる。より具体的には、ＷＴＲＵ１０２は、ＭＩＭＯ技術を採用することができる。従って、一実施形態においては、ＷＴＲＵ１０２は、エアインターフェース１１５／１１６／１１７を介して無線信号を送信および受信するために、複数の送信／受信要素１２２（例えば、複数のアンテナ）を含むことができる。
【００３１】
トランシーバ１２０は、送信／受信要素１２２によって送信されることになる信号を変調するように、および送信／受信要素１２２によって受信される信号を復調するように構成されることが可能である。上述したように、ＷＴＲＵ１０２は、マルチモード機能を有することができる。従って、トランシーバ１２０は、ＷＴＲＵ１０２が、例えばＵＴＲＡおよびＩＥＥＥ  ８０２．１１などの複数のＲＡＴを介して通信することを可能にするために複数のトランシーバを含むことができる。
【００３２】
ＷＴＲＵ１０２のプロセッサ１１８は、スピーカー／マイクロフォン１２４、キーパッド１２６、および／またはディスプレイ／タッチパッド１２８（例えば、液晶ディスプレイ（ＬＣＤ）ディスプレイユニットもしくは有機発光ダイオード（ＯＬＥＤ）ディスプレイユニット）に結合されることが可能であり、そこからユーザ入力データを受信することができる。プロセッサ１１８は、ユーザデータをスピーカー／マイクロフォン１２４、キーパッド１２６、および／またはディスプレイ／タッチパッド１２８へ出力することもできる。また、プロセッサ１１８は、任意のタイプの適切なメモリ、例えば、非リムーバブルメモリ１３０および／またはリムーバブルメモリ１３２の情報にアクセスすること、およびそれらのメモリにデータを格納することが可能である。非リムーバブルメモリ１３０は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードディスク、または他の任意のタイプのメモリストレージデバイスを含むことができる。リムーバブルメモリ１３２は、加入者識別モジュール（ＳＩＭ）カード、メモリスティック、セキュアデジタル（ＳＤ）メモリカードなどを含むことができる。他の実施形態においては、プロセッサ１１８は、ＷＴＲＵ１０２上に物理的に配置されていない、例えば、サーバまたはホームコンピュータ（図示せず）上のメモリの情報にアクセスすること、およびそのメモリにデータを格納することが可能である。
【００３３】
プロセッサ１１８は、電源１３４から電力を受け取ることができ、ＷＴＲＵ１０２内の他のコンポーネントへの電力を分配および／または制御するように構成されることが可能である。電源１３４は、ＷＴＲＵ１０２に電力供給するための任意の適切なデバイスであり得る。例えば、電源１３４は、１つまたは複数の乾電池（例えば、ニッケルカドミウム（ＮｉＣｄ）、ニッケル亜鉛（ＮｉＺｎ）、ニッケル水素（ＮｉＭＨ）、リチウムイオン（Ｌｉ−ｉｏｎ）など）、太陽電池、燃料電池などを含むことができる。
【００３４】
プロセッサ１１８は、ＧＰＳチップセット１３６に結合されることも可能であり、ＧＰＳチップセット１３６は、ＷＴＲＵ１０２の現在の位置に関する位置情報（例えば、経度および緯度）を提供するように構成されることが可能である。ＷＴＲＵ１０２は、ＧＰＳチップセット１３６からの情報に加えて、またはその情報の代わりに、基地局からエアインターフェース１１５／１１６／１１７を介して位置情報を受信すること、および／または複数の近隣の基地局から受信されている信号のタイミングに基づいて自分の位置を判定することが可能である。ＷＴＲＵ１０２は、実施形態との整合性を保持しながら、任意の適切な位置判定方法を通じて位置情報を取得することができるということが理解されるであろう。
【００３５】
プロセッサ１１８は、他の周辺機器１３８にさらに結合されることが可能であり、他の周辺機器１３８は、さらなる特徴、機能および／または有線接続もしくは無線接続を提供する１つまたは複数のソフトウェアモジュールおよび／またはハードウェアモジュールを含むことができる。例えば、周辺機器１３８は、加速度計、ｅコンパス、衛星トランシーバ、デジタルカメラ（写真またはビデオ用）、ユニバーサルシリアルバス（ＵＳＢ）ポート、振動デバイス、テレビジョントランシーバ、ハンドフリーヘッドセット、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール、周波数変調（ＦＭ）ラジオユニット、デジタルミュージックプレーヤ、メディアプレーヤ、ビデオゲームプレーヤモジュール、インターネットブラウザなどのセンサを含むことができる。
【００３６】
図２は、例えばクラウドサービスにおけるサーバとして、本開示の実施形態において使用されることが可能である例示的なネットワークエンティティ１９０を示す。図２において示されるように、ネットワークエンティティ１９０は、通信インターフェース１９２、プロセッサ１９４および非一時的なデータストレージ１９６を含み、これらは全て、バス、ネットワーク、または他の通信パス１９８によって通信可能にリンクされている。
【００３７】
通信インターフェース１９２は、１つもしくは複数の有線通信インターフェースおよび／または１つもしくは複数の無線通信インターフェースを含むことができる。有線通信に関して、通信インターフェース１９２は、例としてイーサネットインターフェースなどの１つまたは複数のインターフェースを含むことができる。無線通信に関して、通信インターフェース１９２は、コンポーネント、例えば、１つもしくは複数のアンテナ、１つもしくは複数のタイプの無線（例えば、ＬＴＥ）通信用に設計および構成されている１つもしくは複数のトランシーバ／チップセット、並びに／または、当業者によって適切とみなされる他の任意のコンポーネントを含むことができる。そしてさらに、無線通信に関して、通信インターフェース１９２は、無線通信（例えば、ＬＴＥ通信、Ｗｉ−Ｆｉ通信など）のクライアント側ではなくネットワーク側で機能するのに適したスケールおよび構成で展開されることが可能である。従って、通信インターフェース１９２は、カバレッジエリア内の複数の移動局、ＵＥ、または他のアクセス端末にサービス提供するための適切な装備および回路（おそらくは複数のトランシーバを含む）を含むことができる。
【００３８】
プロセッサ１９４は、当業者によって適切とみなされる任意のタイプの１つまたは複数のプロセッサを含むことができ、そのいくつかの例は、汎用マイクロプロセッサおよび専用ＤＳＰを含む。
【００３９】
データストレージ１９６は、任意の非一時的なコンピュータ可読媒体またはそのような媒体の組合せの形態を取ることができる（そのいくつかの例は、ほんの数例を挙げれば、フラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、およびランダムアクセスメモリ（ＲＡＭ）を含む）。なぜなら、当業者によって適切とみなされる任意の１つまたは複数のタイプの非一時的なデータストレージが使用されることが可能であるからである。図２において示されるように、データストレージ１９６は、本明細書において記述されている様々なネットワークエンティティ機能の様々な組合せを実行するためにプロセッサ１９４によって実行可能なプログラム命令１９７を含む。
【００４０】
本開示は、クラウドサービスにおいて格納されているデータを保護するシステムおよび方法について記述している。クラウドインフラストラクチャが信頼されていることを確実にすることに対する代わりに（または追加として）異なるアプローチが記述されている。例示的な実施形態においては、クラウドサーバの代わりにユーザのパーソナルデバイスを使用して機密データ処理が実行され、クラウドインフラストラクチャは、そのような委任を可能にするメカニズムを含む。クラウドサーバは、暗号化された個人データのためのストレージとして使用される。暗号化されていないデータの処理は、信頼されている構内において実行されて、多くの攻撃シナリオを無関係にする。なぜなら、信頼されていない構内において機密データが復号されることは絶対にないからである。本明細書において開示される実施形態は、プライバシーを保持する一方で機密の個人データの処理を依然として可能にするように機能する。
【００４１】
ある実施形態は、リモートプロシージャーコール（ＲＰＣ）の使用に基づいている。このアプローチは、問題の分割を必要とし、それによって、信頼されていないシステム上に格納されている暗号化された機密データが、トラステッドシステムへ処理のために渡され、暗号化された結果が、処理の後に、信頼されていないシステムへ返される。
【００４２】
ある実施形態は、リモートプロセスに基づいている。暗号化されたデータをユーザのデバイス上で処理するために使用されるプログラムが展開される。これは、アルゴリズムどうしを分割する必要がないという利点を有する。しかしながら、これは、プログラムどうしが２つのカテゴリーへ分類されることを必要とする。
【００４３】
ある実施形態は、リモートオペレーティングシステム（ＯＳ）に基づいている。ＯＳインスタンス全体が、仮想化メカニズムを使用してユーザのデバイスにおいて実行される。プライバシーの機密性を必要とするユーザは、クラウド環境全体を自分のデバイスへ展開し、クラウドをデータソースとしてのみ使用する。
【００４４】
３つのアプローチは全て可能であり、実現可能性はアプリケーションドメインに依存する。別の信頼依存関係もある。クラウドソフトウェアプロバイダは、秘密のアルゴリズムを含む独自のサービスを提供する。それらをクライアントのデバイスに公開することは、それらのアルゴリズムが競合相手によってリバースエンジニアリングおよびコピーされる可能性があるということを意味することになる。データ処理は、クラウドプロバイダのソフトウェアを実行することを含むので、悪意あるクラウドプロバイダによってユーザの個人データが漏洩されることが依然としてあり得る。しかしながら、ユーザの構内において計算を実行することは、認証ベースの技術が使用される場合でさえ検知することが非常に困難であるハードウェアベースの攻撃を軽減する。多くのハードウェアベースの攻撃は、「攻撃者としてのユーザ」というカテゴリーに属し、ここではユーザがコンピューティングインフラストラクチャを所有しているので、これらの攻撃の動機は非常に低い。
【００４５】
リモートプロシージャーコール
例示的な実施形態においては、パーソナルクラウド内に格納される個々の個人データ値が、機密または非機密のどちらかであるようにタグ付けされる。機密の部分は、暗号化された形態で格納される。データ処理がこれらの機密データフィールドにアクセスする場合は常に、実行は、ユーザのローカルシステムへ移される。非機密データの処理は、クラウド環境において実行されることが可能である。暗号化された機密の資料のための復号キーは、ユーザのローカルシステムにおいてのみ利用可能である。
【００４６】
ある実施態様においては、全てのデータは、データベース内に格納され、全てのデータアイテムは、機密値フィールドを有する。２つの機密レベルしかない場合には、その値は、バイナリーフラグ値であることが可能である。データそのものは暗号化されているが、クラウドプロバイダは、依然としてメタデータ情報にアクセスできる場合があるということに留意されたい。プロバイダは、「給与」、「病気」、「犯罪記録」のようなデータフィールドの名前をモニタすることができるが、コンテンツそのものは暗号化されている。ある実施形態においては、データの機密性を検証するために使用される機能がある。クライアントシステムは、データを処理するために使用されるリモートプロシージャーコールのセットを利用する。下記のＰｙｔｈｏｎの断片は、例示的なプログラムフローシナリオを示している。
【００４７】
【表１】
0006723263.tif 000002
【００４８】
この例における全てのデータフィールドは機密タグを含んでいるので、パラメータとして使用されることになるフィールドのうちの１つが機密フィールドであると検知された場合には、機密データの処理は、ユーザのパーソナルデバイスへ転送される。
【００４９】
上記の例示的なコードにおいては、非機密データ処理は、クラウドプログラム内のサブルーチンとして実施されるコード（ｆｕｎｃｔｉｏｎＡ）を使用し、その一方で機密データの処理は、リモートプロシージャーコールクライアントスタブ関数（ｒｐｃ＿ｆｕｎｃｔｉｏｎＡ）をコールすることによってユーザのシステムへ委任される。この関数は、データがどこで処理されるべきかを指定するパラメータ（Ｐｅｒｓｏｎａｌ）を有することもできる。ユーザのローカルデバイスは、それぞれの指定されたＲＰＣコールを実施するためのＲＰＣリスナーコンポーネントおよび実行可能コードを提供される。ＲＰＣコールは、機密情報をリモートシステムへ渡す。ＲＰＣ関数コールは、暗号化されたテキストのパラメータおよびプレーンテキストのパラメータの両方を同じ関数コール内に有することができる。機密情報は変数とともに渡されるので、実施関数は、必要に応じてパラメータを復号することができる。
【００５０】
リモートプロシージャーコールを使用するある実施態様においては、ユーザのデバイスにおいて関数を実行するという判定に応答して、クラウドサーバが、スタック上へプッシュされるパラメータを伴って、スタブ関数へのコールを実行する。このスタブは、それらのパラメータをメッセージ内にマーシャリングし、そのメッセージを送信するためのシステムコールを行う。クラウドサーバのオペレーティングシステムは、そのメッセージをクラウドサーバからユーザのデバイスへ送信する。
【００５１】
ユーザのオペレーティングシステムは、入ってくるパケットをスタブ関数へ渡す。スタブ関数は、メッセージからパラメータをアンパック（アンマーシャリング）する。クライアントマシン上のスタブ関数は、必要とされているローカル関数をコールする。クラウドへの応答は、同じステップを逆方向へ辿る。
【００５２】
ある実施形態においては、クラウドとパーソナルデバイスとの間におけるネットワーク通信も保護される。例えば、通信は、トランスポートレイヤセキュリティ（ＴＬＳ）またはＩＰＳＥＣベースの仮想プライベートネットワーク（ＶＰＮ）を使用してトンネリングされることが可能である。
【００５３】
リモートプロセス
ある実施形態においては、プロセス内でデータ処理を分割する代わりに、プロセス全体がユーザの構内へ移される。暗号化されたコンテンツを伴うクラウドベースのデータベースがある場合には、ユーザの構内において稼働するプロセスが、暗号化されたストレージにアクセスし、コンテンツをダウンロードする。そのコンテンツは、ユーザのデバイスにおいて復号され、そこで処理される。非機密データ処理は、依然としてクラウドサービスとして行われる。
【００５４】
例えば、一片のソフトウェアが、クラウドサーバによってユーザデバイスに提供されることが可能である。このソフトウェアは、ユーザデバイス上でインスタンス化されているトラステッドコンピューティング環境において実行されることが可能である。従って、クラウドサーバは、ユーザデバイスに対して、暗号化されたデータを伴うコンピュータコードを、暗号化されたデータに基づいてクラウドにおいて行動したいという要求に応答して提供する。ユーザデバイスは、そのコードを実行して、トラステッドコンピューティング環境において一片のソフトウェアをインスタンス化することなどを行い、ユーザデバイスにおいてコンテンツを復号し、その復号されたコンテンツ上でソフトウェアを実行する。ユーザデバイスは、コンテンツを再び暗号化し、その処理されて再び暗号化されたコンテンツをクラウドサーバへ返信する。ある実施形態においては、コンピュータコードは、クラウドにおいて利用可能な一片のソフトウェアの一部分（例えば、ユーザインターフェースを伴わない特定の写真フィルタなど、より大きなプログラムの単一のオペレーションなど）を含むことができる。
【００５５】
ＲＰＣの実施形態と比較すると、要求されているプロセスをユーザのデバイスにおいて実行するための既存のローカル関数がなく、従って、そのような関数のためのコンピュータコードが、ユーザのデバイスへ通信される。
【００５６】
リモートオペレーティングシステム
ユーザのデバイスにおいて稼働するリモートプロセスは、プライバシーの脅威でもあり得る。なぜなら、それはユーザの環境をモニタすることもできるからである。これらの脅威を軽減するために、仮想化された環境を使用してローカル処理が行われることが可能である。このソリューションは、完全な仮想化、または、Ｄｏｃｋｅｒシステムにおけるようなネームスペースベースの分割のような何らかのより軽量なもののどちらかに基づくことが可能である。
【００５７】
例示的なサービス
例示的な実施形態においては、写真操作クラウドサービスが提供される。例えば、写真操作クラウドサービスは、私的な画像に対してフィルタなどの様々な効果を加えるために使用されることが可能である。画像は、暗号化された形態で格納されるが、ユーザは、画像を処理するための能力を提供される。例示的なサービスは、ユーザが選択することができる元となるフィルタのセットを提供する。
【００５８】
図３において示されている例示的な方法３００においては、ユーザデバイス３０２が、データを暗号化し（３０５）、その暗号化されたデータを、格納（３１５）のためにクラウドサービス３０４へアップロードする（３１０）。クラウドサービスは、１つまたは複数のサーバを含むことができる。ユーザは、暗号化されていないデータを、クラウドサービスによる格納（３１５）のためにアップロードすることもできる（３１２）。ユーザデバイスは、選択されたデータを処理する要求をクラウドサービスへ送信することができる（３２０）。クラウドサービスは、選択されたデータを処理する要求を受信し（３２５）、選択されたデータが暗号化されているかどうかを判定する（３３０）。（この例示的な実施形態においては、データは、対応する復号キーをクラウドサービスが提供されていない場合には、暗号化されているとみなされるということに留意されたい。例えば、クラウドサービスが復号キーを有しているデータは、この例においては、暗号化されているとみなされない。）
処理されることになるデータが暗号化されている場合には（３３２ａ）、データは、その暗号化された形態で、復号および処理のためにユーザデバイスへ、そのデータをどのようにして処理するかについての命令とともに送信される（３３５）。データをどのようにして処理するかについての命令は、様々な形態で提供されることが可能である。例えば、それらの命令は、リモートプロシージャーコールの一部として提供されることが可能であり、またはクラウドサービスは、データ処理を実行するためのコンピュータコード（例えば、写真編集フィルタなど、要求された処理をデータ上で実行するための実行可能な一片のソフトウェアなど）をユーザデバイスへ搬送することができる。ユーザデバイスは、暗号化されたデータを受信し（３４０）、そのデータを復号し（３４５）、受信された命令に従ってそのデータを処理する（３５０）。ある実施形態においては、データを処理することは、データ上で処理を実行するためにユーザデバイスにおいてソフトウェアをインスタンス化するためのコンピュータコードを実行することをさらに含むことができる。ユーザデバイスは、結果として生じる処理されたデータを再び暗号化し（３５５）、その暗号化された処理されたデータを、格納（３６５）のためにクラウドサービスへ返信する（３６０）。ある実施形態においては、コンピュータコードは、データ処理の後で、および／または再び暗号化された処理されたデータをクラウドへアップロードした後で、ユーザのデバイスから除去されることが可能である。
【００５９】
データ処理を実行するために使用されるコンピュータコードをクラウドサービスがユーザデバイスへ搬送するある実施形態においては、コピーすることおよび／またはリバースエンジニアリングすることからコンピュータコードを保護するためのステップが取られることが可能である。例えば、コンピュータコードは、暗号化された形態でユーザデバイスへ送信されることが可能であり、そのコンピュータコードは、ＡＲＭ  ＴｒｕｓｔＺｏｎｅなどの隔離された実行環境において復号されて実行される。クラウドサービスの知的財産を保護するために、ある実施形態においては、リモート認証、シールドストレージおよび／またはメモリカーテニングなどのトラステッドコンピューティング技術が採用される。ある実施形態においては、クラウドサービスは、直接匿名認証などのリモート認証プロトコルを使用して、ユーザデバイスに認証を要求することができ、満足できる応答をユーザデバイスから受信した後にのみ、コンピュータコードをユーザデバイスへ送信することができる。
【００６０】
処理されることになるデータが暗号化されていない場合には（３３２ｂ）、データは、クラウドサービスによって処理され（３７０）、クラウドサービスは、処理されたデータを格納する（３７５）。ある実施形態においては、処理されたデータは、クライアントデバイスへ搬送されることも可能である。ある実施形態においては、処理されたデータは、部分的なまたは低解像度の形態でのみクライアントデバイスへ搬送される。例えば、大きな画像ファイルがクラウドサービスによって（例えば、フィルタを適用するために、または顔認識を実行するために）処理されて、完全な解像度で処理された画像がクラウドサービスによって格納され、処理された画像のさらに低い解像度のバージョンがユーザデバイスに提供されて、その画像の完全な解像度のバージョンをダウンロードすることをユーザに要求することなく、処理が正しく実行されたことをユーザが確認することができる。
【００６１】
図４において示されている例示的な方法においては、ユーザ４０１が、１または複数の写真を撮影するかまたはその他の形で入手する（４０５）。これらの写真は、暗号化され、個人の暗号化されたデータクラウド内に格納される（例えば、アップロードされる）（４１０）。それぞれの新たな写真は、トランスペアレントに暗号化され、暗号化されたクラウドフォトギャラリー４０２へアップロードされる。ユーザは、ビューアソフトウェアを提供され、そのビューアソフトウェアは、ギャラリー画像をトランスペアレントに復号し、それらの画像をユーザに表示する（４１５）。
【００６２】
トラステッドデータマイニングサンドボックス（ＴＤＭＳ）などのトラステッドコンピューティング環境が、ユーザデバイス上でインスタンス化される（４２０）。ユーザは、画像を操作するために使用されることが可能である画像フィルタリングサービス（４０４）を選択する（４２５）。選択された操作フィルタは、トラステッドコンピューティング環境内にインストールされる（４３０）。ユーザは、フィルタパラメータを構成および調整する（４３５、４４０）。フィルタリングされた画像が、ユーザに示される（４４５）。フィルタリングされた画像は、トランスペアレントに暗号化され、暗号化されたパーソナルクラウドギャラリーへアップロードされる（４５０）。トラステッドコンピューティング環境が、アンインストールされる（４５５）。
【００６３】
ある実施形態においては、このシステムは、暗号化されたデータをユーザデバイスへ、入ってくるデータパケットの処理を取り扱うユーザデバイス上の既存のソフトウェアへの１つまたは複数のパラメータとともに通信することができる。ある実施形態においては、このシステムは、暗号化されたデータをユーザデバイスへ、そのデータに関連付けられている、適切なプロセスを起動する記述子（ＭＩＭＥタイプなど）とともに通信することができる。ある実施形態においては、このシステムは、暗号化されたデータをユーザデバイスへ、一片のスクリプト言語コード（最低１行を有する）とともに通信することができる。これらのケースにおいては、ユーザデバイスは、暗号化されたデータをしかるべく処理することができる信頼されているランタイム環境を有することができる。
【００６４】
上記では特徴および要素が特定の組合せで記述されているが、それぞれの特徴または要素は、単独で、または他の特徴および要素との任意の組合せで使用されることができるということを当技術分野における標準的な技術者なら理解するであろう。また、本明細書において記述されている方法は、コンピュータまたはプロセッサによって実行するためにコンピュータ可読媒体内に組み込まれているコンピュータプログラム、ソフトウェアまたはファームウェアで実施されることができる。コンピュータ可読記憶媒体の例は、ＲＯＭ、ＲＡＭ、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスクおよびリムーバブルディスクなどの磁気媒体、光磁気媒体、ＣＤ−ＲＯＭディスクおよびデジタル多用途ディスク（ＤＶＤ）などの光媒体を含むが、それらには限定されない。ＷＴＲＵ、ＵＥ、端末、基地局、ＲＮＣまたは任意のホストコンピュータにおいて使用するための無線周波数トランシーバを実施するために、ソフトウェアと関連付けられているプロセッサが使用されることが可能である。
【００６５】
さらなる実施形態は、下記を含むが、それらには限定されない。
【００６６】
一実施形態においては、方法が、第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、第１のオペレーションは、少なくとも、データの第１のセット上で、およびデータの第２のセット上で実行される第１の機能を含む、ことと、データの第１および第２のセットのうちの少なくとも１つが暗号化されているかどうかを判定することと、データの第１および第２のセットのうちの少なくとも１つが暗号化されているという判定に応答して、データの第１および第２のセットと、第１の機能を実行するための命令とをクライアントデバイスへ送信することと、データの第１のセット上での機能の暗号化された結果を表す第１の処理された暗号化されたデータをクライアントデバイスから受信することとを含む。ある実施形態においては、データの第１および第２のセットのうちの１つのみが暗号化される。ある実施形態においては、第１の機能を実行するための命令は、第１の機能を実行するためのコンピュータコードを含む。ある実施形態においては、コンピュータコードは、暗号化された形態でクライアントデバイスへ送信される。ある実施形態においては、この方法は、クライアントデバイスのリモート認証を要求することをさらに含み、コンピュータコードは、クライアントデバイスの満足できる認証を受信した後にのみ、クライアントデバイスへ送信される。ある実施形態においては、この方法は、第１の処理された暗号化されたデータを格納することをさらに含む。ある実施形態においては、データの第１および第２のセットのうちの少なくとも１つが暗号化されているかどうかを判定することは、データの第１および第２のセットのうちの少なくとも１つが、機密であるとしてマークされているかどうかを判定することを含む。ある実施形態においては、この方法は、少なくとも１つのサーバを含むクラウドサービスによって実行される。ある実施形態においては、データの第１および第２のセットと、第１の機能を実行するための命令とを送信することは、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは、実行可能なコンピュータコードを含む。
【００６７】
一実施形態においては、方法が、第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、第１のオペレーションは、少なくとも、データの第１のセット上で、およびデータの第２のセット上で実行される第１の機能を含む、ことと、データの第１および第２のセットのうちの少なくとも１つが暗号化されているかどうかを判定することと、データの第１および第２のセットのうちの少なくとも１つが暗号化されている場合には、データの第１および第２のセットと、第１の機能を実行するための命令とをクライアントデバイスへ送信することと、データの第１および第２のセット上での第１の機能の暗号化された結果を表す第１の処理された暗号化されたデータをクライアントデバイスから受信することと、データの第１および第２のセットのどちらも暗号化されていない場合には、データの第１および第２のセット上で第１の機能を実行して、第１の処理されたデータを生成することとを含む。ある実施形態においては、データの第１および第２のセットのうちの１つのみが暗号化される。ある実施形態においては、第１の機能を実行するための命令は、第１の機能を実行するためのコンピュータコードを含む。ある実施形態においては、コンピュータコードは、暗号化された形態でクライアントデバイスへ送信される。ある実施形態においては、この方法は、クライアントデバイスのリモート認証を要求することをさらに含み、コンピュータコードは、クライアントデバイスの満足できる認証を受信した後にのみ、クライアントデバイスへ送信される。ある実施形態においては、この方法は、第１の処理された暗号化されたデータを格納することをさらに含む。ある実施形態においては、データの第１および第２のセットのうちの少なくとも１つが暗号化されているかどうかを判定することは、データの第１および第２のセットのうちの少なくとも１つが、機密であるとしてマークされているかどうかを判定することを含む。ある実施形態においては、この方法は、第１の処理されたデータをクライアントデバイスへ送信することをさらに含む。ある実施形態においては、この方法は、少なくとも１つのサーバを含むクラウドサービスによって実行される。ある実施形態においては、データの第１および第２のセットと、第１の機能を実行するための命令とを送信することは、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは、実行可能なコンピュータコードを含む。
【００６８】
一実施形態においては、方法が、第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能、およびデータの第２のセット上で実行される第２の機能を含む、ことと、データの第１および第２のセットが暗号化されているかどうかを判定することと、データの第１のセットが暗号化されているという判定に応答して、データの第１のセットと、第１の機能を実行するための命令とをクライアントデバイスへ送信することと、データの第１のセット上での機能の暗号化された結果を表す第１の処理された暗号化されたデータをクライアントデバイスから受信することと、データの第２のセットが暗号化されていないという判定に応答して、データの第２のセット上で第２の機能を実行して、第２の処理されたデータを生成することとを含む。ある実施形態においては、第１の機能を実行するための命令は、第１の機能を実行するためのコンピュータコードを含む。ある実施形態においては、コンピュータコードは、暗号化された形態でクライアントデバイスへ送信される。ある実施形態においては、この方法は、クライアントデバイスのリモート認証を要求することをさらに含み、コンピュータコードは、クライアントデバイスの満足できる認証を受信した後にのみ、クライアントデバイスへ送信される。ある実施形態においては、この方法は、第１の処理された暗号化されたデータを格納することをさらに含む。ある実施形態においては、データの第１および第２のセットが暗号化されているかどうかを判定することは、データの第１および第２のセットが、機密であるとしてマークされているかどうかを判定することを含む。ある実施形態においては、この方法は、第２の処理されたデータをクライアントデバイスへ送信することをさらに含む。ある実施形態においては、この方法は、少なくとも１つのサーバを含むクラウドサービスによって実行される。ある実施形態においては、データの第１のセットと、第１の機能を実行するための命令とを送信することは、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは、実行可能なコンピュータコードを含む。
【００６９】
一実施形態においては、方法が、第１のオペレーションを実行する要求をクライアントデバイスから受信することであって、第１のオペレーションは、少なくとも、データの第１のセット上で実行される第１の機能を含む、ことと、データの第１のセットが暗号化されているかどうかを判定することと、データの第１のセットが暗号化されているという判定に応答して、データの第１のセットと、第１の機能を実行するための命令とをクライアントデバイスへ送信することと、データの第１のセット上での機能の暗号化された結果を表す第１の処理された暗号化されたデータをクライアントデバイスから受信することと、第２のオペレーションを実行する要求をクライアントデバイスから受信することであって、第２のオペレーションは、少なくとも、データの第２のセット上で第１の機能を実行することを含む、ことと、データの第２のセットが暗号化されているかどうかを判定することと、データの第２のセットが暗号化されていないという判定に応答して、データの第２のセット上で第１の機能を実行して、第２の処理されたデータを生成することとを含む。ある実施形態においては、第１の機能を実行するための命令は、第１の機能を実行するためのコンピュータコードを含む。ある実施形態においては、コンピュータコードは、暗号化された形態でクライアントデバイスへ送信される。ある実施形態においては、この方法は、クライアントデバイスのリモート認証を要求することをさらに含み、コンピュータコードは、クライアントデバイスの満足できる認証を受信した後にのみ、クライアントデバイスへ送信される。ある実施形態においては、この方法は、第１の処理された暗号化されたデータを格納することをさらに含む。ある実施形態においては、データの第１のセットが暗号化されているかどうかを判定することは、データの第１のセットが、機密であるとしてマークされているかどうかを判定することを含む。ある実施形態においては、この方法は、第２の処理されたデータをクライアントデバイスへ送信することをさらに含む。ある実施形態においては、この方法は、少なくとも１つのサーバを含むクラウドサービスによって実行される。ある実施形態においては、データの第１のセットと、第１の機能を実行するための命令とを送信することは、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは、実行可能なコンピュータコードを含む。
【００７０】
一実施形態においては、方法が、暗号化されたデータレコードの第１のセットと、暗号化されていないデータレコードの第２のセットとを含む複数の画像ファイルを格納することと、複数のデータレコードを処理する要求をクライアントデバイスから受信することと、複数のデータレコードのうちのどれが第１のセット内にあるか、および複数のデータレコードのうちのどれが第２のセット内にあるかを判定することと、データレコードの第１のセットと、データレコードの第１のセットを処理するための命令とをクライアントデバイスへ送信することと、データレコードの第２のセットを処理することと、データレコードの第１のセットの処理の暗号化された結果を表す暗号化された処理されたデータレコードの第３のセットをクライアントデバイスから受信することとを含む。ある実施形態においては、データレコードの第１のセットを処理するための命令は、データレコードの第１のセットを処理するためのコンピュータコードを含む。ある実施形態においては、コンピュータコードは、暗号化された形態でクライアントデバイスへ送信される。ある実施形態においては、この方法は、クライアントデバイスのリモート認証を要求することをさらに含み、コンピュータコードは、クライアントデバイスの満足できる認証を受信した後にのみ、クライアントデバイスへ送信される。ある実施形態においては、この方法は、暗号化された処理されたデータレコードの第３のセットを格納することをさらに含む。ある実施形態においては、複数の画像ファイルのうちのどれが第１のセット内にあるか、および複数の画像ファイルのうちのどれが第２のセット内にあるかを判定することは、複数の画像ファイルのうちのどれが、機密であるとしてマークされているかを判定することを含む。ある実施形態においては、データレコードの第２のセットの処理は、処理されたデータレコードの第４のセットを生成し、この方法は、処理されたデータレコードの第４のセットをクライアントデバイスへ送信することをさらに含む。ある実施形態においては、この方法は、少なくとも１つのサーバを含むクラウドサービスによって実行される。ある実施形態においては、データレコードの第１のセットと、第１の機能を実行するための命令とを送信することは、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは、実行可能なコンピュータコードを含む。
【００７１】
一実施形態においては、方法が、暗号化されたデータの第１のセットを、少なくとも１つのサーバを含むクラウドサービスへ送信することと、第１のオペレーションを実行する要求をクラウドサービスへ送信することであって、第１のオペレーションは、少なくとも、暗号化されたデータの第１のセット上で実行される第１の機能を含む、ことと、第１のオペレーションを実行する要求に応答して、暗号化されたデータの第１のセットと、第１の機能を実行するための命令とを受信することと、暗号化されたデータの第１のセットを復号して、第１の復号されたデータを生成することと、第１の復号されたデータ上で第１の機能を実行して、第１の処理されたデータを生成することと、第１の処理されたデータを暗号化して、第１の処理された暗号化されたデータを生成することと、第１の処理された暗号化されたデータをクラウドサービスへ送信することとを含む。ある実施形態においては、データレコードの第１のセットを処理するための命令は、データレコードの第１のセットを処理するためのコンピュータコードを含む。ある実施形態においては、第１の機能は、クライアントデバイス上のトラステッドコンピューティング環境において実行される。ある実施形態においては、この方法は、リモート認証をクラウドサービスに提供することをさらに含む。ある実施形態においては、コンピュータコードは暗号化されており、この方法は、コンピュータコードを実行のために復号することをさらに含む。ある実施形態においては、コンピュータコードの復号は、トラステッドコンピューティング環境において実行される。ある実施形態においては、この方法は、クライアントデバイスによって実行される。ある実施形態においては、データレコードの第１のセットと、第１の機能を実行するための命令との受信は、リモートプロシージャーコールを使用して実行される。ある実施形態においては、コンピュータコードは実行可能なコンピュータコードを含む。
【００７２】
一実施形態においては、方法が、第１の画像ファイルを含む複数の画像ファイルを格納することと、第１の画像ファイルを処理する要求をクライアントデバイスから受信することと、第１の画像ファイルが暗号化されているかどうかを判定することと、第１の画像ファイルが暗号化されている場合には、第１の画像ファイルと、第１の画像ファイルを処理するための命令とをクライアントデバイスへ送信することと、第１の画像ファイルの処理の暗号化された結果を表す第１の暗号化された処理された画像ファイルをクライアントデバイスから受信することと、第１の画像ファイルが暗号化されていない場合には、第１の画像ファイルを処理して、第１の処理された画像ファイルを生成することとを含む。
【００７３】
一実施形態においては、方法が、第１の画像ファイルを含む複数の画像ファイルを格納することと、第１の画像ファイルを処理する要求をクライアントデバイスから受信することと、第１の画像ファイルが暗号化されているかどうかを判定することと、第１の画像ファイルが暗号化されているという判定に応答して、第１の画像ファイルと、第１の画像ファイルを処理するための命令とをクライアントデバイスへ送信することと、第１の画像ファイルの処理の暗号化された結果を表す第１の暗号化された処理された画像ファイルをクライアントデバイスから受信することとを含む。
【００７４】
一実施形態においては、方法が、暗号化された画像ファイルの第１のセットと、暗号化されていない画像ファイルの第２のセットとを含む複数の画像ファイルを格納することと、複数の画像ファイルを処理する要求をクライアントデバイスから受信することと、複数の画像ファイルのうちのどれが第１のセット内にあるか、および複数の画像ファイルのうちのどれが第２のセット内にあるかを判定することと、画像ファイルの第１のセットと、画像ファイルの第１のセットを処理するための命令とをクライアントデバイスへ送信することと、画像ファイルの第２のセットを処理することと、画像ファイルの第１のセットの処理の暗号化された結果を表す暗号化された処理された画像ファイルの第３のセットをクライアントデバイスから受信することとを含む。
【図１】
0006723263.tif 000003
【図２】
0006723263.tif 000004
【図３】
0006723263.tif 000005
【図４】
0006723263.tif 000006