DE112019004146T5 - Authentifizierung von dateien - Google Patents

Authentifizierung von dateien Download PDF

Info

Publication number
DE112019004146T5
DE112019004146T5 DE112019004146.0T DE112019004146T DE112019004146T5 DE 112019004146 T5 DE112019004146 T5 DE 112019004146T5 DE 112019004146 T DE112019004146 T DE 112019004146T DE 112019004146 T5 DE112019004146 T5 DE 112019004146T5
Authority
DE
Germany
Prior art keywords
data segments
subset
identifier
computer file
file
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
DE112019004146.0T
Other languages
English (en)
Inventor
Daniel Arthur UJVARI
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology 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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of DE112019004146T5 publication Critical patent/DE112019004146T5/de
Pending legal-status Critical Current

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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)
    • H04L9/0825Key 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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/3242Cryptographic 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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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

Landscapes

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

Abstract

Es werden Verfahren zur Authentifizierung einer Datei offenbart. Ein Verfahren kann das Auswählen, über eine Kennung, einer Teilmenge von Datensegmenten einer Datei einschließen. Das Verfahren kann weiterhin das Ausführen, über einen Mikrocontroller, einer kryptographischen Funktion nur an der Teilmenge von Datensegmenten der Datei einschließen, um einen Auszug zu erzeugen. Ferner kann das Verfahren das Erzeugen, über den Mikrocontroller, eines Authentifikators basierend auf dem Auszug und einem privaten Schlüssel einschließen. Das Verfahren kann auch das Übermitteln der Datei, der Kennung und des Authentifikators an ein Kryptographieelement einschließen. Darüber hinaus kann das Verfahren das Ausführen, über das Kryptographieelement, der kryptographischen Funktion auf der Teilmenge von Datensegmenten der Datei zum Erzeugen eines zweiten Auszugs einschließen. Ferner kann das Verfahren das Authentifizieren der Datei über das Kryptographieelement durch Verifizieren des Authentifikators basierend auf dem zweiten Auszug und einem öffentlichen Schlüssel des Mikrocontrollers einschließen.

Description

  • PRIORITÄTSANSPRUCH
  • Diese Anmeldung beansprucht die Priorität des Anmeldedatums der vorläufigen US-Patentanmeldung Serien-Nr. 62/719,250 , eingereicht am 17. August 2018, für „Authentication of Files“ und beansprucht die Priorität des Anmeldedatums der US-Patentanmeldung Serien-Nr. 16/221,037 , eingereicht am 14. Dezember 2018, für „Authentication of Files“, anhängig, welche auch die Priorität der vorläufigen US-Patentanmeldung Serien-Nr. 62/719,250 beansprucht, deren Inhalte und Offenbarung jeweils hiermit in ihrer Gesamtheit durch Bezugnahme aufgenommen sind.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemein auf die Datenauthentifizierung und insbesondere auf die Authentifizierung einer Datei durch Ausführen einer Funktion an einer Teilmenge der Datei.
  • STAND DER TECHNIK
  • Die Dateiauthentifizierung wird häufig durchgeführt, um die Authentizität oder andere Elemente zu verifizieren, die sich mit der Integrität einer Datei befassen (z.B. unter anderem ein Anwendungsabbild, eine Datendatei oder eine Computerdatei). Die Dateiintegrität kann durch zufällige Verfälschung, wie fehlerhafte Speichermedien, Übertragungsfehler, Schreibfehler, Software-Fehler usw., sowie durch Modifikation während der Übertragung oder Speicherung durch eine nicht vertrauenswürdige Partei (z.B. u.a. Viren oder Hacking) beeinträchtigt werden. Dazu werden häufig kryptographische Funktionen (z.B. eine Hash-Funktion) verwendet, um eine Authentifizierung an einer Datei durchzuführen. Herkömmliche Authentifizierungsansätze können einen Hash einer gesamten Computerdatei durchführen, der abhängig von der Größe der Computerdatei die Benutzererfahrung beeinträchtigen kann. Um die Authentifizierungszeit zu reduzieren und die Benutzererfahrung zu verbessern, können herkömmliche Ansätze das Pre-Hashing einer Computerdatei und das Speichern des resultierenden Auszugs zur Verwendung während der Authentifizierung einschließen. Diese Ansätze können eine Anfälligkeit für einen Angriff durch eine nicht vertrauenswürdige Partei einführen, die die Computerdatei hacken kann (z.B. Anwendungsabbild) oder die Computerdatei vollständig ersetzen und den gültigen Auszug liefern kann, wenn eine Authentifizierung erfolgen soll.
  • Figurenliste
  • Während diese Offenbarung mit Ansprüchen endet, die bestimmte Ausführungsformen besonders hervorheben und deutlich beanspruchen, können verschiedene Merkmale und Vorteile von Ausführungsformen innerhalb des Umfangs dieser Offenbarung leichter aus der folgenden Beschreibung in Verbindung mit den beigefügten Zeichnungen ermittelt werden, in denen:
    • 1 ist ein vereinfachtes schematisches Blockdiagramm eines Systems, das konfiguriert ist, um eine Datei gemäß einer oder mehreren Ausführungsformen der Offenbarung zu authentifizieren.
    • 2 und 3 zeigen einen Satz von Bytes, die in Zeilen organisiert sind, wobei verschiedene Sätze von Bytes zur Dateiauthentifizierung verwendet werden, gemäß verschiedenen Ausführungsformen der Offenbarung.
    • 4 zeigt ein beispielhaftes Flussdiagramm eines Verfahrens zum Authentifizieren einer Datei gemäß einer oder mehreren Ausführungsformen der Offenbarung.
    • 5 ist ein Blockdiagramm eines beispielhaften Rechensystems.
  • ART(EN) DER AUSFÜHRUNG DER ERFINDUNG
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Offenbarung ausgeführt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem Durchschnittsfachmann zu ermöglichen, die Offenbarung auszuführen. Es versteht sich jedoch, dass die detaillierte Beschreibung und die spezifischen Beispiele, während sie Beispiele von Ausführungsformen der Offenbarung angeben, nur zur Veranschaulichung und nicht zur Einschränkung gegeben sind. Aus dieser Offenbarung können im Rahmen der Offenbarung verschiedene Ersetzungen, Modifikationen, Hinzufügungen, Umstellungen oder Kombinationen davon vorgenommen werden, die für einen Durchschnittsfachmann offensichtlich sind.
  • Jede Charakterisierung, die in dieser Offenbarung als „typisch“, „herkömmlich“ oder „bekannt“ bezeichnet wird, bedeutet nicht notwendigerweise, dass sie nach dem Stand der Technik offenbart ist oder dass die erörterten Aspekte nach dem Stand der Technik anerkannt werden. Es bedeutet auch nicht notwendigerweise, dass es auf dem betreffenden Gebiet weithin bekannt und wohlverstanden ist oder routinemäßig verwendet wird.
  • Gemäß der üblichen Praxis sind die verschiedenen in den Zeichnungen dargestellten Merkmale gegebenenfalls nicht maßstabsgetreu gezeichnet. Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten einer bestimmten Vorrichtung (z. B. Vorrichtung oder System) oder eines bestimmten Verfahrens sein, sondern sind lediglich Darstellungen, die zur Beschreibung verschiedener Ausführungsformen der Offenbarung verwendet werden. Dementsprechend können die Abmessungen der verschiedenen Merkmale der Übersichtlichkeit halber beliebig erweitert oder reduziert werden. Außerdem können einige der Zeichnungen der Übersichtlichkeit halber vereinfacht sein. Somit zeigen die Zeichnungen möglicherweise nicht alle Komponenten einer gegebenen Vorrichtung oder alle Vorgänge eines bestimmten Verfahrens.
  • Hierin beschriebene Informationen und Signale können unter Verwendung verschiedener unterschiedlicher Technologien und Techniken dargestellt werden. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in der Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. Einige Zeichnungen können Signale zur Übersichtlichkeit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es sollte für einen Durchschnittsfachmann ersichtlich sein, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
  • Einige Authentifizierungssysteme und -verfahren schließen Hashing einer gesamten Datei (z.B. Anwendungsabbild) an einem Mikrocontroller ein, um eine Zusammenfassung zu erzeugen, die verwendet werden kann, um einen Authentifikator (z.B. einen Nachrichtenauthentifizierungscode (MAC) bzw. eine digitale Signatur) der Datei zu erzeugen. Bei diesen Systemen und Verfahren kann die gesamte Datei zusammen mit dem Authentifikator von dem Mikrocontroller an ein Kryptographieelement gesendet werden. Bei Empfang der Datei und des Authentifikators kann das Kryptographieelement die gesamte Datei hashen, um einen zweiten Auszug der Datei zu erzeugen. Ferner kann das Kryptographieelement den zweiten Auszug und einen öffentlichen Schlüssel (z.B. einen öffentlichen Schlüssel eines ursprünglichen Geräteherstellers (OEM)) verwenden, um den Authentifikator zu verifizieren und die Datei zu authentifizieren.
  • Sowohl für die symmetrische als auch für die asymmetrische Dateiauthentifizierung kann ein „Messen“ einer Datei (hierin auch als „Messverfahren“ bezeichnet) für die Dateiauthentifizierung erforderlich sein. Die Zeit, die für ein Messverfahren (z.B. das eine kryptographische Funktion, wie beispielsweise eine Hash-Funktion, durchführt) benötigt wird, kann ein signifikanter Teil der Gesamtzeit sein, die für die Dateiauthentifizierung benötigt wird. Manche Dateien (z.B. Anwendungsabbilder) können groß sein, und daher benötigen manche Dateiauthentifizierungsverfahren, wie oben beschrieben, möglicherweise eine erhebliche Zeit, wodurch die Benutzererfahrung beeinträchtigt wird. Daher wurden andere, weniger sichere Verfahren verwendet. Zum Beispiel können einige Dateiauthentifizierungsverfahren einen Auszug auf einem Mikrocontroller vorspeichern bzw. der Mikrocontroller kann einen High-Speed-Hash auf einer Datei (z.B. einem Anwendungsabbild) ausführen. Wie oben angegeben, ist bei diesen herkömmlichen Verfahren der Auszug jedoch anfällig für Hacking, ebenso wie der ungeschützte Mikrocontroller, der den Auszug einschließt. Ein Gegner kann die Datei hacken bzw. die Datei ersetzen und einen gültigen Auszug für die Dateiauthentifizierung bereitstellen.
  • Verschiedene Ausführungsformen der Offenbarung beziehen sich auf das Authentifizieren einer Datei (z.B. Anwendungsabbildungen, Computerdatei, Datendatei oder einer anderen geeigneten Datei) basierend auf einer Teilmenge der Datei und nicht der gesamten Datei. Insbesondere beziehen sich verschiedene Ausführungsformen auf das Authentifizieren einer Datei durch Ausführen einer Funktion an einer Teilmenge von Datensegmenten (z.B. Bytes) einer Datei (d. h. anstatt die Funktion an der gesamten Datei auszuführen). Die Teilmenge der Datei kann so ausgewählt werden, dass es unmöglich sein kann, das Wesen der Datei zu modifizieren, während die Datei noch erfolgreich authentifiziert wird.
  • Insbesondere kann ein Mikrocontroller gemäß einigen Ausführungsformen eine Teilmenge einer Datei (z.B. eine Teilmenge der Bytes der Datei) basierend auf einer Kennung (z.B. einer geheimen Kennung) auswählen. Ferner kann der Mikrocontroller eine Funktion (z.B. eine kryptographische Funktion wie eine Hash-Funktion) an der Teilmenge der Datei (z.B. ein Anwendungsabbild) durchführen, um einen Auszug zu erzeugen, der verwendet werden kann, um einen Authentifikator zu erzeugen. Anstatt jedes Byte in einer Datei einer Hash-Verarbeitung zu unterziehen, um eine Zusammenfassung zu erzeugen, kann beispielsweise eine Teilmenge eines oder mehrerer Wörter (z.B. jedes lange Wort) in einer Datei (z.B. einem Anwendungsabbild) einer Hash-Verarbeitung unterzogen werden, um einen Auszug zu erzeugen, der verwendet werden kann, um einen Authentifikator zu erzeugen. Ferner kann bei Empfang der Datei ein Kryptographieelement versuchen, die Datei zu authentifizieren. Insbesondere kann das Kryptographieelement die Funktion an der Teilmenge der Datei ausführen, um einen zweiten Auszug zu erzeugen, der zusammen mit einem öffentlichen Schlüssel verwendet werden kann, um den Authentifikator zu verifizieren und die Datei zu authentifizieren.
  • Obwohl sich verschiedene hierin beschriebene Ausführungsformen auf eine Hash-Funktion (und ihre resultierende Zusammenfassung) als Messverfahren beziehen, ist die Offenbarung nicht darauf beschränkt, und andere Messverfahren liegen innerhalb des Schutzumfangs der vorliegenden Offenbarung. Als nicht einschränkende Beispiele kann ein Messverfahren einen HMAC (z.B. unter Verwendung eines Hash-basierten Nachrichtenauthentifizierungscodes unter Verwendung eines geheimen Schlüssels), einen CMAC (z.B. unter Verwendung eines Nachrichtenauthentifizierungscodes) oder ein beliebiges anderes geeignetes Verfahren einschließen bzw. darauf basieren.
  • Im Vergleich zu herkömmlichen Authentifizierungsverfahren können verschiedene Ausführungsformen eine Zeitdauer, die für die Dateiauthentifizierung erforderlich ist, erheblich reduzieren, während ein angemessenes Sicherheitsniveau aufrechterhalten wird. Wenn in einem Beispiel jedes vierte Byte einer Datei (z.B. ein Anwendungsabbild) ausgewählt wird, um gehasht zu werden, kann die Zeit, die erforderlich ist, um einen Auszug zu erzeugen, um 75 % reduziert werden. In diesen und anderen Ausführungsformen können kritische Datenbytes berücksichtigt werden, die in den Code eingebettet sind. Zum Beispiel können zusätzlich zur Auswahl jedes vierten Bytes ein oder mehrere kritische Datenbytes ausgewählt werden, um gehasht zu werden. Als weiteres Beispiel können ein oder mehrere kritische Datenbytes berücksichtigt werden, um ein zu wählendes wiederholbares Muster von Datensegmenten zu bestimmen. Kritische Datenbytes können identifiziert werden In einem anderen Beispiel kann zum Authentifizieren eines Anwendungsabbilds für einen 32-Bit-Prozessor ein Hash-Anteil der Authentifizierung um beispielsweise 66 % oder mehr reduziert werden. Höhere Prozentsätze können möglich sein (z.B. wenn die ausgewählte Teilmenge der verwendeten Datei nicht automatisch, sondern aus einer Auswertung des Codes abgeleitet wird). In diesen und anderen Ausführungsformen kann die Geschwindigkeit eines Authentifizierungsprozesses verbessert werden. Die Geschwindigkeit des Authentifizierungsprozesses kann jedoch in Abhängigkeit vom Inhalt der zu authentifizierenden Datei variieren.
  • Zumindest aus diesen Gründen bieten verschiedene Ausführungsformen der vorliegenden Offenbarung, wie hierin ausführlicher beschrieben, eine technische Lösung für ein oder mehrere Probleme, die aus Technologie resultieren, die von einer Person nicht angemessen durchgeführt werden könnte, und verschiedene hierin offenbarte Ausführungsformen wurzeln in der Computertechnologie, um die vorstehend beschriebenen Probleme bzw. Herausforderungen zu überwinden. Ferner können mindestens einige hierin offenbarte Ausführungsformen die computerbezogene Technologie verbessern, indem sie die Computerausführung einer Funktion ermöglichen, die zuvor nicht durch einen Computer ausführbar war.
  • Der Einfachheit halber beziehen sich einige hierin bereitgestellte Beispiele auf die Authentifizierung eines Anwendungsabbildes, es versteht sich jedoch, dass jede Art von Computerdatei (z.B. u.a. Textdateien, Kamerabilddateien, Audiodateien, Videodateien oder Datenbanken) gemäß verschiedenen Ausführungsformen der Offenbarung auf ähnliche Weise authentifiziert werden kann. Außerdem können sich einige Beispiele hierin auf eine Hash-Funktion beziehen, es versteht sich jedoch, dass andere Arten von kryptographischen Funktionen ebenfalls in Betracht gezogen und in Ausführungsformen der Offenbarung sowohl für symmetrische als auch für asymmetrische Authentifizierungsverfahren eingeschlossen sind.
  • Ein „Computer“ kann einen Mikrocontroller bzw. einen Mikrocontroller und ein eingebettetes System, das er betreibt, bedeuten. Eine „Computerdatei“ kann als elektronisch und maschinenlesbar definiert sein, und eingebetteter Code (ausführbare Anweisungen und Daten) kann ein Beispiel einer Computerdatei sein. Ferner werden einige Beispiele hierin als zumindest teilweise durch einen Mikrocontroller implementiert beschrieben. Solche Beispiele sind nicht einschränkend und können auch durch jede Art von Prozessor durchgeführt werden, der in Verbindung mit einem Speicher arbeitet, einschließlich eines Mikroprozessors, eines digitalen Signalprozessors (DSP), einer kombinatorischen Logik und eines Speichers, die eine Zustandsmaschine implementieren, oder eines feldprogrammierbaren Gate-Arrays (FPGA), oder in einem Computer, eingebetteten System oder einem anderen ähnlichen System oder einer anderen ähnlichen Vorrichtung durchgeführt werden.
  • 1 ist ein vereinfachtes schematisches Blockdiagramm eines Systems 100, das konfiguriert ist, um eine Computerdatei gemäß verschiedenen Ausführungsformen der Offenbarung zu authentifizieren. In einigen Ausführungsformen kann die Authentifizierung der Computerdatei während eines sicheren Hochfahrens, einer Firmware-Aktualisierung oder einer anderen Einstellung, in der eine Verifizierung der Computerdatei gewünscht sein kann, durchgeführt werden. Die Computerdatei kann ein Anwendungsabbild oder eine beliebige andere Datei sein, wie beispielsweise eine Datendatei.
  • Das System 100, das ein kryptographisches System einschließen kann, schließt eine Vorrichtung 110 und eine Vorrichtung 120 ein. Zum Beispiel kann die Vorrichtung 110, die hierin auch als „Mikrocontroller“ bezeichnet werden kann, eine Datei 112 und einen Bootloader 114 einschließen. Der Mikrocontroller 110, der einen Prozessor (z.B. Prozessor 510 aus 5) einschließen kann, kann auch andere Computerdateien einschließen, die darauf gespeichert sind (in 1 nicht gezeigt). Als nicht einschränkendes Beispiel kann die Datei 112 ein „Anwendungsabbild“ einschließen und hierin auch als solches bezeichnet werden.
  • Die Vorrichtung 120, die hierin auch als „Kryptographieelement“ oder „sicherer Knoten“ bezeichnet werden kann, kann ein sicheres Element (z.B. einen sicheren Kryptoprozessor) umfassen, das konfiguriert ist, um eine Authentifizierung (hierin auch als „Verifizierung“ bezeichnet) einer Computerdatei durchzuführen, die in diesem Beispiel eine Kopie des Anwendungsabbilds 112 einschließt. In einigen Ausführungsformen kann das Kryptographieelement 120 von dem Mikrocontroller 110 getrennt sein (z.B. eine separate integrierte Schaltung), während in anderen Ausführungsformen das Kryptographieelement 120 und der Mikrocontroller 110 auf derselben integrierten Schaltung hergestellt sein können, wobei das Kryptographieelement 120 in einem gesicherten Bereich konfiguriert ist.
  • Obwohl herkömmliche Verfahren das gesamte Anwendungsabbild 112 zur Authentifizierung verwenden können, wie oben erwähnt, können einige Ausführungsformen der Offenbarung das Auswählen einer Teilmenge des Anwendungsabbilds 112 (z.B. einer Teilmenge von Datensegmenten des Anwendungsabbildes 112) einschließen, die zur Authentifizierung verwendet werden sollen. In einigen Ausführungsformen kann das gesamte Anwendungsabbild 112 zusammen mit einer Kennung 118, die verwendet werden kann, um die Teilmenge des Anwendungsabbildes 112 auszuwählen, vom Mikrocontroller 110 an das Kryptographieelement 120 gesendet werden (z.B. über eine sichere Nachricht). In anderen Ausführungsformen können ein Authentifikator und die Teilmenge des Anwendungsabbilds 112 an das Kryptographieelement 120 gesendet werden (z.B. über eine sichere Nachricht).
  • Wie hierin ausführlicher beschrieben wird, können das System 100 und insbesondere zum Beispiel der Mikrocontroller 110 konfiguriert sein, um die Kennung 118 zu bestimmen, die verwendet werden kann, um eine Teilmenge von Datensegmenten des Anwendungsabbilds 112 auszuwählen, die zur Authentifizierung verwendet werden können. Wie nachstehend ausführlicher beschrieben, kann die Kennung 118 unter anderem einen Algorithmus, ein wiederholbares Muster oder eine Zufallszahl identifizieren bzw. darauf basieren, ohne darauf beschränkt zu sein.
  • Ferner kann der Mikrocontroller 110 gemäß verschiedenen Ausführungsformen eine Funktion (z.B. eine kryptographische Funktion, wie beispielsweise eine Hash-Funktion) an der ausgewählten Teilmenge von Datensegmenten des Anwendungsabbilds 112 durchführen, um einen Auszug 121 zu erzeugen, der durch einen privaten Schlüssel (z.B. einen privaten OEM-Schlüssel) 119 signiert ist, um einen Authentifikator 122 zu erzeugen. Ferner kann der Mikrocontroller 110 das Anwendungsabbild 112, den Authentifikator 122 und die Kennung 118 an das Kryptographieelement 120 senden.
  • Verschiedene Ausführungsformen können eine Authentifizierung für symmetrische bzw. asymmetrische Kryptographie einschließen. Dementsprechend kann beispielsweise der Authentifikator 122 einen Nachrichtenauthentifizierungscode (MAC) bzw. eine digitale Signatur einschließen. In einigen Ausführungsformen kann eine digitale Signatur verwendet werden, um die Integrität einer Nachrichtenintegrität und die Identität eines Senders (d. h. des Nachrichtensenders) zu verifizieren. MACs sind symmetrisch, und MACs können denselben Schlüssel zur Erzeugung und Verifizierung verwenden (z.B. derselbe Schlüssel kann verwendet werden, um den MAC zu erzeugen und den MAC zu verifizieren). Digitale Signaturen sind asymmetrisch, und digitale Signaturen können einen privaten Schlüssel zur Erzeugung und einen öffentlichen Schlüssel zur Verifizierung verwenden (z.B. kann ein privater Schlüssel verwendet werden, um die Signatur zu erzeugen, und ein öffentlicher Schlüssel kann verwendet werden, um die Signatur zu verifizieren).
  • Das Kryptographieelement 120 kann das Anwendungsabbild 112, die Kennung 118 und den Authentifikator 122 vom Mikrocontroller 110 empfangen. Unter Verwendung der Kennung 118 kann das Kryptographieelement 120 die ausgewählte Teilmenge von Datensegmenten des Anwendungsabbilds 112 bestimmen und eine kryptographische Funktion an der Teilmenge von Datensegmenten durchführen, um einen zweiten Auszug 124 (z.B. einen zweiten Hash) zu erzeugen. Ferner kann das Kryptographieelement 120 eine Authentifizierung des Anwendungsabbilds 112 durch Verifizierung des Authentifikators 122 basierend auf dem zweiten Auszug 124 und einem öffentlichen Schlüssel (z.B. OEM public key) 126 durchführen. Gemäß zumindest einigen Ausführungsformen können Authentifikatoren (z.B. Signaturen) und öffentliche Schlüssel sicher gespeichert werden (z.B. innerhalb des Kryptographieelements 120).
  • Wie oben erwähnt, kann eine Teilmenge der Datei 112 basierend auf der Kennung (hierin auch als „geheime Kennung“ bezeichnet) 118 bestimmt werden, die unter anderem ein wiederholbares Muster, eine Zufallszahl, eine pseudozufällige Verteilung oder einen Algorithmus identifizieren bzw. darauf basieren kann. Genauer gesagt kann die Kennung 118, die zum Beispiel durch das System 100 (z.B. den Mikrocontroller 110) bestimmt werden kann, angeben, wie eine Teilmenge einer Datei bestimmt wird (z.B. über einen Algorithmus, über ein wiederholbares Muster oder über eine Zufallszahl). Anders ausgedrückt gibt die Kennung 118 an, welche Datensegmente als Teilmenge einer Datei ausgewählt werden. Die Kennung kann ein Geheimnis sein, so dass ein Mitarbeiter möglicherweise nicht in der Lage ist, zu bestimmen, welche Datensegmente als die Teilmenge der Datei ausgewählt werden.
  • Gemäß einigen Ausführungsformen kann die Kennung 118 dem Kryptographieelement 120 bekannt sein, um eine Authentifizierung durchzuführen. Beispielsweise kann die Kennung 118 vom Mikroprozessor 110 an das Kryptographieelement 120 gesendet werden. In einigen Ausführungsformen kann die Kennung 118 im Verlauf der Authentifizierung mehrerer Computerdateien mehr als einmal verwendet werden und ist somit nicht eindeutig jeder Instanz der Imagedatei 112 zugeordnet. In einigen Ausführungsformen kann jedes Mal, wenn eine neue Computerdatei authentifiziert werden soll, eine neue Kennung 118 erzeugt werden, die dann eindeutig jeder Instanz der Imagedatei 112 zugeordnet ist.
  • 2 zeigt einen Satz von Datensegmenten (z.B. Bytes, die jeweils 8 Bits umfassen), die in den Zeilen 1 bis n organisiert sind (wobei jede Zeile auch als „Wörter“ bezeichnet wird). In diesem Beispiel kann ein Mikrocontroller (z.B. Der Mikrocontroller 110 von 1) einen 32-Bit-Mikrocontroller einschließen, der die Computerdatei in n Wörter organisiert, wobei jedes Wort vier Datensegmente einschließt. In diesem Beispiel kann jedes Datensegment ein Byte (z.B. 8 Bit) lang sein. Andere Anordnungen und Größen werden ebenfalls in Betracht gezogen.
  • Gemäß verschiedenen Ausführungsformen der Offenbarung kann anstelle der Auswahl aller Datensegmente (z.B. Bytes), wie in 2 gezeigt, eine Teilmenge der Datensegmente ausgewählt werden, wie in 3 gezeigt, wobei die ausgewählten Datensegmente durch die Bezugsziffer 310 gekennzeichnet sind. Genauer gesagt wird zum Beispiel in dem Satz von Datensegmenten, der in 3 gezeigt ist, jedes dritte Datensegment (z.B. Byte) zur Authentifizierung ausgewählt (z.B. basierend auf einem wiederholbaren Muster). Somit können in dem Beispiel von 3 das erste und vierte Datensegment von Zeile 1 ausgewählt werden, das dritte Datensegment von Zeile 2 ausgewählt werden, das zweite Byte von Zeile 3 ausgewählt werden und das erste und vierte Byte von Zeile 4 ausgewählt werden und so weiter. Somit können verschiedene Ausführungsformen die kryptographische Funktion für ein wiederholbares Muster von Datensegmenten durchführen, wie beispielsweise jedes zweite Byte, jedes dritte Byte, jedes vierte Byte, ohne Einschränkung. In einigen Ausführungsformen kann der Mikrocontroller 110 konfiguriert sein, einen deterministischen Algorithmus auszuführen, um die Datensegmente (z.B. Bytes) auszuwählen, die gehasht werden sollen.
  • In anderen Ausführungsformen kann die Teilmenge von Datensegmenten (z.B. Bytes) gemäß einer zufälligen (z.B. pseudozufälligen) Verteilung der Datensegmente ausgewählt werden. Zum Beispiel kann eine Zufallszahl erzeugt werden (z.B. eine zufällige 32-Bitzahl), die verwendet wird, um auszuwählen, welche Datensegmente verwendet werden, um den Auszug zu erzeugen. In einem solchen Beispiel kann die 32-Bit-Nummer eine Binärzahl (z.B. 10010001100011101010110011001111) sein, in der jedes Bit der Zufallszahl einem der Bytes in diesem wiederholbaren Muster in der gesamten Computerdatei entspricht. Zum Beispiel kann jede logische 1 einem Byte entsprechen, das in dem Hash enthalten ist, während jede logische 0 einem Byte entsprechen kann, das nicht in dem Hash enthalten ist. Selbstverständlich können manche Ausführungsformen eine logische 0 verwenden, um Bytes darzustellen, die gehasht werden sollen, und eine logische 1, um Bytes darzustellen, die nicht gehasht werden sollen.
  • Wenn „t‟ gleich der Zeitdauer ist, die benötigt wird, um ein Byte zu einem Hash-Auszug hinzuzufügen, und „n‟ gleich der Anzahl von Wörtern ist, kann die Zeit, die für einen vollständigen (d. h. jedes Byte) Hash eines Anwendungsabbilds für einen 32-Bit-Prozessor benötigt wird, 4 nt betragen. Die Zeit, die für eine Teilmenge benötigt wird, die nur jedes vierte Byte des Anwendungsabbildes für einen 32-Bit-Prozessor enthält, beträgt nur 4nt/4. Wenn also jedes vierte Byte gehasht würde, kann die Zeit, die benötigt wird, um den Auszug zu erzeugen, um 75 % reduziert werden, jedoch bleibt die Sicherheit erhalten, da es möglicherweise unmöglich ist, solch eine kleine Menge des Anwendungsbildes signifikant zu modifizieren. Wenn jedes dritte Byte gehasht würde, kann die Zeit, die benötigt wird, um den Auszug zu erzeugen, um 67 % reduziert werden. Wenn die Hälfte der Bytes gehasht wurde, kann die Zeitreduzierung 50 % betragen. In größeren Systemen (z.B. einschließlich 512-oder lK-Blöcken mit 32-Bit-Wörtern innerhalb der Blöcke) kann das Auswählen einer Adresse, die mit 32-Bit-Wörtern ausgerichtet ist, erheblich schneller sein als das Extrahieren eines Bytes aus einem 32-Bit-Wort.
  • In zumindest einigen Ausführungsformen kann eine Bestimmung zum Auswählen von Datensegmenten (z.B. die gehasht werden sollen) zumindest teilweise auf Inhalten zu der Computerdatei basieren. Zum Beispiel können bestimmte kritische Daten, die in den Code einer Computerdatei eingebettet sind, markiert und als spezifisch ausgewählt angesehen werden, um gehasht zu werden. Zum Beispiel können bestimmte Bereiche des Datenraums in der Computerdatei bezeichnet werden, um alle Bytes zu hashen, während in anderen Bereichen der Computerdatei nur eine Teilmenge von Bytes bezeichnet werden kann. Kombinationen jedes dieser Ansätze werden ebenfalls in Betracht gezogen und liegen im Schutzumfang der Offenbarung.
  • Für eine Computerdatei (z.B. Anwendungsabbild) können zum Beispiel Ausführungsformen der Offenbarung eine Computerdatei ausreichend authentifizieren, und jede Modifikation der Computerdatei (z.B. durch eine nicht vertrauenswürdige Partei) kann erfasst werden. Verschiedene Ausführungsformen können die Zeitdauer reduzieren, die benötigt wird, um eine Computerdatei zu hashen, um eine gültige Darstellung der Computerdatei zu erreichen, im Vergleich zum Durchführen eines Hash an der gesamten Computerdatei. Da die ausgewählten Datensegmente (z.B. Bytes) in der Regel voneinander abhängig sind, wenn sie Teil einer Computerdatei (z.B. eines Anwendungsabbilds) sind, kann eine Teilmenge der Computerdatei so ausgewählt werden, dass es unmöglich ist, den Code ohne Erkennung signifikant zu ändern. Somit kann eine ähnliche Sicherheit im Vergleich zu herkömmlichen Authentifizierungsansätzen erreicht werden.
  • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens 400 zum Authentifizieren einer Computerdatei. Das Verfahren 400 kann gemäß mindestens einer in der vorliegenden Offenbarung beschriebenen Ausführungsform angeordnet sein. Das Verfahren 400 kann in einigen Ausführungsformen von einer Vorrichtung oder einem System durchgeführt werden, wie beispielsweise dem System 100 von 1, einem System 500 (siehe 5), einer oder mehreren der Komponenten davon oder einem anderen System oder einer anderen Vorrichtung. In diesen und anderen Ausführungsformen kann das Verfahren 400 basierend auf der Ausführung von Anweisungen durchgeführt werden, die auf einem oder mehreren nichtflüchtigen computerlesbaren Medien gespeichert sind. Obwohl als diskrete Blöcke veranschaulicht, können verschiedene Blöcke in Abhängigkeit von der gewünschten Implementierung in zusätzliche Blöcke unterteilt, in weniger Blöcke kombiniert oder eliminiert werden.
  • Das Verfahren 400 kann bei Block 402 beginnen, wo ein erster Auszug über die Ausführung einer kryptographischen Funktion auf nur einer Teilmenge von Datensegmenten einer Computerdatei erzeugt werden kann, und das Verfahren 400 mit Block 404 fortfahren kann. Zum Beispiel kann die Computerdatei 112 (siehe 1) ein Anwendungsabbild einschließen, das eine Anzahl von Datensegmenten (z.B. eine Anzahl von Bytes) einschließt, und der erste Auszug 121 kann durch Hashen einer Teilmenge (z.B. unter anderem jedes 3. Segment oder jedes 4. Segment, ohne Einschränkung) der Anzahl von Datensegmenten der Computerdatei 112 erzeugt werden. Ferner kann zum Beispiel der erste Auszug 121 über den Mikrocontroller 110 von 1 erzeugt werden. Zum Beispiel kann ein Prozessor wie der Prozessor 510 von 5, den ersten Auszug 121 erzeugen.
  • Bei Block 404 kann ein Authentifikator basierend auf dem ersten Auszug erzeugt werden, und das Verfahren 400 kann mit Block 406 fortfahren. Zum Beispiel kann der Authentifikator 122, der zum Beispiel einen MAC bzw. eine digitale Signatur des Mikrocontrollers 110 von 1 einschließen kann, über den Mikrocontroller 110 erzeugt werden. Beispielsweise kann ein Prozessor, wie der Prozessor 510 von 5, den Authentifikator erzeugen.
  • Gemäß einigen Ausführungsformen können die Vorgänge von Block 402 bzw. Block 404 zum Beispiel von einem oder mehreren Designern (z.B. Firmware-bzw. Software-Designern) durchgeführt werden, die Computerdatei vorbereiten (z.B. um aus dem Feld gesendet zu werden).
  • Bei Block 406 können die Computerdatei und der Authentifikator an ein Kryptographieelement übermittelt werden, und das Verfahren 400 kann mit Block 408 fortfahren. Beispielsweise können die Computerdatei 112 und der Authentifikator 122 (z.B. eine digitale Signatur) vom Mikrocontroller 110 an das Kryptographieelement 120 übermittelt werden (siehe 1).
  • Bei Block 408 kann ein zweiter Auszug über die Ausführung der kryptographischen Funktion nur auf der Teilmenge von Datensegmenten der übermittelten Computerdatei 112 erzeugt werden, und das Verfahren 400 kann mit Block 410 fortfahren. Zum Beispiel kann das Kryptographieelement 120 die gleiche Teilmenge von Datensegmenten der Computerdatei (z.B. Anwendungsabbild) 112 hashen, um den zweiten Auszug 124 zu erzeugen. Zum Beispiel kann ein Prozessor, wie der Prozessor 510 von 5, den zweiten Auszug 124 erzeugen.
  • In Block 410 kann die übermittelte Computerdatei 112 über eine Verifizierung des Authentifikators basierend auf dem zweiten Auszug 124 und einem öffentlichen Schlüssel authentifiziert werden. Zum Beispiel kann das Kryptographieelement 120 den übermittelten Authentifikator 122 basierend auf dem zweiten Auszug 124 und dem öffentlichen Schlüssel 126 des Mikrocontrollers 110 verifizieren, um die übermittelte Computerdatei 112 zu authentifizieren. Zum Beispiel kann ein Prozessor, wie der Prozessor 510 von 5, die Computerdatei authentifizieren.
  • In einigen Ausführungsformen kann ein Authentifikator, der am Kryptographieelement 120 empfangen wird, gespeichert und zum Beispiel für ein sicheres Booten verwendet werden. Ferner können zum Beispiel, nachdem eine neue Firmware akzeptiert wurde, während eines sicheren Bootens die Vorgänge der Blöcke 408 und 410 durchgeführt werden, um den gespeicherten Authentifikator zu verifizieren.
  • Modifikationen, Hinzufügungen oder Auslassungen können an dem Verfahren 400 vorgenommen werden, ohne von dem Schutzumfang der vorliegenden Offenbarung abzuweichen. Zum Beispiel können die Vorgänge des Verfahrens 400 in unterschiedlicher Reihenfolge umgesetzt werden. Des Weiteren werden die skizzierten Vorgänge und Aktionen nur als Beispiele bereitgestellt, und einige der Vorgänge und Aktionen können optional, zu weniger Vorgängen und Aktionen kombiniert oder zu zusätzlichen Vorgängen und Aktionen erweitert sein, ohne das Wesen der offenbarten Ausführungsform zu beeinträchtigen. Zum Beispiel kann die Teilmenge von Datensegmenten bestimmt bzw. ausgewählt werden, und in einigen Ausführungsformen kann eine andere Teilmenge von Datensegmenten der Computerdatei, die nicht für die kryptographische Funktion verwendet werden soll, bestimmt bzw. ausgewählt werden. Ferner kann zum Beispiel eine Kennung bestimmt werden, und die Teilmenge von Datensegmenten kann basierend auf der Kennung ausgewählt bzw. bestimmt werden. Genauer kann die Kennung, die unter anderem ein wiederholbares Muster, eine Zufallszahl oder einen Algorithmus anzeigen kann, ohne Einschränkung verwendet werden, um die Teilmenge von Datensegmenten zur Authentifizierung zu bestimmen bzw. auszuwählen. Ferner kann in einigen Ausführungsformen die Kennung (z.B. zusammen mit der Computerdatei 112 und dem Authentifikator 122) vom Mikrocontroller 110 an das Kryptographieelement 120 gesendet werden.
  • 5 veranschaulicht ein beispielhaftes System 500 gemäß mindestens einer hierin beschriebenen Ausführungsform. Das System 500 kann jedes geeignete System, jede geeignete Vorrichtung oder jede geeignete Vorrichtung einschließen, die zum Authentifizieren einer Datei konfiguriert sind. Das System 500 kann einen Prozessor 510, einen Speicher 530, einen Datenspeicher 520 und eine Kommunikationsvorrichtung 540 einschließen, die alle kommunikativ gekoppelt sein können. Der Datenspeicher 530 kann verschiedene Arten von Daten einschließen, wie öffentliche und private Schlüssel, Authentifikatoren, kryptographische Funktionen, Auszüge bzw. andere Daten, die der Authentifizierung einer Datei zugeordnet sind.
  • Im Allgemeinen kann der Prozessor 510 einen beliebigen geeigneten Spezial-oder Allzweckcomputer, eine Recheneinheit oder eine Verarbeitungsvorrichtung einschließlich verschiedener Computerhardware- oder -softwaremodule einschließen und kann konfiguriert sein, Anweisungen auszuführen, die auf einem beliebigen anwendbaren computerlesbaren Speichermedium, insbesondere auf dem Speicher 530, gespeichert sind. Zum Beispiel kann der Prozessor 510 einen Mikroprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine beliebige andere digitale oder analoge Schaltung einschließen, die konfiguriert ist, Programmanweisungen zu interpretieren bzw. auszuführen bzw. Daten zu verarbeiten. In einigen Ausführungsformen kann der Prozessor 510 Teil des Mikrocontrollers 110 bzw. der Vorrichtung 120 sein (siehe 1).
  • Obwohl in 5 als ein einzelner Prozessor veranschaulicht, versteht es sich, dass der Prozessor 510 eine beliebige Anzahl von Prozessoren einschließen kann, die über eine beliebige Anzahl von Netzwerken oder physischen Standorten verteilt sind, die konfiguriert sind, um einzeln oder gemeinsam eine beliebige Anzahl von hierin beschriebenen Operationen durchzuführen. In einigen Ausführungsformen kann der Prozessor 510 Programmanweisungen interpretieren bzw. ausführen bzw. Daten verarbeiten, die in dem Speicher 530, dem Datenspeicher 520 oder dem Speicher 530 und dem Datenspeicher 520 gespeichert sind. In einigen Ausführungsformen kann der Prozessor 510 Programmanweisungen aus dem Datenspeicher 520 abrufen und die Programmanweisungen in den Speicher 530 laden.
  • Nachdem die Programmanweisungen in den Speicher 530 geladen wurden, kann der Prozessor 510 die Programmanweisungen ausführen, wie beispielsweise Anweisungen zum Durchführen eines oder mehrerer Blöcke des Verfahrens 400, wie hierin beschrieben. Zum Beispiel kann der Prozessor 510 über eine Kennung eine Teilmenge von Datensegmenten einer Computerdatei auswählen. Weiterhin kann der Prozessor 510 eine kryptographische Funktion nur an der Teilmenge von Datensegmenten der Computerdatei ausführen, um einen ersten Auszug zu erzeugen. Weiterhin kann der Prozessor 510 einen Authentifikator basierend auf dem ersten Auszug und einem privaten Schlüssel erzeugen. Darüber hinaus kann der Prozessor 510 die kryptographische Funktion auf der Teilmenge von Datensegmenten der Computerdatei ausführen, um einen zweiten Auszug zu erzeugen. Außerdem kann der Prozessor 510 die Computerdatei über die Verifizierung des Authentifikators, basierend auf dem zweiten Auszug und einem öffentlichen Schlüssel, authentifizieren.
  • Der Speicher 530 und der Datenspeicher 520 können computerlesbare Speichermedien oder ein oder mehrere computerlesbare Speichermedien zum Tragen von oder mit darauf gespeicherten computerausführbaren Anweisungen oder Datenstrukturen einschließen. Solche computerlesbaren Speichermedien können beliebige verfügbare Medien sein, auf die ein Allzweck- oder Spezialcomputer zugreifen kann, wie beispielsweise der Prozessor 510.
  • Als Beispiel und nicht einschränkend können solche computerlesbaren Speichermedien nichtflüchtige computerlesbare Speichermedien einschließen, die Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), Compact Disc Read-Only-Speicher (CD-ROM) oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen, Flash-Speichervorrichtungen (z.B. Festkörperspeichervorrichtungen) oder ein beliebiges anderes Speichermedium einschließen, das verwendet werden kann, um gewünschten Programmcode in Form von computerausführbaren Anweisungen oder Datenstrukturen zu tragen oder zu speichern, und auf das durch einen Allzweck- oder Spezialcomputer zugegriffen werden kann. Kombinationen des Vorstehenden können auch innerhalb des Schutzumfangs von computerlesbaren Speichermedien eingeschlossen sein. Computerausführbare Anweisungen können zum Beispiel Anweisungen und Daten einschließen, die konfiguriert sind, um den Prozessor 510 zu veranlassen, eine bestimmte Operation oder Gruppe von Operationen durchzuführen.
  • Die Kommunikationsvorrichtung 540 kann eine beliebige Komponente, Vorrichtung, ein beliebiges System oder eine beliebige Kombination davon einschließen, die konfiguriert ist, um Informationen über ein Netzwerk zu senden oder zu empfangen. In einigen Ausführungsformen kann die Kommunikationsvorrichtung 540 mit anderen Vorrichtungen an anderen Standorten, demselben Standort oder sogar anderen Komponenten innerhalb desselben Systems kommunizieren. Zum Beispiel kann die Kommunikationsvorrichtung 540 ein Modem, eine Netzwerkkarte (drahtlos oder drahtgebunden), eine Infrarotkommunikationsvorrichtung, eine drahtlose Kommunikationsvorrichtung (wie eine Antenne) bzw. einen Chipsatz (wie eine Bluetooth-Vorrichtung, eine 802.6-Vorrichtung (z.B. Metropolitan Area Network (MAN)), eine WiFi-Vorrichtung, eine WiMax-Vorrichtung, Mobilfunkkommunikationseinrichtungen usw.) bzw. dergleichen einschließen. Die Kommunikationsvorrichtung 540 kann ermöglichen, dass Daten mit einem Netzwerk bzw. beliebigen anderen Vorrichtungen oder Systemen, die in der vorliegenden Offenbarung beschrieben sind, ausgetauscht werden. Zum Beispiel kann die Kommunikationsvorrichtung 540 es dem System 500 ermöglichen, mit anderen Systemen bzw. Vorrichtungen zu kommunizieren.
  • Modifikationen, Hinzufügungen oder Auslassungen können an dem Verfahren 500 vorgenommen werden, ohne von dem Schutzumfang der vorliegenden Offenbarung abzuweichen. Zum Beispiel kann der Datenspeicher 520 mehrere verschiedene Speichermedien sein, die sich an mehreren Orten befinden und auf die der Prozessor 510 über ein Netzwerk zugreift.
  • Wie oben angegeben, können die hierin beschriebenen Ausführungsformen die Verwendung eines Spezial- oder Allzweckcomputers (z.B. der Prozessor 510 von 5) einschließen, der verschiedene Computerhardware-oder Softwaremodule einschließt, wie nachstehend ausführlicher erörtert. Ferner können, wie vorstehend angegeben, hierin beschriebene Ausführungsformen unter Verwendung von computerlesbaren Medien (z.B. dem Speicher 530 oder dem Datenspeicher 520 von 5) implementiert werden, um computerausführbare Anweisungen oder Datenstrukturen darauf zu tragen oder zu speichern.
  • Wie hierin verwendet, können sich die Begriffe „Modul“ oder „Komponente“ auf spezifische Hardware-Implementierungen beziehen, die konfiguriert sind, um die Aktionen des Moduls oder der Komponente bzw. Softwareobjekte oder Softwareroutinen durchzuführen, die beispielsweise auf dem System 100 aus 1 bzw. dem Rechensystem 500 aus 5 gespeichert sind bzw. von dieser ausgeführt werden können. In einigen Ausführungsformen können die verschiedenen Komponenten, Module, Engines und Dienste, die in der vorliegenden Offenbarung beschrieben sind, als Objekte oder Prozesse implementiert werden, die auf dem Rechensystem ausgeführt werden (z. B. als separate Threads). Obwohl einige der hierin beschriebenen Systeme und Verfahren allgemein als in Software implementiert (gespeichert auf bzw. ausgeführt durch Universalhardware) beschrieben sind, sind spezifische Hardware-Implementierungen oder eine Kombination von Software und spezifischen Hardware-Implementierungen ebenfalls möglich und werden in Betracht gezogen. In dieser Beschreibung kann eine „Datenverarbeitungseinheit“ ein beliebiges Datenverarbeitungssystem, wie hierin definiert, oder ein beliebiges Modul oder eine beliebige Kombination von Modulen, die auf einem Datenverarbeitungssystem ausgeführt werden, wie beispielsweise das System 500, einschließen.
  • Während bestimmte veranschaulichende Ausführungsformen in Verbindung mit den Figuren beschrieben wurden, wird ein Durchschnittsfachmann erkennen und anerkennen, dass der Umfang dieser Offenbarung nicht auf die Ausführungsformen beschränkt ist, die in dieser Offenbarung explizit gezeigt und beschrieben sind. Vielmehr können viele Ergänzungen, Streichungen und Modifikationen an den in dieser Offenbarung beschriebenen Ausführungsformen vorgenommen werden, um Ausführungsformen innerhalb des Umfangs dieser Offenbarung zu erzeugen, wie diejenigen, die speziell beansprucht werden, einschließlich gesetzlicher Äquivalente. Zusätzlich können Merkmale einer offenbarten Ausführungsform mit Merkmalen einer anderen offenbarten Ausführungsform kombiniert werden, während sie immer noch im Umfang dieser Offenbarung liegen, wie er von den Erfindern in Betracht gezogen wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/719250 [0001]
    • US 16/221037 [0001]

Claims (20)

  1. System, umfassend: einen oder mehrere Prozessoren, die konfiguriert sind zum: Auswählen, basierend auf einer Kennung, einer Teilmenge von Datensegmenten einer Computerdatei zum Erzeugen eines ersten Auszugs mit einer kryptographischen Funktion; Ausführen der kryptographischen Funktion an der ausgewählten Teilmenge von Datensegmenten der Computerdatei, um den ersten Auszug zu erzeugen; Erzeugen eines Authentifikators basierend auf dem ersten Auszug und einem privaten Schlüssel; und Senden der Computerdatei, der Kennung und des Authentifikators an einen sicheren Knoten.
  2. System nach Anspruch 1, wobei ein oder mehrere Prozessoren auf dem sicheren Knoten konfiguriert sind zum: Ausführen, an dem sicheren Knoten, der kryptographischen Funktion auf der Teilmenge von Datensegmenten der Computerdatei, um einen zweiten Auszug zu erzeugen; und Authentifizieren der Computerdatei über Verifizierung des Authentifikators, basierend auf dem zweiten Auszug und einem öffentlichen Schlüssel.
  3. System nach Anspruch 1, wobei die Kennung ein wiederholbares Muster von Datensegmenten identifiziert.
  4. System nach Anspruch 3, wobei das wiederholbare Muster in einer Form von 1 Datensegment vorliegt, das für alle N Datensegmente ausgewählt wird, wobei N eine positive ganze Zahl ist.
  5. System nach Anspruch 1, wobei die Kennung eine pseudozufällige Verteilung von Datensegmenten der Computerdatei identifiziert.
  6. System nach Anspruch 1, wobei die Kennung einen Algorithmus enthält oder über diesen bestimmt wird.
  7. System nach Anspruch 1, wobei die Kennung eine zufällig erzeugte Zahl enthält oder durch diese bestimmt wird.
  8. System nach Anspruch 7, wobei die zufällig erzeugte Zahl durch eine Binärzahl dargestellt wird, wobei jedes Bit der Binärzahl einem Datensegment innerhalb entweder der Teilmenge von Datensegmenten oder einer anderen Teilmenge von Datensegmenten der Computerdatei entspricht, die nicht zum Erzeugen des Auszugs ausgewählt wurde.
  9. System nach Anspruch 1, wobei die kryptographische Funktion eine Hash-Funktion enthält und die Computerdatei ein Anwendungsabbild umfasst.
  10. Verfahren, umfassend: Auswählen, über eine Kennung, einer Teilmenge von Datensegmenten einer Computerdatei; Ausführen, über einen Mikrocontroller, einer kryptographischen Funktion nur an der Teilmenge von Datensegmenten der Computerdatei, um einen ersten Auszug zu erzeugen; Erzeugen, über den Mikrocontroller, eines Authentifikators basierend auf dem ersten Auszug und einem privaten Schlüssel; Übermitteln der Computerdatei, der Kennung und des Authentifikators an ein Kryptographieelement; Ausführen, über das Kryptographieelement, der kryptographischen Funktion auf der Teilmenge von Datensegmenten der Computerdatei, um einen zweiten Auszug zu erzeugen; und Authentifizieren, über das Kryptographieelement, der Computerdatei, über die Verifizierung des Authentifikators, basierend auf dem zweiten Auszug und einem öffentlichen Schlüssel.
  11. Verfahren nach Anspruch 10, wobei das Ausführen der kryptographischen Funktion das Ausführen einer Hash-Funktion nur auf der Teilmenge von Datensegmenten eines Anwendungsbildes umfasst.
  12. Verfahren nach Anspruch 10, ferner umfassend das Bestimmen der Kennung.
  13. Verfahren nach Anspruch 12, wobei das Bestimmen der Kennung das Bestimmen eines wiederholbaren Musters von Datensegmenten der Computerdatei in einer Form von 1 Datensegment umfasst, das für alle N Datensegmente ausgewählt wird, wobei N eine positive ganze Zahl ist.
  14. Verfahren nach Anspruch 12, wobei das Bestimmen der Kennung das Bestimmen der Kennung über einen Algorithmus oder eine zufällig erzeugte Zahl umfasst.
  15. Nichtflüchtiges maschinenlesbares Medium, das Anweisungen speichert, die als Reaktion auf die Ausführung durch mindestens einen Prozessor eines Systems bewirken, dass das System Operationen durchführt, die Folgendes umfassen: Auswählen, über eine Kennung, einer Teilmenge von Datensegmenten eines Anwendungsabbilds; Ausführen einer ersten Hash-Operation nur an der Teilmenge von Datensegmenten des Anwendungsabbilds, um einen ersten Auszug zu erzeugen; Erzeugen eines Authentifikators basierend auf dem ersten Auszugs und einem privaten Schlüssel; Ausführen einer zweiten Hash-Operation an der Teilmenge von Datensegmenten des Anwendungsabbilds, um einen zweiten Auszug zu erzeugen; und Authentifizieren der Computerdatei über die Verifizierung des Authentifikators, basierend auf dem zweiten Auszug und einem öffentlichen Schlüssel.
  16. Nichtflüchtiges maschinenlesbares Medium nach Anspruch 15, wobei das Auswählen der Teilmenge von Datensegmenten das Auswählen einer Teilmenge von Bytes des Anwendungsabbilds umfasst.
  17. Nichtflüchtiges maschinenlesbares Medium nach Anspruch 15, wobei die Operationen ferner das Bestimmen der Kennung basierend auf einem wiederholbaren Muster und/oder einer Zufallszahl und/oder einem Algorithmus umfassen.
  18. Nichtflüchtiges maschinenlesbares Medium nach Anspruch 15, wobei das Ausführen der zweiten Hash-Operation das Ausführen der zweiten Hash-Operation auf einem sicheren Kryptographieelement umfasst.
  19. Nichtflüchtiges maschinenlesbares Medium nach Anspruch 15, wobei das Ausführen der ersten Hash-Operation das Ausführen der ersten Hash-Operation auf einem Mikrocontroller umfasst.
  20. Nichtflüchtiges maschinenlesbares Medium nach Anspruch 15, wobei das Ausführen der ersten Hash-Operation das Ausführen der ersten Hash-Operation als Reaktion auf eine Firmware-Aktualisierung und/oder ein sicheres Hochfahren umfasst.
DE112019004146.0T 2018-08-17 2019-08-12 Authentifizierung von dateien Pending DE112019004146T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862719250P 2018-08-17 2018-08-17
US62/719,250 2018-08-17
US16/221,037 2018-12-14
US16/221,037 US11210413B2 (en) 2018-08-17 2018-12-14 Authentication of files
PCT/US2019/046203 WO2020036887A1 (en) 2018-08-17 2019-08-12 Authentication of files

Publications (1)

Publication Number Publication Date
DE112019004146T5 true DE112019004146T5 (de) 2021-05-20

Family

ID=69524148

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019004146.0T Pending DE112019004146T5 (de) 2018-08-17 2019-08-12 Authentifizierung von dateien

Country Status (4)

Country Link
US (2) US11210413B2 (de)
CN (1) CN112567371A (de)
DE (1) DE112019004146T5 (de)
WO (1) WO2020036887A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11005655B2 (en) * 2018-10-31 2021-05-11 Dell Products L.P. System and method of providing information to a device
US11386235B1 (en) * 2021-11-12 2022-07-12 Illuscio, Inc. Systems and methods for dynamic checksum generation and validation with customizable levels of integrity verification

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454000A (en) 1992-07-13 1995-09-26 International Business Machines Corporation Method and system for authenticating files
US8364965B2 (en) * 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
US7841010B2 (en) 2007-01-08 2010-11-23 Apple Inc. Software or other information integrity verification using variable block length and selection
US20100031140A1 (en) * 2008-08-01 2010-02-04 Cummins Fred A Verifying An Electronic Document
US20100088745A1 (en) * 2008-10-06 2010-04-08 Fujitsu Limited Method for checking the integrity of large data items rapidly
US8484474B2 (en) * 2010-07-01 2013-07-09 Rockwell Automation Technologies, Inc. Methods for firmware signature
US9195851B1 (en) * 2014-03-12 2015-11-24 Emc Corporation Offloading encryption to the client
WO2017016609A1 (en) * 2015-07-30 2017-02-02 Hewlett-Packard Development Company, Lp Cryptographic data
CN106708734B (zh) * 2016-12-13 2020-01-10 腾讯科技(深圳)有限公司 软件异常检测方法及装置
CN107800688B (zh) * 2017-09-28 2020-04-10 南京理工大学 一种基于收敛加密的云端数据去重和完整性审计方法

Also Published As

Publication number Publication date
US20200057861A1 (en) 2020-02-20
US11210413B2 (en) 2021-12-28
CN112567371A (zh) 2021-03-26
WO2020036887A1 (en) 2020-02-20
US20220092201A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
DE112005001666B4 (de) Verfahren zum Bereitstellen von privaten Direktbeweis-Schlüsseln in signierten Gruppen für Vorrichtungen mit Hilfe einer Verteilungs-CD
DE102020122712A1 (de) Integritätsmanifest-zertifikat
EP2940620B1 (de) Ableiten eines gerätespezifischen wertes mit hilfe einer unklonbaren funktion
DE102016119697A1 (de) Fahrzeugsystem und Authentifizierungsverfahren
EP2899714A1 (de) Gesichertes Bereitstellen eines Schlüssels
DE102013203415A1 (de) Erstellen eines abgeleiteten Schlüssels aus einem kryptographischen Schlüssel mittels einer physikalisch nicht klonbaren Funktion
DE112008003931T5 (de) Systeme und Verfahren für Datensicherheit
DE102007012490A1 (de) Optimierte Integritätsverifikationsprozeduren
DE102015107823A1 (de) Randomisierter Speicherzugriff
DE102008033895A1 (de) Vorrichtung und Verfahren zur Authentifikation eines Flash-Programms
DE112017000633T5 (de) Sichere archivierung und wiederherstellung von multifaktor-authentifizierungsschablonen
DE112019004146T5 (de) Authentifizierung von dateien
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
EP3696699A1 (de) Sichere und flexible firmwareaktualisierung in elektronischen geräten
DE102018130297A1 (de) Arbeitsnachweis-Konzept für ein Fahrzeug
DE102020212451A1 (de) Verfahren zum digitalen Signieren einer Nachricht
EP3254403A1 (de) Vorrichtung und verfahren zum erzeugen eines schlüssels in einem programmierbaren hardwaremodul
WO2018104277A1 (de) Bidirektional verkettete blockchainstruktur
WO2015180867A1 (de) Erzeugen eines kryptographischen schlüssels
DE112018002723T5 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
EP3819804A1 (de) Integritätsüberprüfung eines registerinhalts
DE102010045580A1 (de) Schaltungsanordnung und Verfahren zum Betreiben einer Schaltungsanordnung
DE102022212965A1 (de) Sicheres kraftfahrzeugsystem
EP3667529B1 (de) Verfahren und vorrichtung zum authentisieren einer fpga-konfiguration
DE102020119578A1 (de) Bereitstellen einer Challenge für ein Gerät

Legal Events

Date Code Title Description
R012 Request for examination validly filed