JP2024503602A - エッジデバイスのための鍵無効化 - Google Patents

エッジデバイスのための鍵無効化 Download PDF

Info

Publication number
JP2024503602A
JP2024503602A JP2023540166A JP2023540166A JP2024503602A JP 2024503602 A JP2024503602 A JP 2024503602A JP 2023540166 A JP2023540166 A JP 2023540166A JP 2023540166 A JP2023540166 A JP 2023540166A JP 2024503602 A JP2024503602 A JP 2024503602A
Authority
JP
Japan
Prior art keywords
key
instructions
software
instruction
revocation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023540166A
Other languages
English (en)
Inventor
ジョナサン・ノア・サイモン
ツェ・レイ・プー
Original Assignee
アナログ ディヴァイスィズ インク
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アナログ ディヴァイスィズ インク filed Critical アナログ ディヴァイスィズ インク
Publication of JP2024503602A publication Critical patent/JP2024503602A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本明細書では、デバイスのローカルネットワークの外では通信できないデバイス上で鍵無効化を遠隔で行う技術が説明される。技術は、デバイスに送信されるソフトウェア更新命令に鍵無効化命令を含めることを包含する。デバイスは、デバイス上で実行するのに安全かどうかを判定するために、1つ以上の鍵を使用してソフトウェア更新命令を検証し得る。例えば、デバイスは、ソフトウェア更新命令が信頼できるソフトウェアプロバイダによって送信されたことを検証し得る。デバイスは、ソフトウェア更新命令に含まれる鍵無効化命令を実行して、鍵のうちの1つの鍵の使用を無効化し、無効化された鍵の代わりに新しい鍵の使用を開始し得る。

Description

関連出願
本願は、弁護士整理番号G0766.70338US00で2020年12月31日に出願された「KEY REVOCATION FOR EDGE DEVICES」と題された米国仮出願第63/132,992号の35USC§119(e)に基づく利益を主張するものであり、その全体が参照により本明細書に組み込まれる。
本明細書に記載の実施形態は、デバイスのローカルネットワーク内の通信に限定されているデバイス上で鍵無効化を遠隔で行うことに関する。
デバイスは、データを暗号化及び/又は復号化するなどの暗号動作を行うために鍵を使用し得る。デバイスによって使用される鍵は、動作から取り除かれる必要がある場合がある。例えば、デバイスは、暗号化及び/又は復号化のために1つの鍵を使用することを停止し、その鍵を新しい鍵に置き換える必要があり得る。デバイスは、1つの鍵の使用を無効化し、無効化された鍵の代わりに新しい鍵の使用を開始するための鍵無効化のプロセスを行い得る。
本明細書では、デバイスのローカルネットワークの外では通信できないデバイス上で鍵無効化を遠隔で行う技術が説明される。技術は、デバイスに送信されるソフトウェア更新命令に鍵無効化命令を含めることを包含する。デバイスは、デバイス上で実行するのに安全かどうかを判定するために、1つ以上の鍵を使用してソフトウェア更新命令を検証し得る。例えば、デバイスは、ソフトウェア更新命令が信頼できるソフトウェアプロバイダによって送信されたことを検証し得る。デバイスは、ソフトウェア更新命令に含まれる鍵無効化命令を実行して、鍵のうちの1つの鍵の使用を無効化し、無効化された鍵の代わりに新しい鍵の使用を開始し得る。
いくつかの実施形態では、デバイスは、各々が異なる当事者に関連付けられた複数の鍵を使用してソフトウェア更新命令を検証し得る。例えば、1つの鍵は、ソフトウェアプロバイダの署名を検証するために使用され得、別の鍵は、デバイスのユーザの署名を検証するために使用され得る。デバイスは、両方の鍵を使用してソフトウェア更新命令が検証されたときに、ソフトウェア更新命令に含まれる無効化命令を実行するように構成され得る。複数の鍵を使用すると、敵対者は、鍵無効化を開始するために2人の異なる当事者からの2つの別個の鍵にアクセスする必要があるので、不適切な鍵無効化がデバイスによって行われることに対する追加のセキュリティ層が提供される。
いくつかの実施形態によれば、デバイスのローカルネットワーク内の通信に限定されたデバイス上で鍵無効化を行うための方法が提供される。デバイスは、第1の鍵及び第2の鍵を記憶する。方法は、デバイスのプロセッサを使用して、デバイスのローカルネットワーク内のホストシステムから、デバイスにインストールされたソフトウェアを更新するための命令を受信することであって、命令は第1の鍵の無効化のための命令を含む、受信することと、命令を実行することであって、命令の実行は、デバイスに、第1の鍵の使用を無効化させ、かつ第1の鍵の代わりに第3の鍵の使用を開始させる、実行することと、を行うことを含む。
いくつかの実施形態によれば、ローカルネットワークの一部を形成し、かつローカルネットワーク内の通信に限定されたデバイスが提供される。デバイスは、無線通信回路と、第1の鍵及び第2の鍵を記憶するように構成されたメモリと、プロセッサであって、無線通信回路を使用してローカルネットワーク内のホストシステムから、デバイスにインストールされたソフトウェアを更新するための命令を受信することであって、命令は第1の鍵の無効化のための命令を含む、受信することと、命令を実行することであって、命令の実行は、デバイスに、第1の鍵の使用を無効化させ、かつ第1の鍵の代わりに第3の鍵の使用を開始させる、実行することと、を行うように構成されたプロセッサと、を備える。
デバイスへの接続を有さずにデバイス上で鍵無効化を行うためのシステム。デバイスは、第1の鍵を有する。システムは、無線通信回路と、プロセッサであって、デバイスのローカルネットワーク内のホストシステムに、デバイスにインストールされたソフトウェアを更新するための命令を送信することであって、命令は、デバイスによって実行されると、デバイスに、デバイスの第1の鍵の使用を無効化させ、かつ第1の鍵の代わりに第2の鍵の使用を開始させる、送信することを行うように構成されたプロセッサと、を備える。
デバイスのローカルネットワーク内の通信に限定されたデバイス。デバイスは、無線通信回路と、第1の鍵を記憶するように構成されたメモリと、プロセッサであって、無線通信回路を使用してローカルネットワーク内のホストシステムから、デバイスにインストールされたソフトウェアを更新するための命令を受信することであって、命令は第1の鍵の無効化のための命令を含む、受信することと、第1の鍵を使用して命令を検証することと、鍵を使用して命令を検証した後に命令を実行することであって、命令の実行は、デバイスに、第1の鍵の使用を無効化させ、かつ第1の鍵の代わりに第2の鍵の使用を開始させる、実行することと、を行うように構成されたプロセッサと、を備える。
本明細書に記載の技術のいくつかの実施形態が実装され得る例示的なシステムを示す。 本明細書に記載の技術のいくつかの実施形態による、デバイスの例示的なソフトウェアアーキテクチャを示す。 本明細書に記載の技術のいくつかの実施形態による、例示的なソフトウェア更新命令セットを示す。 本明細書に記載の技術のいくつかの実施形態による、デバイスに第1の鍵を配置するソフトウェアプロバイダシステムを示す。 本明細書に記載の技術のいくつかの実施形態による、デバイスに第2の鍵を配置する図2Aのデバイスのユーザに関連付けられたシステムを示す。 本明細書に記載の技術のいくつかの実施形態による、デバイスが鍵無効化を行うための例示的なプロセスを示す。 本明細書に記載の技術のいくつかの実施形態による、ソフトウェア更新命令を検証する例示的なプロセスを示す。 本明細書に記載の技術のいくつかの実施形態による、システムがデバイス上で鍵無効化を開始するための例示的なプロセスを示す。 本明細書に記載の技術のいくつかの実施形態を実装するために使用され得る例示的なコンピュータシステムを示す。
「エッジデバイス」と称されることもある特定のコンピューティングデバイスは、ローカルネットワーク外で通信することができず、したがって、ローカルネットワーク外で通信するためにホストシステムに依存する。例えば、エッジデバイスは、インターネットを介してシステムと通信するために、エッジデバイスに近接して位置するホストシステムに依存し得る。ローカルネットワークへのアクセスのないシステム(「外部システム」)又はエッジデバイスへの物理的アクセスのないシステムは、ホストシステムを通してエッジデバイスと通信することに限定される。説明用実施例として、エッジデバイスは、バッテリバック内に密封されているバッテリ監視デバイスであり得る。バッテリ監視デバイスは、バッテリが製品(例えば、自動車)に設置され使用されている間、バッテリの状態を監視し得る。バッテリ監視デバイスが製品上に配備されている間、バッテリ監視デバイスは、インターネットを介して通信することができない場合があり、したがって、製造業者のコンピュータシステムは、バッテリ監視デバイスに近接するホストシステムを通して(例えば、監視データを回収するために)バッテリ監視デバイスと通信することに限定され得る。
エッジデバイスは、暗号動作を行う際に使用するための1つ以上の鍵を記憶し得る。暗号動作は、データを暗号化すること及び/又はデータを復号化することを含み得る。例えば、エッジデバイスは、デジタル署名のデータを復号化するための鍵を使用して、デジタル署名を検証し得る。別の実施例として、エッジデバイスは、デバイスのデジタル署名としてデータを暗号化するための鍵を使用し得る。エッジデバイスはまた、デバイスにインストールされたソフトウェアを検証するための鍵を使用し得る。エッジデバイスにインストールされたソフトウェアは、ソフトウェアプロバイダのシステム、エッジデバイスのユーザのシステム、及び/又は別の外部システムなどの1つ以上の外部システムによって、鍵を使用してデジタル署名されている場合がある。エッジデバイスは、ソフトウェアにデジタル署名するために使用される鍵に対応する鍵を記憶し得、その記憶された鍵を使用して、ソフトウェアが信頼できるソースから、例えばソフトウェアプロバイダからであることを検証し得る。説明用実施例として、デバイスは、デバイスにインストールされたソフトウェアにデジタル署名するために使用された秘密鍵に対応する公開鍵を記憶し得る。この実施例では、デバイスは、その記憶された公開鍵を使用してソフトウェアのデジタル署名を検証してから、ソフトウェアがデバイスを動作させることを可能にし得る。
エッジデバイスの寿命を通して、エッジデバイスによる鍵の使用が停止され(「無効化され」)、新しい鍵の使用が開始される鍵無効化を行うことが望ましいか、又は必要でさえあり得る。例えば、ソフトウェアプロバイダのコンピュータシステムに記憶された秘密鍵がセキュリティ破壊された場合、製造業者のコンピュータシステムから無許可の通信を受信することに対して易受容性であることからデバイスを保護するために、デバイス上の対応する鍵は無効化される必要があり得る。例えば、敵対エンティティは、セキュリティ破壊された秘密鍵を使用してソフトウェアをデバイスに送信し、デバイスの無許可の制御を得る可能性がある。秘密鍵に対応する鍵を無効化しなければ、デバイスは、敵対エンティティによって提供されたソフトウェアは使用が無許可であることを検出できないであろう。エッジデバイスは、各々が鍵を使用してデバイス上のソフトウェアを検証する多くのエッジデバイスのうちの1つであり得るので、この問題は更に増大され得る。したがって、鍵は、一団のユーザデバイスに記憶され得る。一団のデバイスからの鍵を無効化しなければ、敵対エンティティは、一団の全てのデバイスに対して無許可の制御を得る可能性がある。説明用実施例として、一団の車両センサの各々は、センサにインストールされたソフトウェアのプロバイダの秘密鍵に対応する公開鍵を記憶し、その鍵を使用して、ソフトウェアがロードされるときにソフトウェアを検証してから、ソフトウェアがセンサを制御することを可能にし得る。敵対者がソフトウェアプロバイダの秘密鍵へのアクセスを得ようとした場合、敵対者は、秘密鍵を使用して署名された車両センサに自身のソフトウェアを送信できる可能性がある。車両センサはまだ秘密鍵に対応する鍵を使用しているので、車両センサは、敵対者のソフトウェアをロードし、それがセンサを制御することを可能にするであろう。
本発明者らは、エッジデバイスとの通信における制限の故に、エッジデバイス上で遠隔鍵無効化を行うことが困難であることを認識した。鍵無効化を開始する必要があるシステム(例えば、ソフトウェアプロバイダシステム)は、そうするためにエッジデバイスと直接通信することができない。代わりに、エッジデバイス上での鍵無効化は、(例えば、ローカルネットワークを介して)エッジデバイスと通信することができる中間ホストシステムによって開始されるであろう。しかしながら、ホストシステムから鍵無効化命令を受信するエッジデバイスは、エッジデバイスが要求の妥当性を検証するために第三者検証機関と通信することができないので、鍵無効化要求が有効であることを検証することができない。例えば、エッジデバイスは、信頼できるソフトウェアプロバイダシステムによって鍵無効化要求が生成されたことを検証するために、独立した第三者認証機関にインターネットを通してアクセスすることはできない。エッジデバイスは、要求を送信したホストシステムがセキュリティ破壊されているか、又はホストシステムから受信した鍵無効化要求が敵対エンティティによって開始された場合、気付かないであろう。従来の技術では、第三者検証機関なしにエッジデバイス上で遠隔鍵無効化を安全に行うことは可能でない。
本発明者らは、第三者検証機関を必要とせずに、エッジデバイス上で遠隔鍵無効化を安全に行うための技術を開発した。技術は、遠隔鍵無効化を開始するためにホストシステムに依存しない遠隔鍵無効化プロセスを提供する。これにより、セキュリティ破壊されたホストシステム、又はホストシステムと通信するセキュリティ破壊されたシステムが、エッジデバイス上で無許可の鍵無効化を行うのを防ぐ。技術は、安全なソフトウェア更新プロセスを活用して、鍵無効化を行う。
本明細書に記載の技術のいくつかの実施形態は、安全なソフトウェア更新手順を使用して、デバイスのローカルネットワーク内の通信に限定されているデバイス上で鍵無効化を行う。技術は、鍵無効化を行うためのソフトウェア命令を、デバイスに提供されたソフトウェア更新命令内に埋め込む。デバイスがソフトウェア更新命令を受信すると、デバイスは、ソフトウェア命令を検証して実行し、結果として、鍵の使用を無効化し、無効化された鍵の代わりに新しい鍵の使用を開始し得る。技術は、エッジデバイス上での鍵無効化の開始を、エッジデバイス上のソフトウェアを更新するために使用される安全なソフトウェア更新手順に限定し、したがって、ホストシステムが鍵無効化を開始することを許可しない。いくつかの実施形態では、デバイスのローカルネットワークには、デバイスによって受信された命令を検証するためにデバイスが使用することができる第三者検証機関が欠けている。したがって、デバイスは、いかなるそのような第三者検証機関とも通信できない場合がある。鍵無効化命令をソフトウェア更新命令内に埋め込むことによって、いくつかの実施形態は、デバイスが鍵無効化を要求するために(例えば、チャレンジ応答プロトコルにおいて)通信に参加する必要性を排除する。これにより、デバイスによって送信された鍵無効化を行う要求を傍受することにより、敵対者が無効化された鍵の代わりに使用する自身の新しい鍵を提供する機会が排除される。代わりに、デバイスは、その鍵のうちの1つ以上を使用して、デバイスに提供されたソフトウェア更新命令を検証する。鍵無効化は、ソフトウェア更新命令が検証されれば行われ、そうでなければ実行されない。
本明細書に記載の技術のいくつかの実施形態は、エッジデバイスの信頼できるソフトウェアプラットフォームを使用して遠隔鍵無効化を行う。信頼できるソフトウェアプラットフォームは、デバイスの鍵がセキュリティ破壊されている場合でも、デバイスが鍵無効化を行うことを可能にし得る。デバイスの信頼できるソフトウェアプラットフォームは、各々が別個の当事者によって提供された2つの鍵を使用して、デバイスにロードされたソフトウェアを検証する。信頼できるソフトウェアプラットフォームは、連続してロードされる複数のソフトウェア層を含む。ソフトウェア層は、2つの鍵を使用してソフトウェアを検証してからソフトウェアがデバイスを動作させることを可能にする、1つ以上の信頼できるブートローダを含み得る。
したがって、本明細書に記載の技術は、鍵無効化が安全な様態で行われることを可能にすることによって、エッジデバイスの安全性を改善する。エッジデバイスが第三者検証機関と通信することができないことにより、従来の技術は、命令が信頼できるソース(例えば、デバイス製造業者及び/又はデバイスにインストールされたソフトウェアのプロバイダ)によって送信されたことを検証することなく、無効化命令を実行することをエッジデバイスに要求するか、あるいは、そうでなければ、エッジデバイスに鍵無効化機能を含まず、したがって、デバイスの鍵に対応する鍵へのアクセスを得る敵対者(例えば、デバイスに記憶された公開鍵に対応する秘密鍵を取得する敵対者)に対して易受容性である。本明細書に記載の技術は、セキュリティ破壊された外部システムからの通信に対する保護のための鍵無効化機能と、鍵無効化命令が信頼できるソースからのものであることを検証する能力とを含む、より安全なエッジデバイスを提供する。
いくつかの実施形態は、1回限りの無効化を可能にし得、その場合、エッジデバイスは、鍵が無効化されたかどうかを示すフラグを記憶する。いくつかの実施形態は、所定の数の鍵無効化を可能にし得、その場合、エッジデバイスは各無効化の間、一組の鍵から選択する。いくつかの実施形態は、無制限の数の無効化を可能にし得、各無効化は鍵を更新する。本明細書に記載の技術のいくつかの実施形態は、1つの鍵を使用することを停止し、別の鍵の使用を開始するようにエッジデバイスに示す鍵選択メカニズムを含む。安全な鍵メカニズムは、鍵が無効化されたことを示すフラグと、新しい鍵の指示とを使用し得る。
図1は、本明細書に記載の技術のいくつかの実施形態が実装され得る例示的なシステム100を示す。システム100は、ローカルネットワーク110内のデバイス102及びホストシステム104と、ネットワーク108を通してホストシステム104と通信するソフトウェアプロバイダシステム106とを含む。デバイス102は、エッジデバイスである。図1に示されたように、デバイス102は、デバイスのローカルネットワーク110内のデバイスとの通信に限定される。デバイス102は、ネットワーク108を通してソフトウェアプロバイダシステム106と通信することができないか、又は、そうでなければ、ソフトウェアプロバイダシステム106と直接通信することはできない。
ネットワーク108は、ソフトウェアプロバイダシステム106がホストシステム104とそれを通して通信し得る任意の好適な通信ネットワークであり得る。いくつかの実施形態では、ネットワーク108は、1つ以上の車両ネットワークを含み得る。例えば、ネットワーク108は、ソフトウェアプロバイダシステム106がホストシステム106とそれを通して通信し得るコントローラエリアネットワーク(CAN)を含み得る。ネットワーク108は、CANを通してホストシステム104及びソフトウェアプロバイダシステム106と通信する電子制御ユニット(ECU)を含み得る。いくつかの実施形態では、ネットワーク108は、ローカルエリアネットワーク(LAN)を含み得る。いくつかの実施形態では、ネットワーク108は、リモートネットワーク(例えば、インターネット)を含み得る。いくつかの実施形態では、ネットワーク108は、ソフトウェアプロバイダシステム106とホストシステム104との間のローカル接続であり得る。
デバイス102は、様々な構成要素を含む。図1に示されたように、デバイス102は、プロセッサ102A、無線通信回路102B、及びメモリ102Cを含む。いくつかの実施形態では、デバイス102は、プロセッサ102A、無線通信回路102B、及びメモリ102Cを含むシステムオンチップ(SoC)を含み得る。
プロセッサ102Aは、ソフトウェア命令を実行するように構成された電子回路を備える。例えば、プロセッサ102Aは、マイクロコントローラ、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィック処理ユニット(GPU)、ニューラルプロセッシングユニット(NPU)、及び/又は別の好適なプロセッサを備え得る。
プロセッサ102Aは、鍵無効化を行うように構成され得る。プロセッサ102Aは、デバイス102に(例えば、メモリ102C内に)記憶されたソフトウェア命令を実行することによって無効化を行い得る。プロセッサ102Aは、デバイス102のローカルネットワーク110内のホストシステム104から、デバイス110にインストールされたソフトウェアを更新するための命令を受信することによって鍵無効化を行うように構成され得る。デバイス110にインストールされたソフトウェアを更新するための命令は、デバイスにインストールされたソフトウェアの更新のためのソフトウェア命令を含み得る。例えば、ソフトウェア命令は、デバイスにインストールされたソフトウェアアプリケーションのための更新されたソフトウェアイメージを含み得る。命令は、(例えば、メモリ102C内に記憶された)鍵の無効化のための命令を更に含み得る。プロセッサ102Aが鍵無効化命令を実行するとき、それらは、デバイス102に、1つの鍵の使用を無効化させ、かつ無効化された鍵の代わりに別の鍵の使用を開始させる。いくつかの実施形態では、無効化命令は、プロセッサ102Aによって実行されると、プロセッサ102Aに、デバイス102のメモリ102Cからの新しい鍵にアクセスさせ、第1の鍵の代わりに後続の動作で新しい鍵を使用するようにデバイス102を構成し得る。例えば、無効化命令は、プロセッサ102Aに、デバイス102のフラッシュメモリからの新しい鍵にアクセスさせ得る。いくつかの実施形態では、無効化命令は、新しい鍵を含み得る。そのような実施形態では、プロセッサ102Aは、無効化命令からの新しい鍵をそのメモリ102C内にコピーし、第1の鍵の代わりに後続の動作で新しい鍵を使用し得る。
説明用実施例として、デバイス102は、車両(例えば、車両の気候システム制御、クルーズ制御、自動運転、ブレーキ、及び/又は別の態様)を電子制御するためにそこにインストールされたソフトウェアを有する車両コントローラデバイスであり得る。ホストシステム104は、デバイス102がソフトウェア更新をそれを通して受信する、車両の中央電子制御ユニット(ECU)であり得る。この実施例では、車両コントローラデバイスは、鍵無効化命令も含むその制御ソフトウェアの更新を受信し得る。例えば、車両コントローラデバイスは、敵対者がデバイス102の以前の鍵に対応する秘密鍵へのアクセスを得たというソフトウェアプロバイダシステム106の違反に起因して、鍵無効化命令を含む更新を受信し得る。したがって、敵対者は、秘密鍵を用いて署名されたデバイス102に自身のソフトウェア命令を送信できる可能性がある。車両コントローラデバイスは、(例えば、インターネットを通しての)第三者検証機関へのアクセスを有さないので、車両コントローラデバイスは、ソフトウェア命令が敵対者によって送信されたと判定することができないであろう。
図1に再び戻ると、無線通信回路102Bは、デバイス102がデバイス102のある範囲内の1つ以上の外部システム(例えば、ホストシステム104)と通信することを可能にする送受信機を備え得る。例えば、送受信機は、BLUETOOTH送受信機、赤外線(IR)送受信機、無線送受信機、又は他の好適なタイプの送受信機であり得る。無線通信回路102Bは、デバイス102のローカルネットワーク(例えば、ネットワーク110)内で通信するように構成され得る。デバイス102は、無線通信回路102Bを使用して、データを送信すること及び/又は外部システムから受信することができる。例えば、デバイス102は、無線通信回路102Bを使用して、データをパケットで送受信し得る。いくつかの実施形態では、無線通信回路は、デバイス102のローカルネットワーク110内の通信に限定され得る。ローカルネットワーク110は、無線通信回路102Bの近傍内にある境界を有し得る。例えば、無線通信回路102Bは、無線通信回路102Bの閾値距離内の外部システムと通信することに限定され得る。閾値距離は、無線通信回路102Bから10フィート、20フィート、30フィート、40フィート、50フィート、100フィート、200フィート、又は他の好適な距離であり得る。いくつかの実施形態では、ローカルネットワーク110は、無線ローカルネットワーク(WLAN)であり得、例えば、WLANは、無線周波数でデータを送受信するように構成されたルータを含み得る。いくつかの実施形態では、ローカルネットワーク110は、無線通信回路102Bと1つ以上の外部システムとの間の通信ネットワークであり得る。
メモリ102Cは、情報を記憶するように構成することができるハードウェアを備え得る。例えば、メモリ102Cは、情報を記憶するために使用される集積回路を備え得る。メモリ102Cは、フラッシュメモリ、ワンタイムプログラマブル(OTP)メモリ、読み取り専用メモリ(ROM)、プログラマブル読み取り専用メモリ(PROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、及び/又は電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)などの不揮発性メモリを含み得る。メモリ102Cは、スタティックランダムアクセスメモリ(SRAM)及び/又はダイナミックランダムアクセスメモリ(DRAM)などの揮発性メモリを含み得る。
図1に示されたように、メモリ102Cは、1つ以上の鍵を記憶するように構成されている。鍵は、データの認証、データの暗号化、データの復号化、署名の生成及び/若しくは検証、ソフトウェア命令の検証、並びに/又は他の暗号動作を含む暗号動作を行うために使用される暗号鍵であり得る。いくつかの実施形態では、鍵は、文字セットからなり得る。例えば、鍵は、ランダムに生成された文字列であり得る。いくつかの実施形態では、鍵は、鍵生成アルゴリズムを使用して生成され得る。例えば、鍵は、ランダム値を取得するための決定論的乱数生成器(DRBG)又は擬似乱数生成器(PRNG)を使用して生成され得る。いくつかの実施形態では、鍵は、鍵生成アルゴリズムを使用してランダム値から生成され得る。別の実施例では、鍵は、高度暗号化標準(AES)鍵生成アルゴリズム、又はRivest Shamir Adleman(RSA)鍵生成アルゴリズムなどの鍵生成アルゴリズムを使用して、ランダム値から生成され得る。いくつかの実施形態では、鍵は、非対称鍵を含み得る。メモリ102C内に記憶された非対称鍵は、秘密鍵に対応する公開鍵であり得る。いくつかの実施形態では、鍵は、対称鍵を含み得る。メモリ102C内に記憶された対称鍵は、別のシステムに記憶された鍵と同一であり得る。
いくつかの実施形態では、鍵は、複数の外部システムによって生成された複数の鍵を含み得る。複数の鍵の各々は、それぞれの外部システムによって生成され得る。いくつかの実施形態では、第1の鍵が、ソフトウェアプロバイダシステム106によって生成され得、第2の鍵が、デバイス102のユーザに関連付けられたシステムによって生成され得る。デバイス102のユーザに関連付けられたシステムは、本明細書では「ユーザシステム」と称されることもある。例示するために、ソフトウェアプロバイダシステム106は、デバイスの製造業者に関連付けられる場合がある。デバイス102が製造業者とともにあるとき、製造業者は、ソフトウェアプロバイダシステム106を使用して、その後にメモリ102Cに記憶される鍵(例えば、対称鍵、又は公開鍵)を生成し得る。デバイス102のユーザ(例えば、デバイス102を購入するエンティティ)は、ユーザシステムを使用して、メモリ102Cに記憶される鍵(例えば、対称鍵、又は公開鍵)を生成し得る。
いくつかの実施形態では、鍵は、外部システムによって生成された単一の鍵を含み得る。いくつかの実施形態では、鍵は、ソフトウェアプロバイダシステム106によって生成され得る。例えば、ソフトウェアプロバイダシステム106は、デバイス102が製造業者とともにある間に、鍵を生成し、鍵をメモリ102Cに記憶し得る。いくつかの実施形態では、鍵は、ユーザシステムによって生成され得る。例えば、鍵は、デバイス102の配備の前に、ユーザシステムによって生成され、デバイス102のメモリ102C内に記憶され得る。
いくつかの実施形態では、鍵は、無効化後に使用するための1つ以上の鍵を含み得る。無効化を行った後に使用される鍵は、本明細書では「無効化鍵」と称されることもある。例えば、鍵は、デバイスが暗号動作のために使用するように構成されている第1の鍵と、デバイスが第1の鍵の無効化後に使用するように構成されている無効化鍵と、を含み得る。デバイスによって無効化が行われたとき、デバイスは、第1の鍵の使用を停止し、暗号動作を行うために無効化鍵の使用を開始し得る。いくつかの実施形態では、鍵は、複数の無効化鍵を含み得る。そのような実施形態では、デバイス102が無効化を行うたびに、デバイス102は、以前の鍵の使用を無効化し、複数の無効化鍵のうちの1つの使用を開始し得る。例えば、鍵は、2つ、3つ、4つ、5つ、又はそれ以上の無効化鍵を含み得る。いくつかの実施形態では、鍵は、単一の無効化鍵を含み得る。そのような実施形態では、デバイス102は、1つの無効化を行うことに限定され得る。いくつかの実施形態では、無効化鍵は、使用のために、デバイス102の配備の前に、メモリ102C内に記憶され得る。例えば、無効化鍵は、デバイス102の製造中にメモリ102C内に記憶され得る。別の実施例では、無効化鍵は、使用のために、デバイス102を配備する前に、デバイスのユーザによってメモリ102C内に記憶され得る。いくつかの実施形態では、メモリ102C内の記憶スペースの量は、その中に記憶することができる鍵の数を制限し得る。例えば、メモリ102C内の記憶スペースの量は、鍵の数を2つ、3つ、4つ、又は5つの鍵に制限し得る。
図2は、本明細書に記載の技術のいくつかの実施形態による、デバイス102の例示的なソフトウェアアーキテクチャ200を示す。図2に示されたように、ソフトウェアアーキテクチャ200は、第1のブートローダ202、第2のブートローダ204、動作ソフトウェア206、通信ソフトウェア208、及び無線(OTA)処理ソフトウェア214を含む。いくつかの実施形態では、第1のブートローダ202は、(例えば、ROM内の)不変ハードウェアブートローダであり得、第2のブートローダ204は、追加検証を行う任意選択的な後続ブートローダであり得る。いくつかの実施形態では、第2のブートローダ204は、フラッシュメモリ内に記憶され得る。
デバイス102は、動作ソフトウェア206をデバイス102にロードするときに、第1のブートローダ202及び第2のブートローダ204を使用するように構成され得る。ブートローダ202、204の各々は、動作ソフトウェア206をデバイス102のメモリ内にロードするために実行される、デバイス102のメモリ102C内に記憶された命令セットを含み得る。例えば、第1のブートローダ202は、読み取り専用メモリ(ROM)内に記憶され得、第2のブートローダ204は、フラッシュメモリ内に記憶され得る。デバイス102は、ブートローダ202、204を使用して、段階的に動作ソフトウェア206を順次ロードするように構成され得る。いくつかの実施形態では、ブートローダ202、204の各々は、それぞれの自身の鍵を使用して動作ソフトウェア206を検証するように構成され得る。例えば、第1のブートローダ202は、第1の鍵を使用して動作ソフトウェア206の第1の署名を検証し得、第2のブートローダ204は、第2の鍵を使用して動作ソフトウェア206の第2の署名を検証し得る。第1の署名は、ソフトウェアプロバイダシステムによって生成され得、第2の署名は、ユーザシステムによって生成され得る。第1のブートローダ202及び第2のブートローダ204の各々が、それぞれの自身の鍵を使用して動作ソフトウェア206を検証するように構成されている実施形態では、敵対者が動作ソフトウェアをデバイス102にロードするためには、敵対者は、2人の異なる当事者(例えば、ソフトウェアプロバイダ及びユーザ)の2つの別個の鍵を使用して生成された2つの別個の署名を含むソフトウェアをデバイス102に送信する必要があろう。
図2に示されたように、動作ソフトウェア206は、通信ソフトウェア208を使用して、デバイスの無線通信回路210を動作させ得る。無線通信回路210は、図1を参照して本明細書で説明された無線通信回路102Bであり得る。通信ソフトウェア208は、デバイス102がデータを送信すること及びホストシステム104から受信することを可能にし得る。通信ソフトウェア208は、無線通信回路210を使用して、ホストシステム104からソフトウェア更新命令212を受信するように構成され得る。ソフトウェア更新命令は、鍵無効化命令を含み得る。図2に示されたように、ソフトウェア更新命令処理214は、第2のブートローダ204によって行われる。ソフトウェア更新はブートローダ202、204の更新を含み得るので、ソフトウェア更新命令処理214は、第2のブートローダによって行われる。いくつかの実施形態では、動作ソフトウェア206は、ブートローダ202、204を変更することが制限され得る。動作ソフトウェア206がブートローダ202、204を変更することを制限することは、ブートローダ202、204が、いかなる敵対者からも保護され、したがって、信頼して、デバイス102上のソフトウェアの更新を任せられることを保証し得る。そのような実施形態では、ソフトウェア更新は、動作ソフトウェア206によって行われなくてもよい。
図2の例示的な実施形態は2つのブートローダを含むが、いくつかの実施形態では、デバイスのソフトウェアアーキテクチャは1つのブートローダを含み得る。そのブートローダは、本明細書に記載のブートローダ202、204の処理を行うように構成され得る。いくつかの実施形態では、ブートローダは、不変ハードウェアブートローダであり得る。例えば、その不変ハードウェアブートローダは、ROMブートローダであり得る。いくつかの実施形態では、ソフトウェアアーキテクチャは、追加の検証を行うように構成され得る1つ以上の後続の任意選択的ブートローダを含み得る。そのような実施形態では、任意選択的ブートローダは、動作ソフトウェアをデバイスにロードすること、又は(例えば、鍵無効化命令を含む)ソフトウェア命令を検証することを要求されない場合がある。
ホストシステム104は、ローカルネットワーク110内の1つ以上のコンピューティングデバイスを備え得る。ホストシステム104は、デバイス102が(例えば、無線通信回路102Bを使用して)ホストシステムと通信することができるデバイス102の近傍内に位置し得る。ホストシステム104は、デバイスのローカルネットワーク110の外にあるネットワーク108を通して通信するように構成され得る。図1に示されたように、ホストシステム104は、ネットワーク108を通してソフトウェアプロバイダシステム106と通信することができる。例えば、ホストシステム104は、ホストシステム104がインターネットを通して通信することを可能にする無線通信回路を含み得る。説明用実施例として、ホストシステム104は、車両の中央電子制御ユニット(ECU)であり得、一方、デバイス102は、車両の特定の構成要素(例えば、気候制御、クルーズ制御、自動運転、及び/又はブレーキ)のための車両コントローラデバイスであり得る。
ソフトウェアプロバイダシステム106は、デバイス102のローカルネットワーク110の外にある1つ以上のコンピューティングデバイスを備え得る。いくつかの実施形態では、ソフトウェアプロバイダシステム106は、デバイス102の製造業者と関連付けられ得る。ソフトウェアプロバイダシステム106は、デバイス102の動作のためのソフトウェアを提供し得る。例えば、デバイス102は、車両コントローラデバイスであり得、ソフトウェアプロバイダシステム106は、デバイス102がその車両制御動作を行うためのソフトウェアアプリケーションを提供し得る。別の実施例では、デバイス102はセンサであり得、ソフトウェアプロバイダシステム106は、測定値を収集するようにセンサを動作させるソフトウェアアプリケーションを提供し得る。別の実施例では、デバイス102はカメラであり得、ソフトウェアプロバイダシステム106は、画像を獲得する際にカメラによって使用される、画像の処理及び増強を行うためのソフトウェア命令を提供し得る。
ソフトウェアプロバイダシステム106は、デバイス102上で鍵無効化を遠隔で行うように構成され得る。ソフトウェアプロバイダシステム106は、鍵無効化命令を含むソフトウェア更新命令を生成することによって、デバイス102上で鍵を遠隔で無効化するように構成され得る。ソフトウェアプロバイダシステム106は、デバイス102への送信のために、ソフトウェア更新命令をホストシステム104にネットワーク108を通して送信し得る。いくつかの実施形態では、ソフトウェアプロバイダシステム106は、(1)デバイス102にインストールされたソフトウェアの更新及び鍵無効化命令を含むようにソフトウェア更新命令を生成することと、(2)生成されたソフトウェア命令セットとともに認証情報を含むことと、を行うように構成され得る。いくつかの実施形態では、認証情報は、デジタル署名であり得る。いくつかの実施形態では、認証情報は、対称アルゴリズムを使用して生成された認証コードであり得る。いくつかの実施形態では、認証情報は、ソフトウェアプロバイダシステム106によって暗号化されたソフトウェア更新命令の暗号化ハッシュであり得る。デバイス102にインストールされたソフトウェアの更新は、ソフトウェアイメージであり得、鍵無効化命令は、デバイス102のプロセッサによって実行されると、デバイスに、鍵の使用を停止させ、かつ無効化された鍵の代わりに暗号動作のための新しい鍵の使用を開始させるソフトウェア命令を含み得る。ソフトウェアプロバイダシステム106によって送信された情報及び命令を検証するためにデバイス102によって現在使用されている鍵を使用して、ソフトウェア更新命令を検証してもよい。例えば、ソフトウェアプロバイダシステム106は、デバイス102によって記憶されている公開鍵に対応する秘密鍵を使用して、ソフトウェア更新命令にデジタル署名し得る。別の実施例では、ソフトウェアプロバイダシステム106は、やはりデバイス102によって記憶されている対称鍵を使用して、ソフトウェア更新命令にデジタル署名し得る。いくつかの実施形態では、ソフトウェアプロバイダシステム106は、デバイス102が、無効化命令を実行した結果として使用される対応する新しい鍵(例えば、新しい公開鍵)を使用してソフトウェア更新を検証できるように、新しい鍵(例えば、新しい秘密鍵)を使用してソフトウェア更新に署名するように構成され得る。デバイス102は、(例えば、ソフトウェアをデバイス102にロードしたときに)その新しい鍵を使用して更新されたソフトウェアを検証するように構成され得る。
図3は、本明細書に記載の技術のいくつかの実施形態による、例示的なソフトウェア更新命令セット300を示す。ソフトウェア更新命令300は、図1のソフトウェアプロバイダシステム106によって生成され得る。
ソフトウェア更新命令300は、鍵無効化命令セット302を含む。鍵無効化命令302は、デバイス102のプロセッサによって実行可能であり得る。実行されると、鍵無効化命令302は、デバイス102に、暗号動作のための第1の鍵の使用を停止させ、かつ後続の暗号動作のための新しい鍵の使用を開始させ得る。例えば、鍵無効化命令302は、プロセッサに、第1の鍵がもはや使用されないことを示す、メモリ内に記憶されている第1の鍵に関連付けられたフラグを更新させ、かつ/又は新しい鍵が使用されることを示す、メモリ内の新しい鍵に関連付けられたフラグを更新させ得る。別の実施例では、鍵無効化命令302は、デバイス102に、デバイスのメモリ102Cから第1の鍵を除去させ得る。別の実施例では、鍵無効化命令302は、デバイス102が暗号動作で使用するための鍵をそこから取得する、新しい鍵を記憶するデバイス102のメモリ内の位置を識別し得る。別の実施例では、無効化命令302は、デバイス102に第1の鍵の代わりに新しい鍵を使用させる、デバイス102のメモリ102C内の変数を変更し得る。ソフトウェア更新命令300は、ソフトウェアイメージ304を含む。ソフトウェアイメージ304は、デバイスにインストールされたソフトウェアの更新されたソフトウェアイメージであり得る。例えば、ソフトウェアイメージ304は、デバイス102によって行われる動作を更新したり、デバイス102のソフトウェア内のバグを解決したり、又は、そうでなければ、デバイス102のソフトウェアを変更し得る。
図3のソフトウェア更新命令300は、第1の鍵を使用してソフトウェアプロバイダシステム106によって生成された第1の署名300Aと、第2の鍵を使用してユーザシステムによって生成された第2の署名300Bとの、2つの署名を用いて署名されている。デバイス102は、(例えば、図6を参照して本明細書で説明されるプロセス600で行われるように)両方の署名を使用してソフトウェア更新命令300を検証するように構成され得る。この実施形態では、敵対者がソフトウェアイメージ及び/又は鍵無効化命令をデバイス102に送信できるためには、敵対者は、2つの署名を生成するために、第1の鍵及び第2の鍵の両方にアクセスする必要があろう。第2の鍵を使用して生成された署名300Bの周りの点線によって示されるように、いくつかの実施形態では、ソフトウェア更新命令300は、第1の鍵を使用して生成された署名300Aのみを用いて署名されてもよい。そのような実施形態では、ソフトウェア更新命令300は、ソフトウェアプロバイダシステム106によって署名されているが、ユーザシステムによっては署名されていない場合がある。
図3に示されたように、ソフトウェアイメージ302は、デバイス102が鍵無効化命令302を実行した後に使用される新しい鍵を使用して生成された署名304Aを用いて署名されている。デバイス102は、新しい鍵を使用して新しいソフトウェアイメージ304を検証し得る。例えば、デバイス102は、電源投入後にソフトウェアをロードするときに、新しい鍵を使用して新しいソフトウェアイメージ304を検証し得る。ソフトウェアイメージ304はまた、(例えば、ユーザシステムの)第2の鍵を使用して生成された署名304Bを用いて署名されている。デバイス102は、新しい鍵を使用して生成された署名304Aに加えて、署名304Bを使用して、ソフトウェアイメージ304を検証し得る。いくつかの場合では、新しいソフトウェアイメージ304は、現在デバイス上にあるソフトウェアイメージと機能的に同一であり得る。そのような場合には、新しいソフトウェアイメージ304は、新しい鍵及び/又は署名304Bを提供するために提供され得る。したがって、ソフトウェア更新命令300は、ソフトウェアの機能を更新することなく鍵無効化を行うために使用され得る。
署名304Bの点線によって示されるように、いくつかの実施形態では、ソフトウェアイメージ304は、署名304Bなしで署名304Aを用いて署名され得る。例えば、ユーザシステムは、ソフトウェアイメージ304に署名しなくてもよい。別の実施例では、ユーザシステムは、ソフトウェア更新命令300に署名し得るが、ソフトウェアプロバイダシステムは署名しない場合がある。いくつかの実施形態では、ソフトウェア更新命令100は、1つのエンティティ(例えば、ソフトウェアプロバイダシステム又はユーザシステム)によって署名され、ソフトウェア更新命令100に署名していない別のエンティティ(例えば、ユーザシステム又はソフトウェアプロバイダシステム)によって(例えば、ホストシステムに)配信される。例えば、ソフトウェアプロバイダシステムが、ソフトウェア命令300に署名し得、ユーザシステムが、ソフトウェア更新命令300をホストシステムに配信し得る。そのような実施形態では、敵対者は、デバイスに鍵無効化命令を提供することができるためのアクセスを得るために、依然として2つの別個のシステム(すなわち、署名システム及び配信システム)にアクセスする必要がある。
図4Aは、本明細書に記載の技術のいくつかの実施形態による、デバイス410に第1の鍵を配置するソフトウェアプロバイダシステム400を示す。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、図1のソフトウェアプロバイダ106であり得、デバイス410は、図1のデバイス102であり得る。
ソフトウェアプロバイダシステム400は、鍵生成402を行う。図4Aの実施例では、ソフトウェアプロバイダシステム400は、ソフトウェアプロバイダシステム400が秘密鍵402A及び対応する公開鍵402Bからなる鍵ペアを生成する秘密鍵/公開鍵ペア生成を行う。秘密鍵402Aは、ソフトウェアプロバイダシステム400の外で共有され得ず、一方、対応する公開鍵402Bは、ソフトウェアプロバイダシステム400の外で配布され得る。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、鍵生成402を使用して、署名アルゴリズムのための非対称鍵ペアを生成するように構成され得る。例えば、ソフトウェアプロバイダシステム400は、Rivest-Shamir Adleman(RSA)、楕円曲線デジタル署名アルゴリズム(ECDSA)、デジタル署名アルゴリズム(DSA)、又は他のデジタル署名スキームのための非対称鍵ペアを生成し得る。別の実施例では、ソフトウェアプロバイダシステム400は、鍵生成402を行って対称鍵を生成し得る。
ソフトウェアプロバイダシステム400は、公開鍵402B及び署名をデバイス410に送信する。図4Aに示されたように、ソフトウェアプロバイダシステム400は、デバイス410のメモリ440内に記憶するために、公開鍵402B及び/又は署名をデバイス410に送信する。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、物理的接続を通して公開鍵402Bをデバイス410に送信し得る。例えば、ソフトウェアプロバイダシステム400は、ジョイントテストアクショングループ(JTAG)接続、シリアルペリフェラルインターフェイス(SPI)、I2C接続、low pint count(LPC)インターフェース、ユニバーサルシリアルバス(USB)接続、イーサネット接続、ファイアワイヤ接続、シリアルポート接続、又は他の好適な物理的接続を使用してデバイス410に接続され得る。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、無線接続を通して公開鍵402Bをデバイス410に送信し得る。例えば、ソフトウェアプロバイダシステム400は、BLUETOOTH、赤外線、Wi-Fi、又は他の好適な無線接続を使用してデバイス410に接続され得る。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、製造中に公開鍵402Bをデバイス410に送信するように構成され得る。ソフトウェアプロバイダシステム400は、デバイス410の製造業者に関連付けられ得る。デバイス410をユーザに発送する前に、ソフトウェアプロバイダシステム400は、公開鍵402Bをデバイス410に送信し得る。
図4Aに示されたように、ソフトウェアプロバイダシステム400は、秘密鍵402Aを使用して署名生成408を更に行って署名を生成する。ソフトウェアプロバイダシステム400は、メモリ440内に記憶するために、生成された署名をデバイス410に送信する。署名を生成するために使用された秘密鍵402Aに対応する公開鍵402Bは、続いて、デバイス410のメモリ440内にロードされた署名がソフトウェアプロバイダの有効な署名であることを検証するために、ユーザシステムによって使用され得る。いくつかの実施形態では、ソフトウェアプロバイダシステム400は、秘密鍵402Aを使用してデータを暗号化して暗号化データを取得することによって署名を生成するように構成され得る。デバイス410のメモリ440内に記憶された公開鍵402Bは、(例えば、RSA、ECDSA、又は他の好適なデジタル署名スキームを使用して)デバイス410内に記憶されている署名が有効であることを検証するために、ユーザシステムによって使用され得る。
図4Aの実施例では、ソフトウェアプロバイダシステム400は秘密鍵/公開鍵ペアを生成するが、いくつかの実施形態では、ソフトウェアプロバイダシステム400は、対称鍵を生成するように構成され得る。そのような実施形態では、システム400は、メモリ440内に記憶するためにデバイス410に送信される単一の鍵を生成し得る。ソフトウェアプロバイダシステム400は、同じ鍵を使用して、メッセージ認証タグを暗号化し得る。ユーザシステムは、鍵を使用して、メッセージ認証タグが変更されていないことを検証し得る。
図4Bは、本明細書に記載の技術のいくつかの実施形態による、デバイス410に第2の鍵を配置する、図2Aのデバイス410のユーザに関連付けられたユーザシステム430を示す。図4Bの実施例では、ユーザシステム430は、ユーザシステム430が秘密鍵432A及び対応する公開鍵432Bからなる鍵ペアを生成する秘密鍵/公開鍵ペア生成432を行う。秘密鍵432Aは、ユーザシステム430の外で共有され得ず、一方、対応する公開鍵432Bは、ユーザシステム430の外で配布され得る。いくつかの実施形態では、ユーザシステム430は、鍵生成432を行って署名アルゴリズムのための非対称鍵ペアを取得するように構成され得る。例示的なアルゴリズムは、図4Aを参照して本明細書で説明されている。いくつかの実施形態では、ユーザシステム430は、鍵生成432を行って対称鍵を生成するように構成され得る。
図4Aに示されたように、ユーザシステム430は、デバイス410のメモリ440内に記憶するために、公開鍵432Bをデバイス410に送信する。いくつかの実施形態では、ユーザシステム430は、物理的接続を通して公開鍵402Bをデバイス410に送信するように構成され得る。例えば、ユーザシステム430は、ユニバーサルシリアルバス(USB)接続、イーサネット接続、ファイアワイヤ接続、シリアルポート接続、又は他の好適な物理的接続を通して、公開鍵432Bをデバイス410に送信し得る。いくつかの実施形態では、ユーザシステム430は、無線接続を通して公開鍵402Bをデバイス410に送信するように構成され得る。例えば、ユーザシステム430は、BLUETOOTH接続、赤外線接続、Wi-Fi接続、又は他の好適な無線接続を使用して、公開鍵432Bをデバイス410に送信し得る。いくつかの実施形態では、ユーザシステム430は、配備前に公開鍵432Bをデバイス410に送信するように構成され得る。例えば、デバイス410は、製造業者から取得され得る。ユーザシステム430は、デバイス410が製造業者から取得された後に公開鍵432Bをデバイス410に送信してもよい。ユーザシステム430は、図4Aを参照して本明細書で説明されたように、デバイス410のメモリ440内に記憶されているソフトウェアプロバイダシステムの公開を検証するように更に構成され得る。
図4Bの実施例では、ユーザシステム430は秘密鍵/公開鍵ペアを生成するが、いくつかの実施形態では、ユーザシステム430は、対称鍵を生成するように構成され得る。そのような実施形態では、システム430は、メモリ440内に記憶するためにデバイス410に送信される単一の鍵を生成するように構成され得る。
図5は、本明細書に記載の技術のいくつかの実施形態による、デバイスが鍵無効化を行うための例示的なプロセス500を示す。プロセス500は、図2を参照して本明細書で説明されたデバイス102によって行われ得る。いくつかの実施形態では、プロセス500は、別のシステムから鍵無効化を要求する必要なしに、デバイスが鍵無効化を行うことを可能にし得る。例えば、プロセス500は、デバイスが鍵無効化を行うという要求をシステムに伝達することなく行われ得る。
プロセス500はブロック502で開始し、そこでデバイスは、ホストシステム(例えば、図1を参照して本明細書で説明されたホストシステム104)から、デバイスにインストールされたソフトウェアを更新するための命令を受信する。例示的な命令セットが、図3を参照して本明細書で説明されている。命令は、ソフトウェアプロバイダシステム(例えば、ソフトウェアプロバイダシステム106)からホストシステムに提供されていてもよい。デバイスは、デバイスのローカルネットワーク内のホストシステムとの接続を通して、ソフトウェアを更新するための命令を受信するように構成され得る。いくつかの実施形態では、デバイスは、ホストシステムとの物理的接続を通して、デバイスにインストールされたソフトウェアを更新するための命令を受信し得る。例えば、デバイスは、車両に埋め込まれ得、ホストシステムは、有線接続を通してデバイスに接続されている車両のECUであり得る。いくつかの実施形態では、デバイスは、無線接続を通して、デバイスにインストールされたソフトウェアを更新するための命令を受信し得る。例えば、デバイスは、デバイスのローカルネットワーク内のホストシステムと無線で通信することができ得る。
次に、プロセス500はブロック504に進み、そこでデバイスは、1つ以上の鍵を使用して、ブロック502で受信された命令を検証する。デバイスは、鍵を使用して、命令が信頼できるソースから受信されたことを検証するように構成され得る。例えば、デバイスは、鍵を使用して、命令が(例えば、デバイスの製造業者の)ソフトウェアプロバイダシステムによって生成された命令であることを検証し得る。いくつかの実施形態では、デバイスは、鍵を使用して命令を検証するように構成され得る。例えば、デバイスは、鍵を使用して、デジタル署名スキーム(例えば、RSA、ECDSA、又は他のデジタル署名スキーム)を使用して命令に含められたデジタル署名を検証し得る。この実施例では、検証は、(1)鍵を使用して動作を行うことと、(2)動作の結果に基づいてデジタル署名を検証することと、を包含し得る。デバイスは、結果が予想結果と一致するかどうかを判定することによって、動作の結果に基づいてデジタル署名を検証し得る。別の実施例では、デバイスは、(例えば、鍵が対称鍵である場合)鍵を使用してメッセージ認証タグを検証し得る。
いくつかの実施形態では、デバイスは、複数の鍵を使用して命令を検証するように構成され得る。複数の鍵は、使用のために、デバイスを配備する前にデバイスに記憶されていてもよい。例えば、デバイスは、ソフトウェアプロバイダ(例えば、デバイス製造業者)によってデバイスに記憶された鍵と、デバイスのユーザによってデバイスに記憶された鍵とを使用して、命令を検証し得る。鍵は、図4A及び図4Bを参照して本明細書で説明されたように、デバイスに記憶されていてもよい。プロセス600は、デバイスが複数の鍵を使用して命令を検証するために行い得る例示的なプロセスを表している。
次に、プロセス500はブロック506に進み、そこでデバイスは、命令を実行する。デバイスのプロセッサは、命令を実行するように構成され得る。いくつかの実施形態では、デバイスは、デバイスのブートローダを使用して命令を実行するように構成され得る。例えば、デバイスは、図2の参照番号214に関して説明されたように、ブートローダを使用して命令を実行し得る。
次に、プロセス500はブロック508に進み、そこでデバイスは、第1の鍵の使用を無効化し、第1の鍵の代わりに新しい鍵の使用を開始する。デバイスは、ブロック506で命令を実行した結果として、ブロック508のステップを行い得る。命令は、デバイスに無効化を行わせる。いくつかの実施形態では、デバイスは、デバイスに第1の鍵の使用を無効化させ、かつデバイスのメモリ内に記憶された新しい鍵の使用を開始させるフラグを設定し得る。例えば、フラグは、実行されると、デバイスに第1の鍵の使用を無効化させ、かつ新しい鍵の使用を開始させるソフトウェア機能を起動させ得る。いくつかの実施形態では、命令は新しい鍵を含み得、デバイスは、命令に含まれる新しい鍵で第1の鍵を置き換え得る。いくつかの実施形態では、デバイスは、デバイスのメモリから新しい鍵を読み取り、新しい鍵で第1の鍵を置き換え得る。いくつかの実施形態では、デバイスは、(例えば、検証、暗号化、及び/又は他のプロセスを行う際に)第1の鍵がもはや使用されないことを示すために、第1の鍵に関連付けられたフラグを変更し得る。いくつかの実施形態では、デバイスは、その値がデバイスのメモリ内に記憶されている複数の鍵のそれぞれの1つを示す指数を更新し得る。更新された指数は、第1の鍵の代わりに新しい鍵を示し得る。例えば、デバイスは、指数を増分することによって指数を更新し得る。別の実施例では、デバイスは、指数をその現在の値とは異なる値にランダムに設定することによって指数を更新し得る。
いくつかの実施形態では、デバイスは、第1の鍵を無効化することの一部として、第1の鍵に関連付けられたデータの使用を無効化し得る。データは、検証を行うために第1の鍵と併せてデバイスによって使用され得る。いくつかの実施形態では、データは、デジタル署名を検証するために使用されるデータセットのハッシュであり得る。例えば、デバイスは、第1の鍵を使用して取得されたデジタル署名の復号化体をデータ(例えば、データセットのハッシュ)と比較して、デジタル署名を検証し得る。デバイスは、第1の鍵に関連付けられたデータの使用を無効化し、新しい鍵に関連付けられた新しいデータの使用を開始し得る。デバイスは、第1の鍵に関連付けられたデータを新しい鍵に関連付けられた新しいデータに置き換えてもよいし、又はそうでなければ、デバイスにその後新しい鍵を有する新しいデータを使用させる指示(例えば、指数又はフラグ)を更新してもよい。
図6は、本明細書に記載の技術のいくつかの実施形態による、ソフトウェア更新命令を検証する例示的なプロセス600を示す。プロセス600は、図1を参照して本明細書で説明されたデバイス102によって行われ得る。いくつかの実施形態では、プロセス600は、図5を参照して本明細書で説明されたプロセス500のブロック508の一部として行われ得る。いくつかの実施形態では、プロセス600はまた、ソフトウェアをロードする前にインストールされたソフトウェアを検証するために、起動するたびにデバイスによって行われ得る。
プロセス600を行うデバイスは、(例えば、図2を参照して本明細書で説明されたような)マルチブートローダソフトウェアアーキテクチャで構成され得る。デバイスは、第1のブートローダ及び第2のブートローダを有し得る。第1及び第2のブートローダは、本明細書では、それぞれ一次ブートローダ及び二次ブートローダと称されることもある。ブートローダの各々は、検証を行う際にそれぞれの鍵を使用するように構成され得る。第1のブートローダは、第1の鍵(例えば、ソフトウェアプロバイダによって提供された鍵)を使用するように構成され得、第2のブートローダは、第2の鍵(例えば、デバイスのユーザによって提供された鍵)を使用するように構成され得る。いくつかの実施形態では、第1及び第2のブートローダの各々は、第1及び第2の鍵の両方を使用するように構成され得る。ソフトウェア命令は、第1の鍵及び第2の鍵に対応する2つの鍵を使用して暗号化され得る。いくつかの実施形態では、命令は、2つの鍵を使用してデジタル署名され得る。例えば、第1及び第2の鍵は、公開鍵であり得、ソフトウェア命令は、第1及び第2の公開鍵に対応する第1及び第2の秘密鍵を使用してデジタル署名され得る。ソフトウェアプロバイダシステムは、第1の秘密鍵を使用して命令に署名し得、ユーザシステムは、第2の秘密鍵を使用して命令に署名し得る。
プロセス600はブロック602で開始し、そこでデバイスは、第1のブートローダを使用して、第1の鍵を使用して命令を検証する。デバイスは、デバイスのメモリ(例えば、ROM又はフラッシュ)から第1のブートローダをロードし得る。第1のブートローダは、第1の鍵(例えば、第1の公開鍵、又は第1の対称鍵)を使用して命令を検証するように構成され得る。第1のブートローダは、第1の鍵を使用して、命令に含まれる第1のデジタル署名を検証するように構成され得る。この実施例では、第1のブートローダは、(1)第1の鍵を使用して第1のデジタル署名の暗号化データを復号化して、暗号化データの復号化体を取得することと、(2)復号化体に基づいて第1のデジタル署名を検証することとによって、鍵を使用して第1のデジタル署名を検証し得る。第1のブートローダは、復号化体が復号化の予想出力と一致するかどうかを判定することによって、復号化体に基づいて第1のデジタル署名を検証し得る。例えば、暗号化データは、データセットのハッシュの暗号化体であり得る。この実施例では、第1のブートローダは、暗号化データの復号化体がデータセットのハッシュと一致するかどうかを判定してデジタル署名を検証し得る。復号化体がデータセットのハッシュと一致する場合、次いで第1のブートローダは、第1のデジタル署名が有効であると判定し得る。復号化体がデータセットのハッシュと一致しない場合、次いで第1のブートローダは、第1のデジタル署名が無効であると判定し得る。
次に、プロセス600はブロック604に進み、そこでデバイスは、ブロック602で命令が検証されたかどうかを判定する。ブロック602で命令の検証が失敗した場合、次いでプロセス600はブロック612に進み、そこでデバイスは、命令の実行を防ぐ。ブロック612で、デバイスは、命令の実行を停止し得る。したがって、デバイスは、いかなる鍵無効化又はソフトウェア更新も行わない場合がある。デバイスは、ソフトウェアの以前のバージョンを継続し、検証のために現在の鍵を使用し続け得る。
(例えば、第1のデジタル署名が有効であると判定することによって)ブロック602でデバイスが命令を検証した場合、次いでプロセス600はブロック606に進み、そこでデバイスは、第2のブートローダを使用して、第2の鍵を使用して命令を検証する。デバイスは、デバイスのメモリ(例えば、ROM又はフラッシュ)から第2のブートローダをロードし得る。第2のブートローダは、第2の鍵(例えば、第2の公開鍵、又は第2の対称鍵)を使用して命令を検証するように構成され得る。第2のブートローダは、第2の鍵を使用して、命令に含まれる第2のデジタル署名を検証するように構成され得る。この実施例では、第2のブートローダは、(1)第2の鍵を使用して第2のデジタル署名の暗号化データを復号化して、暗号化データの復号化体を取得することと、(2)復号化体に基づいて第2のデジタル署名を検証することとによって、鍵を使用して第2のデジタル署名を検証し得る。第2のブートローダは、復号化体が復号化体の予想出力と一致するかどうかを判定することによって、復号化体に基づいて第2のデジタル署名を検証し得る。例えば、暗号化データは、データセットのハッシュの暗号化体であり得る。この実施例では、第2のブートローダは、暗号化データの復号化体がデータセットのハッシュと一致するかどうかを判定してデジタル署名を検証し得る。復号化体がデータセットのハッシュと一致する場合、次いで第2のブートローダは、第2のデジタル署名は有効であると判定し得る。復号化体がデータセットのハッシュと一致しない場合、次いで第2のブートローダは、第2のデジタル署名が無効であると判定し得る。
次に、プロセス600はブロック608に進み、そこでデバイスは、ブロック606で命令が検証されたかどうかを判定する。ブロック606で命令の検証が失敗した場合、次いでプロセス600はブロック612に進み、そこでデバイスは、上述されたように命令の実行を防ぐ。ブロック606で命令が検証された場合、次いでプロセス600はブロック610に進み、そこでデバイスは、命令の実行を許可する。例えば、命令は、第2のブートローダによって又はデバイスの動作ソフトウェアによって、実行され得る。命令は、図5を参照して本明細書で説明されたプロセス500のブロック506及び508で説明されたように実行され得る。
図7は、本明細書に記載の技術のいくつかの実施形態による、システムがデバイス上で鍵無効化を行うための例示的なプロセス700を示す。いくつかの実施形態では、プロセス700は、図1を参照して本明細書で説明されたようなデバイス102上で鍵を無効化するために、ソフトウェアプロバイダシステム106によって行われ得る。
プロセス700はブロック702で開始し、そこでシステムは、鍵無効化命令を取得する。鍵無効化命令は、デバイスによって実行されると、図5を参照して本明細書で説明されたプロセス500のブロック506~508で説明されたように、デバイスに、第1の鍵の使用を無効化させ、それを新しい鍵に置き換えさせ得る。例えば、システムは、鍵無効化命令を符号化するコードを含むファイルを生成し得る。
次に、プロセス700はブロック704に進み、そこでシステムは、ソフトウェア更新を取得する。システム更新は、デバイスにインストールされたソフトウェアのための更新されたソフトウェアイメージであり得る。いくつかの実施形態では、システムは、ソースコードを実行可能なソフトウェアイメージにコンパイルすることによってソフトウェアイメージを取得するように構成され得る。例えば、システムは、ソースコードを、デバイスによってロード及び実行されることができるバイナリファイルにコンパイルし得る。いくつかの実施形態では、システムは、別のシステムからソフトウェアイメージを受信することによってソフトウェアイメージを取得するように構成され得る。例えば、ソフトウェアイメージは、別のシステム上でソースコードをコンパイルすることによって生成され、次いで、プロセス700を行うシステムに送信されていてもよい。
次に、プロセス700はブロック706に進み、そこでシステムは、新しい鍵を使用してソフトウェア更新にデジタル署名する。新しい鍵は、無効化が行われた後に、第1の鍵の代わりにデバイスによって使用されるための新しい鍵に対応し得る。いくつかの実施形態では、新しい鍵は、デバイス上で使用される新しい公開鍵に対応する新しい秘密鍵であり得る。いくつかの実施形態では、新しい鍵は、やはりデバイス上で使用される新しい対称鍵であり得る。システムは、ソフトウェア更新に含まれるデジタル署名を生成することによって、ソフトウェア更新にデジタル署名するように構成され得る。システムは、(1)データのセットを取得することと、(2)新しい鍵を使用してデータセットを暗号化して暗号化データセットをデジタル署名として取得することとによって、デジタル署名を生成するように構成され得る。いくつかの実施形態では、システムは、データ(例えば、テキストデータ)をハッシングしてデータセットを取得することによって、データセットを取得するように構成され得る。システムは、新しい鍵を使用してハッシングされたデータセットを暗号化し得る。新しい鍵を使用してソフトウェア更新にデジタル署名することによって、ソフトウェア更新は、無効化命令の実行後に、デバイスの対応する新しい鍵を使用してデバイスによって検証され得る。
次に、プロセス700はブロック708に進み、そこでシステムは、無効化命令及びソフトウェア更新を含むソフトウェア更新命令を生成する。いくつかの実施形態では、システムは、ソフトウェア更新及び無効化命令を含む1つ以上のファイルを生成するように構成され得る。例えば、システムは、ソフトウェア更新(例えば、ソフトウェアイメージ)を含むファイルと無効化命令を含むファイルとを生成し得る。システムは、2つのファイルを単一のデータパッケージ内にソフトウェア更新命令として記憶し得る。システムによって生成され得る例示的なソフトウェア更新命令セットが、図3を参照して本明細書で説明されている。
次に、プロセス700はブロック710に進み、そこでシステムは、デバイスが検証のために現在使用するように構成されている鍵に対応する第1の鍵を使用して、ソフトウェア更新命令にデジタル署名する。システムは、ソフトウェア更新命令とともに含まれるデジタル署名を生成することによって、ソフトウェア更新命令にデジタル署名し得る。鍵を使用してデジタル署名を生成する技術は、本明細書で説明されている。デバイスは、第1の鍵に対応する鍵を使用してソフトウェア更新命令を検証するように構成され得る。例えば、デバイスは、第1の鍵に対応する公開鍵を使用してソフトウェア更新命令を検証し得る。別の実施例では、第1の鍵は対称鍵であり得、デバイスは、第1の対称鍵を使用してソフトウェア更新命令を検証し得る。
次に、プロセス700はブロック712に進み、そこでシステムは、ソフトウェア更新命令を送信する。いくつかの実施形態では、システムは、ソフトウェア更新命令をユーザシステムに送信するように構成され得る。ユーザシステムは、ソフトウェア更新命令にデジタル署名し得る。いくつかの実施形態では、ユーザシステムは、プロセス700を行うシステムのデジタル署名を検証し得、デジタル署名が有効であるとユーザシステムが判定した場合、ユーザシステムは、自身のデジタル署名を生成することによって、ソフトウェア更新命令にデジタル署名し得る。次いで、ユーザシステムは、デバイスへの送信のために、ソフトウェア更新命令をホストシステム(例えば、ホストシステム104)に送信し得る。いくつかの実施形態では、ユーザシステムは、ソフトウェア更新命令にデジタル署名することなく、ソフトウェア更新命令をホストシステムに送信し得る。そのような実施形態では、ソフトウェア更新命令は、単一のエンティティ(例えば、プロセス700を行うシステム)によって署名され得る。デバイスは、ソフトウェア更新命令に含まれる両方のデジタル署名を検証することによって、ソフトウェア更新命令を検証し得る。いくつかの実施形態では、プロセス700を行うシステムは、ソフトウェア更新命令をユーザシステムに送信することなく、それらをホストシステムに送信するように構成され得る。デバイスは、ソフトウェア更新命令に含まれるシステムのデジタル署名を検証することによって、ソフトウェア更新命令を検証し得る。デバイスへのソフトウェア更新命令の送信は、デバイスに、図5を参照して本明細書で説明されたプロセス500を行わせ得る。デバイスは、鍵の使用を無効化し、無効化された鍵の代わりに別の鍵の使用を開始し得る。
いくつかの実施形態では、システムは、デバイスによって生成されたいかなる要求も受信することなく、鍵無効化命令を含むソフトウェア更新命令を送信するように構成され得る。例えば、システムは、デバイスとの任意の通信プロトコルに参加することなく、ソフトウェア更新命令を送信し得る。図4を参照して本明細書で説明されたように、デバイスは、命令を要求することなく(例えば、ホストシステムを通して)命令を受信し得る。これにより、敵対者がそのような要求を傍受したり、かつ/又は自身の鍵をデバイスに送信する機会が排除され得る。
図8は、本明細書に記載の技術の実施形態を実装するために使用され得る例示的なコンピュータシステム800のブロック図を示す。コンピューティングデバイス800は、1つ以上のコンピュータハードウェアプロセッサ802並びに非一時的なコンピュータ可読記憶媒体(例えば、メモリ804及び1つ以上の不揮発性記憶デバイス806)を含み得る。プロセッサ802は、(1)メモリ804、及び(2)不揮発性記憶デバイス806へのデータの書き込み並びにこれらからのデータの読み出しを制御し得る。本明細書に記載の機能のうちのいずれかを行うために、プロセッサ802は、プロセッサ802による実行のためのプロセッサ実行可能命令を記憶する非一時的なコンピュータ可読記憶媒体の役割を果たし得る、1つ以上の非一時的なコンピュータ可読記憶媒体(例えば、メモリ804)内に記憶された1つ以上のプロセッサ実行可能命令を実行し得る。
「プログラム」又は「ソフトウェア」という用語は、本明細書では一般的な意味で使用され、上記で検討されたような実施形態の様々な態様を実装するためにコンピュータ又は他のプロセッサ(物理的又は仮想的)をプログラムするために使用することができる任意のタイプのコンピュータコード又はプロセッサ実行可能命令セットを指す。加えて、1つの態様によれば、実行されると、本明細書で提供される開示の方法を行う1つ以上のコンピュータプログラムは、単一のコンピュータ又はプロセッサ上に存在する必要はなく、本明細書で提供される開示の様々な態様を実装するために、異なるコンピュータ又はプロセッサ間にモジュール方式で分散されてもよい。
プロセッサ実行可能命令は、1つ以上のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態であり得る。一般に、プログラムモジュールは、タスクを行うか、又は抽象的データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造、その他を含む。典型的には、プログラムモジュールの機能は、組み合わされてもよいし、又は分散されてもよい。
100 システム
102 デバイス
102A プロセッサ
102B 無線通信回路
102C メモリ
104 ホストシステム
106 ソフトウェアプロバイダシステム
108 ネットワーク
110 ローカルネットワーク
200 ソフトウェアアーキテクチャ
202 第1のブートローダ
204 第2のブートローダ
206 動作ソフトウェア
208 通信ソフトウェア
210 無線通信回路
212 ソフトウェア更新命令
214 ソフトウェア更新命令処理
300 ソフトウェア更新命令セット
300A 第1の署名
300B 第2の署名
300 ソフトウェア命令
302 鍵無効化命令セット
304 ソフトウェアイメージ
304A 署名
400 ソフトウェアプロバイダシステム
402 鍵生成
402A 秘密鍵
402B 公開鍵
408 署名生成
410 デバイス
430 ユーザシステム
432 秘密鍵/公開鍵ペア生成
432A 秘密鍵
432B 公開鍵
440 メモリ
500 プロセス
600 プロセス
700 プロセス
800 コンピュータシステム
802 コンピュータハードウェアプロセッサ
804 メモリ
806 不揮発性記憶デバイス

Claims (20)

  1. デバイスのローカルネットワーク内の通信に限定された前記デバイス上で鍵無効化を行うための方法であって、前記デバイスは第1の鍵及び第2の鍵を記憶しており、前記方法は、
    前記デバイスのプロセッサを使用して、
    前記デバイスの前記ローカルネットワーク内のホストシステムから、前記デバイスにインストールされたソフトウェアを更新するための命令を受信することであって、前記命令は、前記第1の鍵の無効化のための命令を含む、受信することと、
    前記命令を実行することであって、前記命令の実行は、前記デバイスに、
    前記第1の鍵の使用を無効化させ、かつ
    前記第1の鍵の代わりに第3の鍵の使用を開始させる、実行することと、を行うことを含む、方法。
  2. 前記デバイスは、インターネット接続を有さない、請求項1に記載の方法。
  3. 前記デバイスは、第三者検証機関と通信できない、請求項1に記載の方法。
  4. 前記プロセッサを使用して、
    前記デバイスの前記第1の鍵及び前記第2の鍵を使用して前記命令を検証することと、
    前記デバイスの前記第1の鍵及び前記第2の鍵を使用して前記命令を検証した後に前記命令を実行することと、を行うことを更に含む、請求項1に記載の方法。
  5. 前記デバイスの前記第1の鍵及び前記第2の鍵を使用して前記命令を検証することは、
    前記デバイスの第1のブートローダを使用して、前記第1の鍵を使用して前記命令を検証することと、
    前記デバイスの第2のブートローダを使用して、前記第2の鍵を使用して前記命令を検証することと、を含む、請求項4に記載の方法。
  6. 前記命令を実行することは、前記第2のブートローダを使用して前記命令を実行することを含む、請求項5に記載の方法。
  7. 前記命令は、前記第1の鍵を使用して生成された第1の署名と、前記第2の鍵を使用して生成された第2の署名とを含み、
    前記命令を検証することは、前記第1及び第2の鍵を使用して前記第1及び第2の署名を検証することを含む、請求項4に記載の方法。
  8. 前記第1の鍵は、前記デバイスにインストールされた前記ソフトウェアのプロバイダに関連付けられたシステムによって生成され、前記第2の鍵は、前記デバイスのユーザに関連付けられたシステムによって生成される、請求項1に記載の方法。
  9. 前記第1の鍵の無効化は、所定の回数まで行われることができる、請求項1に記載の方法。
  10. 前記所定の回数は1回である、請求項9に記載の方法。
  11. 前記デバイスの前記ローカルネットワーク内の前記ホストシステムから、前記デバイスにインストールされたソフトウェアを更新するための別の命令セットを受信することであって、前記別の命令セットは、前記第2の鍵の無効化のための命令を含む、受信することと、
    前記追加の命令セットを実行することであって、前記追加の命令セットの実行は、前記デバイスに、
    前記第2の鍵の使用を無効化させ、かつ
    前記第2の鍵の代わりに第4の鍵の使用を開始させる、実行することと、を更に含む、請求項1に記載の方法。
  12. ローカルネットワークの一部を形成し、かつ前記ローカルネットワーク内の通信に限定されたデバイスであって、
    無線通信回路と、
    第1の鍵及び第2の鍵を記憶するように構成されたメモリと、
    プロセッサであって、
    前記無線通信回路を使用して前記ローカルネットワーク内のホストシステムから、前記デバイスにインストールされたソフトウェアを更新するための命令を受信することであって、前記命令は、前記第1の鍵の無効化のための命令を含む、受信することと、
    前記命令を実行することであって、前記命令の実行は、前記デバイスに、
    前記第1の鍵の使用を無効化させ、かつ
    前記第1の鍵の代わりに第3の鍵の使用を開始させる、実行することと、を行うように構成されたプロセッサと、を備える、デバイス。
  13. 前記デバイスは、インターネット接続を有さない、請求項12に記載のデバイス。
  14. 前記デバイスは、第三者検証機関と通信できない、請求項12に記載のデバイス。
  15. 前記命令は、前記プロセッサに、
    前記デバイスの前記第1の鍵及び前記第2の鍵を使用して前記命令を検証することを更に行わせ、前記デバイスの前記第1の鍵及び前記第2の鍵を検証した後に、前記命令の実行が行われる、請求項12に記載のデバイス。
  16. 前記メモリは、前記デバイスにインストールされた前記ソフトウェアをロードするための第1のブートローダ及び第2のブートローダのための命令を記憶するように構成され、
    前記デバイスの前記第1の鍵及び前記第2の鍵を使用して前記命令を検証することは、
    前記第1のブートローダを使用して、前記第1の鍵を使用して前記命令を検証することと、
    前記第2のブートローダを使用して、前記第2の鍵を使用して前記命令を検証することと、を含む、請求項15に記載のデバイス。
  17. デバイスへの接続を有さずに前記デバイス上で鍵無効化を行うためのシステムであって、前記デバイスは第1の鍵を有し、前記システムは、
    無線通信回路と、
    プロセッサであって、
    前記無線通信回路を使用して、前記デバイスのローカルネットワーク内のホストシステムに、前記デバイスにインストールされたソフトウェアを更新するための命令を送信することであって、前記命令は、前記デバイスによって実行されると、前記デバイスに、
    前記デバイスの前記第1の鍵の使用を無効化させ、かつ
    前記第1の鍵の代わりに第2の鍵の使用を開始させる、送信することを行うように構成されたプロセッサと、を備える、システム。
  18. 前記プロセッサは、前記第1の鍵を使用して前記命令に署名するように更に構成されている、請求項17に記載のシステム。
  19. 前記命令はソフトウェアイメージを含み、前記プロセッサは、前記第2の鍵を使用して前記ソフトウェアイメージに署名するように更に構成されている、請求項17に記載のシステム。
  20. 前記プロセッサは、前記命令に、鍵無効化命令及び更新されたソフトウェアイメージを含めることによって前記命令を生成するように更に構成されている、請求項17に記載のシステム。
JP2023540166A 2020-12-31 2021-12-10 エッジデバイスのための鍵無効化 Pending JP2024503602A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063132992P 2020-12-31 2020-12-31
US63/132,992 2020-12-31
PCT/US2021/062879 WO2022146657A1 (en) 2020-12-31 2021-12-10 Key revocation for edge devices

Publications (1)

Publication Number Publication Date
JP2024503602A true JP2024503602A (ja) 2024-01-26

Family

ID=79287947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023540166A Pending JP2024503602A (ja) 2020-12-31 2021-12-10 エッジデバイスのための鍵無効化

Country Status (5)

Country Link
US (1) US20220209946A1 (ja)
EP (1) EP4272365A1 (ja)
JP (1) JP2024503602A (ja)
CN (1) CN116710914A (ja)
WO (1) WO2022146657A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11652626B2 (en) * 2020-02-18 2023-05-16 International Business Machines Corporation Safeguarding cryptographic keys from modification or deletion

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9925227D0 (en) * 1999-10-25 1999-12-22 Internet Limited Data storage retrieval and access system
US10033534B2 (en) * 2015-12-01 2018-07-24 Intel Corporation Methods and apparatus to provide for efficient and secure software updates

Also Published As

Publication number Publication date
WO2022146657A1 (en) 2022-07-07
EP4272365A1 (en) 2023-11-08
CN116710914A (zh) 2023-09-05
US20220209946A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
US11074371B2 (en) Systems, methods and apparatuses for secure storage of data using a security-enhancing chip
EP3458999B1 (en) Self-contained cryptographic boot policy validation
CN107077574B (zh) 用于客户端设备的信任服务
WO2020098377A1 (zh) 可信应用程序的远程证明方法及装置、电子设备
US9806883B2 (en) Secure provision of a key
US8843764B2 (en) Secure software and hardware association technique
US20210012008A1 (en) Method of initializing device and method of updating firmware of device having enhanced security function
JP2010011400A (ja) 共通鍵方式の暗号通信システム
CN107534551B (zh) 提供加密数据的方法、计算设备和计算机可读介质
KR102028197B1 (ko) 하드웨어 보안 모듈, 상기 하드웨어 보안 모듈에 저장된 무결성 검증 값을 업데이트하는 방법, 상기 하드웨어 보안 모듈을 이용하여 단말에 저장된 프로그램을 업데이트하는 방법
US10282549B2 (en) Modifying service operating system of baseboard management controller
US20160028549A1 (en) Information processing system and electronic device
CN110730159B (zh) 一种基于TrustZone的安全和可信混合***启动方法
US11516194B2 (en) Apparatus and method for in-vehicle network communication
JP6387908B2 (ja) 認証システム
EP3641219A1 (en) Puf based securing of device update
US20180365411A1 (en) Method and security module for providing a security function for a device
JP2018117185A (ja) 情報処理装置、情報処理方法
US20160277182A1 (en) Communication system and master apparatus
JP2024503602A (ja) エッジデバイスのための鍵無効化
JP2018194879A (ja) 半導体装置、ブート方法、およびブートプログラム
US10067770B2 (en) Platform key hierarchy
US20240249029A1 (en) Utilizing hardware tokens in conjunction with HSM for code signing
US11526598B2 (en) Microcontroller and semiconductor device
WO2022009464A1 (ja) 制御装置およびプログラム検証方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240722