DE102022125568A1 - device for data processing - Google Patents
device for data processing Download PDFInfo
- Publication number
- DE102022125568A1 DE102022125568A1 DE102022125568.9A DE102022125568A DE102022125568A1 DE 102022125568 A1 DE102022125568 A1 DE 102022125568A1 DE 102022125568 A DE102022125568 A DE 102022125568A DE 102022125568 A1 DE102022125568 A1 DE 102022125568A1
- Authority
- DE
- Germany
- Prior art keywords
- spad
- processor
- computer
- diode
- random number
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0852—Quantum cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Abstract
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur zur Erzeugung eines Zufallsbits. Das Verfahren umfasst das 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. Das Weitern umfasst das Verfahren das Trennen der Pulse der ersten Höhenklasse (601) von den Pulsen der zweiten Höhenklasse (602) mittels eines Schneidepegels (603, 404.1) und das 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, sowie das 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. Das Verfahren umfasst zusätzlich die Schritt des Vergleichens (502) des ersten Werts mit dem zweiten Wert und des Ausgebens (503) eines ersten logischen Werts als ein Zufallsbit, wenn der erste Wert größer als der zweite Wert ist, und des Ausgebens (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.The invention relates to a method and a device for generating a random bit. The method includes the generation of a pulse sequence with random intervals using at least two SPAD diodes, the pulse sequence including pulses from a first altitude class (601) and a second altitude class (602). The method also includes separating the pulses of the first height class (601) from the pulses of the second height class (602) by means of a cutting level (603, 404.1) and detecting (501) the first value of the time interval between a first pulse of the second height class (602) and a second pulse of the second height class (602), which differs from the first pulse, and the detection (501) of the second value of the time interval between a third pulse of the second height class (602), which differs from the first pulse, and a fourth pulse of the second height class (602) which is different from the first pulse and from the second pulse and from the third pulse. The method additionally comprises the steps of comparing (502) the first value with the second value and outputting (503) a first logical value as a random bit if the first value is greater than the second value and outputting (503) a second logical value different from the first logical value as the random bit if the first value is smaller than the second value.
Description
Prioritätenpriorities
Diese Patentanmeldung nitmmt die Priorität der deutschen Patentanmeldung
Auf den Prüfungsbescheid der Schwesteranmeldung
Feld der Erfindungfield of invention
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.The invention relates to a microcontroller which comprises at least one quantum process-based generator for true random numbers (Quantum Random Number Generator: QRNG) as a random number generator, in particular for encryption.
Die vorliegende Erfindung bezieht sich somit auf eine Datenverarbeitungsvorrichtung mit einem quantentechnologiebasierenden Zufallszahlengenerator.The present invention thus relates to a data processing device with a quantum technology-based random number generator.
Hintergrund der ErfindungBackground of the Invention
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.The automotive and other industries are increasingly exposed to a variety of piracy attacks. The counterfeiters copy the spare parts and products of the affected industrial producers and usually use their brand names. Another point of attack is data transmission within the products and/or data transmission to the product and back.
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.The entropy properties of common random number generators for such systems are typically inadequate. Quantum Random Number Generators: QRNG) are known from the prior art, but these are difficult to integrate or have a poor quantum yield.
AufgabeTask
Die Vorrichtung des unabhängigen Anspruchs löst dieses Problem. Weiterbildungen sind Gegenstand der Unteransprüche.The device of the independent claim solves this problem. Developments are the subject of the dependent claims.
Lösung der Aufgabesolution of the task
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.The automotive and other industries are increasingly exposed to a variety of piracy attacks. The counterfeiters copy the spare parts and products of the affected industrial producers and usually use their brand names. Another point of attack is data transmission within the products and/or data transmission to the product and back.
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.The entropy properties of common random number generators for such systems are typically inadequate. Quantum Random Number Generators: QRNG) are known from the prior art, but these are difficult to integrate or have a poor quantum yield.
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.It is known in the art to provide an integrated circuit that includes, among other features, a data processor. In some applications it is necessary to ensure that the data being processed, including the executable code, cannot be modified by unauthorized persons accessing data stored outside the integrated circuit or, if such access occurs, that it cannot go unnoticed.
ZUSAMMENFASSUNG DER ERFINDUNGSUMMARY OF THE INVENTION
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.According to one aspect of the present invention there is provided an apparatus comprising: an integrated circuit including a data processor and a non-volatile memory storing at least one security code; a first memory external to the integrated circuit storing data, the data being cryptographically protected in a first format; and a second memory external to the integrated circuit for storing data; where the pros device arranged to transfer data from the first memory via the integrated circuit to the second memory for access by the data processor from the second memory; the integrated circuit is arranged to validate during transmission the data read from the first memory using a security code stored in the non-volatile memory and, when the data is validated, to apply cryptographic protection in a second format to the validated data using a apply security codes stored in the non-volatile memory and store the data protected in the second format in the second memory. The proposed device uses a quantum technology-based, micro-integrated random number generator for encryption. Such a random number generator supplies a true random number, since the process of random number generation is based on an unpredictable quantum process.
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.By transmitting data through the integrated circuit and using the integrated circuit to validate data and protect the transmitted data, security is maintained because validation occurs within the integrated circuit and protection is applied.
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.The data is secured by cryptographically protecting the data in the first and second memories based on one or more security codes in the non-volatile memory of the integrated circuit.
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 one embodiment, only validated data from the first memory is processed and when data is read from the second memory by the data processor, only validated data from the second memory is processed.
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.In one embodiment, the second memory is random access memory (RAM) for the data processor, allowing the data processor to store and retrieve individual words that are individually protected, in contrast to the first memory, which is read-only memory (ROM) and which only allows read access to a data set.
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
- 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,
- 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
- c. die Verarbeitung des abgerufenen Wortes durch die Datenverarbeitungsanlage nur dann zuzulassen, wenn die neu berechneten und gespeicherten Hashes eine vorher festgelegte Beziehung aufweisen.
- An integrated circuit comprising a data processor, a non-volatile memory storing at least one security code, a hash calculator and an interface at the integrated circuit boundary; and a memory external to the integrated circuit for storing data for use by the processor, the memory being coupled to the data processor via the interface at the integrated circuit boundary for receiving words from the data processor and delivering words to the data processor Data processor and the hash calculator are arranged so that they
- a. calculate a hash function for each word depending on a security code stored in the non-volatile memory and store the hash associated with the word,
- b. retrieving stored words from memory, recomputing a hash function for each retrieved word using the security code and comparing the recomputed hash value with the stored hash value, and
- c. to allow the processing of the retrieved word by the data processing system only if the recalculated and stored hashes have a predetermined relationship.
Ausführungsformen der Erfindung werden nun beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.Embodiments of the invention will now be described by way of example with reference to the accompanying drawings.
Figurenlistecharacter list
-
1 zeigt ein schematisches Blockdiagramm eines Datenverarbeitungsgeräts in Kombination mit einem kontrollierten System;1 shows a schematic block diagram of a data processing device in combination with a controlled system; -
2 zeigt ein schematisches Blockdiagramm einer Schaltung zum Deaktivieren einer Testschnittstelle der Vorrichtung von1 ;2 FIG. 12 shows a schematic block diagram of a circuit for deactivating a test interface of the device of FIG1 ; -
3 zeigt ein Diagramm, das die Überprüfung digitaler Signaturen veranschaulicht;3 shows a diagram illustrating verification of digital signatures; -
4 zeigt ein Flussdiagramm, das die Verwendung von HASH-Funktionen beim Speichern und Abrufen von Daten aus einem DRAM der Vorrichtung von1 veranschaulicht.4 FIG. 12 is a flow chart showing the use of HASH functions in storing and retrieving data from a DRAM of the device of FIG1 illustrated. -
5 zeigt eine vorschlagsgemäße SPAD-Diode im Querschnitt.5 shows a proposed SPAD diode in cross section. -
6 zeigt die Kombination zweier vorschlagsgemäßer SPAD-Dioden im Querschnitt.6 shows the combination of two proposed SPAD diodes in cross section. -
7 zeigt die Kombination zweier vorschlagsgemäßer SPAD-Dioden im Querschnitt, wobei nun mehrere Isolationslagen den Lichtwellenleiter 44 ausbilden.7 FIG. 12 shows the combination of two proposed SPAD diodes in cross section, with several insulation layers now forming theoptical waveguide 44. -
8 zeigt die Einbindung der SPAD-Dioden und des Lichtwellenleiters in eine Auswerte- und Betriebsschaltung8th shows the integration of the SPAD diodes and the optical fiber in an evaluation and operating circuit -
9 entspricht der8 , die nun um Überwachungsschaltkreise ergänzt ist.9 equals to8th , which is now supplemented by monitoring circuits. -
10 zeigt ein typisches Ausgangssignal der zweiten SPAD-Diode.10 shows a typical output signal of the second SPAD diode.
Merkmale der ErfindungFeatures of the invention
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.The features of the invention summarize this again. Applications of the technical teaching can combine the features with one another, provided these combinations do not cause factual contradictions. In this respect, the dependencies and references presented here only represent particularly preferred, exemplary embodiments.
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.
- - with a semiconductor crystal and
- - with memory elements and
- - with at least one
internal bus 2 and - - with at least one 8/16/32/15-
bit microcontroller core 16 and - - with one or more data interfaces and
- - with at least one quantum process-based generator for true random numbers (English: Quantum Random Number Generator: QRNG) 15, and
- - wherein the memory elements are connected to the
internal bus 2 and - - wherein the data interface is connected to the
internal bus 2 and - - wherein the quantum process based true random number generator (QRNG) 15 is connected to the
internal bus 2 and - - wherein the
microcontroller core 16 is connected to theinternal bus 2 and - - wherein the quantum process-based true random number generator (QRNG) 15 generates a random number upon request of the
microcontroller core 16, and - - Wherein the
microcontroller core 16 generates a key with the aid of a program from one or more of its memory elements and with the aid of the random number and - - wherein the
microcontroller core 16, using a program from one or more of its memory elements and using the key, encrypts and decrypts data which it exchanges via the data interface with devices outside the secure microcontroller and - - wherein the semiconductor crystal comprises these sub-devices of the
secure microcontroller 1 in one piece, - - These sub-devices of the
secure microcontroller 1 comprising the memory elements, theinternal bus 2, the at least one 8/16/32/15-bit microcontroller core 16, the data interfaces and the quantum process-based generator for real random numbers (English: Quantum Random Number Generator: QRNG ) 15 include.
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.
- - Wherein the memory elements are one or more read/write
memories RAM 3 and/or one or more writable non-volatile memories, inparticular EEPROM memory 4 and/orflash memory 4 and/orOTP memory 4, and/or one or several read-only memories and/or one or more non-volatile manufacturer memories, in particular one ormore manufacturer ROMs 6 and/or one or more manufacturer EEPROMs and/or one or more manufacturer flash memories.
Merkmal 3: Sicherer Mikrocontroller 1 nach Merkmal 2,
- - wobei das Hersteller-
ROM 6 die Boot-Software umfasst.
- - where the
manufacturer ROM 6 contains the boot software.
Merkmal 4: Sicherer Mikrocontroller 1 nach Merkmal 2 oder 3,
- - wobei eine Hersteller-
Speicher Firewall 8 zwischen dem Hersteller-Speicher 6 unddem internen Bus 2 vorgesehen ist.
- - A
manufacturer memory firewall 8 between themanufacturer memory 6 and theinternal bus 2 is provided.
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.
- - with one or more of the following components:
- - a basic clock generation 21 (CLK)
- - a
clock generator circuit 12 and/or - - a
reset circuit 22 and/or - - a power supply or a Vcc circuit 23 with voltage regulators providing the operating voltages, and/or
- - a
ground circuit 24 and/or - - an input/output circuit 25 and/or
- - one or more processing modules,
- - the processing modules communicating with the
internal bus 2 and - - wherein the processing modules comprise one or more of the following modules:
- - a CRC module (Cyclic Redundancy Check) 11,
- - a
clock generator module 12, - - with a DES accelerator and/or an AES accelerator 7
- - one or
more timer modules 13, - - a security monitoring and
control circuit 14, - - a data interface, in particular a universal asynchronous 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 unddem Mikrocontrollerkern 16 zur Verfügung stellt.
- - With at least one
first SPAD diode 44 and - - With at least one
second SPAD diode 45 and - - With at least one optical fiber 34 and
- - having at least one processing circuit and
- - with at least one operating circuit,
- - wherein the quantum process-based true random number generator (QRNG) 15 comprises at least the
first SPAD diode 44 as a light source for the optical quantum signal and - - wherein the quantum process-based true random number generator (QRNG) 15 comprises at least the
second SPAD diode 45 as a photodetector for the optical quantum signal, and - - wherein the quantum process-based true random number generator (QRNG) 15 comprises at least the processing circuitry and
- - wherein the quantum process-based true random number generator (QRNG) 15 comprises at least the optical fiber and
- - wherein the at least one optical waveguide 34 optically couples the at least one
first SPAD diode 44 to the at least onesecond SPAD diode 45 and - - wherein the operating circuit supplies the
first SPAD diode 44 with electrical energy such that the first SPAD diode emits light 44 and - - Wherein the processing circuit detects the signal of the
second SPAD diode 45 and forms the random number from it and makes it available to themicrocontroller core 16 .
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.
- - wherein the semiconductor crystal has a
surface 46 and - - wherein the semiconductor crystal has a semiconducting material below its
surface 46 and - - wherein the
surface 46 of the semiconductor crystal has a metallization stack and - - wherein the metallization stack comprises a typically structured and optically transparent and electrically insulating layer 34 and
- - wherein at least part of this typically structured, transparent and electrically insulating layer of the
surface 46 forms the optical waveguide 34 and - - Wherein the
first SPAD diode 44 radiates from the semiconducting material of the semiconductor substrate into this optical waveguide 34 and - - wherein the optical waveguide irradiates the
second SPAD diode 44 in such a way that the light from within the light waveguide 34 re-enters the semiconducting material of the semiconductor substrate from the surface and hits device parts of thesecond SPAD diode 44 there.
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.
- - wherein the at least one operating circuit supplies the at least one
first SPAD diode 44 with electrical energy at least temporarily and - - wherein the at least one
first SPAD diode 44 feeds photons into the at least one optical waveguide 34 when supplied with sufficient electrical energy and - - wherein the at least one optical fiber 34 radiates such photons into the
second SPAD diode 45.
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
- - wherein a data interface of the one or more data interfaces is a wired automotive data bus interface and
- - The wired automotive data bus interface in particular
- - a CAN data bus interface and/or
- - a CAN FD data bus interface and/or
- - a Flexray data bus interface and/or
- - a PSl5 data bus interface and/or
- - a DSL3 data bus interface and/or
- - a LIN data bus interface and/or
- - an Ethernet data bus interface and/or
- - a LIN data bus interface and/or
- - includes a MELIBUS data bus interface
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
- - wherein a data interface of the one or more data interfaces is a wireless data bus interface and
- - the wireless data bus interface in particular
- - a WLAN interface and/or
- - Includes a Bluetooth interface
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.
- - wherein a data interface of the one or more data interfaces is a wired data bus interface and
- - the wireless data bus interface in particular
- - a KNX data bus interface and/or
- - an EIB data bus interface and/or
- - a DALI data bus interface and/or
- - a PROFIBUS data bus interface
- - is.
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.
- the device having an integrated circuit (4) with a first processor (10-1) and a non-volatile memory (16) and
- the device having a first memory,
- wherein the non-volatile memory stores at least one security code;
- wherein the first memory stores data and
- wherein the data in the first memory is cryptographically protected in a first format, and
- wherein the integrated circuit is set up to validate the data read from the first memory during a transmission of data from the first memory and,
- the apparatus comprising a quantum random number generator (28) and
- wherein the integrated circuit and the quantum random number generator (28) are fabricated in a semiconductor crystal and
- the semiconductor crystal having a surface (56) and
- said semiconductor crystal having a semiconducting material below its surface (56) and
- wherein the surface (56) of the semiconductor crystal has a metallization stack and
- wherein the metallization stack has a typically structured and optically transparent and electrically insulating layer (44) and
- at least part of this typically structured, transparent and electrically insulating layer (44) of the surface (56) forming the
optical waveguide 44 and - wherein the first SPAD diode (54) radiates photons (57) from the semiconducting material of the semiconductor substrate into this optical waveguide (44) and
- wherein the at least one optical waveguide (44) transports such photons (58) to the second SPAD diode (55) and
- wherein the optical light waveguide (44) irradiates the second SPAD diode (55) in such a way that the light (59) from within the light waveguide (44) re-enters the semiconducting material of the semiconductor substrate from the surface (56) and there device parts of the second SPAD diode (55) meets and
- wherein the first SPAD diode (54) and the second SPAD diode (55) and the optical fiber (44) are part of the quantum random number generator (28).
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.
- wherein the device has at least one operating circuit and
- wherein the at least one operating circuit supplies the at least one first SPAD diode (54) with electrical energy at least at times and
- wherein the at least one first SPAD diode (54) feeds photons (57) into the at least one optical waveguide (44) when supplied with sufficient electrical energy and
- wherein the at least one optical waveguide (44) transports such photons (58) to the second SPAD diode (55) and
- wherein the at least one optical waveguide (44) radiates such photons (59) into the second SPAD diode (55).
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.
- wherein the quantum random number generator (28) comprises at least the first SPAD diode (54) as a light source for the optical quantum signal and
- wherein the quantum random number generator (28) comprises at least the second SPAD diode (55) as a photodetector for the optical quantum signal and
- wherein the quantum random number generator (28) comprises at least one processing circuit and
- wherein the quantum random number generator (28) comprises at least the optical waveguide (44) and
- wherein the at least one optical waveguide (44) optically couples the at least one first SPAD diode (54) to the at least one second SPAD diode (55) and
- wherein the operating circuit provides electrical power to the first SPAD diode (54) such that the first SPAD diode emits light (54), and
- wherein the processing circuit detects the signal of the second SPAD diode (55) and forms the random number therefrom and makes it available to the data processor (10) or another part of the device.
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.
- wherein the first memory is external to the integrated circuit and
- the device having a second memory for storing data
- and wherein the second memory is external to the integrated circuit; located;
- the device being set up in such a way
- in that it transfers data from the first memory via the integrated circuit to the second memory for access by the data processor from the second memory, and
- wherein the integrated circuit is set up to
- during a transfer of data from the first memory to the second memory, validate the data read from the first memory using a security code stored in the non-volatile memory and,
- if the data is validated, applying cryptographic protection in a second format to the validated data using a security code stored in the non-volatile memory, and
- store the data protected in the second format in the second memory.
Merkmal 16: Vorrichtung nach einem der Merkmale 12 bis 15,
- wobei der erste Speicher einen Festwertspeicher aufweist.
- wherein the first memory comprises a read-only memory.
Merkmal 17: Vorrichtung nach einem der Merkmale 15 bis 16,
- wobei der zweite Speicher einen Direktzugriffsspeicher aufweist.
- wherein the second memory comprises a random access memory.
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.
- wherein the cryptographic protection applied to the data in the first storage differs from the cryptographic protection applied to the data in the second storage.
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.
- wherein the integrated circuit includes a memory for storing data to be processed by the data processor, and
- the device being arranged to store some data of the validated dataset in the memory and the rest in the second memory.
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.
- wherein the first memory stores data in a first data format and the second memory is arranged to store data in a second, different data format.
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.
- wherein the data stored in the first memory is protected by a first authentication technique, and
- wherein the device is arranged to protect the data in the second memory by a second, different authentication technique.
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.
- wherein the data in the first memory is stored in at least one record and the or each record is cryptographically protected as a set and
- wherein the device is arranged to store in the second memory words or groups of words of a validated data set, each word or group of words being cryptographically protected separately.
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.
- that it reads the words or groups of words from the second memory, and
- that it validates the words or groups of words read using a security code stored in the non-volatile memory and
- that it processes the read and validated words or groups of words in the data processor.
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.
- wherein the integrated circuit has a hash calculator, and
- wherein the data processor and the hash calculator are arranged so
- that a) calculate a hash function for each word or group of words as a function of a security code stored in the non-volatile memory and store the hash in connection with the word or group in the second memory,
- b) retrieving a stored word or group from the second memory, recomputing a hash function for the retrieved word or group using the security code and comparing the recomputed hash with the stored hash, and
- c) only allow the retrieved word or group to be processed by the data processing system if the newly calculated and stored hashes are in a specific relationship to one another.
Merkmal 15: Vorrichtung nach Merkmal 24,
- wobei der Hash-Rechner eine Schaltung in der integrierten Schaltung ist.
- wherein the hash calculator is a circuit in the integrated circuit.
Merkmal 26 Vorrichtung nach einem der Merkmale 12 bis 25,
- wobei der nichtflüchtige Speicher der integrierten Schaltung ein einmalig programmierbarer Speicher ist.
- wherein the non-volatile memory of the integrated circuit is a one-time programmable memory.
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.
- wherein the or each data set stored in the first memory is cryptographically protected by a corresponding digital signature.
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.
- wherein the or each data set stored in the first memory is cryptographically protected by a corresponding digital signature with the aid of at least one random number of the quantum random number generator.
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.
- wherein a security code is stored in the non-volatile memory of the integrated circuit, which the device has at least partially generated by means of at least one random number of the quantum random number generator (28).
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.
- wherein the device is arranged to validate a digital signature of the data set with reference to or with reference to the security code stored in the non-volatile memory of the integrated circuit.
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.
- wherein the data processing device comprises an integrated circuit and
- wherein the integrated circuit comprises a data processor and
- wherein the integrated circuit includes a non-volatile memory and
- wherein the non-volatile memory stores at least one security code and
- wherein the integrated circuit has a hash calculator and
- wherein the integrated circuit has an interface at the boundary of the integrated circuit and
- wherein the integrated circuit comprises a quantum random number generator and
- wherein the integrated circuit and the quantum random number generator are fabricated in a semiconductor crystal and
- the semiconductor crystal having a surface (56) and
- said semiconductor crystal having a semiconducting material below its surface (56) and
- wherein the surface (56) of the semiconductor crystal has a metallization stack and
- wherein the metallization stack has a typically structured and optically transparent and electrically insulating layer (44) and
- at least part of this typically structured, transparent and electrically insulating layer (44) of the surface (46) forming the optical waveguide (44) and
- wherein the first SPAD diode (54) radiates photons (57) from the semiconducting material of the semiconductor substrate into this optical waveguide (44) and
- wherein the at least one optical waveguide (44) transports such photons (58) to the
second SPAD diode 55 and - wherein the optical light waveguide (44) irradiates the second SPAD diode (55) in such a way that the light (59) from within the light waveguide (44) re-enters the semiconducting material of the semiconductor substrate from the surface (56) and there device parts of the second SPAD diode (55) meets and
- wherein the first SPAD diode (54) and the second SPAD diode (55) and the optical fiber (44) are part of the quantum random number generator (28).
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.
- wherein the data processor and/or another device part of the data processing device encrypts or decrypts data with the aid of at least one random number of the quantum random number generator.
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.
- wherein the data processing device has a memory and
- wherein the memory is for storing data when used by the processor and;
- wherein the memory is coupled to the data processor to receive words from the data processor and to provide words to the data processor.
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.
- wherein the memory is external to the integrated circuit and
- wherein the memory is coupled to the data processor via the integrated circuit boundary interface for receiving words from the data processor and providing words to the data processor.
Merkmal 35 Datenverarbeitungsgerät nach einem der Ansprüche 31 bis 34,
- wobei der Datenprozessor und der Hash-Rechner sind so angeordnet, dass sie
- - 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,
- - 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
- - c) die Verarbeitung des abgerufenen Wortes durch die Datenverarbeitungsanlage nur dann zuzulassen, wenn die neu berechneten und gespeicherten Hashes eine vorher festgelegte Beziehung aufweisen.
- where the data processor and the hash calculator are arranged so that they
- - a) calculate for each word a hash function depending on a security code stored in the non-volatile memory and store the hash in connection with the word,
- - b) retrieving stored words from memory, recalculating a hash function for each retrieved word using the security code and comparing the recalculated hash value with the stored hash value, and
- - c) allow the processing of the retrieved word by the data processing system only if the newly calculated and stored hashes have a predetermined relationship.
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.
- an integrated circuit including data processing means and non-volatile memory means storing at least one security code;
- a first means storing data, the data being cryptographically protected in a first format by at least one authentication code; and
- a quantum random number generator (28) as part of the integrated circuit,
- wherein the quantum random number generator comprises a first SPAD diode (54) and a second SPAD diode (55) coupled to each other via an optical fiber (44) fabricated outside the semiconductor substrate of the integrated circuit on the surface of the integrated circuit, or can be paired and
- wherein the device at least temporarily uses at least one random number of the quantum random number generator (28) for encryption or decryption of a datum or the authentication code.
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.
- wherein the device has a second device, in particular outside the integrated circuit, for storing data and
- the apparatus comprising means for transferring data from the first memory via the integrated circuit to the second memory for access by the data processor from the second memory, and
- the device comprising means for validating the data read from the first memory during transmission using a security code stored in the non-volatile memory and
- the device comprising means for applying a cryptographic protection comprising at least one authentication code to the validated data in a second format using a security code stored in the non-volatile memory when the data is validated and
- the apparatus having means for storing the protected data in the second memory in the second format.
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.
- the device comprising a quantum random number generator (400) and
- wherein the quantum random number generator comprises the following device parts:
- a first SPAD diode (404.1)
- a second SPAD diode (404.3),
- an optical waveguide (404.2) which optically couples the first SPAD diode (404.1) and the second SPAD diode (404.3) to one another,
- an amplifier (403) and/or filter,
- an analog to digital converter (403),
- a comparator (404.2),
- a time-to-digital converter (404.3),
- an entropy extraction device (404.4) which converts output values of the time-to-digital converter (403) into first and second values and generates random bits therefrom.
Merkmal 39: Vorrichtung nach Merkmal 27,
- wobei die Vorrichtung einen Watchdog (404.5) umfasst, der Vorrichtungsteile des Quantenzufallszahlengenerators (400) überwacht.
- wherein the device comprises a watchdog (404.5) that monitors device parts of the quantum random number generator (400).
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.
- the device comprising a voltage monitor (413) which acquires and monitors analog values of analog signals.
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.
- wherein the device comprises a pseudo-random number generator (404.6), in particular in the form of a linear feedback shift register (404.6).
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.
- the device having a signal multiplexer which, in the event of an error, switches from the signal of the
output 411 of the entropy extraction device to a signal of a substitute random number generator or a substitute pseudo-random number generator (404.6).
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.
- the start value of the pseudo-random number generator (404.6) in the event of an error depending on previously correctly generated random bits of the quantum random number generator (400).
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.
- Generating a pulse sequence with random intervals by means of at least two SPAD diodes, the pulse sequence comprising pulses from a first altitude class (601) and a second altitude class (602);
- separating the pulses of the first height class (601) from the pulses of the second height class (602) by means of a slice level (603, 404.1);
- detecting (501) a first value of the time interval between a first pulse of the second height class (602) and a second pulse of the second height class (602), which differs from the first pulse;
- Detecting (501) the second value of the time interval between a third pulse of the second height class (602), which differs from the first pulse, and a fourth pulse of the second height class (602), which differs from the first pulse and from the second pulse and from the third pulse is different.
- comparing (502) the first value to the second value and
- outputting (503) a first logical value as a random bit if the first value is greater than the second value, and
- outputting (503) a second logical value different from the first logical value as the random bit if the first value is less than the second value.
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.
- generation (3710) of a random single photon stream (57, 58, 59, 401.2) from single photons by means of one or more first SPAD diodes (401.1, 54);
- Transmission (3720) of the random stream of single photons (57, 58, 59, 401.2) by means of an optical waveguide (44, 401.2) different from the semiconductor substrate (49, 48) to one or more second SPAD diodes (401.3, 55);
- converting (3730) the random single photon stream (57, 58, 59, 401.2) into a detection signal using the one or more second SPAD diodes (401.3, 55);
- processing (3740) the detection signal into a processed detection signal;
- Separating (3750) the emissions caused by couplings of a first SPAD diode (401.1) of the one or more first SPAD diodes (401.1, 54) and a second SPAD diode (401.3, 55) of the one or more second SPAD diodes (401.3, 55) resulting pulses of the processed detection signal from the pulses of the processed detection signal resulting from spontaneous emission of the second SPAD diode (401.3, 55) by comparing the processed detection signal with a threshold value (404.1);
- Determination (3760) of a first time interval between the first pulse and the second pulse of a first pair of two consecutive ones created by coupling the emissions of a first SPAD diode (401.1, 54) and a second SPAD diode (401.3, 55). Pulses of the processed detection signal and determination of a second time interval between a third pulse and a fourth pulse of a second pair of two consecutive ones, by coupling the emissions of a first SPAD diode (401.1, 54) and a second SPAD diode (401.3, 55 ) resulting pulses of the processed detection signal;
- determining (3670) the bit value of a random bit by comparing the value of the first time interval and the value of the second time interval;
- If the number (3680) n of determined random bits is less than the desired number m of random bits of the quantum random number QZ to be generated, repeat the above steps (3710 to 3770) and end the process for generating a quantum random number if the number (3680) n of the determined random bits is greater than or equal to the desired number m of random bits of the quantum random number QZ to be generated.
VorteilAdvantage
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.The safe microcontroller presented here has an improved entropy of its random number generator. As a result, the encryption of this secure microcontroller is post-quantum secure, in contrast to the prior art. However, the advantages are not limited to this.
Beschreibung der FigurenDescription of the figures
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.The figures show simplified examples of essential parts of the proposed devices and methods. By way of illustration, specific examples constructed in accordance with the teachings of this disclosure will now be described with reference to the accompanying drawings, in which:
DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGEN DER ERFINDUNGDETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
diesem Beispiel ist das Datenverarbeitungsgerät ein Rechner 2 zur Steuerung einer Regelstrecke 26.In this example, the data processing device is a
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.The following description first describes the configuration of the
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.The
Der Rechner 2 umfasst in dem Beispiel der
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.The
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.The processor(s) 10 execute(s) instructions from tightly coupled
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.The contents of the
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.The
Wie in
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
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.The storage of words in DRAM with appropriate authentication codes facilitates random access to the words by the processor(s) 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.The hash function can be any suitable hash function. An example is the well-known HMAC function. In this example, the HASH function uses the secret key stored in the
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.By providing the cryptographic boundary and protecting the data stored in
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 order to prevent unauthorized use of the test port, the
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
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 another example, the
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.In another example, the security code may consist of three or more bits that change using the signed access code. When manufacturing, the code is "000" and when releasing to a user, it is "001". If an error occurs, the manufacturer changes the code to "011" to enable a test. After testing, the code is changed to "111", which locks
Sicherheitscodes von zwei oder mehr Bits ermöglichen einen Prüfpfad für die Prüfung (oder etwaige unbefugte Prüfversuche) nach der Herstellung.Security codes of two or more bits allow an audit trail for testing (or any unauthorized testing attempts) after manufacture.
Weitere Schnittstelle und weiteres EEPROMAdditional interface and additional EEPROM
Wie in
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.The
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.The further
Der weitere nichtflüchtige Speicher kann andere verschlüsselte und/oder digital signierte Daten enthalten.The other non-volatile memory may contain other encrypted and/or digitally signed data.
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.The additional security parameters outside of the
Herstellung des Rechners 2.Making the
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.During manufacture of the
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.The secret key is not stored in the
Die Hash-Funktion kann jede geeignete Hash-Funktion sein und ist nicht auf das oben beschriebene Beispiel von HMAC beschränkt.The hash function can be any suitable hash function and is not limited to the HMAC example described above.
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.The on-chip quantum
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.The firmware stored in
Anstelle eines EEPROMs kann der nichtflüchtige Speicher 6 ein beliebiger anderer geeigneter Baustein sein, beispielsweise ein FLASH-Speicher.Instead of an EEPROM, the
Der weitere nichtflüchtige Speicher 30 kann ein serieller EEPROM sein.The further
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.The one-time
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.The DRAM can be further protected by making access to the DRAM very difficult physically and detectable if attempted. For example, the connections between the DRAM and the
Der gesamte Rechner 2 kann in einem manipulationssicheren Gehäuse mit manipulationssicheren Dichtungen untergebracht werden.The
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.The
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.The semiconductor crystal of the
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.Typically, at least one operating circuit supplies the at least one
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 a further development of the proposed
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 a further development of the proposed
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.In a further development of the proposed
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.Although the invention has been described by way of example with reference to a
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.Embodiments of the invention store data external to the integrated circuit. Embodiments of the invention ensure that the data to be processed, including the executable code, cannot be modified by unauthorized persons accessing the data stored outside the integrated circuit or, if such access occurs, ensure that it cannot go unnoticed can be changed. Security is ensured by security data, and the Security data itself is secure because it is stored within the integrated circuit and protected from unauthorized access.
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. The above description is not exhaustive and does not limit this disclosure to the examples shown. Other variations to the disclosed examples may be understood and practiced by those of ordinary skill in the art given the drawings, disclosure, and claims. The indefinite article "a" or "an" and its inflections do not exclude a plurality, while the mention of a definite number of elements does not exclude the possibility of there being more or fewer elements. A single entity may perform the functions of multiple elements recited in the disclosure, and conversely, multiple elements may perform the function of one entity. Numerous alternatives, equivalents, variations, and combinations are possible without departing from the scope of the present disclosure.
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.Unless otherwise stated, all features of the present invention can be freely combined with one another. This applies to the entire document presented here. Unless otherwise stated, the features described in the description of the figures can also be freely combined with the other features as features of the invention. A limitation of individual features of the exemplary embodiments to the combination with other features of the exemplary embodiments is expressly not intended. In addition, physical features of the device can also be reworded as method features and method features can be reworded as physical features of the device. Such a reformulation is thus automatically disclosed.
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.In the foregoing detailed description, reference is made to the accompanying drawings. The examples in the specification and drawings should be considered as illustrative and not limiting on the specific example or element described. Several examples can be derived from the foregoing description and/or the drawings and/or the claims by modifying, combining or varying certain elements. Furthermore, examples or elements that are not literally described can be derived from the description and/or the drawings by a person skilled in the art.
Figur 6figure 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.The
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.The semiconductor crystal of the
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.Typically, at least one operating circuit supplies the at least one
Figur 7figure 7
Figur 8figure 8
Ein bevorzugt gemeinsamer Takt taktet bevorzugt die digitalen Schaltungen der beispielhaft in der
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
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
Die als Blockschaltbild der vereinfacht in
Der Komparator 404.2 vergleicht in dem Beispiel der
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
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
Figur 9figure 9
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.The
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.The voltage monitor 413 monitors, for example, the operating voltages of the
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.The shift register 404.6 with linear feedback is connected to the
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.The signal of the
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.Here, too, the finite state machine 404.8 has the task of receiving the random data RN or the pseudo-random number PRN at the output of the signal multiplexer 404.7 and writing them to the block RAM 404.9, 15 of the
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.If a time value at the
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.If the error counter crosses or reaches the error counter threshold value, an error may be present, for example, in which the time-to-
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.This device is thus able to detect a failure of the voltage supply 5 of the
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.The watchdog 404.5 can monitor the entropy of the
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 desQuantenzufallszahlengenerators 400 - • Fehlerhafte Entropie der gelieferten Zufallszahlen 411.
- • Disturbance of supply voltages
- • Faulty signal generation of the SPAD diodes 401.1 and 401.3,
- • Malfunction of the optical waveguide 401.2 and/or the coupling of the SPAD diodes 401.1 and 401.3 to the optical waveguide 401.2,
- • Circuit failures in the
digital part 404 of the quantumrandom number generator 400 - • Incorrect entropy of the supplied
random numbers 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.It is conceivable to use a second complete quantum
Figur 11figure 11
Figur 12figure 12
- Zu Beginn erzeugt sich der erste Prozessor 10-1 des
Rechners 2 des Servers einen Socket-Descriptor inSchritt 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 desRechners 2 des Servers kann diesen Socket-Descriptor in späteren Funktionsaufrufen, die Sockets verwenden, nutzen.
- At the beginning, the first processor 10-1 of the server's
computer 2 generates a socket descriptor instep 3000. A socket descriptor in the sense of the document presented here is an integer similar to a file handle that, for example, the standard C library function socket () of the socket.h library is generated. The first processor 10-1 of thecomputer 2 of the server can use this socket descriptor in later function calls that use sockets.
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.In
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.In the
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.In a
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.If said connection exists, the first processor 10-1 of the
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.The first processor 10-1 of the
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.The first processor 10-1 of the server's
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.Then the first processor 10-1 of the
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.The server is thus typically prepared for the exchange of encrypted data between the first processor 10-1 of the
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.After the keys have now been exchanged, the first processor 10-1 of the
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.If the first processor 10 - 1 of the
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.If the first processor 10-1 of the
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.The first processor 10 - 1 of the
Danach startet die verschlüsselte Kommunikation für den ersten Prozessor 10-1 des Rechners 2 des Servers erneut wieder bei Schritt 3040.The encrypted communication for the first processor 10-1 of the
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.If the communication is terminated by the first processor 10-1 of the server's
In Analoger Weise führt der schließt der erste Prozessor 10-1 des Rechners 2 des Clients einen Client Prozess aus.In an analogous manner, the first processor 10-1 of the client's
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.At the beginning of the "client process", the first processor 10-1 of the
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.For this purpose, the first processor 10-1 of the client's
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.If the connection was accepted by the first processor 10 - 1 of the
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.The first processor 10 - 1 of the client's
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.The first processor 10-1 of the client's
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.The first processor 10 - 1 of the client's
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.If the first processor 10 - 1 of the client's
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.Thereafter, the communication between the first processor 10-1 of the server's
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.If the communication is terminated by the first processor 10-1 of the client's
Figur 13figure 13
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.When starting the KeyExchangeServer() function, the first processor 10-1 of the server's
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.Thereafter, the first processor 10-1 of the
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.The first processor 10-1 of the
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.Now the first processor 10-1 of the
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.Now the first processor 10-1 of the
Im Anschluss verlässt der erste Prozessor 10-1 des Rechners 2 des Servers die Funktion KeyExchangeServer() im Schritt 3245.The first processor 10-1 of
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).In starting the KeyExchangeClient() function, the first processor 10-1 of the client's
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.Thereafter, in
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.The first processor 10 - 1 of the
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.The first processor 10-1 of the
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.Now the first processor 10-1 of the
Im Anschluss verlässt der erste Prozessor 10-1 des Rechners 2 des Clients die Funktion KeyExchangeClient() im Schritt 3295.The first processor 10-1 of the client's
Figur 14figure 14
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.The first processor 10-1 of the client's
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 1O-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.The calling first processor 10-1 then generates another random number in
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.Now, in
Im Anschluss berechnet der aufrufende Prozessort 10-1 das Produkt n = p * q im Schritt 3330.Subsequently, the calling processor 10-1 calculates the product n = p * q in
Danach berechnet der aufrufende Prozessort 10-1 die Euler'sche Phi-Funktion phi = (q-1) * (p-1) im Schritt 3340.Thereafter, the calling processor 10-1 calculates Euler's phi function phi = (q-1) * (p-1) in
Im Anschluss verlässt der aufrufende Prozessor 10-1 die Funktion setPrimes() im Schritt 3350. The calling processor 10-1 then exits the setPrimes() function in
Figur 15figure 15
Die
Danach überprüft der aufrufende Prozessor 10-1 im Schritt 3410, ob die logische Aussage gcd(e,phi) != 1 erfüllt ist.Thereafter, in
Ist die logische Aussage erfüllt, wiederholt der aufrufende Prozessor 10-1 den Schritt 3400.If the logical statement is fulfilled, the calling processor 10-1
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.If the logical statement is not fulfilled, the calling processor 10-1 exits the setE() function and returns the current value of e as a return value to the calling processor 10-1. The gcd(a,b) function is not a standard C function. The calling processor 10-1 uses this function gcd(a,b) to calculate the greatest common divisor of the transfer parameters a, b and returns the result to the calling processor 10-1.
Figur 16figure 16
In dem nachfolgenden Schritt 3510 addiert der aufrufende Prozessor 10-1 zu der Zahl d die Zahl 1 hinzu.In
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.Now, in
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.If the logical statement (e*d) (mod phi) == 1 is fulfilled, then in
Figur 17figure 17
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.In the case of the present document, the
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.At the beginning, the first processor 10-1 of the
Bei dem asymmetrischen Verschlüsselungsverfahren kann es sich zum Beispiel um das RSA-Verfahren (ANHANG) handeln.The asymmetric encryption method can be, for example, the RSA method (APPENDIX).
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.In a
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.The first processor 10-1 of the
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.The first processor 10-1 of the
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.The first processor 10-1 of the
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.The first processor 10-1 of the
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.The first processor 10 - 1 of the
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.The first processor 10-1 of the
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.The first processor 10-1 of the
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.The first processor 10-1 of the
Hierdurch kann nach Austausch dieser Schlüssel die Kommunikation auf Basis des gewählten asymmetrischen Verschlüsselungsverfahrens durchgeführt werden.As a result, after these keys have been exchanged, communication can be carried out on the basis of the selected asymmetric encryption method.
Figur 18figure 18
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.The above description is not exhaustive and does not limit this disclosure to the examples shown. Other variations to the disclosed examples may be understood and practiced by those of ordinary skill in the art given the drawings, disclosure, and claims. The indefinite article "a" or "an" and its inflections do not exclude a plurality, while the mention of a definite number of elements does not exclude the possibility of there being more or fewer elements. A single entity may perform the functions of multiple elements recited in the disclosure, and conversely, multiple elements may perform the function of one entity. Numerous alternatives, equivalents, variations, and combinations are possible without departing from the scope of the present disclosure.
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.Unless otherwise stated, all features of the present invention can be freely combined with one another. This applies to the entire document presented here. Unless otherwise stated, the features described in the description of the figures can also be freely combined with the other features as features of the invention. A limitation of individual features of the exemplary embodiments to the combination with other features of the exemplary embodiments is expressly not intended. In addition, physical features of the device can also be reworded as method features and method features can be reworded as physical features of the device. Such a reformulation is thus automatically disclosed.
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.In the foregoing detailed description, reference is made to the accompanying drawings. The examples in the specification and drawings should be considered as illustrative and not limiting on the specific example or element described. Several examples can be derived from the foregoing description and/or the drawings and/or the claims by modifying, combining or varying certain elements. Furthermore, examples or elements that are not literally described can be derived from the description and/or the drawings by a person skilled in the art.
BezugszeichenlisteReference List
- 22
- Mikrocontroller;microcontrollers;
- 33
- Anschluss;Connection;
- 44
- Steuervorrichtung;control device;
- 66
- nichtflüchtigen Speicher, EEPROM, externer Speicher;non-volatile memory, EEPROM, external memory;
- 88th
- Random Access Memory, externer Speicher;random access memory, external memory;
- 10-110-1
- erster Prozessor;first processor;
- 10-210-2
- zweiter Prozessor;second processor;
- 1111
- Verkettung;concatenation;
- 1212
- Testanschluss;test port;
- 1414
- eng gekoppelter Speicher TCM;tightly coupled memory TCM;
- 1515
- Startadresse des Boot Roms;boot rom start address;
- 1616
- nicht flüchtiges Boot-ROM;non-volatile boot ROM;
- 1818
- Hashing-Engine;hashing engine;
- 2020
- erster One-Time-Programmable-Speicher (OTP);first one-time programmable memory (OTP);
- 2222
- zweiter One-Time-Programmable-Speicher (OTP);second one-time programmable memory (OTP);
- 2424
- Schaltung zur Deaktivierung von Tests, Deaktivierungsschaltung;test disable circuit, disable circuit;
- 2626
- gesteuerte Anlage, Regelstrecke;controlled system, controlled system;
- 2828
- Quantenzufallszahlengenerator;quantum random number generator;
- 3030
- weiterer nicht flüchtiger Speicher, externer Speicher;other non-volatile storage, external storage;
- 3232
- Schnittstelle;Interface;
- 4040
-
Beispielhafte SPAD-Diode 30 für den Einsatz als Sensorelement eines Einzelphotonendetektors;Exemplary
SPAD diode 30 for use as a sensor element of a single photon detector; - 4141
-
Isolation, beispielsweise Shallow-Trench-Isolation STI 41 der beispielhaften SPAD-Diode 40 oder LOCOS-Isolation;Isolation, such as shallow
trench isolation STI 41 of theexample SPAD diode 40 or LOCOS isolation; - 4242
-
Anodenkontakt 42 der beispielhaften SPAD-Diode40;
anode contact 42 ofexample SPAD diode 40; - 4343
-
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;
Cathode contact 43 ofexample SPAD diode 40.Cathode contact 43 ofexample SPAD diode 40 is preferably made of indium tin oxide (ITO) or other transparent and electrically conductive material; - 4444
-
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;
Optical fiber 44 for transporting the photons of thefirst SPAD diode 54 to thesecond SPAD diode 55. Theoptical fiber 44 is made of acap oxide 44 or optically transparent insulatinglayer 44 of theexemplary SPAD diode 40; - 4545
-
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;highly doped
first connection region 45 of a first conductivity type, also referred to as n+ S/D implantation. In a CMOS technology with a p-doped wafer material, this can be an n+-doped region in the semiconducting substrate material of theSPAD diode 40, for example; - 4646
-
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;first doped well 46 of a second conductivity type. In a CMOS technology with a p-doped wafer material, it can be a p − -doped region in the semiconducting substrate material of the
SPAD diode 40, for example; - 4747
-
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;second doped well 47 of a second conductivity type. In a CMOS technology with a p-doped wafer material, this can be a p − -doped region in the semiconducting substrate material of the
SPAD diode 40, for example; - 4848
-
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;
epitaxial layer 48 of a second conductivity type. In a CMOS technology with a p-doped wafer material, this can be a p-doped epitaxial layer in the semiconducting substrate material of theSPAD diode 40, for example; - 4949
-
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;
Base material 49 of the semiconducting single-crystal wafer having a second conductivity type. In a CMOS technology with a p-doped wafer material, this is, for example, a p-doped monocrystalline semiconductor wafer; - 5050
-
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;second doped well of a second conductivity type below the anode contact. In a CMOS technology with a p-doped wafer material, this can be a p − -doped region in the semiconducting substrate material of the
SPAD diode 40, for example; - 5151
-
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;Highly doped second connection region of a second conductivity type, also referred to as p+ S/D implantation. In a CMOS technology with a p-doped wafer material, this can be a p+-doped region in the semiconducting substrate material of the
SPAD diode 40, for example; - 5252
- Isolation, beispielsweise ein Oxid oder dergleichen;insulation such as an oxide or the like;
- 5353
-
Metallabdeckung des Lichtwellenleiters 44;metal cover of
optical fiber 44; - 5454
-
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;First SPAD diode. The
first SPAD diode 55 serves at least temporarily as a light source for irradiating thesecond SPAD diode 45 with photons from thefirst SPAD diode 54; - 5555
-
Zweite SPAD-Diode 55. Die zweite SPAD-Diode 55 dient beispielsweise zumindest zeitweise als Fotodetektor für das Licht der ersten SPAD-Diode 54.Second
SPAD diode 55. Thesecond SPAD diode 55 serves, for example, at least temporarily as a photodetector for the light from thefirst SPAD diode 54. - 5656
-
Oberfläche 56 des Wafers im Sinne der hier vorgelegten Schrift;
Surface 56 of the wafer in the sense of the document presented here; - 5757
-
vertikal nach oben in senkrechter Richtung zur Oberfläche 56 emittiertes Licht 57 der ersten SPAD-Diode 54;light 57 emitted vertically upwards in the direction perpendicular to the
surface 56 of thefirst SPAD diode 54; - 5858
-
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;light 58 transported horizontally in the
optical waveguide 44, which is a part of the light 57 radiated vertically from thefirst SPAD diode 54 into theoptical waveguide 44; - 5959
-
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.
Light 59 of thefirst SPAD diode 54 radiated vertically downwards in a direction perpendicular to thesurface 56 from theoptical waveguide 44 into thesecond SPAD diode 55, which was emitted by thefirst SPAD diode 54 asperpendicular light 57 into theoptical waveguide 44 and was then transported horizontally to thesecond SPAD diode 55 by theoptical fiber 44 . - 6161
- Datensätzerecords
- 6262
- digitale Signalturdigital signaling
- 6363
- Schnittstelleinterface
- 6464
- Datenbusschnittstelle;data bus interface;
- 6565
- Datenbus. Der Datenbus kann im Sinne der hier vorgelegten Schrift eine drahttgebundene Datenverbindung oder eine drahtlose Datenverbindung sein;data bus. In the sense of the document presented here, the data bus can be a wired data connection or a wireless data connection;
- 8181
- Schnittstelleinterface
- 140140
- Kontakt;Contact;
- 141141
-
Metall 1 Leitungen;
metal 1 lines; - 142142
-
Metall 2 Leitungen / Metall 2 Deckel;
metal 2 lines /metal 2 covers; - 241241
- Gattergate
- 242242
- Gattergate
- 301301
- Schnittstelleinterface
- 400400
- Quantenzufallszahlengenerator QRNG;Quantum Random Number Generator QRNG;
- 401401
- Entropie-Quelle;entropy source;
- 401.1401.1
- ein oder mehrere erste SPAD-Dioden;one or more first SPAD diodes;
- 401.2401.2
- Lichtwellenleiter;Optical fiber;
- 401.3401.3
- ein oder mehrere zweite SPAD-Dioden;one or more second SPAD diodes;
- 402402
- Hochfrequenzverstärker;high frequency amplifier;
- 403403
- Analog-Digital-Converter (ADC);analog to digital converter (ADC);
- 404404
- Messboard mit FPGA;measuring board with FPGA;
- 404.1404.1
- Konstante;Constant;
- 404.2404.2
- Komparator;comparator;
- 404.3404.3
- Zeit-zu-Digital-Konverter;time to digital converter;
- 404.4404.4
- Entropie-Extraktions-Vorrichtung 404.4;entropy extraction device 404.4;
- 404.5404.5
- Watchdog;watchdog;
- 404.6404.6
- linear rückgekoppeltes Scheiberegister. Die Rückkopplung ist bevorzugt ein einfach primitives Polynom, um Pseudozufallsbittfolgen zu erzeugen.linear feedback slice register. The feedback is preferably a simple primitive polynomial to generate pseudo-random bit sequences.
- 404.7404.7
- Signal-Multiplexer;signal multiplexer;
- 404.8404.8
- Finite State Machine (endlichen Automaten);Finite State Machine (finite automaton);
- 404.9404.9
- RAM;R.A.M;
- 404.10404.10
- Finish Flag;finish flag;
- 404.11404.11
- Microcontroller;microcontrollers;
- 405405
-
Spannungssignal der Entropie Quelle 401;Voltage signal from
entropy source 401; - 406406
-
Verstärkerausgangssignal 406 des Hochfrequenzverstärkers 402;
amplifier output signal 406 ofradio frequency amplifier 402; - 407407
-
digitaler 14 Bit Wert 407 des Analog-zu-Digital-Wandlers 403. Andere Bitbreiten sind denkbar;digital 14-
bit value 407 of the analog-to-digital converter 403. Other bit widths are conceivable; - 408408
- Signal der Konstanten 404.1;404.1 constant signal;
- 409409
-
Ausgangssignal 409 des Komparators 404.2;
output signal 409 of the comparator 404.2; - 410410
-
Ausgang 410 des Zeit-zu-Digital-Wandlers 404.3;
output 410 of time-to-digital converter 404.3; - 411411
- Ausgang der Entronie Extraktion 404.4;output of entronie extraction 404.4;
- 412412
- Seed S;413 Spannungsmonitor;Seed S;413 Voltage Monitor;
- 414414
- Signalleitungen;signal lines;
- 416416
- Selektionssignal;selection signal;
- 417417
- Pseudozufallssignalleitung;pseudo random signal line;
- 418418
- Zufallsdatenwörter;random data words;
- 419419
-
interner Datenbus des Quantenzufallszahlengenerators 400. Bevorzugt handelt es sich um den internen Datenbus der Steuervorrichtung 4;internal data bus of the quantum
random number generator 400. It is preferably the internal data bus of thecontrol device 4; - 420420
-
Interrupt Signal des Watchdogs 404.5 des Quantenzufallszahlengenerators 400 bzw. der Steuervorrichtung 4 der Sicherung 1;Interrupt signal of the watchdog 404.5 of the quantum
random number generator 400 or thecontrol device 4 of thefuse 1; - 500500
- Flussdiagramm 500 des Entropie Extraktionsverfahrens;Flow diagram 500 of the entropy extraction method;
- 501501
-
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;
first step 501 with determination of the first value of theoutput 410 of the time-to-digital converter 404.3 and the second value of theoutput 410 of the time-to-digital converter 404.3 and storage in a shift register of the entropy extraction 404.4; - 502502
- zweiter Schritt des Vergleichens des ersten Werts mit dem zweiten Wert;second step of comparing the first value with the second value;
- 503503
- dritter Schritt der Bewertung des ersten Werts und des zweiten Werts und der Erzeugung des Zufallsbits;third step of evaluating the first value and the second value and generating the random bit;
- 601601
- erste Spikes;first spikes;
- 602602
- zweite Spikes;second spikes;
- 603603
- Schneidepegel;clip level;
- 30003000
- Erzeugung eines Socket-Descriptors;generation of a socket descriptor;
- 30103010
- Binden des Socket-Descriptors an einen Port und eine IP-Adresse;binding the socket descriptor to a port and IP address;
- 30203020
-
passiver Wartezustand und Warten auf Verbindungsanfragen eines Microcontrollers 2 eines Clients;passive waiting state and waiting for connection requests from a
microcontroller 2 of a client; - 30303030
-
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 ;establishing a connection from the first processor 10-1 of the
computer 2 of the server to the first processor 10-1 of thecomputer 2 of the client by the first processor 10-1 of thecomputer 2 of the server; - 30403040
-
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.Generation of a quantum
random number 411 and generation of a public and a private key using an RSA method by the first processor 10-1 of thecomputer 2 of the server using a quantumrandom number generator 28 QRNG and an RSA method. - 30503050
-
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;Waiting for an encrypted message from the first processor 10-1 of the
computer 2 client by the first processor 10-1 of thecomputer 2 of the server; - 30603060
-
Entschlüsseln der Nachricht des mittels des in einem Speicher des Rechners 2 zwischengespeicherten privaten Schlüssels aus dem Schritt 3040 gemäß des RSA-VerfahrensDecryption of the message using the private key temporarily stored in a memory of the
computer 2 fromstep 3040 according to the RSA method - 30703070
-
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;Encryption of the message from the first processor 10-1 of the
computer 2 of the server using the public key of the first processor 10-1 of thecomputer 2 of the client fromstep 3040 according to the RSA method by the first processor 10-1 of thecomputer 2 of the server; - 30803080
-
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;.Sending the encrypted message stored in the hiss memory of the server's
computer 2 to the first processor 10-1 of the client'scomputer 2 via thedata bus interface 64 of the first processor 10-1 of the server'scomputer 2 and via thedata bus 65 and via thedata interface 64 the first processor 10-1 of the computer by the first processor 10-1 of thecomputer 2 of the server;. - 30903090
-
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;Execution of the close() function and closing of the open connection to a socket, here the socket of the client, and termination of communication with the client by the first processor 10-1 of the
computer 2 of the server; - 31003100
-
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;Generating a socket descriptor by the first processor 10-1 of the client's
computer 2 and making a connection request to the first processor 10-1 of the server'scomputer 2 using the port and the IP address specified instep 3010 , by the The first processor 10-1 of thecomputer 2 of the client; - 31103110
-
Herstellen einer Verbindung zwischen dem Server-Socket aus dem Schritt 3010 und dem Client-Socket aus dem Schritt 3100;establishing a connection between the server socket of
step 3010 and the client socket ofstep 3100; - 31203120
-
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.Generation of a quantum
random number 411 and generation of a public key and a private key using an RSA method by the first processor 10-1 of the client'scomputer 2 using a quantumrandom number generator 28 QRNG and an RSA method. - 31303130
-
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;Encryption of the client's own message using the public key of the first processor 10-1 of the server's
computer 2 fromstep 3040 using the RSA method by the first processor 10-1 of the client'scomputer 2; - 31403140
-
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;Sending the client's encrypted message to the first processor 10-1 of the server's
computer 2 by the first processor 10-1 of the client'scomputer 2; - 31503150
-
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;Waiting for an encrypted message from the first processor 10-1 of the server's
computer 2 by the first processor 10-1 of the client'scomputer 2 and receiving a message from the first processor 10-1 of the server Clients and storing the thus received and typically encrypted message of the first processor 10-1 of the server in a temporary buffer of thecomputer 2 by the first processor 10-1 of thecomputer 2 of the client and reading the incoming data of the first processor 10-1 of the server by the first processor 10-1 of the client'scomputer 2 by executing the function recv() from a socket descriptor, in this case from the socket descriptor of the first processor 10-1 of the client'scomputer 2 fromstep 3100 and storing the read data preferably in a temporary buffer of the client'scomputer 2 by the first processor 10-1 of the client'scomputer 2; - 31603160
-
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;Decryption of an encrypted message received by the first processor 10-1 of the client's
computer 2 from the first processor 10-1 of the server'scomputer 2 by the first processor 10-1 of the client'scomputer 2 by executing the Decrypt() function the first processor 10-1 of the client'scomputer 2 using the private key of the first processor 10-1 of the client'scomputer 2 fromstep 3120 by means of the RSA method and then storing the message decrypted in this way in a temporary buffer of thecomputer 2 of the client by the first processor 10-1 of thecomputer 2 of the client; - 31703170
-
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;closing the open connection to the socket by the first processor 10-1 of the client's
computer 2 and terminating the communication with the first processor 10-1 of the server'scomputer 2 by the first processor 10-1 of the client'scomputer 2; - 32003200
-
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();Generation of two different prime numbers p and q and the product n=p*q and the result of Euler's phi function phi=(p-1)(q-1) by the first processor 10-1 of the
computer 2 of the server using the function KeyExchangeServer(); - 32103210
-
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;Generation of a number e that is relatively prime to phi by calling the function setE () by the first processor 10-1 of the
computer 2 of the server, the number phi being that fromstep 3200 and where relatively prime in the sense of the present document means that there are no natural number other than the number one, which simultaneously integer-divides the number e and the number phi at the same time; - 32203220
-
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;Calculation of the multiplicative inverse of the number e by means of the first processor 10-1 of the
computer 2 of the server using the findD() function, so that (e*d)mod phi = 1; - 32303230
-
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;Waiting for an incoming message from the first processor 10-1 of the client's
computer 2, which should typically include the client's public key, by the first processor 10-1 of the server'scomputer 2 and reading the incoming data from a socket descriptor, in this case the socket descriptor of the client by the first processor 10-1 of thecomputer 2 of the server and storing the read data preferably in a temporary buffer of thecomputer 2 by the first processor 10-1 of thecomputer 2 of the server; - 32403240
-
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;Sending the public key (d,n) of the first processor 10-1 of the server's
computer 2 from 3200 and 3220 by the first processor 10-1 of the server'ssteps computer 2 to the first processor 10-1 of the client'scomputer 2 via a socket descriptor, in this case the socket descriptor of the client fromstep 3030; - 32453245
-
Verlassen der Funktion KeyExchangeServer() durch den ersten Prozessor 10-1 des Rechners 2 des Servers;leaving the KeyExchangeServer() function by the first processor 10-1 of the
computer 2 of the server; - 32503250
- 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();Generating the prime number p and generating the prime number q different from q and generating the product n=p*q and generating the Euler phi function phi = (p-1)(q-1) by the first processor 10-1 of the computer, respectively 2 of the client using the KexExchangeClient();
- 32603260
-
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;Generating an integer e that is relatively prime to the number phi from
step 3250 by the first processor 10-1 of thecomputer 2 of the client using the setE() function, where relatively prime in the sense of the present document means that there is no natural number other than the number one exists, which at the same time divides the number e and the phi without remainder; - 32703270
-
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;Calculating the multiplicative inverse of the number e by the first processor 10-1 of the client's
computer 2 using the findD() function, such that (e*d)mod phi = 1; - 32803280
-
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;Sending the public keys (d,n) of the first processor 10-1 of the client's
computer 2 from 3250 and 3270 to the first processor 10-1 of the server'ssteps computer 2 by the first processor 10-1 of the client'scomputer 2 , the first processor 10-1 of the client'scomputer 2 sending data via a socket descriptor, in this case the client's socket descriptor fromstep 3100, by means of the send() function; - 32903290
-
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;Waiting for an incoming message from the first processor 10-1 of the server's
computer 2 with the public key of the first processor 10-1 of the server'scomputer 2 by the first processor 10-1 of the client'scomputer 2 and reading incoming data from the first processor 10-1 of the server'scomputer 2 from a socket descriptor, in this case from the client's socket descriptor fromstep 3100, by the first processor 10-1 of the client'scomputer 2 by means of the recv() function and storing this data into a temporary buffer of the client'scomputer 2 by the first processor 10-1 of the client'scomputer 2; - 32953295
-
Verlassen der Funktion KeyExchangeClient() durch den ersten Prozessor 10-1 des Rechners 2 des Clients;exiting the KeyExchangeClient() function by the first processor 10-1 of the client's
computer 2; - 33003300
-
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;Generating a random number using a quantum
random number generator 28 QRNG by the calling first processor 10-1 and determining a prime number depending on this random number by the calling first processor 10-1 and storing this prime number as a variable p in the memory of thecomputer 2, part of which is the calling first processor 10-1; - 31103110
-
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;Generating a second random number using a Quantum
Random Number Generator 28 QRNG by the calling first processor 10-1 and determining a prime number as a function of this random number by the calling first processor 10-1 and storing this prime number as a variable q in the memory of thecomputer 2 , part of which is the calling first processor 10-1; - 33203320
-
Ü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;checking whether the logical statement q==p is true by the calling first processor 10-1 and repeating the steps from
step 3310 by the calling processor 10-1 if this statement is true; - 33303330
- Berechnen des Produkts n= p * q durch den aufrufenden Prozessort 10-1;calculating the product n= p * q by the calling processor 10-1;
- 33403340
- Berechnen der Euler'schen Phi-Funktion phi = (q-1) * (p-1) Ddurch den aufrufenden Prozessort 10-1;computing Euler's phi function phi = (q-1) * (p-1) D by the calling processor 10-1;
- 33503350
- Verlassen der Funktion setPrimes() durch den aufrufenden Prozessor 10-1;exit from the setPrimes() function by the calling processor 10-1;
- 34003400
-
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;Execution of the function SetE() When calling the function setE() in
step 3400, the caller, in the case of the present document the first processor 10-1 of thecomputer 2 of the server or the first processor 10-1 of thecomputer 2 of the client, generates a random number e such that it is relatively prime to the number phi. For the purposes of this document, coprime means that there is no natural number other than the number one that divides the number e and phi at the same time. The calling processor 10-1 can generate the number e both by a random number from the quantumrandom number generator 28 QRNG and by a pseudo-random number generator PRNG and by incrementing an integer starting with 2. However, generation by means of the quantumrandom number generator 18 QRNG is preferred; - 34103410
-
Ü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;Checking whether the logical statement gcd(e,phi) != 1 is satisfied by the calling processor 10-1 and repeating
step 3400 by the calling processor 10-1 if the logical statement is satisfied. The calling processor 10-1 calculates the greatest common divisor of the transfer parameters a, b using this function gcd(a,b) and returns the result to the calling processor 10-1; - 34203420
- 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;the calling processor 10-1 exiting the setE() function and returning the current value of e as a return value to the calling processor 10-1 if the logical statement gcd(e,phi) != 1 is not satisfied;
- 35003500
-
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;Initializing a variable d with 0 by the calling processor 10-1, here the first processor 10-1 of the client's
computer 2 or the first processor 10-1 of the server'scomputer 2; - 35103510
-
Addieren der Zahl 1 zu der Zahl d durch den aufrufenden Prozessor 10-1;adding the
number 1 to the number d by the calling processor 10-1; - 35203520
-
Ü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;Checking whether the logical statement (e*d) (mod phi) == 1 is satisfied by the calling processor 10-1 and repeating the steps from
step 3510 if the logical statement (e*d) (mod phi) = = 1 is not satisfied; - 35303530
-
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;exiting the findD() function by the calling processor 10-1 if the logical statement (e*d) (mod phi) == 1 is satisfied, and returning the current value of d as a return value to the calling processor 10-1, in the case of the present document, the first processor 10-1 of the
computer 2 of the server or the first processor 10-1 of thecomputer 2 of the client; - 36003600
- Server;Server;
- 36103610
- Client;clients;
- 36203620
-
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;Sending the public key of the
server 3600 based on a first quantum random number of the quantumrandom number generator 28 QRNG of thecomputer 2 of theserver 3600 via a non-tap-proof channel to the first processor 10-1 of thecomputer 2 of theclient 3610 by the first processor 10-1 of thecomputer 2 theserver 3600; - 36303630
-
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;Generating a pseudo-random number PZ or a random number generated in another way by the first processor 10-1 of the
computer 2 of theclient 3610 and storing the pseudo-random number PZ or the random number generated in a different way in a memory of thecomputer 2 of theclient 3610 the first processor 10-1 of thecomputer 2 of theclient 3610 and generating a first private key of theclient 3610 and a first public key of theclient 3610 using this pseudo-random number PZ or this random number generated differently by the first processor 10-1 of thecomputer 2 of theclient 3610 and encrypting this first public Key of theclient 3610 using the public key of theserver 3600 by the first processor 10-1 of thecomputer 2 of theclient 3610 and sending the encrypted first public key of theclient 3610 to the first processor 10-1 of thecomputer 2 of theserver 3600 by the first processor 10-1 ofclient 3610computer 2; - 36403640
- 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.Decrypting the message of the first processor 10-1 of the computer 2 of the client 3610 with the first private key of the first processor 10-1 of the computer 2 of the client 3610, so that the first processor 10-1 of the computer 2 of the server 3600 has the first public key of the client 3610, without this third party being able to be known, and generation of a further, second quantum random number QZ2 by the first processor 10-1 of the computer 2 of the server 3600 by means of the quantum random number generator 28 QRNG, the bit width of this second quantum random number preferably being equal to the Bit width, the random number PZ of the client 3610, and encryption of the second quantum random number QZ2 with the first public key of the first processor 10-1 of the computer 2 of the client 3610 to an encrypted second quantum random number QZ2' by the first processor 10-1 of the computer 2 of the server 3600, in which case, for example, the first public key of the client 3610 can be the random number PZ of the client and in which case the first processor 10-1 of the computer 2 of the server 3600 uses the second quantum random number QZ2, for example by bitwise XORing the second quantum random number QZ2 can encrypt with PZ to an encrypted second quantum random number QZ2', and sending the encrypted second quantum random number QZ2' to the first processor 10-1 of the computer 2 of the client 3610 by the first processor 10-1 of the computer 2 of the server 3600.
- 36503650
-
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;Decryption of the encrypted second quantum random number QZ2 'using the first private key of the first processor 10-1 of the
computer 2 of theserver 3600 to the second quantum random number QZ2 by the first processor 10-1 of thecomputer 2 of theclient 3610. The first processor 10-1 of thecomputer 2 determines the second encrypted quantum random number QZ2' by bitwise XORing the random number PZ with the second quantum random number QZ2, then the first processor 10-1 of thecomputer 2 of theclient 3610 can, for example, by bitwise XORing the encrypted second quantum random number QZ2' with the random number PZ known to him to the second quantum random number QZ2. The first processor 10-1 of thecomputer 2 of theclient 3610 preferably uses the second quantum random number QZ2 now available to it as a basis for generating a second private key and a second public key according to an asymmetric encryption method. The asymmetric encryption method can be, for example, the RSA method (APPENDIX). The first processor 10-1 of thecomputer 2 of theclient 3610 now sends its second public key to theserver 3600 via the non-tap-proof channel. It preferably encrypts this second public key of theclient 3610 with the public key of theserver 3600. Theserver 3600 decrypts the encrypted second public key of theclient 3610 and then uses this second public key of the client to encrypt further messages to the first processor 10-1 of thecomputer 2 of theclient 3610. The first processor 10-1 of thecomputer 2 preferably generates and sends of theserver 3600 after a predetermined time or after sending a predetermined amount of data to the processor 10-1 of thecomputer 2 of the client 3610 a new public key on the basis of a new quantum random number of its quantumrandom number generator 28 QRNG encrypted with the second public key of theclient 3610. The first processor 10-1 of thecomputer 2 of theserver 3600 and the first processor 10-1 of thecomputer 2 of the client then preferably carry out the previously described method again, so that the keys change permanently. This also makes it impossible for a quantum computer to break the keys; - 37003700
- Verfahren zur Erzeugung einer Quntenzufallszahl QZ mit m Zufallsbits;Method for generating a quantum random number QZ with m random bits;
- 37103710
- Ezeugung eines zufälligen Einzelphotonenstroms (57, 58, 59, 401.2) mittels einer oder mehrerer erster SPAD-Dioden (401.1, 54);generating a random stream of single photons (57, 58, 59, 401.2) by means of one or more first SPAD diodes (401.1, 54);
- 37203720
- Ü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);transmission of the random stream of single photons (57, 58, 59, 401.2) to one or more second SPAD diodes (401.3, 55) by means of an optical waveguide (44, 401.2) which is different from the semiconductor substrate (49, 48);
- 37303730
-
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;Conversion of the random stream of single photons (57, 58, 59, 401.2) into a detection signal in the form of a
voltage signal 405 from theentropy source 401, which preferably includes the first SPAD diodes 401.1 and the optical waveguide 401.2 and the second SPAD diodes 401.3; - 37403740
-
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;Processing, in particular amplifying and/or filtering and/or analog-to-digital conversion, of the detection signal into a processed detection signal, in particular a digital 14-
bit value 407 of the analog-to-digital converter 403; - 37503750
-
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;Separation of the pulses of the processed detection signal caused by coupling the emissions of a first SPAD diode 401.1 and a second SPAD diode 401.3 from the pulses of the processed detection signal caused by spontaneous emission by comparing the processed detection signal with a threshold value, in particular in a comparator 404.2 and generation of a
corresponding output signal 409, in particular of the comparator 404.2; - 37603760
-
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;Determination of a first time interval between the first pulse and the second pulse of a first pair of two consecutive pulses of the processed detection signal caused by coupling the emissions of a first SPAD diode 401.1 and a second SPAD diode 401.3 and determination of a second time interval between a third pulse and a fourth ppulse of a second pair of two consecutive pulses of the processed detection signal, which were produced by coupling the emissions of a first SPAD diode 401.1 and a second SPAD diode 401.3, and, in particular, for determining the first value of the
output 410 of the time to digital converter 404.3 and the second value of theoutput 410 of the time to digital converter 404.3; - 36703670
- Ermittlung des Bitwerts eines Zufallsbits durch Vergleich des Werts des ersten zeitlichen Abstands und des Werts des zweiten zeitlichen Abstands;determining the bit value of a random bit by comparing the value of the first time interval and the value of the second time interval;
- 36803680
- 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.If the number n of random bits determined up to this step is less than the desired number m of random bits of the desired quantum random number, the above steps are repeated. Otherwise, the process of generating a quantum random number with m random bits is terminated.
- S2S2
-
Lesen eines Ladeprogramms aus dem EEPROM 6;reading a boot program from the
EEPROM 6; - S4S4
-
Überprüfung der digitalen Signatur des mittels des Boot-ROM-Codes anhand des im ersten OTP 20 gespeicherten öffentlichen Schlüssels;verification of the digital signature of the boot ROM code using the public key stored in the
first OTP 20; - S6S6
- Lesen nachfolgender Datensätze mit Hilfe des LadeprogrammsReading subsequent data sets using the loader
- S8S8
-
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;checking the signature of the data set newly read from the
EEPROM 6 using a public key embedded in a data set previously loaded or stored in theOTP memory 20 by the load code; - S20S20
- Lesen eines Datensatzes aus dem EEPROM;reading a data record from the EEPROM;
- S21S21
-
Speichern zumindest eines Teils der Daten des Satzes im TCM 14;storing at least part of the data of the sentence in the
TCM 14; - S22S22
- Berechnen eines Hash-Werts für jedes Wort der verbleibenden Daten;calculating a hash value for each word of the remaining data;
- S24S24
-
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;storing the calculated hash value in DRAM in a location associated with the stored word by cooperation of the processor 10 or processors 10 on the one hand and the
hash engine 18 on the other hand; - S26S26
-
Neuberechnung des Hash-Werts, wenn ein Wort aus dem DRAM 8 gelesen wird, durch den Prozessor 10 und die Hash-Engine;recalculation of the hash value when a word is read from the
DRAM 8 by the processor 10 and hash engine; - S30S30
- Vergleich des neu berechneten Hash-Werts mit dem entsprechenden im DRAM gespeicherten Hash-Wert, mittels des Prozessors 10 und der Hash-Engine;comparing the newly calculated hash value with the corresponding hash value stored in DRAM, using the processor 10 and the hash engine;
- S34S34
- Überprüfen, ob die Hash-Werte eine vorbestimmte Beziehung haben, z. B. gleich sind;Checking that the hash values have a predetermined relationship, e.g. B. are the same;
- S36S36
- Unterbrechen der Verarbeitung und/oder Erzeugen einer Fehlermeldung und/oder Ignorieren von Daten/ Code, wenn sie nicht die vorgegebene Beziehung aufweisen;stopping processing and/or generating an error message and/or ignoring data/code if it does not have the specified relationship;
- S38S38
- Verarbeitung der gelesenen Daten mittels des Prozessors bzw. der Prozessoren 10, wenn die Hash-Werte eine vorbestimmte Beziehung haben, z. B. gleich sind;Processing of the data read by means of the processor or processors 10 if the hash values have a predetermined relationship, e.g. B. are the same;
Relevante SchriftenRelevant writings
- 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 126R.L. Rivest, A. Shamir, and L. Adleman, "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems" Communications of the ACM, February 1978, Vol. 21, No. 2, pages 120-126
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION
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.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturPatent Literature Cited
- DE 102021128005 [0001]DE 102021128005 [0001]
- DE 102021128004 [0002]DE 102021128004 [0002]
Claims (3)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102021128005.2 | 2021-10-27 | ||
DE102021128005 | 2021-10-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102022125568A1 true DE102022125568A1 (en) | 2023-04-27 |
Family
ID=85795800
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102022125570.0A Pending DE102022125570A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125573.5A Pending DE102022125573A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125569.7A Pending DE102022125569A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125568.9A Pending DE102022125568A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125571.9A Pending DE102022125571A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125572.7A Pending DE102022125572A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102022125570.0A Pending DE102022125570A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125573.5A Pending DE102022125573A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125569.7A Pending DE102022125569A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102022125571.9A Pending DE102022125571A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
DE102022125572.7A Pending DE102022125572A1 (en) | 2021-10-27 | 2022-10-04 | device for data processing |
Country Status (1)
Country | Link |
---|---|
DE (6) | DE102022125570A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4321895A1 (en) | 2022-08-10 | 2024-02-14 | Elmos Semiconductor SE | Ultrasonic sensor and method for carrying out an ultrasonic measurement |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101930271B1 (en) | 2017-05-16 | 2018-12-18 | (주)피코씨이엘 | Random Number Generator using Dark Current of SPAD(Single-Photon Avalanche Diode) |
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 (en) | 2021-10-27 | 2023-04-27 | Elmos Semiconductor Se | Automotive processor with PQC encryption support |
-
2022
- 2022-10-04 DE DE102022125570.0A patent/DE102022125570A1/en active Pending
- 2022-10-04 DE DE102022125573.5A patent/DE102022125573A1/en active Pending
- 2022-10-04 DE DE102022125569.7A patent/DE102022125569A1/en active Pending
- 2022-10-04 DE DE102022125568.9A patent/DE102022125568A1/en active Pending
- 2022-10-04 DE DE102022125571.9A patent/DE102022125571A1/en active Pending
- 2022-10-04 DE DE102022125572.7A patent/DE102022125572A1/en active Pending
Patent Citations (4)
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 (en) | 2017-05-16 | 2018-12-18 | (주)피코씨이엘 | Random Number Generator using Dark Current of SPAD(Single-Photon Avalanche Diode) |
US10802800B1 (en) | 2018-08-20 | 2020-10-13 | Wells Fargo Bank, N.A. | Systems and methods for single chip quantum random number generation |
DE102021128004A1 (en) | 2021-10-27 | 2023-04-27 | Elmos Semiconductor Se | Automotive processor with PQC encryption support |
Non-Patent Citations (4)
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] |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4321895A1 (en) | 2022-08-10 | 2024-02-14 | Elmos Semiconductor SE | Ultrasonic sensor and method for carrying out an ultrasonic measurement |
Also Published As
Publication number | Publication date |
---|---|
DE102022125570A1 (en) | 2023-04-27 |
DE102022125569A1 (en) | 2023-04-27 |
DE102022125571A1 (en) | 2023-04-27 |
DE102022125572A1 (en) | 2023-04-27 |
DE102022125573A1 (en) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013203415B4 (en) | Create a derived key from a cryptographic key using a non-cloning function | |
DE102005030590B4 (en) | Safe patch system | |
DE102016210788B4 (en) | Component for processing data worthy of protection and method for implementing a security function for protecting data worthy of protection in such a component | |
DE102022125568A1 (en) | device for data processing | |
DE102021128004A1 (en) | Automotive processor with PQC encryption support | |
DE112019007421T5 (en) | STORAGE DEVICE WITH SECURE TEST MODE ENTRY | |
WO2023072956A1 (en) | Car processor with pqc encryption support | |
DE102022128216A1 (en) | Method for a doubly encrypted free-space quantum key distribution | |
DE102023126167A1 (en) | QRNG with PRNG usage, associated procedure and associated data processing system | |
EP3667529B1 (en) | Method and device for authenticating an fpga configuration | |
DE102021110766B3 (en) | Forensics module and embedded system | |
DE102020114199A1 (en) | Protection of computer systems against manipulation and functional anomalies | |
DE102022125650A1 (en) | Supply networks for vehicles with electronic fuses and methods for their operation | |
DE102022125676A1 (en) | Supply network with electronic fuses with partial network shedding option | |
EP3038008A1 (en) | Method for authorising access to protected data stored in a device and assembly for carrying out the method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |