-
ALLGEMEINER STAND DER TECHNIK
-
Die vorliegende Offenbarung betrifft allgemein IC-Bauelemente (IC = Integrated Circuit, integrierte Schaltung) und insbesondere die Durchführung autorisierter Entschlüsselungen von IC-Bauelementen.
-
Dieser Abschnitt soll den Leser in verschiedene Aspekte des Standes der Technik einführen, die auf verschiedene Aspekte der vorliegenden Offenbarung, die unten beschrieben und/oder beansprucht werden, bezogen sein können. Diese Erörterung wird insofern als hilfreich angesehen, als sie dem Leser Hintergrundinformationen, anhand deren er die verschiedenen Aspekte der vorliegenden Offenbarung besser verstehen kann, an die Hand gibt. Daher versteht es sich, dass diese Ausführungen in diesem Sinn aufzufassen und nicht zwangsläufig als anerkannter Stand der Technik anzusehen sind.
-
Allgemein kann ein elektronisches Bauelement oder ein Elektriksystem ein oder mehrere IC-Bauelemente enthalten. Zur Verbesserung der Betriebsflexibilität ist ein IC-Bauelement in manchen Fällen möglicherweise ein programmierbares Logikbauelement, das nach der Fertigung so programmierbar (z. B. konfigurierbar) ist, dass eine oder mehrere Funktionen bereitgestellt werden, etwa ein Field Programmable Gate Array (FPGA). Zur einfacheren Bereitstellung einer Funktion kann ein IC-Bauelement ein oder mehrere Logikelemente (z. B. Blöcke und/oder Gatter) enthalten, die zum Beispiel so programmiert (z. B. konfiguriert) sind, dass ihre Betriebsweise mindestens zum Teil auf entsprechenden Konfigurationsdaten basiert.
-
Wie oben erwähnt, können die programmierbaren Bauelemente mit Software programmiert sein, die spezielle Funktionen in den programmierbaren Bauelementen bietet. Die Software kann ziemlich wertvoll sein, da die Software möglicherweise eine neue und/oder verbesserte Funktionalität für die programmierbaren Bauelemente bereitstellt. In manchen Fällen ist es außerdem möglicherweise wünschenswert, die Funktionalität, vor allem vertrauliche Funktionen wie militärische Funktionalität und/oder sichere Transaktionen, geheim zu halten. Daher kann es sein, dass die Produktinhaber eine Sicherung des programmierbaren Bauelements wünschen.
-
IC-Bauelemente nutzen möglicherweise eine Entschlüsselung von Daten sowie eine schlüsselbasierte Authentifizierung der Daten. Mit Blick auf eine Verbesserung der Sicherheitsstärke und eine geringere Differential-Power-Analysis-Anfälligkeit kann zudem eine gesamte Datenmenge der Daten vor der Entschlüsselung authentifiziert werden. Wenn das IC-Bauelement ein programmierbares Logikbauelement ist, kann jedoch die gesamte Datenmenge gegenüber dem lokalen Speicherelement des programmierbaren Logikbauelements relativ groß sein, wodurch eine solche Authentifizierung unpraktisch oder unmöglich wird.
-
KURZE DARSTELLUNG DER ERFINDUNG
-
Unten werden einige Ausführungsformen, die hierin offenbart werden, kurz dargestellt. Es versteht sich, dass diese Aspekte nur deshalb angeführt werden, um dem Leser eine kurze Darstellung dieser Ausführungsformen an die Hand zu geben, und dass diese Aspekte den Schutzbereich der vorliegenden Offenbarung nicht begrenzen sollen. Denn die vorliegende Offenbarung kann auch diverse Aspekte einschließen, die unten möglicherweise nicht dargelegt werden.
-
Die vorliegende Offenbarung betrifft allgemein IC-Bauelemente (IC = Integrated Circuit, integrierte Schaltung), die derart betrieben werden können, dass eine oder mehrere vorgegebene (z. B. gewünschte) Funktionen in einem Elektriksystem durchgeführt werden. Die ICs können durch eine Authentifizierung von Verschlüsselungsschlüsseln zum Konfigurieren programmierbarer IC-Bauelemente wie Field Programmable Gate Arrays (FPGAs), bei denen es sich um ICs handelt, die eine programmierbare Logik und ein programmierbares Routing enthalten, geschützt werden.
-
Ein Datenstrom kann in kleinere authentifizierte Abschnitte mit einer vorher festgesetzten Größe (z. B. 4 kB) zerstückelt werden, ohne dass hierbei der gesamte Datenstrom vor der Authentifizierung im Konfigurationsspeicherelement gespeichert wird. Dadurch, dass die Daten in kleinere Abschnitte, die je einem Hash-Block entsprechen, zerstückelt werden, können die Daten unter Verwendung authentifiziert werden, um Leistungsfähigkeitsverluste zu reduzieren, die vorkommen können, wenn das Konfigurationsspeicherelement mindestens zu einer vorübergehenden Speicherung der unauthentifizierten/verschlüsselten Daten vor der Authentifizierung genutzt wird oder wenn der interne Puffer auf eine unpraktische Größe vergrößert wird. Jeder kleinere Abschnitt (z. B. Datenteilblock) der Daten kann unter Verwendung eines Abschnitts (z. B. eines Hash-Teilblocks) eines Hash-Blocks authentifiziert werden. Der erste Hash-Block kann unter Verwendung eines Root-Hash des IC-Bauelements authentifiziert werden, und der erste Hash-Block kann einen nachfolgenden Hash-Block authentifizieren. Dabei kann der nachfolgende Hash-Block ebenfalls einen nach dem nachfolgenden Hash-Block vorkommenden Hash-Block authentifizieren. Mit anderen Worten, die Hash-Blöcke können sich in einer Kette gegenseitig authentifizieren, sobald der erste Hash-Block authentifiziert worden ist, sodass praktisch unbegrenzt lange Datenströme authentifiziert werden können. Folglich bieten die Hash-Blöcke eine Möglichkeit zum Authentifizieren von Daten mit beliebigen Längen unter Verwendung einer vorher bestimmten Größe (z. B. wenn der interne Puffer 4 kB groß ist), ohne dass infolge einer Speicherung der unauthentifizierten Daten im Konfigurationsspeicherelement das IC-Bauelement eventuell beschädigt wird oder folglich die Leistungsfähigkeit eingeschränkt ist.
-
Es sind verschiedene Weiterbildungen der oben aufgeführten Merkmale in Bezug auf verschiedene Aspekte der vorliegenden Offenbarung denkbar. In diese verschiedenen Aspekte können auch noch weitere Merkmale integriert werden. Diese Weiterbildungen und weiteren Merkmale können entweder einzeln oder in beliebigen Kombinationen vorhanden sein. Beispielsweise können verschiedene Merkmale, die unten in Bezug auf eine oder mehrere der veranschaulichten Ausführungsformen erörtert werden, entweder einzeln oder in beliebigen Kombinationen in beliebige der oben beschriebenen Aspekte der vorliegenden Offenbarung integriert werden. Die obige kurze Darstellung soll den Leser nur mit einigen Aspekten und Zusammenhängen von Ausführungsformen der vorliegenden Offenbarung vertraut machen, soll jedoch den beanspruchten Gegenstand nicht begrenzen.
-
Figurenliste
-
Verschiedene Aspekte dieser Offenbarung werden besser verstehbar, wenn hierzu die folgende ausführliche Beschreibung herangezogen und auf die Zeichnungen Bezug genommen wird, in denen
- 1 ein Blockschaltbild eines Elektriksystems ist, das ein IC-Bauelement (IC = Integrated Circuit, integrierte Schaltung) mit einem Sicherheitssubsystem gemäß einer Ausführungsform enthält;
- 2 ist ein Blockschaltbild einer im IC-Bauelement gemäß 1 enthaltenen Logikelementanordnung gemäß einer Ausführungsform;
- 3 ist ein Ablaufschema eines Prozesses zur Authentifizierung und Entschlüsselung, der unter Verwendung des Sicherheitssubsystems gemäß 1 angewendet werden kann, gemäß einer Ausführungsform;
- 4 veranschaulicht ein Blockschaltbild einer Ausführungsform einer Schlüsselleiter, die im Sicherheitssubsystem gemäß 1 verwendet werden kann, gemäß einer Ausführungsform;
- 5 ist ein Authentifizierungsschema, das einen Submodul-Root-Hash zum Authentifizieren eines ersten Hash-Blocks gemäß einer Ausführungsform nutzt, wobei jeder Hash-Block zum Authentifizieren des jeweiligen nächsten Hash-Blocks dient;
- 6 ist ein Ablaufschema einer Ausführungsform eines Prozesses, der zum Authentifizieren unter Verwendung des Authentifizierungsschemas gemäß 5 genutzt werden kann, gemäß einer Ausführungsform;
- 7 ist ein Ablaufschema einer Ausführungsform eines Prozesses zum Authentifizieren der Hash-Blöcke gemäß 5 gemäß einer Ausführungsform;
- 8 ist ein Ablaufschema einer Ausführungsform eines Prozesses zum Entschlüsseln und Authentifizieren eines Chiffretextes, der den Hash-Blöcken gemäß 5 entsprechende Daten enthält, gemäß einer Ausführungsform;
- 9 ist eine schematische Darstellung einer für Authentifizierungen/Entschlüsselungen vorgesehenen Schaltungsanordnung, die zum Implementieren der Prozesse gemäß den 6-9 verwendet wird, gemäß einer Ausführungsform; und
- 10 ist ein Blockschaltbild eines Datenverarbeitungssystems, das das IC-Bauelement gemäß 1 umfasst, gemäß einer Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Unten werden eine oder mehrere spezielle Ausführungsformen beschrieben. In dem Bestreben, diese Ausführungsformen prägnant zu beschreiben, werden in der Patentbeschreibung nicht alle Merkmale der jeweiligen konkreten Implementierung beschrieben. Es versteht sich, dass bei der Entwicklung einer solchen konkreten Implementierung, wie bei jedem Projekt in der Konstruktion und Entwicklung, zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Vorgaben der Entwickler umzusetzen, etwa um system- und geschäftsrelevanten Einschränkungen, die von Implementierung zu Implementierung anders sein können, gerecht zu werden. Ferner versteht es sich, dass ein solches Entwicklungsvorhaben komplex und zeitaufwendig sein könnte, jedoch vom Durchschnittsfachmann unter Zuhilfenahme dieser Offenbarung in den Phasen des Entwurfs, der Vorfertigung und der Fertigung routinemäßig ausgeführt werden könnte.
-
Allgemein wird ein programmierbares Logikbauelement wie etwa ein Field Programmable Gate Array (FPGA) derart betrieben, dass dadurch eine oder mehrere Funktionen in einem Elektriksystem bereitgestellt werden. Die Funktionen enthalten zum Beispiel möglicherweise kombinatorische Funktionen, sequenzielle Funktionen, arithmetische Funktionen, logische Funktionen und/oder benutzerdefinierte Funktionen. Folglich kann das programmierbare Logikbauelement in manchen Ausführungsformen derart betrieben werden, dass Daten verarbeitet, analysiert, gespeichert und/oder gelesen werden. Wie bereits angemerkt, können diese Funktionen, da sie in Konfigurationsdaten gespeichert sind, des Weiteren autorisiert und/oder entschlüsselt werden, bevor sie im Bauelement implementiert werden. Bisher wurde für programmierbare Logikbauelemente möglicherweise eine einfache AES-Engine (AES = Advanced Encryption Standard, fortschrittlicher Verschlüsselungsstandard) zur Wahrung der Vertraulichkeit sowie zur Bereitstellung eines Authentizitätsschutzes benötigt. Aufgrund von Einschränkungen des AES-Algorithmus und dessen potenzieller Anfälligkeit für auftretende Seitenkanalangriffe können stattdessen noch andere Algorithmen für eine starke Authentifizierung und zur Wahrung der Vertraulichkeit verwendet werden. Zum Beispiel werden in manchen Ausführungsformen möglicherweise alle Daten eines Konfigurationsbitstreams zuerst unter Verwendung eines auf einem öffentlichen Schlüssel basierenden Algorithmus wie des Elliptic Curve Digital Signature Algorithm (ECDSA) authentifiziert.
-
Wenn Daten die Authentifizierung über einen auf einem öffentlichen Schlüssel basierenden Algorithmus erfolgreich durchlaufen haben, werden die Daten durch die AES-Engine im Pushverfahren zur Entschlüsselung weitergeleitet. Durch die Authentifizierung mit einem öffentlichen Schlüssel vor der AES-Engine wird die Wahrscheinlichkeit erfolgreicher Differential-Power-Analysis(DPA)-Angriffe aufgrund der Verwendung des auf einem öffentlichen Schlüssel basierenden Algorithmus verringert. Darüber hinaus schützt eine Front-End-Engine für schlüsselbasierte Authentifizierungen die AES-Engine mindestens zum Teil vor Seitenkanalangriffen, beseitigt zufällig gewählte Bedrohungen in Form von Angriffen mit verschlüsseltem Text und bewirkt, dass potenzielle Angreifer in einem wesentlich geringeren Umfang die Leistungsaufnahme analysieren können. Des Weiteren können mithilfe einer solchen Konfiguration Teile der Konfigurationsdaten in einer beliebigen Reihenfolge geladen und/oder neu geladen werden, ohne dass mit dem Konfigurationsprozess noch einmal von vorn begonnen werden muss. Bei einer solchen Konfiguration kann hingegen ein Zwischenpuffer zum Speichern der gesamten Datenmenge (z. B. aller Konfigurationsdaten) im programmierbaren Logikbauelement genutzt werden. Diese gesamte Datenmenge ist möglicherweise groß (z. B. bis zu 100 MB groß). Die Hinzufügung eines internen Puffers zum Speichern der gesamten Datenmenge im programmierbaren Logikbauelement vor der Authentifizierung/Entschlüsselung kann sich als unmöglich oder unpraktisch erweisen.
-
Das Konfigurationsspeicherelement kann zur Speicherung authentifizierter Konfigurationsdaten im programmierbaren Logikbauelement verwendet werden. Allerdings kann die Verwendung des Konfigurationsspeicherelements im programmierbaren Logikbauelement zur Speicherung der Daten vor einer Autorisierung und/oder einer Entschlüsselung zu Anfälligkeiten im programmierbaren Logikbauelement führen. Um diesem Umstand Rechnung zu tragen, wäre ein besonderer Schutz nötig, um Siliziumdefekten vorzubeugen und zu vermeiden, dass übermäßige kurzzeitige Spannungsspitzen erzeugt werden. Des Weiteren müssten diese Daten, wenn sie im Konfigurationsspeicherelement gespeichert worden sind, anschließend wieder aus dem Konfigurationsspeicherelement an die AES-Engine zurückgeschleift werden. Diese Rückschleifung hat zur Folge, dass die Daten den Konfigurationsbus dreimal durchlaufen: 1) zum Konfigurationsspeicherelement hin als unauthentifizierte/entschlüsselte Daten, 2) zurück zur AES-Engine zur Authentifizierung/Entschlüsselung und 3) zurück zum Konfigurationsspeicherelement als unauthentifizierte/entschlüsselte Daten. Aufgrund dieser Rückschleifung kann daher dreimal eine Verzögerung auftreten, wenn die ankommenden Daten schließlich in das Konfigurationsspeicherelement verschoben werden.
-
Statt das Konfigurationsspeicherelement als internen Puffer zu verwenden, kann der Datenstrom auch in kleinere authentifizierte Abschnitte mit einer vorher festgesetzten Größe (z. B. 4 kB) oder Blockketten zerstückelt werden, ohne dass dabei der gesamte Datenstrom vor der Authentifizierung im Konfigurationsspeicherelement gespeichert wird. Dadurch, dass die Daten in kleinere Abschnitte, die je einem Hash-Block entsprechen, zerstückelt werden, können die Daten unter Verwendung authentifiziert werden, um Leistungsfähigkeitsverluste zu reduzieren, die vorkommen können, wenn das Konfigurationsspeicherelement mindestens zu einer vorübergehenden Speicherung der unauthentifizierten/verschlüsselten Daten vor der Authentifizierung genutzt wird. Jeder kleinere Abschnitt (z. B. Datenteilblock) der Daten kann unter Verwendung eines Abschnitts (z. B. eines Hash-Teilblocks) eines Hash-Blocks authentifiziert werden. Der erste Hash-Block kann mit einem Root-Hash des IC-Bauelements authentifizieren, und der erste Hash-Block kann einen nachfolgenden Hash-Block authentifizieren. Dabei kann der nachfolgende Hash-Block ebenfalls einen nach dem nachfolgenden Hash-Block vorkommenden Hash-Block authentifizieren. Mit anderen Worten, die Hash-Blöcke können sich in einer Kette gegenseitig authentifizieren, sobald der erste Hash-Block authentifiziert worden ist. Folglich bieten die Hash-Blöcke eine Möglichkeit zum Authentifizieren der Daten mit einer vorher bestimmten Größe (z. B. 4 kB), ohne dass infolge einer Speicherung der unauthentifizierten Daten im Konfigurationsspeicherelement das IC-Bauelement eventuell beschädigt wird oder folglich die Leistungsfähigkeit eingeschränkt ist.
-
Zur Veranschaulichung zeigt 1 eine Ausführungsform eines Elektriksystems 10, das ein IC-Bauelement 12 enthält. In manchen Ausführungsformen kann das Elektriksystem 10 in einem Industriesystem, einem Fertigungssystem, einem Automatisierungssystem oder dergleichen, etwa in einer Fabrik oder Betriebsanlage, enthalten sein. Das Elektriksystem 10 kann in manchen Ausführungsformen auch in einem elektronischen Gerät enthalten sein, etwa in einem Handheld, einem Tablet, einem Notebook, einem Desktop oder dergleichen. In wiederum anderen Ausführungsformen kann das Elektriksystem 10 in einem Fahrzeugsystem wie einem Flugzeug, einem Boot oder einem Auto enthalten sein.
-
Folglich versteht es sich, dass, auch wenn nur ein IC-Bauelement 12 abgebildet ist, dieses lediglich der Veranschaulichung dient und nicht einschränken soll. Mit anderen Worten, das Elektriksystem 10 kann in anderen Ausführungsformen auch mehrere IC-Bauelemente 12 enthalten. Zum Beispiel kann das Elektriksystem 10 ein erstes IC-Bauelement 12 (z. B. einen Zentralprozessor oder einen Grafikprozessor) enthalten, das kommunikativ mit einem zweiten IC-Bauelement 12 (z. B. einem Arbeitsspeicher) gekoppelt ist.
-
In jedem Fall enthält das IC-Bauelement 12, wie abgebildet, eine Logikelementanordnung 14, einen Clock Tree 16 und einen Controller 18. In manchen Ausführungsformen kann der Controller 18 den Betrieb der Logikelementanordnung 14 und/oder des Clock Tree 16 steuern. Um den Betrieb einfacher steuern zu können, kann der Controller 18 einen Prozessor 20 und ein Speicherelement 22 enthalten. In manchen Ausführungsformen steuert der Controller 18 den Betrieb möglicherweise mindestens teilweise basierend auf Schaltverbindungen (z. B. Logikgattern), die im Controller 18 gebildet sind.
-
Darüber hinaus oder alternativ kann der Prozessor 20 im Speicherelement 22 gespeicherte Befehle ausführen. Folglich enthält der Prozessor 20 in manchen Ausführungsformen möglicherweise einen oder mehrere universelle Mikroprozessoren, einen oder mehrere anwendungsspezifische Prozessoren (ASICs), ein oder mehrere Field Programmable Logic Arrays (FPGAs) und/oder dergleichen. Darüber hinaus kann das Speicherelement 22 in manchen Ausführungsformen ein oder mehrere physische, nicht transiente, computerlesbare Medien enthalten. Zum Beispiel enthält das Speicherelement 22 möglicherweise einen Arbeitsspeicher (RAM), einen Festwertspeicher (ROM), einen wiederbeschreibbaren, nicht flüchtigen Speicher, etwa einen Flashspeicher, Festplatten, optische Speicherplatten und/oder dergleichen.
-
Das IC-Bauelement 12 kann derart betrieben werden, dass eine oder mehrere Funktionen im Elektriksystem 10 durchgeführt werden. Um eine Funktion einfacher bereitstellen zu können, kann die Logikelementanordnung 14 kommunikativ gekoppelte Logikelemente (z. B. Gatter) enthalten, die so betrieben werden, dass kombinatorische Funktionen, sequenzielle Funktionen, arithmetische Funktionen, logische Funktionen und/oder benutzerdefinierte Funktionen durchgeführt werden. Darüber hinaus ist die Logikelementanordnung 14 in manchen Ausführungsformen möglicherweise in einen oder mehrere Logikbereiche unterteilt, die je ein oder mehrere Logikelemente enthalten.
-
Das IC-Bauelement 12 kann auch ein Sicherheitssubsystem 24 enthalten, das zur Sicherung des IC-Bauelements 12 verwendet wird. Das Sicherheitssubsystem 24 wird, wie unten noch ausführlicher erörtert wird, zum Beispiel möglicherweise zur Verschlüsselung, Authentifizierung und/oder Entschlüsselung von Konfigurationsdaten für die Logikelementanordnung verwendet.
-
In 2 ist eine Ausführungsform einer in mehrere Logikbereiche 48 unterteilten Logikelementanordnung 14 gezeigt. Konkret enthält die abgebildete Ausführungsform einen ersten Logikbereich 48A, einen zweiten Logikbereich 48B, einen dritten Logikbereich 48C und einen vierten Logikbereich 48D, die je ein oder mehrere Logikelemente 50 enthalten. In manchen Ausführungsformen enthält ein Logikelement 50 möglicherweise einen oder mehrere Multiplexer, ein oder mehrere Flipflops, ein oder mehrere Logikgatter, einen oder mehrere Logikblöcke, eine oder mehrere Lookup-Tabellen und/oder ein oder mehrere Register.
-
In manchen Ausführungsformen ist die Logikelementanordnung 14 möglicherweise so aufgeteilt, dass aufgrund der Betriebsweise der unterschiedlichen Logikbereiche 48 unterschiedliche Funktionen durchgeführt werden. Darüber hinaus oder alternativ ist die Logikelementanordnung 14 möglicherweise so aufgeteilt, dass mehrere Logikbereiche 48 zusammenarbeiten und dadurch nur eine Funktion durchgeführt wird. Damit das IC-Bauelement 12 einfacher in der vorgesehenen Weise betrieben werden kann, kann der Betrieb der unterschiedlichen Logikbereiche 48 folglich koordiniert (z. B. synchronisiert) und/oder eine Datenkommunikation ermöglicht werden.
-
Zur Ermöglichung einer Datenkommunikation kann die Logikelementanordnung 14 eine Ein-Ausgabe-Schaltungsanordnung 42, I/O-Pins 44 und ein internes Kommunikationsnetzwerk 46 (z. B. ein Network-on-Chip) enthalten. In manchen Ausführungsformen kann die Ein-Ausgabe-Schaltungsanordnung 42 eine externe Datenkommunikation über die I/O-Pins 44, zum Beispiel zwischen der Logikelementanordnung 14 und einem anderen IC-Bauelement 12, ermöglichen. Darüber hinaus kann das interne Kommunikationsnetzwerk 46 in manchen Ausführungsformen eine interne Datenkommunikation, zum Beispiel zwischen den Logikbereichen 48 und/oder mit der Ein-Ausgabe-Schaltungsanordnung 42, ermöglichen. In manchen Ausführungsformen enthält das interne Kommunikationsnetzwerk 46 folglich möglicherweise Zusammenschaltungen wie Leiterbahnen und/oder Busse. Des Weiteren enthält das interne Kommunikationsnetzwerk 46 in manchen Ausführungsformen möglicherweise feste Zusammenschaltungen und/oder programmierbare Zusammenschaltungen.
-
Nunmehr soll auf die Authentifizierung und die Entschlüsselung von am IC-Bauelement 12 ankommenden Daten unter Verwendung des Sicherheitssubsystems 24 eingegangen werden. 3 ist ein Ablaufschema eines Prozesses 70 zur Authentifizierung und Entschlüsselung, der unter Verwendung des Sicherheitssubsystems 24 angewendet werden kann. Das IC-Bauelement 12 empfängt Daten 72. Die empfangenen Daten 72 können Konfigurationsdaten enthalten, die zum Konfigurieren der Logikelementanordnung 14 verwendet werden. In manchen Ausführungsformen enthalten die empfangenen Daten 72 möglicherweise eine gehashte Version der Konfigurationsdaten. Die Daten 72 durchlaufen eine auf einem öffentlichen Schlüssel basierende Authentifizierung 74, bevor sie an eine AES-Engine 76 weitergeleitet werden, um die Daten 72 zu entschlüsselten Daten 78 zu entschlüsseln. Es versteht sich, dass bei der auf einem öffentlichen Schlüssel basierenden Authentifizierung 74 ein Schlüssel genutzt wird, um zu verifizieren, dass die Daten 72 an die AES-Engine 76 weiterzuleiten sind, wodurch die AES-Engine 76 mindestens zum Teil vor potenziellen Seitenangriffen geschützt wird. Weil die auf einem öffentlichen Schlüssel basierende Authentifizierung 74 zur Verfügung steht, kann die AES-Engine 76 daraufhin zum Entschlüsseln der Daten 72 bei erhöhter Sicherheit verwendet werden.
-
In manchen Ausführungsformen wird zum Ermöglichen des Prozesses 70 eine Schlüsselleiter verwendet. 4 veranschaulicht ein Blockschaltbild einer Ausführungsform einer Schlüsselleiter 90. Die Schlüsselleiter 90 enthält einen unveränderlichen Public-Root-Key 92, der im IC-Bauelement 12 gespeichert (z. B. bei der Fertigung vorinstalliert) wird. Der Public-Root-Key 92 wird zum Erzeugen eines Public-CSK-Key 94 (CSK = Code Shift Keying Codeumtasting) verwendet. Das IC-Bauelement 12 kann auch einen Root-AES-Key 96 speichern (der z. B. bei der Fertigung vorinstalliert wird). Der Public-CSK-Key 94 kann zum Generieren eines Header-Hash 98 für einen Header 100 für die Daten 72 (z. B. Konfigurationsdaten) verwendet werden. Der Public-CSK-Key 94 kann auch zum Generieren eines Schlüssel-Hash 102 verwendet werden, der zusammen mit dem Root-AES-Key 96 zum Generieren eines Signaturschlüssels verwendet wird. Der Signaturschlüssel dient zum Verifizieren des Headers 100 und von Abschnitten einer Sub-Root-Key-Datei 104, die Hash-Digests gehashter Daten 108, die je einem jeweiligen Datenteilblock 106 der Daten 72 entsprechen, enthält. Die Sub-Root-Key-Datei 104 enthält auch verschlüsselte Sub-Root-Keys 110 (z. B. einen AES-Key), die je einem jeweiligen Datenteilblock 106 entsprechen. Da die Sub-Root-Key-Datei 104 und der Header 100 klein sind, können sie im Speicherraum des internen Speicherelements gespeichert und mittels Algorithmen des öffentlichen Schlüssels verifiziert werden.
-
Folglich wird während eines Authentifizierungsvorgangs für jeden bei dem Authentifizierungsvorgang verwendeten Datenteilblock 106 (z. B. den Header 100) ein Sub-Root-Hash-Digest authentifiziert. Ebenso werden während einer vertraulichen Authentifizierung der gesamten Daten 72 für jeden Datenteilblock 106 ein Sub-Root-Hash-Digest und ein Sub-Root-Key 110 authentifiziert. Bei einem Vorgang zur Authentifizierung/Entschlüsselung werden möglicherweise ein Sub-Root-Hash-Digest und ein Sub-Root-AES-Key genutzt. Datenblock. Wie bereits angemerkt, sind jedoch die Daten 72 in ihrer Gesamtgröße möglicherweise viel größer als der verfügbare interne Puffer. Um dieses Problem zu beheben, können die Daten 72 in Datenblöcke mit einer festen Größe (z. B. 4 kB) aufgeteilt werden. Die Datenteilblöcke 106 können basierend auf dem Umfang des verfügbaren internen FIFO-Puffers (FIFO = First In First Out zuerst hinein, zuerst hinaus) beliebig groß sein.
-
Jede Konfigurationsdatenmenge in den Daten 72 weist einen Root-Hash-Wert auf, nämlich einen Hash, der zum Authentifizieren eines ersten 4K-Hash-Blocks von Konfigurationsdaten verwendet wird. Jeder Hash-Block beinhaltet Hashes von mehreren Datenteilblöcken 106, wobei eine letzte Position des Hash-Blocks für die Authentifizierung des nächsten Hash-Blocks reserviert ist. An allen übrigen Positionen kann eine Auffüllung mit den Hashes jeweiliger Datenteilblöcke zur Authentifizierung der Daten 72 erfolgen. Wenn die gehashten Versionen der Datenteilblöcke 106 mehr Platz benötigen, als im Hash-Block zur Verfügung steht, wird der letzte Hash-Datenblock durch einen Hash-Digest-Block für den nächsten Hash-Block ersetzt. Folglich können so viele Hash-Blöcke aneinandergekettet werden, wie verwendet werden, um zu bewirken, dass die gesamten Daten 72 authentifiziert/entschlüsselt werden.
-
5 ist ein Authentifizierungsschema 120, das einen Submodul-Root-Hash 122 zum Authentifizieren eines ersten Hash-Blocks 124 nutzt. In manchen Ausführungsformen befindet sich der Hash 122 eines Submoduls 1 möglicherweise in der Sub-Root-Key-Datei 104. Wie veranschaulicht, enthält der Hash-Block 124 Hash-Teilblöcke 126, 128, 130 und 132. Die Hash-Teilblöcke 126, 128, 130 und 132 können je zum Authentifizieren entsprechender Datenteilblöcke 134, 136, 138 und 140 in den Daten 72 verwendet werden. Die Größe und/oder die Anzahl der im Hash-Block 124 enthaltenen Hash-Teilblöcke können von der Größe der authentifizierten Datenteilblöcke und dem für den Hash-Block 124 verfügbaren Platz abhängen. In manchen Ausführungsformen eine vorher bestimmte Größe (z. B. 4 kB). Denn die Größe des Hash-Blocks 124 kann gleich der vorher bestimmten Größe der Datenteilblöcke 134, 136, 138 und 140 sein. Die letzte Hash-Position 142 des Hash-Blocks 124 kann für einen reserviert werden hat verwendet, um einen nachfolgenden Hash-Block 144 zu authentifizieren, sobald die Menge von Daten in den Daten 72 über eine Menge von unter Verwendung nur des Hash-Blocks 124 authentifizierbaren Daten hinausgeht. Der Hash-Block 124 kann auch Füllzeichen 145 enthalten, die den Hash-Block 124 über die darin bereits enthaltenen Hash-Blöcke auffüllen, um eine vorher bestimmte Größe (z. B. 4 kB) für den Hash-Block 124 herzustellen.
-
Weiter enthält der Hash-Block 144, wie veranschaulicht, Hashblöcke 146, 148, 150, 152 und 154. Diese Hashblöcke 146, 148, 150, 152 und 154 können je zum Authentifizieren jeweiliger Datenteilblöcke 156, 158, 160, 162 und 164 verwendet werden. Da von den Daten 72 keine weiteren Daten zu authentifizieren sind, kann der Hash-Block 154 statt zum Authentifizieren eines separaten Hash-Blocks zum Authentifizieren des Datenteilblocks 164 verwendet werden. Der Hash-Block 144 kann ebenfalls Füllzeichen 166 enthalten, die den Hash-Block 144 über die darin bereits enthaltenen Hash-Blöcke auffüllen, um eine vorher bestimmte Größe (z. B. 4 kB) für den Hash-Block 144 herzustellen.
-
6 ist ein Ablaufschema einer Ausführungsform eines Prozesses 170, der zum Authentifizieren unter Verwendung des Authentifizierungsschemas 120 genutzt werden kann. Der Prozess 170 enthält Empfangen der Daten 72 mit Hash-Blöcken (Block 172). Das Empfangen der Daten kann Auslösen eines Konfigurationsprozesses zum Empfangen der Daten 72 als Konfigurationsdaten zum Konfigurieren der Logikelementanordnung 14 enthalten. Die Daten und die Hash-Blöcke können voneinander getrennt und/oder in einem einzigen Paket empfangen werden. Das IC-Bauelement 12 bestimmt, ob die Hash-Blöcke authentifiziert werden (Block 174). Zum Beispiel kann das IC-Bauelement 12, wie in Bezug auf 7 unten erörtert wird, die Hash-Blöcke hashen und mit einem im IC-Bauelement gespeicherten Hash vergleichen. Wenn die Hash-Blöcke nicht authentifiziert werden, verwirft das IC-Bauelement 12 die Daten 72 (Block 176). In Ausführungsformen, in denen das Empfangen der Daten bei einem Konfigurationsprozess für die Logikelementanordnung erfolgt, kann das Verwerfen der Daten Unterbrechen des Konfigurationsprozesses enthalten.
-
In manchen Ausführungsformen kann das IC-Bauelement 12 auch bestimmen, ob ein Chiffretext der Daten ebenfalls authentifiziert wird (Block 178). Zum Beispiel kann das IC-Bauelement 12, wie in Bezug auf 8 unten erörtert wird, den Chiffretext, der die Daten enthält, hashen und den gehashten Chiffretext mit einem im IC-Bauelement 12 gespeicherten Hash vergleichen. Wenn der Chiffretext nicht authentifiziert wird, kann das IC-Bauelement die Daten 72 verwerfen. Wenn der Chiffretext und die Hash-Blöcke authentifiziert werden, werden die Daten 72 an die AES-Engine 76 weitergeleitet (Block 180). Die AES-Engine 76 entschlüsselt die Daten zu entschlüsselten Daten (Block 182) .
-
7 ist ein Ablaufschema einer Ausführungsform eines Prozesses 700 zum Authentifizieren der Hash-Blöcke. Das IC-Bauelement 12 empfängt Hash-Blöcke 202 wie den Hash-Block 124 und den Hash-Block 144. Die Hash-Blöcke 202 werden gehasht (Block 203). Bei dem Hashing kann zum Beispiel ein SHA (Secure Hashing Algorithm) wie der SHA-2 oder der SHA-3 genutzt werden, um die Hash-Blöcke 202 zu hashen. Der Hashing-Algorithmus kann beispielsweise den SHA256/384 und/oder beliebige sonstige zum kryptografischen Hashing von Daten geeignete Hashing-Algorithmen enthalten.
-
Danach vergleicht das IC-Bauelement 12 die gehashte Version der Hash-Blöcke 202 mit einem Hash 204 (Block 206). Der Hash 204 kann zum Beispiel der Submodul-Root-Hash 122 für einen ersten Hash-Block (z. B. den Hash-Block 124) sein, während der Hash 204 ein Hash-Teilblock (z. B. der Hash-Teilblock 142) sein kann der Hash für einen nachfolgenden Hash-Block (z. B. den Hash-Block 144) sein kann. Folglich können sich die Hash-Blöcke in einer Kette, in der der Hash 204 für jeden Hash-Block ein Teil eines vorherigen Hash-Blocks (z. B. dessen letzter Hash-Teilblock) ist, nacheinander gegenseitig authentifizieren, sobald der erste Hash-Block aus dem Root-Hash authentifiziert worden ist. Wenn der Hash 204 nicht mit der gehashten Version der Hash-Blöcke 202 übereinstimmt, verwirft das IC-Bauelement 12 die Daten, die die Hash-Blöcke enthalten (Block 208). Wenn der Hash 204 hingegen mit der gehashten Version der Hash-Blöcke 202 übereinstimmt, überträgt das IC-Bauelement 12 die Daten im Pushverfahren an die AES-Engine 76 (Block 210).
-
8 ist ein Ablaufschema einer Ausführungsform eines Prozesses 220 zum Entschlüsseln und Authentifizieren eines Chiffretextes 222, der die Daten 72 enthält. Der Chiffretext 222 enthält zum Beispiel möglicherweise Konfigurationsdaten zum Konfigurieren der Logikelementanordnung 14. Das IC-Bauelement 12 empfängt den Chiffretext 222 und hasht den Chiffretext 222 (Block 224). Bei dem Hashing kann zum Beispiel ein SHA (Secure Hashing Algorithm) wie der SHA-2 oder der SHA-3 genutzt werden, um die Hash-Blöcke 202 zu hashen. Der Hashing-Algorithmus kann beispielsweise den SHA256/384 und/oder beliebige sonstige zum kryptografischen Hashing von Daten geeignete Hashing-Algorithmen enthalten.
-
Danach vergleicht das IC-Bauelement 12 die gehashte Version des Chiffretextes 222 mit einem Hash 226 (Block 206). Der Hash 226 ist zum Beispiel möglicherweise ein entsprechender Hash-Teilblock (z. B. der Hash-Teilblock 126). Wenn der Hash 204 nicht mit der gehashten Version der Hash-Blöcke 202 übereinstimmt, verwirft das IC-Bauelement 12 die Daten, die die Hash-Blöcke enthalten (Block 208). Wenn der Hash 204 hingegen mit der gehashten Version der Hash-Blöcke 202 übereinstimmt, überträgt das IC-Bauelement 12 die Daten im Pushverfahren an die AES-Engine 76 (Block 210). Folglich können die verschlüsselten Daten als der Chiffretext 222 nacheinander in Datenteilblöcken, die eine Authentifizierung ermöglichen, weitergeleitet werden, ohne dass die Daten im Speicherelement 22 gespeichert werden, was zu einer eventuellen Beschädigung des IC-Bauelements 12 und/oder zu Leistungsfähigkeitsverlusten im IC-Bauelement 12 führen könnte. Weil der Chiffretext 222 in kleineren Teilblöcken, die kleiner als die ganze Datenmenge sind, weitergeleitet werden, muss der interne Puffer außerdem nicht so unpraktisch groß sein wie bei einem FPGA, sondern kann eine praktische Größe (z. B. 4 kB) aufweisen.
-
9 ist eine schematische Darstellung einer für Authentifizierungen/Entschlüsselungen vorgesehenen Schaltungsanordnung 240. Der Chiffretext 222 wird an der für Authentifizierungen/Entschlüsselungen vorgesehenen Schaltungsanordnung 240 empfangen. Der Chiffretext 222 kann die Daten 72 und/oder die Hash-Blöcke 202 enthalten. Wie bereits angemerkt, können mittels jedes Hash-Teilblocks aus jedem der Hash-Blöcke 202 Datenteilblöcke der Daten 72 authentifiziert werden. Wobei die Hash-Teilblöcke und die Datenteilblöcke die gleiche Länge (z. B. 4 kB) aufweisen können. Diese Größe kann zum Beispiel entsprechend einer Länge eines internen Puffers des IC-Bauelements 12 festgesetzt werden. Die Hash-Blöcke 202 und die Daten werden an eine Hashing-Schaltung 242 gesendet, durch die mindestens die Hash-Blöcke 202 gehasht werden. Die gehashten Abschnitte (z. B. die Hash-Blöcke 202) des Chiffretextes 222 werden an eine Vergleichsschaltung 244 weitergeleitet, die die gehashten Abschnitte mit einem entsprechenden Hash 226 vergleicht. Der Hash 226 ist zum Beispiel möglicherweise ein Root-Hash für einen ersten Hash-Block, ein Hash-Teilblock für nachfolgende Hash-Blöcke oder ein Hash-Teilblock für verschlüsselte Datenteilblöcke. In manchen Ausführungsformen sind die Hashing-Schaltung 242 und/oder die Vergleichsschaltung 244 möglicherweise mindestens teilweise im Prozessor (in den Prozessoren) 20 und/oder im Speicherelement 22 ausgeführt. Mit anderen Worten, in manchen Ausführungsformen kann die Funktionalität der Hashing-Schaltung 242 und/oder der Vergleichsschaltung 244 unter Verwendung von im Speicherelement 22 gespeicherten und durch den Prozessor (die Prozessoren) 20 ausgeführten Befehlen durchgeführt werden.
-
Sobald die Vergleichsschaltung 244 den gehashten Abschnitt des Chiffretextes 222 mit dem Hash 226 verglichen hat, gibt die Vergleichsschaltung 244 ein Steuersignal 245 aus, das eine Auswahlschaltung 246 steuert, die den Chiffretext 222 selektiv einer Löschschaltung 248 oder der AES-Engine 232 zuleitet. In der veranschaulichten Ausführungsform enthält die Auswahlschaltung 246 einen Demultiplexer. Die Löschschaltung 248 verwirft möglicherweise den ankommenden Chiffretext 222, um dessen Speicherung im IC-Bauelement 12 zu verhindern, um Defekte und/oder eine Beschädigung des IC-Bauelements 12 zu verhindern. In manchen Ausführungsformen können die Abläufe der Löschschaltung 248 und/oder der AES-Engine 232 mindestens zum Teil auf im Speicherelement 22 gespeicherten und durch den Prozessor (die Prozessoren) 20 ausgeführten Befehlen beruhen und/oder die Löschschaltung und/oder die AES-Engine können diese Befehle mindestens zum Teil nutzen.
-
Zusammenfassend lässt sich sagen, dass jeder Hash-Teilblock aus jedem der Hash-Blöcke 202, nachdem er authentifiziert worden ist, zum Authentifizieren eines entsprechenden Datenteilblocks der Daten 72 im Chiffretext 222 so lange, bis alle Daten 72 authentifiziert worden sind, verwendet werden kann. Jeder Teilblock der Daten 72 kann in der AES-Engine 232 entschlüsselt werden, nachdem der ihm entsprechende Hash-Teilblock seine Inhalte authentifiziert hat.
-
Das IC-Bauelement 12 ist möglicherweise ein Datenverarbeitungssystem oder ein Bestandteil eines Datenverarbeitungssystems. Das IC-Bauelement 12 ist zum Beispiel möglicherweise ein Bestandteil eines Datenverarbeitungssystems 260, wie in 10 gezeigt. Das Datenverarbeitungssystem 260 enthält einen Hostprozessor 262, eine Speicherschaltungsanordnung 264 und eine Netzwerkschnittstelle 266. Das Datenverarbeitungssystem 260 kann auch noch mehr oder weniger Bestandteile enthalten (z. B. ein Elektronikdisplay, Benutzeroberflächenstrukturen, anwendungsspezifische integrierte Schaltungen (ASICs)). Der Hostprozessor 262 kann einen beliebigen geeigneten Prozessor enthalten, etwa einen INTEL®-XEON®-Prozessor oder einen Prozessor mit reduziertem Befehlssatz (z. B. einen Computer mit reduziertem Befehlsvorrat (RISC), einen ARM-Prozessor (ARM = Advanced RISC Machine, weiterentwickelte RISC-Maschine)), der eine Datenverarbeitungsanforderung für das Datenverarbeitungssystem 260 verarbeiten kann (z. B. um mit maschinellem Lernen, einer Videoverarbeitung, einer Spracherkennung, einer Bilderkennung, einer Datenkomprimierung oder einem Datenbanksuchranking zusammenhängende Vorgänge oder Bioinformatik-, Netzwerksicherheitsmustererkennungs-, bei der Navigation im Raum ablaufende oder ähnliche Vorgänge durchzuführen). Darüber hinaus oder alternativ kann der Hostprozessor 262 ein Field Programmable Gate Array (FPGA) und/oder ein anderes programmierbares Logikbauelement enthalten. In manchen Ausführungsformen ist der Hostprozessor 262 möglicherweise ein programmierbares Logikbauelement, bei dem es sich nicht um das IC-Bauelement 12 handelt, oder ein gleiches programmierbares Logikbauelement, das die Logikelementanordnung 14 des IC-Bauelements 12 enthält, oder ein gehärteter Zentralprozessor (z. B. der Prozessor (die Prozessoren) 29) innerhalb des IC-Bauelements 12 und/oder ein sonstiger geeigneter Prozessor innerhalb und/oder außerhalb des IC-Bauelements 12. Die Speicherschaltungsanordnung 264 kann einen Arbeitsspeicher (RAM), einen Festwertspeicher (ROM), eine oder mehrere Festplatten, einen Flashspeicher oder dergleichen enthalten. Die Speicherschaltungsanordnung 264 kann als externer Speicher des IC-Bauelements 12 angesehen werden und kann durch das Datenverarbeitungssystem 260 zu verarbeitende Daten speichern. In manchen Fällen, in denen das IC-Bauelement 12 ein programmierbares Logikbauelement enthält, kann die Speicherschaltungsanordnung 264 auch Konfigurationsprogramme (Bitstreams) zum Programmieren des programmierbaren Logikbauelements speichern. Die Netzwerkschnittstelle 266 kann die Kommunikation des Datenverarbeitungssystems 260 mit anderen elektronischen Geräten ermöglichen. Das Datenverarbeitungssystem 260 kann etliche unterschiedliche Baugruppen enthalten oder ein Bestandteil einer einzigen Baugruppe auf einem Substrat einer einzigen Baugruppe sein.
-
In manchen Ausführungsformen ist das Datenverarbeitungssystem 260 möglicherweise ein Teil eines Rechenzentrums, das diverse unterschiedliche Anforderungen verarbeitet. Das Datenverarbeitungssystem 260 kann beispielsweise über die Netzwerkschnittstelle 266 eine Datenverarbeitungsanforderung empfangen, um mit maschinellem Lernen, einer Videoverarbeitung, einer Spracherkennung, einer Bilderkennung, einer Datenkomprimierung oder einem Datenbanksuchranking zusammenhängende Vorgänge oder Bioinformatik-, Netzwerksicherheitsmustererkennungs-, bei der Navigation im Raum ablaufende oder beliebige andere spezielle Aufgaben durchzuführen. Der Hostprozessor 262 kann bewirken, dass die programmierbare logische Fabric und/oder andere Abschnitte des IC-Bauelements 12 mit einem bestimmten Beschleuniger mit Bezug zu der angeforderten Aufgabe oder zur Speicherung von Speicherplatz mit Bezug zu der angeforderten Aufgabe programmiert werden. Der Hostprozessor 262 kann beispielsweise dazu anweisen, dass Konfigurationsdaten (Bitstream), die in der Speicherschaltungsanordnung 264 gespeichert oder in einem am Sektor ausgerichteten Speicherelement des IC-Bauelements 12 zwischengespeichert sind, in der programmierbaren logischen Fabric des IC-Bauelements 12 programmiert werden.
-
Die Verfahren und Bauelemente in dieser Offenbarung können in jegliche geeignete Schaltungen integriert werden. Zum Beispiel können die Verfahren und Bauelemente in zahlreiche unterschiedliche Baugruppen wie Mikroprozessoren oder andere integrierte Schaltungen integriert werden. Beispielhafte integrierte Schaltungen enthalten Programmable Array Logics (PALs), Programmable Logic Arrays (PLAs), Field Programmable Logic Arrays (FPLAs), Electrically Programmable Logic Devices (EPLDs), Electrically Erasable Programmable Logic Devices (EEPLDs), Logic Cell Arrays (LCAs), Field Programmable Gate Arrays (FPGAs), Application Specific Standard Products (ASSPs), Application Specific Integrated Circuits (ASICs) sowie Mikroprozessoren, um nur einige zu nennen.
-
Obgleich die Prozessabläufe in einer speziellen Reihenfolge beschrieben wurden, versteht es sich ferner, dass zwischen den beschriebenen Vorgängen noch andere Vorgänge durchgeführt werden können, die beschriebenen Vorgänge so anpassbar sind, dass sie zu etwas anderen Zeiten ablaufen, oder die beschriebenen Vorgänge in einem System, das eine Abarbeitung der Verarbeitungsvorgänge in verschiedenen mit der Verarbeitung assoziierten Intervallen zulässt, verteilt ausgeführt werden können, sofern die Verarbeitung der grundlegenden Vorgänge in der gewünschten Weise erfolgt.
-
Die hierin dargelegten und beanspruchten Techniken beziehen sich und sind anwendbar auf physische Objekte sowie konkrete Beispiele aus der Praxis, die nachweislich den gegenwärtigen Stand der Technik verbessern, und sind deshalb nicht abstrakt, unkörperhaft oder rein theoretisch. Werden ferner in den am Ende dieser Patentschrift angehängten Ansprüchen ein oder mehrere Elemente als „Mittel zum [z. B. Durchführen einer Funktion] ...“ („means for [perform] ing [a function] ...“) oder „Schritt zum [z. B. Durchführen einer Funktion] ...“ („step for [perform] ing [a function] ...“) bezeichnet, sind diese Elemente nach § 112(f) Bd. 35 U.S.C. auszulegen. Werden in den Ansprüchen Elemente hingegen anders bezeichnet, sind diese Elemente nicht nach § 112(f) Bd. 35 U.S.C. auszulegen.
-
Obgleich die in der vorliegenden Offenbarung dargelegten Ausführungsformen auf verschiedene Arten abwandelbar und alternativ ausführbar sind, wurden in den Zeichnungen konkrete Ausführungsformen rein beispielhaft gezeigt und hierin ausführlich beschrieben. Es versteht sich jedoch, dass die Offenbarung nicht auf die konkreten Ausführungsformen, die offenbart werden, begrenzt sein soll. Die Offenbarung soll sämtliche Abwandlungen, Äquivalente und Alternativen abdecken, die mit dem Gedanken der Offenbarung vereinbar sind und in ihren Schutzbereich fallen, wie von den folgenden beigefügten Ansprüchen definiert.