DE102013109315B4 - Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors - Google Patents

Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors Download PDF

Info

Publication number
DE102013109315B4
DE102013109315B4 DE102013109315.9A DE102013109315A DE102013109315B4 DE 102013109315 B4 DE102013109315 B4 DE 102013109315B4 DE 102013109315 A DE102013109315 A DE 102013109315A DE 102013109315 B4 DE102013109315 B4 DE 102013109315B4
Authority
DE
Germany
Prior art keywords
vector
code
vectors
matrix
matrix representation
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.)
Active
Application number
DE102013109315.9A
Other languages
English (en)
Other versions
DE102013109315A1 (de
Inventor
Rainer Göttfert
Thomas Künemund
Berndt Gammel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102013109315.9A priority Critical patent/DE102013109315B4/de
Priority to US14/470,953 priority patent/US9678924B2/en
Publication of DE102013109315A1 publication Critical patent/DE102013109315A1/de
Application granted granted Critical
Publication of DE102013109315B4 publication Critical patent/DE102013109315B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

Verfahren zum Rekonstruieren eines ersten Vektors aus einem zweiten Vektor aufweisend: Speichern von, gemäß einer Matrix-Repräsentation des ersten Vektors, Codeinformation für die Zeilenvektoren gemäß einem ersten Code; Speichern von, gemäß der Matrix-Repräsentation des ersten Vektors, Codeinformation für die Spaltenvektoren gemäß einem zweiten Code; Korrigieren der Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors; Berechnen der Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors gemäß dem zweiten Code; Vergleichen der Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors; Identifizieren, basierend auf dem Ergebnis des Vergleichs, der Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, der Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der identifizierten Spalten und der identifizierten Zeilen, der Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, wobei die Komponenten, die sich in den identifizierten Zeilen in Spalten befinden, die mittels des zweiten Codes nicht korrigierbare Fehler aufweisen, als Komponenten, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert werden; und Korrigieren der identifizierten Komponenten des zweiten Vektors.

Description

  • Ausführungsbeispiele betreffen allgemein Verfahren und Datenverarbeitungseinrichtungen zum Rekonstruieren eines Vektors.
  • PUFs (Physical Uncloneable Functions) sind für sicherheitsrelevante Anwendungen, wie beispielweise zur Authentifizierung, interessant. Mechanismen zur Generierung von PUF-Werten liefern im Allgemeinen bei mehreren PUF-Generierungen zwar ähnliche, jedoch nicht identische PUF-Werte, was typischerweise je nach Anwendungsfall, z. B. zur Schlüsselgenerierung, jedoch erforderlich ist. Entsprechend sind effiziente Verfahren wünschenswert, die es ermöglichen, einen bei einer zweiten PUF-Generierung erzeugten PUF-Wert derart zu korrigieren, dass er mit dem bei einer ersten PUF-Generierung erzeugten PUF-Wert übereinstimmt.
  • Die Druckschrift US 6 167 551 A beschreibt eine DVD-Steuereinrichtung mit einem eingebetteten DRAM zum ECC-Block-Puffern, bei dem eine Fehlerkorrektur vorgesehen ist, bei der Spalten anhand von Spaltensyndromen korrigiert werden.
  • Gemäß einer Ausführungsform wird ein Verfahren zum Rekonstruieren eines ersten Vektors aus einem zweiten Vektor bereitgestellt, das aufweist: Speichern von, gemäß einer Matrix-Repräsentation des ersten Vektors, Codeinformation für die Zeilenvektoren gemäß einem ersten Code; Speichern von, gemäß der Matrix-Repräsentation des ersten Vektors, Codeinformation für die Spaltenvektoren gemäß einem zweiten Code; Korrigieren der Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors; Berechnen der Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors gemäß dem zweiten Code; Vergleichen der Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors; Identifizieren, basierend auf dem Ergebnis des Vergleichs, der Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, der Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der identifizierten Spalten und der identifizierten Zeilen, der Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, wobei die Komponenten, die sich in den identifizierten Zeilen in Spalten befinden, die mittels des zweiten Codes nicht korrigierbare Fehler aufweisen, als Komponenten, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert werden, und Korrigieren der identifizierten Komponenten des zweiten Vektors.
  • Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
  • 1 zeigt ein Ablaufdiagramm, das ein Verfahren zum Rekonstruieren eines Vektors gemäß einer Ausführungsform veranschaulicht.
  • 2 zeigt eine Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors gemäß einer Ausführungsform.
  • 3 zeigt ein Ablaufdiagramm, das ein Rekonstruktionsverfahren für einen PUF-Wert gemäß einer Ausführungsform veranschaulicht.
  • 4 zeigt ein Ablaufdiagramm, das ein Beispiel das Rekonstruktionsverfahren für einen PUF-Wert gemäß einer Ausführungsform veranschaulicht.
  • 5A bis 5E zeigen Beispiele für Fehlerverteilungen bei der PUF-Wert-Rekonstruktion.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen.
  • Die Abkürzung PUF steht für „Physically uncloneable function” oder Physikalische Hashfunktion. Die Idee dabei ist, physikalische Eigenschaften eines Objektes zu digitalisieren und so eine dem Objekt zugeordnete Bitfolge (Nummer) zu erhalten. Dabei ist es wünschenswert, dass die Bitfolgen zweier verschiedener physikalischer Objekte zueinander unkorreliert sind. Ein einfaches Beispiel zur Veranschaulichung ist ein Blatt Papier. Unter einem Mikroskop betrachtet erkennt man eine spezielle Feinstruktur der Holzspäne oder Zellstoffteile. Die Struktur kann mit Hilfe eines geeigneten Verfahrens vermessen werden und das Ergebnis als Bitfolge dargestellt werden. Diese Bitfolge ist die PUF oder der PUF-Wert für das Blatt. Ein anderes Blatt Papier ergibt bei diesem Vorgehen im Allgemeinen eine Bitfolge, die unkorreliert ist zur Bitfolge des ersten Blatts.
  • Den Prozess der Erzeugung einer Bitfolge (des PUF-Werts) aus den Eigenschaften des physikalischen Objektes wir als PUF-Generierung bezeichnet. Es ist wünschenswert, dass die PUF-Generierung auf effiziente Weise möglich ist.
  • Eine wünschenswerte Eigenschaft eines PUF-Generierungs-Mechanismus ist, dass dasselbe physikalische Objekt bei jeder PUF-Generierung jedes Mal dieselbe Bitfolge ergibt (z. B. bei jeder PUF-Anforderung). Dies ist jedoch typischerweise nicht der Fall. Eine wiederholte PUF-Generierung für dasselbe physikalische Objekt liefert typischerweise Bitfolgen, die zwar untereinander sehr ähnlich, aber im Allgemeinen nicht miteinander identisch sind. Dieses Defizit kann mit Methoden der Codierungstheorie (Fehlerkorrektur) ausgeglichen werden.
  • Dabei wird beispielsweise wie folgt vorgegangen: Gegeben sei ein physikalisches Objekt. Man erzeugt die dem Objekt zugeordnete erste PUF-Bitfolge A, und bezeichnet A als den wahren PUF-Wert. Aus dem wahren PUF-Wert A wird ein zugehöriger Hilfsvektor b berechnet. Der Hilfsvektor b wird als öffentlich zugängliche Information betrachtet. Z. B. wird b in einer nicht sicheren Umgebung abgespeichert. Der wahre PUF-Wert A selbst ist geheim und wird gar nicht abgespeichert und steht daher auch nicht direkt zur Verfügung. Bei einer späteren erneuten PUF-Generierung erhält man einen neuen PUF-Wert A'. Der Wert A' ist im Allgemeinen nicht identisch mit A, unterscheidet sich aber von A nur geringfügig. Ziel ist, den wahren PUF-Wert A wiederzugewinnen, ihn aus dem vorhandenen aktuellen PUF-Wert A' zu rekonstruieren. Dabei verwendet man die abgespeicherten Hilfsdaten b.
  • Gemäß verschiedenen Ausführungsformen wird ein PUF-Korrekturverfahren (oder PUF-Rekonstruktionsalgorithmus) für PUF-Werte mit niedrigen Fehlerwahrscheinlichkeiten und daher kleinen PUF-Größen bereitgestellt.
  • 1 zeigt ein Ablaufdiagramm 100.
  • Das Ablaufdiagramm 100 veranschaulicht ein Verfahren zum Rekonstruieren eines ersten Vektors aus einem zweiten Vektor gemäß einer Ausführungsform.
  • In 101 wird gemäß einer Matrix-Repräsentation des ersten Vektors Codeinformation für die Zeilenvektoren gemäß einem ersten Code gespeichert.
  • In 102 wird gemäß der Matrix-Repräsentation des ersten Vektors Codeinformation für die Spaltenvektoren gemäß einem zweiten Code gespeichert.
  • In 103 werden die Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors korrigiert, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors.
  • In 104 wird die Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors (dessen Zeilenvektoren mittels der Codeinformationen gemäß dem ersten Code nach 103 korrigiert sind) gemäß dem zweiten Code berechnet.
  • In 105 wird die Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors verglichen.
  • In 106 werden, basierend auf dem Ergebnis des Vergleichs, die Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert.
  • In 107 werden, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, die Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert.
  • In 108 werden, anhand der identifizierten Spalten und der identifizierten Zeilen, die Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, identifiziert.
  • In 109 werden die identifizierten Komponenten des zweiten Vektors korrigiert.
  • Gemäß einer Ausführungsform wird in anderen Worten ein zweiter Vektor in Richtung eines ersten Vektors korrigiert, oder in anderen Worten der erste Vektor aus dem zweiten Vektor (unter Verwendung der Codeinformation, die als gespeicherte Hilfsdaten angesehen werden können) rekonstruiert. Anschaulich werden in einer Matrixrepräsentation des ersten Vektors die Codeinformationen des ersten Codes für die Zeilen erzeugt und gespeichert und die Codeinformationen des zweiten Codes werden für die Spalten erzeugt und gespeichert.
  • Die Codeinformationen des ersten Codes werden zum Korrigieren der Zeilen (in einer entsprechenden Matrix-Repräsentation des zweiten Vektors, d. h. in einer Matrix-Repräsentation des zweiten Vektors, bei der die Komponenten des zweiten Vektors auf dieselbe Art angeordnet sind wie die Komponenten des ersten Vektors in der Matrix-Repräsentation des ersten Vektors) verwendet. Dabei können Fehler auftreten, d. h. die Korrektur des zweiten Vektors in Richtung des ersten Vektors kann unvollständig oder falsch sein.
  • Mittels der zweiten Codeinformationen können die Spalten, in denen Fehler vorhanden sind (d. h. in denen Komponenten vorhanden sind, die beim ersten Vektor und beim zweiten Vektor unterschiedlich sind) identifiziert werden. Ist ein solcher Fehler korrigierbar, so kann die Komponente und damit die fehlerhafte Zeile identifiziert werden. Ist die fehlerhafte Zeile identifiziert, so können auch die fehlerhaften Komponenten in den Spalten, die mittels des zweiten Codes nicht korrigierbar sind (weil zu viele Fehler in derselben Spalte vorhanden sind) identifiziert werden und werden korrigiert.
  • Gemäß einer Ausführungsform ist die Codeinformation für einen Spaltenvektor ein Syndrom des Spaltenvektors und die Codeinformation für einen Zeilenvektor ein Syndrom des Zeilenvektors.
  • Beispielsweise werden die Komponenten, die sich in den identifizierten Zeilen in Spalten befinden, die mittels des zweiten Codes nicht korrigierbare Fehler aufweisen, als die Komponenten, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert.
  • Gemäß einer Ausführungsform werden die Zeilenvektoren des zweiten Vektors derart korrigiert, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors, dass die Anzahl der geänderten Komponenten des zweiten Vektors minimal ist.
  • Beispielsweise repräsentieren der erste Vektor und der zweite Vektor jeweils einen PUF-Wert.
  • Zum Beispiel repräsentiert der erste Vektor einen wahren PUF-Wert und der zweite Vektor einen neu generierten PUF-Wert.
  • Der erste Vektor und der zweite Vektor sind beispielsweise Binärvektoren.
  • Der erste Code ist beispielsweise ein linearer Code.
  • Der erste Code ist beispielsweise der (23, 12, 7)-Golay-Code.
  • Der zweite Code beispielsweise ein linearer Code.
  • Beispielsweise hat der zweite Code eine gerade Minimumdistanz.
  • Zum Beispiel hat der zweite Code die Minimumdistanz 4.
  • Gemäß einer Ausführungsform ist der zweite Code ein erweiterter Hamming-Code.
  • Beispielsweise ist der zweite Code der (16, 11, 4)-erweiterte Hamming-Code.
  • Gemäß einer Ausführungsform ist die Matrix-Repräsentation des ersten Vektors eine Repräsentation des ersten Vektors als Matrix, bei dem aufeinanderfolgende Segmente des Vektors die Zeilen der Matrix bilden.
  • Das Verfahren weist beispielsweise ferner das Durchführen einer kryptographischen Operation basierend auf dem korrigierten zweiten Vektor auf.
  • Zum Beispiel weist das Verfahren ferner das Ableiten eines kryptographischen Schlüssels aus dem korrigierten zweiten Vektor auf.
  • Das in 1 dargestellte Verfahren wird Beispielsweise von einer Vorrichtung, wie sie in 2 dargestellt ist, durchgeführt.
  • 2 zeigt eine Datenverarbeitungseinrichtung 200 gemäß einer Ausführungsform.
  • Die Datenverarbeitungseinrichtung 200 ist eine Datenverarbeitungseinrichtung zum Rekonstruieren eines ersten Vektors aus einem zweiten Vektors.
  • Die Datenverarbeitungseinrichtung 200 weist einen Speicher 201 zum Speichern von, gemäß einer Matrix-Repräsentation des ersten Vektors, Codeinformation für die Zeilenvektoren gemäß einem ersten Code und zum Speichern von, gemäß der Matrix-Repräsentation des ersten Vektors, Codeinformation für die Spaltenvektoren gemäß einem zweiten Code auf.
  • Die Datenverarbeitungseinrichtung 200 weist ferner einen ersten Korrektor 202 zum Korrigieren der Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors auf.
  • Außerdem weist die Datenverarbeitungseinrichtung 200 eine Berechnungseinrichtung 203 zum Berechnen der Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors gemäß dem zweiten Code und einen Vergleicher 204 zum Vergleichen der Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors auf.
  • Die Datenverarbeitungseinrichtung weist ferner einen Identifizierer 205 zum Identifizieren, basierend auf dem Ergebnis des Vergleichs, der Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist, zum Identifizieren, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, der Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist, und zum Identifizieren, anhand der identifizierten Spalten und der identifizierten Zeilen, der Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, auf.
  • Die Datenverarbeitungseinrichtung weist außerdem einen zweiten Korrektor 206 zum Korrigieren der identifizierten Komponenten des zweiten Vektors auf.
  • Der erste Vektor und der zweite Vektor werden beispielsweise von einer Vektor-Erzeugungseinrichtung 207, z. B. einer PUF-Einrichtung zum Erzeugen von PUF-Werten, bereitgestellt. Die Datenverarbeitungseinrichtung 200 weist beispielsweise eine Vorverarbeitungseinrichtung (z. B. einen Prozessor) auf, der eingerichtet ist, die Codeinformation gemäß dem ersten Code und die Codeinformation gemäß dem zweiten Code für den ersten Vektor zu berechnen und in dem Speicher zu speichern.
  • Die Komponenten der Datenverarbeitungseinrichtung (die Korrektoren, die Berechnungseinrichtung, der Vergleicher und der Identifizierer) können durch ein oder mehrere Schaltkreise realisiert sein. In einer Ausführungsform ist ein ”Schaltkreis” als jegliche Einheit zu verstehen, die eine Logik implementiert, und die sowohl Hardware, Software, Firmware oder eine Kombination daraus sein kann. Somit kann ein ”Schaltkreis” in einer Ausführungsform ein hart-verdrahteter Logik-Schaltkreis oder ein programmierbarer Logik-Schaltkreis sein, wie beispielsweise ein programmierbarer Prozessor, z. B. ein Mikroprozessor. Unter einem ”Schaltkreis” kann auch ein Prozessor zu verstehen sein, der Software ausführt, zu verstehen sein, z. B. jegliche Art von Computer-Programm. Unter einem ”Schaltkreis” kann in einer Ausführungsform jegliche Art der Implementierung der im Weiteren beschriebenen Funktionen zu verstehen sein.
  • Ausführungsformen, die im Zusammenhang mit dem in 1 dargestellten Verfahren beschrieben sind, sind analog gültig für die Datenverarbeitungseinrichtung 200 und umgekehrt.
  • Die Datenverarbeitungseinrichtung 200 ist beispielsweise auf einer Chipkarte oder in einem RFID-Tag angeordnet, beispielsweise in einem Chipkarten-Modul.
  • Im Folgenden werden zwei Ausführungsbeispiele im Detail beschrieben. Beim ersten Ausführungsbeispiel ist der PUF-Wert 368 Bit groß. Es können aus dem PUF-Wert 132 Schlüsselbits gewonnen werden. Voraussetzung dafür ist, dass die Fehlerrate bei einer neuen PUF-Generierung 2.1% (bzw. 4.0%) nicht übersteigt. Beim zweiten Ausführungsbeispiel ist der PUF-Wert 256 Bit groß und es kann ein 72 Bit langer Schlüssel extrahiert werden. Die zulässigen Fehlerraten betragen 2.3% (bzw. 4.5%).
  • Die jeweils zwei unterschiedlichen Fehlerraten beziehen sich auf die Toleranzwerte 1:1 Million (bzw. 1:1000) bei der PUF-Rekonstruktion. Der Toleranzwert 1:1000000 bedeutet, dass im Zuge von einer Million PUF-Wert-Generierungen die Rekonstruktion des wahren PUF-Werts aus dem aktuell generierten PUF-Wert höchstens einmal scheitern darf. Entsprechend bedeutet der Toleranzwert 1:1000, dass ein Scheitern während 1000 PUF-Generierungen gerade noch akzeptabel ist.
  • Kleine PUF-Größen, wie sie in den unten beschriebenen Ausführungsbeispielen zu Grunde liegen, sind besonders für RFID-Chips geeignet. Diese Chips stehen typischerweise unter einem enormen Preisdruck und sollen daher mit minimaler Hardwarefläche realisierbar sein.
  • Auch wesentlich größere PUF-Werte können verwendet werden, beispielsweise 2000 bis 5000 Bit große PUF-Werte, die dazu verwendet werden können, aus ihnen einen 128 Bit langen kryptographischen Schlüssel zu extrahieren, allerdings bei wesentlich höheren Fehlerraten von 10–20%, was zum Teil die großen PUF-Werte erklärt. Hohe Fehlerraten sind jedoch mit kleinen PUF-Werten nicht vereinbar. Bei PUF-Realisierungen, die kleine Fehlerraten haben, sind wesentlich kleinere PUF-Größen möglich. Die unten beschriebenen Ausführungsbeispiele beschreiben ein PUF-Rekonstruktionsverfahren, mit dem Fehlerraten unterhalb von 3% erreicht werden können.
  • Eine Fehlerrate p, die bei einer PUF-Generierung auftritt, von beispielsweise p = 0.03 (d. h. 3%) bedeutet, dass bei einer PUF-Generierung im Mittel 3% Fehler auftreten, d. h. 3% der Bitstellen in einem neu generierten PUF-Wert weichen ab von einem ursprünglich generierten, d. h. dem wahren PUF-Wert. In anderen Worten kippt jedes Bit des PUF-Werts bei einer erneuten PUF-Generierung mit der Wahrscheinlichkeit von p = 0.03.
  • In den unten beschriebenen Ausführungsbeispielen wir beispielsweise als Toleranz für das PUF-Rekonstruktionsverfahren zugrunde gelegt, dass die PUF-Rekonstruktion höchstens einmal scheitern darf im Zuge von 1 Million PUF-Generierungen.
  • Zu vorgegebenem p definiert man die Effizienz Eff(p) eines PUF-Rekonstruktionsalgorithmus durch Eff[p] = Schlüssellänge / PUF – Größe
  • Die PUF-Rekonstruktionsverfahren gemäß den beiden unten beschriebenen Ausführungsbeispielen haben die Effizienz Eff = 132/368 = 0.36 (für p = 2.1% und Toleranz 1:1000000) und Eff = 72/253 = 0.28 (für p = 2.3% und Toleranz 1:1000000)
  • Je höher die Effizienz eines Rekonstruktionsverfahrens (auch im Folgenden bezeichnet als Rekonstruktionsalgorithmus), umso besser ist der Rekonstruktionsalgorithmus. Die Effizienz ist also ein gutes Maß, wenn verschiedene Rekonstruktionsalgorithmen gegeneinander verglichen werden. Es ist aber typischerweise nur sinnvoll, Rekonstruktionsalgorithmen mit identischen Fehlerraten miteinander zu vergleichen bzw. beim Vergleich zweier Rekonstruktionsalgorithmen die zugehörigen Fehlerraten mit zu berücksichtigen.
  • In den folgenden Ausführungsbeispielen wird für die PUF-Rekonstruktion eine Kombination aus den folgenden zwei binären linearen Codes verwendet:
    • a) Der (23, 12, 7) Golay-Code;
    • b) Der (16, 11, 4) erweiterten Hamming-Code.
  • Die Codewörter des Golay-Codes sind 23 Bit lang. Es gibt 212 = 4096 verschiedene Codewörter. Zwei beliebige Codewörter unterscheiden sich voneinander in mindestens 7 Bitpositionen. Anders ausgedrückt, die Hammingdistanz d(c1, c2) zweier verschiedener Codewörter c1, c2 ist stets größer als oder gleich sieben. Aus der Minimumdistanz d = 7 folgt, dass im Golay-Code jeder in einem Codewort aufgetretene 3-Bitfehler (sowie 1- und 2-Bitfehler) korrigiert werden kann.
  • Wenn ein Codewort c abgesendet wird und bei der Kanalübertragung bis zu drei Bitfehler im Codewort auftreten, dann kann ein Golay-Decoder (d. h. ein Decoder für den Golay-Code) die aufgetretenen Fehler bereinigen. Der Decoder erhält also als Eingabe einen 23 Bit langen Nachrichtenvektor y, der Hammingdistanz 3 oder kleiner zu dem abgeschickten Codewort c hat, und produziert als Ausgabevektor entweder das Codewort c oder den Fehlervektor e = y + c.
  • Der Golay-Code ist typischerweise aus zwei Gründen attraktiv. Erstens besitzt er eine einfache flächengünstige Implementierung in Hardware, was insbesondere auch für den Decoder gilt. So können die Hardwarekosten für eine Implementierung des Golay-Codes zu 2871 GE (Gate Equivalent, d. h. Gatter-Äquivalent, d. h. die Fläche für die Implementierung eines NAND-Gatters) berechnet werden, wobei die Fläche hauptsächlich durch 451 benötigte Flip-Flops zustande kommt. Hier lässt sich eventuell Fläche einsparen, indem man andere ohnehin vorhandene Speicher z. B. einen vorhandenen RAM-Speicher ausnutzt.
  • Zweitens ist der Golay-Code perfekt. Damit ist folgende Eigenschaft gemeint: Sei v ein beliebiger 23 Bit langer Vektor. Dann existiert immer ein eindeutig bestimmtes Codewort c mit der Eigenschaft d(v, c) ≤ 3.
  • Es gibt also genau ein Codewort c, das sich von v in höchstens drei Bitstellen unterscheidet. Wenn man den Vektor v dem Decoder als Eingabe zuführt, dann produziert der Decoder dieses eindeutig bestimmte Codewort c (oder den zugehörigen Fehlervektor e) als Ausgabe.
  • Ein Decoder für den Golay-Code produziert für jeden möglichen Eingabevektor v (es gibt 223 mögliche Eingabevektoren) ein eindeutiges Codewort c als Ausgabevektor. Wenn bei der Übertragung 0, 1, 2 oder 3 Fehler im Codewort aufgetreten sind, dann korrigiert der Decoder die aufgetretenen Fehler und gibt das korrekte (fehlerbereinigte) Codewort aus. Wenn bei der Übertragung 4 oder mehr Fehler passierten, dann produziert der Decoder ebenfalls ein eindeutig bestimmtes jedoch falsches Codewort als Ausgabevektor. Das ausgegebene falsche Codewort enthält mindestens 7 Fehler.
  • Der (16, 11, 4)-erweiterte Hamming-Code hat die Länge n = 16, die Dimension k = 11 und die Minimumdistanz d = 4. Jedes Codewort ist 16 Bit lang. Es gibt 211 = 2048 verschiedene Codewörter. Für je zwei verschiedene Codewörter c1, c2 gilt d(c1, c2) >= 4, die beiden Codewörter unterscheiden sich also in mindestens 4 Bitpositionen.
  • Aus d = 4 folgt, dass im erweiterten Hamming-Code jeder 1-Bitfehler korrigiert werden kann. Ein aufgetretener 2-Bitfehler kann nicht mehr korrigiert werden (dazu müsste d = 5 sein), wird aber immer erkannt.
  • Ein Decoder für den erweiterten Hamming-Codes produziert je nach Eingabevektor dreierlei mögliche Aussagen:
    • a) Eingabevektor ist fehlerfrei.
    • b) 1-Bitfehler ist im Eingabevektor vorhanden (der 1-Bitfehler wird korrigiert).
    • c) 2-Bitfehler ist im Eingabevektor vorhanden.
  • Wenn bei der Übertagung 0, 1, oder 2 Bitfehler aufgetreten sind, dann entsprechen die Aussagen des Decoders der Wahrheit, ansonsten nicht.
  • Der Hamming-Code und der hier betrachtete erweiterte Hamming-Code erlauben eine sehr günstige Implementierung in Hardware. (Sie ist sogar noch günstiger als die für den Golay-Code.)
  • Die Elemente des (23, 12, 7)-Golay-Codes und des (16, 11, 4)-erweiterten Hamming-Codes sind 23 Bit lange bzw. 16 Bit lange Codewörter. Wenn aus einem PUF-Wert 23 bzw. 16 Bit lange Segmente gebildet werden, dann sind diese Segmente im Allgemeinen keine Codewörter. Aus diesem Grund können die genannten Codes daher nicht direkt verwendet werden. Die Codes können aber dennoch für die PUF-Rekonstruktion genutzt werden, indem die Syndrome genutzt werden.
  • Zur Erläuterung dieser Vorgehensweise wird im Folgenden ein linearer (n, k, d)-Code betrachtet. Es ist n die Länge der Codewörter und k die Dimension des Codes, was bedeutet, dass es 2k verschiedene Codewörter gibt. d ist die Minimumdistanz des Codes, was bedeutet, dass zwei verschiedene Codewörter sich mindestens in d Koordinaten unterscheiden.
  • Der lineare (n, k, d)-Code kann durch eine binäre (n – k)×n-Matrix H beschrieben werden, der sogenannten Kontrollmatrix. Die Kontrollmatrix H eines linearen (n, k, d)-Codes hat n – k Zeilen und n Spalten. Ein n Bit langer Zeilenvektor c ist ein Codewort des (n, k, d)-Codes genau dann, wenn das Produkt aus der Kontrollmatrix H und dem Spaltenvektor ct den Nullvektor ergibt: Hct = 0.
  • Sei H die Kontrollmatrix eines linearen (n, k, d)-Codes, und sei y ein beliebiger Zeilenvektor der Länge n. Dann heißt S(y) = Hyt das Syndrom von y. Das Syndrom S(y) ist also ein Spaltenvektor der Länge n – k. (Beachte: S(y) = 0 genau dann, wenn y ein Codewort ist.)
  • Das Syndrom eines Vektors y spielt typischerweise eine wichtige Rolle bei fast allen Fehlerkorrekturalgorithmen für lineare Codes: Als Beispiel werde ein Codewort c abgeschickt. Ein potentiell fehlerhafter Nachrichtenvektor y wird empfangen. Dann wird das Syndrom S(y) berechnet und dem Decoder als Eingabe zugeführt. Aus dem Syndrom S(y) berechnet der Decoder den Fehlervektor e. Und aus e wird schließlich das Codewort c berechnet, durch c = y + e.
  • Als Beispiel sei n = 8, y = 11110011, und e = 01000000. Dann ist c = y + e = 10110011.
  • Die Bedeutung des Syndroms liegt in der folgenden Eigenschaft begründet: S(y) = S(c + e) = S(c) + S(e) = 0 + S(e) = S(e).
  • Das Syndrom des empfangenen Nachrichtenvektors y ist also identisch mit dem Syndrom des Fehlervektors e.
  • Beim (23, 12, 7)-Golay-Code hat die Kontrollmatrix n – k = 23 – 12 = 11 Zeilen und n = 23 Spalten. Die Kontrollmatrix des Golay-Codes ist also eine 11×23-Matrix. Daher sind die Syndrom beim Golay-Code Spaltenvektoren der Länge 11.
  • Bei dem (16, 11, 4)-erweiterten Hamming-Code ist die Kontrollmatrix eine 5×16-Matrix und die Syndrome sind Spaltenvektoren der Länge 5.
  • Im Folgenden wird nun ein PUF-Rekonstruktionsverfahren gemäß einem Ausführungsbeispiel mit einem 368 = 16 × 23 Bit langen PUF-Wert A = (a1, a2, a3, ..., a368) mit Bezug auf 3 beschrieben. Entsprechend der Darstellung eines PUF-Werts als Bitfolge wird ein PUF-Wert auch als PUF-Vektor (mit den einzelnen Bits des PUF-Werts als Komponenten) angesehen. Insbesondere können Werte in Binärdarstellung als Binärvektoren angesehen werden und umgekehrt.
  • 3 zeigt ein Ablaufdiagramm 300.
  • In 301 wird A in 16 Segmente der Länge 23 zerlegt: A = (A1, A2, A3, ..., A16)
  • Jedes einzelne Segment Aj, j = 1, 2, ..., 16, wird im Folgenden mit dem (23, 12, 7)-Golay-Code bearbeitet.
  • A wird als wahrer PUF-Wert verwendet. Bei einer neuen PUF-Generierung wird ein aktueller PUF-Wert A' generiert der im Allgemeinen von A abweicht. Der aktuelle PUF-Wert A' wird in 302 ebenfalls in Segmente der Länge 23 zerlegt: A' = (A1', A2', A3', ..., A16')
  • In 303 werden alle Segmente Aj', in denen höchstens 3 Fehler passiert sind, mit Hilfe des Golay-Codes korrekt korrigiert. Segmente, in denen mehr als 3 Fehler passiert sind, erfahren dieselbe Behandlung und werden durch den Golay-Code falsch korrigiert. Angenommen in den ersten beiden Segmenten A1' und A2' sind 4 Fehler aufgetreten. Dann ergibt sich nach Anwendung des Golay-Codes auf A' A'' = (F1, F2, A3, ..., A16)
  • In 304 wird der erweiterte (16, 11, 4)-Hamming-Code verwendet um die beiden fehlerhaften Segmente zu korrigieren: F1 wird korrigiert zu A1 und F2 wird korrigiert zu A2: A'' -> (A1, A2, A3, ..., A16) = A.
  • Damit ist die PUF-Rekonstruktion beendet.
  • Der erweiterte Hamming-Code (16, 11, 4) hat Minimumdistanz 4. Somit kann mittels diesen Codes einen in einem seiner 16 Bit langen Codewörter aufgetretenen 2-Bitfehler zwar erkannt, aber nicht korrigiert werden. Durch Kombination des erweiterten Hamming-Code mit dem Golay-Code können die zwei fehlerhaften Segmente jedoch dennoch korrigiert werden. Dies wird im Folgenden mit Bezug auf 4 genauer erläutert.
  • 4 zeigt ein Ablaufdiagramm 400.
  • Sei A = (a1, a2, ..., a368) der wahre PUF-Wert, der aus 368 PUF-Bits a1, a2, ..., a368 besteht.
  • In 401 werden die 368 PUF-Bits in einer 16×23 Matrix angeordnet:
    Figure DE102013109315B4_0002
  • Dies kann als Zerlegung des PUF-Werts A in Segmente gemäß 301 angesehen werden.
  • Die Zeilen dieser Matrix werden mit A1, A2, ..., A16 und die Spalten der Matrix mit a1, a2, ..., a23 bezeichnet. Zum Beispiel ist A2 = (a24, a25, a26, ..., a46) und
    Figure DE102013109315B4_0003
  • Die Zeilen der Matrix A sind also Zeilenvektoren der Länge 23. Die Spalten der Matrix A sind Spaltenvektoren der Länge 16.
  • In 402 werden für jeden der 16 Zeilenvektoren A1, A2, ..., A16 gemäß dem (23, 12, 7)-Golay-Code das Syndrom Sj = S(Aj) = H1AjT für j = 1, 2, ..., 16, berechnet, wobei H1 eine 11×23 Kontrollmatrix des Golay-Codes ist. Auf diese Weise werden 16 Spaltenvektoren S1, S2, ..., S16 der Länge 11 erhalten. Diese 16 Spaltenvektoren erhalten insgesamt 16 × 11 = 176 Bit, und stellen den ersten Teil der sogenannten Hilfsdaten, im Folgenden auch bezeichnet als erste Hilfsdaten, dar.
  • Die ersten Hilfsdaten können als Beispiel der in 101 gespeicherten Codeinformation angesehen werden.
  • Die ersten Hilfsdaten werden im Folgenden dazu verwendet, um die bei einer neuen PUF-Generierung typischerweise auftretenden Fehler zu korrigieren. (So ist es beispielsweise wünschenswert, stets den wahren, ursprünglichen PUF-Wert A zu rekonstruieren. Beispielsweise wird aus ihm ein kryptographischer Schlüssel abgeleitet. Bei jeder neuen PUF-Generierung wird ein aktueller PUF-Wert generiert, der dem wahren PUF-Wert ähnlich ist, sich von ihm aber in einigen Bitstellen typischerweise unterscheidet. Man spricht in diesem Fall von „aufgetretenen Fehlern.”)
  • In 403 wird der zweite Teil der Hilfsdaten, im Folgenden bezeichnet als zweite Hilfsdaten, wie folgt berechnet: Für jeden der 23 Spaltenvektoren a1, a2, ..., a23 wird gemäß dem (16, 11, 4)-erweiterten Hamming-Code das Syndrom sj = S(aj) = H2aj für j = 1, 2, ..., 23 berechnet, wobei H2 eine den erweiterten Hamming-Code definierende 5×16 Kontrollmatrix ist. Auf diese Weise werden 23 Spaltenvektoren s1, s2, ..., s23 der Länge 5 erhalten, die zusammengenommen 23 × 5 = 115 Bit enthalten und den zweiten Teil der Hilfsdaten darstellen.
  • Die zweiten Hilfsdaten können als Beispiel der in 102 gespeicherten Codeinformation angesehen werden.
  • Die Hilfsdaten haben insgesamt eine Größe von 176 + 115 = 291 Bit. Sie werden beispielsweise im nichtflüchtigen Speicher einer Chipkarte abgespeichert und gelten als öffentliche Daten. Man geht also davon aus, dass ein potentieller Angreifer, der den wahren PUF-Wert in Erfahrung bringen will, Zugriff auf die Hilfsdaten hat. Somit ist es von Interesse, wie viel Information über die den unbekannten 368 Bit großen PUF-Wert aus den 291 Bit Hilfsdaten gewonnen werden können. Auf ersten Blick scheinen die 291 Bit Hilfsdaten auch 291 Bit von dem PUF-Wert preisgegeben. Eine genauere Analyse zeigt aber, dass nur 236 Bit an Information über den wahren PUF-Wert A aus den 291 Bit Hilfsdaten gewonnen werden können. Das liegt daran, dass die ersten Hilfsdaten und die zweiten Hilfsdaten keine voneinander gänzlich unabhängige Informationen darstellen. Die Informationen haben einen redundanten Anteil von 55 Bit. Es verbleiben also 368 – 236 = 132 Bit an geheimer Information. Somit kann aus dem PUF-Wert z. B. ein echter 128 Bit langer kryptographischer Schlüssel gewonnen werden. Die Zahl 132 ergibt sich im Übrigen auch auf die folgende Weise: Es werden der (23, 12, 7)-Golay-Code und der (16, 11, 4)-erweiterte Hamming-Code verwendet. Der Golay-Code hat die Dimension k1 = 12. Der erweiterte Hamming-Code hat die Dimension k2 = 11. Das Produkt k1 × k2 = 12 × 11 = 132.
  • In 404 werde nun ein neuer (zweiter) PUF-Wert A' = (a1', a2', a3', ..., a368') generiert.
  • In 405 werden die 368 Bit des neuen PUF-Werts ebenfalls zu einer 16×23 Matrix A' angeordnet:
    Figure DE102013109315B4_0004
  • Dies kann als Zerlegung des zweiten PUF-Werts A' in Segmente gemäß 302 angesehen werden.
  • Die 16 Zeilen dieser Matrix werden mit A1', A2', ..., A16' bezeichnet.
  • In 406 werden die Segmente des zweiten PUF-Werts A' unter Verwendung des Golay-Codes wie folgt korrigiert. Dies kann als Beispiel für 103 und 303 angesehen werden.
  • Dazu wird für jeden der 23 Bit langen Zeilenvektoren A1', A2', ..., A16' gemäß dem (23, 12, 7)-Golay-Code das Syndrom Sj' = S(Aj') = H1Aj'T für j = 1, 2, ..., 16 berechnet.
  • Es sollte beachtet werden, dass weder die Zeilen A1, A2, ..., A16 der den wahren PUF-Wert darstellenden Matrix A noch die Zeilen A1', A2',..., A16' der den aktuellen PUF-Wert darstellenden Matrix A' sind Codewörter im (23, 12, 7)-Golay-Code. Es wurden lediglich die Syndrome für diese 23 Bit langen Zeilenvektoren im Golay-Code berechnet.
  • Für einen Zeilenvektor Aj der Matrix A und den entsprechenden Zeilenvektor Aj' der Matrix A' gilt, wenn bei der neuen PUF-Generierung im jten Segment keine Fehler aufgetreten sind, Aj' = Aj.
  • Falls bei der PUF-Generierung jedoch im jten Segment Fehler aufgetreten sind, kann das durch einen entsprechenden 23 Bit langen Fehlervektor Ej beschrieben werden. Es gilt dann Aj' = Aj + Ej.
  • Wenn z. B. an den Stellen 3, 5, und 23 im jten Segment ein Fehler aufgetreten ist, dann hat der Fehlervektor die Form Ej = (00101000000000000000001).
  • Die Korrektur der Zeilen der Matrix A' geschieht folgendermaßen: Für die Zeilenvektoren Aj' und Aj gilt Aj' = Aj + Ej.
  • Daraus folgt (wegen der Linearität der Syndrom-Abbildung) S(Ej) = S(Aj' + Aj) = S(Aj') + S(Aj) = Sj' + Sj.
  • Die 11 Bit langen Spaltenvektoren Sj und Sj' sind bekannt: Sj ist Bestandteil der ersten Hilfsdaten und Sj' = S(Aj') ist das Syndrom des aktuellen PUF-Segments Aj'. Daher kann das Syndrom S(Ej) des unbekannten Fehlervektors Ej berechnet werden.
  • Der Decoder für den (23, 12, 7)-Golay-Code erhält als Eingabe den 11 Bit langen Spaltenvektor S(Ej) und liefert als Ausgabe einen 23 Bit langen Spaltenvektor vj. Der Ausgabevektor vj stimmt überein mit dem gesuchten Fehlervektor Ej genau dann, wenn in dem jten Segment weniger als 4 Bitfehler aufgetreten sind. Sei Aj'' := Aj' + vj.
  • Wenn weniger als 4 Fehler im jten Segment aufgetreten sind, gilt vj = Ej. Dann ist Aj'' = Aj' + vj = Aj' + Ej = Aj das jte Segment des wahren PUF-Werts A. Die Rekonstruktion des jten Segments des wahren PUF-Werts ist damit gelungen.
  • Wenn jedoch 4 oder mehr Fehler aufgetreten sind im jten Segment, dann ist vj ungleich Ej. In diesem Fall stimmt Aj'' := Aj' + vj nicht überein mit Aj. Die Rekonstruktion des jten Segments des wahren PUF-Werts ist gescheitert.
  • Es werden somit die aus dem Golay Decoder empfangenen 23 Bit langen Ausgabevektoren v1, v2, ..., v16 der Reihe nach zu den Zeilenvektoren A1', A2', ..., A16' addiert (z. B. implementiert mittels eines bitweisen XOR). Aus den erhaltenen Zeilenvektoren Aj'' wird die Matrix
    Figure DE102013109315B4_0005
    gebildet. Die Zeilen der Matrix A'' werden mit A1'', A2'', ..., A16'' bezeichnet. Die Spalten der Matrix A'' werden mit a1'', a2'', ..., a23'' bezeichnet.
  • Wie oben erläutert können die Zeilen der Matrix A'' unterschiedlich sein von den Zeilen von A. In 407 werden die Segmente (d. h. die Zeilen) von A'' unter Verwendung des erweiterten Hamming-Codes wie folgt korrigiert. Dies kann als Beispiel für 304 angesehen werden und weist die im Folgenden beschriebenen Verarbeitungsschritte auf, die als Beispiele für 104 bis 109 angesehen werden können.
  • Für jeden der 16 Bit langen Spaltenvektoren aj'' wird gemäß dem (16, 11, 4)-erweiterten Hamming-Code das Syndrom sj'' = S(aj'') = H2aj'' für j = 1, 2, ..., 23. berechnet.
  • Es gilt aj'' = aj + ej, wobei der Fehlervektor ej ein Spaltenvektor der Länge 16 ist. (Bei Fehlerfreiheit, wenn also aj'' = aj gilt, dann ist ej der Nullvektor.)
  • Es werden nun die Spaltenvektoren s1, s2, ..., s23 verwendet, die die zweiten Hilfsdaten bilden. Aus ej = aj'' + aj folgt S(ej) = S(aj'' + aj) = S(aj'') + S(aj) = sj'' + sj := bj für j = 1, 2, ..., 23, wobei die Syndromberechnungen im (16, 11, 4)-erweiterten Hamming-Code stattfinden. Da die sj und sj'' zur Verfügung stehen, kann bj = S(ej), das Syndrom des Fehlervektors ej, berechnet werden.
  • Jede Kontrollmatrix des (16, 11, 4)-erweiterten Hamming-Codes enthält als Spaltenvektoren alle 16 Spaltenvektoren der Länge 5 mit ungeradem Hamminggewicht. D. h. jeder Spaltenvektor der Kontrollmatrix enthält 1, 3, oder 5 Einsen. Die Reihenfolge dieser Spaltenvektoren ist beliebig; es gibt also mehrere unterschiedliche Kontrollmatrizen für den (16, 11, 4)-erweiterten Hamming-Code.
  • Im Folgenden wird die folgende Kontrollmatrix H für den (16, 11, 4)-erweiterten Hamming-Code zugrunde gelegt:
    Figure DE102013109315B4_0006
  • Die Spalten dieser Kontrollmatrix H werden mit h1, h2, ..., h16 bezeichnet.
  • Mittels des erweiterten Hamming-Codes (unter Benutzung der zweiten Hilfsdaten) werden die 23 Spalten der Matrix A'' untersucht. Dazu werden die 23 fünf Bit langen Spaltenvektoren b1, b2, ..., b23 durch bj = S(aj'') + sj für j = 1, 2, ..., 23 berechnet. Dies kann als Vergleich der Syndrome der Spalten der Matrix A'' mit den vorgespeicherten Syndrome (d. h. der zweiten Hilfsdaten) und somit als Beispiel für 104 gesehen werden.
  • Es werden im Folgenden vier Fälle unterschieden:
    • • Im ersten Fall ist die Matrix A'' bereits fehlerfrei. D. h. A'' = A
    • • lm zweiten Fall ist eine Zeile der Matrix A'' fehlerhaft.
    • • Im dritten Fall gibt es zwei fehlerhafte Zeilen in A''.
    • • Im vierten Fall sind mehr als zwei Zeilen der Matrix A'' fehlerhaft oder es sind zwar nur 2 Zeilen fehlerhaft aber alle Fehler traten an denselben Stellen auf.
  • Die ersten drei Fälle können mithilfe der Spaltenvektoren 1, b2, ..., b23 korrigiert werden. Im vierten Fall scheitert die PUF-Rekonstruktion.
  • Die vier Fälle werden im Folgenden mit Bezug auf die 5A bis 5E erläutert.
  • 5A bis 5E zeigen Fehlerverteilungen in der gemäß dem Golay-Code korrigierten Matrixrepräsentation.
  • In den 5A bis 5E ist jede Komponente der Matrix A'' jeweils durch ein Kästchen dargestellt, wobei ein leeres Kästchen Übereinstimmung mit der Matrix A in dieser Komponente darstellt und ein gefülltes Kästchen fehlende Übereinstimmung mit der Matrix A in dieser Komponente (d. h. einen Fehler) darstellt.
  • Fall 1: Alle 16 Zeilen von A'' sind bereits fehlerfrei. Dies ist in 5A dargestellt.
  • Das heißt, es gilt
    Figure DE102013109315B4_0007
  • In diesem Fall wird A'' = A gesetzt.
  • Fall 2: Eine Zeile von A'' ist fehlerhaft.
  • Als Beispiel sei die dritte Zeile von A'' fehlerhaft. Die dritte Zeile enthalte also 7 Fehler, die sich beispielsweise an den Positionen 1, 2, 8, 10, 15, 20, und 22 befinden, wie in 5B dargestellt.
  • Die 23 Spaltenvektoren b1, b2, ..., b23 haben die Form:
    Figure DE102013109315B4_0008
  • Alle anderen Spaltenvektoren bk sind identisch mit dem Nullvektor. Aus (0,0,1,0,0)T = h3 kann gefolgert werden, dass die dritte Zeile von A'' die fehlerhafte ist.
  • Dazu sollte beachtet werden, dass h3 der dritte Spaltenvektor der obigen Kontrollmatrix H für den erweiterten Hamming-Code ist und gilt, dass wenn das Syndrom identisch ist mit der jten Spalte der Kontrollmatrix, ein 1-Bitfehler an der jten Position vorliegt.
  • Die Nummern j der Spaltenvektoren bj, die identisch sind mit h3 liefern die Fehlerpositionen j = 1, 2, 8, 10, 15, 20, 22. Diese sieben fehlerhaften Einträge der Matrix A'' werden korrigiert. Die resultierende Matrix A stellt den wahren PUF-Wert dar.
  • Fall 3: Zwei Zeilen von A'' sind fehlerhaft. Als Beispiel seien die Fehler verteilt wie in 5C dargestellt.
  • Es gilt
  • Figure DE102013109315B4_0009
  • Aus den zugehörigen Indizes 1, 3, 4, 5, 7, 9, 10, 11, 16, 18, 20, 22 kann geschlossen werden, dass die entsprechenden Spaltenvektoren a1'', a3'', a4'', a5'', a7'', a9'', a10'', a11'', a16'', a18'', a20'', und a22'' der Matrix A'' fehlerfrei sind.
  • Weiter gilt
    Figure DE102013109315B4_0010
  • Aus der Tatsache, dass diese drei Vektoren identisch sind mit einem Vektor von geradem Hamming-Gewicht kann geschlossen werden, dass in den zugehörigen Spalten a2'', a13'', und a23'' der Matrix A'' ein Zweibitfehler vorliegt.
  • Die Zweibitfehler werden erkannt, sie können aber ohne zusätzliche Informationen nicht korrigiert werden. Ihre Korrektur wird zunächst zurückgestellt.
  • Ferner gilt
  • Figure DE102013109315B4_0011
  • Die vier Vektoren stimmen überein mit h2, dem zweiten Spaltenvektor der Kontrollmatrix H. Daraus schließen wir, dass die zweite Zeile von A'' Fehler enthält, und zwar an den Positionen 6, 12, 17, und 21. Diese Fehler werden korrigiert.
  • Schließlich gilt
    Figure DE102013109315B4_0012
  • Daraus schließen wir, dass es Fehler in der 6ten Zeile von A'' gibt in den Positionen 8, 14, 15, und 19. Diese Fehler werden korrigiert.
  • Nun können auch die Zweibitfehler korrigiert werden: Es ist bekannt, dass die 2te und die 6te Zeile der Matrix A'' fehlerhaft waren und zum Teil noch immer sind (da in einer fehlerhaften Zeile mindestens 7 Fehler vorliegen müssen). Ferner ist bekannt, dass in der 2ten, 13ten, und 23ten Spalte der Matrix A'' ein Zweibitfehler vorliegt. Somit kann angenommen werden, dass der Zweibitfehler jeweils im Schnittpunkt der jeweiligen Spalte mit der 2ten und 6ten Zeile vorliegt. Daher werden die sechs Einträge der Matrix A'' in den Schnittpunkten der 2ten und 6ten Zeile mit der 2ten, 13ten und 23ten Spalte korrigiert.
  • Nachdem nun auch die Zweibitfehler korrigiert wurden, liegt die Matrix A, die den wahren PUF-Wert repräsentiert, vor.
  • Es kann eine Probe durchgeführt werden, indem überprüft wird, ob der Spaltenvektor
    Figure DE102013109315B4_0013
    mit der Summe
    Figure DE102013109315B4_0014
    übereinstimmt. Dass dies der Fall ist bestätigt, dass in den Spalten a2'', a13', und a23'' tatsächlich ein Zweibitfehler an den Positionen 2 und 6 aufgetreten ist.
  • Fall 4: 2 Zeilen sind fehlerhaft aber alle Fehler traten an denselben Stellen auf (Fall 4a) oder mehr als zwei Zeilen der Matrix A'' sind fehlerhaft (Fall 4).
  • Fall 4a: In 5D ist eine Fehlerverteilung dargestellt, die nicht korrigiert werden kann. Dieses Beispiel stellt allerdings einen unwahrscheinlichen Ausnahmefall dar.
  • Es sind
  • Figure DE102013109315B4_0015
  • Für alle anderen j gilt bj = 0.
  • Somit treten in diesem Fall sieben Vektoren bj mit geradem Hamminggewicht auf, was einen Hinweis auf einen Zweibitfehler in den entsprechenden Spalten liefert. Für die anderen Spalten tritt stets der Nullvektor auf. Zudem sind die von Null verschiedenen Vektoren bj alle identisch. Das ist zusammengenommen ein starkes Indiz dafür, dass zwei Zeilen der Matrix A'' fehlerhaft sind. Es lassen sich im vorliegenden Fall aber die Positionen der beiden fehlerhaften Zeilen nicht bestimmen.
  • Es gilt
  • Figure DE102013109315B4_0016
  • Aus den verfügbaren Daten bj, j = 1, 2, ..., 23 folgt also nicht eindeutig, dass – wie in 5D dargestellt – die Zeilen A3'' und A5'' die fehlerhaften sind. Genauso gut könnten die Zeilen A1'' und A15'' fehlerhaft sein, oder die Zeilen A2'' und Al2'' usw.
  • In dem vorliegenden Fall können zwar die zwei fehlerhaften Zeilen der Matrix A'' nicht korrigiert werden aber es wird erkannt, dass (mindestens) zwei Zeilen der Matrix A'' falsch sind. Die PUF-Rekonstruktion ist zwar nicht gelungen aber es wurde zumindest nicht ein falscher Vektor rekonstruiert.
  • Fall 4b: Wenn drei (wie in 5E) oder mehr Zeilen der Matrix A'' fehlerhaft sind, dann ist es im Allgemeinen nicht möglich die Matrix A'' zu reparieren (d. h. aus ihr die Matrix A zu rekonstruieren, die den wahren PUF-Wert darstellt).
  • Zusammenfassend wird in einer Ausführungsform ein linearen (n, k, d)-Code (beispielsweise der (23, 12, 7)-Golay-Code) in Kombination mit einem (2m, 2m-m-1, 4)-erweiterten Hamming-Code (beispielsweise mit dem (16, 11, 4)-erweiterten Hamming-Code) für die Korrektur (d. h. Rekonstruktion) von PUF-Werten mit kleinen bis moderaten Fehlerraten verwendet.
  • Der erste Korrekturschritt wird von dem linearen (n, k, d)-Code geleistet. Dieser Code wird auf PUF-Segmente der Länge n angewandt. Die meisten der Segmente werden in diesem Schritt fehlerbereinigt. Selbst dann wenn zwei Segmente fehlerhaft bleiben, können sie – fast immer – im zweiten Korrekturschritt fehlerfrei gemacht werden. Der zweite Korrekturschritt wird von dem erweiterten Hamming-Code geleistet.
  • Es sollte beachtet werden, dass da der erweiterte Hamming-Code die Minimumdistanz d = 4 hat, er nicht stark genug ist, um einen Zweibitfehler in einem einzelnen Codewort zu korrigieren. (Dazu braucht man einen Code mit d = 5, der aber mehr Aufwand erfordert.) Dennoch gelingt es wie oben beschrieben mit dem erweiterten Hamming-Code zwei Segmente zu korrigieren. Derr erweiterte Hamming-Code kann günstig in Hardware realisiert werden.
  • In dem obigen Ausführungsbeispiel hat der PUF-Wert eine Länge von 368 Bit und es kann ein 132 Bit (oder z. B. 128 Bit) langer Schlüssel aus ihm gebildet werden. Für RFID-Anwendungen sind auch kleinere Schlüssellängen von Interesse. In dem folgenden Ausführungsbeispiel hat der PUF-Wert deshalb eine Länge von 256 Bit und es kann aus ihm ein 72 Bit langer Schlüssel gewonnen werden.
  • Auch in diesem Ausführungsbeispiel wird der (23, 12, 7)-Golay-Code, der die Länge 23 hat, verwendet. Von den 256 PUF-Bits werden drei Bits verworfen, um eine PUF-Länge zu erhalten, die durch 23 teilbar ist: 253 = 11 × 23. Der 253 Bit lange PUF-Wert wird in Form einer 11×23 Matrix A dargestellt. Die Matrix A hat 11 Zeilen und 23 Spalten. Für jede der 11 Zeilen der Matrix A wird das Syndrom gemäß dem (23, 12, 7)-Golay-Code berechnet. Die 11 Syndrome stellen den ersten Teil der Hilfsdaten dar.
  • Der zweite Teil der Hilfsdaten wird durch Syndromberechnungen der Spalten der Matrix A gemäß einem erweiterten Hamming-Code generiert.
  • Dabei ist zu beachten, dass die Spalten der Matrix A die Länge 11 haben. Sie sind also zu kurz für eine direkte Anwendung des (16, 11, 4)-erweiterten Hamming-Codes (der die Länge 16 hat). Andererseits sind die Spalten zu lang für den nächst kleineren, den (8, 4, 4)-erweiterten Hamming-Code (der die Länge 8 hat). Deshalb wird in diesem Ausführungsbeispiel der (16, 11, 4)-erweiterten Hamming-Code Länge 11 gekürzt.
  • Dazu wird die Kontrollmatrix H für den (16, 11, 4)-erweiterten Hamming-Code (siehe oben) verkürzt, indem fünf (beliebige) Spalten gestrichen werden. Die bestehende 5×11 Matrix H' definiert dann einen linearen (11, 6, 4) Code, der die gewünschte Länge 11 hat. Zum Beispiel können die Spalten 10 bis 15 gestrichen werden. Dies liefert die Matrix
    Figure DE102013109315B4_0017
  • Diese Matrix definiert den (11, 6, 4)-Code.
  • Mit der Hilfe der Kontrollmatrix H' werden die Syndrome sj der Spaltenvektoren aj der Matrix A berechnet: sj = S(aj) = H'aj für j = 1, 2, ..., 23.
  • Diese 23 Syndrome sind Spaltenvektoren der Länge 5. Sie stellen den zweiten Teil der Hilfsdaten dar.
  • Die weitere Vorgehensweise ist die gleiche wie für den oben behandelten PUF-Wert der Länge 368.
  • In den oben beschriebenen Ausführungsbeispielen wird der (23, 12, 7)-Golay-Code benutzt, um die einzelnen PUF-Segmente (die jeweils 23 Bit lang sind) zu korrigieren. In bis zu zwei Segmenten darf die Korrektur scheitern. Die fehlerhaften Segmente werden dann mithilfe des erweiterten Hamming-Codes repariert.
  • Der spezielle Golay-Code kann dabei durch einen beliebigen linearen (n, k, d)-Code ersetzt werden. Der lineare Code operiert auf PUF-Segmenten der Länge n. Die meisten Segmente werden durch den linearen Code korrigiert. Bei zwei oder weniger Segmenten darf die Fehlerkorrektur scheitern. Diese Segmente werden dann durch den erweiterten Hamming-Code repariert. Eine weitere Verallgemeinerung ist dahingehend möglich, dass anstatt eines erweiterten Hamming-Codes mit Minimumdistanz 2 ein beliebiger Code mit gerader Minimumdistanz verwendet wird.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.

Claims (17)

  1. Verfahren zum Rekonstruieren eines ersten Vektors aus einem zweiten Vektor aufweisend: Speichern von, gemäß einer Matrix-Repräsentation des ersten Vektors, Codeinformation für die Zeilenvektoren gemäß einem ersten Code; Speichern von, gemäß der Matrix-Repräsentation des ersten Vektors, Codeinformation für die Spaltenvektoren gemäß einem zweiten Code; Korrigieren der Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors; Berechnen der Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors gemäß dem zweiten Code; Vergleichen der Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors; Identifizieren, basierend auf dem Ergebnis des Vergleichs, der Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, der Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der identifizierten Spalten und der identifizierten Zeilen, der Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, wobei die Komponenten, die sich in den identifizierten Zeilen in Spalten befinden, die mittels des zweiten Codes nicht korrigierbare Fehler aufweisen, als Komponenten, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert werden; und Korrigieren der identifizierten Komponenten des zweiten Vektors.
  2. Verfahren gemäß Anspruch 1, wobei die Codeinformation für einen Spaltenvektor ein Syndrom des Spaltenvektors ist und die Codeinformation für einen Zeilenvektor ein Syndrom des Zeilenvektors ist.
  3. Verfahren gemäß einem der Ansprüche 1 bis 2, wobei die Zeilenvektoren des zweiten Vektors derart korrigiert werden, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors, dass die Anzahl der geänderten Komponenten des zweiten Vektors minimal ist.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, wobei der erste Vektor einen Physical Uncloneable Function(PUF)-Wert repräsentiert und der zweite Vektor einen PUF-Wert repräsentiert.
  5. Verfahren gemäß Anspruch 4, wobei der erste Vektor einen wahren PUF-Wert repräsentiert und wobei der zweite Vektor einen neu generierten PUF-Wert repräsentiert.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, wobei der erste Vektor und der zweite Vektor Binärvektoren sind.
  7. Verfahren gemäß einem der Ansprüche 1 bis 6, wobei der erste Code ein linearer Code ist.
  8. Verfahren gemäß Anspruch 7, wobei der erste Code der (23, 12, 7)-Golay-Code ist.
  9. Verfahren gemäß einem der Ansprüche 1 bis 8, wobei der zweite Code ein linearer Code ist.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, wobei der zweite Code eine gerade Minimumdistanz hat.
  11. Verfahren gemäß Anspruch 10, wobei der zweite Code die Minimumdistanz 4 hat.
  12. Verfahren gemäß einem der Ansprüche 1 bis 11, wobei der zweite Code ein erweiterter Hamming-Code ist.
  13. Verfahren gemäß Anspruch 12, wobei der zweite Code der (16, 11, 4)-erweiterte Hamming-Code ist.
  14. Verfahren gemäß einem der Ansprüche 1 bis 13, wobei die Matrix-Repräsentation des ersten Vektors eine Repräsentation des ersten Vektors als Matrix ist, bei dem aufeinanderfolgende Segmente des Vektors die Zeilen der Matrix bilden.
  15. Verfahren gemäß einem der Ansprüche 1 bis 14, ferner aufweisend Durchführen einer kryptographischen Operation basierend auf dem korrigierten zweiten Vektor.
  16. Verfahren gemäß einem der Ansprüche 1 bis 15, ferner aufweisend Ableiten eines kryptographischen Schlüssels aus dem korrigierten zweiten Vektor.
  17. Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors aus einem Eingangsvektor aufweisend: einen Speicher zum Speichern von, gemäß einer Matrix-Repräsentation des Vektors, Codeinformation für die Zeilenvektoren gemäß einem ersten Code und zum Speichern von, gemäß der Matrix-Repräsentation des Vektors, Codeinformation für die Spaltenvektoren gemäß einem zweiten Code; einen ersten Korrektor zum Korrigieren der Zeilenvektoren einer der Matrix-Repräsentation des ersten Vektors entsprechenden Matrix-Repräsentation des zweiten Vektors, so dass die Zeilenvektoren des zweiten Vektors dieselben Codeinformation gemäß dem ersten Code haben wie die Zeilenvektoren des ersten Vektors; eine Berechnungseinrichtung zum Berechnen der Codeinformation der Spaltenvektoren der Matrix-Repräsentation des zweiten Vektors gemäß dem zweiten Code; einen Vergleicher zum Vergleichen der Codeinformation der Spaltenvektoren des zweiten Vektors mit der Codeinformation der Spaltenvektoren des ersten Vektors; einen Identifizierer zum Identifizieren, basierend auf dem Ergebnis des Vergleichs, der Spalten der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; Identifizieren, anhand der mittels des zweiten Codes korrigierbaren Fehlern in den Spalten, der Zeilen der Matrix-Repräsentation, in denen der erste Vektor ungleich dem zweiten Vektor ist; und Identifizieren, anhand der identifizierten Spalten und der identifizierten Zeilen, der Komponenten, in denen der erster Vektor ungleich dem zweiten Vektor ist, wobei die Komponenten, die sich in den identifizierten Zeilen in Spalten befinden, die mittels des zweiten Codes nicht korrigierbare Fehler aufweisen, als Komponenten, in denen der erste Vektor ungleich dem zweiten Vektor ist, identifiziert werden; und einen zweiten Korrektor zum Korrigieren der identifizierten Komponenten des zweiten Vektors.
DE102013109315.9A 2013-08-28 2013-08-28 Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors Active DE102013109315B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102013109315.9A DE102013109315B4 (de) 2013-08-28 2013-08-28 Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
US14/470,953 US9678924B2 (en) 2013-08-28 2014-08-28 Method and data processing device for reconstructing a vector

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102013109315.9A DE102013109315B4 (de) 2013-08-28 2013-08-28 Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors

Publications (2)

Publication Number Publication Date
DE102013109315A1 DE102013109315A1 (de) 2015-03-05
DE102013109315B4 true DE102013109315B4 (de) 2016-08-04

Family

ID=52470127

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013109315.9A Active DE102013109315B4 (de) 2013-08-28 2013-08-28 Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors

Country Status (2)

Country Link
US (1) US9678924B2 (de)
DE (1) DE102013109315B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016102590B4 (de) * 2016-02-15 2018-10-04 Infineon Technologies Ag Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
US11165594B2 (en) * 2016-12-30 2021-11-02 Robert Bosch Gmbh Reverse computational fuzzy extractor and method for authentication
CN107077402B (zh) * 2017-01-18 2020-09-18 深圳市汇顶科技股份有限公司 码字生成方法、错误位确定方法及其电路
JP7122722B2 (ja) * 2019-07-25 2022-08-22 ▲しゃーん▼碼科技股▲ふん▼有限公司 高速暗号化鍵生成エンジン
CN113511183B (zh) * 2021-07-15 2022-05-17 山东科技大学 基于优化准则的高速列车空气制动系统早期故障分离方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167551A (en) * 1998-07-29 2000-12-26 Neomagic Corp. DVD controller with embedded DRAM for ECC-block buffering
US8386990B1 (en) * 2010-12-07 2013-02-26 Xilinx, Inc. Unique identifier derived from an intrinsic characteristic of an integrated circuit

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046661B2 (en) * 2004-09-08 2011-10-25 Temarylogic Llc Symbol error correction by error detection and logic based symbol reconstruction
EP2404403B1 (de) * 2009-03-06 2019-12-04 Intrinsic ID B.V. System zum herstellen eines kryptografischen schlüssels abhängig von einem physischen system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167551A (en) * 1998-07-29 2000-12-26 Neomagic Corp. DVD controller with embedded DRAM for ECC-block buffering
US8386990B1 (en) * 2010-12-07 2013-02-26 Xilinx, Inc. Unique identifier derived from an intrinsic characteristic of an integrated circuit

Also Published As

Publication number Publication date
US9678924B2 (en) 2017-06-13
DE102013109315A1 (de) 2015-03-05
US20150067012A1 (en) 2015-03-05

Similar Documents

Publication Publication Date Title
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102011054410B4 (de) Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
DE102011079259B4 (de) Bitfehlerkorrektur zur Beseitigung von altersbedingten Fehlern in einem Bitmuster
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE3523249A1 (de) Verfahren und vorrichtung zum decodieren doppelt verschluesselnder codes
DE2357116A1 (de) Speichermodul fuer eine datenverarbeitungseinheit
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102012200197A1 (de) Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102013016681A1 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102017114054A1 (de) Speicheradressen-Schutzschaltung und Verfahren
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102011087457A1 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einer mehrzahl von codierten binärwörtern, die durch einen fehlerkorrekturcode codiert sind
DE112019001968B4 (de) Gemeinsame korrekturlogik für hohe und niedrige zufalls-bitfehlerraten
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE2104132B2 (de) Anordnung zur Mehrfachfehlererkennung und Einzelfehlerkorrektur
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102014118531B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Ermitteln eines Fehlervektors in einem Datenwort
DE102019113970B4 (de) Erkennung von adressfehlern
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102011080659B4 (de) Vorrichtung und verfahren zum testen einer zu testenden schaltung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative