Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 6 / 23. Dezember 2009 / Abgabe bis spätestens 20. Januar 2010, 10 Uhr (vor der Übung)



Ähnliche Dokumente
Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 5 / 9. Dezember 2009 / Abgabe bis spätestens 23. Dezember 2009, 10 Uhr (vor der Übung)

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

11. Das RSA Verfahren und andere Verfahren

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Modul Diskrete Mathematik WiSe 2011/12

Lenstras Algorithmus für Faktorisierung

Numerische Verfahren und Grundlagen der Analysis

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

Computeralgebra in der Lehre am Beispiel Kryptografie

Professionelle Seminare im Bereich MS-Office

RSA Verfahren. Kapitel 7 p. 103

Zur Sicherheit von RSA

Elliptische Kurven in der Kryptographie

Taylorentwicklung der k ten Dimension

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Sicherheit von hybrider Verschlüsselung

Vorkurs Mathematik Übungen zu Polynomgleichungen

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Musterlösungen zur Linearen Algebra II Blatt 5

Aufgaben zur Flächenberechnung mit der Integralrechung

Lineare Gleichungssysteme

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematik und Logik

Zeichen bei Zahlen entschlüsseln

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Verschlüsselung. Chiffrat. Eve

Kryptographie I Symmetrische Kryptographie

Urbild Angriff auf Inkrementelle Hashfunktionen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Programmierkurs Java

Approximation durch Taylorpolynome

10. Kryptographie. Was ist Kryptographie?

Grundlagen der Theoretischen Informatik, SoSe 2008

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Primzahlen und RSA-Verschlüsselung

Theoretische Informatik SS 04 Übung 1

Suchen und Sortieren Sortieren. Heaps

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

Grundlagen der Informatik

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

15 Optimales Kodieren

Digitale Signaturen. Sven Tabbert

Kurzanleitung MAN E-Learning (WBT)

Step by Step Webserver unter Windows Server von Christian Bartl

Abschnitt: Algorithmendesign und Laufzeitanalyse

Algorithmen & Datenstrukturen 1. Klausur

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

Public-Key-Algorithmen WS2015/2016

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

10.6 Authentizität. Geheimhaltung: nur der Empfänger kann die Nachricht lesen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Theoretische Grundlagen der Informatik

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Statistische Untersuchungen zu endlichen Funktionsgraphen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Excel Funktionen durch eigene Funktionen erweitern.

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Praktikum Diskrete Optimierung (Teil 11)

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Übung zur Algebra WiSe 2008/2009, Blatt 1

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

Mathematischer Vorbereitungskurs für Ökonomen

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

3.3 Eigenwerte und Eigenräume, Diagonalisierung

Grundbegriffe der Informatik

1 Vom Problem zum Programm

YouTube: Video-Untertitel übersetzen

7 Rechnen mit Polynomen

Kap. 8: Speziell gewählte Kurven

Lineare Gleichungssysteme

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Was meinen die Leute eigentlich mit: Grexit?

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

10. Public-Key Kryptographie

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Wann benötigen Sie eine neue Lizenz-Datei mit der Endung.pkg?

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Einzelplatz - USB-Lizenz

Beispiel 19. December 4, 2009

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Internet Explorer Version 6

6.2 Perfekte Sicherheit

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Transkript:

Ruhr-Universität Bochum Lehrstuhl für Kryptologie und IT-Sicherheit Prof. Dr. Alexander May Mathias Herrmann, Alexander Meurer Lösungsblatt zur Vorlesung Kryptanalyse WS 2009/2010 Blatt 6 / 23. Dezember 2009 / Abgabe bis spätestens 20. Januar 2010, 10 Uhr (vor der Übung) AUFGABE 1 (4 Punkte): Sei k = (p, α, β = α a ) ein öffentlicher ElGamal Schlüssel mit geheimem Schlüssel a. Sei e k (m) = (α r, mβ r ) ein ElGamal-Chiffretext. Weiterhin sei l = log p + log log p. Sei A ein Algorithmus, der für beliebiges b bei Eingabe α a+b, α r und mβ r die obersten l Bits von m (α r ) b berechnet. Zeigen Sie, dass es dann einen polynomiellen Algorithmus zur Berechnung von m gibt, d.h. dass ElGamal in polynomieller Zeit gebrochen werden kann. Hinweis: Konstruieren Sie eine Instanz des Hidden Number Problems. Lösungsvorschlag: Es sei e k (m) = (α r mod p, m β r mod p) mit r R Z p 1 die Verschlüsselung von m und sei (p, α, β = α a ) der öffentliche Schüssel. Wir wenden nun den Algorithmus A für i = 1,..., 2 log p mit Eingabe (βα i, α r, m β r ) an. Dieser liefert uns dann jeweils die l obersten Bits von mα ir. Ferner berechnen wir für obige i jeweils die Werte t i := (α r ) i = α ir mod p Aus den l obersten Bits von mα ir, welche uns A geliefert hat, können wir dann eine Approximation mt i von mt i berechnen 1 mit Güte mt i mod p mt i p 2 l 1 Das gilt ganz allgemein, wenn wir für ein x Z p die l obersten Bits von x kennen. Sei hierzu k = log x +1 die Bitlänge von x (d.h insbesondere gilt 2 k p) und sei x = x (l) 2 k l + r (d.h. x (l) sind die l obersten Bits von x und r der Rest). Wir können dann die Approximation x := x (l) 2 k l + 2 k l 1 bilden. Für diese gilt, dass x x = r 2 k l 1. Wir untersuchen also die beiden Extremfälle r = 0 bzw. r = 2 k l 1, welche maximale Abweichung von x ermöglichen. Für r = 0 erhalten wir x x 2 k l 1, für r = 2 k l 1 gilt x x = 2 k l 1 2 k l 1 = 2 k l 1 (2 1) 1 2 k l 1. Insgesamt haben wir also x x 2 k l 1 = 2k 1 2 l p 2 l

d.h. wir erhalten so eine Instanz des Hidden-Number-Problems mit d = 2 log p und l = log p + log log p, welche nach Fakt 75 aus der Vorlesung in polynomieller Zeit (heuristisch) gelöst werden kann und uns die Lösung m liefert. Anzumerken ist, dass alle nötigen Operationen (modulares Potenzieren, Invertieren) mit den Algorithmen aus der Vorlesung effizient durchführbar sind. AUFGABE 2 (6 Punkte): Sei M N mit unbekanntem Teiler b M 1 2 und f(x) = x + a. (a) Geben Sie die komplette Basismatrix B des Gitters L aus Satz 66 für die Parameterwahl m = 3 an. Bestimmen Sie dim(l) und det(l). Lösungsvorschlag: Für m = 3 und β = 1 2 berechnen wir folgende Kollektion von Polynomen f 0 (x) = M 3 f 1 (x) = M 2 f(x) = M 2 x + M 2 a f 2 (x) = Mf 2 (x) = Mx 2 + 2aM + Ma 2 f 3 (x) = f 3 (x) = x 3 + 3ax 2 + 3a 2 x + a 3 f 4 (x) = xf 3 (x) = x 4 + 3ax 3 + 3a 2 x 2 + a 3 x f 5 (x) = x 2 d 3 (x) = x 5 + 3ax 4 + 3a 2 x 3 + a 3 x 2 woraus wir leicht die Koeffizientenvektoren der Polynome f i (xx) bestimmen können, was zu folgender Basismatrix führt M 3 0... 0 M 2 a M 2 X 0... 0 B = Ma 2 2aMX MX 2 0 0 0 a 3 3a 2 X 3aX 2 X 3 0 0 0 a 3 X 3a 2 X 2 3aX 3 X 4 0 0 0 a 3 X 2 3a 2 X 3 3aX 4 X 5 B ist eine untere Dreiecksmatrix und wir erhalten sowie dim(l) = 6. det(l) = M 6 X 15 (b) Sei N = pq ein RSA Modul mit 512-Bit Primzahlen p, q, wobei p > q. Gegeben ist eine Approximation p von p mit p p N 0.225. Implementieren Sie einen Gitterangriff für dieses Szenario. Welchen Wert von m müssen Sie wählen, um den Modul faktorisieren zu können? Die Parameter N und p stehen auf der Webseite zum Download bereit.

Lösungsvorschlag: Das folgende sage Skript findet das korrekte p für die Parameterwahl m 6: from sage.libs.fplll.fplll import FP_LLL def fillbasis(b,g,row): coeffs=g.coeffs(); for pos in range(len(coeffs)): B[row,pos]=coeffs[pos]; return; def getpol(v,x): thepol=0; for i in range(len(v)): thepol = thepol + (v[i]/(x^i))*(x^i) return thepol; N=289284702823953245408697780864108836518475048797656161264983053848464669174718 03301255186315012884170094471946588020810537070264429899472619287547817072751027 43824613576022214301697370737119675473071965051178784807024335769065604280158146 56938250778423992053356769172404178025838971324951076247225099343793023 ptil=178534998342989234213656496540702147640622218510078159647469388128655062041 06551006895621956353222037418711259688355788999324788579270764296585545177366528 P,x=PolynomialRing(IntegerRing(),x).objgen() b=1/2 X=ceil(RDF(N^(0.225))) f=x+ptil dim=1/b*m B=matrix(dim,dim); thepositions=[]; #index ist position in der Basismatrix, denn wir fügen der Reihe anch hinzu counter=0; for i in range(m+1): pol=n^(m-i)*f^i; pol=pol.subs(x=x*x); thepositions=fillbasis(b,pol,counter); counter=counter+1; for i in range(m+1,1/b*m): pol=x^(i-m)*f^m; pol=pol.subs(x=x*x); thepositions=fillbasis(b,pol,counter); counter=counter+1;

F = FP_LLL(B) F.wrapper() red=f._sage_() root=getpol(red[0],x).roots()[0][0] testp=root+ptil if Integer(testp).divides(N): print "Found divisor p=", testp else: print "No divisor :-(" Die Ausgabe des Programms ist dann wie folgt: sage: m=4 sage: load "h6.sage" No divisor :-( sage: m=5 sage: load "h6.sage" No divisor :-( sage: m=6 sage: load "h6.sage" Found divisor p= 17853499834298923421365649654070214764062221851007815964746938812865506204106551 006896845094332296668294060981717582064439941024648813610860458430234931167

AUFGABE 3 (4 Punkte): Sei N = pq ein RSA-Modul mit p > q. Sei k N eine unbekannte Zahl, die kein Vielfaches von q ist. Weiterhin sei eine Approximation kp von kp gegeben mit kp kp N 1 4. Zeigen Sie, dass die Faktorisierung von N in Zeit polynomiell in log N berechnet werden kann. Lösungsvorschlag: Betrachte das Polynom f(x) = x + kp und x 0 = kp kp. Es gilt f(x 0 ) = kp 0 mod p, d.h. x 0 ist eine Nullstelle von f modulo p, welche nach Voraussetzung x 0 = kp kp N 1 4 erfüllt. Ferner gilt wegen p > q und N = pq, dass p > N 1 2. Wir wählen also β = 1 und 2 wenden Satz 67 an: Dieser besagt, dass wir in Zeit poly(log N) die Nullstelle x 0 berechnen können, sofern x 0 N β2 = N 1 4 gilt. Das ist wie oben erwähnt erfüllt. Hiermit können wir kp = kp + x 0 berechnen. Wir kennen k zwar nicht, aber wegen q k gilt ggt(n, x 0 + kp) = ggt(n, kp) = p und mit dem EEA können wir den ggt in O(log 2 N) berechnen, was die Anforderung Laufzeit polynomiell in log N nicht verletzt. AUFGABE 4 (6 Punkte): In dieser Aufgabe soll der Angriff von Nguyen auf das DSA Signaturverfahren implementiert werden. Dazu steht eine Liste von 30 Tupeln (N achricht, Signatur, teilweisebekanntezuf allswerte) auf der Webseite der Vorlesung zur Verfügung. Der Teil der Signatur besteht wiederum aus zwei Elementen γ, δ wie in der Vorlesung beschrieben. Die teilweise bekannten Zufallsbits sind gerade die niederwertigsten 11 Bits des für die jeweilige Signatur verwendeten r. (D.h. in der Notation des Skriptes : l = 11) Können Sie den geheimen Schlüssel a rekonstruieren?

Lösungsvorschlag: Angenommen die Parameter sind aus der Datei in eine Liste thelist eingelesen. Das folgende Codefragment erzeugt eine Basismatrix für das Hidden Number Problem wie im Skript beschrieben und führt die LLL Reduktion durch. Dabei wird die Technik der Einbettung eines CVP in ein SVP benutzt. Es wird einfach der Targetvektor als zusätzlicher Basisvektor eingeführt. Falls der Vektor v ein nächster Gittervektor zum Targetvektor ist, dann ist der Vektor v = t v in der neuen Basis ein kürzester Vektor. from sage.libs.fplll.fplll import FP_LLL l=12 ## bekannte untere Bits d=30 ## Anzahl Signaturen ##Berechne t_i liste_t_i = []; liste_at_i=[]; for i in thelist: liste_t_i.append(mod(i[1]*2^-l*i[2]^-1,q).lift()) liste_at_i.append(mod(2^-l*(i[3]-i[2]^-1*i[0]),q).lift()) ##Build Lattice B=matrix(ZZ,d+2,d+1); for i in range(d): B[i,i]=(2^l)*q; for i in range(d): B[d,i]=(2^l)*liste_t_i[i]; B[d,d]=1; for i in range(d): B[d+1,i]=(2^l)*liste_at_i[i]; B[d+1,d]=0 F = FP_LLL(B) F.wrapper() red=f._sage_() Die Lösung a = 126011428158121006071265978104940049671713011948 findet sich in einem der kurzen Vektoren der reduzierten Basis.