(57)【要約】  入力周辺機器および出力周辺機器に動作可能に接続されたプロセッサ・メモリユニット（ＰＭＵ）を備えたセキュアコンピュータシステムが提供される。ＰＭＵは、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にする命令のセットを含む。ＰＭＵはさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成される。【選択図】図２
2021519564.tif 000002
【特許請求の範囲】
【請求項１】
セキュアコンピュータシステムであって、
入力周辺コンポーネントおよび出力周辺コンポーネントに動作可能に接続されたプロセッサ・メモリユニット（ＰＭＵ）を備え、
入力周辺コンポーネントが、ユーザからの入力データを受信して、入力データをＰＭＵに送信するように構成され、
出力周辺コンポーネントが、処理された出力データをＰＭＵから受信するように構成され、
ＰＭＵが、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にするための命令のセットを含み、
ＰＭＵがさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成されるものであり、
モジュールのグループが、
入力周辺コンポーネントから入力データを受信し、合成鍵を使用して入力データを暗号化し、暗号化された入力データを共有メモリに書き込むように構成された少なくとも１のライタモジュールと、
共有メモリから暗号化された入力データを読み出し、合成鍵を使用して暗号化された入力データを復号し、復号された入力データを使用するように構成された少なくとも１のリーダモジュールとを備えることを特徴とするセキュアコンピュータシステム。
【請求項２】
請求項１に記載のセキュアコンピュータデバイスにおいて、
プロセッサが、セキュアエンクレイブをサポートし、命令のセットが、複数のセキュアエンクレイブ命令を含み、指定されたセキュア領域が、セキュアエンクレイブであることを特徴とするセキュアコンピュータデバイス。
【請求項３】
請求項１に記載のセキュアコンピュータデバイスにおいて、
少なくとも１のリーダモジュールが、
オペレーティングシステムの環境の状態を監視するように構成された状態管理モジュールと、
リモート接続を介して入力データをリモート作業環境に安全に転送し、処理された出力データをリモート作業環境から安全に受信するように構成されたセキュア環境モジュールと、
処理された出力データを出力周辺コンポーネントに提供するように構成された出力管理モジュールとを含む群のなかから選択されていることを特徴とするセキュアコンピュータデバイス。
【請求項４】
請求項２に記載のセキュアコンピュータデバイスにおいて、
グループ内の所与のモジュールの各々が、
特定のセッション用の鍵コンポーネントを指定されたセキュアエンクレイブ内で生成し、その鍵コンポーネントを指定されたセキュアエンクレイブ内に格納する工程と、
共有メモリを介して、セキュアエンクレイブのシールおよびシール解除メカニズムを使用して、グループ内の鍵コンポーネントを安全に交換し、それによりグループ内の他のモジュールからそれぞれの鍵コンポーネントを取得する工程と、
指定されたセキュアエンクレイブにおいて、グループ内の各モジュールからそれぞれの鍵コンポーネントを使用して合成鍵を個別に生成し、それにより合成鍵を使用したグループ内のセキュアデータ通信を可能にする工程とによって、
合成鍵を生成するように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項５】
請求項４に記載のセキュアコンピュータデバイスにおいて、
指定されたセキュアエンクレイブが、セキュアエンクレイブに署名する権限エンティティの署名アイデンティティに関連付けられ、
グループ内の所与のモジュールの各々が、鍵コンポーネントをシールして、シールした鍵コンポーネントを共有メモリにコピーする工程と、共有メモリから指定されたセキュアエンクレイブに他のモジュールのそれぞれのシールされた鍵コンポーネントをコピーする工程と、それぞれのシールされた鍵コンポーネントをシール解除する工程とによって、鍵コンポーネントを安全に交換するように構成されており、
所与のモジュールによるシール解除操作が成功することによって、有効性認証が提供されることを特徴とするセキュアコンピュータデバイス。
【請求項６】
請求項５に記載のセキュアコンピュータデバイスにおいて、
少なくとも１のライタモジュールが、合成鍵の生成中にフェーズを調整するようにさらに構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項７】
請求項１に記載のセキュアコンピュータデバイスにおいて、
入力周辺コンポーネントが、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データをＰＭＵに送信するように構成されたセキュアキーボードであることを特徴とするセキュアコンピュータデバイス。
【請求項８】
請求項１に記載のセキュアコンピュータデバイスにおいて、
出力周辺コンポーネントが、暗号化され処理された出力データをＰＭＵから受信し、暗号化され処理された出力データを復号して表示用に与えるように構成されたセキュアディスプレイであることを特徴とするセキュアコンピュータデバイス。
【請求項９】
請求項１に記載のセキュアコンピュータデバイスにおいて、
共有メモリが、グループ内の各モジュールが独立してアクセスするセキュアリングキャッシュによって提供されることを特徴とするセキュアコンピュータデバイス。
【請求項１０】
請求項１に記載のセキュアコンピュータデバイスにおいて、
新しいモジュールがグループに参加したとき、または一定時間が経過したときに、新しい合成鍵が生成されることを特徴とするセキュアコンピュータデバイス。
【請求項１１】
請求項１に記載のセキュアコンピュータデバイスにおいて、
少なくとも１のライタモジュールが、新しい入力データを書き込むときにのみ値が先に進むことが予期されるセッション単調カウンタを使用するように構成され、少なくとも１のリーダモジュールの各々が、読み出しセッション毎にセッション単調カウンタのローカルコピーを格納し、新しい読み出しセッションでは、セッション単調カウンタの現在の値を読み出して、以前に格納された値と比較するように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項１２】
請求項１に記載のセキュアコンピュータデバイスにおいて、
合成鍵を使用して共有メモリからの所与のモジュールの読み出しが成功したときに、合成鍵が所与のモジュールによって検証されることを特徴とするセキュアコンピュータデバイス。
【請求項１３】
請求項１に記載のセキュアコンピュータデバイスにおいて、
オペレーティングシステムによって実行可能な仮想化ローカル環境モジュールをさらに含み、オペレーティングシステムの状態が、セキュア環境モジュールによって提供されるセキュア環境と、仮想化ローカル環境モジュールによって提供される仮想化ローカル環境との間で切り替え可能であることを特徴とするセキュアコンピュータデバイス。
【請求項１４】
請求項１３に記載のセキュアコンピュータデバイスにおいて、
セキュアコンピュータデバイスに組み込まれ、仮想化ローカル環境とセキュア環境との間の切替時に物理的表示を提供するように構成された物理的インジケータをさらに含むことを特徴とするセキュアコンピュータデバイス。
【請求項１５】
請求項１３に記載のセキュアコンピュータデバイスにおいて、
セキュアコンピュータデバイスに組み込まれ、ユーザから環境を切り替える指示を受け取って、仮想化ローカル環境とセキュア環境との間の切替をトリガするように構成された物理的スイッチをさらに含むことを特徴とするセキュアコンピュータデバイス。
【請求項１６】
請求項１４に記載のセキュアコンピュータデバイスにおいて、
物理的インジケータが、入力周辺コンポーネントに組み込まれた視覚的インジケータであり、切替成功の通知を受信したときに視覚的表示を与えるように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項１７】
請求項１に記載のセキュアコンピュータデバイスにおいて、
オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成されたＢＩＯＳコンポーネントをさらに含むことを特徴とするセキュアコンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の主題は、概してコンピュータシステムの分野に関し、より具体的には、セキュアコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータデバイスやコンピュータネットワークは、悪意のあるソースからの攻撃を受けるケースが増えている。セキュリティ業界では、セキュリティ製品の新規性、効率性、機能セット、およびセキュリティへの全体的なアプローチの両面で急速な進歩を遂げているが、組織は、驚くべき速度でより高度な侵害を受け続けており、そのような攻撃を検出して軽減するために、多額のリソースを投資しなければならない場合がある。
【０００３】
既存のコンピュータセキュリティソリューションは、危殆化を防止または検出することを目的としている。しかしながら、コンピュータシステムが危険に曝され、継続的に侵害を受けた際に、現在のソリューションでは、通常、そのような状況下でユーザが作業できるようにするための追加のセキュリティ手順は提供されていない。
【発明の概要】
【０００４】
本開示の主題の特定の態様によれば、セキュアコンピュータシステムが提供され、このセキュアコンピュータシステムが、入力周辺コンポーネントおよび出力周辺コンポーネントに動作可能に接続されたプロセッサ・メモリユニット（ＰＭＵ）を備え、入力周辺コンポーネントが、ユーザからの入力データを受信して、入力データをＰＭＵに送信するように構成され、出力周辺コンポーネントが、処理された出力データをＰＭＵから受信するように構成され、ＰＭＵが、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にするための命令のセットを含み、ＰＭＵがさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成されるものであり、モジュールのグループが、入力周辺コンポーネントから入力データを受信し、合成鍵を使用して入力データを暗号化し、暗号化された入力データを共有メモリに書き込むように構成された少なくとも１のライタモジュールと、共有メモリから暗号化された入力データを読み出し、合成鍵を使用して暗号化された入力データを復号し、復号された入力データを使用するように構成された少なくとも１のリーダモジュールとを備える。
【０００５】
上記特徴に加えて、本開示の主題のこの態様に係るシステムは、技術的に可能な任意の所望の組合せまたは順序で、以下に記載されている特徴（ｉ）〜（ｘｖｉ）のうちの１または複数を含むことができる。
（ｉ）プロセッサは、セキュアエンクレイブをサポートすることができ、命令のセットが、複数のセキュアエンクレイブ命令を含むことができ、指定されたセキュア領域が、セキュアエンクレイブである。
（ｉｉ）少なくとも１のリーダモジュールは、オペレーティングシステムの環境の状態を監視するように構成された状態管理モジュールと、リモート接続を介して入力データをリモート作業環境に安全に転送し、処理された出力データをリモート作業環境から安全に受信するように構成されたセキュア環境モジュールと、処理された出力データを出力周辺コンポーネントに提供するように構成された出力管理モジュールとを含む群のなかから選択することができる。
（ｉｉｉ）グループ内の所与のモジュールの各々は、特定のセッション用の鍵コンポーネントを指定されたセキュアエンクレイブ内で生成し、その鍵コンポーネントを指定されたセキュアエンクレイブ内に格納する工程と、共有メモリを介して、セキュアエンクレイブのシールおよびシール解除メカニズムを使用して、グループ内の鍵コンポーネントを安全に交換し、それによりグループ内の他のモジュールからそれぞれの鍵コンポーネントを取得する工程と、指定されたセキュアエンクレイブにおいて、グループ内の各モジュールからそれぞれの鍵コンポーネントを使用して合成鍵を個別に生成し、それにより合成鍵を使用したグループ内のセキュアデータ通信を可能にする工程とによって、合成鍵を生成するように構成することができる。
（ｉｖ）指定されたセキュアエンクレイブは、セキュアエンクレイブに署名する権限を持つエンティティの署名アイデンティティに関連付けることができる。グループ内の所与のモジュールの各々は、鍵コンポーネントをシールして、シールした鍵コンポーネントを共有メモリにコピーする工程と、共有メモリから指定されたセキュアエンクレイブに他のモジュールのそれぞれのシールされた鍵コンポーネントをコピーする工程と、それぞれのシールされた鍵コンポーネントをシール解除する工程とによって、鍵コンポーネントを安全に交換するように構成することができる。所与のモジュールによるシール解除操作が成功すると、有効性認証が提供される。
（ｖ）少なくとも１のライタモジュールは、合成鍵の生成中にフェーズを調整するようにさらに構成することができる。
（ｖｉ）入力周辺コンポーネントは、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データをＰＭＵに送信するように構成されたセキュアキーボードであってもよい。
（ｖｉｉ）出力周辺コンポーネントは、暗号化され処理された出力データをＰＭＵから受信し、暗号化され処理された出力データを復号して表示用に与えるように構成されたセキュアディスプレイであってもよい。
（ｖｉｉｉ）共有メモリは、グループ内の各モジュールが独立してアクセスすることができるセキュアリングキャッシュによって提供することができる。
（ｉｘ）新しい合成鍵は、新しいモジュールがグループに参加したとき、または一定時間が経過したときに、生成することができる。
（ｘ）少なくとも１のライタモジュールは、新しい入力データを書き込むときにのみ値が先に進むことが予期されるセッション単調カウンタを使用するように構成することができる。少なくとも１のリーダモジュールの各々は、読み出しセッション毎にセッション単調カウンタのローカルコピーを格納し、新しい読み出しセッションでは、セッション単調カウンタの現在の値を読み出して、以前に格納された値と比較するように構成することができる。
（ｘｉ）合成鍵は、合成鍵を使用して共有メモリからの所与のモジュールの読み出しが成功したときに、所与のモジュールによって検証することができる。
（ｘｉｉ）本システムは、オペレーティングシステムによって実行可能な仮想化ローカル環境モジュールをさらに含むことができ、オペレーティングシステムの状態が、セキュア環境モジュールによって提供されるセキュア環境と、仮想化ローカル環境モジュールによって提供される仮想化ローカル環境との間で切り替え可能となっている。
（ｘｉｉｉ）本システムは、セキュアコンピュータデバイスに組み込まれ、仮想化ローカル環境とセキュア環境との間の切替時に物理的表示を提供するように構成された物理的インジケータをさらに含むことができる。
（ｘｉｖ）本システムは、セキュアコンピュータデバイスに組み込まれ、ユーザから環境を切り替える指示を受け取って、仮想化ローカル環境とセキュア環境との間の切替をトリガするように構成された物理的スイッチをさらに含むことができる。
（ｘｖ）物理的インジケータは、入力周辺コンポーネントに組み込まれ、切替成功の通知を受信したときに視覚的表示を与えるように構成された視覚的インジケータとすることができる。
（ｘｖｉ）本システムは、オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成されたＢＩＯＳコンポーネントをさらに含むことができる。
【０００６】
本開示の主題の他の態様によれば、セキュアコンピュータシステムの一部またはすべての態様を実行または操作するための１または複数のコンピュータ化された方法も提供され、本開示の主題のこの態様は、技術的に可能な任意の所望の組合せまたは順序で、システムに関して上述した特徴（ｉ）〜（ｘｖｉ）のうちの１または複数を、必要な変更を加えて含むことができる。
【０００７】
本開示の主題の他の態様によれば、命令のプログラムを有形に具現化する非一時的なコンピュータ可読記憶媒体が提供され、命令のプログラムは、コンピュータによって実行されると、セキュアコンピュータシステムの一部またはすべての態様を実施または操作するための１または複数のコンピュータ化された方法をコンピュータに実行させ、本開示の主題のこの態様は、技術的に可能な任意の所望の組合せまたは順序で、システムに関して上述した特徴（ｉ）〜（ｘｖｉ）のうちの１または複数を、必要な変更を加えて含むことができる。
【図面の簡単な説明】
【０００８】
本発明を理解し、それが実際にどのように実施され得るのかを理解するために、添付の図面を参照しながら、非限定的な例として実施形態を説明する。
【図１ａ】図１ａは、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムの概略ブロック図を示している。
【図１ｂ】図１ｂは、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムのＰＭＵに含まれる機能コンポーネントの概略ブロック図である。
【図２】図２は、本開示の主題の特定の実施形態に係る、モジュールのグループの概略的かつ例示的な実施形態を示している。
【図３】図３は、本開示の主題の特定の実施形態に係る、共有メモリのデータ構造の概略的かつ例示的な実施形態を示している。
【図４】図４は、本開示の主題の特定の実施形態に係る、モジュールのグループ内の所与のモジュールの各々によって合成鍵を生成する一般化されたフローチャートを示している。
【図５】図５は、本開示の主題の特定の実施形態に係る、共有メモリに関してモジュールのグループによって実行される操作の一般化されたフローチャートを示している。
【図６】図６は、本開示の主題の特定の実施形態に係る、オペレーティングシステムにおける環境の切替の一般化されたフローチャートを示している。
【図７】図７は、本開示の主題の特定の実施形態に係る、安全なクラウド環境の概略図を示している。
【図８】図８は、本明細書に開示された主題の特定の実施形態に係る、ライタモジュールとリーダモジュールとの間のメモリアクセス状態の切替を示す概略図を示している。
【発明を実施するための形態】
【０００９】
以下の詳細な説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者であれば、本開示の主題がそれらの具体的な詳細なしに実施され得ることが理解されるであろう。他の例では、本開示の主題が不明瞭とならないように、周知の方法、手順、コンポーネントおよび回路は、詳細には記載されていない。
【００１０】
特に明記されていない限り、以下の説明から明らかなように、本明細書の全体を通して、「受信」、「有効化」、「送信」、「表示」、「作成」、「共有」、「使用」、「暗号化」、「書き込み」、「読み出し」、「復号」、「監視」、「転送」、「提供」「生成」、「シール」、「シール解除」、「交換」、「格納」、「署名」、「調整」、「検証」、「切替」、「実行」などの用語を利用した説明は、データを操作および／または他のデータに変換するコンピュータの１または複数の動作および／または１または複数のプロセスを指し、上記データが電子、量などの物理的なものとして示され、かつ／または上記データが物理オブジェクトを示していることが理解されよう。「コンピュータ」という用語は、非限定的な例として、本出願で開示されるように、セキュアコンピュータシステムおよびその一部、並びに、処理及びメモリユニット（ＰＭＵ）およびそこに含まれるプロセッサを含む、データ処理能力を有する任意の種類のハードウェアベースの電子デバイスを網羅するように拡張的に解釈されるべきである。
【００１１】
本明細書で使用される「非一時的なメモリ」および「非一時的な記憶媒体」という用語は、本開示の主題に適した任意の揮発性または不揮発性コンピュータメモリを網羅するように拡張的に解釈されるべきである。
【００１２】
本開示の主題の実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載のように、本開示の主題の教示を実施するために様々なプログラミング言語を使用できることが理解されよう。
【００１３】
本明細書で使用される、「例えば」、「のような」、「例として」といった語句やそれらの変化形は、本開示の主題の非限定的な実施形態を説明するものである。本明細書における、「ある場合」、「いくつかの場合」、「他の場合」またはそれらの変化形への言及は、１または複数の実施形態に関連して記載された特定の特徴、構造または特性が、本開示の主題の少なくとも１の実施形態に含まれることを意味する。このため、「ある場合」、「いくつかの場合」、「他の場合」またはそれらの変化形の出現は、必ずしも同一の１または複数の実施形態を指すとは限らない。
【００１４】
特に明記されていない限り、別個の実施形態の文脈で説明されている本開示の主題の特定の特徴は、単一の実施形態において組み合わせて提供できることも理解されよう。反対に、単一の実施形態の文脈で説明されている、本開示の主題の様々な特徴は、別個に、または任意の適当なサブコンビネーションで提供することもできる。以下の詳細な説明では、方法および装置の完全な理解を提供するために、多数の具体的な詳細が記載されている。
【００１５】
このことを念頭に置いて図１ａを参照すると、本開示の主題の特定の実施形態に係るセキュアコンピュータシステムの概略ブロック図が示されている。
【００１６】
図１に示すシステム１００は、入力周辺コンポーネント（入力周辺機器とも称する）１０４および出力周辺コンポーネント（出力周辺機器とも称する）１０６に動作可能に接続された処理及びメモリユニット（ＰＭＵ）１０２を備えたセキュアコンピュータデバイス（安全なコンピュータデバイスとも称する）である。
【００１７】
特定の実施形態によれば、入力周辺コンポーネント１０４は、ユーザから入力データを受信し、その入力データをＰＭＵ１０２に送信するように構成された入力デバイスである。入力デバイスの非限定的な例としては、キーボード、ポインティングデバイス（例えば、マウス、タッチパッド、ポインティングスティック、タッチスクリーン、トラックボールなど）、およびメディア入力デバイス（例えば、デジタルカメラ、スキャナ、ウェブカメラ、レコーダなど）が挙げられる。本開示は、特定のタイプの入力デバイスに限定されるものではなく、任意の適切な１または複数の入力デバイスを、入力データを提供する目的で本明細書で利用できることに留意されたい。
【００１８】
いくつかの実施形態では、入力周辺機器１０４は、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データ（本明細書ではセキュア入力データとも称する）をＰＭＵに送信するように構成されたセキュアキーボードとすることができる。一実施形態では、セキュアキーボードは、キーロギング攻撃を防止する目的で、入力キーストロークにキーストローク暗号化アルゴリズムを適用するように構成されたキーボードコントローラ（例えば、プロセッサ）を含むことができる。例えば、ＲＳＡ、ＡＥＳ、ＳＨＡ、ＯＴＰおよび他の任意の適切なアルゴリズムなど、対称暗号化スキームまたは非対称暗号化スキームの何れかを使用することができる。一例として、対称暗号鍵は、入力キーストロークの暗号化と暗号化データの復号の両方のために、入力周辺機器と受信モジュール（例えば、入力管理モジュール）との間で共有することができる。
【００１９】
特定の実施形態によれば、出力周辺装置１０６が、処理された出力データをＰＭＵから受信するように構成された出力デバイスである。出力デバイスの非限定的な例としては、視覚表示デバイス（例えば、スクリーン、モニタなど）、音出力デバイス（例えば、スピーカ、ヘッドフォンなど）およびプリンタなどを挙げることができる。本開示は、特定のタイプの出力デバイスに限定されるものではなく、任意の適切な１または複数の出力デバイスを、出力データを提供する目的で本明細書で利用できることに留意されたい。
【００２０】
いくつかの実施形態では、出力周辺機器１０６は、ＰＭＵから暗号化され処理された出力データを受信し、暗号化され処理された出力データを復号して表示用に提供するように構成されたセキュアディスプレイとすることができる。
【００２１】
ＰＭＵ１０２は、図４〜図６を参照して後述するように、オペレーティングシステム１００に必要なすべての処理を提供するように構成されている。ＰＭＵ１０２は、プロセッサ１０８と、これに動作可能に結合されたシステムメモリ１１０とを備える。いくつかの実施形態では、システムメモリ１１０が、プロセッサに直接アクセス可能なメモリを指すことができる。プロセッサは、そこに格納された命令を読み出して、必要に応じて実行するように構成することができる。特定の実施形態によれば、システムメモリ１１０が、保護されたメモリ１１２および共有メモリ１１４を含むことができる。特に、プロセッサは、保護されたメモリを介して安全なデータの保存および実行を可能にするための命令のセットを含むか、または関連付けることができる。特定の実施形態では、保護されたメモリが、システムメモリ内の分離され暗号化された領域として実装することができる。実施形態の詳細は、異なるプラットフォームやアーキテクチャによって変わる可能性があることを理解されたい。また、本明細書で言及される「プロセッサ」という用語は、データ処理能力を有する任意の処理回路を包含するように拡張的に解釈されるべきであり、本開示は、そのタイプまたはプラットフォーム、またはそこに含まれる処理コアの数に限定されないことにも留意されたい。
【００２２】
いくつかの実施形態では、セキュアエンクレイブ（本明細書ではＳＥまたはエンクレイブとも称する）は、アプリケーションまたはプロセスに組み込まれた信頼できる実行環境であり、アプリケーションがＯＳプロセスのコンテキストにおいて、コードを実行し、内部にデータを格納するための（例えば、分離され、暗号化された）セキュア領域を提供する。セキュアエンクレイブは、例えばエンクレイブページキャッシュ（ＥＰＣ）から実行され、そこでは、セキュアエンクレイブ命令に関連付けられたプロセッサにより提供されるアクセス制御メカニズムを使用してデータが保護される。ＥＰＣは、エンクレイブコードが実行され、保護されたエンクレイブデータがアクセスされる場所となる。ＥＰＣは、プラットフォームの物理アドレス空間内に配置することができるが、ＳＥ命令を使用してのみアクセスすることができる。一例として、ＥＰＣは、保護されたメモリ１１２またはその一部として実装することができる。ＥＰＣは、多くの異なるエンクレイブからのページを含むことができ、ページの完全性および機密性を保護するためのアクセス制御メカニズムを提供する。ページキャッシュは、プラットフォームにおけるコヒーレント物理メモリに使用されるものと同様のコヒーレンシプロトコルを維持することができる。エンクレイブページは、ＯＳによってＥＰＣにロードすることができる。セキュアエンクレイブは、図２を参照して後でさらに詳細に説明される。
【００２３】
いくつかの実施形態では、プロセッサ１０８を、セキュアエンクレイブをサポートするプロセッサとすることができる。いくつかの実施形態では、セキュアエンクレイブをサポートするプロセッサが、インテルのソフトウェア・ガード・エクステンション（ＳＧＸ）を利用することができる。ＳＧＸは、対応するメモリ保護セマンティックおよび管理に使用される命令を有するプロセッサ上の新しい実行モードである。ＳＧＸは、保護されたメモリページに必要なコードとデータを入力し、コードとデータをエンクレイブ内でロックし、その中で測定を行うことによって、セキュアエンクレイブを作成することができる。プロセッサは、エンクレイブ内でコードを実行することができる。カーネル（リング０）またはハイパーバイザ（リング「−１」）、またはＳＭＭ（リング「−２」）またはＡＭＴ（リング「−３」）を含む他のエンティティは、エンクレイブに属するメモリページの読み出しまたは書き込みを行う権利を持たない。いくつかの実施形態では、セキュアエンクレイブをサポートするプロセッサが、例えば、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓのメモリ暗号化技術を利用することができる。
【００２４】
セキュアエンクレイブをサポートするプロセッサ（本明細書ではセキュアエンクレイブサポートプロセッサとも称する）は、セキュアエンクレイブを使用してセキュアデータの保存および実行を可能にするための複数のセキュアエンクレイブ命令を含む命令のセットのアーキテクチャを有するものとして認識することができる。
【００２５】
説明のみを目的として、以下の説明の特定の実施形態が、ＳＧＸおよびセキュアエンクレイブに関して提供される。実施形態は、同様に、類似のデータセキュリティおよびアクセス制御メカニズムを実装するために使用することができる他のプラットフォームおよび／またはベンダ技術、例えば、ＡＭＤおよびＡＲＭ（例えば、ＴｒｕｓｔＺｏｎｅ）に適用可能である。
【００２６】
ＰＭＵはさらに、ブートプロセス（パワーオンスタートアップ）中にハードウェアの初期化を実行し、オペレーティングシステムおよびプログラムのためのランタイムサービスを提供するように構成された基本入出力システム（ＢＩＯＳ）コンポーネント１３０を含むことができる。一実施形態では、ＢＩＯＳ１３０を、コンピュータのシステムボードにプリインストールされたファームウェアとして実装することができる。本明細書で言及されるＢＩＯＳは、あらゆる種類のシステム初期化およびプリブート環境ツールを網羅するように広く解釈されるべきであり、本開示は、それらの様々な実施形態および設計によって制限されるべきではないことに留意されたい。
【００２７】
場合によっては、ＢＩＯＳの改良版として、Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ（ＵＥＦＩ）を使用することができる。ＵＥＦＩは、マザーボードのフラッシュメモリに保存することも、別のストレージデバイスからロードすることもできる。ＵＥＦＩは、例えば、セキュアブート、またはメジャーブートなどをサポートすることができ、これは、マルウェアがブートプロセスを不正操作していないことを確認するために、オペレーティングシステムが有効性をチェックすることができることを意味している。また、他の方法を使用して、ブートおよび／またはプリブート環境の有効性を検証することも可能であり、ＴＰＭおよび／またはＨＳＭデバイスを使用して有効性の検証を容易にすることができる。それにより、高度な認証および検証（例えば、トークンベースのリモート承認ブート、ブート許可の取り消しなど）を実行することができるように、ＵＥＦＩファームウェア自体に合ったネットワーク機能をサポートすることができる。
【００２８】
特定の実施形態では、ＢＩＯＳコンポーネント１３０（例えば、ＵＥＦＩまたは他のプリブート環境ツールなど）は、ユーザの真正性、現在のユーザおよびセッションの承認、および起動しようとしているオペレーティングシステムなどの有効性の検証を提供するように構成することができる。これは、オペレーティングシステムが起動する前であっても、場合によっては暗号化されたセキュリティ対策を提供するためである。一実施形態では、ＢＩＯＳは、オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成することができる。一例として、ＢＩＯＳは、例えばクラウド環境などのリモート環境へのインターネット接続があるか否かを検証するように構成することができ、有効な接続がある場合にのみＯＳを起動することを決定することができる。さらに、有効な接続がある場合、ＢＩＯＳは、ＯＳを起動するために使用されるトークンをさらに要求することができる。別の例として、ＢＩＯＳは、ＯＳが特定の地理的境界内で起動する（または起動しない）ように、ＧＰＳ位置の検証を実施するように構成することができる。さらに別の例として、ＢＩＯＳは、組織による承認が与えられた場合にのみ、ブートプロセスを実行するように構成することができる。付与される承認のレベルに基づいてオペレーティングシステムが機能する複数の状態が存在し得る。
【００２９】
特定の実施形態によれば、セキュアコンピュータシステム１００は、オペレーティングシステム１００に必要な任意のデータを格納するように構成され得るストレージユニット（図示省略）を含むことができる。ストレージユニットは、システムに二次ストレージを提供することができ、例えば、ハードディスク、フラッシュメモリなどを含むことができる。また、システム１００は、ユーザ指定の入力を可能にするとともに、システム１００に関連する出力を与えるように構成されたグラフィカルユーザインタフェース（ＧＵＩ）も備えることができる。
【００３０】
いくつかの実施形態では、セキュアコンピュータデバイス１００は、物理的セキュリティの面でさらに強化することができる。一例として、セキュアコンピュータデバイスは、（図１ａに示すように）物理的な不正操作防止エンクロージャ１４０を備えることができる。例えば、コンピュータデバイスの外側ケーシングは、ＦＩＰＳ１４０−２レベル４のような業界の慣行および基準に基づいて不正操作に耐えることができ、例えば、デバイスの物理的な検査または分解に対する保護を提供し、そのような試みが行われた場合にデータの追加的な保護を提供することができる。追加的または代替的には、ユーザの介入または意図なしに悪用される可能性のある特定の周辺機器（例えば、カメラ、マイクロフォン、ワイヤレス／Ｂｌｕｅｔｏｏｔｈコンポーネントなど）へのアクセスを制御するために、１または複数のハードウェアスイッチを導入することができる。追加的または代替的には、セキュアコンピュータデバイスは、サイドチャネル攻撃を防止する目的で、ランダムな物理ノイズ（例えば、熱の偏り、電気フラックス、ＲＦノイズ、音響など）を発生させる物理的マイクロユニットである熱／電気ノイズ発生器を備えることができる。追加的または代替的には、物理的な不正操作防止エンクロージャ１４０は、エンクロージャ（例えば、外側ケーシング、ハードウェアスイッチなど）からの入力を受信し、不正操作イベントが存在するか否かを判定し、それに応じて保護手段を提供するように構成された回路をさらに含むことができる。
【００３１】
セキュアコンピュータデバイス１００は、例えば、ラップトップ、デスクトップなどの任意のタイプのスタンドアロンコンピュータデバイスであり得ることに留意されたい。図１ａでは、入力周辺装置１０４および出力周辺装置１０６がコンピュータデバイス１００の一部として統合されていることが示されているが、場合によっては、それらのコンポーネントは、分離されたユニットとして実装され、コンピュータデバイスに動作可能に接続され得ることが理解されるであろう。
【００３２】
当業者であれば、本開示の主題の教示が、図１ａに示すシステムに拘束されないことを容易に理解するであろう。同等の機能および／または変更された機能は、別の方法で統合または分割することができ、ソフトウェアとファームウェアおよびハードウェアとの適切な組合せで実装することが可能である。
【００３３】
ここで図１ｂを参照すると、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムのＰＭＵに含まれる機能的コンポーネントの概略ブロック図が示されている。
【００３４】
プロセッサ１０８は、システムメモリ１１０内に含まれる非一時的なコンピュータ可読メモリ上に実装されたコンピュータ可読命令に従って、複数の機能コンポーネント／モジュールを実行するように構成することができる。以下、そのような機能モジュールを、ＰＭＵ１０２に含まれるものとして言及する。
【００３５】
ＰＭＵ１０２に含まれる機能コンポーネントは、オペレーティングシステム（ＯＳ）１１６と、オペレーティングシステム１１６によって実行可能なモジュールのグループ１２０とを含むことができる。ＯＳ１１６は、セキュリティを強化する拡張機能（例えば、ＳＥＬｉｎｕｘ、ＧＲＳｅｃ）とともに、Ｌｉｎｕｘカーネルのトリムダウン／ストリップダウンバージョンを含むことができるセキュアベースＯＳとすることができる。いくつかの実施形態では、ＢＳＤ派生カーネル／ユーザランドを使用して評価することができ、また、例えば、ｃａｐｓｉｃｏｍ、ｐｌｅｄｇｅなどの更なる安全な機能も使用することができる。そのようなベースＯＳでは、直接使用されない各コンポーネントは、カーネルにコンパイル（あるいは動的にロード）されないが、特定の高度なセキュリティカーネル拡張機能は追加セキュリティのためにコンパイルされる。未使用のバイナリは、例えば、ユーザ空間から削除することができる。任意選択的には、ライブラリは、追加のコンパイル時セキュリティ機能で、必要最小限の機能セットに再コンパイルすることができる。ＣＯＷ（書き込み時コピー）ファイルシステムの個別のプールは、読み取り専用の連続スナップショットと、ブロックレベルのチェックサミングおよびファイルシステムのメタデータセマンティクスの事前使用とともに使用されている。これにより、検証やリカバリなどの主要な機能が有効になる。特に、図２を参照して後述するように、ＯＳは、ＯＳ自体（カーネルを含む）が危険に曝されても鍵の危殆化を防止する、セキュアエンクレイブに裏打ちされたデバイス暗号化を可能にする。
【００３６】
特定の実施形態によれば、モジュールのグループ１２０は、少なくとも１のライタモジュール１２２（本明細書ではライタとも称する）と、少なくとも１のリーダモジュール１２４（本明細書ではリーダとも称する）とを含むことができる。モジュールのグループ内の各モジュールは、保護されたメモリ内で実行される指定されたセキュア領域を含むことができる。モジュールのグループは、図２を参照して後述するように、認証を作成し、合成鍵を使用してアクセス可能な共有メモリを介して、入力データを安全に共有するように構成され、合成鍵は、命令のセットによって有効にされるように、指定されたセキュア領域間のデータ共有メカニズムを使用してグループ内で生成される。
【００３７】
グループ内のそれらのモジュールは、システムレベルのモジュール／プロセスと、相互に動作可能に接続されてデータを共有することができるアプリケーションレベルのモジュール／プロセスとの両方を網羅するように広く解釈されるべきであることに留意されたい。モジュールのグループは、その機能を説明する目的で一般的なレイアウトで示されているが、実際のシステムの層や構造を反映することを意図したものではない。それらモジュールの任意の適切な実施形態を、それらの特性および機能に応じて適用することが可能であり、本開示が、特定の実施形態に限定されないことが理解されよう。
【００３８】
このことを念頭に置いて図２を参照すると、本開示の主題の特定の実施形態に係るモジュールのグループの概略的かつ例示的な実施形態が示されている。
【００３９】
図２に示すように、一実施形態では、少なくとも１のライタモジュール１２２が、入力管理モジュール２０２を含むことができる。少なくとも１のリーダモジュール１２４は、状態管理モジュール２０４、セキュア環境モジュール２０６および出力管理モジュール２０８を含む群のなかから選択される１または複数のモジュールを含むことができる。各モジュールには、（各モジュールに示すように）指定されたセキュア領域が組み込まれており、そのセキュア領域は、モジュールがコードを実行してデータを格納するためのセキュア環境を提供する。エンクレイブは、保護されたメモリ内で実行することができる。上述したように、セキュアエンクレイブをサポートするプラットフォームの場合、セキュア領域は、ＥＰＣ領域内で実行されるセキュアエンクレイブを指すことができる。上述したように、ＥＰＣは、実行がエンクレイブ内ではないときにはアクセスすることができない別個のコンテナとして保持される保護された領域であり得る。エンクレイブに入ると、ＥＰＣ内のエンクレイブコードに制御を移すことができる。ＳＥ命令は、現在の特権レベルおよびＣＰＵモード（リング３／ユーザモード、リング０／カーネルモード、ＳＭＭ、ＶＭＭまたは別のエンクレイブ）に関係なく、（所与のモジュールの）所与のエンクレイブに属するエンクレイブメモリページが、所与のエンクレイブの外部から読み出しまたは書き込みできないことを保証するアクセス制御メカニズムを提供することができる。このため、各モジュールは、他のエンティティがアクセスできない指定されたエンクレイブを使用して、自己のコードおよびデータを安全に保護することができる。
【００４０】
本開示の主題の特定の実施形態によれば、上述したようなセキュアエンクレイブメカニズムは、セキュアデータ保護の本来の意図および使用に加えて、グループ内のモジュール間の信頼および認証を確立するために使用することができる。
【００４１】
具体的には、モジュールのグループは、認証を作成し、合成鍵を使用してアクセス可能な共有メモリ１１４を介して安全にデータ（例えば、入力データ）を共有するように構成することができる。特定の実施形態によれば、セキュアエンクレイブをサポートするプラットフォームの場合、合成鍵は、図４を参照して後述するように、セキュアエンクレイブ命令によって提供されるようなシールおよびシール解除メカニズムを使用して、グループ内の各モジュールにより提供されたそれぞれの鍵コンポーネントを用いて、各モジュールにより独立して生成される。
【００４２】
信頼の確立を可能にするセキュアエンクレイブメカニズムを紹介したところで、図５を参照すると、本開示の主題の特定の実施形態に係る、共有メモリに関してモジュールのグループによって実行される操作の一般化されたフローチャートが示されている。
【００４３】
共有メモリは、グループ内のモジュールの各々にアクセス可能である。少なくとも１のライタモジュール１２２は、入力周辺コンポーネント１０４から入力データを受信し（５０２）、図４を参照して説明したプロセスで生成された合成鍵を使用して、入力データを暗号化し（５０４）、暗号化された入力データを共有メモリ１１４に書き込む（５０６）ように構成することができる。入力周辺コンポーネント１０４から受信した入力データがセキュア入力データ（例えば対称鍵を使用して、セキュアキーボードによって暗号化された入力データ）である場合、ライタモジュール１２２は、セキュアキーボードと共有された対称鍵を使用してセキュア入力データをさらに復号し、合成鍵を使用して入力データを再暗号化し、再暗号化された入力データを共有メモリ１１４に書き込むように構成することができる。
【００４４】
少なくとも１のリーダモジュール１２４は、共有メモリからデータ（例えば、暗号化された入力データ）を読み出し（５０８）、合成鍵を使用して暗号化された入力データを復号し（５１０）、復号された入力データを使用する（５１２）ように構成することができる。
【００４５】
前述したように、少なくとも１のリーダモジュール１２４は、状態管理モジュール２０４、セキュア環境モジュール２０６および出力管理モジュール２０８を含む群のなかから選択される１または複数のモジュールを備えることができる。それらのリーダモジュールはすべて、上述した方法で共有メモリから読み出すことができる。ある場合は、それらの各々が、指示された／関連するデータを選択的に読み出すことができる。いくつかの実施形態によれば、状態管理モジュール２０４は、オペレーティングシステムにおける環境の状態、例えば、システムがセキュア環境または仮想化ローカル環境で動作しているか否かを監視するように、システムの状態情報を読み取るように構成することができる。環境の切替（例えば、仮想化ローカル環境からセキュア環境への切替、またはその逆）の場合、状態管理モジュール２０４は、図６を参照して後述するように、関連するモジュールおよびコンポーネント間のコーディネータとして機能するように構成することができる。
【００４６】
セキュア環境モジュール２０６は、暗号化された入力データ（ライタモジュール、例えば入力管理モジュール２０２によって暗号化された入力データ）を共有メモリから読み出し、暗号化された入力データを復号し、リモート接続を介してリモート作業環境に安全に入力データを転送し、処理された出力データをリモート作業環境から安全に受信するように構成することができる。一例として、セキュア環境モジュール２０６は、入力データが転送および処理されるリモートＰＣ、リモートサーバ、クラウドなどのリモート作業環境に接続するために使用することができるリモートデスクトップ（ＲＤＰ）クライアントのアプリケーションであり得る。このため、ある場合には、セキュア環境モジュールを、リモート環境モジュールとも称する。セキュア環境モジュール２０６は、上述したようなセキュアデータ共有および保護メカニズムを利用して常に安全な作業環境を維持するセキュアエンクレイブ認識ランタイム環境である。
【００４７】
ＲＤＰクライアントとリモート作業環境との間のセキュア通信は、様々な方法で実行することができる。例えば、エンドツーエンド暗号化、ＴＬＳ／ＳＳＬ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ／Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）暗号化、ワンタイムパスワードおよび他の任意のプロプライエタリアルゴリズムなどの暗号化スキームを使用することができる。これらの暗号化スキームは、非限定的な例として、トランスポートおよび／またはペイロードの暗号化などに使用することができる。いくつかの実施形態では、デバイスとリモートエンティティとの間のリモート認証プロセスを確立することができ、これについては図７を参照して後述する。
【００４８】
出力管理モジュール２０８は、処理された出力データを出力周辺コンポーネント１０６に提供するように構成することができる。一例として、処理された出力データがＲＤＰクライアントによってリモート作業環境から受信されると、ＲＤＰクライアントは、出力データを共有メモリに書き込むことができ、出力管理モジュール２０８は、そこから出力データを読み出して、出力周辺機器に提供する（例えば、表示用に与える）ことができる。このような安全な出力パスの実施形態については、以下に詳細に説明する。
【００４９】
このようなセキュア作業環境では、入力周辺コンポーネントからセキュア入力データを受信すると、このデータはモジュールのグループ間で安全に共有することができ（セキュアエンクレイブに基づく安全なデータ共有および保護メカニズムによって有効化され）、それにより入力から出力までのプロセス全体がエンドツーエンドで安全に保護されることが保証される。そのような保護は、カーネルレベル／ＳＭＭ／ＭＥ攻撃に対して有効である。
【００５０】
ここで図４を参照すると、本開示の主題の特定の実施形態に係る、モジュールのグループ内の所与の各モジュールにより合成鍵を生成する一般化されたフローチャートが示されている。
【００５１】
上述したように、所与の各モジュールには、モジュールがコードを実行してデータを格納するためのセキュア環境を提供する、指定されたセキュアエンクレイブが組み込まれている。モジュールのグループ内の各所与のモジュールは、その指定されたセキュアエンクレイブで特定のセッションのための秘密鍵コンポーネントを生成し（４０２）、その鍵コンポーネントをそこに格納するように構成することができる。鍵コンポーネントは、ランダムに、例えば、一時的なノンスとして生成することができる。鍵コンポーネントは生成されて、セキュアエンクレイブ内に格納されるため、ＳＥ命令によって提供されるアクセス制御メカニズムにより、所与のモジュール自体以外の他のエンティティは、この鍵情報にアクセスすることができない。
【００５２】
所与の各モジュールは、共有メモリを介してグループ内で自己の鍵コンポーネントを安全に交換して（４０６）、グループ内の他のモジュールからそれぞれの鍵コンポーネントを得ることができる。特定の実施形態によれば、この鍵交換は、セキュアエンクレイブのシールおよびシール解除メカニズムを使用することによって可能になる。
【００５３】
シールは、エンクレイブデータをディスクに永続的に保存するために暗号化して、エンクレイブデータの機密性を保護し、エンクレイブがＥＰＣにロードされたときに不正操作を検出するためのプロセスを指している。これにより、（例えば、電源イベントやアプリケーション自体によって）エンクレイブが破壊された場合に、エンクレイブデータを取り出し、その後に元に戻すことが可能になる。シールは、ある意味で、特定のプラットフォームとエンクレイブに固有であり、他の如何なるエンティティにも知られていない秘密シール鍵を使用した暗号化とみなすことができる。シールには、異なるエンクレイブアイデンティティを使用した様々な方法がある。エンクレイブに関連付けられたアイデンティティの１つは、配布前にエンクレイブに署名する権限を持つエンティティ（開発中の会社など）が提供する署名アイデンティティである。この値はＭＲＳＩＧＮＥＲと呼ばれ、同じ権限を持つエンティティで署名されたすべてのエンクレイブで同じになる。このため、これらのエンクレイブがすべて同じ権限を持つエンティティで署名されている限り、同じシール鍵を異なるエンクレイブに使用することが可能になる。
【００５４】
本開示の主題の特定の実施形態によれば、グループ内の複数のモジュールに指定されたセキュアエンクレイブは、すべて同じ権限を持つエンティティ（例えば、モジュールの所有者／プロバイダ）によって署名されるとともに、権限を持つエンティティの署名アイデンティティにすべて関連付けられている。署名アイデンティティを使用してシールされた所与のセキュアエンクレイブのエンクレイブデータは、所与のセキュアエンクレイブと同じ署名アイデンティティを共有する有効で適切にインスタンス化されたセキュアエンクレイブによってのみ、同一プラットフォーム上でのシール解除に成功することができる。このため、署名アイデンティティを使用したシールおよびシール解除メカニズムは、同じ権限を持つエンティティによって所有／生成される異なるモジュールの複数のエンクレイブ間で安全にエンクレイブデータを共有することを可能にし、それにより、グループ内のモジュール間でハードウェアベースの認証および信頼を確立することができる。
【００５５】
上述した鍵コンポーネントの安全な交換（４０６）に戻ると、グループ内の１つのモジュール（例えば、ライタモジュール）は、具体的には、交換プロセス中の様々なフェーズ／ステージを調整するためのコーディネータモジュールとして機能することができる。第１のステージでは、所与の各モジュールは、鍵コンポーネントをシールし（４０８）、シールされた鍵コンポーネントを共有メモリにコピーすることができる。すべてのモジュールからのすべてのシールされた鍵コンポーネントが共有メモリにコピーされると、コーディネータモジュールは、ステージの変更をグループに通知することができ、所与の各モジュールは、他のモジュールのそれぞれのシールされた鍵コンポーネントを共有メモリから自己の指定されたセキュアエンクレイブにコピーし（４１０）、指定されたセキュアエンクレイブ内のそれぞれのシールされた鍵コンポーネントをシール解除する（４１２）ように構成することができる。所与のコンポーネントによるシールされた鍵コンポーネントのシール解除に成功すると、それが有効で信頼でき、不正操作されていないエンティティであることが証明される。
【００５６】
グループ内の他のすべてのモジュールからのすべての鍵コンポーネントが正常にシール解除されると、所与の各モジュールは、指定されたセキュアエンクレイブ内で、グループ内の各モジュールからのそれぞれの鍵コンポーネントを使用して合成鍵を独立して生成することができる（４１４）。合成鍵は、グループ内のすべてのモジュールのすべての鍵コンポーネントから導出される必要があることに留意されたい。アクティブな参加モジュールの各々は、合成鍵を作成するために使用される鍵コンポーネントを提供する必要があり、それによって潜在的なリプレイ攻撃を防ぐことができる。また、各モジュールは、共有メモリからコピーされた他のモジュールの鍵コンポーネントと、ローカルに保存された自己の鍵コンポーネントとを使用して、合成鍵を生成することにも留意されたい。
【００５７】
各モジュールによって合成鍵の個別の生成が完了すると、コーディネータモジュールは、ステージの変更をグループに通知することができ、グループは、図５を参照して上述したように、合成鍵を使用して、グループ内で安全なデータ通信を開始することができる。一実施形態では、ライタモジュールが、自ら生成した合成鍵を用いてデータを暗号化し、暗号化されたデータを共有メモリに書き込むことができる。リーダモジュールが、共有メモリから暗号化されたデータを読み出すときに、自己生成した合成鍵を使用して暗号化されたデータを正常に復号することができる場合、それは必然的に、自己の鍵コンポーネントが合成鍵の生成に使用されたことを示しており、それにより、他のモジュールの有効性およびセキュリティの検証を提供することができる。
【００５８】
特に、本開示の主題では、単にデータを共有するのではなく、署名アイデンティティを用いたシールおよびシール解除メカニズムを用いて、信頼性およびセキュリティを確立することに留意されたい。シールされたデータを正常に送信し、新たに暗号化されたデータを（合成鍵を用いて）検査することにより、正常なシール解除動作を控除することができる。すべての参加モジュールで正常なシール／シール解除動作を控除するという概念は、有効で信頼できる不正操作されていないエンクレイブだけがこれを実行することができるため、作られる信頼である。このため、この信頼に対するハードウェアアンカーが確立される。
【００５９】
特定の実施形態によれば、モジュールのグループ内の参加モジュールの数は、制限も、事前設定もされていない。任意の時点で、新しいモジュールがグループに参加することができ、その際に、上述したような同様のプロセスで、現在参加しているすべてのモジュールから（新しい参加モジュールの要求に応じて）新しい合成鍵が生成され、すべての参加者の状態を効果的に検証し、リプレイ攻撃を防止することができる。鍵の再生成は、鍵のリフレッシュや鍵のロールオーバーとも称する。一例として、新しい参加モジュールが、新しい合成鍵を独立して生成した後、新しい合成鍵を使用してデータを正常に読み出すことができる場合、これは、新しいモジュールと残りのメンバとの間の鍵交換が正常に行われ、その鍵コンポーネントのみが新しい合成鍵に使用されることを意味している。別の例として、新しい参加モジュールが、新しい合成鍵を独立して生成した後、信頼できないエンティティから古い鍵を使用した再生メモリを受信した場合、新しい参加モジュールは、それが有効で信頼できるエンティティからのものではないことを確認することができる。更に別の例として、鍵の変更時に、ライタモジュールは、モジュールから提供された鍵コンポーネントを検査し、現在動作しているモジュールを検証することができる。
【００６０】
いくつかの実施形態では、合成鍵は、鍵の鮮度を強制して鍵の消耗を避ける目的で、所与の時間間隔毎に繰り返し再生成されることを要求されることもある。任意選択的には、鍵コンポーネントに基づいて合成鍵を生成するために使用されるポリシー／アルゴリズムも変更することができ、予め設定されたオプションのセットから選択することができる。その結果、鍵コンポーネントが変更されないままであっても、そこから得られる実際の合成鍵が異なり得るため、追加のセキュリティ保護が提供される。既存のメンバモジュールはいつでも、現在の合成鍵に影響を与えることなく、グループから離脱することができる。
【００６１】
特定の実施形態によれば、上述した新規加入モジュールのリプレイ保護に加えて、継続中のリプレイ保護も提供される。一例として、プロバイダとしてのライタモジュールは、セッション単調カウンタを使用することができ、このカウンタは、書き込みセッションの開始時に開始し、新しいデータユニットが提供されると、このカウンタを連続的にインクリメントすることとなる。この単調カウンタは、データユニット／要素毎のカウンタである。コンシューマとしてのリーダモジュールは、データを読み出すときにこのカウンタ値を読み取ることができ、この値をローカルに保存することができる。このカウンタ値は先にのみ進むことが予期されるため、リーダモジュールによって現在読み取られた値が以前に保存された値よりも小さい場合、リーダモジュールはデータが危殆化していると仮定することができる。さらに、リーダモジュールは、セッション単調カウンタを継続的に追跡する。有効なインクリメントカウンタは、有効なライタモジュールを示すことができる。
【００６２】
図３を参照すると、本開示の主題の特定の実施形態に係る共有メモリのデータ構造の概略図が示されている。
【００６３】
共有メモリ１１４は、非限定的な例示として、セキュアリングキャッシュ３００のデータ構造として図示されている（なお、メモリがリングとして物理的に作成されることはないため、リングキャッシュ３００は表示目的のためだけに図示されていることに留意されたい。本明細書に記載されているのと同等の機能を有する線形表示を、実施形態で使用することができる。いくつかの実施形態では、リングキャッシュの実施形態はオーバーフローに対する保護を実装する必要があることに留意されたい）。いくつかの実施形態では、複数のリーダおよび複数のライタをサポートし、データを読み出してもデータが削除されないような適切なデータ構造など、別のデータ構造を使用することができる。
【００６４】
リング構造は、実際の開始点または終了点を持たず、データはリングの周りをループすることができる。リングキャッシュに格納された基本的なデータ要素は、メタデータ３０２およびペイロード３０４を含むデータパケット３０１として図示されている。メタデータおよびペイロードは、ともに暗号化することも、ペイロードのみを暗号化することもできる。メタデータ３０２は、例えば、記述子、タイムスタンプ、パケットカウンタなどのオーバーヘッド情報を含むことができる。ペイロード３０４は、運ばれる実際のデータを含む。データパケットは、それらを実行するプロトコルに応じて、構造および機能が異なることがある。データパケットは、読み取られるだけで、消費されない（すなわち、削除されない）。完全な円に達すると、最も古いデータパケットが上書きされる。リングキャッシュは、上書きされる前にリーダがデータを読み取るのに十分な時間を持つことができるように、十分な大きさを持つように構築することができる。一実施形態では、リングキャッシュが、１００〜２００回のキーストロークを収容できる大きさにすることができる。リングキャッシュのサイズは、例えば、入力タイプおよびスループットなどの要因に応じて変化し得ることに留意されたい。入力周辺機器が、例えば、マイクロフォンである場合、リングキャッシュは、時間単位でサイズ設定することができる。
【００６５】
特定の実施形態によれば、データパケットに加えて、リングキャッシュは、ライタデータ（例えば、最後の書き込み位置３０６、ライタアクティブフラグなどを含む）、リーダデータ（例えば、リーダアクティブフラグなどを含む）、暗号化処理データ（シールされた鍵コンポーネント、鍵ロールオーバーフラグなどを含む）およびリングメタデータを含む、グローバルデータを運ぶことができる。
【００６６】
上述したように、（ライタデータの一部としての）最後の書き込み位置３０６を示すマーカーが提供される。最後の書き込み位置は、すべての書き込み状態の最後にライタによって更新される。ライタマーカーは、最後の書き込み位置を示す公開値である。ライタは、書き込み動作毎にその値を更新する。各リーダは、この値を個別に追跡して、ライタの動作の追跡を継続することができる。
【００６７】
各リーダは、他に影響を与えることなく、独立してデータを読み出すことができる。各リーダは個別にライタを追跡し、例えば最後の読み出し位置を追跡することで、最後の読み出し以降に何のどれだけの新しいデータが書き込まれたかを判定することができる。最後の読み出し位置は、この特定のリーダが最後に読み出した位置を示す秘密の値である。これは公開されておらず、各リーダモジュール内で内部保持される。リーダがグループに参加すると、最後の書き込み位置を最後の読み出し位置として記録し、ライタの追跡を開始する。リーダが新しい時刻に読み出したとき、内部に保存されている最後の読み出し位置と現在の公開されている最後の書き込み位置とを比較し、それらが等しくない場合、カウントの差は、最後の読み出しからライタが行った新たな書き込みを反映している。読み出し中、各リーダは、最後の読み出しから書き込まれた一部またはすべての新しいデータパケットを読み出すことを決定することができる。
【００６８】
いくつかの実施形態では、ライタおよびリーダは、共有メモリを介してデータ共有システム内で互いに疎結合されていると見なすことができる。ライタは、リーダから独立して連続的にデータを書き込むことができ、一方、リーダは、他のリーダから独立して連続的にデータを読み出すことができる。これは、メモリアクセス状態（モードとも称する）スイッチングを使用することによって達成することができ、それによって、本開示の主題の特定の実施形態に係る図８に示すように、同期化のためのロックメカニズムの使用を回避することができる。
【００６９】
図８に示すように、以下の状態を使用することができる。
・初期状態
−現在、リーダまたはライタ状態ではない。
・リーダ状態
−すべてのリーダが、リーダ状態への状態変更を開始することができる。
−実際の状態変更は、ライタ状態でない場合は直ちに、または初期状態に変更した後に行われる。
−ライタ要求フラグが立っている場合、新しいリーダはライタ状態が完了するまで待機する。
−複数のリーダが同時に、または次々に変更を開始することができる。最後のリーダが完了すると、リーダ状態が初期状態に戻る。
−リーダは独立していて、互いに干渉することはなく、ライタとのみ連携する。
・リーダ待機状態
−ライタフラグに遭遇した新しいリーダは、ライタが作業を完了できるように待機状態に入る。
・ライタ状態
−ライタは、ライタ要求フラグを発することにより、いつでも書き込み状態への変更を要求することができる。実際の状態変更は、すべてのアクティブなリーダが完了し、状態が初期状態に変更されたときに発生する。
・ライタ待機状態
−ライタは、書き込み状態に入る前に、すべてのアクティブなリーダが完了するのを待つ。
【００７０】
ライタは、すべての書き込み状態で、０、１またはそれ以上のデータパケットを書き込むことができる。リーダは、新しいデータの量が利用可能であると仮定して、すべての読み出し状態で、０、１またはそれ以上のデータパケットを読み出すことができる。リーダ状態／モードに入るとき、リーダはタイムスタンプを作成することができる。読み出しモードに入る前に、リーダはタイムスタンプを確認し、状態の最大時間に達している場合、リーダはライタが書き込み状態に入るのを待って、ライタのスターベーショを防ぐ。複数のリーダは、ライタが書き込みを待機していない限り、読み出し状態に変更することによって、または読み出し状態を継続することによって、同時に読み出しを開始することができる。
【００７１】
いくつかの実施形態では、リングキャッシュに書き込みを行っている複数のライタが存在し得る。一例として、２つの入力管理モジュールが存在することができ、各々がそれぞれの入力周辺機器コンポーネントに動作可能に接続されている。２つの入力周辺機器は、同じ種類（例えば、２つのキーボード）または異なる種類（例えば、１つのキーボードと１つのマウス）の何れであってもよい。そのような場合、各データパケットは、ライタの発信元を示す追加のメタデータを含む必要がある。
【００７２】
上述したリングデータ構造、その機能、およびそれに関連したライタおよびリーダの動作は、例示的な目的のために示されており、本開示を如何なる形でも制限するように解釈されるべきではないことに留意されたい。他の任意の適当なデータ構造および／または参加者の動作を、上記に代えてまたは加えて適用することができる。
【００７３】
図６を参照すると、本開示の主題の特定の実施形態に係る、オペレーティングシステムにおける環境の切替の一般化されたフローチャートが示されている。
【００７４】
いくつかの実施形態では、セキュア環境モジュール２０６が上述したセキュアデータ共有および保護メカニズムを使用して作動しているときに提供されるセキュア環境以外に、セキュアコンピュータデバイスのオペレーティングシステムによって実行可能な仮想化ローカル環境モジュール（図示省略）も存在することができる。このモジュールは、変更されていないサードパーティ製のオペレーティングシステム（例えば、ＷｉｎｄｏｗｓのＶＭ、Ｌｉｎｕｘ、または他の任意のプロプライエタリまたはレガシーＯＳなど）をユーザに提供する。このコンポーネントのインスタンスは複数存在する可能性があり、すべてが異なるバージョン、異なるアプリケーションを実行し、ハードウェアエミュレーション、接続性およびアタッチメントのレベルが様々である可能性がある。
【００７５】
このモジュールは、セキュアエンクレイブ認識環境ではなく、上述したセキュアデータ共有および保護メカニズムがこの環境では提供されていないという意味で、上述したセキュア環境モジュールと比較して、安全性が相対的に低くなる。仮想化ローカル環境モジュールとセキュア環境モジュールは、互いに暗号的に分離されており、相互排除して実行することができる。さらに、セキュア環境では、永続的なデータがリモートで保存されるのに対し、仮想化ローカル環境では、そのようなデータが暗号化されてローカルディスクに保存されることに留意されたい。ここでは、「永続的なデータ」は、一時データ（例えば、それを表示するプロセス中に一時的に利用可能なデータ）を除外することができる。
【００７６】
オペレーティングシステムが起動すると、２つの環境の何れかに接続するための統合されたユーザインタフェースがユーザに提示される。このとき、例えば、システム内で実行されている２つのモジュール、入力管理モジュールと状態管理モジュールがあり、それらが一緒にモジュールのグループを構成している。それらの２つのモジュールは、上述したように合成鍵について合意し、共有メモリ（例えば、セキュアリングキャッシュ）を介して鍵を使用してデータの共有を開始することができる。ここで、仮想化ローカル環境（例えば、Ｗｉｎｄｏｗｓ  ＶＭ）に入るようにユーザから指示を受信したと仮定すると、仮想化ローカル環境モジュールが作動する。仮想化ローカル環境でも、セキュアリングキャッシュは上述した方法で動作しているが、仮想化ローカル環境モジュール（Ｗｉｎｄｏｗｓ  ＶＭなど）にはアクセスできないことに留意されたい。仮想化ローカル環境で作業しているとき、入力管理モジュールは、サイドチャネル攻撃を防ぐために、暗号化されたデータを（例えば、セキュアリモート作業環境７００に）継続的に送信することができる。
【００７７】
仮想化ローカル環境からセキュア環境への切替指示をユーザから受信すると（６０２）、リングからデータを読み出して環境の状態を監視している状態管理モジュールは、仮想化ローカル環境モジュールに、現在の状態を一時停止して保存するように指示することができる（６０４）。いくつかの実施形態では、環境間の切替の指示は、例えば、ボタン、またはキーボード上のスイッチボタンなど、セキュアコンピュータデバイスに組み込まれている／統合されている物理的なスイッチを介して、または後述するように、切替が成功したときに追加的に物理的な表示を提供することができる物理的コンポーネント（例えば、物理的インジケータ）を介して、ユーザが与えることができる。セキュアスイッチは、モジュールのグループ内の既存のモジュールを介して、または指定されたセキュアエンクレイブを有する指定されたモジュールを介して、セキュアドライバを使用して実装することができる。いくつかの他の実施形態では、環境間の切替の指示は、キーボードからのキーストロークの組合せを使用することによって与えることができる。状態管理モジュールからの指示を受けると、（例えば）Ｗｉｎｄｏｗｓ  ＶＭのＶＭマネージャは、現在の状態のスナップショットを取得することができ、このスナップショットは、保存して、後で特定の時点に戻すために使用することができる。その後、状態管理モジュールは、入力管理モジュールに、非セキュア環境からセキュア環境への切替を指示する（６０６）。入力管理モジュールは、状態管理モジュールからの指示を受けると、Ｗｉｎｄｏｗｓ  ＶＭへの安全ではない模擬入力データの送信を停止する。
【００７８】
また、状態管理モジュールは、新しいメンバとしてモジュールのグループに参加するセキュア環境モジュール（例えば、ＲＤＰクライアント）をロードして（６０８）、鍵のロールオーバーをトリガする。新しい合成鍵は、モジュールのグループ（例えば、セキュア環境モジュール、入力管理モジュールおよび状態管理モジュール）の間で生成され、グループ内でのその後のセキュアデータ共有に使用される。切替が正常に完了すると、状態管理モジュールは、切替が正常に完了したことをユーザに物理的表示を与えるように指示することができる（６１０）。例えば、キーボードまたはコンピュータデバイスの他の適当なコンポーネントに取り付けることができる視覚的インジケータ、ＬＥＤまたは音によるインジケータ（例えば、バイブレータなど）などのような、セキュアコンピュータデバイスに組み込まれた物理的コンポーネント／インジケータは、切替が成功したという通知を受け取ったときに、例えば、光、ミニスクリーン、ブザー、音などで物理的な表示を与えることができ、それにより、ユーザは切替が実際に行われたという表示を得ることができる。これにより、悪意のあるコンポーネントが切替を偽装してシステムの制御を乗っ取ろうとする企てから効果的に保護することができる。
【００７９】
図７を参照すると、本開示の主題の特定の実施形態に係るセキュアクラウド環境の概略図が示されている。
【００８０】
現在のところ、真のゼロ知識、すなわち、例えば、ベンダには知られていない、ユーザにより提供される暗号鍵のような機密データを提供するクラウドソリューションベンダは非常に少ない。少数の既存のソリューションの中では、ゼロ知識は、アプリケーションの限られたサブセット（例えば、セキュアファイルストレージ、セキュア電子メールなど）でのみ提供される場合がある。仮想コンピューティングを確かに提供する殆どのクラウドプロバイダでは、ユーザはベンダとハイパーバイザ（仮想化を担うソフトウェアスタック）を盲目的に信頼することを余儀なくされている。ハイパーバイザを信頼することは、セキュリティ上の重大な欠点となる。クラウドプロバイダで実行されている仮想化オペレーティングシステムは、そのすべてのメモリ空間（ユーザ内での特権分離に関係なく）、実行中のプロセス、データ等とともに、ハイパーバイザに対して完全に透過的である。クラウドプロバイダに勤務する悪意のある従業員、プロバイダへの召喚状、ハイパーバイザレベルでの危殆化、またはＶＭ間の危殆化など、悪意のある活動はすべて、クライアントのＶＭ（およびデータ）を大きなリスクに曝す。
【００８１】
セキュアデータ共有および保護メカニズムによって可能になる、セキュア作業環境とエンドツーエンドのデータ保護を備えた上述したセキュアコンピュータシステムを使用することで、真のゼロトラストクラウド環境を実現することができる。いくつかの実施形態では、ユーザは、すべてのシステム構成およびユーザ情報を統合ファイル（例えば、ＩＳＯファイル）で提供することができ、これを使用して、安全な物理的環境で、ユーザの要求に応じてセキュアコンピュータデバイス７００をインストールおよびカスタマイズすることができる。このようなセキュアコンピュータデバイスは、上述したように、セキュアデータ共有および保護スキームを可能にするように既に予め構成されていることに留意されたい。このセキュアコンピュータデバイス７００がカスタマイズされて閉じられると、物理的な不正操作防止手段を使用して、例えばハードウェアスイッチを使用して、このコンピュータデバイスが再び開かれることを防止することができる。その後、このセキュアコンピュータデバイス７００は、クラウドに配置することができ、安全なリモート作業環境をユーザに提供するために使用することができる。クラウドプロバイダからのエンティティは何れも、デバイスを不正操作したり、そこに格納されたデータにアクセスしたり、あるいはそのデータ上で行われた計算にアクセスしたりすることはできない。世界中のどこにいても、ユーザは、ローカルセキュアコンピュータ（例えば、セキュアコンピュータシステム１００）を使用して、以前に構成されたように、自己の秘密資格情報を用いて、セキュアコンピュータデバイス７００に接続することができる。さらに、リモートコンピュータは、クラウド内の他のコンピュータに接続するために使用することができ、それにより、エンドユーザがコンピュータシステム１００を使用してアクセスする組織的なネットワークとして機能する相互接続されたリモートコンピュータのネットワークを形成することができる。
【００８２】
ローカルセキュアコンピュータ１００と安全なリモート作業環境７００との間のセキュア通信は、様々な方法で実施することができる。ここで、本開示の主題の特定の実施形態に従って、ローカルデバイスとリモートエンティティとの間でリモート認証を確立する例示的な方法を説明する。リモート認証を確立するために、かつ／またはローカルデバイスとリモートエンティティとの間のセキュア通信を可能にするために、ＴＬＳ／ＳＳＬ、ＶＰＮ、ＲＤＰなどの他の既知のプロトコルまたはプロプライエタリプロトコルを使用することができる。
【００８３】
デバイスの作成時には、クライアント１００とサーバ７００との間で予め共有された秘密がシールされており、よってリモート認証の必要性を回避することができる。これは、規定された安全なセキュア本番環境で行うことができ、その環境では、システムが危険に曝されることはなく、悪意のあるソフトウェアやその他のセキュリティ上のリスクなしに、デバイスのプロビジョニングを行うことができる。
【００８４】
具体的には、この特定のデバイスをサーバに認識させることができる固有の証明書を作成することができる。この特定のデバイスの公開証明書は、サーバに保存することができる。デバイスには、この特定のデバイスの証明書（公開鍵と秘密鍵）と、サーバの公開証明書を保存することができる。その後、この情報は、（例えば、セキュアエンクレイブ固有のシールメカニズムを使用して）シールすることができる。すなわち、この特定のデバイスだけがこの情報のシールを解除することができ、それを、信頼できるエンティティによって署名された適切にインスタンス化されたセキュアエンクレイブ上でのみ行うことができる。デバイスを不正操作したり、ハードウェアのプロパティを変更したり、シールされたデータを編集または削除したりすると、シールが破壊され、デバイスの認証に失敗する。このデータがなければ、このデバイスは危険に曝されていると見なされて、使用できなくなり、安全な本番環境で新しい識別情報を使用して再プロビジョニングする必要がある。
【００８５】
例示的なリモート認証フローは、次のように実行することができる。リモートセキュリティをネゴシエートする際には、暗号化されたチャネルを確立した後に、クライアントは認証データをシール解除し、保存されたサーバ証明書を使用してサーバを認証することができる。認証された場合、クライアントは、検証のためにこのデバイス固有の署名付き証明書をサーバに送信することができる。正しい署名付き証明書を受信したサーバは、データが適切にシール解除されたと仮定することができる。これは適切にインスタンス化されたセキュアエンクレイブを持つ適切なデバイスでのみ行うことができる。上記認証プロセスは、Ｉｎｔｅｌが提案したように、リモート認証と同様に安全であると想定されている。また、双方向のリモート認証のためのシンプルで安全な方法を提供し、特別なサーバや認証サービスの登録と使用を必要としない。また、各デバイスが個別に認証および認識されるため、危険に曝されていると仮定した場合に、特定のデバイスを無効化するオプションを提供することもできる。
【００８６】
特定の実施形態によれば、図３および図５を参照して上述したようなモジュールのグループ間で入力データを安全に共有するために使用されるセキュアリングキャッシュ３００の実施形態と同様のリングデータ構造を、関連するエンティティおよびモジュール間で処理された出力データを安全に共有するために使用することができ、よって、出力データに転送するための安全な出力パスを形成することができる。一実施形態では、第２のリングキャッシュは、同様の実施メカニズムで作成することができ、処理されたデータを出力するために関連するモジュールの第２のグループの間で使用することができる。モジュールの第２のグループは、少なくとも、例えば、リモート環境から処理されたデータを受信して第２のリングキャッシュに書き込むためのライタモジュールとして機能することができるＲＤＰクライアントモジュールと、第２のリングキャッシュから処理されたデータを読み出すためのリーダモジュールの１つとして機能することができる出力管理モジュールとを含むことができる。第２のグループに参加する他のモジュールが存在する可能性がある。別の実施形態では、同じセキュアリングキャッシュ３００を、入力データおよび出力データの両方を共有するために使用することができ、その場合、リングに書き込む２以上のライタ（例えば、入力管理モジュールおよびＲＤＰクライアント）が存在する可能性があり、よって調整する必要がある。本開示は、その特定の実施形態によって限定されるものではない。
【００８７】
図面に示して上述した実施例は、例示のみを目的とするものであり、如何なる方法であっても本開示を限定するものと見なされるべきではないことに留意されたい。当業者であれば、例示した実施例に加えて、またはその代わりに、他の適切な実施形態または例示を使用できることを容易に理解するであろう。
【００８８】
また、図４〜図６に示すフローチャートは、システム１００の要素を参照して記載されているが、これに拘束されるものではなく、それぞれの操作は、本明細書に記載されたもの以外の要素によって実行できることに留意されたい。
【００８９】
本発明は、その用途において、本明細書に含まれるか又は図面に示される記載に述べられた詳細に限定されないことを理解されたい。本発明は、他の実施形態が可能であり、様々な方法で実施および実行することができる。このため、本明細書で用いられている表現および用語は、説明を目的とするものであり、限定的なものと見なされるべきではないことを理解されたい。よって、当業者であれば、本開示の基礎となる概念が、本開示の主題のいくつかの目的を遂行するための他の構造、方法およびシステムを設計するための基礎として容易に利用できることを理解するであろう。
【００９０】
また、本発明に係るシステムは、少なくとも部分的には、適切にプログラムされたコンピュータ上に実装されてもよいことが理解されるであろう。同様に、本発明は、本発明の方法を実行するためにコンピュータによって読み取り可能なコンピュータプログラムを企図している。さらに、本発明は、本発明の方法を実行するためにコンピュータによって実行可能な命令のプログラムを有形に具現化する非一時的なコンピュータ可読メモリも企図している。
【００９１】
当業者であれば、添付の特許請求の範囲で規定された本発明の範囲から逸脱することなく、上述した本発明の実施形態に様々な修正および変更を適用できることを容易に理解するであろう。
【図１ａ】
2021519564.tif 000003
【図１ｂ】
2021519564.tif 000004
【図２】
2021519564.tif 000005
【図３】
2021519564.tif 000006
【図４】
2021519564.tif 000007
【図５】
2021519564.tif 000008
【図６】
2021519564.tif 000009
【図７】
2021519564.tif 000010
【図８】
2021519564.tif 000011
【国際調査報告】
2021519564.tif 000012
2021519564.tif 000013
2021519564.tif 000014