DE60005311T2 - Verfahren und vorrichtung zur minimalisierung differentieller stromverbrauchsangriffe - Google Patents

Verfahren und vorrichtung zur minimalisierung differentieller stromverbrauchsangriffe Download PDF

Info

Publication number
DE60005311T2
DE60005311T2 DE60005311T DE60005311T DE60005311T2 DE 60005311 T2 DE60005311 T2 DE 60005311T2 DE 60005311 T DE60005311 T DE 60005311T DE 60005311 T DE60005311 T DE 60005311T DE 60005311 T2 DE60005311 T2 DE 60005311T2
Authority
DE
Germany
Prior art keywords
instructions
value
destination address
addresses
address
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.)
Expired - Lifetime
Application number
DE60005311T
Other languages
English (en)
Other versions
DE60005311D1 (de
Inventor
Farhad Pezeshki
J. Robert LAMBERT
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.)
Certicom Corp
Original Assignee
Certicom Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=4163171&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60005311(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Certicom Corp filed Critical Certicom Corp
Publication of DE60005311D1 publication Critical patent/DE60005311D1/de
Application granted granted Critical
Publication of DE60005311T2 publication Critical patent/DE60005311T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • G06F21/755Protecting 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 with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • G06K19/07363Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7242Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Diese Erfindung betrifft Verschlüsselungssysteme und insbesondere ein Verfahren und eine Vorrichtung zur Minimierung erfolgreicher Stromanalyseangriffe auf Prozessoren.
  • HINTERGRUND DER ERFINDUNG
  • Verschlüsselungssysteme verdanken ihre Sicherheit im Allgemeinen der Tatsache, dass ein besonderes Stück an Information geheim gehalten wird, ohne, was beinahe unmöglich ist, das Programm bekannt zu geben. Diese geheime Information muss im Allgemeinen innerhalb einer sicheren Grenze gespeichert werden, was es einem Angreifer erschwert, direkten Zugriff dazu zu bekommen. Es sind jedoch verschiedene Programme oder Angriffe ausprobiert worden, um an die geheime Information zu gelangen. Besonders gefährdet sind tragbare Verschlüsselungs-Token, einschließlich sog. smart Cards und dergleichen. Zu den Angriffen der jüngeren Vergangenheit, die auf diese besonders anfälligen Vorrichtungen unternommen wurden, gehört die einfache Stromanalyse, die differentielle Stromanalyse, die differentielle Stromanalyse höherer Ordnung und andere verwandte Verfahren. Diese technisch hochkomplizierten und extrem leistungsfähigen Analysewerkzeuge können von einem Angreifer verwendet werden, um aus Verschlüsselungsvorrichtungen geheime Schlüssel zu extrahieren. Es hat sich gezeigt, dass diese Angriffe rasch eingesetzt und unter Verwendung allseits verfügbarer Hardware implementiert werden können. Die für diese Angriffe benötigte Zeit hängt von der An des Angriffs ab und variiert ein wenig in Abhängigkeit der Vorrichtung. Es hat sich beispielsweise gezeigt, dass ein einfacher Stromangriff (SPA) üblicherweise ein paar Sekunden pro Karte in Anspruch nimmt, wohingegen die differentiellen Stromangriffe (DPA) mehrere Stunden in Anspruch nehmen können.
  • Verschlüsselungsoperationen werden in einem sequentiell betriebenen Prozessor durchgeführt, indem eine Folge Fundamentoperationen durchgeführt wird, von denen jede ein deutliches Taktmuster erzeugt. Langwierige, jedoch sorgfältige Analysen von Ende-zu-Ende Stromwellenformen können das System dieser Fundamentoperationen, die auf jedes Bit eines geheimen Schlüssels angewendet werden, zerlegen und somit analysiert werden, um den gesamten geheimen Schlüssel, den das System umfasst, herauszufinden.
  • Bei den einfachen Stromanalyseangriffen (SPA) auf smart Cards und andere sichere Token misst ein Angreifer direkt die Veränderungen des Stromverbrauchs des Tokens über die Zeit. Die Menge an verbrauchtem Strom variiert in Abhängigkeit der ausgeführten Mikroprozessorbefehle. Es kann eine umfangreiche Berechnung, wie beispielsweise elliptische Kurvenadditionen (EC) in einer Schleife und DES-Rundungen (Datenverschlüsselungsstandard), etc., identifiziert werden, da die mit einem Mikroprozessor durchgeführten Operationen während verschiedener Abschnitte dieser Operationen merklich variieren. Indem der Strom und die Spannung mit einer höheren Rate abgetastet wird, d.h. höhere Auflösung, können einzelne Befehle abgeleitet werden.
  • Der differentielle Stromanalyseangriff (DPA) ist ein leistungsfähigerer Angriff als der SPA und ist wesentlich schwieriger zu verhindern. In erster Linie verwendet der DPA statistische Analysen und Fehlerkorrekturverfahren, um Information zu extrahieren, die mit geheimen Schlüsseln korreliert sein können, wohingegen die SPA-Angriffe in erster Linie eine visuelle Kontrolle verwenden, um relevante Stromschwankungen zu identifizieren. Der DPA-Angriff wird in zwei Schritten durchgeführt. Der erste Schritt besteht darin, Daten zu erfassen, die die Änderung des Stroms, der von der Karte während der Ausführung einer Verschlüsselungsroutine verbraucht wird, wiederspiegeln. In dem zweiten Schritt werden die gesammelten Daten statistisch ausgewertet, um mit geheimen Schlüsseln korrelierte Informationen zu extrahieren. Eine detaillierte Analyse dieser Angriffe wird in dem Aufsatz von Paul Kocher mit dem Titel "Introduction to Differential Power Analysis and Related Attacks" beschrieben.
  • Bis dato sind verschiedene Verfahren ausprobiert worden, um diese Stromangriffe anzugehen. Diese umfassen Hardwarelösungen, wie beispielsweise das Bereitstellen von wohlgefilterten Stromversorgungen und physikalisches Abschirmen der Prozessorelemente. Dies ist jedoch im Falle von smart Cards und anderen sicheren Token nicht durchführbar. Die Anfälligkeiten auf DPA resultieren aus transistor- und schaltelektrischem Verhalten, das sich fortpflanzt, wodurch Logikgatter, Mikroprozessoroperationen und letztendlich die Softwarerealisierung enthüllt wird.
  • Bei der Softwarerealisierung von Verschlüsselungsroutinen, insbesondere auf smart Cards, sind Verzweigungspunkte im Programmfluss besonders anfällig für Stromanalysemessungen. Wo der Programmfluss einen Verzweigungspunkt erreicht, wird im Allgemeinen in Abhängigkeit eines gewissen Unterscheidungswertes V einer von zwei Zweigen des Programms ausgeführt. Um zwischen den zwei möglichen Fällen zu unterscheiden, wird V mit einem Schwellwert verglichen und als Ergebnis des Vergleichs wird ein Sprung zu einem von zwei Orten ausgeführt. Dies ist unter Bezugnahme auf die 1 erläutert, in der ein Flussdiagramm im Allgemeinen mit der Bezugsziffer 10 gezeigt ist, das die Realisierung eines üblichen bedingten Sprungs gemäß dem Stand der Technik zeigt. Ein bedingter Sprung implementiert im Allgemeinen eine "IF Bedingung THEN Anweisung1 ELSE Anweisung2"-Klausel. In diesem Falle zeigt das Flussdiagramm ein Szenarium, bei dem ein Unterscheidungswert V innerhalb eines Bereichs variiert und bei dem die Bedingung entweder ein Schwellwert TH ist, der von dem Unterscheidungswert V überschritten wird oder nicht. Der Schwellwert TH ist eine Zufallszahl zwischen einem oberen Grenzwert VMAX und einem unteren Grenzwert VMIN. In der 1 kann somit erkannt werden, dass wenn V < TH, dass das Programm dann die Anweisungen1 ausführt oder wenn V ≥ TH ist, dass das Programm dann die Anweisungen2 ausführt. Dies kann für alle Werte von V zwischen VMIN und VMAX wiederholt werden.
  • Wie zuvor unter Verwendung eines einfachen Stromanalyseverfahrens erläutert wurde, ist es für einen Beobachter möglich, zu unterscheiden, ob der "IF"-Zweig oder der "ELSE"-Zweig ausgeführt wird. Dabei wird jedoch angenommen, dass die Anweisungen1 und die Anweisungen2 aus zwei identischen Anweisungssätzen bestehen, die unterschiedlichen Zwecken dienen. Die Energie der Stromverbrauchmessungen kann bei einigen smart Cards verraten, welcher Zweig gewählt wurde. In einigen Fällen können auf dem Chip Statusflags gesetzt oder zurückgesetzt werden. Diese Flags können ebenso für SPA verwendet werden.
  • Es sind Verfahren vorgeschlagen worden, um ladefähigen Code gegen Kopieren zu schützen.
  • Das US-Patent mit der Nummer 5,675,645 lehrt das Schützen ausführbarer Programme gegen Kopieren. Das Verfahren beugt unerlaubtem Kopieren von Software vor, indem es Verzweigungsziele durch verschlüsselte (oder anderweitig ungültige) Daten ersetzt, wobei zur Ausführungszeit das Vorhandensein eines Mechanismus erforderlich ist, der die Originaladressen wiederherstellt. Diese Programme werden beispielhaft als Videospielkassetten mit in einem ROM-Speicher gespeicherter Software beschrieben.
  • Die WO 98 00771 lehrt das Verändern von Softwareprodukten, so dass sie, während deren Verwendung auf bestimmte User begrenzt ist, frei verteilt werden können. Das Verfahren ersetzt die Adressen in Subroutineaufrufen mit ungültigen Adressen und speichert die gültigen Orte zur separaten berechtigten Wiedergewinnung extern.
  • Das US-Patent mit der Nr. 4,519,0336 lehrt, wie man User am Kopieren von Softwareprogrammen hindert. Das Verfahren modifiziert die Adressen, die den Bussen zugeordnet sind, und korrigiert sie dann, bevor sie tatsächlich verwendet werden.
  • Es besteht somit der Bedarf nach einem System, das die Gefahr eines erfolgreichen Stromanalyseangriffs reduziert und das insbesondere bei gängigen Hardwarekonfigurationen anwendbar ist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist ein Ziel dieser Erfindung, ein Verfahren zur Verfügung zu stellen, um Stromanalyseangriffe auf Prozessoren zu minimieren.
  • Die Erfindung wird in den beigefügten Ansprüchen dargelegt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese und weitere Merkmale der bevorzugten Ausführungsformen der Erfindung werden in der folgenden detaillierten Beschreibung, in der auf die beigefügten Zeichnungen Bezug genommen wird, offensichtlicher werden.
  • 1 ist eine schematische Darstellung einer bedingten Operation;
  • 2 ist ein Teil eines Computerprogramms gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 ist ein Teil eines Computerprogramms gemäß einer weiteren Ausführungsform der vorliegenden Erfindung;
  • 4 ist ein Teil eines Computerprogramms gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung; und
  • 5 ist ein Flussdiagramm, das eine weitere Ausführungsform der Erfindung zeigt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Unter Bezugnahme auf die 2 wird eine schematische Darstellung eines Verfahrens zum Maskieren bedingter Sprungweisungen in einem Computerprogramm gemäß einer Ausführungsform der vorliegenden Erfindung im Allgemeinen mit der Bezugsziffer 50 gezeigt. Wir nehmen an, dass die folgenden Codefragmente von einem Prozessor ausgeführt werden und dass ein Unterscheidungswert V sich innerhalb eines bekannten Bereichs ändert und dass die Bedingung entweder ein Schwellwert TH ist, der von dem Unterscheidungswert V überschritten wird oder nicht. Der Schwellwert TH ist eine Zufallszahl in dem bekannten Bereich, der einen oberen und einen unteren Grenzwert VMAX und VMIN besitzt. Gemäß einer verallgemeinerten Ausführungsform umfasst das Verfahren die Schritte, bei denen ein Ort für eine bedingte Sprungoperation identifiziert wird, und bei denen bei dem Ort ein Aufruf 52 zu einer Subroutine 54 bei dem Ort eingesetzt wird, wobei die Subroutine 54 Anweisungen umfasst, um die Rückgabeadresse der Subroutine in einen von zwei Programmzweigen zu ändern, um als Antwort auf das Ergebnis eines Vergleichs des Unterscheidungswertes V mit dem Schwellwert Zweigungsanweisung1 oder Zweigungsanweisung2 ausführen.
  • Wie in der 2 erkannt werden kann, ist der Ort des ersetzten bedingten Sprungs mit dem Codeblock a gekennzeichnet. Die Subroutine ist als IRRITATE_1 (54) gekennzeichnet und umfasst die Codeblocks, die mit b, c, d und e gekennzeichnet sind. Der Codeblock c umfasst erste und zweite Sektionen 56 und 58. Die Startadresse der zweiten Sektion 58 ist vorbestimmt und ist mit dem Wert KNOWN_DISPLACEMENT gekennzeichnet. Die Startadresse der ersten Sektion 56 wird dann durch die Differenz aus KNOWN_DISPLACEMENT und dem oberen Grenzwert des Unterscheidungswertes V bestimmt. Die erste Sektion 56 besteht aus einer Folge unbedingter Sprünge zu einer Adresse L1 und die zweite Sektion 58 besteht aus einer Folge unbedingter Sprünge zu einer Adresse L2. Die Orte L1 und L2 umfassen einen Code, um mit dem Programmablauf zurückzuspringen, um Anweisungen1 und Anweisungen2 auszuführen. Der Codeblock b, der in der Subroutine IRRITATE_1 umfasst ist, umfasst einen Code, um eine Differenz aus der KNOWN_DISPLACEMENT-Adresse und dem THRESHOLD [SCHWELLWERT] zu berechnen. Die resultierende Adresse wird dann zu dem Unterscheidungswert V hinzuaddiert, um in einer der Sektionen 56 oder 58 einen Zieladressenort abzuleiten.
  • Wie in Block a erkannt werden kann, wird der Unterscheidungswert V konserviert, während die Subroutine aufgerufen wird, die wiederum keine bedingten Sprünge umfasst. In dieser Subroutine ändern wir die Rückgabeadresse der Subroutine (die in dem Stag ruht) in Abhängigkeit, ob V unterhalb oder oberhalb von TH liegt, in der Weise, dass das Programm nach Rückkehr aus der Subroutine in dem erwünschten Zweig mit der Ausführung fortfährt.
  • Eine Adressierungsart, die als erweiterte Adressierung bekannt ist, wird verwendet, um die Zieladresse zu bestimmen. Mit erweiterter Adressierung wird die Adresse, bei der die Ausführung des Programms fortgesetzt werden muss, als die Summe aus dem Inhalt zweier Register berechnet. Beispielsweise bedeutet JMP @A+DPTR in der Assemblersprache der Intel 8051-Familie, dass die Adresse, bei der die Programmausführung fortzusetzen ist, berechnet wird, indem der Inhalt des Akkumulators A und des Datenadressregisters DPTR zusammenaddiert wird. Andere Prozessoren können ähnliche Mechanismen zum Adressieren unterstützen. Die in der 2 gezeigten Codefragmente erläutern das Verfahren. Um auf die Zeilen dieser Codefragmente Bezug zu nehmen, verwenden wir Bezeichnungen, die aus einem Buchstaben und einer Zahl bestehen. Um dieses Verfahren zu implementieren, müssen wir daher angeben:
  • a) Die Adresse, bei der sich der Block des Codes 56 befindet. Das wäre die Adresse der ersten JMP L1;
  • b) den Bereich des Unterscheidungswertes V; und
  • c) den maximalen Wert des zufälligen Schwellwertes TH. Dieser maximale Wert oder der davon abgeleitete Wert ist, wird die Größe des Codeblocks bestimmen, der aus den JMP L1 und JMP L2 Anweisungen besteht.
  • Der Funktionsablauf der Codefragmente, die in der 2 dargestellt sind, werden im Folgenden erläutert. Die Codefragmente können innerhalb einer Schleife angeordnet sein, die in einem gegebenen Iterationsbereich der Schleife nacheinander den Wert von V ändert. Beispielsweise kann V der Wert des Schleifenzählers sein. Ziel ist es , die Ausführung bei der Marke DO_REAL, Zeile d1, fortzusetzen, solange V<THRESHOLD und für V >= THRESHOLD die Ausführung der Anweisungen bei der Marke DO_ VOID, Zeile e1, fortzusetzen.
  • Wie bereits zuvor erwähnt, ist der THRESHOLD ein Zufallswert innerhalb des bekannten Bereichs von Vmin und Vmax. In Zeile a1 wird der Unterscheidungswert V in dem Akkumulator des Prozessors gespeichert und die Subroutine IRRITATE_1 wird in Zeile a2 aufgerufen. Die Rückgabeadresse aus dieser Subroutine wird Zeile a3 sein, die von dem Prozessor automatisch in dem Stack gespeichert wird.
  • Die KNOWN_DISPLACEMENT in Zeile b1 ist ein konstanter Wert, der den Anfangsort der zweiten Sektion 58 bestimmt und die Adresse der Zeile c9 angibt. Somit ist KNOWN_DISPLACEMENT-Vmax die Adresse der Zeile cl, der Anfangsort der ersten Sektion 56.
  • In Block b wird in Zeile b1 der Wert von KNOWN_DISPLACEMENT in einem Register gespeichert. Anschließend wird in Zeile b2 das Register mit der Differenz aus KNOWN DISPLACEMENT und THRESHOLD aktualisiert. Diese Differenz wird in Zeile b3 nach DPTR verschoben. Somit umfasst DPTR in Block c die Adresse einer der Zeilen c1 bis c8. Beispielsweise würde für THRESHOLD=3 DPTR auf Zeile c6 zeigen. Als nächstes sei angenommen, dass sich V und damit der Inhalt des Akkumulators von 0 (Vmin) bis 7 (Vmax) verändern kann. Da DPTR sich dann zwischen den Adressen c1 und c8 ändern kann, kann sich die in Zeile b4 berechnete Adresse @A+DPTR von der Adresse der Zeile c6 bis c12 so ändern, wie V sich von 0 bis 7 ändert. Somit werden für V<3 die JMP L1-Anweisungen in der ersten Sektion ausgeführt und für V>=3 werden die JMP L2-Anweisungen in der zweiten Sektion ausgeführt.
  • Die Marken L1 und L2 zeigen auf Adressen, die sich bei den Zeilen c17 und c21 befinden. In den Zeilen c17 bis c19 wird die Rückgabeadresse der Subroutine IRRITATE_1 abgefragt und so verändert, dass der Adresszähler nach Rückkehr aus der Subroutine auf die Zeile a3 zeigt. In den Zeilen c21 bis c23 wird ebenfalls die Rückgabeadresse der Subroutine IRRITATE_1 abgefragt und so verändert, dass der Adresszähler nach Rückkehr aus der Subroutine auf die Zeile a4 zeigt. Die einfachen Sprunganweisungen in Zeile a3 und a4 Es mag erkannt werden, dass die eigentlich vorzunehmende Unterscheidung zwischen den zwei Zweigen sich in den Zeilen c18 und c22 entscheidet, wo die abgefragte Subroutinerückgabeadresse in die entsprechende Zeile in Block a umgewandelt wird. Bei der vorliegenden Ausführungsform wurden Werte 0 und 1 ausgewählt, da die Umleitungssprunganweisungen direkt nach der Aufrufanweisung zu der Subroutine IRRITATE_1, in den Zeilen a3 und a4 angeordnet waren. Bei anderen Realisierungen können andere Werte mit gleicher Anzahl von 1-en in ihrer Binärdarstellung verwendet werden, so dass für einen Angreifer bei den Additionsoperationen in den Zeilen c18 und c22 ein der Unterschied nicht zu unterscheiden ist. In diesem Falle würde eine entsprechende Anzahl von NOP's (Nulloperationen) zu dem Codeblock a hinzuaddiert werden, um die Rückgabeadressen anzupassen.
  • Ferner sollten die Sprunganweisungen in den Zeilen a3 und a4, die den Programmablauf zu den Anweisungen1 und Anweisungen2 umleiten, bei Adressen mit der selben Anzahl von 1-en in Ihrer Binärdarstellung platziert werden. Dies würde zu homogenem Energieverbrauch des Adressbusses führen, während diese zwei unterschiedlichen Orte adressiert werden. Dieselbe Vorsichtsmaßnahme betrifft die Zeilen d1 und e1, den Anfangsort der Anweisungen1 und Anweisungen2. Darüber hinaus sollte in Zeile b2 besondere Aufmerksamkeit der Wahl der Werte THRESHOLD und KNOWN DISPLACEMENT geschenkt werden, um Veränderungen der Flags in dem Prozessorstatuswort zu vermeiden, während die SUB-Anweisung ausgeführt wird.
  • Mit Bezugnahme auf die 3 wird eine zweite Ausführungsform der vorliegenden Erfindung im Allgemeinen mit der Bezugsziffer 100 gezeigt. Diese Ausführungsform verwendet ebenfalls wie zuvor beschrieben erweitertes Adressieren. Um das Verfahren zu erläutern, wird wiederum die Assemblersprache der Intel 8051-Prozessorfamilie verwendet. Der Klarheit halber werden die Symbole op1 bis op7 verwendet, um Programmanweisungen darzustellen. In dieser Ausführungsform ist der Unterscheidungswert V eher einer von zwei verschiedenen Wert Vmax und Vmin als ein Bereich von Werten. Somit besteht die Bedingung in diesem Falle darin, dass der Unterscheidungswert V der eine oder der andere der verschiedenen Werte Vmax oder Vmin ist. Wiederum ist bei einem bedingten Sprungort ein Aufruf zu einer Subroutine eingefügt, wobei die Subroutine Anweisungen umfasst, um die Rückgabeadresse der Subroutine in einen von zwei Programmzweigen zu ändern, um als Antwort auf den Unterscheidungswert V, der einer von zwei verschiedenen Wert Vmax oder Vmin ist, ZweigAnweisungen1 oder ZweigAnweisungen2 auszuführen.
  • Wie in der 3 erkannt werden kann, ist der Ort des bedingten Sprungs, der ersetzt wurde, mit Codeblock f gekennzeichnet. Die Subroutine wird als IRRITATE 2 (102) gekennzeichnet und umfasst als Block g und h gekennzeichnete Codeblocks. Der Codeblock h umfasst ebenfalls erste und zweite Sektionen 106 und 108. Jede der Sektionen umfasst eine Folge von Dummy-Operationen op1 bis op7, die in den Zeilen h1 bis h7 und in den Zeilen h12 bis h18 gezeigt sind. Jede der Sektionen wird mit einer Folge von Anweisungen abgeschlossen, um die Rückgabeadresse der Subroutine IRRITATE 2 abzufragen und sie so zu verändern, dass der Programmzähler nach Rückkehr aus der Subroutine auf die Zeile f4 oder f5 zeigen wird.
  • Die Zeilen f4 und f5 umfassen Sprünge zu einem der zwei Zweige, die als Block i und Block j gekennzeichnet sind und Anweisungen1 und Anweisungen2 umfassen.
  • Die Zieladresse besteht aus zwei Komponenten, nämlich dem Unterscheidungswert V oder einem aus V abgeleiteten Wert und einer Zufallszahl MASKED RANDOM, die in Zeile g1 addiert werden. Die Anfangsadresse der ersten und der zweiten Sektion werden so gewählt, dass diese Zieladresse entweder im Bereich der Zeilen hl bis h8 oder h12 bis h19 liegt. Da die zweite Komponente der Zieladresse eine Zufallszahl ist, wird eine zufällige Anzahl an Dummy-Operationen ausgeführt werden, bevor in den Zeilen h8 bis h10 (oder h19 bis h 21) die Rückgabeadresse der Subroutine IRRITATE 2 berechnet wird.
  • Wie in der vorigen Ausführungsform können die ADD-Werte in den Zeilen h9 und h20 gewählt werden, um das selbe Hamming-Gewicht (Anzahl an 1-en) mit entsprechender Anzahl von NOP-Anweisungen (Null-Operationen) zu besitzen, die Block f hinzuaddiert werden. Darüber hinaus können die Sprunganweisungen in den Zeilen f4 und f5 bei Adressen mit der selben Anzahl an Einsen platziert werden. Zusätzliche JMP-Anweisungen mit einem Ziel in dem selben Segment können ebenfalls zwischen den Zeilen h1 und h8 eingefügt werden.
  • Diese Ausführungsform verwendet somit anstatt bedingter Sprünge unbedingte Sprünge und fügt dem Code eine zufällige Anzahl an Dummy-Operationen hinzu. Die erstere Eigenschaft ist eine Gegenmaßnahme gegen SPA und die letztere erschwert DPA-Angriffe. Diese Ausführungsform fügt insbesondere eine zufällige Maske oder ein Rauschen im Programmausführungsweg hinzu, da der Sprung zu einer zufälligen Adresse innerhalb eines Segmentes eine Programmausführung mit einer zufälligen Anzahl an Operationen verursacht, bevor einer der Zweige ausgeführt wird. Jedes Mal, wenn einer der Zweige ausgeführt wird, variiert somit die Anzahl der Operationen zufällig, die von dem Prozessor ausgeführt wird, wodurch DPA-Angriffe erschwert werden.
  • Bei den obigen Ausführungsformen wird eine Subroutine verwendet, um den Programmablauf umzuleiten. In der 4 wird jedoch eine einfache Folge von Sprüngen verwendet. Die Erfindung ist somit nicht auf die gezeigten Ausführungsformen beschränkt.
  • Mit Bezugnahme auf die 5 wird eine Ausführungsform eines Verfahrens beschrieben, das nicht von der vorliegenden Erfindung, wie sie beansprucht wird, erfasst wird. Das Verfahren zum Maskieren eines privaten Schlüssels oder eines Geheimen, der in einer Verschlüsselungsoperation verwendet wird, ist im Allgemeinen mit der Bezugsziffer 200 gezeigt. Das Verfahren umfasst die Schritte, bei denen der Schlüssel in mehrere Teile aufgeteilt und jeder Teil mit einem zufälligen Wert Modulo n kombiniert wird (wobei n die Punktzahl einer elliptischen Kurve ist), um einen neuen Teil abzuleiten, so dass die neuen Teile kombiniert werden, um dem ursprünglichen Wert des privaten Schlüssels zu entsprechen, und jeder der einzelnen Teile in der Operation verwendet wird.
  • Wie in der 5 dargestellt, ist der Verschlüsselungsprozessor mit dem öffentlichen Schlüssel oder dem geheimen Wert d initialisiert. Bei der Berechnung eines öffentlichen Schlüssels Q = dP wird der geheime Schlüssel d normalerweise mit dem Punkt P kombiniert, um dP abzuleiten. Der Wert d wird in eine Anzahl von Teilen aufgeteilt, wie beispielsweise d = b10 + b20.
  • In einem ersten Schritt werden die bi's b1 = b10 und b2 = b20 so initialisiert, dass d = b10 + b20. Diese Werte b1 und b2 werden anstelle von d gespeichert. Alternativ kann bei Bedarf auch der Wert b gespeichert werden, jedoch kann dies im Falle einer smart Card, bei der der Speicher begrenzt ist, nicht wünschenswert sein.
  • In einem nächsten Schritt wird eine Zufallszahl p erzeugt und die Werte b1 und und b2 werden wie folgt aktualisiert: b1 = b1 + π mod n b2 = b2 – π mod n
  • Die aktualisierten Werte von b1 und b2 werden gespeichert. Die Berechnung wird dann wie folgt unter der Verwendung der Komponenten b1 und b2 auf den Punkt P angewendet: dP mod n = b1P + b2P mod n Unter der Annahme, dass der Wert n für jede Sitzung zufällig erzeugt wird, ist der Angreifer somit wahrscheinlich nicht in der Lage, eine voraussagbare Energiesignatur zu beobachten. Bei einer üblichen Anwendung der vorliegenden Erfindung besitzt eine Signaturkomponente die Form: s = ae + k (mod n) wobei:
    P ist ein Punkt auf der Kurve, der ein vorbestimmter Parameter des Systems ist;
    k ist ein zufälliger Integerwert, der als kurzfristiger privater oder Sitzungsschlüssel gewählt wurde;
    R = kP ist der zugehörige kurzfristige öffentliche Schlüssel;
    a ist der langfristige private Schlüssel des Senders;
    Q = aP ist der zugehörige öffentliche Schlüssel des Senders;
    e ist ein sicherer Hash einer Nachricht m und des kurzfristigen öffentlichen Schlüssels
    R wie beispielsweise die SHA-1 Hash-Funktion; und n ist die Ordnung der Kurve.
  • Der Sender sendet dem Empfänger eine Nachricht mit m, s und R und die Signatur wird verifiziert, indem der Wert R' = (sP-eQ), der R entsprechen sollte, berechnet wird.
  • Wenn sich die berechneten Werte entsprechen, dann ist die Signatur verifiziert. In dem obigen Beispiel können beide der geheimen Schlüssel maskiert werden.

Claims (9)

  1. Verfahren zum Maskieren eines bedingten Sprungvorgangs (f) in einem Verschlüsselungsprozessor, der zum Ausführen einer Folge von Anweisungen programmiert ist, wobei das Verfahren dadurch gekennzeichnet ist, dass der Verzweigungspunkt der Ausführung durch Beurteilen eines Unterscheidungswertes (V) als einer von zwei getrennten Werten (Vmax, Vmin) ermittelt wird, wobei das Verfahren ferner die folgenden Schritte umfasst: (a) Ermitteln eines Ortes eines bedingten Sprungs in einem Programm; und (b) Einfügen von Prozessoranweisungen (f) an dem genannten Ort, um die Programmausführung zu einem von zwei Verzweigungspunkten (i, j) zu leiten und um eine Zieladresse (g) von dem genannten Unterscheidungswert (V) und eine Basisadresse abzuleiten, die von einer Zufallszahl (MASKED_RANDOM) gebildet wird, wobei für jede Beurteilung des genannten Unterscheidungswertes (V) eine andere Zah1 von Anweisungen für jeden bedingten Sprung ausgeführt wird.
  2. Verfahren nach Anspruch 1, bei dem der genannte Unterscheidungswert (V) mit der genannten Zufallszahl (MASKED_RANDOM) kombiniert wird, so dass eine Zufallszahl von Anweisungen bei jeder bedingten Beurteilung hinzugefügt wird.
  3. Verfahren nach Anspruch 1, bei dem die genannten eingefügten Anweisungen Aufrufe an jeweilige Subroutinen (h) beinhalten, wobei die genannten Subroutinen (h) Anweisungen zum Ändern der Rückgabeadresse der Subroutinen zu dem genannten einen von zwei Verzweigungspunkten (i, j) beinhaltet.
  4. Verfahren nach Anspruch 1, bei dem die genannte Zieladresse aus dem genannten Unterscheidungswert V und der genannten Zufallszahl (MASKED_RANDOM) besteht.
  5. Verfahren nach Anspruch 4, bei dem die genannte Zieladresse mit Hilfe eines erweiterten Adressiermodus des genannten Prozessors errechnet wird.
  6. Verfahren zum Maskieren eines bedingten Sprungvorgangs (a) in einem Verschlüsselungsprozessor, der zum Ausführen einer Folge von Anweisungen programmiert ist, wobei das Verfahren dadurch gekennzeichnet ist, dass die Ausführungsverzweigung durch Vergleichen eines Unterscheidungswertes (V) mit einem Referenzwert (THRESHOLD) ermittelt wird, wobei das Verfahren die folgenden Schritte umfasst: a) Assoziieren jedes der Verzweigungspunkte (d, e) mit einem jeweiligen Satz von Adressen (56, 58); b) Errechnen einer Zieladresse (b) von dem Unterscheidungswert (V) und dem genannten Referenzwert (TRESHOLD), wobei sich die genannte Zieladresse in einer aus den genannten Sätzen von Adressen (56, 58) befindet; und c) Befolgen der Anweisung an der Zieladresse, wobei die genannte Anweisung (JMP L1, JMP L2) die Programmausführung zu dem Verzweigungspunkt (d, e) leitet, der mit der genannten einen aus den genannten Sätzen von Adressen (56, 58) assoziiert ist.
  7. Verfahren nach Anspruch 6, wobei jeder Satz von Adressen (56, 58) eine Mehrzahl von Adressen beinhaltet.
  8. Verfahren nach Anspruch 6, wobei die genannten Anweisungen an jeder genannten Zieladresse in einem Satz identische Anweisungen umfassen, die jeweils die Ausführung zu dem genannten mit dem Satz assoziierten Verzweigungspunkt (d, e) leiten.
  9. Verfahren nach Anspruch 6, bei dem die genannte Zieladresse mit Hilfe eines erweiterten Adressiermodus des genannten Prozessors ermittelt wird.
DE60005311T 1999-01-11 2000-01-11 Verfahren und vorrichtung zur minimalisierung differentieller stromverbrauchsangriffe Expired - Lifetime DE60005311T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CA2258338 1999-01-11
CA002258338A CA2258338C (en) 1999-01-11 1999-01-11 Method and apparatus for minimizing differential power attacks on processors
PCT/CA2000/000021 WO2000042511A1 (en) 1999-01-11 2000-01-11 Method and apparatus for minimizing differential power attacks on processors

Publications (2)

Publication Number Publication Date
DE60005311D1 DE60005311D1 (de) 2003-10-23
DE60005311T2 true DE60005311T2 (de) 2004-06-24

Family

ID=4163171

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60005311T Expired - Lifetime DE60005311T2 (de) 1999-01-11 2000-01-11 Verfahren und vorrichtung zur minimalisierung differentieller stromverbrauchsangriffe
DE60041285T Expired - Lifetime DE60041285D1 (de) 1999-01-11 2000-01-11 Verfahren zur Maskierung eines privaten Schlüssels zur Durchführung einer kryptographischen Operation

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60041285T Expired - Lifetime DE60041285D1 (de) 1999-01-11 2000-01-11 Verfahren zur Maskierung eines privaten Schlüssels zur Durchführung einer kryptographischen Operation

Country Status (6)

Country Link
EP (2) EP1161726B1 (de)
JP (3) JP5059258B2 (de)
AU (1) AU1960600A (de)
CA (1) CA2258338C (de)
DE (2) DE60005311T2 (de)
WO (1) WO2000042511A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306400A (ja) * 2000-04-21 2001-11-02 Sharp Corp 半導体記憶装置、その制御装置、および電子機器
US9323955B2 (en) 2000-12-21 2016-04-26 Gemalto Sa Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system
FR2818772A1 (fr) * 2000-12-21 2002-06-28 Bull Cp8 Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes
JP4199937B2 (ja) * 2001-03-06 2008-12-24 株式会社日立製作所 耐タンパー暗号処理方法
FR2831739B1 (fr) * 2001-10-31 2005-07-22 Gemplus Card Int Procede de mise en oeuvre securisee d'un module fonctionnel, dans un composant electronique et composant correspondant
US7543159B2 (en) 2001-11-14 2009-06-02 International Business Machines Corporation Device and method with reduced information leakage
WO2003075506A1 (en) 2002-03-07 2003-09-12 Axalto Sa Method for making safe an electronic cryptography assembly with a secret key
DE10260801A1 (de) * 2002-12-23 2004-07-08 Infineon Technologies Ag Verfahren zum Ausführen eines bedingten Sprungbefehls
US20040162993A1 (en) * 2003-02-13 2004-08-19 Yannick Teglia Antifraud method of an algorithm executed by an integrated circuit
GB2399426A (en) * 2003-03-12 2004-09-15 Sharp Kk Fault detection in data processing apparatus
DE10310781A1 (de) * 2003-03-12 2004-09-30 Infineon Technologies Ag Verfahren zum Betreiben eines Mikroprozessors und eine Mikroprozessoranordnung
DE602005015157D1 (de) * 2004-05-11 2009-08-13 St Microelectronics Sa Verzweigungsschutz in einem Programm
WO2007000702A2 (en) 2005-06-29 2007-01-04 Koninklijke Philips Electronics N.V. Arrangement for and method of protecting a data processing device against a cryptographic attack or analysis
FR2888369B1 (fr) * 2005-07-11 2007-10-26 Oberthur Card Syst Sa Protection contre les attaques par generation de fautes sur les instructions de saut
DE102006014353B4 (de) * 2006-03-28 2007-11-22 Siemens Ag Verfahren zum sicheren Ermitteln von Daten
US11294633B2 (en) * 2017-01-20 2022-04-05 Nippon Telegraph And Telephone Corporation Secure computation system, secure computation device, secure computation method, and program
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN109493564B (zh) * 2018-11-28 2020-06-16 阿里巴巴集团控股有限公司 一种报警方法、装置及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4519036A (en) * 1983-01-05 1985-05-21 Emi Limited Program storage hardware with security scheme
US5627893A (en) * 1992-12-22 1997-05-06 Telstra Corporation Limited Cryptographic method
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
US6526456B1 (en) * 1996-07-01 2003-02-25 David Ian Allan Distribution and controlled use of software products
JP3625340B2 (ja) * 1996-09-19 2005-03-02 株式会社東芝 セキュリティシステム
JP3440763B2 (ja) * 1996-10-25 2003-08-25 富士ゼロックス株式会社 暗号化装置、復号装置、機密データ処理装置、及び情報処理装置
US5991415A (en) * 1997-05-12 1999-11-23 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for protecting public key schemes from timing and fault attacks
US6804782B1 (en) * 1999-06-11 2004-10-12 General Instrument Corporation Countermeasure to power attack and timing attack on cryptographic operations
JP4680876B2 (ja) * 2006-12-11 2011-05-11 ルネサスエレクトロニクス株式会社 情報処理装置及び命令フェッチ制御方法

Also Published As

Publication number Publication date
EP1365308B2 (de) 2017-06-21
DE60041285D1 (de) 2009-02-12
EP1161726B1 (de) 2003-09-17
JP2012198565A (ja) 2012-10-18
AU1960600A (en) 2000-08-01
WO2000042511A1 (en) 2000-07-20
EP1365308A2 (de) 2003-11-26
JP5059258B2 (ja) 2012-10-24
CA2258338C (en) 2009-02-24
JP2002535705A (ja) 2002-10-22
CA2258338A1 (en) 2000-07-11
EP1365308A3 (de) 2006-04-05
EP1161726A1 (de) 2001-12-12
EP1365308B1 (de) 2008-12-31
DE60005311D1 (de) 2003-10-23
JP2013138496A (ja) 2013-07-11

Similar Documents

Publication Publication Date Title
DE60005311T2 (de) Verfahren und vorrichtung zur minimalisierung differentieller stromverbrauchsangriffe
US8660264B2 (en) Method and apparatus for minimizing differential power attacks on processors
DE69603160T2 (de) Integrierte schaltung für smart-card
DE69127965T2 (de) Verteiltes benutzerauthentisierungsprotokoll
DE10319435A1 (de) Verfahren zur Verarbeitung von Daten
DE102016120558A1 (de) Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten
EP0981115B1 (de) Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
DE10223176B3 (de) Integrierte Schaltung mit sicherheitskritischen Schaltungskomponenten
DE60022840T2 (de) Verfahren zum sichern einer oder mehrerer elektronischer baugruppen, unter zuhilfenahme eines privatschlüssel-krypto-algorithmus, sowie elektronische baugruppe
EP2545483A1 (de) Ausspähungsschutz bei der ausführung einer operationssequenz in einem tragbaren datenträger
DE102005057104A1 (de) Smartcard und Steuerverfahren hierfür
EP2936728B1 (de) Verfahren zum betreiben eines portablen datenträgers sowie ein solcher portabler datenträger
EP3804209B1 (de) Verfahren mit safe-error-abwehrmassnahme
DE60220793T2 (de) Verwürfelung bzw. Verschleierung (Scrambling) einer Berechnung, bei welcher eine modulare Funktion zur Anwendung kommt
EP1506473B1 (de) Ausspähungsgeschützte modulare inversion
DE102017206648A1 (de) Obfuskation durch Soft-Computing-basierte Implementierung
EP1035683B1 (de) Verfahren zur Erhöhung der Datensicherheit von Implementierungen kryptographischer Algorithmen
EP2466782B1 (de) Verfahren zum geschützten Ausführen einer kryptographischen Berechnung
DE102004052196B4 (de) Ausspähungsgeschütztes Ausführen von Operationen unter Verwendung einer maskenunterstützenden Recheneinheit
DE102007046102B4 (de) Verfahren zum Schutz vor Veränderung von Daten und zur Authentifizierung des Datensenders bei der Datenübertragung durch Verwendung von Verschlüsselungsverfahren, bei denen mit Kenntnis von verschlüsselten und unverschlüsselten Daten andere Daten nicht mehr als zufällig richtig verschlüsselt werden können.
WO2004081971A2 (de) Verfahren zum betreiben eines mikroprozessors und eine mikroprozessoranordung
DE102005058275B4 (de) Verfahren und Vorrichtung zum Überprüfen einer sicheren Übermittlung eines bereitgestellten Dokumentes an ein Datenschutzmodul sowie Verfahren und Vorrichtung zum sicheren Überprüfen einer Authentizität eines empfangenen geschützten Dokumentes
DE102013014187A1 (de) Verfahren und Vorrichtung zur Übertragung einer Information
DE102021202376A1 (de) Datenspeichervorrichtung und Verfahren zum Schreiben von Informationen in eine Datenspeichervorrichtung
EP0977108A2 (de) Anordnung zur elektronischen Verarbeitung von Datensignalen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: KRAMER - BARSKE - SCHMIDTCHEN, 81245 MUENCHEN

8328 Change in the person/name/address of the agent

Representative=s name: MERH-IP MATIAS ERNY REICHL HOFFMANN, 80336 MUENCHE