JP2024501168A - セキュアなメモリ共有方法 - Google Patents

セキュアなメモリ共有方法 Download PDF

Info

Publication number
JP2024501168A
JP2024501168A JP2023534079A JP2023534079A JP2024501168A JP 2024501168 A JP2024501168 A JP 2024501168A JP 2023534079 A JP2023534079 A JP 2023534079A JP 2023534079 A JP2023534079 A JP 2023534079A JP 2024501168 A JP2024501168 A JP 2024501168A
Authority
JP
Japan
Prior art keywords
key
data
encrypted data
source node
destination node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023534079A
Other languages
English (en)
Inventor
ヘツラー、スティーブン、ロバート
ハント、ガーニー
ジョーンズ、チャールズ
カール、ジェームス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2024501168A publication Critical patent/JP2024501168A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Abstract

コンピュータ実装方法が、ソース・ノードによって、ソース・ノードによって制御される共有メモリの領域に記憶されたデータを求める要求を宛先ノードから受信することを含む。データは、ソース・ノードのローカル鍵で暗号化されている。方法は、ソース・ノードによって、ローカル鍵を使用してローカルで暗号化されたデータを復号することと、ソース・ノードによって、第1の暗号化データを生成するために第1の鍵を使用して、復号データを暗号化することとを含む。方法はさらに、ソース・ノードによって、第2の暗号化データを生成するために第2の鍵を使用して第1の暗号化データを暗号化することと、ソース・ノードによって、第2の暗号化データを宛先ノードに送信することとを含む。

Description

本発明は、一般には、ストレージ・システムを使用するセキュアなメモリ共有に関し、より詳細には、クラウド・ストレージ・システムおよびネットワークにおけるメモリ共有をセキュアにするためのセキュア・トランスコーダに関する。
様々なコンピュータ・ノード間での共有メモリに記憶されたデータをセキュアに共有することが望ましい。セキュアなデータ転送は、記憶データの近くに計算機能を備えるために特に有利である。たとえば、各ノードが特定の計算機能(たとえばデータベース、推論エンジンなど)を有し得る。データの共有を制限するために従来技術の手法ではアクセス制御が通例、使用されている。アクセス制御は絶対に安全というわけではなく、データ漏洩につながる可能性がある。たとえば、権限がエスカレーション(昇格)されることがある、制御が誤って設定されることがあるなどである。
他の従来技術の手法では、ソース・ノードが記憶データを暗号化する。別の手法では、ソース・ノードがデータを復号し、そのデータを共有のためにセキュアなリンクを介して送信することができる。さらに別の手法では、ソース・ノードがデータを復号し、ソース・ノードがソース・ノードの復号鍵を宛先ノードと共有することができる。これらの適用例では多くのデータ漏洩機会がある。適用例によっては、データへのセキュアなアクセスを提供するためにホモモルフィック暗号化を使用することができるが、ホモモルフィック暗号化は宛先がデータの平文にアクセスすることができない状態でデータに対する計算を行うことが可能とされる状況に限定される。ホモモルフィック暗号化の有用性はその低速なパフォーマンスによって制限される。
これらの様々な従来技術の手法は、宛先ノードにおける高度な信頼性を必要とする傾向がある。また、これらの従来の手法は機能の置換の柔軟性がない。当技術分野では、特に宛先ノードが不正を行った場合に共有を停止する機能を含む、共有データの高度なセキュリティを提供しながら、共有メモリ内のデータをセキュアに共有し、動作(たとえばストレージの近くでの計算など)を可能にする必要が依然として存在する。
一態様によるコンピュータ実装方法は、ソース・ノードによって、宛先ノードからソース・ノードによって制御される共有メモリの領域に記憶されたデータを求める要求を受信することを含む。データは、ソース・ノードのローカル鍵を使用して暗号化されている。方法は、ソース・ノードによって、ローカル鍵を使用してローカルで暗号化されたデータを復号することと、ソース・ノードによって、第1の暗号化データを生成するために第1の鍵を使用して復号データを暗号化することとを含む。方法はさらに、ソース・ノードによって、第2の暗号化データを生成するために第2の鍵を使用して第1の暗号化データを暗号化することと、ソース・ノードによって、第2の暗号化データを宛先ノードに送信することとを含む。この態様は、ローカル・メモリ内のメモリ範囲の共有と処理を可能にするので有利である。
任意による態様によるコンピュータ実装方法は、共有メモリの領域が複数の宛先ノードによって要求されることを含む。宛先ノードのうちの少なくとも2つの宛先ノードのそれぞれに異なる第2の鍵が関連付けられる。この任意による態様は、宛先ノードごとの別個の共有ポリシーという利点をもたらし、ソース・ノードが宛先ノードごとにアクセスを独立して制御することを可能にする。
一態様によるコンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読記憶媒体と、その1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含む。プログラム命令は、上記の方法を実行するプログラム命令を含む。
別の態様によるコンピュータ実装方法は、宛先ノードによって、第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。方法は、宛先ノードによって第2の鍵を受信することと、宛先ノードによって第1の鍵を受信することとを含む。方法はさらに、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することと、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することとを含む。この態様は、ソース・ノードと宛先ノードとの間でメモリ内のデータへのアクセスを共有する機能を提供するようにメモリのロード/ストア・モデルを適応させるので有利である。
任意による一態様によるコンピュータ実装方法は、第1の鍵が鍵マネージャから受信されることを含む。この任意による態様は、宛先ノードとソース・ノードとの共有ポリシーを実装する鍵マネージャという利点をもたらす。
別の態様によるコンピュータ実装方法は、宛先ノードによって、第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に、第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。第1の鍵はソース・ノードによって制御されるメモリの領域に関連付けられている。第2の鍵は宛先ノードに関連付けられている。方法は、宛先ノードによって第2の鍵を受信することと、宛先ノードによって第1の鍵を受信することとを含む。方法はさらに、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することと、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することとを含む。この態様は、データ漏洩に対するセキュリティを追加することと、ソース・ノードにアクセス制御を与えることとによって、宛先ノードとソース・ノードとの間の共有を容易にするので有利である。
任意による一態様によるコンピュータ実装方法は、第2の鍵がソース・ノードから受信されることを含む。この任意による態様は、ソース・ノードが宛先ノードとソース・ノードとの共有に対する最終的な制御を維持することを可能にするという利点をもたらす。
別の態様によるコンピュータ実装方法は、トランスコーダによって第2の暗号化データを受信することを含む。第2の暗号化データは、ソース・ノードによって制御される共有メモリの領域に記憶されているデータである。データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されている。方法は、トランスコーダによって第2の鍵を受信することと、トランスコーダによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することとを含む。方法はさらに、トランスコーダによって、第3の暗号化データを作成するために第3の鍵を使用して第1の暗号化データを暗号化することと、トランスコーダによって、第3の鍵を宛先ノードに送信することと、トランスコーダによって、第3の暗号化データを宛先ノードに送信することとを含む。この態様は、ソース・ノードとトランスコーダとの間で確立された共有ポリシーに従ってトランスコーダが宛先ノードにそうすることを許可する限り、宛先ノードがデータにアクセスし、復号することを可能にするので有利である。
任意による一態様によるコンピュータ実装方法は、第3の鍵がトランスコーダ・マネージャから受信されることを含む。この任意による態様は、鍵の生成など、トランスコーダのために比較的重い機能をセキュア・トランスコーダ・マネージャが実行することができるようにするという利点をもたらし、比較的軽い機能をセキュア・トランスコーダを介してメモリに結合された状態に維持する。
本発明のその他の態様および手法は、図面とともに読めば本発明の原理を例として示す以下の詳細な説明から明らかになるであろう。
本発明の一態様によるクラウド・コンピューティング環境を示す図である。 本発明の一態様による抽象化モデル層を示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による概略アーキテクチャを示す図である。 本発明の一態様による方法を示すフローチャートである。 本発明の一態様による方法を示すフローチャートである。 本発明の一態様による方法を示すフローチャートである。 本発明の一態様による方法を示すフローチャートである。
以下の説明は、本発明の一般原理を示すことを目的として説明するものであり、本明細書で特許請求されている本発明の概念を限定することを意図していない。また、本明細書に記載の特定の特徴は、考えられる様々な組合せおよび置換のそれぞれで他の記載されている特徴と組み合わせて使用することができる。
本明細書で特に定義されていない限り、すべての用語は、本明細書から含意される意味と、当業者によって理解されているか、または辞書、論文などで定義されているか、あるいはその両方である意味を含む、その用語の最も広義の可能な解釈が与えられるべきものである。
また、本明細書および添付の特許請求の範囲で使用されている単数形の「a」、「an」および「the」は、特に明記されていない限り複数指示概念を含むことに留意されたい。また「含む」または「含んでいる」あるいはその両方の用語は、本明細書で使用されている場合、記載されている特徴、整数、ステップ、動作、要素またはコンポーネントあるいはこれらの組合せの存在を規定しているが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループあるいはこれらの組合せの存在または追加を排除しないことも理解されたい。
以下の説明は、メモリを復号するためのソース秘密鍵へのアクセスなしに宛先ノードにメモリへのアクセスを与えるために好ましくはトランスコーダを使用して、ソース・ノードによって制御されるメモリへのアクセスを1つまたは複数の宛先ノードに共有させるいくつかの態様を開示する。
一般的な一態様では、コンピュータ実装方法が、ソース・ノードによって、ソース・ノードによって制御される共有メモリの領域に記憶されたデータを求める宛先ノードからの要求を受信することを含む。データは、ソース・ノードのローカル鍵で暗号化されている。方法は、ソース・ノードによって、ローカルで暗号化されたデータをローカル鍵を使用して復号することと、ソース・ノードによって、第1の暗号化データを生成するために第1の鍵を使用して復号データを暗号化することとを含む。方法はさらに、ソース・ノードによって、第2の暗号化データを生成するために第2の鍵を使用して第1の暗号化データを暗号化することと、ソース・ノードによって、第2の暗号化データを宛先ノードに送信することとを含む。
別の一般的な態様では、コンピュータ・プログラムが、1つまたは複数のコンピュータ可読記憶媒体と、その1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含む。プログラム命令は、上記の方法を実行するプログラム命令を含む。
別の一般的な態様では、コンピュータ実装方法が、宛先ノードによって第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。方法は、宛先ノードによって第2の鍵を受信することと、宛先ノードによって第1の鍵を受信することとを含む。方法はさらに、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することと、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することとを含む。
別の一般的な態様では、コンピュータ実装方法が、宛先ノードによって第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に、第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。第1の鍵はソース・ノードによって制御されるメモリの領域に関連付けられている。第2の鍵は宛先ノードに関連付けられている。方法は、宛先ノードによって第2の鍵を受信することと、宛先ノードによって第1の鍵を受信することとを含む。方法はさらに、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することと、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することとを含む。
別の一般的な態様では、コンピュータ実装方法が、トランスコーダによって第2の暗号化データを受信することを含む。第2の暗号化データは、ソース・ノードによって制御される共有メモリの領域に記憶されたデータである。データは、第1の暗号化データを作成するために第1の鍵で暗号化され、第1の暗号化データは次に第2の暗号化データを作成するために第2の鍵で暗号化される。方法は、トランスコーダによって第2の鍵を受信することと、トランスコーダによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することとを含む。方法はさらに、トランスコーダによって、第3の暗号化データを作成するために第3の鍵を使用して第1の暗号化データを暗号化することと、トランスコーダによって、第3の鍵を宛先ノードに送信することと、トランスコーダによって、第3の暗号化データを宛先ノードに送信することとを含む。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載されている教示の実装はクラウド・コンピューティング環境には限定されないことを理解されたい。逆に、本発明の態様は、現在知られているか、または今後開発される任意の他の種類のコンピューティング環境とともに実装することができる。
クラウド・コンピューティングは、最小限の管理労力またはサービス・プロバイダとの相互連絡で迅速にプロビジョニングすることができ、解放することができる、構成可能コンピューティング資源(たとえば、ネットワーク、ネットワーク回線容量、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの配備モデルとを含み得る。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの間で人間の介在を必要とせずに一方的に、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能をプロビジョニングすることができる。
広いネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(たとえば携帯電話、ラップトップ、およびPDA)による使用を容易にする標準機構を介してアクセスすることができる。
資源プール:マルチテナント・モデルを使用して複数の消費者に対応するために、プロバイダのコンピューティング資源がプールされ、需要に応じて、異なる物理資源および仮想資源が動的に割り当てられ、再割り当てされる。消費者は一般に、提供される資源の厳密な場所について管理することができないかまたは知らないが、より高い抽象レベルの場所(たとえば、国、州、またはデータセンター)を指定することが可能な場合があるという点で、場所独立感がある。
迅速な伸縮性:迅速かつ伸縮性をもって、場合によっては自動的に、機能をプロビジョニングして、迅速にスケールアウトすることができ、また、迅速に機能を解放して迅速にスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な機能はしばしば無限であるように見え、いつでも好きなだけ購入することができる。
従量制サービス:クラウド・システムが、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に依って適切な何らかの抽象化レベルの計量機能を利用することによって、資源利用を自動的に制御し、最適化する。資源使用量を監視、制御および報告することができ、利用されたサービスのプロバイダと消費者の両方に透明性を与えることができる。
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS:Software as aService):消費者に提供される機能は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である(たとえばウェブ・ベースのEメール)。消費者は、限られたユーザ固有アプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能まで含めて、基礎にあるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS:Platform as aService):消費者に提供される機能は、クラウド・インフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成または取得アプリケーションを配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、配備されたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructureas a Service):消費者に提供される機能は、処理、ストレージ、ネットワークおよびその他の基本的コンピューティング資源をプロビジョニングすることであり、その際、消費者は、オペレーティング・システムとアプリケーションとを含み得る任意のソフトウェアを配備し、稼働させることができる。消費者は、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システムと、ストレージと、配備されたアプリケーションとを制御することができ、場合によっては選択されたネットワーク・コンポーネント(たとえばホスト・ファイアウォール)の限定的な制御を行うことができる。
配備モデルは以下の通りである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織または第三者によって管理可能であり、オンプレミスまたはオフプレミスに存在可能である。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事(たとえば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。組織または第三者が管理することができ、オンプレミスまたはオフプレミスに存在可能である。
パブリック・クラウド:このクラウド・インフラストラクチャは、公衆または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、独自の実体のままであるが、データおよびアプリケーション可搬性を可能にする標準化技術または専有技術(たとえば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の複合体である。
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図1を参照すると、例示のクラウド・コンピューティング環境50が図示されている。図のように、クラウド・コンピューティング環境50は、たとえばパーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはこれらの組合せなど、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は互いに通信することができる。ノード10は、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウドまたはハイブリッド・クラウドあるいはこれらの組合せなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化(図示せず)されてもよい。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはこれらの組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上で資源を維持する必要がないサービスとして提供することができる。なお、図1に示すコンピューティング・デバイス54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえばウェブ・ブラウザを使用して)任意の種類のネットワーク接続またはネットワーク・アドレス指定可能接続あるいはその組合せを介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
次に、図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される1組の機能抽象化層が示されている。図2に示すコンポーネント、層および機能は、例示を意図したに過ぎず、本発明の態様はこれらには限定されないことを前もって理解されたい。図のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントとソフトウェア・コンポーネントとを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66がある。態様によっては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67とデータベース・ソフトウェア68とを含む。
仮想化層70は、以下のような仮想実体の例を与えることができる抽象化層を提供する。すなわち、仮想サーバ71と、仮想ストレージ72と、仮想プライベート・ネットワークを含む仮想ネットワーク73と、仮想アプリケーションおよびオペレーティング・システム74と、仮想クライアント75である。
一実施例では、管理層80は、以下に記載の機能を提供することができる。資源プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング資源およびその他の資源の動的調達を行う。メータリングおよびプライシング82は、クラウド・コンピューティング環境内で資源が利用されるときのコスト追跡と、これらの資源の消費に対する対価の請求またはインボイス処理を行う。一実施例ではこれらの資源にはアプリケーション・ソフトウェア・ライセンスが含まれてもよい。セキュリティは、クラウド消費者およびタスクのための本人検証と、データおよびその他の資源の保護とを行う。ユーザ・ポータル83は、消費者とシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング資源割り当ておよび管理を行う。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および履行85は、SLAに従って将来の要求が予想されるクラウド・コンピューティング資源のための事前取り決めおよび調達を行う。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、およびセキュアなメモリ共有96が含まれる。
本発明の様々な態様は、ソース・ノードと宛先ノードとの間でメモリ内のデータへのアクセスを共有することを含む。好ましい態様では、ソース・ノードは、ローカル・メモリに記憶されたデータを暗号化するためにローカル鍵を使用する。メモリの共有のために、データはローカル鍵から復号され、次に、ソース・ノードによって第1のソース鍵を使用して暗号化され、その暗号化データ(たとえば第1の暗号化データ)が、二重に暗号化されたデータ(たとえば第2の暗号化データ)を作成するためにソース・ノードによって第2のソース鍵を使用してさらに暗号化される。
本発明の少なくとも一部の態様は、記憶データを復号するためのソース秘密鍵へのアクセスなしに宛先ノードにデータへのアクセスを与えるためにセキュア・トランスコーダを使用して、ソース・ノードと宛先ノードとの間でメモリ内のデータへのアクセスを共有することを含む。好ましい態様では、記憶データは、ソース・ノードによって第1のソース鍵を使用して暗号化され、その暗号化データ(たとえば第1の暗号化データ)が、二重に暗号化されたデータ(たとえば第2の暗号化データ)を作成するためにソース・ノードによって第2のソース鍵を使用してさらに暗号化される。第1のソース鍵は宛先ノードと共有され、第2のソース鍵はセキュア・トランスコーダと共有される。トランスコーダは、第3の鍵を提供し、第3の鍵を宛先ノードと共有する。トランスコーダは、二重に暗号化されたデータを第2の鍵を使用して復号し、第3の鍵を使用して二重に暗号化されたデータ(たとえば第3の暗号化データ)を作成するために、一重に暗号化されたデータとなったそのデータを第3の鍵で再暗号化する。宛先ノードは、二重に暗号化された(たとえば第1の鍵で暗号化され、第3の鍵でさらに暗号化された)データに、トランスコーダを介してアクセスし、宛先ノードは第1の鍵と第3の鍵とを使用して非暗号化データにアクセスすることができる。
本発明の態様のうちの少なくとも一部の態様は、ソース・ノードと宛先ノードとの間でメモリ内のデータへのアクセスを共有する機能を提供するようにメモリのロード/ストア・モデルを適応させる。たとえば、本明細書で開示されている様々な動作は、ローカル・メモリの共有、複数の宛先によるメモリ範囲の処理、メモリ・コントローラのトランスコーディングなどに対処する。
本発明の少なくとも一部の態様は、(たとえばソース・ノードとトランスコーダとの間で確立された共有ポリシーに従って)トランスコーダが宛先ノードにそれを許す限り、宛先ノードがデータにアクセスし、復号することを可能にするので有利である。また、共有ポリシーが変更された後は、トランスコーダは平文データに決してアクセスすることができず、宛先ノードはそのデータへの後続のアクセスが阻止される。
本明細書に記載の態様の少なくとも一部は、対称暗号化技術とともに有利に使用可能であり、その結果、システムにおいてノード間でデータを転送する相対的により低速の公開鍵暗号化方法と比較して、相対的により高いパフォーマンスをもたらす。
図3に、様々な構成による概略アーキテクチャを示す。アーキテクチャ300は、様々な構成において、図1~図2および図4~図9に示す環境のいずれかなどにおいて、本発明により実装可能である。当然ながら、本説明を読めば当業者にはわかるように、図3に具体的に記載されている要素より多いかまたは少ない要素がアーキテクチャ300に含まれてもよい。
アーキテクチャ300は、ソース・ノード302と、ソース・ノード・ローカル・メモリ304と、宛先ノード306とを含む概略アーキテクチャを含む。様々な手法において、ソース・ノード・ローカル・メモリ304の一範囲がソース・ノード302と宛先ノード306とで共有される。ソース・ノード302は、ソース・ノード計算機能308とソース・ノード・メモリ・コントローラ310とを含む。ソース・ノード計算機能308は、ソース・ノード・ローカル・メモリ304上のデータを暗号化し、復号するためにソース・ノード・ローカル鍵暗号化/復号機能314とともに使用されるソース・ノード・ローカル・メモリ暗号鍵312(たとえばローカル鍵)を含む。本開示を読めば当業者にはわかるように、本明細書に記載のいずれの暗号化/復号機能も、適切な鍵と任意の知られている暗号化技術とを使用してデータの暗号化または復号あるいはその両方を行うように構成可能である。好ましい態様では、ソース・ノード・ローカル・メモリ暗号鍵312は共有可能ではない(たとえば、ソース・ノード・ローカル・メモリ暗号鍵312は、ソース・ノード・ローカル鍵暗号化/復号機能314によって使用可能なようにセキュアに記憶されるが、ソース・ノード・ローカル・メモリ暗号鍵312は抽出可能ではない)。いずれのローカル鍵(たとえばローカル暗号鍵)も、メモリ(ローカルまたはリモート)の電源供給停止によりローカル鍵、メモリに記憶されたデータなどが破棄またはその他により抹消されるという点で一時的である。
ソース・ノード302は、ソース・ノード共有管理機能316と、共有ポリシー318と、第1の鍵322と、鍵生成器320と、第2の鍵324とを含む。ソース・ノード302は、ソース・ノード第1の鍵暗号化/復号機能326とソース・ノード第2の鍵暗号化/復号機能328とを含む。様々な手法において、鍵生成器320は第2の鍵324を生成する。第2の鍵324は、一部の手法ではソース・ノード302によって生成されてもよい。他の手法では、第2の鍵324は、宛先ノード306によって生成されてもよい。好ましい態様では、第2の鍵324は、弱鍵への暴露、鍵の再使用などを回避するように鍵生成器320またはソース・ノード302によって生成される。さらに他の手法では、本開示を読めば当業者には明らかになるように、本明細書に記載のいずれの鍵も、当技術分野で知られている鍵生成器または鍵マネージャ(鍵マネージャ338など)あるいはその両方による生成または管理あるいはその両方が可能である。
宛先ノード306は、宛先ノード・ローカル・メモリ330と、宛先ノード計算機能332と、宛先ノード・メモリ・コントローラ334と、宛先ノード共有管理機能336とを含む。
アーキテクチャ300の例示の実装形態について図3の矢印を参照しながら説明する。好ましくは、ソース・ノード・ローカル・メモリ304の範囲を共有する前に、ソース・ノード302が共有ポリシー318を作成する。共有ポリシー318は、共有するメモリ範囲、共有先の宛先ノード、存続期間を含むメモリの許可されたアクセス、許可された読み出し/書き込み動作、許可された動作の数、またはこれらの組合せなどの情報を含み得る。様々な手法において、ポリシー318は、共有メモリのどのような領域がどの実体間で共有可能であるか、任意の実体間での共有期間の長さ、任意の実体間での共有期間に関連付けられた動作の数、任意の実体間の共有期間に関連付けられた動作の種類、任意の実体間での共有期間当たりに共有可能なデータの量などを含んでもよい。様々な手法において、ポリシー318は、宛先ノード306がデータを共有するために行うことができるアクセスの種類(たとえば読み出し、書き込み、読み出し/書き込みなど)を決定してもよい。ポリシー318と矛盾する(たとえば不正な)共有データへのアクセスの試行は、本開示を読めば当業者には明らかになるはずの方式で拒否される。たとえば、要求された範囲に関連付けられた鍵がない場合、または要求された範囲がポリシーの範囲外である場合、鍵マネージャは後述するようにその要求に対して第1の鍵を返さない。別の実施例では、メモリの同一領域または異なる領域を要求する複数の宛先ノードの中で、1つの宛先ノードが(そのノードの共有ポリシーに従って)読み出し専用アクセスを行うことができ、別個の宛先ノードが(そのノードの共有ポリシーに従って)書き込み専用アクセスを行うことができ、第3の宛先ノードが(そのノードの共有ポリシーに従って)読み出し/書き込みアクセスを行うことができてもよい。各宛先ノードが、各宛先ノードが行うことを許可されている要求の数とは独立していてもよい別個の共有ポリシーを有してもよい。一部の手法では、共有ポリシーはアクセスの種類とは独立しているか、または許可されている種類の要求の数に限定されるか、あるいはその両方であってもよい。
本明細書に記載の様々な態様は、データの要求が許可されている(たとえば有効である)ことを前提としている。好ましくは、ソース・ノード・ローカル・メモリ304の範囲を共有する前に、ソース・ノード302と宛先ノード306とが互いのアイデンティティを検証するために互いを認証する。一手法では、ソース・ノード共有管理機能316と宛先ノード共有管理機能336とが、互いのアイデンティティ(たとえば、ソース・ノード302のアイデンティティと宛先ノード306のアイデンティティ)を検証するために互いを認証する。様々な手法において、アーキテクチャ300内の各構成要素のアイデンティティは、当技術分野で知られているプロトコルに従って認証されてもよい。一部の手法では、認証は当事者間のセキュアな通信接続の設定の一部であってもよい。好ましい態様では、すべての通信リンクがセキュアである(たとえば暗号化されている)。
ソース・ノード302が、1組の第1の鍵340の作成と維持を行う鍵マネージャ338に、第1の鍵322を要求する。鍵生成器320は第2の鍵324を作成する。第2の鍵324は好ましくは一時的な鍵である(たとえば、第2の鍵324は、宛先ノード306との共有ポリシーの終了に応答して第2のノード302によって破棄されてもよい)。ソース・ノード302は、鍵マネージャ338に、ポリシー318に従って宛先ノード306に第1の鍵322へのアクセスを許可するように通知する。少なくとも一部の手法では、ポリシー318は鍵マネージャ338にあってもよい。別の手法では、ポリシー318は、ソース・ノード302の外部のポリシー・マネージャ(図示せず)にあってもよい。動作342で、宛先ノード306が鍵マネージャ338に第1の鍵322を要求する。宛先ノード306は第1の鍵322を第1の鍵ストレージ344に記憶する。動作346で、ソース・ノード302が第2の鍵324のコピーを宛先ノード306に送信する。宛先ノード306は、第2の鍵324を第2の鍵ストレージ348に記憶する。鍵に関連付けられたメモリ範囲も、当業者には明らかになるはずの方式で鍵マネージャ338に記憶されてもよい。たとえば、1組の第1の鍵340内の各第1の鍵322がソース・ノード・ローカル・メモリ304の範囲に関連付けられてもよい。宛先ノード306からのソース・ノード・ローカル・メモリ304に記憶されているデータの要求の受信に応答して、鍵マネージャ338はその要求に関連付けられたデータの範囲のための適切な第1の鍵322を送信する。
好ましい実装形態では、宛先ノード306が共有メモリ(たとえばソース・ノード・ローカル・メモリ304)の領域からの読み出しを行う場合、ソース・ノード・ローカル鍵暗号化/復号機能314がソース・ノード・ローカル・メモリ暗号鍵312を使用してデータを復号する。ソース・ノード第1の鍵暗号化/復号機能326が、暗号化データ(たとえば第1の鍵322で暗号化されたデータ)を得るために第1の鍵322を使用してその非暗号化データを暗号化する。第1の暗号化データは、次に、第2の暗号化データ(たとえば、第1の鍵322で暗号化され、次に第2の鍵324で暗号化されたデータ)を得るために、ソース・ノード第2の鍵暗号化/復号機能328によって第2の鍵324を使用して暗号化される。この二重に暗号化されたデータ(たとえば第2の暗号化データ)は動作350で宛先ノード306に送信される。
宛先ノード306は、宛先ノード第2の鍵暗号化/復号機能352と宛先ノード第1の鍵暗号化/復号機能354とを含む。様々な手法において、宛先ノードは、宛先ノード・ローカル鍵暗号化/復号機能358とともに使用するための宛先ノード・ローカル・メモリ暗号鍵356を含む。宛先ノード第2の鍵暗号化/復号機能352は、第1の暗号化データ(たとえば第1の鍵322でのみ暗号化されたデータ)を得るために第2の鍵ストレージ348に記憶されている第2の鍵324を使用して第2の暗号化データを復号する。宛先ノード第1の鍵暗号化/復号機能354は、非暗号化データを得るために第1の鍵ストレージ344に記憶されている第1の鍵322を使用して第1の暗号化データを復号する。様々な手法において、平文データが宛先ノード・メモリ・コントローラ334に出力される。宛先ノード・ローカル鍵暗号化/復号機能358は、宛先ノード・ローカル・メモリ暗号鍵356を使用して平文データを暗号化してもよい。この、宛先ノード・ローカル・メモリ暗号鍵356で暗号化されたデータは、宛先ノード・ローカル・メモリ330に記憶されてもよい。別の手法では、復号データ(たとえばどの鍵でも暗号化されていない平文データ)は、そのデータに対して動作を行うために、本開示を読めば当業者には明らかになるはずの方式で、宛先ノード計算機能332に送信されてもよい。
ソース・ノード302は、随時、宛先ノード306に与えた共有許可を取り消すことができる。一部の手法では、ソース・ノード302は宛先ノード306に、共有が終了したことを通知する。共有の終了に応答して、宛先ノードは好ましくは第1の鍵322と第2の鍵324の記憶されているコピーを削除する。共有ポリシーは、ソース・ノード302から宛先ノード306、鍵マネージャ338、任意のその他の構成要素など、またはこれらの組合せへのコマンドなど、本開示を読めば当業者には明らかになるはずの任意の方式で終了させることができる。他の手法では、共有ポリシーは、宛先ノード306からソース・ノード302への要求によって終了させてもよい。
他の手法では、ソース・ノード302は、当技術分野で知られている方式で第2の鍵324を破棄する(たとえば削除またはその他により抹消する)ことによって共有許可を取り消してもよい。第2の鍵324の破棄は、宛先ノード306がポリシー318を迂回する手段を見つけた場合であっても、宛先ノード306がソース・ノード・ローカル・メモリ304の平文のいかなる今後のアクセスもできないようにする。したがって、ポリシー318に従って共有ポリシーが終了させられた後、宛先ノード306が第1の鍵ストレージ344と第2の鍵ストレージ348にそれぞれ記憶された第1の鍵322と第2の鍵324を保持することによって不正を行ったとしても秘密が保護される。
鍵マネージャ338によって配布された第1の鍵322とソース・ノード302によって配布された第2の鍵とを有することによって、ソース・ノード302は共有に対する最終的な制御を維持することができるので有利である。鍵マネージャ338にとって第2の鍵324が入手可能でない場合、鍵マネージャ338は宛先ノード306に共有メモリの領域内のデータへのアクセスを許可するのに十分な情報を持たない。他の手法では、追加的セキュリティおよびアクセス制御のために、1組の第1の鍵340はソース・ノード302に記憶されてもよい。
図4に、様々な構成による概略アーキテクチャを示す。アーキテクチャ400は、様々な構成において、図1~図3および図5A~図9に示す環境のいずれかなどにおいて、本発明により実装可能である。当然ながら、本説明を読めば当業者にはわかるように、図4に具体的に記載されている要素より多いかまたは少ない要素がアーキテクチャ400に含まれてもよい。
図4は、ソース・ノードのローカル・メモリの複数の範囲を複数の宛先ノードと共有するための簡略化された態様である。図3に記載されているような第1の鍵と第2の鍵の使用は、データ漏洩に対するセキュリティとソース・ノードへのアクセス制御を追加することにより、このような共有を容易にするので有利である。
アーキテクチャ400は、ソース・ノード402と、ソース・ノード・ローカル・メモリ404と、複数の宛先ノードとを含む概略アーキテクチャを含む。宛先ノードは、宛先ノード1 406と、宛先ノード2 408と、宛先ノード3 410と、宛先ノード4 412とを含む。ソース・ノード402は、ソース・ノード・ローカル・メモリ404の3つの領域を、4つの宛先ノードと共有する。ソース・ノード・ローカル・メモリ404の第1の領域が、宛先ノード1 406および宛先ノード4 412と共有される。ソース・ノード・ローカル・メモリ404の第2の領域が、宛先ノード2 408と共有される。ソース・ノード・ローカル・メモリ404の第3の領域が、宛先ノード3 410と共有される。
ソース・ノード402が、鍵マネージャ420に、ソース・ノード・ローカル・メモリ404の各領域について第1の鍵を1つずつ、3つの第1の鍵(第1の鍵k1 414、第1の鍵k2 416、第1の鍵k3 418)を要求する。具体的には、第1の鍵k1 414がソース・ノード・ローカル・メモリ404のメモリの第1の領域に対応し、第1の鍵k2 416がソース・ノード・ローカル・メモリ404のメモリの第2の領域に対応し、第1の鍵k3 418がソース・ノード・ローカル・メモリ404のメモリの第3の領域に対応してもよい。ソース・ノード402は、各宛先ノードに1つずつ、4つの第2の鍵(第2の鍵k1 422、第2の鍵k2 424、 第2の鍵k3 426、第2の鍵k4 428)を作成する。具体的には、第2の鍵k1 422が宛先ノード1 406に対応し、第2の鍵k2 424が宛先ノード2 408 に対応し、第2の鍵k3 426が宛先ノード3 410に対応し、第2の鍵k4 428が宛先ノード4 412に対応してもよい。ソース・ノード402は、本開示を読めば当業者には明らかになるはずの方式で、第2の鍵のそれぞれを、関連付けられた宛先ノードに送信してもよい。
第1の鍵が共有領域ごとに明確に異なり、第2の鍵が宛先ノードごとに明確に異なることは有利である。明確に異なる第1の鍵は、データ領域を暗号的に分離した状態に維持する。明確に異なる第2の鍵は、共有ポリシーを宛先ごとに別々に制御可能にする。たとえば、好ましい態様では、第1の鍵を破棄することで領域の共有を終了させ、第2の鍵を破棄することで宛先ノードの共有(たとえば、ソース・ノード402と破棄された第2の鍵に関連付けられた宛先ノードとの共有期間)を終了させる。このようにして、宛先ノードごとおよびメモリ内の領域ごとのソース・ノード・ローカル・メモリ404上のデータへのアクセスが独立して制御される。
別の態様では、ソース・ノード402は、宛先ノードをグループ化してもよい。宛先ノードの各グループにメモリの同じ範囲へのアクセスが同じ期間にわたり与えられてもよい。上記の態様の実装形態の一例は、A社がB社と情報を共有し、宛先ノードがA社内の個人に相当する、クラウド環境において使用されてもよい。どちらかの会社が連携を終了する場合、A社は連携に関連付けられた第2の鍵を破棄する。連携に基づいて情報にアクセスしていたA社のすべての当事者が、アクセスを失う。
好ましくは、共有の前に、動作430で、宛先ノード1 406が鍵マネージャ420に第1の鍵k1 414を要求し、動作432で宛先4 412が鍵マネージャ420に第1の鍵k1 414を要求する。動作434で、宛先ノード2 408が鍵マネージャ420に第1の鍵k2 416を要求する。動作436で、宛先ノード3 410が鍵マネージャ420に第1の鍵k3 418を要求する。
本実装形態では、ソース・ノード第1の鍵暗号化/復号機能438が、本開示を読めば当業者には明らかになるはずの方式で、ソース・ノード・ローカル・メモリ404に記憶されているデータの適切な領域を暗号化するために、第1の暗号鍵(たとえば第1の鍵k1 414、第1の鍵k2 416、第1の鍵k3 418)のいずれかを使用してもよい。他の手法では、ソース・ノード第2の鍵暗号化/復号機能(図示せず)が、本開示を読めば当業者には明らかになるはずの方式で、適切な宛先ノードのためのデータを暗号化するために、第2の暗号鍵(第2の鍵k1 422、第2の鍵k2 424、第2の鍵k3 426、第2の鍵k4 428)のうちのいずれかを使用してもよい。
宛先ノード1 406と共有されるデータについて、ソース・ノード第1の鍵暗号化/復号機能438が第1の鍵k1 414を使用して第1の領域内のデータを暗号化する。次に、ソース・ノード第2の鍵k1暗号化/復号機能440が、第2の暗号化データを得るために第2の鍵k1 422を使用して第1の領域内のデータを暗号化する。第2の暗号化データ(たとえば、第1の鍵k1 414で暗号化され、次に第2の鍵k1 422で暗号化されたデータ)は、動作442で宛先ノード1 406に送信される。
宛先ノード2 408と共有されるデータについて、ソース・ノード第1の鍵暗号化/復号機能438が、第1の鍵k2 416で第2の領域内のデータを暗号化する。次に、ソース・ノード第2の鍵k2暗号化/復号機能444が、第2の暗号化データを得るために第2の鍵k2 424で第2の領域内のデータを暗号化する。第2の暗号化データ(たとえば、第1の鍵k2 416で暗号化され、次に第2の鍵k2 424で暗号化されたデータ)は、動作446で宛先ノード2 408に送信される。
宛先ノード3 410と共有されるデータについて、ソース・ノード第1の鍵暗号化/復号機能438が第1の鍵k3 418で第3の領域内のデータを暗号化する。次に、ソース・ノード第2の鍵k3暗号化/復号機能448が、第2の暗号化データを得るために第2の鍵k3 426で第3の領域内のデータを暗号化する。第2の暗号化データ(たとえば、第1の鍵k3 418で暗号化され、次に第2の鍵k3 426で暗号化されたデータ)は、動作450で宛先ノード3 410に送信される。
宛先ノード4 412と共有されるデータについて、ソース・ノード第1の鍵暗号化/復号機能438が第1の鍵k1 414で第1の領域内のデータを暗号化する。次に、ソース・ノードの第2の鍵k4暗号化/復号機能452が、第2の暗号化データを得るために第2の鍵k4 428で第1の領域内のデータを暗号化する。第2の暗号化データ(たとえば、第1の鍵k1 414で暗号化され、次に第2の鍵k4 428で暗号化されたデータ)は、動作454で宛先ノード4 412に送信される。
宛先ノード1 406は、宛先ノード1第2の鍵暗号化/復号機能456と宛先ノード1第1の鍵暗号化/復号機能458とを含む。第2の暗号化データ(たとえば、第1の鍵k1 414で暗号化され、次に第2の鍵k1 422で暗号化されたデータ)の受信に応答して、宛先ノード1第2の鍵暗号化/復号機能456が、第1の暗号化データ(たとえば第1の鍵k1 414で暗号化されたデータ)を得るために第2の鍵k1 422を使用して第2の暗号化データを復号してもよい。次に、宛先ノード1第1の鍵暗号化/復号機能458が、暗号化されていないデータを得るために第1の鍵k1 414を使用して第1の暗号化データを復号してもよい。
宛先ノード2 408は、宛先ノード2第2の鍵暗号化/復号機能460と宛先ノード2第1の鍵暗号化/復号機能462とを含む。第2の暗号化データ(たとえば、第1の鍵k2 416で暗号化され、次に第2の鍵k2 424で暗号化されたデータ)の受信に応答して、宛先ノード2第2の鍵暗号化/復号機能460が、第1の暗号化データ(たとえば、第1の鍵k2 416で暗号化されたデータ)を得るために第2の鍵k2 424を使用して第2の暗号化データを復号してもよい。次に、宛先ノード2第1の鍵暗号化/復号機能462が、暗号化されていないデータを得るために第1の鍵k2 416を使用して第1の暗号化データを復号してもよい。
宛先ノード3 410は、宛先ノード3第2の鍵暗号化/復号機能464と宛先ノード3第1の鍵暗号化/復号機能466とを含む。第2の暗号化データ(たとえば、第1の鍵k3 418で暗号化され、次に第2の鍵k3 426で暗号化されたデータ)の受信に応答して、宛先ノード3第2の鍵暗号化/復号機能464が第1の暗号化データ(たとえば第1の鍵k3 418で暗号化されたデータ)を得るために第2の鍵k3 426を使用して第2の暗号化データを復号してもよい。次に、宛先ノード3第1の鍵暗号化/復号機能466が、暗号化されていないデータを得るために第1の鍵k3 418を使用して第1の暗号化データを復号してもよい。
宛先ノード4 412は、宛先ノード4第2の鍵暗号化/復号機能468と宛先ノード4第1の鍵暗号化/復号機能470とを含む。第2の暗号化データ(たとえば、第1の鍵k1 414で暗号化され、次に第2の鍵k4 428で暗号化されたデータ)の受信に応答して、宛先ノード4第2の鍵暗号化/復号機能468が、第1の暗号化データ(たとえば第1の鍵k1 414で暗号化されたデータ)を得るために第2の鍵k4 428を使用して第2の暗号化データを復号してもよい。次に、宛先ノード4第1の鍵暗号化/復号機能470が、暗号化されていないデータを得るために第1の鍵k1 414を使用して第1の暗号化データを復号してもよい。
明確に異なる第2の鍵、たとえば第2の鍵k1 422と第2の鍵k4 428の使用は、ソース・ノード402がソース・ノード・ローカル・メモリ404の共通の共有領域へのアクセスを個別に制御することを可能にする。たとえば、宛先ノード1 406との共有を、ソース・ノード402によって第2の鍵k1 422を破棄することにより終了させることができる。宛先ノード1 406は、第2の鍵(第2の鍵k1 422)のそれ自体のコピーと第1の鍵(第1の鍵k1 414)を保持していても、共有領域のデータを復号することができない。ソース・ノード・ローカル・メモリ404の領域へのアクセスを共有していた宛先ノード4 412は、第1の鍵k1 414とそれ自体の第2の鍵(第2の鍵k4 428)とを使用して共有領域へのアクセスを継続することができる。
図5A~図5Dに、様々な構成による概略アーキテクチャを示す。アーキテクチャ500は、様々な構成で、図1~図4および図6~図9に示す環境のいずれかにおいて本発明により実装可能である。当然ながら、本説明を読めば当業者にはわかるように、図5A~図5Dに具体的に記載されている要素より多いかまたは少ない要素がアーキテクチャ500に含まれてもよい。
図5A~図5Dは、セキュア・トランスコーダ機能を使用してソース・ノードによって制御されるリモート・メモリの領域を共有するための概略アーキテクチャの変形を示す。したがって、本開示を読めば当業者には明らかになるように、共通の特徴は共通の番号付けがされている。
図5Aのアーキテクチャ500は、ソース・ノード502と宛先ノード504とを含む。ソース・ノード502は、ソース・ノード計算リソース506とソース・ノード共有マネージャ機能508とを含む。ソース・ノード502は、ソース・ノード第1の鍵暗号化/復号機能510とソース・ノード第2の鍵暗号化/復号機能512とを含む。ソース・ノード502は、ソース・ノード・ローカル・メモリ暗号鍵518を使用するソース・ノード・ローカル・メモリ暗号化/復号機能516を有するソース・ノード・ローカル・メモリ・コントローラ514を含む。ソース・ノードは、好ましくは鍵マネージャ520とソース・ノード・ローカル・メモリ522とに結合されている。鍵マネージャ520が、1組の第1の鍵524と1組の第2の鍵526とを記憶し、管理する。一部の手法では、アーキテクチャ500は鍵マネージャ520を含まず、ソース・ノード502が1組の第1の鍵524と1組の第2の鍵526とを維持する。
様々な手法において、ソース・ノード502は、鍵マネージャ520に1組の第1の鍵524のうちの第1の鍵528を要求する。ソース・ノードは、鍵マネージャ520に1組の第2の鍵526のうちの第2の鍵530も要求する。第1の鍵528と第2の鍵530の両方は、宛先ノード504とメモリ内に記憶されたデータの範囲を共有するためにソース・ノード502によって使用可能である。
ソース・ノード計算リソース506が、ソース・ノード・ローカル・メモリ・コントローラ514を使用してソース・ノード・ローカル・メモリ522にデータを記憶する。データは、経路532を介して作成された状態のまま記憶されてもよい。好ましい態様では、ソース・ノード・ローカル・メモリ・コントローラ514の一部とすることが可能なソース・ノード・ローカル・メモリ暗号化/復号機能516とともに使用されるソース・ノード・ローカル・メモリ暗号鍵518によって、データのセキュアな暗号化が提供されてもよい。ソース・ノード・ローカル・メモリ暗号鍵518は、好ましくは一時的な鍵である。
ソース・ノード計算リソース506は、リモート・メモリ534にもデータを記憶してもよい。ソース・ノード502は、セキュア・トランスコーダ536とセキュア・トランスコーダ・マネージャ538とに結合されてもよい。セキュア・トランスコーダ536は、第2の鍵530のための第2の鍵ストレージ540と、セキュア・トランスコーダ・メモリ・コントローラ542と、セキュア・トランスコーダ第2の鍵暗号化/復号機能544と、ポリシー管理機能546とを含む。セキュア・トランスコーダ536のポリシー管理機能546は、セキュア・トランスコーダ536がセキュア・トランスコーダ・マネージャ538と結合されなくなった場合でも、セキュア・トランスコーダ536を使用してソース・ノード502と宛先ノード504との共有が継続することを可能にするという利点をもたらす(たとえばそれによってシステムをよりフォールト・トレラントにする)。好ましい態様では、第2の鍵530のための第2の鍵ストレージ540は、記憶されている第2の鍵530のアクセスをセキュア・トランスコーダ第2の鍵暗号化/復号機能544に制限する。セキュア・トランスコーダ・マネージャ538は、様々な手法において、複数のトランスコーダ(図示せず)に結合されてもよい。セキュア・トランスコーダ・マネージャ538は、トランスコーダのために比較的重い機能を実行し、比較的軽い機能をセキュア・トランスコーダを介してメモリに結合された状態にしておくので有利である。
リモート・メモリを共有する場合、ソース・ノード502とリモート・メモリ534に独立して障害が起こった場合に第1の鍵と第2の鍵が存続し続けることが好ましい。鍵マネージャ520は鍵を存続させるための1つの手法である。
リモート・メモリ534の領域が、ソース・ノード502と宛先ノード504とで共有可能である。セキュア・トランスコーダ536上のポリシー管理機能546が、図3およびその他の図で説明したように共有ポリシー情報の記憶、提供、実施などを行う。(たとえばセキュア・トランスコーダ・マネージャ機能548を使用して)セキュア・トランスコーダ・マネージャ538と(たとえばポリシー管理機能546を使用して)セキュア・トランスコーダ536を認証した後、ソース・ノード502はポリシー管理機能546に範囲所有権情報を送信する。好ましい態様では、ソース・ノード502は動作552でセキュア・トランスコーダ536に第2の鍵530をセキュアに送信し、セキュア・トランスコーダ536は第2の鍵530を第2の鍵ストレージ540に記憶する。ポリシーを確定し、宛先ノード・マネージャ機能550を使用して宛先ノード504を認証するのに応答して、ソース・ノード502は動作554で宛先ノード504に第1の鍵528を送信し、宛先ノード504は第1の鍵528を第1の鍵ストレージ556に記憶する。セキュア・トランスコーダ・マネージャ538上の鍵生成器558が第3の鍵560を生成し、動作562で第3の鍵560をセキュア・トランスコーダ536に送信する。他の手法では、セキュア・トランスコーダ536はセキュア・トランスコーダ・マネージャ538なしに第3の鍵560の管理または生成あるいはその両方を行う。セキュア・トランスコーダ536は、好ましくは第3の鍵560をセキュア・トランスコーダ第3の鍵ストレージ564に記憶する。
ソース・ノード502がリモート・メモリ534にデータを書き込む場合、データは、まず、第1の暗号化データ(たとえば第1の鍵528で暗号化されたデータ)を得るためにソース・ノード第1の鍵暗号化/復号機能510によって第1の鍵528を使用して暗号化される。第1の暗号化データは次に、第2の暗号化データ(たとえば、第1の鍵528で暗号化され、次に第2の鍵530で暗号化されたデータ)を得るためにソース・ノード第2の鍵暗号化/復号機能512によって第2の鍵530を使用して暗号化される。第2の暗号化データは、動作566でセキュア・トランスコーダ536に送信される。セキュア・トランスコーダ536は、第2の暗号化データをリモート・メモリ534に記憶することができる。
宛先ノード504がリモート・メモリ534の共有領域からの読み出しを行う場合、セキュア・トランスコーダ第2の鍵暗号化/復号機能544が第1の暗号化データ(たとえば第1の鍵528で暗号化されたデータ)を得るために第2の鍵530を使用して第2の暗号化データを復号する。セキュア・トランスコーダ536が第1の鍵528を持たない場合、セキュア・トランスコーダ536は暗号化されていないデータにアクセスすることができない。セキュア・トランスコーダ536は、第3の暗号化データ(たとえば第1の鍵528で暗号化され、次に第3の鍵560で暗号化されたデータ)を得るためにセキュア・トランスコーダ第3の鍵暗号化/復号機能568を使用して第3の鍵560で第1の暗号化データを暗号化する。第3の暗号化データは動作570で宛先ノード504に送信される。
宛先ノード504は動作572でセキュア・トランスコーダ・マネージャ538から第3の鍵560を受信し、第3の鍵560を宛先ノード第3の鍵ストレージ574に記憶する。宛先ノード504は、第1の暗号化データ(たとえば第1の鍵528で暗号化されたデータ)を得るために宛先ノード第3の鍵暗号化/復号機能576を使用し、第3の鍵560を使用して第3の暗号化データ(たとえば第1の鍵528で暗号化され、次に第3の鍵560で暗号化されたデータ)を復号する。宛先ノード504は、暗号化されていないデータを得るために、宛先ノード第1の鍵の暗号化機能578を使用し、第1の鍵528を使用して第1の暗号化データを復号する。
一部の手法では、平文データ(たとえば暗号化されていないデータ)は、宛先ノード・メモリ・コントローラ580に出力されてもよい。宛先ノード・ローカル・メモリ暗号化/復号機能582が、宛先ノード・ローカル・メモリ暗号鍵584を使用して平文データを暗号化してもよい。ローカルで暗号化されたデータは宛先ノード・ローカル・メモリ586に記憶されてもよい。他の手法では、平文データは、本開示を読めば当業者には明らかになるはずの方式で、宛先ノード計算リソース587によって直接アクセス可能とすることができる。
図5Bは、図5Aの変形であり、共通の特徴は共通の番号付けがされている。図5Bは、鍵マネージャ588および589を有する概略アーキテクチャ500を示す。鍵マネージャ588は、1組の第1の鍵524の記憶、管理、維持などのためのマネージャとすることができる。同様に、鍵マネージャ589は、1組の第2の鍵の記憶、管理、維持などのためのマネージャとすることができる。鍵マネージャ588は、第1の鍵528をソース・ノード502に送信してもよく、鍵マネージャ589は、第2の鍵530をソース・ノード502に送信してもよい。分割された鍵マネージャを有することによって、各構成要素が個別に各鍵マネージャを認証し、それによって認証プロセスを補完する追加のセキュリティをシステムにもたらす。
図5Cは、図5Aの変形であり、共通の特徴は共通の番号付けがされている。図5Cは、鍵マネージャ520が、動作590で、第2の鍵ストレージ540への記憶のためにセキュア・トランスコーダ536に直接、第2の鍵530を提供する概略アーキテクチャ500を示す。この態様では、上述のように、第2の暗号化データ(たとえば、ソース・ノード第1の鍵暗号化/復号機能510を使用して第1の鍵528で暗号化され、次にソース・ノード第2の鍵暗号化/復号機能512を使用して第2の鍵530で暗号化されたデータ)を得るために、鍵マネージャ520は、ソース・ノード第2の鍵暗号化/復号機能512を使用して第1の暗号化データの暗号化を行うためにソース・ノード502に第2の鍵530のコピーをさらに提供する。
図5Dは、図5Aの変形であり、共通の特徴は共通の番号付けがされている。図5Dは、宛先1ノード591、宛先2ノード592、宛先3ノード593を含む概略アーキテクチャ500を示す。図のように、複数の宛先を有する態様において、鍵マネージャ520が、1組の第1の鍵内の異なる第1の鍵を維持してもよく、各第1の鍵は関連付けられた宛先ノードとともに使用可能である。鍵マネージャ520は、第1の鍵(第1の鍵k1 594、第1の鍵k2 595、第3の鍵k3 596)のそれぞれをソース・ノード502に送信してもよい。ソース・ノード502は、本開示を読めば当業者には明らかになるはずの方式で各第1の鍵をそれぞれの宛先ノードに送信してもよい。たとえば、第1の鍵k1 594がソース・ノード502から宛先ノード1 591に送信されてもよく、第1の鍵k2 595がソース・ノード502から宛先ノード2 592に送信されてもよく、第1の鍵k3 596がソース・ノード502から宛先ノード3 593に送信されてもよい。セキュア・トランスコーダ536が、上述のように第3の鍵560のコピーを宛先ノードのそれぞれに送信してもよい。
一部の態様では、各宛先ノードに同様に1組の第2の鍵526のうちの異なる第2の鍵530が関連付けられてもよい。さらに他の態様では、リモート・メモリ534の各領域が異なる第1の鍵で暗号化されてもよく、またはリモート・メモリ534の各領域が同じ第1の鍵で暗号化されてもよい。
様々な態様において、ソース・ノードは、第2の暗号化データを得るために、本明細書に記載の手法のうちの少なくとも一部により、ソース・ノード第1の鍵暗号化/復号機能510を使用し、次に、ソース・ノード第2の鍵暗号化/復号機能512を使用して、データを二重に暗号化する。好ましい手法では、ソース・ノード第1の鍵暗号化/復号機能510は、暗号化/復号を行うために、1組の第1の鍵524(第1の鍵k1 594、第1の鍵k2 595、第1の鍵k3 596)のいずれかを使用してもよい。同様に、ソース・ノード第2の鍵暗号化/復号機能512は、暗号化/復号を行うために、(各宛先に異なる第2の鍵が関連付けられる態様において)1組の第2の鍵のいずれかを使用してもよい。他の手法では、異なる各第1の鍵または異なる各第2の鍵あるいはその両方が、それ自体の暗号化/復号機能を有してもよい。
セキュア・トランスコーダ536は、第2の暗号化データを受信してもよい。各宛先に異なる第2の鍵が関連付けられる態様では、セキュア・トランスコーダは、動作552で異なる第2の鍵の各コピーも受信する。セキュア・トランスコーダ第2の鍵暗号化/復号機能544が、第1の暗号化データ(たとえば、適切な第1の鍵で暗号化されたデータ)を得るために、第2の鍵530を使用して第2の暗号化データを復号してもよい。セキュア・トランスコーダ第3の鍵暗号化/復号機能568が、上述のように、第3の暗号化データを得るために第3の鍵560を使用して第1の暗号化データを暗号化する。
好ましい態様では、セキュア・トランスコーダ536は、本開示を読めば当業者には明らかになるはずの方式で、第3の暗号化データを適切な宛先ノードに送信する。たとえば、第3の暗号化データ(たとえば、第1の鍵k1 594で暗号化され、次に第3の鍵560で暗号化されたデータ)が、第1の鍵k1 594を含む宛先ノード1 591に送信され、第3の暗号化データ(たとえば、第1の鍵k2 595で暗号化され、次に第3の鍵560で暗号化されたデータ)が、第1の鍵k2 595を含む宛先ノード2 592に送信され、第3の暗号化データ(たとえば、第1の鍵k3 596で暗号化され、次に第3の鍵560で暗号化されたデータ)が、第1の鍵k3 596を含む宛先ノード3 593に送信される。
各宛先ノードは、上述の様々な態様により、それぞれの鍵を使用して、第1の暗号化データを得るために第3の暗号化データを復号し、次に、暗号化されていないデータを得るために第1の暗号化データを復号してもよい。
宛先ノード1 591は、宛先ノード第3の鍵暗号化/復号機能576を使用して第3の鍵560で第3の暗号化データを復号して第1の暗号化データを得る。宛先ノード1 591は、次に、宛先ノード1第1の鍵k1暗号化/復号機能597を使用して第1の鍵k1 594で第1の暗号化データを復号して暗号化されていないデータを得る。
宛先ノード2 592は、宛先ノード第3の鍵暗号化/復号機能576を使用して第3の鍵560で第3の暗号化データを復号して第1の暗号化データを得る。宛先ノード2 592は、次に、宛先ノード2第1の鍵k2暗号化/復号機能598を使用して第1の鍵k2 595で第1の暗号化データを復号して暗号化されていないデータを得る。
宛先ノード3 593は、宛先ノード第3の鍵暗号化/復号機能576を使用して第3の鍵560で第3の暗号化データを復号して第1の暗号化データを得る。宛先ノード3 593は、次に、宛先ノード3第1の鍵k3暗号化/復号機能599を使用して第1の鍵k2 596で第1の暗号化データを復号して暗号化されていないデータを得る。
様々な態様において、複数のソース・ノードまたは複数の宛先ノードあるいはその両方が存在してもよい。他の態様では、宛先ノードが別の宛先ノードのためのソース・ノードであってもよい。ソース・ノードと宛先ノードとでメモリを共有するために、ネットワークに任意の構成要素に結合された任意の数のリモート・メモリが存在してもよい。
好ましい態様では、図3~図5Dに示すすべての矢印または接続線あるいはその両方と、本明細書に記載の構成要素間のいずれの通信も、本技術分野で知られている通信暗号化用の追加のプロトコルを含み得る。たとえば、本開示を読めば当業者には明らかになるように、ソース・ノードと宛先ノードとの間、ソース・ノードとセキュア・トランスコーダとの間、およびセキュア・トランスコーダと宛先ノードとの間などで鍵を転送するために、セキュア・ソケット・レイヤ(SSL)、トランスポート層セキュリティ(TLS)などのプロトコルを含む通信暗号化プロトコルを使用することができる。
次に図6を参照すると、一態様による方法600のフローチャートが示されている。方法600は、様々な態様において、図1~図5Dおよび図7~図9に示す環境のいずれかなどにおいて本発明により実行可能である。当然ながら、本説明を読めば当業者にはわかるように、図6に具体的に記載されている動作より多いかまたは少ない動作が方法600に含まれてもよい。
方法600の各ステップは、動作環境の任意の適切な構成要素によって実行可能である。たとえば、様々な態様において、方法600は、コンピュータ、または1つもしくは複数のプロセッサを中に有する任意の他のデバイスによって、部分的にまたは全体が実行されてもよい。プロセッサ、たとえばハードウェアまたはソフトウェアあるいはその両方で実装され、好ましくは少なくとも1つハードウェア・コンポーネントを有する処理回路、チップ、またはモジュールあるいはこれらの組合せが、方法600の1つまたは複数のステップを実行するように任意のデバイスで使用可能である。プロセッサの例には、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、これらの組合せ、または当技術分野で知られている任意のその他の適切なコンピューティング・デバイスが含まれるが、これらには限定されない。
図6に示すように、方法600は動作602を含む。動作602は、ソース・ノードによって、宛先ノードからソース・ノードの共有メモリの領域内に記憶されているデータを求める要求を受信することを含む。宛先ノードからの要求は、当業界で知られている方式で受信可能である。一部の手法では、要求は、ソース・ノードのローカル・メモリにあるソース・ノードの共有メモリの領域を求める要求である。他の手法では、要求は、ソース・ノードのリモート・メモリにあり、ソース・ノードによって制御される、ソース・ノードの共有メモリの領域を求める要求である。本開示全体を通じて、共有メモリの領域の要求は、本開示を読めば当業者に明らかになるように、共有メモリの領域(たとえば範囲)に関連付けられたデータの要求を互換的に指す。
様々な手法において、データはソース・ノードのローカル鍵で暗号化される。ソース・ノードはローカル鍵を含む。ローカル鍵は抽出可能ではなく(たとえば共有可能ではなく)、好ましくはソース・ノードにおいてセキュアに記憶される。好ましい態様では、ソース・ノードはローカル・メモリ(たとえばローカルで暗号化されたメモリ)に記憶されているデータを暗号化するためにローカル鍵を使用する。
動作604は、ソース・ノードによって、ローカルで暗号化されたデータをローカル鍵を使用して復号することを含む。ローカルで暗号化されたデータは、暗号化されていないデータを得るために復号される。好ましい態様では、ソース・ノードは、暗号化されていないデータを得るべく、ローカルで暗号化されたデータを復号するためにソース・ノード暗号化/復号機能を使用する。
動作606は、ソース・ノードによって、第1の暗号化データを生成するために第1の鍵を使用して復号データを暗号化することを含む。第1の暗号化データとは、第1の鍵で暗号化されたデータを指す。好ましい態様では、第1の暗号化データを得るために第1の鍵を使用する復号データの暗号化は、ソース・ノードにおいて行われる。ソース・ノードは第1の鍵を含む。
動作608は、ソース・ノードによって、第2の暗号化データを生成するために第2の鍵を使用して第1の暗号化データを暗号化することを含む。第2の暗号化データとは、まず第1の鍵で暗号化され、次に第2の鍵で暗号化されたデータを指す。本開示全体を通じて使用されている第2の暗号化データは、別に明記されていない限り二重に暗号化されたデータと互換的に使用されている場合がある。好ましい態様では、データの第1の暗号化データへの暗号化と、次の第1の暗号化データの第2の暗号化データへの暗号化は、ソース・ノードにおいて行われる。ソース・ノードは第1の鍵と第2の鍵とを含む。
動作610は、ソース・ノードによって、第2の暗号化データを宛先ノードに送信することを含む。第2の暗号化データは、当技術分野で知られている方式で送信可能である。様々な手法において、宛先ノードは、宛先ノードにおける暗号化/復号機能を使用して第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号するように構成される。宛先ノードは、宛先ノードにおける暗号化/復号機能(第1の暗号化データを得るために第2の暗号化データを復号する暗号化/復号機能と同じであっても異なっていてもよい)を使用してデータを得るために、第1の鍵を使用して第1の暗号化データを復号するように構成される。データは、宛先ノードによって要求されたソース・ノードの共有メモリの領域に関連付けられた、暗号化されていないデータ、非暗号化データ、平文データ、別の鍵暗号化形態のデータなどであってもよい。
一部の手法では、方法600は、ソース・ノードによって、第2の鍵を宛先ノードに送信することを含む。ソース・ノードは、第2の鍵を宛先ノードに送信してもよく、宛先ノードは、第1の暗号化データ(たとえば第1の鍵で暗号化されたデータ)を得るために、第2の鍵を使用して第2の暗号化データ(たとえば、第1の鍵で暗号化され、次に第2の鍵で暗号化されたデータ)を復号する。他の手法では、宛先ノードは、本開示を読めば当業者には明らかになるように、鍵マネージャから第2の鍵を受信してもよい。
一部の手法では、宛先ノードは鍵マネージャから第1の鍵を受信する。鍵マネージャは、ソース・ノードと宛先ノードとの間でメモリを共有するための鍵の提供、生成、管理などを行うために、ソース・ノード、宛先ノード、またはネットワークにおける任意のその他の構成要素あるいはこれらの組合せに結合されてもよい。好ましい態様では、鍵マネージャがソース・ノードに第1の鍵を提供し、ソース・ノードは動作606に記載されているように第1の暗号化データを生成するために第1の鍵を使用する。他の好ましい態様では、鍵マネージャは、宛先ノードにも第1の鍵を提供し、宛先ノードは、暗号化されていないデータを得るために第1の鍵を使用して第1の暗号化データ(前は第2の暗号化データ)を復号する。他の手法では、本開示を読めば当業者には明らかになるように、第1の鍵はソース・ノードから直接、宛先ノードによって受信されてもよい。
少なくとも一部の手法では、共有メモリの領域は複数の宛先ノードによって要求されてもよい。好ましい態様では、宛先ノードのうちの少なくとも2つの宛先ノードにそれぞれ、異なる第2の鍵が関連付けられる。たとえば、ソース・ノードが、第1の暗号化データを得るために2つの宛先ノードのそれぞれのために同じ第1の鍵で共有メモリの領域(たとえばそれに関連付けられたデータ)を暗号化してもよい。ソース・ノードは、第1の宛先ノードに送信する第2の暗号化データを得るために、第1の暗号化データを1つの第2の鍵(k1)で暗号化してもよい。ソース・ノードは、第2の宛先ノードに送信する第2の暗号化データ(第1の宛先ノードに送信される第2の暗号化データとは異なって見える)を得るために異なる第2の鍵(k2)で第1の暗号化データを暗号化してもよい。
次に図7を参照すると、一態様による方法700のフローチャートが示されている。方法700は、様々な態様において、図1~図6および図8~図9に示す環境のいずれかなどにおいて本発明により実行可能である。当然ながら、本説明を読めば当業者にはわかるように、図7に具体的に記載されている動作より多いかまたは少ない動作が方法700に含まれてもよい。
方法700のステップの各ステップは、動作環境の任意の適切な構成要素によって実行可能である。たとえば、様々な態様において、方法700は、コンピュータ、または1つもしくは複数のプロセッサを中に有する任意の他のデバイスによって部分的にまたは全体が実行されてもよい。プロセッサ、たとえばハードウェアまたはソフトウェアあるいはその両方で実装され、好ましくは少なくとも1つハードウェア・コンポーネントを有する処理回路、チップ、またはモジュールあるいはこれらの組合せが、方法700の1つまたは複数のステップを実行するように任意のデバイスで使用可能である。プロセッサの例には、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、これらの組合せ、または当技術分野で知られている任意のその他の適切なコンピューティング・デバイスが含まれるが、これらには限定されない。
図7に示すように、方法700は動作702を含む。動作720は、宛先ノードによって、第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。好ましい態様では、データの第1の暗号化データへの暗号化と、次の第1の暗号化データの第2の暗号化データへの暗号化は、ソース・ノードにおいて行われる。
好ましい態様では、ソース・ノードは第1の鍵と第2の鍵とを含む。関連付けられた、第1の暗号化データを作成するためのデータの暗号化と、次の第2の暗号化データを作成するための第1の暗号化データの暗号化は、一部の手法では、ソース・ノード上の少なくとも1つの暗号化/復号機能によって実行されてもよい。他の手法では、本開示に照らせば当業者にはわかるように、各鍵がソース・ノード上にある別個の暗号化/復号機能に関連付けられてもよい。
様々な手法において、第2の暗号化データは、ソース・ノードの共有メモリの領域に記憶されているデータを求める宛先ノードからソース・ノードへの要求に少なくとも部分的に基づいて受信される。一部の手法では、第2の暗号化データは共有メモリの領域に記憶されているデータに対応する。共有メモリの領域に記憶されているデータは、ローカル暗号鍵で暗号化可能とされ、ローカル・メモリに記憶されてもよい。共有メモリの領域に記憶されているデータの要求に応答して、ソース・ノードは、方法600の動作604に記載されているように、ローカル暗号鍵を使用して共有メモリの領域に記憶されているデータを復号してもよい。他の手法では、共有メモリの領域に記憶されているデータはローカル暗号鍵で暗号化されていない。
少なくとも一部の手法では、共有メモリの領域は、本開示を読めば当業者に明らかになるはずの方式で、複数の宛先ノードによって要求されてもよい。
動作704は、宛先ノードによって第2の鍵を受信することを含む。様々な手法において、ソース・ノードが第2の鍵のコピーを宛先ノードに送信し、宛先ノードはそのコピーをソース・ノードと宛先ノードとの間で確立された共有ポリシー情報によって定義されている一定時間、一定動作数などにわたってセキュアに記憶する。少なくとも一部の態様では、(たとえば、共有ポリシーによって決められているか、ソース・ノードによって要求されるなどの)共有期間の終了に応答して、宛先ノードは、本開示を読めば当業者には明らかになるはずの方式で、第2の鍵を破棄するか、または第2の鍵をダミー鍵に置き換えるか、あるいはその両方を行ってもよい。ダミー鍵は、当技術分野で知られている任意の種類のものとすることができる。
動作706は、宛先ノードによって第1の鍵を受信することを含む。一部の手法では、宛先ノードは鍵マネージャから第1の鍵を受信する。鍵マネージャは、ソース・ノードと宛先ノードとの間でメモリを共有するための鍵の提供、生成、管理などを行うために、ソース・ノード、宛先ノード、またはネットワーク内の任意のその他の構成要素あるいはこれらの組合せに結合可能である。他の手法では、第1の鍵は、本開示を読めば当業者には明らかになるように、ソース・ノードから直接、宛先ノードによって受信されてもよい。
動作708は、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することを含む。第2の暗号化データは、上述のように、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。
動作710は、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することを含む。宛先ノードは、第1の暗号化データを得るために、暗号化/復号機能と(一部の手法ではソース・ノードによって送信された)第2の鍵とを使用してもよい。宛先ノードは、データを得るために暗号化/復号機能と(一部の手法では鍵マネージャによって送信された)第1の鍵とを使用してもよい。上述のように、データは、暗号化されていないデータ、非暗号化データ、平文データ、別の鍵暗号化形態のデータなどとすることができる。
次に図8を参照すると、一態様による方法800のフローチャートが示されている。方法800は、様々な態様で、特に図1から図7および図9に示す環境のいずれかで、本発明により実行可能である。当然ながら、本説明を読めば当業者にはわかるように、図8に具体的に記載されている動作よりも多いかまたは少ない動作が方法800に含まれてもよい。
方法800のステップのそれぞれは、動作環境の任意の適切なコンポーネントによって実行可能である。たとえば、様々な態様で、方法800は、コンピュータ、または、内部に1つもしくは複数のプロセッサを有する他の任意のデバイスによって、一部または全体が実行されてもよい。方法800の1つまたは複数のステップを実行するために、プロセッサ、たとえば、処理回路、チップ、または、ハードウェアまたはソフトウェアあるいはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するモジュール、あるいはこれらの組合せを、任意のデバイスで使用してもよい。例示のプロセッサには、中央演算処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、これらの組合せ、または当技術分野で知られている任意のその他の適合するコンピューティング・デバイスが含まれるが、これらには限定されない。
図8に示すように、方法800は動作802を含む。動作802は、宛先ノードによって、第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。好ましい態様では、データの第1の暗号化データへの暗号化と、次の第1の暗号化データの第2の暗号化データへの暗号化とは、ソース・ノードにおいて行われる。
様々な態様において、第1の鍵はソース・ノードによって制御されるメモリの領域に関連付けられ、第2の鍵は宛先ノードに関連付けられる。たとえば、メモリの領域は、その宛先ノード、またはその宛先ノードを含む複数の宛先ノードによって要求されてもよい。各宛先ノードに同じ第1の鍵が関連付けられてもよい。好ましい態様では、宛先ノードのうちの少なくとも2つの宛先ノードのそれぞれに異なる第2の鍵が関連付けられる。たとえば、ソース・ノードが、第1の暗号化データを得るために2つの宛先ノードのそれぞれについて同じ第1の鍵で共有メモリの領域(たとえばそれに関連付けられたデータ)を暗号化してもよい。ソース・ノードは、第1の宛先ノードに送信する第2の暗号化データを得るために、1つの第2の鍵(k1)で第1の暗号化データを暗号化してもよい。ソース・ノードは、第2の宛先ノードに送信する第2の暗号化データ(第1の宛先ノードに送信される第2の暗号化データとは異なって見える)を得るために、異なる第2の鍵(k2)で第1の暗号化データを暗号化してもよい。
別の態様では、各宛先ノードに異なる第1の鍵が関連付けられてもよい。この態様では、ソース・ノードは、宛先ノードのうちのそれぞれの宛先ノードとメモリの異なる領域を共有してもよい。メモリの各領域は、異なる第1の鍵によって保護されてもよい。他の態様では、ソース・ノードが複数の外部メモリ領域を有する場合に各宛先ノードに異なる第1の鍵が関連付けられてもよい。各外部メモリ領域には異なる第1の鍵または異なる第2の鍵あるいはその両方が関連付けられてもよい。
他の手法では、各宛先ノードに異なる第1の鍵と、同じ第2の鍵とが関連付けられてもよい。好ましい態様では、宛先ノードのうちの少なくとも2つの宛先ノードにそれぞれ異なる第1の鍵が関連付けられる。たとえば、2つの異なる第1の暗号化データ・セットを得るように、ソース・ノードが第1の宛先ノードのために第1の鍵で共有メモリの領域(たとえばそれに関連付けられたデータ)を暗号化し、第2の宛先ノードのために異なる第1の鍵で共有メモリの同じ領域または異なる領域を暗号化してもよい。2つの異なる第2の暗号化データ・セットを得るように第1の暗号化データの各セットが同じ第2の鍵によって暗号化されてもよい。ソース・ノードは、本開示を読めば当業者に明らかになるはずの方式で、各第2の暗号化データをそれぞれの宛先ノードに送信してもよい
様々な態様において、第2の暗号化データは、好ましくは、ソース・ノードによって制御される共有メモリの領域に対応する。たとえば、第2の暗号化データは、ソース・ノードに結合された共有メモリの領域に記憶されたデータとすることができる。他の態様では、第2の暗号化データは、ソース・ノードによって制御される共有メモリの領域に対応し、共有メモリはソース・ノードに対してリモートにある。
好ましい態様では、ソース・ノードは第1の鍵と第2の鍵とを含む。一部の手法では、関連付けられた、第1の暗号化データを作成するためのデータの暗号化と、次の第2の暗号化データを作成するための第1の暗号化データの暗号化とは、ソース・ノード上の少なくとも1つの暗号化/復号機能によって行われてもよい。他の手法では、本開示に照らせば当業者にはわかるように、各鍵がソース・ノード上にある別個の暗号化/復号機能に関連付けられてもよい。
様々な手法において、ソース・ノードの共有メモリに記憶されているデータは、ソース・ノードのローカル鍵で暗号化されている。ソース・ノードはローカル鍵を含む。ローカル鍵は抽出可能ではなく(たとえば共有可能ではない)、好ましくはソース・ノードにおいてセキュアに記憶される。好ましい態様では、ソース・ノードは、ローカル・メモリ(ローカルで暗号化されているメモリ)に記憶されているデータを暗号化するためにローカル鍵を使用する。ローカルで暗号化されたメモリのローカルで暗号化されたデータは、方法600の少なくとも一部の態様で説明したように、第1の暗号化データを得るために第1の鍵で暗号化される前に、ソース・ノードによってローカル鍵を使用して復号可能である。
動作804は、宛先ノードによって、第2の鍵を受信することを含む。様々な手法において、ソース・ノードは宛先ノードに第2の鍵のコピーを送信し、宛先ノードはそのコピーをソース・ノードと宛先ノードとの間で確立された共有ポリシー情報による定義に従って、一定時間、一定動作数などにわたってセキュアに記憶する。少なくとも一部の態様では、(たとえば、共有ポリシーによって決められているか、ソース・ノードによって要求されるなどの)共有期間の終了に応答して、宛先ノードは、本開示を読めば当業者に明らかになる方式で、第2の鍵を破棄するか、第2の鍵をダミー鍵に置き換えるか、あるいはその両方を行ってもよい。ダミー鍵は、当技術分野で知られている任意の種類のものとすることができる。
動作806は、宛先ノードによって第1の鍵を受信することを含む。一部の手法では、宛先ノードは鍵マネージャから第1の鍵を受信する。鍵マネージャは、ソース・ノードと宛先ノードとの間でメモリを共有するための鍵の提供、生成、管理などを行うために、ソース・ノード、宛先ノードまたはネットワークにおける任意のその他の構成要素あるいはこれらの組合せに結合されてもよい。他の手法では、本開示を読めば当業者には明らかになるように、第1の鍵は宛先ノードによってソース・ノードから直接、受信されてもよい。
動作808は、宛先ノードによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することを含む。第2の暗号化データは、上述のように、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化されたデータである。宛先ノードは、第1の暗号化データを得るために、暗号化/復号機能と(一部の手法ではソース・ノードから送信された)第2の鍵とを使用してもよい。
動作810は、宛先ノードによって、データを得るために第1の鍵を使用して第1の暗号化データを復号することを含む。宛先ノードは、第1の暗号化データを得るために暗号化/復号機能と、(一部の手法ではソース・ノードによって送信された)第2の鍵とを使用してもよい。宛先ノードは、データを得るために、暗号化/復号機能と(一部の手法では鍵マネージャによって送信された)第1の鍵を使用してもよい。データは、上述のように、暗号化されていないデータ、非暗号化データ、平文データ、別の鍵暗号化形態のデータなどとすることができる。
次に図9を参照すると、一態様による方法900のフローチャートが示されている。方法900は、様々な態様において、図1~図8に示されている環境のいずれかなどにおいて本発明により実行可能である。当然ながら、本説明を読めば当業者にはわかるように、図9に具体的に記載されている動作より多いかまたは少ない動作が方法900に含まれてもよい。
方法900のステップのそれぞれは、動作環境の任意の適切な構成要素によって実行可能である。たとえば、様々な態様において、方法900は、コンピュータ、または1つもしくは複数のプロセッサを中に有する任意の他のデバイスによって部分的にまたは全体が実行されてもよい。プロセッサ、たとえばハードウェアまたはソフトウェアあるいはその両方で実装され、好ましくは少なくとも1つハードウェア・コンポーネントを有する処理回路、チップ、またはモジュールあるいはこれらの組合せが、方法900の1つまたは複数のステップを実行するために任意のデバイスで使用可能である。プロセッサの例には、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、これらの組合せ、または当技術分野で知られている任意のその他の適切なコンピューティング・デバイスが含まれるが、これらには限定されない。
図9に示すように、方法900は動作902を含む。動作902は、トランスコーダによって第2の暗号化データを受信することを含む。第2の暗号化データは、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化された、ソース・ノードによって制御される共有メモリの領域に記憶されたデータである。好ましい態様では、データの第1の暗号化データへの暗号化と、次の第1の暗号化データの第2の暗号化データへの暗号化は、ソース・ノードにおいて行われる。ソース・ノードは第1の鍵と第2の鍵とを含む。
別の手法では、第2の暗号化データは、トランスコーダからソース・ノードへのデータ要求に少なくとも部分的に基づいて受信される。宛先ノードからのデータの要求の受信に応答して、トランスコーダがソース・ノードにデータ要求を送信してもよい。
様々な態様において、第2の暗号化データは、少なくとも1つの宛先ノードからのデータ要求に基づいて、共有メモリ、ソース・ノードなどからトランスコーダにおいて受信される。トランスコーダを介してソース・ノードによって制御される共有メモリの領域のデータを要求する任意の数の宛先ノードが存在し得る。一部の手法では、トランスコーダは、ソース・ノード、宛先ノード、トランスコーダなどの間の共有ポリシー情報に従って、宛先ノードからのデータ要求に応答して第2の暗号化データを受信してもよい。共有ポリシー情報は、共有するメモリ範囲、共有先の宛先ノード、存続期間を含むメモリの許可されたアクセス、許可された読み出し/書き込み動作、許可された動作の数、共有メモリのどのような領域がどの実体間で共有可能であるか、任意の実体間の共有期間の長さ、任意の実体間の共有期間に関連付けられた動作の数、任意の実体間の共有期間に関連付けられた動作の種類、任意の実体間で共有期間当たり共有可能なデータの量などを含むことができる。様々な手法において、共有ポリシー情報によって、共有期間を終了する時点が決まる。様々な態様において、共有期間はポリシーに従って、または少なくとも1つの鍵の破棄に応答して、またはソース・ノードによる共有期間終了要求、宛先ノードによる共有期間終了要求、電源オフ・イベント、任意のその他のトリガ・イベントなどに応答して、あるいはこれらの組合せによって終了してもよい。
様々な態様において、第1の鍵はソース・ノードによって制御されるメモリの領域に関連付けられ、第2の鍵は宛先ノードに関連付けられる。たとえば、メモリの領域は、その宛先ノード、またはその宛先ノードを含む複数の宛先ノードによって要求されてもよい。各宛先ノードに同じ第1の鍵が関連付けられてもよい。好ましい態様では、宛先ノードのうちの少なくとも2つの宛先ノードのそれぞれに異なる第2の鍵または異なる第1の鍵あるいはその両方が関連付けられる。
一部の手法では、共有されるメモリがソース・ノードにおいてローカルで暗号化される(たとえばローカル暗号鍵で暗号化される)場合、各宛先ノードに異なる第1の鍵が関連付けられてもよい。共有されるメモリがソース・ノードによって制御される同じリモート・メモリ領域である場合、第1の鍵は各宛先ノードについて同じであってもよい。共有されるメモリがソース・ノードによって制御されるリモート・メモリの異なる領域を含む場合、第1の鍵は宛先ノードごとに異なってもよい。
様々な態様において、第2の暗号化データは好ましくはソース・ノードの共有メモリの領域に対応する。たとえば、第2の暗号化データは、ソース・ノードに結合された共有メモリの領域に記憶されたデータとすることができる。他の態様では、第2の暗号化データは、ソース・ノードによって制御される共有メモリの領域に対応し、共有メモリはソース・ノードに対してリモートにある。
好ましい態様では、ソース・ノードは第1の鍵と第2の鍵を含む。一部の手法では、関連付けられた、第1の暗号化データを作成するためのデータの暗号化と、次の第2の暗号化データを作成するための第1の暗号化データの暗号化とは、ソース・ノード上の少なくとも1つの暗号化/復号機能によって行われてもよい。他の手法では、本開示に照らせば当業者にはわかるように、各鍵がソース・ノード上にある別個の暗号化/復号機能に関連付けられてもよい。
様々な手法において、ソース・ノードの共有メモリに記憶されているデータは、ソース・ノードのローカル鍵で暗号化されている。ソース・ノードはローカル鍵を含む。ローカル鍵は抽出可能ではなく(たとえば共有可能ではない)、好ましくはソース・ノードにおいてセキュアに記憶される。好ましい態様では、ソース・ノードは、ローカル・メモリ(ローカルで暗号化されているメモリ)に記憶されているデータを暗号化するためにローカル鍵を使用する。ローカルで暗号化されたメモリ内のローカルで暗号化されたデータは、方法600の少なくとも一部の態様で説明したように、第1の暗号化データを得るために第1の鍵で暗号化される前に、ソース・ノードによってローカル鍵を使用して暗号化可能である。
動作904は、トランスコーダによって第2の鍵を受信することを含む。第2の鍵はソース・ノードから送信可能である。様々な手法において、ソース・ノードはトランスコーダに第2の鍵のコピーを送信し、トランスコーダはそのコピーを共有ポリシー情報による定義に従って、一定時間、一定動作数などにわたってセキュアに記憶する。少なくとも一部の態様では、(たとえば、共有ポリシーによって決められているか、ソース・ノードによって要求されるなどの)共有期間の終了に応答して、トランスコーダは、本開示を読めば当業者に明らかになる方式で、第2の鍵を破棄するか、第2の鍵をダミー鍵に置き換えるか、あるいはその両方を行ってもよい。ダミー鍵は、当技術分野で知られている任意の種類のものとすることができる。
動作906は、トランスコーダによって、第1の暗号化データを得るために第2の鍵を使用して第2の暗号化データを復号することを含む。第2の暗号化データは、上述のように、第1の暗号化データを作成するために第1の鍵で暗号化され、次に第2の暗号化データを作成するために第2の鍵で暗号化された、メモリの共有領域に記憶されているデータである。動作906によると、トランスコーダは、第1の暗号化データを得るためにトランスコーダにおける暗号化/復号機能と(ソース・ノードによって送信された)第2の鍵とを使用してもよい。トランスコーダは好ましくは、(たとえばデータを得るために第1の暗号化データを復号するために)第1の鍵にアクセスすることができない場合に、暗号化されていないデータ(または別の鍵暗号化形態の元のデータ)を決して得ることがない。
動作908は、トランスコーダによって、第3の暗号化データを作成するために第3の鍵を使用して第1の暗号化データを暗号化することを含む。(たとえば第1の鍵のみで暗号化された)第1の暗号化データは、トランスコーダにおける暗号化/復号機能によって第3の暗号化データを作成するために、新たな、第3の鍵で暗号化されてもよい。暗号化/復号機能は、動作906の暗号化/復号機能と同じであっても異なっていてもよい(たとえば、第3の鍵とは別個であるか、第3の鍵のみとともに使用されるなど)。好ましい手法では、第3の鍵はトランスコーダにおいてトランスコーダ・マネージャから受信される。他の手法では、トランスコーダ・マネージャは第3の鍵をトランスコーダと宛先ノードとに送信する。トランスコーダ・マネージャは、第3の鍵を生成し、本開示を読めば当業者には明らかになるはずの方式で第3の鍵をトランスコーダまたは宛先ノードあるいはその両方に送信してもよい。少なくとも一部の手法において、第3の鍵はトランスコーダによって、トランスコーダ上の鍵生成器により生成されてもよい。他の手法では、ソース・ノード、トランスコーダ、宛先ノードなどに結合された鍵マネージャまたは鍵生成器あるいはその両方によっていずれの鍵の生成または管理あるいはその両方も行われてもよい。
動作910は、トランスコーダによって、第3の鍵を宛先ノードに送信することを含む。好ましい手法では、第3の鍵を受信する宛先ノードは、データの要求を発信した宛先ノードである。様々な手法において、トランスコーダは宛先ノードに第3の鍵のコピーを送信し、宛先ノードはそのコピーを、共有ポリシー情報による定義に従って、または本開示を読めば当業者には明らかになるはずの方式で、あるいはその両方により、一定時間、一定動作数などにわたってセキュアに記憶する。好ましい態様では、(共有ポリシーによって決められているか、またはソース・ノードによって要求されるなどの)共有期間の終了に応答して、トランスコーダは、本開示を読めば当業者には明らかになるはずの方式で、ソース・ノードと宛先ノードとのデータ共有を終了するために第3の鍵を破棄するか、ダミー鍵に置き換えるか、あるいはその両方を行う。ダミー鍵は当技術分野で知られている任意の種類のものとすることができる。
動作912は、トランスコーダによって第3の暗号化データを宛先ノードに送信することを含む。第3の暗号化データは、上述のように、第3の暗号化データを作成するために、第1の暗号化データ(たとえば第1の鍵を使用して暗号化されたデータ)が第3の鍵を使用して暗号化されたデータである。宛先ノードは、様々な手法においてソース・ノードから直接、第1の鍵を受信する。宛先ノードは、様々な手法において、第1の暗号化データを得るために、宛先ノード上の暗号化/復号機能を使用し、第3の鍵を使用して第3の暗号化データを復号するように構成される。宛先ノードは、データを得るために、宛先ノード上の暗号化/復号機能(第1の暗号化データを得るために第3の暗号化データを復号する暗号化/復号機能と同じであっても異なっていてもよい)を使用し、第1の鍵を使用して第1の暗号化データを復号するように構成される。データは、上述のように、暗号化されていないデータ、非暗号化データ、平文データ、別の鍵暗号化形態のデータなどとすることができる。
本発明は、任意の可能な統合の技術的詳細度のシステム、方法、またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適合する組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものも含まれる。すなわち、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、可搬コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を伝播する電磁波(たとえば光ファイバ・ケーブルを通る光パルス)、または配線を介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語、または同様のプログラム言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でもしくは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様について、本明細書では本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることはわかるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能/動作を実装する手段を形成するように、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを実現するものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他の装置あるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方のブロックで規定されている機能/動作を実装するように、コンピュータ実装プロセスを実現すべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。ある別の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。たとえば、連続して示されている2つのブロックは、関与する機能に応じて、実際には1つのステップで完遂されてもよく、並行して実行されてもよく、実質的に並行して実行されてもよく、部分的にもしくは全体が時間的に重なって実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能または動作を実行する専用ハードウェア・ベースのシステムによって実装可能であるか、または専用ハードウェアとコンピュータ命令との組合せとして機能するかまたは実施することができることもわかるであろう。
さらに、様々な実施形態によるシステムは、プロセッサと、プロセッサと一体化されるかまたはプロセッサによって実行可能なロジックとを含んでもよく、ロジックは、本明細書に記載のプロセス・ステップのうちの1つまたは複数のプロセス・ステップを実行するように構成される。一体化されるとは、特定用途向け集積回路(ASIC)、FPGAなど、ハードウェア・ロジックとして埋め込まれたロジックをプロセッサが有することを意味する。プロセッサによって実行可能とは、ロジックが、プロセッサによってアクセス可能であって、プロセッサによって実行されるとプロセッサに何らかの機能を実行させるように構成された、ハードウェア・ロジック、ファームウェアなどのソフトウェア・ロジック、オペレーティング・システムの一部、アプリケーション・プログラムの一部などであるか、またはハードウェア・ロジックとソフトウェア・ロジックとの何らかの組合せであることを意味する。ソフトウェア・ロジックは、当技術分野で知られているどのようなメモリの種類のローカルまたはリモートあるいはその両方のメモリにでも記憶することができる。ソフトウェア・プロセッサ・モジュールまたは、ASIC、FPGA、中央演算処理装置(CPU)、集積回路(IC)、グラフィックス・プロセッシング・ユニット(GPU)などのハードウェア・プロセッサ、あるいはその両方など、当技術分野で知られているどのようなプロセッサでも使用することができる。
上記のシステムまたは方法あるいはその両方の様々な特徴は、任意の方式で組み合わせてもよく、それによって上記の説明から複数の組合せを作成することができることが明らかであろう。
また、本発明の実施形態は、サービスをオンデマンドで提供するために顧客に代わって配備されるサービスの形態で提供されてもよいこともわかるであろう。
本発明の様々な実施形態の説明を例示のために示したが、これらは網羅的であること、または開示されている実施形態に限定することを意図したものではない。記載されている実施形態の範囲から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術に対する技術的改良を最もよく説明するために、または当業者が本明細書で開示されている実施形態を理解することができるように選定されている。

Claims (22)

  1. コンピュータ実装方法であって、
    ソース・ノードによって、前記ソース・ノードによって制御される共有メモリの領域に記憶された、前記ソース・ノードのローカル鍵で暗号化されているデータを求める要求を宛先ノードから受信することと、
    前記ソース・ノードによって、ローカルで暗号化された前記データを前記ローカル鍵を使用して復号することと、
    前記ソース・ノードによって、第1の暗号化データを生成するために第1の鍵を使用して前記復号データを暗号化することと、
    前記ソース・ノードによって、第2の暗号化データを生成するために第2の鍵を使用して前記第1の暗号化データを暗号化することと、
    前記ソース・ノードによって、前記第2の暗号化データを前記宛先ノードに送信することとを含む、コンピュータ実装方法。
  2. 前記宛先ノードが前記第1の鍵を鍵マネージャから受信する、請求項1に記載のコンピュータ実装方法。
  3. 前記ソース・ノードによって前記第2の鍵を前記宛先ノードに送信することを含む、請求項1または2に記載のコンピュータ実装方法。
  4. 共有メモリの前記領域が複数の宛先ノードによって要求され、前記宛先ノードのうちの少なくとも2つの宛先ノードのそれぞれに異なる第2の鍵が関連付けられている、請求項1ないし3のいずれかに記載のコンピュータ実装方法。
  5. 前記宛先ノードが、前記第1の暗号化データを得るために前記第2の鍵を使用して前記第2の暗号化データを復号するように構成され、前記宛先ノードが前記データを得るために前記第1の鍵を使用して前記第1の暗号化データを復号するように構成される、請求項1ないし4のいずれかに記載のコンピュータ実装方法。
  6. コンピュータ実装方法であって、
    宛先ノードによって第2の暗号化データを受信することであって、前記第2の暗号化データが、第1の暗号化データを作成するために第1の鍵で暗号化され、次に前記第2の暗号化データを作成するために第2の鍵で暗号化されたデータである、前記第2の暗号化データを受信することと、
    前記宛先ノードによって前記第2の鍵を受信することと、
    前記宛先ノードによって前記第1の鍵を受信することと、
    前記宛先ノードによって、前記第1の暗号化データを得るために前記第2の鍵を使用して前記第2の暗号化データを復号することと、
    前記宛先ノードによって、前記データを得るために前記第1の鍵を使用して前記第1の暗号化データを復号することとを含む、コンピュータ実装方法。
  7. 前記第2の暗号化データが、前記ソース・ノードによって制御される共有メモリの領域に記憶されたデータに対応する、請求項6に記載のコンピュータ実装方法。
  8. 共有メモリの前記領域が前記宛先ノードによって要求される、請求項7に記載のコンピュータ実装方法。
  9. 共有メモリの前記領域が複数の宛先ノードによって要求される、請求項7に記載のコンピュータ実装方法。
  10. 前記第2の鍵が前記ソース・ノードから受信される、請求項7に記載のコンピュータ実装方法。
  11. 前記第1の鍵が鍵マネージャから受信される、請求項6ないし10のいずれかに記載のコンピュータ実装方法。
  12. 前記第1の鍵がソース・ノードによって制御されるメモリの領域に関連付けられ、前記第2の鍵が前記宛先ノードに関連付けられている、請求項6ないし11のいずれかに記載のコンピュータ実装方法。
  13. 前記ソース・ノードによって制御される共有メモリの前記領域が、前記宛先ノードによって要求される、請求項12に記載のコンピュータ実装方法。
  14. 前記ソース・ノードによって制御される共有メモリの前記領域が複数の宛先ノードによって要求され、各宛先ノードに同じ第1の鍵が関連付けられ、前記宛先ノードのうちの少なくとも2つの宛先ノードにそれぞれ異なる第2の鍵が関連付けられている、請求項12に記載のコンピュータ実装方法。
  15. コンピュータ実装方法であって、
    トランスコーダによって第2の暗号化データを受信することであって、前記第2の暗号化データが、ソース・ノードによって制御される共有メモリの領域に記憶されたデータであって、前記データが第1の暗号化データを作成するために第1の鍵で暗号化され、次に前記第2の暗号化データを作成するために第2の鍵で暗号化されている、前記第2の暗号化データを受信することと、
    前記トランスコーダによって前記第2の鍵を受信することと、
    前記トランスコーダによって、前記第1の暗号化データを得るために前記第2の鍵を使用して前記第2の暗号化データを復号することと、
    前記トランスコーダによって、第3の暗号化データを作成するために第3の鍵を使用して前記第1の暗号化データを暗号化することと、
    前記トランスコーダによって前記第3の鍵を宛先ノードに送信することと、
    前記トランスコーダによって前記第3の暗号化データを前記宛先ノードに送信することとを含む、コンピュータ実装方法。
  16. 前記第2の鍵が前記ソース・ノードから受信される、請求項15に記載のコンピュータ実装方法。
  17. 前記第3の鍵がトランスコーダ・マネージャから受信される、請求項15または16に記載のコンピュータ実装方法。
  18. 前記第2の暗号化データが前記ソース・ノードによって制御されるメモリの前記領域に対応する、請求項15ないし17のいずれかに記載のコンピュータ実装方法。
  19. 前記ソース・ノードによって制御されるメモリの前記領域が前記宛先ノードによって要求される、請求項15ないし18のいずれかに記載のコンピュータ実装方法。
  20. 前記ソース・ノードによって制御されるメモリの前記領域が複数の宛先ノードによって要求され、各宛先ノードに同じ第1の鍵が関連付けられ、前記宛先ノードのうちの少なくとも2つの宛先ノードのそれぞれに異なる第2の鍵が関連付けられている、請求項15ないし19のいずれかに記載のコンピュータ実装方法。
  21. 前記宛先ノードが、前記第1の暗号化データを得るために前記第3の鍵を使用して前記第3の暗号化データを復号するように構成され、前記宛先ノードが、前記データを得るために前記第1の鍵を使用して前記第1の暗号化データを復号するように構成される、請求項15ないし20のいずれかに記載のコンピュータ実装方法。
  22. 1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含むコンピュータ・プログラム製品であって、前記プログラム命令が、請求項1ないし21のいずれかに記載の方法を行うようにプロセッサによって実行可能な、コンピュータ・プログラム製品。
JP2023534079A 2020-12-30 2021-12-08 セキュアなメモリ共有方法 Pending JP2024501168A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/138,552 2020-12-30
US17/138,552 US20220207191A1 (en) 2020-12-30 2020-12-30 Secure memory sharing
PCT/IB2021/061458 WO2022144643A1 (en) 2020-12-30 2021-12-08 Secure memory sharing

Publications (1)

Publication Number Publication Date
JP2024501168A true JP2024501168A (ja) 2024-01-11

Family

ID=82119350

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023534079A Pending JP2024501168A (ja) 2020-12-30 2021-12-08 セキュアなメモリ共有方法

Country Status (6)

Country Link
US (1) US20220207191A1 (ja)
JP (1) JP2024501168A (ja)
CN (1) CN116745766A (ja)
DE (1) DE112021005979T5 (ja)
GB (1) GB2616811A (ja)
WO (1) WO2022144643A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579783B1 (en) * 2022-03-09 2023-02-14 Vim Inc. Multi-tenant storage

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940870A (en) * 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
CA2564313A1 (en) * 2004-05-05 2005-11-17 Ims Health Incorporated Data encryption applications for multi-source longitudinal patient-level data integration
US8761401B2 (en) * 2006-08-28 2014-06-24 Motorola Mobility Llc System and method for secure key distribution to manufactured products
CN102065135B (zh) * 2010-12-15 2013-02-13 中国联合网络通信集团有限公司 点对点数据获取方法、系统及服务器
WO2012138804A2 (en) * 2011-04-04 2012-10-11 Nextlabs, Inc. Protecting information using policies and encryption
US9154815B2 (en) * 2011-05-06 2015-10-06 Disney Enterprises, Inc. Method and system for securing multimedia data streamed over a network
JPWO2014030186A1 (ja) * 2012-08-23 2016-07-28 富士通株式会社 中継装置、中継方法、中継プログラムおよび中継システム
WO2015011526A1 (en) * 2013-07-24 2015-01-29 Freescale Semiconductor, Inc. Data processing device and method for protecting a data processing device against tampering
US20160335201A1 (en) * 2014-01-28 2016-11-17 Hewlett Packard Enterprise Development Lp Data and instruction set encryption
US10910089B2 (en) * 2015-03-20 2021-02-02 Universal Patient Key, Inc. Methods and systems providing centralized encryption key management for sharing data across diverse entities
US10127389B1 (en) * 2015-03-30 2018-11-13 Amazon Technologies, Inc. Performing operations on intelligent storage with hardened interfaces
US9800560B1 (en) * 2015-04-23 2017-10-24 Symantec Corporation Systems and methods for monitoring encrypted data transmission
US20210167955A1 (en) * 2017-10-24 2021-06-03 Bitcache Limited Data transmission
WO2019134868A1 (en) * 2018-01-04 2019-07-11 Signify Holding B.V. System and method for end-to-end secure communication in device-to-device communication networks
CN108768633B (zh) * 2018-05-30 2022-03-25 腾讯科技(深圳)有限公司 实现区块链中信息共享的方法及装置
WO2019241404A1 (en) * 2018-06-15 2019-12-19 Orock Technologies, Inc. Secure on-premise to cloud communication
FR3094520B1 (fr) * 2019-03-25 2021-10-22 St Microelectronics Rousset Clé de chiffrement et/ou de déchiffrement
CN112133396B (zh) * 2020-09-23 2023-02-03 深圳平安智慧医健科技有限公司 医疗数据共享方法、装置、电子设备及介质
CN112150147A (zh) * 2020-09-23 2020-12-29 安徽省吉翔信息科技有限公司 一种基于区块链的数据安全存储系统

Also Published As

Publication number Publication date
CN116745766A (zh) 2023-09-12
US20220207191A1 (en) 2022-06-30
WO2022144643A1 (en) 2022-07-07
DE112021005979T5 (de) 2023-08-31
GB2616811A (en) 2023-09-20

Similar Documents

Publication Publication Date Title
KR102539777B1 (ko) 하드웨어 보안 모듈에 대한 보안 게스트들의 보안 키들의 바인딩
US10389728B2 (en) Multi-level security enforcement utilizing data typing
JP7189944B2 (ja) セキュアな環境内のツール用のセキュアなアクセス管理方法、コンピュータ・プログラム、およびシステム
US10931453B2 (en) Distributed encryption keys for tokens in a cloud environment
US10686765B2 (en) Data access levels
AU2020305390B2 (en) Cryptographic key orchestration between trusted containers in a multi-node cluster
JP2023551527A (ja) 準同型暗号化を使用したセキュアなコンピューティング・リソース配置
US20200296089A1 (en) Validating containers on a microservice framework
WO2023098433A1 (en) Secure policy distribution in a cloud environment
US10673827B1 (en) Secure access to user data
CN116746114A (zh) 安全数据移动
CN115150117A (zh) 在分散策略中维持机密性
US10715318B2 (en) Lightweight cryptographic service for simplified key life-cycle management
CN114595467A (zh) 针对数据中心对象的多阶段保护
JP2024501168A (ja) セキュアなメモリ共有方法
JP2023532810A (ja) 暗号化データオブジェクトの配布
US11153299B2 (en) Secure data transport using trusted identities
JP2023530581A (ja) システム生成データセット暗号化鍵
US20230412583A1 (en) Encrypted Communication Platform and Related Systems and Methods

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230702

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20230711

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240711