-
Die
Erfindung betrifft eine Schaltungsanordnung zur Verarbeitung eines
Dual-Rail-Signals mit je zwei Dateneingängen für mindestens ein Dual-Rail-Dateneingangssignal,
je zwei Datenausgängen
für mindestens ein
Dual-Rail-Datenausgangssignal und einer Verarbeitungseinheit zur
Bildung des mindestens einen Datenausgangssignals unter Verwendung
des mindestens einen Dateneingangssignals.
-
Üblicherweise
sind Schaltnetze mikroelektronisch so ausgeführt, daß jedes Bit der zu verarbeitenden Information
physikalisch durch genau einen elektrischen Knoten dargestellt wird.
Ein solcher Aufbau wird auch als "Single-Rail"-Schaltungstechnik
bezeichnet. Derartige Schaltnetze sind jedoch verhältnismäßig unsicher gegenüber Angriffen
mit der sogenannten differenziellen Stromprofil-Analyse, die beim
Versuch des Zugriffs unberechtigter Dritter auf geheime Informationen
angewandt wird. Die differenzielle Stromprofil-Analyse, englisch als differential power
analysis – DPA – bezeichnet,
ist eine der wichtigsten Methoden zum Angriff auf beispielsweise
Chipkarten für
Sicherheitsanwendungen. Dabei erfolgt ein gezielter Angriff auf
vertrauliche Informationen wie Passwörter oder kryptographische
Schlüssel.
Für ein
gegebenes Programm bzw. einen gegebenen Algorithmus werden mit statistischen
Methoden gemessene Stromprofile der Chipkarte bzw. deren über ein
oder mehrere Takte berechnete Ladungsintegrale ausgewertet, wobei – für eine Vielzahl
von Programmausführungen – aus der
Korrelation von systematischer Datenvariation und jeweiligem Ladungsintegral Rückschlüsse auf
die zu schützenden
Informationen gezogen werden können.
-
Im
Gegensatz zu herkömmlicher
Single-Rail-Schaltungstechnik, bei der jedes Bit innerhalb eines
Daten- oder Signalpfades physikalisch durch genau einen elektrischen
Knoten K dargestellt wird, wird bei der Implementierung mit Dual-Rail-Schaltungstechnik
jedes Bit durch zwei Knoten K und KQ dargestellt, wobei jedes Bit
einen gültigen
logischen Wert aufweist, wenn K dem wahren logischen wert dieses
Bits entspricht und KQ dem negierten Wert.
-
Wenn
also der Wert "1" übertragen werden soll, so geschieht
dies durch eine "1" im Knoten K. Gleichzeitig
wird jedoch der Wert "0" am Knoten KQ übertragen,
so daß insgesamt
also sowohl eine "1" als auch eine "0" übertragen
wird. Wenn der Wert "0" zu übertragen
ist, erfolgt die Übertragung
einer "0" am Knoten K und einer "1" am Knoten KQ. In beiden Fällen wird
also eine "1" und eine "0" übertragen.
Physikalische Gleichheit der Knoten K und KQ vorausgesetzt, ist
nun mittels einer differenziellen Stromprofil-Analyse nicht mehr
erkennbar, ob als Datum eine "1" oder eine "0" übertragen
wird. Dies gilt jedoch nur dann, wenn tatsächlich bei jedem übertragenen
Datum ein Signalwechsel stattfindet, sich also die Information "1" und die Information "0" abwechseln. Werden mehrere gleiche
Daten nacheinander übertragen,
verschlechtern sich die Eigenschaften bezüglich der Angreifbarkeit durch
differenzielle Stromprofil-Analyse.
-
Es
ist beispielsweise aus der
US
45 70 084 bekannt, die gewünschte Invarianz der Ladungsintegrale dadurch
zu erreichen, daß zwischen
je zwei Zuständen
mit gültigen
logischen Werten <1,
0> oder <0, 1> ein sogenannter Vorladezustand,
im Englischen auch "precharge" genannt, eingefügt ist,
für den
sowohl K als auch KQ auf dasselbe elektrische Potential geladen
werden, also logisch ungültige
Werte <1, 1> oder <0, 0> annehmen. Für den Vorladezustand <1, 1> würde eine Zustandsfolge beispielsweise
wie folgt aussehen:
(1, 1) → (0,
1) → (1,
1) → (1,
0) → (1,
1) → (1,
0) → (1,
1) → (0,
1) → ...
-
Bei
dieser Dual-Rail-Schaltungstechnik mit Precharge besteht der Nachteil,
daß der
Stromverbrauch verhältnismäßig hoch
ist und es sich um unflexible, kundenspezifische Lösungen handelt,
da der Schaltungsaufbau nicht automatisch berechnet werden kann,
d. h. nicht synthetisierbar ist.
-
Aus
der US 2002-017 57 26 A1 ist eine Flip-Flop-Schaltung bekannt, die
zur Verarbeitung von Dual-Rail-Signalen eingerichtet ist.
-
Die
US 6,121,807 A offenbart
ein einphasen-flankengetriggertes Dual-Rail-Flip-Flop zum Einsatz
mit dynamischen Logikgattern. Wenn das Eingangssignal durch ein
dynamisches Logikgatter bereitgestellt wird, werden je nach Eingangssignal
definierte Ausgangssignale erzeugt.
-
Weitere
bekannte Maßnahmen
zur Verringerung der Angreifbarkeit durch differenzielle Stromprofil-Analyse
sind verschlüsseltes
Rechnen oder eine sichere Codierung. Dabei sind jedoch zusätzliche
Taktzyklen notwendig sowie eine große Menge an Zufallszahlen,
was neben einer verringerten Arbeitsgeschwindigkeit einen großen Flächenaufwand
mit sich bringt.
-
Aufgabe
der Erfindung ist es, eine Schaltungsanordnung zur Verarbeitung
eines Dual-Rail-Signals anzugeben, die sicher gegenüber differenzieller
Stromprofil-Analyse ist und gleichzeitig einfach und flexibel im Aufbau
ist. Außerdem
soll ein geeignetes Verfahren angegeben werden.
-
Diese
Aufgabe wird erfindungsgemäß durch
eine Schaltungsanordnung der eingangs genannten Art gelöst, die
dadurch gekennzeichnet ist, daß den
Dateneingängen
ein Valid-Eingang zum Empfang eines Valid-Eingangssignals zugeordnet
ist und ein Valid-Ausgang zur Ausgabe eines Valid-Ausgangssignals
vorgesehen ist und die Schaltungsanordnung derart eingerichtet ist,
daß wenn
am Valid-Eingang eine Ungültigkeit
der Dateneingangssignale angezeigt wird, Datenausgangssignale mit
einem gleichen logischen Wert an je beiden Datenausgängen ausgegeben
werden und am Valid-Ausgang die Ungültigkeit der Datenausgangssignale
angezeigt wird, und wenn am Valid-Eingang eine Gültigkeit der Dateneingangssignale
angezeigt wird, von der Verarbeitungseinheit gebildete Datenausgangssignale
ausgegeben werden und nach Ausgabe der Datenausgangssignale am Valid-Ausgang
die Gültigkeit
der Datenausgangssignale angezeigt wird.
-
Durch
den erfindungsgemäßen Einsatz
von Valid-Signalen wird erreicht, daß ungültige Dual-Rail-Signale vor
jedem zu übertragenden
Bit erzeugt werden, ohne daß dazu
ein zusätzliches
Signal von einer zweiten, äußeren Einheit
notwendig ist. Unabhängig
von den prozessierten Daten wird immer die gleiche Anzahl an steigenden
und fallenden Flanken in der Schaltung erzeugt. Unabhängig von
den zu übertragenden
Daten wird immer die gleiche Anzahl logischer "1"-Werte
und logischer "0"-Werte übertragen. Schaltungsanordnungen
mit diesem Aufbau sind synthetisierbar und damit leicht zu realisieren.
Sie bieten die gleiche Sicherheit wie die Dual-Rail-Schaltungstechnik
mit Precharge, benötigt
aber nicht mehrere externe Taktphasen. Ebenfalls wird die Verwendung
von Zufallsbits vermieden. Da die Valid-Signale lokal erzeugt werden,
ist keine globalen Precharge-Signalnetze nötig.
-
Ein
erfindungsgemäßes Verfahren
zur Verarbeitung eines Dual-Rail-Signals
weist die Schritte auf: Empfang mindestens eines Dual-Rail-Dateneingangssignals,
Empfang eines Valid-Eingangssignals,
das die Gültigkeit
des Dateneingangssignals anzeigt, Ausgabe eines Dual-Rail-Datenausgangssignals
mit zwei gleichen logischen Werten und eines die Ungültigkeit
des Datenausgangssignals anzeigenden Valid-Ausgangssignals, wenn
das Dateneingangssignal als ungültig
angezeigt wird, und Bildung eines Datenausgangssignals aus dem mindestens
einen Dateneingangssignal sowie Ausgabe des Datenausgangssignals
und nachfolgend Ausgabe eines Valid-Ausgangssignals, das die Gültigkeit
des Datenausgangssignals anzeigt, wenn das Dateneingangssignal als
gültig
angezeigt wird.
-
Die
Erfindung wird nachfolgend anhand eines Ausführungsbeispiels näher erläutert. Es
zeigt:
-
1 eine ein AND-Gatter bildende
erfindungsgemäße Schaltungsanordnung,
-
2 ein Dual-Rail-Flip-Flop,
-
3 den zeitlichen Verlauf
zweier Signale des Flip-Flops
von 2,
-
4 eine Anordnung mit mehreren
erfindungsgemäßen Schaltungsanordnungen
und
-
5 ein Schaltungsanordnung
zur Erzeugung eines Dual-Rail-Datensignals.
-
Die 1 zeigt eine erfindungsgemäße Schaltungsanordnung,
die in dem gezeigten Ausführungsbeispiel
ein AND-Gatter mit Pre-Discharge bildet, also der Vorlade-Level
der Low-Level ist. Pro logischem Signal besitzt das AND-Gatter drei
Eingänge.
Eingänge
A1 und A2 sind zum Empfang eines Eingangssignales <A_HI, A_LO> bestimmt, während ein
Eingang A3 zum Empfang eines Valid-Eingangssignals A_VAL vorgesehen
ist. Ein weiteres Dateneingangssignal <B_HI, B_LO> wird an zwei Eingänge B1 und B2 geführt. Dem
Dual-Rail-Datensignal <B_HI,
B_LO> ist ein Valid-Signal
B_VAL zugeordnet, das an einen Eingang B3 geführt ist. Darüber hinaus
besitzt das AND-Gatter drei Ausgänge
Z1, Z2 und Z3. Über
die Ausgänge
Z1 und Z2 wird ein Dual-Rail-Datenausgangssignal <Z_HI, Z_LO> ausgegeben. Über den
Ausgang Z3 wird ein Valid-Ausgangssignal Z_VAL ausgegeben.
-
Die
Paare <A_HI, A_LO>, <B_HI, B_LO>, <Z_HI,
Z_LO> bilden Dual-Rail-Signale,
wie sie einleitend beschrieben wurden. Die Codierung der Signale
ist im folgenden Ausführungsbeispiel
wie folgt gewählt:
Logisch "0": Dual-Rail-High: 0
Dual-Rail-Low:
1
Logisch "1": Dual-Rail-High:
1
Dual-Rail-Low: 0
-
Die
Valid-Eingangssignale bewirkten, daß beide Ausgänge für das Dual-Rail-Datenausgangssignal
bei A_VAL = "0" oder B_VAL = "0" ebenfalls auf "0" gelegt
werden. Sowohl Z_HI als auch Z_LO sind also "0",
bis die Valid-Eingangssignale A_VAL, B_VAL wieder auf "1" gehen. Dann wird der berechnete Ausgangswert
einer Verarbeitungseinheit 1, die durch mehrere logische
Gatter gebildet ist, ausgegeben. Nachdem das Ergebnis der Verarbeitungseinheit 1 auf
die Ausgänge
Z1 und Z2 gegeben wurde, was erfolgt, wenn alle Eingangssignale
gültig
sind und das Ergebnis daraus berechnet wurde, wird ebenfalls ein
Valid-Ausgangssignal Z_VAL am Ausgang Z3 nach außen gegeben, das die Gültigkeit
des Datenausgangssignals <Z_HI,
Z_LO> anzeigt.
-
Die
logische Funktion der Verarbeitungseinheit
1 ergibt sich
aus der folgenden Tabelle:
-
Man
erkennt daraus, daß gilt:
Z_HI
= A_HI AND B_HI
Z_LO = A_LO OR B_LO
-
Erlaubt
sind in der Valid-Phase also nur die Paarungen 0/1 und 1/0 für die High-
und Low-Leitungen. Sobald eine der beiden Valid-Eingangssignale "0" ist, werden alle drei Ausgänge Z1,
Z2, Z3 auf "0" gelegt. Damit wird
zusätzlich
den nachfolgenden Schaltungskomponenten mitgeteilt, daß das Datenausgangssignal <Z_HI, Z_LO> ungültig ist.
Bei einem Precharge-Verfahren
werden die Ausgänge
Z1, Z2 auf "1" und Z3 auf "0" gelegt, sobald einer der beiden Valid-Eingänge auf "0" geht.
-
Die
Verarbeitungseinheit kann selbstverständlich beliebige andere logische
Funktionen realisieren und ist nicht auf die hier beschriebenen
Funktionen beschränkt.
Dazu müßten entsprechend
andere logische Verknüpfungen
innerhalb der Verarbeitungseinheit vorgesehen werden.
-
Schaltungsanordnungen
der erfindungsgemäßen Art
werden in sogenannten "Domino-Ketten" eingesetzt, wie
sie in der 4 beispielhaft
dargestellt ist. Das erste Element einer solchen Domino-Kette ist
ein Domino-Flip-Flop. Dieses Flip-Flop 2 muß sicherstellen,
daß es
ein Valid-Ausgangssignal Z_VAL erzeugt, das kurz nach der steigenden
Flanke des Taktsignals CLK eine Low-Phase hat. Diese Low-Phase muß lange
genug sein, um sicher auf alle nachfolgenden Gatter 3 durch
zu propagieren. Der Verlauf des Taktsignals CLK und des Valid-Ausgangssignals
Z_VAL ist in 3 dargestellt.
-
Das
Flip-Flop von 2 weist
ebenfalls Eingänge
A1 und A2 zum Empfang eines Dual-Rail-Dateneingangssignals auf.
Darüber
hinaus ist ein Eingang A3 vorgesehen, an dem ein Taktsignal CLK
anliegt. An zwei Ausgängen
Z1 und Z2 wird ein Dual-Rail-Datenausgangssignal <Z_HI, Z_LO> ausgegeben sowie ein
Valid-Ausgangssignal
Z_VAL an einem Ausgang Z3 bereitgestellt, das die Gültigkeit
des Datenausgangssignals <Z_HI,
Z_LO> anzeigt.
-
Die 4 zeigt, wie oben angesprochen,
eine Domino-Kette mit einem ersten Flip-Flop 2, nachfolgend angeordneten
Gattern 3, 4 und 5 sowie einem zweiten
Flip-Flop 6. Die Valid-Signale
A_VAL, B_VAL und Z_VAL werden in der 4 auf
Leitungen mit der Bezeichnung "Valid" übertragen. Das erste Flip-Flop 2 erzeugt,
wie anhand von 2 ausgeführt, ein
Dual-Rail-Signal auf Leitungen 12. Das nachfolgende Gatter 3 ist
ein AND-Gatter und besitzt Eingänge
für zwei
Dual-Rail-Signale
mit je einem zugeordneten Valid-Signal. D. h. es müssen sechs
Eingänge
vorgesehen werden, da, wie anhand von 1 beschrieben,
für jedes
Dual-Rail-Signal drei Eingänge
notwendig sind.
-
Ein
Valid-Signal mit dem logischen Wert "0" wird
das AND-Gatter 4 nach
dem Flip-Flop 3 dazu bringen, seine beiden Ausgänge und
sein eigenes Valid-Ausgangssignal auf "0" zu
setzen, was einem Pre-Discharge entspricht. Die beiden nachfolgenden
Gatter 4 und 5 reagieren in gleicher Weise, so
daß die
ganze Schaltung bis zum letzten Gatter 5 vor dem nächsten Flip-Flop 6 auf "0" gehen wird. Das erste Gatter 3 nach
dem Flip-Flop 2 wird trotzdem bereits das Ergebnis ermitteln,
aber erst, wenn von den beiden Eingangssignalen die Valid-Signale auf "1" sind, wird der Ausgang von <0, 0> auf <0, 1>, also eine logische "0", oder auf <1, 0>,
also eine logische "1", gehen. Kurz danach
wird das Valid-Ausgangssignals dieses ersten Gatters 3 von "0" auf "1" gehen,
so daß das
Datenausgangssignal des Gatters 3 für das nachfolgende Gatter 4 als
gültig
deklariert wird. Das Gatter 3 ist dazu über Leitungen 14 mit
dem Gatter 4 verbunden. Dieser Vorgang wird sich für die nachfolgenden
Gatter 4 und 5 in analoger Weise wiederholen.
Das Gatter 4 ist beispielsweise ein OR-Gatter mit Eingängen für zwei Dual-Rail-Signale
auf Leitungen 14 und 15 sowie zugeordnete Valid-Signale.
-
Das
Gatter 5 ist im Ausführungsbeispiel
ein XOR-Gatter, dem Dual-Rail-Signale auf Leitungen 16 und 17 sowie
zugeordnete Valid-Signale zugeführt
werden. Ein Ausgangssignal des XOR-Gatters auf Leitungen 18 wird
dem nachfolgenden Flip-Flop 6 zugeführt. Die Übergänge <0, 0> → <0, 1> oder <0, 0> → <1, 0> werden an
jedem Gatter auftreten, so daß sich
unabhängig
vom Eingangsdatum genau eine steigende Flanke in dem Moment ergibt,
in dem das Datum gültig
wird, also bei einem Validwert "1", und eine fallende
Flanke in dem Moment, in dem das Datum wieder ungültig wird,
also bei einem Validwert "0". Damit ist der Stromverbrauch tatsächlich unabhängig von
den prozessierten Daten.
-
Eine
Domino-Kette kann selbstverständlich
wesentlich mehr Gatter aufweisen, wobei diese auch nicht auf die
dargestellten beispielhaften Funktionen beschränkt sind.
-
Die 5 zeigt eine beispielhafte
Schaltungsanordnung zur Erzeugung eines Dual-Rail-Datensignals <Z_hi, Z_lo> mit einem Valid-Ausgangssignal
Z_val aus einem Single-Rail-Dateneingangssignal
X_in. An einem Eingang X1 wird das Single-Rail-Dateinengangssignal
X_in zugeführt.
Innerhalb der Schaltungsanordnung wird es einem ersten UND-Glied
und, negiert, einem zweiten UND-Glied zugeführt. Auf die anderen Eingänge der
UND-Glieder ist ein negiertes Taktsignal clk geführt. Außerdem ist eine Treiberschaltung
vorgesehen, über
die ein Valid-Signal Z_val aus dem Taktsignal abgeleitet und auf
einen Ausgang Z3 geführt
wird.
-
Durch
eine solche Schaltung wird aus einem Single-Rail-Signal ein Dual-Rail-Signal
mit Valid-Signal erzeugt, indem bei einer logischen "0" am Takteingang bei gleichzeitigem Anliegen
einer "1" am Eingang X1 das
obere UND-Glied auf "1" geht und das andere
UND-Glied auf "0" geht, also komplementäre Signale
Z_hi und Z_lo erzeugt werden. Zudem wird als Valid-Signal eine "1" ausgegeben, also signalisiert, daß das ausgegebene
Datensignal gültig
ist.
-
Bei
einer "1" am Takteingang sind
sowohl Z_hi als auch Z_lo "0". Das Valid-Signal
ist ebenfalls "0" und signalisiert
demnach, daß kein
gültiges
Datensignal ausgegeben wird.
-
Wenn
X_in "0" ist und dann das
Taktsignal clk "0" wird, stellen sich
an den Datenausgängen
die Signale Z_hi = "0" und Z_lo = "1" ein. Am Valid-Ausgang wird eine "1" ausgegeben und somit signalisiert,
daß das Datenausgangssignal
gültig
ist.
-
Es
ist natürlich
auch möglich,
durch eine einfache Logik aus einem Dual-Rail-Signal wieder ein
Single-Rail-Signal zu erzeugen.
-
- A1,
A2, A3,
-
- B1,
B2, B3, X1
- Eingänge
- Z1,
Z2, Z3
- Ausgänge
- <A_HI, A_LO>
- erstes
Dateneingangssignal
- <B_HI, B_LO>
- zweites
Dateneingangssignal
- A_VAL,
B_VAL
- Valid-Eingangssignale
- <Z_HI, Z_LO>
- Datenaungangssignal
- Z_VAL
- Valid-Ausgangssignal
- X_in
- Dateneingangssignal
- CLK
- Taktsignal
- 1
- Verarbeitungseinheit
- 2
- erstes
Flip-Flop
- 3
- AND-Gatter
- 4
- OR-Gatter
- 5
- XOR-Gatter
- 6
- zweites
Flip-Flop
- 11,
12, 13,
-
- 14,
15, 16,
-
- 17,
18
- Leitungen