IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アップル インコーポレイテッドの特許一覧

<>
  • 特許-構成設定の安全な署名 図1
  • 特許-構成設定の安全な署名 図2
  • 特許-構成設定の安全な署名 図3
  • 特許-構成設定の安全な署名 図4A
  • 特許-構成設定の安全な署名 図4B
  • 特許-構成設定の安全な署名 図4C
  • 特許-構成設定の安全な署名 図5
  • 特許-構成設定の安全な署名 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】構成設定の安全な署名
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231219BHJP
   H04L 9/32 20060101ALI20231219BHJP
   H04L 9/10 20060101ALI20231219BHJP
   G06F 21/64 20130101ALI20231219BHJP
   G06F 21/72 20130101ALI20231219BHJP
   G06F 21/62 20130101ALI20231219BHJP
【FI】
G06F21/57 350
H04L9/32 200B
H04L9/32 200E
H04L9/10 A
G06F21/64
G06F21/72
G06F21/62 309
【請求項の数】 19
(21)【出願番号】P 2022577761
(86)(22)【出願日】2021-06-18
(65)【公表番号】
(43)【公表日】2023-07-19
(86)【国際出願番号】 US2021038039
(87)【国際公開番号】W WO2021262545
(87)【国際公開日】2021-12-30
【審査請求日】2022-12-16
(31)【優先権主張番号】63/042,050
(32)【優先日】2020-06-22
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/092,030
(32)【優先日】2020-11-06
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
【氏名又は名称原語表記】Apple Inc.
【住所又は居所原語表記】One Apple Park Way,Cupertino, California 95014, U.S.A.
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】コヴェ, ゼノ エス.
(72)【発明者】
【氏名】スクレイ, ニコライ
(72)【発明者】
【氏名】メンシュ, トーマス ピー.
(72)【発明者】
【氏名】ベンソン, ウェイド
(72)【発明者】
【氏名】ハウク, ジェラルド ヴィー.
(72)【発明者】
【氏名】デ チェーザレ, ジョシュ ピー.
(72)【発明者】
【氏名】ジェニンング, オースティン ジー.
(72)【発明者】
【氏名】ドン, ジョン ジェイ.
(72)【発明者】
【氏名】グラハム, ロバート シー.
(72)【発明者】
【氏名】フォルティエ, ジャック
【審査官】岸野 徹
(56)【参考文献】
【文献】国際公開第2012/160760(WO,A1)
【文献】特開2018-038036(JP,A)
【文献】特開2006-139489(JP,A)
【文献】特表2008-541279(JP,A)
【文献】特開2012-113616(JP,A)
【文献】米国特許出願公開第2018/0365427(US,A1)
【文献】米国特許出願公開第2013/0111605(US,A1)
【文献】米国特許第10057243(US,B1)
【文献】特開2018-117185(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
H04L 9/32
H04L 9/10
G06F 21/64
G06F 21/72
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
コンピューティングデバイスであって、
プロセッサと、
セキュア回路であって、
公開鍵ペアを生成し、
前記公開鍵ペアの秘密鍵を使用して、前記コンピューティングデバイスのオペレーティングシステムのための構成設定に署名し、前記構成設定は前記コンピューティングデバイスの動作を保護するために前記オペレーティングシステムによって実施される1つ以上の保護システムを有効又は無効にする1つ以上のセキュリティ設定を含む、ように構成された、セキュア回路と、
前記プロセッサによって実行可能なプログラム命令が記憶されたメモリと、を備え、前記プログラム命令は、前記コンピューティングデバイスに、
ブートローダにおいて、認証局から前記公開鍵ペアのための証明書を受信させ、
前記ブートローダによって、前記オペレーティングシステムをロードするためのブートシーケンスを開始させる、ように実行可能であり、前記ブートシーケンスは、前記ブートローダが、前記証明書及び前記公開鍵ペアに含まれる公開鍵を使用して前記署名された構成設定を検証することを含む、コンピューティングデバイス。
【請求項2】
前記セキュア回路は、
ユーザのパスコードに基づいて前記秘密鍵を暗号的に保護するように更に構成されており、前記パスコードは、前記コンピューティングデバイスに対して認証するために前記ユーザによって使用可能である、請求項1に記載のコンピューティングデバイス。
【請求項3】
前記セキュア回路は、
前記コンピューティングデバイスを他のコンピューティングデバイスから一意に識別する一意識別子(UID)を記憶し、
前記セキュア回路によって記憶された前記UIDに基づいて、前記秘密鍵を暗号的に保護する、ように更に構成されている、請求項2に記載のコンピューティングデバイス。
【請求項4】
前記プログラム命令は、前記コンピューティングデバイスに、
前記構成設定を変更する要求を前記ユーザから受信させ、前記要求は前記パスコードを含み、
前記要求に応答して、前記構成設定及び前記パスコードの変更されたバージョンを前記セキュア回路に提供させる、ように更に実行可能であり、
前記セキュア回路は、
前記パスコードを使用して、前記秘密鍵へのアクセスを取得し、
前記秘密鍵を使用して、前記構成設定の前記変更されたバージョンに署名する、ように更に構成されている、
請求項2に記載のコンピューティングデバイス。
【請求項5】
前記プログラム命令は、前記コンピューティングデバイスに、
前記構成設定を変更する前記要求に応答して、
前記構成設定の前記変更されたバージョンに包含するためのノンスを生成させ、
前記セキュア回路に、前記秘密鍵を使用して、前記構成設定の前記変更されたバージョンの前記署名を用いて前記ノンスに署名させる、ように更に実行可能である、請求項4に記載のコンピューティングデバイス。
【請求項6】
前記プログラム命令は、前記コンピューティングデバイスに、
ユーザ資格情報の検証と、所有者が前記コンピューティングデバイスの無効化を要求していないことの確認とを実行するように動作可能なサーバシステムに前記ユーザ資格情報を送信させ、
前記検証及び前記確認に基づいて、前記コンピューティングデバイスが前記秘密鍵の証明を要求することを許可されていることを示す認証を前記サーバシステムから受信させ、
前記認証と、前記公開鍵ペアについての証明書署名要求とを、前記コンピューティングデバイスの外部の認証局に送信させる、ように更に実行可能である、請求項1に記載のコンピューティングデバイス。
【請求項7】
前記セキュア回路は、
前記コンピューティングデバイス内の特定のハードウェアの存在を識別するために、製造時に埋め込まれたハードウェア識別子を読み取り、
前記証明書署名要求に署名するために前記ハードウェア識別子を使用する、ように更に構成されている、請求項6に記載のコンピューティングデバイス。
【請求項8】
前記プログラム命令は、前記コンピューティングデバイスに、
前記セキュア回路から前記署名された構成設定を取得する前に、前記オペレーティングシステムが、サーバシステムから、前記サーバシステムによって署名された構成設定の初期セットを要求するリカバリモードに、前記オペレーティングシステムをブートさせ、
前記署名された構成設定が前記セキュア回路から取得されるまで、前記オペレーティングシステムによる使用のために前記構成設定の初期セットを提供させる、ように更に実行可能である、請求項1に記載のコンピューティングデバイス。
【請求項9】
前記オペレーティングシステムは、前記メモリに記憶されたプログラム命令を有する複数のオペレーティングシステムのうちの1つであり、
前記セキュア回路は、
前記秘密鍵を使用して、前記複数のオペレーティングシステムのそれぞれの構成設定に署名するように構成されている、請求項1に記載のコンピューティングデバイス。
【請求項10】
方法であって、
コンピューティングデバイスのセキュア回路に、前記コンピューティングデバイスのオペレーティングシステムのための構成設定に署名するために、秘密鍵を使用する要求を送信することであって、前記構成設定は、前記コンピューティングデバイスによって実施される1つ以上のセキュリティシステムを制御する、ことと、
前記コンピューティングデバイスによって、前記オペレーティングシステムをロードするためのブートシーケンスであって、前記ブートシーケンスが、
前記署名された構成設定と、前記秘密鍵を含む公開鍵ペアに対して発行された証明書とを読み取ることと、
前記証明書に含まれる公開鍵を使用して、前記署名された構成設定を検証することと、を含む、ブートシーケンスを開始することと、
を含む、方法。
【請求項11】
前記セキュア回路に、前記構成設定に署名するための前記秘密鍵へのアクセスを取得するために、ユーザのパスコードを提供すること、
を更に含む、請求項10に記載の方法。
【請求項12】
前記セキュア回路によって署名された前記構成設定に包含するためのノンスを生成することと、
前記署名された構成設定を検証するときに、前記ノンスの前記包含を検証することと、
を更に含む、請求項10に記載の方法。
【請求項13】
前記オペレーティングシステムを、前記オペレーティングシステムがサーバシステムから、前記サーバシステムによって署名された構成設定の初期セットを要求するリカバリモードにブートすることと、
前記署名された構成設定が前記セキュア回路から取得されるまで、前記構成設定の初期セットを使用することと、
を更に含む、請求項10に記載の方法。
【請求項14】
コンピューティングデバイスによって実行可能であるプログラム命令を有するコンピュータプログラムであって、前記プログラム命令は、前記コンピューティングデバイスに、
前記コンピューティングデバイスのセキュア回路に、前記コンピューティングデバイスのオペレーティングシステムのための構成設定に署名するために秘密鍵を使用する要求を送信することであって、前記構成設定は、前記コンピューティングデバイスによって実施される1つ以上のセキュリティシステムを制御する、ことと、
ブートローダによって、前記オペレーティングシステムをロードするためのブートシーケンスを開始することと、を含む動作を実行させ、前記ブートシーケンスは、
前記ブートローダによって、前記署名された構成設定と、前記秘密鍵を含む公開鍵ペアに対して発行された証明書とを読み取ることと、
前記ブートローダによって、前記証明書に含まれる公開鍵を使用して、前記署名された構成設定を検証することと、を含む、コンピュータプログラム。
【請求項15】
前記動作は、
前記セキュア回路に、ユーザのパスコードを提供して、前記構成設定に署名するための前記秘密鍵へのアクセスを取得することを更に含む、請求項14に記載のコンピュータプログラム。
【請求項16】
前記動作は、
前記セキュア回路によって署名された前記構成設定に包含するためのノンスを生成することと、
前記ブートローダが、前記署名された構成設定を検証するときに、前記ノンスの前記包含を検証することと、を更に含む、請求項14に記載のコンピュータプログラム。
【請求項17】
前記動作は、
前記ブートローダによって、前記オペレーティングシステムが、サーバシステムから、前記サーバシステムによって署名された構成設定の初期セットを要求するリカバリモードに、前記オペレーティングシステムをブートすることと、
前記署名された構成設定が前記セキュア回路から取得されるまで、前記構成設定の初期セットを使用することと、を更に含む、請求項14に記載のコンピュータプログラム。
【請求項18】
装置であって、
プロセッサと、
セキュア回路であって、
公開鍵ペアを生成し、
前記公開鍵ペアの秘密鍵を使用して、前記装置のオペレーティングシステムのための構成設定に署名する、ように構成された、セキュア回路と、
前記プロセッサによって実行可能なプログラム命令が記憶されたメモリと、を備え、前記プログラム命令は、前記装置に、
ブートローダにおいて、認証局から前記公開鍵ペアのための証明書を受信させ、
前記ブートローダによって、前記オペレーティングシステムをロードするためのブートシーケンスを開始させ、前記ブートシーケンスは、前記ブートローダが、前記証明書及び前記公開鍵ペアに含まれる公開鍵を使用して前記署名された構成設定を検証することを含み、
ユーザのパスコードに基づいて前記秘密鍵を暗号的に保護させ、前記パスコードは、前記装置に対して認証するために前記ユーザによって使用可能であり、
前記構成設定を変更する要求を前記ユーザから受信させ、前記要求は前記パスコードを含み、
前記要求に応答して、前記構成設定及び前記パスコードの変更されたバージョンを前記セキュア回路に提供させる、ように実行可能であり、
前記セキュア回路は、
前記パスコードを使用して、前記秘密鍵へのアクセスを取得し、
前記秘密鍵を使用して、前記構成設定の前記変更されたバージョンに署名する、ように更に構成されている、装置。
【請求項19】
装置であって、
プロセッサと、
セキュア回路であって、
公開鍵ペアを生成し、
前記公開鍵ペアの秘密鍵を使用して、前記装置のオペレーティングシステムのための構成設定に署名する、ように構成された、セキュア回路と、
前記プロセッサによって実行可能なプログラム命令が記憶されたメモリと、を備え、前記プログラム命令は、前記装置に、
ユーザ資格情報の検証と、所有者が前記装置の無効化を要求していないことの確認とを実行するように動作可能なサーバシステムに前記ユーザ資格情報を送信させ、
前記検証及び前記確認に基づいて、前記装置が前記秘密鍵の証明を要求することを許可されていることを示す認証を前記サーバシステムから受信させ、
前記認証と、前記公開鍵ペアについての証明書署名要求とを、前記装置の外部の認証局に送信させ、
ブートローダにおいて、前記認証局から前記公開鍵ペアのための証明書を受信させ、
前記ブートローダによって、前記オペレーティングシステムをロードするためのブートシーケンスを開始させように実行可能であり、前記ブートシーケンスは、前記ブートローダが、前記証明書及び前記公開鍵ペアに含まれる公開鍵を使用して前記署名された構成設定を検証することを含む、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にコンピューティングデバイスに関し、より詳細には、ブート中にコンピューティングデバイスを保護することに関する。
【背景技術】
【0002】
(関連技術の説明)
コンピュータは、電源が投入されると、ブートストラッピング手順を実行して、最終的にオペレーティングシステムをロードすることができる。この手順を実行することの一部として、コンピュータは、オペレーティングシステムによって使用される様々なリソース及びロードドライバを初期化し得る。コンピュータはまた、コンピュータが意図されたように動作していることを判定するために様々なチェックを実行することができる。これらのチェックは、例えば、メモリ、ユーザインタフェースデバイス、プロセッサ機能などをテストすることを含み得る。コンピュータはまた、セキュリティ侵害に対して特に脆弱であり得るので、コンピュータは、例えば、ブートローダ及びオペレーティングシステムが更なる実行を可能にする前に改ざんされていないことを確認するために、様々なチェックを実行し得る。
【図面の簡単な説明】
【0003】
図1】ブートシーケンス中に構成設定をセキュアに検証するように構成されたコンピューティングデバイスの一例を示すブロック図である。
【0004】
図2】構成設定に署名するために使用される鍵に対する証明書署名要求のためのコンポーネントの生成の一例を示すブロック図である。
【0005】
図3】構成設定に署名するためのプロセスの一例を示す通信図である。
【0006】
図4A】構成設定を安全に検証するための方法の例を示す流れ図である。
図4B】構成設定を安全に検証するための方法の例を示す流れ図である。
図4C】構成設定を安全に検証するための方法の例を示す流れ図である。
【0007】
図5】コンピューティングデバイスに含まれるセキュアエンクレーブプロセッサ内の要素の一例を示すブロック図である。
【0008】
図6】例示的なコンピューティングデバイスの一実施形態のブロック図である。
【0009】
本開示は、「one embodiment(一実施形態)」又は「an embodiment(ある実施形態)」に対する参照を含む。「in one embodiment(一実施形態において)」又は「in an embodiment(ある実施形態において)」という語句表現は、必ずしも同一の実施形態を指すわけではない。特定の特徴、構造、又は特性は、本開示と一貫性を有するいずれかの適切な方式で組み合わされてもよい。
【0010】
本開示内で、(「ユニット」、「回路」、他の構成要素などと様々に呼ばれることがある)様々な実在物は、1つ以上のタスク又は動作を実施するように「構成されている(configured)」ものとして記述又は主張されることがある。[1つ以上のタスクを実施する]ように構成されている[実在物]というこの表現は、本明細書では構造(すなわち、電子回路など、物理的なもの)を指すために使用される。より具体的には、この表現は、この構造が動作中に1つ以上のタスクを実施するように配置されたことを示すために使用される。構造は、その構造が現在動作していない場合でも、何らかのタスクを実施する「ように構成されている」と述べられることがある。「オペレーティングシステムの構成設定に署名するように構成されたセキュア回路」は、例えば、対象の集積回路が現在使用されていない(例えば、電力供給装置がそれに接続されていない)場合でさえ、動作中にこの機能を実行する回路(例えば、専用暗号ハードウェア)を有する集積回路を網羅することが意図される。このように、何らかのタスクを実施する「ように構成されている」ものとして記述又は説明されるエンティティは、デバイス、回路、そのタスクを実現するように実行可能なプログラム命令を記憶したメモリなど、物理的なものを指す。この語句は、本明細書では無形のものを指すためには使用されない。したがって、「~のように構成されている」との言い方は、本明細書では、アプリケーションプログラミングインタフェース(application programming interface、API)などのソフトウェアエンティティを指すためには使用されない。
【0011】
「~ように構成されている」という用語は、「~ように構成可能な」を意味することを意図していない。例えば、プログラムされていないFPGAは、何らかの特定の機能を実行する「ように構成可能」であり得るが、その機能を実施する「ように構成されている」とは見なされず、プログラミング後にその機能を実施する「ように構成されている」と言えよう。
【0012】
添付の請求項において、ある構造が1つ以上のタスクを実行する「ように構成されている」と説明することは、その請求項要素について米国特許法第112条(f)を援用しないことを明示的に意図している。したがって、出願された本出願中の請求項のいずれも、ミーンズプラスファンクション要素を有するものとして解釈されることを意図していない。出願人が審査過程中に112条(f)を援用することを望む場合、それは、[機能を実行する]「ための手段」という構成体を使用して請求項要素を説明することになる。
【0013】
本明細書で使用される用語「第1の」、「第2の」等は、名詞の前に付くラベルとして使用され、特に言及しない限りいかなるタイプの順序(例えば、空間的、時間的、論理的、等)も意味しない。例えば、セキュア回路は、第1及び第2の暗号鍵を導出することができる。「第1の」という用語は、セキュア回路によって導出される初期暗号鍵に限定されない。「第1の」という用語は、鍵が1つだけ存在する場合にも使用されてよい。
【0014】
本明細書で使用する「~に基づいて」という用語は、判定に影響を及ぼす1つ以上の要因を記述するために使用される。この用語は、追加の要因が判定に影響を及ぼすことがある可能性を除外しない。すなわち、決定は、指定された要因のみに基づくか、又は、指定された要因並びに他の指定されていない要因に基づき得る。「Bに基づいてAを判定する」という語句を検討する。この語句により、Bは、Aを判定するために使用されるか、又はAの判定に影響を及ぼす要因であることが特定される。この語句は、Aの判定が、Cなど、何らかの他の要因にも基づき得ることを除外しない。この語句は、AがBのみに基づいて判定される実施形態をも網羅することを意図している。本明細書で使用する「~に基づいて」という語句はしたがって、「~に少なくとも部分的に基づいて」という語句と同義である。
【発明を実施するための形態】
【0015】
オペレーティングシステムは、コンピューティングデバイスの挙動を修正するために変更され得る様々な構成設定を提供することができる。これらの設定は、例えば、デバイスセキュリティ、ネットワークインタフェース挙動、ユーザアカウントアクセス、アクセシビリティ機能などに関連し得る。これらの設定の変更を容易にするために、オペレーティングシステムは、これらの設定を変更することができるユーザインタフェース(例えば、コントロールパネル)又はアクセス可能な構成ファイルを提供し得る。これらの設定の変更は、ユーザが自分のデバイスの動作をパーソナライズすることを有利に可能にすることができるが、これらの設定はまた、権限のない行為者がこれらの設定を悪意のある方法で修正しようと試みる可能性があるため、潜在的な脆弱性を提示する。例えば、権限のない行為者は、デバイスを更に危険にさらすために、デバイスの様々なセキュリティ機能を無効にしようと試みることがある。
【0016】
本開示は、コンピューティングデバイスの構成設定が、例えば、設定の無許可の修正を防止するために、コンピューティングデバイス内のセキュアハードウェアによってセキュアに署名される実施形態を説明する。様々な実施形態において以下で説明されるように、コンピューティングデバイス内のセキュア回路は、構成設定に署名するためにセキュア回路によって使用される秘密鍵を生成及び維持する。コンピューティングデバイスのブートシーケンスが開始されると、ブートローダは、秘密鍵に対応する公開鍵を使用して署名された構成設定を検証する。セキュア回路が署名を実行していることを確立するために、セキュア回路は、署名された構成設定に対する更なる信頼のしるしを提供するために、ブートローダによって信頼される認証局が公開鍵ペアを認証することを要求し得る。いくつかの実施形態では、構成設定に署名するために使用される秘密鍵は、許可されたユーザのパスコードに基づいてセキュア回路によって暗号的に保護される。したがって、ユーザが設定を変更したい場合、ユーザは、セキュア回路が秘密鍵へのアクセスを取得し、変更された設定に署名することを可能にするためにパスコードを提供することができる。一方、ユーザがパスコードを提示することができない場合、ユーザは、設定を変更することを禁止され得る。いくつかの実施形態では、更なるセキュリティを追加するために、秘密署名鍵の証明は、例えば、デバイスが紛失又は盗難されたことを報告する所有者によってアクティブ化ロックがデバイスにかけられていないことを確認するために、コンピューティングデバイスが(例えば、デバイスの製造業者に関連付けられた)外部サーバに接触することを条件としてもよい。
【0017】
ここで図1を参照すると、オペレーティングシステムの構成設定を検証するためのシステム10のブロック図が示されている。図示された実施形態において、システム10は、コンピューティングデバイス100と、コンピューティングデバイス100の外部にある認証局(CA)20とを含む。コンピューティングデバイス100は、中央処理装置(CPU)110、不揮発性メモリ(NVM)120、及びセキュアエンクレーブプロセッサ(SEP)130を含んでもよく、これらは相互接続140を介して接続されてもよい。NVM120は、オペレーティングシステム(OS)122と、ブートローダ124と、構成設定126とを含み得る。SEP130は、暗号エンジン132を含むことができる。いくつかの実施形態では、コンピューティングデバイス100は、図に示すものとは異なるように実装されてもよい。したがって、デバイス100は、図6に関して以下で説明するような追加の構成要素を含むことができる。いくつかの実施形態では、要素122~126は、異なるメモリ内にあってもよい。
【0018】
OS122は、様々な実施形態において、コンピューティングデバイス100の様々な動作を管理するために実行可能なオペレーティングシステムである。したがって、OS122は、コンピューティングデバイス100の様々なハードウェアリソースとのインタフェースを容易にする様々なドライバを含むことができる。OS122はまた、デバイスリソースのスケジューリング及び管理を容易にするためのカーネルを含み得る。OS122はまた、様々なサービスを提供するためにデバイス100内のハードウェアによって実行される様々なファームウェアを含んでもよい。上述したように、OS122は、OS122(又はより一般的にはコンピューティングデバイス100)の動作を制御する様々な構成設定126を読み取ることができる。これらの構成設定126は、上記のような任意の適切な設定に対応することができる。例えば、いくつかの実施形態では、構成設定は、コンピューティングデバイス100の動作を保護するためにOS122によって実施される1つ以上の保護システムを有効又は無効にする1つ以上のセキュリティ設定を含む。例えば、一実施形態において、OS122は、OS122のカーネル空間に存在するような重要なシステムファイルへのアクセスを制限するために使用されるファイル保護システムを実装してもよく、設定126は、この保護を有効又は無効にするための設定を含んでもよい。単一のOS122が図1に示されているが、いくつかの実施形態では、OS122は、複数のオペレーティングシステムのうちの1つであってもよく、各々が、本明細書で説明される技法を使用して保護され得る、関連する設定126のセットを有する。
【0019】
ブートローダ124は、様々な実施形態において、コンピューティングデバイス100のOS122などのオペレーティングシステムをブート/ロードするために、CPU110によって実行可能である。したがって、ブートローダ124は、デバイス100上の初期化ハードウェアの処理、1つ以上の検証チェックの実行、OSカーネルの実行の開始などを含むブートシーケンスを実行することができる。いくつかの実施形態では、ブートローダ124は、unified extensible firmware interface(UEFI)仕様に準拠する。上述したように、様々な実施形態において、ブートローダ124は、例えば、設定126が不正に変更されていないことを確実にするために、ブートプロセス中に構成設定126を更に検証する。以下で説明するように、ブートローダ124は、公開鍵を含む証明書128と共にSEP130によって生成された署名127を使用して構成設定を検証することができる。
【0020】
SEP130は、様々な実施形態において、コンピューティングデバイス100のための暗号サービスを実行するように構成されたセキュア回路である。本明細書で使用する「セキュア回路」という用語は、1つ以上のサービスを実行し、認証された応答を外部要求者に返すように構成された回路のクラスのうちの1つを指す。セキュア回路によって返された結果は、いかなる形態の認証もなしで単に結果を返す回路の信頼性を超える信頼性のしるしを有すると考えられる。いくつかの実施形態では、SEP130からの応答は、デジタル署名又は暗号化されたデータを提供するなど、暗号法の使用を通じて認証される。いくつかの実施形態では、SEP130からの応答は、SEP130と以下で説明する他の当事者との間の専用バス又はメールボックス機構などの信頼できる通信チャネルを介して通信されることによって認証される。例えば、様々な実施形態において、SEP130及びNVM120のNVMコントローラは、共有暗号鍵を使用して確立されたセキュアチャネルを介して通信する。対照的に、単に何らかの受信された値に対して動作し、結果を返すハードウェアアクセラレータなどの回路は、本出願の意味の範囲内のセキュア回路とは見なされない。例えば、検証可能なデジタル署名で署名することなどによって、返される結果を認証することによって、セキュア回路は、なりすまし防止機能を提供することができる。更に、場合によっては、セキュア回路は、「改ざん防止性」であると言われることがあり、この用語は、1つ以上のサービスを実行するセキュア回路の部分の危殆化を防止する機構を指す、当該技術分野の用語である。
【0021】
様々な実施形態において、SEP130は、署名127を生成するために構成設定126に署名するための秘密鍵(署名鍵134として示される)を有する公開鍵ペアを生成するように(暗号エンジン132を介して)構成される。いくつかの実施形態では、署名鍵134は、権限のない行為者がユーザの同意なしに設定126を修正することを防止するために、鍵134へのSEP130のアクセスを制限するために、権限のあるユーザのパスコードに基づいて暗号的に保護される。いくつかの実施形態では、署名鍵134はまた、SEP130に記憶され、コンピューティングデバイスを他のコンピューティングデバイスから一意に識別する一意識別子によって保護される。この一意識別子の保護は、例えば、構成設定126が別のコンピューティングデバイスにその使用のために提供されること(又は逆に、コンピューティングデバイス100が別のデバイスから取得された構成設定を使用すること)を防止するために実行されてもよい。署名鍵134に対する更なる信頼のしるしを提供するために、図示された実施形態では、SEP130は、ブートローダ124によって信頼され得るCA20が署名鍵134を認証することを要求する。本明細書で使用される場合、「認証された鍵」という用語は、概して、証明書128などの対応する証明書が発行されている鍵ペアの公開鍵又は秘密鍵を指す。
【0022】
CA20は、様々な実施形態において、公開鍵の所有権を認証し、所有者が対応する秘密鍵を所有していることを検証するために使用可能な証明書を発行する。示されるように、SEP130は、SEP130によって生成された公開鍵ペアのために証明書署名要求(CSR)136をCA20に発行することによって、署名鍵134の証明を要求することができる。本明細書で使用される場合、「証明書署名要求」という用語は、一般に、公開鍵ペアの有効性を証明する情報の集合を検証するための、信頼できる機関に対する要求を指す。CSR136は、任意の適切な情報を含み得る。いくつかの実施形態では、CSR136は、鍵134の意図された使用の識別子(例えば、署名設定126)と、公開鍵と、対応する秘密鍵(すなわち、鍵134)から生成された署名とを含む。図2に関連して以下で説明するように、いくつかの実施形態では、SEP130は更に、SEP130の製造(又は、より一般的には、コンピューティングデバイス100の製造)中に埋め込まれた識別子から導出された信頼できる鍵を使用して、CSR136のコンポーネントに署名する。いくつかの実施形態では、CSR136は、公開鍵暗号規格(PKCS)#10仕様によって定義されるような標準フォーマットに準拠する。CSR136の検証の成功に基づいて、CA20は、証明書128を発行することができる。本明細書で使用される場合、「証明書」という用語は、一般に、信頼できる機関が公開鍵ペアの有効性を証明する検証された情報を有することを確立するために提示され得る情報の集合(例えば、トークン)を指す。証明書128は、任意の適切な情報を含むことができる。いくつかの実施形態では、証明書128は、CA20の識別子、CSR136に提示される公開鍵、証明書が有効である期間、及びCA20によって保持され、ブートローダ124によって信頼される秘密鍵を使用して証明書128から生成された署名を含む。いくつかの実施形態では、証明書128は、X.509規格によって定義されるような標準フォーマットに準拠する。
【0023】
証明書128を受信すると、コンピューティングデバイス100は、証明書128を設定126と共にNVM120に記憶することができる。次いで、SEP130は、認証された署名鍵134を使用して、設定126に署名することができる。いくつかの実施形態では、これは、OS122が設定126からハッシュ値を生成し、SEP130に鍵134を用いてハッシュ値に署名させて、設定126及び証明書128と共に記憶される署名127を提供させることを含んでもよい。OS122の後続のブートが後で実行されるとき、ブートローダ124は、署名127及び証明書に含まれる公開鍵(図2に関して次に説明する公開鍵212)を使用して、署名された構成設定126を検証することができる。いくつかの実施形態では、この検証は、設定126から別のハッシュ値を生成することと、このハッシュ値を、公開鍵を使用して署名127から取得された以前のハッシュ値と比較することとを含み得る。ハッシュが一致する場合、ブートローダ124は、OS122のロードを継続し、それが設定126にアクセスすることを可能にし得る。しかしながら、設定126の検証が失敗した場合、ブートローダ124は、OS122のロードを一時停止し、デバイス100のユーザインタフェースを介して問題を識別することができる。
【0024】
様々な実施形態では、許可されたユーザが後で設定126を変更したい場合、ユーザは、自身のパスコードと共に対応する要求をOS122に提供することができる。次いで、OS122は、要求された変更を行い、構成設定126の変更されたバージョン及びパスコードをSEP130に提供することができる。次に、SEP130は、パスコードを使用して署名鍵134へのアクセスを取得し、次いで、署名鍵134を使用して構成設定126の変更されたバージョンに署名することができる。いくつかの実施形態では、構成設定126の変更されたバージョンに署名する前に、OS122(又は他の実施形態ではSEP130)は、SEP130によって署名された構成設定126の変更されたバージョンに含めるためのノンスを生成してもよい。そのような実施形態では、ブートローダ124は、設定126の以前に署名されたバージョンが再使用されることを防止するために、最も最近署名されたノンスを追跡し、それを構成設定126の署名された変更バージョンに含まれるノンスと比較することができる。
【0025】
次に図2を参照すると、CSR生成200のブロック図が示されている。図示の実施形態では、エンジン132は、1つ以上の鍵導出関数(KDF)210を実行し、その後、デジタル署名アルゴリズム(DSA)220を適用して、CSR136に含めるための署名224及び公開鍵212を生成することによって、CSR136の生成を容易にするように構成される。いくつかの実施形態では、CSR生成200は、以下で説明されるように、示されるものとは異なって実装されてもよい。
【0026】
KDF210は、図示される実施形態では、一意識別子(UID)202及びパスコード204を使用して、署名鍵134及びその対応する公開鍵212を含む公開鍵ペアを作成する。KDF210は、暗号ブロック連鎖(AES-CBC)モードにおける高度暗号化標準(AES)の適用、鍵つきハッシュメッセージ認証コード(HMAC)、セキュアハッシュアルゴリズム(SHA)などの任意の適切な鍵導出関数に対応することができる。様々な実施形態において、UID202は、コンピューティングデバイス100を他のコンピューティングデバイスから(又はコンピューティングデバイス100内のハードウェアを他のコンピューティングデバイス内の同様のハードウェアから、したがってUID202はKDF210へのハードウェアシードであり得る)一意に識別する値である。いくつかの実施形態では、UID202は、SEP130(又はより一般的にはデバイス100)の製造中にUID202を符号化するためにヒューズのセットを焼くことによってSEP130に記憶される。様々な実施形態において、パスコード204は、コンピューティングデバイス100に対して認証するためにユーザによって使用可能なパスコードである。したがって、パスコード204は、キーボード、タッチスクリーンなどのコンピューティングデバイス100の入力デバイスを介して受信され得る、ユーザが供給した英数字のシーケンスを含むことができる。2つの入力が示されているが、いくつかの実施形態では、KDF210は、初期化ベクトル(IV)、他のハードウェア識別子、ソルト、キーシードなどの追加の入力を取ることができる。
【0027】
図示された実施形態では、UID202及びパスコード204がKDF210への入力であるので、署名鍵134は、UID202及びパスコード204が鍵134を導出するために使用されるので、UID202及びパスコード204に基づいて暗号的に保護されるものとして説明され得る。他の実施形態では、署名鍵134は、間接レベルを使用することによって、UID202及びパスコード204に基づいて暗号的に保護される。すなわち、UID202及びパスコード204は、署名鍵134を暗号化し、したがって鍵134を保護するために使用されるマスタ鍵を生成するKDFへの入力であってもよいが、そのような実施形態では、署名鍵134及び公開鍵212は、UID202及びパスコード204から直接導出されなくてもよい。本明細書で使用されるように、鍵が何かを「復号/暗号化するために使用可能」であることへの言及は、鍵を用いて復号/暗号化すること、又は鍵を使用して、その物を復号/暗号化するために使用される1つ以上の追加の鍵を導出(又は復号)することのいずれかを含む。また、単一のKDF210が示されているが、いくつかの実施形態では、複数のネストされたKDF210が使用されてもよい。
【0028】
DSA220は、図示の実施形態では、CAによって信頼されるハードウェア鍵214を使用して公開鍵212に署名し、CSR136を検証するためにCA20によって使用可能な署名224を生成する。様々な実施形態において、ハードウェア鍵214は、例えば、コンピューティングデバイス内の特定のハードウェアの存在を識別するために製造時に埋め込まれたハードウェア識別子を読み取ることによって導出されるので、CA20によって信頼される。例えば、製造者は、SEP130内のヒューズを焼き付けて、SEP130などの特定のハードウェアを有することが知られている特定のクラスのデバイスの各々に生成識別子を記憶することができ、これにより、デバイスのセキュリティを向上させることができる。このハードウェア識別子は、鍵214を導出するために使用されてもよく、次に、鍵212に署名して署名224を生成するために使用される。しかしながら、他の実施形態では、署名224を生成するために他の形式の信頼できる鍵が使用されてもよい。いくつかの実施形態では、DSA220はまた、上述のノンスなどのCSR136に含まれる追加の図示されていない入力を取得してもよい。DSAとして示されているが、他の署名アルゴリズムが使用されてもよい。
【0029】
次に図3を参照すると、構成署名プロセス300の通信図が示されている。図示される実施形態では、プロセス300は、コンピューティングデバイス100のユーザ302、OS122、SEP130、1つ以上の外部サーバ304、及びCA20の間の様々な交換を含む。示されるように、プロセス300は、ステップ312~324を含むアクティブ化フェーズ310と、ステップ332~338を含む鍵証明フェーズ330と、ステップ352~358を含む構成署名フェーズ350とを含み得る。いくつかの実施形態では、モバイルデバイス300は、図に示すものとは異なるように実装されてもよい。したがって、より多くの(又はより少ない)ステップが実行されてもよい。いくつかの実施形態において、プロセス300の実行は、フェーズ330及び350のみ(又はフェーズ350のみ)の実行を含んでもよい。
【0030】
図示された実施形態では、プロセス300は、コンピューティングデバイス100を最初にセットアップし、デバイス100が署名鍵134の証明を実行することを可能にするために、アクティブ化フェーズ310から開始することができる。後述するように、いくつかの実施形態では、このフェーズ310は、署名された構成設定126がプロセス300の終了時に取得され得るまで、OS122によって使用され得る信頼された構成設定の初期セットをダウンロードすることを含み得る。いくつかの実施形態では、このフェーズ310はまた、例えば、所有者がデバイス100を紛失又は盗まれたとして外部サーバ304に報告したために、デバイスの所有者がデバイス100の起動を防止するためにロックの配置を要求したかどうかを判定するために実行されてもよい。
【0031】
図示されるように、フェーズ310は、ユーザがプロセス300を開始するための開始要求を行うステップ312で開始することができる。いくつかの実施形態では、この要求は、デバイス100の電源をオンにすることと、ブートローダ124にOS122をリカバリモードにブートさせることとを含み得る。ステップ314において、OS122は、サーバシステム304から、サーバシステム304によって署名された構成設定の初期セットを要求する。いくつかの実施形態では、この構成設定の初期セットは、デバイス100のための構成設定の一般的なセットであってもよく、信頼のしるしを設定に提供するために、外部サーバ304によって署名されてもよい。ステップ316において、外部サーバ304は、所有者がアクティブ化ロックをかけることによってコンピューティングデバイス100の無効化を要求したかどうかをチェックすることができる。ステップ318において、外部サーバ304は、署名された構成設定126をSEP130から取得することができるまで、OS122による使用のための構成設定の初期セットを提供することができる。アクティブ化ロックがデバイス100に対して設定されている場合、外部サーバ304は、アクティブ化ロックを除去するために、所有者に登録されたユーザ資格情報を要求することもできる。ステップ320において、ユーザ302は、デバイス100を介してこの所有者資格情報をサーバ304に提供することができる。外部サーバ304は、ステップ322において、所有者資格情報の検証を実行することができる。所有者資格情報の検証が成功したことに応答して(又はアクティブ化ロックがかけられていないことに応答して)、サーバ304は、ステップ324において、コンピューティングデバイス100が署名鍵134の証明を要求する権限を与えられていることを示す認証を提供する。
【0032】
次いで、プロセス300は、SEP130が認証された署名鍵134を取得する鍵証明フェーズ330に進むことができる。図示のように、フェーズ330は、SEP130が(暗号エンジン132を使用して)公開鍵212及び署名鍵134を含む公開鍵ペアを生成することから開始することができる。次いで、SEP130は、OS122によって提供され得る、ステップ324において受信された登録認証と共に、334においてCSR136をCA20に発行し得る。(署名224を使用した)CSR136の検証の成功及び登録認証に応答して、CA20は、338において、証明書128を発行し、これは、OS122によって、構成設定126と共にNVM120に記憶され得る。
【0033】
次いで、プロセス300は、SEP130が構成設定126に署名する構成署名フェーズ350で終了することができる。図示された実施形態において、フェーズ350は、352において、ユーザが設定126の変更を要求することから始まる。しかしながら、いくつかの実施形態では、このステップは、例えば、ユーザが変更を要求する任意の機会を有する前に、設定126のデフォルトセットが署名されている場合、省略されてもよい。ステップ354において、OS122は、要求された変更を行い、署名のために、変更された(現在はユーザ個人向けの)設定126をSEP130に提供することができる。いくつかの実施形態では、OS122は、設定126全体を提供するのではなく、設定126から生成されたハッシュ値を単に提供することができる。いくつかの実施形態では、ステップ354は、コンピューティングデバイス100によって実行されるバイナリ、ブートチェーンオブジェクト、キャッシュ情報など、OS122によって使用される他の情報に署名するために署名鍵134を使用することを含み得る。356において、OS122はまた、署名鍵134へのアクセスを取得するためにSEP130に提供されるパスコード204をユーザに促し得る。ステップ358において、SEP130は、署名鍵134を使用して設定126に署名し、署名127を生成することができ、これは、設定126と共にNVM120に記憶するためにOS122に返される。次のブートにおいて、ブートローダ124は、この署名127を証明書128と共に使用して、設定126の完全性を検証することができる。
【0034】
ここで図4Aを参照すると、方法400のフロー図が示されている。方法400は、コンピューティングデバイス100などのコンピューティングデバイスの構成設定をセキュアに検証するための方法の一実施形態である。多くの場合、方法400の性能は、コンピューティングデバイスの全体的なセキュリティを改善することができる。
【0035】
方法400は、ステップ405において、コンピューティングデバイスのセキュア回路(例えば、SEP130)が公開鍵ペア(例えば、鍵134及び212)を生成することから始まる。いくつかの実施形態では、コンピューティングデバイスは、ユーザ資格情報(例えば、320における所有者資格情報)を、ユーザ資格情報の検証と、所有者がコンピューティングデバイスの無効化を要求していないことの確認とを実行するように動作可能なサーバシステムに送信する。検証及び確認に基づいて、コンピューティングデバイスは、サーバシステムから、コンピューティングデバイスが秘密鍵の証明を要求する権限を与えられていることを示す認証(例えば、324における登録認証)を受信し、認証及び公開鍵ペアに対する証明書署名要求(例えば、CSR136)をコンピューティングデバイスの外部の認証局(例えば、CA20)に送信する。いくつかの実施形態では、セキュア回路は、コンピューティングデバイス内の特定のハードウェアの存在を識別するために製造時に埋め込まれたハードウェア識別子(例えば、ハードウェア鍵214)を読み取り、そのハードウェア識別子を使用して証明書署名要求に署名する(例えば、署名224を介して)。
【0036】
ステップ410において、セキュア回路は、公開鍵ペアの秘密鍵(例えば、署名鍵134)を使用して、コンピューティングデバイスのオペレーティングシステム(例えば、OS122)のための構成設定(例えば、構成設定126)に署名する。様々な実施形態において、セキュア回路は、ユーザのパスコード(例えば、パスコード204)に基づいて秘密鍵を暗号的に保護し、パスコードは、コンピューティングデバイスに対して認証するためにユーザによって使用可能である。いくつかの実施形態では、セキュア回路は、コンピューティングデバイスを他のコンピューティングデバイスから一意に識別する一意識別子(UID)(例えば、UID202)を記憶し、セキュア回路によって記憶されたUIDに基づいて秘密鍵を暗号的に保護する。いくつかの実施形態では、構成設定は、コンピューティングデバイスの動作を保護するためにオペレーティングシステムによって実装される1つ以上の保護システムを有効又は無効にする1つ以上のセキュリティ設定を含む。いくつかの実施形態では、オペレーティングシステムは、メモリに記憶されたプログラム命令を有する複数のオペレーティングシステムのうちの1つであり、セキュア回路は、秘密鍵を使用して、複数のオペレーティングシステムのうちのそれぞれのオペレーティングシステムの構成設定に署名する。
【0037】
ステップ415において、コンピューティングデバイスは、ブートローダ(例えば、ブートローダ124)において、公開鍵ペアについての証明書(例えば、証明書128)を認証局から受信する。
【0038】
ステップ420において、コンピューティングデバイスは、ブートローダによって、オペレーティングシステムをロードするためのブートシーケンスを開始する。様々な実施形態において、ブートシーケンスは、ブートローダが、証明書に含まれる、公開鍵ペアの公開鍵(例えば、公開鍵212)を使用して、署名された構成設定を検証することを含む。
【0039】
様々な実施形態において、方法400は、コンピューティングデバイスが、構成設定を変更するために、パスコードを含む要求(例えば、352における設定変更)をユーザから受信することを更に含む。要求に応答して、コンピューティングデバイスは、構成設定及びパスコードの変更されたバージョンをセキュア回路に提供する。セキュア回路は、パスコードを使用して秘密鍵へのアクセスを取得し、秘密鍵を使用して構成設定の変更されたバージョンに署名する。いくつかの実施形態では、構成設定を変更する要求に応答して、コンピューティングデバイスは、構成設定の変更されたバージョンに含めるためのノンスを生成し、セキュア回路に、秘密鍵を使用させて、構成設定の変更されたバージョンの署名でノンスに署名させる。いくつかの実施形態において、セキュア回路から署名された構成設定を取得する前に、コンピューティングデバイスは、オペレーティングシステムをリカバリモードにブートし、リカバリモードでは、オペレーティングシステムは、サーバシステムから、サーバシステムによって署名された構成設定の初期セット(例えば、318における汎用署名設定)を要求し、署名された構成設定がセキュア回路から取得されるまで、オペレーティングシステムによる使用のために構成設定の初期セットを提供する。
【0040】
ここで図4Bを参照すると、方法430のフロー図が示されている。方法430は、コンピューティングデバイスの構成設定を安全に検証するための方法の一実施形態であり、外部CA20などの認証局を実装するサーバシステムによって実行される。
【0041】
方法430は、ステップ435において、サーバシステムが、コンピューティングデバイスのセキュア回路によって生成された公開鍵ペアに対する証明書署名要求(例えば、CSR136)を受信することから始まる。いくつかの実施形態では、サーバシステムは、証明書署名要求の署名(例えば、署名224)を検証し、署名は、コンピューティングデバイス内の特定のハードウェアの存在を識別するために製造時に埋め込まれたハードウェア識別子(例えば、ハードウェア鍵214)を使用して生成される。様々な実施形態において、証明書を発行する前に、サーバシステムは、コンピューティングデバイスから受信したユーザ資格情報(例えば、320における所有者資格情報)を検証し、コンピューティングデバイスの所有者がコンピューティングデバイスの無効化を要求していないことを確認する。いくつかの実施形態では、検証及び確認に基づいて、サーバシステムは、コンピューティングデバイスが公開鍵ペアの証明を要求する権限を与えられていることを示す認証(例えば、324における登録認証)を提供し、認証が証明書署名要求と共に提供されていることを検証する。
【0042】
ステップ440において、サーバは、公開鍵ペアに対する証明書(例えば、証明書128)を発行する。様々な実施形態において、発行することは、コンピューティングデバイスのブートローダ(例えば、ブートローダ124)によって信頼される秘密鍵で証明書に署名することを含み、ブートローダは、セキュア回路によって生成される公開鍵ペアの秘密鍵(例えば、認証された署名鍵134)によって署名されるオペレーティングシステム(例えば、OS122)のための構成設定(例えば、構成設定126)を検証するためにブートシーケンス中に証明書を使用するように実行可能である。いくつかの実施形態では、構成設定が署名される前に、サーバシステムは、署名された構成設定がセキュア回路から取得されるまで、オペレーティングシステムによる使用のために構成設定の初期セット(例えば、318における汎用署名設定)を提供する。
【0043】
ここで図4Cを参照すると、方法460のフロー図が示されている。方法460は、コンピューティングデバイス100などのコンピューティングデバイスの構成設定を安全に検証するための方法の別の実施形態である。
【0044】
方法460は、ステップ465において、コンピューティングデバイスのオペレーティングシステム(例えば、OS122)のための構成設定(例えば、設定126)に署名するために秘密鍵(例えば、認証された署名鍵134)を使用する要求をコンピューティングデバイスのセキュア回路(例えば、SEP130)に送信することから始まる。いくつかの実施形態では、ユーザのパスコード(例えば、パスコード204)がセキュア回路に提供されて、構成設定に署名するための秘密鍵へのアクセスを取得する。いくつかの実施形態では、ノンスは、セキュア回路によって署名された構成設定に含めるために生成される。いくつかの実施形態では、構成設定は、コンピューティングデバイスによって実装される1つ以上のセキュリティシステムを制御する。
【0045】
ステップ470において、ブートローダ(例えば、ブートローダ124)は、オペレーティングシステムをロードするためのブートシーケンスを開始する。いくつかの実施形態では、ブートローダは、オペレーティングシステムをリカバリモードにブートし、リカバリモードでは、オペレーティングシステムは、サーバシステムから、サーバシステムによって署名された構成設定の初期セットを要求し、署名された構成設定がセキュア回路から取得されるまで、構成設定の初期セットが使用される。
【0046】
ステップ475において、ブートローダは、署名された構成設定と、秘密鍵を含む公開鍵ペアに対して発行された証明書(例えば、証明書128)とを読み取る。
【0047】
ステップ480で、ブートローダは、証明書に含まれる公開鍵を使用して、署名された構成設定を検証する。いくつかの実施形態では、ブートローダは、署名された構成設定を検証するときに、ノンスの包含を検証する。
【0048】
次に図5を参照すると、SEP130のブロック図が示されている。図示の実施形態では、SEP130は、相互接続580を介して互いに結合されたフィルタ510、セキュアメールボックス機構520、プロセッサ530、セキュアROM540、暗号エンジン132、鍵ストレージ560、及びバイオセンサパイプライン570を含む。いくつかの実施形態において、SEP130は、図5に示したよりも多くの(又は少ない)コンポーネントを含んでもよい。上述したように、SEP130は、耐タンパ性を有するセキュア回路である。以下で説明するように、SEP130は、フィルタ510及びセキュアメールボックス520を使用することによって、耐タンパ性を実装する。
【0049】
フィルタ510は、SEP130へのアクセスを厳密に制御して、コンピューティングデバイス100の残りの部分からのSEP130の分離を高め、したがって、デバイス100の全体的なセキュリティを高めるように構成された回路である。より詳細には、一実施形態では、フィルタ510は、CPU110(又は相互接続140に結合された他の周辺機器)からの読み取り/書き込み動作がセキュアメールボックス520をアドレス指定する場合にのみ、その動作がSEP130に入ることを許可することができる。他の動作は、相互接続140からSEP130に進行しなくてもよい。更に詳細には、フィルタ510は、セキュアメールボックス520のインボックス部分に割り当てられたアドレスへの書き込み動作、及びセキュアメールボックス520のアウトボックス部分に割り当てられたアドレスへの読み取り動作を許可することができる。他の全ての読み取り/書き込み動作は、フィルタ510によって防止/フィルタリングされ得る。いくつかの実施形態では、フィルタ510は、エラーを有する他の読み出し/書き込み動作に応答してもよい。一実施形態では、フィルタ510は、書き込みデータをローカル相互接続580に渡すことなく、フィルタされた書き込み動作に関連する書き込みデータをシンクし得る。一実施形態では、フィルタ510は、フィルタリングされた読み出し動作のための読み出しデータとしてノンスデータを供給し得る。ノンスデータ(例えば、「ガーベッジデータ」)は、概して、SEP130内のアドレス指定されたリソースに関連付けられていないデータであり得る。フィルタ510は、ノンスデータとして任意のデータ(例えば、全てゼロ、全て1、乱数発生器からのランダムデータ、読み取りデータとして応答するようにフィルタ510にプログラムされたデータ、読み取りトランザクションのアドレスなど)を供給することができる。
【0050】
様々な実施形態において、フィルタ510は、着信する読み出し/書き込み動作のみをフィルタリングしてもよい。したがって、SEP130のコンポーネントは、NVM120などのコンピューティングデバイス100の他のコンポーネントへの完全なアクセスを有することができる。したがって、フィルタ510は、SEP130によって発行された読み取り/書き込み動作に応答して提供される相互接続140からの応答をフィルタリングしなくてもよい。
【0051】
セキュアメールボックス520は、いくつかの実施形態では、インボックス及びアウトボックスを含む回路である。インボックス及びアウトボックスの両方は、データ用の先入れ先出しバッファ(FIFO)であってもよい。バッファは、任意のサイズ(例えば、各エントリが読み出し/書き込み動作からのデータを格納することができる任意の数のエントリ)を有してもよい。特に、インボックスは、相互接続140から供給される書き込み動作からの書き込みデータを記憶するように構成されてもよい。アウトボックスは、プロセッサ530によって供給される書き込み動作からの書き込みデータを記憶することができる。(本明細書で使用される場合、「メールボックス機構」は、1)セキュア回路のための入力を、その回路によって取り出すことができるまで、及び/又は2)セキュア回路の出力を、外部回路によって取り出すことができるまで、一時的に記憶するメモリ回路を指す。
【0052】
いくつかの実施形態では、CPU110上で実行されるソフトウェアは、OS122によってサポートされるアプリケーションプログラミングインタフェース(API)を介してSEP130のサービスを要求することができ、すなわち、リクエスタは、SEP130のサービスを要求するAPIコールを行うことができる。これらの呼び出しによって、対応する要求がメールボックス機構520に書き込まれ、次にメールボックス520から取り出され、プロセッサ530によって分析されて、要求を処理すべきかどうかが判定され得る。したがって、このAPIは、メールボックス520を介して、例えばパスコード204、鍵134及び212を含む認証された鍵ペアを生成する要求504、バイオメトリックデータ502などを送信し、メールボックス520を介して、署名127及びCSR136を受信するために使用され得る。このようにしてSEP130を分離することによって、SEP130の完全性を高めることができる。
【0053】
SEPプロセッサ530は、コンピューティングデバイス100内の様々なソースから受信されたコマンドを処理するように構成され、様々なセキュア周辺機器を使用してコマンドを達成することができる。次いで、プロセッサ530は、認証アプリケーション542などのROM540に記憶された命令を実行して、上記で説明した署名鍵134を使用して動作を実行するなど、SEPの暗号サービスを使用するためにユーザの認証を実行することができる。例えば、SEPプロセッサ530は、アプリケーション542を実行して、デバイス100のバイオセンサによって収集されたバイオメトリックデータ502を検証するために、バイオセンサセンサパイプライン570に適切なコマンドを提供することができる。いくつかの実施形態では、SEPプロセッサ530によって実行されるプログラム命令は、それらの完全性を保証するために、信頼できる機関(例えば、デバイス10の製造業者)によって署名される。
【0054】
セキュアROM540は、SEP130をブートするためのプログラム命令を記憶するように構成されたメモリである。いくつかの実施形態では、ROM540は、ローカル相互接続580上のセキュアROM540に割り当てられた特定のアドレス範囲のみに応答し得る。アドレス範囲はハードワイヤードであってもよく、プロセッサ530は、セキュアROM540からブートするために、ブート時にアドレス範囲からフェッチするようにハードワイヤードであってもよい。フィルタ510は、(上述したように)セキュアROM540に割り当てられたアドレス範囲内のアドレスをフィルタリングし、SEP130の外部のコンポーネントからセキュアROM540へのアクセスを防止することができる。いくつかの実施形態では、セキュアROM540は、使用中にSEPプロセッサ530によって実行される他のソフトウェアを含むことができる。このソフトウェアは、インボックスメッセージを処理し、アウトボックスメッセージを生成するなどのプログラム命令を含むことができる。
【0055】
暗号エンジン132は、鍵ストレージ560内の鍵を使用して、鍵生成並びに暗号化及び復号を含む、SEP130のための暗号動作を実行するように構成された回路である。暗号エンジン132は、データ暗号化規格(Data Encryption Standard、DES)、先進暗号化規格(Advanced Encryption Standard、AES)、Rivest Shamir Adleman(RSA)等の任意の適切な暗号化アルゴリズムを実装することができる。いくつかの実施形態において、エンジン132は更に、楕円曲線暗号(elliptic curve cryptography、ECC)を実装することができる。上述したように、様々な実施形態において、エンジン132は、署名127を生成するために使用される署名鍵134を生成する役割を果たす。
【0056】
鍵ストレージ560は、署名鍵134、ハードウェア鍵214、及び/又は公開鍵212などの暗号鍵を記憶するように構成されたローカルメモリ(すなわち、内部メモリ)である。いくつかの実施形態では、これらの鍵は、SEP130と、NVM120のNVMコントローラ及びバイオセンサなどの他の要素との間にセキュアチャネルを確立するために使用される鍵を含むことができる。鍵ストレージ560は、図7に関して以下に列挙される揮発性又は不揮発性メモリの様々な例など、任意のタイプのメモリを含み得る。いくつかの実施形態では、ストレージ560は、上述したUID202などの鍵を記録するために、SEP130(又はより一般的にはデバイス100)の製造中に焼かれるヒューズのセットを含むこともできる。
【0057】
バイオセンサセンサパイプライン570は、一実施形態では、認証されているユーザからバイオセンサによって取り込まれたバイオメトリックデータ502を、許可されたユーザのバイオメトリックデータ572と比較するように構成された回路である。(別の実施形態では、データ502及び527は、認証アプリケーション542等のソフトウェアによって比較されてもよい。)バイオメトリックデータは、ユーザの身体的又は行動的特徴に基づいて、他の人間の中からユーザを一意に(少なくとも高精度に)識別するデータであり得る。データ502がユーザの顔から収集されるいくつかの実施形態では、パイプライン570は、パイプライン570に含まれるニューラルネットワークの集合を使用して比較を実行することができ、各ネットワークは、単一のフレームにおいてキャプチャされたバイオメトリックデータ502を、許可されたユーザのための複数のフレームにおいてキャプチャされたバイオメトリックデータ572と比較するように構成される。図示されるように、パイプライン570は、NVM120からバイオメトリックデータ572を読み出すように構成されてもよく、バイオメトリックデータは、いくつかの実施形態では暗号化によって保護されてもよく、及び/又はSEP130にのみアクセス可能なNVM120の関連部分に記憶されてもよい。(別の実施形態では、SEP130はデータ572を内部に記憶することができる。)バイオメトリックデータ502及び572の比較に基づいて、SEP130は、認証が成功したか失敗したかを示す認証結果を提供することができる。そのような認証結果は、例えば、署名鍵134の使用を許可するために使用され得る。
【0058】
例示的なコンピュータシステム
ここで図6を参照すると、コンピューティングデバイス100の機能を実装し得るコンピューティングデバイス600の例示的な実施形態を示すブロック図が示されている。デバイス600は、サーバシステム、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ又はノートブックコンピュータ、メインフレームコンピュータシステム、タブレットコンピュータ、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、携帯電話、音楽プレイヤ、携帯情報端末(PDA)、ウェアラブルデバイス、モノのインターネット(IoT)デバイスなどの任意の適切なコンピューティングデバイスに対応し得る。図示の実施形態では、デバイス600は、ファブリック610、プロセッサコンプレックス620、グラフィックスユニット630、ディスプレイユニット640、キャッシュ/メモリコントローラ650、入出力(I/O)ブリッジ660を含む。いくつかの実施形態では、デバイス600の要素は、システムオンチップ(SOC)内に含まれてもよい。
【0059】
ファブリック610は、様々な相互接続、バス、MUX、コントローラなどを含んでもよく、デバイス600の様々な要素間の通信を容易にするように構成されてもよい。いくつかの実施形態では、ファブリック610の部分は、様々な異なる通信プロトコルを実装するように構成されてもよい。他の実施形態では、ファブリック610は単一の通信プロトコルを実装してもよく、ファブリック610に結合される要素は単一の通信プロトコルからその他の通信プロトコルに内部で変換してもよい。本明細書で使用するとき、用語「連結された」は、要素間の1つ以上の接続を示すことができ、連結は介在要素を含んでもよい。例えば、図6では、グラフィックスユニット630は、ファブリック610及びキャッシュ/メモリコントローラ650を介してメモリに「連結されている」と記載されてもよい。対照的に、図6の図示する実施形態では、介在要素が存在しないため、グラフィックスユニット630はファブリック610に「直接結合されている」。いくつかの実施形態では、ファブリック610は相互接続140に対応する。
【0060】
図示する実施形態では、プロセッサコンプレックス620は、バスインタフェースユニット(BIU)622、キャッシュ624、並びにコア626A及びコア626Bを含む。様々な実施形態では、プロセッサコンプレックス620は、様々な数のプロセッサ、プロセッサコア及び/又はキャッシュを含んでもよい。例えば、プロセッサコンプレックス620は、1、2又は4個のプロセッサコア、又は任意の他の好適な数を含んでもよい。一実施形態では、キャッシュ624は、セットアソシエイティブL2キャッシュである。いくつかの実施形態では、コア626A及び/又は626Bは、内部命令及び/又はデータキャッシュを含み得る。いくつかの実施形態では、ファブリック610、キャッシュ624、又はデバイス600内の他の場所のコヒーレンシユニット(図示せず)は、デバイス600の様々なキャッシュ間のコヒーレンシを維持するように構成されてもよい。BIU622は、プロセッサコンプレックス620とデバイス600の他の要素との間の通信を管理するように構成されてもよい。コア626などのプロセッサコアは、OS122、ブートローダ124、ユーザアプリケーションなどの命令を含み得る特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されてもよい。これらの命令は、以下で説明するメモリコントローラ650に結合されたメモリなどのコンピュータ可読媒体に記憶されてもよい。いくつかの実施形態では、CPU110はコンプレックス620に対応する。
【0061】
グラフィックスユニット630は、1つ以上のプロセッサ及び/又は1つ以上のグラフィックスプロセッシングユニット(GPU)を含んでもよい。グラフィックスユニット630は、例えば、OPENGL(登録商標)、Metal、又はDIRECT3D(登録商標)命令などの、グラフィックス指向の命令を受信することができる。グラフィックスユニット630は、特化したGPU命令を実行してもよいし、受信したグラフィックス指向の命令に基づいて他の動作を実行してもよい。グラフィックスユニット630は一般的に、大ブロックのデータを並行して処理するように構成されてもよく、ディスプレイに出力するためにフレームバッファに画像を構築してもよい。グラフィックスユニット630は、1つ以上のグラフィックス処理パイプラインに変換、照明、三角形、及び/又はレンダリングのエンジンを含んでもよい。グラフィックスユニット630は、表示画像のための画素情報を出力することができる。
【0062】
ディスプレイユニット640は、フレームバッファからデータを読み取り、表示のための画素値のストリームを提供するように構成されてもよい。ディスプレイユニット640は、いくつかの実施形態では、ディスプレイパイプラインとして構成することができる。加えて、ディスプレイユニット640は、出力フレームを生成するように複数のフレームをブレンドするように構成されてもよい。更に、ディスプレイユニット640は、ユーザディスプレイ(例えば、タッチスクリーン又は外部ディスプレイ)に結合するための1つ以上のインタフェース(例えば、MIPI(登録商標)又は埋込みディスプレイポート(eDP))を含んでもよい。
【0063】
キャッシュ/メモリコントローラ650は、ファブリック610と1つ以上のキャッシュ及び/又はメモリとの間のデータの転送を管理するように構成されてもよい。例えば、キャッシュ/メモリコントローラ650は、L3キャッシュに結合されてもよく、これは次にシステムメモリに結合されてもよい。他の実施形態では、キャッシュ/メモリコントローラ650は、メモリに直接結合されてもよい。いくつかの実施形態では、キャッシュ/メモリコントローラ650は、1つ以上の内部キャッシュを含み得る。コントローラに結合されたメモリ650は、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)SDRAM(mDDR3などのモバイルバージョンのSDRAM、及び/又はLPDDR4などの低電力バージョンのSDRAMを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)などの、任意の種類の揮発性メモリであってもよい。シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールを形成するために、1つ以上のメモリデバイスが回路基板に接続されていてもよい。代替として、デバイスは、集積回路と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成で搭載されていてもよい。コントローラ650に結合されたメモリは、NANDフラッシュメモリ、NORフラッシュメモリ、ナノRAM(NRAM)、磁気抵抗RAM(MRAM)、相変化RAM(PRAM)、レーストラックメモリ、メモリスタメモリなどなどの任意のタイプの不揮発性メモリであってもよい。上述のように、このメモリは、デバイス600に本明細書に記載の機能を実行させるためにプロセッサコンプレックス620によって実行可能なプログラム命令を記憶してもよい。
【0064】
I/Oブリッジ660は、例えば、ユニバーサルシリアルバス(USB)通信、セキュリティ、オーディオ、及び/又は低電力常時オン機能を実装するように構成された様々な要素を含み得る。I/Oブリッジ660はまた、例えば、パルス幅変調(PWM)、汎用入出力(GPIO)、シリアル周辺インタフェース(SPI)、及び/又はインターインテグレーテッドサーキット(I2C)などのインタフェースを含んでもよい。様々な種類の周辺機器及びデバイスは、I/Oブリッジ660を介してデバイス600に連結されてもよい。例えば、これらのデバイスは、様々なタイプのワイヤレス通信(例えば、Wi-Fi、Bluetooth(登録商標)、セルラー、全地球測位システムなど)、追加のストレージ(例えば、RAMストレージ、ソリッドステートストレージ、又はディスクストレージ)、ユーザインタフェースデバイス(例えば、キーボード、マイクロフォン、スピーカなど)などを含み得る。
【0065】
特定の実施形態が上記に記載されているが、これらの実施形態により本開示の範囲を限定する意図はなく、これは特定の特徴に対して単一の実施形態のみが記載されている場合でも同様である。本開示で提供されている特徴の実施例は、別途記載がない限り、例示的な性質のものであって、限定的な目的を意図していない。上記の記載は、本開示による恩恵を受ける当業者には明らかであるような代替物、改変、及び均等物を網羅することが意図されている。
【0066】
本開示の範囲は、本開示において取り組まれている問題の一部又は全てを軽減するか否かを問わず、本開示において(明示的又は暗黙的に)開示されている全ての特徴若しくはそれら特徴の組み合わせ、又はそれらの一般化を含む。したがって、このような特徴の組み合わせのいずれに対しても、本願(又は、本願に対する優先権を主張する出願)の審査手続き中に、新しい特許請求を策定し得る。特に、特許請求の範囲に関しては、従属クレームの特徴は独立クレームの特徴と組み合わされる場合があり、それぞれの独立クレームの特徴は、任意の適切な方法で、かつ、単に添付の特許請求の範囲で列挙されている特定の組み合わせではない形で組み合わされる場合がある。
図1
図2
図3
図4A
図4B
図4C
図5
図6