(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2021-519564(P2021-519564A)
(43)【公表日】2021年8月10日
(54)【発明の名称】セキュアコンピュータシステム
(51)【国際特許分類】
H04L 9/08 20060101AFI20210712BHJP
G06F 21/62 20130101ALI20210712BHJP
H04L 9/10 20060101ALI20210712BHJP
【FI】
H04L9/00 601C
G06F21/62
H04L9/00 601E
H04L9/00 621A
【審査請求】未請求
【予備審査請求】未請求
【全頁数】29
(21)【出願番号】特願2021-501141(P2021-501141)
(86)(22)【出願日】2019年3月26日
(85)【翻訳文提出日】2020年11月25日
(86)【国際出願番号】IL2019050343
(87)【国際公開番号】WO2019186546
(87)【国際公開日】20191003
(31)【優先権主張番号】258368
(32)【優先日】2018年3月26日
(33)【優先権主張国】IL
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
2.Linux
3.WINDOWS
(71)【出願人】
【識別番号】520372331
【氏名又は名称】カズアー アドヴァンスド テクノロジーズ リミテッド
【氏名又は名称原語表記】KAZUAR Advanced Technologies Ltd.
(74)【代理人】
【識別番号】110001302
【氏名又は名称】特許業務法人北青山インターナショナル
(72)【発明者】
【氏名】フィンチェルスタイン,ダニエル モンディ
(72)【発明者】
【氏名】ポラット,ユヴァル モシェ
(72)【発明者】
【氏名】マルコ,シュロミ ラズ
(72)【発明者】
【氏名】ガル−ベッツァー,エレズ
(57)【要約】
入力周辺機器および出力周辺機器に動作可能に接続されたプロセッサ・メモリユニット(PMU)を備えたセキュアコンピュータシステムが提供される。PMUは、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にする命令のセットを含む。PMUはさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成される。
【選択図】
図2
【特許請求の範囲】
【請求項1】
セキュアコンピュータシステムであって、
入力周辺コンポーネントおよび出力周辺コンポーネントに動作可能に接続されたプロセッサ・メモリユニット(PMU)を備え、
入力周辺コンポーネントが、ユーザからの入力データを受信して、入力データをPMUに送信するように構成され、
出力周辺コンポーネントが、処理された出力データをPMUから受信するように構成され、
PMUが、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にするための命令のセットを含み、
PMUがさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成されるものであり、
モジュールのグループが、
入力周辺コンポーネントから入力データを受信し、合成鍵を使用して入力データを暗号化し、暗号化された入力データを共有メモリに書き込むように構成された少なくとも1のライタモジュールと、
共有メモリから暗号化された入力データを読み出し、合成鍵を使用して暗号化された入力データを復号し、復号された入力データを使用するように構成された少なくとも1のリーダモジュールとを備えることを特徴とするセキュアコンピュータシステム。
【請求項2】
請求項1に記載のセキュアコンピュータデバイスにおいて、
プロセッサが、セキュアエンクレイブをサポートし、命令のセットが、複数のセキュアエンクレイブ命令を含み、指定されたセキュア領域が、セキュアエンクレイブであることを特徴とするセキュアコンピュータデバイス。
【請求項3】
請求項1に記載のセキュアコンピュータデバイスにおいて、
少なくとも1のリーダモジュールが、
オペレーティングシステムの環境の状態を監視するように構成された状態管理モジュールと、
リモート接続を介して入力データをリモート作業環境に安全に転送し、処理された出力データをリモート作業環境から安全に受信するように構成されたセキュア環境モジュールと、
処理された出力データを出力周辺コンポーネントに提供するように構成された出力管理モジュールとを含む群のなかから選択されていることを特徴とするセキュアコンピュータデバイス。
【請求項4】
請求項2に記載のセキュアコンピュータデバイスにおいて、
グループ内の所与のモジュールの各々が、
特定のセッション用の鍵コンポーネントを指定されたセキュアエンクレイブ内で生成し、その鍵コンポーネントを指定されたセキュアエンクレイブ内に格納する工程と、
共有メモリを介して、セキュアエンクレイブのシールおよびシール解除メカニズムを使用して、グループ内の鍵コンポーネントを安全に交換し、それによりグループ内の他のモジュールからそれぞれの鍵コンポーネントを取得する工程と、
指定されたセキュアエンクレイブにおいて、グループ内の各モジュールからそれぞれの鍵コンポーネントを使用して合成鍵を個別に生成し、それにより合成鍵を使用したグループ内のセキュアデータ通信を可能にする工程とによって、
合成鍵を生成するように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項5】
請求項4に記載のセキュアコンピュータデバイスにおいて、
指定されたセキュアエンクレイブが、セキュアエンクレイブに署名する権限エンティティの署名アイデンティティに関連付けられ、
グループ内の所与のモジュールの各々が、鍵コンポーネントをシールして、シールした鍵コンポーネントを共有メモリにコピーする工程と、共有メモリから指定されたセキュアエンクレイブに他のモジュールのそれぞれのシールされた鍵コンポーネントをコピーする工程と、それぞれのシールされた鍵コンポーネントをシール解除する工程とによって、鍵コンポーネントを安全に交換するように構成されており、
所与のモジュールによるシール解除操作が成功することによって、有効性認証が提供されることを特徴とするセキュアコンピュータデバイス。
【請求項6】
請求項5に記載のセキュアコンピュータデバイスにおいて、
少なくとも1のライタモジュールが、合成鍵の生成中にフェーズを調整するようにさらに構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項7】
請求項1に記載のセキュアコンピュータデバイスにおいて、
入力周辺コンポーネントが、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データをPMUに送信するように構成されたセキュアキーボードであることを特徴とするセキュアコンピュータデバイス。
【請求項8】
請求項1に記載のセキュアコンピュータデバイスにおいて、
出力周辺コンポーネントが、暗号化され処理された出力データをPMUから受信し、暗号化され処理された出力データを復号して表示用に与えるように構成されたセキュアディスプレイであることを特徴とするセキュアコンピュータデバイス。
【請求項9】
請求項1に記載のセキュアコンピュータデバイスにおいて、
共有メモリが、グループ内の各モジュールが独立してアクセスするセキュアリングキャッシュによって提供されることを特徴とするセキュアコンピュータデバイス。
【請求項10】
請求項1に記載のセキュアコンピュータデバイスにおいて、
新しいモジュールがグループに参加したとき、または一定時間が経過したときに、新しい合成鍵が生成されることを特徴とするセキュアコンピュータデバイス。
【請求項11】
請求項1に記載のセキュアコンピュータデバイスにおいて、
少なくとも1のライタモジュールが、新しい入力データを書き込むときにのみ値が先に進むことが予期されるセッション単調カウンタを使用するように構成され、少なくとも1のリーダモジュールの各々が、読み出しセッション毎にセッション単調カウンタのローカルコピーを格納し、新しい読み出しセッションでは、セッション単調カウンタの現在の値を読み出して、以前に格納された値と比較するように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項12】
請求項1に記載のセキュアコンピュータデバイスにおいて、
合成鍵を使用して共有メモリからの所与のモジュールの読み出しが成功したときに、合成鍵が所与のモジュールによって検証されることを特徴とするセキュアコンピュータデバイス。
【請求項13】
請求項1に記載のセキュアコンピュータデバイスにおいて、
オペレーティングシステムによって実行可能な仮想化ローカル環境モジュールをさらに含み、オペレーティングシステムの状態が、セキュア環境モジュールによって提供されるセキュア環境と、仮想化ローカル環境モジュールによって提供される仮想化ローカル環境との間で切り替え可能であることを特徴とするセキュアコンピュータデバイス。
【請求項14】
請求項13に記載のセキュアコンピュータデバイスにおいて、
セキュアコンピュータデバイスに組み込まれ、仮想化ローカル環境とセキュア環境との間の切替時に物理的表示を提供するように構成された物理的インジケータをさらに含むことを特徴とするセキュアコンピュータデバイス。
【請求項15】
請求項13に記載のセキュアコンピュータデバイスにおいて、
セキュアコンピュータデバイスに組み込まれ、ユーザから環境を切り替える指示を受け取って、仮想化ローカル環境とセキュア環境との間の切替をトリガするように構成された物理的スイッチをさらに含むことを特徴とするセキュアコンピュータデバイス。
【請求項16】
請求項14に記載のセキュアコンピュータデバイスにおいて、
物理的インジケータが、入力周辺コンポーネントに組み込まれた視覚的インジケータであり、切替成功の通知を受信したときに視覚的表示を与えるように構成されていることを特徴とするセキュアコンピュータデバイス。
【請求項17】
請求項1に記載のセキュアコンピュータデバイスにおいて、
オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成されたBIOSコンポーネントをさらに含むことを特徴とするセキュアコンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の主題は、概してコンピュータシステムの分野に関し、より具体的には、セキュアコンピュータシステムに関する。
【背景技術】
【0002】
コンピュータデバイスやコンピュータネットワークは、悪意のあるソースからの攻撃を受けるケースが増えている。セキュリティ業界では、セキュリティ製品の新規性、効率性、機能セット、およびセキュリティへの全体的なアプローチの両面で急速な進歩を遂げているが、組織は、驚くべき速度でより高度な侵害を受け続けており、そのような攻撃を検出して軽減するために、多額のリソースを投資しなければならない場合がある。
【0003】
既存のコンピュータセキュリティソリューションは、危殆化を防止または検出することを目的としている。しかしながら、コンピュータシステムが危険に曝され、継続的に侵害を受けた際に、現在のソリューションでは、通常、そのような状況下でユーザが作業できるようにするための追加のセキュリティ手順は提供されていない。
【発明の概要】
【0004】
本開示の主題の特定の態様によれば、セキュアコンピュータシステムが提供され、このセキュアコンピュータシステムが、入力周辺コンポーネントおよび出力周辺コンポーネントに動作可能に接続されたプロセッサ・メモリユニット(PMU)を備え、入力周辺コンポーネントが、ユーザからの入力データを受信して、入力データをPMUに送信するように構成され、出力周辺コンポーネントが、処理された出力データをPMUから受信するように構成され、PMUが、保護されたメモリおよび共有メモリを含むシステムメモリと、システムメモリに動作可能に結合されたプロセッサとを備え、プロセッサが、保護されたメモリを介して安全なデータの保存と実行を可能にするための命令のセットを含み、PMUがさらに、オペレーティングシステムと、オペレーティングシステムによって実行可能なモジュールのグループとを含み、モジュールのグループ内の各モジュールが、保護されたメモリ内で実行される指定されたセキュア領域を有し、モジュールのグループが、認証を作成するとともに、合成鍵を使用して、アクセス可能な共有メモリを介して安全に入力データを共有するように構成され、合成鍵が、命令のセットによって有効化された指定されたセキュア領域間のデータ共有メカニズムを使用して、グループ内で生成されるものであり、モジュールのグループが、入力周辺コンポーネントから入力データを受信し、合成鍵を使用して入力データを暗号化し、暗号化された入力データを共有メモリに書き込むように構成された少なくとも1のライタモジュールと、共有メモリから暗号化された入力データを読み出し、合成鍵を使用して暗号化された入力データを復号し、復号された入力データを使用するように構成された少なくとも1のリーダモジュールとを備える。
【0005】
上記特徴に加えて、本開示の主題のこの態様に係るシステムは、技術的に可能な任意の所望の組合せまたは順序で、以下に記載されている特徴(i)〜(xvi)のうちの1または複数を含むことができる。
(i)プロセッサは、セキュアエンクレイブをサポートすることができ、命令のセットが、複数のセキュアエンクレイブ命令を含むことができ、指定されたセキュア領域が、セキュアエンクレイブである。
(ii)少なくとも1のリーダモジュールは、オペレーティングシステムの環境の状態を監視するように構成された状態管理モジュールと、リモート接続を介して入力データをリモート作業環境に安全に転送し、処理された出力データをリモート作業環境から安全に受信するように構成されたセキュア環境モジュールと、処理された出力データを出力周辺コンポーネントに提供するように構成された出力管理モジュールとを含む群のなかから選択することができる。
(iii)グループ内の所与のモジュールの各々は、特定のセッション用の鍵コンポーネントを指定されたセキュアエンクレイブ内で生成し、その鍵コンポーネントを指定されたセキュアエンクレイブ内に格納する工程と、共有メモリを介して、セキュアエンクレイブのシールおよびシール解除メカニズムを使用して、グループ内の鍵コンポーネントを安全に交換し、それによりグループ内の他のモジュールからそれぞれの鍵コンポーネントを取得する工程と、指定されたセキュアエンクレイブにおいて、グループ内の各モジュールからそれぞれの鍵コンポーネントを使用して合成鍵を個別に生成し、それにより合成鍵を使用したグループ内のセキュアデータ通信を可能にする工程とによって、合成鍵を生成するように構成することができる。
(iv)指定されたセキュアエンクレイブは、セキュアエンクレイブに署名する権限を持つエンティティの署名アイデンティティに関連付けることができる。グループ内の所与のモジュールの各々は、鍵コンポーネントをシールして、シールした鍵コンポーネントを共有メモリにコピーする工程と、共有メモリから指定されたセキュアエンクレイブに他のモジュールのそれぞれのシールされた鍵コンポーネントをコピーする工程と、それぞれのシールされた鍵コンポーネントをシール解除する工程とによって、鍵コンポーネントを安全に交換するように構成することができる。所与のモジュールによるシール解除操作が成功すると、有効性認証が提供される。
(v)少なくとも1のライタモジュールは、合成鍵の生成中にフェーズを調整するようにさらに構成することができる。
(vi)入力周辺コンポーネントは、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データをPMUに送信するように構成されたセキュアキーボードであってもよい。
(vii)出力周辺コンポーネントは、暗号化され処理された出力データをPMUから受信し、暗号化され処理された出力データを復号して表示用に与えるように構成されたセキュアディスプレイであってもよい。
(viii)共有メモリは、グループ内の各モジュールが独立してアクセスすることができるセキュアリングキャッシュによって提供することができる。
(ix)新しい合成鍵は、新しいモジュールがグループに参加したとき、または一定時間が経過したときに、生成することができる。
(x)少なくとも1のライタモジュールは、新しい入力データを書き込むときにのみ値が先に進むことが予期されるセッション単調カウンタを使用するように構成することができる。少なくとも1のリーダモジュールの各々は、読み出しセッション毎にセッション単調カウンタのローカルコピーを格納し、新しい読み出しセッションでは、セッション単調カウンタの現在の値を読み出して、以前に格納された値と比較するように構成することができる。
(xi)合成鍵は、合成鍵を使用して共有メモリからの所与のモジュールの読み出しが成功したときに、所与のモジュールによって検証することができる。
(xii)本システムは、オペレーティングシステムによって実行可能な仮想化ローカル環境モジュールをさらに含むことができ、オペレーティングシステムの状態が、セキュア環境モジュールによって提供されるセキュア環境と、仮想化ローカル環境モジュールによって提供される仮想化ローカル環境との間で切り替え可能となっている。
(xiii)本システムは、セキュアコンピュータデバイスに組み込まれ、仮想化ローカル環境とセキュア環境との間の切替時に物理的表示を提供するように構成された物理的インジケータをさらに含むことができる。
(xiv)本システムは、セキュアコンピュータデバイスに組み込まれ、ユーザから環境を切り替える指示を受け取って、仮想化ローカル環境とセキュア環境との間の切替をトリガするように構成された物理的スイッチをさらに含むことができる。
(xv)物理的インジケータは、入力周辺コンポーネントに組み込まれ、切替成功の通知を受信したときに視覚的表示を与えるように構成された視覚的インジケータとすることができる。
(xvi)本システムは、オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成されたBIOSコンポーネントをさらに含むことができる。
【0006】
本開示の主題の他の態様によれば、セキュアコンピュータシステムの一部またはすべての態様を実行または操作するための1または複数のコンピュータ化された方法も提供され、本開示の主題のこの態様は、技術的に可能な任意の所望の組合せまたは順序で、システムに関して上述した特徴(i)〜(xvi)のうちの1または複数を、必要な変更を加えて含むことができる。
【0007】
本開示の主題の他の態様によれば、命令のプログラムを有形に具現化する非一時的なコンピュータ可読記憶媒体が提供され、命令のプログラムは、コンピュータによって実行されると、セキュアコンピュータシステムの一部またはすべての態様を実施または操作するための1または複数のコンピュータ化された方法をコンピュータに実行させ、本開示の主題のこの態様は、技術的に可能な任意の所望の組合せまたは順序で、システムに関して上述した特徴(i)〜(xvi)のうちの1または複数を、必要な変更を加えて含むことができる。
【図面の簡単な説明】
【0008】
本発明を理解し、それが実際にどのように実施され得るのかを理解するために、添付の図面を参照しながら、非限定的な例として実施形態を説明する。
【
図1a】
図1aは、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムの概略ブロック図を示している。
【
図1b】
図1bは、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムのPMUに含まれる機能コンポーネントの概略ブロック図である。
【
図2】
図2は、本開示の主題の特定の実施形態に係る、モジュールのグループの概略的かつ例示的な実施形態を示している。
【
図3】
図3は、本開示の主題の特定の実施形態に係る、共有メモリのデータ構造の概略的かつ例示的な実施形態を示している。
【
図4】
図4は、本開示の主題の特定の実施形態に係る、モジュールのグループ内の所与のモジュールの各々によって合成鍵を生成する一般化されたフローチャートを示している。
【
図5】
図5は、本開示の主題の特定の実施形態に係る、共有メモリに関してモジュールのグループによって実行される操作の一般化されたフローチャートを示している。
【
図6】
図6は、本開示の主題の特定の実施形態に係る、オペレーティングシステムにおける環境の切替の一般化されたフローチャートを示している。
【
図7】
図7は、本開示の主題の特定の実施形態に係る、安全なクラウド環境の概略図を示している。
【
図8】
図8は、本明細書に開示された主題の特定の実施形態に係る、ライタモジュールとリーダモジュールとの間のメモリアクセス状態の切替を示す概略図を示している。
【発明を実施するための形態】
【0009】
以下の詳細な説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者であれば、本開示の主題がそれらの具体的な詳細なしに実施され得ることが理解されるであろう。他の例では、本開示の主題が不明瞭とならないように、周知の方法、手順、コンポーネントおよび回路は、詳細には記載されていない。
【0010】
特に明記されていない限り、以下の説明から明らかなように、本明細書の全体を通して、「受信」、「有効化」、「送信」、「表示」、「作成」、「共有」、「使用」、「暗号化」、「書き込み」、「読み出し」、「復号」、「監視」、「転送」、「提供」「生成」、「シール」、「シール解除」、「交換」、「格納」、「署名」、「調整」、「検証」、「切替」、「実行」などの用語を利用した説明は、データを操作および/または他のデータに変換するコンピュータの1または複数の動作および/または1または複数のプロセスを指し、上記データが電子、量などの物理的なものとして示され、かつ/または上記データが物理オブジェクトを示していることが理解されよう。「コンピュータ」という用語は、非限定的な例として、本出願で開示されるように、セキュアコンピュータシステムおよびその一部、並びに、処理及びメモリユニット(PMU)およびそこに含まれるプロセッサを含む、データ処理能力を有する任意の種類のハードウェアベースの電子デバイスを網羅するように拡張的に解釈されるべきである。
【0011】
本明細書で使用される「非一時的なメモリ」および「非一時的な記憶媒体」という用語は、本開示の主題に適した任意の揮発性または不揮発性コンピュータメモリを網羅するように拡張的に解釈されるべきである。
【0012】
本開示の主題の実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載のように、本開示の主題の教示を実施するために様々なプログラミング言語を使用できることが理解されよう。
【0013】
本明細書で使用される、「例えば」、「のような」、「例として」といった語句やそれらの変化形は、本開示の主題の非限定的な実施形態を説明するものである。本明細書における、「ある場合」、「いくつかの場合」、「他の場合」またはそれらの変化形への言及は、1または複数の実施形態に関連して記載された特定の特徴、構造または特性が、本開示の主題の少なくとも1の実施形態に含まれることを意味する。このため、「ある場合」、「いくつかの場合」、「他の場合」またはそれらの変化形の出現は、必ずしも同一の1または複数の実施形態を指すとは限らない。
【0014】
特に明記されていない限り、別個の実施形態の文脈で説明されている本開示の主題の特定の特徴は、単一の実施形態において組み合わせて提供できることも理解されよう。反対に、単一の実施形態の文脈で説明されている、本開示の主題の様々な特徴は、別個に、または任意の適当なサブコンビネーションで提供することもできる。以下の詳細な説明では、方法および装置の完全な理解を提供するために、多数の具体的な詳細が記載されている。
【0015】
このことを念頭に置いて
図1aを参照すると、本開示の主題の特定の実施形態に係るセキュアコンピュータシステムの概略ブロック図が示されている。
【0016】
図1に示すシステム100は、入力周辺コンポーネント(入力周辺機器とも称する)104および出力周辺コンポーネント(出力周辺機器とも称する)106に動作可能に接続された処理及びメモリユニット(PMU)102を備えたセキュアコンピュータデバイス(安全なコンピュータデバイスとも称する)である。
【0017】
特定の実施形態によれば、入力周辺コンポーネント104は、ユーザから入力データを受信し、その入力データをPMU102に送信するように構成された入力デバイスである。入力デバイスの非限定的な例としては、キーボード、ポインティングデバイス(例えば、マウス、タッチパッド、ポインティングスティック、タッチスクリーン、トラックボールなど)、およびメディア入力デバイス(例えば、デジタルカメラ、スキャナ、ウェブカメラ、レコーダなど)が挙げられる。本開示は、特定のタイプの入力デバイスに限定されるものではなく、任意の適切な1または複数の入力デバイスを、入力データを提供する目的で本明細書で利用できることに留意されたい。
【0018】
いくつかの実施形態では、入力周辺機器104は、ユーザからの入力キーストロークを受信して暗号化し、暗号化された入力データ(本明細書ではセキュア入力データとも称する)をPMUに送信するように構成されたセキュアキーボードとすることができる。一実施形態では、セキュアキーボードは、キーロギング攻撃を防止する目的で、入力キーストロークにキーストローク暗号化アルゴリズムを適用するように構成されたキーボードコントローラ(例えば、プロセッサ)を含むことができる。例えば、RSA、AES、SHA、OTPおよび他の任意の適切なアルゴリズムなど、対称暗号化スキームまたは非対称暗号化スキームの何れかを使用することができる。一例として、対称暗号鍵は、入力キーストロークの暗号化と暗号化データの復号の両方のために、入力周辺機器と受信モジュール(例えば、入力管理モジュール)との間で共有することができる。
【0019】
特定の実施形態によれば、出力周辺装置106が、処理された出力データをPMUから受信するように構成された出力デバイスである。出力デバイスの非限定的な例としては、視覚表示デバイス(例えば、スクリーン、モニタなど)、音出力デバイス(例えば、スピーカ、ヘッドフォンなど)およびプリンタなどを挙げることができる。本開示は、特定のタイプの出力デバイスに限定されるものではなく、任意の適切な1または複数の出力デバイスを、出力データを提供する目的で本明細書で利用できることに留意されたい。
【0020】
いくつかの実施形態では、出力周辺機器106は、PMUから暗号化され処理された出力データを受信し、暗号化され処理された出力データを復号して表示用に提供するように構成されたセキュアディスプレイとすることができる。
【0021】
PMU102は、
図4〜
図6を参照して後述するように、オペレーティングシステム100に必要なすべての処理を提供するように構成されている。PMU102は、プロセッサ108と、これに動作可能に結合されたシステムメモリ110とを備える。いくつかの実施形態では、システムメモリ110が、プロセッサに直接アクセス可能なメモリを指すことができる。プロセッサは、そこに格納された命令を読み出して、必要に応じて実行するように構成することができる。特定の実施形態によれば、システムメモリ110が、保護されたメモリ112および共有メモリ114を含むことができる。特に、プロセッサは、保護されたメモリを介して安全なデータの保存および実行を可能にするための命令のセットを含むか、または関連付けることができる。特定の実施形態では、保護されたメモリが、システムメモリ内の分離され暗号化された領域として実装することができる。実施形態の詳細は、異なるプラットフォームやアーキテクチャによって変わる可能性があることを理解されたい。また、本明細書で言及される「プロセッサ」という用語は、データ処理能力を有する任意の処理回路を包含するように拡張的に解釈されるべきであり、本開示は、そのタイプまたはプラットフォーム、またはそこに含まれる処理コアの数に限定されないことにも留意されたい。
【0022】
いくつかの実施形態では、セキュアエンクレイブ(本明細書ではSEまたはエンクレイブとも称する)は、アプリケーションまたはプロセスに組み込まれた信頼できる実行環境であり、アプリケーションがOSプロセスのコンテキストにおいて、コードを実行し、内部にデータを格納するための(例えば、分離され、暗号化された)セキュア領域を提供する。セキュアエンクレイブは、例えばエンクレイブページキャッシュ(EPC)から実行され、そこでは、セキュアエンクレイブ命令に関連付けられたプロセッサにより提供されるアクセス制御メカニズムを使用してデータが保護される。EPCは、エンクレイブコードが実行され、保護されたエンクレイブデータがアクセスされる場所となる。EPCは、プラットフォームの物理アドレス空間内に配置することができるが、SE命令を使用してのみアクセスすることができる。一例として、EPCは、保護されたメモリ112またはその一部として実装することができる。EPCは、多くの異なるエンクレイブからのページを含むことができ、ページの完全性および機密性を保護するためのアクセス制御メカニズムを提供する。ページキャッシュは、プラットフォームにおけるコヒーレント物理メモリに使用されるものと同様のコヒーレンシプロトコルを維持することができる。エンクレイブページは、OSによってEPCにロードすることができる。セキュアエンクレイブは、
図2を参照して後でさらに詳細に説明される。
【0023】
いくつかの実施形態では、プロセッサ108を、セキュアエンクレイブをサポートするプロセッサとすることができる。いくつかの実施形態では、セキュアエンクレイブをサポートするプロセッサが、インテルのソフトウェア・ガード・エクステンション(SGX)を利用することができる。SGXは、対応するメモリ保護セマンティックおよび管理に使用される命令を有するプロセッサ上の新しい実行モードである。SGXは、保護されたメモリページに必要なコードとデータを入力し、コードとデータをエンクレイブ内でロックし、その中で測定を行うことによって、セキュアエンクレイブを作成することができる。プロセッサは、エンクレイブ内でコードを実行することができる。カーネル(リング0)またはハイパーバイザ(リング「−1」)、またはSMM(リング「−2」)またはAMT(リング「−3」)を含む他のエンティティは、エンクレイブに属するメモリページの読み出しまたは書き込みを行う権利を持たない。いくつかの実施形態では、セキュアエンクレイブをサポートするプロセッサが、例えば、Advanced Micro Devicesのメモリ暗号化技術を利用することができる。
【0024】
セキュアエンクレイブをサポートするプロセッサ(本明細書ではセキュアエンクレイブサポートプロセッサとも称する)は、セキュアエンクレイブを使用してセキュアデータの保存および実行を可能にするための複数のセキュアエンクレイブ命令を含む命令のセットのアーキテクチャを有するものとして認識することができる。
【0025】
説明のみを目的として、以下の説明の特定の実施形態が、SGXおよびセキュアエンクレイブに関して提供される。実施形態は、同様に、類似のデータセキュリティおよびアクセス制御メカニズムを実装するために使用することができる他のプラットフォームおよび/またはベンダ技術、例えば、AMDおよびARM(例えば、TrustZone)に適用可能である。
【0026】
PMUはさらに、ブートプロセス(パワーオンスタートアップ)中にハードウェアの初期化を実行し、オペレーティングシステムおよびプログラムのためのランタイムサービスを提供するように構成された基本入出力システム(BIOS)コンポーネント130を含むことができる。一実施形態では、BIOS130を、コンピュータのシステムボードにプリインストールされたファームウェアとして実装することができる。本明細書で言及されるBIOSは、あらゆる種類のシステム初期化およびプリブート環境ツールを網羅するように広く解釈されるべきであり、本開示は、それらの様々な実施形態および設計によって制限されるべきではないことに留意されたい。
【0027】
場合によっては、BIOSの改良版として、Unified Extensible Firmware Interface(UEFI)を使用することができる。UEFIは、マザーボードのフラッシュメモリに保存することも、別のストレージデバイスからロードすることもできる。UEFIは、例えば、セキュアブート、またはメジャーブートなどをサポートすることができ、これは、マルウェアがブートプロセスを不正操作していないことを確認するために、オペレーティングシステムが有効性をチェックすることができることを意味している。また、他の方法を使用して、ブートおよび/またはプリブート環境の有効性を検証することも可能であり、TPMおよび/またはHSMデバイスを使用して有効性の検証を容易にすることができる。それにより、高度な認証および検証(例えば、トークンベースのリモート承認ブート、ブート許可の取り消しなど)を実行することができるように、UEFIファームウェア自体に合ったネットワーク機能をサポートすることができる。
【0028】
特定の実施形態では、BIOSコンポーネント130(例えば、UEFIまたは他のプリブート環境ツールなど)は、ユーザの真正性、現在のユーザおよびセッションの承認、および起動しようとしているオペレーティングシステムなどの有効性の検証を提供するように構成することができる。これは、オペレーティングシステムが起動する前であっても、場合によっては暗号化されたセキュリティ対策を提供するためである。一実施形態では、BIOSは、オペレーティングシステムを起動するか否かを決定するために検証を実行するように構成することができる。一例として、BIOSは、例えばクラウド環境などのリモート環境へのインターネット接続があるか否かを検証するように構成することができ、有効な接続がある場合にのみOSを起動することを決定することができる。さらに、有効な接続がある場合、BIOSは、OSを起動するために使用されるトークンをさらに要求することができる。別の例として、BIOSは、OSが特定の地理的境界内で起動する(または起動しない)ように、GPS位置の検証を実施するように構成することができる。さらに別の例として、BIOSは、組織による承認が与えられた場合にのみ、ブートプロセスを実行するように構成することができる。付与される承認のレベルに基づいてオペレーティングシステムが機能する複数の状態が存在し得る。
【0029】
特定の実施形態によれば、セキュアコンピュータシステム100は、オペレーティングシステム100に必要な任意のデータを格納するように構成され得るストレージユニット(図示省略)を含むことができる。ストレージユニットは、システムに二次ストレージを提供することができ、例えば、ハードディスク、フラッシュメモリなどを含むことができる。また、システム100は、ユーザ指定の入力を可能にするとともに、システム100に関連する出力を与えるように構成されたグラフィカルユーザインタフェース(GUI)も備えることができる。
【0030】
いくつかの実施形態では、セキュアコンピュータデバイス100は、物理的セキュリティの面でさらに強化することができる。一例として、セキュアコンピュータデバイスは、(
図1aに示すように)物理的な不正操作防止エンクロージャ140を備えることができる。例えば、コンピュータデバイスの外側ケーシングは、FIPS140−2レベル4のような業界の慣行および基準に基づいて不正操作に耐えることができ、例えば、デバイスの物理的な検査または分解に対する保護を提供し、そのような試みが行われた場合にデータの追加的な保護を提供することができる。追加的または代替的には、ユーザの介入または意図なしに悪用される可能性のある特定の周辺機器(例えば、カメラ、マイクロフォン、ワイヤレス/Bluetoothコンポーネントなど)へのアクセスを制御するために、1または複数のハードウェアスイッチを導入することができる。追加的または代替的には、セキュアコンピュータデバイスは、サイドチャネル攻撃を防止する目的で、ランダムな物理ノイズ(例えば、熱の偏り、電気フラックス、RFノイズ、音響など)を発生させる物理的マイクロユニットである熱/電気ノイズ発生器を備えることができる。追加的または代替的には、物理的な不正操作防止エンクロージャ140は、エンクロージャ(例えば、外側ケーシング、ハードウェアスイッチなど)からの入力を受信し、不正操作イベントが存在するか否かを判定し、それに応じて保護手段を提供するように構成された回路をさらに含むことができる。
【0031】
セキュアコンピュータデバイス100は、例えば、ラップトップ、デスクトップなどの任意のタイプのスタンドアロンコンピュータデバイスであり得ることに留意されたい。
図1aでは、入力周辺装置104および出力周辺装置106がコンピュータデバイス100の一部として統合されていることが示されているが、場合によっては、それらのコンポーネントは、分離されたユニットとして実装され、コンピュータデバイスに動作可能に接続され得ることが理解されるであろう。
【0032】
当業者であれば、本開示の主題の教示が、
図1aに示すシステムに拘束されないことを容易に理解するであろう。同等の機能および/または変更された機能は、別の方法で統合または分割することができ、ソフトウェアとファームウェアおよびハードウェアとの適切な組合せで実装することが可能である。
【0033】
ここで
図1bを参照すると、本開示の主題の特定の実施形態に係る、セキュアコンピュータシステムのPMUに含まれる機能的コンポーネントの概略ブロック図が示されている。
【0034】
プロセッサ108は、システムメモリ110内に含まれる非一時的なコンピュータ可読メモリ上に実装されたコンピュータ可読命令に従って、複数の機能コンポーネント/モジュールを実行するように構成することができる。以下、そのような機能モジュールを、PMU102に含まれるものとして言及する。
【0035】
PMU102に含まれる機能コンポーネントは、オペレーティングシステム(OS)116と、オペレーティングシステム116によって実行可能なモジュールのグループ120とを含むことができる。OS116は、セキュリティを強化する拡張機能(例えば、SELinux、GRSec)とともに、Linuxカーネルのトリムダウン/ストリップダウンバージョンを含むことができるセキュアベースOSとすることができる。いくつかの実施形態では、BSD派生カーネル/ユーザランドを使用して評価することができ、また、例えば、capsicom、pledgeなどの更なる安全な機能も使用することができる。そのようなベースOSでは、直接使用されない各コンポーネントは、カーネルにコンパイル(あるいは動的にロード)されないが、特定の高度なセキュリティカーネル拡張機能は追加セキュリティのためにコンパイルされる。未使用のバイナリは、例えば、ユーザ空間から削除することができる。任意選択的には、ライブラリは、追加のコンパイル時セキュリティ機能で、必要最小限の機能セットに再コンパイルすることができる。COW(書き込み時コピー)ファイルシステムの個別のプールは、読み取り専用の連続スナップショットと、ブロックレベルのチェックサミングおよびファイルシステムのメタデータセマンティクスの事前使用とともに使用されている。これにより、検証やリカバリなどの主要な機能が有効になる。特に、
図2を参照して後述するように、OSは、OS自体(カーネルを含む)が危険に曝されても鍵の危殆化を防止する、セキュアエンクレイブに裏打ちされたデバイス暗号化を可能にする。
【0036】
特定の実施形態によれば、モジュールのグループ120は、少なくとも1のライタモジュール122(本明細書ではライタとも称する)と、少なくとも1のリーダモジュール124(本明細書ではリーダとも称する)とを含むことができる。モジュールのグループ内の各モジュールは、保護されたメモリ内で実行される指定されたセキュア領域を含むことができる。モジュールのグループは、
図2を参照して後述するように、認証を作成し、合成鍵を使用してアクセス可能な共有メモリを介して、入力データを安全に共有するように構成され、合成鍵は、命令のセットによって有効にされるように、指定されたセキュア領域間のデータ共有メカニズムを使用してグループ内で生成される。
【0037】
グループ内のそれらのモジュールは、システムレベルのモジュール/プロセスと、相互に動作可能に接続されてデータを共有することができるアプリケーションレベルのモジュール/プロセスとの両方を網羅するように広く解釈されるべきであることに留意されたい。モジュールのグループは、その機能を説明する目的で一般的なレイアウトで示されているが、実際のシステムの層や構造を反映することを意図したものではない。それらモジュールの任意の適切な実施形態を、それらの特性および機能に応じて適用することが可能であり、本開示が、特定の実施形態に限定されないことが理解されよう。
【0038】
このことを念頭に置いて
図2を参照すると、本開示の主題の特定の実施形態に係るモジュールのグループの概略的かつ例示的な実施形態が示されている。
【0039】
図2に示すように、一実施形態では、少なくとも1のライタモジュール122が、入力管理モジュール202を含むことができる。少なくとも1のリーダモジュール124は、状態管理モジュール204、セキュア環境モジュール206および出力管理モジュール208を含む群のなかから選択される1または複数のモジュールを含むことができる。各モジュールには、(各モジュールに示すように)指定されたセキュア領域が組み込まれており、そのセキュア領域は、モジュールがコードを実行してデータを格納するためのセキュア環境を提供する。エンクレイブは、保護されたメモリ内で実行することができる。上述したように、セキュアエンクレイブをサポートするプラットフォームの場合、セキュア領域は、EPC領域内で実行されるセキュアエンクレイブを指すことができる。上述したように、EPCは、実行がエンクレイブ内ではないときにはアクセスすることができない別個のコンテナとして保持される保護された領域であり得る。エンクレイブに入ると、EPC内のエンクレイブコードに制御を移すことができる。SE命令は、現在の特権レベルおよびCPUモード(リング3/ユーザモード、リング0/カーネルモード、SMM、VMMまたは別のエンクレイブ)に関係なく、(所与のモジュールの)所与のエンクレイブに属するエンクレイブメモリページが、所与のエンクレイブの外部から読み出しまたは書き込みできないことを保証するアクセス制御メカニズムを提供することができる。このため、各モジュールは、他のエンティティがアクセスできない指定されたエンクレイブを使用して、自己のコードおよびデータを安全に保護することができる。
【0040】
本開示の主題の特定の実施形態によれば、上述したようなセキュアエンクレイブメカニズムは、セキュアデータ保護の本来の意図および使用に加えて、グループ内のモジュール間の信頼および認証を確立するために使用することができる。
【0041】
具体的には、モジュールのグループは、認証を作成し、合成鍵を使用してアクセス可能な共有メモリ114を介して安全にデータ(例えば、入力データ)を共有するように構成することができる。特定の実施形態によれば、セキュアエンクレイブをサポートするプラットフォームの場合、合成鍵は、
図4を参照して後述するように、セキュアエンクレイブ命令によって提供されるようなシールおよびシール解除メカニズムを使用して、グループ内の各モジュールにより提供されたそれぞれの鍵コンポーネントを用いて、各モジュールにより独立して生成される。
【0042】
信頼の確立を可能にするセキュアエンクレイブメカニズムを紹介したところで、
図5を参照すると、本開示の主題の特定の実施形態に係る、共有メモリに関してモジュールのグループによって実行される操作の一般化されたフローチャートが示されている。
【0043】
共有メモリは、グループ内のモジュールの各々にアクセス可能である。少なくとも1のライタモジュール122は、入力周辺コンポーネント104から入力データを受信し(502)、
図4を参照して説明したプロセスで生成された合成鍵を使用して、入力データを暗号化し(504)、暗号化された入力データを共有メモリ114に書き込む(506)ように構成することができる。入力周辺コンポーネント104から受信した入力データがセキュア入力データ(例えば対称鍵を使用して、セキュアキーボードによって暗号化された入力データ)である場合、ライタモジュール122は、セキュアキーボードと共有された対称鍵を使用してセキュア入力データをさらに復号し、合成鍵を使用して入力データを再暗号化し、再暗号化された入力データを共有メモリ114に書き込むように構成することができる。
【0044】
少なくとも1のリーダモジュール124は、共有メモリからデータ(例えば、暗号化された入力データ)を読み出し(508)、合成鍵を使用して暗号化された入力データを復号し(510)、復号された入力データを使用する(512)ように構成することができる。
【0045】
前述したように、少なくとも1のリーダモジュール124は、状態管理モジュール204、セキュア環境モジュール206および出力管理モジュール208を含む群のなかから選択される1または複数のモジュールを備えることができる。それらのリーダモジュールはすべて、上述した方法で共有メモリから読み出すことができる。ある場合は、それらの各々が、指示された/関連するデータを選択的に読み出すことができる。いくつかの実施形態によれば、状態管理モジュール204は、オペレーティングシステムにおける環境の状態、例えば、システムがセキュア環境または仮想化ローカル環境で動作しているか否かを監視するように、システムの状態情報を読み取るように構成することができる。環境の切替(例えば、仮想化ローカル環境からセキュア環境への切替、またはその逆)の場合、状態管理モジュール204は、
図6を参照して後述するように、関連するモジュールおよびコンポーネント間のコーディネータとして機能するように構成することができる。
【0046】
セキュア環境モジュール206は、暗号化された入力データ(ライタモジュール、例えば入力管理モジュール202によって暗号化された入力データ)を共有メモリから読み出し、暗号化された入力データを復号し、リモート接続を介してリモート作業環境に安全に入力データを転送し、処理された出力データをリモート作業環境から安全に受信するように構成することができる。一例として、セキュア環境モジュール206は、入力データが転送および処理されるリモートPC、リモートサーバ、クラウドなどのリモート作業環境に接続するために使用することができるリモートデスクトップ(RDP)クライアントのアプリケーションであり得る。このため、ある場合には、セキュア環境モジュールを、リモート環境モジュールとも称する。セキュア環境モジュール206は、上述したようなセキュアデータ共有および保護メカニズムを利用して常に安全な作業環境を維持するセキュアエンクレイブ認識ランタイム環境である。
【0047】
RDPクライアントとリモート作業環境との間のセキュア通信は、様々な方法で実行することができる。例えば、エンドツーエンド暗号化、TLS/SSL(Transport Layer Security/Secure Sockets Layer)暗号化、ワンタイムパスワードおよび他の任意のプロプライエタリアルゴリズムなどの暗号化スキームを使用することができる。これらの暗号化スキームは、非限定的な例として、トランスポートおよび/またはペイロードの暗号化などに使用することができる。いくつかの実施形態では、デバイスとリモートエンティティとの間のリモート認証プロセスを確立することができ、これについては
図7を参照して後述する。
【0048】
出力管理モジュール208は、処理された出力データを出力周辺コンポーネント106に提供するように構成することができる。一例として、処理された出力データがRDPクライアントによってリモート作業環境から受信されると、RDPクライアントは、出力データを共有メモリに書き込むことができ、出力管理モジュール208は、そこから出力データを読み出して、出力周辺機器に提供する(例えば、表示用に与える)ことができる。このような安全な出力パスの実施形態については、以下に詳細に説明する。
【0049】
このようなセキュア作業環境では、入力周辺コンポーネントからセキュア入力データを受信すると、このデータはモジュールのグループ間で安全に共有することができ(セキュアエンクレイブに基づく安全なデータ共有および保護メカニズムによって有効化され)、それにより入力から出力までのプロセス全体がエンドツーエンドで安全に保護されることが保証される。そのような保護は、カーネルレベル/SMM/ME攻撃に対して有効である。
【0050】
ここで
図4を参照すると、本開示の主題の特定の実施形態に係る、モジュールのグループ内の所与の各モジュールにより合成鍵を生成する一般化されたフローチャートが示されている。
【0051】
上述したように、所与の各モジュールには、モジュールがコードを実行してデータを格納するためのセキュア環境を提供する、指定されたセキュアエンクレイブが組み込まれている。モジュールのグループ内の各所与のモジュールは、その指定されたセキュアエンクレイブで特定のセッションのための秘密鍵コンポーネントを生成し(402)、その鍵コンポーネントをそこに格納するように構成することができる。鍵コンポーネントは、ランダムに、例えば、一時的なノンスとして生成することができる。鍵コンポーネントは生成されて、セキュアエンクレイブ内に格納されるため、SE命令によって提供されるアクセス制御メカニズムにより、所与のモジュール自体以外の他のエンティティは、この鍵情報にアクセスすることができない。
【0052】
所与の各モジュールは、共有メモリを介してグループ内で自己の鍵コンポーネントを安全に交換して(406)、グループ内の他のモジュールからそれぞれの鍵コンポーネントを得ることができる。特定の実施形態によれば、この鍵交換は、セキュアエンクレイブのシールおよびシール解除メカニズムを使用することによって可能になる。
【0053】
シールは、エンクレイブデータをディスクに永続的に保存するために暗号化して、エンクレイブデータの機密性を保護し、エンクレイブがEPCにロードされたときに不正操作を検出するためのプロセスを指している。これにより、(例えば、電源イベントやアプリケーション自体によって)エンクレイブが破壊された場合に、エンクレイブデータを取り出し、その後に元に戻すことが可能になる。シールは、ある意味で、特定のプラットフォームとエンクレイブに固有であり、他の如何なるエンティティにも知られていない秘密シール鍵を使用した暗号化とみなすことができる。シールには、異なるエンクレイブアイデンティティを使用した様々な方法がある。エンクレイブに関連付けられたアイデンティティの1つは、配布前にエンクレイブに署名する権限を持つエンティティ(開発中の会社など)が提供する署名アイデンティティである。この値はMRSIGNERと呼ばれ、同じ権限を持つエンティティで署名されたすべてのエンクレイブで同じになる。このため、これらのエンクレイブがすべて同じ権限を持つエンティティで署名されている限り、同じシール鍵を異なるエンクレイブに使用することが可能になる。
【0054】
本開示の主題の特定の実施形態によれば、グループ内の複数のモジュールに指定されたセキュアエンクレイブは、すべて同じ権限を持つエンティティ(例えば、モジュールの所有者/プロバイダ)によって署名されるとともに、権限を持つエンティティの署名アイデンティティにすべて関連付けられている。署名アイデンティティを使用してシールされた所与のセキュアエンクレイブのエンクレイブデータは、所与のセキュアエンクレイブと同じ署名アイデンティティを共有する有効で適切にインスタンス化されたセキュアエンクレイブによってのみ、同一プラットフォーム上でのシール解除に成功することができる。このため、署名アイデンティティを使用したシールおよびシール解除メカニズムは、同じ権限を持つエンティティによって所有/生成される異なるモジュールの複数のエンクレイブ間で安全にエンクレイブデータを共有することを可能にし、それにより、グループ内のモジュール間でハードウェアベースの認証および信頼を確立することができる。
【0055】
上述した鍵コンポーネントの安全な交換(406)に戻ると、グループ内の1つのモジュール(例えば、ライタモジュール)は、具体的には、交換プロセス中の様々なフェーズ/ステージを調整するためのコーディネータモジュールとして機能することができる。第1のステージでは、所与の各モジュールは、鍵コンポーネントをシールし(408)、シールされた鍵コンポーネントを共有メモリにコピーすることができる。すべてのモジュールからのすべてのシールされた鍵コンポーネントが共有メモリにコピーされると、コーディネータモジュールは、ステージの変更をグループに通知することができ、所与の各モジュールは、他のモジュールのそれぞれのシールされた鍵コンポーネントを共有メモリから自己の指定されたセキュアエンクレイブにコピーし(410)、指定されたセキュアエンクレイブ内のそれぞれのシールされた鍵コンポーネントをシール解除する(412)ように構成することができる。所与のコンポーネントによるシールされた鍵コンポーネントのシール解除に成功すると、それが有効で信頼でき、不正操作されていないエンティティであることが証明される。
【0056】
グループ内の他のすべてのモジュールからのすべての鍵コンポーネントが正常にシール解除されると、所与の各モジュールは、指定されたセキュアエンクレイブ内で、グループ内の各モジュールからのそれぞれの鍵コンポーネントを使用して合成鍵を独立して生成することができる(414)。合成鍵は、グループ内のすべてのモジュールのすべての鍵コンポーネントから導出される必要があることに留意されたい。アクティブな参加モジュールの各々は、合成鍵を作成するために使用される鍵コンポーネントを提供する必要があり、それによって潜在的なリプレイ攻撃を防ぐことができる。また、各モジュールは、共有メモリからコピーされた他のモジュールの鍵コンポーネントと、ローカルに保存された自己の鍵コンポーネントとを使用して、合成鍵を生成することにも留意されたい。
【0057】
各モジュールによって合成鍵の個別の生成が完了すると、コーディネータモジュールは、ステージの変更をグループに通知することができ、グループは、
図5を参照して上述したように、合成鍵を使用して、グループ内で安全なデータ通信を開始することができる。一実施形態では、ライタモジュールが、自ら生成した合成鍵を用いてデータを暗号化し、暗号化されたデータを共有メモリに書き込むことができる。リーダモジュールが、共有メモリから暗号化されたデータを読み出すときに、自己生成した合成鍵を使用して暗号化されたデータを正常に復号することができる場合、それは必然的に、自己の鍵コンポーネントが合成鍵の生成に使用されたことを示しており、それにより、他のモジュールの有効性およびセキュリティの検証を提供することができる。
【0058】
特に、本開示の主題では、単にデータを共有するのではなく、署名アイデンティティを用いたシールおよびシール解除メカニズムを用いて、信頼性およびセキュリティを確立することに留意されたい。シールされたデータを正常に送信し、新たに暗号化されたデータを(合成鍵を用いて)検査することにより、正常なシール解除動作を控除することができる。すべての参加モジュールで正常なシール/シール解除動作を控除するという概念は、有効で信頼できる不正操作されていないエンクレイブだけがこれを実行することができるため、作られる信頼である。このため、この信頼に対するハードウェアアンカーが確立される。
【0059】
特定の実施形態によれば、モジュールのグループ内の参加モジュールの数は、制限も、事前設定もされていない。任意の時点で、新しいモジュールがグループに参加することができ、その際に、上述したような同様のプロセスで、現在参加しているすべてのモジュールから(新しい参加モジュールの要求に応じて)新しい合成鍵が生成され、すべての参加者の状態を効果的に検証し、リプレイ攻撃を防止することができる。鍵の再生成は、鍵のリフレッシュや鍵のロールオーバーとも称する。一例として、新しい参加モジュールが、新しい合成鍵を独立して生成した後、新しい合成鍵を使用してデータを正常に読み出すことができる場合、これは、新しいモジュールと残りのメンバとの間の鍵交換が正常に行われ、その鍵コンポーネントのみが新しい合成鍵に使用されることを意味している。別の例として、新しい参加モジュールが、新しい合成鍵を独立して生成した後、信頼できないエンティティから古い鍵を使用した再生メモリを受信した場合、新しい参加モジュールは、それが有効で信頼できるエンティティからのものではないことを確認することができる。更に別の例として、鍵の変更時に、ライタモジュールは、モジュールから提供された鍵コンポーネントを検査し、現在動作しているモジュールを検証することができる。
【0060】
いくつかの実施形態では、合成鍵は、鍵の鮮度を強制して鍵の消耗を避ける目的で、所与の時間間隔毎に繰り返し再生成されることを要求されることもある。任意選択的には、鍵コンポーネントに基づいて合成鍵を生成するために使用されるポリシー/アルゴリズムも変更することができ、予め設定されたオプションのセットから選択することができる。その結果、鍵コンポーネントが変更されないままであっても、そこから得られる実際の合成鍵が異なり得るため、追加のセキュリティ保護が提供される。既存のメンバモジュールはいつでも、現在の合成鍵に影響を与えることなく、グループから離脱することができる。
【0061】
特定の実施形態によれば、上述した新規加入モジュールのリプレイ保護に加えて、継続中のリプレイ保護も提供される。一例として、プロバイダとしてのライタモジュールは、セッション単調カウンタを使用することができ、このカウンタは、書き込みセッションの開始時に開始し、新しいデータユニットが提供されると、このカウンタを連続的にインクリメントすることとなる。この単調カウンタは、データユニット/要素毎のカウンタである。コンシューマとしてのリーダモジュールは、データを読み出すときにこのカウンタ値を読み取ることができ、この値をローカルに保存することができる。このカウンタ値は先にのみ進むことが予期されるため、リーダモジュールによって現在読み取られた値が以前に保存された値よりも小さい場合、リーダモジュールはデータが危殆化していると仮定することができる。さらに、リーダモジュールは、セッション単調カウンタを継続的に追跡する。有効なインクリメントカウンタは、有効なライタモジュールを示すことができる。
【0062】
図3を参照すると、本開示の主題の特定の実施形態に係る共有メモリのデータ構造の概略図が示されている。
【0063】
共有メモリ114は、非限定的な例示として、セキュアリングキャッシュ300のデータ構造として図示されている(なお、メモリがリングとして物理的に作成されることはないため、リングキャッシュ300は表示目的のためだけに図示されていることに留意されたい。本明細書に記載されているのと同等の機能を有する線形表示を、実施形態で使用することができる。いくつかの実施形態では、リングキャッシュの実施形態はオーバーフローに対する保護を実装する必要があることに留意されたい)。いくつかの実施形態では、複数のリーダおよび複数のライタをサポートし、データを読み出してもデータが削除されないような適切なデータ構造など、別のデータ構造を使用することができる。
【0064】
リング構造は、実際の開始点または終了点を持たず、データはリングの周りをループすることができる。リングキャッシュに格納された基本的なデータ要素は、メタデータ302およびペイロード304を含むデータパケット301として図示されている。メタデータおよびペイロードは、ともに暗号化することも、ペイロードのみを暗号化することもできる。メタデータ302は、例えば、記述子、タイムスタンプ、パケットカウンタなどのオーバーヘッド情報を含むことができる。ペイロード304は、運ばれる実際のデータを含む。データパケットは、それらを実行するプロトコルに応じて、構造および機能が異なることがある。データパケットは、読み取られるだけで、消費されない(すなわち、削除されない)。完全な円に達すると、最も古いデータパケットが上書きされる。リングキャッシュは、上書きされる前にリーダがデータを読み取るのに十分な時間を持つことができるように、十分な大きさを持つように構築することができる。一実施形態では、リングキャッシュが、100〜200回のキーストロークを収容できる大きさにすることができる。リングキャッシュのサイズは、例えば、入力タイプおよびスループットなどの要因に応じて変化し得ることに留意されたい。入力周辺機器が、例えば、マイクロフォンである場合、リングキャッシュは、時間単位でサイズ設定することができる。
【0065】
特定の実施形態によれば、データパケットに加えて、リングキャッシュは、ライタデータ(例えば、最後の書き込み位置306、ライタアクティブフラグなどを含む)、リーダデータ(例えば、リーダアクティブフラグなどを含む)、暗号化処理データ(シールされた鍵コンポーネント、鍵ロールオーバーフラグなどを含む)およびリングメタデータを含む、グローバルデータを運ぶことができる。
【0066】
上述したように、(ライタデータの一部としての)最後の書き込み位置306を示すマーカーが提供される。最後の書き込み位置は、すべての書き込み状態の最後にライタによって更新される。ライタマーカーは、最後の書き込み位置を示す公開値である。ライタは、書き込み動作毎にその値を更新する。各リーダは、この値を個別に追跡して、ライタの動作の追跡を継続することができる。
【0067】
各リーダは、他に影響を与えることなく、独立してデータを読み出すことができる。各リーダは個別にライタを追跡し、例えば最後の読み出し位置を追跡することで、最後の読み出し以降に何のどれだけの新しいデータが書き込まれたかを判定することができる。最後の読み出し位置は、この特定のリーダが最後に読み出した位置を示す秘密の値である。これは公開されておらず、各リーダモジュール内で内部保持される。リーダがグループに参加すると、最後の書き込み位置を最後の読み出し位置として記録し、ライタの追跡を開始する。リーダが新しい時刻に読み出したとき、内部に保存されている最後の読み出し位置と現在の公開されている最後の書き込み位置とを比較し、それらが等しくない場合、カウントの差は、最後の読み出しからライタが行った新たな書き込みを反映している。読み出し中、各リーダは、最後の読み出しから書き込まれた一部またはすべての新しいデータパケットを読み出すことを決定することができる。
【0068】
いくつかの実施形態では、ライタおよびリーダは、共有メモリを介してデータ共有システム内で互いに疎結合されていると見なすことができる。ライタは、リーダから独立して連続的にデータを書き込むことができ、一方、リーダは、他のリーダから独立して連続的にデータを読み出すことができる。これは、メモリアクセス状態(モードとも称する)スイッチングを使用することによって達成することができ、それによって、本開示の主題の特定の実施形態に係る
図8に示すように、同期化のためのロックメカニズムの使用を回避することができる。
【0069】
図8に示すように、以下の状態を使用することができる。
・初期状態
−現在、リーダまたはライタ状態ではない。
・リーダ状態
−すべてのリーダが、リーダ状態への状態変更を開始することができる。
−実際の状態変更は、ライタ状態でない場合は直ちに、または初期状態に変更した後に行われる。
−ライタ要求フラグが立っている場合、新しいリーダはライタ状態が完了するまで待機する。
−複数のリーダが同時に、または次々に変更を開始することができる。最後のリーダが完了すると、リーダ状態が初期状態に戻る。
−リーダは独立していて、互いに干渉することはなく、ライタとのみ連携する。
・リーダ待機状態
−ライタフラグに遭遇した新しいリーダは、ライタが作業を完了できるように待機状態に入る。
・ライタ状態
−ライタは、ライタ要求フラグを発することにより、いつでも書き込み状態への変更を要求することができる。実際の状態変更は、すべてのアクティブなリーダが完了し、状態が初期状態に変更されたときに発生する。
・ライタ待機状態
−ライタは、書き込み状態に入る前に、すべてのアクティブなリーダが完了するのを待つ。
【0070】
ライタは、すべての書き込み状態で、0、1またはそれ以上のデータパケットを書き込むことができる。リーダは、新しいデータの量が利用可能であると仮定して、すべての読み出し状態で、0、1またはそれ以上のデータパケットを読み出すことができる。リーダ状態/モードに入るとき、リーダはタイムスタンプを作成することができる。読み出しモードに入る前に、リーダはタイムスタンプを確認し、状態の最大時間に達している場合、リーダはライタが書き込み状態に入るのを待って、ライタのスターベーショを防ぐ。複数のリーダは、ライタが書き込みを待機していない限り、読み出し状態に変更することによって、または読み出し状態を継続することによって、同時に読み出しを開始することができる。
【0071】
いくつかの実施形態では、リングキャッシュに書き込みを行っている複数のライタが存在し得る。一例として、2つの入力管理モジュールが存在することができ、各々がそれぞれの入力周辺機器コンポーネントに動作可能に接続されている。2つの入力周辺機器は、同じ種類(例えば、2つのキーボード)または異なる種類(例えば、1つのキーボードと1つのマウス)の何れであってもよい。そのような場合、各データパケットは、ライタの発信元を示す追加のメタデータを含む必要がある。
【0072】
上述したリングデータ構造、その機能、およびそれに関連したライタおよびリーダの動作は、例示的な目的のために示されており、本開示を如何なる形でも制限するように解釈されるべきではないことに留意されたい。他の任意の適当なデータ構造および/または参加者の動作を、上記に代えてまたは加えて適用することができる。
【0073】
図6を参照すると、本開示の主題の特定の実施形態に係る、オペレーティングシステムにおける環境の切替の一般化されたフローチャートが示されている。
【0074】
いくつかの実施形態では、セキュア環境モジュール206が上述したセキュアデータ共有および保護メカニズムを使用して作動しているときに提供されるセキュア環境以外に、セキュアコンピュータデバイスのオペレーティングシステムによって実行可能な仮想化ローカル環境モジュール(図示省略)も存在することができる。このモジュールは、変更されていないサードパーティ製のオペレーティングシステム(例えば、WindowsのVM、Linux、または他の任意のプロプライエタリまたはレガシーOSなど)をユーザに提供する。このコンポーネントのインスタンスは複数存在する可能性があり、すべてが異なるバージョン、異なるアプリケーションを実行し、ハードウェアエミュレーション、接続性およびアタッチメントのレベルが様々である可能性がある。
【0075】
このモジュールは、セキュアエンクレイブ認識環境ではなく、上述したセキュアデータ共有および保護メカニズムがこの環境では提供されていないという意味で、上述したセキュア環境モジュールと比較して、安全性が相対的に低くなる。仮想化ローカル環境モジュールとセキュア環境モジュールは、互いに暗号的に分離されており、相互排除して実行することができる。さらに、セキュア環境では、永続的なデータがリモートで保存されるのに対し、仮想化ローカル環境では、そのようなデータが暗号化されてローカルディスクに保存されることに留意されたい。ここでは、「永続的なデータ」は、一時データ(例えば、それを表示するプロセス中に一時的に利用可能なデータ)を除外することができる。
【0076】
オペレーティングシステムが起動すると、2つの環境の何れかに接続するための統合されたユーザインタフェースがユーザに提示される。このとき、例えば、システム内で実行されている2つのモジュール、入力管理モジュールと状態管理モジュールがあり、それらが一緒にモジュールのグループを構成している。それらの2つのモジュールは、上述したように合成鍵について合意し、共有メモリ(例えば、セキュアリングキャッシュ)を介して鍵を使用してデータの共有を開始することができる。ここで、仮想化ローカル環境(例えば、Windows VM)に入るようにユーザから指示を受信したと仮定すると、仮想化ローカル環境モジュールが作動する。仮想化ローカル環境でも、セキュアリングキャッシュは上述した方法で動作しているが、仮想化ローカル環境モジュール(Windows VMなど)にはアクセスできないことに留意されたい。仮想化ローカル環境で作業しているとき、入力管理モジュールは、サイドチャネル攻撃を防ぐために、暗号化されたデータを(例えば、セキュアリモート作業環境700に)継続的に送信することができる。
【0077】
仮想化ローカル環境からセキュア環境への切替指示をユーザから受信すると(602)、リングからデータを読み出して環境の状態を監視している状態管理モジュールは、仮想化ローカル環境モジュールに、現在の状態を一時停止して保存するように指示することができる(604)。いくつかの実施形態では、環境間の切替の指示は、例えば、ボタン、またはキーボード上のスイッチボタンなど、セキュアコンピュータデバイスに組み込まれている/統合されている物理的なスイッチを介して、または後述するように、切替が成功したときに追加的に物理的な表示を提供することができる物理的コンポーネント(例えば、物理的インジケータ)を介して、ユーザが与えることができる。セキュアスイッチは、モジュールのグループ内の既存のモジュールを介して、または指定されたセキュアエンクレイブを有する指定されたモジュールを介して、セキュアドライバを使用して実装することができる。いくつかの他の実施形態では、環境間の切替の指示は、キーボードからのキーストロークの組合せを使用することによって与えることができる。状態管理モジュールからの指示を受けると、(例えば)Windows VMのVMマネージャは、現在の状態のスナップショットを取得することができ、このスナップショットは、保存して、後で特定の時点に戻すために使用することができる。その後、状態管理モジュールは、入力管理モジュールに、非セキュア環境からセキュア環境への切替を指示する(606)。入力管理モジュールは、状態管理モジュールからの指示を受けると、Windows VMへの安全ではない模擬入力データの送信を停止する。
【0078】
また、状態管理モジュールは、新しいメンバとしてモジュールのグループに参加するセキュア環境モジュール(例えば、RDPクライアント)をロードして(608)、鍵のロールオーバーをトリガする。新しい合成鍵は、モジュールのグループ(例えば、セキュア環境モジュール、入力管理モジュールおよび状態管理モジュール)の間で生成され、グループ内でのその後のセキュアデータ共有に使用される。切替が正常に完了すると、状態管理モジュールは、切替が正常に完了したことをユーザに物理的表示を与えるように指示することができる(610)。例えば、キーボードまたはコンピュータデバイスの他の適当なコンポーネントに取り付けることができる視覚的インジケータ、LEDまたは音によるインジケータ(例えば、バイブレータなど)などのような、セキュアコンピュータデバイスに組み込まれた物理的コンポーネント/インジケータは、切替が成功したという通知を受け取ったときに、例えば、光、ミニスクリーン、ブザー、音などで物理的な表示を与えることができ、それにより、ユーザは切替が実際に行われたという表示を得ることができる。これにより、悪意のあるコンポーネントが切替を偽装してシステムの制御を乗っ取ろうとする企てから効果的に保護することができる。
【0079】
図7を参照すると、本開示の主題の特定の実施形態に係るセキュアクラウド環境の概略図が示されている。
【0080】
現在のところ、真のゼロ知識、すなわち、例えば、ベンダには知られていない、ユーザにより提供される暗号鍵のような機密データを提供するクラウドソリューションベンダは非常に少ない。少数の既存のソリューションの中では、ゼロ知識は、アプリケーションの限られたサブセット(例えば、セキュアファイルストレージ、セキュア電子メールなど)でのみ提供される場合がある。仮想コンピューティングを確かに提供する殆どのクラウドプロバイダでは、ユーザはベンダとハイパーバイザ(仮想化を担うソフトウェアスタック)を盲目的に信頼することを余儀なくされている。ハイパーバイザを信頼することは、セキュリティ上の重大な欠点となる。クラウドプロバイダで実行されている仮想化オペレーティングシステムは、そのすべてのメモリ空間(ユーザ内での特権分離に関係なく)、実行中のプロセス、データ等とともに、ハイパーバイザに対して完全に透過的である。クラウドプロバイダに勤務する悪意のある従業員、プロバイダへの召喚状、ハイパーバイザレベルでの危殆化、またはVM間の危殆化など、悪意のある活動はすべて、クライアントのVM(およびデータ)を大きなリスクに曝す。
【0081】
セキュアデータ共有および保護メカニズムによって可能になる、セキュア作業環境とエンドツーエンドのデータ保護を備えた上述したセキュアコンピュータシステムを使用することで、真のゼロトラストクラウド環境を実現することができる。いくつかの実施形態では、ユーザは、すべてのシステム構成およびユーザ情報を統合ファイル(例えば、ISOファイル)で提供することができ、これを使用して、安全な物理的環境で、ユーザの要求に応じてセキュアコンピュータデバイス700をインストールおよびカスタマイズすることができる。このようなセキュアコンピュータデバイスは、上述したように、セキュアデータ共有および保護スキームを可能にするように既に予め構成されていることに留意されたい。このセキュアコンピュータデバイス700がカスタマイズされて閉じられると、物理的な不正操作防止手段を使用して、例えばハードウェアスイッチを使用して、このコンピュータデバイスが再び開かれることを防止することができる。その後、このセキュアコンピュータデバイス700は、クラウドに配置することができ、安全なリモート作業環境をユーザに提供するために使用することができる。クラウドプロバイダからのエンティティは何れも、デバイスを不正操作したり、そこに格納されたデータにアクセスしたり、あるいはそのデータ上で行われた計算にアクセスしたりすることはできない。世界中のどこにいても、ユーザは、ローカルセキュアコンピュータ(例えば、セキュアコンピュータシステム100)を使用して、以前に構成されたように、自己の秘密資格情報を用いて、セキュアコンピュータデバイス700に接続することができる。さらに、リモートコンピュータは、クラウド内の他のコンピュータに接続するために使用することができ、それにより、エンドユーザがコンピュータシステム100を使用してアクセスする組織的なネットワークとして機能する相互接続されたリモートコンピュータのネットワークを形成することができる。
【0082】
ローカルセキュアコンピュータ100と安全なリモート作業環境700との間のセキュア通信は、様々な方法で実施することができる。ここで、本開示の主題の特定の実施形態に従って、ローカルデバイスとリモートエンティティとの間でリモート認証を確立する例示的な方法を説明する。リモート認証を確立するために、かつ/またはローカルデバイスとリモートエンティティとの間のセキュア通信を可能にするために、TLS/SSL、VPN、RDPなどの他の既知のプロトコルまたはプロプライエタリプロトコルを使用することができる。
【0083】
デバイスの作成時には、クライアント100とサーバ700との間で予め共有された秘密がシールされており、よってリモート認証の必要性を回避することができる。これは、規定された安全なセキュア本番環境で行うことができ、その環境では、システムが危険に曝されることはなく、悪意のあるソフトウェアやその他のセキュリティ上のリスクなしに、デバイスのプロビジョニングを行うことができる。
【0084】
具体的には、この特定のデバイスをサーバに認識させることができる固有の証明書を作成することができる。この特定のデバイスの公開証明書は、サーバに保存することができる。デバイスには、この特定のデバイスの証明書(公開鍵と秘密鍵)と、サーバの公開証明書を保存することができる。その後、この情報は、(例えば、セキュアエンクレイブ固有のシールメカニズムを使用して)シールすることができる。すなわち、この特定のデバイスだけがこの情報のシールを解除することができ、それを、信頼できるエンティティによって署名された適切にインスタンス化されたセキュアエンクレイブ上でのみ行うことができる。デバイスを不正操作したり、ハードウェアのプロパティを変更したり、シールされたデータを編集または削除したりすると、シールが破壊され、デバイスの認証に失敗する。このデータがなければ、このデバイスは危険に曝されていると見なされて、使用できなくなり、安全な本番環境で新しい識別情報を使用して再プロビジョニングする必要がある。
【0085】
例示的なリモート認証フローは、次のように実行することができる。リモートセキュリティをネゴシエートする際には、暗号化されたチャネルを確立した後に、クライアントは認証データをシール解除し、保存されたサーバ証明書を使用してサーバを認証することができる。認証された場合、クライアントは、検証のためにこのデバイス固有の署名付き証明書をサーバに送信することができる。正しい署名付き証明書を受信したサーバは、データが適切にシール解除されたと仮定することができる。これは適切にインスタンス化されたセキュアエンクレイブを持つ適切なデバイスでのみ行うことができる。上記認証プロセスは、Intelが提案したように、リモート認証と同様に安全であると想定されている。また、双方向のリモート認証のためのシンプルで安全な方法を提供し、特別なサーバや認証サービスの登録と使用を必要としない。また、各デバイスが個別に認証および認識されるため、危険に曝されていると仮定した場合に、特定のデバイスを無効化するオプションを提供することもできる。
【0086】
特定の実施形態によれば、
図3および
図5を参照して上述したようなモジュールのグループ間で入力データを安全に共有するために使用されるセキュアリングキャッシュ300の実施形態と同様のリングデータ構造を、関連するエンティティおよびモジュール間で処理された出力データを安全に共有するために使用することができ、よって、出力データに転送するための安全な出力パスを形成することができる。一実施形態では、第2のリングキャッシュは、同様の実施メカニズムで作成することができ、処理されたデータを出力するために関連するモジュールの第2のグループの間で使用することができる。モジュールの第2のグループは、少なくとも、例えば、リモート環境から処理されたデータを受信して第2のリングキャッシュに書き込むためのライタモジュールとして機能することができるRDPクライアントモジュールと、第2のリングキャッシュから処理されたデータを読み出すためのリーダモジュールの1つとして機能することができる出力管理モジュールとを含むことができる。第2のグループに参加する他のモジュールが存在する可能性がある。別の実施形態では、同じセキュアリングキャッシュ300を、入力データおよび出力データの両方を共有するために使用することができ、その場合、リングに書き込む2以上のライタ(例えば、入力管理モジュールおよびRDPクライアント)が存在する可能性があり、よって調整する必要がある。本開示は、その特定の実施形態によって限定されるものではない。
【0087】
図面に示して上述した実施例は、例示のみを目的とするものであり、如何なる方法であっても本開示を限定するものと見なされるべきではないことに留意されたい。当業者であれば、例示した実施例に加えて、またはその代わりに、他の適切な実施形態または例示を使用できることを容易に理解するであろう。
【0088】
また、
図4〜
図6に示すフローチャートは、システム100の要素を参照して記載されているが、これに拘束されるものではなく、それぞれの操作は、本明細書に記載されたもの以外の要素によって実行できることに留意されたい。
【0089】
本発明は、その用途において、本明細書に含まれるか又は図面に示される記載に述べられた詳細に限定されないことを理解されたい。本発明は、他の実施形態が可能であり、様々な方法で実施および実行することができる。このため、本明細書で用いられている表現および用語は、説明を目的とするものであり、限定的なものと見なされるべきではないことを理解されたい。よって、当業者であれば、本開示の基礎となる概念が、本開示の主題のいくつかの目的を遂行するための他の構造、方法およびシステムを設計するための基礎として容易に利用できることを理解するであろう。
【0090】
また、本発明に係るシステムは、少なくとも部分的には、適切にプログラムされたコンピュータ上に実装されてもよいことが理解されるであろう。同様に、本発明は、本発明の方法を実行するためにコンピュータによって読み取り可能なコンピュータプログラムを企図している。さらに、本発明は、本発明の方法を実行するためにコンピュータによって実行可能な命令のプログラムを有形に具現化する非一時的なコンピュータ可読メモリも企図している。
【0091】
当業者であれば、添付の特許請求の範囲で規定された本発明の範囲から逸脱することなく、上述した本発明の実施形態に様々な修正および変更を適用できることを容易に理解するであろう。
【国際調査報告】