DE602005003258T2 - Kontrolle der Ausführung eines Algorithmuses durch eine integrierte Schaltung - Google Patents

Kontrolle der Ausführung eines Algorithmuses durch eine integrierte Schaltung Download PDF

Info

Publication number
DE602005003258T2
DE602005003258T2 DE602005003258T DE602005003258T DE602005003258T2 DE 602005003258 T2 DE602005003258 T2 DE 602005003258T2 DE 602005003258 T DE602005003258 T DE 602005003258T DE 602005003258 T DE602005003258 T DE 602005003258T DE 602005003258 T2 DE602005003258 T2 DE 602005003258T2
Authority
DE
Germany
Prior art keywords
execution
cell
data
algorithm
present
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602005003258T
Other languages
English (en)
Other versions
DE602005003258D1 (de
Inventor
Pierre-Yvan 13790 Llardet
Yannick 13011 TEGLIA
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of DE602005003258D1 publication Critical patent/DE602005003258D1/de
Application granted granted Critical
Publication of DE602005003258T2 publication Critical patent/DE602005003258T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards

Description

  • Die vorliegende Erfindung betrifft allgemein die Ausführung von Berechnungsfunktionen mittels einer integrierten Schaltung. Die vorliegende Erfindung betrifft insbesondere die Steuerung der Ausführung eines Algorithmus', insbesondere einer Kryptographie, gegen Angriffe durch eine Einführung von Fehlern mit dem Ziel, das Geheimnis (allgemein, einen Schlüssel) zu entdecken, das bzw. der von diesem gehandhabt bzw. gehandelt wird.
  • Ein Angriff durch Fehlereinführung besteht im Einführen eines Fehlers in das ausgeführte Programm (beispielsweise durch Zerstören des Programmzählers) oder in die gehandhabten Daten, um ein fehlerhaftes Ergebnis zu erlangen. Diese Fehlereinführung wird mehrmals wiederholt und endet damit, dass sie es dem Angreifer ermöglicht, die gehandhabte Geheimmenge zu entdecken. Für Kryptographiealgorithmen (DSA, RSA, DES, AES etc.) können die geheimen Schlüssel beispielsweise durch Piraterie entdeckt werden, was Befehlssprünge verursacht.
  • Eine bekannte Technik, um ein Programm gegen Fehlereinführungen zu schützen, besteht im Berechnen einer Signatur (Anwendung eines Chiffrieralgorithmus' auf zumindest einen Teil des Softwarecodes) beim Installieren oder Schreiben des Programms. Diese Signatur wird dann innerhalb oder außerhalb der integrierten Schaltung gespeichert, die das Programm ausführt. Bei der Ausführung des Softwarecodes berechnet das Nutzungssystem dann nochmals eine Signatur beruhend auf dem gleichen Algorithmus, wie dem, der verwendet wurde, um die anfängliche Signatur zu erzeugen. Die aktuelle Signatur wird dann mit der vorbestimmten Signatur verglichen. Eine Abweichung zwischen diesen beiden Signaturen bedeutet, dass das gespeicherte Programm modifiziert worden ist, und ermöglicht somit eine Identifizierung eines potenziellen Angriffs, ob beabsichtigt oder zufällig. Ein Beispiel eines solchen Integritätsüberwachungsverfahrens ist im US-Patent 5442645 beschrieben.
  • Eine solche Lösung schützt das Programm, aber nicht die Daten und insbesondere nicht die gehandhabten geheimen Schlüssel. Ferner bleiben Angriffe mittels Fehlereinführung, wie beispielsweise im Dokument "DFA of DES with single injection faults" von M. Witterman, im IBM Workshop für Sicherheit – April 2000 beschrieben, bei Algorithmen wie dem DES wirkungsvoll.
  • Um die Daten zu schützen, besteht eine bekannte Technik darin, eine Funktion C zum Berechnen eines Fehlerkorrekturcodes auf Daten D anzuwenden, die verarbeitet werden. Bevor eine gegebene Operation O des Programms gestartet wird, wird diese Berechnungsfunktion auf die Daten angewandt, die zu verarbeiten sind, um einen initialen bzw. anfänglichen Code C(D) zu erhalten. Am Ende der Verarbeitung der Daten durch die Operation wird die gleiche Funktion C auf die Ergebnisdaten O(D) angewandt, und eine Operation O des Programms wird auf den initialen Code C(D) angewandt. Die Daten sind während der Verarbeitung nicht modifiziert worden, falls die beiden Ergebnisse C(O(D)) und O(C(D)) identisch sind.
  • Ein Nachteil dieser Technik besteht darin, dass sie nicht auf alle Operationen anwendbar ist. Insbesondere wird es für die Operation, welche die Daten handhabt, und für die Codeberechnungsfunktion benötigt, dass, für gültige Daten, die Bedingung C(O(D)) = O(C(D)) eingehalten wird.
  • Eine weitere bekannte Lösung, um die Ausführung eines Programms zu steuern, ist es, bestimmte Operationen zweimal durchzuführen, um eine Redundanz der Daten zu erhalten, um die Übereinstimmung zwischen den zwei Ausführungen zu überprüfen. Ein Nachteil einer solchen Lösung besteht darin, dass sie entweder eine Verdopplung der Ausführungszeit oder eine Verdopplung der Hardwareberechnungselemente erfordert.
  • Die vorliegende Erfindung zielt auf ein Überwinden der Nachteile von bekannten Lösungen eines Schutzes gegen Fehlereinführungen in die Ausführung von Programmen und insbesondere auf ein Erkennen von möglichen Fehlereinführungen, ob nun in das Programm oder in die Daten.
  • Die vorliegende Erfindung zielt auch auf ein Bereitstellen einer Lösung, welche mit einer Ausführung auf einem Mikrocontroller von begrenzter Leistung nach Art einer Smart-Card bzw. Chipkarte kompatibel ist.
  • Um diese und andere Aufgaben zu erreichen, stellt die vorliegende Erfindung ein Verfahren zum Schutz einer Berechnung, die sukzessiv durch mehrere Hardware-Zellen eines gleichen elektronischen Elements durchgeführt wird, gegenüber möglicher Fehlereinführungen bereit, welches aus Folgendem besteht:
    Starten einer ersten Ausführung der Berechnung;
    Starten einer zweiten Ausführung der gleichen Berechnung sobald die erste Ausführung eine erste Zelle freigegeben hat und in einer zweiten Zelle weitergeht;
    Synchronisieren der Ausführungen, so dass die zweite Ausführung eine Zelle nur nutzt, wenn die erste Ausführung zu der nächsten Zelle übergeben hat; und
    Verifizieren der Identität zwischen den zwei Ergebnissen am Ende der Ausführung der zwei Berechnungen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist jeder Ausführung ein temporäres Speicherelement zum Speichern von Zwischenergebnissen zugewiesen, die durch die Zellen geliefert werden.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist jeder Hardware-Zelle zumindest ein temporäres Speicherelement zum Speichern eines zu verarbeitenden Werts zugewiesen, wobei das Ergebnis jeder Zelle in einem Speicherelement gespeichert wird, das vorzugsweise das Eingangselement der nächsten Zelle bildet.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird eine Fehlerverarbeitung implementiert, falls die zwei Ergebnisse am Ende der Ausführung voneinander unterschiedlich sind.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird das Verfahren auf einen Algorithmus des DES-Typs angewandt.
  • Die vorliegende Erfindung stellt auch einen Mikrocontroller bereit, der ein Mittel zum Ausführen des Verfahrens aufweist, sowie eine Smart-Card, die einen solchen Mikrocontroller aufweist.
  • Die obigen und andere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden, nicht-beschränkenden Beschreibung von spezifischen Ausführungsformen besprochen.
  • Aus Gründen der Klarheit werden nachstehend nur die Elemente und Schritte beschrieben, die für das Verständnis der vorliegenden Erfindung notwendig sind. Insbesondere sind die Operatoren oder Befehle bzw. Instruktionen, die durch die Implementierung der vorliegenden Erfindung betroffen sind, nicht genau beschrieben worden, die vorliegende Erfindung trifft vielmehr auf jegliche Art von Operator oder Befehl zu. Ferner sind nicht alle Komponenten, die zur Ausführung eines Programms nötig sind, sei es für eine Softwareimplementierung oder mittels eines Automaten in verdrahteter Logik, genau beschrieben worden, da sie herkömmliche Elemente bilden.
  • Ein Merkmal der vorliegenden Erfindung besteht darin, die gleiche Berechnung mit den gleichen Daten zweimal auszuführen, und zwar mittels Verwendens einer gleichen Hardwarezelle für die gleiche Ausführung, sobald sie durch eine erste Ausführung freigegeben ist. Mit anderen Worten werden die zwei Ausführungen, die mittels der vorliegenden Erfindung bereitgestellt werden, um eine Zelle zeitlich verschoben.
  • Die vorliegende Erfindung zieht einen Vorteil aus der Tatsache, dass die Algorithmen, die Daten handhaben, und insbesondere die Kryptographiealgorithmen, sukzessiv mehrere Hardwarezellen verwenden, welche sie im Lauf der Ausführung des Algorithmus freigeben.
  • "Hardwarezelle" wird verwendet, um im Sinne der vorliegenden Erfindung eine verdrahtete Operation oder Funktion, d. h., eine, die dedizierte Komponenten verwendet, zu bezeichnen. Dies geht auch von der Annahme aus, dass die Eingabe-Ausgabe-Werte dieser Operation oder Funktion speicherbar sind, z. B. in einem temporären Register.
  • Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung ist jeder der zu speichernden Ausführungen, insbesondere Zwischenergebnissen, zumindest ein erstes temporäres Speicherelement (z. B. ein oder mehrere Register) zugewiesen. Falls nötig, ist jedem Ergebnis ein Speicherelement zugewiesen, um den Vergleich zu ermöglichen. Als eine Alternative speichert das erste Element jeder Ausführung ihr Ergebnis. Die Anzahl von Speicherelementen ist an den Algorithmus anzupassen und hängt insbesondere von der möglichen Notwendigkeit ab, ein oder mehrere vorherige Zwischenergebnisse zu berücksichtigen. In der Praxis verdoppelt die Implementierung der vorliegenden Erfindung die Anzahl von Zwischenstatusspeicherelementen bezüglich einer herkömmlichen Ausführung des berücksichtigten Algorithmus'. Dementsprechend verbraucht die Implementierung der vorliegenden Erfindung umso weniger Ressourcen, je kleiner diese Anzahl ist (idealerweise ein einziges).
  • Indem ein Algorithmus, der die n Operationen f1, ... , fi, ... fn (wobei i den Rang der Operation in einer ersten Ausführung bezeichnet) mit F bezeichnet wird, zwei Register (oder Sätze von Registern), die den entsprechenden Zwischenergebnissen von zwei Ausführungen des Algorithmus zugewiesen sind, mit R1 und R2 bezeichnet werden und die zu verarbeiteten Daten, die am Ende der Verarbeitung zu Daten Dfin führen müssen, mit Dinit bezeichnet werden, mag die Implementierung der vorliegenden Erfindung wie folgt geschrieben werden.
  • Der Einfachheit halber wird jede Operation f an eine Zeitspanne tj angepasst. Tatsächlich mögen die entsprechenden Dauern von Operationen f voneinander unterschiedlich sein, aber dies hat keinen Einfluss, vorausgesetzt, dass die gleiche Operation nicht gleichzeitig auf die entsprechenden Inhalte der zwei Register R1 und R2 angewandt wird. Es wird angenommen, dass die Register R1 und R2 die Daten enthalten, die an jedem Ende einer Operation verarbeitet werden. Die entsprechenden Inhalte der Register R1 und R2 am Ende von Periode j werden als R1j und R2j bezeichnet. Tatsächlich sind die Ränge i und j aufgrund der Ausführungsverschiebung für die erste Ausführung (R1) gleich.
  • Anfänglich (vor Periode t1) enthält zumindest Register R1 einen Wert Dinit. Während Periode t1 wird eine erste Operation f1 auf die Daten Dinit, die in Register R1 enthalten sind, angewandt, und am Ende von Periode t1 enthält Register R1 Daten R11 = f1(Dinit). Während dieser Periode t1 wird keine Verarbeitung auf Register R2 ange wandt, außer möglicherweise sein Laden mit Daten Dinit. Dementsprechend gilt R21 = Dinit.
  • Während Periode t2 wird eine zweite Operation f2 auf die Daten von Register R1 angewandt, welches am Ende der Periode Daten R12 = f2(R11) enthält. Parallel dazu wird eine erste Operation f1 auf die initialen Daten Dinit angewandt, die in Register R2 enthalten sind, welches am Ende von Periode t2 dann Daten R22 = f1(Dinit) enthält.
  • Danach, am Ende jede Zeitphase tj, enthalten Register R1 bzw. R2 Werte R1j = fj(R1j-1) und R2j = fj-1(R2j-1).
  • Am Ende von Periode tn ist die erste Ausführung beendet, und Register R1 enthält Daten R1n = fn(R1n-1). Falls die Ausführung korrekt stattgefunden hat, gilt R1 n = Auf der Seite von Register R2 wird die vorletzte Operation fn-1 während Periode tn angewandt, um zu Daten R2n = fn-1(R2n-1) zu führen.
  • Die Implementierung der vorliegenden Erfindung erfordert zumindest eine zusätzliche Periode t, um die zweite Ausführung zu beenden. Am Ende dieser zusätzlichen Periode tn+1 enthält R2 enthält Daten R2n+1 = fn(R2n). Hier gilt wiederum, dass, falls die Ausführung korrekt stattgefunden hat, R2n+1 = Dfin gilt.
  • Dies reicht dann aus, um am Ende von Periode tn+1 die entsprechenden Inhalte der Register R1 und R2 zu vergleichen. Im Fall einer Identität kann daraus geschlossen werden, dass das Ergebnis verlässlich ist (dass die Ausführungen nicht gestört worden sind). Im gegenteiligen Fall bedeutet dies, dass ein Angriff (oder ein zufälliger Fehler) aufgetreten ist.
  • Ein Beispiel einer Implementierung der vorliegenden Erfindung wird nachfolgend unter Bezug auf ein spezifisches Anwendungsbeispiel des DES-Algorithmus' beschrieben. Jedoch trifft die vorliegende Erfindung insbesondere auf jeglichen Algorithmus zu, der sukzessiv mehrere Hardwarezellen verwendet. Beispielsweise trifft die vorliegende Erfindung auch auf den AES-Algorithmus zu.
  • Ein Algorithmus des DES-Typs zerfällt in Chiffrierrunden (ROUND), in welchen Daten und Schlüssel gehandhabt werden. Dieser Algorithmus ist beispielsweise im Dokument "Federal Information Processing Standards Publication" 46-2, 30. Dezember 1993, beschrieben.
  • Jede Runde kann wie folgt aufgebrochen werden, wobei i den Rang der Runde bezeichnet, K den Schlüssel, R den rechten Teil des zu verarbeitenden Datenworts, L den linken Teil des zu verarbeitenden Datenworts und T die Variable, die verarbeitet wird.
  • T
    = E(R), wobei E die Erweiterung von Daten R über alle Bits des Worts bezeichnet;
    T
    = T xor K(i), wobei xor die XOR-Funktion und K(i) den Schlüssel von Runde i bezeichnet;
    T
    = Sbox(T), wobei Sbox eine Substitutionstabelle bezeichnet;
    T
    = P(T), wobei P eine Permutation bezeichnet;
    T
    = T xor L;
    L
    = R; und
    R
    = T.
  • Hinsichtlich der Zeit kann die Ausführung einer Runde von Rang i wie nachstehend in Tabelle 1 dargestellt werden, wobei t den Taktzyklus bezeichnet.
    Tabelle 1
    t Operation Inhalt der Register
    temporäres Register R L
    0 Ri-1 Ri-1 Li-1
    1 T = E(Ri-1) E(Ri-1)
    2 T = T xor K(i) E(Ri-1)xor K(i)
    3 T = Sbox(T) Sbox(E(Ri-1)xor K(i))
    4 T = P(T) P(Sbox(E(Ri-1)xor K(i)))
    5 T = T xor L P(Sbox(E(Ri-1)xor K(i)))xor L
    6 L = R R1
    7 R = T P(Sbox(E(Ri-1)xor K(i)))xor L
  • Tabelle 2 zeigt nachstehend die Implementierung der vorliegenden Erfindung einer Chiffrierrunde des DES-Algorithmus'. Es sind die gleichen Notationen wie zuvor verwendet wurden, und zwar dadurch, dass sie mit einer 1 für die erste Ausführung und mit einer 2 für die zweite Ausführung bezeichnet wurden.
    Figure 00090001
  • Im Vergleich zu der herkömmlichen Ausführung wird die Identität der Inhalte der Register T1 und T2 vor einem Aktualisieren von Registern R und L getestet. Wie zu sehen ist, sind zwei zusätzliche Zyklen nötig (einer zum Testen und einer, um die Verschiebung zu unterstützen). In Tabelle 2 wird angenommen, dass das Testen von Zyklus 7 die Ausführung validiert. Im gegenteiligen Fall werden die Zyklen 8 und 9 nicht ausgeführt.
  • Als eine Alternative wird das Testen nicht am Ende jeder Runde i ausgeführt, sondern am Ende der Ausführung aller Runden. In diesem Fall ist die Anzahl von zusätzlichen Zyklen auf n + 1 begrenzt (wobei n die Anzahl der Runden ist) anstatt auf 2n.
  • Es sollte beachtet werden, dass die Implementierung der vorliegenden Erfindung mit einem Algorithmus kompatibel ist, der die gleiche Zelle mehr als einmal verwendet. Falls diese Verwendung zeitlich genügend voneinander beabstandet ist, erfordert dies keine besondere Vorkehrung. Falls jedoch die Verwendung nahe beieinander liegt, z. B., falls eine gleiche Zelle zweimal hintereinander verwendet wird, werden die zwei Verwendungen dann als eine einzige angesehen und es wird darauf gewartet, dass diese Zelle freigegeben wird. Als eine Alternative wird diese Zelle ein erstes Mal für die erste Ausführung verwendet. Dann wird darauf gewartet, dass sie durch die zweite Ausführung verwendet worden ist, bevor sie wieder für die erste verwendet wird. Jede Ausführung wird dann kurzfristig warten gelassen, während die Zelle für die andere verwendet wird. Die Auswahl des Implementierungsmodus hängt von der Ausführungsdauer der Zelle bezüglich der vorherigen oder der nächsten Zellen ab. Insbesondere verlängert ein zweimaliges Verwenden hintereinander für eine gleiche Ausführung das Verfahren nicht, falls der vorherige Schritt allein zweimal so lang ist (die Daten der zweiten Ausführung würden dann vor dem Ende der zwei Verwendungen sowieso nicht für die erste Verwendung bereit stehen).
  • Nach einer Erfassung von zwei unterschiedlichen Ergebnissen kann jegliche herkömmliche Maßnahme ergriffen werden. Beispielsweise wird das endgültige Ergebnis nicht für den Rest der Anwendung berücksichtigt. Gemäß einem weiteren Beispiel wird das elektronische Element, beispielsweise die Smart-Card, blockiert.
  • Ein Vorteil der vorliegenden Erfindung liegt darin, dass ihre Implementierung bezüglich einer ungeschützten Ausführung nur wenig zusätzliche (Zeit- oder Hardware-)Ressourcen benötigt. In der Tat ist das Verlängern der Gesamtdauer, verbunden mit der Implementierung der vorliegenden Erfindung bezüglich zweier paralleler Ausführungen, auf die Ausführungszeit einer einzigen Zelle beschränkt (die, welche die meiste Zeit beansprucht). Ferner sind die zusätzlichen Hardwareelemente bezüglich zweier aufeinanderfolgender Ausführungen höchstens ein Element zum Speichern der Zwischenergebnisse der zweiten Ausführung (wobei die Speicherung der Ergebnisse der zwei Ausführungen zum Vergleich schon für zwei aufeinanderfolgende Ausführungen vorhanden ist).
  • Natürlich ist es wahrscheinlich, dass die vorliegende Erfindung verschiedene Änderungen, Modifizierungen und Verbesserungen aufweist, welche dem Fachmann leicht ersichtlich sein werden. Insbesondere liegt das Aufteilen des Algorithmus (die Auswahl der Hardwarezellen) gemäß der Anwendung und auf Grundlage der oben angegebenen funktionalen Angaben in den Fähigkeiten des Fachmanns. Ferner liegt die praktische Implementierung der vorliegenden Erfindung durch Softwaremittel, um das Verifikationsverfahren auszuführen, und insbesondere, um die Register und die Operationsabfolge zu verwalten, in den Fähigkeiten des Fachmanns und ruft gewöhnliche Programmierhandlungen hervor.

Claims (7)

  1. Ein Verfahren zum Schutz einer Berechnung, die sukzessiv durch mehrere Hardware-Zellen eines gleichen elektronischen Elements durchgeführt wird, gegenüber möglicher Fehlereinführungen, dadurch gekennzeichnet, dass das Verfahren aus Folgendem besteht: Starten einer ersten Ausführung der Berechnung; Starten einer zweiten Ausführung der gleichen Berechnung sobald die erste Ausführung eine erste Zelle freigegeben hat und in einer zweiten Zelle weitergeht; Synchronisieren der Ausführungen, so dass die zweite Ausführung eine Zelle nur nutzt, wenn die erste Ausführung zu der nächsten Zelle übergeben hat; und Verifizieren der Identität zwischen den zwei Ergebnissen am Ende der Ausführung der zwei Berechnungen.
  2. Verfahren nach Anspruch 1, wobei ein temporäres Speicherelement zum Speichern von Zwischenergebnissen die durch die Zellen geliefert werden, jeder Ausführung zugewiesen ist.
  3. Verfahren nach Anspruch 1, wobei wenigstens ein temporäres Speicherelement jeder Hardware-Zelle zum Speichern eines zu verarbeitenden Werts zugewiesen ist, wobei das Ergebnis jeder Zelle in einem Speicherelement gespeichert wird, das vorzugsweise das Eingangselement der nächsten Zelle bildet.
  4. Verfahren nach irgendeinem der Ansprüche 1 bis 3, wobei eine Fehlerverarbeitung implementiert wird, falls die zwei Ergebnisse an dem Ende der Ausführung voneinander unterschiedlich sind.
  5. Verfahren nach irgendeinem der Ansprüche 1 bis 4, wobei das Verfahren auf einen DES-artigen Algorithmus angewendet wird.
  6. Ein Mikro-Controller, der dadurch gekennzeichnet ist, dass er Mittel aufweist zum Ausführen des Verfahrens nach irgendeinem der Ansprüche 1 bis 5.
  7. Eine Smart-Card bzw. Chipkarte, die den Mikro-Controller nach Anspruch 6 aufweist.
DE602005003258T 2004-04-27 2005-04-22 Kontrolle der Ausführung eines Algorithmuses durch eine integrierte Schaltung Active DE602005003258T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0450798 2004-04-27
FR0450798A FR2869430A1 (fr) 2004-04-27 2004-04-27 Controle de l'execution d'un algorithme par un circuit integre

Publications (2)

Publication Number Publication Date
DE602005003258D1 DE602005003258D1 (de) 2007-12-27
DE602005003258T2 true DE602005003258T2 (de) 2008-09-18

Family

ID=34939456

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005003258T Active DE602005003258T2 (de) 2004-04-27 2005-04-22 Kontrolle der Ausführung eines Algorithmuses durch eine integrierte Schaltung

Country Status (4)

Country Link
US (1) US7797574B2 (de)
EP (1) EP1591866B1 (de)
DE (1) DE602005003258T2 (de)
FR (1) FR2869430A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004051991A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
DE102004051967A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
US8296739B2 (en) * 2008-03-31 2012-10-23 International Business Machines Corporation Testing soft error rate of an application program

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4606041A (en) * 1984-10-19 1986-08-12 Itt Corporation Frequency hopping data communication system
US4908502A (en) * 1988-02-08 1990-03-13 Pitney Bowes Inc. Fault tolerant smart card
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US6854075B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US6823473B2 (en) * 2000-04-19 2004-11-23 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
DE10042234C2 (de) * 2000-08-28 2002-06-20 Infineon Technologies Ag Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
JP4630478B2 (ja) * 2001-03-16 2011-02-09 株式会社東芝 半導体記憶装置
DE10136335B4 (de) * 2001-07-26 2007-03-22 Infineon Technologies Ag Prozessor mit mehreren Rechenwerken
US7318169B2 (en) * 2002-05-15 2008-01-08 David Czajkowski Fault tolerant computer
US20040064756A1 (en) * 2002-09-26 2004-04-01 Sudarshan Kadambi Method and apparatus for improving reliability in computer processors by re-executing instructions
US7260742B2 (en) * 2003-01-28 2007-08-21 Czajkowski David R SEU and SEFI fault tolerant computer
US7278080B2 (en) * 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit
WO2004084070A1 (en) * 2003-03-20 2004-09-30 Arm Limited Systematic and random error detection and recovery within processing stages of an integrated circuit
US7529368B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8005209B2 (en) * 2005-01-06 2011-08-23 Polytechnic University Invariance based concurrent error detection for the advanced encryption standard
US20070088979A1 (en) * 2005-10-14 2007-04-19 Pomaranski Ken G Hardware configurable CPU with high availability mode
US7324913B2 (en) * 2006-02-01 2008-01-29 International Business Machines Corporation Methods and apparatus for testing a link between chips

Also Published As

Publication number Publication date
EP1591866B1 (de) 2007-11-14
US20050251703A1 (en) 2005-11-10
DE602005003258D1 (de) 2007-12-27
EP1591866A1 (de) 2005-11-02
US7797574B2 (en) 2010-09-14
FR2869430A1 (fr) 2005-10-28

Similar Documents

Publication Publication Date Title
DE69910549T2 (de) Verfahren zur datensicherung welches einen krypto-algorithmus verwendet
DE2615861C3 (de) Schaltungsanordnung zur Prüfung von Programmen
DE69906022T2 (de) Datenverarbeitungsanlage
DE10000503A1 (de) Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
DE102014002473A1 (de) System und verfahren zur erhöhung der lockstep-kern-verfügbarkeit
EP3218894A1 (de) Verfahren zum testen und zum härten von softwareapplikationen
EP1611510B1 (de) Kontrollierte ausführung eines für eine virtuelle maschine vorgesehenen programms auf einem tragbaren datenträger
EP0981115B1 (de) Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
DE102014214792A1 (de) Vorrichtung und Verfahren zum Zugreifen auf einen verschlüsselten Speicherabschnitt
DE602005003258T2 (de) Kontrolle der Ausführung eines Algorithmuses durch eine integrierte Schaltung
DE102009007246A1 (de) Pseudozufallszahlengenerator und Verfahren zum Erzeugen einer Pseudozufallszahlenbitsequenz
DE19626972A1 (de) Verfahren und Vorrichtung zur vorläufigen Freigabe für die Anwendung eines von einer elektronischen Kassette geschützten Programms
WO1996028795A1 (de) Chipkarte mit geschütztem betriebssystem
DE102018213618A1 (de) Kryptografiemodul und Betriebsverfahren hierfür
EP1444700A2 (de) Speichertest
DE102019118703A1 (de) System und Verfahren zum kontinuierlichen Verifizieren der Bauelementzustandsintegrität
DE69934707T2 (de) Gegenmassnahmenvorrichtung in einem elektronischen bauteil um einen krypto-algorithmus mit geheimschlüssel durchzuführen
EP3804209B1 (de) Verfahren mit safe-error-abwehrmassnahme
EP2545483A1 (de) Ausspähungsschutz bei der ausführung einer operationssequenz in einem tragbaren datenträger
DE102012015158A1 (de) Gegen Ausspähen geschützte kryptographische Berechnung
DE102013108073B4 (de) Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
DE10307797B4 (de) Vorrichtung und Verfahren zum Ermitteln einer Unregelmäßigkeit in einem Ablauf eines Nutzprogramms
DE102015209120A1 (de) Recheneinrichtung und Betriebsverfahren hierfür
DE102019003673B3 (de) Seitenkanalsichere Implementierung
DE102014000328A1 (de) Verfahren zur Absicherung eines Funktionsprozesses in einem Mikroprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition