DE102012200197A1 - Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung - Google Patents

Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung Download PDF

Info

Publication number
DE102012200197A1
DE102012200197A1 DE102012200197A DE102012200197A DE102012200197A1 DE 102012200197 A1 DE102012200197 A1 DE 102012200197A1 DE 102012200197 A DE102012200197 A DE 102012200197A DE 102012200197 A DE102012200197 A DE 102012200197A DE 102012200197 A1 DE102012200197 A1 DE 102012200197A1
Authority
DE
Germany
Prior art keywords
error correction
data word
encrypted data
correction code
bit error
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.)
Granted
Application number
DE102012200197A
Other languages
English (en)
Other versions
DE102012200197B4 (de
Inventor
Jan Otterstedt
Rainer Göttfert
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
Publication of DE102012200197A1 publication Critical patent/DE102012200197A1/de
Application granted granted Critical
Publication of DE102012200197B4 publication Critical patent/DE102012200197B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung umfasst erste und zweite Determinatoren. Der erste Determinator ist dazu konfiguriert, einen Fehlerkorrekturcode cvA zu bestimmen, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Der zweite Determinator ist dazu konfiguriert, einen erweiterten Fehlerkorrekturcode cvE zu bestimmen, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrixeines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y > x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.

Description

  • Ausführungsbeispiele, die hier beschrieben werden, beziehen sich auf Fehlerkorrektur und Schutz vor Datenverfälschung.
  • Fehlerkorrektur ist eine Maßnahme zum Erhalten korrekter Daten aus einer Quelle wie etwa Speicher oder einem Sender. Fehlerkorrektur kann die mit einer Implementierung der Datenquelle verbundenen Kosten reduzieren, da aufgrund der Datenkorrekturfähigkeit eine höhere Datenrate akzeptabel ist. Eine solche Fehlerkorrektur wird beispielsweise für Speicherdaten verwendet, die in einem RAM (random access memory = Direktzugriffsspeicher), ROM (read only memory = Nur-Lese-Speicher), Cache-Speicher, EEPROM (electrically erasable programmable read-only memory = elektrisch löschbarer programmierbarer Nur-Lese-Speicher) gespeichert sind und sogar auf Festplatten, CDs (Compact-Disks), DVDs (digital versatile discs = digitalen Universalplatten), Magnetbändern und dergleichen gespeichert sind. Bei der Vorwärtsfehlerkorrektur werden die Daten, die vor Datenverfälschung zu schützen sind, beispielsweise in Einheiten von Datenwörtern auf Codewörter abgebildet. Entsprechend systematischen Codes umfassen Codewörter das zu schützende Datenwort plus einen Fehlerkorrekturcode. Es sind viele solche systematischen Codes verfügbar, wie beispielsweise Reed-Solomon-Codes.
  • Jedoch erhöht eine Fehlerkorrekturfähigkeit nicht nur die an die Datenquelle gestellten Anforderungen, sondern erhöht auch die Datenmenge aufgrund der Hinzufügung von Redundanz sowie die Datenlatenz aufgrund der Ganularität, mit der die Daten geschützt werden.
  • Es ist die Aufgabe der vorliegenden Erfindung, Vorrichtungen und Verfahren mit verbesserten Eigenschaften zu schaffen.
  • Die Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weiterbildungen finden sich in den abhängigen Ansprüchen.
  • Gemäß einem Ausführungsbeispiel einer Vorrichtung zur Fehlerkorrektur umfasst die Vorrichtung einen Empfänger und eine Prüfeinrichtung. Der Empfänger ist dazu konfiguriert, ein Datenwort a und einen Fehlerkorrekturcode cvA, der dem Datenwort a zugeordnet ist, zu empfangen. Die Prüfeinrichtung ist dazu konfiguriert, das Datenwort a als korrekt zu deklarieren, wenn cvA gleich aAT ist, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Die Prüfeinrichtung ist ferner dazu konfiguriert, wenn cvA ungleich aAT ist, eine x-Bit-Fehlerkorrektur an dem Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A durchzuführen, um eine korrigierte Version des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA in dem Fall zu erhalten, dass die x-Bit-Fehlerkorrektur erfolgreich ist, und anzunehmen, dass eine Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA größer als x ist. Die Prüfeinrichtung ist auch dazu konfiguriert, wenn die x-Bit-Fehlerkorrektur fehlschlägt, ein Erhalten eines Erweiterungsfehlerkorrekturcodes cvE und Durchführen einer y-Bit-Fehlerkorrektur, wobei y > x, an dem Datenwort a und dem Fehlerkorrekturcode cvA unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE und von Spalten einer erweiterten Matrix
    Figure 00020001
    eines erweiterten linearen systematischen Korrekturcodes durchzuführen, gemäß welchem (cvA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren.
  • Gemäß einem Ausführungsbeispiel einer Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung umfasst die Vorrichtung erste und zweite Determinatoren. Der erste Determinator ist dazu konfiguriert, einen Fehlerkorrekturcode cvA zu bestimmen, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Der zweite Determinator ist dazu konfiguriert, einen erweiterten Fehlerkorrekturcode cvE zu bestimmen, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00020002
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y > x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  • Gemäß einem Ausführungsbeispiel einer Vorrichtung zur Fehlerkorrektur umfasst die Vorrichtung einen Empfänger und eine Prüfeinrichtung. Der Empfänger ist dazu konfiguriert, ein verschlüsseltes Datenwort a und einen Fehlerkorrekturcode cvA, der dem verschlüsselten Datenwort a zugeordnet ist, zu empfangen. Die Prüfeinrichtung ist dazu konfiguriert, das verschlüsselte Datenwort a als korrekt zu deklarieren, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, und, wenn cvA ungleich aAT ist, unter Verwendung von Spalten von A eine Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA durchzuführen, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA zu erhalten, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen. Wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird, ist die Prüfeinrichtung ferner dazu konfiguriert, eine Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind, anzufordern, alle weiteren verschlüsselten Datenwörter und die weiteren Fehlerkorrekturcodes daraufhin zu prüfen, ob dieselben korrekt sind, eine Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter anzufordern, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten, und eine Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter zu bilden, um eine entschlüsselte korrekte Version des verschlüsselten Datenworts zu erhalten.
  • Gemäß einem Ausführungsbeispiel einer Vorrichtung zum Schützen eines verschlüsselten Datenworts umfasst die Vorrichtung einen Determinator und einen Aktualisierer. Der Determinator ist dazu konfiguriert, einen Fehlerkorrekturcode cvA zu bestimmen, der einem verschlüsselten Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer Einzelbitfehlerkorrektur und einer Doppelbitfehlererkennung an Replikaten des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Der Aktualisierer ist dazu konfiguriert, ein vorbestimmtes von w weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a eine Menge von w + 1 verschlüsselten Datenwörtern bilden, dazu zu aktualisieren, einer Modulo-2-Summe aus dem vorbestimmten verschlüsselten Datenwort, dem verschlüsselten Datenwort a und einer vorherigen Version des verschlüsselten Datenworts a zu entsprechen und den Fehlerkorrekturcode, der dem vorbestimmten verschlüsselten Datenwort zugeordnet ist, dazu zu aktualisieren, gleich dem vorbestimmten verschlüsselten Datenwort mal AT zu sein.
  • Gemäß einem Ausführungsbeispiel eines Verfahrens zur Fehlerkorrektur umfasst das Verfahren ein Empfangen eines Datenworts a und eines Fehlerkorrekturcodes cvA, der dem Datenwort a zugeordnet ist, und Deklarieren des Datenworts a als korrekt, wenn cvA gleich aAT ist, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Das Verfahren umfasst ferner, wenn cvA ungleich aAT ist, ein Durchführen einer x-Bit-Fehlerkorrektur an dem Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A, um in dem Fall, dass die x-Bit-Fehlerkorrektur erfolgreich ist, eine korrigierte Version des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA zu erhalten, und ein Annehmen dessen, dass eine Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA größer als x ist, und durchzuführen Das Verfahren umfasst auch, wenn die x-Bit-Fehlerkorrektur fehlschlägt, ein Erhalten eines Erweiterungsfehlerkorrekturcodes cvE und Durchführen einer y-Bit-Fehlerkorrektur, wobei y > x, an dem Datenwort a und dem Fehlerkorrekturcode cvA unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE und von Spalten einer erweiterten Matrix
    Figure 00040001
    eines erweiterten linearen systematischen Korrekturcodes, gemäß welchem (cVA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren.
  • Gemäß einem Ausführungsbeispiel eines Verfahrens zum Schützen eines Datenworts vor Datenverfälschung umfasst das Verfahren ein Bestimmen eines Fehlerkorrekturcodes cvA, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugordneten Fehlerkorrekturcodes cvA ermöglichen. Das Verfahren umfasst ferner ein Bestimmen eines erweiterten Fehlerkorrekturcodes cvE, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00040002
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y = x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  • Gemäß einem Ausführungsbeispiel eines Verfahrens zur Fehlerkorrektur umfasst das Verfahren ein Empfangen eines verschlüsselten Datenworts a und eines Fehlerkorrekturcodes cvA, der dem verschlüsselten Datenwort a zugeordnet ist, und ein Deklarieren des verschlüsselten Datenworts a als korrekt, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Das Verfahren umfasst ferner, wenn cvA ungleich aAT ist, ein Durchführen einer Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA zu erhalten, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen. Das Verfahren umfasst auch, wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird, ein Anfordern einer Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind, ein Prüfen aller weiteren verschlüsselten Datenwörter und der weiteren Fehlerkorrekturcodes daraufhin, ob dieselben korrekt sind, ein Anfordern einer Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten, ein Anfordern einer Verschlüsselung einer Modulo-2-Summe aus der verschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter, um eine korrekte Version des verschlüsselten Datenworts zu erhalten, und ein Vergleichen des verschlüsselten Datenworts und der korrekten Version des verschlüsselten Datenworts, um zu beweisen, dass der Fehler des verschlüsselten Datenworts a ein Doppelbitfehler ist.
  • Gemäß einem Ausführungsbeispiel eines Verfahrens zum Schützen eines verschlüsselten Datenworts umfasst das Verfahren ein Bestimmen eines Fehlerkorrekturcodes cvA, der einem verschlüsselten Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer Einzelbitfehlerkorrektur und einer Doppelbitfehlerkorrektur an Replikaten des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Das Verfahren umfasst ferner ein Aktualisieren eines vorbestimmten von w weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, dazu, einer Modulo-2-Summe aus dem vorbestimmten verschlüsselten Datenwort, dem verschlüsselten Datenwort a und einer vorherigen Version des verschlüsselten Datenworts a zu entsprechen, und ein Aktualisieren des Fehlerkorrekturcodes, der dem vorbestimmten verschlüsselten Datenwort zugeordnet ist, dazu, gleich dem vorbestimmten verschlüsselten Datenwort mal AT zu sein.
  • Gemäß einem Ausführungsbeispiel eines computerlesbaren Mediums, das ein Computerprogramm speichert, das zum Durchführen von Fehlerkorrektur konfiguriert ist, umfasst das Computerprogramm Programmanweisungen zum Bestimmen eines Fehlerkorrekturcodes cvA, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Das Computerprogramm umfasst ferner Programmanweisungen zum Bestimmen eines erweiterten Fehlerkorrekturcodes cvE, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00060001
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Korrektur, wobei y = x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  • Gemäß einem Ausführungsbeispiel eines computerlesbaren Mediums, das ein Computerprogramm speichert, das zum Durchführen von Fehlerkorrektur konfiguriert ist, umfasst das Computerprogramm Programmanweisungen zum Empfangen eines verschlüsselten Datenworts a und eines Fehlerkorrekturcodes cvA, der dem verschlüsselten Datenwort a zugeordnet ist, und von Programmanweisungen zum Deklarieren des verschlüsselten Datenworts a als korrekt, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Das Computerprogramm umfasst ferner Programmanweisungen zum Durchführen einer Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A, wenn cvA ungleich aAT ist, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA zu erhalten, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen. Das Computerprogramm umfasst auch Programmanweisungen zum Anfordern, wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird, einer Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz aus w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind, Prüfen aller weiteren verschlüsselten Datenwörter und der weiteren Fehlerkorrekturcodes daraufhin, ob dieselben korrekt sind, Anfordern einer Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten, Anfordern einer Verschlüsselung einer Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter, um eine korrekte Version des verschlüsselten Datenworts zu erhalten, und Vergleichen des verschlüsselten Datenworts und der korrekten Version des verschlüsselten Datenworts, um zu beweisen, dass der Fehler des verschlüsselten Datenworts a ein Doppelbitfehler ist.
  • Der Fachmann wird beim Lesen der folgenden ausführlichen Beschreibung und beim Ansehen der beigefügten Zeichnungen zusätzliche Merkmale und Vorteile erkennen.
  • Die Erfindung wird unter Bezugnahme auf die folgenden Zeichnungen und die folgende Beschreibung besser verständlich. Die Komponenten in den Figuren sind nicht unbedingt maßstabsgetreu; vielmehr liegt die Betonung auf einer Illustration der Prinzipien der Erfindung. Außerdem bezeichnen in den Figuren gleiche Bezugszeichen einander entsprechende Teile. Bevorzugte Ausführungsbeispiele werden unten ausführlicher unter Bezugnahme auf die beigefügten Figuren erklärt. Es zeigen:
  • 1 ein Blockdiagramm einer Fehlerkorrekturvorrichtung gemäß einem Ausführungsbeispiel;
  • 2 ein Flussdiagramm der Betriebsweise der Fehlerkorrekturvorrichtung aus 1 gemäß einem Ausführungsbeispiel;
  • 3a und 3b schematische Diagramme von Datenwörtern und deren zugeordneten Redundanzdaten gemäß unterschiedlichen Ausführungsbeispielen;
  • 4 Matrizen im Zusammenhang mit einem Ausführungsbeispiel, das mit Bezug auf 5 und 6 beschrieben wird;
  • 5 ein schematisches Diagramm, das zu schützende Datenwörter und deren zugeordnete Redundanzdaten gemäß einem Ausführungsbeispiel illustriert;
  • 6 ein schematisches Diagramm der Datenwörter aus 5, wobei zusätzlich Zwischendaten illustriert sind, die gemäß einem Ausführungsbeispiel bei der Fehlerkorrektur eines der Datenwörter zwischendurch erhalten werden;
  • 7 ein Blockdiagramm einer Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung gemäß einem Ausführungsbeispiel;
  • 8 ein Blockdiagramm einer Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung gemäß einem weiteren Ausführungsbeispiel;
  • 9 ein System, in dem Fehlerkorrekturvorrichtungen und Schutzvorrichtungen gemäß hier dargestellten Ausführungsbeispielen eingesetzt werden können;
  • 10 ein Blockdiagramm eines Ver-/Entschlüsselungssystems, das eine Fehlerkorrekturvorrichtung und/oder eine Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung umfasst, gemäß einem weiteren Ausführungsbeispiel;
  • 11 ein schematisches Diagramm geschützter Daten und deren zugeordneter Redundanzdaten gemäß dem Ausführungsbeispiel aus 10;
  • 12 ein Flussdiagramm einer Betriebsweise der Vorrichtung aus 10 gemäß einem Ausführungsbeispiel und
  • 13 ein schematisches Diagramm der in 11 gezeigten Daten zusammen mit Zwischendaten, die sich daraus bei der Fehlerkorrektur eines der Datenwörter darin ergeben.
  • Bevor mehrere Ausführungsbeispiele zur Datenkorrektur und zum Schutz von Daten unten ausführlicher dargestellt werden, wird eine illustrative Erklärung gegeben, um Vorteile der unten näher beschriebenen Ausführungsbeispiele zu begründen und zu verdeutlichen. Wie oben bereits erwähnt, muss zu Daten, die vor Datenverfälschung geschützt werden sollen, Redundanz hinzugefügt werden. Die Menge hinzuzufügender Redundanz hängt von der Anzahl von Bits innerhalb eines einzelnen Datenworts ab, das noch korrigierbar sein soll.
  • Je höher diese Anzahl von Bits, desto mehr Redundanz muss hinzugefügt werden. Anders ausgedrückt, die mittlere Anzahl von Bits, die in einem Datenwort verfälscht sind, hängt von der Größe des Datenworts ab: Je größer das Datenwort, desto höher die mittlere Anzahl von Datenbits, die darin verfälscht sind. Da bedeutet, je größer die Größe der Datenwörter, desto schlechter wird die Coderate des Korrekturcodes, d. h. desto höher die Anzahl von Bits, die notwendig sind, um das Datenwort mit einer bestimmten vordefinierten Wahrscheinlichkeit korrigierbar zu machen. Datenwörter von größerer Größe ergeben jedoch Nachteile bezüglich der Datenlatenz. Wenn beispielsweise nur ein kleiner Teil des geschützten Datenworts für den Rezipienten von Interesse ist, muss trotzdem die Fähigkeit zur Datenfehlerkorrektur und -erkennung für das ganze Datenwort zusammen mit seiner Redundanz gelten. Die unten dargestellten Ausführungsbeispiele ergeben eine Möglichkeit für einen besseren Ausgleich zwischen einem Schutz der Daten und Datenlatenz und/oder Codierungsrate. Bitfehler, die mit weniger als oder gleich x Bits verbunden sind, wie etwa Einzelbitfehler, können datenwortweise auf Basis des Datenworts und seines zugeordneten Fehlerkorrekturcodes selbst erkannt und korrigiert werden. Jedoch können auch Bitfehler korrigiert werden, die mit mehr als diesen x Bits verbunden sind, wie etwa Doppelbitfehler.
  • Gemäß einem Aspekt der unten dargestellten Ausführungsbeispiele wird dies erreicht, indem der Fehlerkorrekturcode, der über einen linearen systematischen Basis-Korrekturcode einem Datenwort zugeordnet ist, mit einem Erweiterungsfehlercode eines erweiterten linearen systematischen Korrekturcodes begleitet wird, gemäß welchem das Datenwort a und der Fehlerkorrekturcode cvA korrekt ist, wenn cvA = aAt, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Eine erweiterte Matrix des erweiterten linearen systematischen Korrekturcodes ist
    Figure 00090001
    Gemäß dem erweiterten linearen systematischen Code ist (cvA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren. Das bedeutet, der Fehlerkorrekturcode wird nicht völlig neu zu dem Datenwort a und dem Fehlerkorrekturcode cvA hinzugefügt. Vielmehr wird eine Hierarchie unter dem linearen systematischen Basis-Korrekturcode in dem erweiterten linearen systematischen Korrekturcode genutzt, wodurch die Redundanz verringert wird, die für die Fähigkeit zum Korrigieren weiterer Bits zusätzlich aufzuwenden ist. Durch diese Maßnahme skaliert sogar die Menge eines Korrekturmehraufwands mit der Fehlerstatistik der Datenwörter. In den meisten Anwendungsfällen wird die Anzahl von Bitfehlern innerhalb eines Datenworts gleichförmig weniger wahrscheinlich. Entsprechend genügt bei einer höheren Wahrscheinlichkeit der Fehlerkorrekturcode cvA, um nötigenfalls die Fehlererkennung oder Fehlerkorrektur durchzuführen. Nur in den verbleibenden Fällen ist der zusätzliche Erweiterungsfehlerkorrekturcode notwendig, um eine Korrektur einer höheren Anzahl von Bitfehlern zu versuchen.
  • Gemäß einem weiteren Ausführungsbeispiel sind die Datenwörter zu Sätzen von Datenwörtern gruppiert, wobei nur ein Erweiterungsfehlerkorrekturcode verwendet wird, um einige der Erweiterungsfehlerkorrekturcodes der Datenwörter des entsprechenden Satzes zu prüfen. Dies reduziert die für die Redundanz notwendige Datenmenge weiter.
  • Gemäß weiteren, ebenfalls unten beschriebenen Ausführungsbeispielen wird der Ausgleich zwischen Schutzfähigkeit und Datenlatenz und/oder Coderatenerhöhung erreicht, indem ein Satz verschlüsselter Datenwörter einem Fehlerkorrekturcode cvA zugeordnet wird, der eine Einzelbitfehlerkorrektur und eine Doppelbitfehlererkennung erlaubt, wobei dieser Satz Datenwörter zusätzlich mit einem zusätzlichen Datenwort und einem zusätzlichen Fehlerkorrekturcode versehen wird, der eine Modulo-2-Summe aus den verschlüsselten Datenwörtern und deren Fehlerkorrekturcodes dieses Satzes repräsentiert. Durch diese Maßnahme sind Einzelbitfehler ohne zusätzliche Maßnahmen leicht erkennbar und korrigierbar. Andererseits ist ein Doppelbitfehler innerhalb eines der verschlüsselten Datenwörter über einen Umweg, der die Grenze zwischen dem verschlüsselten Bereich und dem entschlüsselten Bereich überschreitet, noch korrigierbar. Somit sind die letzteren Ausführungsbeispiele besonders vorteilhaft in Fällen, in denen die zu schützenden Datenwörter in einer verschlüsselten Form verfügbar sind und in denen ein Entschlüsselungsmodul an der Entschlüsselung der Datenwörter beteiligt ist. Wieder ist auch bei diesen letzteren Ausführungsbeispielen die Menge an Mehraufwand, der notwendig ist, um Zugriff auf den Datenwortinhalt zu erlangen, an die Wahrscheinlichkeitsverteilung der Anzahl von Bitfehlern angepasst, die in den Datenwörtern auftreten. In vielen Anwendungsfällen sind nur einige Bits verfälscht. In diesen Fällen ist es sehr wahrscheinlich, dass ein verschlüsseltes Datenwort im verschlüsselten Bereich individuell korrigiert werden kann, falls nur ein Einzelbitfehler vorhanden ist. Im Fall eines selten auftretenden Doppelbitfehlers lohnt es sich, eine Korrektur des Doppelbitfehlers durch den Umweg über die Verschlüsselungs-/Entschlüsselungsbereichsgrenze unter Verwendung der anderen verschlüsselten Datenwörter und deren zugeordneter Fehlerkorrekturcodes zumindest zu versuchen.
  • 1 zeigt eine Vorrichtung 10 zur Fehlerkorrektur. Die Vorrichtung 10 umfasst einen Empfänger 12 und eine Prüfeinrichtung 14. Beide sind zueinander seriell in der genannten Reihenfolge zwischen einem Eingang 16 und einem Ausgang 18 der Vorrichtung 10 verbunden. Zum leichteren Verständnis der folgenden Beschreibung der Betriebsweise der Vorrichtung 10 ist die Vorrichtung 10 so gezeigt, dass sie mit Speicher 20 verbunden ist, der darin gespeichert Datenwörter aufweist, die durch Verwendung von Redundanz geschützt sind, wie unten dargestellt und wie es durch die Vorrichtung 10 zur Fehlerkorrektur, ebenfalls wie unten beschrieben, genutzt wird.
  • Insbesondere wird im Folgenden die Betriebsweise der Vorrichtung 10 mit Bezug auf 2 beschrieben. Zum leichteren Verständnis konzentriert sich die Beschreibung der Betriebsweise der Vorrichtung 10 aus 1 auf die Funktionalität der Vorrichtung 10 mit Bezug auf die Durchführung einer Fehlerkorrektur mit Bezug auf ein spezifisches, in dem Speicher 20 gespeichertes Datenwort. Primär wird angenommen, dass das Datenwort a (22) eine Redundanz hat, die demselben zugeordnet und in dem Speicher 20 gespeichert ist, wie in 3a gezeigt, obwohl es auch andere Möglichkeiten gibt, von denen eine spezifisch mit Bezug auf 3b dargestellt wird.
  • Insbesondere ist der Empfänger 12 dazu konfiguriert, in Schritt S1 das Datenwort a und eine Fehlerkorrektur cvA (24) zu empfangen, die dem Datenwort a zugeordnet ist, womit ein entsprechender Prozess einer Durchführung einer Fehlerkorrektur an dem Datenwort a gestartet wird. Obwohl der Empfänger 12 gemäß 1 so gezeigt ist, dass er das Datenwort a aus dem Speicher 20 empfängt, sind auch alternative Ausführungsbeispiele möglich, wie etwa ein Empfang von einem jeweiligen Sender wie etwa einem drahtlosen Sender oder von einem Datenbus. Das in Schritt S1 empfangene Datenwort a kann von dem Speicher 20 aus an den Empfänger 12 nach Aufforderung weitergegeben worden sein, etwa einer Aufforderung, die durch einen mit dem Ausgang 18 verbundenen Rezipienten ausgegeben wird, die in 1 nicht gezeigt ist, jedoch beispielsweise eine CPU (central processor unit = zentrale Prozessoreinheit) sein könnte. Alternativ kann das Datenwort a Teil einer unidirektionalen Übertragung sein wie etwa eines Rundsende- oder Sammelsendesignals, das beispielsweise einen Strom von Datenwörtern a aufweist. Die Art des durch das Datenwort a repräsentierten Dateninhalts ist auch nicht auf eine bestimmte Informationsart beschränkt. Die über das Datenwort a übertragenen Informationen können beispielsweise Programmanweisungen oder einen Programmcode, geheime Daten wie etwa einen Verschlüsselungs-/Entschlüsselungsschlüssel, persönliche Benutzerdaten, Video- oder Audiodaten oder andere Multimediadaten oder jede andere Art von Daten aufweisen.
  • Die Prüfeinrichtung 14 ist dazu konfiguriert, zu prüfen, ob cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist. Ein spezifisches Beispiel für die Generatormatrix A ist in Ausführungsbeispielen dargestellt, die unten ausführlicher beschrieben werden. Allgemein ausgedrückt, kann der lineare systematische Basis-Korrekturcode beispielsweise ein linearer Blockcode sein, der eine x-Bit-Korrektur erlaubt. In den folgenden spezifischen Beispielen ist x = 1.
  • Mit anderen Worten, die Prüfeinrichtung 12 nimmt an, dass der Fehlerkorrekturcode cvA, der dem Datenwort a zugeordnet ist, wie aus dem Speicher 20 empfangen, so berechnet wurde, dass cvA = aAT. Entsprechend ergibt die Prüfung in Schritt S2 Gleichheit, wenn weder das Datenwort a noch die Fehlerkorrektur cvA verfälscht ist. Darauf ansprechend deklariert die Prüfeinrichtung 14 das Datenwort a in Schritt S3 als korrekt. Andernfalls ist die Prüfeinrichtung 14 dazu konfiguriert, wenn cvA ungleich aAT ist, in Schritt S4 eine x-Bit-Fehlerkorrektur an dem Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A durchzuführen, um in dem Fall, dass die x-Bit-Fehlerkorrektur erfolgreich ist, eine korrigierte Version des Datenworts a zu erhalten, und nimmt an, dass eine Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA größer als x ist, wenn die x-Bit-Fehlerkorrektur fehlschlägt. Wie unten ausführlicher dargestellt wird, kann der Prozess der x-Bit-Fehlerkorrektur in Schritt S4, wie durch die Prüfeinrichtung 14 durchgeführt, mit einer Auswertung eines Syndrom- oder Prüfvektors, der einer Modulo-2-Summe aus dem Fehlerkorrekturcode cvA und aAT entspricht, gemäß bestimmten Regeln der x-Bit-Fehlerkorrektur verbunden sein. Eine Anwendung der Regeln auf diesen Syndrom- oder Prüfvektor kann zu Abbruchsituationen führen, in denen die x-Bit-Fehlerkorrektur erfolglos unterbrochen werden muss, wodurch deutlich wird, dass innerhalb des Datenworts a mehr als x-Bits verfälscht sind. Wenn keine solche Abbruchsituation eintritt, kann die x-Bit-Fehlerkorrektur erfolgreich beendet werden, wodurch eine korrigierte Version des Datenworts a gezeigt oder erhalten wird, wobei dann die Prüfeinrichtung 14 diese korrigierte Version als den Ausgang 18 ausgeben kann.
  • Im Fall der Fehlschlagssituation kann die Prüfeinrichtung 14, wie oben angegeben, annehmen, dass die Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA x überschreitet. Gemäß Ausführungsbeispielen, die unten ausführlicher dargestellt sind, können die Prüfeinrichtung 14 und der Basis-Korrekturcode so konfiguriert sein, dass die Prüfeinrichtung 14 prüfen kann, ob die Anzahl von verfälschten Bits ≤ y ist oder nicht, und dazu konfiguriert sein, in dem Fall, dass die Anzahl von verfälschten Bits y überschreitet, mit der Verarbeitung aufzuhören. Diese Prüfung ist jedoch optional.
  • Die Prüfeinrichtung 14 erhält dann in Schritt S5 einen Erweiterungsfehlerkorrekturcode cvE (26). Ähnlich wie bei der obigen Erläuterung mit Bezug auf verschiedene Optionen, die zum Implementieren des Empfangs in Schritt S1 existieren, kann der Schritt des Erhaltens S5 damit verbunden sein, dass die Prüfeinrichtung 14 nach Aufforderung jeweilige weitere Informationen aus dem Speicher oder einer anderen Datenquelle anfordert, oder der Erweiterungsfehlerkorrekturcode 26 kann automatisch oder unvermeidlich an den Empfänger 12 weitergegeben werden, wobei die Prüfeinrichtung 14 diesen Erweiterungsfehlerkorrekturcode 26 ignoriert, falls die x-Bit-Fehlerkorrektur-Fehlschlagssituation nicht eintritt.
  • Obwohl 3a suggeriert, dass die Speicherungspositionen von Datenelementen 22, 24 und 26 von der Art sein können, dass diese Datenelemente alle physikalisch oder virtuell aneinander angrenzen, ist dies nicht unbedingt der Fall. Die Zuordnung zwischen diesen Datenelementen kann auf alternative Weise garantiert werden, etwa durch Verwendung gleicher Indizes in getrennten Listen, durch Verwendung von Zeigern oder dergleichen. Mit anderen Worten, die Zuordnung kann durch Syntax oder durch eine andere Einrichtung bestimmt sein. Wie aus der folgenden Beschreibung deutlicher wird, bildet das Datenwort a (22) zusammen mit seinem zugeordneten Fehlerkorrekturcode cvA (24) ein systematisches Codewort des vorgenannten linearen systematischen Basis-Korrekturcodes, während das Datenwort 22 zusammen mit sowohl dem Fehlerkorrekturcode cvA als auch dem Erweiterungsfehlerkorrekturcode cvE ein systematisches Codewort eines anderen erweiterten linearen systematischen Korrekturcodes bildet, gemäß welchem (cvA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren. Entsprechend führt die Prüfeinrichtung 14 nach Schritt S5 in Schritt S6 eine y-Bit-Fehlerkorrektur, wobei y > x, an dem Datenwort a und dem Fehlerkorrekturcode cvA unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE und von Spalten einer erweiterten Matrix
    Figure 00130001
    des erweiterten linearen systematischen Korrekturcodes durch. Das Ergebnis von Schritt S6 ist ein korrigiertes Datenwort a. Insbesondere ist das letztere korrigierte Datenwort a unter der Voraussetzung korrekt, dass die Anzahl von verfälschten Bits y nicht zufällig überschritten hat.
  • Somit kann es abhängig von dem spezifischen Typ einer Datenquelle, wie etwa des Speichers 20, am wahrscheinlichsten sein, dass der Prozess zum Durchführen von Fehlerkorrektur und -erkennung an dem Datenwort a bei Schritt S3 endet, wobei die nächstwahrscheinliche Beendigungssituation die ist, dass die x-Bit-Fehlerkorrektur in Schritt S4 erfolgreich ist, und wobei die am wenigsten wahrscheinliche Situation, bei der der Prozess endet, die Fehlschlagssituation ist, die mit den Schritten S5 und S6 verbunden ist. Vorteilhaft ist mit der Menge, die für den in Schritt S5 und S6 genutzten Schutz der zweiten Stufe notwendig ist, nur eine geringe Datenmenge verbunden, nämlich die Daten 26, da die entsprechende Matrix F dieses systematischen Korrekturcodes der zweiten Stufe nur eine Erweiterung der Generatormatrix des Basis-Korrekturcodes repräsentiert.
  • Wie aus den folgenden Ausführungsbeispielen deutlich wird, kann der lineare System-Basis-Korrekturcode ein Einzelbitfehlerkorrektur- und Doppelbitfehlererkennungscode sein, wobei x = 1 und y = 2. Ferner kann die Matrix E die Spalten von H = (A|I) so erweitern, dass die Spalten von
    Figure 00140001
    paarweise unterschiedlich sind und keine Summe eines Paars von Spalten von
    Figure 00140002
    gleich einer anderen Summe eines anderen Paars von Spalten von
    Figure 00140003
    ist, wobei das Symbol I die Einheitsmatrix von geeigneter Größe darstellt und 0 die Nullmatrix von geeigneter Größe darstellt.
  • Wenn das Datenwort oder das verschlüsselte Datenwort a eine Länge von n Bits hat und der Fehlerkorrekturcode cvA eine Länge von k Bits hat, können k und n so ausgewählt sein, dass k = ⌈log2(n + 1)⌉, und die Prüfeinrichtung 14 kann so konfiguriert sein, dass A eine Matrix mit k Zeilen und n Spalten ist.
  • Bis jetzt hat die obige Erläuterung suggeriert, dass Schritt S5 in 2 damit verbunden ist, den Erweiterungsfehlerkorrekturcode 26 direkt, d. h. auf dieselbe Weise zu erhalten, wie das Datenwort a und der Fehlerkorrekturcode cvA empfangen werden. Im Folgenden wird jedoch mit Bezug auf 3b ein alternatives Ausführungsbeispiel beschrieben, gemäß welchem die Prüfeinrichtung 14 spezifisch dazu konfiguriert ist, das Erhalten des Erweiterungsfehlerkorrekturcodes in Schritt S5 auf eine Weise durchzuführen, die andere Datenwörter berücksichtigt, die zusammen mit dem Datenwort von Interesse einen vorbestimmten Satz von Datenwörtern bilden.
  • Wie in 3b gezeigt, bildet das Datenwort a von Interesse, d. h. dasjenige, für das die Datenfehlerkorrektur/-erkennung gegenwärtig durchzuführen ist, eines aus einem Satz von w Datenwörtern a1 bis aw, wobei nur zu Illustrationszwecken das Datenwort a2 beispielsweise das Datenwort a von Interesse, d. h. das Datenwort 22, repräsentiert, wie oben mit Bezug auf das Ausführungsbeispiel aus 3b erwähnt. Jedem dieser Datenwörter ai, wobei i = 1...w, ist ein entsprechender Fehlerkorrekturcode
    Figure 00150001
    zugeordnet, wie mit Bezug auf das Datenwort 22 mit Bezug auf 3a beschrieben. Alle diese Daten sind für die Prüfeinrichtung 14 beim Eintritt in Schritt S5 zugänglich. Die Prüfeinrichtung 14 ist dazu konfiguriert, beim Erhalten des Erweiterungsfehlerkorrekturcodes cvE in Schritt S5 die Anzahl w – 1 von verbleibenden Datenwörtern ai, mit Ausnahme des Datenworts von Interesse, das bereits in Schritt S1 empfangen wurde, und die zugeordneten Fehlerkorrekturcodes
    Figure 00150002
    anzufordern. Jedoch ist es, wie in 3b gezeigt, gemäß dem Ausführungsbeispiel aus 3b nicht notwendig, für die Prüfeinrichtung 14 einen Erweiterungsfehlerkorrekturcode cvE zugänglich oder verfügbar zu machen. Somit ist es im Falle einer Speicherung der Datenwörter nicht notwendig, alle diese Erweiterungsfehlerkorrekturcodes cvE für alle diese Datenwörter des Datensatzes 28 zu speichern. Vielmehr wird nur eine Erweiterungsfehlerkorrekturcodeprüfsumme msc (30), wobei msc die Modulo-2-Summe aller cvE ist, dem Satz 28 von Datenwörtern ai zugeordnet und durch die Prüfeinrichtung 14 bei Schritt S5 angefordert. Wie bereits oben beschrieben, können diese Anforderungen durch die Prüfeinrichtung 14 in der Form einer Aufforderung an den Speicher 20 ausgegeben werden. Alternativ kann die Erweiterungsfehlerkorrekturcodeprüfsumme msc durch den Empfänger 12 und den Eingang 16 automatisch an die Prüfeinrichtung 14 weitergeleitet werden, wobei die Prüfeinrichtung 14 diese Informationen unbeachtet lässt, falls die x-Bit-Fehlerkorrektur-Fehlschlagssituation nicht eintritt.
  • Die Prüfeinrichtung 14 prüft dann alle weiteren Datenwörter ai und die zugeordneten Fehlerkorrekturcodes
    Figure 00150003
    daraufhin, ob dieselben korrekt oder durch die x-Bit-Fehlerkorrektur korrigierbar sind, und zwar mit Bezug auf das Datenwort von Interesse, wie etwa das Datenwort a2, auf dieselbe Weise wie oben beschrieben, d. h. analog zu der Beschreibung der Schritte S2 bis S4. Wenn alle weiteren Datenwörter ai und die zugeordneten Fehlerkorrekturcodes
    Figure 00150004
    korrekt oder korrigierbar sind, d. h.
    Figure 00150005
    gilt oder nur x Bits oder weniger verfälscht sind, leitet die Prüfeinrichtung 14 den Erweiterungsfehlerkorrekturcode
    Figure 00150006
    für die korrekte (etwa durch x-Bit-Fehlerkorrektur korrigierte) Version jedes der weiteren Datenwörter ai ab, um
    Figure 00150007
    zu befolgen. Wenn das Datenwort von Interesse das Datenwort a2 wäre, würde die Prüfeinrichtung 14 somit die Schritte S2 bis S4 an allen Paaren aus Datenwörtern ai und zugeordnetem Fehlerkorrekturcode
    Figure 00160001
    durchführen, wobei i ≠ 2. Wenn sich für keines dieser weiteren Datenwörter ai, wobei i ≠ 2, eine x-Bit-Fehlerkorrektur-Fehlschlagssituation ergibt, wären diese Paare aus Datenwörtern ai und zugeordneten Fehlerkorrekturcodes
    Figure 00160002
    wobei i ≠ 2, alle korrekt (möglicherweise korrigiert) und würden eine Ableitung der korrekten Version des Erweiterungsfehlerkorrekturcodes
    Figure 00160003
    gemäß der eben erwähnten Formel ermöglichen.
  • Die Prüfeinrichtung 14 kann dann den Erweiterungsfehlerkorrekturcode cvE für das Datenwort von Interesse, d. h. a2, erhalten. Die Prüfeinrichtung 14 verwendet eine Modulo-2-Summe aus dem Erweiterungsfehlerkorrekturcode
    Figure 00160004
    der weiteren Datenwörter ai, wobei i ≠ 2, und der Erweiterungsfehlerkorrekturcodeprüfsumme msc als den Erweiterungsfehlerkorrekturcode cvE des Datenworts a2 von Interesse. Obwohl nur eine geringe Menge von Daten für die msc zu reservieren ist (anstelle eines Datenelements 26 für jedes der Datenwörter in Satz 28), ist somit dennoch eine Korrektur eines y-Bit-Fehlers in einem der Datenwörter in Satz 28 möglich.
  • Wenn jedoch ein Teil der weiteren Datenwörter ai, wobei i ≠ 2, und des zugeordneten Korrekturcodes
    Figure 00160005
    durch die x-Bit-Fehlerkorrektur nicht korrigierbar ist, kann die Prüfeinrichtung 14 das Datenwort a und den zugeordneten Fehlerkorrekturcode cvA als unter Verwendung der y-Bit-Fehlerkorrektur nicht korrigierbar deklarieren, und der Prozess hält bei Schritt S5 an. Wie oben beschrieben wurde, kann die Prüfeinrichtung 14 dazu konfiguriert sein, beim Anfordern der Anzahl w – 1 von weiteren Datenwörtern ai, des zugeordneten Fehlerkorrekturcodes
    Figure 00160006
    und der Erweiterungsfehlerkorrekturcodeprüfsumme msc Lesebefehle an den Speicher 20 senden, um die weiteren Datenwörter ai, den weiteren Korrekturcode
    Figure 00160007
    und die Erweiterungsfehlerkorrekturcodeprüfsumme msc aus dem Speicher 20 oder alternativ einer anderen Datenquelle als dem Speicher 20 zu lesen.
  • Die Prüfeinrichtung 14 kann dazu konfiguriert sein, Sätze von Datenwörtern mit unterschiedlichen w's zu unterstützen. Beispielsweise können unterschiedliche Sätze von Datenwörtern für unterschiedliche physikalische Speicherungsabschnitte des Speichers 20 verwendet werden. Beispielsweise kann der Speicher 20 ein nichtflüchtiger Speicher sein, wie etwa ein Flash-Speicher oder ein EEPROM. Jedoch kann der Speicher 20 auch eine Kombination unterschiedlicher Speicherarten umfassen, wie etwa eine Auswahl aus einem oder mehreren von einem RAM, ROM, Flash-Speicher, EEPROM, einer Festplatte, einem CD-Laufwerk, DVD-Laufwerk, Magnetbandlaufwerk oder dergleichen. Für unterschiedliche Speichertypen können unterschiedliche w's verwendet werden. Jedoch kann die Grenze zwischen unterschiedlichen w's auch unterschiedlich platziert sein, etwa innerhalb des virtuellen Bereichs von Speicheradressen oder zwischen Datenwörtern, die differierenden Inhalt betreffen, wie etwa wichtigeren und weniger wichtigen Inhalt. Im Fall eines Senders als Datenquelle können die unterschiedlichen Abschnitte, die unterschiedlichen w's zugeordnet sind, unterschiedlichen Abschnitten entsprechen, die durch Syntax definiert sind, wie etwa unterschiedlichen Schichten eines skalierbaren Datenstroms oder dergleichen.
  • Nachdem verschiedene Ausführungsbeispiele mit Bezug auf 1 bis 3b beschrieben wurden, wird im Folgenden ein weiteres Ausführungsbeispiel, das einer Variante gemäß 3b entspricht und an die Variante aus 3a anpassbar ist, mit expliziten Beispielen für die oben erwähnten Matrizen A bzw. E beschrieben. Das unten erklärte Ausführungsbeispiel schafft ebenso wie die oben dargestellten Ausführungsbeispiele eine hierarchische und skalierbare Fehlerkorrektur für Speicherdaten, die in einem RAM, ROM, Flash-Speicher, EEPROM oder anderen Arten von Speicher wie etwa Festplatten, CD-Laufwerken, DVD-Laufwerken oder Magnetbandlaufwerken gespeichert sind. Einzelbitfehler können direkt nach jedem Lesen eines Datenworts von Interesse erkannt werden, während alle Doppelbitfehler und Fehler höherer Ordnung nach zusätzlichen Leseoperationen korrigiert werden. Bei diesem Ansatz können fehlerfreie Daten und Daten mit Einzelbitfehlern ohne zusätzliche Leseoperationen aus einem Speicher gelesen werden. Der erforderliche Mehraufwand für die Korrektur von Doppelbitfehlern kann mit der Menge an zusätzlichen Leseoperationen, die zum Durchführen der Korrektur notwendig sind, skaliert/ausgeglichen werden. Die Skalierung wird durch Verwendung von w zwischen dem Ausführungsbeispiel aus 3a und 3b durchgeführt, wie ebenfalls unten beschrieben wird. Ebenso wie die oben dargestellten Ausführungsbeispiele kombiniert das unten dargestellte Ausführungsbeispiel kleine Lesegranularität und Einzelbitfehlerkorrektur mit einer effizienten zusätzlichen Implementierung von Doppelbit- oder höherer Bitfehlerkorrektur. Wieder dient die Speicheranwendung nur zu Illustrationszwecken, und diese in der vorliegenden Anwendung beschriebenen, expliziten Ausführungsbeispiele sind alle auch auf andere Anwendungen übertragbar, in denen die zu schützenden Daten aus anderen Datenquellen stammen.
  • Gemäß den unten dargestellten Ausführungsbeispielen wird ein spezifischer erweiterter Doppelbitfehlerkorrekturcode aufgebaut, der einen eigenständigen Einzelbitfehlerkorrektur- und 2-Bit-Fehler-Erkennungs-Subcode enthält. Eine getrennte Verwendung dieses eingebetteten Subcodes erfolgt hierarchisch, um Einzelbitfehler an einer Datengranularität zu korrigieren und den erweiterten Code nur zu verwenden, um Doppelbitfehler an einer anderen Granularität zu korrigieren, die größer sein kann, wie mit Bezug auf 3b erklärt. Somit ist eine unabhängige Skalierung von Einzelbitfehlerkorrekturfähigkeiten und Doppelbitfehlerkorrekturfähigkeiten möglich.
  • Bei dem unten beschriebenen spezifischen Ausführungsbeispiel wird ein systematischer linearer Code verwendet, der zu einer Einzelbitfehlerkorrektur in der Lage ist und gleichzeitig zu einer Doppelbitfehlererkennung in der Lage ist. Für einen n-Bit-Eingangsdatenvektor a wird ein k-Bit-Prüfvektor cvA berechnet, indem der Vektor a mit der Transposition AT einer Matrix A multipliziert wird, die den Fehlerkorrekturcode definiert (alles in Modulo-2-Summen-Arithmetik): cvA = aAT.
  • Die Matrix A mit k Zeilen wird nun auf eine spezielle Weise, die unten näher beschrieben wird, mit einer Matrix E mit l Zeilen erweitert, um eine neue Matrix
    Figure 00180001
    zu erhalten.
  • Die Matrix F mit k + l Zeilen beschreibt einen Code, der genutzt werden kann, um einen Prüfvektor cvF = aFT zu berechnen, der dazu genutzt werden kann, Doppelbitfehler in einem Codewort (a|cvA) zu korrigieren, wobei cvF = (cvA|cvE). Das Codewort für den erweiterten Code ist (a|cvF) = (a|cvA|cvE).
  • Die sogenannten Kontrollmatrizen, die zur Fehlererkennung und -korrektur verwendet werden, sind für den Standard-Subcode H = (A|I) und für den erweiterten Code R = (F|I), wobei das Symbol I die Einheitsmatrix von geeigneter Größe repräsentiert.
  • Die Matrix R hat die Form
    Figure 00180002
    wobei 0 die Nullmatrix von geeigneter Größe repräsentiert. Die Spalten der Matrix R sollten distinkt, d. h. paarweise unterschiedlich sein.
  • Außerdem ist die Matrix E so aufgebaut, dass alle möglichen Summen jeglicher zwei Spalten ihrer Submatrix
    Figure 00180003
    ebenfalls paarweise unterschiedlich sind, d. h. E ist so gewählt, dass die (Modulo-2-)Summe aus jeglichen zwei Spalten von G sich von der Summe aus jeglichen zwei anderen Spalten von G unterscheidet. Später gewährleistet dies, dass jeder Doppelbitfehler in einem Codewort (a|cvA) unter Verwendung des durch die Matrix R definierten Codes identifiziert und korrigiert werden kann.
  • Es wird darauf hingewiesen, dass Fehler in cvE nicht identifiziert werden können (und auch nicht müssen, wie unten beschrieben wird).
  • Der systematische lineare Basis-Code gemäß dem gegenwärtigen spezifischen Ausführungsbeispiel, der durch A bzw. H definiert ist, ist in 4 gezeigt. Der erweiterte spezielle lineare Code ist durch
    Figure 00190001
    definiert, wofür eine mögliche Implementierung ebenfalls in 4 gezeigt ist.
  • Wie oben beschrieben, ist die Submatrix E so gewählt, dass die Summe jeglicher zwei der ersten 39 Spalten von R sich von der Summe jeglicher zwei anderer dieser Spalten unterscheidet.
  • Die letzten 5 Spalten von R sind in dieser Eigenschaft möglicherweise nicht enthalten. Dies führt zu einer effizienteren Implementierung, da sie tendenziell kleiner wird. Mit anderen Worten, der Erweiterungsfehlerkorrekturcode cvE kann eine Länge von 1 Bits haben, und eine Prüfmatrix
    Figure 00190002
    des erweiterten linearen systematischen Korrekturcodes kann entlang seiner rechtsseitigen äußersten 1 Spalten zumindest eine Spalte haben, die, mit einer anderen Spalte von R addiert, eine Summe eines anderen Paars von Spalten von R ergibt.
  • Vorteilhaft ist der systematische lineare Basis-Code, der zu Einzelbitfehlerkorrektur und Doppelbitfehlererkennung in der Lage ist, in den speziellen erweiterten Code eingebettet. Dies spart für msc bzw. cvE aufzuwendende Bits.
  • Was die Auswahlmöglichkeiten bezüglich n und l betrifft, so können dieselben so ausgewählt sein, dass log2((n + 1)·(n + l – 1)/2) ≤ n + 1. Ferner können, wie oben erwähnt, k und l so ausgewählt sein, dass k = ⌈log2(n + 1)⌉.
  • Obwohl in 4 ein spezifisches Ausführungsbeispiel gezeigt ist, existieren viele Alternativen für die Matrizen A bzw. E.
  • Gemäß dem spezifischen Ausführungsbeispiel kann die Vorrichtung 10 auf folgende Weise von den obigen Matrizen Gebrauch machen, um Speicherdaten zu schützen. Angenommen, ein Block aus w Wörtern mit jeweils n Bits sei in dem Speicher 20 zu speichern. Für jedes Wort ai, wobei i = 0..w – 1, wird ein Prüfvektor cvFi = aiFT = (cvAi|cvEi) berechnet. Die folgenden Daten werden in dem Speicher gespeichert:
    w erweiterte Wörter (ai|cvAi) mit jeweils n + k Bits und
    msc = die Modulo-2-Summe aus allen cvFi (i = 0..w – 1) mit l Bits.
  • Diese Prozedur und die sich daraus ergebende Speicherungssituation ist in 5 abgebildet. Insbesondere zeigen die Blöcke in 5 mit durchgezogenen Linien Werte an, die in den Speicher 20 geschrieben werden, während die Blöcke mit gestrichelten Linien Zwischenwerte angeben, die nicht in dem Speicher 20 gespeichert werden. Wenn ein Wort ar aus dem Speicher 20 zu lesen ist, tut die Vorrichtung 10 folgendes:
    • 1. Das erweiterte Wort (ar*|cvAr*) aus dem Speicher 20 lesen, wobei ”*” potentiell verzerrte Werte anzeigt (vgl. Schritt S1 aus 2);
    • 2. Standardcode mit Kontrollmatrix H = (A|I) verwenden, um Fehler zu erkennen/korrigieren: A) Wenn der Syndromvektor s = H(ar*|cvAr*)T = 0, (vgl. Schritt S2 aus 2) – werden korrekte Daten angenommen, und es sind keine weiteren Schritt notwendig; – wird angenommen, dass das gelesene Wort ar = ar* korrekt ist (vgl. Schritt S3 aus 2); B) Wenn der konkrete Syndromvektor s = H(ar*|cvAr*)T ≠ 0 einen Einzelbitfehler anzeigt, – wird ein Einzelbitfehler angenommen, und der Einzelbitfehler wird unter Verwendung des Standardcodes korrigiert, und – es sind keine weiteren Schritte notwendig; es wird angenommen, dass das gelesene Wort ar nach der Korrektur korrekt ist. (Vgl. Schritt S4 aus 2); C) Wenn der konkrete Syndromvektor s = H(ar*|cvAr*)T ≠ 0 einen Doppelbitfehler anzeigt, – wird ein Doppelbitfehler angenommen, und die folgende Prozedur wird ausgeführt: (a–c: vgl. Schritt S5 aus 2; d: vgl. Schritt S6 aus 2) a) In einer Schleife über alle w – 1 verbleibenden erweiterten Wörter des Blocks G = 0..w – 1; j ≠ r) – (aj*|cvAj*) lesen. – Wenn sj = H(aj*|cvAj*)T = 0 oder wenn s = H(aj*|cvAj*)T ≠ 0 einen Einzelbitfehler anzeigt, wird aj* korrigiert. – Wenn sj = H(aj*|cvAj*)T ≠ 0 einen Doppelbitfehler anzeigt, ist keine Korrektur von (ar*|cvAr*) möglich, da mehr als zwei Wärter in dem Block zumindest Doppelbitfehler enthalten. – cvEj aus cvFj = (cvAj|cvEj) = ajFT berechnen. (siehe 32 in 6) – b) msc aus dem Speicher lesen. – c) Modulo-2-Summe aus msc und allen cvEj (j = 0..w – 1; j ≠ r) berechnen, um cvEr zu erhalten. (siehe 34 in 6) – d) Fehler in ar* unter Verwendung des Doppelbitfehlerkorrekturcodes R korrigieren (ar*|cvAr*|cvEr)T. (siehe 36 in 6)
  • Diese Prozedur ist auch in 6 für das Beispiel r = 1 abgebildet.
  • Die in den Zeilen A), B) und C durchgeführten ”Wenn”-Operationen sind die Operationen, die aus der Auswertung des systematischen linearen Basis-Codes bekannt sind, mit Einzelbitfehlerkorrektur und Doppelbitfehlererkennung. Nur die Schritte a)...d) sind mit dem erweiterten systematischen Code verbunden.
  • Das Korrekturschema erfordert weder ein Schützen und somit ein Lesen großer Wörter, noch macht es einen übergroßen Mehraufwand nötig, der durch einen großen Anteil zusätzlicher Prüfbits verursacht wird.
  • Solange keiner der relativ wenig wahrscheinlichen Doppelbitfehler auftritt, werden kleine Wörter mit direkter Einzelbitkorrektur gelesen, was insbesondere leistungseffizienter ist, als immer alle Bits zu lesen, die für eine Doppelbitfehlerkorrektur erforderlich sind. Nur wenn während einer Leseoperation wirklich ein Doppelbitfehler erkannt wird, können zusätzliche Leseoperationen verwendet werden, um die Korrektur durchzuführen.
  • Durch Anpassen der Anzahl von Wörtern w in einem Block kann die Wahrscheinlichkeit, in der Lage zu sein, einen Doppelbitfehler zu korrigieren, unabhängig von der Korrektur von Einzelbitfehlern skaliert werden. Der relative Mehraufwand (gemessen in erforderlichen zusätzlichen Speicherbits) für eine Doppelbitfehlerkorrektur im Vergleich zu einer Einzelbitfehlerkorrektur, ist oecc2 = l/(w*(n + k)) (wobei ”*” hier eine ganzzahlige Multiplikation anzeigt). Bei großem w kann oecc2 sehr klein werden. (Für herkömmliche Codes: oecc2 ≈ l/(n + k).)
  • Für den oben beschriebenen Beispielcode mit n = 32, k = 7, l = 5 und w = 4: oecc2 = 3,2% ergibt eine Verdopplung von w auf w = 8 oecc2 = 1,6%. Dies zeigt, dass der Mehraufwand oecc2 auf einer Seite durch die Anzahl von zusätzlichen Leseoperationen im Fall eines Doppelbitfehlers (w – 1) und durch die Wahrscheinlichkeit der Korrektur eines Worts ausgeglichen werden kann.
  • Je größer ein Block, desto größer die Wahrscheinlichkeit, dass mehr als eines seiner Wörter einen Doppelbitfehler hat, wodurch es unmöglich wird, die mit Doppelfehlern belasteten Wörter zu korrigieren.
  • Folgende Varianten sind möglich:
    • – Beispielsweise kann w auf w = 1 eingestellt sein, d. h. Schutz für nur ein Wort sein. Dies entspricht der obigen 3a. Bier liegt der Vorteil beispielsweise in der Leistungsersparnis, nicht immer den vollen Satz von n + k + l Bits zu lesen, sondern die l Bits nur zu lesen, wenn es notwendig ist, d. h. wenn in den zuerst gelesenen n + k Bits ein Doppelbitfehler erkannt wird;
    • – Beispielsweise kann w auf w = 2x, d. h. Blockgranularität ”hoch 2” eingestellt sein;
    • – Es können unterschiedliche w, d. h. unterschiedliche Blockgrößen, für unterschiedliche Datenabschnitte in einem einzigen Speicher verwendet werden.
  • Für ein exemplarisches EEPROM: kleines w für Daten, die sehr oft zyklisch verarbeitet (gelöscht und neu geschrieben) werden, so dass dieselben besser vor Doppelbitfehlern geschützt sind. Ein größeres w kann für konstante Daten verwendet werden. Dies minimiert den Mehraufwand oecc2, und:
    • – n kann auf n = 2x, d. h. Datenbreiten ”hoch 2” eingestellt sein;
    • – die Datenwörter brauchen nicht in einem Speicher gespeichert zu sein; stattdessen könnten Daten in einer Kommunikation geschützt werden, etwa Daten auf einem Datenbus, auf einem Chip oder dergleichen.
  • Eine Inversion eines Satzes von Bits, die beständig während des Schreibens und während des Lesens der Daten erfolgt, schadet dem Schema nicht. Dies kann z. B. dazu genutzt werden, einen vollständig gelöschten Speicher ECC-frei zu machen. Ferner kann eine noch tiefere Einbettung von Code erreicht werden. Das bedeutet, es können mehr Hierarchieebenen als zwei Ebenen bereitgestellt werden.
  • Bezüglich aller oben dargestellten Ausführungsbeispiele und auch bezüglich der folgenden Ausführungsbeispiele können diese Ausführungsbeispiele in Verbindung mit Flash oder EEPROMs verwendet werden. Ferner kann mit Bezug auf die Vorrichtung 10 und deren innere Elemente, nämlich den Empfänger 12 und die Prüfeinrichtung 14, dieselbe auch durch zweckgebundene Hardware, durch eine CPU mit geeigneter Software oder durch jede andere Kombination von Hardware oder Software wie beispielsweise Firmware, d. h. programmierbare Hardware wie etwa FPGA (field programmable gate arrays = feldprogrammierbare Gatterarrays) oder dergleichen implementiert sein.
  • Bevor zu einem anderen Ausführungsbeispiel übergegangen wird, wird auf 7 und 8 Bezug genommen, um Ausführungsbeispiele von Vorrichtungen zum Schützen eines Datenworts vor Datenverfälschung auf solche Weise, dass der Schutz durch jedes der oben genannten Ausführungsbeispiele nutzbar ist, zu beschreiben. Die Betriebsweise beim Schlitzen eines Datenworts wurde in der obigen Erläuterung zu 5 mit Bezug auf die Behandlung eines ganzen Satzes von Datenwörtern kurz erwähnt, jedoch werden in 7 und 8 trotzdem spezifische Ausführungsbeispiele für eine Vorrichtung zum Schützen eines Datenworts vor Datenverfälschung vorgelegt.
  • 7 zeigt eine Vorrichtung 40 zum Schützen eines Datenworts vor Datenverfälschung. Die Vorrichtung 40 umfasst einen ersten Determinator 42 und einen zweiten Determinator 44, die in der genannten Reihenfolge seriell zwischen einem Eingang 46 und einem Ausgang 48 der Vorrichtung 40 verbunden sind. Wie in 7 illustriert, kann Speicher 20 mit dem Ausgang 48 verbunden sein. Das bedeutet, die Vorrichtung 40 kann, wie eben erwähnt, dazu konfiguriert sein, ein Datenwort a zusammen mit einem Fehlerkorrekturcode cvA in den Speicher 20 zu speichern, so dass die Vorrichtung 10 aus 1 die oben genannte Fehlerkorrektur/-erkennung daran durchführen kann. Der erste Determinator 42 kann dazu konfiguriert sein, einen Fehlerkorrekturcode cvA zu bestimmen, der dem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen. Der zweite Determinator 44 wiederum kann dazu konfiguriert sein, den vorgenannten erweiterten Fehlerkorrekturcode cvE zu bestimmen, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00230001
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung der y-Bit-Fehlerkorrektur, wobei y > x, an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  • Wie in 7 illustriert, können die ersten und zweiten Determinatoren 42, 44 dazu konfiguriert sein, die entsprechende Bestimmung ansprechend auf einen Schreibbefehl durchzuführen, der beispielsweise aus einer CPU oder dergleichen stammt, die das Datenwort a in den Speicher 20 speichern will. Mit anderen Worten, der Schreibbefehl kann die Anweisung geben, dass das Datenwort a in den Speicher 20 geschrieben wird. Die Vorrichtung 40 kann dazu konfiguriert sein, den Fehlerkorrekturcode cvA zusammen mit dem Datenwort a in den Speicher 20 zu schreiben.
  • 8 zeigt eine Vorrichtung 40', die sich von der Vorrichtung 40 aus 7 dadurch unterscheidet, dass die Vorrichtung 40' einen Prüfsummenaktualisator 50 umfasst, der zwischen dem zweiten Determinator 44 und dem Ausgang 48 verbunden ist. Der Prüfsummenaktualisator 50 kann dazu konfiguriert sein, eine Erweiterungsfehlerkorrekturcodeprüfsumme msc (30) dazu zu aktualisieren, einer Modulo-2-Summe aus einer früheren Version der Erweiterungsfehlerkorrekturcodeprüfsumme, d. h. dem vorherigen Wert derselben, der zu aktualisieren ist, dem Erweiterungsfehlerkorrekturcode cvE und einer vorherigen Version des Erweiterungsfehlerkorrekturcodes cvE, der dem Datenwort a zugeordnet ist, zu entsprechen. Angenommen beispielsweise, das Datenwort a2 aus 3b ist gemäß einem bestimmten Schreibbefehl zu überschreiben, a2' ist die vorherige Version, die überschrieben wird, und a2 ist die gegenwärtige zu schreibende Version. Der Prüfsummenaktualisator 50 überschreibt dann die alte Version des Datenworts a2' mit einer neuen Version A2 und überschreibt den entsprechenden Fehlerkorrekturcode unter Verwendung der neuen Version
    Figure 00240001
    die dem neuen Datenwort a2 entspricht, und überschreibt und aktualisiert msc mit der Modulo-2-Summe aus der alten Version von msc', dem Erweiterungsfehlerkorrekturcode
    Figure 00240002
    der der vorherigen erhaltenen Version des Datenworts a2' entspricht, so dass
    Figure 00240003
    und dem erhaltenen Fehlerkorrekturcode
    Figure 00240004
    so dass
    Figure 00240005
    d. h. msc wird so aktualisiert, dass
    Figure 00240006
    Somit ist die Vorrichtung 40' in der Lage, die Datenwörter eines Satzes 28 individuell zu speichern, ohne auch alle Erweiterungsfehlerkorrekturcodes cvE für alle anderen Datenwörter neu berechnen zu müssen. Vielmehr werden nur die Erweiterungsfehlerkorrekturcodes der alten und neuen Versionen des Datenworts von Interesse aus Satz 28 berechnet und zu der alten, zu aktualisierenden Version von msc modulo-2-addiert.
  • 9 zeigt ein Ausführungsbeispiel eines Systems, in dem Vorrichtungen gemäß Ausführungsbeispielen wie den oben beschrieben und den unten beschriebenen eingesetzt werden können. Das System umfasst einen Speicher 50, wie etwa oben erwähnten Speicher 20, eine CPU 52 und eine ECC-(error correction code = Fehlerkorrekturcode)-Erzeugungs-/Prüfungs-/Korrektureinheit 54, die im Fall von Nur-Lese-Fähigkeiten mit Bezug auf den Speicher 50 der Vorrichtung 10 entspricht und gemäß Nur-Schreib-Fähigkeiten der Vorrichtung 40 oder der Vorrichtung 40 entspricht und im Fall von Lese- und Schreib-Fähigkeiten einer Kombination der vorgenannten Vorrichtungen entspricht, so dass die ECC-Einheit 54 in ähnlicher Weise gemäß einer der unten dargestellten Vorrichtungen gemäß den als Nächstes beschriebenen Ausführungsbeispielen implementiert sein kann. Die CPU 52 ist über einen Adressbus 56 mit dem Speicher 50 verbunden, die ECC-Einheit 54 ist in einen Datenpfad zwischen dem Speicher 50 und der CPU 52 verbunden. Insbesondere verbindet ein n-Bit-Datenbus 58 die CPU 52 und die ECC-Einheit 54, während ein n + k Datenbus 60 den Speicher 50 und die ECC-Einheit 54 mit einer seriellen Maßnahme verbinden kann, die dazu verwendet wird, den msc-Wert im Fall von Ausführungsbeispielen aus 3b zu aktualisieren, oder der Datenbus kann beispielsweise im Fall von 3a n + k + l Bits breit sein.
  • Unter Bezugnahme auf 10 werden zusätzliche Ausführungsbeispiele unten näher beschrieben. Gemäß diesen Ausführungsbeispielen werden verschlüsselte Datenwörter geschützt. Wieder sind die unten dargestellten Ausführungsbeispiele primär mit Bezug auf gespeicherte verschlüsselte Datenwörter beschrieben, obwohl diese Ausführungsbeispiele alle leicht auf Anwendungen übertragbar sind, bei denen Datenwörter durch eine andere Quelle geliefert werden, wie etwa durch Übertragung auf einem Datenbus innerhalb einer Steuerung oder dergleichen. Allgemein gelten alle Aussagen bezüglich der Allgemeingültigkeit bestimmter Entitäten, die sowohl einerseits in den Ausführungsbeispielen aus 1 bis 8 als auch andererseits aus 10 bis 13 auftreten, auch für die unten dargestellten Ausführungsbeispiele, d. h. die Ausführungsbeispiele aus 10 bis 13. Dies gilt beispielsweise für alle Aussagen bezüglich w, des Speichertyps, der Eigenschaften von A und dergleichen.
  • Dies vorausgesetzt, zeigt 10 eine Vorrichtung 80 zur Fehlerkorrektur, die einen Empfänger 82 und eine Prüfeinrichtung 84 umfasst, die seriell und in der genannten Reihenfolge zwischen einem Eingang 86 und einem Ausgang 88 der Vorrichtung 80 verbunden sind. Wieder ist der Speicher 20 als mit dem Eingang 86 verbunden gezeigt, als Beispiel für eine Datenquelle der verschlüsselten Datenwörter, die in den Eingang 86 eintreten.
  • Die verschlüsselten Datenwörter könnten durch das Symbol ”a” angezeigt sein, da dies die tatsächlichen Daten bzw. die Daten in dem Bereich sind, der Datenkorrektur/-erkennung unterliegt. Um jedoch die Übereinstimmung mit den vorgenannten Ausführungsbeispielen aus Sicht eines Rezipienten für den Inhalt dieser verschlüsselten Datenwörter zu wahren, der zwangsläufig an den entschlüsselten Informationen der Datenwörter und nicht an deren Erscheinungsbild in dem verschlüsselten Bereich interessiert ist, werden die verschlüsselten Datenwörter gemäß einer etwas anderen Notation bezeichnet, nämlich beispielsweise als ”ENC(a(0))” bezüglich des entschlüsselten Datenworts a(0)), wobei die Funktion ”ENC” die Verschlüsselungsfunktion darstellt, die von dem Entschlüsselungsdatenwort a(0) zu dem verschlüsselten Datenwort ENC(a(0)) führt, wobei ENC–1 die Inversion desselben anzeigt. Die Verschlüsselungs- und Entschlüsselungsfunktionen können hochgradig nichtlineare Funktionen sein. Entsprechend ergibt ein Einzelbitfehler in einem verschlüsselten Datenwort notwendigerweise einen Mehrbitfehler in dem entschlüsselten Bereich.
  • Wie in 10 gezeigt, umfasst die Prüfeinrichtung 84 eine Anforderungsverbindung 90 zu dem Speicher 20 zum Anfordern der Bereitstellung weiterer verschlüsselter Datenwörter, wie unten ausführlicher dargestellt wird. Der Ausgang 88 ist mit einer Entschlüsselungsvorrichtung 92 verbunden, die eine Schnittstelle zwischen dem verschlüsselten Bereich 94, innerhalb dessen der Speicher 20 angeordnet ist, und einem entschlüsselten Bereich 96 bildet, innerhalb dessen der Rezipient des Datenworts, für das die Fehlerkorrektur durchgeführt wird, angeordnet ist; etwa, wie unten dargestellt, eine CPU oder dergleichen.
  • Wie in 10 durch Klammern illustriert, kann die Entschlüsselungsvorrichtung 92 auch in der Lage sein, eine Verschlüsselung durchzuführen. Die Prüfeinrichtung 84 ist auch über eine Anforderungsverbindung 94 mit der Entschlüsselungsvorrichtung 92 verbunden, um eine Entschlüsselung eines bestimmten verschlüsselten Datenworts anzufordern, wie unten ausführlicher dargestellt wird. Die Entschlüsselungsvorrichtung 92 kann die entschlüsselten Datenwörter, deren Entschlüsselung durch die Prüfeinrichtung 84 angefordert wurde, über eine Datenverbindung 96 an die Prüfeinrichtung 84 ausgeben. In ähnlicher Weise kann die Entschlüsselungsvorrichtung 92 für verschlüsselte Datenwörter, die in dem verschlüsselten Bereich 94 durch die Vorrichtung 80 als korrekt oder als möglicherweise mit einem Einzelbitfehler behaftet identifiziert wurden, wie unten ausführlicher beschrieben wird, entschlüsselte Versionen von verschlüsselten Datenwörtern über eine Datenverbindung 100 an einen Ausgang 98 ausgeben. Die Prüfeinrichtung 84 ist auch mit dem Ausgang 98 über eine Datenleitung 102 verbunden, um an den Ausgang 98 verschlüsselte Versionen von Datenwörtern weiterzuleiten, die einer Doppelbitkorrektur unterzogen werden müssen, wie unten ausführlicher beschrieben wird. Wie durch die gepunkteten Linien in 10 gezeigt, kann die Vorrichtung 92 in dem Fall, dass die Entschlüsselungsvorrichtung 92 auch eine Verschlüsselungsfähigkeit hat, Datenwörter, die zu entschlüsseln und in dem Speicher 20 zu speichern sind, über eine Datenleitung 104 empfangen, um die jeweils verschlüsselten Datenwörter an einer Datenausgangsleitung 106 auszugeben, die zu dem Speicher 20 führt, jedoch eine in dieselbe verbundene Vorrichtung 120 zum Schützen der jeweiligen verschlüsselten Datenwörter aufweist, die durch die Vorrichtung 92 ausgegeben werden. Diese Vorrichtung 120 umfasst einen Determinator 122 und einen Aktualisator 124, die seriell miteinander verbunden sind. Die gestrichelte Linie 126 in 10 illustriert eine Grenze zwischen dem verschlüsselten Bereich 94 und dem entschlüsselten Bereich 96.
  • Nachdem eine exemplarische Struktur der Vorrichtung 80 und ihre Einbettung in ein Datenentschlüsselungs- oder Datenverschlüsselungs-/-entschlüsselungssystem zusammen mit der Vorrichtung 92 beschrieben wurde, wird unten die Betriebsweise der Vorrichtung 80 mit weiterem Bezug auf 11 und 12 näher erklärt, die die Datenwörter, die für die Vorrichtung 80 verfügbar sind, zusammen mit einem entsprechenden Fehlerkorrekturcode, d. h. hier zugänglich in dem Speicher 20 gespeichert, bzw. einen exemplarischen Prozessfluss zeigen.
  • Wenn die Vorrichtung 80 mit der Fehlerkorrektur und dem Durchführen einer Fehlererkennung an einem bestimmten verschlüsselten Datenwort beginnt, ist eine Mehrzahl von verschlüsselten Datenwörtern für die Vorrichtung 80 verfügbar. Die verschlüsselten Datenwörter sind zu Sätzen von verschlüsselten Datenwörtern gruppiert, für die ein Beispiel in 11 mit dem Bezugszeichen 128 gezeigt ist. Der Satz 128 hat w verschlüsselte Datenwörter ENC(a(0)), ENC(a(1)), ..., ENC(a(w – 1)) und ENC(a(w)). Erste w verschlüsselte Datenwörter entsprechen dem Satz 28 von Datenwörtern des Ausführungsbeispiels aus 3b. Das bedeutet, diese verschlüsselten Datenwörter tragen alle verschlüsselten Inhalt in Form von a(0), a(1), ..., a(w – 1), und jedem ist jeweils ein Fehlerkorrekturcode cvA(0), ..., cvA(w – 1) zugeordnet, so dass der jeweilige Fehlerkorrekturcode gleich ENC(a(#))AT ist, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, wie oben mit Bezug auf 18 beschrieben. Anstelle einer zusätzlichen Bereitstellung eines MSC, wie dies in 3b der Fall war, wird ein zusätzliches Wort zu diesen w verschlüsselten Datenwörtern hinzugefügt, nämlich das verschlüsselte Datenwort ENC(a(w)), das eine verschlüsselte Version einer Modulo-2-Summe über alle w verschlüsselten Datenwörter ENC(a(0))...ENC(a(w – 1)) bildet, wie in 11 gezeigt. Diesem zusätzlichen verschlüsselten Datenwort ENC(a(w)) ist auch ein entsprechender Fehlerkorrekturcode cvA(w) zugeordnet, so dass cvA(w) = ENC(a(w))AT. Die Wirkung dieses zusätzlichen verschlüsselten Datenworts wird aus der folgenden Erläuterung zu 12 deutlich.
  • Der Prozess beginnt bei Schritt S10 in 12 damit, dass der Empfänger 82 ein verschlüsseltes Datenwort von Interesse zusammen mit einem zugeordneten Fehlerkorrekturcode empfängt. Zum leichteren Verständnis wird angenommen, dass dieses verschlüsselte Datenwort von Interesse ENC(a(1)) ist. Der Prozess aus Schritt S10 kann dadurch ausgelöst worden sein, dass der mit dem Ausgang 98 verbundene Rezipient, etwa eine CPU, wie in 9 gezeigt, ein bestimmtes Datenwort in entschlüsselter Form anfordert, indem er eine entsprechende Adresse über den Adressbus 56 an den Speicher 50 bzw. 20 sendet.
  • Danach prüft die Prüfeinrichtung in Schritt S11, ob der Fehlerkorrekturcode cvA(1) gleich ENC(a(1))AT ist. Falls ja, deklariert die Prüfeinrichtung 84 das verschlüsselte Datenwort in Schritt S12 als korrekt, woraufhin die Prüfeinrichtung 84 dieses verschlüsselte Datenwort ENC(a(1)) über den Ausgang 88 an die Entschlüsselungsvorrichtung 92 weiterleiten kann, wobei letztere über die Verbindung 94 über die Korrektheit desselben informiert wird. Die Vorrichtung 92 wiederum entschlüsselt das verschlüsselte Datenwort und sendet die entschlüsselte Version desselben, d. h. a(1), über die Verbindung 100 an den Ausgang 92, wobei diese ausgehende Richtung aufgrund der Korrektheit verwendet wird, wie sie durch die Prüfeinrichtung 84 über die Verbindung 94 für den Rezipienten angezeigt wird.
  • Wenn jedoch die Prüfung in Schritt S11 Ungleichheit ergibt, führt die Prüfeinrichtung 84 in Schritt S13 unter Verwendung der Spalten von A die Einzelbitkorrektur an dem verschlüsselten Datenwort ENC(a(1)) und seinem zugeordneten Fehlerkorrekturcode cvA(1) durch, wie oben mit Bezug auf Schritt S4 in 2 beschrieben. In dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, wird eine korrigierte Version des verschlüsselten Datenworts ENC(a(1)) und des zugeordneten Fehlerkorrekturcodes cvA(1) aus der Einzelbitfehlerkorrektur in Schritt S13 erhalten, und die Prüfeinrichtung 84 kann so vorgehen, wie oben mit Bezug auf Schritt S12 dargestellt, d. h. durch Ausgeben der korrigierten Version des verschlüsselten Datenworts über den Ausgang 88 an die Entschlüsselungsvorrichtung 92, wobei dessen Korrektheit gleichzeitig für die Vorrichtung 92 über die Verbindung 94 angezeigt wird, wobei letztere wiederum das verschlüsselte Datenwort entschlüsselt und die entschlüsselte Version an den Ausgang 98 ausgibt.
  • Wenn jedoch die Einzelbitfehlerkorrektur in Schritt S13 fehlschlägt, führt die Prüfeinrichtung 84 in Schritt S14 eine 2-Bit-Fehler-Erkennung an dem codierten Datenwort ENC(a(1)) und dem zugeordneten Fehlerkorrekturcode cvA(1) durch, um einen Fehler innerhalb des codierten Datenworts ENC(a(1)) und des zugeordneten Fehlerkorrekturcodes cvA(1) als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen. Wenn der Fehler des codierten Datenworts ENC(a(1)) und des zugeordneten Fehlerkorrekturcodes cvA(1) als ein Mehr-als-Zwei-Bit-Fehler angesehen wird, kann die Prüfeinrichtung 84 in Schritt S15 eine Durchführung einer Ausnahmemaßnahme auslösen. Wenn beispielsweise der Rezipient an dem Ausgang 98 eine CPU ist, kann die Prüfeinrichtung 84 in Schritt S15 die CPU über die Ausnahmesituation, nämlich den Mehr-als-Zwei-Bit-Fehler in dem gegenwärtig untersuchten verschlüsselten Datenwort, informieren, woraufhin die CPU dazu konfiguriert sein kann, ein gegenwärtig ausgeführtes Programm zu beenden oder die Bearbeitung ganz anzuhalten oder dergleichen. Wenn beispielsweise die CPU eine Steuerung für eine Sicherheits-Chipkarte ist, kann die Ausnahmesituation aus Schritt S15 als ein Fehlerangriff auf die Sicherheitssteuerung interpretiert werden, der ein Beenden der Weiterbearbeitung erforderlich macht, um den Fehlerangriff abzuwehren.
  • Wenn jedoch der Fehler des codierten Datenworts ENC(a(1)) als ein Doppelbitfehler angesehen wird, fordert die Prüfeinrichtung 84 in Schritt S16, hier über die Verbindung 90 aus dem Speicher 20, die Anzahl w von weiteren verschlüsselten Datenwörtern zusammen mit ihren zugeordneten Korrekturcodes an, nämlich die verschlüsselten Datenwörter und zugeordneten Fehlerkorrekturcodes, die den anderen Indizes bis auf einen, nämlich 0, und 2 bis w entsprechen. Um die gegenwärtige Beschreibung kurz zu unterbrechen: Eine solche Doppelbitfehlererkennung, wie in Schritt S14 erwähnt, kann auch zwischen den Schritten S4 und S5 in 2 verwendet werden, um Schritt S5 nur in dem Fall durchzuführen, dass der Mehr-als-Ein-Bit-Fehler sich als ein Doppelbitfehler erweist und die Weiterverarbeitung im Fall eines Mehr-als-Zwei-Bit-Fehlers ohne einen weiteren Korrekturversuch beendet.
  • Beim Empfang der anderen verschlüsselten Datenwörter und ihrer zugeordneten Fehlerkorrekturcodes durch die Prüfeinrichtung 84 über den Empfänger 82 auf die Anforderung in Schritt S16 hin prüft die Prüfeinrichtung 84 alle weiteren verschlüsselten Datenwörter und ihre zugeordneten Fehlerkorrekturcodes in Schritt S17 daraufhin, ob dieselben korrekt sind. Diese Prüfung entspricht einer Anwendung von Schritt S11 auf alle diese weiteren verschlüsselten Datenwörter und ihre zugeordneten Fehlerkorrekturcodes. Wenn alle korrekt sind, geht die Prüfeinrichtung 84 dazu über, über die Korrektur 94 eine Entschlüsselung dieser weiteren verschlüsselten Datenwörter durch die Entschlüsselungsvorrichtung 92 anzufordern, wobei die letzteren über den Ausgang 88 an den Eingang der Entschlüsselungsvorrichtung 92 ausgegeben werden, wie in Schritt S18 gezeigt. Die Entschlüsselungsvorrichtung 92 entschlüsselt alle diese verschlüsselten Datenwörter, um a(0), a(2) bis a(w) zu erhalten, und gibt dieselben über die Datenverbindung 96 an die Prüfeinrichtung 84 aus, da die Prüfeinrichtung 84 eine solche Rückübertragung über die Verbindung 94 anfordert. Sodann bildet die Prüfeinrichtung 84 in Schritt S19 eine Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter, wodurch eine entschlüsselte korrekte Version, d. h. a(1), des verschlüsselten Datenworts ENC(a(1)) erhalten wird, vorausgesetzt, dass die Fehlersituation aller verschlüsselten Datenwörter und ihrer zugeordneten Fehlerkorrekturcodes in den Schritten S17, S14 bzw. S11 korrekt bestimmt wurde.
  • Wie in 12 gezeigt, kann der Prozess hier anhalten. Jedoch kann die Prüfeinrichtung 84 alternativ dazu konfiguriert sein, zu einer Bestimmung dessen überzugehen, oh ein Teil der eben erwähnten Annahmen bezüglich der Fehlersituationen der Daten, wie in 11 gezeigt, falsch sind. Entsprechend kann die Prüfeinrichtung 84 dazu konfiguriert sein, in Schritt S20 ein Verschlüsseln der Modulo-2-Summe aus den entschlüsselten weiteren verschlüsselten Datenwörtern durch die Vorrichtung 92 anzufordern, indem die Modulo-2-Summe über den Ausgang 88 an die Vorrichtung 92 weitergeleitet wird und die Vorrichtung 92 über die Verbindung 94 angewiesen wird, das Verschlüsselungsergebnis über den Datenpfad 96 zurückzusenden. Das Ergebnis von Schritt S20 ist eine korrekte Version des verschlüsselten Datenworts ENC(a(1)), vorausgesetzt, dass alle Annahmen korrekt sind. Entsprechend ist die Prüfeinrichtung 84 in der Lage, in Schritt S21 zu prüfen, ob das verschlüsselte Datenwort ENC(a(1)), wie es über den Eingang 86 erhalten wird, tatsächlich nur an zwei Bitpositionen von der verschlüsselten Version der Modulo-2-Summe ab weicht, wie sie über die Datenverbindung 96 von der Vorrichtung 92 erhalten wird. Wenn dies der Fall ist, kann die Prüfeinrichtung 84 eine Weiterverarbeitung in Schritt S22 erlauben, während die Prüfeinrichtung 84 in dem Fall, dass die Abweichung die Anzahl von zwei Bitpositionen überschreitet, ein Ergreifen von Ausnahmemaßnahmen in Schritt S23 anfordern kann. Beispielsweise kann die Prüfeinrichtung 84 dazu konfiguriert sein, ein Alarmsignal auszugeben, das beispielsweise eine Deaktivierung von kryptografischen Funktionen der Vorrichtung zum Ergebnis hat. Dasselbe kann für Schritt S15 gelten.
  • Natürlich kann die Prüfung in Schritt S17 zeigen, dass nicht nur das verschlüsselte Datenwort von Interesse, d. h. ENC(a(1)), sondern auch eines der anderen verschlüsselten Datenwörter aus Satz 128 inkorrekt ist. In diesem Fall kann die Prüfeinrichtung 84 entweder in Schritt S24 ohne weiteren Versuch, eines dieser weiteren Datenwörter zu korrigieren, direkt eine Ausnahmemaßnahme ergreifen, oder alternativ kann die Prüfeinrichtung 84 dazu konfiguriert sein, in Schritt S25 eine x-Bit-Fehlerkorrektur an allen denjenigen verschlüsselten Datenwärtern durchzuführen, die sich bei dem Test S17, der Schritt S11 entspricht, als inkorrekt erwiesen haben. Gemäß der letzteren Alternative kann der Prozess zu Schritt S24 übergehen, falls die Einzelbitfehlerkorrektur in Schritt S25 für eines dieser weiteren verschlüsselten Datenwörter (mit den Indizes 0, 2, 3, ... w) fehlgeschlagen ist, und zu Schritt S18 übergehen, falls alle Einzelbitfehlerkorrekturen in Schritt S25 erfolgreich waren.
  • Wie oben angegeben, kann das System aus 10 auch eine Vorrichtung 120 mm Schützen eines verschlüsselten Datenworts umfassen, das durch die Vorrichtung 92 auf eine Anforderung zum Speichern von Klartext-Datenwörtern hin entschlüsselt wird, die über den Eingang 104 eintreten und durch die Vorrichtung 92 verschlüsselt wurden. Bevor eine mögliche Konfiguration der Vorrichtung 120 erklärt wird, umfasst das in 10 gezeigte System gemäß einem alternativen Ausführungsbeispiel nicht die Vorrichtung 18, sondern nur die Vorrichtung 124, die die Daten schützt, wobei das System entsprechend nur die Datenerzeugungsfähigkeit und nicht die oben beschriebene Datenabruffähigkeit hat. Im letzteren Fall ist die Einheit 92 möglicherweise nur zur Verschlüsselung und nicht zur Entschlüsselung funktionsfähig.
  • Der Determinator 122 kann dazu konfiguriert sein, den Fehlerkorrekturcode cvA(1) zu bestimmen, der dem verschlüsselten Datenwort ENC(a(1)) zugeordnet ist, so dass cvA(1) = ENC(a(1))AT, wiederum unter der Annahme, dass dieses verschlüsselte Datenwort das Datenwort von Interesse ist, d. h. der Inhalt von a(1) auf eine Anforderung von einer Entität, die über die Verbindung 104 mit der Vorrichtung 92 verbunden ist, in den Speicher 20 gespeichert werden soll. Der Aktualisator 124 ist dazu konfiguriert, ein vorbestimmtes der w weiteren verschlüsselten Datenwörter, nämlich ENC(a(w)), dazu zu aktualisieren, einer Modulo-2-Summe aus dem vorbestimmten Verschlüsselungsdatenwort ENC(a(1)), wie es über die Verbindung 106 erhalten wird, der vorherigen Version desselben, wie sie in dem Speicher 20 gespeichert ist, und der vorherigen Version des vorbestimmten verschlüsselten Datenworts ENC(a(w)) zu entsprechen. Ferner aktualisiert der Aktualisator 124 den einem vorbestimmten verschlüsselten Datenwort zugeordneten Fehlerkorrekturcode cvA(w) dazu, gleich (Ergebnis der Modulo-2-Summe)AT zu sein. Somit verändern sich bei einer Anforderung, eines der verschlüsselten Datenwörter ENC(a(0)) bis ENC(a(w – 1)) zu überschreiben, insgesamt vier Datenelemente in 11, nur das jeweilige codierte Datenwort selbst wird zusammen mit dem Fehlerkorrekturcode desselben, der an den neuen Inhalt des jeweiligen verschlüsselten Datenworts angepasst ist, überschrieben, und das verschlüsselte Datenwort ENC(a(w)) und sein zugeordneter Fehlerkorrekturcode cvA(w), wie soeben dargestellt.
  • Eine Erweiterung der soeben mit Bezug auf 1013 beschriebenen Ausführungsbeispiele kombiniert die letzteren Ausführungsbeispiele mit den ersten beiden Matrizen, die den systematischen Basis-Fehlerkorrekturcode aus 4 definieren. Das Ergebnis ist ein spezieller 2-Bit-Fehlerkorrekturcode. Eine erste Stufe wird durch den Einzelbitfehlerkorrektur- und 2-Bit-Fehler-Erkennungscode auf Wortebene gebildet, der durch das systematische Basis-Korrekturcodeschema geboten wird, das mit dem Fehlerkorrekturcode cvA verbunden ist. Die zweite Stufe verwendet die Verschlüsselungs-/Entschlüsselungsfähigkeit auf Block- oder Datenwortsatzebene, um 2-Bit-Fehler zu korrigieren, die auf der Wortebene in der ersten Stufe erkannt werden, wenn keine weiteren 1-Bit- oder 2-Bit-Fehler in den anderen Wörtern des Blocks gesehen werden. Wieder ergibt dies, ähnlich wie bei dem Ausführungsbeispiel aus 3b, die Möglichkeit einer unabhängigen Skalierung von Einbitfehlerkorrekturfähigkeiten und Doppelbitfehlerkorrekturfähigkeiten.
  • Insbesondere kann die Generatormatrix A aus 4 dazu verwendet werden, den 1-Bit-Fehlerkorrektur und 2-Bit-Fehler-Erkennungscode gemäß cvA = aAT für alle in 11 gezeigten w + 1 Wörter zu bilden, wobei ein Block, wie oben angegeben, w Datenwörter + 1 EDC-Wort enthält (EDC = error detection code, Fehlererkennungscode). Entsprechend werden w + 1 erweiterte Wörter in dem Speicher 20 gespeichert, nämlich (ai|cvAi) mit jeweils n + k Bits (oder jeweils eine verschlüsselte Version derselben). In 11 zeigen beispielsweise alle Blöcke mit durchgezogenen Linien die Werte an, die jeweils in den Speicher 20 geschrieben werden.
  • Um ein bestimmtes erweitertes Wort abzurufen, das das verschlüsselte Datenwort und seinen zugeordneten Fehlerkorrekturcode umfasst, kann der folgende Prozess mit Bezug auf 13 verwendet werden, wobei die Entsprechungen zu 12 jedoch in Klammern angegeben sind:
    • – Erweitertes Wort (ar*|cvAr) aus Speicher 20 lesen (”*” bedeutet potentielle Verzerrung) (vgl. S10) (in 13 ist ar* ENC(a(1))**);
    • – Code mit Kontrollmatrix H = (A/I) verwenden, um Fehler zu erkennen/korrigieren: 1. Wenn Syndromvektor s = H(ar*|cvAr*)T = 0, werden korrekte Daten angenommen, und es sind keine weiteren Schritte erforderlich; es wird angenommen, dass das gelesene Wort ar = ar* korrekt ist (vgl. S12); 2. Wenn Syndromvektor s = H(ar*|cvAr*)T ≠ 0 Einzelbitfehler anzeigt, wird ein Einzelbitfehler angenommen und unter Verwendung von Subcode korrigiert, und es sind keine weiteren Schritte erforderlich; es wird angenommen, dass das gelesene Wort ar nach der Korrektur korrekt ist (Erfolgsalternative); 3. Wenn Syndromvektor s = H(ar*|cvAr*)T ≠ 0 Doppelbitfehler anzeigt (vgl. S14), wird ein Doppelbitfehler angenommen, und die folgende Prozedur wird ausgeführt: a. In einer Schleife über alle w verbleibenden erweiterten Wörter des Blocks (j = 0..w; j ≠ r) – (aj*|cvAj*) lesen (vgl. S16) – Wenn sj = H(aj*|cvAj*)T = 0, ist aj* = aj korrekt (vgl. S17); – Wenn sj = H(aj*|cvAj*)T ≠ 0, wird keine Korrektur von (ar*|cvAr*) durchgeführt, da zu viele Fehler in Block → Alarm (vgl. S24); b. Modulo-2-Summe aller ENC–1(aj) (j = 0...w; j ≠ r) berechnen, um ENC–1(ar_neu*) zu erhalten (vgl. S18, S19); c. Prüfen, ob (ENC(ENC–1(ar_neu*))|cvAr_nue*) und (ar*|cvAr*) sich in genau 2 Bitpositionen unterscheiden (vgl. S20, S21), dann ar = ar_neu* verwenden (vgl. S22), sonst → Alarm (vgl. S23).
  • Obwohl die anderen [ENC(a(x))|cvA(x)] ECCl-Fehler enthalten könnten, ist bei den obigen Ausführungsbeispielen die Notwendigkeit höher, ECC-frei zu sein, um eine maximale Sicherheit des Schemas zu wahren.
  • Entsprechend zeigt 13 eine Station eines Lesens aus dem Speicher 20, wenn [ENC(a(1))**|cvA(x)**] einen Doppelbitfehler enthält: Blöcke mit durchgezogenen Linien zeigen Werte an, die in dem Speicher 20 gespeichert werden, Blöcke mit gepunkteten Linien zeigen berechnete Zwischenwerte an, die dazu verwendet werden, den Doppelbitfehler zu korrigieren.
  • Der Speichermehraufwand ist folgender:

    Bits pro w-Wort-Block für 1-Bit-Fehlerkorrekturcode: (32 + 1)*w + 33
    Bits pro w-Wort-Block für 2-Bit-Fehlerkorrekturcode: (32 + 7)*w + 39 Mehraufwand = (6w + 6)/(33w + 33) w = 8: Mehraufwand = 18,2%.
  • Einige Aspekte wurden zwar im Zusammenhang mit einer Vorrichtung beschrieben, jedoch repräsentieren diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog dazu repräsentieren Aspekte, die im Zusammenhang mit einem Verfahrensschritt beschrieben sind, auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung. Einige oder alle Verfahrensschritte können durch eine (oder unter Verwendung einer) Hardwarevorrichtung ausgeführt werden wie beispielsweise einen Mikroprozessor, einen programmierbaren Computer oder eine elektronische Schaltung. Bei einigen Ausführungsbeispielen können einer oder mehrere der wichtigsten Verfahrensschritte durch eine solche Vorrichtung ausgeführt werden.
  • Abhängig von bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Diskette, einer DVD, einer Blue-Ray, einer CD, eines ROM, eines PROM (programmable ROM = programmierbares ROM), eines EPROM (erasable PROM = löschbares PROM), eines EEPROM oder eines Flash-Speichers erfolgen, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem so zusammenwirken (oder so zusammenzuwirken in der Lage sind), dass das jeweilige Verfahren durchgeführt wird. Daher kann das digitale Speichermedium computerlesbar sein.
  • Einige Ausführungsbeispiele umfassen einen Datenträger mit elektronisch lesbaren Steuersignalen, die in der Lage sind, mit einem programmierbaren Computersystem so zusammenzuwirken, dass eines der hier beschriebenen Verfahren durchgeführt wird.
  • Allgemein können Ausführungsbeispiele als ein Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode zum Ausführen eines der Verfahren funktionsfähig ist, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auf einem maschinenlesbaren Träger gespeichert sein.
  • Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren auf einem maschinenlesbaren Träger gespeichert.
  • Mit anderen Worten ist daher ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens ein Computerprogramm mit einem Programmcode zum Ausführen eines der hier beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer läuft.
  • Ein weiteres Ausführungsbeispiel ist daher ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), das darauf aufgezeichnet das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren aufweist. Der Datenträger, das digitale Speichermedium oder das Aufzeichnungsmedium sind typischerweise greifbar und/oder nicht-flüchtig.
  • Ein weiteres Ausführungsbeispiel ist daher ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren repräsentiert. Der Datenstrom oder die Sequenz von Signalen kann beispielsweise dazu konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, übertragen zu werden.
  • Ein weiteres Ausführungsbeispiel umfasst eine Verarbeitungsvorrichtung, beispielsweise einen Computer oder eine programmierbare Logikvorrichtung, die dazu konfiguriert oder angepasst ist, eines der hier beschriebenen Verfahren durchzuführen.
  • Ein weiteres Ausführungsbeispiel umfasst einen Computer, der darauf installiert das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren aufweist.
  • Ein weiteres Ausführungsbeispiel umfasst eine Vorrichtung oder ein System, die bzw. das dazu konfiguriert ist, ein Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren (beispielsweise elektronisch oder optisch) an einen Empfänger zu übertragen. Der Empfänger kann beispielsweise ein Computer, eine mobile Vorrichtung, eine Speichervorrichtung oder dergleichen sein. Die Vorrichtung oder das System kann beispielsweise einen Dateiserver zum Übertragen des Computerprogramms an den Empfänger aufweisen.
  • Bei einigen Ausführungsbeispielen kann eine programmierbare Logikvorrichtung (beispielsweise ein feldprogrammierbares Gatterarray) dazu verwendet werden, einige oder alle Funktionalitäten der hier beschriebenen Verfahren durchzuführen. Bei einigen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hier beschriebenen Verfahren auszuführen. Allgemein werden die Verfahren bevorzugt durch eine Hardware-Vorrichtung durchgeführt.
  • Ausdrücke wie etwa ”erster”, ”zweiter” und dergleichen werden auch dazu verwendet, verschiedene Elemente, Regionen, Abschnitte usw. zu beschreiben und sind ebenfalls nicht begrenzend gemeint. Gleiche Ausdrücke beziehen sich in der ganzen Beschreibung auf gleiche Elemente.
  • Wie sie hier verwendet werden, sind die Ausdrücke ”mit”, ”enthaltend”, ”umfassend”, ”aufweisend” und dergleichen offene Ausdrücke, die das Vorhandensein eines genannten Elements oder Merkmals angeben, jedoch zusätzliche Elemente oder Merkmale nicht ausschließen, Die Artikel ”ein”, ”eine” und ”der/die/das” sollen ebenso den Plural wie den Singular umfassen, sofern durch den Kontext nicht deutlich anders bestimmt.
  • Mit Blick auf die obige Bandbreite an Variationen und Anwendungen sei darauf hingewiesen, dass die vorliegende Erfindung nicht durch die vorangegangene Beschreibung begrenzt ist und auch nicht durch die beigefügten Zeichnungen begrenzt ist. Vielmehr ist die vorliegende Erfindung nur durch die folgenden Patentansprüche und deren rechtliche Entsprechungen begrenzt.

Claims (25)

  1. Vorrichtung (10) zur Fehlerkorrektur, die folgende Merkmale aufweist: einen Empfänger (12), der dazu konfiguriert ist, ein Datenwort a (22) und einen Fehlerkorrekturcode cvA (24), der dem Datenwort a zugeordnet ist, zu empfangen; und eine Prüfeinrichtung (14), die dazu konfiguriert ist: das Datenwort a als korrekt zu deklarieren, wenn cvA gleich aAT ist, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist; wenn cvA ungleich aAT ist, eine x-Bit-Fehlerkorrektur an dem Datenwort a und dem zugordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A durchzuführen, um indem Fall, dass die x-Bit-Fehlerkorrektur erfolgreich ist, eine korrigierte Version des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA zu erhalten, und anzunehmen, dass eine Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA größer als x ist, und Folgendes durchzuführen, wenn die x-Bit-Fehlerkorrektur fehlschlägt: Erhalten eines Erweiterungsfehlerkorrekturcodes cvE; und Durchführen einer y-Bit-Fehlerkorrektur, wobei y > x, an dem Datenwort a und dem Fehlerkorrekturcode cvA unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE und von Spalten einer erweiterten Matrix
    Figure 00370001
    eines erweiterten linearen systematischen Korrekturcodes, gemäß welchem (cvA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren.
  2. Vorrichtung (10) gemäß Anspruch 1, bei der der Empfänger (12) dazu konfiguriert ist, das Datenwort a (22) aus einem Speicher (20) zu empfangen.
  3. Vorrichtung (10) gemäß Anspruch 1 oder 2, bei der die Prüfeinrichtung (14) dazu konfiguriert ist, beim Erhalten des Erweiterungsfehlerkorrekturcodes cvE eine Anzahl w – 1 von weiteren Datenwörtern ai, die zusammen mit dem Datenwort a einen Satz von w Datenwörtern bilden, und weitere Fehlerkorrekturcodes
    Figure 00380001
    die jeweils den weiteren Datenwörtern ai zugeordnet sind, anzufordern, eine Erweiterungsfehlerkorrekturcodeprüfsumme msc anzufordern, alle weiteren Datenwörter ai und die weiteren Fehlerkorrekturcodes
    Figure 00380002
    daraufhin zu prüfen, ob dieselben korrekt oder durch die x-Bit-Fehlerkorrektur korrigierbar sind, und wenn alle weiteren Datenwörter ai und die zugeordneten weiteren Fehlerkorrekturcodes
    Figure 00380003
    korrekt oder korrigierbar sind, Erweiterungsfehlerkorrekturcodes
    Figure 00380004
    für eine korrekte Version der weiteren Datenwörter ai abzuleiten, um
    Figure 00380005
    zu erfüllen, eine Modulo-2-Summe aus den Erweiterungsfehlerkorrekturcodes
    Figure 00380006
    und der Erweiterungsfehlerkorrekturcodeprüfsumme msc als den Erweiterungsfehlerkorrekturcode cvE zu verwenden und, wenn ein Teil der weiteren Datenwörter ai und zugeordneten weiteren Fehlerkorrekturcodes
    Figure 00380007
    durch die x-Bit-Fehlerkorrektur nicht korrigierbar sind, das Datenwort a und den zugeordneten Fehlerkorrekturcode cvA als unter Verwendung der y-Bit-Fehlerkorrektur nicht korrigierbar zu deklarieren.
  4. Vorrichtung (10) gemäß Anspruch 3, bei der die Prüfeinrichtung (14) dazu konfiguriert ist, beim Anfordern der Anzahl w – 1 von weiteren Datenwörtern ai, der zugeordneten Fehlerkorrekturcodes
    Figure 00380008
    und der Erweiterungsfehlerkorrekturcodeprüfsumme msc Lesebefehle an einen Speicher (20) zu senden, um die weiteren Datenwörter ai, die weiteren Fehlerkorrekturcodes
    Figure 00380009
    und die Erweiterungsfehlerkorrekturcodeprüfsumme msc aus dem Speicher zu lesen, wobei der Empfänger dazu konfiguriert ist, das Datenwort a und den Fehlerkorrekturcode cvA aus dem Speicher zu empfangen.
  5. Vorrichtung (10) gemäß Anspruch 3 oder 4, bei der die Prüfeinrichtung (14) dazu konfiguriert ist, Sätze von Datenwörtern mit unterschiedlichen w's zu unterstützen.
  6. Vorrichtung (10) gemäß einem der Ansprüche 1 bis 5, bei der die Prüfeinrichtung (14) so konfiguriert ist, dass der lineare systematische Basis-Korrekturcode ein Einzelbitfehlerkorrektur- und Doppelbitfehlererkennungscode und x = 1 und y = 2 ist.
  7. Vorrichtung (10) gemäß einem der Ansprüche 1 bis 6, bei der die Prüfeinrichtung (14) so konfiguriert ist, dass der Erweiterungsfehlerkorrekturcode cvE eine Länge von 1 Bits hat, eine Prüfmatrix
    Figure 00390001
    des erweiterten linearen systematischen Korrekturcodes entlang seiner rechten äußersten 1 Spalten wenigstens eine Spalte hat, die mit einer anderen Spalte von R addiert eine Summe eines anderen Paars von Spalten von R ergibt.
  8. Vorrichtung (10) gemäß einem der Ansprüche 1 bis 7, bei der die Prüfeinrichtung (14) so konfiguriert ist, dass E die Spalten von H = (A|I) so erweitert, dass die Spalten von
    Figure 00390002
    paarweise unterschiedlich sind und keine Summe eines Paars von Spalten von
    Figure 00390003
    gleich einer anderen Summe eines anderen Paars von Spalten von
    Figure 00390004
    ist.
  9. Vorrichtung (10) gemäß einem der Ansprüche 1 bis 8, bei der das Datenwort oder das verschlüsselte Datenwort a (22) eine Länge von n Bits hat und der Fehlerkorrekturcode cvA eine Länge von k Bits hat, wobei k = ⌈log2(n + 1)⌉, und die Prüfeinrichtung 14 so konfiguriert ist, dass A eine Matrix mit k Zeilen und n Spalten ist.
  10. Vorrichtung (40) zum Schützen eines Datenworts vor Datenverfälschung, wobei die Vorrichtung folgende Merkmale aufweist: einen ersten Determinator (42), der dazu konfiguriert ist, einen Fehlerkorrekturcode cvA zu bestimmen, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen; und einen zweiten Determinator (44), der dazu konfiguriert ist, einen erweiterten Fehlerkorrekturcode cvE zu bestimmen, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00400001
    eines erweiterten linearen systematischen Basis-Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y > x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  11. Vorrichtung (40) gemäß Anspruch 10, bei der die ersten und zweiten Determinatoren (42, 44) dazu konfiguriert sind, die entsprechende Bestimmung ansprechend auf einen Schreibbefehl durchzuführen, gemäß welchem das Datenwort a in einen Speicher (20) zu schreiben ist, und wobei die Vorrichtung dazu konfiguriert ist, den Fehlerkorrekturcode cvA in den Speicher zu schreiben.
  12. Vorrichtung (40) gemäß Anspruch 10 oder 11, die ferner einen Prüfsummenaktualisator aufweist, der dazu konfiguriert ist, eine Erweiterungsfehlerkorrekturcodeprüfsumme msc dazu zu aktualisieren, einer Modulo-2-Summe aus einer vorherigen Version der zu aktualisierenden Erweiterungsfehlerkorrekturcodeprüfsumme, dem Erweiterungsfehlerkorrekturcode cvE, und einer vorherigen Version des Erweiterungsfehlerkorrekturcodes cvE, der dem Datenwort a zugeordnet ist, zu entsprechen.
  13. Vorrichtung (40) gemäß Anspruch 12, bei der die ersten und zweiten Determinatoren dazu konfiguriert sind, die entsprechende Bestimmung ansprechend auf einen Schreibbefehl durchzuführen, gemäß welchem das Datenwort a in einen Speicher zu schreiben ist, wobei die Vorrichtung dazu konfiguriert ist, den Fehlerkorrekturcode cvA zusammen mit der aktualisierten Erweiterungsfehlerkorrekturcodeprüfsumme msc in den Speicher zu schreiben.
  14. Vorrichtung (80) zur Fehlerkorrektur, wobei die Vorrichtung folgende Merkmale aufweist: einen Empfänger (82), der dazu konfiguriert ist, ein verschlüsseltes Datenwort a und einen Fehlerkorrekturcode cvA, der dem verschlüsselten Datenwort a zugeordnet ist, zu empfangen; und eine Prüfeinrichtung (84), die dazu konfiguriert ist: das verschlüsselte Datenwort a als korrekt zu deklarieren, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist; wenn cvA ungleich aAT ist, unter Verwendung von Spalten von A eine Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA durchzuführen, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA zu erhalten, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen; und wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird, eine Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind, anzufordern; alle weiteren verschlüsselten Datenwörter und die weiteren Fehlerkorrekturcodes daraufhin zu prüfen, ob dieselben korrekt sind; eine Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter anzufordern, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten; und eine Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter zu bilden, um eine entschlüsselte korrekte Version des verschlüsselten Datenworts zu erhalten.
  15. Vorrichtung (80) gemäß Anspruch 14, bei der die Prüfeinrichtung dazu konfiguriert ist, wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird, eine Verschlüsselung der entschlüsselten korrekten Version des verschlüsselten Datenworts anzufordern, um eine korrekte Version des verschlüsselten Datenworts zu erhalten, und das verschlüsselte Datenwort und die korrekte Version des verschlüsselten Datenworts zu vergleichen, um zu beweisen, dass der Fehler des verschlüsselten Datenworts a ein Doppelbitfehler ist.
  16. Vorrichtung (80) gemäß Anspruch 14 oder 15, bei der die Prüfeinrichtung dazu konfiguriert ist, wenn der Fehler des verschlüsselten Datenworts a als ein Mehr-als-Zwei-Bit-Fehler angesehen wird, ein Alarmsignal auszugeben, das eine Deaktivierung von kryptografischen Funktionen der Vorrichtung zur Folge hat.
  17. Vorrichtung (80) gemäß Anspruch 15 oder 16, bei der die Prüfeinrichtung dazu konfiguriert ist, wenn der Vergleich des verschlüsselten Datenworts und der korrekten Version des verschlüsselten Datenworts zeigt, dass der Fehler des verschlüsselten Datenworts a kein Doppelbitfehler ist, ein Alarmsignal auszugeben, das eine Deaktivierung von kryptografischen Funktionen der Vorrichtung zum Ergebnis hat.
  18. Vorrichtung (80) gemäß einem der Ansprüche 15 bis 17, bei der die Prüfeinrichtung dazu konfiguriert ist, Sätze von Datenwörtern mit unterschiedlichen w's zu unterstützen.
  19. Vorrichtung (120) zum Schützen eines verschlüsselten Datenworts, die folgende Merkmale aufweist: einen Determinator (122), der dazu konfiguriert ist, einen Fehlerkorrekturcode cvA zu bestimmen, der einem verschlüsselten Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer Einzelbitfehlerkorrektur und einer Doppelbitfehlererkennung an Replikaten des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen; und einen Aktualisator (124), der dazu konfiguriert ist, ein vorbestimmtes von w weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, dazu zu aktualisieren, einer Modulo-2-Summe aus dem vorbestimmten verschlüsselten Datenwort, dem verschlüsselten Datenwort a und einer vorherigen Version des verschlüsselten Datenworts a zu entsprechen, und den Fehlerkorrekturcode, der dem vorbestimmten verschlüsselten Datenwort zugeordnet ist, dazu zu aktualisieren, gleich dem vorbestimmten verschlüsselten Datenwort mal AT zu sein.
  20. Verfahren zur Fehlerkorrektur, das folgende Schritte aufweist: Empfangen eines Datenworts a und eines Fehlerkorrekturcodes cvA, der dem Datenwort a zugeordnet ist; Deklarieren des Datenworts a als korrekt, wenn cvA gleich aAT ist, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist; wenn cvA ungleich aAT ist, Durchführen einer x-Bit-Fehlerkorrektur an dem Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A, um in dem Fall, dass die x-Bit-Fehlerkorrektur erfolgreich ist, eine korrigierte Version des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA zu erhalten, und Annehmen dessen, dass eine Anzahl von verfälschten Bits des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA größer als x ist, und Durchführen von Folgendem, wenn die x-Bit-Fehlerkorrektur fehlschlägt: Erhalten eines Erweiterungsfehlerkorrekturcodes cvE; und Durchführen einer y-Bit-Fehlerkorrektur, wobei y > x, an dem Datenwort a und dem Fehlerkorrekturcode cvA unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE und von Spalten einer erweiterten Matrix
    Figure 00430001
    eines erweiterten linearen systematischen Korrekturcodes, gemäß welchem (cvA|cvE) = aFT, wenn das Datenwort a, der Fehlerkorrekturcode cvA und der Erweiterungsfehlerkorrekturcode cvE korrekt waren.
  21. Verfahren zum Schützen eines Datenworts vor Datenverfälschung, wobei das Verfahren folgende Schritte aufweist: Bestimmen eines Fehlerkorrekturcodes cvA, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen; und Bestimmen eines erweiterten Fehlerkorrekturcodes cvE, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00440001
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y = x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  22. Verfahren zur Fehlerkorrektur, das folgende Schritte aufweist: Empfangen eines verschlüsselten Datenworts a und eines Fehlerkorrekturcodes cvA, der dem verschlüsselten Datenwort a zugeordnet ist; Deklarieren des verschlüsselten Datenworts a als korrekt, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist; wenn cvA ungleich aAT ist, Durchführen einer Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA unter Verwendung von Spalten von A, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA zu erhalten und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA durchzuführen, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen; und wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird: Anfordern einer Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind; Prüfen aller weiteren verschlüsselten Datenwörter und der weiteren Fehlerkorrekturcodes daraufhin, ob dieselben korrekt sind; Anfordern einer Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten; Anfordern einer Verschlüsselung einer Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter, um eine korrekte Version des verschlüsselten Datenworts zu erhalten; und Vergleichen des verschlüsselten Datenworts und der korrekten Version des verschlüsselten Datenworts, um zu beweisen, dass der Fehler des verschlüsselten Datenworts a ein Doppelbitfehler ist.
  23. Verfahren zum Schützen eines verschlüsselten Datenworts, wobei das Verfahren folgende Schritte aufweist: Bestimmen eines Fehlerkorrekturcodes cvA, der einem verschlüsselten Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer Einzelbitfehlerkorrektur und einer Doppelbitfehlererkennung an Replikaten des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen; und Aktualisieren eines vorbestimmten von w weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, dazu, einer Modulo-2-Summe aus dem vorbestimmten verschlüsselten Datenwort, dem verschlüsselten Datenwort a und einer vorherigen Version des verschlüsselten Datenworts a zu entsprechen, und den Fehlerkorrekturcode, der dem vorbestimmten verschlüsselten Datenwort zugeordnet ist, dazu zu aktualisieren, gleich dem vorbestimmten verschlüsselten Datenwort mal AT zu sein.
  24. Computerlesbares Medium, das ein Computerprogramm speichert, das dazu konfiguriert ist, Fehlerkorrektur durchzuführen, wobei das Computerprogramm folgende Merkmale aufweist: Programmanweisung, einen Fehlerkorrekturcodes cvA zu bestimmen, der einem Datenwort a zugeordnet ist, so dass cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist, deren Spalten eine Durchführung einer x-Bit-Fehlerkorrektur an Replikaten des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen; und Programmanweisungen, einen erweiterten Fehlerkorrekturcode cvE zu bestimmen, so dass (cvA|cvE) = aFT, wobei F eine erweiterte Generatormatrix
    Figure 00460001
    eines erweiterten linearen systematischen Korrekturcodes ist, deren Spalten unter Verwendung des Erweiterungsfehlerkorrekturcodes cvE eine Durchführung einer y-Bit-Fehlerkorrektur, wobei y = x, an einem Replikat des Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA ermöglichen.
  25. Computerlesbares Medium, das ein Computerprogramm speichert, das dazu konfiguriert ist, Fehlerkorrektur durchzuführen, wobei das Computerprogramm folgende Merkmale aufweist: Programmanweisungen, ein verschlüsseltes Datenwort a und einen Fehlerkorrekturcode cvA zu empfangen, der dem verschlüsselten Datenwort a zugeordnet ist; Programmanweisungen, das verschlüsselte Datenwort a als korrekt zu deklarieren, wenn cvA = aAT, wobei A eine Generatormatrix eines linearen systematischen Basis-Korrekturcodes ist; Programmanweisungen, wenn cvA ungleich aAT ist, unter Verwendung von Spalten von A eine Einzelbitfehlerkorrektur an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA durchzuführen, um in dem Fall, dass die Einzelbitfehlerkorrektur erfolgreich ist, eine korrigierte Version des verschlüsselten Datenworts a und des zugeordneten Fehlerkorrekturcodes cvA und in dem Fall, dass die Einzelbitfehlerkorrektur fehlschlägt, eine Doppelbitfehlererkennung an dem verschlüsselten Datenwort a und dem zugeordneten Fehlerkorrekturcode cvA zu erhalten, um einen Fehler des verschlüsselten Datenworts a als einen Doppelbitfehler oder einen Mehr-als-Zwei-Bit-Fehler anzusehen; und Programmanweisungen, wenn der Fehler des verschlüsselten Datenworts a als ein Doppelbitfehler angesehen wird: ein Anzahl w von weiteren verschlüsselten Datenwörtern, die zusammen mit dem verschlüsselten Datenwort a einen Satz von w + 1 verschlüsselten Datenwörtern bilden, zusammen mit weiteren Fehlerkorrekturcodes anzufordern, die jeweils den weiteren verschlüsselten Datenwörtern zugeordnet sind; alle weiteren verschlüsselten Datenwörter und weiteren verschlüsselten Fehlerkorrekturcodes daraufhin zu prüfen, ob dieselben korrekt sind; eine Entschlüsselung einer korrekten Version der weiteren verschlüsselten Datenwörter anzufordern, um eine entschlüsselte korrekte Version der weiteren verschlüsselten Datenwörter zu erhalten; eine Verschlüsselung einer Modulo-2-Summe aus der entschlüsselten korrekten Version der weiteren verschlüsselten Datenwörter anzufordern, um eine korrekte Version des verschlüsselten Datenworts zu erhalten; und das verschlüsselte Datenwort und die korrekte Version des verschlüsselten Datenworts zu vergleichen, um zu beweisen, dass der Fehler des verschlüsselten Datenworts a ein Doppelbitfehler ist.
DE102012200197.2A 2011-01-28 2012-01-09 Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung Active DE102012200197B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/016,308 2011-01-28
US13/016,308 US8533557B2 (en) 2011-01-28 2011-01-28 Device and method for error correction and protection against data corruption

Publications (2)

Publication Number Publication Date
DE102012200197A1 true DE102012200197A1 (de) 2012-08-02
DE102012200197B4 DE102012200197B4 (de) 2021-02-11

Family

ID=46511593

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012200197.2A Active DE102012200197B4 (de) 2011-01-28 2012-01-09 Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung

Country Status (2)

Country Link
US (1) US8533557B2 (de)
DE (1) DE102012200197B4 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US20190108366A1 (en) * 2010-01-28 2019-04-11 International Business Machines Corporation Secure data transmission utilizing distributed storage
US8959366B2 (en) 2010-01-28 2015-02-17 Cleversafe, Inc. De-sequencing encoded data slices
GB2480308A (en) * 2010-05-13 2011-11-16 Skype Ltd Data recovery for encrypted packet streams at relay nodes using correction data
US10372528B1 (en) * 2014-12-15 2019-08-06 Seagate Technology Llc Random values from data errors
EP3099001A1 (de) * 2015-05-29 2016-11-30 Gemalto Sa System und verfahren zum schutz einer kryptografischen vorrichtung gegen fehlerangriffe bei der durchführung von kryptografischen nichtlinearen operationen mithilfe linearer fehlerkorrekturcodes
TWI573147B (zh) * 2015-11-05 2017-03-01 大心電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US20170286216A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Energy efficient read/write support for a protected memory
US10936703B2 (en) * 2018-08-02 2021-03-02 International Business Machines Corporation Obfuscating programs using matrix tensor products
US11269720B2 (en) * 2019-08-11 2022-03-08 Winbond Electronics Corp. Memory storage apparatus and data access method
CN111446971A (zh) * 2020-02-11 2020-07-24 上海威固信息技术股份有限公司 一种基于共享子矩阵的自适应低密度奇偶校验码编码方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4139148A (en) 1977-08-25 1979-02-13 Sperry Rand Corporation Double bit error correction using single bit error correction, double bit error detection logic and syndrome bit memory
US4163147A (en) 1978-01-20 1979-07-31 Sperry Rand Corporation Double bit error correction using double bit complementing
US4899340A (en) * 1988-06-28 1990-02-06 Pacific Bell Error correcting code and error correcting circuit using the same
SE464271B (sv) * 1990-03-23 1991-03-25 Televerket Foerfarande och anordning foer kryptering/dekryptering av digitalt flerljud i teve
JPH05158722A (ja) 1991-12-10 1993-06-25 Hitachi Ltd 誤り検出・訂正方式
US5307409A (en) 1992-12-22 1994-04-26 Honeywell Inc Apparatus and method for fault detection on redundant signal lines via encryption
US5533035A (en) 1993-06-16 1996-07-02 Hal Computer Systems, Inc. Error detection and correction method and apparatus
US5673316A (en) 1996-03-29 1997-09-30 International Business Machines Corporation Creation and distribution of cryptographic envelope
US6301680B1 (en) 1998-09-24 2001-10-09 Sun Microsystems, Inc. Technique for correcting single-bit errors and detecting paired double-bit errors
US7254800B1 (en) * 2004-02-26 2007-08-07 Xilinx, Inc. Methods of providing error correction in configuration bitstreams for programmable logic devices
JP2006179131A (ja) 2004-12-22 2006-07-06 Fujitsu Ltd メモリシステム及び半導体記憶装置
DE102005001953A1 (de) 2005-01-14 2006-07-27 Infineon Technologies Ag Verfahren und Schaltungsanordnung zur Überprüfung eines Datensatzes mit mehreren Datenworten
DE502005010006D1 (de) * 2005-05-04 2010-09-09 Nokia Siemens Networks Gmbh Verfahren zur Codierung von Datenblöcken
DE102005031611B4 (de) * 2005-07-06 2007-11-22 Infineon Technologies Ag Nachweis einer Veränderung der Daten eines Datensatzes
DE102006003146B4 (de) 2006-01-23 2016-05-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
US8335961B2 (en) * 2009-06-30 2012-12-18 Oracle America, Inc. Facilitating probabilistic error detection and correction after a memory component failure

Also Published As

Publication number Publication date
US20120198302A1 (en) 2012-08-02
DE102012200197B4 (de) 2021-02-11
US8533557B2 (en) 2013-09-10

Similar Documents

Publication Publication Date Title
DE102012200197B4 (de) Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung
DE102005028221B4 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE112012000385T5 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE102011079259B9 (de) Bitfehlerkorrektur zur Beseitigung von altersbedingten Fehlern in einem Bitmuster
DE102011054410B4 (de) Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102012208711B4 (de) Vorrichtung zum Erzeugen einer Prüfsumme
DE112016003638T5 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102012213788A1 (de) Ende-zu-Ende-Datenschutz bei gleichzeitiger Unterstützung mehrerer CRC-Algorithmen
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
WO2004021630A1 (de) Parallelverarbeitung der decodierung und der zyklischen redundanzüberprüfung beim empfang von mobilfunksignalen
DE102011087634B4 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE102005031611B4 (de) Nachweis einer Veränderung der Daten eines Datensatzes
EP2191408A1 (de) Verfahren und vorrichtung zum codieren von datenworten
DE102011087457A1 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einer mehrzahl von codierten binärwörtern, die durch einen fehlerkorrekturcode codiert sind
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102019119753A9 (de) Generalisiertes verkettetes Fehlerkorrektur-Codierschema mit Lokalität
DE102013201422B3 (de) Verfahren zum Wiederherstellen verlorengegangener und/ oder beschädigter Daten
DE102014118531B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Ermitteln eines Fehlervektors in einem Datenwort
DE102022128556A1 (de) Verfahren und system zur fehlerkorrekturcodierung basierend auf verallgemeinerten verketteten codes mit eingeschränkten fehlerwerten für codebasierte kryptographie
DE102017107431A1 (de) Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes

Legal Events

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