Multivariate Interpolationsangriffe auf symmetrische … · 1.1 Begriffe und Notation a~=b a6= b...
-
Upload
trinhkhanh -
Category
Documents
-
view
213 -
download
0
Transcript of Multivariate Interpolationsangriffe auf symmetrische … · 1.1 Begriffe und Notation a~=b a6= b...
Diplomarbeit
Multivariate Interpolationsangriffeauf symmetrische Chiffren
Dieter Schuster
25. Mai 2007
Betreuer: Prof. Dr. Johannes Buchmann,
Fachbereich Mathematik,
Technische Universitat Darmstadt
Danksagung
Ich mochte mich an dieser Stelle bei den Menschen bedanken, die mir beim erstellendieser Arbeit geholfen haben. Ich danke Herrn Prof. Dr. Johannes Buchmann fur dieVergabe der Diplomarbeit, sowie Ralf-Philipp Weinmann fur seine Betreuung und dienutzlichen Diskussionen.
Ebenso mochte ich Britta Michel, Andrea Peter, Thilo Schang, Dora Schuster undbesonders Alexander Kartzow fur das Korrekturlesen danken.
3
Inhaltsverzeichnis
1 Einleitung 111.1 Begriffe und Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Interpolationsverfahren 172.1 Vandermondematrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Inversion einer bivariaten Vandermondematrix . . . . . . . . . . . . . . 182.3 Eindeutigkeit der Losung . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4 Univariate Interpolationsverfahren . . . . . . . . . . . . . . . . . . . . . 21
2.4.1 Lagrange-Interpolation . . . . . . . . . . . . . . . . . . . . . . . 212.4.2 Newton-Interpolation . . . . . . . . . . . . . . . . . . . . . . . . 232.4.3 Vandermonde-Interpolation . . . . . . . . . . . . . . . . . . . . 24
2.5 Multivariate Interpolationsverfahren . . . . . . . . . . . . . . . . . . . . 262.5.1 Multivariate Verallgemeinerungen der univariaten Verfahren . . 262.5.2 Der vereinfachte Zippel-Algorithmus . . . . . . . . . . . . . . . 272.5.3 Nullteilraum-Interpolation . . . . . . . . . . . . . . . . . . . . . 29
2.6 Umrechnung univariater auf multivariate Polynome . . . . . . . . . . . 30
3 Interpolationsangriff 333.1 Deduktionsangriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2 Key-Recovery-Angriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.3 Meet-in-the-Middle-Angriff . . . . . . . . . . . . . . . . . . . . . . . . . 353.4 Probabilistischer Interpolationsangriff . . . . . . . . . . . . . . . . . . . 373.5 Lineare Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 Kasumi und experimentelle Ergebnisse 394.1 Die Kasumi-Chiffre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2 Angriffe auf Teile Kasumis . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.1 Programmierproblematik . . . . . . . . . . . . . . . . . . . . . . 414.2.2 Univariate Interpolation der FI-Funktion . . . . . . . . . . . . . 424.2.3 Multivariate Interpolation der FI-Funktion . . . . . . . . . . . . 434.2.4 Interpolation der FO-Funktion . . . . . . . . . . . . . . . . . . . 454.2.5 Interpolation von Kasumi . . . . . . . . . . . . . . . . . . . . . 46
5 Schlußfolgerungen 51
5
Inhaltsverzeichnis
A Quelltexte 53A.1 Newton-Interpolation: C++-Programm . . . . . . . . . . . . . . . . . . 53A.2 Nullteilraum-Interpolation: C++-Programm . . . . . . . . . . . . . . . 56A.3 Vereinfachter Zippel-Algorithmus: Axiom-Programm . . . . . . . . . . 62
6
Abbildungsverzeichnis
2.1 Algorithmus der Lagrange-Interpolation . . . . . . . . . . . . . . . . . 222.2 Dividierte Differenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3 Newtown-Polynom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4 Interpolationsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1 Struktur des Interpolationspolynoms . . . . . . . . . . . . . . . . . . . 494.2 reduzierte Kasumi-Chiffre . . . . . . . . . . . . . . . . . . . . . . . . . 50
7
Tabellenverzeichnis
1.1 nicht selbsterklarende Axiom-Befehle . . . . . . . . . . . . . . . . . . . 13
2.1 Rechenaufwand und Speicherbedarf der Interpolationsverfahren . . . . 26
4.1 Muster des fehlenden Monoms X2115 . . . . . . . . . . . . . . . . . . . 474.2 Klassen der Kasumi-FI-Schlussel . . . . . . . . . . . . . . . . . . . . . . 484.3 Experimentelle Ergebnisse der bitweisen FI-Interpolation . . . . . . . . 48
9
1 Einleitung
Im Jahre 1997 haben Thomas Jakobsen und Lars R. Knudsen im Artikel”The Interpola-
tion attack on Block Ciphers“ ([JK97]) einen neuen Angriff auf symmetrische Block-chiffren veroffentlicht.
Dieser Angriff konstruiert aus bekannten Paaren von Klar- und den dazugehorigenChiffretexten ein Polynom, daß die Verschlusselungsfunktion fur einen fest gewahltenSchlussel simuliert. Zur Konstruktion dieser Polynome verwenden sie Interpolationsme-thoden und nennen den Angriff daher Interpolationsangriff. Hierzu betrachten sie denKlartext- und den Schlusseltextraum als Vektorraum uber einem endlichen Korper derCharakteristik 2.
Jakobsen und Knudsen haben mit dem Interpolationsangriff einen Angriff gefun-den, mit dem einige Versionen der Chiffre SHARK (vgl. [RDP+96]) gebrochen werdenkonnen.
Ist eine symmetrische Chiffre oder eine S-Box aus einfachen algebraischen Funk-tionen aufgebaut, dann scheint sie besonders anfallig fur den Interpolationsangriff zusein.
Diese Diplomarbeit zeigt, daß eine stark vereinfachte Version der Kasumi-Chiffre abdrei Runden gegen den Interpolationsangriff resistent ist.
Kasumi wurde von dem Gremium”3rd Generation Partnership Project“ (3GPP)
entwicklet, das fur Standardisierungen fur den Mobilfunk zustandig ist. Die Chiffre Ka-sumi ist eine Weiterentwicklung von MISTY1 (vgl. [Mat97]), einer Feistel-Chiffre vonMitsuru Matsui. Die Hauptverwendung findet Kasumi in den fur die UMTS-Techniksicherheitsrelevanten Algorithmen f8 (Ver-/Entschlusselung) und f9 (Message Authen-tication Code) (vgl. [f8-04]).
In [KAS01] wird die Resistenz von Kasumi gegen den Interpolationsangriff behaup-tet, jedoch wird kein Grund hierfur genannt. Mit dieser Arbeit soll eine Begrundungnachgeliefert werden.
Kasumi wurde gewahlt, da es eine unbalancierte Feistel-Chiffre verwendet. Wir wol-len prufen, ob das einen hinreichenden Schutz vor dem Interpolationsangriff bietet.
Die Gliederung dieser Diplomarbeit ist folgende: Die Einleitung beschreibt die wich-tigen und nichtgelaufigen grundlegenden Begriffe und die hier verwendete Notation.
In Kapitel 2 wollen wir uns verschiedene univariate und multivariate Interpolations-verfahren anschauen und ihre Zeit- und Speicherkomplexitat untersuchen.
Die verschiedenen Varianten des Interpolationsangriffs werden in Kapitel 3 vorge-stellt.
11
1 Einleitung
Kapitel 4 fuhrt die Kasumi-Chiffre ein und zeigt experimentell ermittelte Ergebnisseder Interpolationsverfahren fur eine vereinfachte Version von Kasumi und begrundetdie Resistenz gegen den Interpolationsangriff.
1.1 Begriffe und Notation
Wir wollen Vektoren mit einem Pfeil (Beispiel: ~x) versehen, um eine Vektorschar ~xi
besser von einer Punkteschar xi zu unterscheiden. Ist ein System der VeranderlichenX1, X2, . . . , Xm gegeben, so bezeichnen wir es abkurzend mit ~X. Ist ein Polynom
P ( ~X) =
d1,...,dm∑
e1=0,...,em=0
ce1,...,emXe1
1 · · ·Xem
m (1.1)
gegeben so wollen wir die Monome mit c~e~X~e bezeichnen, ferner wollen wir den Begriff
Monom sowohl fur c~e~X~e als auch nur fur ~X~e verwenden.
Damit laßt sich (1.1) kurzer schreiben:
P ( ~X) =
~d∑
~e=0
c~e~X~e.
Fur den Raum der quadratischen Matrizen der Dimension n uber dem Korper Kschreiben wir Mn(K).
Ein Teil der aufgefuhrten Algorithmen in dieser Arbeit sind mit dem Computeralge-brasystem Axiom entwickelt. Da der Quelltext auch ohne Axiom-Kenntnisse gut lesbarsein sollte, wird er hier direkt verwendet. Die Homepage des ComputeralgebrasystemsAxiom ist http://wiki.axiom-developer.org/FrontPage. Ein Handbuch fur Axiomist [BB+03].
Die wichtigsten Sprachelemente, die nicht selbsterklarend sind, sind in Tabelle 1.1zusammengefaßt.
Wir wollen hier auf eine Einfuhrung der grundlegenden mathematischen und krypto-logischen Begriffe verzichten, da es genugend Literatur gibt, wie zum Beispiel [Buc04]oder [Mat03]. Wir fuhren nur die wichtigsten und nicht gelaufigen Begriffe ein.
Beginnen wir mit den mathematischen Begriffen.
Definition 1.1.1 (Struktur eines Polynoms) Mit der Struktur SP eines PolynomsP wollen wir die Menge der nichtverschwindenden Monome bezeichnen.
Definition 1.1.2 (Interpolationsproblem) Es seien ein Korper K und die paar-weise verschiedenen Stutzpunkte (~x1, y1), (~x2, y2), . . . , (~xn, yn) aus Km × K gegeben.
Gesucht ist ein Polynom P ( ~X), dessen Grad je Veranderlicher hochstens n− 1 ist unddas fur alle i aus {1, . . . , n} die Gleichung P (~xi) = yi erfullt. Fur m = 1 sprechen wir
12
1.1 Begriffe und Notation
a~=b a 6= b
a**b ab
[a, b] Die Liste mit den Elementen a und b
#l Lange der Liste l
l.i i-tes Element der Liste l, Index beginnt bei 1c$K c ist vom Typ K
c::K c wird in den Typ K umgewandeltIFF(p,n) Eine Implementierung des Korpers Fpn
-- Leitet einen Kommentar bis ans Zeilenende ein._ Uberlange Zeile wird in die nachste Zeile umgebrochen
Tabelle 1.1: nicht selbsterklarende Axiom-Befehle
vom univariaten Interpolationsproblem, fur m > 1 vom multivariaten Interpolations-problem.
Definition 1.1.3 (Resultante) Sind die beiden univariaten Polynome
f(X) =d
∑
k=0
akXk und g(X) =
e∑
k=0
bkXk
gegeben, dann ist die Resultante R von f und g definiert durch
R(A,B) := det
ad ad−1 . . . a0
ad ad−1 . . . a0
. . . . . .
be be−1 . . . b0
be be−1 . . . b0
. . . . . .
,
wobei die Koeffizienten von f in d und die Koeffizienten von g in e Zeilen stehen.
Mit der Resultanten zweier Polynome kann uberpruft werden, ob die Polynome keinegemeinsame Nullstelle haben, denn es gilt
Satz 1.1.4 Haben die univariaten Polynome f und g uber dem Korper K eine gemein-same Nullstelle, dann ist R(f, g) = 0.
Beweis. Ein Beweise findet sich in [Lan02].
Definition 1.1.5 (gewichteter Grad) Sei das bivariate Polynom
P (X,Y ) =∑
i>0,j>0
ci,jXiY j
13
1 Einleitung
gegeben. Der (a, b)-gewichtete Grad fur die naturlichen Zahlen a und b von P ist:
deg(a,b) P (X,Y ) := max{ia + jb | ci,j 6= 0}.
Definition 1.1.6 (MZ-unterscheidbar) Wir wollen ein Polynom MZ-unterscheidbarnennen, wenn seine Monomanzahl signifikant kleiner ist als die Monomanzahl eineszufallig gewahlten Polynoms.
Wenden wir uns nun den kryptologischen Begriffen zu.Wir wollen hier den Klartextraum mit P , den Schlusselraum mit K und den Chiffre-
textraum mit C bezeichnen. Fur Klartext-/Chiffretextpaare wollen wir kurz KCPschreiben.
Definition 1.1.7 (Symmetrisches Kryptosystem) Ist ein Quintupel (P , C,K, e, d)gegeben, so heißt es symmetrisches Kryptosystem, wenn die Entschlusselungsfunktiond : C ×K → P fur das Entschlusseln eines Chiffretextes den gleichen Schlussel verwen-det wie die Verschlusselungsfunktion e : P × K → C zum verschlusseln, daß heißt esgilt:
∀k ∈ K∀p ∈ P : d(e(p, k), k) = p.
Der Schlussel k, der an die Ver- oder Entschlusselungsfunktion ubergeben wird, heißtChiffreschlussel.
Im weiteren wollen wir uns die Feistel-Chiffren genauer anschauen. Dazu brauchenwir
Definition 1.1.8 (Blockchiffre) Eine Blockchiffre ist eine symmetrische Chiffre, beider Klartextraum und Chiffretextraum die Menge aller Worter uber einem Alphabeteiner festen Lange n sind. Die Lange n heißt Blocklange.
Wird eine Abfolge von Funktionen mehrfach hintereinander ausgefuhrt, so heißtdie Chiffre iterierte Blockchiffre. Eine Ausfuhrung dieser Abfolge bezeichnen wir mitRunde. Die Schlussel, die in den einzelnen Runden verwendet werden, heißen Runden-schlussel.
Definition 1.1.9 (S-Box) Mit einer S-Box (Substitutionsbox) bezeichnen wir einemeist nichtlineare Abbildung von Fq nach Fq.
S-Boxen bilden einen der wichtigsten Teile einer symmetrischen Chiffre, und werdendaher beim Entwurf besonders sorgfaltig betrachtet.
Definition 1.1.10 (Feistel-Chiffre) Eine Feistel-Chiffre ist eine iterierte Blockchif-fre mit einer Blocklange 2n und r Runden uber dem Klartextraum F
2n2 . Teilen wir den
14
1.1 Begriffe und Notation
Klartextblock P in die zwei Halften L0 und R0, und den Chiffretextblock C in dieHalften Lr und Rr, dann berechnet sich C aus P wie folgt:
Li = Ri−1,
Ri = f(Li−1, Ki) + Ri−1, fur i ∈ {1, . . . , r}, (1.2)
fur eine Rundenfunktion f : Fn2 × K → F
n und die Rundenschlussel Ki. Die Feistel-Chiffren sind nach ihrem Entwickler Horst Feistel1 benannt.
Definition 1.1.11 (unbalancierte Feistel-Chiffre) Bei einer unbalancierten Feistel-Chiffre (vgl. [SK96] und [Nyb96]) der Blocklange 2n werden die Blocke nicht in gleich-große Teilblocke zerlegt, sondern in einen linken Teilblock der Lange n−m und einenrechten Teilblock der Lange n + m (fur m < n). Es gibt zwei Rundenfunktionenf1 : F
n−m2 × K → F
n+m2 und f2 : F
n+m2 × K → F
n−m2 . Aus den Klartextteilblocken L0
und R0 berechnen sich die Chiffretextteilblocke Lr und Rr durch:
Li = Ri−1,
Ri =
{
f1(Li−1, Ki) + Ri−1, falls Li−1 ∈ Fn−m2 ,
f2(Li−1, Ki) + Ri−1, falls Li−1 ∈ Fn+m2 ,
fur i aus {1, . . . , r}.
Bemerkung 1.1.12 Um fur die Verschlusselungsfunktion einer Feistel-Chiffre die Ent-schlusselungsfunktion zu ermitteln, muß die Rundenfunktion f der Feistel-Chiffre nichtinvertiert werden. Es reicht die Gleichung (1.2) ruckwarts anzuwenden, d.h.
Ri−1 = Li,
Li = f(Ri−1, Ki) + Li−1, fur i ∈ {1, . . . , r}. (1.3)
Fur die unbalancierten Feistel-Chiffren gilt Entsprechendes.
Wir wollen noch die moglichen Angriffe beschreiben, mit denen wir uns in dieserArbeit beschaftigen wollen.
Definition 1.1.13 (Known-Plaintext-Angriff) Setzt ein Angriff auf ein Krypto-system eine Menge aus bekannten Klartext-/Chiffretextpaaren vorraus, so spricht manvon einem Known-Plaintext-Angriff, wenn der Angreifer keinen Einfluß auf die Klar-texte nehmen kann.
Definition 1.1.14 (Chosen-Plaintext-Angriff) Beim Chosen-Plaintext-Angriff hatder Angreifer, im Gegensatz zum Known-Plaintext-Angriff, Einfluß darauf zu welchenKlartexten die Schlusseltexte vorliegen.
130. Januar 1915 in Berlin bis 14. November 1990
15
1 Einleitung
Definition 1.1.15 (Key-Recovery-Angriff) Der Key-Recovery-Angriff ist ein An-griff, bei dem ein Teil oder der ganze Schlussel aus gegebenen KCP rekonstruiert wird.
Definition 1.1.16 (Deduktionsangriff) Das Erstellen eines zur Chiffre aquivalentenAlgorithmuses, der den verwendeten Schlussel nicht kennt, bezeichnen wir mit globalemDeduktionsangriff. Daß heißt, daß die Klartexte durch den Algorithmus in dieselbenChiffretexte uberfuhrt werden, die auch die Chiffre erzeugen wurde.
Beim lokalen Deduktionsangriff ist der Algorithmus nur fur eine Teilmenge des Klar-textraumes aquivalent zur Chiffre.
16
2 Interpolationsverfahren
2.1 Vandermondematrizen
Sowohl bei der theoretischen Betrachtung als auch bei den Algorithmen der Interpo-lationstheorie spielen Vandermondematrizen eine wichtige Rolle. Hier werden sie kurzeingefuhrt.
Definition 2.1.1 (Vandermondematrix) Eine Matrix der Form
1 x1 x21 x3
1 . . . xd1
1 x2 x22 x3
2 . . . xd2
......
......
1 xk x2k x3
k . . . xdk
(2.1)
fur eine naturliche Zahl d heißt univariate Vandermondematrix. Kommen nicht alleExponenten in (2.1) vor, so heißt sie verallgemeinerte univariate Vandermondematrix.
Hat eine Matrix die Form
1 x11 x21 . . . xm1 x211 x11x21 . . . x11xm1 x2
21 . . . xd11x
d21 · · ·x
dm1
1 x12 x22 . . . xm2 x212 x12x22 . . . x12xm2 x2
22 . . . xd12x
d22 · · ·x
dm2
......
......
......
......
...1 x1k x2k . . . xmk x2
1k x1kx2k . . . x1kxmk x22k . . . xd
1kxd2k · · ·x
dmk
,
so heißt sie multivariate Vandermondematrix. In der i-ten Zeile stehen also alle moglichenProdukte mit hochstens d · m Faktoren einer Punktmenge x1i, . . . , xmi, wobei jederPunkt hochstens in der d-ten Potenz auftritt.
Fehlen einige dieser Produkte, so heißt die Matrix verallgemeinerte multivariate Van-dermondematrix.
Werden verschiedene Stutzpunkte (~xi, yi) fur i aus {1, . . . , k} in ein (multivariates)
Polynom P ( ~X) eingesetzt, so heißt das Gleichungssystem
P (~xi) = yi, fur i aus {1, . . . , k}, (2.2)
Vandermondesystem. Wird dieses System in Matrixschreibweise V ~c = ~y geschrieben,wobei ~y = (y1, . . . , yk)
T ist und ~c der Koeffizientenvektor des Polynoms P ( ~X), so ist Veine (multivariate) Vandermondematrix.
Um Vandermondesysteme zu losen ist folgender Satz hilfreich.
17
2 Interpolationsverfahren
Satz 2.1.2 Die Determinante einer univariaten Vandermondematrix V aus Mn(K)ist
det V =∏
1≤i<j≤n
(xj − xi),
fur xl (l ∈ {1, . . . , k}) wie in (2.1).
Beweis. Den Beweis findet man zum Beispiel in [Lan02]. ¤
Eine univariate Vandermondematrix kann also genau dann invertiert werden, wenndie xl paarweise verschieden sind.
2.2 Inversion einer bivariaten Vandermondematrix
In [Zip90] wird beschrieben wie eine univariate Vandermondematrix invertiert werdenkann. Wir gehen hier exemplarisch auf den bivariaten Fall ein und erlautern den Un-terschied zum univariaten Fall. Sei K ein endlicher Korper der Machtigkeit q und diebivariate Vandermondematrix
V :=
1 x11 x21 x211 x11x21 x2
21 x311 . . . xd
11xd21
1 x12 x22 x212 x12x22 x2
22 x312 . . . xd
12xd22
......
1 x1n x2n x21n x1nx2n x2
23 x31n . . . xd
1nxd2n
aus Mn(K) gegeben, wobei n = (d + 1)2. Angenommen V sei regular. Dann laßt sichV auf die folgende Weise invertieren. Sei A = (aij) aus Mn(K) eine allgemeine Matrix,betrachten wir nun das Produkt
B := V · A.
Fur ein Element bij aus B gilt:
bij = a1j + a2jx1i + a3jx2i + a4jx21i + . . . + anjx
d1ix
d2i.
Fur geeignete Polynome Pj(X1, X2) laßt sich nun schreiben:
B =
P1(x11, x21) P2(x11, x21) . . . Pn(x11, x21)P1(x12, x22) P2(x12, x22) . . . Pn(x12, x22)
......
...P1(x1n, x2n) P2(x1n, x2n) . . . Pn(x1n, x2n)
.
Wahlen wir Pj(x1i, x2i) = δji, so ist B die Einheitsmatrix des Mn(K), und A die Inversevon V .
18
2.3 Eindeutigkeit der Losung
Fur den univariaten Fall kann
Pj(X) :=n
∏
i=1i6=j
X − xi
xj − xi
gewahlt werden. Definiert man weiter
P (X) :=n
∏
i=1
(X − xi),
so gilt
Pj(X) =P (X)/(X − xj)
c(xj), (2.3)
wobei c(xj) der Wert von P (X)/(X − xj) an der Stelle xj ist. Durch die Darstellung(2.3) lassen sich die Pj mit O(n) Speicher auswerten, also laßt sich auch B mit O(n)Speicher berechnen.
Nimmt man fur den bivariaten Fall
Pj(X1, X2) :=n
∏
i=1i6=j
X1 − x1i
x1j − x1i
·X2 − x2i
x2j − x2i
,
so sind die Pj nur fur hinreichend große Korper definiert, denn ist n < q, so benotigtman zwei Punkte der Gestalt (ξ1, ξ2) und (ξ1, ξ3) um das Polynom Pj zu erstellen. Jetztgilt x1j − x1i = 0 fur ein i und ein j und damit ist die Differenz nicht invertierbar.
Die Pj(X1, X2) lassen sich durch Losen eines Gleichungssystems berechnen, fur jedesPj haben wir n Gleichungen, in Summe also n2. Losen wir das Interpolationsproblem1.1.2 mit dem Gauß-Algorithmus und V , so haben wir nur n Gleichungen.
Wir mussen die Pj(X1, X2) also auf eine andere Methode bestimmen. Konnen wirdie Pj mit O(n) Speicher bestimmen, so laßt sich V mit O(n) Speicher invertieren.
Diese Inversionsmethode laßt sich auf den multivariaten Fall sowie auf verallgemei-nerte Vandermondematrizen verallgemeinern. Bei diesen verallgemeinerten Fallen istes ebenfalls unklar, ob sie sich fur beliebige Korper, insbesondere Korper positiverCharakteristik, mit O(n) Speicher berechnen lassen.
2.3 Eindeutigkeit der Losung
Wir wollen hier die Eindeutigkeit des Interpolationsproblems fur beliebige einwertigeFunktionen uber endlichen Korpern untersuchen.
Sei K := Fq und eine Funktion f : Km → K gegeben, die nicht die Nullfunktion ist.
Gesucht ist ein Polynom P ( ~X) ∈ K[ ~X] mit der Eigenschaft, daß fur alle ~x ∈ Km die
19
2 Interpolationsverfahren
Gleichung P (~x) = f(~x) gilt. Wir wollen nun zeigen, daß P eindeutig bestimmt ist, wennes in jeder Veranderlichen durch einen Grad d ≤ q − 1 beschrankt ist. Dieser Grad istder hochste Grad der von Interesse ist, da fur alle x aus K die Gleichung xq = x erfulltist, und der Grad entsprechend reduziert werden kann. Fur diesen Beweis benotigenwir
Lemma 2.3.1 Sei K ein endlicher Korper der Machtigkeit q. Ein multivariates Poly-nom P (X1, . . . , Xm) 6= 0 uber Km mit degXi
= d fur alle i aus {1, . . . ,m} hat hochstensdqm−1 Nullstellen.
Beweis. Wahlen wir fur die Veranderlichen X1, . . . , Xm−1 beliebig feste Werte x1, . . . ,xm−1, so hat das Polynom P (x1, . . . , xm−1, Xm) hochstens d Nullstellen uber K. Wirkonnen qm−1 verschiedene (x1, . . . , xm−1)-Tupel wahlen, daher hat P hochstens dqm−1
Nullstellen. ¤
Sei nun ein Polynom P ( ~X) mit obiger Gradbeschrankung gegeben und sei P s Mo-nomanzahl t = qm. Wahlen wir eine Aufzahlung {~x1, . . . , ~xq} des Km und setzen alle
~xi = (x1i, . . . , xmi) in P ( ~X) ein, so erhalten wir ein lineares Gleichungssystem
T~c = ~f ,
wobei ~c der Koeffizientenvektor von P ( ~X) ist, ~f = (f( ~x1), . . . , f( ~xq))T und T die
multivariate Vandermondematrix
1 x11 x21 . . . xm1 . . . xd11x
d21 · · ·x
dm1
1 x12 x22 . . . xm2 . . . xd12x
d22 · · ·x
dm2
......
......
...1 x1q x2q . . . xmq . . . xd
1qxd2q · · ·x
dmq
.
Betrachten wir nun die lineare Abbildung
ϕT : Kt → Kt,
v 7→ Tv.
Sei ui der i-te Zeilenvektor von T und 0 6= v ∈ Kt derart, daß
uiv = v0 · 1 + v1x1i + v2x2i + . . . + vtxd1ix
d2i . . . x
dmi = 0. (2.4)
Nach Lemma 2.3.1 verschwindet das Produkt (2.4) hochstens fur dqm−1 verschiedeneui. Es gibt aber t = qm > qm−1d viele verschiedene Produkte, und damit ist Tv 6= 0fur v 6= 0.
Also ist ϕT injektiv, und somit gilt dim(kerϕT ) = 0. Nach dem Dimensionssatzist nun dim(imϕT ) = dim(Kt) = t, folglich hat T den Zeilenrang t, und ist daher
invertierbar. Dadurch sind die Koeffizienten von P ( ~X) eindeutig bestimmt.
20
2.4 Univariate Interpolationsverfahren
Desweiteren haben wir gezeigt, daß sich jede von der Nullfunktion verschiedene Funk-tion uber K als Polynomfunktion darstellen laßt, da wir die Funktion f nicht weitereingeschrankt haben. Da die Nullfunktion sich offensichtlich als Polynomfunktion dar-stellen laßt, konnen wir alle Funktionen uber endlichen Korpern als Polynomfunktionendarstellen.
2.4 Univariate Interpolationsverfahren
In diesem Abschnitt betrachten wir verschiedene univariate Interpolationsverfahrenund analysieren ihren Speicherbedarf und ihren Rechenaufwand.
Sei M der Aufwand einer Multiplikation, A der einer Addition und D der einerDivision und bezeichne A(t) den Aufwand des Terms t. Ein K-Element benotige denSpeicherplatz E.
Fur die Aufwandsbetrachtungen der Interpolationsverfahren ist folgendes Lemmahilfreich.
Lemma 2.4.1 Der Aufwand des Termsn∏
i=1
(X − xi) ist (n2 + n)M + 2n2A.
Beweis. Berechnen wir
(X − x1)(X − x2) = X · X − x1 · X − x2 · X + x1 · x2
= X2 − (x1 + x2)X + x1x2,
so entsteht durch 4 Multiplikationen und 3 Additionen ein Term mit 3 Gliedern. Multi-plizieren wir jetzt mit (X−x3) so erhalten wir mit 6 Multiplikationen und 5 Additioneneinen Term mit 4 Gliedern. Fuhren wir die Rechnung so weiter, so brauchen wir furein Produkt aus einem k-gliedrigen und einem zweigliedrigen Term 2k Multiplikationenund 2k − 1 Additionen. Also ist der Gesamtaufwand
n∑
k=1
2kM + (2k − 1)A =(
2n
∑
k=1
k)
M +n
∑
k=1
(2k − 1)A
= 2(n(n + 1)
2)M + 2(
2n2
2)A
= (n2 + n)M + 2n2A.
¤
2.4.1 Lagrange-Interpolation
Es ist bekannt, daß das Lagrange-Polynom
L(X) :=n
∑
j=1
yj
n∏
i=1i6=j
X − xi
xj − xi
21
2 Interpolationsverfahren
das univariate Interpolationsproblem 1.1.2 uber unendlichen Korpern lost. Hat einendlicher Korper mindestens n verschiedene Punkte, so lost die Lagrange-Interpolationdas univariate Interpolationsproblem 1.1.2 auch uber dem endlichen Korper, ansonstenist xj − xi fur ein j und ein i nicht invertierbar.
Fur die Aufwandsbetrachtung legen wir fur die Lagrange-Interpolation das Axiom-Programm aus Abbildung 2.1 zugrunde.
lagrange(x, y) ==
P:Polynomial K:=1$K
L:Polynomial K:=0$K
for i in 1..#y repeat
for j in 1..#x repeat
if i~=j then
P:=P*((X-x.j)/(x.i-x.j))
L:=L+y.i*P
P:=0
L
Abbildung 2.1: Algorithmus der Lagrange-Interpolation
Der Aufwand von 1xj−xi
ist 1D + 1A. Nun gilt
X − xi
xj − xi
=1
xj − xi
X −1
xj − xi
xi
mit einem Aufwand von 2M + 1D + 1A. Das Produktn∏
i=1j 6=i
X−xi
xj−xihat nach Lemma 2.4.1
den Aufwand
(n − 1)(2M + 1D + 1A) + ((n − 1)2 + (n − 1))M + 2(n − 1)2A
=(n2 + n)M + (n − 1)D + (2n2 − 3n + 1)A. (2.5)
Wird nun dieses Polynom mit yj durchmultipliziert, kostet das weitere n Multiplikatio-nen. Der Gesamtaufwand der Lagrange-Interpolation ist das n-fache des Terms (2.5)zuzuglich n(n − 1) Additionen fur die Summe, also gilt:
A(L(X)) = n((n2 + 2n)M + (n − 1)D + (2n2 − 3n + 1)A) + n(n − 1)A
= (n3 + 2n2)M + (n2 − n)D + (2n3 − 2n2)A.
Der Speicherbedarf der Lagrange-Interpolation ergibt sich wie folgt: Es mussen die2n Punkte x1, x2, . . . , xn, y1, y2, . . . , yn gespeichert werden, sowie die n Koeffizienten
des Produktsn∏
i=1i6=j
X−xi
xj−xiund die n Koeffizienten von L(X) selbst. Fur Zwischenergebnisse
22
2.4 Univariate Interpolationsverfahren
benotigt man noch eine temporare Kopie des Produktsn∏
i=1i6=j
X−xi
xj−xi, sowie ein Kopie von
L(X). In der Summe reichen also 6nE.
2.4.2 Newton-Interpolation
Sind n verschiedene Stutzpunkte gegeben, so lost die Newton-Interpolation das Pro-blem 1.1.2 genauso wie die Lagrange-Interpolation uber unendlichen Korpern, sowieuber Korpern mit mindestens n verschiedenen Punkten.
Fur eine detaillierte Beschreibung der Newton-Interpolation siehe [Sto93].Das Newton-Polynom ist gegeben durch:
N(X) :=n
∑
j=1
γj
j−1∏
i=1
(X − xi),
wobei γi die i-te dividierte Differenz ist.Ist x eine Liste mit den Werten x1, x2, . . . , xn und y eine Liste mit den Werten
y1, y2, . . . , yn dann konnen die dividierten Differenzen durch das Axiom-Programm inAbbildung 2.2 berechnet werden.
h:=copy(y)
for k in 1..(#y-1) repeat
i:=#y-1
while i>=k repeat
h.(i+1):=(h.(i+1)-h.i)/(x.(i+1)-x.(i-k+1))
i:=i-1
Abbildung 2.2: Dividierte Differenzen
Die h.i aus der Abbildung 2.2 sind die γi.Ermitteln wir jetzt den Aufwand der dividierten Differenzen. Fur den Term hi+1−hi
xi+1−xi−k+1
benotigt man 1D + 2A, die innere Schleife hat den (n − k)-fachen Aufwand, somit istder Gesamtaufwand
n−1∑
k=1
(n − k)(2A + 1D) = (2A + 1D)n−1∑
k=1
k
= (2A + 1D)n(n − 1)
2
= (n2 − n)A +n2 − n
2D.
Das Newton-Polynom N wird nun durch den Algorithmus in Abbildung 2.3 berechnet,wobei K der Typ von K ist.
23
2 Interpolationsverfahren
N:Polynomial K:=h.1
P:Polynomial K:=1$K
for j in 2..#y repeat
P:=P*(X-x.(j-1))
N:=N+(h.j)*P
N
Abbildung 2.3: Newtown-Polynom
Nach Lemma 2.4.1 ist ((n − 1)2 + n − 1)M + 2(n − 1)2A der Aufwand der Berech-
nung des Polynoms P , hinzukommenn∑
j=1
j Multiplikationen fur alle hjP undn∑
j=1
2j
Additionen fur die Berechnung von N . Der Aufwand der Newton-Interpolation ist
A(N(X)) = (n2 − n)A +n(n − 1)
2D + ((n − 1)2 + n − 1)M
+ 2(n − 1)2A +n
∑
j=1
jM +n
∑
j=1
2jA
=3
2(n2 + n)M +
n2 − n
2D + (4n2 − 2)A.
Der Speicherbedarf der Newton-Interpolation ist 2nE fur die xi und yi, nE fur dieγi, sowie jeweils nE fur die Koeffizienten von P (X) und N(X). Fur die Berechnungvon P (X) und N(X) sind ebenfalls zwei temporare Kopien notig. Der Gesamtspeicher-bedarf ist daher 7nE.
2.4.3 Vandermonde-Interpolation
Sei V (X) =n∑
i=1
ciXi das zu interpolierende Polynom. Setzt man die Stutzpunkte in
V (X) ein, erhalt man ein Vandermondesystem
T~c = ~y (2.6)
dessen Losung der Koeffizientenvektor von V (X) ist. Invertiert man die Vandermonde-matrix T , wie in Abschnitt 2.2 beschrieben, so fuhrt dies zu folgender Gleichung (vgl.[Zip90]):
c1...cn
=
y1 · coef (P1, X0)
...y1 · coef (P1, X
n)
+ . . . +
yn · coef (Pn, X0)
...yn · coef (Pn, X
n)
, (2.7)
24
2.4 Univariate Interpolationsverfahren
wobei Pj(X) =P (X)/(X−xj)
c(xj), c(xj) ist der Wert von P (X)/(X − xj) an der Stelle xj
und P (X) =n∏
i=1
(X − xi). Durch coef (P,Xk) wir hier der Koeffizient des Monoms Xk
des Polynoms P bezeichnet.Fur die Aufwandsanalyse der Vandermonde-Interpolation benotigen wir
Lemma 2.4.2 Der Aufwand der Polynomdivision mit einem zweigliedrigen Divisorbetragt (2n − 2)M + (n − 1)D + (2n − 2)A, der des Hornerschemas nM + nA.
Beweis. Beginnen wir mit der Polynomdivision
(anXn + an−1X
n−1 + an−2Xn−2 + . . . + a1X + a0)/(X − xi).
Den ersten Summanden des Quotienten bestimmen wir mit einer Division der Form(ajX
j + aj−1Xj−1)/(X − xi). Fur die Ermittlung des Rests, mit dem die Polynomdivi-
sion fortgefuhrt wird, fallen 2 Multipilationen und 2 Additionen an. Fur einen Schritthaben wir also den Aufwand 2M+1D+2A. Die Polynomdivision ist nach n−1 Schrittebeendet, da beim ersten Schritt zwei Summanden des Dividenden bearbeitet werdenund in jedem weiteren Schritt kommt ein weiterer Summand des Dividenden hinzu.
Der Gesamtaufwand der Polynomdivision belauft sich auf
(n − 1)D + (2n − 2)M + (2n − 2)A.
Fur den Aufwand des Hornerschemas siehe [Knu71]. ¤
Beginnen wir jetzt den Aufwand der Vandermonde-Interpolation zu analysieren.Nach Lemma 2.4.1 ist (n2 + n)M + 2n2A der Aufwand der Berechnung des PolynomsP (X). Die Berechung eines Pj hat den Aufwand
(2n − 2)M + (n − 1)D + (2n − 2)A + nM + nA
=(3n − 2)M + (n − 1)D + (3n − 2)A.
Der Aufwand aller Pj ist daher (3n2 − 2n)M + (n2 − n)D + (3n2 − 2n)A.Fur einen Summanden der Gleichung (2.7) fallen n Multiplikationen an, fur die
Summe (2.7) n(n − 1) Additionen.Damit ist der Gesamtaufwand der Vandermonde-Interpolation:
A(V (X)) = (n2 + n)M + 2n2A + (3n2 − 2n)M + (n2 − n)D
+ (3n2 − 2n)A + n2M + n2 − nA
= (5n2 − n)M + (n2 − n)D + (6n2 − 3n)A.
Gleichzeitig gespeichert werden mussen die Punkte xi, yi und der Koeffizientenvektorc = (c1, c2, . . . , cn)T, sowie P (X), ein Pj(X) und ein Summand der rechten Seite von(2.7), das sind 6nE. Fur Zwischenrechnungen sind nE ausreichend. In Summe benotigtdie Vandermonde-Interpolation 7nE.
25
2 Interpolationsverfahren
Bemerkung 2.4.3 Wird das Vandermonde-System (2.6) mit dem Gauß-Algorithmusgelost, so ist der Speicherbedarf O(n2).
Tabelle 2.1 faßt die obigen Ergebnisse zusammen.
Interpolation Aufwand Speicherbedarf
Lagrange (n3 + 2n2)M + (n2 − n)D + (2n3 − 2n2)A 6nE
Newton 32(n2 + n)M + n2−n
2 D + (4n2 − 2)A 7nE
Vandermonde (5n2 − n)M + (n2 − n)D + (6n2 − 3n)A 7nE
Tabelle 2.1: Rechenaufwand und Speicherbedarf der Interpolationsverfahren
2.5 Multivariate Interpolationsverfahren
2.5.1 Multivariate Verallgemeinerungen der univariatenVerfahren
Die Lagrange-Interpolation kann mit dem multivariaten Polynom
L( ~X) :=n
∑
j=0
yj
m∏
k=1
n∏
i=0i6=j
Xk − xki
xkj − xki
fur die Veranderlichen ~X = (X1, X2, . . . , Xm) uber Korpern mit hinreichend vielenElementen erfolgen.
Die Newton-Interpolation laßt sich ebenfalls auf den multivariaten Fall verallgemei-nern (vgl. [MG91]). Hat der Korper aber weniger als n verschiedene Elemente, so lassensich die dividierten Differenzen nicht mehr berechnen.
Die Vandermonde-Interpolation kann uber einem Korper mit hinreichend vielen Ele-menten multivariat mit einem Speicherbedarf von O(n) erweitert werden, in dem eineunivariate Vandermondematrix durch geschickte Stutzpunktewahl erzeugt wird (vgl.
[Zip90]). Hat das gesuchte Polynom P ( ~X) =∑
~e∈I
c~eX~e maximal n Monome, und ist ~x
ein Punkt fur den die Potenzen ~x0, ~x, ~x2, . . . , ~xn−1 paarweise verschieden sind, so ist
∑
~e∈I
c~e(~xi)~e = P (~xi)
ein transponiertes Vandermonde-System, das analog zu Abschnitt 2.4.3 mit O(n) Spei-cher gelost werden kann.
Uber kleinen Korpern, das heißt Korper die nicht hinreichend viele verschiedenePunkte haben, steigt der Speicherbedarf von O(n) auf O(n2), da die Inversion sich
26
2.5 Multivariate Interpolationsverfahren
nicht mehr mit O(n) Speicher berechnen laßt, wie wir in Abschnitt 2.2 gesehen haben.In diesem Fall ist das Losen des Vandermonde-Systems mit dem Gauß-Algorithmusgeschickter.
2.5.2 Der vereinfachte Zippel-Algorithmus
Richard Zippel hat in [Zip90] sowohl einen probabilistischen als auch einen determi-nistischen Algorithmus beschrieben, der dunnbesetzte Polynome uber Korpern mithinreichend vielen verschiedenen Punkten interpoliert. Wir werden hier einen einfache-ren probabilistischen Algorithmus entwickeln, der die Grundidee der Algorithmen vonRichard Zippel verwendet.
Der von Zippel vorgestellte Algorithmus verwendet im Vergleich zu der vereinfachtenVariante, die multivariate Verallgemeinerung der Vandermonde-Interpolation.
Beginnen wir nun mit der Beschreibung des vereinfachten Verfahrens. Sei das gesuch-te Polynom P m-variat und die Anzahl der Monome je Veranderlicher sei ni fur i aus{1, . . . ,m}, sowie der Grad je Veranderlicher beschrankt durch di.
Ein Polynom P1(x1,1, x2,1, . . . , xm−1,1, Xm) kann in der Veranderlichen Xm durch diedm verschiedenen Stutzpunkte (x1,1, x2,1, . . . , xm−1,1, xm,1), (x1,1, x2,1, . . . , xm−1,1, xm,2),. . . , (x1,1, x2,1, . . . , xm−1,1, xm,dm
) interpoliert werden. Auf die festen Punkte wollen wirin der Notation im weiteren verzichten und schreiben einfach P1(Xm). Fur diese Interpo-lation kann jede univariate Interpolation verwendet werden, die sich fur dichtbesetztePolynome eignet.
Sei P1(Xm) verschieden vom Nullpolynom, dann gibt es fur P1(Xm) =dm∑
i=0
c1iXim
Monome die verschieden von Null sind. Nehmen wir an, daß diese Anzahl gleich nm ist,so brauchen wir fur jede weitere Interpolation von Pi(Xm) nur noch nm viele Punkte,wenn wir die verallgemeinerte Vandermonde-Interpolation oder den Gauß-Algorithmus(vgl. Bemerkung 2.4.3) verwenden. Stellen wir uns P vor als
P (X1, X2, . . . , Xm−1, Xm) =dm∑
k=0
P ′k(X1, . . . , Xm−1)X
k
fur geeignete P ′k, so konnen wir die Veranderliche Xm−1 auf folgende Weise einfuhren.
Haben wir die Polynome
P1(Xm) = c10 + c11Xm + c12X2m + . . . + c1dm
Xdm
m ,
P2(Xm) = c20 + c21Xm + c22X2m + . . . + c2dm
Xdm
m ,
P3(Xm) = c30 + c31Xm + c32X2m + . . . + c3dm
Xdm
m ,
...
Pdm−1(Xm) = cdm−10 + cdm−11Xm + cdm−12X
2m + . . . + cdm−1dm
Xdm
m ,
27
2 Interpolationsverfahren
nach obiger Methode berechnet, so konnen wir j = 0 wahlen, und die Koeffizienten cij
fur i aus {0, . . . , dm−1} in Xm−1 interpolieren. Setzen wir das entstehende Polynomefur die Koeffizienten ein und wiederholen diesen Schritt fur alle j aus {1, . . . , dm}, soerhalten wir ein Polynom P1(Xm−1, Xm) in den Veranderlichen Xm−1, Xm, wobei wirauch hier wieder annehmen, das die Monomanzahl in Xm−1 von P1(Xm−1, Xm) gleichnm−1 ist.
Dieses Vorgehen kann solange fortgefuhrt werden, bis alle Veranderlichen eingefuhrtsind.
Abbildung 2.4 auf Seite 28 veranschaulicht die Verteilung der benotigten Stutzpunkteund die Einfuhrung der Veranderlichen.
.
x1,1
x2,1
...
xm−1,1
xm,1
y1
P (Xm)
P (Xm−1, Xm)
xm,2
y2
. . . xm,nm
ynm
P (X3, . . . , Xm)
......
P (X2, X3, . . . , Xm)
x2,2
...
. . . x2,n2
P (X1, X2, X3, . . . , Xm)
x1,2
. . .
. . .
. . .
x1,n1
. . .
Der Baum stellt die Stutzpunkte der Interpolation dar. Ein Punktentspricht einem Pfad durch den Baum, wobei die ersten m+1 Knotenohne den ersten die Stutzstelle (x1, x2, . . . , xm) bilden und das Blattden Stutzwert y. Die Polynome an der linken Seite zeigen an, welcheVeranderlichen mit diesem Schritt eingefuhrt sind.
Abbildung 2.4: Interpolationsbaum
Wir wollen noch anmerken, daß die Effizienz des Verfahrens stark von der Anzahlder tatsachlich vorhandenen Monomen abhangt.
Eine Implementierung des vereinfachten Zippel-Algorithmus als Axiom-Programmbefindet sich in Anhang A.3.
28
2.5 Multivariate Interpolationsverfahren
2.5.3 Nullteilraum-Interpolation
Hat der Korper K nicht ausreichend viele verschiedene Elemente, oder ist die Struk-
tur eines m-variaten Polynoms P ( ~X) =d
∑
~e=0
c~e~X~e schon bekannt, so kann das durch
Einsetzen der Stutzpunkte entstehende Vandermonde-System (eine Verallgemeinerungder Gleichung (2.6)) auf kleinere Gleichungssysteme aufgeteilt werden, sodaß wenigerSpeicher zur Berechnung der Koeffizienten benotigt wird. Diese Aufteilung ist von Zel-jko Zilic und Zvonko G. Vranesic in [ZV02] beschrieben. Dazu definiert man auf demRaum der Stutzstellen die Aquivalenzrelation:
a ∼ b genau dann, wenn fur alle i aus {1, . . . ,m} ai = 0 ⇔ bi = 0.
Eine Aquivalenzklasse heißt Nullteilraum und wird mit Nµ bezeichnet, wobei µ einMuster ist, welches angibt welche Elemente der Vektoren Null sind, so ist etwa
N0x0xx = {a ∈ K5 | a1 = a3 = 0 ∧ a2, a4, a5 ∈ K \ {0}} fur m = 5.
Fur die Aufteilung des Gleichungssystems definieren wir eine Ordnung ≤ auf derMenge der Nullteilraume:
Nµ1≤ Nµ2
:⇐⇒ ∀a ∈ Nµ1∀b ∈ Nµ2
bi = 0 ⇒ ai = 0. (2.8)
Wir identifizieren den Raum der Monome mit dem Raum der Stutzstellen, das heißtder Punkt ~a ∈ Nµ entspricht sowohl der Stutzstelle ~a ∈ Km als auch dem Monom ~X~a.
Betrachtet man die Punkte des Nullteilraums Ni als Monome ~mk und setzt nach-einander die Punkte des Nullteilraums Ni, diesmal als Stutzpunkte (~xj, yj), ein, soentsteht ein Gleichungssystem
T~vi = ~yi, (2.9)
mit T = (xmk
j )j,k. Es gilt fur die Koeffizienten von P ( ~X) nun cTj= vij fur alle j aus
{1, . . . , |Ni|}, wobei die Tj die Zeilenvektoren von T sind.Haben wir nach ~vi aufgelost, mussen noch die Wertevektoren ~yj aller Punkte der
Nullteilraume Nj, die Ni ≥ Nj erfullen, aktualisiert werden, bevor der nachstgroßereNullteilraum interpoliert werden kann. Die Aktualisierung berechnet sich wie folgt:
~yj ← ~yj − A~ci. (2.10)
Dabei ist A = (pmk
l )l,k die Matrix, die entsteht, wenn man alle Punkte pl aus Ni in allePunkte mk aus Nj, die jetzt als Monome interpretiert werden, einsetzt.
Man sieht, daß durch die Stutzpunkte eine Obermenge der auftretenden Monomefestgelegt ist.
29
2 Interpolationsverfahren
Sowohl der speicher- als auch der zeitdominierende Anteil dieses Algorithmuses istdas Losen des Gleichungssystems (2.9), daher ist die Zeitkomplexitat O(n3) und dieSpeicherkomplexitat O(n2), wie beim Gauß-Jordan-Algorithmus.
Ist K = F2, so hat jeder Nullteilraum genau einen Punkt, dadurch wird der Interpo-lationsschritt trivial und es bleibt nur noch der Aktualisierungsschritt. Der Speicher-bedarf ist in diesen Fall O(n), die Zeitkomplexitat sinkt auf O(n2).
Dadurch, daß die Nullteilraum-Interpolation auch uber kleinen Korpern anwendbarist, und sie nur O(n) Speicher uber F2 benotigt, ist sie fur die multivariate Interpolationvon Funktionen, die auf Hardware optimiert sind, besonders geeignet.
2.6 Umrechnung univariater auf multivariate
Polynome
Sei eine Funktion f uber einem endlichen Korper Fqn gegeben, die durch das Poly-nom P (X) aus Fqn [X] univariat interpoliert wird. Wir wollen den Korper Fqn als n-dimensionalen Vektorraum uber Fq betrachten und suchen Polynome Q0(X0, . . . , Xn−1),Q1(X0, . . . , Xn−1), . . . , Qn−1(X1, . . . , Xn−1) aus Fq[X0, . . . , Xn−1] die f komponenten-weise uber F
nq interpolieren.
Wahlen wir hierzu eine Basis {1, γ, γ2, . . . , γn−1} des Fnq uber Fq fur ein irreduzibles
γ ∈ Fnq \ Fq der Ordnung n, so kann jedes Element a aus Fqn geschrieben werden als:
a =
a0...
an−1
=
n−1∑
k=0
akγk fur ak ∈ Fq. (2.11)
Mit dieser Basis konnen wir nun unser Problem beschreiben als: suche Q0, . . . , Qn−1
fur die gilt:
P (a) =
Q0(a0, . . . , an−1)...
Qn−1(a0, . . . , an−1)
fur a =
a0...
an−1
,
fur alle a aus Fqn .
Sei das Polynom P (X) =qn−1∑
k=0
ckXk, so konnen wir P mit Gleichung (2.11) wie folgt
30
2.6 Umrechnung univariater auf multivariate Polynome
umformen:
P (X) =
qn−1∑
k=0
ckXk
=
qn−1∑
k=0
(n−1∑
j=0
ck,jγj)(
n−1∑
j=0
Xjγj)k fur ck = (ck,0, ck,1, . . . , ck,n−1)
T
=n−1∑
j=0
Qj(X0, . . . , Xn−1)γj, (2.12)
Die Koeffizienten der Qj konnen durch eine Wahl von γ fur eine konkrete Darstellungdes Korpers Fqn uber Fq aus Gleichung (2.12) abgelesen werden.
Um aus einem Polynomvektor
Q0(a0, . . . , an−1)...
Qn−1(a0, . . . , an−1)
uber F
nq das entsprechende uni-
variate Polynom P uber Fq zu erhalten, kann Gleichung (2.12) ruckwarts angewendetwerden.
31
3 Interpolationsangriff
In diesem Kapitel wollen wir die bisher veroffentlichten Verfahren zum Interpolations-angriff beschreiben.
Fur den Interpolationsangriff reicht es nicht, nur ein Polynom zu finden, welches dieStutzpunkte interpoliert, es muß auch die restlichen Punkte (oder einen signifikantenTeil) des Raumes ohne die Stutzpunkte interpolieren. Gerade fur die multivariate In-terpolation ist dies eine erschwerende Anforderung und verlangt eine wohluberlegeteStutzpunktewahl.
Jakobsen und Knudsen schlagen in [JK97] vor, die Ausgabe einer Chiffre als Poly-nom der Eingabe zu betrachten. Dieses Polynom soll dann in einem Known-Plaintext-Angriff benutzt werden, indem es durch bekannte Klartext-/Chiffretextpaare interpo-liert wird.
Sie greifen eine Beispielchiffre von Nyberg und Kundsen auf (vgl. [NK95]), die sichergegen differentielle Angriffe ist. Diese Chiffre nennen sie KN . Es ist eine 6-rundigeFeistel-Chiffre mit P = F232 und der Rundenfunktion
f : F232 × F232 → F232
(X, k) 7→ d(g(e(X) + k)).
Die Funktion g ist definiert durch:
g : F233 → F233
X 7→ X3,
die Funktion e ist eine Erweiterungsfunktion von F232 nach F233 , die Funkion d ist eineReduktionsfunktion von F233 nach F232 .
Neben KN betrachten Jakobsen und Knudsen eine Vereinfachung von KN mit demgleichen Klartext- und Schlusselraum. Die Erweiterungsfunktion e und die Reduktions-funktion d sind weggelassen. Als Rundenfunktion bleibt:
f : F232 × F232 → F232
(X, k) 7→ (X + k)3.
Diese Chiffre nennen sie PURE .Die Rundenschlusselerzeugung bleibt bei beiden Chiffren offen. Gehen wir davon aus,
daß der Chiffreschlussel im wesentlichen die Konkatenation der Rundenschlussel ist, sohatten KN und PURE einen Schlussel der Lange 192 Bit.
33
3 Interpolationsangriff
PURE ist ebenfalls gegen differentielle Kryptanalyse resistent (vgl. [NK95]). Diebeiden Chiffren KN und PURE sind auch gegen lineare Kryptanalyse (vgl. [Nyb94]) re-sistent. Sie sind aber aufgrund ihrer einfachen algebraischen Struktur fur den Interpola-tionsangriff anfallig.
Jakobsen und Knudsen stellen einen Angriff mit Higher-Order-Differentials auf eine7-rundige KN -Version vor, auf den wir hier nicht naher eingehen wollen.
Fur die Beispielchiffre PURE zeigen Jakobsen und Knudsen einen Deduktions-,einen Key-Recovery- und einen Meet-in-the-Middle-Angriff.
Außerdem zeigen sie, daß die Chiffre SHARK von Rijmen, Daemen und anderen(vgl. [RDP+96]), die der Vorganger Rijndaels (AES) ist, nicht fur alle Parameterwahlensicher gegen den Interpolationsangriff ist.
3.1 Deduktionsangriff
Wir wollen hier die Chiffre PURE betrachten.Druckt man die linke Halfte des auf r Runden reduzierten Chiffretextes als Polynom
Lr(L0, R0) aus, so hat L0 den Grad 3r und R0 den Grad 3r−1.Daraus folgt, daß das Polynom Lr hochstens n = 32r−1 + 3r + 3r−1 + 1 Monome in
der r-ten Runde hat, daß heißt wir konnen Lr aus n KCP mit einem Interpolationsver-fahren konstruieren.
Sind n paarweise verschiedene KCP gegeben, so kann man aus ihnen ein Vandermon-desystem T~c = ~f (vgl. Gleichung (2.2)) aufstellen. Ist T singular, so mussen andereKCP gewahlt werden oder solange ein paar KCP ausgetauscht werden, bis T regularist. Experimente mit PURE haben gezeigt, daß zufallig verteilte KCP, mit hoher Wahr-scheinlichkeit ein regulares T ergeben.
Allgemein laßt sich formulieren (vgl. [JK97], Satz 2):
Satz 3.1.1 Liegt eine iterierte Blockchiffre mit der Blocklange m vor und ist der Chif-fretext als Polynom P der Eingabe ausgedruckt, so gibt es einen Interpolationsangriff,wenn die Anzahl der Monome n hochstens 2m ist. Der Angriff benotigt n KCP, und lie-fert einen Algorithmus (das Auswerten des interpolierten Polynoms P ), der aquivalentzur Chiffre ist.
Betrachten wir eine Chosen-Plaintext-Variante dieses globalen Deduktionsangriffs,indem wir einige Bits der Klartexte fixieren, so kann die Anzahl der KCP weiter gesenktwerden. Wir erhalten aber nur noch einen lokalen Deduktionsangriff.
3.2 Key-Recovery-Angriff
In [JK97] beschreiben Jakobsen und Knudsen neben dem Deduktionsangriff auch einenKey-Recovery-Angriff. Wir wollen uns hier einen alternativen Key-Recovery-Angriff
34
3.3 Meet-in-the-Middle-Angriff
von Kurosawa, Iwata und Quang ansehen, der in [KIQ01] beschrieben ist.Er ist als Chosen-Plaintext-Angriff fur eine r-rundige Feistel-Chiffre beschrieben und
setzt die rechte Klartexthalfte R0 = 0, so kann der Angriff mit univariaten Polynomenausgefuhrt werden. Sei die rechte Halfte ~Rr−1 der reduzierten Chiffre als Polynom
~Rr−1 = g(L0)
des Klartexts L0 dargestellt und deg g(L0) = t− 1. Das Polynom g kann mit den KCP((L0,1, 0), (Lr,1, Rr,1)), . . . , ((L0,t+1, 0), (Lr,t+1, Rr,t+1)) vermittels der Lagrange-Interpo-lation aus Abschnitt 2.4.1 dargestellt werden als
g(L0) =t
∑
k=1
Pk(L0)Rr−1,k,
fur geeignete Polynome Pk(L0). Nach Bemerkung 1.1.12 gilt mit der Rundenfunktionf(X,Km):
Rr−1,t+1 =t
∑
k=1
Pk(L0,t+1)f(Rr,k, Km) + Lr,k
was sich auf ein Polynom der Gestalt
h(Km) = 0 (3.1)
umformen laßt. Das Polynom h(Km) hat nun hochstens d Nullstellen wenn deg h = d,das heißt man kann Km nur bis auf aquivalente Schlussel bestimmen. Um Km eindeutigzu bestimmen werden mehr als t + 1 KCP benotigt. Die Gleichung (3.1) kann mitRabins Nullstellenalgorithmus in probabilistisch polynomieller Zeit gelost werden. EineBeschreibung findet sich in [KIQ01].
Ist die Rundenfunktion nicht algebraisch definiert, so ist der Grad fur gewohnlichrecht groß und es gibt viele aquivalente Rundenschlussel.
3.3 Meet-in-the-Middle-Angriff
Jakobsen und Knudsen schlagen in [JK97] einen Meet-in-the-Middle-Ansatz zur Ver-besserung des Key-Recovery-Angriffs vor: ist eine Blockchiffre mit r Runden gegeben,so versucht man den letzten Rundenschlussel kr zu raten und entschlusselt die gegebe-nen Chiffretexte b um eine Runde. Wir wollen die Ergebnisse reduzierte Chiffretextenennen und kurz bred schreiben.
Nun wird die Ausgabe der l-ten Runde (1 ≤ l ≤ r) als Polynom f(X) der Klartextedargestellt und als Polynom g(Yred) der reduzierten Chiffretexte. Sei t der Grad des
35
3 Interpolationsangriff
Polynoms f(X) und s der Grad des Polynoms g(Yred). Betrachten wir fur die KCP(x1, y1), . . . , (xt+s, yt+s) das Gleichungssystem
f(xi) = g(yred,i) fur i ∈ {1, . . . , t + s}.
Dieses Gleichungssystem kann mit mindestens t+s+2 KCP eindeutig gelost werden.Die genaue Anzahl hangt davon ab, wieviele verschiedene aquivalente Schlussel es furden letzten Rundenschlussel gibt.
Kurosawa, Iwata und Quang geben in [KIQ01] eine obere Schranke hierfur an.Sei die Polynomfunktion f2(X) die um zwei Runden reduzierte Chiffre und es gelte:
deg f2 = u − 2.
Nehmen wir weiter an, daß sich die Rundenfunktion als Polynom des Rundenschlusselsmit Grad d darstellen laßt. Im weiteren seien die Rundenschlussel Km−1 der vorletz-ten und Km der letzten Runde fest vorgegeben und die paarweise verschiedenen KCP((x1, 0), (yL,1, yR,1)), . . . , ((xu+2, 0), (yL,u+2, yR,u+2)) bekannt. Wir wollen mit y bzw. ydie um eine bzw. zwei Runden reduzierte Halfte y des Chiffretexts bezeichnen.
Mithilfe der Lagrange-Interpolation kann f2 dargestellt werden als:
f2(X) =u
∑
i=0
δi(X)f2(xi). (3.2)
Setzen wir xu+1 in (3.2) ein, so erhalten wir:
yR,i =u
∑
i=0
δ1(xu+1)yR,i. (3.3)
Aus Gleichung (1.3) erhalten wir mit der Rundenfunktion F :
yR,i = F (Km−1, F (Km, yR,i) + yL,i) + yR,i. (3.4)
Setzen wir (3.4) in (3.3) ein, so laßt sich die Gleichung auf die Gestalt
H1(Km−1, Km) =d
∑
i=0
Pi(Km)Kim−1 = 0, mit deg Pi(Km) ≤ d2
bringen.Analog erhalten wir fur den Punkt xu+2
H2(Km−1, Km) =d
∑
i=0
Qi(Km)Kim−1 = 0, mit deg Qi(Km) ≤ d2.
36
3.4 Probabilistischer Interpolationsangriff
Die Rundenschlussel Km und Km−1 sind nach Konstruktion Nullstellen sowohl vonH1 als auch von H2. Betrachten wir Km als Parameter von H1 und H2, so gilt nachSatz 1.1.4:
h(Km) := R(H1, H2) = 0,
und aus der Definition der Resultanten (vgl. Definition 1.1.3) folgt deg h < 2d3.Wir haben also bei dem Meet-in-the-Middle-Angriff fur u + 2 KCP hochstens 2d3
aquivalente Schlussel. Wir benotigen also mindestens u+2 KCP fur diesen Angriff. Furein großes d stellt er also nicht unbedingt eine Verbesserung des Key-Recovery-Angriffsdar.
3.4 Probabilistischer Interpolationsangriff
Im Artikel [Jak98], der im Jahre 1998 erschienen ist, beschreibt Jakobsen eine proba-bilistische Version des Interpolationsangriffs.
Er geht davon aus, daß die Verschlusselungsfunktion e : P ×K → P einer iteriertenBlockchiffre, fur die mit einer signifikanten Wahrscheinlichkeit µ die Gleichung
e(X) = P (X)
fur ein Polynom P mit Grad m gilt, als gebrochen angesehen werden kann. SolcheChiffren wollen wir (m,µ)-ausdruckbar nennen.
Ist ein solches Polynom P (X) gegeben, so kann es als Entscheider genutzt werden,um KCP der Chiffre von zufalligen Wertepaaren zu unterscheiden.
Damit kann beispielsweise der folgende Angriff gefuhrt werden. Hat man einen Ent-scheider fur die um eine Runde reduzierte Chiffre, der mit n KCP und t Rechenschrittenauskommt, so kann der letzte Rundenschlussel geraten werden. Jetzt wird der Chif-fretext um eine Runde entschlusselt und mit dem Entscheider gepruft, ob ein KCPder Chiffre vorliegt. Bei Mißerfolg wiederholt man diesen Vorgang mit einem neuenpotentiellen letzten Rundenschlussel. Die erwartete Laufzeit dieses Angriffs ist 1
2t|K|
Rechenschritte.Fur praktisch verwendete Chiffren ist dieser Angriff nicht anwendbar, es soll nur
die Moglichkeit veranschaulichen, daß mit dem Polynom einer (m,µ)-ausdruckbarenChiffre, die Chiffre gebrochen werden kann.
Jakobsen beschreibt einen Angriff, der auf der Dekodierung eines Reed-Solomon-Kodes (ein Einfuhrung findet sich beispielsweise in [Mat03]) beruht und hierfur denAlgorithmus von Sudan (vgl. [Sud97]) adaptiert.
Der Angriff erwartet als Eingabe die KCP (x1, y1), . . . , (xn, yn), ein µ ∈ [0, 1], undein m ∈ N, sodaß n ≥ 2m
µ2 .Im ersten Schritt erstellt man ein Polynom
Q(X,Y ) =n+1∑
i=1
si(X,Y ),
37
3 Interpolationsangriff
wobei si(X,Y ) das i-te Monom der Ordnung ist, die durch den (1,m− 1)-gewichtetenGrad induziert wird.
Im zweiten Schritt lost man das Gleichungssystem
Q(xk, yk) = 0, fur k ∈ {1, . . . , n}
und fixiert eine nichttriviale Losung, damit sind die Koeffizienten des Polynoms Qbestimmt.
Im dritten und letzten Schritt sucht man in den irreduziblen Faktoren von Q(X,Y )alle Faktoren der Form Y − p(X), deren Grad hochstens m ist und fur die P (xk) = yk
mit einer Wahrscheinlichkeit von mindestens µ erfullt ist fur alle k aus {1, . . . , n}.Die Ausgabe des Algorithmus sind die Faktoren der Form Y − p(X).Dieser Angriff ist in polynomieller Zeit bezuglich n ausfuhrbar.Eine Erweiterung des Angriffs auf probabilistische Relationen der Form P (X,Y ) = 0
niedrigen Grades m kommt ebenfalls mit n ≥ 2mµ2 KCP aus, wobei µ wieder die Wahr-
scheinlichkeit des Zutreffens der Relation ist. Dieser erweiterte Angriff hat ebenfallspolynomielle Laufzeit.
Mit dem hier beschriebenen Angriff kann die Beispielchiffre KN mit bis zu zehnRunden gebrochen werden fur µ = 1
16, m = 81, n ist hierfur kleiner als 216.
3.5 Lineare Transformationen
Youssef und Gong verfolgen in [YG01] die Fragen, welche Auswirkung eine Anderungdes Korperpolynoms auf den Grad des interpolierten Polynoms hat und ob es eineeinfache lineare Abbildung gibt, mit der man ein Polynom mit weniger Monomenerhalt. Wir wollen ein fur uns wichtiges Resultat hier wiedergeben.
Sei F (X) = Xd uber F2n und f( ~X) = (f1( ~X), . . . , fn( ~X)) die korrespondierendeAbbildung uber F
n2 , dann kann die korrespondierende Abbildung zu einer linearen
Transformation von f( ~X) uber F2n als Polynom mit hochstens n Monomen dargestelltwerden (vgl. [YG01], Satz 7).
Stellen wir F2n mit zwei unterschiedlichen Korperpolynomen K1(α) und K2(α) dar,und betrachten zwei Polynome PK1
(X) und PK2(X), die die gleiche Funktion, einmal
mit dem Korperpolynom K1 und einmal mit K2 darstellen, so gilt:
PK2= l(PK1
(l−1(X))),
fur eine lineare Transformation l uber F2n ([YG01], Satz 9). Das heißt wir konnendurch die Wahl des Korperpolynoms die Anzahl der Monome eines Polynoms uber F2n
nur um den Faktor n verandern.
38
4 Kasumi und experimentelleErgebnisse
In diesem Kapitel wollen wir die Kasumi-Chiffre vorstellen, und ihre Anfalligkeit furden Interpolationsangriff prufen.
4.1 Die Kasumi-Chiffre
Die Kasumi-Chiffre ist ein dreistufiges Netz aus Feistel-Chiffren und unbalanciertenFeistel-Chiffren. Die Blocklange betragt 64 Bit, die Schlussellange ist 128 Bit. Kasumiwird in [KAS99] beschrieben und in [KAS01] analysiert.
Kasumi wurde fur die Mobiltelefone der dritten Generation entworfen, als Basisver-fahren fur die Integritat und Vertraulichkeit. Ein Entwurfskriterium ist die Sicherheitgegen praktisch ausfuhrbare Angriffe. Eine Sicherheit gegen theoretisch mogliche An-griffe, die zu aufwenig sind, wurde nicht gefordert. Ein weiteres Kriterium an die Chiffreist, das sie sich leicht mit wenig Gattern in Hardware mit niedrigem Energieverbrauchrealisieren laßt.
Bei dem Entwurf wurden Angriffe durch lineare und differentielle Kryptanalyseberucksichtigt und auch der Interpolationsangriff. Warum die Chiffre gegen den Inter-polationsangriff sicher ist, ist nicht erwahnt, diese Frage werden wir in diesem Kapitelbeantworten.
Betrachten wir die drei Stufen der Chiffre nun detailiert.
Die innerste Feistel-Chiffre ist unbalanciert und heißt FI, hat eine Blocklange von16 Bit, einen 16-Bit-Schlussel und besteht aus vier Runden.
Sie verwendet eine 7-Bit-S-Box S7 und eine 9-Bit-S-Box S9. Die beiden S-Boxenwurden so entworfen, daß sie leicht als logische Gatter und leicht als Tabellen realisiertwerden konnen. Die ungewohnliche Aufteilung der FI-Funktion soll den Interpolations-angriff erschweren (vgl. [Wal]).
Die S-Box S7 ist eine lineare Transformation des Monoms X81 uber F27 , S9 ist einelineare Transformation von X5 uber F29 (vgl. [KAS01]).
Sei L0R0 die 16-Bit-Eingabe der FI-Funktion, wobei L0 9 Bit breit und R0 7 Bit
39
4 Kasumi und experimentelle Ergebnisse
breit ist. Dann ist die Ausgabe L4R4 von FI geben durch:
L1(L0, R0) = R0
R1(L0, R0) = S9(L0) + R0,
L2(L1, R1) = R1 + KI2
R2(L1, R1) = S7(L1) + R1 + KI1,
L3(L2, R2) = R2
R3(L2, R2) = S9(L2) + R2,
L4(L3, R3) = S7(R3) + R4
R4(L3, R4) = L3.
Die mittlere Feistel-Chiffre heißt FO und hat eine Blocklange von 32 Bit und sechs16-Bit-Schlussel, von denen drei an FI weitergegeben werden. Wir konnen die FO-Funktion wie folgt modellieren:
FO : F162 × F
162 → F
162 × F
162
(L0, R0) 7→ (L3, R3),
wobei
L1(L0, R0) = R0
R1(L0, R0) = FI(L0 + KOi,1, KIi,1) + R0, (4.1)
L2(L1, R1) = R1
R2(L1, R1) = FI(L1 + KOi,2, KIi,2) + R1, (4.2)
L3(L2, R2) = R2
R3(L2, R2) = FI(L2 + KOi,3, KIi,3) + R2 (4.3)
mit den festen Teilschlusseln KOi,1, KOi,2, KOi,3, KIi,1, KIi,2 und KIi,3.Fur die außere Feistel-Chiffre brauchen wir noch die FL-Funktion. Sie ist definiert
durch:
FL : F162 × F
162 → F
162 × F
162 ,
(L,R) 7→ (L + rot(R + rot(L ∨ KL1) ∧ KL2), R + rot(L ∨ KL1)),
wobei das ∧ und ∨ bitweise zu verstehen sind, und rot eine Linksrotation um 1 Bit ist.Die außere Feistel-Chiffre besteht aus acht Runden, deren Runden-Funktion fur die
i-te Runde durch
f(X) =
{
(FL(KLi) ◦ FO(KOi, KIi))(X), fur i ungerade,
(FO(KOi, KIi) ◦ FL(KLi))(X), fur i gerade
40
4.2 Angriffe auf Teile Kasumis
gegeben ist.Die Rundenschlussel sind 128 Bit lang und werden durch Projektionen und lineare
Transformationen von dem Chriffreschlussel abgeleitet. Fur Details sei auf [KAS99]verwiesen.
Im nachfolgenden Abschnitt wollen wir uns ansehen, ob ein Deduktionsangriff aufdie Kasumi-Chiffre moglich ist.
Die Meet-in-the-Middle-Variante des Key-Recovery-Angriffs aus Abschnitt 3.3 botesich fur Kasumi an, da eine Kasumi-Runde sich gut zerlegen laßt und die reduzierteChiffre und damit die Große des zu ratenden Schlussels gut skalierbar sind. Einenganzen Rundenschlussel zu raten bringt keinen Vorteil, da er genausolang wie derChiffreschlussel ist. Es konnte aber etwa nur KL8 geraten werden. Diese 32-Bit zuraten ware auch praktisch umsetzbar.
4.2 Angriffe auf Teile Kasumis
Wir wollen versuchen einen statistischen Chosen-Plaintext-Angriff fur eine reduzierteVariante der Kasumi-Chiffre zu konstruieren.
Im ersten Schritt versuchen wir die Obermenge OFI zu ermitteln, in der die Strukturaller Polynome enthalten ist, die die FI-Funktion fur verschiedene Schlussel liefert.
Anschließend wollen wir aus der Obermenge OFI eine Obermenge OFO ausrechnen,in der die Struktur der Polynome der FO-Funktion fur alle verschiedenen Schlusselenthalten ist.
Wiederholen wir den letzten Schritt, so erhalten wir ein Obermenge der Struktureiner bzw. bei mehrfacher Wiederholung mehrerer Kasumi-Runden. Nennen wir dieseObermengen OK,i fur die i-te Runde.
Wir hoffen, daß diese Mengen klein sind. Dann konnen wir die Polynome tatsachlichinterpolieren, und haben somit einen Angriff auf ein paar Runden von Kasumi.
Ebenfalls konnte der Angriff aus Abschnitt 3.2 verwendet werden.Wir gehen hier davon aus, daß alle Teilschlussel die von FI und FO verwendet werden
zufallig und gleichverteilt sind.
4.2.1 Programmierproblematik
Die sich im Anhang befindlichen Programme sind entweder in Axiom oder in C++geschrieben. Axiom ist zur schnellen Entwicklung von Algorithmen gut geeignet, da eseinfach zu bedienen ist und schon eine große Bibliothek mathematischer Funktionenund Strukturen mitbringt.
Die Laufzeit und der Speicherbedarf der Axiom-Programme ist sehr hoch. Deshalbsind fur die konkreten Untersuchungen die Algorithmen in C++ implementiert. Esgibt fur C/C++ auch schon ein Reihe von Bibliotheken (Givaro ([GRV+]), Factory([GSS+]), CoCoA ([CoC])), die mit multivariaten Polynomen umgehen konnen. Obwohl
41
4 Kasumi und experimentelle Ergebnisse
Victor Shoups”Number Theory Library“ (NTL, [Sho]) nur mit univariaten Polynomen
umgehen kann, fand sie hier Anwendung.Diese Bibliotheken werden wiederum von anderen verwendet (Givaro und NTL von
LinBox ([Lin]), Factory von Singular ([GMG])).Wenn die Polynome jedoch uber endlichen Korpern betrachtet werden sollen, so
mussen zum Teil erhebliche Einschrankungen obiger Bibliotheken hingenommen wer-den.
Je nach Darstellung der endlichen Korper sind die Bibliotheken auf eine maximaleKorpergroße beschrankt (Givaro, Factory) und benotigen zum Teil ab einer gewissenKorpergroße viel Zeit um die Korperarithmetik bereitzustellen (Givaro). Andere Biblio-theken brauchen fur einzelne Korperelemente viel Speicher (NTL), auch wenn es sichum sehr kleine Korper handelt. Die Bibliothek CoCoA hat zum Entstehungzeitpunkdieser Arbeit keine spezielle Implementierung von Erweiterungskorpern uber F2 undsollte daher recht langsam sein.
Da das Interpolationsproblem ursprunglich allgemeiner untersucht werden sollte,wurden die Bibliotheken mit Korpergroßenbeschrankung als ungeeignet empfunden.Eine allgemeine Untersuchung hat sich allerdings als nicht machbar herausgestellt, dadie Laufzeiten und der Speicherbedarf rapide anwachsen.
Fur das Programm in Anhang A.1, das die univariate Newton-Interpolation imple-mentiert, wurde die NTL verwendet, da diese Bibliothek mit Korpern beliebiger Großenoch einigermaßen effizient umgehen kann.
Fur die Nullteilraum-Interpolation wurde keine spezielle Bibliothek verwendet, dasie in der Implementierung in Anhang A.2 auf F2 beschrankt ist, wodurch ein enormerGeschwindigkeitsvorteil erreicht wurde.
Sollen Vektoren uber Fn2 , wobei n hochstens die Registerbreite des verwendeten Pro-
zessors ist, komponentenweise addiert oder multipliziert werden, so kann dies mit einemProzessorbefehl erledigt werden, denn die Addition entspricht dem bitweisen exklusi-ven Oder und die Multiplikation dem bitweisen Und. Ebenso kommt die Potenzierungmit 0 oder 1 mit nur zwei Prozessorbefehlen aus, denn sie entspricht dem bitweiseninklusiven Oder mit der bitweisen Negation des Exponentenvektors.
4.2.2 Univariate Interpolation der FI-Funktion
Versuchen wir zuerst eine univariate Interpolation der FI-Funktion, daß heißt wir ar-beiten uber dem Korper K = F216 . Wir wollen die Obermenge OFI mithilfe einerStichprobe bestimmen. Hierfur wahlen wir zufallig verteilte Schlussel k1, . . . , kn undnennen wir die Polynome, die durch Interpolation uber den ganzen Korper entstehen,Pi fur i aus {1, . . . , n}. Wir definieren nun
OFI :=n
⋃
i=1
SPi.
42
4.2 Angriffe auf Teile Kasumis
Als Interpolationsverfahren nehmen wir die Newton-Interpolation aus Abschnitt2.4.2, da sie die schnellste ist (vgl. Tabelle 2.1). Die beschriebene Axiom-Implementierungist jedoch immer noch ziemlich langsam, deswegen verwenden wir fur die konkrete Inter-polation das C++-Programm aus Anhang A.1. Die Rechenzeit des C++-Programmsbetragt auf einem Opteron 2218 (2,6 GHz) fur eine Interpolation ertragliche 72 min.
Die folgenden Aussagen stutzen sich auf eine Stichprobe die 349 Schlussel umfaßt.Wir interpolieren uber alle Punkte des F216 und erhalten fur die FI-Funktion Po-
lynome des Grades 65024 = 11111110000000002, die zwischen 26 331 und 26 333 Mo-nome haben. Interpolieren wir zum Vergleich eine zufallig gewahlte Permutation allerKorperelemente so hat das Polynom 65 534 oder 65 535 Monome.
Haben wir Polynome Pi zu verschiedenen Schlusseln i interpoliert, so haben die Pi
die gleiche Struktur, wenn die Monomanzahl 26 333 ist. Ist sie kleiner, so fehlen ausder Struktur ein bzw. zwei Monome. So ist OFI die Struktur der Polynome die 26 333Monome haben.
Schauen wir uns nun die Polynome etwas genauer an, so stellen wir ein gemeinsamesMuster bei den Schlusseln fest, die die gleiche Polynomstruktur hervorrufen. Tabelle 4.1auf Seite 47 zeigt zum Beispiel einige Schlussel mit den das Muster fur das Fehlen desMonoms X2115 bestimmt werden kann. Wir gehen daher davon aus, das die Strukturnur von dem 7-Bit-Block abhangt. Die Stichprobe belegt diese Annahme fur anderefehlende Monome.
Interpolieren wir jetzt einen Reprasentanten fur jede Kombination des 7-Bit-Blocks,so gibt es von den potentiell 27 = 128 moglichen Polynomstrukturen nur 16 verschiede-ne. Die meisten Polynome haben die Struktur mit 26 333 Polynomen. Diese Strukturwird in Abbildung 4.1 auf Seite 49 dargestellt. Den anderen Strukturen fehlen ein oderzwei Monome, Tabelle 4.2 auf Seite 48 gibt eine Ubersicht.
Wir konnen also wenn mindestens 26 333 KCP bekannt sind die FI-Funktion univa-riat interpolieren.
Bemerkung 4.2.1 Setzen wir jetzt die FI-Funktion in sich selbst ein. Wir haben alsodie Funktion FI(FI(X,K1), K2) fur zwei zufallige gewahlte feste Schlussel K1 und K2.Interpolieren wir uber ganz K, so ist das Polynom dicht besetzt, das heißt es hat216 − 1 = 65 535 Monome, und ist damit nicht mehr MZ-unterscheidbar.
Wir werden mit dieser Methode also nicht weiterkommen.
4.2.3 Multivariate Interpolation der FI-Funktion
Um weitere Struktur der FI-Funktion zu erhalten versuchen wir nun einen anderenAnsatz und betrachten die FI-Funktion als 16-variates Polynom uber dem F2. Diesmalmussen wir fur jedes Bit eine Obermenge OFI,i bestimmen.
Hierfur verwenden wir die Nullteilraum-Interpolation aus 2.5.3, ein C++-Programmfindet sich im Anhang A.2. Die Laufzeit betragt fur einen Schlussel fur alle 16 Bit aufeinem Opteron 2218 (2,6 GHz) etwa 90 Sekunden.
43
4 Kasumi und experimentelle Ergebnisse
Durch eine Umrechnung, wie in Abschnitt 2.6 beschrieben, konnten die Monoman-zahlen der Pi aus Abschnitt 4.2.2 berechnet werden. Wir wollen aber auch hier eineStichprobe verschiedener Schlussel fur die weiteren Ergebnisse verwenden, um eine ge-wisse Unabhangigkeit von der Stichprobe der univariaten Interpolation zu erlangen.Der Umfang der Stichprobe betragt 3066 Schlussel. Wir definieren analog zur univaria-ten Interpolation:
OFI,i =n
⋃
k=1
SPk,i.
Numerieren wir die 1-Bit-Blocke von rechts nach links mit 0 beginnend durch undbezeichnen das zum Block i gehorige Polynom mit Pi.
Die Interpolationspolynome einer zufalligen Permutation haben etwa 32 500 bis 33 000Monome und den totalen Grad 15.
Die Polynome der multivariaten Interpolation der FI-Funktion haben fur P0 bis P8
den totalen Grad 4, fur die Polynome P9 bis P15 ist der totale Grad 7.
Im Nachhinein benotigt man nur nochd
∑
k=0
(
16k
)
KCP fur eine Interpolation. Fur d = 4
sind das nur 2 517 KCP, fur d = 7 sind es 26 333, also genau die Anzahl der KCP diefur eine univariate Interpolation der FI-Funktion ausreicht.
Betrachten wir die Polynome etwas genauer, so stellen wir fest, daß in der Stichprobefur P0 von den potentiellen 2517 verschiedenen Monomen nur 259 vorkommen, davon209 Monome in allen untersuchten Schlusseln, jedoch nicht mehr als 242 in einemSchlussel. Wir nehmen daher an, daß die 259 Monome die Obermenge OFI,0 bildenund die 242 Monome eine Untermenge UFI,0. Tabelle 4.3 zeigt die Machtigkeiten derObermengen OFI,i und der Untermenge UFI,i der Struktur aller Pi, sowie die maximaleMonomanzahl max |SPi,K | eines Schlussels K.
Wir erkennen, wie schon beim totalen Grad, auch bei der Monomanzahl einen deut-lichen Sprung zwischen P8 und P9. Hier ist der Ubergang vom 9-Bit-Block zum 7-Bit-Block der unbalancierten Feistel-Chiffre.
Ist die Stichprobe tatsachlich reprasentativ, das heißt wir haben schon alle vorkom-menden Monome in den OFI,i aufgenommen, so reichen uns jetzt 301 KCP fur dieInterpolation des 9-Bitblocks und 9793 KCP fur den 7-Bit-Block.
Diese Zahlen lassen sich weiter reduzieren. Berucksichtigen wir die Annahme, daß UPi
eine Teilmenge von SPi,K ist, so mussen wir nur noch bestimmen, welche Monome ausOPi
hinzukommen. Die Anzahl der hinzukommenden Monome ist durch die Differenzder OPi
und der UPibeschrankt, fur den 9-Bit-Block reichen also 53 KCP, fur den 7-
Bit-Block 2391 KCP. Sind die KCP zufallig, so erhalt man P mit O(n2) Speicher undder verallgemeinerten Vandermonde-Interpolation. Entsprechen die Stellen der KCPden fehlenden Monomen (im Sinne von Abschnitt 2.5.3), so kann mit der Nullteilraum-Interpolation das Polynom P mit O(n) Speicher berechnet werden.
44
4.2 Angriffe auf Teile Kasumis
4.2.4 Interpolation der FO-Funktion
Wir wollen mit den Ergebnissen der letzten beiden Abschnitte die FO-Funktion derKasumi-Chiffre untersuchen.
Setzen wir die Gleichungen (4.1) und (4.2) in Gleichung (4.3) ein, so erhalten wir:
L3(L0, R0) =FI(R0 + KOi,2, KIi,2) + FI(L0 + KOi,1, KIi,1) + R0
R3(L0, R0) =FI(FI(L0 + KOi,1, KIi,1) + R0 + KOi,3, KIi,3) + FI(R0 + KOi,2, KIi,2)
+ FI(L0, KOi,1, KIi,1) + R0.
Wir wollen hier eine Vereinfachung vornehmen und die Schlussel KOi,1, KOi,2 undKOi,3 weglassen. Dadurch wird die Monomanzahl der Polynome L3 und R3 gesenkt.Es bleibt
L3(L0, R0) =FI(R0, KIi,2) + FI(L0, KIi,1) + R0
R3(L0, R0) =FI(FI(L0, KIi,1) + R0, KIi,3) + FI(R0, KIi,2)+
FI(L0, KOi,1, KIi,1) + R0. (4.4)
Sind die Stutzpunkte ((~L0,1, ~R0,1), (~L3,1, ~R3,1)), . . . , ((~L0,n, ~R0,n), (~L3,n, ~R3,n)) gege-ben, so erhalten wir fur das j-te Bit des linken Teilblocks das Gleichungssystem:
(
L3(~L0,i, ~R0,i))
j=
(
FI(~R0,i, KIi,2) + FI(~L0,i, KIi,1) + ~R0,i
)
j
=∑
~e∈OPj
c~e~L~e
0,i +∑
~e∈OPj
d~e~R~e
0,i + R0,i,j (4.5)
fur i aus {1, . . . , n}, wobei OPjdie Obermenge der Struktur des Polynoms Pj aus
Abschnitt 4.2.3 ist. Wir mussen noch die c~e und die d~e bestimmen. Zur Losung derGleichung (4.5) reichen mit den Ergebnissen des vorherigen Abschnitts fur die ersten9 Bit 2 · 53 = 106 KCP, fur die letzten 7 Bit reichen 2 · 2391 = 4782 KCP.
Betrachten wir nun den rechten Teilblock. Fur die 0-te Bitspur erhalten wir:∑
(e0,...,e15)∈OP0
(
b(e0,...,e15)(fi0(L0) + R0,0)e0 · · · (fi15(L0) + R0,15)
e15)
∑
~e∈OP0
c~eR~e0 +
∑
~e∈OP0
d~eL~e0 + R0,,
wobei fur den ersten Summanden die fi0, . . . , fi15 die Polynome der Bitspuren derinneren FI-Funktion aus (4.4) sind, und OP0
die Obermenge der Polynomstruktur deraußeren FI-Funktion ist.
Nach Bemerkung 4.2.1 erwarten wir fur die rechte Halfte der FO-Funktion, daß dasInterpolationspolynom nicht mehr MZ-unterscheidbar ist.
In [KAS01] sind die S-Boxen S7 und S9 nicht nur durch Tabellen, sondern auchdurch logische Ausdrucke beschrieben. Um ein Polynom uber F2 auszurechnen dessen
45
4 Kasumi und experimentelle Ergebnisse
Struktur eine Obermenge aller Interpolationspolynome der nicht vereinfachten FO-Funktion ist, mussen neben den Veranderlichen X0, . . . , X31 fur die Klartextbits auchVeranderliche K0, . . . , K96 fur die Schlusselbits betrachtet werden. Das Polynom istalso 128-variat.
4.2.5 Interpolation von Kasumi
Wir wollen auch die Kasumi-Chiffre vereinfachen. Wir verzichten auf die FL-Funktionund nehmen anstatt der FO-Funktion die vereinfachte FO-Funktion aus Abschnitt4.2.4. Wir haben jetzt eine verschachtelte Feistel-Chiffre, die nur noch aus der Anwen-dung der S-Boxen S7 und S9 besteht. Abbildung 4.2 auf Seite 50 zeigt diese reduzierteChiffre mit vier Runden.
Verfolgen wir nun die Datenpfade der Viertelblocke LL,0, LR,0, RL,0 und RR,0, dasheißt die von oben nach unten verlaufenden und sich kreuzenden Linien.
Zum Datenpfad von RR,0 wird wahrend der ersten Runde ein Teil addiert, der schonzweimal die FI-Funktion durchlaufen hat. Damit ist RR,1 nicht mehr MZ-unterscheidbar.
Der Datenpfad von RL,0 wird in der ersten Runde nur mit einem FI-Druchlauf ad-diert, bleibt wahrend der zweiten Runde unverandert und erst LL,3 ist nicht mehrMZ-unterscheidbar.
Die beiden Datenpfade von LL,0 und LR,0 bleiben in der ersten Runde unverandertund haben nach der zweiten Runde jeweils einen Summanden, der schon dreimal dieFI-Funktion durchlaufen hat.
Wir konnen die vereinfachte Kasumi-Chiffre also nur fur 16 Bit zwei Runden weitinterpolieren.
Analog konnen wir die Datenpfade von unten nach oben verfolgen und kommen hierfur LL,4 zwei Runden weit. Da RL,0 nach zwei Runden in den Teilblock RR,2 uberfuhrtwird, und LL,4 nach zwei Runden von unten beginnend in den Teilblock LL,2 kann dieTatsache, daß wir einen Teilblock uber zwei Runden interpolieren konnen, nicht fureinen Meet-in-the-Middle-Angriff auf die vereinfachte Kasumi-Chiffre genutzt werden.
Wir konnen also davon ausgehen, daß die nicht vereinfachte Kasumi-Chiffre schonnach mindestens zwei Runden gegen den Interpolationsangriff sicher ist.
46
4.2 Angriffe auf Teile Kasumis
Schlussel Schlussel binar c2115?= 0
15392 0011110000100000 ja
15393 0011110000100001 ja
15394 0011110000100010 ja
15396 0011110000100100 ja
15400 0011110000101000 ja
15408 0011110000110000 ja
15360 0011110000000000 ja
15456 0011110001100000 ja
15520 0011110010100000 ja
15648 0011110100100000 ja
15904 0011111000100000 nein
14368 0011100000100000 nein
13344 0011010000100000 nein
11296 0010110000100000 nein
07200 0001110000100000 nein
31776 0111110000100000 nein
48160 1011110000100000 nein
15536 0011110010110000 ja
15673 0011110100111001 ja
15777 0011110110100001 ja
15972 0011111001100100 nein
31989 0111110011110101 nein
48944 1011111100110000 nein
65081 1111111000111001 nein
65198 1111111010101110 nein
0011110*********Die abgetrennte letzte Zeile zeigt das vermutete Muster, es hangt nur
von dem 7-Bit-Block ab. Die Schlussel15∑
i=0
aiXi aus K werden hier mit
der Zahl15∑
i=0
ai2i identifiziert.
Tabelle 4.1: Muster des fehlenden Monoms X2115
47
4 Kasumi und experimentelle Ergebnisse
Schlussel Muster fehlende Monome
05120 0001010********* X5776
12288 0011000********* X16393
13312 0011010********* X13448
15360 0011110********* X2115
22528 0101100********* X45059
25600 0110010********* X41028
28160 0110111********* X9345
29184 0111001********* X26768
31744 0111110********* X33537
37888 1001010********* X453
43008 1010100********* X5201, X28160
44544 1010111********* X24595
52224 1100110********* X2309
55296 1101100********* X6152
61440 1111000********* X25728
Die Schlussel15∑
i=0
aiXi aus K sind hier mit der Zahl
15∑
i=0
ai2i identifiziert.
Die Struktur hangt nur von der ersten 7 Bit ab.
Tabelle 4.2: Klassen der Kasumi-FI-Schlussel
P0 P1 P2 P3 P4 P5 P6 P7 P8
|OPi| 259 282 275 265 269 282 280 298 301
|UPi| 209 230 226 215 219 230 229 245 248
max |SPi,K | 243 266 261 254 253 269 265 280 283
P9 P10 P11 P12 P13 P14 P15
|OPi| 9495 9361 9370 9650 9374 9793 9125
|UPi| 7224 7109 7163 7327 6996 7402 6913
max |SPi,K | 8421 8295 8334 8561 8239 8661 8085
Tabelle 4.3: Experimentelle Ergebnisse der bitweisen FI-Interpolation
48
4.2 Angriffe auf Teile Kasumis
Jeder schwarze Punkt reprasentiert ein Monom, dessen Koeffizient verschiedenvon Null ist. Die Monome sind von unten nach oben und zeilenweise von linksnach rechts aufsteigend angeordnet. Die roten Punkte stellen die Monome dar,die in einer Schlusselklasse verschwinden.
Abbildung 4.1: Struktur des Interpolationspolynoms
49
4 Kasumi und experimentelle Ergebnisse
FI FI FI
FI FI FI
FI FI FI
FI FI FI
KI1,1 KI1,2 KI1,3
KI2,1 KI2,2 KI2,3
LL,0 LR,0 RL,0RR,0
KI3,3KI3,1 KI3,2
KI4,1 KI4,2 KI4,3
LL,4 LR,4 RL,4RR,4
Abbildung 4.2: reduzierte Kasumi-Chiffre
50
5 Schlußfolgerungen
In [KAS01] wird behauptet, Kasumi sei gegen den Interpolationsangriff resistent. JohanWallen schreibt in [Wal] die asymmetrische Aufteilung der Teilblocke der FI-Funktionwurde algebraische Analysen wie den Interpolationsangriff erschweren. Weiter ist nir-gends verbrieft, warum Kasumi gegen den Interpolationsangriff resistent sein soll, dieseArbeit hat diese Lucke geschlossen.
Obwohl wir die Kasumi-Chiffre auf eine mehrfache Anwendung der S-Boxen S9 undS7 vereinfacht haben, ist es uns nicht gelungen sie weiter als zwei Runden fur einenTeilblock mit dem Interpolationsangriff anzugreifen.
Wir konnten zeigen, daß ein Datenpfad sicher gegen den Interpolationsangiff ist,sobald die FI-Funktion zweimal durchlaufen ist.
Wir gehen also davon aus, das Kasumi mit acht Runden gegen den Interpolationsan-griff sicher ist. Auch ein Meet-in-the-Middle-Angriff ist nicht verwendbar, da wir nichtbis in die Mitte, daß heißt vier Runden, der Chiffre kommen.
Weiter konnen wir fur Feistel-Chiffren, die in den Rundenfunktionen S-Boxen S(X)verwenden, einfach feststellen, ab welcher Rundenzahl sie spatestens gegen den Inter-polationsangriff sicher sind. Wir interpolieren die Folge S(X), S2(X), S3(X), . . . biszum Glied i das ein Interpolationspolynom hat, welches nicht MZ-unterscheidbar ist.Ab der Runde in der S(X) zum i-ten mal auf die Klartexte angewandt wurde, ist dieFeistel-Chiffre sicher gegen den Interpolationsangriff.
Ist eine S-Box oder eine andere Funktion uber endlichen Korpern unbekannter Struk-tur gegeben, so konnen die hier vorgestellten Verfahren verwendet werden, um einealgebraische Beschreibung der S-Box oder der Funktion zu erhalten.
51
A Quelltexte
Die Datei kasumi.h, die in den Programmen A.1 und A.2 verwendet wird, ist eineHeader-Datei, die die Kasumi-FI-Funktion beinhaltet. Ihr wird der zu verschlusselndeBlock als erster und der Schlussel als zweiter Parameter ubergeben. Beide Parameterhaben den Typ u16; eine 16-Bit-Ganzzahl. Eine Referenzimplementierung findet sichim Anhang von [KAS99].
A.1 Newton-Interpolation: C++-Programm
#include <iostream >
#include <fstream >
#include <sstream >
5 #include <getopt.h >
#include <vector >
#include <time.h >
#include <NTL/GF2E.h >
10 #include <NTL/vec GF2E.h >
#include <NTL/GF2EX.h >
#include <NTL/GF2XFactoring.h >
#include "kasumi.h"
15
/ ∗ a Fugt den Schl ussel an den Dateinamen an.∗ f file Die Ausgaben werden nach file geschrieben.∗ k key Verwende den Schl ussel key (Ganze Zahl)∗ r Verwende anstelle der Kasumi FI eine zuf allige Permutation. ∗/
20 #define OPTIONS "af:k:r"
int points=65536; / ∗ Alle Punkte des F16
2∗/
using namespace std;25
NTL CLIENT
/ ∗ Wandelt eine Ganzzahl in ein K oprerelement um. ∗/inline GF2E elt( int i) {
30 GF2E e; stringstream ss; string s;ss << hex << i; ss >> s;reverse(s.begin(), s.end());
53
A Quelltexte
ss.str( ""); ss.clear();ss << "0x" << s; ss >> e;
35 return e;}
/ ∗ Die Newtoninterpolation, x ist der Vektor der St utzstellen, y derder St utzwerte. ∗/
40 GF2EX newton(vec GF2E x, vec GF2E y) {vec GF2E h;VectorCopy(h, y, y.length());/ ∗ Berechnet die dividierten Differenzen γj ∗/for ( int k=1; k <y.length(); k++)
45 for ( int i=y.length() 1; i >=k; i )h[i]=(h[i] h[i 1])/(x[i] x[i k]);
GF2EX N(0, h[0]), P; / ∗ N(X) :=n∑
j=1
γj
j−1∏
i=1
(X − xi) ∗/
set(P);50 for ( int j=1; j <y.length(); j++) {
P = P∗(GF2EX(1,1) GF2EX(0,x[j 1]));N = N + h[j] ∗P;
}return N;
55 }
int main ( int argc, char ∗argv[]) {GF2X::HexOutput=1;GF2X P; / ∗ Das Korperpolynom ∗/
60 BuildIrred(P, 16);GF2E::init(P); / ∗ Erzeuge die K orpererweiterung. ∗/
string file; / ∗ Die Ausgabedatei ∗/bool random func=false, / ∗ Interpoliere anstelle der FI Funktion
65 eine zuf allige Permutation. ∗/add key to filename=false; / ∗ Hange den gew ahlten Schl ussel an den
Namen der Datei. ∗/
srandom(( int) time(0)); / ∗ Initialisiere den Zufallszahlengenerator ∗/70
int key=random() % points; / ∗ Standard ist ein zuf alliger Schl ussel ∗/
int c;while((c=getopt(argc, argv, OPTIONS))!=EOF)
75 switch (c) {case ’a’: add key to filename=true; break;case ’f’: file=optarg; break;case ’k’: key=atoi(optarg); break;case ’r’: random func=true; break;
80 default: break;}
54
A.1 Newton-Interpolation: C++-Programm
if (add key to filename)if (file!= "") {
85 stringstream ss;ss << file << " " << key; ss >> file; ss.str( ""); ss.clear();
}
vector <GF2E> randlist; / ∗ Wird nur ben otigt, wenn eine zuf allige90 Permutation interpoliert wird. ∗/
vec GF2E x, y;x.SetLength(points);
95 if (random func)/ ∗ Initialisiere den Vektor aus dem die zuf allige Perm. ausgew ahlt
wird. ∗/for ( int i=0; i <points; i++) randlist.push back(elt(i));
else y.SetLength(points);100
for ( int i=0; i <points; i++) {x[i]=elt(i);if (random func) {
/ ∗ Wahle ein Element zuf allig und l osche es aus der Liste. ∗/105 size t i=random() % randlist.size();
append(y, randlist[i]);randlist.erase(randlist.begin()+i);
} else y[i]=elt(FI((u16) i, (u16) key));}
110
GF2EX N = newton(x,y);
#ifdef TESTS/ ∗ Uberpr ufe mit allen St utzstelle, ob das Polynom die Werte auch
115 interpoliert ∗/for ( int i=0; i <x.length(); i++) {
GF2E b;eval(b, N, x[i]);/ ∗ Tritt dieser Fall ein, so liegt ein algorithmischer Fehler
120 vor ∗/if (b!=y[i]) { cout << b << "!=" << y[i] <<endl; return 1; }
}#endif
125 / ∗ zahle die von Null verschiedenen Monome ∗/int monoms=0;for ( int i=0; i <=deg(N); i++) if (!IsZero(coeff(N,i))) monoms++;
if (file!= "") {130 ofstream ofs;
ofs.open(file.c str(), ios::out);
55
A Quelltexte
ofs << "Schluessel: " << key << endl;
for ( int i=0; i <=deg(N); i++)135 ofs << i << " " << ((!IsZero(coeff(N,i))) ? 1 : 0)
<< " " << coeff(N,i) << endl;
ofs.close();}
140
return 0;}
A.2 Nullteilraum-Interpolation: C++-Programm
// #define TESTS / ∗ Das Endergebnis wird nochmal auf Korrektheit// uberpr uft. ∗/
5 #include <fstream >
#include <iomanip >
#include <iostream >
#include <set >
#include <sstream >
10 #include <vector >
#include <assert.h >
#include <time.h >
15 #include "kasumi.h"
/ ∗ b block Der Bit Block von rechts, der interpoliert werden soll.∗ (0 <=b<=15)∗ f file Die Ausgaben werden nach file geschrieben.
20 ∗ i file Liest die Monome aus file, und interpoliert die FO Funktion∗ mit ihnen.∗ k key Verwende den Schl ussel key (Ganze Zahl) ∗/#define OPTIONS "b:f:k:i:r"
25 unsigned int POINTS=65536;unsigned short MV=16;
using namespace std;
30 #define addF(a,b) (aˆb)#define multF(a,b) (a&b)#define expF(a,b) (a |(˜b))
/ ∗ Kompatibilitaet zur NTL. NTL liest die Bits von links nach re chts. ∗/35 uint32 t reverse(uint32 t a) {
56
A.2 Nullteilraum-Interpolation: C++-Programm
uint32 t b=0;for ( int i=0; i <16; i++) b=(b << 1)+((a & (1 << i)) >> i);return b;
}40
/ ∗ Bestimmt den Totalen Grad des Monoms m. ∗/inline uint8 t total degree(uint32 t m) {
uint8 t d=0; for (size t i=0; i <32; i++) d+=((m >>i)&1); return d;}
45
/ ∗ Pr uft, ob die Klasse a kleiner als die Klass b ist. (vgl. (2.8)) ∗/inline bool is smaller(uint32 t a, uint32 t b) {return (a!=b) && ((a&b)==a);
}50
/ ∗ Berechnet das Produkt das aus der kompenentenweisen Expone ntiationvon p mit t entsteht. (vgl. (2.9)) ∗/
inline uint8 t expt(uint32 t p, uint32 t term) {if (MV<32)
55 return (expF(p, term) % (1 <<MV) == (uint32 t) (1 <<MV) 1) ? 1:0;elsereturn (expF(p, term) == (uint32 t) 1) ? 1:0;
}
60 / ∗ Update der St utzwerte die nicht bei der Teill osung beteiligt waren.f sind die St utzwerte, P die zugeh origen St utzstellen. (vgl. (2.10)) ∗/
inline uint8 t update(uint8 t f, uint32 t P, uint32 t term, uint8 t c) {return addF(f,multF(expt(P, term),c));
}65
typedef vector <pair <uint32 t, uint8 t > > subspaces;typedef set <uint32 t > coefficients;
/ ∗ Uberpr uft, ob die Stellen die in x gegeben sind, die Werte in y70 annehmen, wenn das gesuchte Polynom die Koeffizienten c hat . ∗/
bool verify(coefficients c, subspaces points) {bool korrekt=true;for (subspaces::iterator pt=points.begin(); pt!=points.en d(); pt++) {
uint8 t value=0;75 for (coefficients::iterator monom=c.begin(); monom!=c.end (); monom++)
value=addF(value, expt(pt >first, ∗monom));if (value!=pt >second) {
cout << pt >first << ": Fehler." << endl;korrekt=false;
80 }}return korrekt;
}
85 / ∗ Erzeugt die zu interpolierenden Nullteilraeume durch Ausw erten der
57
A Quelltexte
FI Funktion. ∗/inline void generate fi map(subspaces &raeume, uint8 t block, int key) {for (uint32 t stelle=0; stelle <POINTS; stelle++)
/ ∗ Das zu interpolierende Bit der FI Funktion ∗/90 raeume.push back(pair <uint32 t, uint8 t >
(stelle,(FI((u16) stelle, key) >> block) & 1));}
/ ∗ Erzeugt die zu interpolierenden Nullteilraeume durch Einl esen der95 Monomauswahl aus einer Datei, oder durch zuf alliges Erzeugen von
2ˆ16 Interpolationspunkten der FO Funktion. ∗/inline void generate fo map(subspaces &ss, uint8 t block, string infile,
int key, bool random generate) {/ ∗ f ullen der Teilschl ussel Arrays, stehen in kasumi.h, die hier
100 gewahlten Schl ussel sind aus der Stichprobe der FI Interpolationherrausgeriffen (vgl. 4.2.3). ∗/
KOi1[0]=11; KOi2[0]=128; KOi3[0]=192;KIi1[0]=1128; KIi2[0]=512; KIi3[0]=11296;
105 if (random generate) {/ ∗ Erzeugt zuf allige Interpolationspunkte. Dient der Uberpr ufung
des Interpolationsergebnisses. ∗/for (size t i=0; i <(1 <<16); i++) {
uint32 t stelle=random();110 ss.push back(pair <uint32 t, uint8 t >
(stelle, (FO(stelle, 0) >> block)&1));}sort(ss.begin(), ss.end());
} else {115 / ∗ Dateiformat : [(m1, f1);(m2, f2);...;(mn,fn)][...][...] ∗/
ifstream ifs(infile.c str());uint32 t stelle;ifs.ignore(); // [char ch;
120 while (ifs >> stelle) {ss.push back(pair <uint32 t, uint8 t >
(stelle, (FO(stelle, 0) >> block)&1));ifs >> ch;if (ch== ’]’) break;
125 }ifs.close();
}}
130 / ∗ Als Alternative zur Nullteilrauminterpolation ist hier au ch dieInterpolation durch l osen des Gleichungssystems (eine Verallgemeinerung von (2.6)) mit dem Gaußalgorithmus implementiert. Siedient vorallem f ur die Uberpr ufung der Nullteilrauminterpolation. ∗/
#ifdef GAUSS135 template <class U >
58
A.2 Nullteilraum-Interpolation: C++-Programm
ostream &operator <<(ostream &os, vector <U> v) {for (size t i=0; i <v.size(); i++) os << v[i]; return os;
}
140 template <class U, class V>
ostream &operator <<(ostream &os, const pair <U,V> &pr) {os << "(" << pr.first << "," << ( int) pr.second << ")";return os;
}145
/ ∗ Vertauscht die Zeilen i und j in der Matrix M. ∗/inline void swap(vector <vector <uint32 t > > M, int i, int j) {
uint32 t t;for (size t k=0; k <M[i].size(); k++) {
150 t=M[i][k]; M[i][k]=M[j][k]; M[j][k]=t;}
}
/ ∗ Lost das Gleichungssystem A ∗x=b nach x auf. ∗/155 inline vector <uint32 t > gauss d(vector <vector <uint32 t > > A,
vector <uint32 t > b) {/ ∗ Bringe die Matrix in Stufenform. ∗/int cols=A[0].size();
160 for ( int i=0; i <cols; i++) {uint32 t a=A[i][i];if (a==0) {
int l=i+1;while (l <cols) {
165 if (A[l][i]!=0) break;l++;
}if (l==cols) continue;swap(A,i,l);
170 uint32 t t=b[i]; b[i]=b[l]; b[l]=t; // swap(b,i,l);a=A[i][i];
}for ( int j=i+1; j <cols; j++) { // Zeile
if (A[j][i]==0) continue;175 uint32 t f=multF(a,A[j][i]);
A[j][i]=0;for ( int k=i+1; k <cols; k++)
A[j][k]=addF(A[i][k],multF(f,A[j][k]));b[j]=addF(b[i],multF(f,b[j]));
180 }}
/ ∗ Lose das Gleichunssystem durch R uckwertseinsetzten. ∗/vector <uint32 t > x(cols);
185 for ( int i=cols 1; i >=0; i ) {
59
A Quelltexte
uint32 t a=0;for ( int j=cols 1; j >i; j )
a=addF(a,multF(x[j],A[i][j]));x[i]=multF(addF(b[i],a),A[i][i]); // x[i 1]=(b[i 1] a)/A(i,i);
190 }
return x;}#endif
195
/ ∗ Die Interpolation zweier Bits des 16 Bit Ausgabeblocks.∗ block gibt an welche zwei Bit interpoliert werden. ∗/void interpolate block(coefficients &coeff, subspaces raeume) {
/ ∗ Diese Schleife ist die Grobstruktur des Algorithmus 2. ∗/200 for (subspaces::iterator zs=raeume.begin(); zs!=raeume.en d(); zs++) {
cout << "Interpoliere: " << zs >first << endl;subspaces::iterator j=zs;while (++j!=raeume.end())
if (is smaller(zs >first, j >first))205 j >second=update(j >second, j >first, zs >first, zs >second);
/ ∗ Die Teill osungen den Koeffizienten zuordnen. ∗/if (zs >second==1) coeff.insert(zs >first);
}210 }
int main ( int argc, char ∗ argv[]) {bool all blocks=true,
fi=true, // false, falls FO interpoliert werden soll.215 random test=false;
int block=0;string file= "/dev/stdout", infile;
srandom(( int) time(0)); // Initialisiere den Zufallszahlengenerator220 uint32 t key=random() % POINTS; // Standard ist ein zuf alliger Schl ussel
int c;while((c=getopt(argc, argv, OPTIONS))!=EOF)switch (c) {
225 case ’b’ : block=atoi(optarg); all blocks=false; break;case ’f’ : file=optarg; break;case ’k’ : key=atoi(optarg); break;case ’i’ : infile=optarg; fi=false; MV=32; all blocks=false; break;case ’r’ : random test=true; break;
230 default: break;}
ofstream ofs(file.c str(), ios::out);ofs << "Schluessel: " << key << endl;
235 key=reverse(key);
60
A.2 Nullteilraum-Interpolation: C++-Programm
uint8 t start=0, stop=MV 1;if (!all blocks) {
start=block;240 stop=block;
}for (uint16 t i=start; i <=stop; i++) {
subspaces ss;cout << "Erzeuge Punkte" << flush;
245 if (fi) generate fi map(ss, i, key);else generate fo map(ss, i, infile, key, false);cout << "." << endl;cout << "Block: " << i << endl;coefficients coeff;
250 #ifdef GAUSSvector <vector <uint32 t > > T;vector <uint32 t > f, c;for (subspaces::iterator x=ss.begin(); x!=ss.end(); x++) {
vector <uint32 t > l;255 for (subspaces::iterator e=ss.begin(); e!=ss.end(); e++) {
l.push back(expt(x >first,e >first));}T.push back(l);f.push back(x >second);
260 }size t s=T.size();for (vector <vector <uint32 t > >::iterator l=T.begin();
l!=T.end(); l++)if (l >size()!=s) {
265 cout << "s=" << s << endl;cout << "l.size()=" << l >size() << endl;break;
}c=gauss d(T,f);
270 for (size t j=0; j <c.size(); j++)if (c[j]==1) coeff.insert(ss[j].first);
#elseinterpolate block(coeff, ss);
#endif275
/ ∗ Gibt die Koeffizienten des interpolierten Polynoms aus, un d z ahltdie Monome, sowie den maximalen totalen Grad. ∗/
ofs << "Block: " << i << endl;
280 uint8 t degree=0;for (coefficients::iterator it=coeff.begin(); it!=coeff.e nd(); it++) {
ofs << ∗it << endl;uint8 t t=total degree( ∗it);if (t >degree) degree=t;
285 }
61
A Quelltexte
ofs << endl << "Monome: " << coeff.size() << endl << "Totaler Grad: "
<< (uint16 t) degree << endl << endl;#ifdef TESTS
/ ∗ Uberpr ufe nochmal alle Punkte mit allen Koeffizienten ∗/290 cout << "Teste die Punkte. " << endl;
assert(verify(coeff, ss));cout << "Ok." << endl;
#endifif (random test) {
295 ss.clear();if (fi) generate fi map(ss, i, key); / ∗ Hier werden alle Punkte
getestet. ∗/else generate fo map(ss, i, infile, key, random test);cout << "Teste die Punkte. " << endl;
300 assert(verify(coeff, ss));cout << "Ok." << endl;
}}
305 ofs.close();
return 0;}
A.3 Vereinfachter Zippel-Algorithmus:
Axiom-Programm
Prototyp des Zippelalgorithmus f ur Axiom.Autor: Dieter Schuster, Freitag, 17. November 2006Time stamp: <2007 03 23 16:45:52 dieter >
$Id: zippel.input 186 2007 03 23 16:06:21Z schuster $5
Menge der Parameterv:=[concat( "c", i::String)::Symbol for i in 0..40]
Menge der Ver anderlichenV:=[concat( "X", i::String)::Symbol for i in 1..4]
10
Der Datentype DistributeMultivariatePolynomial legt ein eMonomordnung fest. Ohne Monomordnung gibt es Probleme zwis chengeneric polynomial und der lokalen Variablen C vonintroduce variable.
15 MP:=DistributedMultivariatePolynomial(append(V, v), K )
Die Gaußinterpolation kommt bei d unnbesetzten Polynomen, bei denendie Stuktur bekannt ist, mit weniger St utzpunkten aus als dieLagrange Interpolation.
20 gauss: (List List K, Polynomial K, Symbol) > Polynomial Kgauss(points, g, var) ==
62
A.3 Vereinfachter Zippel-Algorithmus: Axiom-Programm
eval(g, first(solve([eval(g, var=points.i.1)=points.i .2for i in 1..#points])))
25 Erstellt ein dichtbesetztes Polynom vom Grad deg mit Parame tern alsKoeffizienten.
get dense polynomial(var, deg) ==p:Polynomial K:=0$Kfor i in 0..deg repeat
30 p:=p+v.(i+1) ∗var ∗∗ip
Ersetzt im Polynom p alle Koeffizienten bez uglich denVer anderlichen in der Liste var durch Parameter.
35 generic polynomial(p, var) ==M:=monomials(p::Polynomial K)e:=removeDuplicates([degree(M.i,var)$Polynomial K for i in 1..#M])g:MP:=0$Km:MP:=1$K
40 for i in 1..#e repeatm:=1for j in 1..#e.i repeat
m:=m ∗ var.j ∗∗ e.i.jg:=g+v.i ∗m
45 g
Erstellt eine Liste der Koeffizienten des Polynoms P bez uglich denVer anderlichen in der Liste var.
coefficients(P, var) ==50 M:List Polynomial K:=monomials(P)
for i in 1..#M repeatfor j in 1..#var repeat
M.i:=eval(M.i, var.j=1)M
55
Fuhrt neue Variable var ein.var: Variable die neu eingef uhrt werden soll ist die erste, der
Rest wurde schon eingef uhrt.l: Liste der Paare aus Polynomen und Stellen uber die interpoliert
60 werden soll.g: Die bisher bekannte Struktur des Polynoms.
introduce variable(var, l, g) ==C:=[coefficients(l.i.poly::MP) for i in 1..#l]if #var=1 then
65 xy:=[[l.i.xval, C.i.1] for i in 1..#l]P:MP:=gauss(xy, first(g), first(var))
elseP:MP:=generic polynomial(l.1.poly::MP, rest(var))co:List Polynomial K:=coefficients(P, rest(var))
70 for j in 1..#co repeatxy:=[[l.i.xval, C.i.j] for i in 1..#l]
63
A Quelltexte
p:=gauss(xy, first(g), first(var))P:=eval(P, co.j=p)
P75
Interpoliert das Polynom das durch die Punkte im Interpolat ionsbaumt festgelegt ist.var: Liste mit noch einzuf uhrenden Ver anderlichen.g: Liste mit der Struktur der Polynom je Ver anderlichen.
80 interpolate(var, g, t) ==local chch:=children(t)local LP
Liste der Polynome in einer Ver anderlichen weniger.85 LP:List Record(poly: Polynomial K, xval: K):=[]
local Pif var=[] then Der konstante Fall.
P:Polynomial K:=first(ch).valueelse
90 local first intpfirst intp:=first(ch)local second roundsecond round:=falsefor round in 1..2 repeat
95 local ifor i in ch repeat
Erzeuge die St utzpolynome f ur die neueinzuf uhrende VariablenP:=interpolate(rest(var), rest(g), i)if nP.poly˜=0 then
100 LP:=cons(nP, LP)bis hierher muß der Baum eventuell nochmal durchsucht werde n.
if first intp=first(ch) thenfirst intp:=i
Sind gen ugend Polynome f ur die n achste Interpolation105 gefunden dann kann die Suche beendet werden.
if #LP>=#monomials(first(g)) thenbreak
In der zweiten Runde k onnen nur S ohne vor first intp noch#LP vergr oßern.
110 if second round and i=first intp thenbreak
Ist first intp >1 dann kann ein weiteres Durchsuchen des Baumesnochmal ein Ergebnis bringen.
if #LP<#monomials(first(g)) and first intp˜=first(ch) then115 second round:=true
elsebreak
Ist #LP <#monomials(first(g)), dann gibt es im Baum nichtgen ugend Information zur Interpolation.
120 if #LP<#monomials(first(g)) thenP:=0
64
A.3 Vereinfachter Zippel-Algorithmus: Axiom-Programm
elseP:Polynomial K:=introduce variable(var, LP, g)
Wir nehmen an, das immer die gleiche Stuktur entsteht, kann125 schief gehen.
g.1:=generic polynomial(P, [first(var)])res:Record(poly: Polynomial K, xval: K):=[P, t.value]
Fugt einen Punkt in den Baum der Interpolationspunkte ein.130 insert!: (List K , Tree K) > Tree K
insert!(x, t) ==l:=children(t)found:=falseif l˜=[] then
135 for c in l repeatif value(c)=first(x) thenif #rest(x)˜=0 then
insert!(rest(x), c)found:=true
140 breakif not(found) then
n:=tree(first(x))if #rest(x)˜=0 then
insert!(rest(x), n)145 s:=cons(n, l)
setchildren!(t, s)t
Der Zippel Algorithmus150 xys: die Interpolationspunkte, wobei der letzte Eintrag ei nes
Punktes den Wert darstellt.var: Liste mit Ver anderlichen in denen interpoliert werden soll.g: Liste mit Strukturpolynomen.
zippel(xys, var, g) ==155 local ipt:Tree K
ipt:=tree(0$K)for point in xys repeat insert!(point, ipt)interpolate(var, g, ipt).poly
65
Literaturverzeichnis
[BB+03] Bronstein, Manuel, William Burge et al.: Axiom, the 30 Year Hori-zon. 2003.
[Buc04] Buchmann, Johannes: Einfuhrung in die Kryptographie. Springer-Verlag,3 Auflage, 2004.
[CoC] CoCoATeam: CoCoA: a system for doing Computations in CommutativeAlgebra. Available at http://cocoa.dima.unige.it.
[f8-04] 3GPP TS 35.201 V6.1.0 (2005-09), 3rd Generation Partnership Project;Technical Specification Group Services and System Aspects; 3G Security;Specification of the 3GPP Confidentiality and Integrity Algorithms; Docu-ment 1: f8 and f9 Specification (Release 6). Technischer Bericht, 2004.
[GMG] Gert-Martin Greuel, Gerhard Pfister, und Hans Schonemann:Singular. http://www.singular.uni-kl.de.
[GRV+] Gautier, Thierry, Jean-Louis Roch, Gilles Villard,Jean-Guillaume Dumas und Pascal Giorgi: Givaro.http://ljk.imag.fr/CASYS/LOGICIELS/givaro.
[GSS+] Greuel, Gert-Martin, R. Stobbe, J. Schmidt, Ger-
hard Pfister und Hans Schoenemann: Factory.ftp://www.mathematik.uni-kl.de/pub/Math/Singular/Factory.
[Jak98] Jakobsen, Thomas: Cryptanalysis of Block Ciphers with ProbabilisticNon-linear Relations of Low Degree. Lecture Notes in Computer Science,1462:212+, 1998.
[JK97] Jakobsen, Thomas und Lars R. Knudsen: The Interpolation Attack onBlock Ciphers. Fast Software Encryption 1997 - Proceedings, Seiten 28–40,1997.
[KAS99] 3GPP TS 35.202 V3.1.1 (2001-07); Technical Specification 3rd Generati-on Partnership Project; Technical Specification Group Services and SystemAspects; 3G Security; Specification of the 3GPP Confidentiality and Inte-grity Algorithms; Document 2: KASUMI Specification. Technischer Bericht,1999.
67
Literaturverzeichnis
[KAS01] 3GPP KASUMI Evaluation Report; 3rd Generation Partnership Project;Security Algorithms Group of Experts (SAGE); Report on the Evaluationof 3GPP Standard Confidentiality and Integrity Algorithms (SAGE version2.0). Technischer Bericht, 2001.
[KIQ01] Kurosawa, Kaoru, Tetsu Iwata und Viet Duong Quang: Root Fin-ding Interpolation Attack. Lecture Notes in Computer Science, 2012:303–314, 2001.
[Knu71] Knuth, Donald E.: Seminumerical Algorithms, Band 2 der Reihe TheArt of Computer Programming. Addison-Wesley, 1971.
[Lan02] Lang, Serge: Algebra. Springer New York, 3 Auflage, 2002.
[Lin] LinBox-Team: LinBox. http://linalg.org/index.html.
[Mat97] Matsui, Mitsuru: New Block Encryption Algorithm MISTY. In: FSE ’97:Proceedings of the 4th International Workshop on Fast Software Encryption,Seiten 54–68, London, UK, 1997. Springer-Verlag.
[Mat03] Matthes, Roland: Algebra, Kryptologie und Kodierungstheorie. Fach-buchverlag Leipzig, 2003.
[MG91] Muhlbach, G. und M. Gasca: Multivariate polynomial interpolation un-der projectivities part I: lagrange and newton interpolation formulas. Nu-merical Algorithms, 1(3):375–400, Oktober 1991.
[NK95] Nyberg, Kaisa und Lars Ramkilde Knudsen: Provable securityagainst a differential attack. J. Cryptology, 8(1):27–37, 1995.
[Nyb94] Nyberg, Kaisa: Linear approximation of block chipers. Advances in Cryp-tology - EUROCRYPT’94, LNCS 950:439–444, 1994.
[Nyb96] Nyberg, Kaisa: Generalized Feistel Networks. In: ASIACRYPT, Seiten91–104, 1996.
[RDP+96] Rijmen, Vincent, Joan Daemen, Bart Preneel, Anton Bossa-
laers und Erik De Win: The Cipher SHARK. In: Fast Software En-cryption, Seiten 99–111, 1996.
[Sho] Shoup, Victor: NTL: A Library for doing Number Theory.http://shoup.net/ntl.
[SK96] Schneier, Bruce und John Kelsey: Unbalanced Feistel Networks andBlock-Cipher Design. FSE, 1996.
68
Literaturverzeichnis
[Sto93] Stoer, Josef: Numerische Mathematik, Band 1. Springer-Lehrbuch, 1993.
[Sud97] Sudan, Madhu: Decoding of Reed Solomon Codes beyond the Error-Correction Bound. Journal of Complexity, 13(1):180–193, 3 1997.
[Wal] Wallen, Johan: Design Principles of the KASUMI Block Cipher.http://www.tml.tkk.fi/Opinnot/Tik-110.501/2000/papers/wallen.pdf.
[YG01] Youssef, Amr M. und Guang Gong: On the Interpolation Attacks onBlock Ciphers. In: FSE ’00: Proceedings of the 7th International Workshopon Fast Software Encryption, Seiten 109–120, London, UK, 2001. Springer-Verlag.
[Zip90] Zippel, Richard: Interpolating Polynomials form their Values. J. Symbo-lic Computation, 3(9):375–403, 1990.
[ZV02] Zilic, Zeljko und Zvonko G. Vranesic: A Deterministic MultivariateInterpolation Algorithm for Small Finite Fields. IEEE Transactions onComputers, 51(9):1100–1105, 2002.
69