DE102019008059A1 - Seitenkanalangriff-Gegenmaßnahme zum sicheren Bootloading - Google Patents

Seitenkanalangriff-Gegenmaßnahme zum sicheren Bootloading Download PDF

Info

Publication number
DE102019008059A1
DE102019008059A1 DE102019008059.9A DE102019008059A DE102019008059A1 DE 102019008059 A1 DE102019008059 A1 DE 102019008059A1 DE 102019008059 A DE102019008059 A DE 102019008059A DE 102019008059 A1 DE102019008059 A1 DE 102019008059A1
Authority
DE
Germany
Prior art keywords
version
software image
header
sender
boot loader
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019008059.9A
Other languages
English (en)
Inventor
Joshua Jay Norem
Daniel Riedler
Chad Steven O' Neill
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.)
Silicon Laboratories Inc
Original Assignee
Silicon Laboratories 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 Silicon Laboratories Inc filed Critical Silicon Laboratories Inc
Publication of DE102019008059A1 publication Critical patent/DE102019008059A1/de
Pending legal-status Critical Current

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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]
    • 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
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm

Landscapes

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

Abstract

Offenbart wird ein System und ein Verfahren zum Minimieren der Wahrscheinlichkeit, dass der von einem Bootloader verwendete geheime Schlüssel kompromittiert wird. Auf der Vorrichtung ist ein Bootloader installiert. Der Bootloader ist ein Softwareprogramm, das viele Funktionen durchführt. Diese Funktionen können das Prüfen der Prüfsumme (Checksum) des eingehenden Software-Image auf Integrität, das Entschlüsseln des eingehenden Software-Image unter Verwendung eines geheimen Schlüssels, das Löschen von Daten in dem FLASH-Speicher, das Installieren des neuen Software-Image in dem FLASH-Speicher und andere Funktionen beinhalten. Der Bootloader nutzt verschiedene Techniken zum Verfolgen der Versionen des zu installierenden Software-Image. Das Verfahren zählt auch die Anzahl unvollendeter Versuche, die bei dem Versuch der Aktualisierung des Software-Image unternommen werden. Durch Überwachen dieser Parameter kann der Bootloader feststellen, wenn ein böswilliger Akteur den Versuch eines Seitenkanalangriffs unternimmt. In Reaktion darauf kann der Bootloader das Laden eines neuen Software-Image oder Zugriff auf den geheimen Schlüssel nicht zulassen.

Description

  • GEBIET
  • Diese Offenbarung beschreibt Systeme und Verfahren zum Erkennen von und zum Schutz vor einem Seitenkanalangriff während Code-Aktualisierungen.
  • Hintergrund
  • Heutzutage wird Verschlüsselung für eine Vielzahl von Anwendungen verwendet, wie etwa Passwortschutz für drahtlose Netzwerke, Smartcards und andere. Für diese Verschlüsselung werden diverse Algorithmen verwendet. Die meisten beinhalten die Verwendung eines geheimen Schlüssels, der 128 Bits oder mehr umfassen kann. Nachrichten, die sich als Klartext bezeichnen lassen, werden von der Quelle unter Verwendung des geheimen Schlüssels kodiert und an ein Ziel übertragen. Das Ziel verwendet dann den gleichen geheimen Schlüssel zum Entschlüsseln der Nachricht, die von der Quelle gesendet wurde.
  • Da der geheime Schlüssel 128 Bits umfasst, ist die Wahrscheinlichkeit eines Entzifferns des geheimen Schlüssels mit roher Gewalt gering. Diese Art der Verschlüsselung wird von vielen Anwendungen genutzt. Viele Geräte verfügen beispielsweise über Software oder Firmware, die aktualisiert werden kann. Üblicherweise wird das neue Software-Image mit dem geheimen Schlüssel verschlüsselt, wodurch sichergestellt wird, dass nur autorisierte Software-Images auf das Gerät geladen werden.
  • In letzter Zeit kam es jedoch immer öfter zu Seitenkanalangriffen. Ein Seitenkanal ist eine Charakteristik des Systems, wodurch unbeabsichtigt Informationen über den geheimen Schlüssel geliefert werden. Ein Beispiel für einen Seitenkanal ist der Leistungsverbrauch.
  • Verschlüsselungs- und Entschlüsselungsalgorithmen beinhalten diverse Software- und/oder Hardware-Verfahren. Jedes dieser Software- und/oder Hardware-Verfahren kann typischerweise eine unterschiedliche Menge an Leistung nutzen. Somit kann es durch Überwachung des Leistungsverbrauchs eines kryptographischen Systems möglich sein, die Progression der Verschlüsselungs- und Entschlüsselungsalgorithmen abzuleiten.
  • Tatsächlich hat sich gezeigt, dass es nur durch Beobachtung des Leistungsverbrauchs eines kryptographischen Systems möglich ist, geheime Schlüssel aus einer großen Vielzahl unterschiedlicher kryptographischer Algorithmen, wie etwa Advanced Encryption Standard (AES), zu entziffern. Zu den Techniken, die zum Entziffern dieser geheimen Schlüssel verwendet werden, gehören u.a. Simple Power Analysis (SPA), Differential Power Analysis (DPA) und High Order Differential Power Analysis (HO-DPA).
  • Wenn der geheime Schlüssel, der zum Verschlüsseln des Software-Image verwendet wird, kompromittiert ist, kann ein böswilliger Benutzer ein ungewolltes Software-Image auf dem Gerät installieren oder Zugang zu vertraulichen Informationen erhalten.
  • Es wäre daher vorteilhaft, wenn es ein System und Verfahren gäbe, das die Wahrscheinlichkeit verringern würde, dass der geheime Schlüssel, der von einem Bootloader verwendet wird, über einen Seitenkanalangriff kompromittiert wird.
  • Zusammenfassung
  • Offenbart sind ein System und ein Verfahren zum Minimieren der Wahrscheinlichkeit, dass der von einem Bootloader verwendete geheime Schlüssel kompromittiert wird. Auf der Vorrichtung ist ein Bootloader installiert. Der Bootloader ist ein Softwareprogramm, das viele Funktionen durchführt. Diese Funktionen können das Prüfen der Prüfsumme (Checksum) des eingehenden Software-Image auf Integrität, das Entschlüsseln des eingehenden Software-Image unter Verwendung eines geheimen Schlüssels, das Löschen von Daten in dem FLASH-Speicher, das Installieren des neuen Software-Image in dem FLASH-Speicher und andere Funktionen beinhalten. Der Bootloader nutzt verschiedene Techniken zum Verfolgen der Versionen des zu installierenden Software-Image. Das Verfahren zählt auch die Anzahl unvollendeter Versuche, die beim Versuch der Aktualisierung des Software-Image unternommen werden. Durch Überwachen dieser Parameter kann der Bootloader feststellen, wenn ein böswilliger Akteur den Versuch eines Seitenkanalangriffs unternimmt. In Reaktion darauf kann der Bootloader das Laden eines neuen Software-Image oder den Zugriff auf den geheimen Schlüssel nicht zulassen.
  • Bei einer Ausführungsform wird ein Verfahren zum sicheren Laden eines neuen Software-Image auf eine Vorrichtung offenbart. Das Verfahren umfasst das Empfangen, an der Vorrichtung, eines Pakets, wobei das Paket eine Kopfzeile (Header) und eine verschlüsselte Nutzlast enthält, von einem Versender; das Verifizieren der Integrität der Kopfzeile und der Identität des Versenders, wobei die Kopfzeile eine Versionsnummer beinhaltet; das Durchführen einer Versionsprüfung; das Vergleichen eines Wertes eines Versuchszählers zum Installieren eines neuen Software-Image mit einem vorbestimmten Grenzwert, wobei der Versuchszähler eine Anzahl von Malen verfolgt, mit der eine Installation eines Software-Image versucht wird; das Entschlüsseln der verschlüsselten Nutzlast, wobei das neue Software-Image in der verschlüsselten Nutzlast enthalten ist, nur wenn: die Versionsprüfung erfolgreich ist und der Versuchszähler kleiner ist als der vorbestimmte Grenzwert; und nach dem Entschlüsseln, das Installieren des neuen Software-Image in einer Speichervorrichtung in der Vorrichtung. Bei bestimmten Ausführungsformen umfasst die Versionsprüfung das Bestimmen, dass die Versionsnummer in der Kopfzeile größer ist als eine Version des Software-Image, das derzeit in der Vorrichtung installiert ist. Bei bestimmten Ausführungsformen umfasst das Verfahren ferner das Empfangen eines Aktualisierungsgraphen von dem Versender, wobei der Aktualisierungsgraph erlaubte Versionen als eine Funktion einer Version des Software-Image spezifiziert, die derzeit in der Vorrichtung installiert ist, wobei die Versionsprüfung basierend auf dem Aktualisierungsgraphen bestimmt, ob die Version in der Kopfzeile eine erlaubte Version ist. Bei bestimmten Ausführungsformen wird der Versuchszähler vor dem Entschlüsseln erhöht. Bei einigen weiteren Ausführungsformen wird der Versuchszähler zurückgesetzt, nachdem das Software-Image erfolgreich in der Speichervorrichtung installiert wurde. Bei bestimmten Ausführungsformen umfasst das Verfahren außerdem das Erkennen, dass eine Fehlerbedingung aufgetreten ist, wenn der Versuchszähler nicht kleiner ist als der vorbestimmte Grenzwert. Bei einigen Ausführungsformen entschlüsselt die Vorrichtung die verschlüsselten Nutzlasten nicht, wenn die Fehlerbedingung erkannt wird. Bei bestimmten Ausführungsformen wird das Paket vom Versender signiert, und das Verfahren umfasst ferner das Verifizieren der Integrität des Pakets und der Identität des Versenders vor dem Entschlüsseln.
  • Gemäß einer anderen Ausführungsform wird ein Softwareprogramm offenbart, das in einem nichtflüchtigen Speichermedium gespeichert ist. Das Softwareprogramm umfasst Anweisungen, die, wenn sie von einer Verarbeitungseinheit einer Vorrichtung ausgeführt werden, die Vorrichtung veranlassen: ein Paket zu empfangen, wobei das Paket eine Kopfzeile (Header) und eine verschlüsselte Nutzlast enthält, von einem Versender; die Integrität der Kopfzeile und die Identität des Versenders zu verifizieren, wobei die Kopfzeile eine Versionsnummer beinhaltet; eine Versionsprüfung durchzuführen; einen Wert eines Versuchszählers zum Installieren eines neuen Software-Image mit einem vorbestimmten Grenzwert zu vergleichen, wobei der Versuchszähler eine Anzahl von Malen verfolgt, mit der eine Installation eines Software-Image versucht wurde; die verschlüsselte Nutzlast zu entschlüsseln, wobei das neue Software-Image in der verschlüsselten Nutzlast enthalten ist, nur wenn: die Versionsprüfung erfolgreich ist und der Versuchszähler kleiner ist als der vorbestimmte Grenzwert; und nach dem Entschlüsseln, das neue Software-Image in einer Speichervorrichtung in der Vorrichtung zu installieren. Bei bestimmten Ausführungsformen enthält das Softwareprogramm außerdem Anweisungen, die, wenn sie von der Verarbeitungseinheit ausgeführt werden, die Vorrichtung befähigen: einen Aktualisierungsgraphen vom Versender zu empfangen, wobei der Aktualisierungsgraph erlaubte Versionen als eine Funktion einer Version des Software-Image spezifiziert, das derzeit auf der Vorrichtung installiert ist, wobei die Versionsprüfung basierend auf dem Aktualisierungsgraphen bestimmt, ob die Version in der Kopfzeile eine erlaubte Version ist. Bei bestimmten Ausführungsformen wird das Paket vom Versender signiert, und das Softwareprogramm enthält außerdem Anweisungen, die die Vorrichtung befähigen, die Integrität des Pakets und die Identität des Versenders vor dem Entschlüsseln zu verifizieren.
  • Figurenliste
  • Zum besseren Verständnis der vorliegenden Offenbarung wird auf die beigefügten Zeichnungen Bezug genommen, in denen gleichartige Elemente mit gleichen Bezugszeichen bezeichnet sind, und in denen:
    • 1 ein Blockdiagramm eines repräsentativen Systems gemäß einer Ausführungsform ist;
    • 2 eine repräsentative Zeichnung der Speicherarchitektur gemäß einer Ausführungsform ist;
    • 3 das Format eines Pakets gemäß einer Ausführungsform zeigt;
    • 4 ein Flussdiagramm ist, das den Betrieb des Bootloaders gemäß einer Ausführungsform zeigt;
    • 5 einen Aktualisierungsgraphen gemäß einer Ausführungsform zeigt; und
    • 6 eine Tabelle ist, die die Versionsnummer und die Anzahl der Installationen zeigt.
  • Detaillierte Beschreibung
  • 1 zeigt ein Blockdiagramm einer repräsentativen Vorrichtung 10. Diese Vorrichtung kann als eine Netzwerkvorrichtung dienen oder eine andere Funktion durchführen, wie nachfolgend ausführlicher beschrieben wird.
  • Wie in 1 gezeigt, umfasst die Vorrichtung 10 eine Verarbeitungseinheit 20 und eine zugehörige Speichervorrichtung 25. Die Verarbeitungseinheit 20 kann irgendeine geeignete Komponente sein, wie etwa ein Mikroprozessor, ein eingebetteter Prozessor, eine anwendungsspezifische Schaltung, eine programmierbare Schaltung, ein Mikrocontroller oder eine andere ähnliche Vorrichtung. Die Speichervorrichtung 25 enthält die Anweisungen, die, wenn sie von der Verarbeitungseinheit 20 ausgeführt werden, die Vorrichtung 10 befähigen, die hierin beschriebenen Funktionen durchzuführen. Die Speichervorrichtung 25 kann ein nichtflüchtiger Speicher sein, wie etwa ein FLASH-ROM, ein elektrisch löschbares ROM oder andere geeignete Vorrichtungen. Bei anderen Ausführungsformen kann die Speichervorrichtung 25 ein flüchtiger Speicher sein, wie etwa ein RAM oder DRAM.
  • Die Vorrichtung 10 beinhaltet ferner eine Netzwerkschnittstelle 30, die eine drahtlose Schnittstelle mit einer Antenne 35 sein kann. Die Netzwerkschnittstelle 30 kann irgendein drahtloses Netzwerk unterstützen, wie etwa Wi-Fi, Netzwerke, die die IEEE 802.15.4 Spezifikation nutzen, wie etwa Zigbee, Netzwerke, die die IEEE 802.15.6 Spezifikation nutzen, und drahtlose Smart-Home-Protokolle, wie etwa Z-Wave. Alternativ kann die Netzwerkschnittstelle 30 ein drahtgebundenes Netzwerk unterstützen, wie etwa Ethernet. Ferner kann die Netzwerkschnittstelle 30 unterschiedliche Kommunikationsschnittstellen unterstützen, wie etwa SPI, UART, USB oder andere. Die Netzwerkschnittstelle 30 wird verwendet, um es der Netzwerkvorrichtung zu ermöglichen, mit anderen Vorrichtungen, die in dem Netzwerk 31 angeordnet sind, zu kommunizieren.
  • Die Vorrichtung 10 kann eine zweite Speichervorrichtung 40 beinhalten, in der Daten gespeichert sind, die von der Netzwerkschnittstelle 30 empfangen und gesendet werden. Diese zweite Speichervorrichtung 40 ist üblicherweise ein flüchtiger Speicher. Die Verarbeitungseinheit 20 hat die Fähigkeit, die zweite Speichervorrichtung 40 zu lesen und zu beschreiben, um mit den anderen Knoten in dem Netzwerk 31 zu kommunizieren. Obwohl nicht gezeigt, verfügt die Vorrichtung 10 auch über eine Stromversorgung, die eine Batterie oder eine Verbindung mit einer permanenten Stromquelle sein kann, wie etwa einer Wandsteckdose.
  • Obwohl eine Speichervorrichtung 25 offenbart ist, kann irgendein computerlesbares Medium zum Speichern dieser Anweisungen verwendet werden. Es können beispielsweise ein Nur-Lese-Speicher (ROM), ein Direktzugriffsspeicher (RAM), eine Magnetspeichervorrichtung, wie etwa ein Festplattenlaufwerk, oder eine optische Speichervorrichtung, wie etwa eine CD oder DVD, verwendet werden. Darüber hinaus können diese Anweisungen in die Speichervorrichtung 25 heruntergeladen werden, wie etwa beispielsweise über eine Netzwerkverbindung (nicht gezeigt), über eine CD ROM oder über einen anderen Mechanismus. Diese Anweisungen können in irgendeiner Programmiersprache geschrieben sein, die durch diese Offenbarung nicht beschränkt sind. Somit können bei einigen Ausführungsformen mehrere computerlesbare Medien vorhanden sein, die die hierin beschriebenen Anweisungen enthalten. Die ersten computerlesbaren Medien können mit der Verarbeitungseinheit 20 in Kommunikation stehen, wie in 1 gezeigt. Die zweiten computerlesbaren Medien, können eine CD ROM oder eine andere Speichervorrichtung sein, die bezüglich der Vorrichtung 10 dezentral angeordnet sind. Die auf diesen zweiten computerlesbaren Medien enthaltenen Anweisungen können in die Speichervorrichtung 25 heruntergeladen werden, um die Ausführung der Anweisungen durch die Vorrichtung 10 zu ermöglichen.
  • Obwohl die Verarbeitungseinheit 20, die Speichervorrichtung 25, die Netzwerkschnittstelle 30 und die zweite Speichervorrichtung 40 in 1 als separate Komponenten gezeigt sind, soll verstanden werden, dass einige oder alle dieser Komponenten in einer einzigen elektronischen Komponente integriert sein können. Vielmehr wird 1 dazu verwendet, um die Funktionalität der Vorrichtung 10 zu veranschaulichen und nicht ihre physische Konfiguration.
  • Die Speichervorrichtung 25 kann ein FLASH-Speicher sein oder kann eine Vielzahl unterschiedlicher Speicherelemente umfassen. Eine Organisation der Speichervorrichtung 25 wird in 2 gezeigt. Bei dieser Ausführungsform wird der Bootloader 100 in einen ersten Bereich 110 der Speichervorrichtung 25 geladen. Wie vorstehend erwähnt, ist der Bootloader 100 ein Softwareprogramm, das von der Verarbeitungseinheit 20 ausgeführt wird. Mit anderen Worten, der Bootloader 100 ist ein Softwareprogramm, das in einem nichtflüchtigen Speichermedium angeordnet ist. Durch Ausführen des Bootloaders 100 ist die Verarbeitungseinheit 20 in der Lage, die Identität des Versenders zu verifizieren, die Prüfsumme (Checksum) des eingehenden Software-Image auf Integrität zu prüfen, das eingehende Software-Image unter Verwendung eines geheimen Schlüssels zu entschlüsseln, Daten in dem FLASH-Speicher zu löschen, das neue Software-Image in dem FLASH-Speicher zu installieren und andere Funktionen durchzuführen. Die Speichervorrichtung 25 kann ferner einen zweiten Bereich 120 beinhalten, der von dem ersten Bereich 110 verschieden ist. Der zweite Bereich 120 kann gelöscht und neu beschrieben werden, ohne Auswirkungen auf den ersten Abschnitt 110 zu haben. Mit anderen Worten, ein neues Software-Image kann in den zweiten Bereich 120 geschrieben werden, ohne dass sich dies auf den in dem ersten Bereich 110 gespeicherten Bootloader 100 auswirkt. Bei einer anderen Ausführungsform kann der Bootloader 100 in einer anderen Speichervorrichtung gespeichert sein, die von der Speichervorrichtung verschieden ist, in der das Software-Image gespeichert ist.
  • Im Betrieb überträgt eine vertrauenswürdige dritte Partei, wie etwa der Softwarehersteller oder der Gerätehersteller, ein neues Software-Image an die Vorrichtung 10, wie etwa über die Netzwerkschnittstelle 30. Dieses neue Software-Image kann Teil eines Pakets 300 sein. Ein repräsentatives Format für ein Paket ist in 3 gezeigt. Bei bestimmten Ausführungsformen sind in dem Paket 300 ein oder mehrere Signaturen vorgesehen. Eine Signatur ist ein Hash aus bestimmten Daten, der dann unter Verwendung eines privaten Schlüssels signiert wird. Der Bootloader 100 hat den zugehörigen öffentlichen Schlüssel, der diesem privaten Schlüssel zugeordnet ist. Der öffentliche Schlüssel kann beispielsweise zum Zeitpunkt der Herstellung in die Vorrichtung 10 geladen werden. Alternativ kann der öffentliche Schlüssel an die Vorrichtung 10 übertragen werden.
  • Das Paket 300 kann eine Kopfzeile 310 beinhalten. Diese Kopfzeile 310 kann die Versionsnummer des neuen Software-Image und andere Informationen angeben. Diese Informationen können beinhalten, welche Module der Software in diesem Image aktualisiert werden, und sie können auch Informationen bezüglich zulässiger Versionen beinhalten. Die Kopfzeile 310 ist nicht verschlüsselt. Die Kopfzeile 310 ist jedoch von der vertrauenswürdigen dritten Partei mit einer Kopfzeilensignatur 315 unter Verwendung des privaten Schlüssels signiert. Die Kopfzeilensignatur 315 gilt nur für die Kopfzeile 310.
  • Das Paket beinhaltet außerdem eine verschlüsselte Nutzlast 320. Bei bestimmten Ausführungsformen enthält die verschlüsselte Nutzlast 320 das neue Software-Image 325, das von der vertrauenswürdigen dritten Partei mit einer Imagesignatur 326 signiert ist. Wie die Kopfzeilensignatur 315 ist auch diese Imagesignatur 326 unter Verwendung des privaten Schlüssels signiert. Es sind jedoch sowohl das neue Software-Image 325 als auch die Imagesignatur 326 verschlüsselt. Diese Verschlüsselung kann unter Verwendung eines symmetrischen Schlüssels durchgeführt werden. Der Bootloader 100 hat den symmetrischen Schlüssel bereits zu einem früheren Zeitpunkt von der vertrauenswürdigen dritten Partei empfangen. Bei einigen Ausführungsformen werden sowohl der symmetrische Schlüssel als auch der öffentliche Schlüssel während der Herstellung in die Vorrichtung 10 geladen, wie etwa dann, wenn die Vorrichtung getestet wird. Alternativ kann die Verschlüsselung unter Verwendung eines öffentlichen Schlüssels durchgeführt werden, wobei dem Bootloader 100 den privaten Schlüssel bereits zu einem früheren Zeitpunkt erhalten hat.
  • Bei anderen Ausführungsformen ist die Imagesignatur 326 nicht enthalten. Bei bestimmten Ausführungsformen wird eine Nutzlastsignatur 330 an das Paket 300 angehängt. Diese Nutzlastsignatur 330 ist nicht verschlüsselt und ist die Signatur für die verschlüsselte Nutzlast. Diese Nutzlastsignatur 330 wird wiederum von der vertrauenswürdigen dritten Partei unter Verwendung des privaten Schlüssels generiert.
  • Natürlich kann sich das Format des Pakets von dem in 3 gezeigten Format unterscheiden. Die Kopfzeilensignatur 315 muss zum Beispiel nicht verwendet werden. In diesem Fall beinhaltet die Nutzlastsignatur 330 die Kopfzeile 310 und die verschlüsselte Nutzlast 320. Alternativ kann die Imagesignatur 326, wie vorstehend vorgeschlagen, weggelassen werden. Bei dieser Ausführungsform verlässt sich der Bootloader 100 auf die Nutzlastsignatur 330, um das Software-Image 325 zu validieren. Es sind auch mehrere andere Varianten möglich.
  • 4 zeigt ein Flussdiagramm des Betriebs des Bootloaders 100. Wie vorstehend angeführt, überträgt die vertrauenswürdige dritte Partei ein neues Paket an den Bootloader 100, wie etwa über die Netzwerkschnittstelle 30. Der Bootloader 100 empfängt das neue Paket, wie in Block 400 gezeigt. Der Bootloader 100 validiert zunächst, ob das Paket von der vertrauenswürdigen dritten Partei übertragen wurde, und dass die Kopfzeile 310 nicht beschädigt ist, wie in Block 410 gezeigt. Dies lässt sich erreichen, indem der öffentliche Schlüssel verwendet wird, um den Hash und die Identität der vertrauenswürdigen dritten Partei basierend auf der Kopfzeilensignatur 315 zu verifizieren. Wenn die Kopfzeilensignatur 315 nicht gültig ist, dann beendet der Bootloader 100 den Vorgang und wartet auf das nächste neue Paket. Sobald der Bootloader 100 die Identität der vertrauenswürdigen dritten Partei und die Integrität der Kopfzeile 310 verifiziert hat, analysiert der Bootloader 100 die Kopfzeile 310. Innerhalb der Kopfzeile 310 befindet sich die Versionsnummer des neuen Software-Image. Der Bootloader 100 prüft, ob diese Version eine akzeptable Version zur Verwendung ist, wie in Block 420 gezeigt ist. Die Durchführung dieser Funktion wird nachfolgend ausführlicher erklärt.
  • Wenn die Version nicht akzeptabel ist, beendet der Bootloader 100 den Vorgang und wartet auf das nächste neue Paket. Wenn die Version akzeptabel ist, prüft der Bootloader 100, ob die Anzahl der Versuche einen vorbestimmten Grenzwert überschreitet. Wenn dies der Fall ist, kann der Bootloader 100 eine Fehlerbedingung angeben, wie in Block 470 gezeigt ist. Mit anderen Worten, der Bootloader 100 erlaubt nur eine bestimmte Anzahl von erfolglosen Versuchen, bevor eine Fehlerbedingung erklärt wird. Dies wird im Folgenden ausführlicher beschrieben.
  • Wenn die Anzahl der Versuche kleiner ist als der vorbestimmte Grenzwert, dann verifiziert der Bootloader 100 die Authentizität der verschlüsselten Nutzlast 320 unter Verwendung der Nutzlastsignatur 330, wie in Block 430 gezeigt ist. Wenn die Nutzlastsignatur nicht gültig ist, dann beendet der Bootloader 100 den Vorgang und wartet auf das nächste neue Paket. Es ist auch möglich, die Prüfungen der Anzahl von Versuchen und der Nutzlastsignatur 330, falls gewünscht, in umgekehrter Reihenfolge durchzuführen. Wenn die Versionsnummer akzeptabel ist, die Anzahl der Versuche kleiner als ein vorbestimmter Grenzwert ist und die Nutzlastsignatur 330 gültig ist, dann erhöht der Bootloader den Versuchszähler, wie in Block 440 gezeigt. Die Funktion des Versuchszählers wird nachfolgend ausführlicher beschrieben. Anschließend entschlüsselt der Bootloader 100 die verschlüsselte Nutzlast 320, wie in Block 450 gezeigt ist. Dies erfolgt unter Verwendung eines symmetrischen Schlüssels oder eines privaten Schlüssels, wie vorstehend beschrieben wurde. Nachdem die Entschlüsselung abgeschlossen ist, verwendet der Bootloader 100 die Bildsignatur 326 (falls vorhanden), um die Integrität des Software-Image und die Identität des Versenders zu verifizieren.
  • Der Bootloader 100 beginnt dann den Prozess des Aktualisierens des Software-Image, wie in Block 450 gezeigt ist. Dies kann das Löschen des zweiten Bereichs 120 der Speichervorrichtung 25 beinhalten. Der Bootloader 100 kann auch das gesamte Software-Image in einem flüchtigen Speicher speichern, so dass das Software-Image aus einem flüchtigen Speicher in den zweiten Bereich 120 kopiert werden kann.
  • Bei bestimmten Ausführungsformen wird der Versuchszähler zurückgesetzt, nachdem die Aktualisierung erfolgreich abgeschlossen wurde, wie in Block 460 gezeigt. Der Bootloader 100 wartet dann auf das nächste neue Paket.
  • Seitenkanalangriffe erfordern typischerweise eine große Menge an Daten, aus denen statistische Analysen durchgeführt werden können. Ein böswilliger Akteur kann beispielsweise eine hohe Zahl von Software-Aktualisierungen erzwingen, um die Daten zu sammeln, die zur Bestimmung des symmetrischen Schlüssels notwendig sind. In dieser Offenbarung ist ein böswilliger Akteur als eine Partei definiert, die versucht, den vertraulichen symmetrischen Verschlüsselungsschlüssel zu erhalten. Bei einer Ausführungsform kann der böswillige Akteur die Menge an Leistung überwachen, die von der Vorrichtung 10 oder der Verarbeitungseinheit 20 verbraucht wird, und den symmetrischen Schlüssel aus diesen Leistungsverbrauchsdaten bestimmen.
  • Es gibt drei Prüfungen, die von dem Bootloader 100 durchgeführt werden können, die die Wahrscheinlichkeit eines erfolgreichen Seitenkanalversuchs minimieren. Jede dieser Prüfungen dient dazu, die Anzahl der Versuche zu beschränken, die der Bootloader 100 unternimmt, um eine verschlüsselte Nutzlast 320 zu entschlüsseln. Die erste Prüfung ist die Verwendung von einer oder mehreren Signaturen, wie etwa die Kopfzeilensignatur 315, die Imagesignatur 326 und die Nutzlastsignatur 330, um die Identität des Versenders und die Integrität der übertragenen Informationen zu verifizieren. Die anderen beiden Prüfungen sind Versionsprüfung und das Limit der Versuche. Jede davon wird nachfolgend ausführlicher beschrieben.
  • Die Versionsprüfung wird verwendet, um sicherzustellen, dass ein böswilliger Akteur nicht einfach kontinuierlich das Software-Image auf der Vorrichtung unter Verwendung von einem oder mehreren gültigen Paketen aktualisieren kann. Bei der einfachsten Ausführungsform kann ein böswilliger Akteur ein gültiges Paket abfangen, das von der vertrauenswürdigen dritten Partei an die Vorrichtung 10 gesendet wird. Der böswillige Akteur kann dann versuchen, die Vorrichtung unter Verwendung dieses gültigen Pakets wiederholt zu aktualisieren. Bei dieser Ausführungsform kann die Versionsprüfung einfach sicherstellen, dass sich die Version des neuen Software-Image von der aktuell installierten Version unterscheidet. Diese Versionsprüfung ist ausreichend, um diese Art von Angriff zu blockieren.
  • Diese einfache Implementierung lässt sich durch Alternieren von zwei unterschiedlichen gültigen Paketen vereiteln. Der böswillige Akteur kann beispielsweise Paket N und Paket N+1 abfangen, wenn diese von der vertrauenswürdigen dritten Partei an die Vorrichtung 10 gesendet werden. Der böswillige Akteur kann die vorstehend beschriebene einfache Versionsprüfung durch Aktualisieren der Vorrichtung 10 durch Alternieren dieser beiden Pakete überwinden. Daher erfordert die Versionsprüfung bei einer anderen Ausführungsform, dass die neue Version größer als die vorherige Version ist. Auf diese Weise kann der böswillige Akteur nicht zwei gültige Pakete verwenden, wie vorstehend beschrieben wurde.
  • Bei einer anderen Ausführungsform kann der Softwareanbieter einen Aktualisierungsgraphen erzeugen, wie beispielsweise jenen, der in 5 gezeigt ist. Jeder Kreis in 5 repräsentiert ein Paket und jede Zeile repräsentiert die zulässigen Aktualisierungsversionen. In 5 zum Beispiel:
    • • Paket A.1 kann nur installiert werden, wenn Image A.0 derzeit installiert ist.
    • • Paket B.1 kann nur installiert werden, wenn Image A.0 derzeit installiert ist.
    • • Paket B.2 kann installiert werden, wenn entweder Image A.1 oder B.1 derzeit installiert ist.
    • • Paket C.3 kann installiert werden, wenn entweder Image C.2 oder D.2 derzeit installiert ist.
  • Dieser Aktualisierungsgraph kann von der vertrauenswürdigen dritten Partei an die Vorrichtung 10 übertragen werden. Bei einer Ausführungsform kann der Aktualisierungsgraph beispielsweise als Teil der Kopfzeile 310 übertragen werden.
  • Bei dieser Ausführungsform bestimmt der Bootloader 100 die neue Versionsnummer und die Nummer der installierten Version. Der Bootloader 100 konsultiert dann den Aktualisierungsgraphen, um zu bestimmen, ob die neue Versionsnummer installiert werden kann.
  • Bei noch einer anderen Ausführungsform kann der Bootloader 100 eine Liste aller zuvor installierten Versionen führen. Wenn der Bootloader 100 erkennt, dass ein neues Paket die gleiche Versionsnummer hat, wie eine der zuvor installierten Versionen, kann der Bootloader 100 eine Installation des Pakets nicht zulassen. Bei noch einer anderen Ausführungsform kann der Bootloader 100 erlauben, dass jede zuvor installierte Version eine begrenzte Anzahl von Malen neu installiert werden kann. Bei dieser Ausführungsform führt der Bootloader 100 eine Tabelle der zuvor installierten Versionen und der Anzahl der Male, die jede dieser Versionen installiert wurde, wie in 6 gezeigt ist. Wenn die Anzahl der Installationen für eine bestimmte Version überschritten ist, dann darf der Bootloader 100 das Paket nicht installieren. Bei noch einer anderen Ausführungsform zählt der Bootloader 100 einfach die Anzahl der Male, die eine zuvor installierte Version neu installiert wird, und wenn die Anzahl der Installationen aller vorherigen Versionen überschritten ist, dann installiert der Bootloader 100 das Paket nicht.
  • Zusammenfassend wird die Versionsprüfung daher verwendet, um einen böswilligen Akteur daran zu hindern, ein oder mehrere zuvor übertragene Pakete wiederholt zu verwenden, um den Seitenkanalangriff durchzuführen. Es sei angemerkt, dass auch andere Versionsprüfungen verwendet werden können und dass die Offenbarung nicht auf diese Ausführungsformen beschränkt ist.
  • Der Bootloader 100 kann auch ein Versuchslimit beinhalten. Das Versuchslimit kann auf mehrere Weise eingesetzt werden.
  • Bei einer Ausführungsform zählt der Bootloader 100 die Anzahl der Installationen, die versucht wurden. Bei dieser Ausführungsform wird das Zurücksetzen des Versuchszählers, das in Block 460 von 4 gezeigt ist, nicht durchgeführt. Auf diese Weise erlaubt der Bootloader 100 nur eine begrenzte Anzahl von Aktualisierungen, bevor er bestimmt, dass eine Fehlerbedingung aufgetreten ist.
  • Bei einer anderen Ausführungsform legt der Bootloader 100 ein Limit für die Anzahl von Versuchen fest, die für jede Version des Software-Image vorgenommen werden können. Wie zum Beispiel in 6 gezeigt ist, kann der Bootloader 100 die zuvor installierten Versionen und die Anzahl der Installationen, die für diese Version vorgenommen wurden, verfolgen. Wenn die Anzahl der Installationen für eine bestimmte Version überschritten wird, dann darf der Bootloader 100 diese Version nicht mehr installieren. In 6 wurde die Version B.2 beispielsweise 25 Mal installiert. Diese hohe Anzahl könnte für einen Seitenkanalangriff indikativ sein. Somit kann der Bootloader 100 die erneute Installation der Version B.2 ablehnen. Bei einer anderen Ausführungsform kann der Bootloader 100, wenn die Anzahl der Installationen für eine Version überschritten wurde, die Installation jedweder Pakete verweigern.
  • Bei einer anderen Ausführungsform zählt der Bootloader 100 die Anzahl der Versuche zum Installieren eines neuen Pakets. Nachdem beispielsweise die verschlüsselte Nutzlast 320 entschlüsselt wurde, aber bevor die Installation abgeschlossen ist, kann der böswillige Akteur die Vorrichtung 10 abschalten. Auf diese Weise wird das Paket nicht installiert, und somit wird die Versionsprüfung keinen Fehler erkennen. Um dieser Art von Angriff entgegenzuwirken, kann der Bootloader 100 somit die Versuche der Installation eines neuen Pakets zählen. Versuche können sich von Installationen unterscheiden, da eine Installation abgebrochen werden kann, wie etwa durch eine Stromabschaltung. In diesem Fall wird die Anzahl der Versuche erhöht, aber die Anzahl der Installationen nicht.
  • Um diese Funktion durchzuführen, wird vom Bootloader 100 ein Versuchszähler aufrechterhalten. Dieser Versuchszähler erhöht sich, bevor der Bootloader 100 die verschlüsselte Nutzlast entschlüsselt hat, wie in Block 440 von 4 gezeigt ist. Wenn das Software-Image erfolgreich installiert ist, setzt der Bootloader 100 diesen Versuchszähler zurück, wie in Block 460 gezeigt ist. Wenn der böswillige Akteur die Vorrichtung aber abschaltet, bevor das Software-Image erfolgreich in die Speichervorrichtung 25 geladen wurde, wird der Versuchszähler nicht zurückgesetzt. Wenn ein böswilliger Akteur daher versucht, einen Seitenkanalangriff durch wiederholtes Zurücksetzen der Vorrichtung 10 durchzuführen, bevor sie die Installation tatsächlich durchführt, erreicht der Versuchszähler seinen maximalen Grenzwert, und es wird eine Fehlerbedingung markiert.
  • Bei einer anderen Ausführungsform kann die Tabelle, wie beispielsweise jene, die in 6 gezeigt ist, verwendet werden, um die Anzahl der Versuche jeder Version zu verfolgen. Die Anzahl, die in der Tabelle enthalten ist, kann die Anzahl aufeinanderfolgender Versuche zum Installieren einer bestimmten Version oder die kumulative Anzahl von Versuchen zum Installieren dieser Version sein. Wenn die Anzahl von Versuchen einen Grenzwert überschreitet, kann der Bootloader 100 eine Fehlerbedingung erkennen.
  • Somit wird das Versuchslimit verwendet, um entweder die Anzahl von Malen zu überwachen, die ein neues Paket installiert wurde, bzw. die Anzahl von Malen, der unternommen wurde, das neue Paket zu installieren.
  • Durch die Verwendung von sowohl einer Versionsprüfung als auch eines Versuchslimits wird die Wahrscheinlichkeit, dass ein böswilliger Akteur in der Lage ist, einen Seitenkanalangriff erfolgreich durchzuführen, erheblich verringert.
  • Wie in Block 470 gezeigt, kann der Bootloader 100 eine Fehlerbedingung erkennen. Der Bootloader 100 kann eine Reihe von Maßnahmen ergreifen, wenn eine Fehlerbedingung erkannt wird. Bei einer Ausführungsform lehnt der Bootloader 100 ab, neue Pakete zu installieren, sobald eine Fehlerbedingung erkannt wird. Bei einer anderen Ausführungsform kann der Bootloader 100 den symmetrischen Schlüssel löschen, so dass es nicht mehr möglich ist, Pakete zu entschlüsseln, und der symmetrische Schlüssel kann von dem böswilligen Akteur nicht erfasst werden. Außerdem kann die Vorrichtung 10 zu diesem Zeitpunkt nicht mehr funktionsfähig sein.
  • Die vorliegende Offenbarung ist bezüglich ihres Schutzbereichs nicht auf die konkreten, hierin beschriebenen Ausführungsformen beschränkt. Tatsächlich werden für den Fachmann aus der vorstehenden Beschreibung aus und den beigefügten Zeichnungen diverse andere, zusätzlich zu den hier beschriebenen, Ausführungsformen und Modifikationen der vorliegenden Offenbarung offensichtlich. Es ist daher beabsichtigt, dass andere Ausführungsformen und Modifikationen in den Schutzbereich der vorliegenden Erfindung fallen. Obwohl die vorliegende Offenbarung hierin im Kontext einer bestimmten Implementierung in einer bestimmten Umgebung für einen bestimmten Zweck beschrieben wurde, wird der Fachmann ferner anerkennen, dass ihr Nutzen nicht darauf beschränkt ist, und dass die vorliegende Erfindung in einer beliebigen Anzahl von Umgebungen für eine beliebige Anzahl von Zwecken vorteilhaft implementiert werden kann. Dementsprechend sind die im Folgenden aufgeführten Ansprüche in Hinblick auf die volle Breite und den Geist der vorliegenden Offenbarung, wie hierin beschrieben, auszulegen.

Claims (19)

  1. Verfahren zum sicheren Laden eines neuen Software-Image auf eine Vorrichtung, umfassend: Empfangen, an der Vorrichtung, eines Pakets, wobei das Paket eine Kopfzeile und eine verschlüsselte Nutzlast enthält, von einem Versender; Verifizieren der Integrität der Kopfzeile und der Identität des Versenders, wobei die Kopfzeile eine Versionsnummer beinhaltet; Durchführen einer Versionsprüfung; Vergleichen eines Wertes eines Versuchszählers zum Installieren eines neuen Software-Image mit einem vorbestimmten Grenzwert, wobei der Versuchszähler eine Anzahl von Malen verfolgt, mit der eine Installation eines Software-Image versucht wird; Entschlüsseln der verschlüsselten Nutzlast, wobei das neue Software-Image in der verschlüsselten Nutzlast enthalten ist, nur wenn: die Versionsprüfung erfolgreich ist und der Versuchszähler kleiner ist als der vorbestimmte Grenzwert; und nach dem Entschlüsseln, Installieren des neuen Software-Image in einer Speichervorrichtung in der Vorrichtung.
  2. Verfahren nach Anspruch 1, wobei die Versionsprüfung umfasst: Bestimmen, dass die Versionsnummer in der Kopfzeile größer ist als eine Version des Software-Image, das derzeit in der Vorrichtung installiert ist.
  3. Verfahren nach Anspruch 1, ferner umfassend: Empfangen eines Aktualisierungsgraphen von dem Versender, wobei der Aktualisierungsgraph erlaubte Versionen als eine Funktion einer Version des Software-Image spezifiziert, die derzeit in der Vorrichtung installiert ist, wobei die Versionsprüfung basierend auf dem Aktualisierungsgraphen bestimmt, ob die Version in der Kopfzeile eine erlaubte Version ist.
  4. Verfahren nach Anspruch 1, wobei die Versionsprüfung umfasst: Bestimmen einer Anzahl von Malen, mit der ein Software-Image mit der Versionsnummer in der Kopfzeile zuvor in der Vorrichtung installiert wurde; und Bestimmen, ob die Anzahl von Malen kleiner ist als ein vorbestimmter Grenzwert.
  5. Verfahren nach Anspruch 1, wobei der Versuchszähler vor dem Entschlüsseln erhöht wird.
  6. Verfahren nach Anspruch 5, wobei der Versuchszähler zurückgesetzt wird, nachdem das Software-Image erfolgreich in der Speichervorrichtung installiert wurde.
  7. Verfahren nach Anspruch 1, ferner umfassend: Erkennen, dass eine Fehlerbedingung aufgetreten ist, wenn der Versuchszähler nicht kleiner ist als der vorbestimmte Grenzwert.
  8. Verfahren nach Anspruch 7, wobei die Vorrichtung verschlüsselte Nutzlasten nicht entschlüsselt, wenn die Fehlerbedingung erkannt wird.
  9. Verfahren nach Anspruch 1, wobei das Paket vom Versender signiert ist, und ferner umfassend: Verifizieren der Integrität des Pakets und der Identität des Versenders vor dem Entschlüsseln.
  10. Verfahren nach Anspruch 9, wobei die Kopfzeile vom Versender unter Verwendung einer Kopfzeilensignatur signiert ist und die verschlüsselte Nutzlast ebenfalls vom Versender unter Verwendung einer Nutzlastsignatur signiert ist, ferner umfassend: Verifizieren der Integrität der Kopfzeile und der Identität des Versenders vor dem Entschlüsseln; und Verifizieren der Integrität des Software-Image und der Identität des Versenders vor dem Entschlüsseln.
  11. Softwareprogramm, das in einem nichtflüchtigen Speichermedium gespeichert ist, wobei das Softwareprogramm Anweisungen enthält, die, wenn sie von einer Verarbeitungseinheit einer Vorrichtung ausgeführt werden, die Vorrichtung veranlassen: ein Paket zu empfangen, wobei das Paket eine Kopfzeile und eine verschlüsselte Nutzlast enthält, von einem Versender; die Integrität der Kopfzeile und die Identität des Versenders zu verifizieren, wobei die Kopfzeile eine Versionsnummer beinhaltet; eine Versionsprüfung durchzuführen; einen Wert eines Versuchszählers zum Installieren eines neuen Software-Image mit einem vorbestimmten Grenzwert zu vergleichen, wobei der Versuchszähler eine Anzahl von Malen verfolgt, mit der eine Installation eines Software-Image versucht wurde; die verschlüsselte Nutzlast zu entschlüsseln, wobei das neue Software-Image in der verschlüsselten Nutzlast enthalten ist, nur wenn: die Versionsprüfung erfolgreich ist und der Versuchszähler kleiner ist als der vorbestimmte Grenzwert; und nach dem Entschlüsseln, das neue Software-Image in einer Speichervorrichtung in der Vorrichtung zu installieren.
  12. Softwareprogramm nach Anspruch 11, wobei die Versionsprüfung umfasst: Bestimmen, dass die Versionsnummer in der Kopfzeile größer ist als eine Version des Software-Image, das derzeit auf der Vorrichtung installiert ist.
  13. Softwareprogramm nach Anspruch 11, das außerdem Anweisungen enthält, die, wenn sie von der Verarbeitungseinheit ausgeführt werden, die Vorrichtung befähigen: einen Aktualisierungsgraphen vom Versender zu empfangen, wobei der Aktualisierungsgraph erlaubte Versionen als eine Funktion einer Version des Software-Image spezifiziert, das derzeit auf der Vorrichtung installiert ist, wobei die Versionsprüfung basierend auf dem Aktualisierungsgraphen bestimmt, ob die Version in der Kopfzeile eine erlaubte Version ist.
  14. Softwareprogramm nach Anspruch 11, wobei der Versuchszähler vor dem Entschlüsseln erhöht wird.
  15. Softwareprogramm nach Anspruch 14, wobei der Versuchszähler zurückgesetzt wird, nachdem das Software-Image erfolgreich auf der Speichervorrichtung installiert wurde.
  16. Softwareprogramm nach Anspruch 11, das außerdem Anweisungen enthält, die, wenn sie von der Verarbeitungseinheit ausgeführt werden, die Vorrichtung befähigen: zu erkennen, dass eine Fehlerbedingung aufgetreten ist, wenn der Versuchszähler nicht kleiner ist als der vorbestimmte Grenzwert.
  17. Softwareprogramm nach Anspruch 16, wobei die Vorrichtung verschlüsselte Nutzlasten nicht entschlüsselt, sobald die Fehlerbedingung erkannt wird.
  18. Softwareprogramm nach Anspruch 11, wobei das Paket vom Versender signiert ist, und außerdem Anweisungen enthält, die, wenn sie von der Verarbeitungseinheit ausgeführt werden, die Vorrichtung befähigen: die Integrität des Pakets und die Identität des Versenders vor dem Entschlüsseln zu verifizieren.
  19. Softwareprogramm nach Anspruch 18, wobei die Kopfzeile vom Versender unter Verwendung einer Kopfzeilensignatur signiert ist und die verschlüsselte Nutzlast ebenfalls vom Versender unter Verwendung einer Nutzlastsignatur signiert ist, das außerdem Anweisungen enthält, die, wenn sie von der Verarbeitungseinheit ausgeführt werden, die Vorrichtung befähigen: die Integrität der Kopfzeile und die Identität des Versenders vor dem Entschlüsseln zu verifizieren; und die Integrität des Software-Image und die Identität des Versenders vor dem Entschlüsseln zu verifizieren.
DE102019008059.9A 2018-12-13 2019-11-20 Seitenkanalangriff-Gegenmaßnahme zum sicheren Bootloading Pending DE102019008059A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/218,727 2018-12-13
US16/218,727 US10769280B2 (en) 2018-12-13 2018-12-13 Side channel attack countermeasures for secure bootloading

Publications (1)

Publication Number Publication Date
DE102019008059A1 true DE102019008059A1 (de) 2020-06-18

Family

ID=70858825

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019008059.9A Pending DE102019008059A1 (de) 2018-12-13 2019-11-20 Seitenkanalangriff-Gegenmaßnahme zum sicheren Bootloading

Country Status (2)

Country Link
US (1) US10769280B2 (de)
DE (1) DE102019008059A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021212994B3 (de) 2021-11-18 2023-04-20 Continental Automotive Technologies GmbH Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021048518A (ja) * 2019-09-19 2021-03-25 株式会社東芝 情報処理装置、情報処理システム及び情報処理装置の制御方法
CN114547633A (zh) * 2020-11-24 2022-05-27 北京晶视智能科技有限公司 人工智能模型的加密及签章方法与装置、解密及验证方法与装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009156302A1 (en) * 2008-06-23 2009-12-30 Nxp B.V. Electronic device and method of software or firmware updating of an electronic device
US8539610B2 (en) * 2010-10-29 2013-09-17 Nokia Corporation Software security
US9230112B1 (en) * 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
GB2565270B (en) * 2017-07-03 2022-08-31 Arm Ip Ltd Secure server and compute nodes

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021212994B3 (de) 2021-11-18 2023-04-20 Continental Automotive Technologies GmbH Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
WO2023088523A1 (de) 2021-11-18 2023-05-25 Continental Automotive Technologies GmbH Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung

Also Published As

Publication number Publication date
US10769280B2 (en) 2020-09-08
US20200193028A1 (en) 2020-06-18

Similar Documents

Publication Publication Date Title
EP2899714B1 (de) Gesichertes Bereitstellen eines Schlüssels
DE102019008059A1 (de) Seitenkanalangriff-Gegenmaßnahme zum sicheren Bootloading
DE60202605T2 (de) Verfahren zur sicherung eines elektronischen geräts, sicherheitssystem und elektronisches gerät
EP3655880B1 (de) Hardwaresystem mit blockchain
EP3136285B1 (de) Verfahren und speichermodul für sicherheitsgeschützte schreibvorgänge und/oder lesevorgänge auf dem speichermodul
WO2013026663A1 (de) System zur sicheren übertragung von daten und verfahren
DE102012208834A1 (de) Authentisierung eines Produktes gegenüber einem Authentisierer
DE102015202935A1 (de) Verfahren zum Manipulationsschutz
EP3595237B1 (de) Nachladen kryptographischer programminstruktionen
EP3465513B1 (de) Nutzerauthentifizierung mittels eines id-tokens
DE112019004146T5 (de) Authentifizierung von dateien
DE102015225651A1 (de) Verfahren und Vorrichtung zum Übertragen einer Software
EP3667529B1 (de) Verfahren und vorrichtung zum authentisieren einer fpga-konfiguration
DE102021104326A1 (de) Sichere speicherverbesserungen für authentifizierungssysteme
DE102020201768A1 (de) Vorrichtung und Verfahren zum Betreiben derselben
EP2127294B1 (de) Authentisierung portabler Datenträger
EP3248136A1 (de) Verfahren zum betreiben einer computereinheit mit einer sicheren laufzeitumgebung sowie eine solche computereinheit
DE102021126509B4 (de) Tragbare Chipvorrichtung und Verfahren zum Ausführen eines Softwaremodul-Updates in einer tragbaren Chipvorrichtung
LU500837B1 (de) Verfahren und zugehörige Computersysteme zur Sicherung der Integrität von Daten
DE102014209037A1 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Betriebssysteminstanzen
EP2446599A1 (de) Gegen manipulation geschützte datenübertragung zwischen automatisierungsgeräten
DE102021129442A1 (de) Fehlertolerante überprüfung der bereitstellung von kryptografischen schlüsseln
DE102007022941A1 (de) Verfahren zum Ausführen einer Software auf einem Endgerät
EP3312753A1 (de) Physisches sicherheitselement zum zurücksetzen eines passworts
DE10204832A1 (de) Verfahren zum Schutz eines Zugangskontrollmoduls gegen unbeabsichtigte Benutzung in einer Host-Vorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed