Carry-Skip-Addierer für verschlüsselte Daten
Die vorliegende Erfindung bezieht sich auf Addierer- Rechenwerke und insbesondere auf Carry-Skip-Addierer.
Fig. 6 zeigt einen dreistufigen Carry-Skip-Addierer der in „Computer Architecture a Quantitative Approach", Hennessy und Patterson, Morgan Kaufmann Publishers, Inc., 1996, Anhang A, beschrieben ist. Der Addierer in Fig. 6 umfaßt drei Addiererstufen 600, 601 und 602. Lediglich beispielhaft ist die erste Stufe 600 ein Addierer mit einer Bitbreite von 4, um die nie- derstwertigen vier Bits der Operanden a, b, d. h. aUf ai, a2, a3 bzw. b0, bi, b2, b3 zu addieren. Der erste Addierer 600 gibt neben den Ergebnisbits bzw. Summenbits r0, ri, r2, r3 auch einen Übertrag aus dem höchstwertigen Bit-Slice aus, der in Fig. 6 mit c4 bezeichnet ist. Dieses Übertragbit c4 der ersten Addiererstufe 600 wird in den niederstwertigen Bit- Slice der zweiten Addiererstufe 601 eingespeist. Die zweite Addiererstufe umfaßt in Fig. 6 ebenfalls vier Bits und summiert die nächsten vier Bits der Operanden a und b.
Bis hierhin arbeitet der Addierer wie ein normaler Ripple- Carry-Addierer. Der Carry-Skip-Addierer, wie er in Fig. 6 gezeigt ist, zeichnet sich jedoch dadurch aus, daß die zweite Addiererstufe 601 einen Propagate-Wert P, 603 erzeugt, der mit dem Übertragbit c4 604 in einem UND-Gatter 605 verknüpft wird, um ein Skip-Signal 606 zu erzeugen. Das Skip-Signal 606 wird mit einem Übertragsignal cs8 aus dem höchstwertigen Bit- Slice (für Bit Nr. 7) der zweiten Addiererstufe 601, das in Fig. 6 mit 607 bezeichnet ist, mittels eines ODER-Gatters 608 ODER-ve knüpft, um das Übertrageingangsbit für den wieder niedrigsten Bit-Slice (Bit 8) der dritten Addiererstufe 602 zu liefern. Diese Schaltung aus UND-Gatter 605 und ODER-
Gatter 608 wird dann für mögliche weitere Stufen des Addierers fortgesetzt.
Bevor auf die Funktionsweise des bekannten Carry-Skip- Addierers eingegangen wird, wird zunächst auf die Berechnung des Propagate-Signals 603 Bezug genommen. Wie es bekannt ist, berechnet sich das Propagate-Signal der zweiten Addiererstufe P, dadurch, daß die Propagate-Werte der einzelnen Bit-Slices miteinander UND-verknüpft werden. In Gleichungsform ausgedrückt ergibt sich somit:
P47 =p4-p5-p6-p7 (1)
Ein Propagate-Wert für einen Bit-Slice i berechnet sich folgendermaßen:
Der Propagate-Wert gibt an, ob ein Carry-Bit eines niedrigeren Bit-Slices von dem Bit-Slice, dessen Propagate-Wert bekannt ist, absorbiert wird. Dies ist der Fall, wenn aA und b± 0 sind, d. h. der Propagate-Wert pi 0 ist. Andererseits wird ein Carry-Bit eines niedrigeren Bit-Slices vom aktuellen Bit- Slice weitergereicht, d. h. „propagiert", wenn entweder a± oder bi gleich 1 ist. Sind sowohl a± als auch b± gleich 1, so wird von diesem Bit-Slice nicht nur ein Carry-Bit weiterge- reicht, sondern sogar erzeugt. Der Wert, der anzeigt, ob ein Bit-Slice einen Carry erzeugt, wird auch als Generate-Wert bezeichnet. Der Generate-Wert ergibt sich aus der UND- Verknüpfung der beiden Operanden-Bits .
Der Carry-Skip-Addierer baut allgemein gesagt darauf auf, daß, wenn beispielsweise der zweite Addiererblock 601 in Fig. 6 insgesamt einen Propagate-Wert von 1 hat, d. h. kein Bit- Slice absorbiert einen Carry, so kann das Übertragsignal des untersten Addierers 600 unmittelbar weitergereicht werden an den übernächsten Addierer 602. Aufgrund des Propagate-Signals von 1 des zweiten Addierers 601 wird ein Carry c4, der von der untersten Addiererstufe 600 erzeugt wird, auf keinen Fall
im zweiten Addierer absorbiert. Das Carry-Ausgangssignal cs8 wird also, wenn das Carry-Signal des ersten Addierers c4 gleich 1 ist und das Propagate-Signal ebenfalls gleich 1 ist, übergangen.
Das ODER-Gatter 608 am Ausgang der zweiten Addiererstufe 601 wird somit nur wirksam, wenn das Skip-Signal 606 gleich 0 ist und ein Carry für den dritten Addierer 602 von dem zweiten Addierer 601 erzeugt wird.
Es sei darauf hingewiesen, daß das Berechnen des Propagate- Werts P einfacher als das Berechnen des Generate-Werts G ist. Im Carry-Skip-Addierer werden daher lediglich die Propagate- Werte P berechnet. Die Überträge beginnen mit dem „Durchrip- pelnΛ durch jeden Block im wesentlichen gleichzeitig. Wenn ein Block einen Carry erzeugt, dann wird das Carry- Ausgangssignal dieses Blocks wahr sein, selbst wenn das Car- ry-Eingangssignal in den Block noch nicht korrekt ist. Wenn an dem Beginn jeder Addier-Operation der Carry-Eingang in je- den Block 0 ist, dann werden auch keine Carry-Ausgangssignale erzeugt. Somit kann das Carry-Ausgangssignal jedes Blocks auch derart aufgefaßt werden, daß es das G Signal ist. Sobald das Carry-Ausgangssignal aus dem niederstwertigen Block (Addierer 600) erzeugt ist, wird es nicht nur in den nächsten Block eingespeist, sondern es wird auch durch das UND-Gatter mit dem P-Signal vom nächsten Block verknüpft. Wenn das Carry-Ausgangssignal (c ) und das P-Signal beide wahr sind, dann überspringt der Carry den zweiten Block und wird unmittelbar in den dritten Block eingespeist, etc. Damit ist ein wesent- licher Geschwindigkeitsvorteil gegenüber einem einfachen
Ripple-Carry-Addierer erreichbar. Dies trifft um so mehr zu, wenn die Addiererstufen ungleich groß gemacht werden, wie es bekannt ist.
Nachteilig an dem beschriebenen Carry-Skip-Addierer ist die
Tatsache,, daß er für kryptographische Anwendungen nur bedingt geeignet ist, da er für Nadelangriffe zur Abhörung verarbei-
teter Daten bzw. Ergebnisdaten und insbesondere auch für SPA- Angriffe (SPA = Single Power Analysis) oder DPA-Angriffe (DPA = Differential Power Analysis) anfällig ist. Im bekannten Carry-Skip-Addierer, der in Fig. 6 gezeigt ist, werden überall Klartextdaten verarbeitet. Insbesondere die Propagate- Leitung 603, die Übertrag-Leitung 604, und die Skip-Signal- Leitung 606 sind, wenn größere Addiererstufen verwendet werden, von beträchtlicher Länge und daher für physikalische Angriffsszenarien, wie z. B. Nadelangriffe, anfällig.
Die Aufgabe der vorliegenden Erfindung besteht darin, einen sichereren Carry-Skip-Addierer zu schaffen.
Diese Aufgabe wird durch einen Carry-Skip-Addierer gemäß Pa- tentanspruch 1 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß die Sicherheit des Carry-Skip-Addierers wesentlich erhöht werden kann, wenn zumindest teilweise mit verschlüsselten O- peranden gerechnet wird. Dies trifft insbesondere für die Ü- bertragsignalleitung, die Propagate-Leitung und die Skip- Leitung und für das UND-Gatter und das ODER-Gatter des Carry- Skip-Addierers zu. Diese Strukturen sind charakteristisch für den Carry-Skip-Addierer und in einem Design möglicherweise erkennbar. Darüber hinaus sind diese Leitungen in einem realen Design länger als Leitungen eines Bit-Slices der Addierer, so daß z. B. physikalische Angriffe auf diese Signale leichter sind.
Es wird ferner bevorzugt, nicht nur die Übertragssignale, die Propagate-Signale und die Skip-Signale zu verschlüsseln, sondern auch die UND- und die ODER-Berechnungen verschlüsselt durchzuführen, und darüber hinaus auch in den Addiererblöcken Addierer für verschlüsselte Daten einzusetzen.
Obgleich grundsätzlich jeder umkehrbare Verschlüsselungsalgorithmus zum Verschlüsseln der Operanden des UND-Gatters und
des ODER-Gatters eingesetzt werden können, wird es aus Gründen der Schnelligkeit und des Schaltungsaufwands bevorzugt, eine Verschlüsselung in Form einer XOR-Verknüpfung als Verschlüsselungsalgorithmus und eines Verschlüsselungsparameters oder alternativ eine XNOR-Verknüpfung mit einem Verschlüsselungsparameter einzusetzen, wobei die Verschlüsselung bitweise ist, d. h. daß der Verschlüsselungsparameter für jedes 0- perandenbit, d. h. für jeden Bit-Slice unterschiedlich ist. Eine hohe Sicherheit wird dadurch erreicht, daß der Schlüssel ab und an oder sogar für jeden Operanden gewechselt wird.
In einer bevorzugten Ausführungsform arbeitet das gesamte Rechenwerk direkt auf verschlüsselten Operanden. Die Verschlüsselung kann nach dem Prinzip einer One-Time-Pad- Verschlüsselung erfolgen. Das Ergebnis liegt dabei ebenfalls in verschlüsselter Form vor, ohne jemals ein Zwischenergebnis in Klartext zu generieren. Dadurch werden alle Arten von statistischen Angriffsszenarien, wie z. B. DPA und SPA, wesentlich erschwert. Dadurch wird - als bekannte sichere Alterna- tive - eine Fullcustom-Lösung mit Dual-Rail-Precharge vermieden. Das erfindungsgemäße Rechenwerk ist somit technologieunabhängiger und typischerweise auch, wenn ein einfacher Verschlüsselungsalgorithmus verwendet wird, platzsparender als eine Fullcustom-Lösung in Dual-Rail-Precharge-Technik. Wenn jedoch eine maximale Sicherheit gesucht wird, so kann das erfindungsgemäße Rechenwerk ebenfalls in Dual-Rail-Precharge- Technik realisiert werden.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
Fig. 1 ein Blockschaltbild eines erfindungsgemäßen Carry- Skip-Addierers mit verschlüsselter UND-Operation und verschlüsselter ODER-Operation sowie verschlüsselten Addierern;
Fig. 2 eine beispielhafte Implementation für die verschlüsselte UND-Operation;
Fig. 3 eine beispielhafte Implementation für die ver- schlüsselte ODER-Operation;
Fig. 4a ein Ausschnitt eines n-Bit-breiten Ripple-Carry- Addierers für verschlüsselte Operanden;
Fig. 4b ein Prinzipschaltbild eines n-Bit-breiten Ripple- Carry-Addierers ;
Fig. 5a eine beispielhafte Implementation für eine verschlüsselte ADD-Operation für einen Bit-Slice;
Fig. 5b eine Wahrheitstabelle für eine verschlüsselte ADD- Operation für einen Bit-Slice; und
Fig. 6 ein Blockschaltbild eines bekannten Carry-Skip- Addierers.
Fig. 1 zeigt ein Blockschaltbild eines bevorzugten Ausführungsbeispiels eines sichereren Carry-Skip-Addierers, bei dem eine bitweise Verschlüsselung der Operanden a, b, mit einem eigenen Verschlüsselungsparameter ki pro Operandenbit verwendet wird. Bezüglich der Notation sei darauf hingewiesen, daß Größen mit Apostroph verschlüsselte Größen sind. Bei dem in Fig. 1 gezeigten Ausführungsbeispiel finden sämtliche Operationen im Geheimtextraum statt. Im einzelnen umfaßt der in Fig. 1 gezeigte Carry-Skip-Addierer gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung einen ersten Addiererblock 10 zum Addieren einer ersten Mehrzahl von Bits der beiden Operanden a, b, wobei die erste Mehrzahl von Bits beispielhaft gleich 4 ist. Der erste Addierer 10 addiert so- mit die verschlüsselten Operandenbits a0, b0 bis a3 und b3.
Der Addierer 10 gibt als Ausgangssignal ein erstes Übertragsignal c'4 aus, das ebenfalls verschlüsselt ist. Das erste
Übertragsignal c' wird in eine Umverschlüsselungseinheit UV 11 eingespeist, um von der Schlüsselbasis k3 auf die Schlüsselbasis k umverschlüsselt zu werden, und zwar unter Verwendung des Umverschlüsselungsschlüssels t , der gleich der XOR- Verknüpfung der Schlüssel k3 und k4 ist.
Das umverschlüsselte Übertragbit wird dann in einen zweiten Addierer 12 für verschlüsselte Daten eingespeist, wobei der zweite Addierer eine zweite Mehrzahl von Operandenbits ad- diert, wobei die zweite Mehrzahl in Fig. 1 beispielhaft ebenfalls gleich 4 ist. Der zweite Addierer 12 für verschlüsselte Operanden gibt neben den verschlüsselten Summenbits, die in Fig. 1 nicht eingezeichnet sind, ein zweites Übertragsignal cs'a aus, das, wie es der Apostroph zeigt, ebenfalls ver- schlüsselt ist.
Der Carry-Skip-Addierer für verschlüsselte Daten aus Fig. 1 umfaßt ferner eine R-Box zur Implementierung der UND- Verknüpfung des Propagate-Signals des zweiten Addierers 12 und des ersten Übertragsignals c'4 des ersten Addierers 10, um ein Skip-Signal R zu erzeugen, das in einer C-Box 16 mit dem zweiten Übertragsignal des zweiten Addierers 12, das in Fig. 1 mit cs'8 bezeichnet ist, einer ODER-Verknüpfung zu unterziehen ist, um das Übertrag-Eingangssignal für einen drit- ten Addierer 18 zu liefern.
Es sei darauf hingewiesen, daß bei dem in Fig. 1 gezeigten Carry-Skip-Addierer gemäß der vorliegenden Erfindung sämtliche Signale auf Leitungen, die systembedingt eine bedeutsame Länge haben, also das erste Übertragsignal c' , das Propagate-Signal P' ,7, das Skip-Signal R' ,7 sowie das zweite Übertragsignal es '8 verschlüsselt sind. Damit wird sichergestellt, daß diese Leitungen, die aufgrund der Konstruktion des Carry-Skip-Addierers bereits eine beträchtliche Länge ha- ben können, gegenüber Abhören gesichert sind.
Zur Erzeugung der verschlüsselten Übertragsignale, Propagate- Signale und Skip-Signale existieren verschiedene Möglichkeiten. Eine einfache Möglichkeit zur Erzeugung dieser Signale besteht darin, Klartext-Addierer 10, 12, 18 zu verwenden, und die Übertragsignale, und die Propagate-Signale unmittelbar am Ausgang der Addierer zu verschlüsseln, damit verschlüsselte Werte über Signalleitungen übertragen werden. Die verschlüsselten Signale werden dann verschlüsselt über die erforderlichen Signalleitungen beispielsweise zur R-Box 14 übertragen (das erste Übertragsignal und das erste Propagate-Signal) .
Wenn eine UND-Verknüpfung im Klartextraum durchgeführt werden soll, werden die Signale am Eingang der R-Box wieder entschlüsselt. Dann wird die UND-Operation im Klartextraum durchgeführt, und das Ergebnis der UND-Operation wird unmit- telbar am Ausgang der R-Box wieder verschlüsselt, um in verschlüsseltem Zustand der C-Box zugeführt zu werden. Genauso kann mit dem zweiten Übertragausgangssignal cs'8 verfahren werden. Dieses kann am Ausgang des zweiten Addierers 12, der dann ein Klartextaddierer sein darf, verschlüsselt und ebenso wie das verschlüsselte Skip-Signal R der C-Box 16 zugeführt werden, wo beide Signale entschlüsselt werden, die ODER- Verknüpfung im Klartextraum durchgeführt wird, und dann das Ergebnis der ODER-Operation wieder verschlüsselt wird.
Die vorstehend beschriebene Ausführungsform liefert bereits eine gewisse Sicherheit dahingehend, daß keine verschlüsselten Daten über längere Leitungen übertragen werden. In diesem Zusammenhang ist es ebenfalls sinnvoll, die Summenbits der Addierer 10, 12, 18 ebenfalls nach ihrer Erzeugung zu ver- schlüsseln und zu ihrem Bestimmungsort in verschlüsseltem Zustand zu übertragen.
Eine weitere Sicherheitserhöhung besteht darin, die UND- Operation der R-Box sowie die ODER-Operation der C-Box nicht mehr im Klartextraum auszuführen, sondern bereits die UND- Verknüpfung mittels der R-Box 14 und die ODER-Verknüpfung der C-Box 16 direkt im Geheimtextraum auszuführen, ohne daß Zwi-
schenergebnisse im Klartextraum erzeugt werden. Die Bestimmungsgleichung für die UND-Operation in der R-Box 14 im Klartextraum lautet folgendermaßen:
R =c-P (3)
Die Operation der R-Box im Geheimtextraum läßt sich folgendermaßen angeben:
R'=(c-P)' (4;
Gewünscht ist, daß nur verschlüsselte Operanden vorhanden sind. Ein verschlüsseltes Übertragsignal c' sei folgendermaßen definiert, wobei VA einen Verschlüsselungsalgorithmus an- gibt, und wobei i der Schlüssel für den Verschlüsselungsalgorithmus ist:
c'=VA(c,i) (5)
Aus Gleichung 5 läßt sich das Klartext-Übertragsignal folgendermaßen berechnen:
c =VA_1(c',i) (6)
wobei VA
-1 die Umkehrung des Verschlüsselungsalgorithmus VA ist. Wird Gleichung 6 in die Bestimmungsgleichung 4 eingesetzt und wird eine analoge Substitution für das Propagate- Signal P vorgenommen, so ergibt sich folgender Ausdruck für Gleichung 4 :
In Gleichung 7 bezeichnen i, j und k unterschiedliche Schlüssel, wobei i der Schlüssel für das Übertragsignal c ist, wo- bei j der Schlüssel für das Propagate-Signal P ist und wobei k der Schlüssel für das Ergebnis ist, also für das Skip- Signal.
Gleichung 7 kann für einen konkreten Verschlüsselungsalgorithmus entsprechend umgeformt werden, um zu einer Form zu gelangen, bei der ohne Berechnung von Zwischenergebnissen im Klartextraum das verschlüsselte Skip-Signal R aus dem verschlüsselten Übertragsignal c und dem verschlüsselten Propagate-Signal P berechnet werden kann.
Dies wird nachfolgend anhand des folgenden Verschlüsselungs- algorithmus dargelegt.
x'=xθk; x =x'θk (8)
Der Verschlüsselungsalgorithmus ist die XOR-Funktion, deren Umkehrung ebenfalls die XOR-Operation ist. Gleichung 8 in Gleichung 7 eingesetzt wird zu folgendem Ausdruck:
R = [(c'θi)-(p'θj)]θk (9)
Wenn angenommen wird, daß die Schlüssel i, j und k gleich sind und dieser Schlüssel mit k bezeichnet wird, und wenn Gleichung 9 unter Verwendung üblicher mathematischer Umformungsgesetze umgeformt wird, erhält man eine logische Gleichung für R', die allgemein ausgedrückt folgendermaßen gege- ben ist:
R = P'-k + c -k + P'-c (10)
Fig. 2 zeigt eine Implementation der Gleichung 10, die drei UND-Gatter 22, 23, 24 und ein ODER-Gatter 25 umfaßt. Nachdem in die R-Box von Fig. 2 lediglich der Schlüssel k4 eingespeist wird, ist auch die Ausgabe R4,7 ( > mit diesem Schlüssel verschlüsselt.
Bezüglich der Notation in Fig. 2 und Fig. 3 sei darauf hingewiesen, daß eine hochgestellte Zahl in Klammern statt des A- postrophs angibt, auf welcher Schlüsselbasis der Wert ver-
schlüsselt ist. So bedeutet c (4) das Übertrag-Eingangsbit für den vierten Bit-Slice aus Fig. 1, jedoch mit dem Schlüssel k4 verschlüsselt, was durch die Umverschlüsselungseinrichtung 11 aus Fig. 1 erreicht wird.
Dieselbe Vorgehensweise wie in Fig. 2 kann gewählt werden, um die ODER-Operation der C-Box 16 im Geheimtextraum zu implementieren. Wenn Gleichung 8 als Verschlüsselungsalgorithmus zugrunde gelegt wird, ergibt sich als Bestimmungsgleichung folgender Ausdruck:
c= [(esΦi)+(R'θj)]®k (11)
In Gleichung 11 ist c' das Übertrag-Ausgangssignal der C-Box 16. c's ist das zweite Übertrag-Ausgangssignal des zweiten Addierers 12, und R' ist das Ausgangssignal der R-Box, als das verschlüsselte Skip-Signal. Werden wieder alle Schlüssel gleich gewählt und gleich k gesetzt, so ergibt sich nach einiger Umrechnung folgender Ausdruck: c'= tΛ ■ cs'-kk + R - t Jk • kk + es - • R. - tΛ (12)
Eine direkte Logikimplementation von Gleichung 12 ist in Fig. 3 gezeigt. Sie umfaßt drei UND-Gatter 29, 30, 31 und ein ODER-Gatter 32.
Die Logikimplementationen der Fig. 2 und 3 gelten somit nur, wenn für jede Rechnung eine gemeinsame Schlüsselbasis vorhanden ist, d. h. wenn derselbe Schlüssel für bei dieser Rech- nung beteiligten Größen gewählt wird, wofür entsprechende Um- verschlüsselungen mit Umverschlüsselungsschlüsseln nötig sine, wie es in den Figuren gezeigt ist.
Eine Umverschlüsselung für den in Gleichung 8 gezeigten Ver- schlüsselungsalgorithmus ist allgemein folgendermaßen definiert:
x(i = ti ® x{i); t1:J = i θj ( 13)
In Gleichung 13 bedeutet x(1) einem mit dem Schlüssel i verschlüsselten Wert x, während x(j> einen mit j verschlüsselten Wert x darstellt. ±j ist der Umverschlüsselungsschlüssel, der für den hier behandelten Verschlüsselungsalgorithmus aus einer XOR-Verknüpfung der beiden Schlüssel i und j berechnet wird.
Wie es nachfolgend erläutert wird, wird es bevorzugt, einen Carry-Skip-Addierer zu haben, der vollständig im Geheimtextraum arbeitet, und bei dem Verschlüsselungsschlüssel bzw. Verschlüsselungsparameter bitweise vergeben werden. Dies bedeutet, wenn Fig. 1 betrachtet wird, daß das erste Übertrag- signal c'4 mit dem Schlüssel k3 für die Operandenbits b3 und a3 verschlüsselt erzeugt wird und dann umverschlüsselt wird, daß das Propagate-Signal hier mit dem Schlüssel für das nie- derstwertige Bit des zweiten Addierers 12, also mit k4 verschlüsselt ist, und daß ein Skip-Signal R erzeugt wird, das mit dem Schlüssel k8 verschlüsselt ist, derart, daß für die für die C-Box gewählte gemeinsame Schlüsselbasis k8 das Skip- Signal bereits korrekt verschlüsselt ist.
Für Fachleute ist es offensichtlich, daß es für die I plemen- tationen der Gleichungen, auf denen aufbauend die R-Box für verschlüsselte Daten und die C-Box für verschlüsselte Daten implementiert werden, und insbesondere für die Umverschlüsse- lungen eine Vielzahl verschiedener Möglichkeiten gibt, wobei die verschiedenen Möglichkeiten dadurch erhalten werden kön- nen, daß unter Verwendung mathematischer Umformungsgesetze die entsprechenden Gleichungen umgeformt werden, oder daß verschiedene Schlüsselbasen verwendet werden. Welche Implementation im praktischen Aufbau bevorzugt wird, hängt auch von der verwendeten Technologie ab, d. h. ob z. B. ODER- Gatter oder Exklusiv-ODER-Gatter günstiger zu implementieren sind, oder ob AND-Gatter oder NAND-Gatter für eine bestimmte Technologie geeigneter sind.
Wie es bereits ausgeführt worden ist, wird es bevorzugt, für die Addierer 10, 12, 18 Addierer zu verwenden, die mit verschlüsselten Operanden arbeiten können und ein verschlüssel- tes Ergebnis liefern, ohne Zwischenergebnisse im Klartextraum zu generieren. Ferner wird es bevorzugt, eine bitweise Verschlüsselung unter Verwendung verschiedener Schlüssel k
± für die verschiedenen Bits a
± bzw. bi zu verwenden. Im nachfolgenden wird dargelegt, wie für den Verschlüsselungsalgorith- mus von Gleichung 8 ein verschlüsseltes Propagate-Signal P'
4,
7 berechnet werden kann. Das Propagate-Signal P
4, berechnet sich im Klartextraum folgendermaßen:
Auf die Operandenbits ai, bi bezogen bedeutet dies:
P4>7=(a4+b4)-(a5+b5Xa6+b6Xa7+b7) (15)
Das verschlüsselte Propagate-Signal P'4,7 berechnet sich demnach unter Verwendung der Systematik von Gleichung 9 und Gleichung 11:
P(4)4,7 = fα'4θ*4 +b @k4)@ k4 ® k5]- [(a'sθk5+b'5θk5)θk5θk6]-
[(a'6θk6+b'6θk6)θk6θk7]. i(a'7θk7+b'7Θk7)]}θk7θk4 (16)
Auch Gleichung 16 kann unter Verwendung üblicher mathemati- scher Gesetze umgeformt werden, um zu einer Form zu gelangen, bei der keine Klartext-Zwischenergebnisse auftreten. Insbesondere ist aus Gleichung 16 zu ersehen, daß für jeden verschlüsselten Propagate-Wert eines Bit-Slices eine Um- verschlüsselung für den nächst-höheren Bit-Slice durchzufüh- ren ist, um wieder eine gemeinsame Schlüsselbasis zu erhalten. Die XOR-Verknüpfung des Gesamtergebnisses mit dem Ergebnis der XOR-Verknüpfung von k7 und k4 am Ende von Gleichung
16 liefert die Umverschlüsselung des Propagate-Werts auf den Schlüssel k. Wird der Propagate-Wert dagegen verschlüsselt mit dem Schlüssel k7 benötigt, so kann auf diese Umverschlüs- selungsoperation verzichtet werden.
Für Fachleute ist es offensichtlich, daß als Addierer 10, 12, 18 beliebige Addierer eingesetzt werden können. So kann selbstverständlich ein üblicher Ripple-Carry-Addierer eingesetzt werden. Wenn Geschwindigkeit zählt, wird es jedoch be- vorzugt, einen Carry-Lookahead-Addierer als Addierer 10, 12 und 18 einzusetzen. Prinzipiell können für die Addiereinrichtungen 10, 12, 18 jegliche Mittel verwendet werden, die unter Verwendung von Eingangsbits Summenbits und ein Übertragbit für die höchste Stufe liefern. Diese Mittel können entweder im Klartextraum arbeiten, was eine anschließende Verschlüsselung der Übertragbits, der Propagate-Werte und auch der Summenbits erforderlich macht, oder diese Addiermittel können im Geheimtextraum arbeiten.
Im nachfolgenden werden verschiedene Möglichkeiten zum Implementieren eines Addierers im Geheimtextraum dargelegt.
Im nachfolgenden wird auf Fig. 5a Bezug genommen, um eine ADD-Operation zwischen den verschlüsselten Operanden akn und n zu erläutern. Bestimmungsgleichung hierfür ist die nachfolgende Gleichung:
S = a ® b θct = a„ @ k„ ® b © k„ @ c„ @ k„ =
= a n ® b n θc n θfc.
Die Operation von drei Operanden bzw. von drei Bits von Operanden, wenn ein Bit-Slice eines Parallel-Addierers betrachtet wird, führt zu einem Übertrag c, wobei in der vorletzten Spalte und der drittletzten Spalte der in Fig. 5b gezeigten Wahrheitstabelle die Überträge bei der ADD-Operation zwischen dem unverschlüsselten Operanden a, b und c als cp aufgeführt ist, wobei p für „piain" = unverschlüsselt steht, und wobei
in der vorletzten Zeile der Übertrag der ADD-Operation der erfindungsgemäßen ALU ck gezeigt ist.
Der Übertrag ckn(
n+u ergibt sich durch folgende Gleichung:
Die Implementierung der vorstehenden Gleichung ist in Fig. 5a dargestellt. Die ALU von Fig. 5a für ein verschlüsseltes Re- chenwerk umfaßt wiederum eine Vielzahl von arithmetischen Unteroperationen, nämlich AND-Operationen 171 bis 173 und OR- Operationen 179 und 180. Ausgangsseitig ergibt sich dann der Übertrag (ckn)n+ι für die ADD-Verknüpfung der drei Eingangs- Operanden, welcher wieder gemäß der in Fig. 5b gezeigten Wahrheitstabelle mit dem Übertrag übereinstimmt, wenn die drei Operanden in unverschlüsselter Form addiert werden und dann verschlüsselt werden. Insbesondere bedeutet (ckn)n+ι den Übertrag (Carry-In) für die nächsthöhere ((n-t-l)-te) Position (Bit-Slice) , verschlüsselt mit dem Schlüssel kn, also mit dem Schlüssel der aktuellen Position n, also nicht verschlüsselt mit dem Schlüssel kn+ι für die nächsthöhere Position. Dies bedeutet, daß je nach Ausführung eines Bit-Slices eine Um- verschlüsselung von (c n)n+ι vom Schlüssel kn in den Schlüssel kn+ι stattfinden wird.
Die beiden vorstehenden Gleichungen geben eine Implementation für einen Addierer mit verschlüsselten Operanden vor, der ein verschlüsseltes Summenbit s' (s' = Skn) und ein verschlüsseltes Übertragbit c' (cf = (ckn)n+ι) ausgibt, wobei derselbe eingangsseitig neben den beiden verschlüsselten Operanden ein verschlüsseltes Übertrageingangsbit erhält. Ein solcher Addierer wird im Stand der Technik - bei unverschlüsselten Daten - auch als Ein-Bit-Volladdierer bezeichnet.
Ein Ein-Bit-Volladdierer wird verwendet, um einen n-Bit breiten Volladdierer 10, 12, 18 aufzubauen. In diesem Fall wird der Ein-Bit-Volladdierer als Bit-Slice oder Bit-Slice-
Einrichtung bezeichnet. Die Zusammenschaltung zweier Bit- Slice-Einrichtungen ist in Fig. 4a gezeigt. Im einzelnen zeigt Fig. 4a einen ersten Bit-Slice 1200 für das Bit der Ordnung n und einen Bit-Slice 1202 für das Bit der Ordnung n+1. Herzstück jedes Bit-Slices ist das Rechenwerk für verschlüsselte Operanden, das in Fig. 4a mit 1204 bezeichnet ist. Wie es ausgeführt worden ist, sind beliebige andere Implementationen für einen verschlüsselten Addierer möglich, so lange verschlüsselte Eingangsoperanden und ein verschlüs- seiter Übertrageingang verwendet werden, um verschlüsselte Ausgangsgrößen, d. h. verschlüsselte Summenbits und verschlüsselte Übertragsbits zu erzeugen.
Der Ein-Bit-Volladdierer, der in Fig. 4a gezeigt ist, ist durch folgende beiden Bestimmungsgleichungen definiert:
s = xθyΘ z c = x - y + z - x + z - y
Die Addierergleichungen sind hier so gewählt, daß in dem Ein- Bit-Volladdierer 1204 selbst kein Verschlüsselungsschlüssel eingegeben werden muß, sehr wohl aber in den Bit-Slice 1202 oder 1200 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Darüber hinaus ist der Ein-Bit-Volladdierer 1204 derart angeordnet, daß für eine Addiererfunktion nicht das verschlüsselte Übertragbit c' selbst an die nächsthöhere Bit- Slice-Einrichtung weitergegeben wird, sondern daß das inver- tierte verschlüsselte Übertragbit weitergereicht wird. In den ersten Eingang x des Ein-Bit-Volladdierers des Bit-Slices für das Bit n+1 wird das aktuelle Bit des verschlüsselten Operanden a, also a'n+ι eingegeben. In den zweiten Eingang y wird das aktuelle verschlüsselte Bit des zweiten Operanden, also b'n+i eingegeben. In den dritten Eingang z wird ein Bit eingegeben, das von dem Übertragausgangsbit c'n des vorhergehenden Bit-Slices 1200 abhängt.
Es wird darauf hingewiesen, daß das Übertragausgangsbit des vorhergehenden Bit-Slices nicht direkt verwendet werden kann, da für die beiden unterschiedlichen Bit-Slice-Einrichtungen 1200 und 1202 unterschiedliche Verschlüsselungsschlüssel kn+χ bzw. kn vorhanden sind. Daher muß eine Umverschlüsselung des Übertragausgangsbits der vorhergehenden Bit-Slice-Einrichtung von dem Verschlüsselungsschlüssel kn für die vorhergehende Bit-Slice-Einrichtung in den Verschlüsselungsschlüssel kn+ι der aktuellen Bit-Slice-Einrichtung durchgeführt werden.
Im Falle einer Verschlüsselung mittels einer XOR-Verknüpfung kann eine Umverschlüsselung einfach durch XOR-Verknüpfung des verschlüsselten Übertragausgangsbits des Bit-Slices 1200 mit einem Umverschlüsselungs-Schlüssel tn+ι erreicht werden. Dies ist durch ein XOR-Gatter 1206 dargestellt. Der Umverschlüsselungs-Schlüssel tn+ι wird bestimmungsgemäß durch die XOR- Verknüpfung der beiden betroffenen Schlüssel für die beiden Bit-Slices berechnet, also durch eine XOR-Verknüpfung von kn+ι für den Bit-Slice 1202 und kn für den Bit-Slice 1200.
Die Bit-Slice-Einrichtung 1202 gibt wieder ein Übertragausgangsbit aus, das jedoch mit dem Schlüssel kn+ι verschlüsselt ist und von der nächsthöheren Stufe (in Fig. 4a nicht ge- zeigt) wieder entsprechend umverschlüsselt werden muß. Dasselbe trifft für den Übertrageingang des Bit-Slices 1200 zu. Hier wird ein Übertragausgangsbit der nächst niedrigeren Stufen n-1 erhalten, wobei dieses Bit wieder durch das Um- verschlüsselungs-XOR-Gatter 1206 umverschlüsselt werden muß.
Werden mehrere Bit-Slices aneinander geschaltet, wie es in Fig. 4a gezeigt ist, so ergibt sich allgemein ein Ripple- Carry-Addierer (Fig. 4b) , der als Eingangsgrößen die beiden verschlüsselten Operanden a', b' sowie die Umverschlüsse- lungs-Schlüssel für die einzelnen Bits ti erhält. Der Ripple- Carry-Addierer, der in Fig. 4b dargestellt ist, erhält ferner als Eingangssignal ein Übertrageingangssignal, das für einen
üblichen Ripple-Carry-Addierer, der im Addiermodus arbeitet, auf 0 gesetzt ist.
Selbstverständlich kann statt einer 0 auch eine 1 angelegt werden, wie es für den nachfolgend erläuterten Carry-Select- Addierer erläutert wird. Ausgangsseitig liefert der Addierer von Fig. 4b die Summenbits in verschlüsselter Form, nämlich s ' r si' bis sN'. Darüber hinaus liefert der in Fig. 4b gezeigte Addierer als Ausgangssignal ein Übertragbit des höchs- ten Bit-Slices innerhalb des Addierers, falls ein solches erzeugt wird.
Bezugszeichenliste
10 erster Addierer
11 Umverschlüsselungseinrichtung 12 zweiter Addierer
14 R-Box
16 C-Box
18 dritter Addierer
22 - 24 UND-Gatter 25 ODER-Gatter
29 - 31 UND-Gatter
32 ODER-Gatter
171 - 173 UND-Gatter
179 - 180 ODER-Gatter 600 erster Addierer
601 zweiter Addierer
602 dritter Addierer
603 Propagate-Leitung
604 Übertrag-Ausgangssignal-Leitung 605 UND-Gatter
606 Skip-Signal-Leitung
607 Übertrag-Ausgangssignal-Leitung für den zweiten Addierer
608 ODER-Gatter 1200 Bit-Slice für Bit n
1202 Bit-Slice für Bit n+1
1204 1-Bit-Volladdierer
1206 Umverschlüsselungseinrichtung