-
Die vorliegende Offenbarung bezieht sich auf eine kryptographische Vorrichtung und auf ein Verfahren zum Umwandeln von Eingangsbitfolgen, insbesondere von Eingangsbitfolgen, die einen additiven Anteil (additive share) eines Geheimnisses beschreiben in Anteile, die in der XOR-Domäne verarbeitbar sind. Die vorliegende Offenbarung bezieht sich insbesondere auf eine randomisierte Transformation einer Datenmaskierung.
-
In Sicherheitscontrollern (engl.: security controllers), etwa Chipkarten-Steuereinrichtungen, besteht ein Bedürfnis darin, Daten gegen Seitenkanal-Analysen durch böswillige Angreifer zu schützen. Dies kann durch die Implementierung einer Maskierung erfolgen, um sicherheitskritische Daten zu schützen, während die Daten verarbeitet werden. Basierend auf verschiedenen Anwendungsgebieten kann eine Maskierung basierend auf einer addierenden (ADD) Rechenoperation oder einer exklusiven Oder-(XOR)-Rechenoperation zur Anwendung kommen. Während eine additive Maskierung im Bereich der asymmetrischen Kryptographie weitverbreitet ist, ist die Nutzung der XOR-Verknüpfung im Bereich der symmetrischen Kryptographie verbreitet.
-
Wünschenswert wäre ein Konzept, das es ermöglicht, beide Rechenoperationen ADD und XOR zu verwenden.
-
Ausführungsbeispiele schaffen eine kryptographische Vorrichtung zum Umwandeln von Eingangsbitfolgen, deren überlauffreie arithmetischer Addition ein Geheimnis ergibt, in Ausgangsbitfolgen, deren logische XOR-Verknüpfung das Geheimnis ergibt. Die kryptographische Vorrichtung umfasst eine Datenschnittstelle zum Bereitstellen zumindest einer ersten Eingangsbitfolge und einer zweiten Eingangsbitfolge. Die kryptographische Vorrichtung umfasst ferner eine Verarbeitungseinheit, die konfiguriert ist, um a) die erste Eingangsbitfolge und die zweite Eingangsbitfolge zu verknüpfen, um ein Verknüpfungsergebnis zu erhalten, das Überlaufbitpositionen anzeigt, an denen sowohl die erste Eingangsbitfolge als auch die zweite Eingangsbitfolge einen Wert von Eins (1) aufweisen, und um b) die erste Eingangsbitfolge und/oder die zweite Eingangsbitfolge an zumindest einer Überlaufbitposition zu ändern. Die Verarbeitungseinheit ist konfiguriert, um die Schritte a) und b) unter Verwendung der jeweils geänderten Eingangsbitfolgen wiederholt durchzuführen, bis das Verknüpfungsergebnis keine Überlaufbitposition mehr anzeigt und die Ausgangsbitfolgen erhalten sind. Hierdurch wird es ermöglicht, sowohl ADD-Rechenoperationen als auch XOR-Rechenoperationen für dieselben geheimen oder schützenswerten Daten zu verwenden, da die Eingangsbitfolgen bei Bedarf aus der ADD-Domäne in die XOR-Domäne überführt werden können. Gleichzeitig kann die Bearbeitung von unmaskierten geheimen Daten vermieden werden.
-
Gemäß einem Ausführungsbeispiel umfasst ein System eine hierin beschriebene kryptographische Vorrichtung. Ein derartiges System kann beispielsweise eine entsprechende datenverarbeitende Vorrichtung sein, beispielsweise ein Authentifizierungssystem oder ein Kommunikationssystem.
-
Ein Ausführungsbeispiel schafft ein Verfahren zum Umwandeln von Eingangsbitfolgen, deren überlauffreie arithmetischer Addition ein Geheimnis ergibt, in Ausgangsbitfolgen, deren logische XOR-Verknüpfung das Geheimnis ergibt. Das Verfahren umfasst ein Bereitstellen zumindest einer ersten Eingangsbitfolge und einer zweiten Eingangsbitfolge. Das Verfahren umfasst a) ein Verknüpfen der ersten Eingangsbitfolge und der zweiten Eingangsbitfolge zum Erhalten eines Verknüpfungsergebnisses, das Überlaufbitpositionen anzeigt, an denen sowohl die erste Eingangsbitfolge als auch die zweite Eingangsbitfolge einen Wert von Eins (1) aufweisen. Das Verfahren umfasst b) Ändern der ersten Eingangsbitfolge und/oder der zweiten Eingangsbitfolge an zumindest einer Überlaufbitposition. Das Verfahren umfasst ein wiederholtes Durchführen der Schritte a) und b) unter Verwendung der jeweils geänderten Eingangsbitfolgen, bis das Verknüpfungsergebnis keine Überlaufbitposition mehr anzeigt und die Ausgangsbitfolgen erhalten sind.
-
Ausführungsbeispiele werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen erläutert. Es zeigen:
- 1 ein schematisches Blockschaltbild einer kryptographischen Vorrichtung gemäß einem Ausführungsbeispiel;
- 2 ein schematisches Diagramm zur Veranschaulichung einer Operation eines Verknüpfers der kryptographischen Vorrichtung zum Erhalt eines Verknüpfungsergebnisses gemäß einem Ausführungsbeispiel;
- 3 eine schematische Darstellung eines bspw. von einer Verarbeitungseinrichtung ausgeführten Verfahrens gemäß einem Ausführungsbeispiel in Form eines Pseudo-Codes
- 4 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel anhand eines Pseudo-Codes mit zusätzlichen Verfahrensschritte zur Vertauschung von Berechnungen;
- 5a eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel zur Randomisierung von bereits überprüften Bits in Ausgangsbitfolgen;
- 5b eine schematische Darstellung von Werten und Variablen, die während es Durchlaufs des Verfahrens aus 5a erhalten werden können;
- 6 eine schematische Darstellung eines Verfahrens 600 zum Erhalt einer Bitmaske gemäß einem Ausführungsbeispiel;
- 7 eine schematische Darstellung eines Pseudo-Codes eines Verfahrens gemäß einem Ausführungsbeispiel, bei dem die Eingangsbitfolgen in die Ausgangsbitfolgen umgewandelt werden und ferner eine Randomisierung ungeprüfter Bits erfolgt;
- 8 ein schematisches Diagramm einer erweiterten Eingangsbitfolge gemäß einem Ausführungsbeispiel, in die eine Eingangsbitfolge, die in drei Teile zerlegt ist, an unterschiedlichen Stellen in der Zufallsbitfolge eingefügt ist;
- 9 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel im Pseudo-Code, bei dem das Verknüpfungsergebnis durch zusätzliche Berücksichtigung einer Zufallszahl erhalten;
- 10 eine schematische Darstellung eines Verfahrens, das eine Möglichkeit zur Implementierung dieses Ausführungsbeispiels bereitstellt.
- 11 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel, bei dem eine Fenstertechnik verwendet wird, um Teile der Eingangsbitfolgen auszuwählen;
- 12 ein schematisches Diagramm zur Veranschaulichung der Fensterfunktion aus 11;
- 13 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel in Pseudo-Codes, bei dem eine erhöhte Anzahl von drei Eingangsbitfolgen verwendet wird, um Ausgangsbitfolgen zu erhalten;
- 14 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel, bei dem lediglich eine von drei Eingangsbitfolgen während einer Umwandlung in Ausgangsbitfolgen verändert wird;
- 15 eine schematische Darstellung eines Verfahrens gemäß einem Ausführungsbeispiel im Pseudo-Code, bei dem vier Eingangsbitfolgen verwendet werden; und
- 16 ein schematisches Blockschaltbild eines Systems gemäß einem Ausführungsbeispiel.
-
Bevor nachfolgend Ausführungsbeispiele im Detail anhand der Zeichnungen näher erläutert werden, wird darauf hingewiesen, dass identische, funktionsgleiche oder gleichwirkende Elemente, Objekte und/oder Strukturen in den unterschiedlichen Figuren mit den gleichen Bezugszeichen versehen sind, so dass die in den unterschiedlichen Ausführungsbeispielen dargestellte Beschreibung dieser Elemente austauschbar ist bzw. aufeinander angewendet werden kann.
-
Manche der nachfolgend beschriebenen Ausführungsbeispiele beziehen sich auf kryptographische Vorrichtungen. Ein Beispiel für eine kryptographische Vorrichtung ist beispielsweise ein Sicherheitscontroller, der konfiguriert ist, um geheime oder schützenswerte Daten zu verarbeiten. Ein Geheimnis kann beispielsweise zumindest ein Teil eines Schlüssels sein. Die Daten können hierbei maskiert vorliegen und auch maskiert verarbeitet werden, so dass das Vorliegen unmaskierter Daten vermieden werden kann.
-
Manche der der nachfolgend beschriebenen Ausführungsbeispiele beziehen sich auf eine AND-Operation. Diese beschreibt für eine UND-Kombination von 2 Bits eine logische 1 für den Fall dass das erste Bit und das zweite Bit, also beide Bits eine logische 1 aufweisen.
-
Manche der der nachfolgend beschriebenen Ausführungsbeispiele beziehen sich auf eine XOR-Operation. Diese beschreibt eine Exclusiv-ODER-Verknüpfung zweier Bits, die lediglich dann 1 ergibt wenn ausschließlich eines der beiden Bits eine logische 1 aufweist.
-
1 zeigt ein schematisches Blockschaltbild einer kryptographischen Vorrichtung 10 gemäß einem Ausführungsbeispiel. Die kryptographische Vorrichtung 10 umfasst eine Datenschnittstelle 12 zum Bereitstellen zumindest einer ersten Eingangsbitfolge 141 und einer zweiten Eingangsbitfolge 142 , die beispielsweise basierend auf einem Datensignal 16 erhalten werden können, welches von einer Datenquelle oder einem Datenspeicher gesendet werden kann. Für die Übermittlung des Datensignals 16 kann eine drahtlose oder drahtgebundene Schnittstelle verwendet werden, etwa ein Datenbus.
-
Die kryptographische Vorrichtung 10 umfasst eine Verarbeitungseinheit 18. Die Verarbeitungseinheit 18 kann einen Verknüpfer 19 umfassen, der konfiguriert ist, um bereitgestellte Eingangsbitfolgen 141 und 142 miteinander zu verknüpfen, um ein Verknüpfungsergebnis 22 zu erhalten. Das Verknüpfungsergebnis 22 zeigt Überlaufbitpositionen an, an denen sowohl die Eingangsbitfolge 141 als auch die Eingangsbitfolge 142 einen Wert von eins aufweist. An einzelnen Bitpositionen kann jede der Eingangsbitfolgen 141 und 142 einen Wert von logisch null oder logisch eins aufweisen. Die Verknüpfung kann beispielsweise eine AND-Verknüpfung sein, die zur bitweisen Verknüpfung der Eingangsbitfolgen 141 und 142 verwendet wird. Eine bitweise Verknüpfung kann bedeuten, dass entlang einer festgelegten Reihenfolge beispielsweise von einem geringwertigsten oder am wenigsten einflussreichen Bit (engl.: least significant bit - LSB) hin zu einem höchstwertigen oder am meisten einflussreichen Bit (engl.: most significant bit - MSB), andersherum oder gemäß einer anderen Regel zwei übereinstimmende Bits der Eingangsbitfolgen 141 und 142 verglichen werden bzw. miteinander verknüpft werden, um einen Teil des Verknüpfungsergebnisses 22 zu erhalten. Die AND-Verknüpfung in der AND-Operation kann eine logische null ergeben, wenn zumindest eine der Eingangsbitfolgen 141 und/oder 142 an der jeweiligen Bitposition einen Wert von null aufweist und kann einen Wert von logisch eins ergeben, wenn beide Bitfolgen einen Wert von eins aufweisen. Das Verknüpfungsergebnis 22 kann eine Bitfolge sein, die an den Stellen eine logische eins aufweist, an denen sowohl die Eingangsbitfolge 141 als auch die Eingangsbitfolge 142 einen Wert von eins aufweisen.
-
Die Verarbeitungseinheit 18 kann ausgebildet sein, um zumindest eine der Eingangsbitfolgen 141 und/oder 142 an zumindest einer der in dem Verknüpfungsergebnis 22 angezeigten Überlaufbitpositionen zu ändern. Hierfür kann Information aus dem Verknüpfungsergebnis 22 an Bitänderungseinheiten 241 und/oder 242 gegeben werden, die konfiguriert sind, um die Eingangsbitfolge 141 bzw. 142 zu ändern.
-
Die Verarbeitungseinheit 22 ist konfiguriert, um die Verknüpfung mittels des Verknüpfers 19 und das Ändern der Eingangsbitfolgen 141 und 142 unter Verwendung der jeweils geänderten Eingangsbitfolgen 14'1 und 14'2 wiederholt durchzuführen, bis das Verknüpfungsergebnis 22 keine Überlaufbitposition mehr anzeigt und Ausgangsbitfolgen 261 und 262 erhalten sind.
-
Die wiederholte Ausführung der genannten Operationen kann in Form einer Schleifenwiederholung oder dergleichen ausgeführt werden, so dass eine Eingangsbitfolge 14i , die hin zu einer geänderten Eingangsbitfolge 14'i geändert wurde in einer darauffolgenden Schleifenwiederholung als neue Eingangsbitfolge verwendet werden kann. Optional können noch weitere Verarbeitungsschritte erfolgen. Die Ausgangsbitfolgen 261 und 262 können der geänderten Eingangsbitfolge 14'i eines letzten Schleifendurchlaufs entsprechen oder können zumindest hierauf basieren.
-
Die kryptographische Vorrichtung 10 ist ausgebildet, Eingangsbitfolgen, deren überlauffreie arithmetische Addition ein Geheimnis ergibt in die Ausgangsbitfolgen 26i derart zu überführen, dass deren logische XOR-Verknüpfung das Geheimnis ebenfalls ergibt. Als überlauffreie arithmetische Addition kann eine Addition der Bitfolgen in Kombination mit einer mod 2n-Operation verstanden werden, das bedeutet, die repräsentierten Werte werden addiert, ein hierdurch möglicherweise entstehender Überlauf wird jedoch ignoriert.
-
Die Verarbeitungseinheit 18 kann ausgebildet sein, um Bitfolgen 281 und 282 bereitzustellen, die eine veränderte oder manipulierte Repräsentation der Eingangsbitfolgen 141 bzw. 142 sind und beispielsweise für eine XOR-Operation verwendet werden können, dabei aber dasselbe Geheimnis repräsentieren, das durch die überlauffreie arithmetische Addition der Eingangsbitfolgen 141 und 142 erhalten wird.
-
Die kryptographische Vorrichtung 10 kann beispielsweise als Sicherheitscontroller gebildet sein, wie sie beispielsweise in Chipkarten oder dergleichen eingesetzt werden. Die Vorrichtung kann spezielle Sicherheits-angepasste Hardware aufweisen, beispielsweise, eine CPU mit entsprechenden Schnittstellen.
-
2 zeigt ein schematisches Diagramm zur Veranschaulichung einer Operation des Verknüpfers 19 zum Erhalt des Verknüpfungsergebnisses 22 in der Verarbeitungseinheit 18. Die Eingangsbitfolgen 141 und 142 können mit einer beliebigen jedoch bevorzugt übereinstimmenden Bitlänge 32 erhalten werden, die eine entsprechende Anzahl von n Bitpositionen 341 bis 34n aufweisen.
-
Die Verarbeitungseinheit 18 kann ausgebildet sein, um bitweise, für jede der Bitpositionen 341 an übereinstimmenden Positionen in den Eingangsbitfolgen 141 und 142 eine bitweise AND-Verknüpfung auszuführen, um das Verknüpfungsergebnis 22 zu erhalten. Die dargestellten beispielhaften Eingangsbitfolgen 141 und 142 weisen beispielsweise an den Bitpositionen 347 , 34n-5 und 34n übereinstimmend eine logische eins auf, so dass das Verknüpfungsergebnis an diesen Bitpositionen 347 , 34n-5 und 34n ebenfalls eine eins aufweist. An den anderen Bitpositionen weist zumindest eine der Eingangsbitfolgen 141 oder 142 eine logische null auf, so dass das Verknüpfungsergebnis 22 hier ebenfalls eine null aufweist.
-
An den Bitpositionen 347 , 34n-5 und 34n zeigt das Verknüpfungsergebnis 22 eine Überlaufbitposition an. An den entsprechenden Bitpositionen kommt es bei einer arithmetischen Addition der Eingangsbitfolgen 141 und 142 zu einem Überlauf, der dazu führt, dass eine benachbarte Bitposition, beispielsweise die Bitposition 348 oder 34n-3 , was zu einer Divergenz zwischen dem Ergebnis der Addition und einem Ergebnis der XOR-Operation führen würde.
-
Die Verarbeitungseinheit 18 ist konfiguriert, um die Eingangsbitfolge 141 und/oder 142 am Ort zumindest einer Überlaufbitposition zu ändern. Wird beispielsweise die Bitposition 347 betrachtet, so kann eine beliebige Änderung der Eingangsbitfolge 141 und/oder der Eingangsbitfolge 142 an diesem Ort bewirken, dass das Verknüpfungsergebnis 22 an der Bitpositionen 347 keinen Überlauf mehr anzeigt, das bedeutet, die Divergenz der Additionsoperation und der XOR-Operation kann an dieser Stelle behoben werden. Dies ermöglicht durch Anpassung der Eingangsbitfolgen den Erhalt von Ausgangsbitfolgen, das bedeutet, eine Konversion der Bitfolgen dahin gehend, dass die veränderten Eingangsbitfolgen auch für XOR-Operationen verwendbar sind.
-
Ausführungsbeispiele basieren auf einer Transformation von additiven Anteilen eines Geheimnisses hin zu XOR-Anteilen unter Verwendung einer Additionsoperation oder einer Subtraktionsoperation sowie logischen Operationen. Basierend auf einem grundlegenden funktionalen Verfahren bietet dies mehrere Möglichkeiten, eine Randomisierung zu erhalten. Unabhängig davon liefert die Option, die Transformation an einer höheren Anzahl von Anteilen (Eingangsbitfolgen), etwa mehr als zwei, mehr als drei, mehr als vier oder eine höhere Anzahl, die Möglichkeit, eine Operation auch gegen Seitenkanalangriffe (engl.: side channel attacks) höherer Ordnung zu festigen.
-
3 zeigt eine schematische Darstellung eines bspw. von der Verarbeitungseinrichtung 18 ausgeführten Verfahrens 300 gemäß einem Ausführungsbeispiel in Form eines Pseudo-Codes. Der im Zusammenhang mit hierin beschriebenen Ausführungsbeispielen erläuterte Pseudo-Code dient der Verständlichkeit der hierin beschriebenen Ausführungsbeispiele. Der dargestellte Code soll jedoch nicht so verstanden werden, dass er eine bestimmte Befehlsabfolge, eine Programmiersprache oder die explizite Verwendung einer Software-Komponente zum Erhalt der jeweiligen Funktion vorschreibt. Vielmehr können zumindest einige der hierin beschriebenen Operationen auch als Hardware implementiert sein, etwa durch Festverdrahtungen oder dergleichen.
-
In Zeilen 1 und 2 werden beispielsweise die Eingangsbitfolgen 141 und 142 erhalten und als Bitfolgen a1 und a2 bezeichnet, die einen beliebigen Wert zwischen null (alle Bits weisen einen Wert von logisch null auf) und 2n-1 (alle Bits weisen einen Wert von logisch eins auf) aufweisen können, wobei die Eingangsbitfolgen 141 und 142 gleiche oder voneinander verschiedene Werte aufweisen können.
-
In den Zeilen 3 und 4 erfolgt eine Definition von Variablen x1 und x2 , die nach vollständigem Durchlauf des Verfahrens in Zeile 13 als Ausgangsbitfolgen 261 und 262 ausgegeben werden und dabei die Bedingung erfüllen, dass eine durch ⊕ repräsentierte XOR-Verknüpfung der Ausgangsbitfolgen 261 und 262 der durch + repräsentierten arithmetischen Addition der Eingangsbitfolgen, insbesondere einer durch die mod 2n-Operation erhaltene überlauffreie arithmetische Addition der Eingangsbitfolgen entspricht.
-
Hilfsweise kann in den Zeilen 5 und 6 eine Zwischenspeicherung der Eingangsbitfolgen 141 und 142 in die Variablen x1 und x2 erfolgen. In Zeile 7 wird das Verknüpfungsergebnis 22 durch bitweise AND-Verknüpfung der Eingangsbitfolgen bzw. deren zwischengespeicherter Fassung erhalten.
-
In Zeile 8 erfolgt eine Überprüfung, ob das Verknüpfungsergebnis 22 zumindest eine Bitposition aufweist, an der ein Wert von ungleich null erhalten wird, was dadurch erhalten werden kann, dass eine Überprüfung erfolgt, ob ein durch das Verknüpfungsergebnis 22 repräsentierter Wert ungleich null ist. Diese Überprüfung kann bitweise erfolgen, beispielsweise in aufsteigender Reihenfolge der Bitpositionen 341 bis 34n .
-
Eine kryptographische Vorrichtung gemäß einem Ausführungsbeispiel kann so ausgeführt sein, dass die Verarbeitungseinheit ausgebildet ist, um zum Ändern der ersten Eingangsbitfolge und/oder der zweiten Eingangsbitfolge an der zumindest einen Überlaufbitposition eine Korrekturbitfolge basierend auf dem Verknüpfungsergebnis zu berechnen und die Korrekturbitfolge mit einer ersten und zweiten Eingangsbitfolge zu addieren und von der anderen Eingangsbitfolge zu subtrahieren oder mit einer inversen Korrekturbitfolge zu addieren. In den Zeilen 9 und 10 erfolgt eine Veränderung der Eingangsbitfolgen zum Erhalt der modifizierten oder veränderten Eingangsbitfolgen 14'1 und 14'2 . Beispielsweise wird der Eingangsbitfolge 141 der Wert des Verknüpfungsergebnisses hinzugefügt und um einen eventuellen Überlauf bereinigt. Von der Eingangsbitfolge 142 kann ein Wert des Verknüpfungsergebnisses 22 subtrahiert werden, um die veränderte Eingangsbitfolge 14'2 zu erhalten. Die Addition und/oder die Subtraktion kann hierbei überlauffrei erfolgen, das bedeutet, mit einer Modulo 2n-Operation kombiniert werden. Wie es auch aus den Erläuterungen zu 2 hervorgeht, kann die Erhöhung des Werts einer der Eingangsbitfolgen und/oder die Verringerung des Werts der anderen Bitfolge dadurch angezeigt werden, dass die Bitfolge des Verknüpfungsergebnisses 22 an einer entsprechenden Bitposition einen vordefinierten Wert, beispielsweise 1, aufweist. Alternativ kann auch ein anderer Wert genutzt werden, um eine entsprechende Position anzuzeigen, beispielsweise durch Invertierung des Verknüpfungsergebnisses 22. Wenn das Verknüpfungsergebnis an einer entsprechenden analysierten Stelle den vordefinierten Wert nicht aufweist, so kann die Verarbeitungseinrichtung ausgebildet sein, um, zumindest für die aktuelle Wiederholung, die verwendeten Eingangsbitfolgen unverändert zu lassen.
-
Das Verknüpfungsergebnis 22 kann für den Erhalt einer weiteren Korrekturbitfolge verwendet werden, die zur Addition und/oder Subtraktion verwendet wird. Die Addition und/oder Subtraktion kann hierbei bitweise erfolgen. Alternativ kann auch die gesamte Bitfolge addiert oder subtrahiert werden.
-
Das bedeutet, die Verarbeitungseinheit kann zum Ändern der Eingangsbitfolge 141 und/oder 142 an der zumindest einen Überlaufbitposition eine Korrekturbitfolge basierend auf dem Verknüpfungsergebnis berechnen und gemäß einem Ausführungsbeispiel entweder die erste Eingangsbitfolge oder die zweite Eingangsbitfolge mit der Korrekturbitfolge addieren.
-
In Zeile 11 kann erneut das Verknüpfungsergebnis 22 berechnet werden, wobei die veränderten Eingangsbitfolgen 14'1 und 14'2 zur Berechnung herangezogen werden können. Dies ermöglicht eine erneute Beurteilung, ob eine Schleife 36 zum Anpassen der Eingangsbitfolgen erneut durchgeführt wird. Die Schleife 36 kann solange wiederholt werden, bis das Verknüpfungsergebnis 22 keine Überlaufbitposition mehr anzeigt. In diesem Fall können die Eingangsbitfolgen 261 und 262 ausgegeben werden. Wie es anhand der Schleife 36 beschrieben ist, kann eine Wiederholung durch wiederholte Durchführung von Schleifendurchläufen der Schleife 36 oder adaptierter Formen hiervon erhalten werden. Hierbei ist es möglich, die kryptographische Vorrichtung so auszugestalten, dass die geänderten Bitfolgen 14'1 und 14'2 eines Schleifendurchlaufs als Eingangsbitfolge eines darauf folgenden weiteren Schleifendurchlaufs verwendet werden.
-
In anderen Worten zeigt 3 ein grundlegendes Verfahren oder Basisverfahren. Das Verfahren arbeitet wie folgt: die beiden additiven Anteile, die Eingangsbitfolgen 141 und 142 , werden iterativ durch wiederholtes Ausführen zumindest der Schleife 36 in XOR-Anteile modifiziert, durch Addieren eines Werts zu einem Anteil (Eingangsbitfolge) und Subtrahieren desselben Werts vom anderen Anteil (Eingangsbitfolge). Dadurch bleibt die Summe beider Anteile gleich, während die Verteilung auf den zwei Anteilen modifiziert wird. Der zu addierende/subtrahierende Wert kann gleich dem logischen AND beider Anteile sein, daher endet die Schleife in jedem Fall, wenn das logische AND beider Anteile null beträgt. An diesem Punkt wird die Verteilung der additiven Anteile auf eine Weise eingestellt, dass eine Addition beider Anteile zu dem gleichen Wert führt wie ein Berechnen des Exclusiv-ODER (XOR) an beiden Anteilen. Einige oder bevorzugt alle Operationen können Modulo 2n durchgeführt werden, so dass das Addieren/Subtrahieren eines Werts von Anteilen zu keinem Überlauf zu höheren Bits führt. Der Überlauf kann somit ignoriert werden und dies wird explizit erreicht durch Berechnen Modulo 2n.
-
Das Verfahren funktioniert dabei so, dass die Verteilung der zwei additiven Anteile iterativ auf eine Weise modifiziert werden, so dass letztendlich zwei additive Anteile erhalten werden, die die gleiche Summe darstellen, aber keine 1-Bits an der gleichen Position aufweisen. Daher betrachtet das Verfahren diese Position (durch Berechnen von a1 Λ a2, wobei das Symbol Λ die logische bitweise UND-Verknüpfung symbolisiert) und stellt die Verteilung durch Addieren/Subtrahieren des veränderlichen betrachteten Bits ein. Diese Modifikation kann wiederholt werden, bis beide Anteile keine 1-Bit an einer gleichen Position aufweisen.
-
Das Verfahren bietet den Vorteil, dass sichergestellt ist, dass ein Ergebnis in endlicher Zeit erhalten werden kann. Mit Zahlen von weniger als 2n endet das Verfahren nach höchstens n-Schleifen, d. h., wenn a1 Λ a2 gleich null ist. Betrachtet man beispielsweise die Position des niedrigsten 1-Bits von a1 Λ a2 in einer beliebigen Iteration, so wird eine Situation betrachtet, in der beide Bits von und in dieser Position eins sind. Das Addieren beider Bits führt zu einem anderen Wert als es eine XOR-Operation tun würde. Das Addieren des AND-Werts, des Verknüpfungsergebnisses, zu einem Anteil und das Subtrahieren desselben von einem anderen Anteil führt zu Anteilen mit einem 0-Bit (Bit, Das eine logische Null repräsentiert) an dieser Position, während der Wert der Summe beibehalten wird. Die Addition/Subtraktion modifiziert die Bits unterhalb des betrachteten Bits, beispielsweise geringwertigerer Bits beider Anteile nicht. Daher hat das niedrigste 1-Bit des neu berechneten AND-Werts zumindest den Wert, den es bereits bei der letzten Iteration hatte bzw. einen höheren. Da die Addition/Subtraktion zwei 0-Bits an der betrachteten Position erzeugt, ist die Position des zu betrachteten Bits in der nächsten Iteration höher. Das heißt, dass von Iteration zu Iteration das Ergebnis von a1 Λ a2 zunehmend mehr nachlaufende 0-Bits aufweist, bis das Ergebnis s elbst null ergibt. Daher endet der Algorithmus in höchstens n-Iterationen, d. h. Wiederholungen.
-
Gemäß einem Ausführungsbeispiel ist die Verarbeitungseinheit konfiguriert, um in einem ersten Schleifendurchlauf oder einer ersten Wiederholung, beispielsweise der While-Schleife, einen durch die erste Eingangsbitfolge 141 repräsentierten Wert zu verringern und die erhaltene Bitfolge 14'1 mit dem verringerten Wert als Eingangsbitfolge in einem späteren Schleifendurchlauf zu verwenden, wobei die Verarbeitungseinheit konfiguriert ist, um den verringerten Wert in dem nachfolgenden Schleifendurchlauf zu erhöhen. Das bedeutet, die im Zusammenhang mit der 3 illustrierte Festlegung innerhalb der While-Schleife bezüglich der Addition und Subtraktion kann über die Zeit veränderlich sein.
-
Ein Beispiel hierfür ist im Zusammenhang mit der 4 dargestellt, die schematisch ein Verfahren 400 anhand eines Pseudo-Codes darstellt, der gegenüber dem Pseudo-Code aus 3 ein zusätzliches Code-Modul, das bedeutet, zusätzliche Verfahrensschritte, in den Zeilen 9-14 aufweisen kann. In Zeile 9 wird eine Zufallszahl erhalten, die beispielsweise einen Wert von 0 oder 1 aufweisen kann. In Abhängigkeit der Zufallszahl wird in den Zeilen 10 bis 14 definiert, ob das Verknüpfungsergebnis 22 in Zeile 13 im Falle der Zufallszahl = 1 invertiert wird oder nicht, siehe Zeile 11 des Pseudo-Codes. Die Invertierung, das bedeutet, ein Vorzeichenwechsel, invertiert ebenfalls die Addition bzw. Subtraktion in den Zeilen 15 und 16, so dass aus der Addition in Zeile 15 beispielsweise eine Subtraktion und aus der Subtraktion in Zeile 16 eine Addition werden kann. Die Zufallszahl kann in jeder Iteration neu bestimmt werden, wie es in Zeile 9 erfolgt. Alternativ kann die Festlegung auch lediglich einmal für die Gesamtheit an Schleifendurchläufen bzw. Wiederholungen erfolgen.
-
Die Invertierung des Verknüpfungsergebnisses 22 stellt eine von mehreren Möglichkeiten dar. Alternativ könnten auch die Variablen x1 und x2 vertauscht werden und unterschiedlichen Operationen, Addition und Subtraktion in verschiedenen Wiederholungen unterzogen werden.
-
Alternativ zur Verwendung einer Zufallszahl kann auch ein, möglicherweise geheimes, Schema verwendet werden, um in unterschiedlichen Wiederholungen eine Eingangsbitfolge bzw. eine veränderte Version hiervon zu erhöhen oder zu verringern.
-
In anderen Worten besteht keine Notwendigkeit, immer den gleichen Anteil zu addieren bzw. von dem gleichen zu subtrahieren. Da es ausreichend sein kann, dass die Summe der Bits, die zumindest die Bitposition aufweisen, wie das derzeit betrachtete Bit, unverändert bleibt, kann die Eingangsbitfolge, die für die Addition genutzt wird, veränderlich oder zufällig ausgewählt werden, während die Bitfolge, die für die Subtraktion ausgewählt wird, einfach die andere Bitfolge sein kann oder andersherum. Die Verwendung dieses Mechanismus randomisiert die Verteilung auf die Anteile leicht und hat daher einen Einfluss auf die Anzahl der Iterationen. 4 zeigt eine schematische Darstellung eines Verfahrens 400, das randomisiert, welcher Anteil für die Addition bzw. Subtraktion zu verwenden ist.
-
Gemäß einem Ausführungsbeispiel weist das Verknüpfungsergebnis 22 eine Mehrzahl von Bits auf. Jedes Bit des Verknüpfungsergebnisses ist einem Bit der Eingangsbitfolge 141 und einem Bit der Eingangsbitfolge 142 eindeutig zugeordnet. Dies kann beispielsweise unter erneuter Bezugnahme auf die 2 das jeweilige Bit an der identischen Bitposition 34i sein, wobei auch eine andere eindeutige Zuordnung möglich ist. Die Verarbeitungseinheit kann ausgebildet sein, um die Schritte des Verknüpfens zum Erhalten des Verknüpfungsergebnisses 22 wiederholt auszuführen, wie es beispielsweise in 3 und in 4 durch die While-Schleife gezeigt ist. Die Bitposition 347 in 2 stellt beispielsweise ein aktuell untersuchtes Bit 38 dar. Bits an geringer wertigen Bitpositionen 341 bis 346 können als bereits überprüft angesehen werden, beispielsweise, wenn eine Reihenfolge der Überprüfung hin zu steigenden Bitpositionen erfolgt. Die Verarbeitungseinheit kann gemäß Ausführungsbeispielen konfiguriert sein, um Bits der möglicherweise veränderten Eingangsbitfolgen 141 und/oder 142 bzw. 14'1 und/oder 14'2 , für die das Verknüpfungsergebnis 22 bereits überprüft ist, zu randomisieren, beispielsweise durch eine XOR-Verknüpfung mit einer Zufallszahl.
-
5a zeigt eine schematische Darstellung eines Verfahrens 500 zur Randomisierung der bereits überprüften Bits anhand eines Pseudo-Codes. Verglichen mit den Verfahren der 3 und 4 weist das Verfahren 500 in Zeile 8 und in Zeile 13 den Erhalt einer Bitmaske auf, was durch den Ausdruck „getBitMask(AND)“ repräsentiert ist, was im Zusammenhang mit der 6 näher erläutert wird. Die Bitmaske kann vereinfacht als Bitfolge verstanden werden, die für manche Bits Operationen zulässt und für andere Bits solche Operationen ausschließt. Anders ausgedrückt, kann mittels der Bitmaske unterschieden werden, welche Bits schon abgearbeitet oder gescannt wurden und welche noch nicht, wobei manche Operationen selektiv entweder für bereits abgearbeitete Bits oder für noch nicht abgearbeitete Bits ausgeführt werden können und für die anderen Bits nicht ausgeführt werden oder andersherum. Im vorliegenden Beispiel handelt es sich bei den Operationen um XOR-Verknüpfungen, die für bereits überprüfte Bits zugelassen werden und für nicht-überprüfte Bits ausgeschlossen oder verhindert werden. Beispielsweise wird das Zulassen der Operationen durch eine 1 in der entsprechenden Bitfolge repräsentiert. Alternativ kann es sich auch um AND-Operationen handeln, die für unüberprüfte Bits zugelassen werden.
-
In anderen Worten erhöht sich die Position des betrachteten Bits von Iteration zu Iteration, d. h., von Wiederholung zu Wiederholung bzw. Schleifendurchlauf. Da die Position der 1-Bits (unter dem betrachteten Bit) beider Anteile disjunkt sind, kann der untere Anteil der Bitfolgen bereits als XOR-Variante der Bitfolgen interpretiert werden. Da dieselben von dem Basisverfahren 300 unverändert bleiben können, können diese Bits unter Verwendung von XOR-Operationen randomisiert werden. Eine Möglichkeit dafür besteht darin, einen Zufallswert an den unteren Bits beider Anteile einer XOR-Verknüpfung zu unterziehen. Dies kann in jeder Iteration unter Verwendung eines neuen Zufallswerts wiederholt werden. Alternativ kann ein unveränderter Zufallswert oder ein deterministischer Wert verwendet werden. Die Verwendung dieses Mechanismus kann zu (Zwischen-)Anteilen mit einem Hamming-Gewicht führen, das eher zufällig aussieht. 5a zeigt ein derartiges Verfahren auf Basis des Verfahrens 300. Im Verfahren 500 werden die Bits unter dem betrachteten Bit randomisiert.
-
5b zeigt eine beispielhafte Darstellung von Werten und Variablen, die während es Durchlaufs des Verfahrens 500 erhalten werden können. Beispielsweise weisen die Eingangsbitfolgen 141 und 142 eine Länge von 8 Bit auf, wobei jede andere Länge anwendbar ist, beispielsweise 16 Bit, 32 Bit oder mehr. Auch Werte, die von Vielfachen von 2 verschieden sind, sind möglich. Es wird darauf hingewiesen, dass nicht jede der Zellen 1 bis 26 als eigener Verfahrensschritt auszuführen ist. Vielmehr dient 5b der Veranschaulichung der Rechenoperationen. Die Bitmaske, die beispielsweise in Zeile 4, Zeile 10 und/oder Zeile 21 erhalten werden kann, kann beispielsweise basierend auf dem Verfahren 600, das im Zusammenhang mit der 6 erläutert ist, erhalten werden. Die Zufallszahl rnd in Zeile 11 sowie rnd‘ in Zeile 22 ist hierbei zufällig gewählt und kann auch eine beliebige andere Zahl darstellen oder sein.
-
Am Ende des zweiten Schleifendurchlaufs, d. h. in Zeile 26, ist die dann betrachtete AND-Verknüpfung, das Verknüpfungsergebnis, ausschließlich mit 0-Bits besetzt, das bedeutet, es ist keine Überlaufbitposition mehr angezeigt. Die Eingangsbitfolgen 141 und 142 wurden so verändert, dass die Ausgangsbitfolgen 261 und 262 erhalten werden, die den Anforderungen des Verfahrens genügen.
-
6 zeigt schematisch den Ablauf eines Verfahrens 600, das beispielsweise für den Erhalt einer derartigen Bitmaske verwendet werden kann. Als Eingangsvariable y wird in Zeile 1 eine Bitfolge mit einer Anzahl von n-Bits verwendet, beispielsweise das Verknüpfungsergebnis. Eine Ausgangsbitfolge m wird so definiert, dass deren repräsentierter Wert mit dem Wert 1 addiert gleich dem Wert 2k entspricht, wobei k die Position des geringwertigsten 1-Bits in der Eingangsbitfolge ist. Unter Bezugnahme auf 2 ist dies beispielsweise für die Bitposition 347 erfüllt. Für die in 2 dargestellte Bitfolge des Verknüpfungsergebnisses kann die Bitmaske beispielsweise lauten: 0....0111111. Die Bitmaske kann somit an den Bitpositionen 341 bis 346 , die bereits überprüft sind, Einsen aufweisen und an den anderen Bitpositionen 347 bis 34n eine Null aufweisen. Optional kann die Bitmaske auch an der Bitposition 347 eine Eins aufweisen, da hier eine aktuelle Überprüfung stattfindet.
-
Unter erneuter Bezugnahme auf 5a kann nach der Addition bzw. Subtraktion zum Erhalt modifizierter Eingangsbitfolgen 14'1 und 14'2 eine Korrekturbitfolge 42 bestimmt werden. Obwohl in Zeile 12 die Korrekturbitfolge 42 ebenfalls als AND wiedergegeben wird, wird darauf hingewiesen, dass auch ein anderer Variablenname verwendet werden kann. Die Korrekturbitfolge wird beispielsweise durch AND-Verknüpfung der geänderten Eingangsbitfolgen 14'1 und 14'2 unter zusätzlicher AND-Verknüpfung mit einer Bitfolge, die den Wert 2n-m-1 repräsentiert, erhalten, was auch so verstanden werden kann, dass die Korrekturbitfolge 42 für bereits überprüfte Bits zu 0 gesetzt wird. In Zelle 14 kann eine Zufallszahl 44 erhalten werden, die beispielsweise eine identische Bitlänge aufweist wie das Verknüpfungsergebnis und/oder die Eingangsbitfolgen. Die Zeilen 15 und 16 können eine Selektierung derjenigen Bits aus der Zufallszahl die Bitpositionen bereitstellen, für die das Verknüpfungsergebnis bereits überprüft ist, wie es durch die Ausdrücke „rnd Λ m“ beschrieben ist. In den Zeilen 15 und 16 erfolgt ferner eine XOR-Verknüpfung der geänderten Eingangsbitfolgen mit einer hieraus erhaltenen Bitfolge, das bedeutet, die bereits überprüften Bits an den Bitpositionen 341 bis 346 werden durch XOR-Verknüpfungen randomisiert. Da bereits XOR-Anteile des Geheimnisses erhalten sind, ist eine weitere XOR-Operation unschädlich für die weitere Verwertbarkeit, steigert jedoch den Grad der Zufälligkeit der erhaltenen Bits.
-
Alternativ oder zusätzlich zur Randomisierung bereits überprüfter Bits kann die Verarbeitungseinrichtung konfiguriert sein, um Bits der verwendeten Eingangsbitfolgen 141 und/oder 142 bzw. 14'1 und/oder 14'2 , für die das Verknüpfungsergebnis ungeprüft ist, beispielsweise, Bits an den Positionen 348 bis 34n , durch Ausführen einer AND-Verknüpfung mit einer Zufallszahl zu randomisieren.
-
In anderen Worten führen einige Mechanismen eine Randomisierung von Bits unter oder über dem betrachteten Bit durch, d. h., an geringwertigeren oder höherwertigeren Bits. Eine effiziente mögliche Weise dies zu tun, ist es, n-Zufallsbits zu verwenden und eine spezifische Maske anzuwenden, um Zufallsbits zu löschen, die für die Randomisierung nicht benötigt werden, d. h., falls die beispielsweise niedrigeren Bits randomisiert werden sollen, werden die Zufallsbits an höheren Positionen gelöscht und andersherum. Die Masken, die in hierin beschriebenen Ausführungsbeispielen verwendet werden, können beispielsweise wie folgt aussehen und können unter Verwendung des in 6 beschriebenen getBitMask-Verfahrens abgeleitet werden: Bits unter dem betrachteten Bit werden auf 1 gesetzt, während die anderen Bits auf 0 gesetzt werden. Daher sieht die Maske beispielsweise aus wie 0b00..0011..11. Die Position des niedrigstwertigen 0-Bits der Maske stimmt mit der Position des betrachteten Bits überein. Diese Masken können dann gemäß dem Verfahren 600 berechnet werden.
-
7 zeigt eine schematische Darstellung eines Pseudo-Codes eines Verfahrens 700, bei dem die Eingangsbitfolgen in die Ausgangsbitfolgen umgewandelt werden und ferner die erwähnte Randomisierung ungeprüfter Bits erfolgt. Hierfür kann beispielsweise ebenfalls die Bitmaske genutzt werden, siehe Zeile 9. Ferner kann eine Zufallszahl mit übereinstimmender Bitlänge erhalten werden, siehe Zeile 10. Durch Verknüpfen der Zufallszahl mit der Bitfolge können diejenigen Bits der Zufallszahl ausgewählt werden, die Bitpositionen der ungeprüften Bits aufweisen. Die anderen Bitpositionen, beispielsweise bereits geprüfte Bitpositionen, können durch die entsprechende Verknüpfung ausgeblendet werden oder zu null gesetzt werden. Wie es in den Zeilen 13 und 14 des Verfahrens 700 dargestellt ist, kann eine Addition oder Subtraktion mit der entsprechend maskierten oder gefilterten Zufallszahl erfolgen, um die Randomisierung der Bitfolgen zu erhalten.
-
Das derzeit überprüfte Bit, das Spotlight-Bit, kann gemäß einem Ausführungsbeispiel unverändert von der jeweiligen XOR- oder AND-Randomisierung bleiben. Gemäß einem Ausführungsbeispiel kann auch eine Randomisierung dieses Bits erfolgen, was jedoch bevorzugt für die spätere Prozessierung berücksichtigt wird.
-
In anderen Worten kann das grundlegende Verfahren aus 3 den AND-Wert verwenden, um die höheren Bits, d. h., die höherwertigeren Bits beider Anteile zu modifizieren. Damit der Algorithmus endet, kann es ausreichend sein, dass das betrachtete Bit gesetzt ist. Die höherwertigeren Bits oder Bits höheren Werts können auf null gesetzt sein oder zufällig gesetzt sein, um eine hohe Sicherheit bezüglich der Seitenkanalanalyse zu erhalten. Da die beispielsweise in den Zeilen 13 und 14 dargestellte Addition bzw. Subtraktion nach wie vor sicherstellt, dass die Summe der oberen Bits unverändert bleibt, ist ein Ende des Verfahrens in einer definierten Zeit unverändert sichergestellt. Die Verwendung dieses Mechanismus führt zu einem zufälligeren Programmfluss als die AND-Werte (Verknüpfungsergebnis) und daher hängt die Anzahl von Iterationen nicht mehr zwingend deterministisch von dem Eingabeparameter, den Eingangsbitfolgen, ab. Das Verfahren 700 beschreibt eine Modifikation des Verfahrens 300. Insbesondere beschreibt das Verfahren 700 das Verfahren 300, bei dem zusätzlich die Bits über dem betrachteten Bit randomisiert werden.
-
Gemäß einem Ausführungsbeispiel ist die Verarbeitungseinheit ausgebildet, um zumindest eine der Eingangsbitfolgen 141 und/oder 142 in eine Zufallsbitfolge einzubetten. 8 zeigt ein schematisches Diagramm einer erweiterten Eingangsbitfolge 46, in die die Eingangsbitfolge 141 in drei gleich große oder unterschiedlich große Teile 14a, 14b und 14c zerlegt ist, und an unterschiedlichen Stellen in der Zufallsbitfolge eingefügt ist. Eine Anzahl der Teile 141a bis 141c sowie eine Größe, d. h., eine Anzahl der Bits, hiervon kann beliebig sein. So kann beispielsweise lediglich ein Teil genutzt werden, das bedeutet, die Eingangsbitfolge 141 kann zusammenhängend in die erweiterte Eingangsbitfolge 46, möglicherweise an einer geheimen Position, eingebettet sein. Alternativ kann die Eingangsbitfolge 141 in zumindest zwei, zumindest drei, zumindest vier bis hin zu bitweise vereinzelt an voneinander verschiedenen Stellen in der erweiterte Eingangsbitfolge 46 angeordnet sein. Die Eingangsbitfolge 142 kann in gleicher oder zumindest vergleichbarer Weise in eine weitere Zufallsbitfolge eingebettet werden. Die Verarbeitungseinheit kann ausgebildet sein, um die Zufallsbitfolgen selbst zu erzeugen oder bereitgestellt zu bekommen und die Eingangsbitfolgen in die derart erhaltenen Bitfolgen einzubetten. Die Verarbeitungseinheit kann dabei ausgebildet sein, um eine erhaltene zufällige Bitfolge zu segmentieren, um Segmente 48a bis 48d zu erhalten und, um die Teile 141a bis 141c zwischen den Segmenten einzubetten. Alternativ kann die Verarbeitungseinrichtung auch ausgebildet sein, um ein oder mehr Bits der erhaltenen Zufallsbitfolge mit der Eingangsbitfolge oder einzelnen Bits hieraus zu überschreiben.
-
Die Verarbeitungseinheit kann ausgebildet sein, um die erweiterten Eingangsbitfolgen, die basierend auf einer Einbettung der Eingangsbitfolge 141 und einer Einbettung der Eingangsbitfolge 142 erhalten werden, mit einer gleichen Bitlänge bereitzustellen. Eine einfache Verarbeitung der erweiterten Eingangsbitfolgen kann erhalten werden, wenn die Verarbeitungseinheit so konfiguriert wird, dass die Eingangsbitfolgen 141 und 142 in den jeweiligen Zufallsbitfolgen an übereinstimmenden Positionen positioniert oder eingebettet werden.
-
Die Einbettung ermöglicht eine zusätzliche Verschleierung der geheimen Informationen. Einen geringen Einfluss auf die tatsächlich ausgeführten Rechenoperation kann erhalten werden, indem die Verarbeitungseinheit so konfiguriert wird, dass die erweiterten Eingangsbitfolgen so bereitgestellt werden, dass der Erhalt des Verknüpfungsergebnisses 22 basierend auf den Zufallsbitfolgen, die die Segmente 48 bereitstellen, für Bits der Eingangsbitfolgen 141 und 142 überlauffrei ist. Beispielsweise kann jeweils ein meist bedeutendes Bit (MSB) des Teils 48a, 48b, 48c und 48d zumindest einer der erweiterten Eingangsbitfolgen einen Wert von logisch 0 aufweisen, so dass bei Bildung des Vergleichsergebnisses über die erweiterten Eingangsbitfolgen kein Überlauf in die tatsächlichen verschleierten Eingangsbitfolgen 141 und 142 erfolgt. So kann vermieden werden, dass eine Veränderung der Eingangsbitfolgen basierend auf Zufallszahlen erfolgt, was eine Veränderung der geheimen Information bewirken könnte. Alternativ kann ein derartiger Überlauf auch festgestellt und in speziellen Verfahrensschritten korrigiert werden.
-
In anderen Worten kann das Verfahren 300 dadurch ergänzt werden, dass der Datenabschnitt, der zu transformieren ist, in einen größeren Abschnitt von Pseudodaten oder Zufallsdaten eingebettet wird. Bei der Berücksichtigung einer Implementierung, beispielsweise auf einer Chipkarte, kann die Möglichkeit bestehen, einen Vorlagenangriff (engl.: template attack) auf das einzelne Wort auszuüben, das durch die CPU verarbeitet wird. Es kann daher vorteilhaft sein, die ursprünglichen Anteile in einen größeren Abschnitt von Zufallsdaten einzubetten. Ein n-Bit-Geheimnis kann beispielsweise in einem n+32-Bit-Datenabschnitt eingebettet werden, beginnend, beispielsweise, mit 12 Zufallsbits gefolgt von dem ursprünglichen n-Bit-Anteil und weiteren 20 Zufallsbits. Eine andere Wahl des gleichen Layouts für alle Anteile und Durchführen desselben Verfahrens kann zu einem guten Ergebnis bei gleichem Layout führen. Die ursprünglichen Anteile selbst können ebenfalls in mehrere Teile aufgeteilt werden. Zwei Randbedingungen können beachtet werden. Alle Anteile können das gleiche Layout aufweisen, das bedeutet, gleiche Bitlänge, und das Hinzufügen entsprechender Teile von Zufallsbits erzeugt bevorzugt keinen Überlauf in das niedrigste Bit irgendeines Teils des ursprünglichen Anteils, das bedeutet, eines Teils der jeweiligen Eingangsbitfolge. Die Verwendung dieses Mechanismus kann einen effektiven Schutz gegen Seitenkanalanalysen bereitstellen. Jedes Wort, das in einer CPU verarbeitet wird, kann eine Menge an Zufallsbits enthalten und darüber hinaus ist jede Menge verwaltbar, so dass die Zufälligkeit sicher eingestellt werden kann.
-
Gemäß einem Ausführungsbeispiel ist die Verarbeitungseinheit ausgebildet, um Bits des Verknüpfungsergebnisses, die ungeprüft sind, beispielsweise unter erneuter Bezugnahme auf 2, die Bits an den Bitpositionen 348 bis 34n , mit einer zufälligen Anzahl von Bits zu ergänzen, so dass eine Anzahl der Schleifendurchläufe und somit der wiederholten Durchführungen der Überprüfung des Verknüpfungsergebnisses ebenfalls zufallsbasiert sind. Die zuvor im Zusammenhang mit dem Verfahren 700 erläuterte Randomisierung der ungeprüften oberen Bits kann zwar bereits ein gewisses Maß an Zufälligkeit bezüglich der Anzahl der Wiederholungen bereitstellen. Diese Zufälligkeit kann weiter erhöht werden, indem eine gewisse Zufälligkeit in die AND-Verknüpfung eingefügt wird.
-
9 zeigt eine schematische Darstellung eines Verfahrens 900 im Pseudo-Code, das auf dem Verfahren 300 aufbaut. In den Zeilen 9 und 13 wird das Verknüpfungsergebnis anders als im Verfahren 300 durch zusätzliche Berücksichtigung einer Zufallszahl rnd, die mit einer weiteren Zufallszahl msk verknüpft wird, erhalten. Das Symbol „I“ kann dabei wie folgt verstanden werden: A/B ≡ AΛB.
-
Das bedeutet, in den Zeilen 9 und 13 wird die Korrekturbitfolge anders erhalten als in dem Verfahren 300. Während die Zufallszahl rnd eine gleiche Bitlänge aufweisen kann wie die Eingangsbitfolgen 141 und/oder 142 , kann die Zufallszahl msk aus beliebigen Werten ausgewählt werden, beispielsweise aus den Werten 1 und 3. In den Wiederholungen der While-Schleife kann die Zufallszahl msk jeweils überlauffrei verdoppelt werden, um in einer nachfolgenden Schleife ein anderes Verhalten zu erzeugen.
-
In anderen Worten kann durch Addieren einer Zufälligkeit in die Schleifenbedingung ein Verbergen der Abhängigkeit erhalten werden. Das grundlegende Verfahren 300 kann eine Schleife durchlaufen, bis die Bedingung x1 Λ x2 = 0 erfüllt ist. Die Anzahl von Iterationen dafür ist durch die bereitgestellten additiven Anteile definiert. Unter Verwendung der additiven Randomisierung der oberen Bits kann eine gewisse Zufälligkeit der Anzahl von Iterationen erhalten werden, die auszuführen sind. Trotzdem kann die Abhängigkeit zwischen dem Hamming-Gewicht und der Anzahl von Iterationen weiterverborgen werden, etwa durch Hinzufügen einer gewissen Zufälligkeit zu der Operation x1 Λ x2 vor dem Auswerten dieser Anzahl in der Schleifenbedingung. Dieser Mechanismus kann zusätzliche Iterationen in Abhängigkeit von Zufälligkeit hinzufügen, unabhängig von den Eingangsbitfolgen 141 bzw. 142 von dem Klardatenwert. Dieser Mechanismus ist in 9 aufbauend auf dem grundlegenden Verfahren gemäß 3 dargelegt und fügt eine gewisse Zufälligkeit in die Schleifenbedingung hinzu.
-
Gemäß einem Ausführungsbeispiel ist die kryptographische Vorrichtung ausgebildet, um das Überführen von Eingangsbitfolgen 14 in Ausgangsbitfolgen 26 wiederholt auszuführen. Das bedeutet, möglicherweise zu unterschiedlichen Zeitpunkten, können unterschiedliche Gruppen von Eingangsbitfolgen erhalten und in jeweilige Gruppen von Ausgangsbitfolgen überführt werden. Die kryptographische Vorrichtung, beispielsweise die kryptographische Vorrichtung 10, kann ausgebildet sein, um eine mit der Anzahl der Gruppen korrespondierende Mehrzahl von Verknüpfungsergebnissen zu erhalten, beispielsweise, indem das Verknüpfungsergebnis 22 jeweils erhalten wird, wenn neue Eingangsbitfolgen empfangen werden. Die kryptographische Vorrichtung kann ausgebildet sein, um das jeweilige Verfahren so anzuwenden, dass für unterschiedliche Paare oder Gruppen von Eingangsbitfolgen stets eine konstante Zeitdauer benötigt wird, um diese in die Ausgangsbitfolgen zu überführen. Dies ermöglicht eine weitere Verschleierung von Informationen.
-
10 zeigt eine schematische Darstellung eines Verfahrens 1000, das eine Möglichkeit zur Implementierung dieses Ausführungsbeispiels bereitstellt. Das Verfahren 1000 kann sich vom Verfahren 300 dadurch unterscheiden, dass anstelle einer Schleifenbedingung, dass das Verknüpfungsergebnis ungleich 0 ist, eine alternative While-Schleife 48 verwendet wird, die beispielsweise einen Schleifendurchlauf i für jedes der n Bits der Eingangsbitfolgen ausführt. Das bedeutet, unabhängig davon, ob das Verknüpfungsergebnis einen bestimmten Wert aufweist oder eine Überlaufbitposition anzeigt, kann eine bestimmte Operation der Verknüpfung ausgeführt werden. Das bedeutet, die Verarbeitungseinheit kann ausgebildet sein, um für jedes Bit des Verknüpfungsergebnisses unter Beibehaltung eines Summenwerts aus einem durch die erste Eingangsbitfolge repräsentierten ersten Werts und einen durch die zweite Eingangsbitfolge repräsentierten zweiten Werts einen aus dem Wert und dem zweiten Wert zu erhöhen und den anderen Wert zu verringern, um die Mehrzahl von Verknüpfungsergebnissen mit einer konstanten Zeitdauer zu verändern. Die Mehrzahl von Ausgangsbitfolgen kann so mit einer konstanten Zeitdauer erhalten werden. In anderen Worten kann eine konstante Zeitgebung verwendet werden, indem eine maximale Anzahl von Iterationen erzwungen wird, das bedeutet, es können immer n Iterationen durchgeführt werden. Ein Verfahren mit einer konstanten Ausführungszeit oder Laufzeit, möglicherweise immer noch abhängig von der Anzahl von n Bits, kann eine Unabhängigkeit von dem Geheimnis und der bereitgestellten Verteilung desselben auf additive Anteile (shares) aufweisen. Da eine konstante Laufzeit oder in diesem Fall eine Anzahl von Iterationen immer zu allen Ausnahmefällen passen soll, kann die Laufzeit dieses Verfahrens erhöht werden, während eine bessere Seitenkanalresistenz erhalten werden kann. Eine konstante Zeitgebung kann durch mehrere Mechanismen erreicht werden. Ein Verfahren kann darin bestehen, explizit ein Bit in den AND-Wert zu setzen oder durch XOR-Verknüpfen einer 1-Bit-Maske (Bitmaske, die einen 1-Wert an einer Stelle aufweist), die durch 1 initialisiert wird und in jeder Iteration/Wiederholung um eine Position nach links verschoben wird (mod 2n). Eine andere Möglichkeit besteht darin, einfach eine Anzahl von n Iterationen durchzuführen, wie es das Verfahren 1000 zeigt. Das Verfahren 1000 beschreibt somit das Verfahren 300 mit konstanter Zeitgebung.
-
11 zeigt eine schematische Darstellung eines Verfahrens 1100 gemäß einem Ausführungsbeispiel, das beispielsweise von der kryptographischen Vorrichtung 10 ausführbar ist. Im Vergleich zum Verfahren 300 kann eine Fenstertechnik verwendet werden, um zumindest ein erstes Bit und ein zweites Bit des Verknüpfungsergebnisses in einem jeweiligen Schleifendurchlauf auszuwählen und zu bearbeiten. Das bedeutet, die Verarbeitungseinheit kann ausgebildet sein, um basierend auf einer Fensterfunktion, die über eine Mehrzahl von Schleifendurchläufen zeitlich veränderlich zumindest ein erstes und ein zweites Bit des Verknüpfungsergebnisses für einen jeweiligen Schleifendurchlauf auswählt, Bits für den Schleifendurchlauf der ersten Eingangsbitfolge und/oder der zweiten Eingangsbitfolge zu bestimmen. Die Verarbeitungseinheit kann ausgebildet sein, um die ausgewählten Bits in der ersten Eingangsbitfolge und/oder der zweiten Eingangsbitfolge während des Schleifendurchlaufs zu verändern. So wird beispielsweise in Zeile 7 des Verfahrens 1100 ein Wert msk zu 3 gesetzt, was auch einer binären Darstellung von 11 entsprechen kann. Solange dieser, noch zu verändernde Wert ungleich 0 ist, kann eine While-Schleife 52 ausgeführt werden, die die Schleifenbedingung des Verfahrens 300 abändern kann. Insbesondere kann der Wert msk zur Verknüpfung mit den Eingangsbitfolgen und/oder dem Verknüpfungsergebnis herangezogen werden, wie es beispielsweise in den Zeilen 9 und 10 dargestellt ist. Hierauf aufbauend erfolgt auch eine Beeinflussung der Eingangsbitfolgen und Hilfsvariablen, wie es in den Zeilen 11 bis 13 dargestellt ist.
-
Der Wert msk = 3, d. h. 11 in binärer Darstellung, kann eine Fensterfunktion der Länge zwei bedeuteten, das bedeutet, es werden zu einem Zeitpunkt bzw. in einer Wiederholung zwei Bits betrachtet. Wie es aus Zeile 15 hervorgeht, kann am Ende der Schleife eine Verschiebung dieses Fensters um zwei Bits nach links erfolgen, das bedeutet, in einer nachfolgenden Schleife werden zwei angrenzende Bits betrachtet. Obwohl die Fensterfunktion so beschrieben ist, dass sie eine Länge von zwei Bits aufweist, kann auch eine andere Länge verwendet werden, wobei die Länge auf die Anzahl von n Bits der Eingangsbitfolge bzw. die Anzahl der Bits der ergänzten oder erweiterten Eingangsbitfolge limitiert sein kann. In anderen Worten kann eine Fenstertechnik verwendet werden, um mehr als ein Bit auf einmal zu verarbeiten, z. B. immer zwei Bits gleichzeitig. Die Verwendung einer Fenstertechnik, die in einer Iteration mehr als ein Bit auf einmal verarbeitet, kann einen Schutz vor einer Seitenkanalanalyse bereitstellen. Ohne Beschränkung der Allgemeinheit kann ein Verfahren, das ein Fenster mit zwei Bits verwendet, bereitgestellt werden. Unabhängig davon kann die Logik auf größere Fenster erweitert werden. Das Verfahren 1100 zeigt die Verwendung einer Fenstertechnik und den Erhalt einer konstanten Zeitgebung, da das Fenster über die komplette Bitlänge geschoben wird.
-
12 zeigt ein schematisches Diagramm zur Veranschaulichung der Fensterfunktion msk. Die im Verfahren 1000 in Zeile 9 dargestellte Verknüpfung der Eingangsbitfolge x1 , d. h., der Einfangsbitfolge 141 mit dem Fenster msk kann zur Auswahl zweier Bits der Eingangsbitfolge 141 führen. In einem ersten Schleifendurchlauf kann das Fenster msk (1) genutzt werden. Durch Verschieben um zwei Positionen nach links, siehe Zeile 15 des Verfahrens 1100, können zwei benachbarte Bits ausgewählt werden. Ein erneutes Verschieben ermöglicht die Auswahl erneut unterschiedlicher Bits in einem dritten Schleifendurchlauf, wie es durch msk (3) angedeutet ist.
-
Manche der vorangehend beschriebenen Ausführungsbeispielen beschreiben eine Verknüpfung einer ersten Eingangsbitfolge mit einer zweiten Eingangsbitfolge. Die vorliegende Offenbarung ist nicht auf die Verwendung lediglich zweier Eingangsbitfolgen beschränkt, sondern kann mit einer beliebigen Anzahl von Eingangsbitfolgen ausgeführt werden, beispielsweise mehr als 2, mehr als 3 oder mehr als 4, etwa 5, 10 oder 20.
-
Nachfolgend wird beispielhaft Bezug genommen auf Ausführungsbeispiele zur Verknüpfung von drei Eingangsbitfolgen zum Erhalten von drei Ausgangsbitfolgen und zum Verknüpfen von vier Eingangsbitfolgen zum Erhalten von vier Ausgangsbitfolgen.
-
13 zeigt eine schematische Darstellung eines Pseudo-Codes zur Implementierung eines Verfahrens 1300. Ein möglicher Unterschied zwischen dem Verfahren 1300 und dem Verfahren 300 kann in der Berechnung der Korrekturbitfolge bzw. des Verknüpfungsergebnisses 22 in Zeile 10 des Pseudo-Codes gesehen werden. Während das Verfahren 300 so beschrieben ist, dass das Verknüpfungsergebnis 22 durch eine AND-Verknüpfung der beiden Eingangsbitfolgen 141 und 142 erhalten werden kann, ist das Verfahren 1300 auf die erhöhte Anzahl von Eingangsbitfolgen 141 bis 143 dahin gehend angepasst, dass eine Überprüfung mehrerer Paarungen von Eingangsbitfolgen durch eine AND-Verknüpfung erfolgt. Beispielsweise erfolgt eine AND-Verknüpfung sämtlicher Paare, das bedeutet, der Eingangsbitfolgen 141 und 142 , 142 und 143 sowie 143 und 141 . Diese AND-Verknüpfung liefert unverändert den Informationsgehalt, ob die beiden als Paarung verglichenen Eingangsbitfolgen eine übereinstimmende 1 bzw. 1-Bit an übereinstimmender Position aufweisen, die bei einer arithmetischen Addition der drei Eingangsbitfolgen 141 bis 143 einen Überlauf verursachen könnte. Durch XOR-Verknüpfung dieser paarweisen Ergebnisse kann eine Aggregation dieser Information in einem Bit erhalten werden, das bedeutet, unverändert zeigt das Verknüpfungsergebnis 22 bei einer logischen 1 an, dass ein Überlauf einer arithmetischen Addition der Eingangsbitfolgen 141 142 und 143 erfolgen würde.
-
Obwohl basierend auf einer angezeigten Überlaufbitposition eine Änderung der drei Eingangsbitfolgen 141 bis 143 möglich ist, kann im Zusammenhang mit der Offenbarung der anderen Ausführungsbeispiele auch lediglich eine Änderung zweier Eingangsbitfolgen ausgeführt werden. Unter erneuter Bezugnahme auf 2 kann beispielsweise die Erhöhung des Werts der Eingangsbitfolge 141 sowie die gleichzeitige Verringerung des Werts der Eingangsbitfolge 142 an der gleichen Bitposition, beispielsweise der Bitpositionen 347 , dazu führen, dass keine der Eingangsbitfolgen 141 und 142 eine 1 aufweist. Unter Bezugnahme auf das Verfahren 1300 wird deutlich, dass eine einzelne Eingangsbitfolgen 141 , 142 und 143 für sich alleine keinen Überlauf erzeugen kann, wenn die anderen Eingangsbitfolgen an derselben Bitposition eine logische 0 aufweisen.
-
Die Korrekturbitfolge m kann durch Erhalten der Bitmaske gemäß dem Verfahren 600 erhalten werden, wobei als Funktionsargument das Verknüpfungsergebnis multipliziert mit dem Wert 2 verwendet werden kann, was einer Verschiebung des Verknüpfungsergebnisses um eine Bitposition nach links entspricht. Wie es aus den Zeilen 12 bis 19 hervorgeht, kann eine wiederholte Anpassung zumindest zweiter der drei Eingangsbitfolgen ausgeführt werden, beispielsweise der Eingangsbitfolgen 141 und 142 , die in der veränderlichen Variable x1 und x2 prozessiert werden. Hierbei kann die Eingangsbitfolge 141 mit dem Verknüpfungsergebnis und zusätzlich mit dem Wert der Korrekturbitfolge oder Bitmaske und zusätzlich mit dem Wert 1 addiert werden. Von der Eingangsbitfolgen 142 kann der Wert des Verknüpfungsergebnisses abgezogen werden. Die Addition des Verknüpfungsergebnisses mit m und mit dem Wert 1 kann gleichbedeutend sein mit einer Verdoppelung des Verknüpfungsergebnisses. Die Bitfolgen m weist einen Wert von 1 für alle Bitpositionen auf, die bereits überprüft wurden, sowie der Bitposition, die derzeitig überprüft wird. Eine zusätzliche Addition mit dem Wert 1 führt zu einer 1 in der Bitfolgen m an der ersten Bitposition, die noch nicht überprüft ist, beispielsweise die Bitpositionen 348 in 2.
-
Die Zeilen 16 und 17 sowie 18 beschreiben die erneute Berechnung der Zwischenvariablen für den nächsten Schleifendurchlauf, das bedeutet, die nächste Wiederholung. Die dritte Eingangsbitfolge, beispielsweise die Eingangsbitfolge 143 , kann ein weiterer additiver Anteil des Geheimnisses sein, kann jedoch auch eine Zufallszahl sein. Ferner kann die Eingangsbitfolgen 143 als Zufallszahl selbst von der Vorrichtung erzeugt werden, beispielsweise, der kryptographischen Vorrichtung 10. Eine Verwendung eines zufälligen Anteils ermöglicht eine Randomisierung des Ergebnisses.
-
In anderen Worten zeigt das Verfahren 1300 einen möglichen Weg zur Durchführung der algorithmischen Logik mit mehr als zwei Eingangsbitfolgen. Einige Werte in Klarform haben eine begrenzte Menge an möglichen Verteilungen auf zwei additive Anteile. Aus einer Seitenkanalanalyseperspektive kann es daher vorteilhaft sein, einen (oder mehrere) zusätzliche Anteile zu verwenden. Ohne Beschränkung der Allgemeinheit ist diese Verbesserung unter Verwendung von drei Anteilen beschrieben, das bedeutet, ein zusätzlicher Anteil. Beginnend mit zwei additiven Anteilen kann eine Anfangsaufteilung in drei additive Anteile der erste Schritt sein. Die Addition/Subtraktion des Verfahrens kann nach wie vor an nur zwei Anteilen durchgeführt werden. Der verwendete AND-Wert kann einfach abgeleitet werden. Das grundlegende Verfahren gemäß 3 kann so ausgestaltet sein, dass AND durch Anlegen der logischen AND-Operation an die beiden Anteile berechnet wird. Die Bits, die in AND gesetzt sind, stellen die Bitpositionen dar, die einen Überlauf zu einem höheren Bit erzeugen würden, wenn beide Anteile addiert werden. Allgemein bedeutet dies, dass AND für jede Bitposition ein 1-Bit aufweist und nur falls zwei (oder mehr) Anteile ein 1-Bit an der spezifischen Position aufweisen. Das Berechnen des zu addierenden/subtrahierenden Werts auf diese Weise kann zu einem Verfahren führen, das die Transformation an drei Anteilen durchführt. Die Verwendung dieses Mechanismus führt zu einem Zufallsalgorithmus, da alle Modifikationen, die an zwei Anteilen durchgeführt werden, nichts mit den klaren Daten zu tun haben, da nach wie vor ein dritter zufällig gewählter Anteil berücksichtigt wird. Das Verfahren 1300 stellt insofern eine Modifikation des Verfahrens 300 dar.
-
Weiter Modifikationen sind ebenfalls möglich. So kann es ausreichend sein, lediglich eine der Bitfolgen zu modifizieren. Eine entsprechende Ausgestaltung eines derartigen Ausführungsbeispiels ist anhand von 14 beschrieben, die eine schematische Darstellung eines Verfahrens 1400 im Pseudo-Code zeigt. Im Unterschied zum Verfahren 1300 kann die Verarbeitungseinrichtung ausgebildet sein, um die Korrekturbitfolge 42 basierend auf der Form 2 * (AND Λ m) zu berechnen und um die Korrekturbitfolge 42 mit der Eingangsbitfolgen 141 zu addieren. Die Korrekturbitfolge 42 basiert beispielsweise auf einer AND-Verknüpfung der gemäß dem Verfahren 600 erhaltenen Bitmaske mit dem Verknüpfungsergebnis. Die Bitmaske weist an unüberprüften Bitpositionen einen Wert von logisch 0 auf, so dass ausgehend von der Überlaufposition höherwertigere Bits der Verknüpfungsbitfolge unberücksichtigt bleiben. Durch eine Multiplikation mit dem Wert 2 wird das jeweils direkt höherwertigere Bit zu 1 gesetzt, um einen Überlauf zu kompensieren. Dies kann dazu führen, dass bereits berücksichtigte Bits null bleiben und eine weitergehende Operation sowohl durch eine AND-Verknüpfung als auch durch eine arithmetische Addition effektlos für diese unberücksichtigten Bits bleiben. Ferner kann an einer Stelle, an der das Verknüpfungsergebnis 22 eine Überlaufbitposition anzeigt, der Effekt dadurch kompensiert werden, dass an der nächsthöheren Bitposition eine 1 aufaddiert wird und so der Überlauf verhindert wird. In anderen Worten zeigt 14 eine schematische Darstellung eines Verfahrens, das drei Anteile verwendet in einer weiteren Version.
-
15 zeigt eine schematische Darstellung eines Verfahrens 1500 gemäß einem Ausführungsbeispiel und im Pseudo-Code. Das Verfahren 1500 ist derart ausgestaltet, dass vier Eingangsbitfolgen 141 bis 144 verwendet werden. Das Verfahren 1500 kann so ausgestaltet sein, dass ein erstes Verknüpfungsergebnis 221 und ein zweites Verknüpfungsergebnis 222 verwendet wird, wie es in den Zeilen 13 und 14 dargestellt ist. Das Verknüpfungsergebnis 221 kann in analoger Weise zum Verknüpfungsergebnis 22 gemäß dem Verfahren 1300 und 1400 erhalten werden, das bedeutet, es erfolgt eine paarweise AND-Verknüpfung der Eingangsbitfolgen und eine XOR-Verknüpfung der Einzelergebnisse.
-
Das zweite Verknüpfungsergebnis 222 kann durch eine bitweise AND-Verknüpfung der vier Eingangsbitfolgen 141 bis 144 erhalten werden.
-
In den unterschiedlichen Verknüpfungsergebnissen 221 und 222 sind die jeweils vier Eingangsbitfolgen 141 bis 144 auf verschiedene Art miteinander verknüpft. Die Verarbeitungseinheit kann ausgebildet sein, um zumindest eine erste und eine zweite Eingangsbitfolge unter Verwendung des Verknüpfungsergebnisses 221 und/oder unter Verwendung des Verknüpfungsergebnisses 222 zu ändern, um das Auftreten des Überlaufs zu verhindern oder zu kompensieren. Gemäß dem Verfahren 1500 kann die erste Eingangsbitfolge durch die Verwendung beider Verknüpfungsergebnisse 221 und 222 geändert werden. Die Eingangsbitfolge 142 kann durch Verwendung des Verknüpfungsergebnisses 222 geändert werden. Es kann lediglich einer dieser Schritte ausgeführt werden, eine Zuordnung der zu verwendenden Verknüpfungsergebnisse zu den Eingangsbitfolgen vertauscht oder geändert sein oder andere Eingangsbitfolgen verwendet werden. Alternativ oder zusätzlich ist es möglich, auch andere Rechenoperationen zu verwenden.
-
Wie es in Zeile 17 dargestellt ist, kann die Eingangsbitfolge 141 dadurch geändert werden, dass eine arithmetische Addition des Verknüpfungsergebnisses 222 mit dem Wert 2n-1 erfolgen, das bedeutet, 1-Bits an jeder Position. Dieser Wert kann einer AND-Verknüpfung mit der Bitmaske m unterzogen werden, die gemäß dem Verfahren 600 erhalten werden kann. Das Ergebnis kann um eine Bitposition nach links verschoben werden, was einer Multiplikation mit dem Wert 2 entspricht. Das daraus erhaltene Ergebnis kann eine AND-Verknüpfung mit dem Verknüpfungsergebnis 221 unterzogen werden und eine hieraus erhaltene Bitfolge bzw. ein hierdurch repräsentierter Wert kann mit einem Wert der Eingangsbitfolge 141 addiert werden. Dies kann überlauffrei erfolgen, das bedeutet, es kann die Operation mod 2n verwendet werden. Die Eingangsbitfolge 142 kann, wie in Zeile 18 dargestellt, durch AND-verknüpfen der Bitfolge des Verknüpfungsergebnisses 222 mit der Bitmaske m erhalten werden, indem dieses Ergebnis zusätzlich um zwei Bitpositionen nach links verschoben wird. Das Ergebnis kann ebenfalls addiert werden und zwar mit der Eingangsbitfolge 142 .
-
Eine Überlauffreiheit kann durch die Modulo 2n-Operation erhalten werden. Es kann somit eine Addition auf beide Eingangsbitfolgen angewendet werden. Eine hierin beschriebene Addition kann auch als eine Subtraktion ausgeführt werden, die mit einem inversen Wert des Summanden durchgeführt wird.
-
Hierin beschriebene Ausführungsbeispiele können so ausgestaltet sein, dass das Verknüpfungsergebnis, das Informationen bezüglich der geheim zu haltenden Daten aufweisen kann, nicht Bestandteil der Ausgangsbitfolgen ist. Das bedeutet, es erfolgt eine Berechnung auf codierten oder verschlüsselten Informationen, ohne eine Entschlüsselung vornehmen zu müssen, was bezüglich der Geheimhaltung vorteilhaft ist.
-
Ausführungsbeispiele beziehen sich somit auf die Veränderung der Anteile eines Geheimnisses dahin gehend, dass deren arithmetische Addition überlauffrei ist. Die in den beschriebenen Verfahren dargestellten Pseudo-Codes können in jeder Programmiersprache implementiert werden und/oder ganz oder teilweise als Hardware-Schaltungen hergestellt werden. Obwohl die hierin beschriebenen Verfahren als jeweils eigenständige Verfahren beschrieben sind, können die Verfahren 400, 500, 700, 900, 1000, 1100, 1300, 1400 und/oder 1500 einzeln oder in Kombination mit dem Verfahren 1300 kombiniert werden und/oder zu anderen Kombinationen herangeführt werden. Insbesondere können die einzelnen dadurch erhaltenen Weiterbildungen beliebig miteinander kombiniert werden, da die Mechanismen einander nicht beeinträchtigen. Ausführungsbeispiele stellen Mechanismen bereit, wie die Seitenkanalresistenz als eine Kernaufgabe beim Umgang mit unterschiedlichen Maskierungsschemata verbessert werden kann. Die Grundmechanismen, beispielsweise, 3, können so implementiert werden, dass eine Funktion des darunter liegenden Systems nicht beeinträchtigt wird, aber dennoch eine hohe Seitenkanalresistenz erhalten wird. Ein Aspekt hierin beschriebener Ausführungsbeispiele besteht darin, Anteile iterativ von additiven Anteilen zu Anteilen mit einer XOR-Verknüpfung zu modifizieren, während ein kontinuierliches Auffrischen der vollständigen Daten durchgeführt wird. Ausführungsbeispiele können überall dort verwendet werden, wo eine Transformation von Addition zu XOR notwendig ist. Abhängig von dem Verwendungsfall kann eine spezifische Kombination der bereitgestellten Mechanismen ausgewählt und angewendet werden. Manche Ausführungsbeispiele können Teile einer Implementierung eines SHA-Verfahrens (SHA = Secure Hash Algorithm; sicherer Hash-Algorithmus), der einen fortgeschrittenen Seitenkanalschutz bereitstellt. In diesem Fall kann die Implementierung auf einer permanenten Aufteilung geheimer Daten auf zumindest zwei Anteile basieren. Um die permanente Aufteilung beizubehalten, kann eine Transformation der Maskierung genutzt werden, da sowohl Addition als auch XOR-Operationen an geheimen Daten durchzuführen sind.
-
16 zeigt ein schematisches Blockschaltbild eines Systems 160 gemäß einem Ausführungsbeispiel, das die kryptographische Vorrichtung 10 umfasst. Die kryptographische Vorrichtung 10 kann ausgebildet sein, um zumindest eines der hierin beschriebenen Ausführungsbeispiele im Zusammenhang mit den Verfahren 300, 400, 500, 700, 900, 1000, 1100, 1300, 1400 und/oder 1500 auszuführen.
-
Ein Verfahren zum Umwandeln von Eingangsbitfolgen, deren überlauffreie arithmetische Addition ein Geheimnis ergibt, in Ausgangsbitfolgen, deren logische XOR-Verknüpfung das Geheimnis ergibt, umfasst ein Bereitstellen zumindest einer ersten Eingangsbitfolge und einer zweiten Eingangsbitfolge. Das Verfahren umfasst a) Verknüpfen der ersten Eingangsbitfolge und der zweiten Eingangsbitfolge zum Erhalten eines Verknüpfungsergebnisses, das Überlaufbitpositionen anzeigt, an denen sowohl die erste Eingangsbitfolge als auch die zweite Eingangsbitfolge einen Wert von eins aufweisen. Das Verfahren umfasst ferner b) ein Ändern der ersten Eingangsbitfolge und/oder der zweiten Eingangsbitfolge an zumindest einer Überlaufbitposition. Das Verfahren umfasst ein wiederholtes Durchführen der Schritte a) und b) unter Verwendung der jeweils geänderten Eingangsbitfolgen, bis das Verknüpfungsergebnis keine Überlaufbitposition mehr anzeigt und die Ausgangsbitfolgen erhalten sind.
-
Die hierin beschriebenen Ausführungsbeispiele lösen Aufgaben in Bezug auf Fragen, etwa wie Dummy-Daten auf einer CPU auf effiziente Weise erzeugt und/oder abgeleitet werden können und wie Dummy-Anweisungen bzw. Operationen zur Maskierung in den Code-Fluss integrierbar sind, so dass dieselben ununterscheidbar sind. Gemäß hierin beschriebenen Ausführungsbeispielen wird lediglich eine Verknüpfung erzeugt, die zum Ableiten von Informationen erhalten wird, nach Erhalt der Ausgangsbitfolgen aber wieder verworfen werden kann. Ausführungsbeispiele betrachten sichere Codierregeln, ermöglichen gleichzeitig eine hohe Leistungsfähigkeit der Verfahrensausführung, in Software und/oder Hardware.
-
Anhand der Verfahren 400, 500, 700, 900, 1000, 1100, 1300, 1400 und 1500 wurden mehrere Möglichkeiten beschrieben, wie das Verfahren 300 bezüglich der Seitenkanalanalyse verbessert werden kann. Die Verbesserungen umfassen ein
- 1. Randomisieren, welcher Anteil für Addition bzw. Subtraktion verwendet wird;
- 2. Randomisieren von Bits an niedrigeren Positionen als der aktuellen betrachteten Bitposition auf eine XOR-Weise;
- 3. Randomisieren von Bits an höheren Positionen als der aktuellen betrachteten Bitposition auf eine additive Weise;
- 4. Durchführen der algorithmischen Logik an mehr als zwei Anteilen;
- 5. Der zu transformierende Datenabschnitt kann in einem größeren Abschnitt von Pseudo/Zufallsdaten eingebettet werden.
-
Das Hamming-Gewicht des klaren Werts ist nicht unabhängig von dem durchschnittlichen Hamming-Gewichts des/der AND-Werts/AND-Werte. Daher beeinflusst das Hamming-Gewicht die Laufzeit des Algorithmus, d. h., die Wahrscheinlichkeitsverteilung ausgeführte Iterationen. Da diese Beziehung durch einen Angreifer beobachtet und möglicherweise verwendet werden kann, um Informationen zu erhalten, gibt es zusätzlich Maßnahmen zum Verbessern des Seitenkanalverhaltens:
- 6. Verbergen der Abhängigkeit durch Hinzufügen einer gewissen Zufälligkeit in die Schleifenbedingung;
- 7. Verwenden einer konstanten Zeitgebung durch Erzwingen einer maximalen Anzahl von Iterationen, d. h., es werden immer n-Iterationen durchgeführt; und
- 8. Verwenden einer Fenstertechnik zum Verarbeiten von mehr als einem Bit auf einmal, z. B., es werden immer zwei Bits gleichzeitig verarbeitet.
-
Die Mechanismen aller dieser Verbesserungen sind unabhängig voneinander und können daher unabhängig angewendet und/oder miteinander kombiniert werden.
-
Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, sodass ein Block oder ein Bauelement einer Vorrichtung auch als ein entsprechender Verfahrensschritt oder als ein Merkmal eines Verfahrensschrittes zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar.
-
Je nach bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Floppy-Disk, einer DVD, einer Blu-ray Disc, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, einer Festplatte oder eines anderen magnetischen oder optischen Speichers durchgeführt werden, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem derart zusammenwirken können oder zusammenwirken, dass das jeweilige Verfahren durchgeführt wird. Deshalb kann das digitale Speichermedium computerlesbar sein. Manche Ausführungsbeispiele gemäß der Erfindung umfassen also einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem derart zusammenzuwirken, dass eines der hierin beschriebenen Verfahren durchgeführt wird.
-
Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode dahin gehend wirksam ist, eines der Verfahren durchzuführen, wenn das Computerprogrammprodukt auf einem Computer abläuft. Der Programmcode kann beispielsweise auch auf einem maschinenlesbaren Träger gespeichert sein.
-
Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem maschinenlesbaren Träger gespeichert ist.
-
Mit anderen Worten ist ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens somit ein Computerprogramm, das einen Programmcode zum Durchführen eines der hierin beschriebenen Verfahren aufweist, wenn das Computerprogramm auf einem Computer abläuft. Ein weiteres Ausführungsbeispiel der erfindungsgemäßen Verfahren ist somit ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren aufgezeichnet ist.
-
Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist somit ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren darstellt bzw. darstellen. Der Datenstrom oder die Sequenz von Signalen kann bzw. können beispielsweise dahin gehend konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, transferiert zu werden.
-
Ein weiteres Ausführungsbeispiel umfasst eine Verarbeitungseinrichtung, beispielsweise einen Computer oder ein programmierbares Logikbauelement, die dahin gehend konfiguriert oder angepasst ist, eines der hierin beschriebenen Verfahren durchzuführen.
-
Ein weiteres Ausführungsbeispiel umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren installiert ist.
-
Bei manchen Ausführungsbeispielen kann ein programmierbares Logikbauelement (beispielsweise ein feldprogrammierbares Gatterarray, ein FPGA) dazu verwendet werden, manche oder alle Funktionalitäten der hierin beschriebenen Verfahren durchzuführen. Bei manchen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hierin beschriebenen Verfahren durchzuführen. Allgemein werden die Verfahren bei einigen Ausführungsbeispielen seitens einer beliebigen Hardwarevorrichtung durchgeführt. Diese kann eine universell einsetzbare Hardware wie ein Computerprozessor (CPU) sein oder für das Verfahren spezifische Hardware, wie beispielsweise ein ASIC.
-
Die oben beschriebenen Ausführungsbeispiele stellen lediglich eine Veranschaulichung der Prinzipien der vorliegenden Erfindung dar. Es versteht sich, dass Modifikationen und Variationen der hierin beschriebenen Anordnungen und Einzelheiten anderen Fachleuten einleuchten werden. Deshalb ist beabsichtigt, dass die Erfindung lediglich durch den Schutzumfang der nachstehenden Patentansprüche und nicht durch die spezifischen Einzelheiten, die anhand der Beschreibung und der Erläuterung der Ausführungsbeispiele hierin präsentiert wurden, beschränkt sei.