(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022028632
(43)【公開日】2022-02-16
(54)【発明の名称】デバイス、及び方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20220208BHJP
G09C 1/00 20060101ALI20220208BHJP
G06F 21/57 20130101ALI20220208BHJP
【FI】
H04L9/00 675A
H04L9/00 675B
G09C1/00 640E
G06F21/57 350
【審査請求】有
【請求項の数】26
【出願形態】OL
(21)【出願番号】P 2021125182
(22)【出願日】2021-07-30
(31)【優先権主張番号】16/983,360
(32)【優先日】2020-08-03
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000291
【氏名又は名称】特許業務法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】ハーシュマン,ジヴ
(72)【発明者】
【氏名】モラヴ,ダン
(57)【要約】
【課題】ブート事象後の認証キー修正を含むデバイス認証を提供する。
【解決手段】デバイスは、ネットワークインターフェース、メモリ、および、プロセッサを有する。ネットワークインターフェースは、通信ネットワークにより認証器と通信する。メモリは、多層の可変コードを保存し、各層は、個別の測定値により識別される。プロセッサは、所定のブートサイクル内で、所定のブートサイクルだけと関連するノンスを生成し、認証器からチャレンジチャレンジを受け取り、可変コードの所定層を認証し、(i)デバイス中に安全に保存される一意のデバイスシークレット(USD)、(ii)所定層が別の層により測定される測定値、および、(iii)所定のブートサイクルに生成されるノンスに基づいて、認証キーを計算し、認証キーを用いてチャレンジに署名することにより、チャレンジにレスポンスを計算するとともに、レスポンスを、認証器に送信して、所定層を検証する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
デバイスであって、
通信ネットワークを介し、認証器と通信するネットワークインターフェースと、
多層の可変コードを保存し、前記層が、個別の測定値により識別されるメモリ、および、
プロセッサ、を有し、前記プロセッサは、
所定のブートサイクル中、前記所定のブートサイクルだけと関連するノンスを生成し、
前記認証器からのチャレンジを受信し、前記可変コードの所定層を認証し、
(i)前記デバイス中に安全に保存される一意のデバイスシークレット(USD)、(ii)前記所定層が別の層により測定される測定値、および、(iii)前記所定のブートサイクルに生成される前記ノンス、から、認証キーを引き出すことにより、前記認証キーを計算し、
前記認証キーを用いて前記チャレンジに署名することにより、前記チャレンジに対し、レスポンスを計算し、および、
前記レスポンスを、前記認証器に送信して、前記所定層を検証する、
ことを特徴とするデバイス。
【請求項2】
前記プロセッサは、前記ノンスに基づいて、前記認証キーを計算し、前記所定のブートサイクルの前に、認証のために、前記プロセッサにより用いられた認証キーは、前記所定のブートサイクル中に無効になり、認証できないことを特徴とする請求項1に記載のデバイス。
【請求項3】
前記プロセッサは、前記所定層、および、前記所定層の前に実行される各層の前記可変コードが、前記所定のブートサイクルで完全なまま保持されているときでも、前記認証キーを、前記所定のブートサイクルの前に、認証のために、前記プロセッサにより用いられた前記認証キーと異なるように設定することを特徴とする請求項2に記載のデバイス。
【請求項4】
前記認証キーは、前記ノンスに基づいた対称キーを有し、且つ、前記プロセッサは、前記対称キーを用いて、少なくとも前記チャレンジに署名することにより、前記レスポンスを計算するとともに、前記レスポンスと前記ノンス両方を前記認証器に送信することを特徴とする請求項1に記載のデバイス。
【請求項5】
前記認証キーは、前記ノンスに基づいた非対称キーを有し、且つ、前記プロセッサは、前記非対称キーのプライベートキーを用いて、前記チャレンジに署名することにより前記レスポンスを計算するとともに、前記レスポンスを、前記ノンスではなく、前記認証器に送信することを特徴とする請求項1に記載のデバイス。
【請求項6】
前記プロセッサは、前記認証キーを有する前記の各層に、非対称キーを生成し、前記各非対称キーは、プライベートキー、および、パブリックキーを有して、認証のチェーンを生成し、所定層中の認証は、後続の層中で生成されるパブリックキーを認証し、且つ、前記所定層中で生成されるプライベートキーを用いて署名するとともに、前記認証のチェーンを前記認証器に送信して、前記認証キーの認証済みのパブリックキーを用いて、検証を実行することを特徴とする請求項5に記載のデバイス。
【請求項7】
前記認証のチェーンは、前記ノンスから独立して生成された認証を有し、前記デバイスが、すでに、特定の製造業者により製造されていることを証明することを特徴とする請求項6に記載のデバイス。
【請求項8】
前記プロセッサは、前記ノンスを、前記所定層の前に実行されるトラスト層中で生成して、前記ノンスに基づいて、前記トラスト層中でシークレットを計算するとともに、前記シークレットに基づいて、前記認証キーを計算することを特徴とする請求項1に記載のデバイス。
【請求項9】
前記プロセッサは、所定順序で、多層の前記コードを実行するとともに、選択された層が、前記認証器により既に検証されているときだけ、前記所定順序にしたがって、前記選択された層から後続の層に進むことを特徴とする請求項1に記載のデバイス。
【請求項10】
前記プロセッサは、前記ノンスに基づいて、前記認証キーを計算し、ゼロデイ攻撃を軽減することを特徴とする請求項1に記載のデバイス。
【請求項11】
方法であって、
通信ネットワークを介して認証器と通信するデバイス中で、
前記デバイスのメモリ中に、多層の可変コードを保存し、前記各層は、個別の測定値により識別可能である工程と、
所定のブートサイクル中に、前記所定のブートサイクルだけと関連するノンスを生成する工程と、
前記認証器から、チャレンジを受信して、前記可変コードの所定層を認証する工程と、
(i)前記デバイス中に安全に保存される一意のデバイスシークレット(USD)、(ii)前記所定層が別の層により測定される測定値、および、(iii)前記所定のブートサイクルに生成される前記ノンス、から、認証キーを引き出すことにより、前記認証キーを計算する工程、
前記認証キーを用いて前記チャレンジに署名することにより、前記チャレンジに対し、レスポンスを計算する工程、および、
前記レスポンスを前記認証器に送信して、前記所定層を検証する工程、
を有することを特徴とする方法。
【請求項12】
前記認証キーの計算は、前記ノンスに基づいて、前記認証キーを計算し、前記所定のブートサイクルの前に、認証のために、前記プロセッサにより用いられた認証キーは、前記所定のブートサイクル中に無効になり、認証できない工程を有することを特徴とする請求項11に記載の方法。
【請求項13】
前記認証キーの計算は、前記所定層、および、前記所定層の前に実行される各層の前記可変コードが、前記所定のブートサイクルで完全なまま保持されているときでも、前記認証キーを、前記所定のブートサイクルの前に、認証のために、前記プロセッサにより用いられた前記認証キーと異なるように設定する工程を有することを特徴とする請求項12に記載の方法。
【請求項14】
前記認証キーは、前記ノンスに基づいた対称キーを有し、且つ、前記レスポンスを計算する工程は、前記対称キーを用いて、少なくとも前記チャレンジに署名するとともに、前記レスポンスと前記ノンス両方を前記認証器に送信する工程を有することを特徴とする請求項11に記載の方法。
【請求項15】
前記認証キーは、前記ノンスに基づいた非対称キーを有し、且つ、前記レスポンスを計算する工程は、前記非対称キーのプライベートキーを用いて、前記チャレンジに署名するとともに、前記レスポンスを、前記ノンスではなく、前記認証器に送信する工程を有することを特徴とする請求項11に記載の方法。
【請求項16】
前記認証キーを有する前記の各層に、非対称キーを生成する工程を有し、前記非対称キーは、各々プライベートキー、および、パブリックキーを有し、認証のチェーンを生成し、所定層中の認証は、後続の層中で生成されるパブリックキーを認証し、且つ、前記所定層中で生成されるプライベートキーを用いて署名されるとともに、前記認証のチェーンを前記認証器に送信して、前記認証キーの認証済みのパブリックキーを用いて、検証を実行することを特徴とする請求項15に記載の方法。
【請求項17】
前記認証のチェーンは、前記ノンスから独立して生成された認証を有し、前記デバイスが、すでに、特定の製造業者により製造されていることを証明することを特徴とする請求項16に記載の方法。
【請求項18】
前記ノンスの生成は、前記所定層の前に実行されるトラスト層中に、前記ノンスを生成する工程を有し、且つ、前記認証キーを計算する工程は、前記ノンスに基づいて、前記トラスト層中のシークレットを計算する工程を有し、前記シークレットに基づいて、前記認証キーを計算することを特徴とする請求項11に記載の方法。
【請求項19】
所定順序で、前記多層の前記コードを実行するとともに、選択された層が、前記認証器により既に検証されているときだけ、前記所定順序にしたがって、前記選択された層から後続の層に進む工程を有することを特徴とする請求項11に記載の方法。
【請求項20】
前記認証キーの計算は、前記ノンスに基づいて、前記認証キーを計算して、ゼロデイ攻撃を軽減する工程を有することを特徴とする請求項11に記載の方法。
【請求項21】
認証器であって、
通信ネットワークを介してデバイスと通信し、前記デバイスは多層の可変コードを有するとともに、所定のブートサイクルだけと関連するノンスを生成するネットワークインターフェース、および、
プロセッサ、を有し、前記プロセッサは、
チャレンジを前記デバイスに送信して、前記可変コードの所定層を検証し、
前記デバイスから、前記デバイスが前記チャレンジにレスポンスすることにより生成されるレスポンス情報を受信し、前記レスポンス情報は、前記所定のブートサイクルに関連する前記ノンスに基づき、および、
前記レスポンス情報を用いて、前記可変コードの前記所定層を検証することを特徴とする認証器。
【請求項22】
前記レスポンス情報は、少なくとも、前記ノンスに基づいた認証キーにより署名される前記チャレンジを有し、且つ、前記プロセッサは、前記チャレンジを送信する前、前記認証器のメモリ中に、デバイス情報が安全に保存され、前記デバイス情報は前記ノンスと併せると、前記認証キーをリカバーするのに十分であり、前記デバイスから前記ノンスを受信して、前記デバイス情報、および、前記受信されたノンスを用いて、前記認証キーをリカバーするとともに、前記リカバーされた認証キーを用いて、前記可変コードの前記所定層を検証することを特徴とする請求項21に記載の認証器。
【請求項23】
前記レスポンス情報は、(i)非対称認証キーのプライベートキーを用いて署名された前記チャレンジのデジタル署名、および、(ii)前記所定層に関連するパブリックキーの認証を有し、且つ、前記プロセッサは、前記パブリックキーと適合するプライベートキーを用いて署名された認証において認証されたパブリックキーを検証するとともに、その後、前記検証済みのパブリックキーを用いて、前記デジタル署名を検証することを特徴とする請求項21に記載の認証器。
【請求項24】
デバイス検証の方法であって、
通信ネットワークによりデバイスと通信するサーバにおいて、前記デバイスは、多層の可変コードを有するとともに、所定のブートサイクルだけと関連するノンスを生成する工程と、
チャレンジを前記デバイスに送信して、前記可変コードの所定層を検証する工程と、
前記デバイスから、前記デバイスが前記チャレンジにレスポンスすることにより生成されるレスポンス情報を受信し、前記レスポンス情報は、前記所定のブートサイクルに関連する前記ノンスに基づく工程、および、
前記レスポンス情報を用いて、前記可変コードの前記所定層を検証する工程、
を有することを特徴とする方法。
【請求項25】
前記レスポンス情報は、少なくとも、前記ノンスに基づいた認証キーにより署名される前記チャレンジを有するとともに、前記プロセッサは、前記チャレンジを送信する前、前記認証器のメモリ中に、デバイス情報が安全に保存され、前記デバイス情報は前記ノンスと併せると、前記認証キーをリカバーするのに十分であり、前記デバイスから前記ノンスを受信して、前記デバイス情報、および、前記受信されたノンスを用いて、前記認証キーをリカバーするとともに、前記リカバーされた認証キーを用いて、前記可変コードの前記所定層を検証することを特徴とする請求項24に記載の方法。
【請求項26】
前記レスポンス情報は、(i)非対称認証キーのプライベートキーを用いて署名された前記チャレンジのデジタル署名、および、(ii)前記所定層に関連するパブリックキーの認証を有し、且つ、前記所定層の検証工程は、前記パブリックキーと適合するプライベートキーを用いて署名された認証において認証されたパブリックキーを検証するとともに、前記検証済みのパブリックキーを用いて、前記デジタル署名を検証する工程を有することを特徴とする請求項24に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアコンピューティングに関するものであって、特に、レイヤードソフトウェアを動作するデバイスの認証(attestation)に用いる方法、および、システムに関するものである。
【背景技術】
【0002】
様々なセキュアコンピューティング環境において、コンピューティングデバイスは、認証器(verifier)として知られるエンティティに、その状態、および、身分を証明(prove)、あるいは、認証(attest)することが要求される。デバイス認証の方法は、従来の技術である。たとえば、トラステッドコンピューティンググループ(Trusted Computing Group、TCG)は、デバイス識別子コンポジションエンジン(DICE)を定義するとともに、DICEに基づいたデバイス認証アーキテクチャを開発している。DICEベースの認証スキームは、対称キー、あるいは、非対称キー暗号化を採用する。DICEベースの仕様は、本明細書で引用されるいくつかの参照文献で記述されている。
【0003】
DICEのハードウェア要件は、2018年3月22の“Hardware Requirements for a Device Identifier Composition Engine,” Family “2.0” Level 00, Revision 78等の文献で記述されている。
【0004】
非対称キー暗号化を用いたDICEベースの認証スキームは、2018年3月5日の“Implicit Identity Based Device Attestation,” Version 1.0, Revision 0.93等の文献を参照する。
【0005】
対称キー暗号化を用いたDICEベースの認証スキームは、2020年1月7日の“Symmetric Identity Based Device Attestation,” Version 1.0, Revision 0.95等の文献を参照する。
【0006】
DICEレイヤードアーキテクチャは、2020年3月19日の“DICE Layering Architecture,” Version 1.0, Revision 0.19等の文献を参照する。
【0007】
DICE認証プロファイルは、2020年3月10日の“DICE Certificate Profiles,” Version 1.0, Revision 0.01 等の文献を参照する。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、ブート事象後の認証キー修正を含む、改善されたデバイス認証方法、および、システムを提供する。デバイスは、ネットワークインターフェース、メモリ、および、プロセッサを有する。ネットワークインターフェースは、通信ネットワークを介して認証器と通信する。メモリは、多層の可変コードを保存し、各層は、個別の測定値により識別される。プロセッサは、所定のブートサイクル内で、所定のブートサイクルだけと関連するノンス(nonce)を生成し、認証器からチャレンジを受け取って、可変コードの所定層を認証し、(i)デバイス中に安全に保存される一意のデバイスシークレット(Unique Device Secret、USD)、(ii)所定層が別の層により測定される測定値、および、(iii)所定のブートサイクル中に生成されるノンス、から、認証キーを引き出して、認証を計算し、認証キーを用いてチャレンジに署名することにより、チャレンジに対しレスポンスを計算するとともに、レスポンスを、認証器に送信して、所定層を検証(verify)する。
【課題を解決するための手段】
【0009】
いくつかの実施形態において、プロセッサは、ノンスに基づいて、認証キーを計算し、所定のブートサイクルの前に、認証のために、プロセッサにより用いられた認証キーは、所定のブートサイクル中に無効になり、認証できない。別の実施形態において、プロセッサは、所定層、および、所定層の前に実行される各層の可変コードが、所定のブートサイクルで完全なまま保持されているときでも、認証キーを、所定のブートサイクルの前に、認証のために、プロセッサにより用いられた認証キーと異なるように設定する。さらに別の実施形態において、認証キーは、ノンスに基づいた対称キーを有すると共に、プロセッサは、対称キーを用いて、少なくともチャレンジに署名することによりレスポンスを計算するとともに、レスポンスとノンス両方を認証器に送信する。
【0010】
一実施形態において、認証キーは、ノンスに基づいた非対称キーを有し、且つ、プロセッサは、非対称キーのプライベートキーを用いて、チャレンジに署名することによりレスポンスを計算するとともに、レスポンスを、ノンスではなく、認証器に送信する。別の実施形態において、プロセッサは、認証キーを有する各層に対し、非対称キーを生成し、各非対称キーは、皆、個別のプライベートキー、および、パブリックキーを有し、認証のチェーン(chain of certificates)を生成し、所定層中の認証は、後続の一層中で生成されるパブリックキーを認証(certify)し、且つ、所定層で生成されるプライベートキーを用いて署名するとともに、認証のチェーンを認証器に送信して、認証キーの認証済みのパブリックキーを用いて、検証を実行する。さらに別の実施形態において、認証のチェーンは、ノンスから独立して生成された認証を有するとともに、デバイスが、特定の製造業者により製造されたことを証明する。
【0011】
いくつかの実施形態において、プロセッサは、所定層の前に実行されるトラスト層中にノンスを生成して、トラスト層中で、ノンスに基づいて、シークレットを計算するとともに、シークレットに基づいて、認証キーを計算する。別の実施形態において、プロセッサは、所定順序で、多層のコードを実行するとともに、選択された層が、認証器により既に検証されたときだけ、所定順序にしたがって、選択された一層から後続の一層に進む。さらに別の実施形態において、プロセッサは、ノンスに基づいて、認証キーを計算し、ゼロデイ攻撃(zero-day attack)を軽減する。
【0012】
本発明の一実施形態は、さらに、一方法を提供する。通信ネットワークを介して、認証器と通信するデバイスにおいて、デバイスのメモリ中に、多層の可変コードを保存し、各層は、個別の測定値により識別される。所定のブートサイクル中、所定のブートサイクルだけと関連するノンスが生成される。チャレンジは、認証器から受信されて、可変コードの所定層を認証する。認証キーは、(i)デバイス中に安全に保存される一意のデバイスシークレット(USD)、(ii)所定層が別の層により測定される測定値、および、(iii)所定のブートサイクルに生成されるノンスから、認証キーを引き出すことにより計算される。チャレンジに対するレスポンスは、認証キーを用いてチャレンジに署名することにより計算される。このレスポンスは認証器に送信されて、所定層を検証する。
【0013】
本発明の一実施形態は、さらに、認証器を提供し、認証器は、ネットワークインターフェース、および、プロセッサを有する。ネットワークインターフェースは、通信ネットワークによりデバイスと通信し、デバイスは、多層の可変コードを有するとともに、所定のブートサイクルだけと関連するノンスを生成する。プロセッサは、チャレンジをデバイスに送信して、可変コードの所定層を検証して、デバイスから、デバイスがチャレンジにレスポンスして生成されるレスポンス情報を受信し、レスポンス情報は、所定のブートサイクルに関連するノンスに基づくとともに、レスポンス情報を用いて、可変コードの所定層を検証する。
【0014】
いくつかの実施形態において、レスポンス情報は、少なくとも、ノンスに基づいた認証キーにより署名されるチャレンジを有し、且つ、プロセッサは、チャレンジを送信する前、認証器のメモリ中に安全に保存し、デバイス情報はノンスと併せると、認証キーをリカバーするのに十分であり、デバイスからノンスを受信して、デバイス情報、および、受信されたノンスを用いて、認証キーをリカバーするとともに、リカバーされた認証キーを用いて、可変コードの所定層を検証する。別の実施形態において、レスポンス情報は、(i)非対称認証キーのプライベートキーを用いて署名されたチャレンジのデジタル署名、および、(ii)所定層に関連するパブリックキーの認証、を有し、且つ、プロセッサは、パブリックキーに適合するプライベートキーを用いて署名された認証中で認証されたパブリックキーを検証するとともに、その後、検証済みのパブリックキーを用いて、デジタル署名を検証する。
【0015】
本発明の一実施形態は、さらに、デバイス検証方法を提供する。本方法において、通信ネットワークにより、デバイスと通信するサーバにおいて、デバイスは、多層の可変コードを有するとともに、所定のブートサイクルだけと関連するノンスを生成し、チャレンジをデバイスに送信して、可変コードの所定層を検証する。チャレンジにレスポンスするため、デバイスにより生成されるレスポンス情報は、デバイスから受信され、レスポンス情報は、所定のブートサイクルに関連するノンスに基づく。可変コードの所定層は、レスポンス情報を用いて検証される。
【0016】
これら、および、その他の実施形態は、以下の詳細な記述と、図面と併せて参照することによりさらに完全に理解することができる。
【発明の効果】
【0017】
本発明の認証スキームは、ゼロデイ攻撃等の危害を軽減することができる。この認証スキームは、対称な認証キー、および、非対称認証キー両方に対し適用可能である。
【図面の簡単な説明】
【0018】
【
図1】本発明の一実施形態によるセキュアデバイス認証をサポートするコンピューティングシステムのブロック図である。
【
図2】本発明の一実施形態による対称キー認証に用いられるデバイスレイヤードスキームを示す図である。
【
図3】ここで開示されるいくつかの実施形態による対称キー暗号化を用いたデバイス認証と検証の方法を図式化して説明するフローチャートである。
【
図4】本発明の一実施形態による非対称キー認証に用いるデバイスレイヤードスキームを図式化して説明する図である。
【
図5】本発明のいくつかの実施形態による非対称キー暗号化を用いたデバイス認証と検証に用いる方法を図式的に説明するフローチャートである。
【発明を実施するための形態】
【0019】
本発明の実施形態は、ブート事象後の認証キー修正を含む、改善されたデバイス認証方法、および、システムを提供する。
【0020】
クラウド、および、その他のコンピュータ環境、たとえば、インターネットオブシングス(IoT)ネットワーキングにおいて、コンピューティングデバイスは、多層のコードを含むソフトウェアを動作する。各層のコードは、時々、修正される(たとえば、バグ修正)、あるいは、アップグレード版をダウンロードする。可変コードはハッカーに攻撃されやすいので、安全要求は、コンピューティングデバイスの身分とソフトウェア状態を検証する必要がある。
【0021】
いくつかの実施形態において、外部認証器は、チャレンジ・レスポンスプロトコル(challenge-response protocol)を用いて、コンピューティングデバイス(たとえば、所定のコード層)を検証する。認証器は、チャレンジをデバイスに送信し、デバイスは、認証レスポンスを認証器に送り返して、コンピューティングデバイスの身分とインテグリティを検証する。デバイスは、通常、チャレンジに対し、適当な暗号化操作を適用することにより、レスポンスを計算し、たとえば、シークレット認証キーを用いて、デジタル署名を生成する。
【0022】
以下の記述、および、請求項において、用語“認証(attestation)”は、要求されるデバイスにより実行され、その状態を認証する操作のことを意味し、用語“検証(verification)”は、外部認証器により実行され、デバイスをトリガーして、認証を実行するとともに、デバイス状態を検証する操作のことを意味する。認証器、および、認証器からの認証要求にレスポンスするデバイスの、両方を有するスキームは、ここで、“認証スキーム(attestation scheme)”と称される。
【0023】
いくつかの実施形態において、認証キーは、コード層により生成されるシークレットから引き出され、デバイスの身分とコード層の測定値に基づく。所定のコード層の測定値は、安全なハッシュ関数を、下層コード、あるいは、ファームウェアに適用した結果を有する。認可されていない人が、一つ以上のコード層を修正するが、適合する認証キーへのアクセス権がないとき、検証は失敗する。
【0024】
ある種の攻撃において、デバイスシークレットキーは漏れる可能性があるとともに、認可されていない攻撃者により用いられて、認証を実行し、そのデバイスに成りすます。秘密漏れを検出するとき、デバイス所有者は、デバイスに、アップデートされたソフトウェア、あるいは、ファームウェアバージョンをダウンロードして、漏れの源を断つ。しかし、リークの修復、ならびに、フィールド内での大量のデバイスの更新は、長い時間を費やし、これらの時間中に、攻撃者は、重大な被害を与える。
【0025】
注意すべきことは、リブート後、デバイスがアップデートされる前、デバイスは同じ認証キーを生成し、これは、攻撃者により既に知られているので、攻撃が成功する恐れがある。この種の攻撃の一例は、“ゼロデイ攻撃(zero-day attack)”と称される。
【0026】
開示される実施形態において、デバイスは、各ブート事象の後、異なる認証キーを生成する。その結果、リブート前の認証キーの値は、リブート後の認証に対して無効になる。このメカニズムは、ゼロデイ攻撃を含む各種攻撃に対する認証-検証スキームの安全性を増加させる。
【0027】
ネットワークインターフェース、メモリ、および、プロセッサを有するデバイスを考察する。ネットワークインターフェースは、通信ネットワークを介して認証器と通信する。メモリは、多層の可変コードを保存し、各層は、個別の測定値により識別可能である。プロセッサは、所定のブートサイクルにおいて、所定のブートサイクルだけと関連するノンスを生成する。プロセッサは、認証器からチャレンジを受信して、可変コードの所定層を認証するとともに認証キーを計算し、(i)デバイス中に安全に保存される一意のデバイスシークレット(USD)、(ii)所定層が別の層により測定される測定値、および、(iii)所定のブートサイクルに生成されるノンス、から認証キーを引き出す。プロセッサは、認証キーを用いてチャレンジに署名することにより、チャレンジにレスポンスを計算するとともに、レスポンスを認証器に送信して、所定層の識別とインテグリティを検証する。以下の記述、および、請求項において、“所定因子から認証キーを引き出す”というのは、この因子を修正すると、認証キーの修正が生じることを意味する。しかし、認証キーは、その因子から、直接、あるいは、間接的に引き出される恐れがある。
【0028】
開示される実施形態において、プロセッサは、各層に沿って、シークレットチェーンを生成し、信頼できるハードウェア層で開始され、この層は、デバイス識別子コンポジションエンジン(DICE)層と称される。上で引用されるDICE基準によると、DICE層は、一意のデバイスシークレット(USD)を安全に保存する。このUDSは、DICE層とその他の層を含む信頼のチェーンの信頼の基点(Root of Trust、RoT)となる。
【0029】
ブート時、プロセッサは、無条件に、DICE層を実行し、DICE層は、第一可変層の測定を実行する。UDSと測定に基づいて、DICE層は、第一可変層に対して、コンパウンド識別(CDI)で示されるシークレットを生成する。類似する方式で、各可変層は、前の層で生成されるシークレット、および、次の層の測定から、次の層にシークレットを生成する。プロセッサは、前の層により生成されたその層のシークレットから、所定層に対し、認証キーを引き出す。
【0030】
いくつかの実施形態において、プロセッサは、ノンスに基づいて、認証キーを計算し、所定のブートサイクルの前に、認証のために、プロセッサにより用いられた認証キーは、所定のブートサイクル中に無効になり、認証できない。プロセッサは、所定層、および、所定層の前に実行される各層の可変コードが、所定のブートサイクルで完全なまま保持されているときでも、認証キーを、所定のブートサイクルの前に、認証に用いられる認証キーと異なるように設定する。
【0031】
一実施形態において、認証キーは、ノンスに基づいた対称キーを有し、且つ、プロセッサは、対称キーを用いて、少なくともチャレンジに署名することにより、レスポンスを計算するとともに、レスポンスとノンス両方を認証器に送信する。
【0032】
別の実施形態において、認証キーは、ノンスに基づいた非対称キーペアを有し、且つ、プロセッサは、非対称キーペアのプライベートキーを用いて、チャレンジを署名することによりレスポンスを計算するとともに、レスポンスを、ノンスではなく、認証器に送信する。この場合、プロセッサは、認証キーを有する各層に、非対称キーを生成し、各非対称キーペアは、皆、個別のプライベートキー、および、パブリックキーを有する。プロセッサは、認証のチェーンを生成し、所定層中の認証は、後続の一層中で生成されるパブリックキーを認証し、且つ、所定層で生成されるプライベートキーを用いて署名される。プロセッサは、認証のチェーンを認証器に送信して、認証キーの認証済みのパブリックキーを用いて、検証を実行する。
【0033】
一実施形態において、認証のチェーンは、ノンスから独立して生成された認証を有し、この認証は、デバイスが、特定の製造業者により製造されていることを証明する。この認証は、認証のチェーンを開始するとともに、外部認証機関(certification authority)により生成される。
【0034】
いくつかの実施形態において、プロセッサは、所定層の前に実施されるトラスト層(検証される層)中にノンスを生成して、トラスト層中で、ノンスに基づいて、シークレットを計算するとともに、シークレットに基づいて、認証キーを計算する。
【0035】
プロセッサは、通常、所定順序で、多層のコードを実行する。一実施形態において、プロセッサは、順序にしたがって、全層を実行するとともに、最後の層を認証する。別の実施形態において、プロセッサは、選択された層が、認証器により既に検証されているときのみ、所定順序にしたがって、選択された一層から後続の一層に進む。
【0036】
開示される技術において、認証スキームが記述され、その中のデバイスは、ブートサイクルと関連するランダムなノンスを生成すると共に、間接的に、そのノンスに基づいて、認証キーを計算する。このスキームにおいて、前のブートサイクルで用いられた認証キーは、リブート後、無効になって、認証できない。開示される認証スキームは、デバイスが、たとえば、ゼロデイ攻撃等の危害を軽減することができるようにする。開示される認証スキームは、対称な認証キー、および、非対称認証キー両方に対し適用可能である。
【0037】
システム記述
図1は、本発明の一実施形態による安全なデバイス認証をサポートするコンピューティングシステム20を図式的に説明するブロック図である。
【0038】
コンピューティングシステム20は、通信ネットワーク32を介して、管理サーバ28により制御される複数のコンピューティングデバイス24を有する。通信ネットワーク32は、任意の適当なパケットネットワークを有し、任意の適当な通信プロトコル、たとえば、イーサネット(Ethernet network)、あるいは、IPネットワーク、たとえば、インターネットを用いて操作される。通信ネットワーク32は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ワイヤレスネットワーク、あるいは、いくつかのタイプのパケットネットワークの組み合わせを有する。
【0039】
コンピューティングシステム20は、たとえば、低コストのデバイス、たとえば、インターネットオブシングス(IoT)デバイス(24)の検証に用いられてもよい。代替的に、あるいは、追加的に、別のタイプのコンピューティングデバイス、たとえば、サーバは、さらに、開示される認証、および、検証技術を使用してもよい。
【0040】
コンピューティングデバイス24(簡潔に、“デバイス”とも称する)は、プロセッサ40を有し、バス52、たとえば、ペリフェラルコンポーネントインターコネクトエクスプレスバス(PCIe)、あるいは、その他の任意の適切なバスにより、書き換え可能メモリ44、および、リードオンリメモリ(ROM)48に結合される。コンピューティングデバイス24は、ネットワークインターフェース54、たとえば、ネットワークインターフェースコントローラー(NIC)を用いて、通信ネットワーク32にアクセスする。
【0041】
プロセッサ40は、通常、一つ以上の応用プログラムを動作する。このような応用プログラムは、通信ネットワーク32を介して、別のデバイスやサーバと相互作用し、これらの相互作用は、デバイスが、セキュリティ攻撃を受けやすくする。各種タスク中で、プロセッサ40は、認証関数56を実行して、その状態と身分を証明し、以下で詳細に記述される。注意すべきことは、はっきりとさせるために、認証関数56は、図面中では、プロセッサにより実施されるとして示されている。しかし、認証関数のコードは、通常、メモリ44中に保存される(あるいは、プロセッサによりアクセス可能な任意のその他の適当なメモリ中-図示されない)。
【0042】
ROM48はブートコード58を保存し、このブートコードは、リセット、あるいは、電源がオンの時、プロセッサ40により無条件に実行される。メモリ44は、複数のソフトウェア層60を保存し、ソフトウェア層60は、必要時に修正され、たとえば、機能的なバグを修正する、あるいは、セキュリティ上の弱点を解決する。
図1の例において、前の三層60は、L0、L1、および、L2で示される。ブートコード58は“DICE層”とも称される。このDICE層は、不変、且つ、安全性が高く、これにより、トラスト層であると見なされる。
【0043】
各層は、後続の、あるいは、前の一層と秘密情報を安全に交換し、よって、DICE層から開始される信頼のチェーンを構築する。たとえば、いくつかの実施形態において、UDS(たとえば、層L0…Lnから)へのアクセスは、DICE層が制御信号を層0に伝達する前はブロックされる。一般的に、各層Liは、制御信号を次の層Li+1に送信する前、そのシークレットSi、および、その他のシークレット情報にアクセスするのを防止する。アクセスの防止は、たとえば、アクセスをブロックすることにより、あるいは、メモリから、層Li中のシークレット情報を消去することにより実行される。
【0044】
以下の記述において、ある操作を実行する一層に言及した場合、プロセッサ40が、層中のコードにより実行されるタスクを実行することを意味する。
【0045】
ブートシーケンスは、プロセッサ40が、ブートコード58を実行することから開始され、続いて、下層操作システム、および、アプリケーションがオンになって、動作するまで、ソフトウェア層60を順次に実行する。これらの層の順次的な実行は、信頼のチェーンを形成し、各トラスト層は、シークレットを後続の一層に提供する。信頼できるソフトウェア層は、信頼されて、ある属性を有することができる。たとえば、トラスト層は信頼されて、前のトラスト層により生成されるシークレットを保有することができる。
【0046】
コンピューティングデバイス24は、認証の信頼の基点となる一意のデバイスシークレット(USD)62を有する。いくつかの実施形態において、UDS62は不変であり、且つ、ハードウェア中に安全に組み込まれる。たとえば、UDSは、ワンタイムプログラマブル(OTP)メモリ中で、あるいは、物理複製困難関数(PUF)として実行されてもよい。あるいは、UDSは、ROM48で焼かれる。あるいは、ハードウェア中にUSD62を安全に組み込むその他の任意の適切な方法を用いることもでき、たとえば、OTP、PUF、および、ROMのいくつか、あるいは、全部の組み合わせを使用してもよい。
【0047】
UDSは、DICE層だけによりアクセス可能であると推定される。デバイスのブート時、DICE層は、UDS62からシークレットを生成し、このシークレットは、TGC仕様中で、複合デバイス識別子(CDI)66と称される。DICE層は、安全な方式で、CDIを層L0に提供する。
【0048】
コンピューティングデバイス24は、暗号エンジン70を有し、各種暗号化操作、たとえば、暗号化、復号、ハッシュ、デジタル署名の生成と検証、乱数の生成等をサポートする。いくつかの実施形態において、暗号エンジン70は、プロセッサ40の代わりに、デバイス認証に必要な暗号化計算を実行する。
【0049】
暗号エンジン70は、乱数発生器(Random Number Generator、RNG)72を有して、ランダム、あるいは、疑似乱数暗号ノンス74を生成して、プロセッサ40がそれを認証に用いる。以下で記述されるように、暗号ノンス74は、暗黙に、認証キーを修正して、ブート事象前の認証キーの値は、ブート事象後、無効になり、認証できない。
【0050】
暗号ノンス74は、ランダム、あるいは、疑似乱数を有するとともに、十分なビット数を有して、重複するノンス値がほぼ生成されないように確保する。開示される認証スキームにおいて、暗号ノンス74は、ブートサイクルと関連して生成され(たとえば、ブートサイクル事に一回)、以下で詳細に記述される。
【0051】
管理サーバ28は、ホストプロセッサ76、および、メモリ80を有する。管理サーバ28は、ネットワークインターフェース84を用いて、通信ネットワーク32を介して、コンピューティングデバイス24と通信する。いくつかの実施形態において、メモリ80は、そのコントロール下にあるコンピューティングデバイス24のデータベース(DB)88、および、ポリシー90を保存する。メモリ80は、たとえば、ランダムアクセスメモリ、不揮発性メモリ、あるいは、その他の任意の適当なタイプのストレージを有する。管理サーバ28は、各種目的、たとえば、ソフトウェアプロビジョ二ングで、コンピューティングデバイス24と通信し、デバイス24に命令を送信して、関連のあるタスクを実行するとともに、デバイスからの報告を受信する。管理サーバ28は、認証器プログラム86を用いて、デバイス24の身分と状態を検証する。簡潔にするため、ここでは、認証器プログラム86は、簡潔に、“認証器”と称する。認証器(および、デバイス24)は、適当なチャレンジ・レスポンス方法を実行することができ、以下で詳細に記述される。
【0052】
ポリシー90は、ホストプロセッサ76に、デバイス24に適用する安全ポリシーを指定する。所定ポリシーは、デバイス検証を実行するスケジュール、各デバイス中のどの層が、検証を必要としているか、デバイスが検証を失敗するとき、どのような動作を採取するか、認可されたファームウェアバージョン等を指定する。
【0053】
図1に示されるコンピューティングシステム20、コンピューティングデバイス24、および、管理サーバ28の設定は例示的な設定であり、単に、概念を明確にする目的のために描かれている。代替的な実施形態において、その他の任意の適切なコンピューティングシステム、コンピューティングデバイス、および、管理サーバを使用することができる。開示される技術の理解のために必須ではない素子は、簡潔にする目的のために、図面から省略される。
【0054】
各種実施形態において、コンピューティングシステム20の異なる素子(たとえば、コンピューティングデバイス24)は、任意の適当なハードウェア、たとえば、一つ以上の個別部品、一つ以上の特定用途向け集積回路(ASIC)、および/あるいは、一つ以上のフィールドプログラマブルゲートアレイ(FPGA)を用いて実行されてもよい。あるコンピュータシステム素子は、ソフトウェアで実行される、あるいは、ソフトウェア、および、ハードウェア素子の組み合わせを用いて実行される。
【0055】
いくつかの実施形態において、プロセッサ40、および、ホストプロセッサ76はそれぞれ、汎用プログラマブルプロセッサを有し、ソフトウェアでプログラムされて、ここで開示される機能を実行する。ソフトウェアは、ネットワークにより、電子形式で、関連のあるプロセッサにダウンロードされる、および/あるいは、非一時的な有形的表現媒体、たとえば、磁気、光学、電子メモリに保存されてもよい。
【0056】
対称キー暗号化を用いた認証スキーム
図2は、本発明の一実施形態による対称キー認証に用いられるデバイス分層スキームを図式的に説明する図である。
【0057】
図2において、コンピューティングデバイス100は、認証器104を動作する管理サーバ102を用いて検証される。コンピューティングデバイス100、管理サーバ102、および、認証器104は、
図1のコンピューティングデバイス24、管理サーバ28、および、認証器プログラム86を実行するのに用いられてもよい。
【0058】
デバイス100は、多層コードを動作し、簡潔にするために、“層”と称する。第一層は“DICE層”112で示され、この層は、通常、不変コードを有する。可変コードを動作するその他の層は、L0…Lnとして示される。
図2において、簡潔にするため、層L0114、および、Ln116だけが示される。DICE層は、信頼の基点層として作用するとともに、通常、デバイスブート時に、無条件に実行される。層L0…Lnは、通常、DICE層の後に、所定順序(たとえば、連続的に)で実行される。コンピューティングデバイス100により実行される各種タスクは、層L0…Ln、および、認証タスクを有し、プロセッサ40により実行される。
【0059】
デバイス100は、秘密鍵生成(Secret Chain Generation、SCG)106モジュール、および、認証モジュール108を有する。SCG106中の層は、S0…Snで示されるシークレットのシーケンスを生成する。DICE層は、層L0中で用いられる第一シークレットS0を生成し、層L0は、層L1中で用いられるシークレットS1を生成し、以下同様である。本例において、認証モジュール108は、最後の層Lnに結合される。信頼のチェーンに基づいて、この場合の認証は、DICE層、および、可変層L0…Lnをカバーする。あるいは、認証モジュール108は、層L0…Ln-1から選択される中間層Liに結合され、この時、認証は、DICE層、および、各層L0…Liをカバーする。
【0060】
図2において、DICE層、および、各層L0…Ln-1は、一方向性関数(One-Way Function、OWF)120を有し、L1…Ln間で、対応する次の層に、シークレットを生成する。特に、DICE層112のOWFは、L0に、シークレットS0を生成し、層L0のOWFは、L1に、シークレットS1を生成し、以下同様である。
【0061】
L0…Lnの各層は、対応する測定値(128)M0…Mnにより識別可能である。一層の測定値は、たとえば、層のコードにより計算される暗号化ハッシュ関数(cryptographic hash function)、ソフトウェアイメージ、データ、および/あるいは、ファームウェア、あるいは、上記の二個以上の組み合わせを有する。いくつかの実施形態において、所定層Liにより生成されるシークレットSi+1は、所定層が、次の層に(層順に従って)測定を実行して得られる測定値Mi+1、および、前の層Li-1により生成されるシークレットSiに基づいて生成される。いくつかの実施形態において、上記のスキームを用いることにより、各層は、信頼できると推定される、あるいは、前にすでに信頼できるとして検証された一層により測定される。
【0062】
OWF120は、逆演算するのが困難な特性を有するべきで、OWFの出力シークレット(Si+1)、および、入力測定値Miから、OWFの入力シークレット(たとえば、シークレットSi)を推定するのは困難である。例示的実施形態において、OWF120は、暗号化が安全なハッシュ関数を有する。例のOWF120関数は、これらに制限されないが、メッセージ確認コード(MAC)、ハッシュベースMAC(HMAC)、暗号ベースMAC(CMAC)、および、SHA-3ベース関数Keccak MAC(KMAC)を有する。
【0063】
本明細書で開示されるいくつかの実施形態において、HMAC関数をOWF120の例としている。この方法は、1997年2月の世界に公開されているインターネットの各種の規約(Request for Comments、RFC)2104、“HMAC: Keyed-Hashing for Message Authentication”というタイトルの文献中ですでに説明されている。
【0064】
シークレットS0を生成するため、DICE層は、一層L0の測定値128Aを生成する。DICE層は上の一層がなく、安全に組み込まれた一意のデバイスシークレット(USD)124を有する。UDSは、DICE層、および、認証器だけに知られている。実施方式の差異に基づき、UDSは、また、デバイス製造業者に知られていることがある。一実施形態において、DICE層は、HMAC関数を用いて、S0=HMAC(M0、UDS)を計算することにより、シークレットS0を生成し、UDSはHMACキーとなる。TPG専門用語において、DICE層により生成されるシークレットS0は、複合デバイス識別子(CDI)とも称される。
【0065】
シークレットS1を生成するため、層L0は、層L1の測定値128B(M1で表示)を生成するとともに、DICE層からシークレットS0を受信する。本例において、層L0は、乱数発生器(RNG)132を有して、デバイスのブート後に、“Na”で表示されるノンスを生成する。いくつかの実施形態において、層L0のOWFは、(i)層L1の測定値M1、(ii)DICE層からのシークレットS0、および、(iii)RNG132を用いて生成されるノンスNa、を入力として受信する。層L0のOWFは、S1=HMAC([M1|Na],S0)を計算することにより、シークレットS1を生成し、S0はHMACキーを有し、連結データ[M1|Na]は、HMAC関数へのデータ入力である。その他の層において、シークレットSi+1は、Si+1=HMAC([Mi+1],Si)により計算される。
【0066】
図2の例において、ノンスNaは、層L0のOWFの入力であり、このノンスは、通常、最小コードで実施され、この最小コードは、バグが発生しないことが予期され、アップデートが不要であり(あるいは、ごくまれに一回アップデート)、これにより、L0は、トラスト層であると見なされる。しかし、一般的に、ノンスNaは、L1…Ln等のその他の層中の任意の信頼できると見なされるOWFの入力である。
【0067】
いくつかの実施形態において、L0…Ln中の一つ以上の層は、各自ファームウェアセキュリティ記述子(Firmware Security Descriptor、FSD)136を有する。FSDは、一層が有する、あるいは、自身で計算するセルフ測定値を有する。
図2において、たとえば、層L0はFSD136Aを有し、層Lnは、FSD136Bを有する。層L0…Ln-1の各層中、FSDは、OWFにより計算されるシークレットを組み込む。たとえば、
図2の層L0中、FSD136Aが、層L0のOWFに提供される。この時、OWFは、S1=HMAC([M1|FSD|Na],S0)で、S1を計算する。この時、シークレットS1は、L0とL1両方により測定される測定値M1に基づく。
【0068】
図2の例において、最後の層(Ln116)は、認証モジュール108を用いて、デバイス認証プトロコルを実行する。この認証プトロコルは、記述されるように、通常、デバイス側で実行され、(i)認証器104からチャレンジを受信する、(ii)認証キーを用いてチャレンジに署名して、レスポンスを生成する、および、(iii)レスポンスを認証器に送信して検証する。
【0069】
層Lnは、鍵導出関数(KDF)140を用いて、シークレットSnから、認証に用いられるSKnで示される一個の対称キー144を生成する。疑似ランダム関数を用いた鍵導出関数のいくつかの族は、たとえば、2009年10月のLily Chenによる NIST special publication 800-108、 “Recommendation for Key Derivation Using Pseudorandom Functions (Revised)”というタイトルの文献ですでに記述されている。認証モジュール108は、認証器(通常、Cは一個のランダム、あるいは、疑似乱数を有する)により生成される“C”により示されるチャレンジ、および、RNG160により、チャレンジにレスポンスして生成される“Nd”で示されるデバイスノンスを受信する。認証モジュール108は、SKn144を用いることにより、[C|Nd]に署名することにより、“R”で示されるレスポンスを生成する。
【0070】
認証器は、デバイスからレスポンスRを受信するとともに、さらに、NaとNdを受信し、且つ、SKnと同じキー値を用いて、[C|Nd]に署名することにより、局部的にR’を計算する。いくつかの実施形態において、認証器は、UDS、および、測定値Miに基づいて、デバイスが、局部的にそのSKnを計算するのと同じアーキテクチャ、OWF、および、KDF関数を用いて、SKn自体を計算する。RとR’が等しいとき、デバイスは、検証に成功する。デバイスのブート後、ノンスNaが再生成され、このノンスNaは、ブート前のその値に比べて、間接的に、認証キーSKnの値に変更をもたらす。その結果、ブート前にSKnの値を抽出する攻撃者は、ブート後に、それを認証に用いることができない。
【0071】
図3(A)および(B)は、ここで開示されるいくつかの実施形態による対称キー暗号化を用いるデバイス認証と検証の方法を図式的に説明するフローチャートである。
【0072】
認証スキームは、
図1のデバイス24、および、認証器プログラム86により実行される。デバイス24は、
図2で示されるレイヤードスキームを実行すると推定される。認証プトロコルの実行において、デバイスと認証器は、たとえば、通信ネットワーク32を介して、互いに通信する。
【0073】
図3(A)(デバイス部分)の方法は、ブート工程200から開始され、デバイス24のプロセッサ40は、ブートサイクルを開始する。ブートの実行において、プロセッサ40は、DICE層112の実行を開始する。ノンス生成工程204において、プロセッサは、現在のブートサイクルだけと関連するノンスNaを生成する(RNG132を用いる)とともに、Naを認証器に送信する。あるいは、プロセッサは、ノンスNaを、L1…Ln中の少なくともいくつかの層を越えて安全に送信するとともに、L0以外の一層、たとえば、Lnにより、Naを認証器に送信する。一実施形態において、プロセッサは、ノンスNaと以下の工程220中のレスポンスを一緒に送信する。
【0074】
キー生成工程212において、プロセッサは、層Ln中で、“SKn”で示される対称な認証キーを生成する。たとえば、プロセッサは、関数OWF120を、層LnのシークレットSnに適用することにより、SKnを生成する。認証キーSKnは、ある層で開始されるシークレットチェーンにより、ノンスNaに基づいて決定され、Naは層のOWFの入力値である。
【0075】
チャレンジ受信工程216において、プロセッサは、認証器から、チャレンジCを受信して、最後の一層Lnを検証する。あるいは、プロセッサはチャレンジを受信して、L0…Ln-1中の別の層を検証する。
【0076】
レスポンス計算工程220において、プロセッサは、チャレンジにレスポンスして、認証キーSKnを用いて、チャレンジCに署名することにより(たとえば、署名関数148を用いる)、Rで示されるレスポンスを生成する。たとえば、プロセッサは、R=MAC(C,SKn)で、レスポンスを計算する。いくつかの実施形態において、プロセッサは、Cに対し、Ndで示されるデバイスノンスを生成する(たとえば、RNG160を用いる)とともに、R=MAC([C|Nd]、SKn)で、レスポンスを計算する。ノンスNdをレスポンスRに組み込むのは、複数の選択されたチャレンジ値を、デバイスに送信することにより、SKnを推定することを試みる攻撃を克服する手助けをする。さらに、工程220において、プロセッサ40は、レスポンスRを認証器に送信する。上記のように、いくつかの実施形態において、工程220で、プロセッサは、レスポンスR、および、ノンスNaを認証器に送信する。
【0077】
ブートクエリー工程228において、プロセッサは、リブートが必要か、あるいは、今発生しているかをチェックし、そうでない場合、工程216に戻って、同じブートサイクル内で、次のチャレンジを受信して、同一、あるいは、別の層を検証する。そうでなければ、プロセッサは工程200に戻って、後続のブートサイクルを開始するとともに、前のブートサイクルで用いられるNa値と異なる値を有するノンスNaを再生成する。
【0078】
図3(A)の実施形態において、プロセッサは、一ブートサイクル毎に、一回、SKnを生成する。別の実施形態において、プロセッサは、チャレンジCを受信することに対応して、SKnを生成する。この実施形態において、
図3(A)の工程212は、工程216の後、工程220の前に実施されてもよい。
【0079】
図3(B)の方法(認証器部分)は、通常、
図3(A)の方法と並行して実行される。
図3(B)の方法は、ストレージ工程250から開始され、ホストプロセッサ76は、デバイス情報を認証器のデータベース(たとえば、DB88)に保存する。デバイス情報は、所定のチャレンジに対してレスポンスを生成するとき、デバイスにより用いられる対称な認証キーSKnをリカバーするのに用いられる。この目的で、ホストプロセッサは、各デバイスに対し、デバイス情報を保存し、少なくともデバイスのDICE層UDS(62)、デバイスにより用いられる層設定、および、各層と関連した測定値を含む。認証器は、デバイス情報(および、ノンスNa)を用いて、認可されたデバイスにより計算されるのと同じSKn値を局部的に計算し、以下で記述される。
【0080】
ノンス受信工程254において、認証器はノンスNaを受信し、これは、現在のブートサイクルと関連するデバイスにより生成される。通常、デバイスは、Naを、一ブートサイクル毎に、一度、認証器に提供する。あるいは、デバイスは、同じブートサイクル中に、Naを何回も生成するとともに、毎回アップデートされたNaを認証器に報告してもよい。いくつかの実施形態において、認証器は、工程254でノンスNaを受信するのではなく、以下の工程262で記述されるように、Naとレスポンスを一緒に受信する。
【0081】
チャレンジ送信工程258において、認証器は、チャレンジCを生成して、デバイスの層Lnを検証すると共に、チャレンジをデバイスに送信する。認証器は、通常、乱数、あるいは、疑似乱数としてチャレンジを生成する。認証器は、毎回、異なるチャレンジを発するので、前のレスポンスの知識は、全く役に立たない。異なるチャレンジの使用は、たとえば、リプレーアタック(replay attack)の軽減に有用である。認証器は、任意の適当な時間で、たとえば、デバイスからの要求への応答時、管理者の要求による制御、あるいは、定期的にチャレンジを生成、および、送信してもよい、。
【0082】
レスポンス受信工程262において、認証器は、デバイスから、工程258で、前に送信されるチャレンジCに対応するデバイスレスポンスRを受信する。キーリカバリー工程266において、認証器は、工程250で保存されたデバイス情報、および、工程254で受信されたノンスNaを用いて、対称な認証キーSKnの複製SKn’を局部的に再生成する。
【0083】
検証工程270において、認証器は、レスポンスR、および、リカバーされた認証キーSKn’を用いて、デバイスの層Lnを検証する。デバイス中の信頼のチェーンのために、層Lnを検証することにより、DICE層と層L0…Ln-1は同時に検証される。上述のように、認証キーSKnはノンスNaに基づくので、攻撃者が、認証キーSKnを取得したとしても、Na値はすでに変化しているので、リブート後、認証に失敗する。
【0084】
工程270の後、認証器は、工程250、工程254、および、工程258に戻る。特に、認証器は、デバイスがすでにアップデートされた後で(たとえば、ソフトウェア、あるいは、ファームウェアバージョンがアップデート)、工程250に戻る。あるいは、認証器は、デバイスがすでにブートされた後、工程254に戻り、現在のブートサイクルと関連するNaを受信する。あるいは、認証器は後続の異なるチャレンジをデバイスに送信するため、工程258に戻る。
【0085】
非対称キー暗号化を用いた認証スキーム
図4は、本発明の一実施形態による非対称キー認証に用いられるデバイスレイヤードスキームを図式的に説明する図である。
【0086】
図4において、コンピューティングデバイス300は、認証器304を動作する管理サーバ302を用いて検証される。コンピューティングデバイス300、管理サーバ302、および、認証器304は、
図1のコンピューティングデバイス24、管理サーバ28、および、認証器プログラム86を実行するのに用いられる。
【0087】
図1のデバイス100と同様に、デバイス300は多層コードを動作し、“DICE層”312、および、L0…Lnで示される可変コードの各層を有する。
図4において、はっきりとさせるため、層L0314、層L1316、層Ln318だけが示されている。一実施形態において、DICE層は、信頼の基点層となり、且つ、デバイスブート時に、無条件に実行される。層L0…Lnは、DICE層の後に、所定順序、たとえば、連続的に実行される。デバイス300中の層、および、キー生成スキームは、通常、デバイス100中で記述されたスキームと類似する。
【0088】
デバイス300は、秘密鍵生成(SCG)モジュール306、認証モジュール308、および、証明モジュール310を有する。
図2のSCG106と同様に、SCG306は、OWF320を用いて、S0…Snで示されるシークレットのシーケンスを生成する。DICE層のOWFは、UDS324、および、層L0の測定値MO(328A)に基づいて、層L0中に用いられるシークレットS0を生成する。L0のOWFは、層L1中に用いられるシークレットS1を生成し、以下同様である。所定層LiのOWFは、層順序にしたがって、前の層Li-1により生成されるシークレットSi、および、次の層の測定値Mi+1に基づいて、シークレットSi+1を生成する。
【0089】
本例において、認証モジュール308は最後のLnに結合され、これにより、デバイスは、DICE層、および、可変層L0…Lnを認証する。あるいは、認証モジュール308は、L0…Ln-1中の中間層に結合され、且つ、中間層と以下の各層を認証する。
【0090】
本例において、(上記のデバイス100に類似する)層L0は、乱数発生器(RNG)332を有し、デバイスブート後に、ノンスNaを生成する。いくつかの実施形態において、層L0のOWFは、(i)層L1の測定M1(328B)、(ii)DICE層からのシークレットS0、および、(iii)RNG332を用いて生成されるノンスNaを入力として受信する。層L0のOWFは、たとえば、S1=HMAC([M1|Na],S0)を計算することにより、シークレットS1を層L1に生成し、S0はHMACキーを有し、且つ、連結データ[M1|Na]は、HMAC関数に入力されるデータである。その他の層中、シークレットSi+1は、Si+1=HMAC([Mi+1],Si)により計算される。
【0091】
証明モジュール310は、対応する層L0…Lnと関連するCERT0…CERTnで示される認証のチェーンを生成する。認証プロセスは、対応する層L0…Ln中で生成されるAK0…AKnで示される非対称キーの使用を含む。層Liにおいて、プロセッサ40は、適当な鍵導出関数(KDF)340をシークレットSiに適用することにより、“AKi”で示される非対称キーを導出する。KDF340は、上記のKDF140と同じ(あるいは、類似する)である。各非対称キーAKiは、パブリックキー“PKi”、および、対応するプライベートキー“PRi”を有する。本例において、各層L0…Ln-1は、埋め込まれた認証権限付与(ECA)342を有する。層L0のECA0は、認証CERT1を生成し、層L1のECA1は認証CERT2を生成し、以下同様である。
【0092】
図2の例において、層Li中のECAiは、同じ層Li中で生成されるプライベートキーPRi、および、次の層Li+1で生成されることが予期される非対称キーAKi+1のPKi+1に等しいパブリックキーPKi+1’(Liで生成される)を受信する。いくつかの実施形態において、ECAiは、プライベートキーPRiを用いて、パブリックキーPKi+1に署名することにより、認証CERTi+1を生成する。よって、認証CERTi+1は、それが、層LiのシークレットプライベートキーPRiを用いて署名されたことの証明を提供する。注意すべきことは、CERTi+1は、シークレットSi、LiのKDF、AKiとECAiにより、層Li-1により測定される測定値Miを暗黙に認証することである。
【0093】
いくつかの実施形態において、デバイス300は、“CERT0”で示される認証を、デバイスの層L0に提供する外部認証機関(Certification Authority、CA)350を用いて、層L0のパブリックPK0を認証する。CERT0は、“DeviceID”とも称されるPKOを認証する。製造業者が、CA350をデバイスの認証機関として委任するとき、CERT0は、デバイスが、関連のある製造業者により製造されたことを証明する。このほか、CERT0は、相手先商標製品の製造会社(OEM)によりデバイスに提供されてもよい。代替的な実施形態において、層L0は、任意の適当なセルフ認証方法を用いて、PKOを認証する。一実施形態において、デバイスの層Li中、AKi-1のパブリックキーPKi-1が用いられて、認証CERTiの署名を有効にする。
【0094】
認証モジュール308は、層LnのシークレットSnを受信するとともに、KDF340を用いて、シークレットSnから、非対称キーAKnを生成し、プライベートキーPRnは認証に用いられる。認証モジュール308は、認証器304から、チャレンジNvを受信するとともに、プライベートキーPRnを用いて、署名関数354をチャレンジNvに適用することにより、デジタル署名DSを生成する。関数354を実行して署名を行う(および、認証器中で検証を実行する)のに適する例示的な署名生成、および、検証方法は、たとえば、2013年7月、連邦情報処理標準(Federal Information Processing Standard Publication) (FIPS PUB) 186-4、“デジタル署名規格(DSS)”ですでに説明されている。認証モジュール308はさらに、層L0…Lnに沿って積み重ねられた認証CERT0…CERTnのチェーンを受信する。認証スキームで実行される認証器の部分は以下で詳細に記述される。
【0095】
図5(A)および(B)は、ここで開示されるいくつかの実施形態による非対称キー暗号化を用いたデバイス認証と検証の方法を説明するフローチャートである。
【0096】
認証スキームは、
図1のデバイス24、および、認証器プログラム86により実行されてもよい。デバイス24は、
図4で示されるレイヤードスキームを実行すると推定される。認証プトロコルの実行において、デバイスと認証器は、たとえば、通信ネットワーク32を介して、互いに通信する。
【0097】
図5(A)(デバイス部分)の方法は、デバイス24のプロセッサ40から開始され、ブート工程400で、ブートサイクルを開始する。ブートの実行時、プロセッサ40は、DICE層312の実行を開始する。ノンス生成工程404において、プロセッサは、ノンスNaを生成し(たとえば、RNG332を用いる)、ノンスNaは、現在のブートサイクルだけと関連する。あるいは、プロセッサは、(たとえば、安全に)層L1…Lnの少なくともいくつかを越えて、ノンスNaを送信するとともに、Naを、層L0以外の一層、たとえば、Lnにより、認証器に送信する。
【0098】
認証生成工程408において、プロセッサは、所定順序(たとえば、連続的に)に従って、層L0…Lnを実行すると共に、各層Liで、層Li-1で生成されたシークレットSiに基づいて、非対称キーAKiを生成する。さらに、プロセッサは、層Li中で(ECAiを用いて)、層Li+1中のAKi+1のパブリックキーPKi+1を生成するとともに、AKiのプライベートキーPRiにより署名される。
【0099】
チャレンジ受信工程412において、プロセッサは、認証器から、チャレンジNvを受信する。レスポンス計算工程420において、プロセッサは、チャレンジにレスポンスして、非対称キーAKnのプライベートキーPRnを用いて、チャレンジNvに署名することにより(たとえば、署名関数354を用いる)、デジタル署名DSを計算する。
【0100】
レスポンス送信工程424において、プロセッサは、通信ネットワーク32を介して、デジタル署名DS、および、認証CERT0…CERTnを認証器に送信する。
【0101】
ブートクエリー工程428において、プロセッサは、リブートが必要か、あるいは、今発生しているかをチェックし、必要ない、発生していない場合、工程412に戻り、認証器から、後続の調整を受信する。そうでなければ、プロセッサは、工程400に戻り、後続のブートサイクルを開始するとともに、前のブートサイクルで用いられるNa値と比較して、異なる値を有するノンスNaを生成する。
【0102】
図5(B)(認証器部分)の方法は、通常、
図5(A)の方法と並行して実行される。
図5(B)の方法は、認証器プログラム86が、チャレンジ送信工程458において、チャレンジNvを生成、および、デバイス24に送信して、層Ln、および、以下の各層を検証することから開始される。認証器は、任意の適当な時間、たとえば、デバイスからのサービス要求、管理人の要求へのレスポンス時、あるいは、定期的に、チャレンジを生成、および、送信してもよい。
【0103】
レスポンス受信工程462において、ホストは、デバイスから、工程458で送信されるチャレンジNvに対応するデジタル署名DSを受信する。検証操作は、主に、記述されるように、二段階で、(i)認証を検証、および、(ii)デジタル署名を検証、を有する。
【0104】
認証検証工程466において、ホストは、工程424でデバイスにより送信されたCERT0…CERTnを検証する。認証器は、製造業者CA350のルート認証を所有する、あるいは、認証器は、CERT0認証中の機関情報アクセス(Authority Information Access、AIA)フィールドにより、ルート認証にアクセスできると推定される。認証器は、ルート認証を用いて、CERT0を検証する。認証器はさらに、PKnを認証するCERTnを検証するまで、CERT0から、パブリックPK0(DeviceID)を用いて、CERT1を検証する。検証の認証終了後、PKnは、信頼できるとみなされる。
【0105】
デジタル署名検証工程470において、認証器は、PKnを用いて、デジタル署名DSを検証する。工程470中のDS検証関数は、デバイス側で用いられる署名生成関数354と適合する。この検証段階は、DICE層、および、層L0…Lnの身分と状態を検証する。
【0106】
工程470の後で、必要に応じて、方法は、工程458に戻り、後続の異なるチャレンジNvをデバイスに送信する。
【0107】
いくつかの実施形態において、デバイスのブート事象後、認証器は、デバイスが、工程400、工程404、および、工程408を実行するのを待ち、認証器に、デバイスが、後続のチャレンジを受信する準備をしたことを示す。
【0108】
上記の実施形態は、範例として与えられ、その他の適当な実施形態を使用することもできる。たとえば、上述の実施形態において、信頼のチェーンはDICE層を信頼の基点としているが、代替的な実施形態において、その他の実施形態において、その他の種類の素子を信頼の基点とすることもできる。
【0109】
ここで開示される実施形態は主に、ワイヤレス、あるいは、ランドネットワークに接続されるデバイスの認証スキームに取り組んでいるが、ここで開示される方法、および、システムは、その他のアプリケーション、たとえば、デバイスが、適当なバスにより(たとえば、マザーボード上の)、あるいは、配線を用いて、 (たとえば、車輛内で)認証器に接続される。
【0110】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の思想を脱しない範囲内で各種の変形を加えることができる。
【符号の説明】
【0111】
20…コンピューティングシステム
24、100、300…コンピューティングデバイス
28、102、302…管理サーバ
32…通信ネットワーク
40…プロセッサ
44…メモリ
48…ROM
52…ペリフェラルコンポーネントインターコネクトエクスプレスバス
54…ネットワークインターフェース
56…認証関数
58…ブートコード(DICE層)
60…ソフトウェア層
62、124、324…一意のデバイスシークレット(UDS)
66…複合デバイス識別子(CDI)
70…暗号エンジン
72、132、160…乱数発生器(RNG)
74…暗号ノンス
76…主機プロセッサ
80…メモリ
84…ネットワークインターフェース
86、104、304…認証器プログラム
88…データベース
90…ポリシー
106、306…秘密鍵生成(SCG)
108、308…認証モジュール
112、312…DICE層
114、314…L0
116、318…Ln
120、320…一方向性関数
128A、328A…M0
128B、328B…M1
136A、136B…ファームウェアセキュリティ記述子(FSD)
140、340、344…鍵導出関数(KDF)
144…SKn
148、354…署名関数
200、400…ブート
204、212、216、220、228、250、254、258、262、266、270…工程
310…照明モジュール
316…L1
328C…M2
342…ECA0、ECA1
350…外部認証機関(CA)
404、408、412、420、424、428、458、462、466、470…工程