DE102022125569A1 - Gerät zur Datenverarbeitung - Google Patents

Gerät zur Datenverarbeitung Download PDF

Info

Publication number
DE102022125569A1
DE102022125569A1 DE102022125569.7A DE102022125569A DE102022125569A1 DE 102022125569 A1 DE102022125569 A1 DE 102022125569A1 DE 102022125569 A DE102022125569 A DE 102022125569A DE 102022125569 A1 DE102022125569 A1 DE 102022125569A1
Authority
DE
Germany
Prior art keywords
processor
computer
random number
spad
client
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
DE102022125569.7A
Other languages
English (en)
Inventor
Jan Laubrock
Thomas Rotter
Julia Kölbel
Christian LAMMERS
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.)
Elmos Semiconductor SE
Original Assignee
Elmos Semiconductor SE
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 Elmos Semiconductor SE filed Critical Elmos Semiconductor SE
Publication of DE102022125569A1 publication Critical patent/DE102022125569A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0852Quantum cryptography
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Electromagnetism (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

Vorrichtung, die einen Quantenzufallszahlengenerator (400) umfasst. Der Quantenzufallszahlengenerator folgende Vorrichtungsteile umfasst eine erste SPAD-Diode (404.1) ,eine zweite SPAD-Diode (404.3), einen Lichtwellenleiter (404.2), der die erste SPAD-Diode (404.1) und die zweite SPAD-Diode (404.3) optisch miteinander koppelt, einen Verstärker (403) und/oder Filter, einen Analog-zu-Digital-Wandler (403), einen Komparator (404.2), einen Zeit-zu-Digital-Wandler (404.3), eine Entropie-Extraktionsvorrichtung (404.4), die Ausgangswerte des Zeit-zu-Digital-Wandlers (403) in erste und zweite Werte wandelt und daraus Zufallsbits erzeugt.

Description

  • Prioritäten
  • Diese Patentanmeldung nitmmt die Priorität der deutschen Patentanmeldung DE 10 2021 128 005.2 vom 27.10.2022 in Anspruch.
  • Auf den Prüfungsbescheid der Schwesteranmeldung DE 10 2021 128 004.4 weisen wir hier hin.
  • Feld der Erfindung
  • Die Erfindung richtet sich auf einen Mikrocontroller, der zumindest einen quantenprozessbasierenden Generator für echte Zufallszahlen (Englisch: Quantum Random Number Generator: QRNG) als Zufallszahlengenerator insbesondere für die Verschlüsselung umfasst.
  • Die vorliegende Erfindung bezieht sich somit auf eine Datenverarbeitungsvorrichtung mit einem quantentechnologiebasierenden Zufallszahlengenerator.
  • Hintergrund der Erfindung
  • Die Automobilindustrie und andere Industrien sehen sich zunehmend verschiedensten Piraterieangriffen ausgesetzt. Die Fälscher kopieren die Ersatzteile und Produkte der betroffenen industriellen Produzenten und nutzen in der Regel deren Markennamen. Ein weiterer Angriffspunkt ist die Datenübertragung innerhalb der Produkte und/oder die Datenübertragung zum Produkt und zurück.
  • Die Eigenschaften der Entropie gängiger Zufallszahlengeneratoren für solche Systeme sind typischerweise unzureichend. Aus dem Stand der Technik sind mit quantenprozessbasierenden Generatoren für echte Zufallszahlen (Englisch: Quantum Random Number Generator: QRNG) bekannt, die jedoch nur schwer integrierbar sind oder eine schlechte Quantenausbeute zeigen.
  • Aufgabe
  • Die Vorrichtung des unabhängigen Anspruchs löst dieses Problem. Weiterbildungen sind Gegenstand der Unteransprüche.
  • Lösung der Aufgabe
  • Die Automobilindustrie und andere Industrien sehen sich zunehmend verschiedensten Piraterieangriffen ausgesetzt. Die Fälscher kopieren die Ersatzteile und Produkte der betroffenen industriellen Produzenten und nutzen in der Regel deren Markennamen. Ein weiterer Angriffspunkt ist die Datenübertragung innerhalb der Produkte und/oder die Datenübertragung zum Produkt und zurück.
  • Die Eigenschaften der Entropie gängiger Zufallszahlengeneratoren für solche Systeme sind typischerweise unzureichend. Aus dem Stand der Technik sind mit quantenprozessbasierenden Generatoren für echte Zufallszahlen (Englisch: Quantum Random Number Generator: QRNG) bekannt, die jedoch nur schwer integrierbar sind oder eine schlechte Quantenausbeute zeigen.
  • Es ist aus dem Stand der Technik bekannt, einen integrierten Schaltkreis bereitzustellen, der neben anderen Merkmalen einen Datenprozessor enthält. Bei einigen Anwendungen muss sichergestellt werden, dass die verarbeiteten Daten, einschließlich des ausführbaren Codes, nicht von Unbefugten geändert werden können, die auf außerhalb des integrierten Schaltkreises gespeicherte Daten zugreifen, oder, falls ein solcher Zugriff erfolgt, dass er nicht unbemerkt erfolgen kann.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung bereitgestellt, die Folgendes umfasst: einen integrierten Schaltkreis, der einen Datenprozessor und einen nichtflüchtigen Speicher enthält, der mindestens einen Sicherheitscode speichert; einen ersten Speicher außerhalb des integrierten Schaltkreises, der Daten speichert, wobei die Daten in einem ersten Format kryptographisch geschützt sind; und einen zweiten Speicher außerhalb des integrierten Schaltkreises zum Speichern von Daten; wobei die Vorrichtung so angeordnet ist, dass sie Daten vom ersten Speicher über den integrierten Schaltkreis zum zweiten Speicher überträgt, damit der Datenprozessor vom zweiten Speicher aus darauf zugreifen kann; die integrierte Schaltung angeordnet ist, um während der Übertragung die aus dem ersten Speicher gelesenen Daten unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes zu validieren und, wenn die Daten validiert sind, einen kryptographischen Schutz in einem zweiten Format auf die validierten Daten unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes anzuwenden und die in dem zweiten Format geschützten Daten in dem zweiten Speicher zu speichern. Dabei nutzt die vorgeschlagene Vorrichtung einen quantentechnologiebasierenden mikrointegrierten Zufallszahlengenerator zur Verschlüsselung. Ein solcher Zufallszahlengenerator liefert eine echte Zufallszahl, da der Prozess der Zufallszahlenerzeugung auf einem nicht vorhersagbaren Quantenprozess beruht.
  • Durch die Übertragung von Daten über den integrierten Schaltkreis und die Verwendung des integrierten Schaltkreises zur Validierung von Daten und zum Schutz der übertragenen Daten wird die Sicherheit aufrechterhalten, da die Validierung innerhalb des integrierten Schaltkreises erfolgt und der Schutz angewendet wird.
  • Durch kryptografischen Schutz der Daten im ersten und im zweiten Speicher auf der Grundlage eines oder mehrerer Sicherheitscodes im nichtflüchtigen Speicher der integrierten Schaltung werden die Daten gesichert.
  • In einer Ausführungsform werden nur validierte Daten aus dem ersten Speicher verarbeitet, und wenn Daten vom Datenprozessor aus dem zweiten Speicher gelesen werden, werden nur validierte Daten aus dem zweiten Speicher verarbeitet.
  • In einer Ausführungsform ist der zweite Speicher ein Speicher mit wahlfreiem Zugriff (RAM) für den Datenprozessor, der es dem Datenprozessor ermöglicht, einzelne Wörter zu speichern und abzurufen, die individuell geschützt sind, im Gegensatz zum ersten Speicher, der ein Nur-Lese-Speicher (ROM) ist und der nur Lesezugriff auf einen Datensatz erlaubt.
  • Die Erfindung sieht auch eine Datenverarbeitungsvorrichtung vor, die Folgendes umfasst:
    • Eine integrierte Schaltung mit einem Datenprozessor, einem nichtflüchtigen Speicher, der mindestens einen Sicherheitscode speichert, einem Hash-Rechner und einer Schnittstelle an der Grenze der integrierten Schaltung; und einen Speicher außerhalb der integrierten Schaltung zum Speichern von Daten zur Verwendung durch den Prozessor, wobei der Speicher über die Schnittstelle an der Grenze der integrierten Schaltung mit dem Datenprozessor gekoppelt ist, um Wörter vom Datenprozessor zu empfangen und Wörter an den Datenprozessor zu liefern, der Datenprozessor und der Hash-Rechner sind so angeordnet, dass sie
      1. a. für jedes Wort eine Hash-Funktion in Abhängigkeit von einem in dem nichtflüchtigen Speicher gespeicherten Sicherheitscode berechnen und den Hash in Verbindung mit dem Wort speichern,
      2. b. Abrufen gespeicherter Wörter aus dem Speicher, Neuberechnen einer Hash-Funktion für jedes abgerufene Wort unter Verwendung des Sicherheitscodes und Vergleichen des neu berechneten Hash-Wertes mit dem gespeicherten Hash-Wert, und
      3. c. die Verarbeitung des abgerufenen Wortes durch die Datenverarbeitungsanlage nur dann zuzulassen, wenn die neu berechneten und gespeicherten Hashes eine vorher festgelegte Beziehung aufweisen.
  • Ausführungsformen der Erfindung werden nun beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Figurenliste
    • 1 zeigt ein schematisches Blockdiagramm eines Datenverarbeitungsgeräts in Kombination mit einem kontrollierten System;
    • 2 zeigt ein schematisches Blockdiagramm einer Schaltung zum Deaktivieren einer Testschnittstelle der Vorrichtung von 1;
    • 3 zeigt ein Diagramm, das die Überprüfung digitaler Signaturen veranschaulicht;
    • 4 zeigt ein Flussdiagramm, das die Verwendung von HASH-Funktionen beim Speichern und Abrufen von Daten aus einem DRAM der Vorrichtung von 1 veranschaulicht.
    • 5 zeigt eine vorschlagsgemäße SPAD-Diode im Querschnitt.
    • 6 zeigt die Kombination zweier vorschlagsgemäßer SPAD-Dioden im Querschnitt.
    • 7 zeigt die Kombination zweier vorschlagsgemäßer SPAD-Dioden im Querschnitt, wobei nun mehrere Isolationslagen den Lichtwellenleiter 44 ausbilden.
    • 8 zeigt die Einbindung der SPAD-Dioden und des Lichtwellenleiters in eine Auswerte- und Betriebsschaltung
    • 9 entspricht der 8, die nun um Überwachungsschaltkreise ergänzt ist.
    • 10 zeigt ein typisches Ausgangssignal der zweiten SPAD-Diode.
  • Merkmale der Erfindung
  • Die Merkmale der Erfindung fassen diese nochmals zusammen. Anwendungen der technischen Lehre können die Merkmale miteinander kombinieren, sofern diese Kombinationen nicht sachliche Widersprüche verursachen. Insofern stellen die hier vorgestellten Abhängigkeiten und Bezüge nur besonders bevorzugte, beispielhafte Ausführungsformen dar.
  • Merkmal 1: Sicherer Mikrocontroller 1 zur Steuerung von Vorrichtungen im Automobil
    • - mit einem Halbleiterkristall und
    • - mit Speicherelementen und
    • - mit zumindest einem internen Bus 2 und
    • - mit zumindest einem 8/16/32/15-Bit-Microkontrollerkern 16 und
    • - mit einer oder mehreren Datenschnittstellen und
    • - mit zumindest einem quantenprozessbasierenden Generator für echte Zufallszahlen (Englisch: Quantum Random Number Generator: QRNG) 15, und
    • - wobei die Speicherelemente mit dem internen Bus 2 verbunden sind und
    • - wobei die Datenschnittstelle mit dem internen Bus 2 verbunden ist und
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 mit dem internen Bus 2 verbunden ist und
    • - wobei der Mikrocontrollerkern 16 mit dem internen Bus 2 verbunden ist und
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 auf Anfrage des Mikrocontrollerkerns 16 eine Zufallszahl erzeugt und
    • - wobei der Mikrocontrollerkern 16 mit Hilfe eines Programms aus einem oder mehreren seiner Speicherelemente und mit Hilfe der Zufallszahl einen Schlüssel erzeugt und
    • - wobei der Mikrocontrollerkern 16 mit Hilfe eines Programms aus einem oder mehreren seiner Speicherelemente und mit Hilfe des Schlüssels Daten verschlüsselt und entschlüsselt, die er über die Datenschnittstelle mit Vorrichtungen außerhalb des sicheren Mikrocontrollers austauscht und
    • - wobei der Halbleiterkristall diese Teilvorrichtungen des sicheren Mikrocontrollers 1 einstückig umfasst,
    • - wobei diese Teilvorrichtungen des sicheren Mikrocontrollers 1 die Speicherelemente, den internen Bus 2, den zumindest einem 8/16/32/15-Bit-Microkontrollerkern 16, die Datenschnittstellen und den quantenprozessbasierenden Generator für echte Zufallszahlen (Englisch: Quantum Random Number Generator: QRNG) 15 umfassen.
  • Merkmal 2: Sicherer Mikrocontroller 1 nach Merkmal 1,
    • - wobei die Speicherelemente ein oder mehrere Schreib/Lese-Speicher RAM 3 und/oder ein oder mehrere beschreibbare nicht flüchtige Speicher, insbesondere EEPROM-Speicher 4 und/oder Flash-Speicher 4 und/oder OTP-Speicher 4, und/oder ein oder mehrere reine Lesespeicher und/oder ein oder mehrere nicht flüchtige Herstellerspeicher insbesondere ein oder mehrere Hersteller-ROMs 6 und/oder ein oder mehrere Hersteller EEPROMs und/oder ein oder mehrere Hersteller-Flash-Speicher, umfassen.
  • Merkmal 3: Sicherer Mikrocontroller 1 nach Merkmal 2,
    • - wobei das Hersteller-ROM 6 die Boot-Software umfasst.
  • Merkmal 4: Sicherer Mikrocontroller 1 nach Merkmal 2 oder 3,
    • - wobei eine Hersteller-Speicher Firewall 8 zwischen dem Hersteller-Speicher 6 und dem internen Bus 2 vorgesehen ist.
  • Merkmal 5: Sicherer Mikrocontroller 1 nach einem oder mehreren der Merkmale 1 bis 4
    • - mit einer oder mehrerer der folgenden Komponenten:
      • - einer Basistakterzeugung 21 (CLK)
      • - einer Taktgeneratorschaltung 12 und/oder
      • - einer Rücksetzschaltung 22 und/oder
      • - einer Stromversorgungs- oder einer Vcc-Schaltung 23 mit Spannungsreglern, die die Betriebsspannungen bereitstellen, und/oder
      • - einer Masseschaltung 24 und/oder
      • - einer Eingangs-/Ausgangsschaltung 25 und/oder
      • - einem oder mehreren Verarbeitungsmodulen,
    • - wobei die Verarbeitungsmodule mit dem internen Bus 2 kommunizieren und
    • - wobei die Verarbeitungsmodule eines oder mehrere der folgenden Module umfassen:
      • - ein CRC-Modul (Cyclic Redundancy Check) 11,
      • - ein Taktgeneratormodul 12,
      • - mit einem DES-Beschleuniger und/oder einem AES-Beschleuniger 7
      • - ein oder mehrere Zeitgeber-Module 13,
      • - eine Sicherheitsüberwachungs- und -steuerungsschaltung 14,
      • - eine Datenschnittstelle, insbesondere einen Universellen Asynchronen Receiver Transmitter (UART) 17.
  • Merkmal 6: Sicherer Mikrocontroller 1 nach einem oder mehreren der Merkmale 1 bis 5,
    • - mit zumindest einer ersten SPAD-Diode 44 und
    • - mit zumindest einer zweiten SPAD-Diode 45 und
    • - mit zumindest einem optischen Lichtwellenleiter 34 und
    • - mit zumindest einer Verarbeitungsschaltung und
    • - mit zumindest einer Betriebsschaltung,
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 zumindest die erste SPAD-Diode 44 als Lichtquelle für das optische Quantensignal umfasst und
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 zumindest die zweite SPAD-Diode 45 als Fotodetektor für das optische Quantensignal umfasst und
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 zumindest die Verarbeitungsschaltung umfasst und
    • - wobei der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 15 zumindest den optischen Lichtwellenleiter umfasst und
    • - wobei der zumindest eine optische Lichtwellenleiter 34 die zumindest eines erste SPAD-Diode 44 mit der zumindest einen zweiten SPAD-Diode 45 optisch koppelt und
    • - wobei die Betriebsschaltung die erste SPAD-Diode 44 so mit elektrischer Energie versorgt, dass die erste SPAD-Diode Licht 44 emittiert und
    • - wobei die Verarbeitungsschaltung das Signal der zweiten SPAD-Diode 45 erfasst und daraus die Zufallszahl bildet und dem Mikrocontrollerkern 16 zur Verfügung stellt.
  • Merkmal 7: Sicherer Mikrocontroller 1 nach Merkmal 6
    • - wobei der Halbleiterkristall eine Oberfläche 46 aufweist und
    • - wobei der Halbleiterkristall ein halbleitendes Material unterhalb seiner Oberfläche 46 aufweist und
    • - wobei die Oberfläche 46 des Halbleiterkristalls einen Metallisierungsstapel aufweist und
    • - wobei der Metallisierungsstapel eine typischerweise strukturierte und optisch transparente und elektrisch isolierendem Schicht 34 aufweist und
    • - wobei zumindest ein Teil dieser typischerweise strukturierten, transparenten und elektrisch isolierenden Schicht der Oberfläche 46 den optischen Lichtwellenleiter 34 bildet und
    • - wobei die erste SPAD-Diode 44 aus dem halbleitenden Material des Halbleitersubstrats in diesen optischen Lichtwellenleiter 34 einstrahlt und
    • - wobei der optische Lichtwellenleiter die zweite SPAD-Diode 44 so bestrahlt, dass das Licht von innerhalb des Lichtwellenleiters 34 wieder in das halbleitende Material des Halbeleitersubstrats von der Oberfläche aus eindringt und dort Vorrichtungsteile der zweiten SPAD-Diode 44 trifft.
  • Merkmal 8: Sicherer Mikrocontroller 1 nach Merkmal 6 und/oder 7,
    • - wobei die zumindest eine Betriebsschaltung die zumindest eine erste SPAD-Diode 44 zumindest zeitweise mit elektrischer Energie versorgt und
    • - wobei die zumindest eine erste SPAD-Diode 44 bei Versorgung mit ausreichender elektrischer Energie Photonen in den zumindest einen Lichtwellenleiter 34 einspeist und
    • - wobei der zumindest eine Lichtwellenleiter 34 solche Photonen in die zweite SPAD-Diode 45 einstrahlt.
  • Merkmal 9: Sicherer Mikrocontroller 1 nach einem oder mehreren der vorausgehenden Merkmale 1 bis 8,
    • - wobei eine Datenschnittstelle der eine oder mehreren Datenschnittstellen eine drahtgebundene automobile Datenbusschnittstelle ist und
    • - wobei die drahtgebundene automobile Datenbusschnittstelle insbesondere
      • - eine CAN-Datenbusschnittstelle und/oder
      • - eine CAN-FD-Datenbusschnittstelle und/oder
      • - eine Flexray-Datenbusschnittstelle und/oder
      • - eine PSl5-Datenbusschnittstelle und/oder
      • - eine DSl3-Datenbusschnittstelle und/oder
      • - eine LIN-Datenbusschnittstelle und/oder
      • - eine Ethernet-Datenbusschnittstelle und/oder
      • - eine LIN-Datenbusschnittstelle und/oder
      • - eine MELIBUS-Datenbusschnittstelle umfasst
  • Merkmal 10: Sicherer Mikrocontroller 1 nach einem oder mehreren der vorausgehenden Merkmale 1 bis 9
    • - wobei eine Datenschnittstelle der eine oder mehreren Datenschnittstellen eine drahtlose Datenbusschnittstelle ist und
    • - wobei die drahtlose Datenbusschnittstelle insbesondere
    • - eine WLAN-Schnittstelle und/oder
    • - eine Bluetooth-Schnittstelle umfasst
  • Merkmal 11: Sicherer Mikrocontroller 1 nach einem oder mehreren der vorausgehenden Merkmale 1 bis 10
    • - wobei eine Datenschnittstelle der eine oder mehreren Datenschnittstellen eine drahtgebundene Datenbusschnittstelle ist und
    • - wobei die drahtlose Datenbusschnittstelle insbesondere
    • - eine KNX-Datenbusschnittstelle und/oder
    • - eine EIB-Datenbusschnittstelle und/oder
    • - eine DALI-Datenbusschnittstelle und/oder
    • - eine PROFIBUS-Datenbusschnittstelle
    • - ist.
  • Merkmal 12: Eine Vorrichtung,
    • wobei die Vorrichtung eine integrierte Schaltung (4) mit einem ersten Prozessor (10-1) und einem nichtflüchtigen Speicher (16) aufweist und
    • wobei die Vorrichtung einen ersten Speicher aufweist,
    • wobei der nicht flüchtige Speicher zumindest mindestens einen Sicherheitscode speichert;
    • wobei der erste Speicher Daten speichert und
    • wobei die Daten in dem ersten Speicher in einem ersten Format kryptografisch geschützt sind und
    • wobei die integrierte Schaltung dazu eingerichtet ist, während einer Übertragung von Daten aus dem ersten Speicher die aus dem ersten Speicher gelesenen Daten zu validieren und,
    • wobei die Vorrichtung einen Quantenzufallszahlengenerator (28) aufweist und
    • wobei die integrierte Schaltung und der Quantenzufallszahlengenerator (28) in einem Halbleiterkristall gefertigt sind und
    • wobei der Halbleiterkristall eine Oberfläche (56) aufweist und
    • wobei der Halbleiterkristall ein halbleitendes Material unterhalb seiner Oberfläche (56) aufweist und
    • wobei die Oberfläche (56) des Halbleiterkristalls einen Metallisierungsstapel aufweist und
    • wobei der Metallisierungsstapel eine typischerweise strukturierte und optisch transparente und elektrisch isolierende Schicht (44) aufweist und
    • wobei zumindest ein Teil dieser typischerweise strukturierten, transparenten und elektrisch isolierenden Schicht (44) der Oberfläche (56) den optischen Lichtwellenleiter 44 bildet und
    • wobei die erste SPAD-Diode (54) aus dem halbleitenden Material des Halbleitersubstrats heraus Photonen (57) in diesen optischen Lichtwellenleiter (44) einstrahlt und
    • wobei der zumindest eine optische Lichtwellenleiter (44) solche Photonen (58) zur zweiten SPAD-Diode (55) transportiert und
    • wobei der optische Lichtwellenleiter (44) die zweite SPAD-Diode (55) so bestrahlt, dass das Licht (59) von innerhalb des Lichtwellenleiters (44) wieder in das halbleitende Material des Halbeleitersubstrats von der Oberfläche (56) aus eindringt und dort Vorrichtungsteile der zweiten SPAD-Diode (55) trifft und
    • wobei die erste SPAD-Diode (54) und die zweite SPAD-Diode (55) und der Lichtwellenleiter (44) Teil des Quantenzufallszahlengenerators (28) sind.
  • Merkmal 13: Vorrichtung nach Merkmal 12,
    • wobei die Vorrichtung zumindest eine Betriebsschaltung aufweist und
    • wobei die zumindest eine Betriebsschaltung die zumindest eine erste SPAD-Diode (54) zumindest zeitweise mit elektrischer Energie versorgt und
    • wobei die zumindest eine erste SPAD-Diode (54) bei Versorgung mit ausreichender elektrischer Energie Photonen (57) in den zumindest einen Lichtwellenleiter (44) einspeist und
    • wobei der zumindest eine Lichtwellenleiter (44) solche Photonen (58) zur zweiten SPAD-Diode (55) transportiert und
    • wobei der zumindest eine Lichtwellenleiter (44) solche Photonen (59) in die zweite SPAD-Diode (55) einstrahlt.
  • Merkmal 14: Vorrichtung nach Merkmal 13,
    • wobei der Quantenzufallszahlengenerator (28) zumindest die erste SPAD-Diode (54) als Lichtquelle für das optische Quantensignal umfasst und
    • wobei der Quantenzufallszahlengenerator (28) zumindest die zweite SPAD-Diode (55) als Fotodetektor für das optische Quantensignal umfasst und
    • wobei der Quantenzufallszahlengenerator (28) zumindest eine Verarbeitungsschaltung umfasst und
    • wobei der Quantenzufallszahlengenerator (28) zumindest den optischen Lichtwellenleiter (44) umfasst und
    • wobei der zumindest eine optische Lichtwellenleiter (44), die zumindest eines erste SPAD-Diode (54) mit der zumindest einen zweiten SPAD-Diode (55) optisch koppelt und
    • wobei die Betriebsschaltung die erste SPAD-Diode (54) so mit elektrischer Energieversorgt, dass die erste SPAD-Diode Licht (54) emittiert und
    • wobei die Verarbeitungsschaltung das Signal der zweiten SPAD-Diode (55) erfasst und daraus die Zufallszahl bildet und dem Datenprozessor (10) oder einem anderen Vorrichtungsteil zur Verfügung stellt.
  • Merkmal 15: Vorrichtung nach einem der Merkmale 12 bis 14,
    • wobei sich der erste Speicher außerhalb der integrierten Schaltung befindet und
    • wobei die Vorrichtung einen zweiten Speicher zum Speichern von Daten aufweist
    • und wobei sich der zweite Speicher außerhalb der integrierten Schaltung; befindet;
    • wobei die Vorrichtung so eingerichtet ist,
    • dass sie Daten vom ersten Speicher über die integrierte Schaltung zum zweiten Speicher überträgt, damit der Datenprozessor vom zweiten Speicher aus darauf zugreifen kann, und
    • wobei die integrierte Schaltung dazu eingerichtet ist,
    • während einer Übertragung von Daten aus dem ersten Speicher in den zweiten Speicher die aus dem ersten Speicher gelesenen Daten unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes zu validieren und,
    • falls die Daten validiert werden, einen kryptographischen Schutz in einem zweiten Format auf die validierten Daten unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes anzuwenden, und
    • die im zweiten Format geschützten Daten im zweiten Speicher zu speichern.
  • Merkmal 16: Vorrichtung nach einem der Merkmale 12 bis 15,
    • wobei der erste Speicher einen Festwertspeicher aufweist.
  • Merkmal 17: Vorrichtung nach einem der Merkmale 15 bis 16,
    • wobei der zweite Speicher einen Direktzugriffsspeicher aufweist.
  • Merkmal 18: Vorrichtung nach einem der Merkmale 15 bis 17,
    • wobei der kryptografische Schutz, der auf die Daten im ersten Speicher angewendet wird, sich von dem kryptografischen Schutz unterscheidet, der auf die Daten im zweiten Speicher angewendet wird.
  • Merkmal 19: Vorrichtung nach einem der Merkmale 12 bis 18,
    • wobei die integrierte Schaltung einen Speicher zum Speichern von Daten enthält, die von dem Datenprozessor verarbeitet werden sollen, und
    • wobei das Gerät so eingerichtet ist, dass es einige Daten des validierten Datensatzes im Speicher und den Rest im zweiten Speicher speichert.
  • Merkmal 20: Vorrichtung nach einem der Merkmal 15 bis 19,
    • wobei der erste Speicher Daten in einem ersten Datenformat speichert und der zweite Speicher so angeordnet ist, dass er Daten in einem zweiten, anderen Datenformat speichert.
  • Merkmal 21: Vorrichtung nach Merkmal 20,
    • wobei die im ersten Speicher gespeicherten Daten durch eine erste Authentifizierungstechnik geschützt sind und
    • wobei die Vorrichtung so eingerichtet ist, dass sie die Daten im zweiten Speicher durch eine zweite, andere Authentifizierungstechnik schützt.
  • Merkmal 22: Vorrichtung nach einem der Merkmale 15 bis 21,
    • wobei die Daten in dem ersten Speicher in mindestens einem Datensatz gespeichert sind und der oder jeder Datensatz als Satz kryptografisch geschützt ist und
    • wobei die Vorrichtung so eingerichtet ist, dass sie in dem zweiten Speicher Wörter oder Wortgruppen eines validierten Datensatzes speichert, wobei jedes Wort oder jede Wortgruppe separat kryptografisch geschützt ist.
  • Merkmal 23: Vorrichtung nach Merkmal 22, die so beschaffen ist,
    • dass sie die Wörter oder Wortgruppen aus dem zweiten Speicher liest, und
    • dass sie die gelesenen Wörter oder Wortgruppen unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes validiert und
    • dass sie die gelesenen und validierten Wörter oder Wortgruppen in dem Datenprozessor verarbeitet.
  • Merkmal 24: Vorrichtung nach Merkmal 23,
    • wobei die integrierte Schaltung einen Hash-Rechner aufweist, und
    • wobei der Datenprozessor und der Hash-Rechner so angeordnet sind,
    • dass a) für jedes Wort oder jede Gruppe von Wörtern eine Hash-Funktion in Abhängigkeit von einem in dem nichtflüchtigen Speicher gespeicherten Sicherheitscode berechnen und den Hash in Verbindung mit dem Wort oder der Gruppe in dem zweiten Speicher speichern,
    • b) Abrufen eines gespeicherten Worts oder einer Gruppe aus dem zweiten Speicher, Neuberechnen einer Hash-Funktion für das abgerufene Wort oder die abgerufene Gruppe unter Verwendung des Sicherheitscodes und Vergleichen des neu berechneten Hashs mit dem gespeicherten Hash, und
    • c) die Verarbeitung des abgerufenen Worts oder der abgerufenen Gruppe durch die Datenverarbeitungsanlage nur dann zulassen, wenn die neu berechneten und gespeicherten Hashes in einem bestimmten Verhältnis zueinanderstehen.
  • Merkmal 15: Vorrichtung nach Merkmal 24,
    • wobei der Hash-Rechner eine Schaltung in der integrierten Schaltung ist.
  • Merkmal 26 Vorrichtung nach einem der Merkmale 12 bis 25,
    • wobei der nichtflüchtige Speicher der integrierten Schaltung ein einmalig programmierbarer Speicher ist.
  • Merkmal 27 Vorrichtung nach einem der Merkmale 12 bis 26,
    • wobei der oder jeder im ersten Speicher gespeicherte Datensatz durch eine entsprechende digitale Signatur kryptographisch geschützt ist.
  • Merkmal 28: Vorrichtung nach einem der Merkmale 12 bis 28,
    • wobei der oder jeder im ersten Speicher gespeicherte Datensatz durch eine entsprechende digitale Signatur kryptographisch unter Zuhilfenahme zumindest einer Zufallszahl des Quantenzufallszahlengenerators geschützt ist.
  • Merkmal 29: Vorrichtung nach Merkmal 27 oder 28,
    • wobei in dem nichtflüchtigen Speicher der integrierten Schaltung ein Sicherheitscode gespeichert ist, den die Vorrichtung zumindest teilweise mittels zumindest einer Zufallszahl des Quantenzufallszahlgenerators (28) erzeugt hat.
  • Merkmal 30: Vorrichtung nach einem der Merkmale 27 bis 29,
    • wobei die Vorrichtung so eingerichtet ist, dass sie eine digitale Signatur des Datensatzes unter Bezugnahme auf einen oder unter Bezugnahme auf den in dem nichtflüchtigen Speicher der integrierten Schaltung gespeicherten Sicherheitscode validiert.
  • Merkmal 31: Ein Datenverarbeitungsgerät,
    • wobei das Datenverarbeitungsgerät eine integrierte Schaltung aufweist und
    • wobei die integrierte Schaltung einen Datenprozessor aufweist und
    • wobei die integrierte Schaltung einen nichtflüchtigen Speicher und
    • wobei der nichtflüchtige Speicher mindestens einen Sicherheitscode speichert und
    • wobei die integrierte Schaltung einen Hash-Rechner aufweist und
    • wobei die integrierte Schaltung eine Schnittstelle an der Grenze der integrierten Schaltung aufweist und
    • wobei die integrierte Schaltung einen Quantenzufallszahlengenerator aufweist und
    • wobei die integrierte Schaltung und der Quantenzufallszahlengenerator in einem Halbleiterkristall gefertigt sind und
    • wobei der Halbleiterkristall eine Oberfläche (56) aufweist und
    • wobei der Halbleiterkristall ein halbleitendes Material unterhalb seiner Oberfläche (56) aufweist und
    • wobei die Oberfläche (56) des Halbleiterkristalls einen Metallisierungsstapel aufweist und
    • wobei der Metallisierungsstapel eine typischerweise strukturierte und optisch transparente und elektrisch isolierende Schicht (44) aufweist und
    • wobei zumindest ein Teil dieser typischerweise strukturierten, transparenten und elektrisch isolierenden Schicht (44) der Oberfläche (46) den optischen Lichtwellenleiter (44) bildet und
    • wobei die erste SPAD-Diode (54) aus dem halbleitenden Material des Halbleitersubstrats heraus Photonen (57) in diesen optischen Lichtwellenleiter (44) einstrahlt und
    • wobei der zumindest eine Lichtwellenleiter (44) solche Photonen (58) zur zweiten SPAD-Diode 55 transportiert und
    • wobei der optische Lichtwellenleiter (44) die zweite SPAD-Diode (55) so bestrahlt, dass das Licht (59) von innerhalb des Lichtwellenleiters (44) wieder in das halbleitende Material des Halbeleitersubstrats von der Oberfläche (56) aus eindringt und dort Vorrichtungsteile der zweiten SPAD-Diode (55) trifft und
    • wobei die erste SPAD-Diode (54) und die zweite SPAD-Diode (55) und der Lichtwellenleiter (44) Teil des Quantenzufallszahlengenerators (28) sind.
  • Merkmal 32: Datenverarbeitungsgerät nach Anspruch 31,
    • wobei der Datenprozessor und/oder ein anderer Vorrichtungsteil des Datenverarbeitungsgeräts Daten unter Zuhilfenahme zumindest einer Zufallszahl des Quantenzufallszahlengenerators verschlüsselt oder entschlüsselt.
  • Merkmal 33: Datenverarbeitungsgerät nach Merkmal 31 oder 32,
    • wobei das Datenverarbeitungsgerät einen Speicher aufweist und
    • wobei der Speicher zum Speichern von Daten bei Verwendung durch den Prozessor dient und;
    • wobei der Speicher mit dem Datenprozessor gekoppelt ist, um Wörter vom Datenprozessor zu empfangen und Wörter an den Datenprozessor zu liefern.
  • Merkmal 24: Datenverarbeitungsgerät nach einem der Merkmale 31 bis 33,
    • wobei der Speicher extern von der integrierten Schaltung ist und
    • wobei der Speicher über die Schnittstelle an der Grenze der integrierten Schaltung mit dem Datenprozessor gekoppelt ist, um Wörter vom Datenprozessor zu empfangen und Wörter an den Datenprozessor zu liefern.
  • Merkmal 35 Datenverarbeitungsgerät nach einem der Ansprüche 31 bis 34,
    • wobei der Datenprozessor und der Hash-Rechner sind so angeordnet, dass sie
      1. - a) für jedes Wort eine Hash-Funktion in Abhängigkeit von einem in dem nichtflüchtigen Speicher gespeicherten Sicherheitscode berechnen und den Hash in Verbindung mit dem Wort speichern,
      2. - b) Abrufen gespeicherter Wörter aus dem Speicher, Neuberechnen einer Hash-Funktion für jedes abgerufene Wort unter Verwendung des Sicherheitscodes und Vergleichen des neu berechneten Hash-Wertes mit dem gespeicherten Hash-Wert, und
      3. - c) die Verarbeitung des abgerufenen Wortes durch die Datenverarbeitungsanlage nur dann zuzulassen, wenn die neu berechneten und gespeicherten Hashes eine vorher festgelegte Beziehung aufweisen.
  • Merkmal 36: Eine Vorrichtung, die Folgendes umfasst:
    • eine integrierte Schaltung, die ein Datenverarbeitungsmittel und ein nichtflüchtiges Speichermittel enthält, das mindestens einen Sicherheitscode speichert;
    • ein erstes Mittel, das Daten speichert, wobei die Daten in einem ersten Format zumindest durch einen Authentifizierungscode kryptografisch geschützt sind; und einen Quantenzufallszahlengenerator (28) als Teil der integrierten Schaltung,
    • wobei der Quantenzufallszahlengenerator eine erste SPAD-Diode (54) und eine zweite SPAD-Diode (55) umfasst, die über einen Lichtwellenleiter (44), der außerhalb des Halbleitersubstrats der integrierten Schaltung auf der Oberfläche der integrierten Schaltung gefertigt ist, miteinander gekoppelt sind oder gekoppelt werden können und
    • wobei die Vorrichtung zumindest eine Zufallszahl des Quantenzufallszahlengenerators (28) für eine Verschlüsselung oder Entschlüsselung eines Datums oder des Authentifizierungscodes zumindest zeitweise nutzt.
  • Merkmal 37 Eine Vorrichtung nach Merkmal 36,
    • wobei die Vorrichtung eine zweite Einrichtung, insbesondere außerhalb des integrierten Schaltkreises, zur Speicherung von Daten aufweist und
    • wobei die Vorrichtung Mittel zum Übertragen von Daten vom ersten Speicher über die integrierte Schaltung zum zweiten Speicher aufweist, damit der Datenprozessor vom zweiten Speicher aus darauf zugreifen kann, und
    • wobei die Vorrichtung Mittel zur Validierung der aus dem ersten Speicher gelesenen Daten während der Übertragung unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes aufweist und
    • wobei die Vorrichtung Mittel zum Anwenden eines kryptografischen Schutzes, der mindestens einen Authentifizierungscode umfasst, auf die validierten Daten in einem zweiten Format unter Verwendung eines in dem nichtflüchtigen Speicher gespeicherten Sicherheitscodes, wenn die Daten validiert werden, aufweist und
    • wobei die Vorrichtung Mittel zum Speichern der geschützten Daten im zweiten Speicher im zweiten Format ausweist.
  • Merkmal 38: Vorrichtung, insbesondere nach einem der Merkmale 12 bis 37,
    • wobei die Vorrichtung einen Quantenzufallszahlengenerator (400) umfasst und
    • wobei der Quantenzufallszahlengenerator folgende Vorrichtungsteile umfasst:
      • eine erste SPAD-Diode (404.1)
      • eine zweite SPAD-Diode (404.3),
      • einen Lichtwellenleiter (404.2), der die erste SPAD-Diode (404.1) und die zweite SPAD-Diode (404.3) optisch miteinander koppelt,
      • einen Verstärker (403) und/oder Filter,
      • einen Analog-zu-Digital-Wandler (403),
      • einen Komparator (404.2),
      • einen Zeit-zu-Digital-Wandler (404.3),
      • eine Entropie-Extraktionsvorrichtung (404.4), die Ausgangswerte des Zeit-zu-Digital-Wandlers (403) in erste und zweite Werte wandelt und daraus Zufallsbits erzeugt.
  • Merkmal 39: Vorrichtung nach Merkmal 27,
    • wobei die Vorrichtung einen Watchdog (404.5) umfasst, der Vorrichtungsteile des Quantenzufallszahlengenerators (400) überwacht.
  • Merkmal 40: Vorrichtung nach einem der Merkmale 38 bis 39,
    • wobei die Vorrichtung einen Spannungsmonitor (413) aufweist, der analoge Werte analoger Signale erfasst und überwacht.
  • Merkmal 41: Vorrichtung nach einem der Merkmale 38 bis 40,
    • wobei die Vorrichtung einen Pseudozufallszahlengenerator (404.6), insbesondere in Form eines linear rückgekoppelten Schieberegisters (404.6), umfasst.
  • Merkmal 42: Vorrichtung nach einem der Merkmale 38 bis 41,
    • wobei die Vorrichtung einen Signalmultiplexer aufweist, der im Falle eines Fehlers von dem Signal des Ausgangs 411 der Entropie-Extrakionsvorrichtung auf ein Signal eines Ersatz-Zufallszahlengenerators oder eines Ersatzpseudozufallszahlengenerators (404.6) umschaltet.
  • Merkmal 43: Vorrichtung nach einem der Merkmale 38 bis 42,
    • wobei der Startwert des Pseudozufallszahlengenerators (404.6) im Fehlerfall von zuvor korrekt erzeugten Zufallsbits des Quantenzufallszahlengenerators (400) abhängt.
  • Merkmal 44: Verfahren zur Erzeugung eines Zufallsbits
    • Erzeugen einer Pulsfolge mit zufälligen Abstaänden mittels zumindest zweier SPAD-Dioden, wobei die Pulsfolge Pulse einer ersten Höhenkasse (601) und einer zweiten Höhenkalsse (602) umfasst;
    • Trennen der Pulse der ersten Höhenklasse (601) von den Pulsen der zweiten Höhenklasse (602) mittels eines Schneidepegels (603, 404.1);
    • Erfassen (501) ersten Werts des zeitlichen Abstands zwischen einem ersten Puls der zweiten Höhenklasse (602) und einem zweiten Puls der zweiten Höhenklasse (602), der vom ersten Puls verschieden ist;
    • Erfassen (501) zweiten Werts des zeitlichen Abstands zwischen einem dritten Puls der zweiten Höhenklasse (602), der vom ersten Puls verschieden ist, und einem vierten Puls der zweiten Höhenklasse (602), der vom ersten Puls und vom zweiten Puls und vom dritten Puls verschieden ist.
    • Vergleichen (502) des ersten Werts mit dem zweiten Wert und
    • Ausgeben (503) eines ersten logischen Werts als ein Zufallsbit, wenn der erste Wert größer als der zweite Wert ist, und
    • Ausgeben (503) eines zweiten logischen Werts, der vom ersten logischen Wert verschieden ist, als das Zufallsbit, wenn der erste Wert kleiner als der zweite Wert ist.
  • Mermal 45: Verfahren (3700) zur Erzeugung einer Quntenzufallszahl QZ mit m Zufallsbits mit den Schritten;
    • Ezeugung (3710) eines zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) aus Einzelphotonen mittels einer oder mehrerer erster SPAD-Dioden (401.1, 54);
    • Übertragung (3720) des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels eines vom Halbleitersubstrat (49, 48) verschiedenen Lichtwellenleiters (44, 401.2) an eine oder mehrere zweite SPAD-Dioden (401.3, 55);
    • Wandlung (3730) des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) in ein Detektionssignal mittels der einen oder der mehreren zweiten SPAD-Dioden (401.3, 55);
    • Aufbereiten (3740) des Detektionssignals in ein aufbereitetes Detektionssignal;
    • Abtrennen (3750) der durch Kopplungen der Emissionen einer ersten SPAD-Diode (401.1) der einen oder der mehreren ersten SPAD-Dioden (401.1, 54) und einer zweiten SPAD-Diode (401.3, 55) der einen oder der mehreren zweiten SPAD-Dioden (401.3, 55) entstandenen Pulse des aufbereiteten Detektionssignals von den durch spontane Emission der zweiten SPAD-Diode (401.3, 55) entstandenen Pulsen des aufbereiteten Detektionssignals duch Vergleich des des aufbereiteten Detektionssignals mit einem Schwellwert (404.1);
    • Ermittlung (3760) eines ersten zeitlichen Abstands zwischen dem ersten Puls und dem zweiten Puls eines ersten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode (401.1, 54) und einer zweiten SPAD-Diode (401.3, 55) entstandenen Pulse des aufbereiteten Detektionssignals und Ermittlung eines zweiten zeitlichen Abstands zwischen einem dritten Puls und einem vierten Puls eines zweiten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode (401.1, 54) und einer zweiten SPAD-Diode (401.3, 55) entstandenen Pulse des aufbereiteten Detektionssignals;
    • Ermittlung (3670) des Bitwerts eines Zufallsbits durch Vergleich des Werts des ersten zeitlichen Abstands und des Wert des zweiten zeitlichen Abstands;
    • Sofern die Anzahl (3680) n der ermittelten Zufallsbits kleiner als die gewünschte Zahl m der Zufallsbits der zu erzeugenden Quantenzufallszahl QZ ist, Wiederholung der vorstehenden Schritte (3710 bis 3770) und Beenden des Prozesses zur Erzeugung einer Quantenzufallszahl sofern die Anzahl (3680) n der ermittelten Zufallsbits größer oder gleich der gewünschten Zahl m der Zufallsbits der zu erzeugenden Quantenzufallszahl QZ ist.
  • Vorteil
  • Der hier vorgestellte sichere Mikrocontroller weist eine verbesserte Entropie seines Zufallszahlengenerators auf. Dadurch ist die Verschlüsselung dieses sicheren Mikrocontrollers im Gegensatz zum Stand der Technik post quantum sicher. Die Vorteile sind hierauf aber nicht beschränkt.
  • Beschreibung der Figuren
  • Die Figuren zeigen beispielhaft vereinfacht wesentliche Teile der vorgeschlagenen Vorrichtungen und der Verfahren. Zur Veranschaulichung werden nun bestimmte Beispiele, die gemäß den Lehren dieser Offenbarung konstruiert wurden, unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGEN DER ERFINDUNG
  • diesem Beispiel ist das Datenverarbeitungsgerät ein Rechner 2 zur Steuerung einer Regelstrecke 26.
  • Die folgende Beschreibung beschreibt zunächst die Konfiguration des Rechners 2 und den Inhalt seiner verschiedenen Speicher, wie er nach der Herstellung verwendet werden würde.
  • Der Rechner 2 ist über einen Anschluss 3 mit einer gesteuerten Anlage 26 verbunden. Bei dem gesteuerten System kann es sich zum Beispiel um ein Sicherungsbandlaufwerk handeln. Bei einem Backup-Bandlaufwerk ist es wichtig, dass die Integrität der gesicherten Daten erhalten bleibt. Es ist daher wichtig, dass die Integrität der vom Rechner 2 verwendeten Daten und Programme gewahrt bleibt.
  • Der Rechner 2 umfasst in dem Beispiel der 1 beispielsweise eine Leiterplatte, die eine Steuervorrichtung 4, einen nichtflüchtigen Speicher 6 und einen Random Access Memory 8 umfasst. Der nichtflüchtige Speicher 6 kann jeder geeignete Typ sein, z. B. ein Flash-Speicher und andere Typen. In diesem Beispiel handelt es sich um einen Nur-Lese-Speicher, z. B. ein EEPROM. Der Speicher mit wahlfreiem Zugriff 8 kann ein beliebiger geeigneter Speicher sein, z. B. ein SRAM, aber in diesem Fall ist es ein DRAM. Der nichtflüchtige Speicher 6 und der Speicher mit wahlfreiem Zugriff 8 befinden sich außerhalb der Steuervorrichtung 4. Ein weiterer nichtflüchtiger Speicher 30 kann optional auf der Leiterplatte außerhalb des der Steuervorrichtung vorgesehen und über eine Schnittstelle 301 mit diesem verbunden sein.
  • Die Steuervorrichtung 4 ist bevorzugt eine monolithisch integrierte Schaltung, die Folgendes umfasst: einen oder mehrere Prozessoren 10-1, 10-2; einen eng gekoppelten Speicher 14, bei dem es sich um einen SRAM handeln kann; einen nicht flüchtigen Boot-ROM 16, der einen nicht veränderbaren Code enthält; eine Hashing-Engine 18; einen oder mehrere One-Time-Programmable-Speicher (OTP) 20 und 22; einen Testport 12; eine Schnittstelle 32; Schnittstellen 63, 81 und 301, die mit den externen Speichern 6, 8 und 30 gekoppelt sind; einen Quantenzufallszahlengenerator 28, der auch als QRNG (Englische Abkürzung für Quantum Random Number Generator) bezeichnet wird; und eine fest verdrahtete Schaltung zur Deaktivierung von Tests 24. Die OTP-Speicher 20 und 22 können separate Speicher oder Teile eines Speichers sein. In diesem Beispiel handelt es sich um Abschnitte eines einzigen Speichers. Die Testdeaktivierungsschaltung 24 befindet sich zwischen dem Testanschluss 12, der in diesem Beispiel ein JTAG-Anschluss ist, und dem/den Prozessor(en) 10. Die Deaktivierungsschaltung 24 reagiert auf die Daten im OTP-Speicherabschnitt 22. Die Hashing-Engine 18 verwendet Daten (einen oder mehrere Schlüssel) im OTP-Speicherabschnitt 20. Der OTP-Speicherabschnitt 20 speichert kritische Sicherheitsparameter (CSPs) einschließlich eines geheimen Schlüssels und mindestens eines öffentlichen Schlüssels. Weitere Schlüssel können im OTP-Speicherabschnitt 20 abgelegt werden. Der geheime Schlüssel ist in einer Ausführungsform der Erfindung für jede Instanz des Rechners 2 bevorzugt eindeutig.
  • Der (die) Prozessor(en) 10 führt (führen) Befehle nur aus dem eng gekoppelten Speicher 14 und aus dem DRAM 8 aus. Die Grenze der Steuervorrichtung 4 ist eine kryptografische Grenze, und die Daten und die Programmausführung innerhalb dieser Grenze werden als sicher angesehen, wie weiter unten erläutert wird. Das EEPROM 6 und das DRAM 8 (und der Speicher 30, falls vorhanden), befinden sich außerhalb der kryptografischen Grenze, und ohne Sicherheitsmaßnahmen wäre der Inhalt dieser Speicher nicht sicher. Die Schnittstellen 12, 63, 301, 32 und 81 befinden sich an der physikalischen und kryptografischen Grenze der Steuervorrichtung 4.
  • Der Inhalt des DRAM 8 und des EEPROM 6 ist durch Authentifizierungscodes kryptographisch geschützt. In diesem Beispiel sind die im DRAM verwendeten Authentifizierungscodes von einem anderen Typ als die im EEPROM verwendeten. In diesem Beispiel wird der Inhalt des EEPROM 6 zumindest durch die Verwendung digitaler Signaturen vor unentdeckter böswilliger Veränderung geschützt. Auch das Format der Daten im EEPROM unterscheidet sich von dem im DRAM.
  • Der EEPROM 6 speichert Firmware, die in einem oder mehreren Datensätzen 61 mit jeweils einer digitalen Signatur 62 angeordnet ist. Die in diesem Beispiel der Erfindung verwendeten digitalen Signaturen verwenden öffentliche und private Schlüssel. Daher werden die Einzelheiten der digitalen Signaturen nicht weiter beschrieben, da sie dem Fachmann bekannt sind. Wenn ein Datensatz aus dem EEPROM 6 gelesen wird, wird seine digitale Signatur von dem (den) Prozessor(en) 10 geprüft, und wenn sie gültig ist, wird der Datensatz von dem (den) Prozessor(en) 10 verarbeitet. Der (die) Prozessor(en) 10 führt (führen) nur gültig signierte Firmware aus.
  • Wie in 1 dargestellt, enthält das Boot-ROM 16 in einem Beispiel einen Code, der zum Lesen eines Ladeprogramms S2 aus dem EEPROM 6 verwendet wird, um weitere Datensätze aus dem EEPROM zu lesen. Ein Programmzähler (nicht dargestellt) im Prozessor 10 wird mit der Startadresse des Boot-ROMs 15 geladen. Der Prozessor führt dann den Code im Boot-ROM aus. Dieser Code kann ein Ladeprogramm aus dem EEPROM 6 lesen. Der Boot-Code im Boot-ROM gilt als sicher, da er sich innerhalb der kryptografischen Grenze befindet. Das Ladeprogramm ist durch eine digitale Signatur geschützt, die der Boot-ROM-Code S4 anhand des im ersten OTP 20 gespeicherten öffentlichen Schlüssels überprüft. Nachfolgende Datensätze werden mit Hilfe des Ladeprogramms gelesen S6. Das Ladeprogramm und die nachfolgenden Datensätze sind jeweils mit einer digitalen Signatur versehen und haben einen oder mehrere öffentliche Schlüssel eingebettet. Der Ladecode prüft S8 die Signatur des neu aus dem EEPROM 6 gelesenen Datensatzes anhand eines öffentlichen Schlüssels, der in einem zuvor geladenen oder im OTP-Speicher 20 gespeicherten Datensatz eingebettet ist.
  • Ein aus dem EEPROM 6 gelesener Datensatz kann zu viel Code/Daten der Firmware enthalten, als dass der kleine, eng gekoppelte Speicher TCM 14 auf der Steuervorrichtung 4 speichern könnte. Das TCM 14 speichert Firmware-Code/Daten, die von dem/den Prozessor(en) 10 unmittelbar benötigt werden, und der Rest des Firmware-Datensatzes wird in den DRAM 8 übertragen. Da der DRAM 8 außerhalb der kryptografischen Grenze liegt, sind die dort gespeicherten Codes/Daten durch Authentifizierungscodes kryptografisch geschützt. Wie in 3 dargestellt, werden die Daten als Datensatz aus dem EEPROM 6 gelesen und als Wörter in den DRAM 8 geschrieben bzw. aus diesem gelesen. Wenn in diesem Beispiel ein Datensatz aus dem EEPROM S20 gelesen wird, wird er wie in 4 beschrieben, validiert. Zumindest ein Teil der Daten des Satzes wird im Schritt S21 im TCM 14 gespeichert. Die restlichen Daten des Satzes werden wie folgt verarbeitet und im DRAM 8 gespeichert. Der (die) Prozessor(en) 10 arbeitet (arbeiten) mit der Hash-Engine 18 zusammen, um S22 für jedes Wort der verbleibenden Daten einen Hash-Wert zu berechnen und S24 den Hash-Wert im DRAM an einer mit dem gespeicherten Wort verbundenen Stelle zu speichern. Die Wortgröße wird entsprechend den Systembeschränkungen gewählt. Sie kann so klein wie ein Byte sein. In der Praxis kann sie 32 Bit betragen. Wenn ein Wort S26 aus dem DRAM 8 gelesen wird, berechnen der Prozessor 10 und die Hash-Engine den Hash-Wert neu und vergleichen S30 den neu berechneten Hash-Wert mit dem entsprechenden im DRAM gespeicherten Hash-Wert. Wenn die Hash-Werte eine vorbestimmte Beziehung S34 haben, z. B. gleich sind, werden die gelesenen Daten S38 von dem/den Prozessor(en) 10 verarbeitet. Wenn sie nicht die vorgegebene Beziehung aufweisen, wird die Verarbeitung S36 unterbrochen und/oder eine Fehlermeldung erzeugt und/oder die Daten/der Code ignoriert.
  • Die Speicherung von Wörtern im DRAM mit entsprechenden Authentifizierungscodes erleichtert den zufälligen Zugriff auf die Wörter durch den/die Prozessor(en) 10.
  • Die Hash-Funktion kann jede geeignete Hash-Funktion sein. Ein Beispiel ist die bekannte HMAC-Funktion. In diesem Beispiel verwendet die HASH-Funktion den im OTP-Speicher 20 gespeicherten geheimen Schlüssel. Sie könnte auch einen anderen im OTP-Speicher gespeicherten Schlüssel verwenden. Ein Beispiel für den Hash-Wert ist HMAC (addresslldatallsecret key), wobei 11 für die Verkettung steht. Der HASH-Wert hat unter Berücksichtigung der Anzahl der Bytes, die der DRAM speichern kann, mindestens so viele Bits, dass eine Duplizierung von HASH-Werten im DRAM vermieden oder zumindest verringert wird. Die Anzahl der Bits des HASH-Wertes beträgt mindestens 96 Bits und kann auch wesentlich größer sein. Der Industriestandard liegt bei 160 Bits, was die Wahrscheinlichkeit der Duplizierung von HASH-Werten auf ein ausreichend niedriges Niveau reduziert.
  • Durch die Bereitstellung der kryptografischen Grenze und den Schutz der im DRAM 8 und EEPROM 6 gespeicherten Daten wird der Rechner 2 vor unbefugtem Zugriff auf die von dem/den Prozessor(en) des Rechners im Normalbetrieb verwendeten Programme und Daten geschützt. Der JTAG-Testport könnte jedoch den Zugriff auf den/die Prozessor(en) 10 in einem Testmodus mit bekannten EMULATE- und TRACE-Routinen ermöglichen und Programmänderungen erlauben. Der JTAG-Testanschluss wird zumindest während der Herstellung für Tests benötigt und kann zur Fehlerdiagnose nach der Herstellung verwendet werden.
  • Um eine unbefugte Benutzung des Testports zu verhindern, enthält der OTP-Speicher 22 mindestens ein Sicherheitsbit, das zusammen mit der Sperrschaltung 24 den Port 12 sperrt.
  • In einem Beispiel enthält der OTP-Speicher 22 nur ein Bit. Der OTP-Speicher 22 erlaubt es, ein Bit nur einmal von einem Zustand, z. B. „0“, in den entgegengesetzten Zustand „1“ zu ändern. Während der Herstellung des Rechners 2 ist das Bit „0“, was Tests ermöglicht, und das Bit wird auf „1“ gesetzt, bevor der Rechner 2 für den Gebrauch freigegeben wird. Der JTAG-Anschluss 12 hat einen seriellen Eingang und einen seriellen Ausgang (siehe ). Die Deaktivierungsschaltung, die Teil des integrierten Schaltkreises der Steuervorrichtung 4 ist, hat ein Gatter 241, das zwischen dem seriellen Ausgang und dem/den Prozessor(en) 10 liegt, und ein Gatter 242, das zwischen dem seriellen Eingang und dem/den Prozessor(en) 10 liegt. Das Sicherheitsbit „1“ im OTP deaktiviert die Gatter 241 und 242. Da das Sicherheitsbit nicht geändert werden kann, ist der Testanschluss gegen eine Verwendung nach der Herstellung des Rechners 2 gesichert.
  • In einem anderen Beispiel hat der OTP-Speicher 22 einen Zwei-Bit-Sicherheitscode, der zunächst „00“ ist. Dies ermöglicht eine Prüfung während der Herstellung, nach der der Code auf „01“ gesetzt wird, d. h. eines der beiden Bits wird auf „1“ gesetzt. Dieser Code „01“ sperrt die Gatter 241 und 242. Tritt ein Fehler auf, wird der Rechner 2 an den Hersteller zurückgeschickt, der das andere Bit auf „1“ setzt, was den Code „11“ ergibt, der eine Prüfung über den Anschluss 12 ermöglicht. Der Zugriff auf den OTP-Speicher 22 zur Änderung des Sicherheitscodes kann durch einen geeigneten Zugriffscode erfolgen, der mit einer digitalen Signatur versehen ist, die durch einen im OTP-Speicher 20 gespeicherten Schlüssel verifiziert werden kann. Der Schlüssel ist beispielsweise der im Speicher 20 gespeicherte öffentliche Standardschlüssel. Dadurch kann der Sicherheitscode in „11“ geändert werden, was eine Prüfung über den Anschluss 12 ermöglicht. Der ursprüngliche Rechner 2 wird vom Hersteller einbehalten und der Benutzer erhält einen neuen Rechner 2.
  • In einem weiteren Beispiel kann der Sicherheitscode aus drei oder mehr Bits bestehen, die sich bei Verwendung des signierten Zugriffscodes ändern. Bei der Herstellung ist der Code „000“ und bei der Freigabe an einen Benutzer „001“. Tritt ein Fehler auf, wird der Code vom Hersteller in „011“ geändert, um einen Test zu ermöglichen. Nach dem Testen wird der Code in „111“ geändert, wodurch der Anschluss 12 gegen Benutzung gesichert wird und der Rechner 2 an den Benutzer zurückgegeben werden kann. Nur ein signierter Zugangscode, der mit einer digitalen Signatur versehen ist, die durch einen Schlüssel im OTP-Speicher 20 verifiziert wird, kann zur Änderung des im OTP-Speicher 22 gespeicherten Codes verwendet werden.
  • Sicherheitscodes von zwei oder mehr Bits ermöglichen einen Prüfpfad für die Prüfung (oder etwaige unbefugte Prüfversuche) nach der Herstellung.
  • Weitere Schnittstelle und weiteres EEPROM
  • Wie in 1 dargestellt, kann der die Steuervorrichtung 4 zusätzlich zu den Anschlüssen 3 und 12 mindestens eine Schnittstelle 32 haben. Diese Schnittstelle kann ein Ethernet-Anschluss oder ein Fibre-Channel-Anschluss sein. Ein Fibre-Channel-Anschluss im Sinne des hier vorgelegten Dokuments ist ein Datenanschluss, der einen Lichtwellenleiter oder einen anderen Wellenleiter für elektromagnetische Strahlung nutz.
  • Der Rechner 2 kann zusätzlich über einen weiteren nichtflüchtigen Speicher 30 außerhalb der Steuervorrichtung 4 verfügen, der Daten speichert, die durch einen im OTP-Speicher 20 gespeicherten Sicherheitsparameter kryptografisch geschützt sind. Der weitere nichtflüchtige Speicher 30 ist über die Schnittstelle 301 mit der Steuervorrichtung 4 gekoppelt.
  • Der weitere nichtflüchtige Speicher 30 kann ein EEPROM sein. Der weitere Speicher 30 kann weitere kritische Sicherheitsparameter außerhalb des Steuervorrichtung 4 speichern. Die weiteren Parameter sind verschlüsselt und mit digitalen Signaturen versehen, um sie sicher zu machen. Die weiteren Parameter werden mit dem geheimen Schlüssel verschlüsselt, der nur für den Steuervorrichtung 4 gilt und im OTP-Speicher 20 gespeichert ist. Die digitalen Signaturen der weiteren Parameter werden unter Verwendung des im OTP-Speicher 20 gespeicherten eindeutigen geheimen Schlüssels erstellt. Dieser geheime Schlüssel wird zur Entschlüsselung der weiteren Sicherheitsparameter und zur Überprüfung der aus dem weiteren Speicher 30 ausgelesenen digitalen Signaturen verwendet.
  • Der weitere nichtflüchtige Speicher kann andere verschlüsselte und/oder digital signierte Daten enthalten.
  • Die weiteren Sicherheitsparameter außerhalb der Steuervorrichtung 4 können verwendet werden, um die über die Schnittstelle(n) 32 übermittelten Daten und Codes zu sichern.
  • Herstellung des Rechners 2.
  • Während der Herstellung des Rechners 2wird der Boot-Code im Boot-ROM 16 bevorzugt fest kodiert; das Ladeprogramm und andere Codes/Daten werden im EEPROM mit digitalen Signaturen auf der Grundlage der öffentlichen und privaten Schlüssel gespeichert; und mindestens ein öffentlicher Schlüssel wird im OTP-Speicher 20 gespeichert.
  • Der geheime Schlüssel wird erst dann im OTP 20 gespeichert, wenn der Sicherheitscode im OTP 22 eingestellt ist und der Testanschluss 12 gesperrt wurde. Die Steuervorrichtung 4 enthält einen Quantenzufallszahlengenerator QRNG 28. Die im eng gekoppelten Speicher 14 oder im DRAM 8 gespeicherte Firmware liest eine Zufallszahl von z. B. 256 Bit aus dem Quantenzufallszahlengenerator 28 und speichert sie im OTP 20 als geheimen Schlüssel, ohne die Steuervorrichtung 4 zu verlassen. Dies geschieht nach der Deaktivierung des Prüfanschlusses, um den Zugriff auf den geheimen Schlüssel selbst für Personen zu verhindern, die Zugang zum Herstellungsprozess haben.
  • Die Hash-Funktion kann jede geeignete Hash-Funktion sein und ist nicht auf das oben beschriebene Beispiel von HMAC beschränkt.
  • Der auf dem Chip befindliche Quantenzufallszahlengenerator 28 QRNG könnte in der integrierten Schaltung weggelassen werden und stattdessen ein außerhalb des Chips befindlicher Quantenzufallszahlengenerator QRNG verwendet werden, um den geheimen Schlüssel während des Herstellungsprozesses zu erzeugen. Ein Quantenzufallszahlengenerator QRNG auf dem Chip ist jedoch sicherer.
  • Die im EEPROM 6 gespeicherte Firmware ist kryptografisch geschützt, in diesem Beispiel durch digitale Signaturen. Bei der Herstellung wird die Firmware zunächst kompiliert. Anschließend wird sie mit einem geheimen privaten Schlüssel eines Private-Public-Key-Systems digital signiert. Der öffentliche Schlüssel wird im OTP-Speicher 20 gespeichert, damit die Signatur überprüft werden kann. Die signierte Firmware wird im EEPROM 6 gespeichert. Die digitalen Signaturen können erstellt werden, indem die kompilierte Firmware während des Herstellungsprozesses an einen sicheren Signaturgenerator übermittelt wird. Die signierte Firmware kann über eine Kommunikationsverbindung, z. B. das Internet, in das EEPROM 6 heruntergeladen werden.
  • Anstelle eines EEPROMs kann der nichtflüchtige Speicher 6 ein beliebiger anderer geeigneter Baustein sein, beispielsweise ein FLASH-Speicher.
  • Der weitere nichtflüchtige Speicher 30 kann ein serieller EEPROM sein.
  • Der einmalig programmierbare Speicher OTP 22, der den Sicherheitscode enthält, kann durch einen reprogrammierbaren nichtflüchtigen Speicher ersetzt und der Sicherheitscode mit Hilfe signierter Firmware geändert werden. Ein einmalig programmierbarer Speicher 22 ist sicherer, da seine Programmierung unumkehrbar ist.
  • Der DRAM kann weiter geschützt werden, indem der Zugang zum DRAM physisch sehr schwierig und im Falle eines Versuchs nachweisbar gemacht wird. Beispielsweise können die Verbindungen zwischen dem DRAM und der Steuervorrichtung 4 in Schichten der Leiterplatte 2 vergraben oder auf andere Weise gegen physisches Abtasten geschützt sein.
  • Der gesamte Rechner 2 kann in einem manipulationssicheren Gehäuse mit manipulationssicheren Dichtungen untergebracht werden.
  • Der sichere Rechner 2 weist bevorzugt zumindest eine erste SPAD-Diode 54 und zumindest eine zweite SPAD-Diode 55 und zumindest einen optischen Lichtwellenleiter 44 auf. Der Quantenzufallszahlengenerator 28 ist bevorzugt ein quantenprozessbasierender Generator für echte Zufallszahlen (QRNG) 28. Der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 28 umfasst bevorzugt eine erste SPAD-Diode 44 als Lichtquelle für ein optisches Quantensignal und eine zweite SPAD-Diode 45 als Fotodetektor für das optische Quantensignal. Des Weiteren umfasst der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 18 bevorzugt zumindest die Verarbeitungsschaltung und den optische Lichtwellenleiter 44. Bevorzugt koppelt der zumindest eine optische Lichtwellenleiter 44 die zumindest eine erste SPAD-Diode 54 mit der zumindest einen zweiten SPAD-Diode 55 optisch. Eine Betriebsschaltung versorgt die erste SPAD-Diode 54 in der Art mit elektrischer Energie, dass die erste SPAD-Diode 54 Licht emittiert. Die Abstrahlung von Licht erfordert dabei, dass die Betriebsspannung eine ausreichende elektrische Vorspannung der ersten SPAD-Diode 54 (404.1) zur Verfügung stellt. Eine Verarbeitungsschaltung (402, 403, 404) erfasst das Signal der zweiten SPAD-Diode 55 (404.3) und bildet daraus die Zufallszahl. Die Verarbeitungsschaltung stellt dann bevorzugt die so gebildete Zufallszahl einem oder mehreren der einen oder mehreren Prozessoren 10 über einen Datenbus zur Verfügung.
  • Bevorzugt weist der Halbleiterkristall der Steuervorrichtung 4 des Rechners 2 eine Oberfläche 56 auf. Typischerweise weist der Halbleiterkristall ein halbleitendes Material unterhalb seiner Oberfläche 56 auf. Insbesondere bei der Anwendung konventioneller Halbleiterschaltungsherstellprozesse, wie CMOS-Prozessen, Bipolarprozessen und BiCMOS-Prozessen weist die Oberfläche 56 des Halbleiterkristalls typischerweise einen Metallisierungsstapel als strukturierten Metallschichten und elektrischen Isolationsschichten auf. Die strukturierten Metallschichten bilden dabei typischerweise die Leiterbahnen, die durch die Isolationsschichten voneinander elektrisch getrennt sind. Somit weist der Metallisierungsstapel eine typischerweise strukturierte und optisch transparente und elektrisch isolierende Schicht 44 auf. Zumindest ein Teil dieser typischerweise strukturierten, transparenten und elektrisch isolierenden Schicht 44 der Oberfläche 56 bildet bevorzugt den optischen Lichtwellenleiter 44. Die erste SPAD-Diode 54 strahlt typischerweise aus dem halbleitenden Material des Halbleitersubstrats in diesen optischen Lichtwellenleiter 44 Licht 57 ein. D. h. in der Regel strahlt die erste SPAD-Diode 54 im Gegensatz zum Stand der Technik senkrecht zur Oberfläche 56 im Wesentlichen nach oben und nicht zur Seite in das Halbleitersubstrat des Halbleiterkristalls hinein, das eine hohe Dämpfung aufweist. Trotzdem ist die Abstrahlung der Photonen 57 der ersten SPAD-Diode 54 im Lichtwellenleiter 44 nicht gerichtet. Insbesondere ist die Ausstrahlung über das Substrat 48, 49 sehr gedämpft, da sichtbares Licht eine sehr hohe Absorption besitzt. Hierdurch kann die Vorrichtung mehr Photonen der ersten SPAD-Diode 54 direkt mit der zweiten SPAD-Diode 55 koppeln. Der optische Lichtwellenleiter 44 transportiert diese Photonen 57, 58, 59 der ersten SPAD-Diode 54 im Lichtwellenleiter 44 im Vergleich zum Stand der Technik praktisch verlustfrei zur zweiten SPAD-Diode 55. Der Lichtwellenleiter 44 bestrahlt mit diesen Photonen 57, 58, 59 der ersten SPAD-Diode 54 die zweite SPAD-Diode 55 in der Art, dass das Licht 59 von innerhalb des Lichtwellenleiters 44 wieder in das halbleitende Material des Halbeleitersubstrats von der Oberfläche 56 aus eindringt und dort Vorrichtungsteile der zweiten SPAD-Diode 55 trifft. Die zweite SPAD-Diode 55 erzeugt dann in Abhängigkeit von der Bestrahlung mit diesen Photonen 59 ein Empfangssignal.
  • Typischerweise versorgt zumindest eine Betriebsschaltung die zumindest eine erste SPAD-Diode 54 zumindest zeitweise mit elektrischer Energie. Die zumindest eine erste SPAD-Diode 54 speist dann bei Versorgung mit ausreichender elektrischer Energie Photonen 57 in den zumindest einen Lichtwellenleiter 44 ein. Der Lichtwellenleiter 44 transportiert diese Photonen 57, 58, 59 dann weiter. Der zumindest eine Lichtwellenleiter 44 strahlt dann die transportierten Photonen 58 als im Wesentlichen senkrecht sich bewegende Photonen 59 in die zweite SPAD-Diode 55 ein. Da dieser Transport der Photonen von der ersten SPAD-Diode 54 zur zweiten SPAD-Diode 55 aufgrund der geringen Dämpfung im Lichtwellenleiter 44 wesentlich weniger Photonen verliert als in der Konstruktion aus dem Stand der Technik, die das stark absorbierende Halbleitersubstrat 49, 49 benutzt, ist der Quantenwirkungsgrad massiv höher. Damit steigt die Bit-Rate, mit der die Vorrichtung Zufallszahlen erzeugen kann, an. Daher reicht bei der hier vorgestellten Konstruktion bereits ein Paar aus einer einzigen ersten SPAD-Diode 54 und einer einzigen zweiten SPAD-Diode 55 aus. Der Stand der Technik verwendet immer mehrere SPAD-Dioden.
  • In einer weiteren Weiterbildung des vorschlagsgemäßen, sicheren Rechners 2 ist zumindest eine Datenschnittstelle der einen oder mehreren Datenschnittstellen 64 eine drahtgebundene automobile Datenbusschnittstelle 64. In dem Fall kann die drahtgebundene automobile Datenbusschnittstelle 64 beispielsweise eine CAN-Datenbusschnittstelle oder eine CAN-FD-Datenbusschnittstelle oder eine Flexray-Datenbusschnittstelle oder eine PSI5-Datenbusschnittstelle oder eine DSI3-Datenbusschnittstelle oder eine LIN-Datenbusschnittstelle oder eine Ethernet-Datenbusschnittstelle oder eine SPI-Datenbusschnittstelle oder eine MELIBUS-Datenbusschnittstelle sein.
  • In einer weiteren Weiterbildung des vorschlagsgemäßen sicheren Rechner 2 ist zumindest eine Datenschnittstelle 64 der einen oder mehreren Datenschnittstellen 64 eine drahtlose Datenbusschnittstelle. Die drahtlose Datenbusschnittstelle 64 kann beispielsweise eine WLAN-Schnittstelle oder eine Bluetooth-Schnittstelle sein.
  • In einer weiteren Weiterbildung des vorschlagsgemäßen sicheren Rechners 2 ist zumindest eine Datenschnittstelle 64 der einen oder mehreren Datenschnittstellen 64 eine drahtgebundene Datenbusschnittstelle 64. De drahtlose Datenbusschnittstelle 64 kann beispielsweise eine KNX-Datenbusschnittstelle oder eine EIB-Datenbusschnittstelle oder eine DALI-Datenbusschnittstelle oder eine PROFIBUS-Datenbusschnittstelle sein.
  • Obwohl die Erfindung beispielhaft unter Bezugnahme auf eine Steuervorrichtung 4 beschrieben wurde, ist sie nicht auf eine Steuervorrichtung 4 beschränkt. Die Erfindung kann auch auf andere Arten von Datenprozessoren mit integrierter Schaltung angewendet werden.
  • Die Ausführungsformen der Erfindung speichern Daten außerhalb des integrierten Schaltkreises. Die Ausführungsformen der Erfindung stellen sicher, dass die zu verarbeitenden Daten, einschließlich des ausführbaren Codes, nicht von Unbefugten geändert werden können, die auf die außerhalb des integrierten Schaltkreises gespeicherten Daten zugreifen, oder, falls ein solcher Zugriff erfolgt, sicherstellen, dass sie nicht unbemerkt geändert werden können. Die Sicherheit wird durch Sicherheitsdaten gewährleistet, und die Sicherheitsdaten selbst sind sicher, weil sie innerhalb der integrierten Schaltung gespeichert und vor unbefugtem Zugriff geschützt sind.
  • Die obige Beschreibung erhebt keinen Anspruch auf Vollständigkeit und beschränkt diese Offenbarung nicht auf die gezeigten Beispiele. Andere Variationen zu den offengelegten Beispielen können von denjenigen, die über gewöhnliche Fachkenntnisse auf dem Gebiet verfügen, anhand der Zeichnungen, der Offenbarung und der Ansprüche verstanden und ausgeführt werden. Die unbestimmten Artikel „ein“ oder „eine“ und dessen Flexionen schließen eine Vielzahl nicht aus, während die Erwähnung einer bestimmten Anzahl von Elementen nicht die Möglichkeit ausschließt, dass mehr oder weniger Elemente vorhanden sind. Eine einzige Einheit kann die Funktionen mehrerer in der Offenbarung genannter Elemente erfüllen, und umgekehrt können mehrere Elemente die Funktion einer Einheit erfüllen. Zahlreiche Alternativen, Äquivalente, Variationen und Kombinationen sind möglich, ohne dass der Anwendungsbereich der vorliegenden Offenbarung verlassen wird.
  • Soweit nichts anders angegeben ist, können sämtliche Merkmale der vorliegenden Erfindung frei miteinander kombiniert werden. Dies betrifft die gesamte hier vorgelegte Schrift. Auch die in der Figurenbeschreibung beschriebenen Merkmale können, soweit nichts Anderes angegeben ist, als Merkmale der Erfindung frei mit den übrigen Merkmalen kombiniert werden. Eine Beschränkung einzelner Merkmale der Ausführungsbeispiele auf die Kombination mit anderen Merkmalen der Ausführungsbeispiele ist dabei ausdrücklich nicht vorgesehen. Außerdem können gegenständliche Merkmale der Vorrichtung umformuliert auch als Verfahrensmerkmale Verwendung finden und Verfahrensmerkmale umformuliert als gegenständliche Merkmale der Vorrichtung. Eine solche Umformulierung ist somit automatisch mit offenbart.
  • In der vorausgehenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen verwiesen. Die Beispiele in der Beschreibung und den Zeichnungen sollten als illustrativ betrachtet werden und sind nicht als einschränkend für das beschriebene spezifische Beispiel oder Element zu betrachten. Aus der vorausgehenden Beschreibung und/oder den Zeichnungen und/oder den Ansprüchen können durch Abänderung, Kombination oder Variation bestimmter Elemente mehrere Beispiele abgeleitet werden. Darüber hinaus können Beispiele oder Elemente, die nicht wörtlich beschrieben sind, von einer fachkundigen Person aus der Beschreibung und/oder den Zeichnungen abgeleitet werden.
  • Figur 6
  • Der sichere Rechner 2 weist bevorzugt zumindest eine erste SPAD-Diode 54 und zumindest eine zweite SPAD-Diode 55 und zumindest einen optischen Lichtwellenleiter 44 auf. Der Quantenzufallszahlengenerator 28 ist bevorzugt ein quantenprozessbasierender Generator für echte Zufallszahlen (QRNG) 28. Der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 28 umfasst bevorzugt eine erste SPAD-Diode 54 als Lichtquelle für ein optisches Quantensignal und eine zweite SPAD-Diode 55 als Fotodetektor für das optische Quantensignal. Des Weiteren umfasst der quantenprozessbasierende Generator für echte Zufallszahlen (QRNG) 28 bevorzugt zumindest die Verarbeitungsschaltung und den optische Lichtwellenleiter 44. Bevorzugt koppelt der zumindest eine optische Lichtwellenleiter 44 die zumindest eine erste SPAD-Diode 54 mit der zumindest einen zweiten SPAD-Diode 55 optisch. Eine Betriebsschaltung versorgt die erste SPAD-Diode 54 in der Art mit elektrischer Energie, dass die erste SPAD-Diode 54 Licht emittiert. Die Abstrahlung von Licht erfordert dabei, dass die Betriebsspannung eine ausreichende elektrische Vorspannung der ersten SPAD-Diode 54 (404.1) zur Verfügung stellt. Eine Verarbeitungsschaltung (402, 403, 404) erfasst das Signal der zweiten SPAD-Diode 55 (404.3) und bildet daraus die Zufallszahl. Die Verarbeitungsschaltung stellt dann bevorzugt die so gebildete Zufallszahl einem oder mehreren der einen oder mehreren Prozessoren 10 über einen Datenbus zur Verfügung.
  • Bevorzugt weist der Halbleiterkristall der Steuervorrichtung 4 des Rechners 2 eine Oberfläche 56 auf. Typischerweise weist der Halbleiterkristall ein halbleitendes Material unterhalb seiner Oberfläche 56 auf. Insbesondere bei der Anwendung konventioneller Halbleiterschaltungsherstellprozesse, wie CMOS-Prozessen, Bipolarprozessen und BiCMOS-Prozessen weist die Oberfläche 56 des Halbleiterkristalls typischerweise einen Metallisierungsstapel als strukturierten Metallschichten und elektrischen Isolationsschichten auf. Die strukturierten Metallschichten bilden dabei typischerweise die Leiterbahnen, die durch die Isolationsschichten voneinander elektrisch getrennt sind. Somit weist der Metallisierungsstapel eine typischerweise strukturierte und optisch transparente und elektrisch isolierende Schicht 44 auf. Zumindest ein Teil dieser typischerweise strukturierten, transparenten und elektrisch isolierenden Schicht 44 der Oberfläche 56 bildet bevorzugt den optischen Lichtwellenleiter 44. Die erste SPAD-Diode 54 strahlt typischerweise aus dem halbleitenden Material des Halbleitersubstrats in diesen optischen Lichtwellenleiter 44 Licht 57 ein. D. h. in der Regel strahlt die erste SPAD-Diode 54 im Gegensatz zum Stand der Technik senkrecht zur Oberfläche 56 im Wesentlichen nach oben und nicht zur Seite in das Halbleitersubstrat des Halbleiterkristalls hinein, das eine hohe Dämpfung aufweist. Trotzdem ist die Abstrahlung der Photonen 57 der ersten SPAD-Diode 54 im Lichtwellenleiter 44 nicht gerichtet. Insbesondere ist die Ausstrahlung über das Substrat 48, 49 sehr gedämpft, da sichtbares Licht eine sehr hohe Absorption besitzt. Hierdurch kann die Vorrichtung mehr Photonen der ersten SPAD-Diode 54 direkt mit der zweiten SPAD-Diode 55 koppeln. Der optische Lichtwellenleiter 44 transportiert diese Photonen 57, 58, 59 der ersten SPAD-Diode 54 im Lichtwellenleiter 44 im Vergleich zum Stand der Technik praktisch verlustfrei zur zweiten SPAD-Diode 55. Der Lichtwellenleiter 44 bestrahlt mit diesen Photonen 57, 58, 59 der ersten SPAD-Diode 54 die zweite SPAD-Diode 55 in der Art, dass das Licht 59 von innerhalb des Lichtwellenleiters 44 wieder in das halbleitende Material des Halbeleitersubstrats von der Oberfläche 56 aus eindringt und dort Vorrichtungsteile der zweiten SPAD-Diode 55 trifft. Die zweite SPAD-Diode 55 erzeugt dann in Abhängigkeit von der Bestrahlung mit diesen Photonen 59 ein Empfangssignal.
  • Typischerweise versorgt zumindest eine Betriebsschaltung die zumindest eine erste SPAD-Diode 54 zumindest zeitweise mit elektrischer Energie. Die zumindest eine erste SPAD-Diode 54 speist dann bei Versorgung mit ausreichender elektrischer Energie Photonen 57 in den zumindest einen Lichtwellenleiter 44 ein. Der Lichtwellenleiter 44 transportiert diese Photonen 57, 58, 59 dann weiter. Der zumindest eine Lichtwellenleiter 44 strahlt dann die transportierten Photonen 58 als im Wesentlichen senkrecht sich bewegende Photonen 59 in die zweite SPAD-Diode 55 ein. Da dieser Transport der Photonen von der ersten SPAD-Diode 54 zur zweiten SPAD-Diode 55 aufgrund der geringen Dämpfung im Lichtwellenleiter 44 wesentlich weniger Photonen verliert als in der Konstruktion aus dem Stand der Technik, die das stark absorbierende Halbleitersubstrat 48, 49 benutzt, ist der Quantenwirkungsgrad massiv höher. Damit steigt die Bit-Rate, mit der die Vorrichtung Zufallszahlen erzeugen kann, an. Daher reicht bei der hier vorgestellten Konstruktion bereits ein Paar aus einer einzigen ersten SPAD-Diode 54 und einer einzigen zweiten SPAD-Diode 55 aus. Der Stand der Technik verwendet immer mehrere SPAD-Dioden.
  • Figur 7
  • 7 entspricht im Wesentlichen der 39. Im Unterschied zur 39 ist der Halbleiterkristall 48 und die epitaktische Schicht 49 nun mit einer ersten optisch transparenten Isolatoschicht, beispielsweise einer Oxidschicht 143 bedeckt. Die Durchkontaktierungen 140 sind mit Metall elektrisch leitend gefüllt. Die Metallisierungsebene 1 mit den elektrischen Leitungen der ersten Verdrahtungsebene 141 kontaktieren diese Durchkontaktierungen 140. Auf dieser ersten Isolationsschicht 142 und der ersten Metallisierungslage mit der ersten Verdrahtungsebene 141 ist eine zweite optisch transparente Isolationsschicht 144, vorzugsweise ebenfalls in Form einer Oxidschicht, aufgebracht. Auch diese kann durch Durchkontaktierungen, die in der 7 nicht eingezeichnet sind, durchkontaktiert sein, sodass Leitungen der ersten metallisierungebene mit Leitungen der zweiten Metallisierungsebene verbunden werden können. Die gestrichelt eingezeichnete Grenzfläche 145 zwischen der ersten optisch transparente Isolationsschicht 143 und der zweiten optisch transparente Isolationsschicht 144 ist im Wesentlichen ebenfalls optisch transparent und reflektiert und/oder absorbiert das Licht der ersten SPAD-Diode 55 im Wesentlichen bevorzugt nicht. Die erste optisch transparente Isolationsschicht 143 und die zweite optisch transparente Isolationsschicht 144 bilden im Wesenlichen den optischen Wellneleiter im Berich der ersten SPAD-Diode 54 und der zweiten SPAD-Diode 55. Im optischen Pfad zwischen der ersten SPAD-Diode 54 und der zweiten SPAD-Diode 55 befinden sich tvorzugsweise keine Durchkontaktierungen 140 und keine Metallleitungen 141, sodass das Licht der ersten SPAD-Diode 54 ungehindert die zweite SPAD-Diode 55 erreichen kann. Ein Metalldeckel 142 verhindert den Austritt von Photonen nach oben und spiegelt diese vorzugsweise wieder in den Lichtwellenleiter 44 zurück. Die Durchkontaktierungen 140 und die Metallleitungen der ersten Metallisierungsebene 141 verhindern in ähnlicher Weise, dass Licht aus dem Lichtwellenleiter in der horizontalen verloren geht.
  • Figur 8
  • 8 zeigt schematisch das vereinfachte Blockdiagram eines quantenbasierten Zufallsgenerators 400 wie er dem Vorschlag dieses Dokuments entspricht.
  • Ein bevorzugt gemeinsamer Takt taktet bevorzugt die digitalen Schaltungen der beispielhaft in der 8 dargestellten Vorrichtung. Der Quantenzufallszahlengenerator 60, 4100 der 41 ist bevorzugt Teil der Steuervorrichtung 4. Der Aufbau beinhaltet eine Entropie Quelle 401, vorzugsweise einen breitbandigen 40 dB Hochfrequenzverstärkers 402 oder dergleichen, einem Analog-Digital Wandler 403, der ggf. auch nur ein Inverter oder dergleichen sein kann. In Experimente hat sich ein Analog-zu-Digital-Wandler 403 mit einer Auflösung von 14 Bit und einer Abtastrate von 125 MS/s und mit einer Auswertevorrichtung 404, die im Wesentlichen Teilvorrichtungen der Steuervorrichtung 4 umfasst.
  • Die Entropie Quelle 401 des Quantenzufallszahlengenerators 400 umfasst typischerweise ein Array aus Single Photon Avalanche Dioden (SPAD). Der Quantenzufallszahlengenerator 400 betreibt die SPADs vorzugsweise im sogenannten Geiger Modus mit einer Versorgungsspannung über der Durchbruchsspannung. Zusätzlich ist für jede Diode vorzugsweise ein Quenching-Widerstand 401.4 in Reihe geschaltet. Der Quenching-Widerstand verhindert eine thermische Zerstörung der jeweiligen SPAD-Diode bei einer ausgelösten Ladungsträgerlawine. Der jeweilige Quenching-Widerstand 401.4 der Figur dient hier gleichzeitig als Shunt-Widerstand für die Erfassung des Diodenstromes durch die SPAD-Dioden 401.3. Das Stromsignal der zweiten Single Photon Avalanche Dioden 401.3 wird über einen Shunt-Widerstand 401.4 für diese zweite SPAD-Diode 401.3 gemessen. Ein dem Beispiel der 41 bildet der Vorwiderstand zur Begrenzung der Stromstärke durch die jeweiligen SPAD-Dioden den Shunt-Widerstand Shunt-Widerstand 401.4. Der Shunt-Widerstand Shunt-Widerstand 401.4 kann aber unabhängig vom Quenching-Widerstand 401.4 in die Zuleitung der jeweiligen SPAD-Diode 401.1, 401.3 eingefügt sein. in beispielhaftes Array aus SPAD-Dioden umfasst in dem Beispiel der 41 beispielhaft vier aktive erste SPAD-Dioden 401.1 und zwölf passive zweite SPAD-Dioden 401.3. Die beispielhaft vier aktiven, ersten SPAD-Dioden 401.1 und zwölf passiven, zweite SPAD-Dioden 401.3 sind bevorzugt über einen optischen Wellenleiter 401.2 gekoppelt. Die aktiven ersten SPAD-Dioden 401.1 emittieren spontan und zufällig einzelne Lichtpulse. Sie entsprechen der ersten SPAD-Diode 54 der 6 und 7. Die aktiven ersten SPAD-Dioden 401.1, 54 befinden sich bevorzugt im Inneren des Arrays aus ersten und zweiten SPAD-Dioden 401.1 und 401.3. Die vorschlagsgemäße Vorrichtung versorgt die aktiven ersten SPAD-Dioden 401.1 mit einer erhöhten Versorgungsspannung betreibt daher die aktiven, ersten SPAD-Dioden 401.1 vorzugsweise weit oberhalb der Durchbruchspannung der ersten SPAD-Dioden 401.1, 54. Dies erhöht die Dunkelzählrate, was zu einer höheren Anzahl an spontan emittierten Photonen 3957 führt. Der optische Wellenleiter 401.2, 44 leitet einige Photonen 58 der emittierten Photonen 57 an die passiven, zweiten SPAD-Dioden 401.3, 55 weiter. Der optische Wellenleiter 401.2, 44 entspricht dem Lichtwellenleiter 44 der 6 und 7. Die passiven, zweiten SPAD-Dioden 401.3 entsprechen der zweiten SPAD-Diode 55 der 6 und 7. Die vorschlagsgemäße Vorrichtung versorgt die passiven, zweiten SPAD-Dioden 401.3, 55 mit einer erhöhten Versorgungsspannung. Die vorschlagsgemäße Vorrichtung betreibt die passiven, zweiten SPAD-Dioden 401.3, 55 daher nur knapp über der Durchbruchsspannung. Bevorzugt sind die passiven, zweiten SPAD-Dioden 401.3, 55 als Ring um die aktiven, ersten SPAD-Dioden 401.2, 54 angeordnet. Die passiven, zweiten SPAD-Dioden 401.3, 55 detektieren zumindest einen Teil der über den Lichtwellenleiter 401.2, 44 ankommenden Photonen 59. Die passiven, zweiten SPAD-Dioden 401.3, 55 erzeugen in Abhängigkeit von den ankommenden Photonen 59 einen Stromfluss über einen Shunt-Widerstand, der den zweiten SPAD-Dioden 401.3, 55 zugeordnet ist. Die Entropiequelle 401 umfasst bevorzugt die Shunt-Widerstände, Betriebsvorrichtung der SPAD-Dioden, die SPAD-Dioden 401.1 und 401.3 und den Lichtwellenleiter 401.2. Ein Spannungssignal 405 der Entropie Quelle 401 verbindet vorzugsweise die Entropie Quelle 401 mit einem bevorzugten, beispielhaften, breitbandigen 40 dB Hochfrequenzverstärker 402. Vorzugsweise entspricht das Spannungssignal dem Spannungsabfall über den Quenching-Widerstand 401.4, der in dem Beispiel der Figur als Shunt-Widerstand 401.4 fungiert. Der vorgeschlagene, beispielhafte Hochfrequenzverstärker 402 besitzt bevorzugt und beispielhaft eine Bandbreite von 30 bis 4000 MHz und bevorzugt einen 1-dB-Kompressionspunkt von 20 dBm. Der Spannungshub des Spannungssignals 405 der Entropie Quelle 401 bewegt sich typischerweise im Sub-Millivoltbereich. Der beispielhaft vorgeschlagene Hochfrequenzverstärker 402 verstärkt beispielsweise den Spannungshub dieses Spannungssignals 405 der Entropie Quelle 401 auf beispielhafte 50 bis 150 mV.
  • Ein Verstärkerausgangssignal 406 des Hochfrequenzverstärkers 402 verbindet beispielsweise den beispielhaften Hochfrequenzverstärker 402 mit einer beispielhaften Auswertevorrichtung 404, die im Wesentlichen Teilvorrichtungen der Steuervorrichtung 4 der Sicherung 1 umfasst. Die Auswertevorrichtung 404 der 8 ist nur eine von vielen verschiedenen Realisierungsmöglichkeiten der in diesem Dokument vorgestellten technischen Lehre. Die Auswertevorrichtung 404 einen Microcontroller. Bei dem Microcontroller handelt es sich bevorzugt um einen Zynq 7010 von der Firma Xilinx mit einem Dual-Core ARM Cortex-A9 MPCore handeln. Dieser kann beispielsweise auf einem STEMlab 125-14 Messboard 404 der Firma RedPitaya verbaut sein, das im Folgenden als Auswerteschaltung 404 bezeichnet wird. Das FPGA-Messboard 404 Die Auswerteschaltung 401 verfügt in den Beispielen der 41 und 42 über einen beispielhaften 14 Bit Analog-Digital-Wandler (ADC) 403, 570 mit einer beispielhaften Abtastrate von 125 Mega-Samples/s und einer beispielhaften Bandbreite von 50 MHz. Es hat sich bei Ausarbeitung gezeigt, dass geringere Bitbreiten und geringere Abtastraten möglich sind. Ggf. ist eine analoge Vorverarbeitung vor der Digitalisierung durch den Analog-zu-Digital-Wandler 403 mittels Schaltungen zur Pulsverbreiterung zweckmäßig. Das verstärkte Spannungssignal des beispielhaften Hochfrequenzverstärkers 402 ist das Verstärkerausgangssignal 406 des Hochfrequenzverstärkers 402. Der Analog-zu-Digital-Wandler 403 tastet das Verstärkerausgangssignal 406 des Hochfrequenzverstärkers 402 mit einer Abtastrate des Analog-zu-Digitalwandlers 403 ab. Der Analog-zu-Digital-Wandler 403 gibt beispielsweise die ermittelten Abtastwerte des Verstärkerausgangssignals 406 des Hochfrequenzverstärkers 402 digital mit einer Busbreite von beispielsweise 14 Bit beispielsweise an Die Auswertevorrichtung 404 weiter.
  • Die als Blockschaltbild der vereinfacht in 41 dargestellten Vorrichtung beinhaltet beispielhaft einen Komparator 404.2, einen Zeit-zu-Digital-Konverter (TDC=time to digital converter) 404.3, eine Entropie Extraktions-Vorrichtung 404.4 und eine Finite State Machine (endlichen Automaten) 404.8.
  • Der Komparator 404.2 vergleicht in dem Beispiel der 8 den beispielhaften digitalen 14 Bit Wert 407 des Analog-zu-Digital-Wandlers 403, 570 mit einer Konstanten 404.1, die einen Schwellwert darstellt, und erzeugt einen zwei Takte langen 1 Bit Ausgangspuls auf seinem Ausgangssignal 409 des Komparators 404.2, wenn der Wert des Analog-zu-Digital-Wandlers 403 größer ist als die Konstante 404.1. Das Ausgangssignal 409 des Komparators 404.2 verbindet den Komparator 404.2 mit dem Zeit-zu-Digital-Wandler 404.3. Der Zeit-zu-Digital-Wandler 404.3 besteht bevorzugt beispielsweise aus einem 32 Bit Zähler, der im Takt der Auswertevorrichtung 404 hochzählt. Der Oszillator 30 und das Taktsystem der Steuervorrichtung 4 stellen diesen Takt typischerweise bereit. Die Bitbreite dieses Zählers kann je nach Anwendung abweichen. Dieser Takt kann beispielsweise eine Frequenz von 125 MHz haben. Das 1 Bit Ausgangssignal des Komparators 404.2 setzt vorzugsweise den Zählerstand dieses Zählers zurück. Der Zeit-zu-Digital-Wandler 404.3 legt den zu diesem Zeitpunkt unmittelbar vor dem Zurücksetzen vorliegenden Zählerstand an den Ausgang 410 des Zeit-zu-Digital-Wandlers (TDC) 404.3. Das Zählergebnis hat bei einem beispielhaften 125MHz Takt eine Auflösung von 1/(125 MHz)=8 ns. Der Ausgang 410 des Zeit-zu-Digital-Wandlers (TDC) 404.3 gibt das beispielhafte 32 Bit Zählergebnis, auch Rohdaten genannt, des Zeit-zu-Digital-Wandlers 404.3 an die im Signalpfad nachfolgende Entropie-Extraktion 404.4 weiter. Die Entropie-Extraktion 404.4 wandelt die zufälligen Rohdaten RD des Zeit-zu-Digital-Wandlers (TDC) 404.3 auf dem Signal des Ausgangs 410 des Zeit-zu-Digital-Wandlers (TDC) 404.3 in eine 1 Bit Zufallszahl 411 RN um. Der Ausgang 411 der Entropie-Extraktion 404.4 ist mit dem Eingang der Finite State Machine FSM 404.8 verbunden.
  • Die Finite State Machine 404.8 hat typischerweise die Aufgabe, Daten in Form eines seriellen Stroms von Zufallsbits 411 von der der Entropie-Extraktion 404.4 entgegenzunehmen, den seriellen Strom von Zufallsdatenbits in Zufallsdatenwörter und diese in den Block RAM 404.9 der Auswertevorrichtung 404, der typischerweise der flüchtige Speicher ist, zu speichern. Bevorzugt kommuniziert die Finite-State-Machine 404.8 mit dem Microcontroller 404.11 über einen internen Datenbus 419. Nach erfolgreichem Schreibvorgang setzt die Finite State Machine 404.8 ein Finish Flag 404.10. Der Microcontroller 404.11 kann bevorzugt das Finish-Flag 404.10 über den internen Datenbus 419 schreiben und/oder lesen. Das Finish-Flag 404.10 kann ggf. Teil des RAMs 404.9 oder ein Register des Microcontrollers 404.11 sein. Der Microcontroller 404.11 steuert und überwacht vorzugsweise über den internen Datenbus 419 die Finite-State-Machine 404.8. Das Finish Flag 404.10 ist vorzugsweise bei Systemstart nicht gesetzt. Daraufhin kann der Microcontroller 404.11 beispielsweise mittels eines C-Programms, welches auf dem eingebetteten Mikrocontroller 404.11, beispielsweise ein Dual-Core Arm Cortex-A9 MPCore, gestartet ist, auf den Block RAM 414.9 zugreifen und die Zufallszahl aus dem RAM 404.9 auslesen. Der Mikrocontroller 404.11 ist bevorzugt identisch mit dem ersten Prozessor 10-1 der 1. Der Microcontroller 404.11 kann beispielsweise ein Dual-Core Arm Cortex-A9 MPCore sein. Der Microcontroller 404.11 kann auch einige der Funktionen der Teilvorrichtungen der Auswertevorrichtung 404 mittels eines geeigneten Programms ausführen und so diese Vorrichtungsteile ggf. ersetzen.
  • Bevorzugt steuert der Microcontroller 404.11 einen Watchdog 404.5. Der Watchdog 404.5 ist hier im Sinne des hier vorgelegten Dokuments nicht nur ein Watchdog-Timer, der einen Zeitgeber umfasst, der mit dem Systemtakt des Quantenzufallszahlengenerators 400 bzw. des Takts der des Microcontrollers 404.11 getaktet ist und der in regelmäßigen zeitlichen Abständen von dem Microcontroller 404.11 wieder auf einen Startwert zurückgesetzt werden muss, um ein Unterbrechen der Programmausführung des Microcontrollers 404.11 bei Erreichen und/oder Kreuzen eines Watchdogzählerstandschwellwerts durch den Zählerstand des Zeitgebers des Watchdogs 405.5 zu vermeiden. Der Watchdog 405.5 führt darüber hinaus weitere Überwachungsaufgaben innerhalb des Quantenzufallszahlengenerators 400 aus. Beispielsweise überwacht der Watchdog 404.5 vorzugsweise die Entropie der Zufallsbits 411. Insbesondere stellt der Watchdog 404.5 sicher, dass die Zufallsbits 411 vorzugsweise nicht mehr als k aufeinanderfolgende Zufallsbits des gleichen logischen Wertes aufweisen. Ist das der Fall, so fügt der Watchdog 404.5 vorzugsweise andere Bits an Stelle der Zufallsbits 411 in diesen seriellen Bitdatenstrom von der Entropieextraktion 404.5 zur Finite-State-Machine 407.8 ein. Hierzu in der folgenden 9 mehr. Bevorzugt fügt der Watchdog 404.5 in diesem Fall Zufallsbits eines anderen echten Zufallszahlengenerators und/oder eines anderen Quantenzufallszahlengenerators und/oder Pseudozufallsbits eines Pseudozufallszahlengenerators, dessen Startwert durch gültige Zufallsbits eines Quantenzufallszahlengenerators (QRNG) oder eines echten Zufallszahlengenerators (TRNG) bestimmt wird. Bevorzugt ist der Watchdog 404.5 gleichzeitig auch ein Watchdog des ersten Prozessoers 10-1. Darüber hinaus überwacht der Watchdog 404.5 im Sinne des hier vorgelegten Dokuments ggf. weitere Größen, wie z.B. das Übereinstimmen von Spannungswerten innerhalb des Quantenzufallszahlengenerators 400 und/oder innerhalb der Vorrichtung mittels eines oder mehrerer Analog-zu-Digital-Wandlers etc.
  • Figur 9
  • 9 zeigt die erweiterte beispielhafte Auswertevorrichtung 404, die nun eine Überwachung der Zufallszahl 411 RN umfasst und ein zusätzliches Backup System für den Fehlerfall aufweist, um auch bei einem Ausfall des Quantenzufallszahlengenerators die Sicherheit (Security) der Anwendungsschaltung mittels eines Notlaufverfahrens abzusichern. Zur besseren Übersicht sind die Komponenten Mikrocontroller 404.11 RAM 404.9 und Finish-Flag 404.10 weggelassen. Die Leserin/der Leser soll diese Vorrichtungsteile bzw. Funktionen in der 9 weiterhin als vorhanden betrachten. Der Fachmann kann aber leicht die Anbindung an die Finite-State-Machine 404.8 aus der 8 in die 9 kopieren und kommt dann zu der offenbarten technischen Lehre. Der Watchdog 404.5, ein linear rückgekoppeltes Schieberegister 404.6 als Pseudozufallszahlengenerator PRNG und einen Signal-Multiplexer 404.7 erweitern die Vorrichtung der 8 zur Vorrichtung der 9. Der Mikrocontroller 404.11 kann mit diesen Komponenten auch extern aufgebaut werden.
  • Der Ausgang 411 der Entropie Extraktion 404.4 ist nun verbunden mit dem Watchdog 404.5 und dem Signal Multiplexer 404.7 beispielhaft verbunden. Der Watchdog 404.5 überwacht die Zufallszahl RN am Ausgang 411 der Entropie-Extraktion 404.4. Der Watchdog 404.5 erfasst vorschlagsgemäß zumindest drei definierte Fehlerfälle. Der Watchdog 404.5 gibt dazu beispielsweise die letzten validen Zufallszahlen als Seed S 412 an das linear rückgekoppelte Schieberegister 404.6. Sofern ein Fehler auftritt, setzt der Watchdog 404.5 Fehlerbits in einem nicht gezeichneten Fehler-Register ER des Microcontrollers 404.11. Welches Fehlerbit der Watchdog 404.5 im Fehler-Register des Microcontrollers 404.11 setzt, ist vorzugsweise abhängig vom jeweiligen Fehlerfall, den der Watchdog 404.5 feststellt. Zusätzlich ist der Watchdog 404.5 über ein oder mehrere, vorzugsweise digitale Ein-Ausgabe-Signalleitungen 414 mit einem Spannungsmonitor 413 verbunden. Bevorzugt überwacht der Watchdog-Schaltkreis die Spannungswerte, die der Spannungsmonitor 413 ermittelt. Es hat sich bewährt, wenn der Spannungsmonitor 413 nicht nur die Spannungen im Quantenzufallszahlengenerator 400 ermittelt und überwacht, sondern auch andere Spannungen innerhalb der jeweiligen Anwendungsschaltung. Bei dem Spannungsmonitor 413 kann es sich um den besagten Analog-zu-Digital-Wandler handeln.
  • Der Spannungsmonitor 413 überwacht beispielsweise die Betriebsspannungen der Entropiequelle 401 und/oder die Spannungen innerhalb der Anwendungsschaltung erzeugt. Ist eine der Betriebsspannung einer der SPAD-Dioden Verschaltungen 401.1 oder 401.3 zu niedrig, also spannungswertbetragsmäßig unterhalb eines unteren SPAD-Betriebsspanungsschwellwerts, oder zu hoch, also spannungswertbetragsmäßig oberhalb eines oberen SPAD-Betriebsspanungsschwellwerts, so detektiert der Betriebsspannungsmonitor 413 diese Spannungsabweichung. Bevorzugt kann der Microcontroller 404.11 die Werte des Spannungsmonitors 413 über den internen Datenbus Steuervorrichtung 4 auslesen. Im Fall einer solchen Spannungsabweichung signalisiert der Spannungsmonitor 433 an den Watchdog 404.5 oder direkt an den Mikrocontroller 404.11 eine solche Abweichung. Im Falle einer Signalisierung an den Watchdog 404.5 kann beispielsweise der Watchdog 404.5 ein Interrupt-Signal 420 für den Mikrocontroller 404.11 erzeugen. Der Watchdog 404.5 kann beispielsweise einen solchen Interrupt 420 des Microcontrollers 404.11 oder einer anderen Teilvorrichtung eines Anwendungssystems auslösen, wenn die Versorgungsspannung der Entropiequelle 401 oder des Hochfrequenzverstärkers 402 oder eines anderen Vorrichtungsteils des Quantenzufallszahlengenerators QRNG 400 und/oder der Anwendungsvorrichtung fehlerhaft ist. Hat der Watchdog 404.5 einen Fehler des Quantenzufallsgenerators 400 detektiert, so wechselt der Quantenzufallszahlengenerator 400 in einen Notlaufzustand. Hierzu setzt der Watchdog 404.5 das Selektionssignal 416 des Signalmultiplexers 404.7, sodass der Signalmultiplexers 404.7 statt des Ausgangs 411 der Entropie-Extraktion 4104.4 die Pseudozufallszahl PRN des linear rückgekoppelten Schieberegisters 4104.6 in Form eines Stroms von Pseudozufallsbits über eine Pseudozufallssignalleitung 417 als Ersatz für die zumindest potenziell fehlerhafte Zufallszahl RN des Ausgangs 411 der Entropie-Extraktion 404.4 an den Eingang der Finite State Machine 404.8 legt.
  • Das linear rückgekoppelte Schieberegister 404.6 ist mit dem Ausgang Seed S 412 des Watchdog 404.5 verbunden. Der Watchdog 404.5 aktiviert im Fehlerfall das linear rückgekoppelte Schieberegister 4104.6. Das linear rückgekoppelte Schieberegister 4104.6 generiert dann Pseudozufallszahlen PRN als Pseudozufallszahlengenerator PRNG. Der Seed S 412 weist bevorzugt die letzten beispielsweise 16 gerade noch gültigen Zufallszahlen (z.B. jeweils 1 Bit) auf. Der Watchdog 404.5 legt bevorzugt diese letzten gültigen Zufallszahlen an den Eingang des linear rückgekoppelten Schieberegisters 404.6. Der Seed S dient somit als zufälliger PQC sicherer Startwert für das Generatorpolynom der Rückkopplung des linear rückgekoppelten Schieberegisters 404.6 für die Generierung der Pseudozufallszahl PRN und deren Signalisierung über die Pseudozufallssignalleitung 417. Das Generatorpolynom sowie der Grad des Generatorpolynoms sind dabei bevorzugt frei wählbar.
  • Das Signal des Ausgangs 411 der Entropie-Extraktion 404.4 mit der 1 Bit Zufallszahl RN der Entropie Extraktion 404.4 bzw. das Signal der Pseudozufallssignalleitung 417.mit der Pseudozufallszahl PRN des linear rückgekoppelten Schieberegisters 404.6 sind mit den Eingängen des Signalmultiplexers 4104.7 verbunden. Der Signalmultiplexer 404.7 leitet je nach Wert des Selektionssignals 416 SEL einen der beiden Eingänge an die Finite State Machine 404.8 weiter. Natürlich ist es denkbar, einen Multiplexer mit mehr als zwei Eingängen und komplexerem Ansteuersignal zu verwenden, wenn die Anwendung dies erfordert. Die Zahl der Eingänge der Signalmultiplexers 404.7 ist daher typischerweise größer oder gleich zwei.
  • Auch hier hat die Finite State Machine 404.8 die Aufgabe die Zufallsdaten RN bzw. die Pseudozufallszahl PRN am Ausgang des Signalmultiplexers 404.7 entgegenzunehmen und in den Block RAM 404.9, 15 der Auswertevorrichtung 404 innerhalb der Steuervorrichtung 4 zu schreiben. Ist der Schreibvorgang erfolgreich, setzt die Finite State Machine 404.8 wieder das Finish Flag 404.10. Daraufhin kann der Mikrocontroller 404.11 beispielsweise mittels eines C-Programms, welches auf dem eingebetteten Mikrocontroller 404.11 vorzugsweise abläuft, auf den Block RAM 404.9zugegriffen und die Zufallszahl auslesen und beispielsweise zur Verschlüsselung benutzen.
  • 10 zeigt das Flussdiagramm 500 des Entropie Extraktionsverfahrens, das beispielsweise die Entropieextraktion 404.4 ausführt. Das Verfahren sieht vor, zunächst in einem ersten Schritt 501 zwei Werte des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3 zu ermitteln und in einem Schieberegister der Entropie Extraktion 404.4 zu speichern. Sind zwei Werte im Schieberegister der Entropie Extraktion 404.4 gespeichert, so vergleicht die der Entropie Extraktion 404.4 diese beiden Werte in einem zweiten Schritt 4502. Die beiden Werte im Schieberegister der Entropieextraktion 404.4 umfassen also einen ersten Wert und einen zweiten Wert, die beide der Zeit-zu-Digital-Wandler 404 mittels zweier verschiedener Messungen des jeweiligen Zeitraums zwischen jeweils zwei Signalpulsen oberhalb des Werts der Konstante 404.1 ermittelt hat. In einem dritten Schritt 503 bewertet die Entropie Extraktion 404.4 die beiden Werte. Ist der erste Wert kleiner als der zweite Wert und die Differenz zwischen Wert 1 und Wert 2 größer als eine Mindestdifferenz ε, so setzt die Entropie-Extraktion 404.4 den Wert ihres Ausgangs 411 auf einen ersten logischen Wert. Ist der erste Wert größer als der zweite Wert und die Differenz zwischen dem ersten Wert und dem zweiten Wert 2 größer als die Mindestdifferent ε, so setzt die Entropie-Extraktion 404.4 ihren Ausgang auf einen zweiten logischen Wert, der vom ersten logischen Wert verschieden ist. Ist die Differenz zwischen dem ersten Wert und dem zweiten Wert kleiner als die Mindestdifferenz ε, so verwirft die Entropieextraktion den ersten Wert und den zweiten Wert. Bevorzugt veranlasst die Entropieextraktion den Watchdog 404.5 in einem solchen Fall einen Fehlerzähler um eine erste Fehlerzählerschrittweite zu erhöhen. Die erste Fehlerzählerschrittweite kann negativ sein. Umgekehrt kann die Entropieextraktion 404.4 den Fehlerzähler des Watchdogs 404.5 um eine zweite Fehlerzählerschrittweite erniedrigen, wenn die Differenz zwischen dem ersten Wert und dem zweiten Wert größer als die Mindestdifferenz ε ist. Die zweite Fehlerzählerschrittweite kann gleich der ersten Fehlerzählerschrittweite sein. Typischerweise sind die Vorzeichen der ersten Fehlerzählerschrittweite und der zweiten Fehlerzählerschrittweite gleich. Bevorzugt kann der Mikrocontroller 404.11 die Fehlerzählerschrittweiten und den Startwert des Fehlerzählers und einen Fehlerzählerschwellwert setzen. Kreuzt der Zählerstand des Fehlerzählers den Fehlerzählerschwellwert, so signalisiert der Watchdog 404.5 vorzugsweise mittels eines Interrupts 420 oder einer anderen Signalisierung an den Mikrocontroller 404.11 das Vorliegen eines kritischen Fehlerzustands. Der Mikrocontroller 404.11 startet dann typischerweise ein Selbsttestprogramm, um die verschiedenen Teile des Quantenzufallszahlengenerators 400 zu testen. Bevorzugt kann der Mikrokontroller 404.11 hierzu beispielsweise den Analog-zu-Digital-Wandler 403, 570 in einen Zustand versetzen, in dem der Mikrocontroller 404.11 ein Ausgangsregister des Analog-zu-Digital-Wandlers 403 mit Testwerten beschreiben kann, die die nachfolgende Signalkette dann wie echte Abtastwerte weiterverarbeitet. Da die Testwerte vorbekannt sind, kann der Mikrocontroller 404.11 (Rechnerkern 2) die korrekte Reaktion des Restsystems, beispielsweise das Hochzählen des Fehlerzählers im Watchdog 404.5, beobachten und bewerten. Bevorzugt kann der Mikrocontroller 404.11 daher möglichst alle Speicherknoten der Auswerteschaltung 4104 bzw. der Steuervorrichtung 4 überwachen und deren logischen Zustand lesen.
  • Sofern ein Zeitwert am Ausgang 410 des Zeit-zu-Digital-Wandlers 404.3 kleiner als ein Mindestwert ist, handelt es sich um einen Wert, der innerhalb der Totzeit der SPAD-Dioden 401.1, 401.3 liegt. Die Auswertevorrichtung 404 verwirft bevorzugt einen solchen Wert und erhöht den Fehlerzähler vorzugsweise um die erste Fehlerschrittweite, die auch negativ sein kann. In dem Fall wartet die Entropieextraktion 404.4 die Ermittlung des nächsten Zeitwerts durch den Zeit-zu-Digital-Wandler 404.3 ab. Ist das Zufallsbit auf diese Weise extrahiert, beginnt der Quantenzufallszahlengenerator 400 das Verfahren von vorne.
  • Sofern der Fehlerzähler den Fehlerzählerschwellwert kreuzt oder erreicht, kann beispielsweise ein Fehler vorliegen, bei dem der Zeit-zu-Digital-Wandler 403 beispielsweise konstante Zahlenwerte aufgrund eines Fehlers liefert.
  • Diese Vorrichtung ist somit in der Lage, einen Ausfall der Spannungsversorgung 5 der Entropiequelle 401 oder anderer Teile der Vorrichtung 4, 400 zu detektieren. Der Mikrocontroller 404.11 kann mittels des Analog-zu-Digital-Wandlers 403 auch zu Testzwecken Spannungen und Ströme im Quantenzufallszahlengenerator 400 und/oder innerhalb der Steuervorrichtung 4 erfassen und die so ermittelten Werte mit Erwartungswertbereichen vergleichen, in denen diese Werte liegen müssen. Auch kann der Mikrocontroller 404.11 (der Rechnerkern 2) digitale Werte innerhalb des Quantenzufallszahlengenerators 400 und/oder der Steuervorrichtung 4 erfassen. Beispielsweise kann der Microcontroller 404.11 die Konstante Const 404.1 für Testzwecke so niedrig setzen, dass der Rauschuntergrund im Wesentlichen den Zeit-zu-Digital-Wandler 404.3 steuert. Die Werte des Zeit-zu-Digital-Wandlers 404.3 sollten dann einer erwarteten Statistik in einem Toleranzband genügen. Ist dies nicht der Fall, so liegt ein Fehler vor. Der Microcontroller 404.11 (Rechnerkern 2) kann diese Statistik erstellen und ggf. auf diesen Fehler schließen, wenn die ermittelten statistischen Werte nicht in einem Erwartungswertintervall liegen.
  • Der Watchdog 404.5 kann die Entropie der gelieferten Zufallszahlen 411 überwachen. Sofern die mittlere Entropie der Bits 411 über einen Entropiemesszeitraum wesentlich mehr als ein erlaubter Entropieabweichungswert von dem erwarteten Zufallsmittelwert von 50% abweicht, schließt der Watchdog 404.5 vorzugsweise auf einen Fehler des Quantenzufallszahlengenerators 4100, 60, und inkrementiert vorzugsweise den Fehlerzähler um die besagte Fehlerzählerschrittweite. Vorzugsweise stoppt der Watchdog 4104.5 dann die Verwendung dieser Zufallsbits des Ausgangs 411 der Entropie Extraktion, um die Versendung von Klartext über den Datenbus durch die Sicherung 1 zu verhindern. Klartext bedeutet im Sinne des hier vorgelegten Dokuments, das die versendeten und/oder gespeicherten Daten in einer Form vorliegen, die es erlaubt, dass ein Dritter sich direkt und/oder durch Anwendung statistischer oder sonstiger Methoden unbefugten Zugang zum Inhalt einer Datenbotschaft und/oder von gespeicherten Daten und/oder Programmcode verschaffen kann. Es ist nämlich denkbar, dass auch bei funktionierenden Teilvorrichtungen zufällig eine virtuelle Dauereins oder eine virtuelle Dauernull erzeugt wird. Der Zufall umfasst nämlich auch die Dauernull und die Dauereins. Es ist somit sinnvoll, wenn die maximale Länge einer Bitsequenz ohne Änderung des logischen Zustands am Ausgang 411 der Entropie Extraktion 404.4 auf einen durch den Mikrocontroller 404.11 (Rechnerkern 2) programmierbaren Wert durch den Watchdog 4195.5 begrenzt wird.
  • Im Wesentlichen kann der vorbeschriebene Quantenzufallszahlengenerator 4100 damit folgende Fehler erkennen und durch einen Notlauf mittels eines Pseudozufallszahlengenerators 4104.6, also beispielsweise mittels eines linear rückgekoppelten Schieberegisters 4104.6, mit niedrigerem Sicherheitsniveau auffangen:
    • • Störung von Versorgungsspannungen
    • • Fehlerhafte Signalerzeugung der SPAD-Dioden 401.1 und 401.3,
    • • Störung des Lichtwellenleiters 401.2 und/oder der Ankoppelungen der SPAD-Dioden 401.1 und 401.3 an den Lichtwellenleiter 401.2,
    • • Schaltungsausfälle im Digitalteil 404 des Quantenzufallszahlengenerators 400
    • • Fehlerhafte Entropie der gelieferten Zufallszahlen 411.
  • Es ist denkbar, statt des linear rückgekoppelten Schieberegisters 404.6 bzw. des Pseudozufallszahlengenerators 404.6 einen zweiten kompletten Quantenzufallszahlengenerator 400 einzusetzen, dessen Ausgang 411 dessen Entropie Extraktion dann der Multiplexer 404.7 anstelle des Signals der Pseudozufallssignalleitung 417 für den Notlauf des Quantenzufallszahlengenerators 400 verwendet. Für den Fall, dass der Ausgang des Pseudozufallszahlengenerators 404.6 von einem oder mehreren echten Zufallsbits 412 als Seed abhängt, handelt es sich, solange die Anzahl der eingefügten Bits begrenzt ist, wieder um eine Quantenzufallszahl. Bevorzugt bestimmt der Watchdog 405.5 die Anzahl k der erlaubten, maximal aufeinanderfolgenden Quantenbits 411 aus einer Quantenzufallszahl. Umfasst diese Quantenzufallszahl 411, die der Watchdog 404.5 für die Bestimmung von k verwendet, nur Bits mit einem einzigen logischen Wert, so besteht die Möglichkeit, dass ein Fehler vorliegt. Die Zahl k sollte dann nicht maximal sein, um eine Versendung oder Speicherung von Klartext zu vermeiden. Vielmehr sollte der Watchdog 404.5 dann die Zahl k sehr klein, bevorzugt minimal wählen.
  • Figur 11
  • 11 zeigt ein beispielhaftes Oszillogramm des Spannungssignals 404 der Entropie Quelle 401. Wie leicht zu erkennen ist, treten erste Spikes 601 mit einer ersten Höhe und zweite Spikes 602 mit einer zweiten Höhe auf. Die Streuung der ersten Höhe der ersten Spikes 601 und die Streuung der zweiten Höhe der zweiten Spikes 602 ist jeweils so gering, dass eine klare Trennung dieser Ereignisse 601, 602 mittels eines beispielhaften Schneidepegels 603 über die Wahl der Konstanten 404.1 möglich ist. Der Schneidepegel 603 entspricht dem Wert den der Mikrocontroller 404.11 mittels der Konstanten 404.1, die vorzugsweise als Register des Microcontrollers 404.11 ausgeführt ist, einstellt.
  • Figur 12
  • 12 zeigt den schematischen Ablauf einer Server-Client-Kommunikation unter Nutzung eines vorschlaggemäßen Quantenzufallszhalengenerators. Dabei soll eine erste Vorrichtung, wie beispielsweise die der 1, als Server über einen Datenbus mit einer zweiten Vorrichtung, wie beispielsweise die der 1, als Client verschlüsselt kommunizieren. Sowohl die erste Vorrichtung als auch die zweite Vorrichtung sollen in einem ersten Beispiel jeweils einen Quantenzufallszahlengenerator 28 umfassen, den der jeweilige erste Prozessor 10-1 des Rechners 2 für die Verschlüsselung nutz. Bevorzugt entspricht der Quantenzufallszahlengenerator 28 ganz oder teilweise einer Konstruktion entsprechend einer der 5 bis 9. Ganz besonders bevorzugt umdassen die Quantenzufallszahlengeneratoren der ersten Vorrichung und der zweiten Vorrichung jeweils einen Quantenzufallszahlengenerator 28, der jeweils zumindest eine erste SPAD-Diode und jeweils zumindest eine Lichtwellenleiter bevorzugt in Form des Oxid-Stapels 44 auf der Halbleiteroberfläche und bevorzugt zumindes eine zweite SPAD-Diode als Empfänger. Dies steigert die Datenrate der erzeugten Zufallsbits und befähigt den erste Prozessor 10-1 des Rechners 2 der jeweiligen Vorrichtung sehr schnell die Schlüssel zu erzeugen und zu tauschen. Die jeweiligen ersten Prozessoren 10-1 der jeweiligen Rechner 2 der jeweiligen Vorrichtungen verschlüsseln ihre wechselseitige Kommunikation bevorzugt mittels eines RSA-Verschlüsselungsverfahrens. Das beispielhafte RSA Verschlüsselungsverfahren ist beispielsweise aus R. L. Rivest, A. Shamir, and L. Adleman, „A Method for Obtaining Digital Signatures and Public-Key Cryptosystems“ Communications oft he ACM, Februar 1978, Vol. 21, Nr. 2, Seiten 120 bis 126 bekannt. Die Primzahlen, die der jeweilige erste Prozessor 10-1 des jeweiligen Rechners 2 der jeweiligen Vorrichtung zur Erzeugung des öffentlichen und des privaten Schlüssels vorzugsweise verwendet, erzeugt bevorzugt der Quantenzufallzahlengenerator 28 QRNG zufällig. Die Kommunikation des Mikontrollers 2 des Servers mit dem jeweiligen ersten Prozessor 10-1 des jeweiligen Rechners 2 des Client umfasst bevorzugt zum Ersten den Prozess „Server Process“, welcher auf dem jeweiligen ersten Prozessor 10-1 des jeweiligen Rechners 2 des Servers, also der ersten Vorrichtung, gestartet wird, und zum Zweiten den Prozess „Client Process“, welcher auf dem jeweiligen ersten Prozessor 10-1 des jeweiligen Rechners 2 des Client, also der zweiten Vorrichtung, gestartet wird. Der jeweilige erste Prozessor 10-1 des jeweiligen Rechners 2 des Clients kommuniziert typischerweise mit dem jeweiligen ersten Prozessor 10-1 des jeweiligen Rechners 2 des Servers über sogenannte Sockets. Dabei handelt es sich um Kommunikationspunkte, welche das jeweilige Betriebssystem des jeweiligen Microcontrollers 2 bereitstell. Bevorzugt stammen die benötigten Funktionen, um eine Kommunikation aufzubauen, beispielsweise aus der Standard C-Library socket.h. Das Folgende erläutert beispielhaft die Kommunikation gemäß 12:
    • Zu Beginn erzeugt sich der erste Prozessor 10-1 des Rechners 2 des Servers einen Socket-Descriptor in Schritt 3000. Ein Socket-Descriptor im Sinne des hier vorgelegten Dokuments ist ein Integer ähnlicher File-Handle, den beispielsweise die Standard C Library-Funktion socket() der socket.h Library erzeugt. Der erste Prozessor 10-1 des Rechners 2 des Servers kann diesen Socket-Descriptor in späteren Funktionsaufrufen, die Sockets verwenden, nutzen.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers bindet in Schritt 3010 bevorzugt den Socket-Descriptor an einen Port und eine IP-Adresse. Binden im Sinne dieses Dokuments bedeutet dass der erste Prozessor 10-1 des Rechners 2 des Servers die Standard C-Funktion bind() aus der Standard C-Library socket.h nutzt, um den Port und die IP-Adresse logisch mit dem in Schritt 3000 erzeugten Socket-Descriptor zu verknüpfen. Bei einem Port handelt es sich im Sinne des vorliegenden Dokuments um einen Teil der Netzwerkadresse, der Zuordnung von Datenpaketen zwischen Server- und Client-Programmen ermöglicht. Bei einer IP-Adresse handelt es sich im Sinne des vorliegenden Dokuments um eine Netzwerkadresse, die einen Teilnehmer in einem Netzwerk eindeutig identifizierbar macht.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers geht im nächsten Schritt 3020 in einen passiven Wartezustand 3020 und wartet auf Verbindungsanfragen eines ersten Prozessors 10-1 des Rechners 2 eines Clients. Im Sinne des hier vorgelegten Dokuments ruft bevorzugt der erste Prozessor 10-1 des Rechners 2 des Server hierzu die Standard C-Funktion listen() der socker.h Library auf. Die Funktion zeigt an, dass der erste Prozessor 10-1 des Rechners 2 des Servers bereit ist, dass der erste Prozessor 10-1 des Rechners 2 Verbindungsanfragen durch Clients annhemen kann. Der erste Prozessor 10-1 des Rechners 2 erzeugt eine Warteschlange für ankommende Verbindungsanfragen des ersten Prozessor 10-1 des Rechners 2 des Clients in einem der Speicher des Rechners 2 oder des ersten Prozessor 10-1 des Rechners 2 oder eines anderen Vorrichtungsteils des Rechners 2. Stellt der erste Prozessor 10-1 des Rechners 2 des Servers eine Verbindungsanfrage eines ersten Prozessors 10-1 des Rechners 2 eines Clients fest, so akzeptiert der erste Prozessor 10-1 des Rechners 2 des Servers diese Verbindungsanfrage des ersten Prozessors 10-1 des Rechners 2 des Clients.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers stellt dann in einem folgenden Schritt 3030 eine Verbindung zum ersten Prozessor 10-1 des Rechners 2 des Clients her 3030. Der erste Prozessor 10-1 des Rechners 2 des Servers stellt eine Verbindungsanfrage des ersten Prozessors 10-1 des Rechners 2 des Clients dadurch fest, dass der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion listen() verlässt. Der erste Prozessor 10-1 des Rechners 2 des Servers akzeptiert die Verbindungsanfrage vorzugsweise durch Aufruf der Standard C-Funktion accept() der socket.h Standard C-Library. Der erste Prozessor 10-1 des Rechners 2 des Servers extrahiert dazu bevorzugt die erste Verbindungsanfrage aus der Warteschlange offener Verbindungsanfragen für den Server und stellt damit dann die Verbindung zum erste nProzessor 10-1 des Rechners 2 des Clients her. Bei Erfolg gibt die funktion accept() einen Socket-Descriptor des Clients dem ersten Prozessor 10-1 des Rechners 2 zurück. Ein Socket-Descriptor im Sinne dieses Dokuments ist eine Integer ähnlich File-Handle der Standard C-Library socket.h. Damit besteht dann die Verbindung zwischen dem ersten Prozessor 10-1 des Rechners 2 des Servers und dem ersten Prozessor 10-1 des Rechners 2 des Clients.
  • Besteht eine besagte Verbindung, startet der erste Prozessor 10-1 des Rechners 2 des Servers bevorzugt in einem folgenden Schritt 3040 eine Funktion keyExchangeServer(). Der erste Prozessor 10-1 des Rechners 2 des Servers führt dann diese Funktion keyExchange() in diesem Schritt 3040 aus, um dem ersten Prozessor 10-1 des Rechners 2 des Client seinen öffentlichen Schlüssel zukommen zu lassen. Diese Funktion keyExchangeServer() ist nun jedoch keine Standard C-Funktion. In dieser Funktion erzeugt in diesem Schritt 3040 der erste Prozessor 10-1 des Rechners 2 des Server mittels eines Quantenzufallszahlengenerators 28 QRNG Zufallszahlen. Die Zufallszahl hat dabei bevorzugt eine Bitbreite n. Hierbei ist n eine positive ganze Zahl einschließlich Null. Diese Zufallszahlen des Quantenzufallszahlengenerators 28 des Rechners 2 des Servers dienen in dem in diesem Dokument vorgestellten Beispiel als Indices für eine Look-Up-Tabelle der ersten 2n Primzahlen. Diese Look-Up-Table befindet sich bevorzugt in einem der Speicher des Rechners 2 oder in einem Speicher von Teilvorrichtungen des Rechners 2 des Servers. Der erste Prozessor 10-1 des Rechners 2 des Servers liest dann die Primzahl entsprechend diesem Index der Quantenzufallszahl des Quantenzufallszahlgenerators 28 des Rechners 2 aus dem Speicher des Rechners 2 des Servers. Mittels dieser Primzahlen erzeugt der erste Prozessor 10-1 des Rechners 2 Server sowohl einen öffentlichen als auch privaten Schlüssel gemäß dem erwähnten RSA-Verschlüsselungsverfahren.
  • Der erste Prozessor 10-1 des Rechners 2 übermittelt dann über die Datenschnittstelle 64 des Rechners 2 des Servers und den Datenbus 95 und die Datenschnittstelle 64 des Rechners 2 des Clients einen öffentlichen Schlüssel an den ersten Prozessor 10-1 des Rechners 2 des Clients.
  • Danach wartet der erste Prozessor 10-1 des Rechners 2 des Servers auf eine Nachricht des ersten Prozessor 10-1 des Rechners 2 des Clients über die Datenschnittstelle 64 des Rechners 2 des Clients und den Datenbus 65 und die Datenschnittstelle 64 des ersten Prozessors 10-1 des Rechners 2 des Servers. Bevorzugt umfasst diese Nachricht des ersten Prozessor 10-1 des Rechners 2 des Clients einen öffentlichen Schlüssel des ersten Prozessor s10-1 des Rechners 2 des Clients. Damit übermittelt erste Prozessor 10-1 des Rechners 2 des Clients typischerweise den privaten Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Clients über die Datenschnittstelle 64 des Rechners 2 des Clients und den Datenbus 95 und die Datenschnittstelle 64 des Rechners 2 des Servers an den ersten Prozessor 10-1 des Rechners 2 des Servers. Hat der erste Prozessor 10-1 des Rechners 2 des Servers den öffentlichen Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Clients erhalten, so speicher der erste Prozessor 10-1 des Rechners 2 des Servers diesen öffentlichen Schlüssel in einem Speicher des Rechners 2 des Servers.
  • Anschließend versendet der erste Prozessor 10-1 des Rechners 2 des Servers beispielsweise seinen öffentlichen Schlüssel über seine Datenbusschnittstelle 64 und den Datenbus 65 und die Datenbusschnittstelle 64 des Rechners 2 des Clients an den ersten Prozessor 10-1 des Rechners 2 des Clients.
  • Damit ist der Server typischerweise für den Austausch verschlüsselter Daten zwischen dem ersten Prozessor 10-1 des Rechners 2 des Clients und dem ersten Prozessor 10-1 des Rechners 2 des Servers vorbereitet.
  • Nach dem nun die Schlüssel ausgetauscht sind, führt im Anschluss der ersten Prozessor 10-1 des Rechners 2 des Servers vorzugsweise die Funktion recv() 3050 aus und wartet auf eine verschlüsselte Nachricht des ersten Prozessors 10-1 des Rechners 2 des Clients. Empfängt der ersten Prozessor 10-1 des Rechners 2 des Servers eine Nachricht, so speichert der erste Prozessor 10-1 des Rechners 2 des Servers diese verschlüsselte Nachricht vorzugsweise zunächst in einem temporären Zwischenspeicher des Rechners 2 des Servers. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion recv() bevorzugt um eine Standard C-Funktion der Standard C-Library socket.h. Die Funktion recv() liest typischerweise ankommende Daten von einem Socket-Discriptor, in diesem Fall der Socket-Descriptor des ersten Prozessor s10-1 des Rechners 2 des Client aus dem Schritt 3030 des Verfahrens. Die Funktion recv(), die der erste Prozessor 10-1 des Rechners 2 des Servers typischerweise ausführt, speichert die empfangenen Daten typischerweise in dem temporären Zwischenspeicher des Rechners 2 des Servers.
  • Hat der erste Prozessor 10-1 des Rechners 2 des Servers auf diese Weise eine verschlüsselte Nachricht empfangen, so führt bevorzugt der erste Prozessor 10-1 des Rechners 2 Servers vorzugsweise in einem weiteren Schritt 3060 die Funktion Decrypt() 3060 aus. Diese Funktion Decrypt() ist keine Standard C-Funktion. Die Funktion Decrypt() entschlüsselt in diesem Schritt 3060 im Sinne des hier vorgelegten Dokuments die Nachricht des mittels des in dem Speicher des Rechners 2 zwischengespeicherten privaten Schlüssels des Servers aus dem Schritt 3040 gemäß des RSA-Verfahrens. Daurch entschlüsselt der ersten Prozessor 10-1 des Rechners 2 des Servers die empfangene verschlüsselte Nachricht des Clients mittels des in dem Speicher des Rechners 2 zwischengespeicherten privaten Schlüssels aus dem Schritt 3040 gemäß des RSA-Verfahrens. Der erste Prozessor 10-1 des Rechners 2 des Servers speichert vorzugsweise die dann entschlüsselte Nachricht in einen temporären Zwischenspeicher des Rechners 2 des Servers ab.
  • Sofern der erste Prozessor 10-1 des Rechners 2 des Servers in einem vorgegeben Zeitraum keine Nachricht des ersten Prozessor 10-1 des Rechners 2 des Clients erhält springt der erste Prozessor 10-1 des Rechners 2 des Servers zu dem nun beschriebenen Schritt. Der erste Prozessor 10-1 des Rechners 2 des Servers prüft, ob eine Nachrift an den ersten Prozessor 10-1 des Rechners 2 des Clients versendet werden soll. Typischerweise ist eine solche Nachricht in einem Speicher des Rechners 2 des Servers in einem solchen Fall zu Versending abgelegt. Ggf. kann der erste Prozessor 10-1 des Rechners 2 des Servers eine solche Nachricht auch von einem Anderen Speicher oder System erst vor der Versenung abholen oder übermittelt bekommen. Bevorzugt legt dann der erste Prozessor 10-1 des Rechners 2 des Servers eine solche Nachriht temporär in einem Zwischenspeicher des Rechners 2 des Servers ab. Falls eine solche zu versendende Nachricht in einem Speicher oder Zwischenspeicher des Rechners 2 des Servers zur Versendung ansteht, führt der erste Prozessor 10-1 des Rechners 2 des Servers vorzugsweise die Funktion Encrypt() in einem weiteren Schritt 3070 aus. Der erste Prozessor 10-1 des Rechners 2 des Servers verschlüsselt in diesem Schritt 3070 in diesem Fall die eigene Nachricht mittels des öffentlichen Schlüssels des Clients aus 3040 gemäß des RSA-Verfahrens. Diese Funktion Encrypt() ist keine Standard C-Funktion. Der Server speichert seinen nun verschlüsselte Nachricht in einem temporären Zwischenspeicher des Rechners 2 des Servers ab.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers führt nun die Funktion send() in einem Schritt 3080 aus. In dem Schritt 3080 und sendet der erste Prozessor 10-1 des Rechners 2 des Servers seine im Zischenspeicher des Rechners 2 gespeicherte, verschlüsselte Nachricht an den erste Prozessor 10-1 des Rechners 2 des Client über die Datenbusschnittstelle 64 des ersten Prozessors 10-1 des Rechners 2 des Servers und über den Datenbus 65 und über die Datenschnittstelle 64 des ersten Prozessors 10-1 des Rechners 2. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion send() um eine Standard C-Funktion der Standard C-Library socket.h. Die Funktion send() sendet Daten über einen Socket-Descriptor, in diesem Fall der Socket-Descriptor des Clients aus dem Schritt 3030. Mit dem Ende der Übetrtragung ist der typische Zyklus beendet.
  • Danach startet die verschlüsselte Kommunikation für den ersten Prozessor 10-1 des Rechners 2 des Servers erneut wieder bei Schritt 3040.
  • Wird die Kommunikation durch den ersten Prozessor 10-1 des Rechners 2 des Servers oder den ersten Prozessor 10-1 des Rechners 2 des Client beendet, führt der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion close() 3090 aus. Bei der Funktion close() handelt es sich um eine Standard C-Funktion der Standard C-Library socket.h. Durch Ausführen der Funktion close() schließt der erste Prozessor 10-1 des Rechners 2 des Servers die offene Verbindung zu einem Socket, hier dem Socket des Client, und beendet somit die Kommunikation.
  • In Analoger Weise führt der schließt der erste Prozessor 10-1 des Rechners 2 des Clients einen Client Prozess aus.
  • Zu Beginn des „Client Process“ erzeugt sich der erste Prozessor 10-1 des Rechners 2 des Client einen Socket-Descriptor in einem Schritt 3100. Ein Socket-Descriptor im Sinne dieses Dokuments ist wieder eine Integer ähnlich File-Handle den beispielsweise die Standard C Library-Funktion socket() der socket.h Library, den der erste Prozessor 10-1 des Rechners 2 des Client in späteren Funktionsaufrufen, die Sockets nutzen, nutzen kann. Der erste Prozessor 10-1 des Rechners 2 des Clients stellt eine Verbindungsanfrage an den ersten Prozessor 10-1 des Rechners 2 des Servers unter Benutzung des Port und der IP-Adresse, welche in dem Schritt 3010 festgelegt wurden.
  • Dazu führt der erste Prozessor 10-1 des Rechners 2 des Clients bevorzugt die Standard C-Funktion connect() der Standard C-Library socket.h aus. Diese Funktion stellt eine Verbindung zwischen dem Server-Socket aus dem Schritt 3010 und dem Client-Socket aus dem Schritt 3100 her.
  • Wurde die Verbindung seitens des ersten Prozessors 10-1 des Rechners 2 des Servers gemäß Schritt 3030 akzeptiert, so führt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion KeyExchangeClient() in einem Schritt 3120 aus. Diese Funktion ist keine Standard C-Funktion. Durch Ausführung dieser Funktion erzeugt der erste Prozessor 10-1 des Rechners 2 des Clients mittels des Quantenzufallszahlengenerators 28 ein oder mehrere QRNG Zufallszahlen. Diese Zufallszahl hat eine Bitbreite n. Hierbei ist n eine positive ganze Zahl einschließlich Null. Diese Zufallszahlen des Quantenzufallszahlengenerators 28 des Rechners 2 des Clients dienen bevorzugt als Indices für eine Look-Up-Tabelle der ersten 2n Primzahlen. Mittels dieser Primzahlen oder anderer Primzahlen erzeugt der erste Prozessor 10-1 des Rechners 2 des Clients sowohl einen öffentlichen als auch privaten Schlüssel gemäß RSA-Verschlüsselung (ANGANG). Der erste Prozessor 10-1 des Rechners 2 des Clients speichet seinen so erzeugten öffentlichen Schlüssel und seinen so erzeugten privatenSchlüssel vorzugsweise in einem Speicher des Rechners 2 des Clients. Danach versendet der erste Prozessor 10-1 des Rechners 2 des Clients seinen öffentlichen Schlüssel an den erste Prozessor 10-1 des Rechners 2 des Servers über die Datenschnittstelle 64 des Rechners 2 des Clients und über den Datenbus 65 und über die Datenschnittstelle 54 des Rechners 2 des Servers. Anschließend wartet der erste Prozessor 10-1 des Rechners 2 des Clients auf eine Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers. In dieser Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers befindet sich typischerweise der öffentlichen Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Servers.
  • Im Anschluss führt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion Encrypt() 3130 aus. Durch dies Ausführung der Funktion Encrypt() im Schritt 3130 verschlüsselt der erste Prozessor 10-1 des Rechners 2 des Clients eine eigene Nachricht mittels des öffentlichen Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Servers aus Schritt 3040 mittels des RSA-Verfahrens. Diese Funktion ist keine Standard C-Funktion. Der Client speichert die verschlüsselte Nachricht in einem temporären Zwischenspeicher ab.
  • Der erste Prozessor 10-1 des Rechners 2 des Clients führt nun die Funktion send() im Schritt 3140 aus und sendet seine verschlüsselte Nachricht an den ersten Prozessor 10-1 des Rechners 2 des Server. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion send() um eine Standard C-Funktion der Standard C-Library socket.h. Durch ausführen der Funktion send() sendet der ersten Prozessor 10-1 des Rechners 2 des Clients Daten über einen Socket-Descriptor, in diesem Fall den Socket-Descriptor des Clients aus 3100.
  • Im Anschluss führt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion recv() 3150 aus. Dabei wartet erste Prozessor 10-1 des Rechners 2 des Clients in dem Schritt 3150 auf eine verschlüsselte Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers. Empfängt der erste Prozessor 10-1 des Rechners 2 des Clients eine Nachricht, so speichert der erste Prozessor 10-1 des Rechners 2 des Clients diese empfangene und typischerweise verschlüsselte Nachricht in einem temporären Zwischenspeicher. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion recv() bevorzugt um eine Standard C-Funktion der Standard C-Library socket.h. Der erste Prozessor 10-1 des Rechners 2 des Clientsleist durch Ausführen der Funktion recv() ankommende Daten von einem Socket-Discriptor, in diesem Fall von dem Socket-Descriptor des ersten Prozessors 10-1 des Rechners 2 des Clients aus dem Schritt 3100. Der erste Prozessor 10-1 des Rechners 2 des Clients speichert die gelesenen Daten vorzugsweise in einen temporären Zwischenspeicher des Rechners 2 des Clients.
  • Hat der erste Prozessor 10-1 des Rechners 2 des Clients auf diese Weise eine verschlüsselte Nachricht empfangen, so führt der erste Prozessor 10-1 des Rechners 2 des Clients vorzugsweise die Funktion Decrypt() in einem Schritt 3160 aus. Diese Funktion DeCrypt() ist keine Standard C-Funktion. Der erste Prozessor 10-1 des Rechners 2 des Clients entschlüsselt durch Ausführung der Funktion Decrypt() eine durch den ersten Prozessor 10-1 des Rechners 2 des Clients empfangene verschlüsselte Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers mittels des privaten Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Clients aus dem Schrit 3120 mittels des RSA-Verfahrens. Danach speicher der erste Prozessor 10-1 des Rechners 2 des Clients die so entschlüsselte Nachricht in einen temporären Zwischenspeicher des Rechners 2 des Clients ab.
  • Danach startet die Kommunikation zwischen dem erste Prozessor 10-1 des Rechners 2 des Servers und dem erste Prozessor 10-1 des Rechners 2 des Clients erneut bei Schritt 3120.
  • Wird die Kommunikation durch den ersten Prozessor 10-1 des Rechners 2 des Clients oder den erste Prozessor 10-1 des Rechners 2 des Servers beendet, führt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion close() im Schritt 3170 aus. Bei der Funktion close() handelt es sich um eine Standard C-Funktion der Standard C-Library socket.h. Dadurch dass der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion close() ausführt, schließt der erste Prozessor 10-1 des Rechners 2 des Clients die offene Verbindung zu einem Socket und beendet somit die Kommunikation mit dem erste Prozessor 10-1 des Rechners 2 des Servers.
  • Figur 13
  • 13 zeigt den schematischen Ablauf der Funktionen KeyExchangeServer() und KeyExchangeClient().
  • Beim Starten der Funktion KeyExchangeServer() ruft der erste Prozessor 10-1 des Rechners 2 des Servers jeweils zuerst die Funktion setPrimes() im Schritt 3200 auf. Diese Funktion KeyExchangeServer() ist keine Standard C-Funktion. Der erste Prozessor 10-1 des Rechners 2 des Servers erzeugt mittels der Funktion KeyExchangeServer() zwei verschieden Primzahlen p und q, das Produkt n=p*q und die Eulersche Phi-Funktion phi = (p-1)(q-1) im Schritt 3200.
  • Danach ruft der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion setE() im Schritt 3210 auf. Diese Funktion setE() im Schritt 3210 ist keine Standard C-Funktion. Beim Aufruf der Funktion setE() im Schritt 3210 generiert der erste Prozessor 10-1 des Rechners 2 des Servers eine zu phi teilerfremde Zahl e, wobei die Zahl phi die aus dem Schritt 3200 ist. Teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die phi teilt.
  • Im Anschluss führt der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion findD() im Schritt 3220 aus. Diese Funktion findD() ist keine Standard C-Funktion. Der erste Prozessor 10-1 des Rechners 2 des Servers berechnet mittels der Funktion findD()das multiplikative Inverse zu e, sodass gilt (e*d)mod phi = 1.
  • Nun ruift der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion recv() im Schritt 3230 auf. Der erste Prozessor 10-1 des Rechners 2 des Servers wartet nun auf eine eintreffende Nachricht des ersten Prozessors 10-1 des Rechners 2 des Clients, die typischewrweise den öffentlichen Schlüssel des Clients umfassen sollte. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion recv() um eine Standard C-Funktion der Standard C-Library socket.h. Durch Aufruf der Funktion recv() liest erste Prozessor 10-1 des Rechners 2 des Servers die ankommenden Daten von einem Socket-Discriptor, in diesem Fall der Socket-Descriptor des Client. Der erste Prozessor 10-1 des Rechners 2 des Servers speichert die gelesenen Daten vorzugsweise in einen temporären Zwischenspeicher des Rechners 2.
  • Nun ruft der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion send() im Schritt 3240 auf. In diesem Schritt 3240 versendet der erste Prozessor 10-1 des Rechners 2 des Servers seinen öffentlichen Schlüssel (d,n) aus den Schritten 3200 und 3220 an den erste Prozessor 10-1 des Rechners 2 des Clients. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion send() um eine Standard C-Funktion der Standard C-Library socket.h. Der erste Prozessor 10-1 des Rechners 2 des Servers sendet mittels der Funktion send()Daten über einen Socket-Descriptor, in diesem Fall der Socket-Descriptor des Clients aus dem Schritt 3030.
  • Im Anschluss verlässt der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion KeyExchangeServer() im Schritt 3245.
  • Beim Starten der Funktion KeyExchangeClient() ruft der erste Prozessor 10-1 des Rechners 2 des Client zuerst die Funktion setPrimes() im Schritt 3250 auf. Diese Funktion ist keine Standard C-Funktion. Der der erste Prozessor 10-1 des Rechners 2 des Client erzeugt mittels der Fuktion KexExchangeClient(), die Primzahl p und die von q verschiedene Primzahl q. Der der erste Prozessor 10-1 des Rechners 2 des Client erzeugt mittels der Fuktion KexExchangeClient() das Produkt n=p*q. Der der erste Prozessor 10-1 des Rechners 2 des Client erzeugt mittels der Fuktion KexExchangeClient() die Eulersche Phi-Funktion phi = (p-1)(q-1).
  • Danach ruft der erste Prozessor 10-1 des Rechners 2 des Client die Funktion setE() im Schritt 3260 auf. Diese Funktion ist keine Standard C-Funktion. Der erste Prozessor 10-1 des Rechners 2 des Client erzeugt mittels der Funktion setE() eine zur Zahl phi aus dem Schritt 3250 teilerfremde ganze Zahl e. Teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die phi restfrei teilt.
  • Im Anschluss ruft der erste Prozessor 10-1 des Rechners 2 des Client die Funktion findD() 3270 auf. Diese Funktion ist keine Standard C-Funktion. Der erste Prozessor 10-1 des Rechners 2 des Clients berechnet mittels der Funktion findD() das multiplikative Inverse zur Zahl e, sodass gilt (e*d)mod phi = 1.
  • Nun ruft der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion send() 3280 auf und versendet seinen öffentlichen Schlüssel (d,n) aus den Schritten 3250 und 3270 an den ersten Prozessor 10-1 des Rechners 2 des Servers. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion send() um eine Standard C-Funktion der Standard C-Library socket.h. Der erste Prozessor 10-1 des Rechners 2 des Clients sendet mittels der Funktion send() Daten über einen Socket-Descriptor, in diesem Fall der Socket-Descriptor des Clients aus Schritt 3100.
  • Nun ruft der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion recv() im Schritt 3290 auf. Der erste Prozessor 10-1 des Rechners 2 des Clients wartet nun auf eine eintreffende Nachricht des ersten Prozessor 10-1 des Rechners 2 des Servers mit dem öffentlichen Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Servers. Im Sinne des hier vorliegenden Dokuments handelt es sich bei der Funktion recv() um eine Standard C-Funktion der Standard C-Library socket.h. Der erste Prozessor 10-1 des Rechners 2 des Clients liest mittels der Funktion recv()ankommende Daten des ersten Prozessor 10-1 des Rechners 2 des Servers von einem Socket-Discriptor, in diesem Fall von dem Socket-Descriptor des Clients aus Schritt 3100, und speichert die Daten in einen temporären Zwischenspeicher des Recners 2 des Clients.
  • Im Anschluss verlässt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion KeyExchangeClient() im Schritt 3295.
  • Figur 14
  • 14 zeigt schematischen Ablauf der Funktion setPrimes().
  • Der erste Prozessor 10-1 des Rechners 2 des Clients und der erste Prozessor 10-1 des Rechners 2 des Servers rufen diese Funktion zur gegebenen zeit jeweils auf. Ruft einer dieser ersten Prozessoren 10-1 die Funktion setPrimes() auf, so erzeugt sich der aufrufende Prozessor 10-1, in Fall des vorliegenden Dokument der erste Prozessor 10-1 des Rechners 2 des Servers oder der erste Prozessor 10-1 des Rechners 2 des Client, eine Zufallszahl mittels eines Quantum Random Number Generators QRNG im Schritt 3300. Diese Zufallszahl hat eine Bitbreite n. Hierbei ist n eine positive ganze Zahl einschließlich Null. Diese Zufallszahlen dienen in der technischen Lehre des hier vorgelegten Dokuments als Indices für eine Look-Up-Tabelle der ersten 2n Primzahlen. Der aufrufende erste Prozessor 10-1 speicher die Primzahl, die durch die Zufallszahl indiziert wird, wird als Variable p ab.
  • Danach generiert der aufrufende erste Prozessor 10-1 eine weitere Zufallszahl im Schritt 3310 mit der bevorzugten Bitbreite n mittels des Quanten-Zufallstzahlen-generators 28 QRNG. Diese Zufallszahlen dienen dem aufrufenden ersten Prozessor 10-1bevorzugt wieder als Indices für eine Look-Up-Tabelle der ersten 2n Primzahlen. Die Primzahl, die durch die Zufallszahl indiziert wird, speicher der aufrufende erste Prozessor 10-1 als Variable q in einem Zwischenspeicher des Rechners 2, dessen Teil der erste Prozessor 10-1 bevorzugt ist, ab.
  • Nun überprüft der aufrufende erste Prozessor 10-1 im Schritt 3320, ob die logische Aussage q ==p gilt. Gilt diese Aussage wird Schritt 3310 wiederholt.
  • Im Anschluss berechnet der aufrufende Prozessort 10-1 das Produkt n = p * q im Schritt 3330.
  • Danach berechnet der aufrufende Prozessort 10-1 die Euler'sche Phi-Funktion phi = (q-1) * (p-1) im Schritt 3340.
  • Im Anschluss verlässt der aufrufende Prozessor 10-1 die Funktion setPrimes() im Schritt 3350.
  • Figur 15
  • Die 15 zeigt den schematischen Ablauf der Funktion setE() 3400. Beim Aufrufen der Funktion setE() im Schritt 3400 generiert der Aufrufende, in Fall des vorliegenden Dokument der erste Prozessor 10-1 des Rechners 2 des Servers oder der erste Prozessor 10-1 des Rechners 2 des Clients, eine zufällige Zahl e für die gilt, dasse teilerfremd zur Zahl phi ist. Teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die phi teilt. Der aufrufende Prozessor 10-1 kann die Zahl e sowohl durch eine Zufallszahl des Quantenzufallszahlen-Generators 28 QRNG als auch durch einen Pseudozufallszahlengenerator PRNG als auch durch Hochinterieren einer Integerzahl beginnend mit 2 erzeugen. Die Erzeugung mittels des Quanten-Zufallszahlen-Generators 18 QRNG ist aber bevorzugt.
  • Danach überprüft der aufrufende Prozessor 10-1 im Schritt 3410, ob die logische Aussage gcd(e,phi) != 1 erfüllt ist.
  • Ist die logische Aussage erfüllt, wiederholt der aufrufende Prozessor 10-1 den Schritt 3400.
  • Ist die logische Aussage nicht erfüllt, so verlässt der aufrufende Prozessor 10-1 die Funktion setE() verlassen und gibt den aktuelle Wertn von e als Rückgabewert an den aufrufenden Prozessor 10-1 zurück. Bei der Funktion gcd(a,b) handelt es sich nicht um eine Standard C-Funktion. Der aufrufende Prozessor 10-1 berechnet berechnet mittels dieser Funktion gcd(a,b) den größten gemeinsamen Teiler der Übergabeparameter a, b und gibt das Ergebnis an den aufrufenden Prozessor 10-1 zurück.
  • Figur 16
  • 16 zeigt den schematischen Ablauf der Funktion findD(). Wenn der aufrufende Prozessor 10-1 die der Funktion findD() im Schritt 3500 aufruft, so initialisiert der aufrufende Prozessoer 10-1 im Schritt 3500 eine Variablen d mit 0.
  • In dem nachfolgenden Schritt 3510 addiert der aufrufende Prozessor 10-1 zu der Zahl d die Zahl 1 hinzu.
  • Nun überprüft im Schrit 3520 der aufrufende Prozessor 10-1, ob die logische Aussage (e*d) (mod phi) == 1 erfüllt ist. Ist die logische Aussage (e*d) (mod phi) == 1 nicht erfüllt, so wiederholt der aufrufende Prozessor die Schritte ab Schritt 3510.
  • Ist die logische Aussage (e*d) (mod phi) == 1 erfüllt, so verlässt in dem Schritt 3530 der aufrufende Prozesssor 10-1die Funktion findD()und der aufrufende Prozessor 10-1 gibt den aktuellen Wert von d als Rückgabewert an den aufrufenden Prozessor 10-1, in Fall des vorliegenden Dokument den ersten Prozessor 10-1 des Rechners 2 des Servers oder der erste Prozesssor 10-1 des Rechners 2 des Clients.
  • Figur 17
  • 17 zeigt den schematische Ablauf einer sicheren Übertragung von quantenbasierten Zufallszahlen zwischen einem ersten Prozessor 10-1 des Rechners 2 eines Servers 3600 und einem ersten Prozessor 10-1 des Rechners 2 eines Client 3610 gezeigt.
  • Im Fall des vorliegenden Dokuments handelt es sich bei dem Server 3600 um einen ersten Prozessor 10-1 eines Rechners 2, wobei der Rechner 2 dieses Servers 3600 einen Quanten-Zufallszahlen-Generator 28 QRNG aufweist. Im Fall des vorliegenden Dokuments handelt es sich bei dem Client 3610 um einen weiteren ersten Prozessor 10-1 eines Rechners 2, wobei nun dieser Rechner 2 des Client 3610 KEINEN Quanten-Zufallszahlen-Generator 28 QRNG aufweist.
  • Zu Beginn erzeugt sich der erste Prozessor 10-1 des Rechners 2 des Servers 3600 Quantenzufallszahlen QZ1. Die Quantenzufallszahlen QZ1 dienen dem ersten Prozessor 10-1 des Rechners 2 des Servers 3600 als Grundlage für die Erzeugung eines privaten und eines öffentlichen Schlüssels des Servers 3600 gemäß einem asymmetrischen Verschlüsselungsverfahren.
  • Bei dem asymmetrischen Verschlüsselungsverfahren kann es sich zum Beispiel um das RSA-Verfahren (ANHANG) handeln.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers 360 versendet in einem Schritt 3620 des öffentlichen Schlüssels des Servers 3600 über einen nicht abhörsicheren Kanal an den ersten Prozessor 10-1 des Rechners 2 des Clients 3610.
  • Im Anschluss erzeugt sich der erste Prozessor 10-1 des Rechners 2 des Clients 3610 eine Pseudozufallszahl PZ oder eine anders erzeugte Zufallszahl. Der erste Prozessor 10-1 des Rechners 2 des Clients 3610 speichert die Pseudozufallszahl PZ bzw. die anders erzeugte Zufallszahl in einem Speicher des Rechners 2 des Clients 3610 ab. Der Der erste Prozessor 10-1 des Rechners 2 des Clients 3610 erzeugt einen ersten privaten Schlüssel des Cliens 3610 und einen ersten öffeentlichen Schlüssel des Clients 3610 unter Benutzung dieser Pseudozufallszahl PZ bzw. dieser anders erzeugten Zufallszahl.
  • Der erste Prozessor 10-1 des Rechners 2 des Clients 3610 verschlüsselt den ersten öffentlichen Schlüssel des Clients 3610 mittels des öffentlichen Schlüssels des Servers 3600.
  • Danach versendet der erste Prozessor 10-1 des Rechners 2 des Clients 3610 den verschlüsselten ersten öffentlichen Schlüssel des Clients 3610 an den ersten Prozessor 10-1 des Rechners 2 des Servers 3600.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers 3600 entschlüsselt nun diese Nachricht mit seinem ersten privaten Schlüssel. Hierdurch verfügt nun der erste Prozessor 10-1 des Rechners 2 des Servers 3600 über den ersten öffentlichen Schlüssel des Clients 3610 ohne dass dieser Dritten bekannt sein kann.
  • Im Anschluss Erzeugt der erste Prozessor 10-1 des Rechners 2 des Servers 3600 mitttels des Quantenzufallszahlengenerators 28 eine weitere, zweite Quantenzufallszahl QZ2. Die Bitbreite dieser zweiten Quantenzufallszahl ist bevorzugt gleich der Bitbreite, der Zufallszahl PZ des Clients 3610.
  • Der erste Prozessor 10-1 des Rechners 2 des Servers 3600 verschlüsselt nun die zweite Quantenzufallszahl QZ2 mit dem ersten öffentlichen Schlüssel des Clients 3610. Beispielsweise kann der erste öffentliche Schlüssel des Clients 3610 des Clients sein. In dem Fall kann der erste Prozessor 10-1 des Rechners 2 des Servers 3600 die zweite Quantenzufallszahl QZ2 beispielsweise durch bitweise XOR-Verknüpfung der zweiten Quantenzufallszahl QZ2 mit PZ zu einer verschlüsselten zweiten Quantenzufallszahl QZ2' verschlüsseln. Der erste Prozessor 10-1 des Rechners 2 des Servers 3600 versendet dann bevorzugt die verschlüsselte zweite Quantenzufallszahl QZ2' an den ersten Prozessor 10-1 des Rechners 2 des Client 3610 in einem Schritt 3640.
  • Der ersten Prozessor 10-1 des Rechners 2 des Client 3610 entschlüsselt die verschlüsselte zweite Quantenzufallszahl QZ2' uneter Benutzung seines ersten privaten Schlüssels zur zweiten Quantenzufallszahl QZ2. Hat der erste Prozessor 10-1 des Rechners 2 die zweite verschlüsselte Quantenzufallszahl QZ2' durch bitweise XOR-Verknüpfung der Zufallszahl PZ mit der zweiten Quantenzufallszahl QZ2 ermittelt, so kann der erste Prozessor 10-1 des Rechners 2 des Clients 3610 beispielsweise durch bitweise XOR-Verknüpfung der verschlüsselten zweiten Quantenzufallszahl QZ2' mit der ihm bekannten Zufallszahl PZ zur zweiten Quantenzufallszahl QZ2 entschlüsseln.
  • Bevorzugt nutzt der erste Prozessor 10-1 des Rechners 2 des Clients 3610 die ihm nun vorliegende zweite Quantenzufallszahl QZ2 als Grundlage für die Erzeugung eines zweiten privaten und eines zweiten öffentlichen Schlüssels gemäß einem asymmetrischen Verschlüsselungsverfahren. Bei dem asymmetrischen Verschlüsselungsverfahren kann es sich zum Beispiel um das RSA-Verfahren (ANHANG) handeln. Der erste Prozessor 10-1 des Rechners 2 des Clients 3610 verschickt nun seinen zweiten öffentlichen Schlüssel über den nicht abhörsicheren Kanal an den Server 3600. Hierbei verschlüsselt er bevorzugt diesen zweiten öffentlichen Schlüssel des Clients 3610 mit dem öffentlichen Schlüssel des Servers 3600. Der Server 3600 entschlüsselt den verschlüsselten zweiten öffentlichen Schlüssel des Clients 3610 und verwendet dann diesen zweiten öffentlichen Schlüssel des Clients für die Verschüsselung weiterer Nachrichten an den ersten Prozessor 10-1 des Rechners 2 des Client 3610. Bevorzugt erzeugt und sendet der erste Prozessor 10-1 des Rechners 2 des Servers 3600 nach einer vorbestimmten Zeit oder einer nach dem Versenden einer vorbestimmten Datenmenge an den Prozessor 10-1 des Rechners 2 des Clients 3610 einen neuen öffentlichen Schlüssel auf Basis einer neuen Quantenzufallszahl seines Quantenzufallszahlengenrators 28 QRNG verschlüsselt mit dem zweiten öffentlichen Schlüssel des Clients 3610. Bevorzugt führen dann der erste Prozesssor 10-1 des Rechners 2 des Servers 3600 und der erste Prozessor 10-1 des Rechners 2 des Clients das zuvor beschriebene Verfahren erneut durch, sodass die Schlüssel permanent wechsel. Dies macht es auch einem Quantencomputer unmöglich, die Schlüssel zu brechen.
  • Hierdurch kann nach Austausch dieser Schlüssel die Kommunikation auf Basis des gewählten asymmetrischen Verschlüsselungsverfahrens durchgeführt werden.
  • Figur 18
  • 18 zeigt schematisch das vorschlagsgemäße Verfahren 3700 zur Erzeugung einer Quntenzufallszahl. Das Verfahren3700 beginnt mit der Ezeugung 3710 eines zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels einer oder mehrerer erster SPAD-Dioden (401.1, 54). Das Verfahren 3700 setzt sich fort mit der Übertragung 3720 des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels eines vom Halbleitersubstrat (49, 48) verschiedenen Lichtwellenleiters (44, 401.2) an eine oder mehrere zweite SPAD-Dioden (401.3, 55). Es folgt die Wandlung 3700 des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) in ein Detektionssignal in Form eines Spannungssignal 405 der Entropie Quelle 401, die bevorzugt die ersten SPAD-Dioden 401.1 und den Lichtwellenleiter 401.2 und die zweiten SPAD-Dioden 401.3 umfasst. Dann folgt das Aufbereiten 3740, insbesondere ein Verstärken und/oder ein Filtern und/oder ein Analog-zu-Digital-Wandeln, des Detektionssignals in ein aufbereitetes Detektionssignal, insbesondere einen digitalen 14 Bit-Wert 407 des Analog-zu-Digital-Wandlers 403. Dann erfolgt das Abtrennen 3750 der durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignals von den durch spontane Emission entstandenen Pulsen des aufbereiteten Detektionssignals duch Vergleich des des aufbereiteten Detektionssignals mit einem Schwellwert, insbesondere in einem Komparator 404.2 und die Erzeugung eines entsprechenden Ausgangssignals 409, insbesondere des Komparators 404.2. Sodann folgt die Ermittlung 3760 eines ersten zeitlichen Abstands zwischen dem ersten Puls und dem zweiten Piuls eines ersten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignals und die Ermittlung eines zweiten zeitlichen Abstands zwischen einem dritten Puls und einem vierten pPuls eines zweiten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignalsund, isnbesondere zur Ermittlung des ersten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3 und des zweiten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3. Auf dieser Basis erfolgt dann die Ermittlung 3670 des Bitwerts eines Zufallsbits durch Vergleich des Werts des ersten zeitlichen Abstands und des Werts des zweiten zeitlichen Abstands. In einer letzten Überprüfung 3680 überprüft der erste Prozessor 10-1 des Rechners 2, ob die Anzahl n der ermittelten Zufallsbits noch kleiner als die gewünschte Zahl m der Zufallsbits der gewünschten Quantenzufallszahl ist. Sofern dies nicht der Fall ist wiederholt der erste Prozessor 10-1 des Rechners 2 die vorstehenden Schritte. Ansonsten beendet der Prozessor 10-1 des Rechners 2 den Prozess zur Erzeugung einer Quantenzufallszahl.
  • Die obige Beschreibung erhebt keinen Anspruch auf Vollständigkeit und beschränkt diese Offenbarung nicht auf die gezeigten Beispiele. Andere Variationen zu den offengelegten Beispielen können von denjenigen, die über gewöhnliche Fachkenntnisse auf dem Gebiet verfügen, anhand der Zeichnungen, der Offenbarung und der Ansprüche verstanden und ausgeführt werden. Die unbestimmten Artikel „ein“ oder „eine“ und dessen Flexionen schließen eine Vielzahl nicht aus, während die Erwähnung einer bestimmten Anzahl von Elementen nicht die Möglichkeit ausschließt, dass mehr oder weniger Elemente vorhanden sind. Eine einzige Einheit kann die Funktionen mehrerer in der Offenbarung genannter Elemente erfüllen, und umgekehrt können mehrere Elemente die Funktion einer Einheit erfüllen. Zahlreiche Alternativen, Äquivalente, Variationen und Kombinationen sind möglich, ohne dass der Anwendungsbereich der vorliegenden Offenbarung verlassen wird.
  • Soweit nichts anders angegeben ist, können sämtliche Merkmale der vorliegenden Erfindung frei miteinander kombiniert werden. Dies betrifft die gesamte hier vorgelegte Schrift. Auch die in der Figurenbeschreibung beschriebenen Merkmale können, soweit nichts Anderes angegeben ist, als Merkmale der Erfindung frei mit den übrigen Merkmalen kombiniert werden. Eine Beschränkung einzelner Merkmale der Ausführungsbeispiele auf die Kombination mit anderen Merkmalen der Ausführungsbeispiele ist dabei ausdrücklich nicht vorgesehen. Außerdem können gegenständliche Merkmale der Vorrichtung umformuliert auch als Verfahrensmerkmale Verwendung finden und Verfahrensmerkmale umformuliert als gegenständliche Merkmale der Vorrichtung. Eine solche Umformulierung ist somit automatisch mit offenbart.
  • In der vorausgehenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen verwiesen. Die Beispiele in der Beschreibung und den Zeichnungen sollten als illustrativ betrachtet werden und sind nicht als einschränkend für das beschriebene spezifische Beispiel oder Element zu betrachten. Aus der vorausgehenden Beschreibung und/oder den Zeichnungen und/oder den Ansprüchen können durch Abänderung, Kombination oder Variation bestimmter Elemente mehrere Beispiele abgeleitet werden. Darüber hinaus können Beispiele oder Elemente, die nicht wörtlich beschrieben sind, von einer fachkundigen Person aus der Beschreibung und/oder den Zeichnungen abgeleitet werden.
  • Bezugszeichenliste
  • 2
    Mikrocontroller;
    3
    Anschluss;
    4
    Steuervorrichtung;
    6
    nichtflüchtigen Speicher, EEPROM, externer Speicher;
    8
    Random Access Memory, externer Speicher;
    10-1
    erster Prozessor;
    10-2
    zweiter Prozessor;
    11
    Verkettung;
    12
    Testanschluss;
    14
    eng gekoppelter Speicher TCM;
    15
    Startadresse des Boot Roms;
    16
    nicht flüchtiges Boot-ROM;
    18
    Hashing-Engine;
    20
    erster One-Time-Programmable-Speicher (OTP);
    22
    zweiter One-Time-Programmable-Speicher (OTP);
    24
    Schaltung zur Deaktivierung von Tests, Deaktivierungsschaltung;
    26
    gesteuerte Anlage, Regelstrecke;
    28
    Quantenzufallszahlengenerator;
    30
    weiterer nicht flüchtiger Speicher, externer Speicher;
    32
    Schnittstelle;
    40
    Beispielhafte SPAD-Diode 30 für den Einsatz als Sensorelement eines Einzelphotonendetektors;
    41
    Isolation, beispielsweise Shallow-Trench-Isolation STI 41 der beispielhaften SPAD-Diode 40 oder LOCOS-Isolation;
    42
    Anodenkontakt 42 der beispielhaften SPAD-Diode40;
    43
    Kathodenkontakt 43 der beispielhaften SPAD-Diode 40. Der Kathodenkontakt 43 der beispielhaften SPAD-Diode 40 ist bevorzugt aus Indium-Zinn-Oxid (ITO) oder einem anderen transparenten und elektrisch leitendem Material gefertigt;
    44
    Lichtwellenleiter 44 für den Transport der Photonen der ersten SPAD-Diode 54 zur zweiten SPAD-Diode 55. Der Lichtwellenleiter 44 ist aus einem Abdeckoxid 44 oder optisch transparente Isolierschicht 44 der beispielhaften SPAD-Diode 40 gefertigt;
    45
    hoch dotiertes erstes Anschlussgebiet 45 eines ersten Leitungstyps, auch als n+ S/D Implantation bezeichnet. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um ein n+-dotiertes Gebiet im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    46
    erste dotierte Wanne 46 eines zweiten Leitungstyps. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um ein p- --dotiertes Gebiet im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    47
    zweite dotierte Wanne 47 eines zweiten Leitungstyps. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um ein p--dotiertes Gebiet im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    48
    epitaktische Schicht 48 eines zweiten Leitungstyps. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um eine p-dotierte epitaktische Schicht im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    49
    Basismaterial 49 des halbleitenden einkristallinen Wafers, der einen zweiten Leitungstyp aufweist. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material handelt es sich beispielsweise um einen p-dotierten einkristallinen Halbleiter-Wafer;
    50
    zweite dotierte Wanne eines zweiten Leitungstyps unterhalb des Anodenkontakts. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um ein p--dotiertes Gebiet im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    51
    hoch dotiertes zweites Anschlussgebiet eines zweiten Leitungstyps, auch als p+ S/D Implantation bezeichnet. In einer CMOS-Technologie mit einem p-dotiertem Wafer-Material kann es sich beispielsweise um ein p+-dotiertes Gebiet im halbleitenden Substratmaterial der SPAD-Diode 40 handeln;
    52
    Isolation, beispielsweise ein Oxid oder dergleichen;
    53
    Metallabdeckung des Lichtwellenleiters 44;
    54
    Erste SPAD-Diode. Die erste SPAD-Diode 55 dient zumindest zeitweise als Lichtquelle für die Bestrahlung der zweiten SPAD-Diode 45 mit Photonen der ersten SPAD-Diode 54;
    55
    Zweite SPAD-Diode 55. Die zweite SPAD-Diode 55 dient beispielsweise zumindest zeitweise als Fotodetektor für das Licht der ersten SPAD-Diode 54.
    56
    Oberfläche 56 des Wafers im Sinne der hier vorgelegten Schrift;
    57
    vertikal nach oben in senkrechter Richtung zur Oberfläche 56 emittiertes Licht 57 der ersten SPAD-Diode 54;
    58
    horizontal im Lichtwellenleiter 44 transportiertes Licht 58, das ein Teil des vertikal von der ersten SPAD-Diode 54 in den Lichtwellenleiter 44 eingestrahlten Lichts 57 ist;
    59
    vertikal nach unten in senkrechter Richtung zur Oberfläche 56 aus dem Lichtwellenleiter 44 in die zweite SPAD-Diode 55 eingestrahltes Licht 59 der ersten SPAD-Diode 54, das von der ersten SPAD-Diode 54 als senkrechtes Licht 57 in den Lichtwellenleiter 44 hinein emittiert wurde und dann vom Lichtwellenleiter 44 horizontal zur zweiten SPAD-Diode 55 transportiert wurde.
    61
    Datensätze
    62
    digitale Signaltur
    63
    Schnittstelle
    64
    Datenbusschnittstelle;
    65
    Datenbus. Der Datenbus kann im Sinne der hier vorgelegten Schrift eine drahttgebundene Datenverbindung oder eine drahtlose Datenverbindung sein;
    81
    Schnittstelle
    140
    Kontakt;
    141
    Metall 1 Leitungen;
    142
    Metall 2 Leitungen / Metall 2 Deckel;
    241
    Gatter
    242
    Gatter
    301
    Schnittstelle
    400
    Quantenzufallszahlengenerator QRNG;
    401
    Entropie-Quelle;
    401.1
    ein oder mehrere erste SPAD-Dioden;
    401.2
    Lichtwellenleiter;
    401.3
    ein oder mehrere zweite SPAD-Dioden;
    402
    Hochfrequenzverstärker;
    403
    Analog-Digital-Converter (ADC);
    404
    Messboard mit FPGA;
    404.1
    Konstante;
    404.2
    Komparator;
    404.3
    Zeit-zu-Digital-Konverter;
    404.4
    Entropie-Extraktions-Vorrichtung 404.4;
    404.5
    Watchdog;
    404.6
    linear rückgekoppeltes Scheiberegister. Die Rückkopplung ist bevorzugt ein einfach primitives Polynom, um Pseudozufallsbittfolgen zu erzeugen.
    404.7
    Signal-Multiplexer;
    404.8
    Finite State Machine (endlichen Automaten);
    404.9
    RAM;
    404.10
    Finish Flag;
    404.11
    Microcontroller;
    405
    Spannungssignal der Entropie Quelle 401;
    406
    Verstärkerausgangssignal 406 des Hochfrequenzverstärkers 402;
    407
    digitaler 14 Bit Wert 407 des Analog-zu-Digital-Wandlers 403. Andere Bitbreiten sind denkbar;
    408
    Signal der Konstanten 404.1;
    409
    Ausgangssignal 409 des Komparators 404.2;
    410
    Ausgang 410 des Zeit-zu-Digital-Wandlers 404.3;
    411
    Ausgang der Entronie Extraktion 404.4;
    412
    Seed S;413 Spannungsmonitor;
    414
    Signalleitungen;
    416
    Selektionssignal;
    417
    Pseudozufallssignalleitung;
    418
    Zufallsdatenwörter;
    419
    interner Datenbus des Quantenzufallszahlengenerators 400. Bevorzugt handelt es sich um den internen Datenbus der Steuervorrichtung 4;
    420
    Interrupt Signal des Watchdogs 404.5 des Quantenzufallszahlengenerators 400 bzw. der Steuervorrichtung 4 der Sicherung 1;
    500
    Flussdiagramm 500 des Entropie Extraktionsverfahrens;
    501
    erster Schritt 501 mit Ermittlung des ersten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3 und des zweiten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3 und Speicherung in einem Schieberegister der Entropie Extraktion 404.4;
    502
    zweiter Schritt des Vergleichens des ersten Werts mit dem zweiten Wert;
    503
    dritter Schritt der Bewertung des ersten Werts und des zweiten Werts und der Erzeugung des Zufallsbits;
    601
    erste Spikes;
    602
    zweite Spikes;
    603
    Schneidepegel;
    3000
    Erzeugung eines Socket-Descriptors;
    3010
    Binden des Socket-Descriptors an einen Port und eine IP-Adresse;
    3020
    passiver Wartezustand und Warten auf Verbindungsanfragen eines Microcontrollers 2 eines Clients;
    3030
    Herstellen einer Verbindung vom ersten Prozessor 10-1 des Rechners 2 des Servers zum ersten Prozessor 10-1 des Rechners 2 des Clients durch den ersten Prozessor 10-1 des Rechners 2 des Servers ;
    3040
    Erzeugen einer Quantenzufallszahl 411 und Erzeugung eines öffentlichen und eines privaten Schlüssels mittels eines RSA Verfahrens durch den ersten Prozessor 10-1 des Rechners 2 des Servers mittels eines Quantenzufallszahlengenerators 28 QRNG und eines RSA Verfahrens.
    3050
    Warten auf eine verschlüsselte Nachricht des ersten Prozessor 10-1 des Rechners 2 Clients durch den ersten Prozessor 10-1 des Rechners 2 des Servers;
    3060
    Entschlüsseln der Nachricht des mittels des in einem Speicher des Rechners 2 zwischengespeicherten privaten Schlüssels aus dem Schritt 3040 gemäß des RSA-Verfahrens
    3070
    Verschlüsselung der Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers mittels des öffentlichen Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Clients aus Schritt 3040 gemäß des RSA-Verfahrens durch den ersten Prozessor 10-1 des Rechners 2 des Servers;
    3080
    Senden der im Zischenspeicher des Rechners 2 des Servers gespeicherten, verschlüsselten Nachricht an den erste Prozessor 10-1 des Rechners 2 des Client über die Datenbusschnittstelle 64 des ersten Prozessors 10-1 des Rechners 2 des Servers und über den Datenbus 65 und über die Datenschnittstelle 64 des ersten Prozessors 10-1 des Rechners durch den ersten Prozessor 10-1 des Rechners 2 des Servers;.
    3090
    Ausführen der Funktion close() und Schließen der offenen Verbindung zu einem Socket, hier dem Socket des Client, und Benden der Kommunikation mit dem Client durch den ersten Prozessor 10-1 des Rechners 2 des Servers;
    3100
    Erzeugen eines Socket-Descriptors durch den ersten Prozessor 10-1 des Rechners 2 des Clients und stellen einer Verbindungsanfrage an den ersten Prozessor 10-1 des Rechners 2 des Servers unter Benutzung des Port und der IP-Adresse, welche in dem Schritt 3010 festgelegt wurden, durch den Der erste Prozessor 10-1 des Rechners 2 des Clients;
    3110
    Herstellen einer Verbindung zwischen dem Server-Socket aus dem Schritt 3010 und dem Client-Socket aus dem Schritt 3100;
    3120
    Erzeugen einer Quantenzufallszahl 411 und Erzeugung eines öffentlichen und eines privaten Schlüssels mittels eines RSA Verfahrens durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels eines Quantenzufallszahlengenerators 28 QRNG und eines RSA Verfahrens.
    3130
    Verschlüsseln der eigenen Nachricht des Clients mittels des öffentlichen Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Servers aus Schritt 3040 mittels des RSA-Verfahrens durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3140
    Senden der verschlüsselten Nachricht des Clients an den ersten Prozessor 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3150
    Warten auf eine verschlüsselte Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients und Empfangen einer Nachricht des ersten Prozessors 10-1 des Servers den ersten Prozessor 10-1 des Rechners 2 des Clients und Speichern der so empfangenen und typischerweise verschlüsselten Nachricht des ersten Prozessors 10-1 des Servers in einem temporären Zwischenspeicher des Rechners 2 durch den ersten Prozessor 10-1 des Rechners 2 des Clients und Lesen der ankommende Daten des ersten Prozessors 10-1 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels Ausführen der Funktion recv() von einem Socket-Discriptor, in diesem Fall von dem Socket-Descriptor des ersten Prozessors 10-1 des Rechners 2 des Clients aus dem Schritt 3100 und speichern die gelesenen Daten vorzugsweise in einen temporären Zwischenspeicher des Rechners 2 des Clients durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3160
    Entschlüsseln einer durch den ersten Prozessor 10-1 des Rechners 2 des Clients empfangenen, verschlüsselten Nachricht des ersten Prozessors 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels der Ausführung der Funktion Decrypt() durch den ersten Prozessor 10-1 des Rechners 2 des Clients unter Verwendung des privaten Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Clients aus dem Schrit 3120 mittels des RSA-Verfahrens und anschließendes Speichern der so entschlüsselten Nachricht in einen temporären Zwischenspeicher des Rechners 2 des Clients durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3170
    Schließen der offenen Verbindung zu dem Socket durch den ersten Prozessor 10-1 des Rechners 2 des Clients und Beenden der Kommunikation mit dem erste Prozessor 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3200
    Erzeugung zweier verschiedener Primzahlen p und q und des Produkts n=p*q und des Ergebnisses der Eulerschen Phi-Funktion phi = (p-1)(q-1) durch den ersten Prozessor 10-1 des Rechners 2 des Servers mittels der Funktion KeyExchangeServer();
    3210
    Erzeugung einer zu phi teilerfremden Zahl e mittels Aufruf der Funktion setE() durch den ersten Prozessor 10-1 des Rechners 2 des Servers, wobei die Zahl phi diejenige aus dem Schritt 3200 ist und wobei teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die Zahl phi gleichzeitig ganzzahlig teilt;
    3220
    Berechnung des multiplikativen Inversen zur Zahl e mittels des ersten Prozessors 10-1 des Rechners 2 des Servers unter Verwendung der Funktion findD(), sodass gilt (e*d)mod phi = 1;
    3230
    Warten auf eine eintreffende Nachricht des ersten Prozessors 10-1 des Rechners 2 des Clients, die typischewrweise den öffentlichen Schlüssel des Clients umfassen sollte, durch den ersten Prozessor 10-1 des Rechners 2 des Servers und Lesen der ankommenden Daten von einem Socket-Discriptor, in diesem Fall der Socket-Descriptor des Client durch den ersten Prozessor 10-1 des Rechners 2 des Servers und Speichern die gelesenen Daten vorzugsweise in einen temporären Zwischenspeicher des Rechners 2 durch den ersten Prozessor 10-1 des Rechners 2 des Servers;
    3240
    Versenden des öffentlichen Schlüssel (d,n) des ersten Prozessors 10-1 des Rechners 2 des Servers aus den Schritten 3200 und 3220 durch den ersten Prozessor 10-1 des Rechners 2 des Servers an den ersten Prozessor 10-1 des Rechners 2 des Clients über einen Socket-Descriptor, in diesem Fall der Socket-Descriptor des Clients aus dem Schritt 3030;
    3245
    Verlassen der Funktion KeyExchangeServer() durch den ersten Prozessor 10-1 des Rechners 2 des Servers;
    3250
    Erzeugen der Primzahl p und Erzeugen der von q verschiedenen Primzahl q und Erzeugen des Produkts n=p*q und Erzeugen der Eulerschen Phi-Funktion phi = (p-1)(q-1) jeweils durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels der Fuktion KexExchangeClient();
    3260
    Erzeugen eine zur Zahl phi aus dem Schritt 3250 teilerfremden ganzen Zahl e durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels der Funktion setE(), wobei teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die phi restfrei teilt;
    3270
    Berechnen des multiplikativen Inversen zur Zahl e durch den ersten Prozessor 10-1 des Rechners 2 des Clients mittels der Funktion findD(), sodass gilt (e*d)mod phi = 1;
    3280
    Versenden der öffentlichen Schlüssels (d,n) des ersten Prozessor 10-1 des Rechners 2 des Clients aus den Schritten 3250 und 3270 an den ersten Prozessor 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients, wobei der erste Prozessor 10-1 des Rechners 2 des Clients mittels der Funktion send() Daten über einen Socket-Descriptor, in diesem Fall der Socket-Descriptor des Clients aus Schritt 3100, sendet;
    3290
    Warten auf eine eintreffende Nachricht des ersten Prozessor 10-1 des Rechners 2 des Servers mit dem öffentlichen Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Servers durch den ersten Prozessor 10-1 des Rechners 2 des Clients und lesen ankommender Daten des ersten Prozessor 10-1 des Rechners 2 des Servers von einem Socket-Discriptor, in diesem Fall von dem Socket-Descriptor des Clients aus Schritt 3100, durch den ersten Prozessor 10- 1 des Rechners 2 des Clients mittels der Funktion recv() und speichern dieser Daten in einen temporären Zwischenspeicher des Recners 2 des Clients durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3295
    Verlassen der Funktion KeyExchangeClient() durch den ersten Prozessor 10-1 des Rechners 2 des Clients;
    3300
    Erzeugen einer Zufallszahl mittels eines Quantum Random Number Generators 28 QRNG durch den aufrufenden ersten Prozessor 10-1 und Ermitteln einer Primzahl in Abhängkeit von dieser Zufallszahl durch den aufrufenden ersten Prozessor 10-1 und Abspeichern dieser Primzahl als Variable p in dem Speicher des Rechners 2, dessen Teil der aufrufende erste Prozessor 10-1 ist;
    3110
    Erzeugen einer zweiten Zufallszahl mittels eines Quantum Random Number Generators 28 QRNG durch den aufrufenden ersten Prozessor 10-1 und Ermitteln einer Primzahl in Abhängkeit von dieser Zufallszahl durch den aufrufenden ersten Prozessor 10-1 und Abspeichern dieser Primzahl als Variable q in dem Speicher des Rechners 2, dessen Teil der aufrufende erste Prozessor 10-1 ist;
    3320
    Überprüfung, ob die logische Aussage q==p gilt, durch den aufrufenden ersten Prozessor 10-1 und Wiederholen der Schritte ab dem Schritt 3310 durch den aufrufenden Prozessor 10-1, wenn diese Aussage gilt;
    3330
    Berechnen des Produkts n= p * q durch den aufrufenden Prozessort 10-1;
    3340
    Berechnen der Euler'schen Phi-Funktion phi = (q-1) * (p-1) Ddurch den aufrufenden Prozessort 10-1;
    3350
    Verlassen der Funktion setPrimes() durch den aufrufenden Prozessor 10-1;
    3400
    Ablauf der Funktion SetE(), Beim Aufrufen der Funktion setE() im Schritt 3400 generiert der Aufrufende, in Fall des vorliegenden Dokument der erste Prozessor 10-1 des Rechners 2 des Servers oder der erste Prozessor 10-1 des Rechners 2 des Clients, eine zufällige Zahl e für die gilt, dasse teilerfremd zur Zahl phi ist. Teilerfremd in Sinne des vorliegenden Dokuments bedeutet, dass es keine natürliche Zahl außer der Zahl eins gibt, die gleichzeitig die Zahl e und die phi teilt. Der aufrufende Prozessor 10-1 kann die Zahl e sowohl durch eine Zufallszahl des Quantenzufallszahlen-Generators 28 QRNG als auch durch einen Pseudozufallszahlengenerator PRNG als auch durch Hochinterieren einer Integerzahl beginnend mit 2 erzeugen. Die Erzeugung mittels des Quanten-Zufallszahlen-Generators 18 QRNG ist aber bevorzugt;
    3410
    Überprüfen, ob die logische Aussage gcd(e,phi) != 1 erfüllt ist, durch den aufrufenden Prozessor 10-1 und wiederholem des Schritts 3400 durch den aufrufenden Prozessor 10-1, wenn die logische Aussage erfüllt ist. Der aufrufende Prozessor 10-1 berechnet berechnet mittels dieser Funktion gcd(a,b) den größten gemeinsamen Teiler der Übergabeparameter a, b und gibt das Ergebnis an den aufrufenden Prozessor 10-1 zurück;
    3420
    Verlassen der Funktion setE() und rückgabe des aktuelle Werts von e als Rückgabewert an den aufrufenden Prozessor 10-1 durch den aufrufenden Prozessor 10-1, wenn die logische Aussage gcd(e,phi) != 1 nicht erfüllt ist;
    3500
    Initaialisieren einer Variablen d mit 0 durch den aufrufenden Prozessoer 10-1, hier der erste Prozesssor 10-1 des Rechners 2 des Clients oder der erste Prozesssor 10-1 des Rechners 2 des Servers;
    3510
    Addieren der Zahl 1 zu der Zahl d durch den aufrufenden Prozessor 10-1;
    3520
    Überprüfen, ob die logische Aussage (e*d) (mod phi) == 1 erfüllt ist, durch den aufrufenden Prozessor 10-1 und Wiederholen der Schritte ab Schritt 3510, wenn die logische Aussage (e*d) (mod phi) == 1 nicht erfüllt ist;
    3530
    Verlassen der Funktion findD() durch den aufrufenden Prozesssor 10-1, wenn die logische Aussage (e*d) (mod phi) == 1 erfüllt ist, und Rückgeben des aktuellen Werts von d als Rückgabewert an den aufrufenden Prozessor 10-1, in Fall des vorliegenden Dokument den ersten Prozessor 10-1 des Rechners 2 des Servers oder der erste Prozesssor 10-1 des Rechners 2 des Clients;
    3600
    Server;
    3610
    Client;
    3620
    Versenden des auf einer ersten Quantenzufallszahl des Quantenzufallszahlgenerators 28 QRNG des Rechners 2 des Serbvers 3600 basierenden öffentlichen Schlüssels des Servers 3600 über einen nicht abhörsicheren Kanal an den ersten Prozessor 10-1 des Rechners 2 des Clients 3610 durch den ersten Prozessor 10-1 des Rechners 2 des Servers 3600;
    3630
    Erzeugen einer Pseudozufallszahl PZ oder einer anders erzeugten Zufallszahl durch den ersten Prozessor 10-1 des Rechners 2 des Clients 3610 und Speichern der Pseudozufallszahl PZ bzw. der anders erzeugten Zufallszahl in einem Speicher des Rechners 2 des Clients 3610 den ersten Prozessor 10-1 des Rechners 2 des Clients 3610 und Erzeugen eines ersten privaten Schlüssels des Clients 3610 und eines ersten öffentlichen Schlüssels des Clients 3610 unter Benutzung dieser Pseudozufallszahl PZ bzw. dieser anders erzeugten Zufallszahl durch den ersten Prozessor 10-1 des Rechners 2 des Clients 3610 und Verschlüsselung dieses ersten öffentlichen Schlüssel des Clients 3610 mittels des öffentlichen Schlüssels des Servers 3600 durch den ersten Prozessor 10-1 des Rechners 2 des Clients 3610 und Versenden des verschlüsselten ersten öffentlichen Schlüssel des Clients 3610 an den ersten Prozessor 10-1 des Rechners 2 des Servers 3600 durch den ersten Prozessor 10-1 des Rechners 2 des Clients 3610;
    3640
    Entschlüsseln der Nachricht des ersten prozessors 10-1 des Rechners 2 des Clients 3610 mitdem ersten privaten Schlüssel des ersten Porzessors 10-1 des rechners 2 des Clients 3610, sodass der erste Prozessor 10-1 des Rechners 2 des Servers 3600 über den ersten öffentlichen Schlüssel des Clients 3610 verfügt, ohne dass dieser Dritten bekannt sein kann, und Erzeugen einer weiteren, zweiten Quantenzufallszahl QZ2 durch den ersten Prozessor 10-1 des Rechners 2 des Servers 3600 mitttels des Quantenzufallszahlengenerators 28 QRNG, wobei die Bitbreite dieser zweiten Quantenzufallszahl ist bevorzugt gleich der Bitbreite, der Zufallszahl PZ des Clients 3610 ist, und Verschlüsseln der zweite Quantenzufallszahl QZ2 mit dem ersten öffentlichen Schlüssel des ersten Prozessors 10-1 des Rechners 2 des Clients 3610 zu einer verschlüsselten zweiten Quantenzufallszagl QZ2' durch den ersten Prozessor 10-1 des Rechners 2 des Servers 3600, wobei beispielsweise der erste öffentliche Schlüssel des Clients 3610 die Zufallszahl PZ des Clients sein kann und wobei in dem Fall der erste Prozessor 10-1 des Rechners 2 des Servers 3600 die zweite Quantenzufallszahl QZ2 beispielsweise durch bitweise XOR-Verknüpfung der zweiten Quantenzufallszahl QZ2 mit PZ zu einer verschlüsselten zweiten Quantenzufallszahl QZ2'verschlüsseln kann, und Versendung der verschlüsselten zweite Quantenzufallszahl QZ2' an den ersten Prozessor 10-1 des Rechners 2 des Client 3610 durch den ersten Prozessor 10- 1 des Rechners 2 des Servers 3600.
    3650
    Entschlüsselung der verschlüsselten zweiten Quantenzufallszahl QZ2' unter Benutzung des ersten privaten Schlüssels des ersten Prozessors 10-1 des Rechners 2 des Servers 3600 zur zweiten Quantenzufallszahl QZ2 durch den ersten Prozessor 10-1 des Rechners 2 des Client 3610. Hat der erste Prozessor 10-1 des Rechners 2 die zweite verschlüsselte Quantenzufallszahl QZ2' durch bitweise XOR-Verknüpfung der Zufallszahl PZ mit der zweiten Quantenzufallszahl QZ2 ermittelt, so kann der erste Prozessor 10-1 des Rechners 2 des Clients 3610 beispielsweise durch bitweise XOR-Verknüpfung der verschlüsselten zweiten Quantenzufallszahl QZ2' mit der ihm bekannten Zufallszahl PZ zur zweiten Quantenzufallszahl QZ2 entschlüsseln. Bevorzugt nutzt der erste Prozessor 10-1 des Rechners 2 des Clients 3610 die ihm nun vorliegende zweite Quantenzufallszahl QZ2 als Grundlage für die Erzeugung eines zweiten privaten und eines zweiten öffentlichen Schlüssels gemäß einem asymmetrischen Verschlüsselungsverfahren. Bei dem asymmetrischen Verschlüsselungsverfahren kann es sich zum Beispiel um das RSA-Verfahren (ANHANG) handeln. Der erste Prozessor 10-1 des Rechners 2 des Clients 3610 verschickt nun seinen zweiten öffentlichen Schlüssel über den nicht abhörsicheren Kanal an den Server 3600. Hierbei verschlüsselt er bevorzugt diesen zweiten öffentlichen Schlüssel des Clients 3610 mit dem öffentlichen Schlüssel des Servers 3600. Der Server 3600 entschlüsselt den verschlüsselten zweiten öffentlichen Schlüssel des Clients 3610 und verwendet dann diesen zweiten öffentlichen Schlüssel des Clients für die Verschüsselung weiterer Nachrichten an den ersten Prozessor 10-1 des Rechners 2 des Client 3610. Bevorzugt erzeugt und sendet der erste Prozessor 10-1 des Rechners 2 des Servers 3600 nach einer vorbestimmten Zeit oder einer nach dem Versenden einer vorbestimmten Datenmenge an den Prozessor 10-1 des Rechners 2 des Clients 3610 einen neuen öffentlichen Schlüssel auf Basis einer neuen Quantenzufallszahl seines Quantenzufallszahlengenrators 28 QRNG verschlüsselt mit dem zweiten öffentlichen Schlüssel des Clients 3610. Bevorzugt führen dann der erste Prozesssor 10-1 des Rechners 2 des Servers 3600 und der erste Prozessor 10-1 des Rechners 2 des Clients das zuvor beschriebene Verfahren erneut durch, sodass die Schlüssel permanent wechsel. Dies macht es auch einem Quantencomputer unmöglich, die Schlüssel zu brechen;
    3700
    Verfahren zur Erzeugung einer Quntenzufallszahl QZ mit m Zufallsbits;
    3710
    Ezeugung eines zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels einer oder mehrerer erster SPAD-Dioden (401.1, 54);
    3720
    Übertragung des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels eines vom Halbleitersubstrat (49, 48) verschiedenen Lichtwellenleiters (44, 401.2) an eine oder mehrere zweite SPAD-Dioden (401.3, 55);
    3730
    Wandlung des zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) in ein Detektionssignal in Form eines Spannungssignal 405 der Entropie Quelle 401, die bevorzugt die ersten SPAD-Dioden 401.1 und den Lichtwellenleiter 401.2 und die zweiten SPAD-Dioden 401.3 umfasst;
    3740
    Aufbereiten, insbesondere Verstärken und/oder Filtern und/oder Analog-zu-Digital-Wandeln, des Detektionssignals in ein aufbereitetes Detektionssignal, insbesondere einen digitalen 14 Bit-Wert 407 des Analog-zu-Digital-Wandlers 403;
    3750
    Abtrennen der durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignals von den durch spontane Emission entstandenen Pulsen des aufbereiteten Detektionssignals duch Vergleich des des aufbereiteten Detektionssignals mit einem Schwellwert, insbesondere in einem Komparator 404.2 und Erzeugung eines entsprechenden Ausgangssignals 409, insbesondere des Komparators 404.2;
    3760
    Ermittlung eines ersten zeitlichen Abstands zwischen dem ersten Puls und dem zweiten Piuls eines ersten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignals und Ermittlung eines zweiten zeitlichen Abstands zwischen einem dritten Puls und einem vierten pPuls eines zweiten Paares aus zwei aufeinander folgenden, durch Kopplungen der Emissionen einer ersten SPAD-Diode 401.1 und einer zweiten SPAD-Diode 401.3 entstandenen Pulse des aufbereiteten Detektionssignalsund, isnbesondere zur Ermittlung des ersten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3 und des zweiten Werts des Ausgangs 410 des Zeit-zu-Digital-Wandlers 404.3;
    3670
    Ermittlung des Bitwerts eines Zufallsbits durch Vergleich des Werts des ersten zeitlichen Abstands und des Werts des zweiten zeitlichen Abstands;
    3680
    Sofern die Anzahl n der bis zu diesem Schritt ermittelten Zufallsbits kleiner als die mewünschte Zahl m der Zufallsbits der gewünschten Quantenzufallszahl ist, erfolgt die Wiederholung der vorstehenden Schritte. Ansonsten erfolgt das Beenden des Prozesses zur Erzeugung einer Quantenzufallszahl mit m Zufallsbits.
    S2
    Lesen eines Ladeprogramms aus dem EEPROM 6;
    S4
    Überprüfung der digitalen Signatur des mittels des Boot-ROM-Codes anhand des im ersten OTP 20 gespeicherten öffentlichen Schlüssels;
    S6
    Lesen nachfolgender Datensätze mit Hilfe des Ladeprogramms
    S8
    prüfen der Signatur des neu aus dem EEPROM 6 gelesenen Datensatzes anhand eines öffentlichen Schlüssels, der in einem zuvor geladenen oder im OTP-Speicher 20 gespeicherten Datensatz eingebettet ist, durch den Ladecode;
    S20
    Lesen eines Datensatzes aus dem EEPROM;
    S21
    Speichern zumindest eines Teils der Daten des Satzes im TCM 14;
    S22
    Berechnen eines Hash-Werts für jedes Wort der verbleibenden Daten;
    S24
    Speichern des berechneten Hash-Werts im DRAM an einer mit dem gespeicherten Wort verbundenen Stelle mittels einer Zusammenarbeit des Prozessors 10 bzw. der Prozessoren 10 einerseits mit der Hash-Engine 18 andererseits;
    S26
    Neuberechnung des Hash-Werts, wenn ein Wort aus dem DRAM 8 gelesen wird, durch den Prozessor 10 und die Hash-Engine;
    S30
    Vergleich des neu berechneten Hash-Werts mit dem entsprechenden im DRAM gespeicherten Hash-Wert, mittels des Prozessors 10 und der Hash-Engine;
    S34
    Überprüfen, ob die Hash-Werte eine vorbestimmte Beziehung haben, z. B. gleich sind;
    S36
    Unterbrechen der Verarbeitung und/oder Erzeugen einer Fehlermeldung und/oder Ignorieren von Daten/ Code, wenn sie nicht die vorgegebene Beziehung aufweisen;
    S38
    Verarbeitung der gelesenen Daten mittels des Prozessors bzw. der Prozessoren 10, wenn die Hash-Werte eine vorbestimmte Beziehung haben, z. B. gleich sind;
  • Relevante Schriften
    • R. L. Rivest, A. Shamir, and L. Adleman, „A Method for Obtaining Digital Signatures and Public-Key Cryptosystems“ Communications oft he ACM, Februar 1978, Vol. 21, Nr. 2, Seiten 120 bis 126
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 102021128005 [0001]
    • DE 102021128004 [0002]

Claims (6)

  1. Vorrichtung, wobei die Vorrichtung einen Quantenzufallszahlengenerator (400) umfasst und wobei der Quantenzufallszahlengenerator folgende Vorrichtungsteile umfasst: eine erste SPAD-Diode (404.1) eine zweite SPAD-Diode (404.3), einen Lichtwellenleiter (404.2), der die erste SPAD-Diode (404.1) und die zweite SPAD-Diode (404.3) optisch miteinander koppelt, einen Verstärker (403) und/oder Filter, einen Analog-zu-Digital-Wandler (403), einen Komparator (404.2), einen Zeit-zu-Digital-Wandler (404.3), eine Entropie-Extraktionsvorrichtung (404.4), die Ausgangswerte des Zeit-zu-Digital-Wandlers (403) in erste und zweite Werte wandelt und daraus Zufallsbits erzeugt.
  2. Vorrichtung nach Anspruch 1, wobei die Vorrichtung einen Watchdog (404.5) umfasst, der Vorrichtungsteile des Quantenzufallszahlengenerators (400) überwacht.
  3. Vorrichtung nach einem der Ansprüche 1 bis 2, wobei die Vorrichtung einen Spannungsmonitor (413) aufweist, der analoge Werte analoger Signale erfasst und überwacht.
  4. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei die Vorrichtung einen Pseudozufallszahlengenerator (404.6), insbesondere in Form eines linear rückgekoppelten Schieberegisters (404.6), umfasst.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei die Vorrichtung einen Signalmultiplexer aufweist, der im Falle eines Fehlers von dem Signal des Ausgangs 411 der Entropie-Extrakionsvorrichtung auf ein Signal eines Ersatz-Zufallszahlengenerators oder eines Ersatzpseudozufallszahlengenerators (404.6) umschaltet.
  6. Vorrichtung nach einem der Ansprüche 1 bis 5, wobei der Startwert des Pseudozufallszahlengenerators (404.6) im Fehlerfall von zuvor korrekt erzeugten Zufallsbits des Quantenzufallszahlengenerators (400) abhängt.
DE102022125569.7A 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung Pending DE102022125569A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102021128005 2021-10-27
DE102021128005.2 2021-10-27

Publications (1)

Publication Number Publication Date
DE102022125569A1 true DE102022125569A1 (de) 2023-04-27

Family

ID=85795800

Family Applications (6)

Application Number Title Priority Date Filing Date
DE102022125570.0A Pending DE102022125570A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125572.7A Pending DE102022125572A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125569.7A Pending DE102022125569A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125573.5A Pending DE102022125573A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125568.9A Pending DE102022125568A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125571.9A Pending DE102022125571A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE102022125570.0A Pending DE102022125570A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125572.7A Pending DE102022125572A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung

Family Applications After (3)

Application Number Title Priority Date Filing Date
DE102022125573.5A Pending DE102022125573A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125568.9A Pending DE102022125568A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung
DE102022125571.9A Pending DE102022125571A1 (de) 2021-10-27 2022-10-04 Gerät zur Datenverarbeitung

Country Status (1)

Country Link
DE (6) DE102022125570A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240053459A1 (en) 2022-08-10 2024-02-15 Elmos Semiconductor Se Modified uart interface and uart data transmission for real-time data transmission of echo data to a higher-level computer system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101930271B1 (ko) 2017-05-16 2018-12-18 (주)피코씨이엘 단일 광자 아발란체 다이오드의 암흑전류를 이용한 난수발생기
US20200310759A1 (en) 2016-12-06 2020-10-01 National University Of Singapore Random number generator and method of fabricating the same
US10802800B1 (en) 2018-08-20 2020-10-13 Wells Fargo Bank, N.A. Systems and methods for single chip quantum random number generation
DE102021128004A1 (de) 2021-10-27 2023-04-27 Elmos Semiconductor Se Automobiler Prozessor mit PQC Verschlüsselungsunterstützung

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200310759A1 (en) 2016-12-06 2020-10-01 National University Of Singapore Random number generator and method of fabricating the same
KR101930271B1 (ko) 2017-05-16 2018-12-18 (주)피코씨이엘 단일 광자 아발란체 다이오드의 암흑전류를 이용한 난수발생기
US10802800B1 (en) 2018-08-20 2020-10-13 Wells Fargo Bank, N.A. Systems and methods for single chip quantum random number generation
DE102021128004A1 (de) 2021-10-27 2023-04-27 Elmos Semiconductor Se Automobiler Prozessor mit PQC Verschlüsselungsunterstützung

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BIOS. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 24.10.2021. URL: https://en.wikipedia.org/w/index.php?title=BIOS&oldid=1051566527 [abgerufen am 31.05.2022]
BURRI, S. [et al.]: SPADs for Quantum Random Number Generators and beyond. In: 19th Asia and South Pacific Design Automation Conference (ASP-DAC), 20-23 January 2014, Singapore, IEEE, S. 788-794. DOI: 10.1109/ASPDAC.2014.6742986
Integrated circuit. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 12.10.2021. URL: https://en.wikipedia.org/w/index.php?title=Integrated_circuit&oldid=1049603915 [abgerufen am 31.05.2022]
Session key. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 01.10.2020. URL: https://en.wikipedia.org/w/index.php?title=Session_key&oldid=981281879 [abgerufen am 31.05.2022]

Also Published As

Publication number Publication date
DE102022125571A1 (de) 2023-04-27
DE102022125572A1 (de) 2023-04-27
DE102022125573A1 (de) 2023-04-27
DE102022125568A1 (de) 2023-04-27
DE102022125570A1 (de) 2023-04-27

Similar Documents

Publication Publication Date Title
DE102013203415B4 (de) Erstellen eines abgeleiteten Schlüssels aus einem kryptographischen Schlüssel mittels einer physikalisch nicht klonbaren Funktion
DE102005030590B4 (de) Sicheres Patchsystem
DE102010042539B4 (de) Datensender mit einer sicheren, aber effizienten Signatur
DE112005001666T5 (de) Verfahren zum Bereitstellen von privaten Direktbeweis-Schlüsseln in signierten Gruppen für Vorrichtungen mit Hilfe einer Verteilungs-CD
DE102016210788B4 (de) Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
DE102022125569A1 (de) Gerät zur Datenverarbeitung
DE102021128004A1 (de) Automobiler Prozessor mit PQC Verschlüsselungsunterstützung
DE112019007421T5 (de) Speichergerät mit sicherer testmoduseingabe
EP1661069B1 (de) Prozessorschaltung und verfahren zum zuordnen eines logikchips zu einem speicherchip
WO2023072956A1 (de) Automobiler prozessor mit pqk verschlüsselungsunterstützung
DE102022128216A1 (de) Verfahren für eine doppelt verschlüsselte Freiraum-Quantenschlüsselverteilung
DE102023126167A1 (de) QRNG mit PRNG Nutzung, zugehöriges Verfahren und zugehörige Datenverarbeitungsanlage
EP3667529B1 (de) Verfahren und vorrichtung zum authentisieren einer fpga-konfiguration
DE102021110766B3 (de) Forensik-Modul und eingebettetes System
DE102018100357A1 (de) Chip und verfahren zum sicheren speichern von geheimen daten
DE102020114199A1 (de) Absicherung von Computersystemen gegen Manipulationen und Funktionsanomalien
DE102022125650A1 (de) Versorgungsnetzwerke für Fahrzeuge mit elektronischen Sicherungen und Verfahren zu derem Betrieb
DE102022125676A1 (de) Versorgungsnetzwerk mit elektronischen Sicherungen mit Teilnetzabwurfmöglichkeit
EP3901796A1 (de) Verfahren und vorrichtung zur erkennung von schädlichen diensten in einem netz
EP3038008A1 (de) Verfahren zur freischaltung eines zugriffs auf in einem gerät geschützt gespeicherte daten und anordnung zur durchführung des verfahrens
EP3812947A1 (de) Authentifizierung einer teilkonfiguration einer feldprogrammierbaren logikgatter-anordnung

Legal Events

Date Code Title Description
R012 Request for examination validly filed