(58)【調査した分野】(Int.Cl.,DB名)
前記セキュリティチップ証明書が有効であるかどうかを検証することは、前記セキュリティチップ証明書を発行した認証局と連絡を取ることを含む、請求項2に記載のホストコンピューティングデバイス。
前記命令は、前記ペアリングプライベート鍵および対応するペアリング公開鍵を生成するようにさらに実行可能である、請求項5に記載のホストコンピューティングデバイス。
前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可されるかどうかを決定することは、前記相互認証セッションの前記初期部分において前記アクセサリデバイスから受け取ったコンフィギュレーション情報を検査することを含む、請求項1に記載のホストコンピューティングデバイス。
論理サブシステムと、前記論理サブシステムによって実行可能な命令を記憶したストレージサブシステムとを備えるホストコンピューティングデバイスにおける方法であって、
アクセサリデバイスとの相互認証セッションの初期部分を実施する工程と、
前記ホストコンピューティングデバイスおよび前記アクセサリデバイスに関する情報を、コンピュータネットワークを介してリモートペアリングサービスに送る工程と、
応答として、前記リモートペアリングサービスから、前記ホストコンピューティングデバイスから前記リモートペアリングサービスに送られたペアリング公開鍵、および前記アクセサリデバイスから受け取ったセキュリティチップ証明書のダイジェストを含むペアリング証明書であって、前記リモートペアリングサービスのプライベート鍵を用いて暗号化されたペアリング証明書を受け取る工程と、
前記相互認証セッションの前記初期部分を完了すると、前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可されるかどうかを決定する工程と、
前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可される場合、前記リモートペアリングサービスからの前記ペアリング証明書を使用して、前記アクセサリデバイスとの相互認証セッションを完了する工程と
を含む方法。
前記セキュリティチップ証明書が有効であるかどうかを検証する工程は、前記セキュリティチップ証明書を発行した認証局と連絡を取る工程を含む、請求項12に記載の方法。
前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可されない場合は、前記相互認証セッションの完了を拒否する工程をさらに含む、請求項11に記載の方法。
前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可されない場合は、前記リモートペアリングサービスを利用しない片方向認証を行う工程をさらに含む、請求項18に記載の方法。
前記アクセサリデバイスが前記ホストコンピューティングデバイスと共に使用されることが許可されるかどうかを決定する工程は、前記相互認証セッションの前記初期部分において前記アクセサリデバイスから受け取ったコンフィギュレーション情報を検査する工程を含む、請求項11に記載の方法。
【発明を実施するための形態】
【0006】
[0014] 前述のように、いくつかのコンピュータアクセサリ偽造防止方式は、各真正なデバイス上のセキュリティチップを利用するものであり、このセキュリティチップは、ホストコンピュータがデバイスを認証することを可能にする。しかしながら、そのような偽造防止方式は、アクセサリが接続されるホストコンピューティングデバイスのいかなる知識もなしにアクセサリを認証することがある。さらに、セキュリティチップ自体が盗まれるまたは紛失した場合、セキュリティチップが偽造デバイスを作製するために使用されるおそれがある。
【0007】
[0015] さらに、前述のように、真正なアクセサリデバイスであっても、不正な使用の形態に対して脆弱なことがある。たとえば、いくつかのアクセサリデバイスでは、より高価なデバイスがより多くの使用可能な付加価値機能を有することができるように、使用可能な付加価値機能が異なる様々な価格帯で入手可能な場合がある。これにより、消費者がその必要および/または所望に応じて適切なまたは望ましい製品を選ぶことが可能になり得るが、偽造者および/またはハッカーがより低コストのモデルのデバイス上で許可なしに機能をロック解除して支払いなしに付加価値機能を得る機会を提供することにもなり得る。
【0008】
[0016] 付加価値機能をセキュアにするための以前の解決策は、ファームウェア更新の前にファームウェアイメージの有効性を検査するために秘密鍵の使用に依拠して、不正な更新を防止することがある。しかしながら、各ファームウェアイメージに署名するのに単一の鍵を用いることは、単一の鍵が知られることになった場合、すべてのシステムが危険にさらされることになり得る。
【0009】
[0017] したがって、アクセサリの偽造の作製および/または使用の防止に関する種々の問題に対処する実施形態を、本明細書で開示する。たとえば、紛失したまたは盗まれたセキュリティチップの使用を防止するために、いくつかの実施形態は、紛失したまたは盗まれたセキュリティチップが偽造デバイスの作製に使用できないようにセキュリティチップがアクセサリデバイスに組み込まれる工場における個別のセキュリティチップのアクティブ化を対象とする。
【0010】
[0018] 加えて、実施形態は、コンピューティングデバイスアクセサリおよびホストコンピューティングデバイスの相互認証を対象とする。これは、コンピュータアクセサリのSKU(stock keeping unit:最小在庫管理単位)の識別を容易にすることができる。たとえば、特定のホストとの使用を意図したSKUを認証するために、相互認証を使用することができる一方、異なるホストを意図した別のSKUを認証するために、片方向認証を使用することができる。これはまた、特定のアクセサリデバイスと特定のホストコンピューティングシステムとの間の「ペアリング」機能を可能にすることができる。より詳細に後述されるように、そのようなペアリングは、許可されていないアクセサリおよび/または危険にさらされたコンソールがエコシステムの他の部分と共に動作することを制限されるように、リモートサードパーティサービスによって制御され得る。
【0011】
[0019] さらに他の実施形態は、付加価値機能の不正なロック解除を防止するためのアクセサリデバイスのセキュアなロック解除を対象とする。より詳細に後述されるように、これらの実施形態では、セキュアなハードウェアモジュールをセキュアではないチップ(たとえば、システムオンチップ(SOC))上で利用して、SOCチップ上のファームウェアではなくセキュリティチップがロック解除プロセスを制御するように、セキュリティチップとSOCとの間のセキュアな相互作用を実現することができる。これは、SOC設計にハードウェアセキュリティモジュールを組み込むことによって、セキュアなSOCチップを作製するセキュリティの専門知識を持たないSOCの製作者を可能にすることができる。
【0012】
[0020]
図1は、本開示の実施形態によるコンピューティングシステムおよびアクセサリデバイスのための例示的使用環境100を示す。使用環境100は、表示デバイス104と通信するビデオゲームコンソールの形態でコンピューティングデバイス102を備え、コンピューティングデバイス102は、表示デバイス104にビデオコンテンツを出力することができるようにされている。ユーザ106は、1つまたは複数の使用環境センサを介してユーザ106を感知するように構成されたセンサシステムの形態のアクセサリデバイス108を介して、コンピューティングデバイス102と対話するものとして示されている。アクセサリデバイス108は、2次元画像センサ(たとえば、RGBもしくはグレースケールセンサ)、深度画像センサ(たとえば、飛行時間もしくは構造化光深度センサ)、ステレオカメラシステム、1つまたは複数のマイク(たとえば、指向性マイクアレイ)、および/または任意の他の適切なセンサを含むがこれらに限定されない、任意の適切な1つまたは複数のセンサを含むことができる。本明細書ではホストビデオゲームコンソールおよびアクセサリセンサシステムの文脈で説明しているが、開示される実施形態は、任意の適切なホストおよびアクセサリシステムに適用され得ることは理解されよう。
【0013】
[0021]
図2は、アクセサリデバイスの製造および使用の例示的方法200の種々の工程を示すブロック図である。まず、方法200は、部品製造者において、202および204でそれぞれ示されるように、アクセサリデバイスのセキュリティチップおよび他の部品を製造することを含む。種々の部品は、異なる場所で作製されてよく、次いで、アクセサリデバイス製作のために組立て施設に輸送され得ることは理解されよう。そして、方法200は、206で示されるように、アクセサリを組立てるために使用されるセキュリティチップおよび他の部品をアクセサリデバイス製造者へ輸送することを含む。前述のように、セキュリティチップは、アクセサリデバイス製造施設でアクティブにされるまで非アクティブであるように製造することができ、したがって、セキュリティチップは、アクセサリデバイス製造の前に紛失したまたは盗まれた場合に偽造アクセサリで使用することができない。
【0014】
[0022] アクセサリデバイス製造施設において、部品製造者から受け取られた部品からアクセサリが製造される。後述するように、各アクセサリのためのセキュリティチップは、そのチップを組み込むアクセサリの製造中または製造後にアクティブにすることができる。次いで、製造されたアクセサリは、それぞれ208および210で、アクセサリの設計者/販売者に移送され、そして消費者に販売される。次いで、消費者が、正規のアクセサリデバイスを適切なホストデバイスに接続することができる。認証およびロック解除されると、使用し楽しむために認証されアクティブにされたアクセサリデバイスが得られる。
【0015】
[0023]
図3は、アクセサリデバイス製造の前に紛失した、盗まれた、または他の形で不適切に取得されたセキュリティの不正な使用を防止するための方法300の実施形態を示す。簡単に言えば、方法300はプライベート/公開鍵を利用し、公開鍵はセキュリティチップ製造者に提供され、プライベート鍵はセキュアな条件下でアクセサリデバイス製造者に提供される。プライベート鍵は、本明細書では「セキュリティモジュール」と呼ばれる、適切なセキュリティ特性を有する(たとえば、リバースエンジニアリングが難しい)スマートカードまたは他のコンピューティングデバイスの形態で、セキュリティチップ製造者へ提供することができる。さらに、セキュリティモジュールは、該セキュリティモジュールによってアクティブにできるセキュリティチップの数を制限するように実行可能なコードを含むことができる。このようにして、たとえばセキュリティモジュールに記憶されたプライベート鍵の違反等によるセキュリティ違反は、許可されたアクティブ化の数に制限することができ、したがってセキュリティ侵害の影響を制限することができる。さらに、いくつかの実施形態では、セキュリティモジュールは、アクセサリデバイスの異なるSKUに対する異なるプライベート鍵(それぞれが対応する公開鍵を伴う)を含むことができる。
【0016】
[0024] 方法300は、セキュリティチップ製造者、アクセサリデバイス製造者、およびデバイス設計者/販売者のそれぞれで行われるプロセスを示し、デバイス設計者/販売者は、販売用のアクセサリデバイスを製造するためにアクセサリデバイス製造者を利用する。方法300は、302で、アクセサリデバイスセキュリティチップについて、公開鍵を、またはいくつかの実施形態ではSKU毎の公開鍵をセキュリティチップ製造者に送ることを含み、304で、セキュリティチップ製造者において公開鍵を受け取ることを含む。方法300は、306で、公開鍵毎のプライベート鍵を有するセキュリティモジュールをアクセサリデバイス製造者に送ることをさらに含み、アクセサリデバイス製造者において、308でセキュリティモジュールが受け取られる。
【0017】
[0025] 方法300は、310で、セキュリティチップを製造することをさらに含み、各セキュリティチップは、適切な公開鍵(たとえば、アクセサリデバイスの意図されたSKUに対する適正な公開鍵)を含む。セキュリティチップは、チップファームウェアが当初は「Activate(アクティブ化)」コマンドのみに応答するように、非アクティブ状態にあるように製造され、アクティブ化が完了するまで、アクティブ化プロセスで使用される動作以外の他のセキュリティチップ動作を行わない。セキュリティチップを組み込んだアクセサリデバイスは、セキュリティチップがアクティブにされアクセサリデバイスが認証されるまでは動作しないことは理解されよう。
【0018】
[0026] 適切な公開鍵を有する非アクティブのセキュリティチップを製造すると、方法300は、312で、セキュリティチップをアクセサリデバイス製造者に送ることを含み、アクセサリデバイス製造者において、314でセキュリティチップが受け取られる。次に、316で、方法300は、アクセサリデバイスを組み立て、次いでセキュリティチップをアクティブにすることを含む。例示的セキュリティチップアクティブ化プロセスの詳細については、
図4を参照して後述する。アクセサリデバイスの製造が完了しセキュリティチップをアクティブにすると、方法300は、318で、アクセサリデバイスを設計者/販売者に送ることを含み、設計者/販売者は、320でデバイスを消費者に販売する。
【0019】
[0027] 前述のように、いくつかの実施形態では、セキュリティモジュールまたは他のプライベート鍵ストレージデバイスは、セキュリティモジュールによって実行できるセキュリティチップロック解除の数を制限する、実行可能コマンドを含むことができる。したがって、許可された数のセキュリティチップをアクティブにした後、方法300は、322で、そのセキュリティモジュールに対する許可されたセキュリティチップアクティブ化の限度に達することを含む。この例では、新しいセキュリティモジュールがアクセサリデバイス設計者/販売者(もしくは、セキュリティチップ公開/プライベート鍵を管理する他の当事者)から取得されるか、または現在のセキュリティモジュールおよび現在の公開/プライベート鍵の限度が増大されない限り、追加のセキュリティチップがアクティブにされることはない。セキュリティモジュール毎のアクティブにできるセキュリティチップの数に限度を課すことにより、セキュリティモジュールに対するプライベート鍵の違反の悪影響を制限するのを助けることができる。
【0020】
[0028] いくつかの実施形態では、セキュアな通信チャネルを使用して、セキュリティチップアクティブ化の限度の更新をセキュリティモジュールに送信することができる。したがって、方法300は、(セキュリティモジュールの違反が発生していないことを想定して)そのセキュリティモジュールに対するチップアクティブ化限度を増大する命令を送信することを含む。次いで、方法300は、326で、セキュリティモジュールにおける限度増大を受け取り、328で、追加のセキュリティチップをアクティブにすることを含む。セキュリティモジュール上のプライベート鍵に違反していると決定された場合、違反されたプライベート鍵の代わりに新しい公開/プライベート鍵を生成して、その新しいプライベート鍵を新しいセキュリティモジュールを介してアクセサリデバイス製造者に転送することができることは理解されよう。
【0021】
[0029] セキュリティチップは、アクセサリ製造の場所で任意の適切なやり方でアクティブにすることができる。
図4は、アクセサリデバイス製造者の場所でセキュリティチップをアクティブにするための方法の例示的実施形態を示すフロー図を示す。
図4は、セキュリティチップ、アクセサリデバイス、およびアプリケーションのそれぞれで発生するプロセスを示し、アプリケーション(たとえば、コンピュータ上で実行されているスマートカードインターフェースアプリケーション)は、セキュリティモジュールとの通信を可能にするように構成されている。
【0022】
[0030] 方法400は、402で、チップ識別番号、およびいくつかの実施形態ではセキュリティチップのSKUを求めて、アプリケーションからの要求をセキュリティチップに送ることを含む。セキュリティチップは、404で要求を受け取る。応答して、セキュリティチップは、406で乱数を生成し、408で、乱数、チップ識別番号、およびSKUをアプリケーションに送る。アプリケーションは、410で、この情報を受け取ってセキュリティモジュールに転送し、セキュリティモジュールにおいて、412でこの情報が受け取られる。受信すると、セキュリティモジュールは、414で、適切なプライベート鍵(SKUに対応するプライベート鍵)を用いて乱数、チップID、およびSKUに署名(サイン)し、416で、署名した値をアプリケーションに送る。セキュリティモジュールはさらに、417で示されるように、アクティブ化限度カウンタを減分(または特定の実装形態によっては増分)することができる。他の実施形態では、アクティブ化限度カウンタは、チップアクティブ化が完了した後に減分され得る。
【0023】
[0031] 続いて、方法400は、418で、署名された値を受け取り、署名された値をセキュリティチップに転送することを含む。次に、セキュリティチップは、420で、製造の際にセキュリティチップ上に含められた公開鍵を使用して、署名された値を検証し、次いで、422で、署名された値が、前もってセキュリティモジュールに送られた適正な値と一致するかどうかを決定する。値が適正でない場合、方法400は、424でセキュリティチップをアクティブにすることを含む。他方で、値が一致しない場合、方法400は、426でセキュリティチップをアクティブにしないことを含む。
【0024】
[0032] セキュリティチップがアクティブにされた後、アクセサリデバイスは消費者に販売される準備ができる。前述のように、アクセサリデバイスは、追加のセキュリティ条件が満たされるまでアクセサリデバイスが使用されるのを防止するセキュリティ手段を含むことができる。たとえば、アクセサリデバイスは、それが認証されるまでは最初にホストデバイスに接続されたときに機能しないように構成され得る。いくつかの実施形態では、アクセサリデバイスがホストコマンドまたはメッセージに単に応答するように、そのような認証プロセスをホストから駆動することができる。たとえば、コマンドに応じて、アクセサリデバイスは、検証のためにホストにデータを送るか、またはそれが適切な認証プロトコルに正しく従っていることを検証するためにホストから送られたデータを処理する。認証が正常に完了した場合のみ、デバイスは通常の機能を開始することになる。
【0025】
[0033] いくつかの例では、認証は、アクセサリデバイスがホストを認証しない片方向認証であり得る。他の実施形態では、認証は、ホストとアクセサリデバイスが互いに認証するように相互であり得る。これは、アクセサリデバイスがそのホストと特定的に関連付けられるように、ホストとアクセサリデバイスの「ペアリング」を確立することを可能にすることができる。
【0026】
[0034]
図5Aおよび
図5Bは、ホストコンピューティングデバイスおよびアクセサリデバイスを相互に認証するための方法500の実施形態を示すフロー図を示す。適切なホストおよびアクセサリデバイスの例は、請求項1に示されるビデオゲームコンソールおよびセンサシステムを含むが、これらに限定されない。簡単に
図6を参照すると、方法500は、セキュリティチップ602を備えるアクセサリデバイス600と、ホストコンピューティングデバイス604と、相互認証を仲介するリモートペアリングサービス606とのそれぞれで行われるプロセスを示している。相互認証プロトコルの種々の部分がアクセサリデバイスによって行われるものとして説明され得るが、メッセージを処理するエンティティは実際にはデバイス内部のセキュリティチップとすることができ、アクセサリデバイスファームウェアはホストとセキュリティチップの間で単にメッセージを輸送することは理解されよう。これは、中間者攻撃を防止するのを助けることができる。
【0027】
[0035] 方法502は、502で、「ホストハロー(host hello)」メッセージを、ホストコンピューティングデバイスからアクセサリデバイスに送ることを含み、ここで、ホストハローメッセージはランダムノンス(random nonce)を含む。アクセサリデバイスは、504で、ホストハローメッセージを受け取り、506で、別のランダムノンスを有する「デバイスハロー(device hello)」メッセージを送り、デバイスハローメッセージは、508でホストによって受け取られる。さらに、510で、アクセサリデバイスはまた、セキュリティチップ証明書をホストデバイスに送り、512で、セキュリティチップ証明書は、ホストによって受け取られ、(たとえば、デバイス証明書又はセキュリティチップ証明書を発行した認証局と連絡することにより)検証されて、セキュリティチップ証明書が有効であることが確認される。さらに、いくつかの実施形態では、ホストは、認証のこの初期部分における相互認証セッションの初期部分においてアクセサリデバイスからコンフィギュレーション情報を受け取り、コンフィギュレーション情報を検査することにより、アクセサリデバイスがホストデバイスと共に使用されるのを許可されないことが決定された(たとえば、アクセサリデバイスが不適正なSKUである)場合、認証を拒否することができる。
【0028】
[0036] 次に、ホストおよびリモートペアリングサービスは、513および514で示されるように、セキュアな接続を確立してペアリングプロセスを開始する。次いで、ホストは、516で示されるように、ペアリング機能を支援するためのペアリングプライベート/公開鍵を取得する。ペアリングプライベート/公開鍵ペアは、ペアリングプロセスの一部として生成する、または事前に構成することができる。プライベート/公開鍵ペアを取得した後、ホストは、518で、セキュリティチップ証明書およびペアリングプライベート鍵をリモートペアリングサービスに送り、それらは、520で受け取られる。
【0029】
[0037] この情報を受信すると、リモートペアリングサービスは、522で、ペアリングがホストおよびアクセサリデバイスについて許可されるべきかどうかを決定することができる。たとえば、いずれかのデバイスが危険にさらされていることが知られている場合、アクセサリがホストに対する不適正なSKUである場合、および/または他の潜在的問題が知られている場合、524で示されるように、ペアリングを拒否することができる。他方で、522で、ホストとアクセサリデバイスの間のペアリングが許可されることが決定された場合、リモートペアリングサービスは、526で、ペアリング証明書をホストに送ることができ、ここで、ペアリング証明書は、ペアリング公開鍵、および(516でホストによって取得されたペアリング鍵から区別される)ペアリングサービスのプライベート鍵を用いてすべて署名されたセキュリティチップ証明書のダイジェストを含む。リモートペアリングサービスはまた、527で示されるように、ホストデバイスおよびアクセサリデバイスの1つまたは複数を伴う将来のペアリングが許可されるかどうかを決定する際に使用するためのホストデバイスおよびアクセサリデバイスに関する識別情報を記憶することができる。
【0030】
[0038] ホストは、528で、ペアリング証明書を受け取り、次いで530で、ペアリング証明書を「ホスト証明書(host certificate)」としてアクセサリデバイスに転送する。アクセサリデバイスは、532で、ホスト証明書を受け取り、534で、リモートペアリングサービスの公開鍵を用いてホスト証明書を検証する。この公開鍵は、526でペアリング証明書を暗号化するために使用されたプライベート鍵に対応する。公開鍵を用いてホスト証明書を検証した後、536で示されるように、アクセサリデバイスは、ホスト証明書に含まれる情報を検証することができる。ペアリング証明書内の情報が検証されない場合、ペアリングプロセスを中止することができる。
【0031】
[0039] ホストはまた、538で、「プリマスターシークレット(pre-master secret)」を生成し、アクセサリデバイス上のセキュリティチップの公開鍵を用いてプリマスターシークレットを暗号化し、したがって、プライベート鍵保有者(たとえば、アクセサリデバイス上のセキュリティチップ)だけがそれを復号することができる。プリマスターシークレットは、乱数など任意の適切な情報を含むことができる。ホストは、541で、プリマスターシークレットをアクセサリデバイスに送り、アクセサリデバイスは、542で、プリマスターシークレットを受け取る。ホストはさらに、544で、プリマスターシークレット、およびホスト/アクセサリ「ハロー(hello)」メッセージ交換中に交換された2つのノンスを用いて、「マスターシークレット(master secret)」を生成する。
【0032】
[0040] プリマスターシークレットを受信すると、アクセサリデバイスは、548で示されるように、アクセサリデバイスプライベート鍵を用いてプリマスターシークレットを復号することができ、550で示されるように、この値および2つの「ハロー」ノンスからマスターシークレットを導き出すことができる。次に、ホストは、552で、「ホスト証明書検証(host certificate verify)」メッセージを生成し、516で取得したプライベートペアリング鍵を用いてメッセージに署名する。次いで、ホストは、554で、ホスト証明書検証メッセージをアクセサリデバイスに送る。アクセサリデバイスは、556で、ホスト証明書検証メッセージを受け取り、558で、ホスト証明書に含まれたペアリング公開鍵を用いて、ホスト証明書検証メッセージを検証する。これは、ホスト証明書内のペアリング公開鍵が、リモートサービスにペアリング公開鍵を提供した同じデバイスによって送られたということを、アクセサリデバイスによって確認することを可能にする。
【0033】
[0041] 続けて、560で、ホストは、「ホスト完了(host finished)」メッセージを生成してアクセサリデバイスに送り、アクセサリデバイスは、562でメッセージを受け取る。同様に、564で、アクセサリデバイスは、「デバイス完了(device finished)メッセージ」を生成してアクセサリデバイスに送り、このメッセージは、566でホストによって受け取られる。相互認証プロセスが完了すると、アクセサリデバイスは、通常の機能をロック解除して開始する。方法500の相互認証プロセスは、TLS(トランスポート層セキュリティ)相互認証など他の相互認証プロセスに優る利点を提供することができる。たとえば、方法500を用いると、各ホストおよびデバイスペアはそれ自体の鍵を有するので、1つを危険にさらしても、エコシステムの大規模な破壊につながらない。さらに、ペアリングがオンラインサービスによって制御されるので、オフライン攻撃はプロセスに対して成功することがない。加えて、セキュリティチップそれ自体がアクセサリデバイス側のプロセスを制御するので、セキュリティチップは様々な異なるデバイスで使用することができ、したがって、認証プロセスを他のアクセサリに適合することが可能である。
【0034】
[0042] 前述のように、いくつかの例では、片方向認証がアクセサリデバイスのロック解除を認証するために利用され得る。そのような認証は、
図5A〜5Bを参照して説明した認証と類似し得るが、リモートサービスおよびペアリング証明書に関する工程が省略されており、したがって、プリマスターシークレットメッセージが、ホストでセキュリティチップ証明書を受け取り検証した後にホストからアクセサリに送られる最初のメッセージである。さらに、いくつかの実施形態では、異なるアクセサリSKUが異なる認証プロセスを利用することができる。たとえば、特定のホストとの使用を意図したSKUは相互認証を利用することができる一方、より広い範囲のコンピューティングデバイス(たとえば、PCタイプデバイス)との使用を意図したSKUは片方向認証を利用することができる。そのような実施形態では、デバイスが不適正なSKUであるためにホストが相互認証を拒否した場合、ホストは、アクセサリデバイスの使用を可能にするために片方向認証を行うことができる。任意の適切な片方向認証プロセスが使用されてよいことは理解されよう。
【0035】
[0043]
図7は、認証後にアクセサリデバイスをロック解除するための方法700の例示的実施形態を示すフロー図を示す。簡単に
図8を参照すると、方法700は、アクセサリデバイス804内のセキュリティチップ800およびシステムオンチップ(SOC)802で行われるプロセスを示す。SOCは、セキュアでないファームウェア805と、セキュリティチップ800のセキュアな領域をSOC802内へ拡張するためにSOC上のハードウェアとして実装されたセキュリティハードウェアモジュール806とを備える。セキュリティハードウェアモジュール806は、セキュリティ状態情報をセキュリティチップから直接的にセキュリティハードウェアモジュールにセキュアに転送する能力を追加するために、任意の所望の非セキュア部品に組み込まれてよい。そして、セキュリティハードウェアモジュールはセキュリティ状態を使用して、SOC内の特定の機能を有効または無効にすることができる。
【0036】
[0044] セキュリティハードウェアモジュールを定義することにより、SOCのセキュリティを確証するための作業の範囲が低減する。SOCの大部分は、信頼できないと見なされ得るが、一方セキュリティハードウェアモジュール(SecurityHardwareModule)は信頼される。さらに、セキュリティハードウェアモジュールのハードウェアブロックの使用は、セキュアな製品の開発の技術的能力および/または経験を有することがないベンダーによって定義されたデバイスに、このハードウェアブロックを組み込むことを可能にすることができる。
【0037】
[0045] セキュリティハードウェアモジュール806は、任意の適切な部品を備えることができる。たとえば、図示の実施形態では、セキュリティハードウェアモジュール806は、乱数発生器808または他の適切なエントロピー源、ハードウェアスニッフィングインターフェース(hardware sniffing interface)810、および不揮発性メモリ812を備える。乱数発生器808は、セキュリティチップ800に送るためのチャレンジメッセージを定式化する際に使用することができる。ハードウェアスニッフィングインターフェース810は、セキュリティハードウェアモジュール806で受け取られたメッセージが、SOC上の潜在的に危険にさらされたファームウェアからではなくSOCの外部のセキュリティチップ800から受け取られたかどうかを決定するために使用することができる。不揮発性メモリ812は、セキュリティチップとの通信を暗号化するために使用される鍵を記憶するために使用することができる。いくつかの実施形態では、鍵は、セキュリティチップ上に同じ鍵が記憶されるように、対称鍵にすることができ、また、各アクセサリデバイスがそれ自体の対称鍵ペアを有するように、そのセキュリティチップ/SOCペアに対して特定的にすることができる。他の実施形態では、任意の他の適切な鍵を使用することができる。
【0038】
[0046]
図7を参照すると、方法700は、701で、ロック解除要求を(たとえば、認証が完了した後にホストから)受け取り、702で、SOC上のファームウェアからSOC上のセキュリティハードウェアモジュールへ乱数の生成を求める要求を送ることを含む。応答して、セキュリティハードウェアモジュールは、704で乱数を生成し、706で共有鍵を用いて乱数を暗号化する。次いで708で、暗号化された乱数はファームウェアに提供され、したがって、ファームウェアには、暗号化されたバージョンの乱数のみが分かる。ファームウェアは、710で示されるように、暗号化された乱数を受け取って、暗号化された乱数をセキュリティチップに転送する。セキュリティチップは、712で、暗号化された乱数を受け取り、714で、共有鍵を用いて乱数を復号し、次いで716で、暗号化された乱数に対して演算を行って新しい値を形成する。任意の適切な演算が行われてよい。1つの非限定的例は、2の補数演算である。
【0039】
[0047] 乱数に対して演算を行って新しい値を生成した後、セキュリティチップは、718で、共有鍵を用いて新しい値を暗号化し、720で、暗号化された新しい値をSOCに送る。SOCは、722で、暗号化された新しい値を受け取り、セキュリティハードウェアモジュールに転送する。セキュリティハードウェアモジュールは、724で、ハードウェアスニッフィングインターフェースを介して、暗号化された新しい値がSOC上の場所から発生したのではなくSOCの外部から受け取られたことを確認する。次に、セキュリティハードウェアモジュールは、728で、暗号化された新しい値を共有鍵を用いて復号し、716で行われた演算の逆演算を行って、乱数の元の値を取得する。次いで、セキュリティハードウェアモジュールは、セキュリティチップが真正であることを保証するために逆演算の結果を元の乱数と比較する。比較が正しい場合、セキュリティハードウェアモジュールはSOCをロック解除することができ、それによりアクセサリデバイスが機能することを可能にする。
【0040】
[0048] いくつかの実施形態では、セキュリティチップによって送られるロック解除命令は、デバイスがロック解除されるべきであることを示す単一ビットを含むことができる。他の実施形態では、SOCの様々な機能をロック解除するために複数ビットがセキュリティチップによって送られる(たとえば、各ビットが別々の機能を制御する)ことがある。これにより、SKU識別の追加的機構を提供することができる。
【0041】
[0049] 上記の実施形態は例示のために提示されており、セキュリティチップアクティブ化、相互または片方向認証、およびデバイスロック解除のための任意の他の適切な方法が使用されてもよいことは理解されよう。たとえば、セキュリティチップをアクティブにするための方法の別の例示的実施形態は、以下のようになる。まず、チップ製造時に、セキュリティチップのSKU毎にランダムマスター鍵が生成される。次に、ランダムマスター鍵を使用し、さらにチップ毎IDを使用し、チップ毎アクティブ化鍵を、HMAC−SHA256などのHMACアルゴリズムを使用して導き出すことができる。
【0042】
[0050] PerChipActivationKey=HMAC−SHA256(MasterKey,PUID)
【0043】
[0051] チップ毎アクティブ化鍵は、セキュリティチップにセキュアに記憶され、セキュリティチップの外部では読取り不可能である。これは、セキュリティチップ毎に行われるので、すべてのチップが別々のアクティブ化鍵を記憶している。したがって、特定のチップのアクティブ化鍵が危険にさらされても、他のチップは影響されない。これは、アクティブ化鍵に関する攻撃に対する付加的セキュリティを提供するのを助けることができる。
【0044】
[0052] 次に、アクセサリデバイス製造時に、マスターキーは、セキュリティモジュール(たとえばスマートカード)を介してセキュリティチップ工場からアクセサリデバイス工場へセキュアに移送される。スマートカードは、セキュリティチップ識別番号を入力として受け入れ、セキュリティチップ製造時に使用された同じアルゴリズムを使用してチップ毎アクティブ化鍵を導き出し、アクティブ化鍵を使用して別のダイジェストを生成することができる。
【0045】
[0053] ActivationDigest=HMAC−SHA256(PerChipActivationKey,PUID+AdditionalTrackingInfo)
【0046】
[0054] アクティブ化ダイジェスト(activation digest)は、セキュリティチップに対する「Activate(アクティブ化)」コマンドの入力である。セキュリティチップは、この入力を受け取ると、アクティブ化鍵のそれ自体のコピーを使用して同じダイジェストを計算するように構成され得る。ダイジェストが入力に一致した場合、セキュリティチップは、それ自体をアクティブにして通常の機能を開始することができる。
【0047】
[0055] ActivationDigestの計算において、値「AddtionalTrackingInfo」は、各チップのアクティブ化を追跡するために使用することができる。任意の適切な値が使用されてよい。たとえば、いくつかの実施形態では、AddtionalTrackingInfoは、いくつのセキュリティチップをセキュリティモジュールがアクティブにしたかを記録するシーケンス番号(SequenceNumber)とすることができる。この情報も、以下のようにActivateコマンドの入力としてセキュリティチップに渡すことができる。
【0048】
[0056] Activate(SMID,SequenceNumber,ActivationDigest)。
【0049】
[0057] さらに、この情報は、アクティブ化後にチップ内部に安全に記憶することもでき、それにより、後で、セキュリティチップは、任意選択によりこの情報をオンラインシステムに報告することができ、オンラインシステムは、各チップおよびそのアクティブ化ステータスも追跡することができる。これは、セキュリティのさらに別の層を追加することができ、セキュリティモジュールがやはり盗まれ(しかしマスター鍵がまだ開示されていない)場合、オンラインシステムは、盗まれたセキュリティモジュールのいくつのチップがアクティブにされているかを知ることができる。さらに、前述のように、各セキュリティモジュールは、それがいくつかのチップをアクティブにできるかに関して制限することもでき、これは、盗まれたセキュリティモジュールによって引き起こされる損害を減らすために役立つ。セキュリティモジュールは、追加のセキュリティを提供するために保護されたパスワードとすることができる。アクティブ化鍵はこのアクティブ化プロセスについてチップ毎にあるので、盗まれたチップが他のチップを危険にさらすことにならない。
【0050】
[0058] いくつかの実施形態では、上述の方法およびプロセスが、1つまたは複数のコンピューティングデバイスのコンピューティングシステムに連結され得る。具体的には、そのような方法およびプロセスは、コンピュータアプリケーションプログラムもしくはサービス、アプリケーションプログラミングインターフェース(API)、ライブラリ、および/または他のコンピュータプログラム製品として実装することができる。
【0051】
[0059]
図9は、上述の方法およびプロセスの1つまたは複数を実施することができるコンピューティングシステム900の非限定的な実施形態を示す。コンピューティングシステム900は簡略化した形態で示されている。実質的に任意のコンピュータアーキテクチャが本開示の範囲から逸脱することなく使用され得ることは理解されよう。様々な実施形態において、コンピューティングシステム900は、メインフレームコンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ホームエンターテイメントコンピュータ、アクセサリデバイス、ネットワークコンピューティングデバイス、ゲームデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス(たとえばスマートフォン)、スマートカードなどの形態を取ることができる。コンピューティングシステムの例は、種々のアクセサリデバイス、ホストデバイス、およびスマートカード、ならびに上記の他のコンピューティングデバイスを含むが、これらに限定されない。
【0052】
[0060] コンピューティングシステム900は、論理サブシステム902およびストレージサブシステム904を含む。コンピューティングシステム900は、任意選択により、表示サブシステム906、入力サブシステム908、通信サブシステム910、および/または
図9に図示されない他のコンポーネントを含むことができる。
【0053】
[0061] 論理サブシステム902は、命令を実行するように構成された1つまたは複数の物理デバイスを含む。たとえば、論理サブシステムは、1つまたは複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、または他の論理構造の部分である命令を実行するように構成することができる。そのような命令は、タスクを実行し、データ型を実装し、1つもしくは複数のコンポーネントの状態を変化させ、または他の形で所望の結果に到達するように実装することができる。
【0054】
[0062] 論理サブシステムは、ソフトウェア命令を実行するように構成された1つまたは複数のプロセッサを含むことができる。追加的または代替的に、論理サブシステムは、ハードウェアまたはファームウェア命令を実行するように構成された1つまたは複数のハードウェアまたはファームウェア論理マシンを含むことができる。論理サブシステムのプロセッサは、シングルコアであってもマルチコアであってもよく、そこで実行されるプログラムは、順次、並列、または分散処理されるように構成することができる。論理サブシステムは、任意選択により、2つ以上のデバイスにわたり分散された個別のコンポーネントを含むことができ、それらは、遠隔に配置され、および/または協調処理のために構成され得る。論理サブシステムの態様は、クラウドコンピューティング構成で構成された遠隔でアクセス可能なネットワーク化されたコンピューティングデバイスによって仮想化され実行され得る。
【0055】
[0063] ストレージサブシステム904は、本明細書に記載の方法およびプロセスを実装するように論理サブシステムによって実行可能なデータおよび/または命令を保持するように構成された、1つまたは複数の物理的な非一時的デバイスを含む。そのような方法およびプロセスが実装されたとき、ストレージサブシステム904の状態は、たとえば異なるデータを保持するように、変化することができる。
【0056】
[0064] ストレージサブシステム904は、取外し可能な媒体および/または内蔵デバイスを含むことができる。ストレージサブシステム904は、特に、光メモリデバイス(たとえば、CD、DVD、HD−DVD、ブルーレイディスクなど)、半導体メモリデバイス(たとえば、RAM、EPROM、EEPROMなど)、および/または磁気メモリデバイス(たとえば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAMなど)を含むことができる。ストレージサブシステム904は、揮発性、不揮発性、動的、静的、読取り/書込み、読取り専用、ランダムアクセス、順次アクセス、位置アドレス可能、ファイルアドレス可能、および/またはコンテンツアドレス可能デバイスを含むことができる。
【0057】
[0065] ストレージサブシステム904が1つまたは複数の物理デバイスを含むことは理解されよう。しかしながら、いくつかの実施形態では、本明細書に記載の命令の態様は、ストレージデバイスではなく通信媒体を介して、純粋な信号(たとえば、電磁気信号、光信号など)によって伝播することができる。さらに、本開示に関するデータおよび/または他の形態の情報も純粋な信号によって伝播されてよい。
【0058】
[0066] いくつかの実施形態では、論理サブシステム902およびストレージサブシステム904の態様は、本明細書に記載された機能が実施され得る1つまたは複数のハードウェア論理コンポーネントと一体化することができる。そのようなハードウェア論理コンポーネントは、たとえば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途およびプログラム向け集積回路(program- and application-specific integrated circuits:PASIC/ASIC)、特定用途およびプログラム向け標準品(program- and application-specific standard products:PSSP/ASSP)、システムオンチップ(SOC)システム、ならびにコンプレックスプログラマブルロジックデバイス(complex programmable logic device:CPLD)を含むことができる。
【0059】
[0067] 用語「モジュール」、「プログラム」、および「エンジン」は、特定の機能を実行するように実装されたコンピューティングシステム900の態様を説明するために使用され得る。いくつかの事例では、モジュール、プログラム、またはエンジンは、ストレージサブシステム904によって保持される命令を実行する論理サブシステム902によってインスタンス化することができる。異なるモジュール、プログラム、および/またはエンジンが、同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、関数などからインスタンス化され得ることは理解されよう。同様に、同じモジュール、プログラム、および/またはエンジンが、異なるアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、関数などによってインスタンス化され得る。用語「モジュール」、「プログラム」、および「エンジン」は、実行可能なファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコードなどの単体またはグループを包含することができる。
【0060】
[0068] 本明細書で使用される場合、「サービス」は、複数のユーザセッションにわたって実行可能なアプリケーションプログラムであることは理解されよう。サービスは、1つまたは複数のシステムコンポーネント、プログラム、および/または他のサービスに利用可能とすることができる。いくつかの実装形態では、サービスは、1つまたは複数のサーバ−コンピューティングデバイス上で実行することができる。
【0061】
[0069] 表示サブシステム906は、含まれている場合、ストレージサブシステム904により保持されるデータの視覚表示を提供するために使用することができる。この視覚表示は、グラフィカルユーザインターフェース(GUI)の形態を取ることができる。本明細書に記載の方法およびプロセスがストレージサブシステムによって保持されるデータを変更し、それによりストレージサブシステムの状態を変化させるように、表示サブシステム906の状態は、基礎となるデータの変更を視覚的に表すために同様に変化することができる。表示サブシステム906は、仮想的に任意のタイプの技術を利用する1つまたは複数の表示デバイスを含むことができる。そのような表示デバイスは、共有の筐体内で論理サブシステム902および/またはストレージサブシステム904と組み合わせることができ、あるいは表示デバイスは周辺表示デバイスとすることができる。
【0062】
[0070] 入力サブシステム908は、含まれている場合、キーボード、マウス、タッチスクリーン、ゲームコントローラのような1つまたは複数のユーザ入力デバイスを備える、あるいはそれらとインターフェースをとることができる。いくつかの実施形態では、入力サブシステムは、上述のアクセサリデバイス実施形態のような、選択された自然ユーザ入力(natural user input:NUI)構成要素を備える、あるいはそれとインターフェースをとることができる。そのような構成要素は、内蔵されても周辺機器であってもよく、入力動作の変換および/または処理はボード上またはボード外で扱われてよい。例示的NUI構成要素は、スピーチおよび/または音声認識のためのマイク、機械視覚および/またはジェスチャ認識のための赤外線、色、立体および/または深度カメラ、動き検出および/または意図認識のためのヘッドトラッカ、アイトラッカ、加速度計および/またはジャイロスコープ、ならびに脳活動にアクセスするための電界センシング構成要素を含むことができる。
【0063】
[0071] 通信サブシステム910は、含まれている場合、コンピューティングシステム900を1つまたは複数の他のコンピューティングデバイスと通信可能に結合するように構成することができる。通信サブシステム910は、1つまたは複数の異なる通信プロトコルに適合した有線または無線通信デバイスを含むことができる。非限定的例として、通信サブシステムは、無線電話網、または有線もしくは無線のローカルエリアもしくは広域ネットワークを介する通信のために構成することができる。いくつかの実施形態では、通信サブシステムは、コンピューティングシステム900が、インターネットなどのネットワークを介して他のデバイスとの間でメッセージを送信および/または受信することを可能にすることができる。
【0064】
[0072] 本明細書に記載の構成および/または手法は本質的に例示であり、これらの実施形態または例は、多数の変形が可能であるので、限定的な意味で捉えられるべきではないことは理解されよう。本明細書に記載の特定のルーチンまたは方法は、任意の数の処理戦略のうちの1つまたは複数を表し得る。したがって、例示および/もしくは説明された種々の動作は、例示および/もしくは説明された順序で、他の順序で、並列で、または省略されて実施され得る。同様に、上記のプロセスの順序は変更され得る。
【0065】
[0073] 本開示の主題は、本明細書に開示された種々のプロセス、システムおよび構成、ならびに他の特徴、機能、動作および/または特性、さらにそれらの任意およびすべての均等物のすべての新規で非自明の組み合わせおよび部分的組み合わせを含む。