-
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 Logikbauelementes,
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 bezugnehmend 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 Leistungsverbrauches 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 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 Leistungszweige „schaltet", zu einer unterschiedlichen
Gesamtleistungsaufnahme und Gesamtberechnungszeitdauer pro Verschlüsselung oder
Teiloperation eines kryptographischen Algorithmus.
-
Die
DE 19922354 A1 offenbart
in
3 eine Niederspannungs-Differenzsignal-(LVDS)-Leistungstreiberschaltung,
bei der ein Eingangssignal über zwei
Verzögerungsinvertierer
auf der einen und über einen
Verzögerungsinvertierer
und eine Verzögerungsschaltung
auf der anderen Seite in zueinander invertierte Eingangssignale
umwandelt wird und abhängig
von diesen dann ein Differenzausgangssignal an zwei Ausgängen erzeugt
wird. Sinn und Zweck von Niederspannungs-Differenzsignal-Treibern
ist die schnelle Datenübertragung über lange
Entfernungen insbesondere auf Twisted-Pair-Signalleitungen.
-
Die
WO 00/26746 A2 bezieht sich auf einen Datenträger mit einem verschleierten
Leistungsverbrauch. Insbesondere schlägt das Dokument vor, SPA und
DPA-Angriffe dadurch zu erschweren bzw. zu vereiteln, dass der Leistungsverbrauch
durch eine weitere Komponente überlagert
wird, die vorzugsweise nicht direkt auf die internen Operationen
der ausgespähten
Datenverarbeitungsvorrichtung bezogen ist. Gemäß einem speziellen Ausführungsbeispiel werden
einige Logikelemente, dort exemplarisch ein UND-Gatter kopiert,
dort exemplarisch durch ein UND-Gatter, das die gleichen Eingangssignale,
jedoch invertiert durch Invertierer, erhält. Vorzugsweise werden Verzögerungselemente
vor die eigentlichen Logikelemente bzw. das UND-Gatter geschaltet,
um die Signalverzögerung
der Inverter auszugleichen.
-
Es
ist 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, dass 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 mehrer 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 gleichvielen 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