DE60320016T2 - Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen - Google Patents

Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen Download PDF

Info

Publication number
DE60320016T2
DE60320016T2 DE60320016T DE60320016T DE60320016T2 DE 60320016 T2 DE60320016 T2 DE 60320016T2 DE 60320016 T DE60320016 T DE 60320016T DE 60320016 T DE60320016 T DE 60320016T DE 60320016 T2 DE60320016 T2 DE 60320016T2
Authority
DE
Germany
Prior art keywords
iteration
word
bit
register
quotient
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
DE60320016T
Other languages
English (en)
Other versions
DE60320016D1 (de
Inventor
Marc Joye
Karine Villegas
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.)
Gemplus SA
Original Assignee
Gemplus 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 Gemplus SA filed Critical Gemplus SA
Application granted granted Critical
Publication of DE60320016D1 publication Critical patent/DE60320016D1/de
Publication of DE60320016T2 publication Critical patent/DE60320016T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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
    • 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]
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Storage Device Security (AREA)
  • Digital Transmission Methods That Use Modulated Carrier Waves (AREA)
  • Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Circuits Of Receivers In General (AREA)
  • Complex Calculations (AREA)

Description

  • Die Erfindung betrifft ein Verfahren zur ganzen Teilung, das gegen die Angriffe von der Art mit verdecktem Kanal gesichert ist. Die Erfindung ist insbesondere für die Ausführung von Teilungsvorgängen in einem allgemeinen Geheimschriftverfahren interessant, zum Beispiel bei einem Geheimschriftverfahren mit einem Geheimschlüssel oder einem öffentlichen Schlüssel. Ein solches Geheimschriftverfahren kann zum Beispiel in elektronischen Vorrichtungen wie zum Beispiel Chipkarten eingesetzt werden.
  • Die Sicherheit der Geheimschriftverfahren liegt in ihrer Fähigkeit, vertrauliche Daten oder von den ihnen verarbeiteten vertraulichen Daten abgeleitete Daten verdeckt zu halten.
  • Ein feindlicher Benutzer kann eventuell Angriffe starten, mit denen insbesondere vertrauliche Daten entdeckt werden sollen, die in den Verarbeitungen enthalten und davon betroffen sind, die von der Rechenvorrichtung durchgeführt werden, die ein Geheimschriftverfahren ausführt.
  • Unter den bekanntesten Angriffen können die einfachen oder Differentialangriffe mit verdecktem Kanal genannt werden. Unter Angriff mit verdecktem Kanal wird ein auf einer von außerhalb der Vorrichtung meßbaren physikalischen Größe basierender Angriff verstanden, deren direkte Auswertung (einfacher Angriff) oder die Auswertung nach einer statistischen Methode (Differentialangriff) ermöglicht, Daten zu erkennen, die in den Verarbeitungen enthalten und davon betroffen sind, die in der Vorrichtung durchgeführt werden. Diese Angriffe sind insbesondere von Paul Kocher (Advances in Cryptology – CRYPTO'99, Band 1666 von Lecture Notes in Computer Science, Seiten 388–397, Springer-Verlag, 1999, offenbart worden.
  • Unter den physikalischen Größen, die zu diesen Zwecken eingesetzt werden können, können die Ausführungszeit, der Stromverbrauch, das von dem Teil der Komponente gestrahlte elektromagnetische Feld genannt werden, der für die Ausführung der Berechnung benutzt wird, und so weiter. Diese Angriffe beruhen auf der Tatsache, daß im Laufe der Ausführung eines Verfahrens die Behandlung eines Bits, das heißt seine Verarbeitung durch eine bestimmte Anweisung, einen besonderen Abdruck auf der betrachteten physikalischen Größe hinterläßt, und dies je nach dem Wert dieses Bits und/oder nach der Anweisung.
  • Die Geheimschriftverfahren, die als Basisoperation eine Operation mit modularer Exponentiation von der Art Y = XD benutzen, bei der X, Y und D ganze Zahlen sind, sind in den letzten Jahren sehr reichlich erforscht worden. Als Beispiele können das RSA Verfahren, der Schlüsselaustausch nach Diffie-Hellman und das DSA Signaturverfahren genannt werden. Beim Schutz dieser Verfahren gegen Angriffe mit verdeckten Kanälen sind signifikante Fortschritte erzielt worden. Im Dokument „Handbook of Applied Cryptography" ISBN 0-8493-8523-7 werden mehrere Verfahren von modularen Kürzungen und Teilungen beschrieben.
  • Demgegenüber ist über die Sicherung der Geheimschriftverfahren keinerlei Studie unternommen worden, die als Grundoperation eine ganze Teilung von der Art q = a div b und r = a mod b hat, wobei a und b zwei Operanden sind, q und r jeweils der Quotient, und der Rest der ganzen Teilung von a durch b. a und/oder b sind geheime Daten, zum Beispiel Elemente eines Schlüssels des Verfahrens. Zum Beispiel sind das Verfahren von Barrett (P. Barret „Implementing the RSA public key encryption algorithm an a standard digital signal processing", Band 263 von Lecture Notes in Computer Science, Seiten 311–323, Springer-Verlang, 1987), das Verfahren von Quisquater ( US Patent 5.166.978 , Nov. 92) oder das nach dem chinesischen Theorem der Reste eingesetzte RSA Verfahren (JJ Quisquater und C. Couvreur, „Fast decipherment algorithm for RSA public key cryptosystem", Electronic Letters, Band 18, Seiten 905–907, Oktober 1982) Geheimschriftverfahren, die eine ganze Teilung als grundlegende Operation benutzen.
  • Ein dafür bekanntes Verfahren, bei dem eine ganze Teilung eingesetzt wird, ist das sogenannte „Papier-Bleistift" Verfahren. Dieses Verfahren greift praktisch die Methode wieder auf, die bei einer von Hand ausgeführten Operation benutzt wird. Dieses Verfahren wird weiter unten angeführt.
  • Angesichts zweier Daten a = (am-1, ..., a0) mit m Bits und b = (bn-1, ..., b0) mit n Bits, n unter oder gleich m und bn-1γ0 berechnet das sogenannte „Papier-Bleistift" Teilungsverfahren den Quotienten q = a div b und den Rest r = a div b. Hierzu führt das Verfahren nacheinander mehrere Teilungen einer ganzen Zahl A mit n + 1 Bits durch. In der Praxis muß man 0 [A/b < 2 haben, was jedes Mal der Fall ist, wenn bn-1γ0 ist.
  • Der Rest r ist eine Zahl mit höchstens n Bits, da r < b. Der Quotient q ist seinerseits eine Zahl mit höchstens m – n + 1 Bits, da q = a div b[a div (bn-1·2n-1) = a div 2n-1 = (am-1, ..., an-1), denn b μ bn-1·2n-1 und (am-1, ..., an-1) eine Zahl mit m – n + 1 Bits ist. Am Ende des Teilungsverfahrens wird der Quotient q in den m – n + 1 niederwertigen Bits des Registers gespeichert, das ursprünglich die Zahl a enthält. Das höherwertige Bit des Rests r wird in einem Register mit 1 Bit gespeichert, das während der Rechnung als Übertrag (carry) benutzt wird, und die n – 1 niederwertigen Bits des Rests r werden in den n – 1 höherwertigen Bits des Registers gespeichert, das ursprünglich die Zahl a enthält.
  • Da mit der Basis 2 gearbeitet wird, hat das Bit des Quotienten der ganzen Teilung A div b nur zwei mögliche Werte: 0 oder 1. So besteht eine einfache Art für die Ausführung der Operation A div b darin, b von A zu subtrahieren und dann das Ergebnis zu testen: Wenn das Ergebnis von A – b positiv ist, dann ist A div b = 1, wenn das Ergebnis von A – b streng negativ ist, dann ist A div b = 0.
  • Das komplette Teilungsverfahren kann dann wie folgt geschrieben werden:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn01, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    A = (0, am-1, ..., am-n+1)
    Für j = 1 bis (m – n + 1), tippen:
    a <- SHLm+2(a, 1); σ <- Übertrag
    A <- SUBn(A, b); σ <- σ ODER Übertrag
    wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
    sonst 1sb(a) = 1
    Ende für
  • Verfahren 1
  • Bei diesem Verfahren und im Nachfolgenden werden folgende Bezeichnungen verwendet.
  • Das Symbol „<-" und die Bezeichnung y <- x. Die Bezeichnung wird benutzt, um das Laden des Inhalts eines Registers, das eine Größe x enthält, in das Register anzugeben, dessen Inhalt y genannt wird.
  • A ist ein Wort mit n Bits und entspricht dem Inhalt der n höherwertigen Bits des Registers, das ursprünglich die Größe a enthält. A wird natürlich bei jeder Iteration geändert.
  • σ gibt an, ob die Subtraktion falsch durchgeführt wurde oder nicht (das heißt, ob das Bit des Quotienten gleich 0 oder gleich 1 sein muß).
  • ¬σ ist die Ergänzung zu 1 (auch Negation genannt) der Variablen σ. VRAI (RICHTIG) ist eine Konstante und gleich 1 in einem Beispiel.
  • 1sb(a) ist das niederwertige Bit der Zahl a, wird auch das am wenigsten signifikante Bit von a genannt.
  • SHLm+1(a, 1) ist ein Vorgang der Verschiebung eines Bits nach links im Register mit m + 1 Bits, das die Größe a enthält, wobei das aus dem Register kommende Bit in der Variablen Übertrag gespeichert wird, und wobei ein Bit gleich 0 als niederwertiges Bit des Registers eingegeben wird, das ursprünglich die Größe a enthält.
  • ADDn(A, b) ist ein Vorgang der Addition der n Bits der Zahl b zu den n Bits des Wortes A. Es wird festgehalten, daß SHLn(a, 1) mit der Operation ADDn(a, a) gleichwertig ist. Natürlich wird die Addition ADDn(A, b) ausgeführt, indem in einem Additionskreis mit geeignetem Registerinhalt der Inhalt von zwei Registern addiert wird, die A beziehungsweise b enthalten.
  • SUBn(A, b) ist ein Vorgang der Subtraktion der Zahl b vom Wort A. Natürlich wird die Subtraktion SUBn(A, b) ausgeführt, indem in einem geeigneten Kreis der Inhalt eines die Größe b enthaltenden Registers vom Inhalt des das Wort A enthaltenden Registers subtrahiert wird.
  • Schließlich wird mit mißbräuchlicher Benutzung der Sprache, jedoch vor allem in der Sorge um Klarheit der gleiche Name verwendet, wenn von einem Register und seinem Inhalt gesprochen wird. Das Register A ist also eigentlich das Register, das die Größe A enthält.
  • Zusammengefaßt führt das Verfahren 1 die nachstehenden Schritte durch:
    • – Wenn a <- SHLm+1(a, 1) einen Übertrag erzeugt (σ = Übertrag = 1), bedeutet dies, daß am = 1 (vor der Verschiebung), und daß also b von A subtrahiert werden muß.
    • – Wenn am+1 = 0 (vor der Verschiebung), und wenn A <- SUBn(A, b) einen Übertrag erzeugt (Übertrag = 1), bedeutet dies, daß A – b μ 0 vor der Subtraktion ist, und b muß also von A subtrahiert werden.
    • – Wenn a <- SHLm+1(a, 1) keinen Übertrag erzeugt, und wenn A <- SUBn(A, b) auch keinen Übertrag erzeugt, (das heißt, wenn nach Aktualisierung von σ, σ falsch ist (oder ¬σ RICHTIG) ist, bedeutet dies, daß A – b < 0 vor der Subtraktion, und also, daß b nicht von A subtrahiert hätte werden sollen. In diesem Fall führt das Verfahren eine Additionsoperation A <- ADDn(A, b) aus, um den Wert von A wieder herzustellen.
  • Das Verfahren 1 ist empfindlich für Angriffe mit verdecktem Kanal. Beim Verfahren 1 wird in der Tat festgestellt, daß bei jeder Iteration je nach dem Wert von σ, das heißt je nach dem Wert des Bits des Quotienten, der bei der laufenden Iteration erzielt wird, eine Addition ADDn(a, b) durchgeführt wird oder nicht. Die Anzahl der im Laufe einer Iteration durchgeführten Operationen variiert also je nach dem Ergebnisbit, das bei der besagten Iteration erzielt wurde. Nun variiert der Stromverbrauch im Laufe jeder Iteration und/oder die Dauer jeder Iteration in Abhängigkeit von der Anzahl durchgeführter Operationen. Wenn zum Beispiel die Spur gemessen und untersucht wird, die die Komponente bei der Durchführung des Verfahrens hinterlassen hat, ist es möglich, Bit für Bit den Wert der Ergebnisbits zu bestimmen.
  • Ein anderes Verfahren, das ebenfalls für die Durchführung von ganzen Teilungen bekannt ist, ist eine Variante des „Papier-Bleistift" Verfahrens, das sogenannte Verfahren „ohne Wiederherstellung" (Non Restoring Binary Division Algorithm), das insbesondere in „J. J. F. Cavanagh, Digital Computer Arithmetic, Mac Grave-Rill Company, 1984" beschrieben wird.
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    σ' <- 1; A = (0, am-1, ..., am-n+1)
    Für j = 1 bis (m – n + 1), tippen:
    a <- SHLm+1(a, 1); σ <- Übertrag
    wenn (σ' = RICHTIG) dann A <- SUBn(A, b)
    σ <- σ ODER Übertrag
    sonst A <- ADDn(A, b)
    σ <- σ UND Übertrag
    wenn (σ = RICHTIG) dann 1sb(a) = 1
    σ' <- σ Ende für
    wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
    Ende für
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Verfahren 2
  • Im Vergleich zum Verfahren 1 benutzt dieses Verfahren eine neue Variable σ' zur Erhaltung des Werts σ aus der vorherigen Iteration. Hier wird je nach dem Wert von σ eine Addition oder eine Subtraktion durchgeführt. Anders ausgedrückt, wenn im Laufe einer Iteration b fälschlicherweise von A subtrahiert wird, wird der Wert von A im Laufe der folgenden Iteration wieder hergestellt und nicht mehr am Ende der laufenden Iteration, wie dies beim Verfahren 1 der Fall ist.
  • Welchen Wert auch immer σ im Laufe einer Iteration hat, führt das Verfahren bei jeder Iteration die gleiche Anzahl Operationen aus. Diese Vorsichtsmaßnahme reicht jedoch nicht aus, um das Verfahren vor den Angriffen mit verdecktem Kanal zu schützen. Bei jeder Iteration wird in der Tat ein Verschiebungsvorgang durchgeführt a <- SHLm+1(a, 1) und dann je nach dem Wert von σ eine Addition A <- ADDn(A, b) oder eine Subtraktion A <- SUBn(A, b).
  • Nun dauert die Durchführung einer Subtraktion länger und verbraucht mehr Energie als die Durchführung einer Addition. In der Tat umfassen die für den Einsatz des Verfahrens verwendeten Berechnungsmittel meistens keinen Subtraktionskreis. Der Subtraktionsvorgang wird durchgeführt, indem zuerst die Ergänzung von 2n von b, b bezeichnet, berechnet wird, und indem dann b zu A addiert wird, wobei der eventuelle Übertrag der Addition in der Variablen Übertrag gespeichert wird. Dieser Ausführungsmodus einer Subtraktion ist durch die Tatsache gerechtfertigt, daß man durch Definition von b, b + b = 2n hat. Man hat also A – b = A + b – 2n = A + b mod (2n), wobei mod (2n) eine Moduln-Kürzung 2n ist. In der Praxis sind also für die Durchführung einer Subtraktion zwei Operationen erforderlich, nämlich ein Verfahren mit Ergänzung auf 2n und eine Addition.
  • Da die bekannten Verfahren der ganzen Teilung nicht gegen Angriffe mit verdecktem Kanal geschützt sind, sind also alle Geheimschriftverfahren, die die bekannten Verfahren mit ganzer Teilung benutzen, nicht besser gegen solche Angriffe mit verdecktem Kanal geschützt.
  • Außerdem sind statistisch gesehen 50% der Bits des durch ein Teilungsverfahren erzielten Quotienten gleich 0, was bedeutet, daß statistisch gesehen das Verfahren jede zweite fälschlicherweise durchgeführte Subtraktion ausgleicht. Die Ausführungszeit des Verfahrens 1 ist also statistisch gesehen das 1,5-fache der Ausführungszeit des Verfahrens 2.
  • In Anbetracht der Probleme der gegenwärtigen Geheimschriftverfahren besteht ein wesentliches Ziel der Erfindung in einem neuen Verfahren zur Durchführung einer ganzen Teilung, die vor den Angriffen mit verdecktem Kanal geschützt sind.
  • Ein weiteres Ziel der Erfindung ist ein Verfahren zur Durchführung einer ganzen Teilung mit sehr geringer Ausführungszeit.
  • Und noch ein weiteres Ziel der Erfindung ist ein Verfahren zur Durchführung einer ganzen Teilung, in deren Verlauf nur das die ursprüngliche Größe a enthaltende Register verändert und durch den Quotienten und das Ergebnis ersetzt wird, wobei jedes andere Register des Speichers (und insbesondere das ursprünglich die Größe b enthaltende Register) am Ende der Durchführung des Verfahrens unverändert bleibt.
  • Im Hinblick auf dieses Hauptziel und diese Nebenziele schlägt die Erfindung ein Geheimschriftverfahren vor, in dessen Verlauf eine ganze Teilung von der Art q = a div b und r = a mod b durchgeführt wird, bei dem a eine Zahl mit m Bits ist, b eine Zahl mit n Bits mit n unter oder gleich m und bn-1 nicht null, wobei bn-1 das höherwertige Bit von b ist, nämlich ein Verfahren, in dessen Verlauf bei jeder Iteration einer Schleife mit Index i, der zwischen 1 und m – n + 1 variiert, eine teilweise Teilung eines Wortes A mit n Bits der Zahl a durch die Zahl b durchgeführt wird, um ein Bit des Quotienten q zu erzielen.
  • Erfindungsgemäß werden bei jeder Iteration ungeachtet des Werts des Bits des erzielen Quotienten die gleichen Operationen durchgeführt.
  • Bei dem erfindungsgemäßen Verfahren ist es somit nicht mehr möglich, die Bits des Ergebnisses ausgehend von der Spur zu bestimmen, die bei der Ausführung des erfindungsgemäßen Verfahrens hinterlassen wird.
  • Bei einem ersten Ausführungsmodus des erfindungsgemäßen Verfahrens wird bei jeder Iteration eine Operation mit Addition der Zahl b zum Wort A und eine Subtraktion der Zahl b vom Wort A durchgeführt.
  • Bei diesem ersten Ausführungsmodus umfaßt das Verfahren bevorzugt alle nachstehenden Schritte:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b,
    σ' <- 1; A = (0, am-1, ..., am-n+1)
    Für j = 1 bis (m – n + 1), do:
    a <- SHLm+1(a, 1); σ <- Übertrag
    A <- (σ')SUBn(A, b) + (¬σ')ADDn(A, b)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    1sb(a) <- σ
    σ' <- σ
    Ende für
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Bei diesem Ausführungsmodus bezeichnet die obige Variable Übertrag den Übertrag, der aus der Operation SUBn(A, b) resultiert, wenn σ' gleich 1 wert ist, und den Übertrag, der aus der Operation ADDn(A, b) resultiert, wenn σ' gleich 0 wert ist.
  • Bei einem zweiten Ausführungsmodus des erfindungsgemäßen Verfahrens wird bei jeder Iteration ein Vorgang mit Addition entweder der Zahl b oder einer zusätzlichen Zahl b der Zahl b mit dem Wort A ausgeführt.
  • Bei jeder Iteration wird bevorzugt auch eine Aktualisierung einer ersten Variablen (σ') je nach dem Bit des erzeugten Quotienten ausgeführt, wobei die besagte erste Variable (σ') angibt, ob bei der nachfolgenden Iteration die Zahl b oder die Zahl b zum Wort A addiert werden muß.
  • Bei diesem Ausführungsmodus umfaßt das Verfahren außerdem bevorzugt alle nachstehenden Schritte:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    A = (0, am-1, ..., am-n+1); σ' <- 1; b <- CPL2n(b)
    Für j = 1 bis (m – n + 1), do:
    a <- SHLm+1(a, 1); σ <- Übertrag
    daddr <– baddr + σ'(b addr – baddr)
    A <- ADDn(A, d)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    1sb(a) <- σ
    σ' <- σ
    Ende für
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Bei einem dritten Ausführungsmodus des erfindungsgemäßen Verfahrens wird bei jeder Iteration eine Operation mit Ergänzung auf 2n einer aktualisierten Größe (b oder b) oder einer fiktiven Größe (c oder c) durchgeführt, und dann eine Operation mit Addition der aktualisierten Größe mit dem Wort A.
  • Bei jeder Iteration wird bevorzugt auch eine Aktualisierung einer zweiten Variablen (δ) je nach dem Bit des erzeugten Quotienten ausgeführt, wobei die besagte zweite Variable (δ) angibt, ob bei der nachfolgenden Iteration die Operation mit Ergänzung auf 2n auf der aktualisierten Größe oder auf der fiktiven Große ausgeführt werden soll.
  • Bei jeder Iteration wird weiterhin bevorzugt auch die Aktualisierung einer dritten Variablen (β) ausgeführt, die angibt, ob die aktualisierte Größe gleich der Zahl b oder der zusätzlichen Zahl b ist.
  • Weiterhin bevorzugt umfaßt das Verfahren bei diesem Ausführungsmodus alle nachfolgenden Schritte:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    σ' <- 1; β <-1, γ <- 1; A = (0, am-1, am-n+1)
    Für j = 1 bis (m – n + 1), tippen:
    a <- SHLm+1(a, 1); σ <- Übertrag
    δ <- σ'/β
    daddr <– baddr + δ(caddr – baddr)
    d <- CPL2n(d)
    A <- ADDn(A, b)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    β <- ¬σ'; γ <- γ/δ; σ' <- σ
    1sb(a) = σ
    Ende für
    Wenn (¬β = RICHTIG) dann b <- CPL2n(b)
    Wenn (¬γ = RICHTIG) dann c <- CPL2n(c)
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Die Erfindung betrifft auch eine elektronische Komponente, die so programmierte Berechnungsmittel umfaßt, damit ein Verfahren wie oben beschrieben eingesetzt werden kann, wobei die Berechnungsmittel insbesondere eine Zentraleinheit umfassen, die einem Speicher zugeordnet ist, der mehrere Register zum Speichern der Daten a und b umfaßt.
  • Schließlich betrifft die Erfindung auch eine Chipkarte mit einer integrierten Schaltung wie oben beschrieben.
  • Die Erfindung wird besser verstanden werden, und weitere Merkmale und Vorteile werden sich bei der nachfolgenden Beschreibung von Ausführungsbeispielen von erfindungsgemäßen Verfahren für die ganze Teilung herausstellen.
  • Bei einem ersten Einsatzbeispiel der Erfindung wird ein gesichertes Verfahren gegen die Angriffe mit verdecktem Kanal ausgeführt, indem die Testoperationen (von der Art wenn ... dann ... wenn nein ...) des Verfahrens 2 und also die Folgen ihrer Anwesenheit unterbunden werden.
  • Erfindungsgemäß werden beim Verfahren 2 die Schritte wenn ... dann ... sonst durch die drei nachstehenden Schritte ersetzt:
    A <- σ'SUBn(A, b) + (¬σ')ADDn(A, b)
    σ <- σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    1sb(a) <- σ
  • Man erhält somit das nachstehende erfindungsgemäße Verfahren:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    A = (0, am-1, ..., am-n+1); σ' <- 1
    Für j = 1 bis (m – n + 1), tippen:
    a <- SHLm+1(a, 1); σ <- carry
    A <- (σ')SUBn(A, b) + (¬σ')ADDn(A, b)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    1sb(a) <- σ
    σ' <- σ
    Ende für
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Verfahren 3
  • Das Verfahren 3 ist dahingehend gleichwertig mit dem Verfahren 2, als es aus den gleichen Eingabedaten a und b das gleiche Ergebnis erzeugt. In der Tat, beim Verfahren 2, wenn σ' = 1, wird die Operation A <- SUBn(A, b) durchgeführt, und wenn σ' = 0, wird die Operation A <- ADDn(A, b) durchgeführt. Das gleiche trifft beim Verfahren 3 zu, da σ' = ¬(¬σ'). Ferner beim Verfahren 2, wenn σ' = 1, wird das Verfahren σ <- σ ODER Übertrag durchgeführt, und wenn σ' = 0, wird die Operation σ <- σ UND Übertrag durchgeführt. Dis kann in folgender Form geschrieben werden:
    σ <- (σ')(σ ODER Übertrag) + (¬σ')(σ UND Übertrag), was logisch gleichwertig ist mit
    σ <- (σ UND σ')/)(σ UND Übertrag)/σ' UND Übertrag)
  • Schließlich wird beim Verfahren 2 bei der Durchführung der Operation a <- SHLm+1(a, 1) auf 0 das niederwertige Bit von a festgelegt (anders ausgedrückt 1sb(a) = 0), dann am Ende der laufenden Iteration, wenn σ = 1, wird die Operation 1sb(a) = 1 durchgeführt, sonst, wenn σ = 0 ist, wird 1sb(a) nicht verändert. Die Operation kann also leicht ersetzt werden {wenn σ = 1, 1sb(a) = 1} durch die Operation 1sb(a) = σ bei beliebigem Wert von σ.
  • Das Verfahren 3 ist nicht nur gleichwertig mit dem Verfahren 2, sondern es ist auch sicher gegen Angriffe mit verdecktem Kanal. In der Tat enthält das Verfahren keinerlei Testoperation von der Art wenn ... dann ... sonst, und bei jeder Iteration werden die gleichen Operationen ungeachtet des verwendeten Bits der Eingabegröße und/oder des bei einer Iteration erzielten Ergebnisbits durchgeführt. Es ist also unmöglich, ausgehend von der von der Komponenten hinterlassenen Spur die einzelnen Iterationen zu trennen und die Bits der Eingabegröße und/oder der Ausgabegröße zu bestimmen.
  • Bei einem 2. Beispiel für den Einsatz der Erfindung wird das erfindungsgemässe Verfahren 3 geändert, indem außerdem die Ausführungszeit des Verfahrens begrenzt wird.
  • Wie schon weiter oben zu sehen war, wird für die Ausführung einer Operation Subtraktion A <- SUBn(A, b) in der Praxis eine Operation b = CPL2n(b) als Ergänzung zu 2n der Zahl b ausgeführt, und dann eine Operation Addition von der Art A <- ADDn(A, b).
  • Was beim Verfahren 3 bedeutet, daß bei jeder Iteration eine Operation mit Ergänzung auf 2n ausgeführt wird, und dies zusätzlich zu einer Operation Addition A <- ADDn(A, b) oder A <- ADDn(A, b ) erfolgt.
  • Zur Verringerung der Ausführungszeit wird die Anzahl Operationen mit Ergänzung auf 2n b <- CPL2n(b) begrenzt, es wird ein zusätzlicher Speicherplatz benutzt, um dort zu Beginn des Verfahrens den Wert von b zu speichern. Dann braucht nur noch b zu A hinzugefügt zu werden, um A <- SUBn(A, b) durchzuführen, oder b zu A hinzugefügt zu werden, um A <- ADDn(A, b) durchzuführen. Das ermöglicht auch, eine einzige Operation mit Addition pro Iteration durchzuführen, so daß die Ausführungsgeschwindigkeit noch erhöht wird.
  • Hier werden zwei Register b und b zum Speichern der Daten b beziehungsweise b benutzt, die baddr und b addr als Adresse haben. Mit d wird das Register bezeichnet, dessen Inhalt im Laufe einer gegebenen Iteration zum Inhalt des Registers A addiert wird, und seine Adresse wird daddr genannt. In der Praxis ist das Register d bei jeder Iteration entweder das b enthaltende Register oder das b enthaltende Register. Wie beim Verfahren 3 wird die Variable σ' dazu benutzt, um eine Spur dessen aufzubewahren, was im Laufe einer gegebenen Iteration stattgefunden hat, und um zu bestimmen, ob bei der nachfolgenden Iteration eine Addition oder eine Subtraktion durchgeführt werden muß. Wenn alles zusammengefaßt wird, wird schließlich das nachfolgende Verfahren erzielt:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    A = (0, am-1, ..., am-n+1); σ' <- 1; b <- CPL2n(b)
    Für j = 1 bis (m – n + 1), tippen:
    a <- SHLm+1(a, 1); σ <- Übertrag daddr <- baddr + σ'(b addr – baddr)
    A <- ADDn(A, d)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    1sb(a) <- σ
    σ' <- σ
    Ende für
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Verfahren 4
  • Bei einem dritten Beispiel für den Einsatz der Erfindung wird das erfindungsgemässe Verfahren 4 geändert, indem der für den Einsatz des Verfahrens benutzte Speicherplatz begrenzt wird.
  • Hierfür wird der ergänzende Wert b zu b, der aus der Operation CPL2n(b) hervorgeht, am Platz des ursprünglichen Werts b im gleichen Register gespeichert. Somit wird die Operation der Subtraktion ausgeführt, indem b durch seine Ergänzung b im gleichen Register ersetzt wird, und indem der Inhalt des besagten Registers zu A addiert wird.
  • Außerdem wird die Berechnung von nutzlosen Werten von b vermieden, (das ist der Fall, wenn zwei aufeinander folgende Iterationen j und j + 1 beide die gleiche Addition benutzen, nämlich A <- A + b und A <- A + b). Hierfür wird ein anderes Register c benutzt, dessen beliebiger oder fiktiver Inhalt durch seine Ergänzung auf 2n ersetzt wird, wenn es nicht notwendig ist, den Inhalt des ursprünglich b enthaltenden Registers zu ersetzen, (das heißt wenn zwei aufeinander folgende Iterationen entweder b oder b benutzen). Das Register c ist in der Praxis ein beliebiges Register des Speichers, es hat die gleiche Größe wie das b enthaltende Register, jedoch anders als die Register, die ursprünglich a oder b enthalten. Ferner kann das Register c für die Durchführung anderer Operationen benutzt werden. Das Register c enthält am Ende des Verfahrens der Erfindung seinen ursprünglichen Wert, das heißt denjenigen, den es vor der Durchführung des Verfahrens hatte. Der ursprüngliche Wert des Inhalts des Registers c ist vollkommen unerheblich, denn dieser Wert wird im Rahmen des erfindungsgemäßen Verfahrens nicht wirklich benutzt.
  • Mit daddr wird die Adresse des Registers bezeichnet, das den Wert enthält, der bei der laufenden Iteration durch seine Ergänzung auf 2n ersetzt werden wird: daddr ist entweder baddr, wenn der Inhalt des ursprünglich b enthaltenden Registers auf 2n ergänzt werden muß, oder andernfalls caddr. Mit d wird der Inhalt des Registers bezeichnet, dessen Adresse daddr lautet.
  • Es werden auch die Variable β und γ benutzt, um eine Spur des Zustands des Werts zu erhalten, der in den Registern enthalten ist, die sich an der Adresse baddr und caddr befinden. Dieser Zustand ist entweder der Originalwert oder der auf 2n ergänzte Originalwert. Es wird β = 1 gewählt (beziehungsweise γ = 1), wenn der an der Adresse baddr (beziehungsweise caddr) befindliche Wert der Originalwert ist, und β = 0 (beziehungsweise γ = 0), wenn der an der Adresse baddr (beziehungsweise caddr) befindliche Wert die Ergänzung auf 2n des Originalwerts ist. Die Variable σ' wird benutzt, um eine Spur des Werts der Variablen σ bei der vorausgegangenen Iteration zu haben. Wie vorher bedeutet σ' = 0, daß bei der vorausgegangenen Iteration eine unnötige Subtraktion (A <- SUBn(A, b) = ADDn(A, b) durchgeführt worden ist, und daß zum Ausgleich eine Operation mit Addition A <- ADDn(A, b) während der laufenden Iteration durchgeführt werden muß. Umgekehrt bedeutet σ' = 1, daß fälschlicherweise bei der vorausgegangenen Iteration keine Subtraktion durchgeführt worden ist, und daß bei der laufenden Iteration eine Subtraktion durchgeführt werden muß.
  • Folgende Datenwerte-Tabelle wird erzielt:
    Vorherige Werte Aktualisierte Werte
    σ' β γ β γ
    0 0 0 1 0
    0 0 1 1 1
    0 1 0 1 1
    0 1 1 1 0
    1 0 0 0 1
    1 0 1 0 0
    1 1 0 0 0
    1 1 1 0 1
  • Daraus wird abgeleitet:
    β <- ¬σ'
    γ <- γ/σ'/β
  • Wenn alles zusammengefaßt wird, erhält man schließlich das nachstehende Verfahren 5:
    Eingabe: a = (0, am-1, ..., a0)
    b = (bn-1, ..., b0)
    Ausgabe: q = a div b und r = a mod b
    σ' <- 1; β <- 1, γ <- 1; A = (0, am-1, ..., am-n+1)
    Für j = 1 bis (m – n + 1), tippen:

    a <- SHLm+1(a, 1); σ <- Übertrag δ <- σ'/β
    daddr <– baddr + δ(caddr – baddr)
    d <- CPL2n(d)
    A <- ADDn(A, b)
    σ <- (σ UND σ')/(σ UND Übertrag)/(σ' UND Übertrag)
    β <- ¬σ'; γ <- γ/δ; σ' <- σ
    Ende für
    Wenn (¬β = RICHTIG) dann b <- CPL2n(b)
    Wenn (¬γ = RICHTIG) dann c <- CPL2n(c)
    Wenn (¬σ = RICHTIG) dann A <- ADDn(A, b)
  • Verfahren 5
  • Allgemein gesehen besteht der wesentliche Vorteil der Erfindung gegenüber den anderen bekannten Verfahren, die die gleiche Operation durchführen, darin, daß sie vor Angriffen mit verdecktem Kanal und insbesondere vor Angriffen vom Typ SPA sicher ist. Außerdem benötigt das erfindungsgemäße Verfahren für seinen Einsatz nicht mehr Ressourcen (insbesondere Ausführungszeit und Speicherplatz), als die bekannten ungeschützten Verfahren der ganzen Teilung.

Claims (8)

  1. Von einer elektronischen Komponente eingesetztes Geheimschriftverfahren, bei dem eine ganze Teilung durchgeführt wird, die vor Angriffen mit verdecktem Kanal geschützt ist, von der Art q = a div b und r = a mod b, wobei q ein Quotient ist, a eine Zahl mit m Bits, b eine Zahl mit n Bits mit n unter oder gleich m und bn-1 nicht null, wobei bn-1 das höherwertige Bit von b ist, ein Verfahren, in dessen Verlauf bei jeder Iteration einer Schleife mit Index i, der zwischen 1 und m – n + 1 variiert, eine teilweise Teilung eines Wortes A mit n Bits durch die Zahl b durchgeführt wird, um ein Bit des Quotienten q zu erzielen, wobei das Wort A den n höherwertigen Bits eines Registers der Komponente entspricht, die ursprünglich die Zahl a enthält, und wobei das Wort A bei jeder Iteration verändert wird; Wobei das Verfahren dadurch gekennzeichnet ist, daß die Ausführung der teilweisen Teilung des Wortes A durch die Zahl b die Ausführung gleicher Operationen bei jeder Iteration und ungeachtet des Wertes des Bits des erzielten Quotienten umfaßt, wobei die gleichen durchgeführten Operationen eine Addition der Zahl b zum Wort A und eine Subtraktion der Zahl b vom Wort A umfassen.
  2. Von einer elektronischen Komponente eingesetztes Geheimschriftverfahren, bei dem eine ganze Teilung durchgeführt wird, die vor Angriffen mit verdecktem Kanal geschützt ist, von der Art q = a div b und r = a mod b, wobei q ein Quotient ist, a eine Zahl mit m Bits, b eine Zahl mit n Bits mit n unter oder gleich m und bn-1 nicht null, wobei bn-1 das höherwertige Bit von b ist, ein Verfahren, in dessen Verlauf bei jeder Iteration einer Schleife mit Index i, der zwischen 1 und m – n + 1 variiert, eine teilweise Teilung eines Wortes A mit n Bits durch die Zahl b durchgeführt wird, um ein Bit des Quotienten q zu erzielen, wobei das Wort A den n höherwertigen Bits eines Registers der Komponenten entspricht, die ursprünglich die Zahl a enthält, und wobei das Wort A bei jeder Iteration verändert wird; Wobei das Verfahren dadurch gekennzeichnet ist, daß die Ausführung der teilweisen Teilung des Wortes A durch die Zahl b die Ausführung gleicher Operationen bei jeder Iteration und ungeachtet des Wertes des Bits des erzielten Quotienten umfaßt, wobei die gleichen durchgeführten Operationen eine Operation mit Addition entweder der Zahl b oder einer Zahl b zum Wort A umfassen, wobei die Zahl b eine Ergänzung auf 2n der Zahl b ist.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß in dessen Verlauf bei jeder Iteration auch eine Aktualisierung einer ersten Variablen (σ') in Abhängigkeit des Bits des bei der laufenden Iteration erzielten Quotienten durchgeführt wird, um bei der nachfolgenden Iteration anzugeben, ob die Zahl b zum Wort A addiert werden soll, oder ob die Zahl b zum Wort A addiert werden muß.
  4. Von einer elektronischen Komponente eingesetztes Geheimschriftverfahren, bei dem eine ganze Teilung durchgeführt wird, die vor Angriffen mit verdecktem Kanal geschützt ist, von der Art q = a div b und r = a mod b, wobei q ein Quotient ist, a eine Zahl mit m Bits, b eine Zahl mit n Bits mit n unter oder gleich m und bn-1 nicht null, wobei bn-1 das höherwertige Bit von b ist, ein Verfahren, in dessen Verlauf bei jeder Iteration einer Schleife mit Index i, der zwischen 1 und m – n + 1 variiert, eine teilweise Teilung eines Wortes A mit n Bits durch die Zahl b durchgeführt wird, um ein Bit des Quotienten q zu erzielen, wobei das Wort A den n höherwertigen Bits eines Registers der Komponenten entspricht, die ursprünglich die Zahl a enthält, und wobei das Wort A bei jeder Iteration verändert wird; Wobei das Verfahren dadurch gekennzeichnet ist, daß die Ausführung der teilweisen Teilung des Wortes A durch die Zahl b die Ausführung gleicher Operationen bei jeder Iteration und ungeachtet des Wertes des Bits des erzielten Quotienten umfaßt, wobei die gleichen durchgeführten Operationen umfassen eine Operation mit Ergänzung auf 2n des Inhalts b oder b des Registers, das ursprünglich die Zahl b enthält, oder eines Inhalts c oder c eines anderen Registers, dann eine Operation mit Addition des Inhalts des ursprünglich b enthaltenden Register zum Wort A.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß in dessen Verlauf ebenfalls bei jeder Iteration eine Operation mit Aktualisierung einer zweiten Variablen (δ) durchgeführt wird, die angibt, ob bei der nachfolgenden Iteration die Operation der Ergänzung auf 2n am Inhalt des Registers durchgeführt werden muß, das ursprünglich die Zahl b enthält, oder am Inhalt des anderen Registers.
  6. Verfahren nach einem beliebigen der vorstehenden Ansprüche 4 oder 5, dadurch gekennzeichnet, daß in dessen Verlauf ebenfalls bei jeder Iteration eine Operation mit Aktualisierung einer dritten Variablen (β) durchgeführt wird, die angibt, ob der Inhalt des ursprünglich die Zahl b enthaltenden Registers gleich der Größe b oder ihrer Ergänzung auf 2n ist.
  7. Elektronische Komponente, die Berechnungsmittel umfaßt, die so programmiert sind, daß ein Verfahren nach einem beliebigen der vorstehenden Ansprüche 1 bis 6 eingesetzt wird, wobei die Berechnungsmittel insbesondere eine Zentraleinheit umfassen, die einem Speicher zugeordnet ist, der mehrere Register zur Speicherung der Daten a und b umfaßt.
  8. Chipkarte, die einen integrierten Schaltkreis nach Anspruch 7 umfaßt.
DE60320016T 2002-11-15 2003-11-13 Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen Expired - Lifetime DE60320016T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0214281A FR2847402B1 (fr) 2002-11-15 2002-11-15 Procede de division entiere securise contre les attaques a canaux caches
FR0214281 2002-11-15
PCT/FR2003/050119 WO2004046017A2 (fr) 2002-11-15 2003-11-13 Procede de division entiere securise contre les attaques a canaux caches

Publications (2)

Publication Number Publication Date
DE60320016D1 DE60320016D1 (de) 2008-05-08
DE60320016T2 true DE60320016T2 (de) 2009-04-16

Family

ID=32187620

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60320016T Expired - Lifetime DE60320016T2 (de) 2002-11-15 2003-11-13 Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen

Country Status (9)

Country Link
US (1) US8233614B2 (de)
EP (1) EP1565812B1 (de)
JP (1) JP4378479B2 (de)
CN (1) CN1739094B (de)
AT (1) ATE390665T1 (de)
AU (1) AU2003295059A1 (de)
DE (1) DE60320016T2 (de)
FR (1) FR2847402B1 (de)
WO (1) WO2004046017A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2838210B1 (fr) * 2002-04-03 2005-11-04 Gemplus Card Int Procede cryptographique protege contre les attaques de type a canal cache
WO2007051770A1 (fr) * 2005-11-04 2007-05-10 Gemplus Procede securise de manipulations de donnees lors de l'execution d'algorithmes cryptographiques sur systemes embarques
US9313027B2 (en) * 2005-12-29 2016-04-12 Proton World International N.V. Protection of a calculation performed by an integrated circuit
US8150029B2 (en) 2005-12-29 2012-04-03 Proton World International N.V. Detection of a disturbance in a calculation performed by an integrated circuit
FR2897964B1 (fr) * 2006-02-28 2017-01-13 Atmel Corp Procede de calcul numerique incluant la division euclidienne
EP2119101B1 (de) * 2007-03-06 2011-10-05 Research In Motion Limited Elliptisches skalarmultiplikationsverfahren gegen leistungsanalyseangriffe
US20080275932A1 (en) * 2007-03-07 2008-11-06 Research In Motion Limited Integer Division In A Manner That Counters A Power Analysis Attack
EP2169535A1 (de) * 2008-09-22 2010-03-31 Thomson Licensing Verfahren, Vorrichtung und Computerprogrammunterstützung zur regelmäßigen Umkodierung einer positiven ganzen Zahl
FR3015726B1 (fr) 2013-12-24 2016-01-08 Morpho Procede de traitement comparatif securise
FR3040511B1 (fr) * 2015-08-27 2017-09-08 Stmicroelectronics Rousset Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
FR3040512B1 (fr) 2015-08-27 2017-09-08 Stmicroelectronics Rousset Protection d'un calcul d'exponentiation modulaire
FR3069671A1 (fr) * 2017-07-25 2019-02-01 Stmicroelectronics (Rousset) Sas Protection d'un calcul iteratif contre des attaques horizontales
WO2020146284A1 (en) * 2019-01-07 2020-07-16 Cryptography Research, Inc. Efficient squaring with loop equalization in arithmetic logic units

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4514592A (en) * 1981-07-27 1985-04-30 Nippon Telegraph & Telephone Public Corporation Cryptosystem
US5504817A (en) * 1994-05-09 1996-04-02 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for memory efficient variants of public key encryption and identification schemes for smart card applications
CA2282051A1 (en) * 1998-10-20 2000-04-20 Lucent Technologies, Inc. Efficient block cipher method
DE19963408A1 (de) * 1999-12-28 2001-08-30 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung
FR2828608B1 (fr) * 2001-08-10 2004-03-05 Gemplus Card Int Procede securise de realisation d'une operation d'exponentiation modulaire
FR2848753B1 (fr) * 2002-12-11 2005-02-18 Gemplus Card Int Procede de division entiere ou de reduction modulaire securise contre les attaques a canaux caches

Also Published As

Publication number Publication date
EP1565812B1 (de) 2008-03-26
CN1739094B (zh) 2013-03-27
JP4378479B2 (ja) 2009-12-09
WO2004046017A2 (fr) 2004-06-03
CN1739094A (zh) 2006-02-22
FR2847402A1 (fr) 2004-05-21
EP1565812A2 (de) 2005-08-24
AU2003295059A8 (en) 2004-06-15
US8233614B2 (en) 2012-07-31
AU2003295059A1 (en) 2004-06-15
ATE390665T1 (de) 2008-04-15
FR2847402B1 (fr) 2005-02-18
DE60320016D1 (de) 2008-05-08
WO2004046017A3 (fr) 2004-07-15
JP2006506676A (ja) 2006-02-23
US20060133603A1 (en) 2006-06-22

Similar Documents

Publication Publication Date Title
DE69936024T2 (de) Vorrichtung zur Verschlüsselung/Entschlüsselung
DE112008000668B4 (de) Kryptografisches Verfahren und System
DE2843583C2 (de) Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal
DE69930334T2 (de) IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
DE60320016T2 (de) Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen
DE69818798T2 (de) Hochgeschwindige Montgomerywert-Berechnung
DE602004013206T2 (de) Verfahren und diesbezügliche einrichtung zur hardwareorientierten umsetzung zwischen arithmetik- und boolscher zufallsmaskierung
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
EP1290545B1 (de) Kryptographisches verfahren und kryptographische vorrichtung
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE102008051447B4 (de) Verfahren und Vorrichtung zum Schützen einer RSA-Berechnung an einer Ausgabe mit Hilfe des chinesischen Restsatzes
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
EP1370933B1 (de) Verfahren und vorrichtung zum modularen multiplizieren
DE10219158A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10151129B4 (de) Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
DE69934707T2 (de) Gegenmassnahmenvorrichtung in einem elektronischen bauteil um einen krypto-algorithmus mit geheimschlüssel durchzuführen
DE10042234C2 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE102004018874A1 (de) Verfahren und Vorrichtung zum Bestimmen eines Ergebnisses
EP1474741A2 (de) Vorrichtung und verfahren zum berechnen eines ergebnisses aus einer division
DE10219164B4 (de) Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten
DE102021101697B3 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten
DE10156708B4 (de) Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
DE102019008199B3 (de) Gegen Seitenkanalangriffe geschützte Exponentiation, Primzahltest und RSA Schlüsselgenerierung
EP1449066B1 (de) Carry-save-multiplizierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1565812

Country of ref document: EP

Representative=s name: PRINZ & PARTNER PATENTANWAELTE RECHTSANWAELTE, DE