Multivariate Interpolationsangriffe auf symmetrische … · 1.1 Begriffe und Notation a~=b a6= b...

69
Diplomarbeit Multivariate Interpolationsangriffe auf symmetrische Chiffren Dieter Schuster 25. Mai 2007 Betreuer: Prof. Dr. Johannes Buchmann, Fachbereich Mathematik, Technische Universit¨ at Darmstadt

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

4

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

Abbildungsverzeichnis

8

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

Tabellenverzeichnis

10

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

2 Interpolationsverfahren

32

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

5 Schlußfolgerungen

52

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

A Quelltexte

66

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