JP7431899B2 - ソフトウェアを安全に更新する方法 - Google Patents

ソフトウェアを安全に更新する方法 Download PDF

Info

Publication number
JP7431899B2
JP7431899B2 JP2022125545A JP2022125545A JP7431899B2 JP 7431899 B2 JP7431899 B2 JP 7431899B2 JP 2022125545 A JP2022125545 A JP 2022125545A JP 2022125545 A JP2022125545 A JP 2022125545A JP 7431899 B2 JP7431899 B2 JP 7431899B2
Authority
JP
Japan
Prior art keywords
version
software
decryption key
encrypted
computing system
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
JP2022125545A
Other languages
English (en)
Other versions
JP2023118039A (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.)
Quanta Computer Inc
Original Assignee
Quanta Computer Inc
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 Quanta Computer Inc filed Critical Quanta Computer Inc
Publication of JP2023118039A publication Critical patent/JP2023118039A/ja
Application granted granted Critical
Publication of JP7431899B2 publication Critical patent/JP7431899B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3239Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Description

本発明は一般に、ソフトウェアを更新する方法に関する。より詳細には、本発明は、コンピューティングシステムにインストールされたファームウェアを安全に更新する方法に関する。
サーバ等のコンピューティングシステムには、動作の継続的な信頼性が保証されるよう、ソフトウェアアップデートがしばしば必要となる。例えば、コンピューティングシステムには、一般に、コンピューティングシステムの基本機能を制御する、ファームウェア(例えば、BIOS(basic input/output system)(基本入出力システム)またはUEFI(unified extensible firmware interface)(ユニファイドエクステンシブルファームウェアインターフェース)等)がインストールされたコントローラ(例えば、ベースボードマネジメントコントローラ(baseboard management controller:BMC)等)が含まれる。ファームウェアの更新が必要な場合、コンピュータシステムのユーザがソフトウェアパッケージをダウンロードし、当該ファームウェアを更新できるように、ベンダは、公開のウェブサイト上でソフトウェアパッケージをホストする。前記ソフトウェアパッケージには一般に、更新されたバージョンのファームウェア、ならびに、更新されたバージョンのファームウェアをインストールするために必要なファイルおよび/またはソフトウェアの他の任意の組み合わせが含まれているだろう。しかしながら、前記ソフトウェアパッケージが公開されている場合、悪意のあるユーザ(例えば、ハッカー)が前記ファームウェアを逆コンパイルし、ソースコードを入手する可能性がある。これは、一般に望ましいことではない。だが、ファームウェアアップデートへのアクセスを安全にユーザに提供するための現在の技術(例えば、電子メールの送信、特殊なダウンロードリンクの提供等)は、しばしば、面倒で時間のかかるものであり得る。このように、コンピューティングシステム上のソフトウェアを安全に更新するための、新規の方法が求められている。
実施形態、および同様の用語(例えば、実装形態、構成、態様、実施例、および選択肢)は、本開示の主題のすべておよび特許請求の範囲を広範に参照することを意図するものである。これらの用語を含む記述は、本明細書に記載された主題を限定するものでも、請求項の意味または特許請求の範囲を限定するものでもないことが理解されるべきである。本明細書に含まれる本開示の実施形態は、本概要ではなく、特許請求の範囲によって定められる。本概要は、本開示のさまざまな態様を高水準において概観したものであり、発明を実施するための形態の項目内でさらに説明される概念の一部を導入するものである。本概要は、特許請求される主題の鍵または本質的特徴を特定することを意図するものではない。また、本概要は、特許請求される主題の範囲を確定するために単独にて利用されることを意図するものでもない。当該主題は、本開示の明細書全体の適切な部分、任意のまたはすべての図面、および各請求項を参照することによって、理解されるべきものである。
本開示の特定の態様によれば、ソフトウェアを更新する方法は、第1バージョンの前記ソフトウェアと第1の復号キーとを、コンピューティングシステムに送信する工程を含む。当該方法は、第2バージョンの前記ソフトウェアと第2の復号キーとを生成する工程をさらに含む。当該方法は、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを暗号化する工程をさらに含む。暗号化された前記第2バージョンの前記ソフトウェアは、前記第2の復号キーではなく、前記第1の復号キーを用いて復号されるように構成される。当該方法は、暗号化された前記第2バージョンの前記ソフトウェアと暗号化された前記第2の復号キーとを、前記コンピューティングシステムに送信する工程をさらに含む。
いくつかの実装形態では、当該方法は、第3バージョンの前記ソフトウェアと第3の復号キーとを生成する工程を含む。当該方法は、前記第3バージョンの前記ソフトウェアと前記第3の復号キーとを暗号化する工程をさらに含む。前記第3バージョンの前記ソフトウェアは、前記第1の復号キーまたは前記第3の復号キーではなく、前記第2の復号キーを用いて復号されるように構成される。当該方法は、暗号化された前記第3バージョンの前記ソフトウェアと暗号化された第3の復号キーとを、前記コンピューティングシステムに送信する工程をさらに含む。
いくつかの実装形態では、暗号化されたバージョンの前記第1の復号キーと暗号化された前記第2の復号キーとは、暗号化された前記第3バージョンの前記ソフトウェアおよび暗号化された前記第3の復号キーとともに、前記コンピューティングシステムに送信される。
いくつかの実装形態では、当該方法は、暗号化された前記第3バージョンの前記ソフトウェアを送信する工程に続いて、暗号化された前記第2バージョンの前記ソフトウェアを前記コンピューティングシステムに再送信する工程をさらに含む。暗号化された前記第2バージョンの前記ソフトウェアは、以前に送信された前記第1の復号キーを用いて復号されるように構成される。
いくつかの実装形態では、前記第1バージョンの前記ソフトウェアは、前記コンピューティングシステムにインストールされた最初のバージョンの前記ソフトウェアである。
いくつかの実装形態では、前記第1の復号キーは、前記コンピューティングシステムに送信されるときに暗号化されない。
いくつかの実装形態では、前記第1バージョンの前記ソフトウェアと前記第1の復号キーとは、前記コンピューティングシステムに送信されるときに暗号化される。
いくつかの実装形態では、暗号化された前記第1バージョンの前記ソフトウェアは、前記第1の復号キーではなく、より前の復号キーを用いて復号されるように構成される。前記より前の復号キーは、暗号化された前記第1バージョンの前記ソフトウェアと暗号化された前記第1の復号キーとを送信するよりも前に、前記コンピューティングシステムに送信される。
いくつかの実装形態では、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを生成する工程は、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含むソフトウェアパッケージを生成する工程を含む。
いくつかの実装形態では、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを暗号化する工程は、前記ソフトウェアパッケージを暗号化する工程を含む。暗号化された前記ソフトウェアパッケージは、前記第2の復号キーではなく、前記第1の復号キーを用いて復号されるように構成される。
いくつかの実装形態では、暗号化された前記第2バージョンの前記ソフトウェアと暗号化された前記第2の復号キーとを、前記コンピューティングシステムに送信する工程は、暗号化された前記ソフトウェアパッケージを送信する工程を含む。
いくつかの実装形態では、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含む前記ソフトウェアパッケージを生成する工程は、前記第2バージョンの前記ソフトウェアに対するソースコードを生成する工程を含む。前記ソフトウェアパッケージを生成する工程は、修正されたソースコードを形成するよう、前記第2バージョンの前記ソフトウェアに対する前記ソースコード内へ前記第2の復号キーをパッケージ化する工程をさらに含む。前記ソフトウェアパッケージを生成する工程は、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含むソフトウェアパッケージを形成するよう、前記修正されたソースコードをコンパイルする工程をさらに含む。
いくつかの実装形態では、前記ソフトウェアは、電子デバイスまたは電子システム用のファームウェアである。
いくつかの実装形態では、前記ファームウェアは、コンピューティングシステムの基本入出力システム(BIOS)または前記コンピューティングシステムのユニファイドエクステンシブルファームウェアインターフェース(UEFI)である。
いくつかの実装形態では、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとは、ハッシュテーブルを用いて暗号化される。
いくつかの実装形態では、前記第2バージョンの前記ソフトウェアは、前記コンピューティングシステムにインストールされ、前記第1バージョンの前記ソフトウェアと置き換えられるように構成される。
いくつかの実装形態では、前記ソフトウェアは、コンピューティングシステム用のファームウェアである。前記第2バージョンの前記ソフトウェアは、前記コンピューティングシステムがシステム管理モードにあるとき、前記コンピューティングシステムによって復号されて前記コンピューティングシステムにインストールされるように構成される。
いくつかの実装形態では、前記第1バージョンの前記ソフトウェアは、暗号化された前記第2バージョンの前記ソフトウェアが前記コンピューティングシステムに送信されるとき、前記コンピューティングシステム上においてシステム管理割り込みをトリガするように構成される。
いくつかの実装形態では、前記システム管理割り込みは、前記コンピューティングシステムを前記システム管理モードに移行させ、当該コンピューティングシステムに前記第1の復号キーを用いて前記第2バージョンの前記ソフトウェアを復号させるように構成される。
いくつかの実装形態では、暗号化された前記第2バージョンの前記ソフトウェアは、公衆利用可能なネットワークロケーションにおいてホストされる。
本開示の特定の態様によれば、ソフトウェアを更新する方法は、第1バージョンの前記ソフトウェアと復号キーとを受信する工程を含む。当該方法は、前記第1バージョンの前記ソフトウェアをコンピューティングシステムにインストールする工程をさらに含む。当該方法は、第2バージョンの前記ソフトウェアを含む暗号化されたソフトウェアパッケージを受信する工程をさらに含む。当該方法は、暗号化された前記ソフトウェアパッケージを、以前に受信した前記復号キーによって復号する工程をさらに含む。当該方法は、前記第2バージョンの前記ソフトウェアを前記第1バージョンの前記ソフトウェアと置き換えるよう、前記コンピューティングシステムにインストールする工程をさらに含む。
上記の概要は、本開示の各実施形態またはすべての態様を表すことを意図するものではない。むしろ、前述の概要は、本明細書に記載される新規の態様および特徴のうちの一部の態様および特徴の一例を単に提供するものに過ぎない。本開示の上記の特徴および利点、ならびにその他の特徴および利点は、本発明を実施するための代表的な実施形態および様態についての以下の詳細な記載を、添付の図面および特許請求の範囲と関連させて理解することで、容易に明らかになるだろう。本開示のさらなる態様は、図面および以下に提供するその簡単な説明を参照してなされるさまざまな実施形態の詳細な説明を考慮すれば、当業者には明らかであろう。
本開示、ならびにその利点および図面は、添付の図面を参照して、代表的な実施形態に関する以下の説明によって、さらに良く理解されるであろう。これらの図面は、代表的な実施形態のみを示しているため、さまざまな実施形態の範囲または特許請求の範囲を限定するものと見なされるべきではない。
本開示の特定の態様に係る、暗号化されたソフトウェアパッケージを提供するプロセスのフローチャートである。
本開示の特定の態様に係る、図1の暗号化されたソフトウェアパッケージを用いて宛先デバイス上のソフトウェアを更新するプロセスのフローチャートである。
本開示の特定の態様に係る、図1の暗号化されたソフトウェアパッケージを用いて更新されたバージョンのソフトウェアをインストールするコンピューティングシステムの、2つのランタイムサイクルの図解である。
本開示の特定の態様に係る、暗号化されたソフトウェアパッケージを生成する方法のフローチャートである。
本開示の特定の態様に係る、暗号化されたソフトウェアパッケージを用いてソフトウェアを更新する方法のフローチャートである。
コンピューティングシステム(例えば、サーバ)は、ファームウェアを利用して基本的動作を制御する。コンピューティングシステムは、さまざまな種類のファームウェアを有し得る。当該さまざまな種類のファームウェアには、BIOS(basic input/output system:基本入出力システム)、UEFI(unified extensible firmware interface:ユニファイドエクステンシブルファームウェアインターフェース、UEFI BIOSと称されることもある)、およびその他の種類のファームウェアが含まれる。本明細書には、暗号化されていないバージョンのファームウェアに、意図しないユーザが誤ってアクセスすることができないように、コンピューティングシステムにインストールされたファームウェアを安全に更新する方法が開示されている。一般に、この方法には、更新されたバージョンのファームウェア(ならびに、ファームウェアの更新に必要な、他の任意のソフトウェアおよび/またはファイル)を含むソフトウェアパッケージを暗号化する工程と、暗号化された当該パッケージを意図するユーザに(例えば、意図するユーザのコンピューティングデバイスに)送る工程と、が含まれる。当該ユーザは、暗号化されたソフトウェアパッケージの復号に使用可能な復号キーを、すでに保有しているだろう。一般に、復号キーは、以前のソフトウェアパッケージの一部として、以前に送られているだろう。当該以前のソフトウェアパッケージには、コンピューティングシステムに現在インストールされているファームウェアのバージョンが含まれていただろう。このように、以前にユーザに送られた復号キーを用いて、後のソフトウェアパッケージを復号することができる。
さまざまな実施形態を、添付の図面を参照して説明する。同様または等価な要素を指定するため、同様の参照番号を図面全体にわたって使用する。図面は、必ずしも縮尺通りに描かれておらず、本開示の態様および特徴を例示するために、単に提供されているに過ぎない。本開示の特定の態様および特徴を十分に理解できるように、多数の特定の詳細、関係性および方法が記載されている。しかしながら、当業者ならば、これらの態様および特徴が、これらの特定の詳細のうちの1または複数の詳細なしに、その他の関係性において、またはその他の方法によって実施され得ることを認識するだろう。一部の例では、周知の構造または動作は、例示の目的のため、詳しくは示されていない。本明細書に開示のさまざまな実施形態は、例示したアクションまたは事象の順序によって必ずしも限定されるものではない。一部のアクションは、異なる順序で起こり得、かつ/または、他のアクションまたは事象と同時に起こり得るからである。さらに、本開示の特定の態様および特徴を実装するために、例示したアクションまたは事象のすべてが必ずしも必要とされるわけではない。
本開示に係る詳細な説明の目的のために、特に断りのない限り、そして適切な場合には、単数は複数を含み、逆もまた同様である。「を含む」という語は、「を含むがそれに限定されるものではない」を意味する。さらに、例えば「約」、「ほぼ」、「実質的に」、「近似的に」等の近似に関する語は、本明細書において、「で」、「に近い」、「ほとんど」、「の3~5%以内」、「の許容可能な製造公差内」、またはそれらの任意の論理的結合を意味するために使用することができる。同様に、「垂直」または「水平」という用語はそれぞれ、垂直方向または水平方向の「3~5%以内」をさらに含むことが意図される。さらに、「頂部」、「底部」、「左」、「右」、「上方」および「下方」等の方向に関する語は、参照図に示すのと同等の方向;例えば(複数の)対象または(複数の)要素に対して一般に利用される位置から等、言及される(複数の)対象または(複数の)要素から文脈的に理解されるのと同等の方向;あるいは、それ以外に本明細書に記載したのと同等の方向に関するものであることが意図される。
図1は、ユーザがダウンロードできるセキュアなソフトウェアパッケージを提供するプロセスのフローチャート100を示す。本開示では概して、コンピューティングシステムのBIOSを更新するプロセスが説明および例示される。しかしながら、本明細書に開示される原理は、コンピューティングシステムで使用され得る他の種類のファームウェア(例えば、UEFI)、およびファームウェア以外の他の種類のソフトウェアを更新するために使用することもできることを、当業者ならば理解するだろう。フローチャート100によって示す例において、第2バージョンのBIOSは、コンピューティングシステムにインストールされており、第3バージョンのBIOSは、ユーザが安全にダウンロードするように準備されている。このプロセスは、第3バージョンのBIOSに対するソースコード102(「BIOSソースコードVer.3」と表記)を生成する工程から始まる。ソースコード102は一般に、例えばC、C++、Java(登録商標)、Python等の、人間が読むことのできる任意の適切なプログラミング言語によるものであってよい。
次に、種々のバージョンのBIOSに関連付けられた復号キーが生成される。図示の例では、復号キーには、第2バージョンの復号キー104A(PREV_KEYとも表記)と、第3バージョンの復号キー104B(CURR_KEYとも表記)と、第4バージョンの復号キー104C(NEXT_KEYとも表記)と、が含まれる。復号キー104A~104Cは、複数の更新されたバージョンのBIOSを含む複数のソフトウェアパッケージを復号するために、コンピューティングシステムのユーザが利用することができる。本明細書においてより詳細に論じられるように、BIOSの新しいバージョンごとに、新たな復号キーが生成される。一般に、復号キーが生成されたとき、当該復号キーは、あまり類似していないことを保証するために、過去の復号キーと照合される。いくつかの実装形態においては、いったん復号キー104A~104Cがコンピューティングシステムに送信されると、復号キー104A~104Cは、コンピューティングシステム上に記憶され、コンピューティングシステムが受信したソフトウェアパッケージを復号するために、コンピューティングシステムによって自動的に使用される。
第2バージョンの復号キー104Aは、ソースコード102があるバージョンのBIOSに対するものである当該バージョンのBIOSに対して以前のバージョンのBIOS(例えば、図1の例では第2バージョンのBIOS)を含むソフトウェアパッケージの復号に使用することができる。第3バージョンの復号キー104Bは、ソースコード102があるバージョンのBIOSに対するものである当該バージョンのBIOS(例えば、図1の例では第3バージョンのBIOS)を含むソフトウェアパッケージの復号に使用することができる。第4バージョンの復号キー104Cは、ソースコード102があるバージョンのBIOSに対するものである当該バージョンのBIOSに対して将来のバージョンのBIOS(例えば、図1の例では将来の第4バージョンのBIOS)を含むソフトウェアパッケージの復号に使用することができる。
次に、復号キー104A~104Cをソースコード102内へパッケージ化して、修正されたソースコード106を形成することができる。図1に示すように、復号キー104A~104C(例えば、以前のバージョンのBIOSの復号キー、現在のバージョンのBIOSの復号キー、および次のバージョンのBIOSの復号キー)は、第3バージョンのBIOS(例えば、コンピューティングシステムがそのバージョンに更新されることになるバージョンのBIOS)に対するソースコード102内へパッケージ化されている。この結果は、修正されたソースコード106である。当該修正されたソースコード106には、次のバージョンのBIOSに対するソースコード102と、種々のバージョンのBIOSを含むさまざまなソフトウェアパッケージの復号に使用可能な復号キー104A~104Cと、が含まれる。一般に、復号キー104A~104Cが次のバージョンのBIOS自体に組み込まれるように、当該復号キー104A~104Cはソースコード102内へパッケージ化される。本明細書でさらに詳細に論じるように、復号キーが組み込まれたバージョンのBIOSがコンピューティングシステムにインストールされるとき、(インストールされたときの)そのバージョンのBIOSは、当該復号キーを管理することができ、後の(続く)バージョンのBIOSを含む暗号化されたソフトウェアパッケージを復号するために、当該復号キーを自動的に使用することができる。
次に、修正されたソースコード106をコンパイルして、ソフトウェアパッケージ108を形成する。修正されたソースコード106(およびソースコード102)がプログラミング言語で書かれた当該プログラミング言語のソースコードをコンパイルするために使用することのできる、任意の適切なコンパイラを用いて、当該修正されたソースコード106をコンパイルすることができる。記載されているように、修正されたソースコード106がコンパイルされたとき、ソフトウェアパッケージ108が更新されたバージョンのBIOSを形成するように、復号キー104A~104Cはソースコード102内へパッケージ化されており、当該更新されたバージョンのBIOSは、復号キー104A~104Cを含み、かつ、コンピューティングシステムにインストールできる。
最後に、ソフトウェアパッケージ108は暗号化され、暗号化されたソフトウェアパッケージ110を形成する。暗号化されたソフトウェアパッケージ110には、修正されたソースコード106のコンパイルされたバージョンが含まれている。当該修正されたソースコード106には、更新されたバージョンのBIOSに対するソースコード102と、復号キー104A~104Cとの両方が含まれる。複数の対応する復号キーをソースコード内へパッケージ化し、コンパイルし、そして暗号化することを可能にする、任意の適切な暗号化技術を用いて、ソフトウェアパッケージ108を暗号化することができる。また、その他の暗号化技術を使用することもできる。いったん、ソフトウェアパッケージ108が暗号化され、暗号化されたソフトウェアパッケージ110が形成されると、当該暗号化されたソフトウェアパッケージ110は、ユーザに(例えば、更新されたバージョンのBIOSをインストールするためにそれが用いられ得る、宛先コンピューティングシステムに)送信することができる。
いくつかの実装形態では、ソフトウェアパッケージ108は、暗号化されたソフトウェアパッケージ110を形成するために、ハッシュテーブルを用いて暗号化される。ハッシュテーブルは、ソフトウェアパッケージ108の8ビットからなる各グループ(例えば、各バイト)を取り換えることによって、暗号化されたソフトウェアパッケージ110を形成するために使用できる、8ビットの数字(例えば、1バイトの数字)の表である。一般に、ハッシュテーブルには、0~255の番号が付けられた、256個の異なる位置が含まれるだろう。各位置には、00からFFまでの、一意の2桁の16進数が含まれるだろう。1桁の16進数(0-Fの範囲を有し、0~9の後にはA~Fが続く)は、4ビットの2進数に相当する。よって、表の各位置内にある2桁の16進数は、8ビットの2進数を表す。16進数の値00は、2進数の00000000を表し、10進数(例えば、基数は10)の0を表す。16進数の値FFは、2進数の11111111を表し、10進数の255を表す。2つの16進数の値の範囲は10進数の0~255であるので、16進数および/または2進数を用いて、ハッシュテーブル自体内の位置を表すこともできる。そのため、ハッシュテーブル内の位置0は、位置00(16進数)および位置00000000(2進数)とも表せる。同様に、ハッシュテーブル内の位置255は、位置FF(16進数)および位置11111111(2進数)とも表せる。一般に、本開示による復号に使用される任意のハッシュテーブルは、各位置に、一意の2桁の16進数を有するだろう。すなわち、ハッシュテーブル内には256個の可能な2桁の16進数と256個の位置とがあるので、あらゆる可能な2桁の16進数は、ハッシュテーブルの複数の位置のうちの1つの位置に配置されているだろう。
ソフトウェアパッケージ108を暗号化するために、ソフトウェアパッケージ108の8ビットからなる各グループはまず、ハッシュテーブル内に配置される。次に、ソフトウェアパッケージ108における8ビットは、ソフトウェアパッケージ108のその8ビットが配置されたハッシュテーブル内の位置を表す8ビットに置き換えられる。あらゆる可能な2桁の16進数はハッシュテーブルのエントリ内に配置されているので、ソフトウェアパッケージ108内の8ビットのグループが配置および置換されないということは起こり得ない。例えば、ソフトウェアパッケージ108内の8ビットのグループは、2進数の10001011であり得る。この2進数の10001011は、16進数の8Bに相当する。ハッシュテーブルの一例では、この値8Bは、位置238に配置されている。10進数の238は、16進数のEE、および2進数の11101110に相当する。このため、ソフトウェアパッケージ108内の8ビットの数10001011は、修正されたソフトウェアパッケージ110内の8ビットの数11101110に置き換えられる。
暗号化されたソフトウェアパッケージ110を復号するために、ハッシュテーブルを逆に使用することができる。8ビットのグループは、暗号化されたソフトウェアパッケージ110内に位置し、当該暗号化されたソフトウェアパッケージ内の当該8ビット値に対応するハッシュテーブルのエントリ内に配置された8ビット値(例えば、2桁の16進数)に置き換えられる。そのため、暗号化されたソフトウェアパッケージ110内の8ビットのグループが11011010である場合(16進数のDA、および10進数の218に相当)、その8ビットは、ハッシュテーブルのエントリ218に位置する8ビット(例えば、2桁の16進数)に置き換えられるだろう。所与の暗号化されたソフトウェアパッケージに対する復号キーには一般に、少なくとも、ソフトウェアパッケージを暗号化し、暗号化されたソフトウェアパッケージを形成するために使用したハッシュテーブルが含まれるだろう。ハッシュテーブルは256個の別々の位置を有するので、256個の位置を有する生成可能な異なるハッシュテーブルは、256!(256の階乗)個存在する。したがって、悪意のある第三者が暗号化されたソフトウェアパッケージを復号することは、当該悪意のある第三者が必要な復号キーをすでに保有しているのでなければ、事実上不可能であろう。
修正されたソースコード106がソフトウェアパッケージ108へとコンパイルされたとき、ソフトウェアパッケージ108がそれ自体、次のバージョンのBIOSとしてインストールすることができ、復号キーがBIOSそれ自体に組み込まれているように、復号キー(例えば、復号キー104A~104C)は、ソースコード102内へパッケージ化され、当該修正されたソースコード106を形成する。そのため、BIOSは、必要に応じて復号キーを自動的に用いて、暗号化されたソフトウェアパッケージを復号することができる。ソフトウェアパッケージ108がハッシュテーブルを用いて暗号化される実装形態では、修正されたソースコード106には一般に、ソースコード内に含まれるハッシュテーブルが含まれているだろう(例えば、ソースコードでは、直接当該ソースコードのヘッダファイル内のテーブルが宣言されるだろう)。
図1では、暗号化されたソフトウェアパッケージ110は、異なる3つの復号キー104A~104Cを含むものとして示されている。一方、他の複数の実装形態では、暗号化されたソフトウェアパッケージ110には、第4バージョンの復号キー104Cのみが含まれ得る。したがって、これらの実装形態では、第3バージョンのBIOSに対するソースコードは、第4バージョンの復号キー104Cのみとともに、パッケージ化することができる。コンピューティングシステムは、第4バージョンのBIOSを含む将来の暗号化されたソフトウェアパッケージを復号するために、当該第4バージョンの復号キー104Cを将来、使用することができる。さらに他の実装形態では、暗号化されたソフトウェアパッケージ110は、当該暗号化されたソフトウェアパッケージ110が第4バージョンの復号キー104Cを含む限り、任意の数の復号キーを含んでもよい。
図2は、暗号化されたソフトウェアパッケージ110を用いてコンピューティングシステムにインストールされたBIOSのバージョンを更新するプロセスのフローチャート200を示す。フローチャート200の示す例では、コンピューティングシステムは、(第3バージョンのBIOSを含む)暗号化されたソフトウェアパッケージ110を受信する。当該コンピューティングシステムには現在、第2バージョンのBIOSがインストールされている。暗号化されたソフトウェアパッケージ110にはまた、第2バージョンのBIOSを含む暗号化されたソフトウェアパッケージに対する第2バージョンの復号キー104Aと、第3バージョンのBIOSを含む暗号化されたソフトウェアパッケージ(例えば、暗号化されたソフトウェアパッケージ110)に対する第3バージョンの復号キー104Bと、将来の第4バージョンのBIOSを含む暗号化されたソフトウェアパッケージに対する第4バージョンの復号キー104Cと、が含まれる。本明細書に記載のように、復号キー104A~104Cは、第3バージョンのBIOSそれ自体に組み込まれている。
現在コンピューティングシステムにインストールされている第2バージョンのBIOSは、ソフトウェアパッケージ202の一部として、コンピューティングシステムに以前に送信されたものである。ソフトウェアパッケージ202には、第2バージョンのBIOSと、当該第2バージョンのBIOSに組み込まれた3つの復号キーと、が含まれる。本明細書においてより詳細に論じられるように、ソフトウェアパッケージ202は、2つの異なる方法のうちの1つの方法によって、コンピューティングシステムに以前に送信されたものである。第1に、ソフトウェアパッケージ202は、暗号化されていない形式にてコンピューティングシステムに送信されたものであり得る。第2に、ソフトウェアパッケージ202は、当該コンピューティングシステムがソフトウェアパッケージ202を復号するのに必要な復号キーをすでに保有している状態(例えば、ソフトウェアパッケージ202を受信したときのコンピューティングシステムにインストールされていたBIOSに、復号キーが組み込まれていた等)で、暗号化された形式にてコンピューティングシステムに送信されたものであり得る。
ソフトウェアパッケージ202にとともに以前に送られた3つの復号キーには、第1バージョンのBIOSを含む暗号化されたソフトウェアパッケージを復号するために使用される第1バージョンの復号キー104Dと、(第2バージョンのBIOSを含む暗号化されたソフトウェアパッケージを復号するために使用可能な)第2バージョンの復号キー104Aと、(第3バージョンのBIOSを含む暗号化されたソフトウェアパッケージ110を復号するために使用可能な)第3バージョンの復号キー104Bと、が含まれる。
第3バージョンのBIOSに随伴する第3バージョンの復号キー104Bは、暗号化されたソフトウェアパッケージ110内で暗号化されているので、当該第3バージョンの復号キー104Bは、暗号化されたソフトウェアパッケージ110の復号に使用することができない。しかしながら、コンピューティングシステムに以前に送信されたソフトウェアパッケージ202にも、第3バージョンの復号キー104Bが含まれている。そのため、第3バージョンの復号キー104Bは、現在コンピューティングシステムにインストールされている第2バージョンのBIOSに、すでに組み込まれている。したがって、コンピューティングシステムは、以前に受信した第3バージョンの復号キー104B(例えば、暗号化されたソフトウェアパッケージ110を受信したときのコンピューティングシステムにインストールされていたバージョンのBIOSに組み込まれている復号キー)を用いて、暗号化されたソフトウェアパッケージ110を復号することができる。図2に示すように、暗号化されたソフトウェアパッケージ110を復号することによって、第3バージョンのBIOSと復号キー104A~104Cとを含むソフトウェアパッケージ108が、コンピューティングシステムに提供される。その後、ボックス204に示すように、第3バージョンのBIOSを、コンピューティングシステムにインストールすることができる。さらに、コンピューティングシステムはいまや第4バージョンの復号キー104Cを保有しているため、当該コンピューティングシステムは、第4バージョンのBIOSを含む将来の暗号化されたソフトウェアパッケージを復号できることになる。図1と同様に、図2では、暗号化されたソフトウェアパッケージ110は、異なる3つの復号キー104A~104Cを含むものとして示されている。一方、他の実装形態では、暗号化されたソフトウェアパッケージ110は、当該暗号化されたソフトウェアパッケージ110が第4バージョンの復号キー104Cを含む限り、任意の数の復号キーを含んでもよい。
このように、図1および図2に示すように、特定の暗号化されたソフトウェアパッケージを復号するために使用可能な復号キーは、暗号化されたソフトウェアパッケージが送信される前に、コンピューティングシステムに以前に送信されているだろう。その後、更新されたバージョンのBIOSを含む暗号化されたソフトウェアパッケージをコンピューティングシステムが後に受信したとき、コンピューティングシステムは、暗号化されたソフトウェアパッケージを復号するために必要な復号キーをすでに保有していることになる。このように、複数の暗号化されたソフトウェアパッケージは、複数の復号キーとBIOSの複数のバージョンとを含む、複数の暗号化されたソフトウェアパッケージの連鎖(チェーン)を形成する。コンピューティングシステムに送信される各暗号化されたソフトウェアパッケージには、コンピューティングシステムに送信されることになる次の暗号化されたソフトウェアパッケージに対する復号キーが含まれている。そのため、コンピューティングシステムは、当該次の暗号化されたソフトウェアパッケージを、それを受信したときに復号することができることになる。すなわち、コンピューティングシステムは、暗号化されたソフトウェアパッケージの受信時に、必要な復号キーをすでに保有していることになる。
一般に、当該複数の暗号化されたソフトウェアパッケージの連鎖は、暗号化されていない(例えば、別の何らかのソフトウェアパッケージ内でそれ自体暗号化されていない)最初の復号キーから始まる。コンピューティングシステムには、当該暗号化されていない最初の復号キーに対するアクセスが与えられているだろう。そのため、当該コンピューティングシステムは、連鎖内の第1の暗号化されたソフトウェアパッケージを復号できることになる。当該連鎖内の第1の暗号化されたソフトウェアパッケージには、次のバージョンのBIOSと、第2の暗号化されたソフトウェアパッケージに対する復号キーと、が含まれるだろう。
いくつかの実装形態では、コンピューティングシステムは、最初のバージョンのBIOSを含むように構成され、(次のバージョンのBIOSを含む暗号化されたソフトウェアパッケージの復号に使用されることになる)暗号化されていない最初の復号キーは、当該最初のバージョンのBIOSに組み込まれている。そのため、ユーザが最初にコンピューティングシステムを入手して使用し始めたとき、当該コンピューティングシステムには、暗号化されていない最初の復号キーが含まれているだろう。当該暗号化されていない最初の復号キーは、連鎖内における第1の暗号化されたソフトウェアパッケージを復号するために使用されるだろう。このソフトウェアパッケージには、次のバージョンのBIOS(例えば、BIOSに対する第1の更新)が含まれ、連鎖内における次の暗号化されたソフトウェアパッケージに対して必要になるだろう復号キーは、当該次のバージョンのBIOSに組み込まれているだろう。
他の複数の実装形態では、ベンダは、所望の受信者(例えば、コンピューティングシステムの検証された(verified)ユーザ)のみが暗号化されていない最初の復号キーを受信することを保証する方法によって、当該暗号化されていない最初の復号キーを提供してもよい。これらの実装形態には、検証された受信者の各々に、特殊なダウンロードリンクを送ること、暗号化されていない最初の復号キーを、検証された受信者に電子メールを介して直接送信すること、およびその他の技術が含まれ得るだろう。これらの実装形態では、コンピューティングシステムのユーザは、コンピューティングシステム内に現在インストールされているバージョンのBIOSに、復号キーをインストールするか、あるいは当該復号キーを含める処置をとってもよい。
これらの実装形態のいずれにおいても、第三者(例えば、ハッカー等の意図しない受信者)が、暗号化されていない最初の復号キーを入手することは困難である。以降の復号キーはすべて、他のソフトウェアパッケージ内でそれ自体が暗号化されることになるため、たとえBIOSを含む暗号化されたソフトウェアパッケージが公開されたとしても、ソフトウェアパッケージ内のBIOSのソースコードを第三者が入手することはできなくなる。
図3は、コンピューティングシステムに現在インストールされているBIOSを更新するために復号キーを使用するコンピューティングシステムの2つのランタイムサイクルを示す。フローチャート300には、現在のバージョンのBIOSのランタイムサイクル302Aと、次のバージョンのBIOSのランタイムサイクル302Bと、が含まれている。ランタイムサイクル302Aは、CURR_BIOSランタイムと表記され、ランタイムサイクル302Bは、NEXT_BIOSランタイムと表記される。ランタイムサイクル302Aに示すように、コンピューティングシステムは、以前のバージョンの復号キー304A(PREV_KEYと表記)と、現在のバージョンの復号キー304B(CURR_KEYと表記)と、第1の次のバージョンの復号キー304C(NEXT_KEYと表記)と、をすでに保有している。これらの復号キーは、コンピューティングシステムによって以前に受信されており、暗号化されていない形式にて現在のバージョンのBIOSに組み込まれている。図1および図2の例を参照すると、復号キー304A~304Cはそれぞれ、復号キー104A~104Cに対応する。
ランタイムサイクル302Aでは、コンピューティングシステムは、暗号化された(encrypted)ソフトウェアパッケージ306(NEXT_encrypted_BIOSと表記)を受信している。当該暗号化されたソフトウェアパッケージ306には、当該コンピューティングシステムにインストールされることになる、次のバージョンのBIOSが含まれる。現在のバージョンのBIOSは、次のバージョンの復号キー304Cを用いて、暗号化されたソフトウェアパッケージ306を復号できる。次のバージョンの復号キー304Cは、コンピューティングデバイスによって以前に受信されたものであり、当該コンピューティングデバイス上の現在のバージョンのBIOSに、暗号化されていない形式にて現在、組み込まれている。そのため、現在のバージョンのBIOSは、次のバージョンの復号キー304Cを使用して、暗号化されたソフトウェアパッケージ306を復号し、その結果、暗号化されていないソフトウェアパッケージ308が形成される。当該暗号化されていないソフトウェアパッケージ308(NEXT_BIOSと表記)には、次のバージョンのBIOSと、複数の復号キーと、が含まれる。
ランタイムサイクル302Bでは、コンピューティングシステムは、ランタイムサイクル302Aおよび302Bにまたがるボックス310に示すように、現在のバージョンのBIOSと置き換えるよう、次のバージョンのBIOSをインストールする(ときにBIOSのフラッシュと称される)。図示のように、暗号化されていないソフトウェアパッケージ308内に含まれる3つの復号キーには、現在のバージョンの復号キー304Bと、第1の次のバージョンの復号キー304Cと、第2の次のバージョンの復号キー304D(NEXT_NEXT_KEYと表記)と、が含まれる。当該第2の次のバージョンの復号キー304Dは、将来の暗号化されたソフトウェアパッケージを復号するために使用することができる。当該将来の暗号化されたソフトウェアパッケージには、以後のバージョンのBIOS(例えば、NEXT_NEXT_BIOS)が含まれる。
いくつかの実装形態では、コンピューティングシステムがシステム管理モードにあるとき、次のバージョンのBIOSが復号され、インストールされる。暗号化されたソフトウェアパッケージ306が、コンピューティングシステムに送信され、当該コンピューティングシステムのメモリ内に格納されたとき、当該コンピューティングシステムにインストールされている現在のバージョンのBIOSによって、システム管理割り込みがトリガされる。システム管理割り込みは、コンピューティングシステムをシステム管理モードに移行させる。システム管理モードにおいて、コンピューティングシステムは、暗号化されたソフトウェアパッケージ306を次の復号キー304Cを用いて復号し、次のバージョンのBIOSをインストールする。さらに、コンピューティングシステムは、所与のソフトウェアパッケージ内に含まれる他の復号キーを用いて、以前のバージョンのBIOSへとフラッシュバックすることもできる。
図4は、暗号化されたソフトウェアパッケージを生成する方法400のフローチャートを示す。方法400では、図1~図3に関して本明細書で論じられた原理が利用されている。いくつかの実装形態では、ソフトウェアは、電子デバイス用または電子システム用のファームウェアである。例えば、本明細書に開示のように、ソフトウェアは、コンピューティングシステムのBIOSまたはUEFIであってもよい。しかしながら、方法400は、他のタイプのソフトウェアを更新するために使用することもできる。方法400の工程402において、第1バージョンのソフトウェアと第1の復号キーとが、宛先デバイスに送信される。いくつかの場合には、宛先デバイスは、コンピューティングシステムであり、ソフトウェアは、コンピューティングシステム用のファームウェア(例えば、BIOSまたはUEFI)である。第1の復号キーは、宛先デバイスに送られることになる第2バージョンのソフトウェアを含む将来のソフトウェアパッケージを復号するように構成される。
いくつかの実装形態では、第1バージョンのソフトウェアおよび/または第1の復号キーは、宛先デバイスに送信されるときに暗号化されない。これらの実装形態のうちの一部では、第1バージョンのソフトウェアは、宛先デバイスにインストールされた最初のバージョンのソフトウェア(例えば、コンピューティングデバイスにインストールされた第1バージョンのBIOSまたはUEFI)であり、第1バージョンのソフトウェアを送信する工程は、宛先デバイスへのソフトウェアの最初のインストールプロセスを含み得るだろう。一般に、第1の復号キーは、宛先デバイスが将来のバージョンのソフトウェア(例えば、将来のバージョンのBIOSまたはUEFI)を復号するために使用することになる、第1の(最初の)復号キーである。他の複数の実装形態では、第1バージョンのソフトウェアと第1の復号キーとが暗号化される。これらの実装形態では、第1バージョンのソフトウェアと第1の復号キーとは一般に、復号キーおよびソフトウェアの複数のバージョンの連鎖の一部である。一般に、宛先デバイスは、第1バージョンのソフトウェアと第1の復号キーとを復号するために使用される、より前の復号キーをすでに保有しているだろう。
方法400の工程404において、第2バージョンのソフトウェアと第2バージョンの復号キーとが、任意の適切な技術を用いて生成される。いくつかの実装形態では、第2バージョンのソフトウェアと第2の復号キーとを生成する工程には、第2バージョンのソフトウェアに対するソースコードを生成する工程と、修正されたソースコードを形成するよう、当該ソースコード内へ第2の復号キーをパッケージ化する工程と、第2バージョンのソフトウェアと第2の復号キーとを含むソフトウェアパッケージへと、当該修正されたソースコードをコンパイルする工程と、が含まれる。
方法400の工程406において、第2バージョンのソフトウェアと第2の復号キーとが暗号化され、暗号化されたソフトウェアパッケージが形成される。このソフトウェアパッケージは、第2の復号キーではなく、(以前に宛先デバイスに送信された)第1の復号キーによって復号されるように構成される。他の実装形態では、第2バージョンのソフトウェアと第2の復号キーとは、個々に暗号化されてもよく、または、ソフトウェアパッケージが作成されないような方法で共に暗号化されてもよい(例えば、第2バージョンのソフトウェアと第2の復号キーとを含むフォルダまたはZIPファイルが暗号化されてもよい)。いずれの場合においても、第2の復号キーではなく第1の復号キーを用いて、第2バージョンのソフトウェアと第2の復号キーとを復号できるように、暗号化が行われる。
方法400の工程408において、暗号化された第2バージョンのソフトウェアと暗号化された第2の復号キーとが、宛先デバイスに送信される。いくつかの場合には、暗号化された第2バージョンのソフトウェアと暗号化された第2の復号キーとは、公衆利用可能なネットワークロケーションにおいてホストされる。宛先デバイスは、以前に送信された第1の復号キーを用いて、第2バージョンのソフトウェアと第2の復号キーとを復号できる。その後、第2バージョンのソフトウェアを宛先デバイスにインストールして、第1バージョンのソフトウェアと置き換えることができる。第2バージョンのソフトウェアと第2の復号キーとがソフトウェアパッケージ内へパッケージ化される実装形態では、工程408には、暗号化されたソフトウェアパッケージを宛先デバイスに送信する工程が含まれる。当該暗号化されたソフトウェアパッケージは、以前に送信された第1の復号キーを用いて、宛先デバイスによって復号することができる。
いくつかの実装形態では、方法400の複数の上記工程は、複数のバージョンのソフトウェアと複数の復号キーとの連鎖の一部を形成する。そのため、これらの実装形態では、方法400は、第3バージョンのソフトウェアと第3の復号キーとを生成する工程をさらに含んでもよい。そして、第3バージョンのソフトウェアと第3の復号キーとは、第1の復号キーまたは第3の復号キーではなく、以前に送信された第2の復号キーによって復号できるように、暗号化することができる。(暗号化されたソフトウェアパッケージ内へパッケージ化され得る)暗号化された第3バージョンのソフトウェアと暗号化された第3の復号キーとは、宛先デバイスに送信することができる。当該宛先デバイスは第2の復号キーを(第2バージョンのソフトウェアとともに)以前に受信し、第1の復号キーを用いて当該第2の復号キーを復号したので、当該宛先デバイスは、いまや第2の復号キーを使用して、第3バージョンのソフトウェアと第3の復号キーとを復号することができる。
図5は、宛先デバイスの観点からの、暗号化されたソフトウェアパッケージを用いてソフトウェアを更新する方法500のフローチャートを示す。方法500は概して、方法400に対応している。そのため、ソフトウェアは、例えばコンピューティングシステムのBIOSまたはUEFI等の、電子デバイスまたは電子システムのファームウェアであってもよい。方法500の工程502において、宛先デバイスは、第1バージョンのソフトウェアと復号キーとを受信する。第1バージョンのソフトウェアおよび/または第1の復号キーは、宛先デバイスに最初からインストールされていてもよいだろうし、後で受信されてもよい。第1バージョンのソフトウェアおよび/または第1の復号キーは、暗号化されていない形式または暗号化された形式(この場合、宛先デバイスは一般に、これらを復号するのに必要な復号キーを保有しているだろう)にて、宛先デバイスによって受信できるだろう。
方法500の工程504において、第1バージョンのソフトウェアが、宛先デバイスにインストールされる。第1バージョンのソフトウェアが暗号化されていた場合は、第1バージョンのソフトウェアは、復号された後にインストールされる。方法500の工程506において、宛先デバイスは、暗号化された第2バージョンのソフトウェアを受信する。いくつかの実装形態では、第2バージョンのソフトウェアは、暗号化されたソフトウェアパッケージの一部として、形成されている。このソフトウェアパッケージには、追加の復号キーが含まれてもよいだろう。方法500の工程508において、宛先デバイスは、以前に工程502において受信した復号キーを用いて、暗号化された第2バージョンのソフトウェアを復号する。第2バージョンのソフトウェアが暗号化されたソフトウェアパッケージ内にある実装形態では、工程508には、以前に受信した復号キーを用いて、暗号化された第2のパッケージを復号する工程が含まれる。方法500の工程510において、第2バージョンのソフトウェアが、第1バージョンのソフトウェアと置き換えられるよう、宛先デバイスにインストールされる。
1または複数の実装形態に関して本開示の実施形態を図示および説明してきたが、本明細書および添付の図面を読み、理解することで、当業者であれば、均等な変更および修正を想起または理解するだろう。さらに、本開示の特定の特徴はいくつかの実装形態のうちの1つの実装形態のみに関して開示されている場合があるが、任意の所与の応用(用途)または特定の応用(用途)に関して望ましくかつ有利であり得るように、かかる特徴を他の実装形態の1または複数の他の特徴と組み合わせてもよい。
本開示のさまざまな実施形態を上述してきたが、それらの実施形態が、限定するものとしてではなく、単に例示するものとして提示されていることを理解されたい。本開示の精神または範囲から逸脱することなく、本明細書の開示にしたがって、開示された実施形態に対して多数の変更を行うことができる。このように、本開示の広がりおよび範囲は、上述の実施形態のいずれによっても限定されるべきではない。むしろ、本開示の範囲は、以下の請求項およびその均等物にしたがって画定されるべきである。

Claims (9)

  1. ソフトウェアを更新する方法であって、
    コンピュータシステムが、第1バージョンの前記ソフトウェアと第1の復号キーとを、コンピューティングシステムに送信する工程と、
    前記コンピュータシステムが、第2バージョンの前記ソフトウェアと第2の復号キーとを生成する工程と、
    前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを暗号化する工程であって、暗号化された前記第2バージョンの前記ソフトウェアは、前記第2の復号キーではなく、前記第1の復号キーを用いて前記コンピューティングシステムのために復号されるように構成される工程と、
    前記コンピュータシステムが、暗号化された前記第2バージョンの前記ソフトウェアと暗号化された前記第2の復号キーとを、前記コンピューティングシステムに送信する工程と、を含
    さらに
    前記コンピュータシステムが、第3バージョンの前記ソフトウェアと第3の復号キーとを生成する工程と、
    前記コンピュータシステムが、前記第3バージョンの前記ソフトウェアと前記第3の復号キーとを暗号化する工程であって、前記第3バージョンの前記ソフトウェアは、前記第1の復号キーまたは前記第3の復号キーではなく、前記第2の復号キーを用いて前記コンピューティングシステムのために復号されるように構成される工程と、
    前記コンピュータシステムが、暗号化された前記第3バージョンの前記ソフトウェアと暗号化された第3の復号キーとを、前記コンピューティングシステムに送信する工程と、
    を含み、
    暗号化されたバージョンの前記第1の復号キーと暗号化された前記第2の復号キーとは、暗号化された前記第3バージョンの前記ソフトウェアおよび暗号化された前記第3の復号キーとともに、前記コンピュータシステムから前記コンピューティングシステムに送信される、方法。
  2. 前記第1バージョンの前記ソフトウェアは、前記コンピューティングシステムにインストールされた最初のバージョンの前記ソフトウェアであり、
    前記第1の復号キーは、前記コンピュータシステムから前記コンピューティングシステムに送信されるときに前記コンピュータシステムによって暗号化されない、請求項1に記載の方法。
  3. 前記第1バージョンの前記ソフトウェアと前記第1の復号キーとは、前記コンピュータシステムから前記コンピューティングシステムに送信されるときに前記コンピュータシステムによって暗号化され、
    暗号化された前記第1バージョンの前記ソフトウェアは、前記第1の復号キーではなく、より前の復号キーを用いて前記コンピューティングシステムのために復号されるように構成され、
    前記より前の復号キーは、前記コンピュータシステムが暗号化された前記第1バージョンの前記ソフトウェアと暗号化された前記第1の復号キーとを送信するよりも前に、前記コンピュータシステムによって前記コンピューティングシステムに送信される、請求項1に記載の方法。
  4. 前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを生成する工程は、前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含むソフトウェアパッケージを生成する工程を含み、
    前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを暗号化する工程は、前記コンピュータシステムが、前記ソフトウェアパッケージを暗号化する工程を含み、暗号化された前記ソフトウェアパッケージは、前記第2の復号キーではなく、前記第1の復号キーを用いて前記コンピューティングシステムのために復号されるように構成され、
    前記コンピュータシステムが、暗号化された前記第2バージョンの前記ソフトウェアと暗号化された前記第2の復号キーとを、前記コンピューティングシステムに送信する工程は、前記コンピュータシステムが、暗号化された前記ソフトウェアパッケージを送信する工程を含み、
    前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含む前記ソフトウェアパッケージを生成する工程は、
    前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアに対するソースコードを生成する工程と、
    前記コンピュータシステムが、修正されたソースコードを形成するよう、前記第2バージョンの前記ソフトウェアに対する前記ソースコード内へ前記第2の復号キーをパッケージ化する工程と、
    前記コンピュータシステムが、前記第2バージョンの前記ソフトウェアと前記第2の復号キーとを含むソフトウェアパッケージを形成するよう、前記修正されたソースコードをコンパイルする工程と、
    を含む、請求項1に記載の方法。
  5. 前記ソフトウェアは、電子デバイスまたは電子システム用のファームウェアであり、
    前記ファームウェアは、コンピューティングシステムの基本入出力システム(BIOS)または前記コンピューティングシステムのユニファイドエクステンシブルファームウェアインターフェース(UEFI)である、請求項1に記載の方法。
  6. 前記第2バージョンの前記ソフトウェアと前記第2の復号キーとは、前記コンピュータシステムによってハッシュテーブルを用いて暗号化され、
    前記第2バージョンの前記ソフトウェアは、前記コンピューティングシステムによって前記コンピューティングシステムにインストールされ、前記第1バージョンの前記ソフトウェアと置き換えられるように構成される、
    請求項1に記載の方法。
  7. 前記ソフトウェアは、コンピューティングシステム用のファームウェアであり、
    前記第2バージョンの前記ソフトウェアは、前記コンピューティングシステムがシステム管理モードにあるとき、前記コンピューティングシステムによって復号されて前記コンピューティングシステムによって前記コンピューティングシステムにインストールされるように構成され、
    前記第バージョンの前記ソフトウェアは、暗号化された前記第2バージョンの前記ソフトウェアが前記コンピュータシステムによって前記コンピューティングシステムに送信されるとき、前記コンピューティングシステム上においてシステム管理割り込みをトリガするように構成され、
    前記システム管理割り込みは、前記コンピューティングシステムを前記システム管理モードに移行させ、当該コンピューティングシステムに前記第1の復号キーを用いて前記第2バージョンの前記ソフトウェアを復号させるように構成される、請求項1に記載の方法。
  8. 暗号化された前記第2バージョンの前記ソフトウェアは、公衆利用可能なネットワークロケーションにおいてホストされる、請求項1に記載の方法。
  9. ソフトウェアを更新する方法であって、
    コンピューティングシステムが、最初に、第1バージョンの前記ソフトウェアと第1の復号キーとをコンピュータシステムから受信する工程と、
    前記コンピューティングシステムが、前記第1バージョンの前記ソフトウェアを前記コンピューティングシステムにインストールする工程と、
    前記コンピューティングシステムが、次いで、第2バージョンの前記ソフトウェアと第2の復号キーとを含む暗号化されたソフトウェアパッケージを受信する工程と、
    前記コンピューティングシステムが、暗号化された前記ソフトウェアパッケージを、以前に受信した前記第1の復号キーによって復号する工程と、
    前記コンピューティングシステムが、前記第2バージョンの前記ソフトウェアを前記第1バージョンの前記ソフトウェアと置き換えるよう、前記コンピューティングシステムにインストールする工程と、を含
    さらに、
    前記コンピュータシステムが、第3バージョンの前記ソフトウェアと第3の復号キーとを生成する工程と、
    前記コンピュータシステムが、前記第3バージョンの前記ソフトウェアと前記第3の復号キーとを暗号化する工程であって、前記第3バージョンの前記ソフトウェアは、前記第1の復号キーまたは前記第3の復号キーではなく、前記第2の復号キーを用いて前記コンピューティングシステムのために復号されるように構成される工程と、
    前記コンピュータシステムが、暗号化された前記第3バージョンの前記ソフトウェアと暗号化された第3の復号キーとを、前記コンピューティングシステムに送信する工程と、
    を含み、
    暗号化されたバージョンの前記第1の復号キーと暗号化された前記第2の復号キーとは、暗号化された前記第3バージョンの前記ソフトウェアおよび暗号化された前記第3の復号キーとともに、前記コンピュータシステムから前記コンピューティングシステムに送信される、方法。
JP2022125545A 2022-02-11 2022-08-05 ソフトウェアを安全に更新する方法 Active JP7431899B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/670,122 US12118091B2 (en) 2022-02-11 2022-02-11 Methods for securely updating software
US17/670,122 2022-02-11

Publications (2)

Publication Number Publication Date
JP2023118039A JP2023118039A (ja) 2023-08-24
JP7431899B2 true JP7431899B2 (ja) 2024-02-15

Family

ID=87558692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022125545A Active JP7431899B2 (ja) 2022-02-11 2022-08-05 ソフトウェアを安全に更新する方法

Country Status (4)

Country Link
US (1) US12118091B2 (ja)
JP (1) JP7431899B2 (ja)
CN (1) CN116628644A (ja)
TW (1) TWI824489B (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022507151A (ja) 2018-11-12 2022-01-18 サードウェイブ,インコーポレイティド 安全な無線ファームウェアアップグレード

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
CN102547620A (zh) 2010-12-30 2012-07-04 同方股份有限公司 一种移动支付系统及其更新密钥的方法
US8839363B2 (en) * 2011-04-18 2014-09-16 Bank Of America Corporation Trusted hardware for attesting to authenticity in a cloud environment
US10091197B2 (en) * 2015-01-16 2018-10-02 Digimarc Corporation Configuring, controlling and monitoring computers using mobile devices
EP3284003B1 (en) * 2015-04-14 2021-02-24 Gigavation, Inc. Paravirtualized security threat protection of a computer-driven system with networked devices
US11989332B2 (en) * 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
US11461485B2 (en) * 2016-08-12 2022-10-04 ALTR Solutions, Inc. Immutable bootloader and firmware validator
US10397186B2 (en) * 2017-10-06 2019-08-27 Stealthpath, Inc. Methods for internet communication security
US10855478B2 (en) 2018-08-13 2020-12-01 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for protecting embedded software
CN112955869A (zh) * 2018-11-08 2021-06-11 英特尔公司 功能即服务(faas)系统增强
US20210377016A1 (en) 2020-05-29 2021-12-02 EMC IP Holding Company LLC Key rollover for client side encryption in deduplication backup systems
US11431488B1 (en) * 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
CN113805908B (zh) 2020-06-17 2024-09-13 瑞昱半导体股份有限公司 固件更新系统和方法
US11627123B2 (en) * 2020-10-13 2023-04-11 Oracle International Corporation Techniques for simultaneously accessing multiple isolated systems while maintaining security boundaries
US20220207155A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instruction support for saving and restoring key information
US11570010B2 (en) * 2020-12-26 2023-01-31 Intel Corporation ISA accessible physical unclonable function
US11728974B2 (en) * 2021-01-29 2023-08-15 Salesforce, Inc. Tenant-based database encryption
KR20240005674A (ko) * 2021-02-04 2024-01-12 퀀텀 디지털 솔루션즈 코포레이션 사이퍼제닉스 기반 생태계 보안 플랫폼들
US11783062B2 (en) * 2021-02-16 2023-10-10 Microsoft Technology Licensing, Llc Risk-based access to computing environment secrets

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022507151A (ja) 2018-11-12 2022-01-18 サードウェイブ,インコーポレイティド 安全な無線ファームウェアアップグレード

Also Published As

Publication number Publication date
TW202333076A (zh) 2023-08-16
US12118091B2 (en) 2024-10-15
US20230259628A1 (en) 2023-08-17
TWI824489B (zh) 2023-12-01
CN116628644A (zh) 2023-08-22
JP2023118039A (ja) 2023-08-24

Similar Documents

Publication Publication Date Title
JP4510373B2 (ja) 共有名を用いてコンポーネントにセキュリティを提供するシステムおよび方法
US7774596B2 (en) System and method for updating firmware in a secure manner
JP3982857B2 (ja) 動的にリンクされた実行可能モジュールの使用を保護するシステム及び方法
US8176337B2 (en) Computer object code obfuscation using boot installation
US8627086B2 (en) Secure loading and storing of data in a data processing device
JP4112033B2 (ja) 信頼されたソースからの検証不能プログラムを使用するための機能を有する検証可能プログラムを実行するシステム及び方法
US8176333B2 (en) Method and apparatus for protecting external call references
JP2008516317A (ja) データ処理装置へのデータのセキュリティ上安全なロード及び格納
CN111611593A (zh) 安全数据处理设备
WO2014150478A1 (en) System and method for managing and diagnosing a computing device equipped with unified extensible firmware interface (uefi)-compliant firmware
BRPI0715277A2 (pt) sistema de computaÇço e mÉtodo de mudanÇa de chave compartilhada
US20210004498A1 (en) Virus immune computer system and method
WO2016201853A1 (zh) 加解密功能的实现方法、装置及服务器
WO2023279698A1 (zh) 数据传输方法、系统、计算机设备及存储介质
US20020169976A1 (en) Enabling optional system features
JP7431899B2 (ja) ソフトウェアを安全に更新する方法
EP3667505A1 (en) Memory system with an incremental hashing operation and method
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
WO2023162075A1 (ja) ソフトウェア更新システムおよびソフトウェア更新方法
US11977760B1 (en) Secure data and instruction loading
US20230049508A1 (en) Establishing trust between applications in a computing environment
KR20200017122A (ko) 코드 체인 검증을 이용한 코드 보호 방법 및 시스템
KR20190030406A (ko) 파일 백업을 통제하는 시스템
CN113918986A (zh) 一种基于安卓系统的密钥存储方法及装置、数据加解密方法
KR20230170308A (ko) 임베디드 장치, 그 장치에서의 부팅 방법, 및 암호화 펌웨어 생성 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220805

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231227

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: 20240116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240202

R150 Certificate of patent or registration of utility model

Ref document number: 7431899

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150