JP7450713B2 - ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置 - Google Patents

ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置 Download PDF

Info

Publication number
JP7450713B2
JP7450713B2 JP2022524002A JP2022524002A JP7450713B2 JP 7450713 B2 JP7450713 B2 JP 7450713B2 JP 2022524002 A JP2022524002 A JP 2022524002A JP 2022524002 A JP2022524002 A JP 2022524002A JP 7450713 B2 JP7450713 B2 JP 7450713B2
Authority
JP
Japan
Prior art keywords
signature
software package
verification
software
verification result
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.)
Active
Application number
JP2022524002A
Other languages
English (en)
Other versions
JP2022553393A (ja
Inventor
斌 曹
▲海▼武 ▲陳▼
▲艷▼ ▲陳▼
博 王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2022553393A publication Critical patent/JP2022553393A/ja
Application granted granted Critical
Publication of JP7450713B2 publication Critical patent/JP7450713B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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
    • 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
    • G06F21/575Secure boot
    • 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
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/006Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

本出願は、2019年10月23日に中国国家知識産権局に提出された「DEVICE INTEGRITY PROTECTION METHOD, PROCESSOR, NETWORK DEVICE, AND NETWORK SYSTEM」と題された中国特許出願第201911012940.1号、および2019年11月15日に中国国家知識産権局に提出された「SOFTWARE INTEGRITY PROTECTION METHOD AND APPARATUS, AND SOFTWARE INTEGRITY VERIFICATION METHOD AND APPARATUS」と題された中国特許出願第201911120987.X号の優先権を主張し、参照によりそれらの全体が本明細書に組み込まれる。
本出願は、セキュリティ技術の分野、特にソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置に関する。
通常、ソフトウェアパッケージのソフトウェア完全性を保証するために、ソフトウェア完全性保護と検証がソフトウェアパッケージにおいて実行され得、これは、具体的には以下を含む。ソフトウェアパッケージがデバイスにダウンロードされる前に、ソフトウェア製造業者によって提供された秘密鍵を使用することによってソフトウェアパッケージが署名される。ソフトウェアパッケージをロードする前に、デバイスは、秘密鍵に対応する公開鍵を使用することによってソフトウェアパッケージの署名を検証する。署名の検証が成功した場合は、ソフトウェアパッケージが攻撃者によって悪意を持って改ざんされておらず、ロードできることを示している。
現在、ソフトウェアパッケージは署名されており、デバイスにロードされたソフトウェアパッケージのソフトウェア完全性を保証するために、ソフトウェア製造業者によって提供された鍵のみを使用することによってソフトウェアパッケージに対して署名検証が実行される。したがって、ユーザの信頼の問題を解決することはできない。
これを考慮して、本出願の実施形態は、ユーザによって信頼されるソフトウェア完全性保護と検証の方法を提供し、それによってデバイスを使用するユーザエクスペリエンスを向上させるために、ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置を提供する。
第1の態様によれば、ソフトウェア完全性保護方法が提供される。本方法は、第2のネットワークデバイスにダウンロードされ、インストールされる、第2のソフトウェアパッケージに対してソフトウェア完全性保護を実行するために使用される。本方法は、具体的には以下を含み得る。ステップ1:第1のデバイスは、ファーストパーティが第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行した後に取得される第1のソフトウェアパッケージを取得し、ここで、第1のソフトウェアパッケージは第2のソフトウェアパッケージおよび第1の署名を含む。ステップ2:第1のデバイスは、第2の署名を含む第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作を実行し、第1の秘密鍵は、ファーストパーティによって制御され、第2の秘密鍵はセカンドパーティによって制御される。
一例では、第1のデバイスは、ソフトウェア製造業者に対応する製造業者署名システムであり得る。この場合、ファーストパーティは第2のソフトウェアパッケージのユーザであり得、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。ステップ1は具体的には次のようになり得る。第2のソフトウェアパッケージを取得した後、ユーザ署名システムは、第1の署名を取得するために、ユーザ署名システムによって提供される第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行し、第1の署名を含む第1のソフトウェアパッケージと第2のソフトウェアパッケージを第1のデバイスに送信する。
別の例では、第1のデバイスは、代替的に、ユーザ署名システムであり得る。この場合、ファーストパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局であり得、セカンドパーティは第2のソフトウェアパッケージのユーザである。ステップ1は具体的には次のようになり得る。第2のソフトウェアパッケージを取得した後、製造業者署名システムは、第1の署名を取得するために、製造業者署名システムによって提供される第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行し、第1の署名を含む第1のソフトウェアパッケージと第2のソフトウェアパッケージを第1のデバイスに送信する。
このようにして、本出願のこの実施形態において提供される方法によれば、ソフトウェアパッケージは、製造業者によって提供される鍵に基づいて署名できるだけでなく、ソフトウェアパッケージは、ユーザによって提供される鍵に基づいて署名することもでき、ユーザによって提供される鍵は、ユーザにとって絶対的に信頼できるものである。すなわち、本出願のこの実施形態は、製造業者を完全に信頼または依存することなく、ユーザによって信頼され得るソフトウェア完全性保護方法を提供する。これにより、ユーザの信頼の問題が解決し、それによってデバイスを使用するユーザエクスペリエンスが向上する。
第1の態様の可能な実装形態において、本方法はさらに以下を含み得る。第1のデバイスは、第3のソフトウェアパッケージを第2のデバイスに送信する。このようにして、第2のデバイスが第2のソフトウェアパッケージをロードする前に、第2のデバイスが、以下の第2の態様において提供されるソフトウェア完全性検証方法に従って第2のソフトウェアパッケージに対してソフトウェア完全性検証を実行するための信頼できる豊富なデータベーシスが提供される。
第1の態様の別の可能な実装形態では、第2のデバイスのソフトウェア完全性検証メカニズムを構成するために、第2のデバイスにおいて、スイッチングイネーブルビットおよびデュアルルートイネーブルビットがさらに構成され得る。第2のデバイスにおいて第2のソフトウェアパッケージに対してソフトウェア完全性検証が実行される場合、一例では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、第1の署名と第2の署名の両方が有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。別の例では、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、有効である第1の署名は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。さらに別の例では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、有効である第2の署名は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。第2のデバイスにおけるスイッチングイネーブルビットの値とデュアルルートイネーブルビットの値の両方が有効である場合、スイッチングイネーブルビットの優先度がデュアルルートイネーブルビットの優先度よりも高く設定され得る。このようにして、2つのイネーブルビットのフィールドセグメントが第2のデバイスにおいて予約されるため、ユーザがデュアル署名検証メカニズムまたはユーザ署名検証メカニズムを使用する必要がある場合、ユーザは、2つのイネーブルビットの値を構成することによって、対応する署名検証メカニズムを有効にし得る。これにより、第2のデバイスのソフトウェアにおけるソフトウェア完全性検証の柔軟性が向上し、第2のデバイスを使用するユーザエクスペリエンスが向上する。
第1の態様の他のいくつかの可能な実装形態では、第2のデバイスを製造するプロセスにおいて、製造業者の公開鍵が第2のデバイスのSoCで焼き付けられて(burnt in)よく、ユーザの公開鍵のフィールドセグメント、デュアルルートイネーブルビット、およびスイッチングイネーブルビットは予約されている。これにより、実際の要件に基づいてデュアル署名検証メカニズムまたはユーザ署名検証メカニズムを有効にすることと、対応するユーザ公開鍵の値、デュアルルートイネーブルビットの値、およびスイッチングイネーブルビットの値を1つまたは複数のファイル(焼付けファイル(burn file)として記録される)にパッケージ化することと、ユーザによる第2のデバイスのその後の使用中に対応するフィールドセグメントの値を焼き付けることとが、本出願の実施形態において、以下の第2の態様において提供されるソフトウェア完全性検証のために準備されることが容易になる。焼付けファイルは、第2のデバイス、たとえば、ワンタイムプログラマブルメモリOTPの信頼のbootルートに記憶され得ることが理解され得る。信頼のbootルートは、具体的には、第2のデバイスのシステムオンチップSoCにおけるオンチップbootメディアBootROMである可能性がある。
一例では、焼付けファイルが信頼できることを保証するために、焼付けファイルのコンテンツが記憶される前に、第2のデバイスは、第2のデバイスの識別子およびデュアル署名検証デバイスリストをさらに事前に記憶する。第2のデバイスの識別子は、第2のデバイスを一意に識別することができる。デュアル署名検証デバイスリストは、製造業者によって記録され、デュアル署名検証メカニズムを有効にすることを許可されたデバイスのデバイス識別子のセットである。デュアル署名検証デバイスリストは、製造業者署名システムを使用することによって署名され、次いで、第2のデバイスに配信され得る。署名検証を通じて、デュアル署名検証デバイスリストが有効であると決定する場合、第2のデバイスは、第2のデバイスの識別子がデュアル署名検証デバイスリストに属するかどうかを決定し得、第2のデバイスの識別子がデュアル署名検証デバイスリストに属する場合、第2のデバイスはデュアル署名検証メカニズムを有効にすることを許可されたデバイスであると見なす場合がある。この場合、焼付けファイルが受信された後、焼付けファイルの内容に対応する保持値用に予約されたフィールドセグメントにおいて、第2のデバイスのソフトウェア完全性検証の構成が完了する。
元のルート秘密鍵が公開される回数を減らすために、本出願のこの実施形態における第1の公開鍵、第1の秘密鍵、第2の公開鍵、および第2の秘密鍵はすべて、元のルート公開鍵と元のルート秘密鍵が処理された後に取得されたセカンダリ鍵である可能性があることが理解されよう。
マルチレベルファームウェアを含むソフトウェアパッケージの場合、本出願のこの実施形態における各ステップは、ファームウェアの各レベルにおいて署名動作を実行するために同じまたは異なる秘密鍵を使用し得、それによってソフトウェアパッケージに対するソフトウェア完全性保護のセキュリティを向上させることができることが理解されよう。さらに、署名されたファームウェアの各レベルを含むソフトウェアパッケージ全体がさらに署名され得るので、第2のデバイスによるソフトウェアパッケージにおけるソフトウェア完全性検証を実行する効率をある程度改善することができる。
第2の態様によれば、本出願の実施形態は、第2のデバイスに適用されるソフトウェア完全性検証方法をさらに提供する。第1の態様において提供された方法を使用することによって保護された第3のソフトウェアパッケージは、第2のデバイスにダウンロードされ、インストールされる。本方法は、具体的には以下を含み得る。ステップ1:第2のデバイスは第1のソフトウェアパッケージを取得し、第1のソフトウェアパッケージは、第1の署名、第2の署名、および第2のソフトウェアパッケージを含む。ステップ2:第2のデバイスは、検証結果を取得するために、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ第1の署名と第2の署名を検証し、第1の公開鍵はファーストパーティによって制御され、第2の公開鍵はセカンドパーティによって制御される。
第1の署名は、ファーストパーティによって制御される第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行することによって取得され、第3のソフトウェアパッケージは、第1の署名および第2のソフトウェアパッケージを含み、第2の署名は、セカンドパーティによって制御される第2の秘密鍵を使用することによって第3のソフトウェアパッケージに対して署名動作を実行することによって取得され、第1の秘密鍵は第1の公開鍵と一致し、第2の秘密鍵は第2の公開鍵と一致することが理解されよう。ファーストパーティは第2のソフトウェアパッケージのユーザであり得、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。代替で、ファーストパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局であり得、セカンドパーティは第2のソフトウェアパッケージのユーザである。
このようにして、本出願のこの実施形態において提供される方法によれば、製造業者とユーザによって提供された鍵を使用することによってソフトウェア完全性保護が実行されるソフトウェアパッケージの場合、ユーザにソフトウェア完全性検証の二重の信頼できる基盤を提供するために、製造業者によって提供された鍵に基づいてソフトウェアパッケージに対して署名検証を実行できるだけでなく、ユーザによって提供された鍵に基づいてソフトウェアパッケージに対して署名検証を実行することもでき、したがってソフトウェア完全性検証がより信頼できるものになり、ユーザは、製造業者を完全に信頼して依存する必要がなくなる。これにより、ユーザの信頼の問題が解決し、それによってデバイスを使用するユーザエクスペリエンスが向上する。
第2の態様の可能な実装形態では、第2のデバイスのソフトウェア完全性検証メカニズムを構成するために、第2のデバイスにおいて、スイッチングイネーブルビットおよびデュアルルートイネーブルビットがさらに構成され得る。第2のデバイスにおいて第2のソフトウェアパッケージに対してソフトウェア完全性検証が実行される場合、一例では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、第2の態様におけるステップ2は、具体的には以下を含み得る。第2のデバイスは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証し、第1の署名検証結果は、第1の署名が有効かどうかを表すために使用され、第2のデバイスは、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証し、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用され、第2のデバイスは、第1の署名検証結果および第2の署名検証結果に基づいて検証結果を生成し得、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表し、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。別の例では、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、第2の態様におけるステップ2は、具体的には、以下をさらに含み得る。第2のデバイスは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証し、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用され、第2のデバイスは、第1の署名検証結果に基づいて検証結果を生成し得、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。さらに別の例では、第1のデバイスにおけるスイッチングイネーブルビットが無効であり、第1のデバイスにおけるデュアルルートイネーブルビットが無効である場合、第2の態様におけるステップ2は、具体的には以下をさらに含み得る。第2のデバイスは、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証し、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用され、第2のデバイスは、第2の署名検証結果に基づいて検証結果を生成し得、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。このようにして、2つのイネーブルビットの値は第2のデバイスにおいて構成され、ユーザは実際の要件に基づいて対応する署名検証メカニズムを有効にし得る。これにより、第2のデバイスのソフトウェアにおけるソフトウェア完全性検証の柔軟性が向上し、第2のデバイスを使用するユーザエクスペリエンスが向上する。
第2の態様のいくつかの他の可能な実装形態では、第2のソフトウェアパッケージは、第1のファームウェアおよび第2のファームウェアを含む。
一例では、第1のファームウェアが、第2のデバイスのboot中にロードされるソフトウェアファームウェアの第1の部分(the first piece of software firmware)である場合、このアプリケーションのこの実施形態は、以下を含み得る。第2のデバイスにおける信頼のbootルートは、第1のルート証明書から第2のユーザの公開鍵を取得し、第2のユーザの公開鍵は、信頼のbootルートにおける信頼できるユーザルートの公開鍵であり、第5の検証結果を取得するために、第2のユーザの公開鍵を使用することによって第1のファームウェアにおける第3の署名を検証し、ここで、第5の検証結果は、第1のファームウェアのソフトウェア完全性を表すために使用され、第3の署名は、第2のユーザの秘密鍵を使用することによって第1のファームウェアに対して署名動作が実行された後に取得される署名であり、第2のユーザの公開鍵は、第2のユーザの秘密鍵に対応する。場合によっては、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、本方法は、第5の検証結果が第3の署名は有効であることを表す場合、第1のファームウェアが有効であると決定し、第1のファームウェアをロードするステップをさらに含む。別の場合では、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、本方法は、さらに以下を含む。第2のデバイスの信頼のbootルートは、第2のルート証明書から第2の製造業者の公開鍵を取得し、第2の製造業者の公開鍵は、信頼のbootルート内の信頼できる製造業者のルート公開鍵であり、第6の検証結果を取得するために、第2の製造業者の公開鍵を使用することによって、第1のファームウェアにおける第4の署名を検証し、第6の検証結果は、製造業者のレベルにおける第1のファームウェアのソフトウェア完全性を表すために使用され、第5の検証結果が第3の署名は有効であることを表し、第6の検証結果が第4の署名は有効であることを表す場合、第1のファームウェアが有効であると決定し、第1のファームウェアをロードする。
さらに、第1のファームウェアに対する検証は、さらに以下を含み得る。第2のデバイスにおける信頼のbootルートは第1のファームウェアを取得し、第1のファームウェアのハッシュ値を計算し、第1の比較結果を取得するために、信頼のbootルートに記憶されているハッシュ値と第1のファームウェアのハッシュ値を比較し、第1の比較結果は、第1のファームウェアのソフトウェア完全性を表すために使用され、第1の比較結果が、信頼のbootルートに記憶されたハッシュ値は第1のファームウェアのハッシュ値と一致することを表す場合、第1のファームウェアは有効であると決定し、第1のファームウェアをロードする。
別の例では、第1のファームウェアが第2のデバイスのboot中にロードされる他のソフトウェアファームウェア(ソフトウェアファームウェアの第1の部分の前にある他のファームウェア)であり、第2のファームウェアが、第1のファームウェアのロード後に検証およびロードされるファームウェアである場合、本方法は、第1のファームウェアにおける第1の証明書から第1のユーザの公開鍵を取得するステップと、第1の署名検証結果を取得するために、第1のユーザの公開鍵を使用することによって第2のファームウェアにおける第1の署名を検証するステップであって、第1の署名検証結果は、第2のファームウェアのソフトウェア完全性を表すために使用されるステップとを含み、第1の署名は、第1のユーザの秘密鍵を使用することによって第2のファームウェアに対して署名動作が実行された後に取得される署名であり、第1のユーザの公開鍵は第1のユーザの秘密鍵に対応する。場合によっては、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、第1の署名検証結果が第1の署名が有効であることを表すとき、第2のファームウェアは有効であると決定され、第2のファームウェアがロードされる。別の場合では、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、本方法は、第1のファームウェアにおける第2の証明書から第2の製造業者の公開鍵を取得するステップと、第2の検証結果を取得するために、第2の製造業者の公開鍵を使用することによって第2のファームウェアにおける第2の署名を検証するステップとをさらに含み、第2の検証結果は、第2のファームウェアのソフトウェア完全性を表すために使用され、第2の署名は、第2の製造業者の秘密鍵を使用することによって第2のファームウェアに対して署名動作が実行された後に取得される署名であり、第2の製造業者の公開鍵は第2の製造業者の秘密鍵に対応し、第1の署名検証結果が第1の署名は有効であることを表し、第2の検証結果が第2の署名は有効であることを表す場合、第2のファームウェアは有効であると決定し、第2のファームウェアをロードする。このようにして、ソフトウェアファームウェアの第1の部分以外のファームウェアについては、ソフトウェアパッケージにおけるすべてのファームウェアがロードされるか、特定のファームウェア(a specific piece of firmware)のソフトウェア完全性検証が失敗するまで、前述の方法を使用することによってソフトウェア完全性検証が実行される。
第2の態様の他のいくつかの可能な実装形態において、第1の署名および第2の署名が、セカンダリ秘密鍵を使用することによって署名動作が実行された後に得られる署名であり、第2のデバイスに事前に記憶されている第1の公開鍵および第2の公開鍵もまたセカンダリ公開鍵である場合、各署名が検証される前に、本出願のこの実施形態は、以下の2つのステップをさらに含み得る。ステップ1:flashメモリから元のルート公開鍵を読み取り、元のルート公開鍵のハッシュ値を計算し、ハッシュ値がプライマリ公開鍵の値と一致しているかどうかを検証し、ハッシュ値がプライマリ公開鍵の値と一致している場合、プライマリ公開鍵が有効であると決定する。ステップ2:証明書を読み取り、プライマリ公開鍵を処理することによって取得したセカンダリ公開鍵を使用することによって証明書に対して署名検証を実行し、署名検証が成功した場合は、証明書に事前に記憶されているセカンダリ公開鍵は有効であると決定し、セカンダリ公開鍵を使用することによってソフトウェアパッケージを検証する。このようにして、第2のデバイスにロードされる第2のソフトウェアパッケージに対してソフトウェア完全性検証を実行できるだけでなく、元のルート秘密鍵が公開される回数を減らすことができ、それによって、第2のデバイスのセキュリティと信頼性が向上する。さらに、SoCのストレージスペースも節約することができる。
第2の態様の他のいくつかの可能な実装形態では、本出願のこの実施形態では、第2の公開鍵は、代替でコードセグメントから抽出され、単一のファイル1の形式でコードセグメント2に付加され得、すなわち、第2のデバイスの配信前に、flashメモリにおけるレイアウトは、たとえば、「ヘッダファイル+コードセグメント2+ファイル1」として表され得る。このようにして、第2のデバイスの使用中にデュアル署名検証メカニズムが有効になっている場合、第1の公開鍵を記憶するためにファイル2のみをflashメモリに個別に追加する必要がある。この場合、flashメモリにおけるレイアウトは、たとえば、「ヘッダファイル+コードセグメント2+ファイル1+ファイル2」として表され得る。このようにして、ユーザの署名検証メカニズムにおける変更に起因する作業の困難さが大幅に軽減され、第2のデバイスを使用するユーザエクスペリエンスが向上する。
第3の態様によれば、本出願の実施形態は、ソフトウェア完全性保護装置をさらに提供する。装置は第1のデバイスにおいて使用され、装置は、取得ユニットおよび署名ユニットを含む。取得ユニットは、第1のソフトウェアパッケージを取得するように構成され、第1のソフトウェアパッケージは、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのためにファーストパーティによって作成された第1の署名を含む。署名ユニットは、第2の署名を含む第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作を実行するように構成され、第1の秘密鍵は、ファーストパーティによって制御され、第2の秘密鍵はセカンドパーティによって制御される。
ファーストパーティは第2のソフトウェアパッケージのユーザであり、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。
可能な実装形態において、装置は、送信ユニットをさらに含む。送信ユニットは、第3のソフトウェアパッケージを第2のデバイスに送信するように構成されている。
別の可能な実装形態では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、第1の署名および第2の署名が両方とも有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、第1の署名が有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、第2の署名が有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。
第3の態様において提供される装置は、第1の態様における動作を実行するように構成されることに留意されたい。装置の特定の実装形態および達成された効果については、第1の態様における関連する説明を参照されたい。詳細については、本明細書では再度説明しない。
第4の態様によれば、本出願の実施形態は、ソフトウェア完全性検証装置をさらに提供する。装置は第2のデバイスにおいて使用され、装置は取得ユニットおよび検証ユニットを含む。取得ユニットは第1のソフトウェアパッケージを取得するように構成され、第1のソフトウェアパッケージは、第1の署名、第2の署名、および第2のソフトウェアパッケージを含む。検証ユニットは、検証結果を取得するために、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ第1の署名と第2の署名を検証するように構成され、第1の公開鍵はファーストパーティによって制御され、第2の公開鍵はセカンドパーティによって制御される。
可能な実装形態では、第1の署名は、ファーストパーティによって制御される第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行することによって取得され、第1の署名と第2のソフトウェアパッケージは、第3のソフトウェアパッケージに含まれており、第2の署名は、セカンドパーティによって制御される第2の秘密鍵を使用することによって第3のソフトウェアパッケージに対して署名動作を実行することによって取得され、第1の秘密鍵は第1の公開鍵と一致し、第2の秘密鍵は第2の公開鍵と一致する。
ファーストパーティは第2のソフトウェアパッケージのユーザであり、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。
別の可能な実装形態では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、検証ユニットは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証するように構成され、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される、第1の検証サブユニットと、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証するように構成され、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される、第2の検証サブユニットと、第1の署名検証結果および第2の署名検証結果に基づいて検証結果を生成するように構成された第1の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表し、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第1の生成サブユニットとを含む。あるいは、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、検証ユニットは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証するように構成され、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される、第3の検証サブユニットと、第1の署名検証結果に基づいて検証結果を生成するように構成された第2の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第2の生成サブユニットとを含む。あるいは、第のデバイスにおけるスイッチングイネーブルビットが無効であり、第1のデバイスにおけるデュアルルートイネーブルビットが無効である場合、検証ユニットは、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証するように構成され、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される、第4の検証サブユニットと、第2の署名検証結果に基づいて検証結果を生成するように構成された第3の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第3の生成サブユニットとを含む。
第4の態様において提供される装置は、第2の態様における動作を実行するように構成されることに留意されたい。装置の特定の実装形態および達成された効果については、第2の態様における関連する説明を参照されたい。詳細については、本明細書では再度説明しない。
第5の態様によれば、本出願の実施形態は、デバイスをさらに提供する。デバイスは、メモリおよびプロセッサを含む。メモリはプログラムコードを記憶するように構成されている。プロセッサは、デバイスが、第1の態様または第2の態様の実装形態のうちのいずれか1つにおいて方法を実行できるように、プログラムコードまたはプログラム内の命令を実行するように構成されている。
第6の態様によれば、本出願の一実施形態は、コンピュータ可読ストレージ媒体をさらに提供する。コンピュータ可読ストレージ媒体は、プログラムコードまたは命令を記憶する。プログラムコードまたは命令がコンピュータ上で実行されるとき、コンピュータは、第1の態様または第2の態様の実装形態のうちのいずれか1つにおいて方法を実行することが可能になる。
第7の態様によれば、本出願の実施形態は、ネットワークシステムをさらに提供する。ネットワークシステムは、第3の態様において提供されるソフトウェア完全性保護と、第4の態様において提供されるソフトウェア完全性検証装置とを含む。
いくつかの実施形態では、ファーストパーティCA、たとえば、サーバは、ソフトウェアパッケージにデジタル証明書を発行し得る。セカンドパーティまたはサードパーティのCAは、デジタル証明書を発行するように構成されたサーバの場合もある。
本出願の実施形態の技術的解決策をより明確に説明するために、以下は、実施形態を説明するための添付の図面を簡単に説明する。以下の説明の添付の図面は、本出願のいくつかの実施形態を示しているにすぎず、当業者は、これらの添付の図面から他の図面を導き出すことができることは明らかである。
本出願の実施形態による、アプリケーションシナリオにおけるネットワークシステムフレームワークの概略図である。 本出願の実施形態による、ソフトウェア完全性保護方法の概略フローチャートである。 本出願の実施形態による、第2のソフトウェアパッケージに対して署名動作を実行することによって第1のソフトウェアパッケージを取得する概略図である。 本出願の実施形態による、第1のソフトウェアパッケージに対して署名動作を実行することによって第3のソフトウェアパッケージを取得する概略図である。 本出願の実施形態による、ソフトウェア完全性検証方法の概略フローチャートである。 本出願の実施形態による、第1のデバイスの概略図である。 本出願の実施形態による、ソフトウェア完全性検証のためのシナリオの概略図である。 本出願の実施形態による、ソフトウェア完全性検証の例の概略フローチャートである。 本出願の実施形態による、ソフトウェア完全性検証の例の概略フローチャートである。 本出願の実施形態による、ソフトウェア完全性検証の別の例の概略フローチャートである。 本出願の実施形態による、ソフトウェア完全性検証のための別のシナリオの概略図である。 本出願の実施形態による、ソフトウェア完全性検証の別の例の概略フローチャートである。 本出願の実施形態による、ソフトウェア完全性保護装置の概略構造図である。 本出願の実施形態による、ソフトウェア完全性検証装置の概略構造図である。 本出願の実施形態による、デバイスの概略構造図である。 本出願の実施形態による、ネットワークシステムの概略構造図である。
デジタル署名は通常、ソフトウェアパッケージやメッセージなどのデジタルダイジェストに署名するために使用される鍵と、ソフトウェアパッケージやメッセージなどの署名を検証するために使用される鍵とのペアを含む。一例では、ソフトウェアパッケージXのデジタル署名プロセスは、以下の2つのプロセスを含み得ると仮定される。第1のプロセスは、ソフトウェアパッケージXのデジタルダイジェストに署名することに対応する。具体的には、ソフトウェアパッケージXをデバイスYにダウンロードする前に、ハッシュアルゴリズムを使用することによってXのデジタルダイジェストX1が第1に取得され、次いで秘密鍵aを使用してdigest X1に署名することによってdigestEncode X1が取得される。ソフトウェアパッケージXがデバイスYにダウンロードされると、XとdigestEncode X1がデバイスYに送信される。第2のプロセスは、ソフトウェアパッケージXの署名の検証に対応する。具体的には、ソフトウェアパッケージXをロードする前に、デバイスYは、Xの署名に使用されるものと同じハッシュアルゴリズムを使用することによってデジタルダイジェストdigest X2を第1に生成し、次いで、digestDecode X3を取得するために、公開鍵Aを使用することによってdigestEncode X1を検証し、digestDecode X3=digest X2である場合、ソフトウェアパッケージXが改ざんされておらず、合法的な製造業者によってリリースされていると決定し得る。したがって、デバイスYにロードされたソフトウェアパッケージXは安全で信頼できることが保証される。秘密鍵aと公開鍵Aは、デバイスAの製造業者から提供された鍵のペアである。公開鍵Aは公開アクセス可能であり、秘密鍵aは機密情報であり、製造業者に対応する署名システムによってのみアクセス可能である。たとえば、製造業者に対応する署名システムは、製造業者の認証局(英語:Certificate Authority、略してCA)サーバであり、CAサーバは、製造業者に対応するデバイスにダウンロードされるソフトウェアパッケージに署名する。
デジタル署名技術は、デジタルダイジェスト技術と公開鍵および秘密鍵の技術の組合せと見なされ得ることが理解されよう。ソフトウェアパッケージが改ざんされているかどうかは、デジタルダイジェスト技術を使用することによって検証され得、デジタルダイジェストが有効であるかどうかは、公開鍵および秘密鍵の技術を使用することによって検証され得る。デジタル署名技術は、ソフトウェアパッケージの高速で包括的なソフトウェア完全性保護と検証を提供する技術である。
現在、ソフトウェア完全性保護と検証は、製造業者の鍵(製造業者によって提供された公開鍵と秘密鍵を含む)を使用することによってソフトウェアパッケージに実装されている。一方で、特定の実装形態中に、製造業者の署名システムは、製造業者によって提供された秘密鍵を使用することによってソフトウェアパッケージに署名し、製造業者は、秘密鍵に対応する公開鍵を事前に記憶する。この場合、署名されたソフトウェアパッケージがデバイスにロードされる前に、ソフトウェアパッケージの署名を検証するために、事前に記憶された公開鍵が使用され得る。このようにして、デバイスにおいて実行されるソフトウェアパッケージのソフトウェア完全性は、製造業者によって提供された鍵を使用することによって保証される。デバイスにおいて実行されるソフトウェアのセキュリティと信頼性はある程度保証できるが、デバイスを使用するユーザは、製造業者を完全に信頼し、依存する必要がある。製造業者によって提供された鍵が無効である場合、ソフトウェア完全性保護と検証をデバイスに実装することができず、ユーザの信頼の問題を解決することができない。すなわち、ユーザは、製造業者によって提供された鍵がないと、ユーザによって購入されたデバイスにおけるソフトウェアを個別にアップグレードおよび維持することができず、デバイスを使用するユーザエクスペリエンスに影響を及ぼす。
これを考慮して、本出願の実施形態は、ソフトウェア完全性保護方法およびソフトウェア完全性検証方法を提供する。デバイス1は、デバイス1が属する製造業者によって提供される第1の公開鍵と、デバイス1に対応するユーザAによって提供される第2の公開鍵とを記憶し得る。デュアル鍵は、ユーザによって購入されたデバイスにセキュリティ保証を提供し、それによってユーザの信頼の問題を解決し、デバイスを使用するユーザエクスペリエンスを向上させる。
一方では、ソフトウェア完全性保護プロセスは、署名aを含むソフトウェアパッケージ2を取得するために、ユーザの署名システム1において、第2の公開鍵に対応する第2の秘密鍵を使用することによってソフトウェアパッケージ1に署名することと、ソフトウェアパッケージ2がデバイス1にダウンロードされる前に、署名aおよび署名bを含むソフトウェアパッケージ3を取得するために、製造業者の署名システム2において、第1の公開鍵に対応する第1の秘密鍵を使用することによってソフトウェアパッケージ2に署名することとを含み得る。このようにして、ソフトウェアパッケージは、製造業者によって提供された鍵に基づいて署名できるだけでなく、ソフトウェアパッケージは、ユーザによって提供された鍵に基づいて署名することもでき、ユーザによって提供された鍵は、ユーザにとって絶対的に信頼できるものである。すなわち、本出願の実施形態は、製造業者を完全に信頼または依存することなく、ユーザによって信頼され得るソフトウェア完全性保護方法を提供する。これにより、ユーザの信頼の問題が解決し、それによってデバイスを使用するユーザエクスペリエンスが向上する。
他方、前述の実施形態において署名されたソフトウェアパッケージ3の場合、ソフトウェアパッケージ3がデバイス1にロードされる前に、ソフトウェアパッケージ3に対してソフトウェア完全性検証を実行するプロセスは、以下を含み得る。デバイス1は、署名検証結果1を取得するために、デバイス1に記憶されている第1の公開鍵に基づいてソフトウェアパッケージ3の署名bを検証し、デバイス1は、署名検証結果2を取得するために、デバイス1に記憶されている第2の公開鍵に基づいてソフトウェアパッケージ3の署名aを検証する。デバイス1は、署名検証結果1および署名検証結果2に基づいて検証結果を生成し得、検証結果は、ソフトウェアパッケージ1のソフトウェア完全性を表すために使用され、署名検証結果1と検証結果2の両方が、対応する署名が有効であることを表す場合、検証結果は、ソフトウェアパッケージ1に対するソフトウェア完全性検証が成功したことを表すために使用され、または署名検証結果1と検証結果2のうちの少なくとも1つが、対応する署名が無効であることを表す場合、検証結果は、ソフトウェアパッケージ1に対するソフトウェア完全性検証が失敗したことを表すために使用される。このようにして、製造業者とユーザによって提供される鍵を使用することによってソフトウェア完全性保護が実行されるソフトウェアパッケージについては、製造業者によって提供される鍵に基づいてソフトウェアパッケージに対して署名検証を実行することができるだけでなく、製造業者を完全に信頼して依存することなく、ユーザによって提供される鍵に基づいてソフトウェアパッケージに対して署名検証を実行することもできる。これにより、ユーザの信頼の問題が解決され、ユーザにとってソフトウェア完全性検証の二重の信頼できる基盤が提供されるため、ソフトウェア完全性検証の信頼性が高まり、それによってデバイスを使用するユーザエクスペリエンスが向上する。
たとえば、本出願の実施形態におけるシナリオの1つは、図1に示されるシナリオであり得る。図1は、デバイス100のbootプロセスにおいて実行されるソフトウェアパッケージ200に対するソフトウェア完全性保護の概略図である。シナリオには、デバイス100、製造業者署名システム300、およびユーザ署名システム400が含まれる。製造業者署名システム300は、ソフトウェアパッケージ200に署名し、製造業者公開鍵1を提供するために、デバイス100のために製造業者によって提供される鍵1(公開鍵1および秘密鍵1を含む)を生成する。ユーザ署名システム400は、ソフトウェアパッケージ200に署名し、ユーザ公開鍵2を提供するために、デバイス100のためにユーザによって提供される鍵2(公開鍵2および秘密鍵2を含む)を生成する。製造業者署名システム300(たとえば、CAサーバ)は、製造業者公開鍵1およびユーザ公開鍵2を受け取り、製造業者公開鍵1およびユーザ公開鍵2を、デバイス100に含まれるステムオンチップ(英語:System on Chip、略してSoC)110に事前に焼き付けるようにさらに構成される。デバイス100は、具体的には、ルータまたはスイッチなどのネットワークデバイスであり得る。デバイス100上のSoC110はハードウェアであり、オンチップboot媒体(英語:BootoROM)111は、SoC110上のセキュリティサブシステムに統合され得る。BootROM111は、デバイス100の電源がオンになったときに、ソフトウェアパッケージ200に対するソフトウェア完全性検証を最初に開始するように構成されている。
デバイス100のデバイス製造業者は、デバイス100を提供する一方で、デバイス100上にソフトウェアパッケージ200を提供し、すなわち、デバイス製造業者とソフトウェア製造業者は同一のパーティである場合があることに留意されたい。この場合、製造業者署名システム300は、デバイス製造業者およびソフトウェア製造業者に共同で対応する署名システムであり得る。別の場合では、デバイス100のデバイス製造業者は、デバイス100にソフトウェアパッケージ200を提供せず、ソフトウェアパッケージ200は、独立したソフトウェア製造業者によって提供される。この場合、製造業者署名システム300は、ソフトウェア製造業者に対応する署名システム、またはソフトウェアパッケージ200を提供するサードパーティのデジタル認証局であり得る。
一例では、ソフトウェアパッケージ200に対するソフトウェア完全性保護を実行するプロセスは、たとえば、2つの署名を伴う(carry)ソフトウェアパッケージ200’を取得するために、ソフトウェア製造業者またはサードパーティプラットフォームに対応するサーバからソフトウェアパッケージ200を取得することと、ユーザ署名システム400における秘密鍵2を使用することによってソフトウェアパッケージ200に署名することと、製造業者署名システム300における秘密鍵1を使用することによってソフトウェアパッケージ200に署名することとであり得る。この場合、デバイス100によって要求されるとき、ソフトウェアパッケージ200’は、デバイス100、たとえば、デバイス100のflashメモリ(英語:Flash Memory)にダウンロードされ得る。
別の例では、デバイス100の電源がオンになっている場合、ソフトウェアパッケージ200の実行を開始する前にソフトウェアパッケージ200に対してソフトウェア完全性検証を実行するプロセスは、たとえば、以下のようになり得る。デバイス100のBootROM111は、検証結果を取得するために、SoC110に記憶されている公開鍵1および公開鍵2にそれぞれ基づいて、ソフトウェアパッケージ200’の2つの署名を検証し得る。検証結果が、ソフトウェアパッケージ200’の両方の署名が有効であることを表す場合、デバイス100は、ソフトウェアパッケージ200が改ざんされておらず、合法的なソフトウェア製造業者によって提供されていると決定し、デバイス100は、ソフトウェアパッケージ200をロードする。
公開鍵1および公開鍵2は、SoC110のワンタイムプログラマブルメモリ(英語:One-Time Programmable、略してOTP)、たとえば、電気ヒューズ(英語:electrical FUSE、略してeFuse)に記憶され得ることが理解されよう。eFuseに焼き付けられたコンテンツは変更できないため、公開鍵1と公開鍵2をeFuseに確実かつ安全に記憶することができる。
公開鍵1および公開鍵2は、SoC110に独立して記憶されてもよく、公開鍵1および公開鍵2に対応するルート証明書1およびルート証明書2にそれぞれ記憶されてもよく、公開鍵1および公開鍵2は、それぞれルート証明書1およびルート証明書2から読み取られることに留意されたい。
本シナリオは、本出願の実施形態において提供される単なるシナリオ例であるが、本出願の実施形態は、本シナリオに限定されないことが理解されよう。
添付の図面を参照して、以下は、実施形態を使用することによって、本出願の実施形態におけるソフトウェア完全性保護方法およびソフトウェア完全性検証方法の特定の実装形態を詳細に説明する。
図2は、本出願の実施形態による、ソフトウェア完全性保護方法の概略フローチャートである。本方法は、第2のソフトウェアパッケージに対応する製造業者署名システムに適用されてもよく、第2のデバイスを使用するユーザが属するユーザ署名システムに適用されてもよい。たとえば、図1に示されるシナリオの場合、この実施形態は、製造業者署名システム300またはユーザ署名システム400によって実行され得る。署名システムは、証明書発行システムとも呼ばれ、署名システムに記憶されている秘密鍵を使用することによって、保護対象のソフトウェアパッケージまたはファイルに対して署名動作を実行するように構成されており、具体的には、たとえばCAサーバであり得る。製造業者署名システムは、ソフトウェア製造業者によって提供および維持される署名環境を指し、ユーザ署名システムは、ユーザによって提供および維持される別の署名環境を指す。
図2を参照する。この実施形態では、第2のデバイスにインストールされる第2のソフトウェアパッケージに対するソフトウェア完全性保護のための方法を説明するために、第2のソフトウェアパッケージに対応する製造業者署名システム(以下、第1のデバイスとして示される)を例として使用する。本方法は、具体的には次のステップ201およびステップ202を含み得る。
ステップ201:第1のデバイスは、第1のソフトウェアパッケージを取得し、第1のソフトウェアパッケージは、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのためにファーストパーティによって作成された第1の署名を含む。
第2のソフトウェアパッケージは、ソフトウェア製造業者によって提供され、ユーザの特定の要件を満たすことができるソフトウェアパッケージであり、第2のソフトウェアパッケージは、ソフトウェア製造業者のサーバまたはサードパーティのサーバに記憶され得ることが理解されよう。ユーザは、ソフトウェア製造業者のサーバに対応するウェブページ、サードパーティのサーバに対応するソフトウェアストア、あるいは別の信頼できるデバイスまたはシステムから第2のソフトウェアパッケージを取得し得る。
第1のソフトウェアパッケージは、第2のデバイスのユーザ(すなわち、ファーストパーティ)に対応するユーザ署名システムが、ユーザによって提供された第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行した後に取得されるソフトウェアパッケージである。第1のソフトウェアパッケージは、第1の署名および第2のソフトウェアパッケージを含み得る。第1の署名は、第2のソフトウェアパッケージに対応し、第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作が実行された後に取得される署名であり、第1の署名は、第2のソフトウェアパッケージに対する後続のソフトウェア完全性検証に使用される。第2のソフトウェアに対する署名動作については、前述のデジタル署名技術の説明を参照されたい。詳細については、本明細書では再度説明しない。
特定の実装形態中に、ユーザが第2のソフトウェアパッケージを第2のデバイスにダウンロードする必要がある場合、第2のソフトウェアパッケージに対してソフトウェア完全性保護を実行するために、すなわち、ダウンロードされた第2のソフトウェアパッケージが改ざんされておらず、信頼できるソースを有していることを保証するために、ステップ201の前に、ユーザ署名システムは、第1の署名を含む第1のソフトウェアパッケージを取得するために、第1に第2のソフトウェアパッケージを取得し、ユーザによって提供された第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行する。一例では、ユーザ署名システムは、第1のソフトウェアパッケージをサードパーティ管理プラットフォームに送信し得る。この場合、ステップ201は、具体的には次のようになり得る。第2のソフトウェアパッケージの製造業者に対応する製造業者署名システム(すなわち、第1のデバイス)は、サードパーティ管理プラットフォームから第1のソフトウェアパッケージを取得する。別の例では、ユーザ署名システムは、第1のソフトウェアパッケージを第1のデバイスに直接送信し得る。言い換えれば、ステップ201は、具体的には次のようになり得る。第1のデバイスは、ユーザ署名システムから第1のソフトウェアパッケージを直接取得する。
いくつかの可能な実装形態では、第2のソフトウェアパッケージは複数のbootを含み得、bootは、第2のソフトウェアパッケージが実行されるときのロードシーケンスに基づいて異なるレベルに分類される。具体的には、ファーストパーティは、複数の第1の秘密鍵を使用することによって、第2のソフトウェアパッケージ内のbootに対して個別に署名動作を実行し得、それに応じて、bootごとに1つの第1の署名が取得される。複数の第1の秘密鍵は、同じであってもよく、異なっていてもよい。一例では、第1の秘密鍵が同じである場合、各bootは第1の証明書を含み得、bootの次のレベルのbootにおいて署名検証動作を実行するために、第1の秘密鍵と一致する第1の公開鍵が第1の証明書から取得され得る。さらに、スペースを節約するために、各bootは第1の証明書を含まない場合があり、bootごとに、第1のデバイスに事前に記憶されている第1の公開鍵を使用することによって署名検証が実行され得る。別の例では、第1の秘密鍵が異なる場合、すなわち、ユーザが複数の鍵のグループを提供し、異なる鍵における第1の秘密鍵が異なるbootに署名するために使用される場合、各bootは第1の証明書を含み、第1の公開鍵は第1の証明書から取得され得る。第1の公開鍵は、次のレベルのbootにおいて署名動作を実行するために使用される第1の秘密鍵と一致し、第1の公開鍵は、次のレベルのbootの第1の署名の有効性を検証するために使用される。
第1のソフトウェアパッケージにおける各レベルのbootは、対応する第1の署名を伴う場合があり、最後のboot以外の他のbootもそれぞれ第1の証明書を伴う場合があることに留意されたい。
たとえば、図3は、第1のソフトウェアパッケージの概略図である。図3を例として使用する。第2のソフトウェアパッケージがL1 boot、L2 boot、およびL3 bootを含むと仮定すると、ユーザ署名システムは、署名11、署名12、および署名13を取得するために、秘密鍵11、秘密鍵12、および秘密鍵13を使用することによって、それぞれ3つのbootに対して署名動作を実行し得る。L1 bootは証明書1をさらに含み得、秘密鍵12と一致する公開鍵12は証明書1から取得され得る。同様に、L2 bootは証明書2をさらに含み得、秘密鍵13と一致する公開鍵13は証明書2から取得され得る。さらに、秘密鍵11と一致する公開鍵11は、ユーザルート公開鍵としてさらに使用され得、その後の署名検証に使用するために、第1のデバイスに事前に記憶される。
このようにして、ソフトウェア完全性検証が後で実行されるソフトウェアパッケージは、ユーザによって提供されたキーに基づいて署名動作が実行された後に取得されるソフトウェアパッケージであることが保証され、ユーザは、ソフトウェアパッケージの製造業者を完全に信頼して依存する必要がないため、ユーザによって絶対的に信頼され得るソフトウェア完全性保護方法を提供することが可能である。
ステップ202:第1のデバイスは、第2の署名を含む第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作を実行し、第1の秘密鍵は、ファーストパーティによって制御され、第2の秘密鍵はセカンドパーティによって制御される。
第3のソフトウェアパッケージは、第1のデバイスが、第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局(つすなわち、セカンドパーティ)によって提供された第2の秘密鍵を使用することによって、取得された第1のソフトウェアパッケージに対して署名動作を実行した後に取得されるソフトウェアパッケージであることが理解されよう。第3のソフトウェアパッケージは、第2の署名および第1のソフトウェアパッケージを含み得るか、または第3のソフトウェアパッケージは、第1の署名、第2の署名、および第2のソフトウェアパッケージを含むと見なされ得る。第2の署名は、第1のソフトウェアパッケージの署名であり、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作が実行された後に取得され、第2の署名は第2のソフトウェアパッケージに対する後続のソフトウェア完全性検証に使用される。第1のソフトウェアパッケージに対する署名動作については、前述のデジタル署名技術の説明を参照されたい。詳細については、本明細書では再度説明しない。
いくつかの可能な実装形態では、第2のソフトウェアパッケージが複数のbootを含む例が使用される。第1のデバイスは、複数の第2の秘密鍵を使用することによって、第2のソフトウェアパッケージにおけるbootに対して個別に署名動作を実行し得、それに応じて、各bootに対して1つの第2の署名が取得される。複数の第2の秘密鍵は、同じであってもよく、異なっていてもよい。一例では、第2の秘密鍵が同じである場合、各bootは第2の証明書を含み得、bootの次のレベルのbootにおいて署名検証動作を実行するために、第2の秘密鍵と一致する第2の公開鍵が第2の証明書から取得され得る。さらに、スペースを節約するために、各bootは第2の証明書を含まない場合があり、bootごとに、第2のデバイスに事前に記憶されている第2の公開鍵を使用することによって署名検証が実行され得る。別の例では、第2の秘密鍵が異なる場合、すなわち、ソフトウェア製造業者が複数の鍵のグループを提供し、異なる鍵における第2の秘密鍵が異なるbootに署名するために使用される場合、各bootは第2の証明書を含み、第2の公開鍵は第2の証明書から取得され得る。第2の公開鍵は、次のレベルのbootにおいて署名動作を実行するために使用される第2の秘密鍵と一致し、第2の公開鍵は、次のレベルのbootの第2の署名の有効性を検証するために使用される。
第3のソフトウェアパッケージにおける各レベルのbootは、対応する第1の署名および対応する第2の署名を伴う場合があり、最後のboot以外の他のbootもそれぞれ第1の証明書と第2の証明書を伴う場合があることに留意されたい。
たとえば、図4は、第3のソフトウェアパッケージの概略図である。ステップ201において取得された第1のソフトウェアパッケージは図3に示されているものであると仮定すると、第1のデバイスは、署名21、署名22、および署名23を取得するために、秘密鍵21、秘密鍵22、および秘密鍵23を使用することによって、3つのbootに対してそれぞれ署名動作を実行し得る。L1 bootは、証明書1’をさらに含み得、秘密鍵22と一致する公開鍵22は、証明書1’から取得され得る。同様に、L2 bootは、証明書2’をさらに含み得、秘密鍵23と一致する公開鍵23は、証明書2’から取得され得る。さらに、秘密鍵21と一致する公開鍵21は、製造業者のルート公開鍵としてさらに使用され得、その後の署名検証に使用するために、第1のデバイスに事前に記憶される。
第2のソフトウェアパッケージに対してデュアル署名動作が実行された後、第3のソフトウェアパッケージが第2のデバイスにダウンロードされる前に、第3のソフトウェアパッケージは、第1のデバイスを使用することによって全体として署名され得るので、続いて第3のソフトウェアパッケージをダウンロードした後、第2のデバイスは、最初に第3のソフトウェアパッケージ全体に対する署名検証に成功し、第3のソフトウェアパッケージの全体的なソフトウェア完全性が有効であるかどうかを決定することが理解されよう。
いくつかの可能な実装形態では、第1の秘密鍵、第2の秘密鍵、第1の公開鍵、および第2の公開鍵は、ユーザによって提供された鍵および製造業者によって提供された鍵が処理された後に得られる鍵であり得、処理された鍵を使用することによってソフトウェアパッケージに対して署名動作および署名検証動作が実行され、元の秘密鍵(以下、プライマリ秘密鍵と呼ばれる)が公開される回数を効果的に減らすことができ、ソフトウェアパッケージのセキュリティを改善することができる。例として、第1の秘密鍵および第1の公開鍵が使用されていることが理解され得る。第1の秘密鍵が、プライマリ秘密鍵が処理された後に取得された秘密鍵である場合、第1の秘密鍵と一致する第1の公開鍵を取得するために、プライマリ秘密鍵と一致するプライマリ公開鍵も処理される必要がある。
さらに、本出願のこの実施形態では、ルート公開鍵は、セキュアハッシュアルゴリズム(英語:Secure Hash Algorithm、略してSHA)(たとえば、SHA256)を使用することによってさらに処理され得る。このようにして、第2のデバイスのハードウェアレジスタに記憶する必要のあるルート公開鍵の場合、4096ビットのルート公開鍵が256ビットのプライマリ公開鍵に変換され得、それによって、第2のデバイスのハードウェアストレージリソースを大幅に節約できる。セカンダリ秘密鍵はプライマリ秘密鍵を処理することによって取得され、セカンダリ秘密鍵はセカンダリ公開鍵を含む証明書に対する署名動作を実行するために使用される。証明書の有効性が検証される必要がある場合、プライマリ公開鍵に対応するセカンダリ公開鍵を取得するために、プライマリ公開鍵が処理され得る。セカンダリ公開鍵は、証明書の有効性と証明書におけるセカンダリ公開鍵の有効性を決定するために、証明書の署名に対して署名検証動作を実行するために使用され得る。
ユーザは、デバイスの製造またはデバイスの使用のプロセスにおいて、実際の要件に基づいて、デュアル署名許可およびデュアル署名検証許可を有効にするように要求し得ることに留意されたい。ユーザがデュアル署名許可およびデュアル署名検証許可を有する場合、ソフトウェア完全性保護は、この実施形態を使用することによって実行され得る。あるいは、ユーザは、実際の要件に基づいて、ユーザ署名許可およびユーザ署名検証許可を有効にするように要求し得る。ユーザがユーザ署名許可およびユーザ署名検証許可を有する場合、ある意味で、ソフトウェア完全性保護は、この実施形態を使用することによって実行され得、別の方法ではステップ202を実行することなく、第1の署名を含む第1のソフトウェアパッケージを取得するために、第1の秘密鍵のみを使用することによって第2のソフトウェアパッケージに対して署名動作が代替で実行され得る。
本出願この実施形態は、代替で、ユーザ署名システムによって実行され得ることに留意されたい。この場合、ファーストパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局であり得、セカンドパーティは第2のソフトウェアパッケージのユーザであり得る。概念の特定の実装形態および関連する説明については、前述の実施形態における関連する説明を参照されたい。
このように、本出願のこの実施形態において提供されるソフトウェア完全性保護方法によれば、信頼できるデュアル署名メカニズムをソフトウェアパッケージに提供し、その後のソフトウェア完全性検証のためのデュアルデータベースも提供するために、ソフトウェアパッケージは製造業者によって提供された鍵に基づいて署名できるだけでなく、ソフトウェアパッケージはユーザによって提供された鍵に基づいて署名することもでき、したがって、ユーザは、製造業者を完全に信頼して依存する必要がなくなる。これにより、ユーザの信頼の問題が解決し、それによってデバイスを使用するユーザエクスペリエンスが向上する。
図2に示される前述の実施形態に従って、第2のソフトウェアパッケージに対してデュアル署名動作が実行された後、そして以下の図3に従って、ソフトウェアパッケージに対してソフトウェア完全性検証が実行される前に、一方では、第1の公開鍵および第2の公開鍵は第2のデバイスのSoCに記憶され得、他方では、第2のデバイスは、デュアル署名検証許可を有するデュアル署名検証デバイスのリストを記憶する。
第2の公開鍵は、第2のデバイスが製造されるときに第2のデバイスのSoCに記憶される公開鍵であり得る。さらに、第2のデバイスを配信する前に、第1の公開鍵、デュアルルートイネーブルビット、およびスイッチングイネーブルビットを記憶するためのフィールドセグメントがSoCにおいて予約され得る。第1の公開鍵は、第2のデバイスが製造されるとき、または第2のデバイスが使用されるときに、製造業者署名システムを使用することによって、ユーザ署名システムによって第2のデバイスに送信され得、第2のデバイスのSoCに記憶される。セキュリティを向上させるために、ユーザ署名システムまたは製造業者署名システムは、代替で、第1の公開鍵を含むファイルに対して署名動作を実行し得、次いで、そのファイルを第2のデバイスに送信し、第2のデバイスは、署名の検証が成功した後にのみ第1の公開鍵を記憶することが理解されよう。
第2のデバイスがデュアル署名検証許可を有し、デュアルルートイネーブルビットのフィールドセグメントが第2のデバイスのSoCにおいて予約されている場合、第2のソフトウェアパッケージがロードされる前に、第2のソフトウェアパッケージに対してデュアル署名検証を実行することを示すために、デュアルルートイネーブルビットの値は有効であることが理解されよう。第2のデバイスがユーザ署名検証許可を有し、スイッチングイネーブルビットのフィールドセグメントは、第2のデバイスのSoCにおいてさらに予約され、スイッチングイネーブルビットの優先度がデュアルルートイネーブルビットの優先度よりも高く設定されている場合、第2のソフトウェアパッケージがロードされる前にユーザ鍵を使用することによって第2のソフトウェアパッケージに対して署名検証を実行することを示すために、スイッチングイネーブルビットの値は有効である。デュアルルートイネーブルビットとスイッチングイネーブルビットのフィールドセグメントは、第2のデバイスの配信時に予約されており、ビットの値は、第2のデバイスが製造または使用されるときに構成され得る。言い換えれば、ユーザは、要件に基づいて、第2のデバイスによってソフトウェア完全性検証を実行する方法を柔軟に構成し得る。
ソフトウェア製造業者(またはデバイス製造業者)の場合、デュアルルートイネーブルビット(または、スイッチングイネーブルビット)および第1の公開鍵が同じファイルに含まれている場合があり、第2のデバイスに対応する署名システム(たとえば、CAサーバ)は、ファイルに対して署名動作を実行し、次いで、ファイルを第2のデバイスに送信する。この場合、第1の公開鍵とデュアルルートイネーブルビットの値(または、スイッチングイネーブルビットの値)をファイルに記憶する前に、第2のデバイスは、ファイルの署名の検証に成功する必要があるだけでなく、第2のデバイスに対してデュアル署名検証許可が有効になっているかどうかを決定する必要もある。
第2のデバイスに対してデュアル署名検証許可が有効になっているかどうかを決定するために、デュアル署名検証デバイスリストが使用され得る。デュアル署名検証デバイスリストは、現在デュアル署名検証を実行することを許可されているデバイスを示すために使用され、デュアル署名検証を実行することを許可されている各デバイスの識別子を含み得る。具体的には、ソフトウェア製造業者は、デュアル署名検証を実行することを現在許可されているすべてのデバイスを収集することと、これらのデバイスの識別子に基づいてデュアル署名検証デバイスリストを生成することと、署名動作を実行するために、第2のデバイスに対応する署名システムにデュアル署名検証デバイスリストを送信することと、署名されたデュアル署名検証デバイスリストを取得することとを行うことができる。
特定の実装形態中に、第2のデバイスがデュアル署名検証機能を有効にする必要がある場合、第2のデバイスが第1の公開鍵とデュアルルートイネーブルビット(または、スイッチングイネーブルビット)を含むファイルを第2のデバイスに対応する署名システムからダウンロードする前に、またはダウンロードするときに、代替で、第2のデバイスは、第2のデバイスに対応する署名システムから署名されたデュアル署名検証デバイスリストをダウンロードし得る。一例では、第2のデバイスの中央処理装置(英語:Central Processing Unit、略してCPU)は、デュアル署名検証デバイスリストの署名を検証し得る。署名検証が成功した後、CPUは、第2のデバイスの識別子がデュアル署名検証デバイスリストにあるかどうかをチェックし、第2のデバイスのデバイス識別子は第2のデバイスのSoCに記憶される。場合によっては、第2のデバイスのデバイス識別子がデュアル署名検証デバイスリストに属している場合、第2のデバイスがデュアル署名検証許可を有効にすることを許可されたデバイスであると決定されてよく、CPUはデュアル署名検証メカニズムを有効にして、第1の公開鍵とデュアルルートイネーブルビット(または、スイッチングイネーブルビット)を含むファイルを第2のデバイスのセキュリティハードウェアエンジンに送信し得、セキュリティハードウェアエンジンがファイルに対して署名検証を実行し、ファイルに基づいて第2のデバイスを構成できるようにする。別の場合では、第2のデバイスのデバイス識別子がデュアル署名検証デバイスリストに属していない場合、第2のデバイスがデュアル署名検証許可を有効にすることを許可されていないと決定され得る。この場合、第1の公開鍵とデュアルルートイネーブルビット(または、スイッチングイネーブルビット)を含むファイルのダウンロードが終了されてもよく、またはファイルに基づく第2のデバイスの構成が終了される。別の例では、デュアル署名検証デバイスリストの署名の検証、第2のデバイスの識別子がデュアル署名検証デバイスリストにあるかどうかのチェック、およびデュアル署名検証メカニズムの有効化などの前述の動作はすべて、第2のデバイスのセキュリティハードウェアエンジンによって実行され得る。すなわち、セキュリティハードウェアエンジンが、第2のデバイスがデュアル署名検証許可を有効にすることを許可されていると決定した場合、セキュリティハードウェアエンジンは、デュアル署名検証メカニズムを有効にすることと、第1の公開鍵およびデュアルルートイネーブルビット(またはスイッチングイネーブルビット)を含む受信ファイルに対して署名検証を実行することと、ファイルに基づいて第2のデバイスを構成することとを行い得る。
図3に示される実施形態に従って、第2のソフトウェアパッケージに対してデュアル署名動作を実行することによって第3のソフトウェアパッケージが取得された後、第3のソフトウェアパッケージは第2のデバイスにダウンロードされ、第2のソフトウェアパッケージをロードする前に、第2のデバイスは、ロードされたソフトウェアが信頼でき、安全であることを保証するために、図5に示される以下の実施形態に従ってソフトウェア完全性検証を実行し得ることが理解されよう。
図5は、本出願の実施形態による、ソフトウェア完全性検証方法の概略フローチャートである。本方法は、第2のデバイス、たとえば、図1に示される前述のシナリオにおけるデバイス100に適用され、それは、具体的には、デバイス100におけるBootROM 111であり得る。本方法は、たとえば、以下のステップ501およびステップ502を含み得る。
ステップ501:第2のデバイスは第3のソフトウェアパッケージを取得し、第3のソフトウェアパッケージは、第1の署名、第2の署名、および第2のソフトウェアパッケージを含む。
ステップ502:第2のデバイスは、検証結果を取得するために、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ第1の署名と第2の署名を検証し、第1の公開鍵はファーストパーティによって制御され、第2の公開鍵はセカンドパーティによって制御される。
場合によっては、ファーストパーティは第2のソフトウェアパッケージのユーザであり得、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。別の場合では、代替で、ファーストパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局であり得、セカンドパーティは第2のソフトウェアパッケージのユーザである。
ファーストパーティが第2のソフトウェアパッケージのユーザであり、セカンドパーティが第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である例が使用されることが理解されよう。第1の署名は、第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行することによって取得され得、第1の署名および第2のソフトウェアパッケージは、第1のソフトウェアパッケージに含まれる。第2の署名は、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作を実行することによって取得され得る。第1の秘密鍵は第1の公開鍵と一致し、第2の秘密鍵は第2の公開鍵と一致する。
ステップ502の場合、一例では、デュアル署名検証メカニズムが使用される場合、第2のデバイスは、信頼できるストレージ領域(たとえば、OTP)から第1の公開鍵および第2の公開鍵を取得し、第1の公開鍵と第2の公開鍵に基づいて、第3のソフトウェアパッケージの第1の署名と第2の署名をそれぞれ検証する。別の例では、ユーザ署名検証メカニズムが使用される場合、第2のデバイスは、信頼できるストレージ領域(たとえば、OTP)から第1の公開鍵を取得し、第1の公開鍵に基づいて第3のソフトウェアパッケージの第1の署名を検証し得る。
デュアルルートイネーブルビットおよび/またはスイッチングイネーブルビットは、第2のデバイスのSoCにおいてさらに構成され得、デュアルルートイネーブルビットおよび/またはスイッチングイネーブルビットの複数の値/1つの値は、ソフトウェア完全性検証に使用する必要がある検証メカニズムを示すために使用されることが理解されよう。デュアルルートイネーブルビットおよび/またはスイッチングイネーブルビットの複数の値/1つの値は、一度記憶すると修正することはできない。たとえば、デュアルルートイネーブルビットおよび/またはスイッチングイネーブルビットの複数の値/1つの値は、SoCのeFuseにおいて焼き付けられ得る。さらに、デュアルルートイネーブルビットとスイッチングイネーブルビットの値が同時に焼き付けられ、2つのビットの値が両方とも有効である場合、スイッチングイネーブルビットの優先度は、デュアルルートイネーブルビットの優先度よりも高くなるようにさらに構成され得、すなわち、スイッチングイネーブルビットが有効である場合に対応するユーザ署名検証メカニズムが使用される。
一例では、第2のデバイスがデュアルルートイネーブルビットのみを記憶し、デュアルルートイネーブルビットが有効である場合、または、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、たとえば、ステップ502は以下を含み得る。S11:第2のデバイスは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証し、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される。S12:第2のデバイスは、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証し、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される。S13:第2のデバイスは、第1の署名検証結果および第2の署名検証結果に基づいて検証結果を生成し、検証結果は、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用される。場合によっては、第1の署名検証結果が第1の署名が有効であることを表し、第2の署名検証結果が第2の署名が有効であることを表す場合、検証結果は第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。別の場合では、第1の署名検証結果が第1の署名が無効であることを表す、および/または第2の署名検証結果が第2の署名が無効であることを表す場合、検証結果は第2のソフトウェアパッケージに対する完全性検証が失敗したことを表す。
別の例では、第2のデバイスがスイッチングイネーブルビットを記憶し、スイッチングイネーブルビットが有効である場合、第2のデバイスがデュアルルートイネーブルビットを記憶するかどうか、およびデュアルルートイネーブルビットが有効であるかどうかに関係なく、たとえば、ステップ502は、以下を含み得る。S21:第2のデバイスは、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証し、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される。S22:第2のデバイスは、第1の署名検証結果に基づいて検証結果を生成し、検証結果は、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用される。場合によっては、第1の署名検証結果が第1の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。別の場合では、第1の署名検証結果が第1の署名が無効であることを表す場合、検証結果は第2のソフトウェアパッケージに対する完全性検証が失敗したことを表す。
さらに別の例では、第2のデバイスがデュアルルートイネーブルビットまたはスイッチングイネーブルビットを記憶しない場合、または第2のデバイスにおけるデュアルルートイネーブルビットおよびスイッチングイネーブルビットが両方とも無効である場合、たとえば、ステップ502は以下を含み得る。S31:第2のデバイスは、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証し、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される。S32:第2のデバイスは、第2の署名検証結果に基づいて検証結果を生成し、検証結果は、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用される。場合によっては、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。別の場合では、第2の署名検証結果が第2の署名が無効であることを表す場合、検証結果は第2のソフトウェアパッケージに対する完全性検証が失敗したことを表す。この実施形態において使用される署名検証メカニズムは、製造業者署名検証メカニズム(シングルルート署名検証メカニズムとも呼ばれることがある)と呼ばれることがあることに留意されたい。
検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したことを表す場合、第2のデバイスが第2のソフトウェアパッケージをロードし得ることが理解され得る。複数のbootを含むソフトウェアパッケージの場合、ソフトウェアパッケージにおけるbootは、本出願のこの実施形態における方法によるロードシーケンスに基づいて順次検証される。あるレベルのbootにおけるソフトウェア完全性検証が成功したと決定されると、このレベルでのbootがロードされる。ソフトウェア完全性検証は、特定のレベルのbootにおけるソフトウェア完全性検証が失敗するか、すべてのbootがロードされることを検証結果が表すまで、このレベルにおけるbootを使用することによって次のレベルのbootにおいて実行され続ける。
署名動作の後、複数のbootを含むソフトウェアパッケージは、bootの署名およびboot内のコードセグメントを含み得、さらに証明書を含み得ることが理解されよう。証明書は、次のレベルのbootを検証するために使用され、すなわち、次のレベルのbootの署名の有効性を検証するための公開鍵が証明書から取得され得る。この場合、図5に示される検証動作において、一例では、boot内の証明書とコードセグメントが一緒に署名されている場合、第1のデバイスは、1回の検証を通じて、boot内のコードセグメントが有効であり、boot内の証明書が有効であると決定し得る。別の例では、boot内の証明書とコードセグメントが別々に署名されている場合、第1のデバイスは、代替で、2つの検証を実行し得、すなわち、boot内のコードセグメントが有効であるかどうかを決定するために、SoCは第1にbootの署名1を検証し、次いで、boot内のコードセグメントが有効であると決定されると、boot内の証明書が有効であるかどうかを決定するために、bootはbootの署名2を検証し、署名1と署名2は同じであり得る。特定の実装形態については、図7から図9に示される以下の実施形態を参照されたい。このようにして、bootの証明書に基づいて次のレベルのbootの署名を検証するための信頼できる基盤を提供するために、ソフトウェアパッケージにおける各bootが有効であるかどうかは、1回の検証または2回の検証を通じて決定され得る。
いくつかの可能な実装形態では、SoCは、代替で、デジタルダイジェスト技術を使用することによって、第2のソフトウェアパッケージについて計算された第1のダイジェストを記憶し得る。この場合、複数のbootを含む第2のソフトウェアパッケージにおいて、レベル1のboot以外のbootに対して署名動作が実行され得る。レベル1のbootに対する検証は、以下を含み得る。第1に、第2のデバイスのSoCは、レベル1のbootにおけるコードセグメントのみを取得し、ハッシュアルゴリズムを使用することによって、レベル1のbootにおけるコードセグメントに対応する第2のダイジェストを計算する。次いで、SoCは、比較を通じて、第1のダイジェストが第2のダイジェストと一致しているかどうかを決定し、第1のダイジェストが第2のダイジェストと一致している場合、レベル1のbootが有効であると決定し、レベル1のbootをロードする。特定の実装形態については、図10および図11に示される以下の実施形態を参照されたい。
他のいくつかの可能な実装形態において、第1の署名および第2の署名が、セカンダリ秘密鍵を使用することによって署名動作が実行された後に得られる署名であり、第2のデバイスに事前に記憶されている第1の公開鍵および第2の公開鍵もまたセカンダリ公開鍵である場合、各署名が検証される前に、本出願のこの実施形態は、以下の2つのステップをさらに含む。ステップ1:flashメモリから元のルート公開鍵を読み取り、元のルート公開鍵のハッシュ値を計算し、ハッシュ値がプライマリ公開鍵の値と一致しているかどうかを検証し、ハッシュ値がプライマリ公開鍵の値と一致している場合、プライマリ公開鍵が有効であると決定する。ステップ2:証明書を読み取り、プライマリ公開鍵を処理することによって取得したセカンダリ公開鍵を使用することによって証明書に対して署名検証を実行し、署名検証が成功した場合は、証明書に事前に記憶されているセカンダリ公開鍵は有効であると決定し、署名動作は、プライマリ秘密鍵を処理することによって取得されたセカンダリ秘密鍵を使用することによって、証明書に対して実行される。このようにして、第2のデバイスにロードされる第2のソフトウェアパッケージに対してソフトウェア完全性検証を実行できるだけでなく、元のルート秘密鍵が公開される回数を減らすこともでき、それによって、第2のデバイスのセキュリティと信頼性が向上する。さらに、SoCのストレージスペースも節約することができる。
現在、第2のデバイスの配信前に、第2のデバイスは通常、第2のデバイスのSoCのコードセグメント1における第2の公開鍵に対してアイテムコーディングを実行する。この場合、第2のデバイスの配信および使用中に、デュアル署名検証メカニズムまたはユーザ署名検証メカニズムが必要とされる場合、コードセグメントを修正する必要があり、実装が困難である。第2のデバイスを使用するエクスペリエンスを改善するために、本出願のこの実施形態では、第2の公開鍵はコードセグメントから抽出され、単一のファイル1の形式でコードセグメント2に付加される。すなわち、第2のデバイスの配信前に、flashメモリにおけるレイアウトは、たとえば、「ヘッダファイル+コードセグメント2+ファイル1」として表され得る。このようにして、第2のデバイスの使用中にデュアル署名検証メカニズムが有効になっている場合、第1の公開鍵を記憶するためにファイル2のみをflashメモリに個別に追加する必要がある。この場合、flashメモリにおけるレイアウトは、たとえば、「ヘッダファイル+コードセグメント2+ファイル1+ファイル2」として表され得る。このようにして、ユーザの署名検証メカニズムにおける変更に起因する作業の困難さが大幅に軽減され、第2のデバイスを使用するユーザエクスペリエンスが向上する。
いくつかの他の可能な実装形態において、flashメモリにおけるレイアウト設計に基づいて、図6に示されるように、第2のデバイスの配信前に、第2のデバイスは第2の公開鍵のみを記憶するが、第1の公開鍵および2つのイネーブルビットを記憶するためのフィールドセグメントを予約する。配信後に第2のデバイスが使用される場合、場合によっては、デュアル署名検証メカニズムを使用する必要があるユーザの要求に応じて、第1の公開鍵とデュアルルートイネーブルビットの有効な値を予約された場所に構成され得る。別の場合には、第1の公開鍵とスイッチングイネーブルビットの有効な値が、ユーザ署名検証メカニズムを使用する必要があるユーザの要求に応じて、予約された場所で構成され得る。このようにして、flashメモリにおけるレイアウト設計と、第2の公開鍵のみが記憶されており、配信前にユーザが使用できるように他のスペースが予約されている場合の情報を焼き付けるための方法に基づいて、次の問題を解決することができる。ユーザおよび市場の要件が異なるため、製造業者からの配信後に異なるユーザによって異なる第2のデバイスが使用される場合、署名検証メカニズムを変更する必要があるが、アイテムコーディングはコードセグメントにおける第2の公開鍵に対して実行されるため、SoCにおけるアイテムコーディングは分割される必要がある。その結果、ユーザが署名検証メカニズムを変更することは困難である。これにより、第2のデバイスを使用するユーザエクスペリエンスが向上する。
このようにして、ソフトウェア製造業者(または、デバイス製造業者)とユーザにより提供された鍵を使用することによってソフトウェア完全性保護が実行されるソフトウェアパッケージの場合、ソフトウェア製造業者により提供された鍵に基づいてソフトウェアパッケージに対して署名検証を実行できるだけでなく、ソフトウェア製造業者を完全に信頼および依存することなく、ユーザにより提供された鍵に基づいてソフトウェアパッケージに対して署名検証を実行することもでき、ユーザは、ユーザの信頼の問題を解決するために、使用する署名検証メカニズムを柔軟に決定し得るため、第2のデバイスに対するソフトウェア完全性検証がより柔軟で信頼できるものになる。これにより、第2のデバイスを使用するユーザエクスペリエンスが向上する。
本出願の実施形態をより明確かつより詳細に説明するために、2つの例を使用することによって本出願の実施形態におけるソフトウェア完全性検証プロセスを説明するために第2のデバイスのboot前のソフトウェア完全性検証を以下の例として使用する。
実施形態1:図7に示されるシナリオを例として使用する。このシナリオでは、第2のデバイス700は、SoC710およびbootソフトウェアパッケージを含み、bootソフトウェアパッケージは、L1 boot720およびL2 boot 730を含む。SoC710は、BootROM711を含み、製造業者公開鍵1、ユーザ公開鍵1、デバイス識別子、デュアルルートイネーブルビットの値、およびスイッチングイネーブルビットの値を記憶する。L1 boot720は、コードセグメント1、製造業者証明書1、ユーザ証明書1、製造業者署名1、およびユーザ署名1を含む。L2 boot730は、コードセグメント2、製造業者署名2、およびユーザ署名2を含む。
一例では、図7に示される第2のデバイス700において、デュアルルートイネーブルビットの値は、デュアルルートイネーブルビットが有効であることを示し、スイッチングイネーブルビットの値は、スイッチングイネーブルビットが無効であることを示し、デバイス識別子は、デュアル署名検証デバイスリストに含まれているものとする。各bootにおける証明書とコードセグメントが別々に署名されている場合、すなわち、製造業者署名1がコードセグメント1に対応する製造業者署名11と、製造業者証明書1に対応する製造業者署名12を含む場合、ユーザ署名1は、コードセグメント1に対応するユーザ署名11と、ユーザ証明書1に対応するユーザ署名12とを含み、図8Aおよび図8Bに示されるように、本出願のこの実施形態は、具体的には、以下のステップを含む。
ステップ801:BootROM711は、L1 boot720におけるヘッダファイルから元の製造業者公開鍵0を読み取り、製造業者公開鍵0のハッシュ値を計算し、製造業者公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵3のハッシュ値と一致しているかどうかを検証し、製造業者公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵3のハッシュ値と一致している場合、製造業者ルート公開鍵3が有効であると決定する。
ステップ802:BootROM711は、製造業者ルート公開鍵3を使用することによって製造業者ルート証明書1に対して署名検証を実行し、製造業者ルート証明書1における製造業者公開鍵1が有効であると決定する。
製造業者ルート証明書1は、セカンダリルート秘密鍵4を使用することによって実行される署名動作を実行する証明書であり、セカンダリルート秘密鍵4は、プライマリルート秘密鍵5を処理することによって取得されることが理解されよう。製造業者ルート証明書1は、製造業者公開鍵1を含む。ステップ802において、製造業者ルート公開鍵3は、対応するセカンダリルート公開鍵4を取得するために第1に処理され得る。製造業者証明書1の署名は、セカンダリルート公開鍵4を使用することによって検証される。セカンダリルート公開鍵4がセカンダリルート秘密鍵4と一致し、製造業者証明書1が改ざんされていない場合、署名検証は成功し、製造業者ルート証明書1が有効であり、証明書における製造業者公開鍵1が有効であることを表す。
ステップ803:BootROM711は、署名検証結果1を取得するために、製造業者公開鍵1を使用することによって、L1 boot720内のコードセグメント1における製造業者署名11を検証する。
ステップ804:BootROM711は、L1 boot720内のヘッダファイルから元のユーザ公開鍵0を読み取ることと、ユーザ公開鍵0のハッシュ値を計算することと、ユーザ公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵5のハッシュ値と一致するかどうかを検証することとを行い、ユーザ公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵5のハッシュ値と一致している場合、製造業者ルート公開鍵5が有効であると決定する。
ステップ805:BootROM 711は、ユーザルート公開鍵5を使用することによってユーザルート証明書2に対して署名検証を実行し、ユーザルート証明書2におけるユーザ公開鍵1が有効であると決定する。
ステップ806:BootROM711は、署名検証結果2を取得するために、ユーザ公開鍵1を使用することによって、L1 boot720内のコードセグメント1におけるユーザ署名11を検証する。
ステップ804からステップ806の関連する説明については、ステップ801からステップ803を参照することに留意されたい。
ステップ804からステップ806およびステップ801からステップ803の実行シーケンスは特に限定されないことに留意されたい。ステップ804からステップ806は、ステップ801からステップ803の前に実行され得、ステップ801からステップ803は、ステップ804からステップ806の前に実行され得るか、またはステップ804からステップ806およびステップ801からステップ803は、同時に実行され得る。
ステップ807:BootROM711は、署名検証結果3を取得するために、製造業者公開鍵1を使用することによって、L1 boot720内の製造業者証明書1が有効かどうかを検証する。
ステップ808:BootROM711は、署名検証結果4を取得するために、ユーザ公開鍵1を使用することによって、L1 boot720内のユーザ証明書1が有効かどうかを検証する。
ステップ809:BootROM711は、署名検証結果1から4に基づいて、L1 boot720のソフトウェア完全性を示すための検証結果1を決定する。検証結果1が、L1 boot720に対するソフトウェア完全性検証が成功したことを表す場合、以下のステップ810からステップ816が実行され、または、検証結果1が、L1 boot720に対するソフトウェア完全性検証が失敗したことを表す場合、ステップ817が実行される。
検証結果1は、署名検証結果1から4が、すべて署名検証が成功した状態を示している場合にのみ、L1 boot720に対するソフトウェア完全性検証が成功したことを表すことができることが理解されよう。検証結果1は、署名検証結果1から4に署名検証が失敗した状態が存在するという条件で、L1 boot720に対するソフトウェア完全性検証が失敗したことを表す。
ステップ810:L1 boot720をロードする。
ステップ811:L1 boot720は、署名検証結果5を取得するために、製造業者証明書1から製造業者公開鍵2を取得し、製造業者公開鍵2を使用することによって、L1 boot730内のコードセグメント2における製造業者署名21を検証する。
ステップ812:L1 boot720は、署名検証結果6を取得するために、ユーザ証明書1からユーザ公開鍵2を取得し、ユーザ公開鍵2を使用することによって、L1 boot730内のコードセグメント2におけるユーザ署名21を検証する。
ステップ813:L1 boot720は、署名検証結果7を取得するために、製造業者公開鍵2を使用することによって、L1 boot730内の製造業者証明書2が有効であるかどうかを検証する。
ステップ814:L1 boot720は、署名検証結果8を取得するために、ユーザ公開鍵2を使用することによって、L1 boot730内のユーザ証明書2が有効であるかどうかを検証する。
ステップ815:L1 boot720は、署名検証結果5から8に基づいて、L1 boot730のソフトウェア完全性を示すための検証結果2を決定する。検証結果2がL1 boot730に対するソフトウェア完全性検証が成功したことを表す場合、以下のステップ816が実行され、または、検証結果2がL1 boot730に対するソフトウェア完全性検証が失敗したことを表す場合、ステップ817が実行される。
検証結果2は、署名検証結果5から8がすべて、署名検証が成功した状態を示している場合にのみ、L1 boot730に対するソフトウェア完全性検証が成功したことを表すことができることが理解されよう。検証結果2は、署名検証結果5から8において署名検証が失敗した状態が存在するという条件で、L1 boot730に対するソフトウェア完全性検証が失敗したことを表す。
ステップ816:L1 boot730をロードし、第2のデバイス700のbootを完了する。
ステップ817:bootソフトウェアパッケージに対するソフトウェア完全性検証を終了し、第2のデバイス700の現在のbootを終了する。
このようにして、第2のデバイスのboot時にロードされるソフトウェアが安全で信頼できることを保証するために、bootソフトウェアパッケージに対するソフトウェア完全性検証は、デュアル署名検証メカニズムを使用することによって完了し、それによって、ユーザが第2のデバイスを使用するための信頼できる環境を提供する。
別の例では、図7に示される第2のデバイス700において、デュアルルートイネーブルビットの値は、デュアルルートイネーブルビットが有効であることを示し、スイッチングイネーブルビットの値は、スイッチングイネーブルビットも有効であることを示し、デバイス識別子は、デュアル署名検証デバイスリストに含まれているものとする。各bootにおける証明書とコードセグメントが均一に署名されている場合、すなわち、製造業者署名1の署名検証結果が、コードセグメント1と製造業者証明書1の両方の有効性を表し得る場合、図9に示されるように、本出願のこの実施形態は、具体的には、以下のステップを含む。
ステップ901:BootROM711は、L1 boot720内のヘッダファイルから元のユーザ公開鍵0を読み取ることと、ユーザ公開鍵0のハッシュ値を計算することと、ユーザ公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵5のハッシュ値と一致するかどうかを検証することとを行い、ユーザ公開鍵0のハッシュ値がBootROM711に記憶されている製造業者ルート公開鍵5のハッシュ値と一致している場合、製造業者ルート公開鍵5が有効であると決定する。
ステップ902:BootROM 711は、ユーザルート公開鍵5を使用することによってユーザルート証明書2に対して署名検証を実行し、ユーザルート証明書2におけるユーザ公開鍵1が有効であると決定する。
ステップ903:BootROM711は、署名検証結果2を取得するために、ユーザ公開鍵1を使用することによって、L1 boot720におけるユーザ署名1を検証し、ユーザ署名1は、コードセグメント1およびユーザ証明書1に対応する。
ステップ904:署名検証結果2が、L1 boot720に対するソフトウェア完全性検証が成功したことを表す場合、L1 boot720をロードする。
ステップ905:L1 boot720は、署名検証結果4を取得するために、ユーザ証明書1からユーザ公開鍵2を取得し、ユーザ公開鍵2を使用することによってL1 boot730におけるユーザ署名2を検証し、ユーザ署名2は、コードセグメント2およびユーザ証明書2に対応する。
ステップ906:署名検証結果4が、L1 boot730に対するソフトウェア完全性検証が成功したことを表す場合、L1 boot730をロードする。
このようにして、第2のデバイスのboot時にロードされるソフトウェアが安全で信頼できることを保証するために、bootソフトウェアパッケージに対するソフトウェア完全性検証は、ユーザ署名検証メカニズムを使用することによって、またユーザによって提供された鍵を完全に使用することによって完了し、それによって、ユーザが第2のデバイスを使用するための信頼できる環境を提供する。
実施形態2:図10に示されるシナリオを例として使用する。このシナリオでは、第2のデバイス1000は、SoC1010およびbootソフトウェアパッケージを含み、bootソフトウェアパッケージは、L1 boot1020およびL2 boot1030を含む。SoC1010は、BootROM1011を含み、ダイジェスト1、デバイス識別子、デュアルルートイネーブルビットの値、およびスイッチングイネーブルビットの値を記憶する。L1 boot1020は、コードセグメント1、製造業者証明書1、およびユーザ証明書1を含む。L2 boot1030は、コードセグメント2、製造業者署名2、およびユーザ署名2を含む。
特定の実装形態の間、図10に示される第2のデバイス1000において、デュアルルートイネーブルビットの値は、デュアルルートイネーブルビットが有効であることを示し、スイッチングイネーブルビットの値は、スイッチングイネーブルビットが無効であることを示し、デバイス識別子は、デュアル署名検証デバイスリストに含まれているものとする。各bootにおける証明書とコードセグメントが均一に署名されている場合、すなわち、製造業者署名2の検証結果が、コードセグメント2と製造業者証明書2の両方の有効性を表し得る場合、図11に示されるように、本出願のこの実施形態は、具体的には、以下のステップを含む。
ステップ1101:BootROM1011は、L1 boot1020からコードセグメント1を読み取り、ハッシュアルゴリズムを使用することによってコードセグメント1のダイジェスト2を計算する。
ステップ1102:BootROM1011は、検証結果1を取得するために、ダイジェスト1とダイジェスト2を比較する。
ダイジェスト1がダイジェスト2と一致する場合、検証結果1は、L1 boot1020に対するソフトウェア完全性検証が成功したことを表すために使用され、または、ダイジェスト1がダイジェスト2と一致しない場合、検証結果1は、L1 boot1020に対するソフトウェア完全性検証が失敗したことを表すために使用されることが理解されよう。
ステップ1103:検証結果1が、L1 boot1020に対するソフトウェア完全性検証が成功したことを表す場合、L1 boot1020をロードする。
ステップ1104:L1 boot1020は、署名検証結果4を取得するために、ユーザ証明書1からユーザ公開鍵2を取得し、ユーザ公開鍵2を使用することによってL1 boot1030におけるユーザ署名2を検証し、ユーザ署名2は、コードセグメント2およびユーザ証明書2に対応する。
ステップ1105:L1 boot1020は、署名検証結果6を取得するために、製造業者証明書1から製造業者公開鍵2を取得し、製造業者公開鍵2を使用することによってL1 boot1030における製造業者署名2を検証し、製造業者署名2は、コードセグメント2および製造業者証明書2に対応する。
ステップ1106:署名検証結果4および署名検証結果6がそれぞれ、L1 boot1030に対するソフトウェア完全性検証が成功したことを表す場合、L1 boot1030をロードする。
このようにして、ダイジェストのみがSoCに記憶され、それによって、第2のデバイスのハードウェアストレージリソースが節約される。さらに、第2のデバイスのboot時にロードされるソフトウェアのセキュリティを保証するために、bootソフトウェアパッケージに対するソフトウェア完全性検証は依然として、デュアル署名検証メカニズムを使用することによってソフトウェアパッケージ内で完了し、それによって、ユーザが第2のデバイスを使用するための信頼できる環境を提供する。
それに応じて、本出願の実施形態は、ソフトウェア完全性保護装置1200をさらに提供する。図12に示されるように、装置1200は第1のデバイスにおいて使用され、装置1200は、取得ユニット1201および署名ユニット1202を含む。
取得ユニット1201は、第1のソフトウェアパッケージを取得するように構成され、第1のソフトウェアパッケージは、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのためにファーストパーティによって作成された第1の署名を含む。署名ユニット1202は、第2の署名を含む第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって第1のソフトウェアパッケージに対して署名動作を実行するように構成され、第1の秘密鍵は、ファーストパーティによって制御され、第2の秘密鍵はセカンドパーティによって制御される。
ファーストパーティは第2のソフトウェアパッケージのユーザであり、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。
可能な実装形態において、装置は、送信ユニットをさらに含む。送信ユニットは、第3のソフトウェアパッケージを第2のデバイスに送信するように構成されている。
別の可能な実装形態では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、第1の署名および第2の署名が両方とも有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、第1の署名が有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、第2の署名が有効であることは、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す。
装置1200は、図2に示される実施形態において関連する動作を実行するように構成されることに留意されたい。装置1200の特定の実装形態および達成された効果については、図2に示される実施形態における関連する説明を参照されたい。詳細については、本明細書では再度説明しない。
さらに、本出願の実施形態は、ソフトウェア完全性検証装置1300をさらに提供する。図13に示されるように、装置1300は第2のデバイスにおいて使用され、装置1300は、取得ユニット1301および検証ユニット1302を含む。
取得ユニット1301は第1のソフトウェアパッケージを取得するように構成され、第1のソフトウェアパッケージは、第1の署名、第2の署名、および第2のソフトウェアパッケージを含む。検証ユニット1302は、検証結果を取得するために、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ第1の署名と第2の署名を検証するように構成され、第1の公開鍵はファーストパーティによって制御され、第2の公開鍵はセカンドパーティによって制御される。
可能な実装形態では、第1の署名は、ファーストパーティによって制御される第1の秘密鍵を使用することによって第2のソフトウェアパッケージに対して署名動作を実行することによって取得され、第1の署名と第2のソフトウェアパッケージは、第3のソフトウェアパッケージに含まれており、第2の署名は、セカンドパーティによって制御される第2の秘密鍵を使用することによって第3のソフトウェアパッケージに対して署名動作を実行することによって取得され、第1の秘密鍵は第1の公開鍵と一致し、第2の秘密鍵は第2の公開鍵と一致する。
ファーストパーティは第2のソフトウェアパッケージのユーザであり、セカンドパーティは第2のソフトウェアパッケージの製造業者またはサードパーティのデジタル認証局である。
別の可能な実装形態では、第2のデバイスにおけるスイッチングイネーブルビットが無効であり、第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、検証ユニット1302は、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証するように構成され、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される、第1の検証サブユニットと、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証するように構成され、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される、第2の検証サブユニットと、第1の署名検証結果および第2の署名検証結果に基づいて検証結果を生成するように構成された第1の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表し、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第1の生成サブユニットとを含む。あるいは、第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、検証ユニット1302は、第1の署名検証結果を取得するために、事前に記憶された第1の公開鍵に基づいて第1の署名を検証するように構成され、第1の署名検証結果は、第1の署名が有効であるかどうかを表すために使用される、第3の検証サブユニットと、第1の署名検証結果に基づいて検証結果を生成するように構成された第2の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第1の署名検証結果が第1の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第2の生成サブユニットとを含む。あるいは、第のデバイスにおけるスイッチングイネーブルビットが無効であり、第1のデバイスにおけるデュアルルートイネーブルビットが無効である場合、検証ユニット1302は、第2の署名検証結果を取得するために、事前に記憶された第2の公開鍵に基づいて第2の署名を検証するように構成され、第2の署名検証結果は、第2の署名が有効であるかどうかを表すために使用される、第4の検証サブユニットと、第2の署名検証結果に基づいて検証結果を生成するように構成された第3の生成サブユニットであって、検証結果が、第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、第2の署名検証結果が第2の署名は有効であることを表す場合、検証結果は、第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、第3の生成サブユニットとを含む。
装置1300は、図5に示される実施形態において関連する動作を実行するように構成されることに留意されたい。装置1300の特定の実装形態および達成された効果については、図5に示される実施形態における関連する説明を参照されたい。詳細については、本明細書では再度説明しない。
さらに、本出願の実施形態は、デバイス1400をさらに提供する。図14に示されるように、デバイス1400は、メモリ1401およびプロセッサ1402を含む。メモリ1401は、プログラムコードを記憶するように構成されている。プロセッサ1402は、デバイス1400が、図2または図5に示される前述の実施形態における実装形態のうちのいずれか1つにおける方法を実行できるように、プログラムコードまたは命令を実行するように構成されている。
さらに、本出願の一実施形態は、コンピュータ可読ストレージ媒体をさらに提供する。コンピュータ可読ストレージ媒体は、プログラムコードまたは命令を記憶する。プログラムコードまたは命令がコンピュータ上で実行されるとき、コンピュータは、図2または図5に示される前述の実施形態における実装形態のうちのいずれか1つにおける方法を実行することが可能になる。
さらに、本出願の実施形態は、ネットワークシステム1500をさらに提供する。図15に示されるように、ネットワークシステム1500は、ソフトウェア完全性保護装置1200と、ソフトウェア完全性検証装置1300とを含む。
本出願の実施形態において言及される「第1の公開鍵」および「第1の秘密鍵」などの用語における「第1」は、単に名前識別子として使用され、順番における第1を表すものではない。このルールは「第2」などにも適用される。
実装形態の前述の説明から、当業者は、前述の実施形態の方法におけるステップのうちのいくつかまたはすべてが、ソフトウェアおよびユニバーサルハードウェアプラットフォームを使用することによって実装され得ることを明確に理解するであろう。このような理解に基づいて、本出願の技術的解決策は、ソフトウェア製品の形式で実装され得る。コンピュータソフトウェア製品は、ストレージ媒体、たとえば、読み取り専用メモリ(英語:read-only memory、ROM)/RAM、磁気ディスク、または光ディスクに記憶され得、コンピュータデバイス(パーソナルコンピュータ、サーバ、またはルータなどのネットワーク通信デバイスであり得る)に、本出願の実施形態または実施形態のいくつかの部分に記載されている方法を実行するように指示するためのいくつかのプログラムコード(several pieces of program code)またはいくつかの命令を含む。
本明細書の実施形態はすべて、実施形態における同じまたは類似の部分について漸進的に説明され、これらの実施形態を参照し、各実施形態は、他の実施形態との違いに焦点を合わせている。特に、装置およびデバイスの実施形態は、基本的に方法の実施形態と類似しており、したがって、簡単に説明されている。関連部品については、方法の実施形態における部分的な説明を参照されたい。説明したデバイスおよび装置の実施形態は、単なる例である。別個の部品として説明されるモジュールは、物理的に別個である場合も、別個ではない場合もあり、モジュールとして表示される部品は、物理モジュールである場合も、そうではない場合もあり、1つの位置に配置されていてもよく、複数のネットワークユニットに分散されていてもよい。モジュールのうちのいくつかまたはすべては、実施形態の解決策の目的を達成するために、実際の要件に基づいて選択され得る。当業者は、創造的な努力なしに実施形態を理解し、実装し得る。
前述の説明は、本出願の例示的な実装形態にすぎないが、本出願の保護範囲を限定することが意図されるものではない。当業者は、本出願から逸脱することなく、いくつかの改良および研磨を行うことができ、改良および研磨は、本出願の保護範囲に含まれることに留意されたい。
0 製造業者公開鍵
0 ユーザ公開鍵
1 製造業者公開鍵
1 秘密鍵
1 ユーザ公開鍵
1 コードセグメント
1 製造業者証明書
1 ユーザ証明書
1 製造業者署名
1 ユーザ署名
1 ダイジェスト
1 検証結果
1 デバイス
1 署名システム
1 署名検証結果
1 署名
1 単一のファイル
1 製造業者ルート証明書
2 秘密鍵
2 コードセグメント
2 製造業者署名
2 ユーザ署名
2 ダイジェスト
2 署名システム
2 署名検証結果
2 署名
2 ユーザルート証明書
2 製造業者公開鍵
2 ユーザ公開鍵
2 製造業者証明書
2 ユーザ証明書
2 検証結果
3 製造業者ルート公開鍵
3 署名検証結果
4 セカンダリルート秘密鍵
4 セカンダリルート公開鍵
4 署名検証結果
5 プライマリルート秘密鍵
5 製造業者ルート公開鍵
5 ユーザルート公開鍵
5 署名検証結果
6 署名検証結果
7 署名検証結果
8 署名検証結果
11 署名
11 製造業者署名
11 ユーザ署名
11 秘密鍵
12 署名
12 製造業者署名
12 ユーザ署名
13 署名
12 秘密鍵
12 公開鍵
13 秘密鍵
13 公開鍵
21 署名
21 秘密鍵
21 公開鍵
21 製造業者署名
21 ユーザ署名
22 署名
22 秘密鍵
22 公開鍵
23 署名
23 秘密鍵
23 公開鍵
100 デバイス
110 SoC
111 BootROM
200 ソフトウェアパッケージ
200’ ソフトウェアパッケージ
300 製造業者署名システム
400 ユーザ署名システム
700 第2のデバイス
710 SoC
711 BootROM
720 L1 boot
730 L2 boot
730 L1 boot
1000 第2のデバイス
1010 SoC
1011 BootROM
1020 L1 boot
1030 L2 boot
1030 L1 boot
1200 ソフトウェア完全性保護装置
1201 取得ユニット
1202 署名ユニット
1300 ソフトウェア完全性検証装置
1301 取得ユニット
1302 検証ユニット
1400 デバイス
1401 メモリ
1402 プロセッサ
1500 ネットワークシステム

Claims (20)

  1. 第1のデバイスによって、第1のソフトウェアパッケージを取得するステップであって、前記第1のソフトウェアパッケージが、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのためにファーストパーティによって作成された第1の署名を備える、ステップであって、前記第1の秘密鍵が、前記ファーストパーティによって制御され、前記ファーストパーティが前記第2のソフトウェアパッケージのユーザであり、前記第1のデバイスが、前記第2のソフトウェアパッケージに対応する製造業者署名システムである、ステップと、
    前記第1のデバイスによって、第2の署名を備える第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって前記第1のソフトウェアパッケージに対して署名動作を実行するステップであって、前記第2の秘密鍵がセカンドパーティによって制御され、前記セカンドパーティが前記第2のソフトウェアパッケージの製造業者もしくはサードパーティのデジタル認証局である、ステップと
    を備える、ソフトウェア完全性保護方法。
  2. 前記第1のデバイスによって、前記第3のソフトウェアパッケージを第2のデバイスに送信するステップをさらに備える、請求項1に記載のソフトウェア完全性保護方法。
  3. 前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、前記第1の署名および前記第2の署名が両方とも有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、前記第1の署名が有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、前記第2の署名が有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、請求項2に記載のソフトウェア完全性保護方法。
  4. 第2のデバイスによって、第1のソフトウェアパッケージを取得するステップであって、前記第1のソフトウェアパッケージが、第1の署名、第2の署名、および第2のソフトウェアパッケージを備える、ステップであって、前記第1の署名が、ファーストパーティによって、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのために作成され、前記第1の秘密鍵が、前記ファーストパーティによって制御され、前記ファーストパーティが前記第2のソフトウェアパッケージのユーザであり、第1のデバイスが、前記第2のソフトウェアパッケージに対応する製造業者署名システムである、ステップと、
    検証結果を取得するために、前記第2のデバイスによって、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ前記第1の署名と前記第2の署名を検証するステップであって、前記第1の公開鍵が前記ファーストパーティによって制御され、前記第2の公開鍵がセカンドパーティによって制御され、前記セカンドパーティが前記第2のソフトウェアパッケージの製造業者もしくはサードパーティのデジタル認証局である、ステップと
    を備える、ソフトウェア完全性検証方法。
  5. 前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、検証結果を取得するために、前記第2のデバイスによって、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ前記第1の署名と前記第2の署名を検証する前記ステップが、
    前記第2のデバイスによって、第1の署名検証結果を取得するために、前記事前に記憶された第1の公開鍵に基づいて前記第1の署名を検証するステップであって、前記第1の署名検証結果が、前記第1の署名が有効であるかどうかを表すために使用される、ステップと、
    前記第2のデバイスによって、第2の署名検証結果を取得するために、前記事前に記憶された第2の公開鍵に基づいて前記第2の署名を検証するステップであって、前記第2の署名検証結果が、前記第2の署名が有効であるかどうかを表すために使用される、ステップと、
    前記第2のデバイスによって、前記第1の署名検証結果および前記第2の署名検証結果に基づいて前記検証結果を生成するステップであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第1の署名検証結果が前記第1の署名は有効であることを表し、前記第2の署名検証結果が前記第2の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、ステップと
    を備え、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、検証結果を取得するために、前記第2のデバイスによって、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ前記第1の署名と前記第2の署名を検証する前記ステップが、
    前記第2のデバイスによって、第1の署名検証結果を取得するために、前記事前に記憶された第1の公開鍵に基づいて前記第1の署名を検証するステップであって、前記第1の署名検証結果が、前記第1の署名が有効であるかどうかを表すために使用される、ステップと、
    前記第2のデバイスによって、前記第1の署名検証結果に基づいて前記検証結果を生成するステップであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第1の署名検証結果が前記第1の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、ステップと
    を備え、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、検証結果を取得するために、前記第2のデバイスによって、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ前記第1の署名と前記第2の署名を検証する前記ステップが、
    前記第2のデバイスによって、第2の署名検証結果を取得するために、前記事前に記憶された第2の公開鍵に基づいて前記第2の署名を検証するステップであって、前記第2の署名検証結果が、前記第2の署名が有効であるかどうかを表すために使用される、ステップと、
    前記第2のデバイスによって、前記第2の署名検証結果に基づいて前記検証結果を生成するステップであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第2の署名検証結果が前記第2の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、ステップと
    を備える、請求項4に記載のソフトウェア完全性検証方法。
  6. 前記第1の署名と前記第2のソフトウェアパッケージが、第3のソフトウェアパッケージに備えられており、前記第2の署名が、前記セカンドパーティによって制御される第2の秘密鍵を使用することによって前記第3のソフトウェアパッケージに対して署名動作を実行することによって取得され、前記第1の秘密鍵が前記第1の公開鍵と一致し、前記第2の秘密鍵が前記第2の公開鍵と一致する、請求項4または5に記載のソフトウェア完全性検証方法。
    検証方法。
  7. ソフトウェア完全性保護装置であって、
    第1のソフトウェアパッケージを取得するように構成された取得ユニットであって、前記第1のソフトウェアパッケージが、第1の秘密鍵を使用することによって第2のソフトウェアパッケージのためにファーストパーティによって作成された第1の署名を備える、取得ユニットであって、前記第1の秘密鍵が、前記ファーストパーティによって制御され、前記ファーストパーティが前記第2のソフトウェアパッケージのユーザであり、第1のデバイスが、前記第2のソフトウェアパッケージに対応する製造業者署名システムである、取得ユニットと、
    第2の署名を備える第3のソフトウェアパッケージを取得するために、第2の秘密鍵を使用することによって前記第1のソフトウェアパッケージに対して署名動作を実行するように構成された署名ユニットであって、前記第2の秘密鍵がセカンドパーティによって制御され、前記セカンドパーティが前記第2のソフトウェアパッケージの製造業者もしくはサードパーティのデジタル認証局である、署名ユニットと
    備え、前記第1のデバイスに適用される、ソフトウェア完全性保護装置。
  8. 前記第3のソフトウェアパッケージを第2のデバイスに送信するように構成された送信ユニットをさらに備える、請求項7に記載のソフトウェア完全性保護装置。
  9. 前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、前記第1の署名および前記第2の署名が両方とも有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、前記第1の署名が有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表し、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、前記第2の署名が有効であることが、前記第2のソフトウェアパッケージに対する完全性検証が成功したことを表す、請求項8に記載のソフトウェア完全性保護装置。
  10. ソフトウェア完全性検証装置であって、
    前記ソフトウェア完全性検証装置が、
    第1のソフトウェアパッケージを取得するように構成された取得ユニットであって、前記第1のソフトウェアパッケージが、第1の署名、第2の署名、および第2のソフトウェアパッケージを備え、前記第1の署名が、ファーストパーティによって、第1の秘密鍵を使用することによって前記第2のソフトウェアパッケージのために作成され、前記第1の秘密鍵が、前記ファーストパーティによって制御され、前記ファーストパーティが前記第2のソフトウェアパッケージのユーザである、取得ユニットと、
    検証結果を取得するために、事前に記憶されている第1の公開鍵と第2の公開鍵に基づいて、それぞれ前記第1の署名と前記第2の署名を検証するように構成された検証ユニットであって、前記第1の公開鍵が前記ファーストパーティによって制御され、前記第2の公開鍵がセカンドパーティによって制御され、前記セカンドパーティが前記第2のソフトウェアパッケージの製造業者もしくはサードパーティのデジタル認証局である、検証ユニットと
    を備える第2のデバイスに適用される、ソフトウェア完全性検証装置。
  11. 前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが有効である場合、前記検証ユニットが、
    第1の署名検証結果を取得するために、前記事前に記憶された第1の公開鍵に基づいて前記第1の署名を検証するように構成され、前記第1の署名検証結果が、前記第1の署名が有効であるかどうかを表すために使用される、第1の検証サブユニットと、
    第2の署名検証結果を取得するために、前記事前に記憶された第2の公開鍵に基づいて前記第2の署名を検証するように構成され、前記第2の署名検証結果が、前記第2の署名が有効であるかどうかを表すために使用される、第2の検証サブユニットと、
    前記第1の署名検証結果および前記第2の署名検証結果に基づいて前記検証結果を生成するように構成された第1の生成サブユニットであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第1の署名検証結果が前記第1の署名は有効であることを表し、前記第2の署名検証結果が前記第2の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、第1の生成サブユニットと、
    を備え、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが有効である場合、前記検証ユニットが、
    第1の署名検証結果を取得するために、前記事前に記憶された第1の公開鍵に基づいて前記第1の署名を検証するように構成され、前記第1の署名検証結果が、前記第1の署名が有効であるかどうかを表すために使用される、第3の検証サブユニットと、
    前記第1の署名検証結果に基づいて前記検証結果を生成するように構成された第2の生成サブユニットであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第1の署名検証結果が前記第1の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、第2の生成サブユニットと、
    を備え、または、
    前記第2のデバイスにおけるスイッチングイネーブルビットが無効であり、前記第2のデバイスにおけるデュアルルートイネーブルビットが無効である場合、前記検証ユニットが、
    第2の署名検証結果を取得するために、前記事前に記憶された第2の公開鍵に基づいて前記第2の署名を検証するように構成され、前記第2の署名検証結果が、前記第2の署名が有効であるかどうかを表すために使用される、第4の検証サブユニットと、
    前記第2の署名検証結果に基づいて前記検証結果を生成するように構成された第3の生成サブユニットであって、前記検証結果が、前記第2のソフトウェアパッケージに対するソフトウェア完全性検証が成功したかどうかを表すために使用され、前記第2の署名検証結果が前記第2の署名は有効であることを表す場合、前記検証結果が、前記第2のソフトウェアパッケージに対する前記完全性検証が成功したことを表す、第3の生成サブユニットと
    を備える、請求項10に記載のソフトウェア完全性検証装置。
  12. 前記第1の署名と前記第2のソフトウェアパッケージが、第3のソフトウェアパッケージに備えられており、前記第2の署名が、前記セカンドパーティによって制御される第2の秘密鍵を使用することによって前記第3のソフトウェアパッケージに対して署名動作を実行することによって取得され、前記第1の秘密鍵が前記第1の公開鍵と一致し、前記第2の秘密鍵が前記第2の公開鍵と一致する、請求項10または11に記載のソフトウェア完全性検証装置。
  13. 請求項7から9のいずれか一項に記載の前記ソフトウェア完全性保護装置を備える、ネットワークシステム。
  14. 請求項10から12のいずれか一項に記載の前記ソフトウェア完全性検証装置を備える、ネットワークシステム。
  15. プログラムコードまたは命令を記憶するように構成されたメモリと、
    前記デバイスが請求項1から3のいずれか一項に記載の方法を実行できるように、前記プログラムコードまたは前記命令を実行するように構成されるプロセッサと
    を備える、デバイス。
  16. プログラムコードまたは命令を記憶するように構成されたメモリと、
    前記デバイスが請求項4から6のいずれか一項に記載の方法を実行できるように、前記プログラムコードまたは前記命令を実行するように構成されるプロセッサと
    を備える、デバイス。
  17. コンピュータ可読ストレージ媒体がプログラムコードまたは命令を記憶し、前記プログラムコードまたは命令がコンピュータ上で実行されるとき、前記コンピュータが、請求項1から3のいずれか一項に記載の方法を実行することができる、コンピュータ可読ストレージ媒体。
  18. コンピュータ可読ストレージ媒体がプログラムコードまたは命令を記憶し、前記プログラムコードまたは命令がコンピュータ上で実行されるとき、前記コンピュータが、請求項4から6のいずれか一項に記載の方法を実行することができる、コンピュータ可読ストレージ媒体。
  19. プログラムコードまたは命令を備えるコンピュータプログラムであって、前記コンピュータプログラムがコンピュータ上で実行されるとき、前記コンピュータが、請求項1から3のいずれか一項に記載の方法を実行することができる、コンピュータプログラム。
  20. プログラムコードまたは命令を備えるコンピュータプログラムであって、前記コンピュータプログラムがコンピュータ上で実行されるとき、前記コンピュータが、請求項4から6のいずれか一項に記載の方法を実行することができる、コンピュータプログラム。
JP2022524002A 2019-10-23 2020-10-21 ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置 Active JP7450713B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201911012940.1 2019-10-23
CN201911012940 2019-10-23
CN201911120987.X 2019-11-15
CN201911120987.XA CN112699343A (zh) 2019-10-23 2019-11-15 一种软件完整性保护、校验的方法及装置
PCT/CN2020/122503 WO2021078156A1 (zh) 2019-10-23 2020-10-21 一种软件完整性保护、校验的方法及装置

Publications (2)

Publication Number Publication Date
JP2022553393A JP2022553393A (ja) 2022-12-22
JP7450713B2 true JP7450713B2 (ja) 2024-03-15

Family

ID=75505359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022524002A Active JP7450713B2 (ja) 2019-10-23 2020-10-21 ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置

Country Status (7)

Country Link
US (1) US20220224546A1 (ja)
EP (1) EP4047493A4 (ja)
JP (1) JP7450713B2 (ja)
CN (1) CN112699343A (ja)
BR (1) BR112022007652A2 (ja)
CA (1) CA3184034A1 (ja)
WO (1) WO2021078156A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11848930B1 (en) * 2021-06-15 2023-12-19 Whatsapp Llc Methods, mediums, and systems for verifying devices in an encrypted messaging system
US11902453B2 (en) * 2021-06-25 2024-02-13 Intel Corporation Method, system and apparatus for delayed production code signing for heterogeneous artifacts
CN117093245B (zh) * 2023-10-18 2024-01-16 湖北芯擎科技有限公司 Ota升级包验证方法、装置、设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356833A (ja) 2000-06-13 2001-12-26 Kai:Kk ソフトウェアの不正使用防止システム
US20060064488A1 (en) 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
KR20130093847A (ko) 2012-01-27 2013-08-23 한국인터넷진흥원 어플리케이션 보안 시스템 및 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799662B2 (en) * 2012-07-27 2014-08-05 Adobe Systems Incorporated Method and apparatus for validating the integrity of installer files prior to installation
CN103873238A (zh) * 2014-03-26 2014-06-18 成都卫士通信息产业股份有限公司 一种密码机软件完整性的安全保护方法
CN105117665B (zh) * 2015-07-16 2017-10-31 福建联迪商用设备有限公司 一种终端产品模式与开发模式安全切换的方法及系统
US10659234B2 (en) * 2016-02-10 2020-05-19 Cisco Technology, Inc. Dual-signed executable images for customer-provided integrity
CN107241688A (zh) * 2017-06-14 2017-10-10 北京小米移动软件有限公司 应用安装包的签名、验证方法、装置及存储介质
CN110110507A (zh) * 2019-04-26 2019-08-09 深圳市国鑫恒宇科技有限公司 一种软件授权与保护的方法、装置、系统及存储介质
CN110245466B (zh) * 2019-06-19 2021-08-24 苏州科达科技股份有限公司 软件完整性保护和验证方法、系统、设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001356833A (ja) 2000-06-13 2001-12-26 Kai:Kk ソフトウェアの不正使用防止システム
US20060064488A1 (en) 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
KR20130093847A (ko) 2012-01-27 2013-08-23 한국인터넷진흥원 어플리케이션 보안 시스템 및 방법

Also Published As

Publication number Publication date
CN112699343A (zh) 2021-04-23
US20220224546A1 (en) 2022-07-14
CA3184034A1 (en) 2021-04-29
JP2022553393A (ja) 2022-12-22
WO2021078156A1 (zh) 2021-04-29
EP4047493A4 (en) 2022-12-07
BR112022007652A2 (pt) 2022-08-09
EP4047493A1 (en) 2022-08-24

Similar Documents

Publication Publication Date Title
JP7450713B2 (ja) ソフトウェア完全性保護方法および装置、ならびにソフトウェア完全性検証方法および装置
US9288155B2 (en) Computer system and virtual computer management method
CN109313690B (zh) 自包含的加密引导策略验证
US8856544B2 (en) System and method for providing secure virtual machines
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
CN100594692C (zh) 信息处理装置、服务器装置、信息处理装置的方法及服务器装置的方法
JP6371919B2 (ja) セキュアなソフトウェアの認証と検証
US11601268B2 (en) Device attestation including attestation-key modification following boot event
US20110246778A1 (en) Providing security mechanisms for virtual machine images
JP2016158270A (ja) データセンタへのプラットフォームの内包検証
TW201516733A (zh) 用以核對uefi認證變量變化之系統及方法
US11886593B2 (en) Verification of a provisioned state of a platform
CN108140092B (zh) 具有多个可信根的设备
US10282549B2 (en) Modifying service operating system of baseboard management controller
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
CN110730159A (zh) 一种基于TrustZone的安全和可信混合系统启动方法
KR20180046593A (ko) 펌웨어 서명 검증과 보안키 관리를 위한 사물인터넷 디바이스의 펌웨어 업데이트 시스템
CN107924440B (zh) 用于管理容器的方法、系统和计算机可读介质
CN112148314A (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
CN115934194A (zh) 一种控制器启动方法、装置、电子设备及储存介质
CN115329321A (zh) 一种固件的启动方法、芯片及计算设备
CN109508529B (zh) 一种支付终端安全启动校验的实现方法
RU2408071C2 (ru) Защищенные загрузка и хранение данных в устройстве обработки данных
CN111506915A (zh) 授权访问的控制方法、装置和系统
CN113032786B (zh) 认证凭证的传递方法、芯片及设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240305

R150 Certificate of patent or registration of utility model

Ref document number: 7450713

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150