DE112017007643T5 - Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen - Google Patents

Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen Download PDF

Info

Publication number
DE112017007643T5
DE112017007643T5 DE112017007643.9T DE112017007643T DE112017007643T5 DE 112017007643 T5 DE112017007643 T5 DE 112017007643T5 DE 112017007643 T DE112017007643 T DE 112017007643T DE 112017007643 T5 DE112017007643 T5 DE 112017007643T5
Authority
DE
Germany
Prior art keywords
secure
security key
bitstream
storage area
enclave
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
DE112017007643.9T
Other languages
English (en)
Inventor
Changzheng Wei
Weigang Li
Cunming LIANG
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 DE112017007643T5 publication Critical patent/DE112017007643T5/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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

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)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Eine Ausführungsform eines elektronischen Verarbeitungssystems kann einen Prozessor, Permanentspeichermedien, die mit dem Prozessor kommunikativ gekoppelt sind, eine umkonfigurierbare Vorrichtung, die mit dem Prozessor über einen physisch getrennten vertrauenswürdigen Kommunikationskanal kommunikativ gekoppelt ist, einen sicheren Provisionierer, der mit dem Prozessor und der umkonfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und um einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich zu speichern, und einen Vorrichtungskonfigurierer, um die umkonfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren, umfassen. Andere Ausführungsformen werden offenbart und beansprucht.

Description

  • TECHNISCHES GEBIET
  • Die Ausführungsformen betreffen im Allgemeinen umkonfigurierbare Vorrichtungen. Im Besonderen betreffen die Ausführungsformen Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen.
  • ALLGEMEINER STAND DER TECHNIK
  • Eine umkonfigurierbare Vorrichtung wie etwa ein feldprogrammierbares Gate-Array (FPGA) kann umkonfiguriert werden, um eine andere Hardware-Funktionalität bereitzustellen. In manchen Umgebungen kann das Bereitstellen von Sicherheit rund um eine derartige Umkonfigurierung von Bedeutung sein.
  • Figurenliste
  • Die verschiedenen Vorteile der Ausführungsformen werden für Fachkundige durch die Lektüre der nachstehenden Beschreibung und der beiliegenden Ansprüche in Zusammenschau mit den nachstehenden Zeichnungen klar ersichtlich. Es zeigen:
    • 1 ein Blockdiagramm eines Beispiels für ein elektronisches Verarbeitungssystem gemäß einer Ausführungsform;
    • 2A ein Blockdiagramm eines Beispiels für eine konfigurierbare Einrichtung gemäß einer Ausführungsform;
    • 2B ein Blockdiagramm eines anderen Beispiels für eine konfigurierbare Einrichtung gemäß einer Ausführungsform;
    • 3A bis 3C Flussdiagramme eines Beispiels für ein Verfahren zum Konfigurieren einer Vorrichtung gemäß einer Ausführungsform;
    • 4A ein Blockdiagramm eines Beispiels für eine Cloud-Computing-Umgebung gemäß einer Ausführungsform;
    • 4B ein veranschaulichendes Diagramm eines Beispiels für einen Bitstrom gemäß einer Ausführungsform;
    • 4C ein Flussdiagramm eines Beispiels für ein Verfahren zum Konfigurieren eines FPGA gemäß einer Ausführungsform;
    • 5A ein Flussdiagramm eines Beispiels für ein Verfahren zum Erstellen eines sicheren FPGA-Bitstroms gemäß einer Ausführungsform;
    • 5B ein Flussdiagramm eines Beispiels für ein Verfahren zum sicheren Konfigurieren eines FPGA gemäß einer Ausführungsform;
    • 6 ein Blockdiagramm eines Beispiels für eine Rechnervorrichtung gemäß einer Ausführungsform;
    • 7 ein Blockdiagramm eines Beispiels für einen Prozessor gemäß einer Ausführungsform; und
    • 8 ein Blockdiagramm eines Beispiels für ein Rechnersystem nach einer Ausführungsform.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Nunmehr auf 1 Bezug nehmend kann eine Ausführungsform eines elektronischen Verarbeitungssystems 10 einen Prozessor 11, Permanentspeichermedien 12, die mit dem Prozessor 11 kommunikativ gekoppelt sind, eine umkonfigurierbare Vorrichtung 13, die mit dem Prozessor 11 über einen physisch getrennten vertrauenswürdigen Kommunikationskanal kommunikativ gekoppelt ist, einen sicheren Provisionierer 14, der mit dem Prozessor 11 und der umkonfigurierbaren Vorrichtung 13 kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und einen ferngenerierten Bitstrom-Sicherheitsschlüssel in dem provisionierten sicheren Speicherbereich sicher zu speichern, und einen Vorrichtungskonfigurierer 15, um die umkonfigurierbare Vorrichtung 13 mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren, umfassen. Bei manchen Ausführungsformen kann der sichere Provisionierer 14 ferner dazu ausgebildet sein, eine Enklave für den sicheren Speicherbereich zu partitionieren, der Enklave eine Enklavenkennung zuzuordnen und die Enklavenkennung der umkonfigurierbaren Vorrichtung 13 über den physisch getrennten vertrauenswürdigen Kommunikationsweg bereitzustellen. Beispielsweise kann die umkonfigurierbare Vorrichtung 13 eine FPGA-Vorrichtung umfassen, und der ferngenerierte Bitstrom kann mit der Enklavenkennung kodiert und mit dem ferngenerierten Bitstrom-Sicherheitsschlüssel verschlüsselt werden.
  • Ausführungsformen von jedem von oben genanntem Prozessor 11, oben genannten Permanentspeichermedien 12, oben genannter umkonfigurierbarer Vorrichtung 13, oben genanntem sicherem Provisionierer 14, oben genanntem Vorrichtungskonfigurierer 15 und anderen Komponenten des elektronischen Verarbeitungssystems 10 können als Hardware, Software oder jedwede geeignete Kombination daraus implementiert werden. Beispielsweise können Hardwareimplementierungen umfassen: konfigurierbare Logik, wie etwa programmierbare Logik-Arrays (PLAs), FPGAs, komplexe programmierbare Logikvorrichtungen (CPLDs), oder Logikhardware mit fester Funktionalität, die sich Schaltungstechnologie bedient, wie etwa anwendungsspezifische integrierte Schaltungs(ASIC)-, komplementäre Metalloxid-Halbleiter(CMOS)- oder Transistor-Transistor-Logik(TTL)-Technologie oder jedwede Kombination daraus. Alternativ oder zusätzlich dazu können einige betriebliche Aspekte dieser Komponenten in einem oder mehreren Modulen als Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder rechnerlesbaren Speichermedium, wie etwa einem RAM, einem Nur-Lese-Speicher (ROM), einem programmierbaren ROM (PROM), Firmware, einem Flash-Speicher usw., gespeichert sind, um von einem Prozessor oder einer Rechnervorrichtung ausgeführt zu werden. Beispielsweise kann Rechnerprogrammcode, um die Betriebsvorgänge der Komponenten durchzuführen, in jedweder Kombination aus einer oder mehreren betriebssystemanwendbaren/geeigneten Programmiersprachen, umfassend eine objektorientierte Programmiersprache wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen, geschrieben werden.
  • Bei verschiedenen Ausführungsformen kann das System 10 einen oder mehrere Anwendungsprozessoren und/oder einen oder mehrere Grafikprozessoren umfassen. Das System 10 kann ein Einprozessor-Desktopsystem, ein Mehrprozessor-Workstationsystem oder ein Serversystem mit einer großen Anzahl von Prozessoren oder Prozessorkernen sein. Bei manchen Ausführungsformen kann das System 10 eine Verarbeitungsplattform sein, die in eine integrierte „System-on-a-Chip(SoC)“-Schaltung zur Verwendung in mobilen, handgehaltenen, tragbaren oder eingebetteten Vorrichtungen eingebunden ist.
  • Nunmehr auf 2A Bezug nehmend kann eine Ausführungsform einer konfigurierbaren Einrichtung 20 eine konfigurierbare Vorrichtung 21, einen sicheren Provisionierer 22, der mit der konfigurierbaren Vorrichtung 21 kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und einen ferngenerierten Bitstrom-Sicherheitsschlüssel in dem provisionierten sicheren Speicherbereich sicher zu speichern, einen sicheren Kommunikator 23, der mit der konfigurierbaren Vorrichtung 21 und dem sicheren Provisionierer 22 kommunikativ gekoppelt ist, um zwischen dem provisionierten sicheren Speicherbereich und der konfigurierbaren Vorrichtung 21 einen vertrauenswürdigen Kommunikationsweg einzurichten, und einen Vorrichtungskonfigurierer 24, der mit der konfigurierbaren Vorrichtung 21 kommunikativ gekoppelt ist, um die konfigurierbare Vorrichtung 21 mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren, umfassen. Beispielsweise kann der sichere Provisionierer 22 ferner dazu ausgebildet sein, eine Enklave für den sicheren Speicherbereich zu partitionieren, der Enklave eine Enklavenkennung zuzuordnen und der konfigurierbaren Vorrichtung 21 die Enklavenkennung über den vertrauenswürdigen Kommunikationsweg bereitzustellen. Bei manchen Ausführungsformen kann der sichere Kommunikator 23 ferner dazu ausgebildet sein, einen physisch getrennten Kommunikationskanal für den vertrauenswürdigen Kommunikationsweg bereitzustellen.
  • Nunmehr auf 2B Bezug nehmend kann eine Ausführungsform einer konfigurierbaren Einrichtung 25 ein Zielsystem 26 umfassen, das die konfigurierbare Vorrichtung 21, den sicheren Provisionierer 22, den sicheren Kommunikator 23 und den Vorrichtungskonfigurierer 24 ähnlich den oben beschriebenen mit denselben Bezugszahlen aufweist. Die Einrichtung 25 kann ferner ein Quellsystem 27 umfassen, das dazu ausgebildet ist, einen sicheren Kommunikationskanal zwischen dem Quellsystem 27 und dem sicheren Provisionierer 22 einzurichten, um einen Bitstrom-Sicherheitsschlüssel an dem Quellsystem 27 für den ferngenerierten Bitstrom-Sicherheitsschlüssel fernzugenerieren und um den ferngenerierten Bitstrom-Sicherheitsschlüssel dem sicheren Provisionierer 22 über den sicheren Kommunikationskanal bereitzustellen. Beispielsweise kann das Quellsystem 27 ferner einen Bitstromkodierer 28, um den Bitstrom mit der Enklavenkennung an dem Quellsystem 27 fernzukodieren, und einen Bitstromverschlüsseler 29, um den Bitstrom mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem 27 fernzuverschlüsseln, umfassen. Bei jeder beliebigen der Ausführungsformen in diesem Dokument kann die konfigurierbare Vorrichtung 21 eine umkonfigurierbare Vorrichtung umfassen. Beispielsweise kann die umkonfigurierbare Vorrichtung eine FPGA-Vorrichtung (und/oder ein PLA, eine CPLD usw.) umfassen.
  • Die verschiedenen sicheren Komponenten (z.B. der sichere Provisionierer 22, der sichere Kommunikator 23 usw.) können auf eine beliebige aus einer Vielfalt von Möglichkeiten instantiiert werden. Beispielsweise können die sicheren Komponenten von einem nicht vertrauenswürdigen Host physisch und/oder logisch getrennt werden. Die sicheren Komponenten können beispielsweise durch Virtualisierungs- oder Trennungsmethoden wie etwa der INTEL-Virtualisierungstechnologie (VT) oder ARM TRUSTZONE logisch getrennt werden. Zusätzlich oder alternativ dazu können die sicheren Komponenten auf einem gesonderten, getrennten Stück Silizium implementiert werden, das nicht nur auf demselben Die physisch getrennt ist, sondern auch durch einen Bus getrennt ist.
  • Bei manchen Ausführungsformen kann beispielsweise ein Weg und/oder Kanal vertrauenswürdig sein, wenn sich die sicheren Komponenten und andere Komponenten der Einrichtung ein selbes Die oder Package teilen, was den Weg/Kanal weniger anfällig für Interposer-Angriffe macht. Wenn die sicheren Komponenten und anderen Komponenten auf getrennten Dies/Packages sind, kann der Weg/Kanal vertrauenswürdig sein, wenn er kryptografisch geschützt wird. Verschiedene Authentifizierungsmethoden können verwendet werden, um verschiedene sichere Komponenten/ausführbare Dateien zu verschlüsseln und zu signieren, umfassend beispielsweise „Safe-Architecture-of-Future-Emerging(SAFE)“-Kryptografiealgorithmen, „Advanced-Encryption-Standard(AES)“-Algorithmen usw.
  • Ausführungsformen von jedem von der oben genannten konfigurierbaren Vorrichtung 21, dem oben genannten sicheren Provisionierer 22, dem oben genannten sicheren Kommunikator 23, dem oben genannten Vorrichtungskonfigurierer 24, dem oben genannten Zielsystem 26, dem oben genannten Quellsystem 27, dem oben genannten Bitstromkodierer 28, dem oben genannten Bitstromverschlüsseler 29 und anderen Komponenten der konfigurierbaren Einrichtung 20, 25 können als Hardware, Software oder jedwede geeignete Kombination daraus implementiert werden. Beispielsweise können Hardwareimplementierungen umfassen: konfigurierbare Logik, wie etwa PLAs, FPGAs, CPLDs, oder Logikhardware mit fester Funktionalität, die sich Schaltungstechnologie bedient, wie etwa ASIC-, CMOS- oder TTL-Technologie, oder jedwede Kombination daraus. Alternativ oder zusätzlich dazu können einige betriebliche Aspekte dieser Komponenten in einem oder mehreren Modulen als Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder rechnerlesbaren Speichermedium, wie etwa RAM, ROM, PROM, Firmware, Flash-Speicher usw., gespeichert sind, um durch einen Prozessor oder eine Rechnervorrichtung ausgeführt zu werden. Beispielsweise kann Rechnerprogrammcode, um die Betriebsvorgänge der Komponenten durchzuführen, in jedweder Kombination aus einer oder mehreren betriebssystemanwendbaren/geeigneten Programmiersprachen, umfassend eine objektorientierte Programmiersprache wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen, geschrieben werden.
  • Nunmehr auf 3A bis 3C Bezug nehmend kann eine Ausführungsform eines Verfahrens 30 zum Konfigurieren einer Vorrichtung Provisionieren eines sicheren Speicherbereichs bei Block 31, sicheres Speichern eines ferngenerierten Bitstrom-Sicherheitsschlüssels in dem provisionierten sicheren Speicherbereich bei Block 32, Einrichten eines vertrauenswürdigen Kommunikationswegs zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung bei Block 33 und Konfigurieren der konfigurierbaren Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel bei Block 34 umfassen. Das Verfahren 30 kann ferner Partitionieren einer Enklave für den sicheren Speicherbereich bei Block 35, Zuordnen einer Enklavenkennung zu der Enklave bei Block 36 und Bereitstellen der Enklavenkennung über den vertrauenswürdigen Kommunikationsweg zu der konfigurierbaren Vorrichtung bei Block 37 umfassen. Beispielsweise können manche Ausführungsformen auch Bereitstellen eines physisch getrennten Kommunikationskanals für den vertrauenswürdigen Kommunikationsweg bei Block 38 umfassen.
  • Manche Ausführungsformen des Verfahrens 30 können ferner Einrichten eines sicheren Kommunikationskanals zwischen einem Quellsystem und dem sicheren Speicherbereich bei Block 41, Ferngenerieren eines Bitstrom-Sicherheitsschlüssels an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel bei Block 42 und Bereitstellen des ferngenerierten Bitstrom-Sicherheitsschlüssels über den sicheren Kommunikationskanal zu dem sicheren Speicherbereich bei Block 43 umfassen. Das Verfahren 30 kann bei Block 44 auch Fernkodieren des Bitstroms mit der Enklavenkennung an dem Quellsystem und bei Block 45 Fernverschlüsseln des Bitstroms mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem umfassen. Bei manchen Ausführungsformen kann bei Block 46 die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfassen. Beispielsweise kann bei Block 47 die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfassen.
  • Ausführungsformen des Verfahrens 30 können in einem elektronischen Verarbeitungssystem oder einer konfigurierbaren Einrichtung wie etwa den in diesem Dokument beschriebenen implementiert werden. Beispielsweise können Hardwareimplementierungen des Verfahrens 30 umfassen: konfigurierbare Logik, wie etwa PLAs, FPGAs, CPLDs, oder Logikhardware mit fester Funktionalität, die sich Schaltungstechnologie bedient, wie etwa ASIC-, CMOS- oder TTL-Technologie oder jedwede Kombination daraus. Alternativ oder zusätzlich dazu kann das Verfahren 30 in einem oder mehreren Modulen als Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder rechnerlesbaren Speichermedium, wie etwa RAM, ROM, PROM, Firmware, Flash-Speicher usw., gespeichert sind, um von einem Prozessor oder einer Rechnervorrichtung ausgeführt zu werden. Beispielsweise kann Rechnerprogrammcode, um die Betriebsvorgänge der Komponenten durchzuführen, in jedweder Kombination aus einer oder mehreren betriebssystemanwendbaren/geeigneten Programmiersprachen, umfassend eine objektorientierte Programmiersprache wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen, geschrieben werden. Beispielsweise können Ausführungsformen des Verfahrens 30 auf einem rechnerlesbaren Medium implementiert werden, wie nachstehend in Zusammenhang mit Beispiel 18 bis 24 beschrieben wird.
  • Manche Ausführungsformen können vorteilhafterweise ein Verfahren und/oder eine Einrichtung für die Provisionierung und das Management von FPGA-Bitstromauthentifizierungsschlüsseln in der Cloud bereitstellen. Beispielsweise kann eine FPGA-Vorrichtung als generischer Beschleuniger beim Cloud-Computing von Nutzen sein. Ein FPGA kann flexible Anpassung, hervorragendes Parallel-Computing und ausreichenden Schnittstellensupport ermöglichen. Ein Anbieter von Cloud-Diensten kann für die nächste Generation von Cloud-Infrastruktur eine FPGA-Vorrichtung verwenden, beispielsweise durch Bereitstellen der FPGA-Computing-Fähigkeit als Dienst, was mitunter als FPGA-as-a-Service (FaaS) bezeichnet wird.
  • FPGA-Bitstromverschlüsselung kann dazu beitragen, die Bauform des FPGA vor Kopieren, Verändern oder Reverse-Engineering zu schützen. Manche FPGA-Vorrichtungen können einen Bitstromentschlüsselungsschlüssel intern speichern, entweder mit dediziertem RAM, das durch eine kleine, extern angebundene Batterie gepuffert wird (BBRAM), oder mit einem Sicherungsregister, das nur einmal programmiert werden kann (z.B. ein eFUSE). Diese Art von FPGA-Sicherheit kann in einer Cloud-Computing-Umgebung, wo ein Benutzer möglicherweise den Bitstrom-Sicherheitsschlüssel aus der Ferne und/oder häufig generieren oder aktualisieren muss, umständlich oder unpraktisch sein. Darüber hinaus ziehen Benutzer, da die Cloud eventuell keine vertrauenswürdige Umgebung ist, es möglicherweise vor, ihren Schlüssel in das FPGA zu provisionieren und dabei andere Sicherheitsrisiken wie etwa „Snooping“ durch andere Benutzer oder die Administratoren auf der Host-Seite zu reduzieren.
  • Vorteilhafterweise können manche Ausführungsformen einen sicheren FPGA-Dienst in einer Cloud-Computing-Umgebung bereitstellen. Insbesondere können manche Ausführungsformen eine beliebige oder beide von zwei verschiedenen Sicherheitsverbesserungen nutzen, um ein FPGA in einer Cloud-Computing-Umgebung zu konfigurieren. Eine erste Sicherheitsverbesserung gemäß manchen Ausführungsformen kann Provisionieren eines sicheren Speicherbereichs in der Zielplattform und Nutzen dieses sicheren Speicherbereichs, um sichere Informationen wie etwa den Bitstrom-Sicherheitsschlüssel auszutauschen, umfassen. Von dem sicheren Speicherbereich aus kann der Bitstrom-Sicherheitsschlüssel dem FPGA über interne Busse bereitgestellt werden, um „Snooping“ zu hemmen. Eine andere Sicherheitsverbesserung gemäß manchen Ausführungsformen kann Generieren einer Authentifizierungskennung auf der Zielplattformseite und Bereitstellen der Authentifizierungskennung zu dem Quellsystem, um sie in dem Bitstrom einzubetten, umfassen. Beispielsweise kann die Authentifizierungskennung in dem sicheren Speicherbereich gespeichert werden, damit das Quellsystem sicher darauf zugreifen kann. Die Authentifizierungskennung kann auch dem FPGA über interne Busse bereitgestellt werden. Das Quellsystem kann dann die Authentifizierungskennung derart in dem Bitstrom einbetten oder kodieren, dass, ehe der Bitstrom entschlüsselt wird, die Bitstrom-Authentifizierungskennung mit der in dem FPGA gespeicherten Authentifizierungskennung verglichen werden kann, um den Bitstrom vor dem Konfigurieren des FPGA zu authentifizieren. Nutzen der Authentifizierungskennung kann einen „Faking-Key“-Angriff, wobei versucht wird, den vorgesehenen Bitstrom durch einen bösartigen Bitstrom zu ersetzen, hemmen (z.B. da der bösartige Bitstrom nicht die sicher ausgetauschte Authentifizierungskennung enthalten wird).
  • Nunmehr auf 4A Bezug nehmend kann eine Cloud-Computing-Umgebung 50 einen oder mehrere Server 51 umfassen, die über ein Netzwerk 53 mit einem Quellsystem 52 verbunden sind. Der Server 51 kann ein DRAM 54 umfassen, das mit einem Prozessor 55 gekoppelt ist. Der Prozessor 55 kann ein „Multi-Chip-Package“ (MCP) umfassen, das sowohl eine Zentraleinheit (CPU) 56 als auch ein FPGA 57 einhaust. Die CPU 56 kann in dem MCP derart physisch mit dem FPGA 57 gekoppelt sein, dass der Kommunikationsweg 58 zwischen der CPU 56 und dem FPGA 57 schwierig zu durchleuchten oder auszuspionieren sein kann. Der Server 51 kann verschiedene Sicherheitsmerkmale umfassen. Ein derartiges Sicherheitsmerkmal kann die Fähigkeit umfassen, einen sicheren Speicherbereich 59 in dem DRAM 54 mit einem zugeordneten Tag oder einer zugeordneten Kennung zu provisionieren.
  • Ein geheimer Bitstrom-Sicherheitsschlüssel 60 kann (z.B. durch einen Endbenutzer) generiert werden, um einen Bitstrom 61 an dem Quellsystem 52 zu verschlüsseln. Vor dem Bereitstellen des Bitstroms 61 zu der Zielplattform (z.B. dem Server 51), um das FPGA 57 zu konfigurieren, kann ein sicherer Kanal 62 über das Netzwerk 53 zwischen dem Quellsystem 52 und dem sicheren Speicherbereich 59 auf der Zielplattform eingerichtet werden. Der Bitstrom-Sicherheitsschlüssel 60 kann dann über den sicheren Kanal 62 von dem Quellsystem 52 dem sicheren Speicherbereich 59 bereitgestellt werden. Der dem sicheren Speicherbereich 59 zugeordnete Tag kann dem Quellsystem 52 über den sicheren Kanal 62 bereitgestellt werden. Der Tag kann in dem Bitstrom 61 eingebettet werden, ehe der Bitstrom 61 mit dem Bitstrom-Sicherheitsschlüssel 60 verschlüsselt wird, oder einem Sendepaket hinzugefügt werden, welches den verschlüsselten Bitstrom 61 umfasst. Der verschlüsselte Bitstrom 61 kann dann der Zielplattform bereitgestellt und in dem DRAM 54 gespeichert werden.
  • Die CPU 56 kann den Schlüssel 60 aus dem sicheren Speicherbereich 59 laden und den Schlüssel 60 dem FPGA 57 bereitstellen. Die CPU 56 kann dem FPGA 57 auch den dem sicheren Speicher 59 zugeordneten Tag bereitstellen. Der Kommunikationsweg 58 kann einen „In-Chip-Bus“ und/oder „In-Package-Bus“ umfassen, um einen sicheren Kanal (z.B. kann es schwierig sein, eine Transaktion auf dem Bus auszuspionieren) für die gesamte Transaktion bereitzustellen. Der sichere Kanal und der sichere Speicherbereich 59 können den geheimen Schlüssel 60 vor jedweden Snooping-Angriffen durch Malware oder einen Administrator schützen. Der zugeordnete Tag kann derselbe wie der in dem Bitstrom eingebettete Tag sein (z.B. geschützt durch Nachrichtenauthentifizierungscode (MAC = Message Authentication Code), jedoch nicht durch Verschlüsselung) und als Authentifizierungskennung verwendet werden, um einen „Faking-Key“-Angriff zu hemmen oder zu verhindern, und kann gewährleisten, dass nur der korrekte Bitstrom verwendet werden kann, um das FPGA 57 zu konfigurieren. Vorteilhafterweise können manche Ausführungsformen eine sichere Methode zur Bitstrom-Remote-Bereitstellung bereitstellen. Gemäß manchen Ausführungsformen kann ein Cloud-Benutzer oder ein Cloud-Operator einen FPGA-Bitstrom und einen sicheren Schlüssel über die Ferne und sicher provisionieren und aktualisieren, auch wenn das FPGA 57 in einer nicht vertrauenswürdigen Public-Cloud-Umgebung angeordnet ist.
  • Manche Ausführungsformen können vorteilhafterweise flexibles und sicheres Schlüsselprovisionieren für eine heterogene CPU- und FPGA-Plattform in einer Cloud-Computing-Umgebung bereitstellen. Beispielsweise können verschiedene Cloud-Computing-Umgebungen heterogene Prozessoren wie etwa ein INTEL XEON+FPGA MCP nutzen, welches eine CPU und ein FPGA in einem selben Sockel einhaust. Dieses Package kann vorteilhafterweise verwendet werden, um einen sicheren Kanal zwischen der CPU und dem FPGA innerhalb des physischen Sockels einzurichten. Beispielsweise kann die CPU durch einen Bus, der sich der „INTEL QUICKPATH INTERCONNECT(QPI)“-Punkt-zu-Punkt-Prozessor-Verbindung bedient, mit dem FPGA gekoppelt werden.
  • Manche Ausführungsformen können ferner „INTEL SOFTWARE GUARD EXTENSIONS(SGX)“-Technologie nutzen, um eine Methode zur Fernprovisionierung eines sicheren Schlüssels für eine derartige heterogene Plattform zu unterstützen und eine skalierbare/flexible Schlüsselprovisioniermethode für eine Cloud-Computing-Umgebung bereitzustellen. SGX kann ausgewählten Code und ausgewählte Daten vor Offenbarung oder Modifizierung schützen. Ein Entwickler kann eine Anwendung in CPU-gehärtete Enklaven partitionieren (z.B. geschützte Ausführungsbereiche, welche sogar auf gefährdeten Plattformen die Sicherheit erhöhen können). SGX kann eine sichere Fernattestierungsfunktion bereitstellen, die einem Entwickler gestattet, die Fernenklave in Frage zu stellen und geheime Informationen sicher in ein entferntes Zielsystem zu provisionieren. SGX kann gut dazu geeignet sein, einen sicheren Speicherbereich für das entfernte Zielsystem bereitzustellen, welchen manche Ausführungsformen dazu nutzen können, den Bitstrom-Sicherheitsschlüssel und/oder die Authentifizierungskennung auszutauschen. Bei manchen Ausführungsformen kann der sockelinterne Bus einen vertrauenswürdigen sicheren „CPU-to-FPGA“-Kanal bereitstellen und ein der SGX-Speichertransaktion zugeordneter Tag kann dazu beitragen, den sicheren Kontext (z.B. die partitionierte Enklave) zu identifizieren.
  • Bei manchen Ausführungsformen kann der Bitstromsicherheitsschlüssel in einer SGX-Enklave gespeichert (z.B. im Speicher verschlüsselt) werden und über den physischen sicheren internen sockelinternen Bus zu dem FPGA geschoben werden. Eine Enklavenkennung kann der SGX-Enklave zugeordnet werden und dem Endbenutzer bereitgestellt werden, um sie in dem Bitstrom einzubetten. Der Bitstrom kann MAC-authentifiziert werden, und sein sicherer Schlüssel kann durch die Bustransaktion mit der Enklavenkennung über den internen Bus geschoben werden, um die Identität des Bitstroms weiter zu authentifizieren. Dann kann nur der authentifizierte Bitstrom durch den richtigen authentifizierten sicheren Schlüssel in dem FPGA entschlüsselt werden. Alle oder die meisten dieser Transaktionen können sicher innerhalb eines vertrauenswürdigen Bereichs erfolgen, welcher die SGX-Enklave und den CPU- und FPGA-Sockel umfasst. Vorteilhafterweise werden der Systemadministrator oder andere böswillige Benutzer gehemmt oder daran gehindert, den Prozess auszuspionieren und zu „hacken“.
  • Nunmehr auf 4B Bezug nehmend kann eine Ausführungsform einer veranschaulichenden Struktur für einen Bitstrom 70 einen Header 71, gefolgt von einer Authentifizierungskennung (ID) 72, gefolgt von einem Körperabschnitt 73, gefolgt von einem Footer 74 und einem Nachrichtenauthentifizierungscode (MAC) 75 umfassen. Ein erster Abschnitt 76 des Bitstroms 70 kann verschlüsselt werden. Beispielsweise kann der Körperabschnitt 73 des Bitstroms 70 mit dem Bitstrom-Sicherheitsschlüssel verschlüsselt werden. Bei manchen Ausführungsformen kann der verschlüsselte erste Abschnitt 76 andere Abschnitte des Bitstroms 70, einschließlich des Headers 71, der Authentifizierungskennung 72, des Footers 74 usw., umfassen. Ein zweiter Abschnitt 77 des Bitstroms 70 kann authentifiziert werden. Beispielsweise können der Header 71, die Authentifizierungskennung 72, der Körperabschnitt 73 und der Footer 74 mittels eines Codes in dem MAC-Abschnitt 75 des Bitstroms 70 authentifiziert werden.
  • Ein Endbenutzer kann den Bitstromsicherheitsschlüssel generieren, um den Bitstrom 70 zu verschlüsseln. Der Endbenutzer kann auch einen Hash-Wert einer SGX-Enklavenkennung (welcher z.B. von der Zielplattform bereitgestellt wird) in den oder nach dem Header 71 des Bitstroms 70 als Authentifizierungskennung 72 einfügen. Auf der Zielplattform kann, wenn die CPU die SGX-Enklave lädt, die CPU den Hash-Wert der SGX-Enklavenkennung bestimmen und den Hash-Wert in ein CPU-Register speichern, das nur für Software gelesen wird. In weiterer Folge kann der Hash-Wert als ein einem sicheren Speicher zugeordneter Tag verwendet und mit der Authentifizierungskennung 72 in dem Bitstrom 70 verglichen werden, um zu identifizieren, welche SGX-Enklave den Bitstromsicherheitsschlüssel für den Bitstrom 70 enthält.
  • Nunmehr auf 4C Bezug nehmend kann ein Verfahren 80 zum Konfigurieren eines FPGA wie oben beschrieben eine vorbereitende Einrichtung zwischen einer Entwicklungsumgebung und einer Zielplattform umfassen. Beispielsweise kann ein Benutzer einen sicheren Kanal mit einer SGX-Enklave, die auf der Zielplattform läuft, einrichten und einen Bitstrom-Sicherheitsschlüssel über den sicheren Kanal in die Ziel-SGX-Enklave schieben. In der Zielplattform kann der SGX-Enklaven-Code den Bitstrom-Sicherheitsschlüssel sicher in die CPU importieren. Die CPU kann den Schlüssel über eine interne Hardwareverbindung, beispielsweise einen QPI-Bus, zu dem FPGA schieben. Gemeinsam mit der Schlüssel-Schiebe-Anweisung kann die CPU dem FPGA einen sicherem Speicher zugeordneten Tag bereitstellen, welcher der Hash-Wert der SGX-Enklavenkennung sein kann, der durch die CPU bestimmt wird, wenn die SGX-Enklave partitioniert wird. Dieser Hash-Wert kann auch von dem Bnutzer unabhängig offline in der Entwicklungsumgebung berechnet werden und in eine Authentifizierungskennung des Bitstroms eingebettet werden, ehe der verschlüsselte Bitstrom der Zielplattform bereitgestellt wird. Wenn die CPU der Zielplattform die SGX-Enklave lädt, kann sie einen aktuellen Hash-Wert der SGX-Enklavenkennung neu berechnen und diesen in einer SGX-ENKLAVENSTEUERSTRUKTUR (SECS = „SGX ENCLAVE CONTROL STRUCTURE“), auf die nicht mittels Software zugegriffen werden kann, speichern.
  • Die CPU kann den verschlüsselten Bitstrom (z.B. mittels eines „Software Developer Kit“(SDK)-Tools) laden und die Authentifizierungskennung aus dem Bitstrom extrahieren (z.B. den Hash-Wert der SGX-Enklavenkennung). Bei Block 81 kann das FPGA prüfen, ob die SGX-Enklavenkennung, die durch die CPU in das FPGA geschoben wird, der aus dem Bitstrom extrahierten Authentifizierungskennung entspricht. Wenn die Prüfung bei Block 81 bestanden wird, kann bei Block 82 der Bitstrom-Sicherheitsschlüssel vorübergehend in das Schlüssel-Register provisioniert werden. Andernfalls kann die Umkonfiguration des FPGA abgebrochen werden.
  • Wenn bei Block 81 die Umkonfiguration nicht abgebrochen wird, kann das FPGA den Schlüssel verwenden, um bei Block 83 den MAC-Wert des Bitstroms zu authentifizieren und bei Block 84 den berechneten MAC-Wert zu verifizieren. Wenn der MAC erfolgreich verifiziert wird, dann ist der Schlüssel gültig. Andernfalls kann die Umkonfiguration des FPGA abgebrochen werden. Wenn bei Block 84 die Umkonfiguration nicht abgebrochen wird, kann das FPGA bei Block 85 den Bitstrom mit dem Schlüssel entschlüsseln und bei Block 86 den entschlüsselten Bitstrom in FPGA-Logik herunterladen.
  • Nunmehr auf 5A Bezug nehmend kann eine Ausführungsform eines Verfahrens 100 zum Erstellen eines Bitstroms umfassen: Entwickeln von FPGA-Logik bei Block 101, Anfordern einer Schlüsselprovisionierungsenklave bei Block 102 und Herstellen einer Bitstromdatei mit einem Hash-Wert der Schlüsselprovisionierungsenklave in dem Header bei Block 103. Beispielsweise kann jeder der Blöcke 101, 102 und 103 in einer Entwicklungsumgebung 104 vorkommen.
  • Nunmehr auf 5B Bezug nehmend kann eine Ausführungsform eines Verfahrens 120 zum Konfigurieren einer Vorrichtung umfassen: Starten einer Schlüsselprovisionierungsenklave auf einer Zielplattform 121 bei Block 122 und Fernattestieren für die Zielplattform 121 bei Block 123. Wenn bei Block 124 die Attestierung nicht gültig ist, kann die Umkonfiguration abgebrochen werden. Wenn bei Block 124 die Attestierung gültig ist, kann das Verfahren 120 damit fortfahren, bei Block 125 einen sicheren Kanal zwischen der Enklave und der fernen Entwicklungsumgebung einzurichten, bei Block 126 einen geheimen Schlüssel des Bitstroms in die Enklave zu provisionieren, und bei Block 127 kann die CPU den verschlüsselten Bitstrom auf die Zielplattform laden.
  • Die CPU kann dann bei Block 128 einen bestimmten Hash-Wert, welcher der Enklave in der SECS entspricht, als einem sicheren Speicher zugeordneten Tag laden und bei Block 129 den geheimen Bitstromschlüssel gemeinsam mit dem zugeordneten sicheren Speicher-Tag in ein FPGA-Schlüsselregister schieben. Das FPGA kann bei Block 130 eine Authentifizierungskennung aus dem Bitstrom mit dem Tag vergleichen. Wenn bei Block 131 der Vergleich nicht gültig ist, kann die Umkonfigurierung abgebrochen werden. Wenn bei Block 131 der Vergleich gültig ist, kann bei Block 132 das FPGA den Bitstrom mittels des geheimen Schlüssels authentifizieren. Wenn bei Block 133 die Authentifizierung nicht gültig ist, kann die Umkonfigurierung abgebrochen werden. Wenn bei Block 133 die Authentifizierung gültig ist, kann bei Block 134 das FGPA den Bitstromkörper entschlüsseln und die Benutzerlogik mit dem entschlüsselten Bitstrom konfigurieren. Beispielsweise können die Blöcke 130 bis 134 allesamt innerhalb eines FPGA 135 vorkommen, und die Blöcke 128 bis 134 können allesamt innerhalb eines Prozessor-Package 136 vorkommen.
  • 6 zeigt eine Rechnervorrichtung 158, mit der ohne Weiteres eine oder mehrere Komponenten der verschiedenen Systeme, Einrichtungen, Plattformen und/oder Umgebungen, die bereits besprochen wurden, ersetzt werden können. Bei dem dargestellten Beispiel umfasst die Vorrichtung 158 eine Zeitquelle 160 (z.B. Kristalloszillator, Uhr), eine Batterie 162, um die Vorrichtung 158 mit Energie zu versorgen, einen Transceiver 164 (z.B. drahtlos oder drahtgebunden), eine Anzeige 166 und Massenspeicher 168 (z.B. Festplattenlaufwerk/HDD, Solid-State-Laufwerk/SSD, optische Platte, Flash-Speicher). Die Vorrichtung 158 kann auch einen Host-Prozessor 170 (z.B. CPU) umfassen, der einen integrierten Memory-Controller (IMC) 172 aufweist, welcher mit einem Systemspeicher 174 kommunizieren kann. Der Systemspeicher 174 kann beispielsweise umfassen: einen dynamischen Random-Access-Speicher (DRAM), der als ein oder mehrere Speichermodule konfiguriert ist, beispielsweise „Dual-Inline-Speichermodule“ (DIMMs), Small-Outline-DIMMs (SODIMMs) usw. Die dargestellte Vorrichtung 158 umfasst auch ein Eingabe-Ausgabe(IO)-Modul 176, das gemeinsam mit dem Prozessor 170 auf einem Halbleiter-Die 178 als System-on-Chip (SoC) implementiert ist, wobei das IO-Modul 176 als Host-Vorrichtung funktioniert und mit beispielsweise der Anzeige 166, dem Transceiver 164, dem Massenspeicher 168 und so weiter kommunizieren kann. Der Massenspeicher 168 kann einen nichtflüchtigen Speicher (NVM) umfassen, der einen oder mehrere Schlüssel (z.B. MAC-Generierschlüssel, Verschlüsselungsschlüssel) speichert.
  • Die Rechnervorrichtung 158 kann Logik 180 umfassen, die bewirkt, dass das Halbleiter-Die 178 als konfiguierbare Vorrichtung wie etwa die verschiedenen in diesem Dokument beschriebenen Ausführungsformen arbeitet. Somit kann die Logik 180 bewirken, dass die Rechnervorrichtung 158 einen sicheren Speicherbereich provisioniert, einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich speichert, einen vertrauenswürdigen Kommunikationsweg zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung einrichtet und die konfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel konfiguriert. Die Logik 180 kann ferner bewirken, dass die Rechnervorrichtung 158 eine Enklave für den sicheren Speicherbereich partitioniert, der Enklave eine Enklavenkennung zuordnet und der konfigurierbaren Vorrichtung die Enklavenkennung über den vertrauenswürdigen Kommunikationsweg bereitstellt. Beispielsweise kann bei manchen Ausführungsformen die Logik 180 auch bewirken, dass die Rechnervorrichtung 158 einen physisch getrennten Kommunikationskanal für den vertrauenswürdigen Kommunikationsweg bereitstellt.
  • Darüber hinaus kann die Logik 180 auch bewirken, dass die Rechnervorrichtung 158 einen sicheren Kommunikationskanal zwischen einem Quellsystem und dem sicheren Speicherbereich einrichtet, einen Bitstrom-Sicherheitsschlüssel an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel ferngeneriert und den ferngenerierten Bitstrom-Sicherheitsschlüssel über den sicheren Kommunikationskanal dem sicheren Speicherbereich bereitstellt. Die Logik 180 kann auch bewirken, dass die Rechnervorrichtung 158 den Bitstrom mit der Enklavenkennung an dem Quellsystem fernkodiert und den Bitstrom mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem fernverschlüsselt. Bei manchen Ausführungsformen kann die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfassen. Beispielsweise kann die umkonfigurierbare Vorrichtung ein FPGA umfassen. Bei einem Beispiel ist die Zeitquelle 160 von dem Controller autonom/unabhängig, um die Sicherheit zu erhöhen (z.B. um zu verhindern, dass der Controller Kadenz-, Frequenz-, Latenz- und/oder Zeitstempeldaten manipuliert). Die Logik 180 kann auch von der Rechnervorrichtung 158 getrennt implementiert werden.
  • 7 stellt einen Prozessorkern 200 gemäß einer Ausführungsform dar. Der Prozessorkern 200 kann der Kern für jedweden Typ von Prozessor, beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor oder andere Vorrichtungen, um Code auszuführen, sein. Wenngleich in 7 nur ein Prozessorkern 200 dargestellt ist, kann ein Verarbeitungselement alternativ dazu mehr als einen des in 7 dargestellten Prozessorkerns 200 umfassen. Der Prozessorkern 200 kann ein „Single-Threaded“-Kern sein, oder, für mindestens eine Ausführungsform, kann der Prozessorkern 200 „multithreaded“ sein, indem er mehr als einen „Hardware-Thread“-Kontext (oder „logischen Prozessor“) pro Kern umfasst.
  • 7 stellt auch einen Speicher 270 dar, der mit dem Prozessorkern 200 gekoppelt ist. Der Speicher 270 kann jeder beliebige von einer breiten Vielfalt von Speichern (umfassend verschiedene Speicherhierarchieschichten) sein, die Fachkundigen bekannt oder für diese auf andere Weise verfügbar sind. Der Speicher 270 kann eine oder mehrere Anweisung(en) mit Code 213, die durch den Prozessorkern 200 auszuführen sind, umfassen, wobei der Code 213 das bereits besprochene Verfahren 30 (3A bis 3C) implementieren kann. Der Prozessorkern 200 folgt einer Programmsequenz von Anweisungen, welche durch den Code 213 angegeben werden. Jede Anweisung kann in einen Frontend-Abschnitt 210 eintreten und durch einen oder mehrere Dekodierer 220 verarbeitet werden. Der Dekodierer 220 kann an seinem Ausgang eine Mikrooperation wie etwa eine Festbreiten-Mikrooperation in einem vordefinierten Format ausführen oder kann andere Anweisungen, Mikroanweisungen oder Steuersignale, welche die ursprüngliche Codeanweisung widerspiegeln, generieren. Der dargestellte Frontend-Abschnitt 210 umfasst auch Registerumbenennungslogik 225 und Scheduling-Logik 230, welche im Allgemeinen Ressourcen zuweisen und die Operation entsprechend der Umwandlungsanweisung in die Warteschlange zur Ausführung einzureihen.
  • Der Prozessorkern 200 ist als Ausführungslogik 250 mit einem Satz von Ausführungseinheiten 255-1 bis 255-N enthaltend dargestellt. Manche Ausführungsformen können eine Anzahl von Ausführungseinheiten, welche für spezifische Funktionen oder Sätze von Funktionen bestimmt sind, umfassen. Andere Ausführungsformen können nur eine Ausführungseinheit oder eine Ausführungseinheit, die eine bestimmte Funktion ausführen kann, umfassen. Die dargestellte Ausführungslogik 250 führt die durch Codeanweisungen spezifizierten Operationen durch.
  • Nach Fertigstellung der Ausführung der durch die Codeanweisungen spezifizierten Operationen schließt Backend-Logik 260 die Anweisungen des Codes 213 ab. Bei einer Ausführungsform ermöglicht der Prozessorkern 200 die nichtreihenfolgekonforme Ausführung, erfordert jedoch ein reihenfolgenkonformes Abschließen („Retirement“) von Anweisungen. Retirement-Logik 265 kann eine Vielfalt von Formen, welche Fachkundigen bekannt sind, annehmen (z.B. „Reorder“-Puffer oder dergleichen). Auf diese Weise wird der Prozessorkern 200 während der Ausführung des Codes 213 umgeformt, zumindest in Bezug auf den durch den Dekodierer generierten Ausgang, die Hardwareregister und -tabellen, welche durch die Registerumbenennungslogik 225 verwendet werden, und jedwede Register (nicht dargestellt), die durch die Ausführungslogik 250 modifiziert werden.
  • Wenngleich dies in 7 nicht dargestellt wird, kann ein Verarbeitungselement andere Elemente auf dem Chip mit dem Prozessorkern 200 umfassen. Beispielsweise kann ein Verarbeitungselement gemeinsam mit dem Prozessorkern 200 Speichersteuerungslogik umfassen. Das Verarbeitungselement kann I/O-Steuerlogik umfassen und/oder kann mit Speichersteuerlogik integrierte I/O-Steuerlogik umfassen. Das Verarbeitungselement kann auch einen oder mehrere Caches umfassen.
  • Nunmehr auf 8 Bezug nehmend ist darin ein Blockdiagramm einer Ausführungsform eines Rechnersystems 1000 gemäß einer Ausführungsform dargestellt. In 8 ist ein Mehrprozessorsystem 1000 dargestellt, welches ein erstes Verarbeitungselement 1070 und ein zweites Verarbeitungselement 1080 umfasst. Wenngleich zwei Verarbeitungselemente 1070 und 1080 dargestellt werden, versteht es sich, dass eine Ausführungsform des Systems 1000 auch nur ein derartiges Verarbeitungselement umfassen kann.
  • Das System 1000 ist als Punkt-zu-Punkt-Verbindungssystem dargestellt, wobei das erste Verarbeitungselement 1070 und das zweite Verarbeitungselement 1080 über eine Punkt-zu-Punkt-Verbindung 1050 gekoppelt sind. Es sollte sich verstehen, dass jede beliebige oder alle der in 8 dargestellten Verbindungen als Multi-Drop-Bus an Stelle einer Punkt-zu-Punkt-Verbindung implementiert werden können.
  • Wie in 8 dargestellt ist, kann jedes der Verarbeitungselemente 1070 und 1080 ein Mehrkernprozessor sein, umfassend erste und zweite Prozessorkerne (d.h. Prozessorkerne 1074a und 1074b und Prozessorkerne 1084a und 1084b). Derartige Kerne 1074a, 1074b, 1084a, 1084b können dazu ausgebildet sein, Anweisungscode auf eine Weise, die der oben in Zusammenhang mit 7 besprochenen ähnlich ist, auszuführen.
  • Jedes Verarbeitungselement 1070, 1080 kann mindestens einen gemeinsam genutzten Cache 1896a, 1896b umfassen. Der gemeinsam genutzte Cache 1896a, 1896b kann Daten (z.B. Anweisungen) speichern, die von einem oder mehreren Komponenten des Prozessors wie etwa den Kernen 1074a, 1074b bzw. 1084a, 1084b genutzt werden. Beispielsweise kann der gemeinsam genutzte Cache 1896a, 1896b Daten, die in einem Speicher 1032, 1034 gespeichert sind, für einen schnelleren Zugriff durch Komponenten des Prozessors lokal zwischenspeichern. Bei einer oder mehreren Ausführungsformen kann der gemeinsam genutzte Cache 1896a, 1896b einen oder mehrere Mid-Level-Caches, beispielsweise Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, einen Last-Level-Cache (LLC) und/oder Kombinationen daraus umfassen.
  • Wenngleich sie mit nur zwei Verarbeitungselementen 1070, 1080 dargestellt sind, versteht es sich, dass der Umfang der Ausführungsformen nicht derart begrenzt ist. Bei anderen Ausführungsformen können ein oder mehrere zusätzliche Verarbeitungselemente in einem bestimmten Prozessor vorhanden sein. Alternativ dazu können ein oder mehrere der Verarbeitungselemente 1070, 1080 ein anderes Element als ein Prozessor sein, beispielsweise ein Beschleuniger oder ein feldprogrammierbares Gate-Array. Beispielsweise kann(können) (ein) zusätzliche(s) Verarbeitungselement(e) (einen) zusätzliche(n) Prozessor(en), der(die) derselbe(dieselben) wie ein erster Prozessor 1070 ist(sind), (einen) zusätzliche(n) Prozessor(en), der(die) heterogen oder asymmetrisch zu Prozessor einem ersten Prozessor 1070 ist(sind), Beschleuniger (beispielsweise Grafikbeschleuniger oder digitale Signalverarbeitungs(DSP)-Einheiten), feldprogrammierbare Gate-Arrays oder jedwedes andere Verarbeitungselement umfassen. Es kann eine Vielfalt von Unterschieden zwischen den Verarbeitungselementen 1070, 1080 in Bezug auf ein Spektrum von Leistungsmetriken, umfassend architektonische, mikroarchitektonische, thermische, energieverbrauchsbezogene Eigenschaften und dergleichen, vorliegen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität zwischen den Verarbeitungselementen 1070, 1080 manifestieren. Für mindestens eine Ausführungsform können die verschiedenen Verarbeitungselemente 1070, 1080 in demselben Die-Package untergebracht sein.
  • Das erste Verarbeitungselement 1070 kann ferner Speicher-Controller-Logik (MC) 1072 und Punkt-zu-Punkt(P-P)-Schnittstellen 1076 und 1078 umfassen. In ähnlicher Weise kann das zweite Verarbeitungselement 1080 eine MC 1082 und P-P-Schnittstellen 1086 und 1088 umfassen. Wie in 8 dargestellt ist, koppeln MC 1072 und MC 1082 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1032 und einem Speicher 1034, welche Abschnitte eines Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren befestigt sind. Wenngleich die MC 1072 und die MC 1082 als in die Verarbeitungselemente 1070, 1080 integriert dargestellt sind, kann für alternative Ausführungsformen die MC-Logik eine diskrete Logik außerhalb der Verarbeitungselemente 1070, 1080 und nicht in diese integriert sein.
  • Das erste Verarbeitungselement 1070 und das zweite Verarbeitungselement 1080 können über P-P-Verbindungen 1076 bzw. 1086 mit einem I/O-Subsystem 1090 gekoppelt sein. Wie in 8 dargestellt ist, umfasst das I/O-Subsystem 1090 P-P-Schnittstellen 1094 und 1098. Ferner umfasst das I/O-Subsystem 1090 eine Schnittstelle 1092, um das I/O-Subsystem 1090 mit einer Hochleistungs-Grafikengine 1038 zu koppeln. Bei einer Ausführungsform kann der Bus 1049 verwendet werden, um die Grafikengine 1038 mit dem I/O-Subsystem 1090 zu koppeln. Alternativ dazu kann eine Punkt-zu-Punkt-Verbindung diese Komponenten koppeln.
  • Das I/O-Subsystem 1090 kann wiederum über eine Schnittstelle 1096 mit einem ersten Bus 1016 gekoppelt werden. Bei einer Ausführungsform kann der erste Bus 1016 ein „Peripheral Component Interconnect(PCI)“-Bus oder ein Bus wie etwa ein „PCI-Express“-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, wenngleich der Umfang der Ausführungsformen nicht darauf beschränkt ist.
  • Wie in 8 dargestellt ist, können verschiedene I/O-Vorrichtungen 1014 (z.B. biometrische Scanner, Lautsprecher, Kameras, Sensoren) mit dem ersten Bus 1016 gekoppelt werden, gemeinsam mit einer Busbrücke 1018, welche den ersten Bus 1016 mit einem zweiten Bus 1020 koppeln kann. Bei einer Ausführungsform kann der zweite Bus 1020 ein „Low-Pin-Count(LPC)“-Bus sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 1020 gekoppelt werden, unter anderem, bei einer Ausführungsform, beispielsweise eine Tastatur/Maus 1012, (eine) Kommunikationsvorrichtung(en) 1026 und eine Datenspeichereinheit 1019 wie etwa ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Code 1030 enthalten kann. Der dargestellte Code 1030 kann das bereits besprochene Verfahren 30 (3A bis 3C) implementieren und kann dem bereits besprochenen Code 213 (7) ähnlich sein. Ferner kann ein Audio-I/O 1024 mit dem zweiten Bus 1020 gekoppelt werden, und ein Batterieanschluss 1010 kann dem Rechnersystem 1000 Energie zuführen.
  • Beachten Sie, dass andere Ausführungsformen in Erwägung gezogen werden. Beispielsweise kann an Stelle der Punkt-zu-Punkt-Architektur aus 8 ein System einen Multi-Drop-Bus oder eine andere derartige Kommunikationstopologie implementieren. Zudem können die Elemente aus 8 alternativ dazu durch Verwendung von mehr oder weniger integrierten Chips als in 8 dargestellt partitioniert werden.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 kann ein elektronisches Verarbeitungssystem umfassen, umfassend einen Prozessor, Permanentspeichermedien, die mit dem Prozessor kommunikativ gekoppelt sind, eine umkonfigurierbare Vorrichtung, die über einen physisch getrennten vertrauenswürdigen Kommunikationskanal mit dem Prozessor kommunikativ gekoppelt ist, einen sicheren Provisionierer, der mit dem Prozessor und der umkonfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich zu speichern, und einen Vorrichtungskonfigurierer, um die umkonfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren.
  • Beispiel 2 kann das System aus Beispiel 1 umfassen, wobei der sichere Provisionierer ferner dazu dient, eine Enklave für den sicheren Speicherbereich zu partitionieren, der Enklave eine Enklavenkennung zuzuordnen und die Enklavenkennung der umkonfigurierbaren Vorrichtung über den physisch getrennten vertrauenswürdigen Kommunikationsweg bereitzustellen.
  • Beispiel 3 kann das System aus Beispiel 2 umfassen, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst und wobei der ferngenerierte Bitstrom mit der Enklavenkennung kodiert und mit dem ferngenerierten Bitstrom-Sicherheitsschlüssel verschlüsselt wird.
  • Beispiel 4 kann eine konfigurierbare Einrichtung umfassen, umfassend eine konfigurierbare Vorrichtung, einen sicheren Provisionierer, der mit der konfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich zu speichern, einen sicheren Kommunikator, der mit der konfigurierbaren Vorrichtung und dem sicheren Provisionierer kommunikativ gekoppelt ist, um einen vertrauenswürdigen Kommunikationsweg zwischen dem provisionierten sicheren Speicherbereich und der konfigurierbaren Vorrichtung einzurichten, und einen Vorrichtungskonfigurierer, der mit der konfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um die konfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren.
  • Beispiel 5 kann die Einrichtung aus Beispiel 4 umfassen, wobei der sichere Provisionierer ferner dazu dient, eine Enklave für den sicheren Speicherbereich zu partitionieren, der Enklave eine Enklavenkennung zuzuordnen und die Enklavenkennung der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg bereitzustellen.
  • Beispiel 6 kann die Einrichtung aus Beispiel 5 umfassen, wobei der sichere Kommunikator ferner dazu dient, einen physisch getrennten Kommunikationskanal für den vertrauenswürdigen Kommunikationsweg bereitzustellen.
  • Beispiel 7 kann die Einrichtung aus Beispiel 4 umfassen, ferner umfassend ein Quellsystem, um einen sicheren Kommunikationskanal zwischen dem Quellsystem und dem sicheren Provisionierer einzurichten, einen Bitstrom-Sicherheitsschlüssel an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel fernzugenerieren und den ferngenerierten Bitstrom-Sicherheitsschlüssel dem sicheren Provisionierer über den sicheren Kommunikationskanal bereitzustellen.
  • Beispiel 8 kann die Einrichtung aus Beispiel 7 umfassen, wobei das Quellsystem ferner einen Bitstromkodierer, um den Bitstrom mit der Enklavenkennung an dem Quellsystem fernzukodieren, und einen Bitstromverschlüsseler, um den Bitstrom mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem fernzuverschlüsseln, umfasst.
  • Beispiel 9 kann die Einrichtung aus einem beliebigen der Beispiele 4 bis 8 umfassen, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  • Beispiel 10 kann die Einrichtung aus Beispiel 9 umfassen, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  • Beispiel 11 kann ein Verfahren zum Konfigurieren einer Vorrichtung umfassen, umfassend Provisionieren eines sicheren Speicherbereichs, sicher Speichern eines ferngenerierten Bitstrom-Sicherheitsschlüssels in dem provisionierten sicheren Speicherbereich, Einrichten eines vertrauenswürdigen Kommunikationswegs zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung und Konfigurieren der konfigurierbaren Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel.
  • Beispiel 12 kann das Verfahren aus Beispiel 11 umfassen, ferner umfassend Partitionieren einer Enklave für den sicheren Speicherbereich, Zuordnen einer Enklavenkennung zu der Enklave und Bereitstellen der Enklavenkennung zu der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg.
  • Beispiel 13 kann das Verfahren aus Beispiel 12 umfassen, ferner umfassend Bereitstellen eines physisch getrennten Kommunikationskanals für den vertrauenswürdigen Kommunikationsweg.
  • Beispiel 14 kann das Verfahren aus Beispiel 11 umfassen, ferner umfassend Einrichten eines sicheren Kommunikationskanals zwischen einem Quellsystem und dem sicheren Speicherbereich, Ferngenerieren eines Bitstrom-Sicherheitsschlüssels an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel und Bereitstellen des ferngenerierten Bitstrom-Sicherheitsschlüssels zu dem sicheren Speicherbereich über den sicheren Kommunikationskanal.
  • Beispiel 15 kann das Verfahren aus Beispiel 14 umfassen, ferner umfassend Fernkodieren des Bitstroms mit der Enklavenkennung an dem Quellsystem und Fernverschlüsseln des Bitstroms mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem.
  • Beispiel 16 kann das Verfahren aus einem beliebigen der Beispiele 11 bis 15 umfassen, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  • Beispiel 17 kann das Verfahren aus Beispiel 16 umfassen, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  • Beispiel 18 kann mindestens ein rechnerlesbares Medium umfassen, umfassend einen Satz Anweisungen, die, wenn sie von einer Rechnervorrichtung ausgeführt werden, bewirken, dass die Rechnervorrichtung einen sicheren Speicherbereich provisioniert, einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich speichert, einen vertrauenswürdigen Kommunikationsweg zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung einrichtet und die konfiguierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel konfiguriert.
  • Beispiel 19 kann das mindestens eine rechnerlesbare Medium aus Beispiel 18 umfassen, umfassend einen weiteren Satz Anweisungen, die, wenn sie durch eine Rechnervorrichtung ausgeführt werden, bewirken, dass die Rechnervorrichtung eine Enklave für den sicheren Speicherbereich partitioniert, der Enklave eine Enklavenkennung zuordnet und die Enklavenkennung der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg bereitstellt.
  • Beispiel 20 kann das mindestens eine rechnerlesbare Medium aus Beispiel 19 umfassen, umfassend einen weiteren Satz Anweisungen, die, wenn sie durch eine Rechnervorrichtung ausgeführt werden, bewirken, dass die Rechnervorrichtung einen physisch getrennten Kommunikationskanal für den vertrauenswürdigen Kommunikationsweg bereitstellt.
  • Beispiel 21 kann das mindestens eine rechnerlesbare Medium aus Beispiel 18 umfassen, umfassend einen weiteren Satz Anweisungen, die, wenn sie durch eine Rechnervorrichtung ausgeführt werden, bewirken, dass die Rechnervorrichtung einen sicheren Kommunikationskanal zwischen einem Quellsystem und dem sicheren Speicherbereich einrichtet, einen Bitstrom-Sicherheitsschlüssel an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel ferngeneriert und den ferngenerierten Bitstrom-Sicherheitsschlüssel dem sicheren Speicherbereich über den sicheren Kommunikationskanal bereitstellt.
  • Beispiel 22 kann das mindestens eine rechnerlesbare Medium aus Beispiel 21 umfassen, umfassend einen weiteren Satz Anweisungen, die, wenn sie durch eine Rechnervorrichtung ausgeführt werden, bewirken, dass die Rechnervorrichtung den Bitstrom mit der Enklavenkennung an dem Quellsystem fernkodiert und den Bitstrom mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem fernverschlüsselt.
  • Beispiel 23 kann das mindestens eine rechnerlesbare Medium aus einem beliebigen der Beispiele 18 bis 22 umfassen, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  • Beispiel 24 kann das mindestens eine rechnerlesbare Medium aus Beispiel 23 umfassen, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  • Beispiel 25 kann eine Konfiguriereinrichtung umfassen, umfassend Mittel zum Provisionieren eines sicheren Speicherbereichs, Mittel zum sicheren Speichern eines ferngenerierten Bitstrom-Sicherheitsschlüssels in dem provisionierten sicheren Speicherbereich, Mittel zum Einrichten eines vertrauenswürdigen Kommunikationswegs zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung und Mittel zum Konfigurieren der konfigurierbaren Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel.
  • Beispiel 26 kann die Einrichtung aus Beispiel 25 umfassen, ferner umfassend Mittel zum Partitionieren einer Enklavee für den sicheren Speicherbereich, Mittel zum Zuordnen einer Enklavenkennung zu der Enklave und Mittel zum Bereitstellen der Enklavenkennung zu der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg.
  • Beispiel 27 kann die Einrichtung aus Beispiel 26 umfassen, ferner umfassend Mittel zum Bereitstellen eines physisch getrennten Kommunikationskanals für den vertrauenswürdigen Kommunikationsweg.
  • Beispiel 28 kann die Einrichtung aus Beispiel 25 umfassen, ferner umfassend Mittel zum Einrichten eines sicheren Kommunikationskanals zwischen einem Quellsystem und dem sicheren Speicherbereich, Mittel zum Ferngenerieren eines Bitstrom-Sicherheitsschlüssels an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel und Mittel zum Bereitstellen des ferngenerierten Bitstrom-Sicherheitsschlüssels zu dem sicheren Speicherbereich über den sicheren Kommunikationskanal.
  • Beispiel 29 kann die Einrichtung aus Beispiel 28 umfassen, ferner umfassend Mittel zum Fernkodieren des Bitstroms mit der Enklavenkennung an dem Quellsystem und Mittel zum Fernverschlüsseln des Bitstroms mit dem Bitstrom-Sicherheitsschlüssel an dem Quell system.
  • Beispiel 30 kann die Einrichtung aus einem beliebigen der Beispiele 25 bis 29 umfassen, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  • Beispiel 31 kann die Einrichtung aus Beispiel 30 umfassen, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  • Ausführungsformen sind zur Verwendung mit allen Arten von integrierten Schaltungs(IC)-Halbleiterchips anwendbar. Beispiele für diese IC-Chips umfassen, sind jedoch nicht beschränkt auf: Prozessoren, Steuerungen, Chipsatzkomponenten, PLAs, Speicherchips, Netzwerkchips, Systems-on-Chips (SoCs), SSD/NAND-Controller-ASICS und dergleichen. Darüber hinaus sind in manchen der Zeichnungen Signalleiterleitungen als Linien dargestellt. Manche können verschieden sein, um mehrere einzelne Signalwege anzugeben, eine Nummernbezeichnung aufweisen, um eine Anzahl von einzelnen Signalwegen anzugeben, und/oder Pfeile an einem oder mehreren Enden aufweisen, um die primäre Informationsflussrichtung anzugeben. Dies sollte jedoch nicht auf einschränkende Weise ausgelegt werden. Vielmehr können derartige zusätzliche Details in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet werden, um das bessere Verständnis einer Schaltung zu ermöglichen. Jedwede dargestellten Signalleitungen, ob diese nun zusätzliche Informationen haben oder nicht, können in Wirklichkeit ein oder mehrere Signale umfassen, die sich in mehrere Richtungen bewegen können und mit jedwedem geeigneten Typ von Signalschema implementiert sein können, z.B. digitale oder analoge Leitungen, die mit Differenzpaaren, faseroptischen Leitungen und/oder einendigen Leitungen implementiert sind.
  • Beispielhafte Größen/Modelle/Werte/Bereiche wurden möglicherweise angeführt, obschon die Ausführungsformen nicht auf diese beschränkt sind. Mit zunehmendem Ausreifen von Fertigungsmethoden (z.B. Fotolithografie) im Lauf der Zeit steht zu erwarten, dass Vorrichtungen von kleinerer Größe hergestellt werden könnten. Zudem können, aus Gründen der Vereinfachung der Darstellung und Besprechung und um bestimmte Aspekte der Ausführungsformen nicht zu verdecken, gut bekannte Strom/Masse-Verbindungen mit IC-Chips und anderen Komponenten in den Figuren dargestellt sein oder nicht. Ferner können Anordnungen in Blockdiagrammform dargestellt sein, um das Verdecken von Ausführungsformen zu vermeiden und auch in Anbetracht der Tatsache, dass Einzelheiten in Bezug auf die Implementierung derartiger Blockdiagrammanordnungen stark von der Plattform abhängig sind, in welcher die Ausführungsform implementiert werden soll, d.h. derartige Einzelheiten sollten durchaus innerhalb des Kompentenzbereichs von Fachkundigen liegen. Falls spezifische Details (z.B. Schaltungen) dargelegt werden, um beispielhafte Ausführungsformen zu beschreiben, sollte es für Fachkundige deutlich erkennbar sein, dass Ausführungsformen ohne diese oder mit einer Abänderung dieser spezifischen Details realisiert werden können. Die Beschreibung ist somit als veranschaulichend und nicht als einschränkend anzusehen.
  • Der Begriff „gekoppelt“ kann in diesem Dokument verwendet werden, um jedwede Art von Beziehung, direkte oder indirekte, zwischen den betreffenden Komponenten zu bezeichnen, und kann für elektrische, mechanische, Fluid-, optische, elektromagnetische, elektromechanische Verbindungen oder andere Verbindungen angewandt werden. Darüber hinaus können die Begriffe „erster“, „zweiter“ usw. in diesem Dokument lediglich dazu verwendet werden, die Besprechung zu erleichtern, und haben, soweit nicht anders angegeben, keine bestimmte zeitliche oder chronologische Bedeutung.
  • In dieser Anmeldung und in den Ansprüchen kann eine Aufzählung von Dingen, die mit dem Begriff „eines oder mehrere von“ verbunden ist, jedwede Kombination aus den aufgezählten Begriffen bedeuten. Beispielweise können die Wendungen „eines oder mehrere von A, B oder C“ bedeuten: A, B, C; A und B; A und C; B und C; oder A, B und C.
  • Fachkundige werden aus der vorangehenden Beschreibung erkennen, dass die breiten Methoden der Ausführungsformen auf vielerlei Weise umgesetzt werden können. Daher sollte, auch wenn die Ausführungsformen in Zusammenhang mit konkreten Beispielen davon beschrieben wurden, der wahre Schutzumfang der Ausführungsformen nicht derart beschränkt sein, da für Fachkundige nach eingehender Betrachtung der Zeichnungen, der Beschreibung und der nachfolgenden Ansprüche andere Modifikationen offenkundig werden.

Claims (24)

  1. Elektronisches Verarbeitungssystem, umfassend: einen Prozessor, Permanentspeichermedien, die mit dem Prozessor kommunikativ gekoppelt sind, eine umkonfigurierbare Vorrichtung, die mit dem Prozessor über einen physisch getrennten vertrauenswürdigen Kommunikationskanal kommunikativ gekoppelt ist; einen sicheren Provisionierer, der mit dem Prozessor und der umkonfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich zu speichern; und einen Vorrichtungskonfigurierer, um die umkonfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren.
  2. System nach Anspruch 1, wobei der sichere Provisionierer ferner dazu dient: eine Enklave für den sicheren Speicherbereich zu partitionieren; der Enklave eine Enklavenkennung zuzuordnen; und die Enklavenkennung der umkonfigurierbaren Vorrichtung über den physisch getrennten vertrauenswürdigen Kommunikationsweg bereitzustellen.
  3. System nach Anspruch 2, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst und wobei der ferngenerierte Bitstrom mit der Enklavenkennung kodiert und mit dem ferngenerierten Bitstrom-Sicherheitsschlüssel verschlüsselt wird.
  4. Konfigurierbare Einrichtung, umfassend: eine konfigurierbare Vorrichtung, einen sicheren Provisionierer, der mit der konfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um einen sicheren Speicherbereich zu provisionieren und um einen ferngenerierten Bitstrom-Sicherheitsschlüssel sicher in dem provisionierten sicheren Speicherbereich zu speichern; einen sicheren Kommunikator, der mit der konfigurierbaren Vorrichtung und dem sicheren Provisionierer kommunikativ gekoppelt ist, um einen vertrauenswürdigen Kommunikationsweg zwischen dem provisionierten sicheren Speicherbereich und der konfigurierbaren Vorrichtung einzurichten, und einen Vorrichtungskonfigurierer, der mit der konfigurierbaren Vorrichtung kommunikativ gekoppelt ist, um die konfigurierbare Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel zu konfigurieren.
  5. Einrichtung nach Anspruch 4, wobei der sichere Provisionierer ferner dazu dient: eine Enklave für den sicheren Speicherbereich zu partitionieren; der Enklave eine Enklavenkennung zuzuordnen; und die Enklavenkennung der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg bereitzustellen.
  6. Einrichtung nach Anspruch 5, wobei der sichere Kommunikator ferner dazu dient, einen physisch getrennten Kommunikationskanal für den vertrauenswürdigen Kommunikationsweg bereitzustellen.
  7. Einrichtung nach Anspruch 4, ferner umfassend ein Quellsystem, um: einen sicheren Kommunikationskanal zwischen dem Quellsystem und dem sicheren Provisionierer einzurichten; einen Bitstrom-Sicherheitsschlüssel an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel fernzugenerieren; und den ferngenerierten Bitstrom-Sicherheitsschlüssel dem sicheren Provisionierer über den sicheren Kommunikationskanal bereitzustellen.
  8. Einrichtung nach Anspruch 7, wobei das Quellsystem ferner umfasst: einen Bitstromkodierer, um den Bitstrom mit der Enklavenkennung an dem Quellsystem fernzukodieren; und einen Bitstromverschlüsseler, um den Bitstrom mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem fernzuverschlüsseln.
  9. Einrichtung nach einem Beliebigen der Ansprüche 4 bis 8, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  10. Einrichtung nach Anspruch 9, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  11. Verfahren zum Konfigurieren einer Vorrichtung, umfassend: Provisionieren eines sicheren Speicherbereichs; sicheres Speichern eines ferngenerierten Bitstrom-Sicherheitsschlüssels in dem provisionierten sicheren Speicherbereich; Einrichten eines vertrauenswürdigen Kommunikationswegs zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung; und Konfigurieren der konfigurierbaren Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel.
  12. Verfahren nach Anspruch 11, ferner umfassend: Partitionieren einer Enklave für den sicheren Speicherbereich; Zuordnen einer Enklavenkennung zu der Enklave; und Bereitstellen der Enklavenkennung zu der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg.
  13. Verfahren nach Anspruch 12, ferner umfassend: Bereitstellen eines physisch getrennten Kommunikationskanals für den vertrauenswürdigen Kommunikationsweg.
  14. Verfahren nach Anspruch 11, ferner umfassend: Einrichten eines sicheren Kommunikationskanals zwischen einem Quellsystem und dem sicheren Speicherbereich; Ferngenerieren eines Bitstrom-Sicherheitsschlüssels an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel; und Bereitstellen des ferngenerierten Bitstrom-Sicherheitsschlüssels zu dem sicheren Speicherbereich über den sicheren Kommunikationskanal.
  15. Verfahren nach Anspruch 14, ferner umfassend: Fernkodieren des Bitstroms mit der Enklavenkennung an dem Quellsystem; und Fernverschlüsseln des Bitstroms mit dem Bitstrom-Sicherheitsschlüssel an dem Quellsystem.
  16. Verfahren nach einem Beliebigen der Ansprüche 11 bis 15, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  17. Verfahren nach Anspruch 16, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
  18. Konfigurierbare Einrichtung, umfassend: Mittel zum Provisionieren eines sicheren Speicherbereichs; Mittel zum sicheren Speichern eines ferngenerierten Bitstrom-Sicherheitsschlüssels in dem provisionierten sicheren Speicherbereich; Mittel zum Einrichten eines vertrauenswürdigen Kommunikationswegs zwischen dem provisionierten sicheren Speicherbereich und einer konfigurierbaren Vorrichtung; und Mittel zum Konfigurieren der konfigurierbaren Vorrichtung mit einem ferngenerierten Bitstrom und dem ferngenerierten Bitstrom-Sicherheitsschlüssel.
  19. Einrichtung nach Anspruch 18, ferner umfassend: Mittel zum Partitionieren einer Enklave für den sicheren Speicherbereich; Mittel zum Zuordnen einer Enklavenkennung zu der Enklave; und Mittel zum Bereitstellen der Enklavenkennung zu der konfigurierbaren Vorrichtung über den vertrauenswürdigen Kommunikationsweg.
  20. Einrichtung nach Anspruch 19, ferner umfassend: Mittel zum Bereitstellen eines physisch getrennten Kommunikationskanals für den vertrauenswürdigen Kommunikationsweg.
  21. Einrichtung nach Anspruch 18, ferner umfassend: Mittel zum Einrichten eines sicheren Kommunikationskanals zwischen einem Quellsystem und dem sicheren Speicherbereich; Mittel zum Ferngenerieren eines Bitstrom-Sicherheitsschlüssels an dem Quellsystem für den ferngenerierten Bitstrom-Sicherheitsschlüssel; und Mittel zum Bereitstellen des ferngenerierten Bitstrom-Sicherheitsschlüssels zu dem sicheren Speicherbereich über den sicheren Kommunikationskanal.
  22. Einrichtung nach Anspruch 21, ferner umfassend: Mittel zum Fernkodieren des Bitstroms mit der Enklavenkennung an dem Quellsystem, und Mittel zum Fernverschlüsseln des Bitstroms mit dem Bitstrom-Sicherheitsschlüssel an dem Quell system.
  23. Einrichtung nach einem Beliebigen der Ansprüche 18 bis 22, wobei die konfigurierbare Vorrichtung eine umkonfigurierbare Vorrichtung umfasst.
  24. Einrichtung nach Anspruch 23, wobei die umkonfigurierbare Vorrichtung eine feldprogrammierbare Gate-Array-Vorrichtung umfasst.
DE112017007643.9T 2017-06-16 2017-06-16 Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen Pending DE112017007643T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/088551 WO2018227518A1 (en) 2017-06-16 2017-06-16 Reconfigurable device bitstream key authentication

Publications (1)

Publication Number Publication Date
DE112017007643T5 true DE112017007643T5 (de) 2020-05-20

Family

ID=64658937

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017007643.9T Pending DE112017007643T5 (de) 2017-06-16 2017-06-16 Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen

Country Status (4)

Country Link
US (1) US11494520B2 (de)
CN (1) CN110622161A (de)
DE (1) DE112017007643T5 (de)
WO (1) WO2018227518A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10250572B2 (en) * 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10673439B1 (en) * 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11212085B2 (en) * 2019-03-29 2021-12-28 Intel Corporation Technologies for accelerated hierarchical key caching in edge systems

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9930145D0 (en) * 1999-12-22 2000-02-09 Kean Thomas A Method and apparatus for secure configuration of a field programmable gate array
US20070288765A1 (en) * 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
US7058177B1 (en) * 2000-11-28 2006-06-06 Xilinx, Inc. Partially encrypted bitstream method
GB0114317D0 (en) * 2001-06-13 2001-08-01 Kean Thomas A Method of protecting intellectual property cores on field programmable gate array
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7191342B1 (en) * 2002-06-04 2007-03-13 Xilinx, Inc. Methods and circuits for allowing encrypted and unencrypted configuration data to share configuration frames
US6894527B1 (en) * 2003-05-12 2005-05-17 Xilinx, Inc. Evolved circuits for bitstream protection
US7606362B1 (en) * 2005-01-25 2009-10-20 Altera Corporation FPGA configuration bitstream encryption using modified key
US7716497B1 (en) * 2005-06-14 2010-05-11 Xilinx, Inc. Bitstream protection without key storage
US7675313B1 (en) * 2006-08-03 2010-03-09 Lattice Semiconductor Corporation Methods and systems for storing a security key using programmable fuses
US20160248588A1 (en) * 2006-09-07 2016-08-25 Altera Corporation Security ram block with multiple partitions
CN101854243B (zh) * 2010-04-30 2012-12-12 株洲南车时代电气股份有限公司 一种电路系统设计加密电路及其加密方法
US8516268B2 (en) * 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8539601B2 (en) * 2012-01-17 2013-09-17 Lockheed Martin Corporation Secure data storage and retrieval
US20140344581A1 (en) * 2013-05-16 2014-11-20 Cisco Technology, Inc. Secure Upgrades for Field Programmable Devices
US20150304736A1 (en) * 2013-06-04 2015-10-22 Reshma Lal Technologies for hardening the security of digital information on client platforms
US9672385B2 (en) * 2013-10-07 2017-06-06 Microsemi SoC Corporation Method of improving FPGA security using authorization codes
US9419954B1 (en) * 2014-06-10 2016-08-16 Lockheed Martin Corporation Storing and transmitting sensitive data
US9847980B2 (en) * 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US20170093572A1 (en) * 2015-09-25 2017-03-30 Mcafee, Inc. Systems and methods for utilizing hardware assisted protection for media content
US9940483B2 (en) * 2016-01-25 2018-04-10 Raytheon Company Firmware security interface for field programmable gate arrays
CN105955783A (zh) * 2016-05-09 2016-09-21 浙江大学 一种基于fpga控制的远程fpga逻辑代码的下载方法
US11405177B2 (en) * 2017-01-24 2022-08-02 Microsoft Technology Licensing, Llc Nested enclave identity
US11036875B2 (en) * 2017-01-24 2021-06-15 Microsoft Technology Licensing, Llc Dependent enclave binaries

Also Published As

Publication number Publication date
WO2018227518A1 (en) 2018-12-20
US20210012035A1 (en) 2021-01-14
US11494520B2 (en) 2022-11-08
CN110622161A (zh) 2019-12-27

Similar Documents

Publication Publication Date Title
DE112017007643T5 (de) Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen
DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE112018002031T5 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
DE112017002044T5 (de) Plattformattestierung und registrierung für server
DE102009013384B4 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE112016006003T5 (de) Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen
DE112016002285T5 (de) Adressvalidierung unter verwendung von signaturen
US10552638B2 (en) Integrity protection of a mandatory access control policy in an operating system using virtual machine extension root operations
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
Liu et al. Study of secure boot with a FPGA-based IoT device
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102012200613A1 (de) System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen
US10642947B2 (en) System, method and computer-accessible medium providing secure integrated circuit camouflaging for minterm protection
DE102018005101A1 (de) Feld-Systemtest-Sicherheit
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
DE102022108625A1 (de) Mehrere physische anforderungsschnittstellen für sicherheitsprozessoren
DE102020119389A1 (de) Vorrichtung und Verfahren zum sicheren Verwalten von Schlüsseln

Legal Events

Date Code Title Description
R012 Request for examination validly filed