-
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]