-
Die Erfindung betrifft ein Verfahren und eine entsprechende Vorrichtung zur Durchführung einer Operation basierend auf mindestens zwei Operanden. Weiterhin werden hierfür ein Computerprogrammprodukt sowie ein computerlesbares Speichermedium vorgeschlagen.
-
Es sind unterschiedliche Angriffe (auch bezeichnet als Attacken) bekannt, um Operationen auszuspähen oder auch auf diese auf unerwünschte Weise einzuwirken. Beispiele hierfür stellen sogenannte Seitenkanalangriffe (vergleiche z. B. http://de.wikipedia.org/wiki/Seitenkanalattacke) dar, die eine Implementierung eines Kryptosystems auf einem Gerät oder in einer Software ausnutzen.
-
Bei einer Operation (auch bezeichnet als Verknüpfung), z. B. einer Addition von zwei Operanden A und B, können beispielsweise die folgenden Fälle unterschieden werden:
- Fall A) Keiner der beiden Operanden A und B ist einem Angreifer bekannt, die Operanden A und B existieren nur innerhalb des Systems.
- Fall B) Einer der beiden Operanden ist dem Angreifer bekannt, da er z. B. über ein von außen zugängliches Kommunikationsprotokoll übermittelt wird.
- Fall C) Die Operation wird auf einer unsicheren oder teilweise unsicheren Hardware-Plattform durchgeführt.
-
Bestehende Lösungen weisen unterschiedliche sicherheitsrelevante Lücken auf, so dass die Operation im Ergebnis nicht sicher vor Angriffen Dritter ist. Ein Problem sind insbesondere nicht-invasive Angriffe, die keine Rückschlüsse zulassen darauf, ob ein Angriff erfolgt ist bzw. ob ein solcher Angriff erfolgreich war.
-
Für den Fall A) könnten sogenannte Template-Angriffe in der Lage sein, auch die Operation erfolgreich anzugreifen, obwohl die beiden Operanden nicht außen bekannt sind. So besteht ein Nachteil darin, dass der Angriff gezielt die Operation selbst beeinträchtigen könnte, wenn Abarbeitungsmuster der Operation erkennbar und somit ggf. manipulierbar sind.
-
Für den Fall B) sind Seitenkanalangriffe in Form von Template-Angriffen eine mögliche Gefährdung dar.
-
Für den Fall C) kommen zusätzlich zu den für die Fälle A) und B) beschriebenen Nachteilen noch unterschiedliche Angriffsrisiken hinzu, die auf die Hardware gerichtet sind. Ist beispielsweise eine Hardware anfällig für ”Probing-Angriffe”, so besteht die Möglichkeit, dass der Angreifer auch die Operation mitverfolgen kann. Probing-Angriff ist insbesondere ein invasiver Angriff, bei dem ein Chip/Baustein geöffnet wird um (geheime) Parameter auszulesen. Dies kann beispielsweise mit einem oder mehreren Tastköpfen (englisch: ”Probe”) geschehen. Mittels der Tastköpfe werden physikalische Größen, z. B. Spannungen, gemessen.
-
Somit könnte die Hardware im Hinblick auf bestimmte Leitungen gezielt angezapft werden, z. B. Leitungen, die ein Übertragbit oder eine Seitenkanalinformation übermitteln. Im Fall C) ist es besonders von Nachteil, dass ggf. Schwachen der Hardware nicht immer von vornherein bekannt sind und ggf. erst während einer Zertifizierung oder sogar im Anschluss daran in Erscheinung treten.
-
Die Aufgabe der Erfindung besteht darin, die vorstehend genannten Nachteile zu vermeiden und insbesondere eine Lösung zu schaffen, bei der die Durchführung einer Operation, z. B. einer Addition zweier Operanden, eine erhöhte Sicherheit gegenüber Angriffen aufweist.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Zur Lösung der Aufgabe wird ein Verfahren zur Durchführung einer Operation basierend auf mindestens zwei Operanden vorgeschlagen, bei dem Schritte der Operation zeitlich randomisiert durchgeführt werden.
-
Zeitlich randomisiert bedeutet hierbei insbesondere, dass die Schritte der Operation in ihrer Abfolge zufällig oder pseudozufällig (auch: ”verwürfelt”) durchgeführt werden. Dies gilt insbesondere für zumindest einen Teil der Schritte der Operation. Vorteilhaft werden die Schritte zeitlich randomisiert durchgeführt, die in Bezug auf die Operation parallel ablaufen können. Hierbei ist es von Vorteil, dass ein Angreifer selbst bei Beobachtung der Schritte der Operation nicht ohne weiteres erkennen kann, in welcher Reihenfolge welche Schritte der Operation wann durchgeführt werden.
-
Es sei erwähnt, dass ”zeitlich randomisiert” auf einem tatsächlich zufälligen oder auf einem pseudozufälligen Ereignis beruhen kann. Insbesondere ist es möglich, dass für die Randomisierung auch Ereignisse verwendet werden, die von einer Maschine, z. B. einem Prozessor oder einem Controller, generierbar oder auswertbar sind. Insbesondere kann auch ein deterministisches Ereignis ausgenutzt werden, um eine zeitliche Randomisierung im vorliegenden Sinne zu erreichen. Beispielsweise umfasst eine solche zeitliche Randomisierung auch eine Verwürfelung der Schritte der Operation, wobei die zeitliche Abfolge der Schritte einem zufälligen oder einem auf sonstige Art bestimmbaren Muster folgen kann. Beispielsweise kann hierfür ein Muster gewählt werden, dass geheim ist und/oder eine Vielzahl von unterschiedlichen Verwürfelungen ermöglicht.
-
Die vorgeschlagene Lösung weist insbesondere den Vorteil auf, dass Seitenkanalangriffe eine wesentlich geringere Wahrscheinlichkeit haben, erfolgreich zu sein. Dies stellt auch einen zusätzlichen Schutz bereit, wenn eine Hardware als verhältnismäßig sicher eingestuft wird. Weiterhin ist es ein Vorteil, dass durch die Randomisierung z. B. in Verbindung mit einer bestimmten Bitlänge mindestens eines Operanden ein erfolgreicher Template-Angriff zumindest deutlich erschwert wird.
-
Hierbei sei angemerkt, dass die Operation auf mindestens zwei Operanden basieren kann. Die vorgeschlagene Lösung ist entsprechend auf mehr als zwei Operanden, z. B. eine Verknüpfung von mehr als zwei Operanden, anwendbar.
-
Eine Weiterbildung ist es, dass Schritte der Operation zeitlich randomisiert durchgeführt werden, indem Zugriffe auf Teile der Operanden zeitlich randomisiert durchgeführt werden.
-
Bei einem Teil des Operanden kann es sich z. B. um einen bestimmten Abschnitt, der eine vorgegebene Anzahl von Bits umfasst, handeln. Beispielsweise kann der Teil des Operanden einem Wort (z. B. 16 Bit) des Operanden entsprechen. Der Operand wird somit abschnittsweise bearbeitet, wobei die Operationen auf diese Teile (Abschnitte) zufällig oder pseudozufällig durchgeführt werden.
-
Eine andere Weiterbildung ist es, dass jeder der Operanden eine Ganzzahl ist, die insbesondere eine Bitlänge von mehr als 128 Bit aufweist.
-
Insbesondere können beliebige Bitlängen, beispielsweise Bitlängen einer Potenz der Zahl zwei, z. B. 256 Bit, 512 Bit, 1024 Bit oder mehr vorgesehen sein.
-
Insbesondere ist es eine Weiterbildung, dass die Operation eine Addition ist, die auf einem (insbesondere parallelisierbaren) Carry-Look-Ahead-Addierer basiert.
-
Auch ist es eine Weiterbildung, dass Generate-Bits und Propagate-Bits des Carry-Look-Ahead-Addierers basierend auf einer binären Baumstruktur zumindest teilweise zeitlich randomisiert iterativ in Richtung der Wurzel der binären Baumstruktur bestimmt werden.
-
Damit reduzieren sich mit jeder Ebene der Baumstruktur die Iterationen, z. B. von 64 über 32, 16, 8, 4, 2 auf 1. Vorzugsweise werden alle Iterationen zeitlich randomisiert durchgeführt.
-
Ferner ist es eine Weiterbildung, dass Carry-Bits des Carry-Look-Ahead-Addierers basierend auf der binären Baumstruktur zumindest teilweise zeitlich randomisiert iterativ in Richtung von der Wurzel der binären Baumstruktur bestimmt werden.
-
So werden beispielsweise die Carry-Bits beginnend bei der tiefsten Ebene der Baumstruktur (der Wurzel) bis hin zur höchsten besetzten Ebene der Baumstruktur bestimmt. Gemäß dem vorstehend genannten Zahlenbeispiel verläuft die Zahl der Iterationen also von 1 über 2, 4, 8, 16, 32 zu 64.
-
Im Rahmen einer zusätzlichen Weiterbildung werden die Carry-Bits und die Operanden zeitlich randomisiert addiert.
-
Eine nächste Weiterbildung besteht darin, dass die Operation eine Subtraktion ist.
-
Eine Ausgestaltung ist es, dass die Operation eine Vergleichsoperation der beiden Operanden ist. Die Vergleichsoperation kann auch einen Vergleich zweier Speicherinhalte umfassen.
-
Eine alternative Ausführungsform besteht darin, dass die Schritte der Operation zumindest teilweise mit maskierten Daten durchgeführt werden.
-
Maskierte Daten sind hierbei insbesondere verschlüsselte Daten. So können beispielsweise einzelne Bits der Operation, z. B. Carry-Bits, Generate-Bits und/oder Propagate Bits mittels einer sogenannten Maske (also z. B. einem geheimen Schlüssel) symmetrisch verschlüsselt werden. Zur Verschlüsselung kann eine Exklusiv-Oder-Funktion (XOR-Funktion) genutzt werden: Damit kann ein Datum mittels der Maske in ein maskiertes Datum verschlüsselt werden; entsprechend kann das maskierte Datum mittels der Maske in das Datum entschlüsselt werden; es gilt somit:
Datum → maskiertes Datum → Datum
wobei der Pfeil die Verknüpfung mit der XOR-Funktion unter Verwendung der Maske andeutet.
-
Vorzugsweise wird eine Maskierung z. B. am Anfang der Operation verwendet, die bis zum Ende der Operation reicht. Somit können Angriffe auf die Operation nochmals erschwert werden, wenn während der Operation zumindest ein Teil der Daten stets maskiert ist.
-
Eine nächste Ausgestaltung ist es, dass die maskierten Daten mindestens ein Verarbeitungsbit der Operation umfassen.
-
Auch ist es eine Ausgestaltung, dass das Verarbeitungsbit eines der folgenden Bits ist:
- – ein Carry-Bit,
- – ein Propagate-Bit,
- – ein Generate-Bit.
-
Eine Weiterbildung besteht darin, dass die Operanden maskiert werden und das Ergebnis der Operation am Ende der Operation demaskiert wird.
-
Eine zusätzliche Ausgestaltung ist es, dass die Operanden mit einer gemeinsamen Maske oder mit zwei unterschiedlichen Masken maskiert werden.
-
Die vorstehend genannte Aufgabe wird auch gelöst durch eine Vorrichtung umfassend eine Verarbeitungseinheit, die eingerichtet ist zur Durchführung einer Operation basierend auf zwei Operanden, wobei Schritte der Operation zeitlich randomisiert durchführbar sind.
-
Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Input/Output-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
-
Die hier vorgestellte Lösung umfasst ferner ein Computerprogrammprodukt, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des hier beschriebenen Verfahrens durchzuführen.
-
Weiterhin wird das oben genannte Problem gelöst mittels eines computerlesbaren Speichermediums, z. B. eines beliebigen Speichers, umfassend von einem Computer ausführbare Anweisungen (z. B. in Form von Programmcode), die dazu geeignet sind, dass der Computer Schritte des hier beschriebenen Verfahrens durchführt.
-
Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die jeweilige Vorrichtung oder Anordnung bzw. die anderen Anspruchskategorien entsprechend. Beispielsweise kann die Vorrichtung in einer Komponente oder verteilt in mehreren Komponenten ausgeführt sein.
-
Auch wird die oben genannte Aufgabe gelöst mittels eines Systems umfassend mindestens eine der hier beschriebenen Vorrichtungen.
-
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich im Zusammenhang mit der folgenden schematischen Beschreibung von Ausführungsbeispielen, das im Zusammenhang mit der Zeichnung näher erläutert wird. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
-
Es zeigt:
-
1 ein schematisches Diagramm mit Schritten zur Erhöhung der Sicherheit einer auf zwei Operanden basierenden Operation gegenüber beispielsweise Seitenkanalangriffen.
-
Ziel der Erfindung ist es, insbesondere eine gegen Seitenkanalangriffe resistente (= gehärtete) Implementierung einer arithmetischen Addition zweier Operanden A und B bereitzustellen, d. h. R = A + B, wobei einer der beiden Operanden (Langzahlen) A oder B eine Länge von z. B. mindestens 512 Bit aufweisen soll. Damit ist auch das Ergebnis R der Addition entsprechend mindestens 512 Bit lang.
-
Es wird vorgeschlagen, die Zugriffe auf Teile der Operanden zu randomisieren. Beispielsweise kann eine zeitliche Randomisierung der Zugriffe auf Teilwörter der Langzahloperanden erfolgen.
-
Ab einer bestimmten Bitlänge, z. B. von mindestens 512 Bit, kann in Verbindung mit der zeitlichen Randomisierung ein Risiko für einen erfolgreichen DPA Template-Angriff (DPA: ”Differential Power Analysis”, auf Deutsch: differentielle Leistungsanalyse) oder einen erfolgreichen Probing-Angriff deutlich reduziert werden. Dies liegt an der hohen Anzahl von Kombinationsmöglichkeiten: Beispielsweise entspricht bei einer 16-bit Architektur eine 512-bit Zahl 32 16-bit Wörtern, was 32! = 2,6E + 35 verschiedene Kombinationsmöglichkeiten bedingt.
-
Hierbei sei angemerkt, dass die vorliegende Randomisierung auf (mindestens) einem zufälligen oder auf einem pseudozufälligen Ereignis beruhen kann. Insbesondere ist es möglich, dass für die Randomisierung auch Ereignisse verwendet werden, die von einer Maschine, z. B. einem Prozessor oder einem Controller, generierbar oder auswertbar sind.
-
Die hier vorgestellte Lösung erhöht die Sicherheit einer Operation, die insbesondere auf zwei Operanden basiert. Beispiele für solche Operationen sind: Addition, Subtraktion, Vergleichsoperation (z. B.: Sind beide Operanden identisch? Ist der erste Operand kleiner/größer als der zweite Operand?). Insbesondere kann es sich bei den Operanden um lange ganzzahlige Operanden handeln, die z. B. eine Bitlänge von mehr als 128 Bit, 256 Bit, 512 Bit, etc. haben. Grundsätzlich ist die Bitlänge nicht auf einer Potenz der Zahl zwei beschränkt, es sind auch Bitlängen von z. B. 257 oder 258 Bit möglich.
-
Ein bekannter ”Carry-Look-Ahead Addierer” (auch bezeichnet als CLA) ist beispielsweise unter http://www.iti.fh-flensburg.de/lang/algorithmen/arithmetik/cla.htm beschrieben.
-
Es wird insbesondere vorgeschlagen, den bekannten ”Carry-Look-Ahead Addierer” so zu erweitern, dass zumindest ein Teil der Abarbeitungsschritte randomisiert ist, also zufällig oder pseudozufällig erfolgt. Somit ist es nicht ohne weiteres möglich, anhand der zeitlichen Abfolge der Verarbeitungsschritte auf ein Muster im Stromprofil der durchzuführenden Operationen rückschließen zu können. Wie erwähnt wird die Erkennung eines solchen Musters durch die Qualität der Randomisierung und der Länge der Operanden erschwert. Somit wird durch die Randomisierung erreicht, dass zu keinem Zeitpunkt der Berechnung bekannt ist, welcher Wortindex der zu schützenden Operanden und des Ergebnisses aktuell verarbeitet wird.
-
Der CLA ist für eine zeitliche Randomisierung gut geeignet, da es sich um ein paralleles Verfahren handelt, bei dem die Carry Berechnung von der eigentlichen Addition getrennt erfolgt.
-
In einer Weiterbildung wird die zeitliche Randomisierung des CLA Addierers zusätzlich kombiniert mit einer Maskierung der Generate-Bits, Propagate-Bits und/oder Carry-Bits.
-
Nachfolgend wird eine beispielhafte Implementierung als ausführbarer Code in der Programmiersprache ARIBAS als Funktion ”RandomCarryLookAheadAddition” vorgestellt. Weiterhin wird eine alternative Implementierung mit Maskierung als Funktion ”RandomCarryLookAheadAddition_FullMasked” angegeben. Dabei können sowohl Generate-Bits, Propagate-Bits als auch die einzelnen Carry-Bits vollständig durch einen binären Baum randomisiert und maskiert werden.
-
Weiterhin ist in einer Funktion ”RandomCarryLookAheadSubtraction” ein Beispiel angegeben für eine Subtraktion (ohne Maskierung). Entsprechend könnte auch eine andere Operation, z. B. ein Vergleich zwischen zwei Operanden A und B realisiert werden. Sowohl die Subtraktion als auch die beliebige andere Operation könnten mit Maskierung, wie sie für das Beispiel der Addition gezeigt ist, implementiert werden.
-
Ergänzend ist noch eine Funktion ”LongIntegerAddition_Alternative” gezeigt, die eine alternative randomisierte Lösung für die Addition der beiden Operanden A und B darstellt.
-
Beispielhafte Implementierungen
-
Der nachfolgende Programmcode ist in der Programmiersprache ARIBAS (siehe z. B. http://www.mathematik.uni-muenchen.de/~forster/sw/aribas.html) verfasst.
-
Zunächst wird ein Datentyp ”CLONG” definiert wie folgt:
-
Der Datentyp CLONG hat die Aufgabe, eine nicht negative Ganzzahl vorgegebener Länge zu modellieren. Die vorgegebene Länge kann z. B. mindestens 256 Bit betragen.
-
Es wird beispielhaft der folgende Parameter zur Emulation einer 16-Bit Plattform gewählt:
-
Weiterhin werden die folgenden Hilfsfunktionen definiert: Die Funktion ALLOCCLONG allokiert n Wörter für eine Instanz des Typs CLONG und belegt diese mit zufälligen Werten. Die Funktion GetWord liest das i-te Datenfeld aus einem CLONG Datentyp. Dabei entspricht der Index 0 dem niederwertigsten Wort (”Least Significant Word” oder LSW).
-
-
-
Nachfolgend wird die Hauptfunktion (”MAIN”) beschrieben. Es wird eine Summe R der beiden Operanden A und B berechnet. Die Berechnung wird durchgeführt, indem einzelne Schritte der Berechnung in einer zeitlich zufällig vertauschten Reihenfolge durchgeführt werden (auch bezeichnet als zeitliche Randomisierung). Hierdurch werden der Speicherzugriff auf die Operanden A und B sowie das Ergebnis R verwürfelt. Die beispielhafte Implementierung nutzt eine randomisierte Carry-Look-Ahead Addition basierend auf den folgenden Schritten:
- (1) Löschen des Ergebnisdatenfelds vom Typ CLONG.
- (2) Berechne erste Ebene Generate- und Propagate-Bits:
Zeitlich randomisierte Berechnung der Generate-Bits und der Propagate-Bits der ersten Ebene, d. h. abhängig von word(A) und word(B) bei einem bestimmten Index i (der Begriff ”word” bezeichnet ein Wort, d. h. insbesondere eine Folge Bits, z. B. 16 Bits). Im vorliegenden Beispiel ist word(A) äquivalent zu GetWord(A, i) sowie word(B) äquivalent zu GetWord(B, i):
– ein Generate-Bit wird erzeugt, falls word(A) + word(B) einen Überlauf ergbit;
– ein Propagate-Bit wird erzeugt, falls word(A) XOR word(B) (XOR: exklusiv-oder-Verknüpfung) 0xFFFF oder falls word(A) + word(B) 0xFFFF ergibt.
- (3) Berechne zweite Ebene und folgende Ebenen von Generate- und Propagate-Bits bzw. Berechnung der verbleibenden Ebenen von Generate-Bits und Propagate-Bits:
Nachdem die erste Ebene der Generate-Bits und Propagate-Bits berechnet wurde, wird die nachfolgende Berechnung basierend auf einer binären Baumstruktur zeitlich randomisiert durchgeführt. Beispielsweise wird angenommen, dass die beiden Variablen CLONG A und B jeweils eine Langzahl mit 1024-Bit aufweisen. Dies entspricht auf einer 16-Bit-Plattform 1024/16 = 64 Wörter (ein Wort entspricht z. B. 16 Bit). Während die Berechnung der ersten Ebene 64 Generate-Bits und 64 Propagate-Bits erfordert, werden auf der zweiten Ebene noch jeweils 32 Bits, auf der dritten Ebene noch jeweils 16 Bits, usf. berechnet. Damit reduzieren sich die Iterationen von 64 über 32, 16, 8, 4, 2 auf 1. Alle Iterationen werden zeitlich randomisiert durchgeführt.
- (4) Berechne Carry-Bits:
Basierend auf den Generate-Bits und den Propagate-Bits folgt eine zeitlich randomisierte Berechnung der einzelnen Carry-Bits, beginnend bei der tiefsten Ebene bis zur ersten Ebene der Carry-Bits, d. h. die Iterationen verlaufen von 1 über 2, 4, 8, 16, 32 zu 64.
- (5) Die Carry-Bits und die einzelnen Wörter werden addiert (d. h. die Carry-Bits werden auf die Summe von word(A) + word(B) addiert). Der letzte Block fügt das jeweilige Carry-Bit dem einzelnen Wort hinzu. Auch dies erfolgt in einer zeitlich randomisierten Abfolge.
-
Die Parameter A und B sind jeweils vom Typ CLONG und stellen die Operanden der Addition dar. Das Ergebnis wird im Parameter R gespeichert (ebenfalls vom Typ CLONG).
-
-
-
-
Nachfolgend wird eine erweiterte Version vorgeschlagen, die die Generate-Bits und die Propagate-Bits jeweils mit einer Bitmaske (also einem Bitmuster) M maskiert, so dass diese nicht im Klartext sichtbar sind.
-
Beispielsweise wird für jedes Generate-Bit ein Maskenbit verwendet und für jedes Propagate-Bit wird ein Maskenbit verwendet. Damit hat jede Wort-Position ihr eigene 1-Bit Maske für jeweils Generate-Bit und Propagate-Bit.
-
Der Algorithmus berechnet maskierte Carry-Bits. Die jeweilige Maske setzt sich zusammen aus der Maske des Generate-Bits und des Propagate-Bits pro Wort-Position.
-
Somit wird sichergestellt, dass die Maskierung durch die vorstehend erläuterten Schritte (1) bis (5) durchgehend erfolgt.
-
Im Ergebnis soll eine UND-Operation unter Ausnutzung der vorstehend genannten Masken erfolgen. Insbesondere soll die Operation fortwährend – also bis zum Ende der Operation – maskiert sein. Mit anderen Worten kann so die Demaskierung erst am Ende der Operation erfolgen, was die Sicherheit vor Seitenkanalangriffen während der einzelnen Berechnungsschritte erhöht.
-
Bei den Operanden A und B handelt es sich um die ursprünglichen Werte vor der Maskierung und Res stellt das Ergebnis der binären UND-Verknüpfung („AND”-Verknüpfung) der Operanden A und B dar. Es gilt also: MRes = bit_and(MA, MB) mit MA = M XOR A und MB = M XOR B.
-
Es ergibt sich: MRes = M XOR Res = M XOR (A AND B) =
= M XOR ((M XOR MA) AND (M XOR MB))
-
Diese Berechnung soll durchgeführt werden, ohne die beiden inneren Klammern auszurechnen, d. h. ohne zwischenzeitliche Demaskierung.
-
Um die zwischenzeitliche Demaskierung zu vermeiden wird nachfolgende Formel verwendet: MRes = (M AND MA) OR (M AND MB) OR (MA AND MB).
-
Die arithmetische Summe
Sum = M + MA + MB beträgt 2 oder 3, falls MRes = 1 gilt. Die vorstehende Formel kann auch anhand der nachfolgenden Tabelle verifiziert werden.
A | B | M | MA | MB | MRes | Sum | Res |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 1 | 2 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 3 | 0 |
0 | 1 | 1 | 1 | 0 | 1 | 2 | 0 |
1 | 0 | 1 | 0 | 1 | 1 | 2 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
-
Bisher wurde davon ausgegangen, dass die Masken für A und B identisch sind. Nachfolgend wird dieser Ansatz erweitert auf voneinander unabhängige Masken M1 und M2 für A und B. Entsprechend folgt ein maskiertes Ergebnis MRes': MRes' = [(M1 XOR M2) AND (MA XOR M2)] OR [(M1 XOR M2) AND (MB XOR M1)] OR [(MA XOR M2) AND (MB XOR M1)] mit MA = A XOR M1 MB = B XOR M2 M' = M1 XOR M2 MA' = A XOR M' MB' = B XOR M' MRes = (M AND MA) OR (M AND MB) OR (MA AND MB) MRes' = (M' AND MA') OR (M' AND MB') OR (MA' AND MB') MRes' = ((M1 XOR M2) AND (A XOR M1 XOR M2)) OR ((M1 XOR M2) AND (B XOR M1 XOR M2)) OR ((A XOR M1 XOR M2) AND (B XOR M1 XOR M2))
-
Mit der folgenden Substitution MA = A XOR M1, MB = B XOR M2 ergibt sich MRes' = ((M1 XOR M2) AND (MA XOR M2)) OR ((M1 XOR M2) AND (MB XOR M1)) OR ((MA XOR M2) AND (MB XOR M1)) bzw. MRes' = Res XOR M1 XOR M2.
-
Die vorstehende Formel kann auch anhand der nachfolgenden Tabelle verifiziert werden.
M1 | M2 | A | B | MA | MB | MRes | Res |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
-
Abhängig davon, welches Ergebnis erzielt werden soll, wird zwischenzeitlich eine der beiden Masken entfernt bzw. eine entsprechende Demaskierung durchgeführt.
-
-
-
-
-
Auch ist statt der Addition eine beliebige andere Operation gemäß dem hier vorgeschlagenen Ansatz realisierbar. Dies wird nachfolgend für eine Subtraktion R = A – B gezeigt, wobei beispielhaft angenommen sei, dass A größer oder gleich B ist.
-
-
-
-
Auch kann gemäß einer alternativen Ausführungsform eine randomisierte zeitliche Abfolge (”Timing”) genutzt werden. Dies wird nachfolgend beispielhaft anhand einer Funktion ”LongIntegerAddition_Alternative” gezeigt.
-
-
-
-
1 zeigt ein schematisches Diagramm zur Veranschaulichung von Schritten zur Erhöhung der Sicherheit einer auf zwei Operanden basierenden Operation gegenüber beispielsweise Seitenkanalangriffen. Ein Operand A 101 wird über eine Operation mit dem Operand B 102 verknüpft. Die Operation kann beispielsweise eine Addition, eine Subtraktion, eine binäre Verknüpfung, eine Vergleichsoperation oder ähnliches sein. In einem Block 103 werden einzelne Schritte der Operation zeitlich randomisiert durchgeführt. Optional (vergleiche Block 104) können zumindest Teile der Operation maskiert durchgeführt werden. Beispielsweise können die Operanden und/oder Zwischenergebnisse, z. B. einzelne Bits oder Bitgruppen, maskiert werden. Insbesondere ist es von Vorteil, wenn die Maskierung bis zum Ende oder im Wesentlichen bis zum Ende der Operation gewährleistet ist.
-
Der vorliegend erläuterter Ansatz eignet sich für eine Vielzahl von Anwendungen, bei denen insbesondere Seitenkanalangriffe erschwert werden sollen. Beispielsweise kann so wirksam der Erfolg einer Stromprofilanalyse und/oder jeglicher nicht-invasiven Beobachtung deutlich reduziert werden, da von außen nicht länger ohne Weiteres erkennbar ist, wann welcher Teil der Operation auf welchem Teil der Operanden mit welchen (Zwischen-)Ergebnissen durchgeführt wird.
-
Diese Lösung kann z. B. auf sicheren Plattformen oder Modulen vorgesehen sein, z. B. in Sicherheitschips für beispielsweise Computer, Smartphones, Tablets, Notebooks, etc. Auch kann die Lösung z. B. Teil einer kryptographischen Anwendung sein.
-
Die Erfindung kann z. B. eingesetzt werden in der Telekommunikation, im Automobilbereich, in Chipkarten, in Controller, in Prozessoren, in Überwachungseinheiten, in Zählern, in Messeinheiten, etc. Insbesondere kann die Erfindung genutzt werden in einem Umfeld, dass eine Publik-Key-Infrastruktur ermöglicht oder erfordert.
-
Obwohl die Erfindung im Detail durch das mindestens eine gezeigte Ausführungsbeispiel näher illustriert und beschrieben wurde, so ist die Erfindung nicht darauf eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- http://de.wikipedia.org/wiki/Seitenkanalattacke [0002]
- http://www.iti.fh-flensburg.de/lang/algorithmen/arithmetik/cla.htm [0049]
- http://www.mathematik.uni-muenchen.de/~forster/sw/aribas.html [0056]