DE102019101213A1 - Authentifizierung und Entschlüsselung programmierbarer Bauelemente - Google Patents

Authentifizierung und Entschlüsselung programmierbarer Bauelemente Download PDF

Info

Publication number
DE102019101213A1
DE102019101213A1 DE102019101213.9A DE102019101213A DE102019101213A1 DE 102019101213 A1 DE102019101213 A1 DE 102019101213A1 DE 102019101213 A DE102019101213 A DE 102019101213A DE 102019101213 A1 DE102019101213 A1 DE 102019101213A1
Authority
DE
Germany
Prior art keywords
hash
block
data
sub
blocks
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
DE102019101213.9A
Other languages
English (en)
Inventor
Andrew Martyn Draper
James Ryan Kenny
Bruce B. Pedersen
Robert Landon Pelt
Sean R. Atsatt
Ting Lu
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102019101213A1 publication Critical patent/DE102019101213A1/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

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

Abstract

IC-Bauelemente und Verfahren enthalten Nutzen von Sicherheitsmerkmalen, die Authentifizieren ankommender Daten durch Empfangen eines oder mehrerer je mehrere Hash-Teilblöcke enthaltender Hash-Blöcke enthalten. Das Authentifizieren enthält auch Empfangen verschlüsselter Daten, die mehrere Datenteilblöcke enthalten. Das Authentifizieren enthält auch Authentifizieren eines ersten Hash-Blocks aus dem einen oder den mehreren Hash-Blöcken unter Verwendung eines Root-Hash eines IC-Bauelements. Das Authentifizieren enthält weiter Authentifizieren jedes der mehreren Datenteilblöcke unter Verwendung eines entsprechenden Hash-Teilblocks aus den mehreren Hash-Teilblöcken.

Description

  • 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.

Claims (20)

  1. IC-Bauelement (IC = Integrated Circuit, integrierte Schaltung), das Folgendes umfasst: eine Hashing-Schaltung, die einen Hash-Block empfängt und den Hash-Block hasht, um einen gehashten Hash-Block zu generieren, wobei jeder Hash-Block einen Hash-Teilblock, der einen Datenteilblock von verschlüsselten Daten zur Authentifizierung für das IC-Bauelement authentifiziert, umfasst; eine Vergleichsschaltung, die den gehashten Hash-Block mit einem Authentifizierungs-Root-Hash des IC-Bauelements vergleicht, und zum Generieren eines Steuersignals mindestens teilweise basierend auf dem Vergleich; Auswahlschaltung empfängt die verschlüsselten Daten und zum Auswählen, ob die verschlüsselten Daten an eine Entschlüsselungsengine zu routen sind, mindestens teilweise basierend auf dem Steuersignal; und eine Entschlüsselungsengine entschlüsselt die verschlüsselten Daten mindestens teilweise basierend auf dem Vergleich.
  2. IC-Bauelement nach Anspruch 1, wobei das IC-Bauelement ein programmierbares Logikbauelement umfasst.
  3. IC-Bauelement nach Anspruch 2, wobei das programmierbare Logikbauelement ein Field Programmable Gate Array umfasst.
  4. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei die verschlüsselten Daten Konfigurationsdaten, die eine programmierbare Logikelementanordnung konfigurieren, umfassen.
  5. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei ein letzter Hash-Teilblock des Hash-Blocks den nächsten Hash-Block authentifiziert.
  6. IC-Bauelement nach Anspruch 5, wobei die Vergleichsschaltung den nächsten Hash-Block mit dem letzten Hash-Teilblock vergleicht.
  7. IC-Bauelement nach Anspruch 5, wobei der Hash-Block Füllzeichen nach dem letzten Hash-Teilblock zum Bewirken, dass der Hash-Block eine vorher bestimmte Größe aufweist, umfasst.
  8. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei die Auswahlschaltung die verschlüsselten Daten verwirft, wenn das Steuersignal angibt, dass der gehashte Hash-Block nicht mit dem Authentifizierungs-Root-Hash des IC-Bauelements übereinstimmt.
  9. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei die Entschlüsselungsengine eine AES-Engine (AES = Advanced Encryption Standard), die einen AES-Key zum Entschlüsseln der verschlüsselten Daten verwendet, umfasst.
  10. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei der Datenteilblock dieselbe Größe wie der Hash-Block aufweist.
  11. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei die Auswahlschaltung einen Demultiplexer umfasst.
  12. IC-Bauelement nach Anspruch 1, 2 oder 3, wobei die Hashing-Schaltung einen ersten Datenteilblock der verschlüsselten Daten zu einem gehashten Datenteilblock hasht.
  13. IC-Bauelement nach Anspruch 12, wobei die Vergleichsschaltung den gehashten Datenteilblock mit einem entsprechenden Hash-Teilblock des Hash-Blocks vergleicht, um den Datenteilblock zu authentifizieren.
  14. IC-Bauelement nach Anspruch 13, wobei die verschlüsselten Daten verworfen werden, wenn der gehashte Datenteilblock nicht mit dem entsprechenden Hash-Teilblock übereinstimmt.
  15. Verfahren, das Folgendes umfasst: Empfangen eines oder mehrerer Hash-Blöcke, die je eine Vielzahl von Hash-Teilblöcken umfassen; Empfangen verschlüsselter Daten, die eine Vielzahl von Datenteilblöcken umfassen; Authentifizieren eines ersten Hash-Blocks aus dem einen oder den mehreren Hash-Blöcken unter Verwendung eines Root-Hash eines IC-Bauelements (IC = Integrated Circuit, integrierte Schaltung); und Authentifizieren jedes aus der Vielzahl von Datenteilblöcken unter Verwendung eines entsprechenden Hash-Teilblocks aus der Vielzahl von Hash-Teilblöcken.
  16. Verfahren nach Anspruch 15, das Authentifizieren eines zweiten Hash-Blocks aus dem einen oder den mehreren Hash-Blöcken unter Verwendung eines letzten Hash-Teilblocks des ersten Hash-Blocks umfasst.
  17. Verfahren nach Anspruch 15 oder 16, wobei die verschlüsselten Daten Konfigurationsdaten für eine Logikelementanordnung des IC-Bauelements umfassen.
  18. Datenverarbeitungssystem, das Folgendes umfasst: ein IC-Bauelement(IC = Integrated Circuit, integrierte Schaltung), das Folgendes umfasst: eine programmierbare Logikelementanordnung; eine Hashing-Schaltung, die eine Vielzahl von Hash-Blöcken empfängt und die Vielzahl von Hash-Blöcken nacheinander hasht, um eine Vielzahl gehashter Hash-Blöcke zu generieren, wobei jeder Hash-Block einen Hash-Teilblock, der einen Datenteilblock von verschlüsselten Daten zur Authentifizierung für das IC-Bauelement authentifiziert, umfasst, wobei die verschlüsselten Daten Konfigurationsdaten zum Konfigurieren der programmierbaren Logikelementanordnung umfassen; eine Vergleichsschaltung, die nacheinander jeden aus der Vielzahl gehashter Hash-Blöcke mit einem entsprechenden Authentifizierungs-Hash aus einer Vielzahl von Authentifizierungs-Hashes vergleicht, um ein Steuersignal mindestens teilweise basierend auf dem Vergleich zu generieren, wobei ein erster Authentifizierungs-Hash aus der Vielzahl von Authentifizierungs-Hashes, der zum Authentifizieren eines ersten Hash-Blocks aus der Vielzahl von Hash-Blöcken verwendet wird, einen Root-Hash des IC-Bauelements umfasst und ein zweiter Authentifizierungs-Hash aus der Vielzahl von Authentifizierungs-Hashes, der zum Authentifizieren eines zweiten Hash-Blocks aus der Vielzahl von Hash-Blöcken verwendet wird, einen letzten Teilblock des ersten Hash-Blocks umfasst; Auswahlschaltung empfängt die verschlüsselten Daten und zum Auswählen, ob die verschlüsselten Daten an eine Entschlüsselungsengine zu routen sind, mindestens teilweise basierend auf dem Steuersignal; und eine Entschlüsselungsengine entschlüsselt die verschlüsselten Daten mindestens teilweise basierend auf dem Vergleich.
  19. Datenverarbeitungssystem nach Anspruch 18, das ein an das IC-Bauelement gekoppeltes Zentralprozessoreinheitbauelement umfasst.
  20. Datenverarbeitungssystem nach Anspruch 18 oder 19, das ein das IC-Bauelement umfassendes Rechenzentrum umfasst.
DE102019101213.9A 2018-03-29 2019-01-17 Authentifizierung und Entschlüsselung programmierbarer Bauelemente Pending DE102019101213A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/940,887 US20190050603A1 (en) 2018-03-29 2018-03-29 Programmable device authentication decryption
US15/940,887 2018-03-29

Publications (1)

Publication Number Publication Date
DE102019101213A1 true DE102019101213A1 (de) 2019-10-02

Family

ID=65275336

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019101213.9A Pending DE102019101213A1 (de) 2018-03-29 2019-01-17 Authentifizierung und Entschlüsselung programmierbarer Bauelemente

Country Status (2)

Country Link
US (1) US20190050603A1 (de)
DE (1) DE102019101213A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3893431A1 (de) * 2020-04-06 2021-10-13 Siemens Aktiengesellschaft Authentifizierung einer konfiguration einer feldprogrammierbaren logikgatter-anordnung

Also Published As

Publication number Publication date
US20190050603A1 (en) 2019-02-14

Similar Documents

Publication Publication Date Title
EP2899714B1 (de) Gesichertes Bereitstellen eines Schlüssels
EP3123689B1 (de) Verfahren und system zur verbesserung der datensicherheit bei einem kommunikationsvorgang
DE202018002074U1 (de) System zur sicheren Speicherung von elektronischem Material
DE102013227184A1 (de) Verfahren zur Absicherung eines Systems-on-a-Chip
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
WO2014131539A1 (de) Erstellen eines abgeleiteten schlüssels aus einem kryptographischen schlüssel mittels einer physikalisch nicht klonbaren funktion
DE102014208385A1 (de) Verfahren zum Verbessern der sicheren Flash-Programmierung
WO2011054639A1 (de) Kryptographisches Hardwaremodul bzw. Verfahren zur Aktualisierung eines kryptographischen Schlüssels
DE102020131126A1 (de) Gesicherter Einsatz maschineller Lernmodelle
DE112019001438T5 (de) Kryptographisches asic mit kombinierten funktionen
EP3811260B1 (de) Kryptografiemodul und betriebsverfahren hierfür
WO2016165930A1 (de) Vorrichtung und verfahren zum erzeugen eines schlüssels in einem programmierbaren hardwaremodul
DE112019003096T5 (de) Abgesicherte kommunikation aus einer nichtflüchtigen speichervorrichtung heraus
DE102019101213A1 (de) Authentifizierung und Entschlüsselung programmierbarer Bauelemente
EP3819804A1 (de) Integritätsüberprüfung eines registerinhalts
DE102013202322A1 (de) Verfahren zur verschlüsselten Datenübertragung zwischen zwei Komponenten eines Steuergeräts
EP3924807A1 (de) Verfahren und vorrichtung zum verarbeiten von in einer speichereinrichtung gespeicherten daten
DE112019006051T5 (de) Sicheres-rechnen-einrichtung und client-einrichtung
DE102022112400A1 (de) Vertrauenswürdige systeme zur dezentralisierten datenspeicherung
EP3686763B1 (de) Computer-implementierte vorrichtung und verfahren zum verarbeiten von daten
EP1930834A1 (de) Kryptographisch gesichertes Prozessorsystem
EP3667529B1 (de) Verfahren und vorrichtung zum authentisieren einer fpga-konfiguration
EP3371733B1 (de) Verschlüsseln des speicherinhalts eines speichers in einem eingebetteten system
EP1482453A2 (de) Verfahren zum Laden von Daten in eine Speichereinrichtung
DE102017202787A1 (de) Verfahren und Validierungseinheit zum Steuern des Ladens von in IT-Systemen, insbesondere Eingebetteten Systemen, benutzbaren Krypto-Schlüsseln, insbesondere "Key BLOBs"