-
Die vorliegende Erfindung bezieht
sich allgemein auf Logikschaltungen und insbesondere auf solche
Logikschaltungen, bei denen zwei verschiedene Schaltungszweige zwischen
Eingang und Ausgang geschaltet sind, um ein Ergebnis und ein invertiertes
Ergebnis in Abhängigkeit
von ein oder mehreren Eingängen
zu berechnen.
-
Schaltungen dieser Art werden beispielsweise
bei Schaltungen mit einer Dual-Rail-Codierung oder bei Schaltungen
der NCL (NULL CONVENTION LOGIC® (eingetragenes Warenzeichen)
= Nullkonventionslogik) der Firma Theseus, oder aber anderen Schaltungen
verwendet.
-
4 zeigt
allgemein den Aufbau solcher Logikschaltungen anhand eines Beispieles
eines Logikbuauelementes, welches zwei Eingangsoperanden A, B auf
einen Ergebnisoperanden C abbildet und hierbei das Ergebnis C sowie
das invertierte Ergebnis C ausgibt.
Wie es 4 zu entnehmen
ist, besteht das Logikbauelement, das allgemein mit 300 angezeigt
ist, auf der Eingangsseite aus zwei Eingängen 302 und 304 für die Eingangsoperanden
A bzw. B, auf der Ausgangsseite aus zwei Ausgängen 306 und 308 für das Ergebnis
C bzw. das invertierte Ergebnis C und dazwischen aus zwei Logikanordnungen 310 und 312,
von denen jede mit beiden Eingängen 302 und 304 gekoppelt
ist, und die Logikanordnung 310 mit dem Ausgang 306 und
die Logikanordnung 312 mit dem Ausgang 308 gekoppelt
ist.
-
Die Logikanordnungen 310 und 312 sind
angepaßt,
um zusammen eine bestimmte Logikfunktion bezüglich der Eingangsoperanden
A und B durchzuführen,
wie z.B. eine UND-, ODER- oder XOR-Funktion, oder eine andere kompliziertere
Funktion. Folglich ist die Logikanordnung 310 dazu vorgesehen, das
Ergebnis C aus den Eingangsoperanden A und B zu berechnen, während die Logikanordnung 312 dazu
vorgesehen ist, aus den Eingangsoperanden A und B das invertierte
Ergebnis C zu berechnen. Je nach
Art der Logikfunktion und der verwendeten Gatter innerhalb der Logikanordnungen 310 und 312,
deren Auswahl sich wiederum beispielsweise nach der verwendeten
Herstellungstechnik zur Integration der Logikschaltung verwendet
wird, richtet, benötigen
die Logikanordnungen 310 und 312 zur Berechnung
des Ergebnisses C bzw. des invertierten Ergebnisses C unterschiedliche Zeitdauern und unterschiedliche Leistung.
Anders ausgedrückt
können
die Logikanordnungen 310 und 312 unterschiedliche
Laufzeiten und unterschiedliche Leistungsaufnahmen aufweisen.
-
Ein Nachteil des bezugnehmuend auf 4 beschriebenen Logikbauelements
besteht nun darin, daß bei
Verwendung derartiger Logikbauelemente in kryptographischen Schaltungen,
wie z.B. Chipkarten oder SIM-Karten, abhängig von den zu verschlüsselnden
Daten innerhalb eines Logikbauelementes gemäß 4 unterschiedliche Laufzeiten und Leistungsaufnahmen
bewirkt werden, die wiederum Potential für mögliche Angriffe bieten, um
beispielsweise auf den verwendeten Kryptographiealgorithmus, den
kryptographischen Schlüssel
und andere geheime Daten rückzuschließen. Angriffe,
die hierzu geeignet sind, werden als Hardwareangriffe bezeichnet, wie
z.B. DPA- (Differential Power Analysis = Differentielle Leistungsanalyse-)
und Zeitmessungs- (Timing-) Angriffe. In dem Fall, daß beispielsweise
das Logikbauelement von 4 getaktet
innerhalb einer synchronen Logik arbeitet, verändert sich beispielsweise der
Verlauf des Leistungsverbrauuches der Schaltung innerhalb eines
Taktes, da je nach Eingangsdatum vermehrt Logikzweige mit derjenigen Logikanordnung
auf einen logisch hohen Zustand, wie z.B. 5 V, als dem Ergebnis
umgeschalten und, in dem Fall einer CMOS-Implementierung, hierdurch Leistung
verbrauchen, die im Vergleich zu den jeweils anderen Logikzweigen
eine höhere
oder niedrigere Leistungsaufnahme bzw. eine längere oder kürzere Laufzeit
aufweisen. In dem Fall des Logikbauelements von 4 unterscheidet sich beispielsweise die
Leistungs aufnahme sowie der zeitliche Verlauf dieser Leistungsaufnahme
für verschiedene
Eingangsoperanden A und B abhängig
davon, welcher der beiden Logikzweige, nämlich derjenige, in den die
Logikanordnung 310 geschaltet ist, oder derjenige, in den
die Logikanordnung 312 geschaltet ist, einen logisch hohen
Zustand als Ergebnis bzw. invertiertem Ergebnis ausgibt.
-
Noch gravierender wirken sich die
unterschiedlichen Laufzeiten von Leistungsaufnahmen der verschiedenen
Schaltungszweige der verschiedenen Logikbauelemente in dem Fall
der Verwendung derselben in asynchronen Schaltungen als selbstgetaktete
Logikbauelemente aus. Je nach zu verarbeitendem bzw. zu verschlüsselndem
Datum addieren sich die unterschiedlichen Leistungsaufnahmen und
Laufzeiten, die je nach dem entstehen, welcher der Leistungsuzweige „schaltet", zu einer unterschiedlichen
Gesamtleistungsaufnahme und Gesamtberechnungszeitdauer pro Verschlüsselung oder
Teiloperation eines kryptographischen Algorithmus.
-
Es ist deshalb die Aufgabe der vorliegenden Erfindung
eine Logikschaltung zu schaffen, die eine größere Sicherheit gegen Hardwareangriffe
erzielt.
-
Diese Aufgabe wird durch eine Logikschaltung
gemäß Anspruch
1 oder 2 gelöst.
-
Der vorliegenden Erfindung liegt
die Erkenntnis zugrunde, daß die
Sicherheit von Schaltungen, wie z.B. insbesondere kryptographische
Schaltungen, wie z.B. in Chipkarten oder SIM-Karten, gegen Hardwareangriffe, wie
z.B. Leistungs- und Zeitmessungsangriffe, gesteigert werden kann,
wenn diese Schaltungen aus Logikschaltungen aufgebaut werden, bei
denen der Schaltungszweig mit der Logikanordnung zur Berechnung
des Ergebnisses und der Schaltungszweig mit der Logikanordnung zur
Berechnung des invertierten Ergebnisses hinsichtlich ihrer Laufzeiten
bzw. Leistungsaufnahmen angeglichen bzw. homogenisiert werden, indem
in einem oder beiden der Schaltungszweige eine Verzögerungsschaltung
oder Kompensationsschaltung vorgesehen wird, die den Unterschied
der Leistungsaufnahmen bzw. Laufzeiten dieser Logikanordnungen verringert
oder sogar vollständig
ausgleicht. Unter einem nur geringen schaltungstechnischen Aufwand wird
hierdurch eine sich in Abhängigkeit
von den zu verarbeitenden Eingangsoperanden geringere Variation
der Leistungsaufnahme und benötigten
Laufzeit erzielt, da die Laufzeit bzw. die Leistungsaufnahme, die
dabei entsteht, wenn der eine Schaltungszweig schaltet, sich weniger
von der Laufzeit bzw. Leistungsaufnahme unterscheidet, die in dem
Fall entsteht, wenn der andere Schaltungszweig schaltet. Durch den
geringeren Unterschied bzw. der geringeren Variation bezüglich der
Laufzeiten und Leistungsaufnahmen ist die Gefahr des Erfolgs von
Leistungs- bzw. Timing-Attacken durch Angreifer deutlich reduziert.
-
Ein spezielles Ausführungsbeispiel
der vorliegenden Erfindung bezieht sich auf asynchrone selbstgetaktete
Schaltungen, und insbesondere auf solche, welche nach der NCL-Logik
synthetisiert wurden. Durch die Angleichung/Homogenisierung des Zeitverhaltens
bzw. der Leistungsaufnahme der einzelnen, sogenannte „vollständige Funktionen" implementierenden
Logikschaltungen, kann die Sicherheit einer sich aus diesen Logikschaltungen
zusammensetzenden kryptographischen Schaltung gegen Zeitmessungs-
und Leistungsangriffe, wie z.B. DPA-Angriffe, deutlich gesteigert werden.
Die kryptographische Schaltung implementiert beispielsweise einen symmetrischen
kryptographischen Algorithmus, wie z.B. einen DES- (Data Encryption
Standard = Datenverschlüsselungsstandard)
oder AES(Advanced Encryption Standard = Verbesserter Verschlüsselungsstandard)
Algorithmus, oder einen asymmetrischen, wie z.B. den RSA-Algorithmus.
-
Nachfolgend werden bezugnehmend auf
die beiliegenden Zeichnungen bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung näher
erläutert. Es
zeigen:
-
1 ein
allgemeines Ausführungsbeispiel einer
Logikschaltung gemäß der vorliegenden
Erfindung;
-
2a ein
nicht gemäß der vorliegenden
Erfindung implementiertes NCL-UND-Gatter;
-
2b ein
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung implementiertes NCL-UND-Gatter;
-
3a ein
nicht gemäß der vorliegenden
Erfindung implementiertes NCL-ODER-Gatter;
-
3b ein
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung implementiertes NCL-ODER-Gatter; und
-
4 einen
Schaltungsaufbau einer Logikschaltung, anhand dessen der Nachteil
des bisherigen Logikschaltungsaufbaus verdeutlicht wird.
-
Es wird darauf hingewiesen, daß in den 2 – 3b gleiche bzw. funktionsgleiche Elemente mit
gleichen bzw. ähnlichen
Bezugszeichen versehen sind, und daß bei der folgenden Beschreibung dieser
Figuren eine wiederholte Beschreibung dieser Elemente weggelassen
wird.
-
Zunächst wird bezugnehmend auf 1 eine Logikschaltung gemäß einem
allgemeinen Ausführungsbeispiel
der vorliegenden Erfindung beschrieben, bei der die Logikschaltung
wie diejenige von 4 zwei
Eingangsoperanden A, B auf einen Ergebnisoperanden C abbildet und
hierbei ein Ergebnis C und ein invertiertes Ergebnis C ausgibt. Die Logikschaltung von 1, die allgemein mit 10
angezeigt ist, umfaßt
auf der Eingangsseite einen Eingang 11 mit einem Operandeneingang 12 für den Eingangsoperanden
A und einem Operandeneingang 14 für den Eingangsoperanden B,
auf der Ausgangsseite einen Ausgang 15 mit einem Teilausgang 16 für das Ergebnis
C und einen Teilausgang 18 für das invertierte Ergebnis C sowie dazwischen einen
mit dem Eingang 11 und dem Teilausgang 16 gekoppelten Schaltungszweig 19,
der eine Logikanordnung 20 umfaßt, und einen mit dem Eingang 11 und
dem Teilausgang 18 gekoppelten Schaltungszweig 21,
der eine Logikanordnung 22 umfaßt. Beide Logikanordnungen 20 und 22 sind
sowohl mit dem Operandeneingang 12 als auch mit dem Operandeneingang 14 gekoppelt.
-
Die Logikanordnungen 20 und 22 sind
derart entworfen, daß dieselben
gemäß einer
Logikfunktion der Logikschaltung 10 zusammenwirken, um
aus den Eingangsoperanden A und B ein durch die Logikfunktion bestimmtes
Ergebnis C bzw. das invertierte Ergebnis C zu berechnen. Die Logikfunktion ist beispielsweise
eine ODER-, UND- oder XOR-Funktion oder eine kompliziertere, aus
diesen Funktionen zusammengesetzte Funktion. Jede Logikanordnung 20 bzw. 22 besitzt
für ihre
jeweilige Berechnung eine unterschiedliche Laufzeit bzw. Leistungsaufnahme,
die beispielsweise von einer unterschiedlichen Anzahl von internen
Logikstufen und allgemein durch einen unterschiedlichen Aufbau aus
Gattern herrührt.
Anders ausgedrückt
benötigt
ein Umschaltvorgang für das
Ergebnis C eine andere Laufzeit und Leistungsaufnahme als ein die
Logikanordnung 22 durchlaufendes Signal.
-
In dem vorliegenden Fall von 1 ist exemplarisch angenommen
worden, daß die
Logikanordnung 20 eine kürzere Laufzeit und eine geringere Leistungsaufnahme
als die Logikanordnung 22 aufweist. Zur Verringerung des
Unterschieds zwischen den Laufzeiten und den Leistungsaufnahmen
der beiden Logikanordnungen 20 und 22 ist deshalb
eine Schaltung 24 in den Schaltungszweig 19 geschaltet, die
ihrerseits wiederum eine Laufzeit und eine Leistungsaufnahme aufweist.
Die Laufzeit und Leistungsaufnahme des Schaltungszweiges 19 setzt
sich deshalb nunmehr aus den Laufzeiten der Logikanordnung 20 und
der Schaltung 24 zusammen. In ähnlicher Weise setzt sich die
Leistungsaufnahme des Schaltungszweiges 19 aus der Leistungsaufnahme der
Logikanordnung 20 und der Leistungsaufnahme der Schaltung 24 zusammen.
Die Schaltung 24 dient somit als Ver zögerungsschaltung und Kompensationsschaltung
in einem. Im Idealfall ist die Schaltung 24 derart ausgelegt,
daß die
Summe der Laufzeiten der Logikanordnung 20 und der Schaltung 24 und
somit die Laufzeit des Schaltungszweiges 19 gleich der Laufzeit
des Schaltungszweiges 21 ist. In ähnlicher Weise wäre die Schaltung 24 ideal
ausgelegt, wenn die Summe der Leistungsaufnahmen der Logikanordnung 20 und
der Schaltung 24 gleich der Leistungsaufnahme des Schaltungszweiges 21 wäre. Die Schaltung 24 übernimmt
in logischer Hinsicht keine Funktion, d.h. verändert nicht den von der Logikanordnung 20 berechneten
logischen Zustand für
das Ergebnis C an dem Teilausgang 16.
-
Aufgrund der durch die Schaltung 24 bewirkten
Angleichung/Homogenisierung des Zeit- und Leistungsaufnahmeverhaltens
der Logikschaltung 10 wird es Angreifern erschwert, durch
Hardwareangriffe, die beispielsweise auf Zeitmessungen, Stromverbrauchsmessungen
oder Abstrahlungsmessungen beruhen, an Informationen zu gelangen,
die mit Hilfe eines kryptographischen Algorithmus verarbeitet werden,
der durch eine Schaltung implementiert ist, in der die Logikschaltung 10 von 1 eingesetzt wird.
-
Obwohl bezugnehmend auf 1 zum leichteren Verständnis die
Logikanordnungen 20 und 22 als vollständig getrennt
voneinander dargestellt wurden, ist die vorliegende Erfindung auch
auf Logikschaltungen anwendbar, bei denen die Logikanordnungen für das Ergebnis
bzw. das invertierte Ergebnis einen gemeinsamen Teil aufweisen,
sich aber ansonsten voneinander unterscheiden.
-
Ferner wird darauf hingewiesen, daß die vorhergehende
Beschreibung von 1 sowohl
auf eine synchron getaktete als auch eine asynchron selbstgetaktete
Implementierung der Logikschaltung 10 anwendbar ist. In
dem Fall synchron arbeitender, getakteter Logikanordnungen 20 und 22 sind
die Eingangsoperanden A und B beispielsweise einzelne Bits, die über ein fache
Leitungen von den Operandeneingängen 12 und 14 zu
den Logikanordnungen 20 und 22 übertragen
werden und dort abhängig
von der durch die Logikschaltung 10 implementierten Logikfunktion
auf das Ergebnis C bzw., das invertierte Ergebnis C abgebildet werden, die mit einem logischen Zustand
von Wahr oder Unwahr an den Teilausgängen 16 bzw. 18 ausgegeben
werden. Die Laufzeitunterschiede der Logikanordnungen 20 und 22 könnte beispielsweise
einen Bruchteil eines Taktes betragen, der durch die Verzögerungsschaltung 24 reduziert
werden würde.
Auf ähnliche
Weise könnte
ein Unterschied in der Leistungsaufnahme der beiden Logikanordnungen 20 und 22 durch
die Kompensationsschaltung 24 ausgeglichen bzw. reduziert
werden.
-
Um die Leistungsaufnahme und Laufzeiten feiner
angleichen bzw. homogenisieren zu können, und um gleichzeitig dem
Umstand Rechnung zu tragen, daß häufig das
Vorsehen einer die Leistungsaufnahme angleichenden Schaltung in
einem Leistungszweig gleichzeitig eine Erhöhung der Laufzeit bedeutet,
kann anstelle der Schaltung 24 eine Schaltung 26,
die in 1 mit gestrichelten
Linien angezeigt ist, in sowohl den Schaltungszweig 19 als
auch den Schaltungszweig 21 geschaltet sein, um ohne Auswirkung
auf die logische Funktion der beiden Schaltungszweige 19 und 21 gleichzeitig
auf beide Schaltungszweige 19 und 21 derart einzuwirken,
daß eine Angleichung
und Homogenisierung der Leistungsaufnahme und Laufzeit der beiden
Schaltungszweige 19 und 21 bewirkt wird.
-
Nachdem im vorhergehenden Bezug nehmend
auf 1 ein allgemeines
Ausführungsbeispiel für eine Logikschaltung
beschrieben worden ist, werden im folgenden bezugnehmend auf die 2 und 3 spezielle
Ausführungsbeispiele
für Logikschaltungen
der Art von 1 beschrieben,
und zwar bezugnehmend auf 2 ein eine
UND-Funktion implementierendes Gatter und bezugnehmend auf 3 ein eine ODER-Funktion implementierendes
Gatter nach der NCL-Logik.
-
Bevor auf die 2 und 3 Bezug genommen wird, wird im folgenden
kurz die Nullkonventionslogik bzw. NCL-Logik der Firma Theseus Logic
Inc. in der Form, wie sie den Ausführungsbeispielen von 2 und 3 zugrunde
liegt, kurz erläutert,
wobei für
weitergehende Einzelheiten auf den Artikel „NULL CONVENTION LOGIC" von D.N. Fant und
S.A. Brandt verwiesen wird, der auf der Internetseite von Theseus „www://www.theseus.com/
aboutncl.htm" per Link
im PDF-Format abrufbar ist und hiermit in Bezug auf die im folgenden
beschriebene Form der NCL®-Logik unter Bezugnahme
aufgenommen wird.
-
Gemäß der NCL-Logik wird nur einem
von zwei Zustandswerten, die ein binärer logischer Zustand auf einer
Datenleitung annehmen kann, eine DATA- bzw. Daten-Funktion zugeordnet,
während der
jeweils andere Zustandswert als NULL bezeichnet wird, und das Fehlen
eines DATA-Wertes anzeigt. DATA wird beispielsweise mit einem Zustand
elektrisch hohen Potentials bzw. mit hoher Spannung, z.B. 5V oder
3,5V, auf einer Datenleitung übertragen, während NULL
mit einem Zustand elektrisch niedrigen Potentials bzw. mit niedriger
Spannung, wie z.B. 0V, übertragen
wird. Da auf einer einzigen Datenleitung lediglich DATA oder NULL,
d.h. nur ein einziger logischer Wert, übertragen werden kann, werden
zur Übertragung
binärer
Operanden zwei Leitungen bzw. Rails verwendet. Dem logischen Wert
FALSCH (F) eines binären
Operanden wird per Definition beispielsweise ein DATA-Wert, d.h.
ein Zustand elektrisch hohen Potentials, auf einer ersten Rail bzw. Leitung,
die in den im folgenden beschriebenen Figuren mit einem Kreis an
der Rail dargestellt ist und als F- oder 0-Rail bezeichnet wird,
und ein NULL-Wert, d.h. ein Zustand elektrisch niedrigen Potentials,
auf der zweiten Rail zugeordnet, die als T- oder 1-Rail bezeichnet wird.
Dementsprechend wird dem logischen Wert RICHTIG (T = TRUE) die umgekehrte Kombination
von Zuständen
auf den beiden den jeweiligen Operanden übertragenden Rails zugeordnet,
nämlich
ein Zustandswert DATA auf der zweiten T-Rail und ein Zustandswert NULL auf der
ersten F-Rail.
-
Die NCL-Logik ist eine asynchrone
Logik und zeichnet sich dadurch aus, daß kein allgemeiner Takt zu
ihrem Betrieb notwendig ist. Dies wird im wesentlichen durch Einführung eines
zusätzlichen
Werts NULL (N) zu den logischen Werten F und T erzielt. Jeder Operand
oder seine ihn übertragende
Dual-Rail-Leitung
kann folglich einen von drei unterschiedlichen Werten annehmen.
Dem zusätzlichen Wert
N wird per Definition die Kombination von logischen Zuständen auf
den beiden den jeweiligen Operanden übertragenden Rails zugeordnet,
bei der beide logische Zustände
den Wert NULL aufweisen bzw. auf ein elektrisch niedriges Potential
eingestellt sind.
-
Da auf einer Rail lediglich ein Datenwert DATA
und ansonsten lediglich NULL, was sozusagen Nicht-DATA bedeutet, übertragen
werden kann, ist bei der NCL-Logik für ein Logikgatter die einzig
unterscheidbare Größe in dem
Fall mehrere eingehenden Rails, wie viele DATA-Werte auf den Rails übertragen werden.
Folglich sind NCL®-Schaltungen vornehmlich
aus diskreten Schwellenwertgattern aufgebaut, von den zwei verschiedene
Ausführungen
(angezeigt mit „22" und „13") in den 2 und 3 gezeigt
sind. Diskrete Schwellenwertgatter besitzen N-Eingänge und
einen Ausgang. Ein N-Aus-M-Gatter (in den 2 bis 3 durch zwei Zahlen innerhalb des Gatters ausgedrückt, von
denen die erste N und die zweite M angibt) hat die Eigenschaft,
am Ausgang den Wert DATA auszugeben, wenn auf Bleichvielen wie N
oder auf mehr als N der M Eingänge
der Wert DATA vorliegt. Andernfalls gibt es einen NULL-Wert aus.
-
Aufgrund der obigen Vorkehrungen
gemäß der NCL-Logik,
d.h. des Vorsehens des zusätzlichen Wertes
NULL für
einen Operanden und des Aufbaus der Gatter als diskrete Schwellenwertgatter,
ist es möglich,
aus NCL®-Logikgattern,
die zwei Eingangsoperanden auf einen Ausgangsoperanden abbilden, eine
asynchrone selbstgetaktete Schaltung aufzubauen. Geeignet aufgebaute
NCL-Gatter sind derart aufgebaut, daß sie ausgehend von einem Zustand, da
alle Eingangsoperanden den Wert NULL aufweisen, erst dann einen
logischen Wert (F oder T) ausgeben, wenn alle Eingangsoperanden
zu einem logischen Wert (T oder F) gewechselt haben. Dies stellt sicher,
daß am
Ende einer aus diesen Logikbauelementen aufgebauten Schaltung erkannt
werden kann, ob das vollständige
Ergebnis am Ausgang anliegt, das auf einem vollständigen Satz
von Eingangsoperanden beruht.
-
Umgekehrt wird bei der NCL-Logik
sichergestellt, daß vor
Beginn des nächsten
Berechnungszyklusses ein NULL-Zyklus erfolgt, bei dem alle Eingangsoperanden
auf den Wert NULL eingestellt werden, damit ein nachgeschalteter
Empfänger
anhand des empfangenen Ergebnissignales erkennen kann, wann ein
neuer und insbesondere gültiger
Wert vorliegt. Hierzu sind die Logikbauelemente gemäß der NCL-Logik
derart aufgebaut, daß sie
erst dann von einem logischen Ergebniswert (F oder T) zu dem Wert
NULL wechseln, wenn alle Eingangsoperanden zu dem Wert NULL gewechselt
haben. Gemäß der im folgenden
bezugnehmend auf 2 und 3 beschriebenen
Form der NCL-Logik wird dies durch einen speziellen Aufbau der N-Aus-M-Gatter
durchgeführt. Diese
sind derart aufgebaut, daß sie
einen Hystereseeffekt aufzeigen. Derartige N-Aus-M-Gatter wechseln
von einem Wert NULL zu einem Wert DATA an ihrem Ausgang, wenn mindestens
N der M Eingänge den
Wert DATA aufweisen. Allerdings wechseln diese N-Aus-M-Gatter erst
dann wieder zu dem Ergebniswert NULL, wenn alle Eingangswerte NULL
sind. Andernfalls verbleibt das Gatter in seinem derzeitigen Zustand.
-
Die Erzielung des Hystereseeffektes
bei den N-Aus-M-Gattern gemäß der NCL-Logik
in der oben beschriebenen Form kann beispielsweise durch einen Rückkopplungskreis
erzielt werden. Hierbei umfaßt
ein N-Aus-M-Gatter neben den M externen Eingängen N – 1 weitere interne Eingänge auf,
die mit dem Ausgang des N-Aus-M-Gatters verbunden sind. Hat der
Ergebniswert des N-Aus-M-Gatters einmal den Wert DATA angenommen,
so liegt dieser Wert DATA N-1 mal am Eingang bzw. an N-1 internen
Eingängen
des N-Aus-M-Gatters an. Die Anzahl der Eingänge, ex tern oder intern, die
den Wert DATA aufweisen, ist deshalb so lange größer oder gleich N, so lange
nur einer der externen M Eingänge
den Wert DATA aufweist, da während
dieser Zeit zumindest die N-1 rückgekoppelten
DATA-Werte an den internen Eingängen
vorliegen. Erst wenn alle Eingangswerte an den M externen Eingängen den
Wert NULL angenommen haben, wechselt auch der Ergebniswert des N-Aus-M-Gatters
auf den Wert NULL. Weitere Informationen zu dem Aufbau und dem Verhalten
von Schwellenwertgattern mit Hystereseeffekten gemäß der NCL-Logik in der hier
beschriebenen Form können
dem Artikel „CMOS
Circuit Design of Threshold Gates with Hystereses" von G.E. Sobelman
und K.F. Fant entnommen werden, der auf der im vorhergehenden angegebenen
Internetseite der Firma Theseus per Link im PDF-Format abgerufen
werden kann, und der hiermit unter Bezugnahme aufgenommen wird.
Ein weitere mögliche,
in 2 und 3 aber nicht
verwendet Form der NCL-Logik sieht die Verwendung von zwei Dual-Rail-Leitungen
pro Eingangsoperanden mit zwei logischen Zuständen T und F vor.
-
Bei den bezugnehmend aus den 2 und 3 beschriebenen
Beispielen für
NCL- UND- bzw. -ODER-Gatter wird die Eigenschaft, daß am Ausgang
des Gatters erst dann von einem logischen Wert T oder F auf den
Wert NULL gewechselt wird, wenn alle Eingangsoperanden NULL sind,
dadurch sichergestellt, daß jede
Kombination von zwei Rails der insgesamt vier Rails der beiden Eingangsoperanden,
genauer jede Kombination einer Rail des ersten Eingangsoperanden
und einer Rail des anderen Eingangsoperanden) in ein 2-Aus-2-Gatter
mit Hystereseeffekt eingegeben werden, was im folgenden noch näher ausgeführt wird.
-
Durch die beiden im vorhergehenden
beschriebenen Eigenschaften der NCL-Logik, nämlich das Ausgeben eines logischen
Wertes erst, wenn alle Eingangsoperanden einen logischen Wert aufweisen,
bzw. die Sicherstellung der Vollständigkeit der Eingangskriterien
für die
Daten in Relation zu NULL und das Zurückkehren in den NULL-Ausgangswert erst
dann, wenn wieder alle Eingangsoperanden NULL sind, bzw. die Sicherstellung
der Vollständigkeit
der Eingangskriterien für
NULL in Relation zu den Daten, ist gewährleistet, daß eine auf
solchen Logikbausteinen aufgebaute Schaltung ohne gemeinsamen Takt
auskommt und somit nahezu unanfällig
gegenüber
leitungsbedingten Verzögerungen (delay
insensitive) ist (aufgrund der Rückkopplung zur
Hystereseerzeugung besteht eine nicht-kritische Zeitbeziehung).
-
Nachdem im vorhergehenden die wichtigsten
Grundzüge
der NCL-Logik in
der hier relevanten Form beschrieben worden sind, wird auf die 2 und 3 Bezug
genommen.
-
2a zeigt
ein NCL-Dual-Rail-UND-Gatter, das nach der NCL-Logik in der oben beschriebenen Form
aufgebaut ist, das die Eingangsoperanden A und B nach einer UND-Verknüpfung auf
den Ausgangsoperanden Z abbildet, und das aber nicht der vorliegenden
Erfindung entspricht. Das in 2a gezeigte
Gatter ist beispielsweise auf der im vorhergehenden erwähnten Internetseite
der Firma Theseus dargestellt. Nach Erörterung der 2a wird
bezugnehmend auf 2b ein entsprechendes
UND-Gatter beschrieben,
welches eine erfindungsgemäße Verbesserung
aufweist.
-
Das UND-Gatter von 2a,
das allgemein mit 40 angezeigt ist, umfaßt eingangsseitig
einen Eingang 42 mit einem Dual-Rail-Eingang 44 für einen
binären
logischen Eingangsoperanden A und einem Dual-Rail-Eingang 46 für einen
binären
logischen Eingangsoperanden B, ausgangsseitig einen Dual-Rail-Ausgang 48 sowie
dazwischen einen Schaltungszweig bzw. Pfad 50 und einen
zweiten Schaltungszweig bzw. Pfad 52, die beide mit dem
Eingang 42 und dem Dual-Rail-Ausgang 48 gekoppelt
sind. Insbesondere umfaßt
jeder Dual-Rail-Eingang 44 bzw. 46 einen Eingang
für eine
erste T-Rail 54 bzw. 56 und einen Eingang für eine zweite
F-Rail 58 bzw. 60 auf. Dementsprechend umfaßt der Dual-Rail-Ausgang 48 einen
Ausgang für
eine erste T-Rail 62 und eine zweite F-Rail 64.
Die jeweils erste T- bzw. 1- Rail 54, 56 und 62 entsprechen,
wie oben erwähnt,
derjenigen Rail einer Dual-Rail-Leitung zur Übertragung eines Operanden,
auf der ein Wert DATA übertragen wird,
wenn der entsprechende Operand den logischen Wert T aufweist, während die
andere NULL überträgt. Dementsprechend
entsprechen die zweiten F- bzw. 0-Rails 58, 60 und 64,
die in den 2a, 2b, 3a und 3b durch
einen kleinen Kreis an der entsprechenden Rail angezeigt sind, derjenigen
Rail einer Dual-Rail-Leitung, auf der durch einen Wert DATA angezeigt
wird, daß der
auf dieser Dual-Rail-Leitung übertragene
Operand einen logischen Wert von F aufweist, während die andere NULL überträgt.
-
Der erste Logikpfad 50 umfaßt ein 2-Aus-2-Gatter 66 der
oben beschriebenen Art mit Hystereseeffekt. Der Logikpfad 50 ist
insbesondere mit dem Eingang 42 und dem Dual-Rail-Ausgang 48 derart
gekoppelt, daß die
zwei Eingänge
des 2-Aus-2-Gatters 66 mit den beiden 1-Rails der Operanden A und
B und der Ausgang des 2-Aus-2-Gatters 66 mit der 1-Rail 62 des
Ausgangsoperanden Z verbunden ist. Der zweite Logikpfad 52 besteht
aus drei 2-Aus-2-Gattern 68, 70 und 72 und
einem 1-Aus-3-Gatter 74,
die alle vom selben Typ wie das Gatter 66 sind. Intern,
d.h. innerhalb des Pfades 52, sind die Ausgänge der
2-Aus-2-Gatter 68, 70 und 72 mit den
drei Eingängen
des 1-Aus-3-Gatters 74 verbunden.
Der Logikpfad 52 ist derart mit dem Eingang 42 und
dem Dual-Rail-Ausgang 48 gekoppelt, daß die zwei Eingänge des
Gatters 68 mit der 1-Rail 54 und der 0-Rail 60,
die beiden Eingänge
des Gatters 70 mit der 0-Rail 58 und der 1-Rail 56 und
das Gatter 72 mit der 0-Rail 58 und der 0-Rail 60 und
der Ausgang des Gatters 74 mit der 0-Rail 64 verbunden
ist.
-
Nachdem im vorhergehenden der Aufbau des
UND-Gatters von 2a beschrieben worden ist,
wird im folgenden dessen Funktionsweise erläutert. Wie für einen
Fachmann ersichtlich, entsprechen die Gatter 66-72 in ihrer
Funktion in etwa der eines UND-Gatters nach binärer Logik und bilden somit sogenannte „Minterme" der Eingangsoperanden
A und B bzw. ihrer Inversen
A und B. Das Gatter 66 gibt an
seinem Ausgang beispielsweise nur dann den Wert DATA an die 1-Rail 62 aus,
wenn auf beiden 1-Rails 54 und 56 ein DATA-Wert
vorliegt. Hierbei sei daran erinnert, daß gemäß der NCL-Logik höchstens ein
Wert einer Rail einer Dual-Rail-Leitung eines Operanden einen Wert
DATA aufweisen kann. Dies bedeutet, daß das Gatter 66 an
seinem Ausgang nur dann einen DATA-Wert ausgibt, wenn beide Eingangsoperanden
einen logischen Wert T aufweisen.
-
Die Gatter 68-72 des zweiten
Logikpfades 52 bilden die anderen Minterme bzw. verknüpfen die
anderen Kombinationen von Rails zwischen den beiden Eingangsoperanden
A und B. Aufgrund der Tatsache, daß, wie im vorhergehenden erwähnt, maximal eine
Rail einer Dual-Rail-Leitung einen Wert DATA aufweisen kann, gibt
höchstens
eines der Gatter 66-72 einen Wert DATA aus. Wenn folglich
das Gatter 66 des ersten Logikpfades einen Wert DATA ausgibt,
ist der Wert, den die Gatter 68-72 ausgeben, NULL. In diesem
Fall gibt auch das Gatter 74 an der 0-Rail 74 den Wert NULL aus.
In dem Fall, daß eines der
Gatter 68-72 einen Wert DATA ausgibt, da die entsprechenden,
mit diesem Gatter verbundenen Rails den Wert DATA aufweisen, während die
anderen beiden NULL sind, gibt auch das 1-Aus-3-Gatter 74 den Wert DATA aus,
während
das Gatter 66 NULL ausgibt. Insgesamt wirken folglich die
beiden Logikpfade 50 und 52 zusammen, um die Logikfunktion des
Gatters 40 zu erfüllen,
nämlich
die UND-Funktion bezüglich
der beiden Eingangsoperanden A und B mit dem Ausgangsoperanden Z.
-
Wie bereits im vorhergehenden erwähnt, bedeutet
das Anliegen des Wertes DATA an einem der beiden Rails 62 und 64 am
Ausgang 48, daß 1)
der Ausgangsoperand einen logischen Wert aufweist, 2) per Konvention
der Zustandswert an der jeweils anderen Rail des Ausgangs 48 NULL
ist, und daß 3) insbesondere
auch die Eingangsoperanden A und B einen logischen Wert aufweisen.
Letzteres ist daran erkennbar, daß einerseits höchstens
eines der Gatter 66-72 einen Wert DATA ausgeben kann, und
daß andererseits
aber mindestens eines der Gatter 66-72 einen Wert DATA
ausgeben muß,
damit der Ausgangsoperand Z einen logischen Wert aufweist. Dies
bedeutet wiederum, daß in
dem Fall eines Ausgangsoperanden mit einem logischen Wert genau
eine Rail jedes Eingangsoperanden A und B einen Wert DATA aufweist,
während
die jeweils andere einen Wert NULL aufweist. Ein Empfänger der
Ausgangsoperanden Z kann sich bei Empfang eines logischen Wertes folglich
sicher sein, daß dieser
auf logischen Werten der Eingangsoperanden A und B beruht und somit gültig ist.
Umgekehrt wechselt der Ausgangsoperand des Logikgatters 50 aufgrund
der Hystereseeigenschaften der Gatter 66-74 der Ausgangsoperand
nur dann von einem logischen Wert zu dem Wert NULL, wenn beide Eingangsoperanden
A und B den Wert NULL angenommen haben, da ja dasjenige „Minterm"-Gatter 66 – 72, welches am Ausgang
DATA ausgibt, erst dann wieder auf NULL wechselt, wenn beide eingehenden
Rails NULL werden bzw. beide Eingangsoperanden A und B den Wert
N annehmen.
-
Die in 2a dargestellte
Logikschaltung stellt folglich eine vollständige „Funktion", in diesem Fall eine UND-Funktion, zweier
Eingangsoperanden A und B dar. Ein weiteres Beispiel einer solchen
eine Logikfunktion implementierenden Logikschaltung ist in 3a gezeigt, die eine ODER-Funktion bezüglich zweier
Eingangsoperanden A und B mit dem Ausgangsoperand Z implementiert.
In 3a wurden dieselben Bezugszeichen
wie in 2a, ergänzt um einen Apostroph, verwendet,
und zu verdeutlichen, daß sich
der Aufbau der Logikschaltung von 3a von
derjenigen von 2a lediglich dadurch
unterscheidet, daß jede
1-Rail in eine 0-Rail und jede 0-Rail in eine 1-Rail vertauscht
wurde, wodurch, wie es für
einen Fachmann ohne weiteres ersichtlich ist, aus der UND-Funktion
der Schaltung von 2a eine ODER-Funktion
realisiert wird.
-
Wie es aus den 2a und 3a zu erkennen ist, unterscheiden sich
jeweils die Anzahl von Logikstufen innerhalb der Logikpfade des
Logikbauelementes. Der Logikpfad 52 bzw. 52' um faßt zwei
Logikstufen, während
der andere Logikpfad 50 bzw. 50" lediglich eine Logikstufe aufweist.
Aufgrund dieser Tatsache besitzen die Logikpfade dieser Logikbauelemente
zueinander unterschiedliche Laufzeiten und Leistungsaufnahmen. Folglich
unterscheidet sich je nach dem, welcher der Logikpfade, d.h. der
der 1-Rail oder der 0-Rail des Ausgangsoperanden Z, auf den DATA-
oder NULL-Wert wechselt, die für
die Berechnung erforderliche Zeitdauer bzw. Leistungsaufnahme. Welcher
der beiden Logikpfade umschaltet bzw. welchen Wert der Ausgangsoperand
Z annimmt, hängt
wiederum gemäß der Logikfunktion, d.h.
UND bzw. ODER, von den Werten der Eingangsoperanden ab. Eine Schaltung,
die aus den Logikbauelementen von 2a und 3a aufgebaut ist, benötigt folglich je nach Eingangsoperand
bzw. Eingangsoperanden eine unterschiedliche Gesamtzeitdauer bzw.
Gesamtleistungsaufnahme zur Berechnung des jeweiligen Ausgangsoperanden
bzw. der Ausgangsoperanden, wobei sich die Unterschiede in den Laufzeiten
und Leistungsaufnahmen, die die unterschiedlichen Eingangsoperanden
in den Logikbauelemente bewirken, addieren und den Gesamtunterschied
bezüglich
der Leistungsaufnahme und Zeitdauer ergeben.
-
In dem Fall einer Schaltung, die
aus den Logikgattern 2a und 3a aufgebaut ist und
Teil eines kryptographischen Algorithmus implementiert, ist es für einen
Angreifer folglich möglich,
anhand von Messungen über
die Gesamtleistungsaufnahme und der Gesamtrechenzeit Rückschlüsse auf
geheime Informationen über
die mittels des kryptographischen Algorithmus verarbeiteten Daten
zu erhalten.
-
Gemäß einem speziellen Ausführungsbeispiel
der vorliegenden Erfindung wird die Gefahr, daß solche Hardwareangriffe erfolgreich
sind, dadurch reduziert, daß in
den jeweils kürzeren
Logikpfad eine Schaltung geschaltet wird, die eine Verzögerung bzw.
zusätzliche
Laufzeit und eine zusätzliche
Leistungsaufnahme bewirkt, wie es in den 2b und 3b gezeigt ist. 2b stellt
folglich ein NCL-Dual-Rail-UND-Gatter gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung dar, das allgemein mit 100 angezeigt
ist, und das sich von demjenigen von 2a lediglich
dadurch unterscheidet, daß in den
Logikpfad 50 zwischen den Ausgang des Gatters 66 und
den Ausgang der 1-Rail 62 zwei Inverter 102 und 104 in
Reihe geschaltet sind. Diese Inverter 102 und 104 bewirken
offenbar keine logische Funktion sondern lediglich eine Verlängerung
der Laufzeit und Vergrößerung der
Leistungsaufnahme des entsprechenden Logikpfades 50. Auf
diese Weise wird die Laufzeit und die Leistungsaufnahme des Logikpfades 50 an
die des Logikpfades 52 angeglichen, da die durch das Gatter 66 bewirkte
Laufzeit und Leistungsaufnahme um die Laufzeiten und Leistungsaufnahmen
der Inverter 102 und 104 ergänzt wird.
-
Dementsprechend zeigt 3b ein Ausführungsbeispiel eines NCL-Dual-Rail-ODER-Gatters gemäß der vorliegenden
Erfindung, das sich von demjenigen von 3a lediglich
dadurch unterscheidet, daß in
den einstufigen Logikpfad 50" zwei
in Reihe geschaltete Inverter 102" und 104" geschaltet sind. Die Schaltungen
von 2b und 3b unterscheiden
sich wiederum lediglich durch die Umbenennung jeder 1-Rail in eine
0-Rail und umgekehrt.
-
Verglichen zu einer asynchronen Schaltung, die
aus den Logikgattern gemäß 2a und 3a aufgebaut
ist, erfährt
eine asynchrone Schaltung, die basierend auf den Logikgattern von 2b und 3b aufgebaut
ist, weniger Variation bezüglich
der Laufzeit und benötigten
Leistungsaufnahme bei sich ändernden
Eingangsvariablen bzw. Operanden. In dem Fall, daß die auf
diese Weise aufgebaute Schaltung einen kryptographischen Algorithmus
oder eine Teiloperation desselben implementiert, kann ein Angreifer
folglich nur geringe Variationen in den Laufzeiten und Leistungsaufnahmen
wahrnehmen, wodurch die Gefahr eines erfolgreichen Angriffs wirksam
reduziert ist. Im Idealfall, bei dem die Inverter 102 und 104 einen
vollständigen
Ausgleich zwischen den Laufzeiten und Leistungsaufnahmen der beiden
Logikpfade bewirken, d.h. des einen Logikpfads für die eine Rail und des anderen
Logikpfads für
die andere Rail, und dies für
alle Logikgatter, aus denen die asynchrone Kryptoschaltung aufgebaut
ist, kann der Angreifer überhaupt
keine Informationen mehr aus dem Gesamtleistungsstromverbrauch und
der Gesamtberechnungsdauer herleiten, da durch die NCL-Logik zudem
gewährleistet
wird, daß jeder
Operand unabhängig
von seinem logischen Wert immer durch einen DATA-Wert und einen
NULL-Wert, d.h. immer durch einen hohen und einen niedrigen Pegel,
dargestellt wird.
-
Anders ausgedrückt liefern die Ausführungsbeispiele
der 2b und 3b Beispiele
dafür,
wie die Anfälligkeit
von asynchronen selbstgetakteten Schaltungen, welche nach der NCL-Methode
synthetisiert wurden, insbesondere von Funktionen, die aufgrund der
Dual-Rail-Beschaffenheit dieser Logik zu sogenannten „vollständigen Funktionen" erweitert werden,
reduziert werden kann. Dies wurde bei diesen Ausführungsbeispielen
durch Einfügen
eines Buffers in den Pfad, welche die eigentliche „Funktion" mit einem einstufigen
Schaltungsaufbau ausführt,
realisiert, der das Signal in diesem Pfad so weit verzögert, daß vom Timing
sowie auch von der Leistungsaufnahme her kein oder zumindest ein
wesentlich geringerer Unterschied als ohne Buffer bezogen auf den Pfad
existiert, welcher durch Zusammenführen der anderen „Minterme" mit einem zweistufigen
Schaltungsaufbau gegeben ist. Durch Einfügen des Buffers ergibt sich
folglich eine Angleichung/Homogenisierung des Zeitverhaltens der „vollständigen Funktion".
-
- 10
- Logikschaltung
- 11
- Eingang
- 12
- Operandeneingang
- 14
- Operandeneingang
- 15
- Ausgang
- 16
- Teilausgang
- 18
- Teilausgang
- 19
- Logikzweig
- 20
- Logikanordnung
- 21
- Logikzweig
- 22
- Logikanordnung
- 24
- Verzögerungs/Kompensationsschaltung
- 26
- Verzögerungs/Kompensationsschaltung
- 40
- UND-Logikgatter
- 42
- Eingang
- 44
- Dual-Rail-Eingang
- 46
- Dual-Rail-Eingang
- 48
- Dual-Rail-Ausgang
- 54 – 64
- Rails
- 66 – 74
- Schwellenwertgatter
- 100
- Logikgatter
- 102
- Inverter
- 104
- Inverter
- 300
- Logikschaltung
- 302
- Operandeneingang
- 304
- Operandeneingang
- 306
- Teilausgang
- 308
- Teilausgang
- 310
- Logikanordnung
- 312
- Logikanordnung