Lieber Zuschauer, dieser Untertitel wurde automatisch generiert von Trint und dementsprechend (sehr) fehlerhaft. Wenn du kannst, hilf uns bitte gute Untertitel zu erstellen: https://c3subtitles.de/talk/159 Danke!
Also willkommen zum nächsten Talk, zum
letzten Talk live aus dem Saal 2.
Es geht um einen weiteren Talk, um
Kryptographie, um was eigentlich
ein Bit ausmachen kann in der
Kryptographie.
Und ich bitte euch um einen Warm und
einen warmen Applaus für Jens Kubicki.
Ja, herzlich willkommen zu meinem
Vortrag. Vielen Dank, dass Sie so
zahlreich erschienen seid.
Bevor ich anfange, vielleicht eine kleine
Bitte Hat jemand von euch einen
Laserpointer einstecken, der, den
ich mir mal ausleihen kann? Ich habe ihn
leider liegen lassen.
Wer ihn hat. Es wäre schön, wenn er mir
denn mal vielleicht ausleihen könntet.
Ansonsten versuche ich durch verlängerten
Finger das dann an meinen Folien
zu machen.
Ähm ja.
Langer Titel. Ich glaube, ich habe
irgendwie jetzt den Rekord für den
längsten Titel des Kongresses oder
so zwischen super sicherer
Verschlüsselung und Klartext
liegt nur ein Witz und
wir werden im Verlauf des Vortrages
sehen, dass das in der Tat
richtig ist. Man kann, wenn man ein
Bit kennt, in der Tat ein bissl was
kaputt machen.
Ja, durch den
Kongress, also den letzten Tagen, zog
sich ja immer wieder diese Diskussion
Snowden etc.
Also seit Juni gibt es diverse
Diskussionen in der Presse,
in anderen Medien mehr Verschlüsselung
zu nutzen.
Super, danke!
Verschlüsselung zu nutzen
und in der Tat gibt es also Leute,
die verrückt genug sind
und nutzen Krypto, setzen PGP
ein.
Gucken, dass ihre Chats
verschlüsselt sind etc..
Und es gibt auch mehr und mehr
Leute, die anfangen selbst Crypto zu
implementieren.
Und das hat mir so ein bisschen Bedenken
gemacht und noch zu denken gegeben, weil
es gibt halt immer wieder Fehler, die
gemacht werden, wenn man Crypto
implementiert.
Und ich will im Laufe des
Vortrages mal ein paar
aus meiner Sicht allgemeine Fehler
aufzeigen, die passieren können
und die vielleicht gar nicht
so einfach als Fehler zu identifizieren
sind. Aber wenn sie denn passieren,
haben die sehr oft katastrophale Folgen
und ich versuche es mal mit einfachen
Sachen anzufangen und mich dann nach und
nach ein bisschen
zu steigern.
Was die Angriffe etc.
betrifft ja, wenn man
so an Kryptographie denkt,
sich mit Leuten über Kryptographie
unterhält, gibt es viele
Irrglauben oder auch korrekte Glauben.
Das erste, was man relativ häufig hört
von Leuten, die sich mit dem Thema
beschäftigt haben, heißt das ist viel
Mathematik und ist natürlich
richtig. Also wer von
euch gestern in dem Talk von
Bernstein und anderen gewesen
ist, der wird da in den Folien
relativ viele Formeln gesehen haben,
vielleicht auch Mathematik, die, die
kompliziert aussah.
Und das ist natürlich so Wenn man jetzt
so an elliptische Kurven denkt,
wird es schon relativ viel anspruchsvolle
Mathematik.
Und mich hat vor kurzem jemand auf
ein weiteres Verfahren gestoßen.
Das oder offene
Matrizen im Speziellen sind sogenannte
Hadamar. Matrizen sind an sich
ganz einfach. Das sind so quadratische
Matrizen, die nur aus 1 und minus 1
bestehen. Und wenn
man die halt geschickt einsetzt, kann man
daraus auch so Funktionen
bauen, die für die Kryptographie
also Spaß machen, mit dem man Sachen
machen kann. Und interessanterweise, wenn
man mal versucht, dort ein paar Papers
zu finden, die diese Matrizen
wirklich im Bereich der Kryptographie
einsetzen, findet
man da relativ wenig.
Und wenn man mal dann guckt, was gibt es
an Konferenzen, wo Leute
sich vielleicht über das Thema
unterhalten?
Dann stellt man fest, dass dieser kleine
Workshop so von 10 15 Leuten
Teilnehmer sind.
Besteht dann in der Regel so aus sieben
bis zehn Leuten, die bei denen
es arbeiten.
Noch ein paar Leute, die bei der University
of Maryland arbeiten, also sozusagen
direkt im Nachbargebäude.
Ich vermute auch wenn man sozusagen die
Veröffentlichungen liest, dass
da der eine oder andere innerhalb der
Behörde doch mehr Nutzen gefunden hat.
Also es gibt also auch noch viel
neben der öffentlich bekannten
Kryptographie, die vielleicht auch hier
interessant ist. Aber wie gesagt, oftmals
ist halt der Glaube und das vermutlich
auch richtig, je mehr man an
Kryptografie ran kommt.
Man braucht halt viel mathematisches
Vorwissen.
So ein grundsätzlicher Glaube, der auch
immer vorher schon herrscht. Bei
Kryptographie ist, wenn ich Krypto
verwende, wenn eine Verschlüsselung
einsetzt, dann bin ich sicher, das macht
mich sicherer. Meine Kommunikation kann
nix mehr passieren.
Und die Variante für Experten ist dann
Ja, ich nehme einfach einen Schlüssel und
dann bin ich noch viel sicherer als
vorher. Und
bei vielen Leuten gibt es dann zu diese
diese Verwirrung, dass sie
sagen Na gut, 1024 Bit Ersatzschlüssel
ist viel sicherer als ein 128 mit
ist Schlüssel zum Beispiel.
Also dieser Vergleich Äpfel mit Birnen
oder halt auch das hatte schon eine
Diskussion. Vor kurzem lebt das Sagen.
Ös 256 ist
viel sicherer als das 128,
was zumindest in der Theorie
auch nicht ganz richtig ist.
Ja, oder dann sozusagen
eine Sache, die man auch immer wieder
hört, ist so ähnlich wie vorher.
Ich Wenn ich den Algorithmus XY verwende,
dann kann mir nichts passieren, weil
den haben soundso viele Experten
angeguckt und der ist quasi
Nachbar.
Und ein bisschen was von diesem
Irrglauben will ich versuchen, heute
meinem Vortrag auch zu zerstören.
Dazu habe ich mir so ich sage mal sechs
Regeln, wie ich es genannt habe, also
sechs Handreichung mit
ausgedacht. Das erste ist
mag vielleicht einfach klingen, heißt
Erfinde nicht deinen eigenen
Kryptographie eine Routinen.
Das heißt, denkt euch nicht eigene
Verschlüsselung, Protokolle, eigene
andere Sachen aus.
Schneider hat das mal
relativ gut zusammengefasst, hat gesagt,
es ist für jeden in der Welt
in diesem Saal hier sehr, sehr einfach,
ein Algorithmus auszudenken,
den er selbst nicht brechen kann.
Aber es ist viel, viel schwerer,
einen zu finden, den auch niemand anderes
sprechen kann.
Und das ist eine Sache, die
man in der Vergangenheit immer wieder
gesehen hat. Also auch so weit vorne ist
eher so vor zehn.
15 Jahren im Usenet, als
es noch aktiv bespielt
wurde, gab es immer wieder Leute, die
diese Krypto Gruppen gekommen sind und
haben gesagt Ja, ich habe hier einen
tollen Algorithmus entwickelt
und der ist super sicher.
Guckt euch den mal an.
Wenn man Glück hatte haben sie gesagt
guckt euch den an und dann ist er
irgendwie auch sehr schnell auseinandergebrochen.
Die Regel war es eher so, dass sie gesagt
haben ich habe hier drei Zeilen
mit meinem super tollen Algorithmus
verschlüsselt. Versucht das mal zu
brechen, kriegt ihr nie raus.
Und so in dieser Art und Weise findet man
immer wieder Statements.
Und wenn man dann mal versucht, sich die
Algorithmen wirklich anzugucken, gehen
die eigentlich sehr schnell kaputt.
Das einzige, woran ich mich so über die
Jahre erinnere,
ist eine Webseite, die heißt Crypto
Funknetz.
Und dieser Mensch hat
es ist halt
jeder Analyse stand.
Also die Webseite ist.
Also ich habe mal guckt, die gibt es auch
heute noch. Interessanterweise sieht
aus wie so von vor 20
Jahren, ungefähr so Einzelpunkten
Kommentar bietet natürlich eine super
Verschlüsselung an. Also es ist ganz
toll.
Ja, was macht man stattdessen,
wenn man wirklich da hingehen will?
Eigene Algorithmen zu entwickeln ist
meiner.
Meiner Meinung nach sollte man hingehen
sich zunächst mit Krypto Analyse zu
beschäftigen, das heißt mit der
Wissenschaft kurz zu brechen.
Und was was ich persönlich als
als Quelle für ganz ganz sinnvoll,
ganz nützlich halte, ist so eine Serie
von Büchern, die heißt Military Crypto
Analysis.
Das ist
ein Kurs, der bei der NSA gehalten wurde,
vielleicht auch noch gehalten wird,
ist entwickelt worden von Freedman,
also auch einer der großen Kryptographie.
Später im Haus ein bisschen
weiterentwickelt ist
glaube ich so.
Also die Version, die öffentlich ist,
müsste es aus den 70er-Jahren sein, wenn
ich mich nicht täusche.
Und die haben in vier
Bänden sozusagen.
Gehen Sie durch verschiedene
krypto analytische Verfahren durch
Versuche mit Übungsaufgaben.
Die Leute, die das mitmachen, halt
so bisschen zu begleiten, uns zu
erklären, wie kann man kurz sprechen
und das ist halt wie gesagt, war
ein Kurs, der entwickelt wurde für die
interne NSA Analysten
und ist jetzt halt irgendwann mal durch
so eine Klage in den USA frei geklagt
worden.
Und es ist ganz interessant zu lesen.
Wenn man sich dann halt ein bisschen das
Wissen angeeignet hat, sollte man als
nächster halt versuchen, real
existierende Codes zu brechen.
Das heißt, es gibt ja halt sehr viele
Codes die existieren
und man versucht einfach dann mit
dem existierenden Wissen die Codes zu
brechen und auch durchaus so
Algorithmen, die sozusagen als sicher
gelten. Das nimmt man halt nicht
in die volle runden Zahl, sondern
reduziert die guckt zuerst mal nur ein
Runde. Es anguckt wo sind die
Schwachstellen, was kann ich machen und
gehe dann zu Schritt für Schritt weiter.
Und dann lernt man halt
aus meiner Sicht relativ viel.
Und wenn man das gemacht hat und wirklich
mal was neues erfunden hat, dann ist es
wirklich essenziell wichtig, diese
Erfindung sozusagen Tribun
zu lassen. Das heißt, für die Leute, die
ein erfolgreiches Höchstmaß an gebunden
sind, kann es schon ausreichen, mit
diesem Algorithmus einfach
mal in den Kreis reinzugehen,
mit den Leuten da zu reden,
zu gucken, ob die das sprechen können und
dann so nach und nach auch mit anderen
Leuten zu reden. Und was immer wieder
wichtig ist, das ist auch seine Lehre,
die auch schon 200 Jahre alt ist.
Die, wo man annimmt, das sollte jeder
kennen, ist halt die sogenannten Kerkhoff
Regeln.
Das heißt, das Design dieses
Systems muss offenlegen, das muss man
irgendwo lesen, nachlesen können,
nachvollziehen können.
Und auch das machen sehr
viele falsch. Also das passiert immer
wieder, dass
Automobilhersteller
andere Firmen der Meinung sind, die Codes
müssen geheim bleiben. Dann sind
irgendwelche Leute da, die analysieren
den Code und kriegen auf die Art und
Weise den Algorithmus.
Trotzdem Reverse engineering deswegen.
Das sind also wenn man sozusagen hier in
dem Bereich unterwegs ist, sollte
man das befolgen.
Ein zweiter Hinweis, der
vielleicht schon für den einen oder
anderen ganz so klar ist, heißt
implementiert implementieren, nicht
Krypto Algorithmen neu.
Das ist auch
eine Sache, wo man es vielleicht zunächst
erst mal staunt, wo ich auch in der
Vergangenheit mit vielen schon sehr lange
drüber diskutiert habe, weil sie sagen
Okay ist, die Spezifikation
liegt offen. Das kann ich unterschreiben.
Ich kann den Algorithmus unterschreiben.
Das ist alles völlig trivial.
Es kein Problem.
Schauen wir ein Beispiel zum Aufwärmen
habe ich mir mal rausgenommen.
Es ist fast 40 Jahre alt.
Es ist also wirklich ein abgehangene
Algorithmus.
Ist doch eigentlich einfach zu
implementieren. Die Beschreibung kann ich
in der Wikipedia nachlesen.
Es gibt tausend und zwei Webseiten, wo
ich das nachlesen kann. Dürfte doch kein
Problem sein.
Vielleicht für die Leute, die das nicht
kennen.
Noch mal ganz kurz Wie funktioniert er?
Man sucht sich zunächst erst mal zwei
Primzahlen aus,
multipliziert die Primzahlen und
berechnet dann noch so eine Zahl Phi von
ein. Und das. Ist einfach die
beide Primzahl mit eins
subtrahiert und multipliziert, also
1 mal minus eins und
man ist. Die Schwierigkeit ist natürlich,
eine gute Primzahl zu finden.
Das kann natürlich 13
und 17 nehmen, aber dann
kann man auch nicht viel weiter.
Was man dann im nächsten Schritt machen
kann. Man wählt sich ein E,
also eine Zahl, die kann man hier auch
frei bestimmen. Die liegt
zwischen eins und diesem
viel von etwas vor berechnet worden ist.
Und es muss Teilaufgaben sein.
Das heißt, der größte
gemeinsame Teiler zwischen dem E und dem
iPhone muss eins sein.
Anders kann man auch wieder nachlesen.
Da gibt es also quasi fertige
Algorithmen, so eine Sachen zu bestimmen
oder oder zu gucken, ob sie wirklich
Teile fremd sind, ist also auch völlig
trivial.
Und dann im letzten Schritt
berechnet man so eine Multiplikation aus
E und dass das Ergebnis
dann äquivalent n modulo iPhone
ist. Und dahinter steckt der euklidische
Algorithmus, den man da berechnen muss.
Und das ist auch so was kann man auch in
Wikipedia an anderen Seiten nachlesen.
Also das den ganzen
Tag im Code zu gießen ist
zunächst erstmal ganz einfach.
Und dann das Ergebnis, also die
Zahlen, der ganz
am Anfang mal berechnet worden ist.
Und es sind dann der öffentliche
Schlüssel und die sind ja private
Schlüssel. Und wenn man das dann noch
bisschen schön machen will, muss man das
halt ein gewisses Format am Ende bringen.
Also man wird natürlich nie in
der Software diese Zahlen als Zahl
finden, sondern die sind halt speziell
kodiert. Aber das geht,
muss man vielleicht bissel nachdenken.
Aber ich habe mir jetzt hier noch mal
drei kleine
einfache Beispiele ausgesucht, wo es
schon schiefgehen kann. Also gerade ich
hatte klar gesagt, die Primzahlen müssen
halt entsprechend groß sein und man muss
doch recht lange suchen,
je nachdem, wie man sucht, um so
einen Job zu finden.
Jetzt könnte man auf die Idee kommen und
sagen Ja, es gibt so Primzahl Zwillinge.
Es gibt eine Zahl, die ist eine Primzahl.
Und wenn ich da drauf zwei addiere, habe
ich wieder eine Primzahl.
Und das heißt, ich muss noch für die
zweite gar nicht lange suchen, sondern
probier. Und wenn ich die gefunden habe,
habe ich gleich zwei Primzahlen.
Für die erste zwar bisschen Zeit
investiert, aber die zweite habe ich
wahnsinnig schnell gefunden und nimmt
dann sozusagen diese erste Zahl als
die erste Primzahl und das Peoples zwei
dann als das, was für uns gesehen haben.
Und was mein Algorithmus durchlaufen.
Perfekt.
Und wie ihr vielleicht gehört habt, ist
das Hauptproblem.
Diese Unsicherheit liegt in der
Charakterisierung. Das heißt, das I, was
da ganz rechts an der ersten Zeile steht,
kann man halt nicht wieder
zurückrechnen in P und Q.
Wenn man aber jetzt sozusagen das macht,
wie sie auf der Folie steht, dass nämlich
diese Primzahl Zwillinge nehme, dann
könnte ein geschickter Angreifer auf die
Idee kommen und einfach die Wurzel
aus N bilden und die Wurzel
aus n. Das ist ja dann wieder so was wie
p. P.
Und dann hat das jetzt sagen fast ein
paar Rechner. Das heißt, so muss man ein
bisschen gucken und kommt sehr schnell
zu dem P vielleicht zurück und kann
sozusagen sehr doch interessanterweise
schnell das einfach autorisieren.
Und es ist also eine
relativ grundlegende Erkenntnis, dass die
zwei Primzahlen sehr großen Abstand haben
sollen, wobei aber die ungefähr
dieselbe Anzahl an Stellen haben sollen.
Das muss man also hier wissen und
beachten.
Gerade wenn man jetzt an Rechner denkt,
wenn man reines Ersah zum Beispiel Macht
und damit irgendwas verschlüsselt oder
entschlüsselt, kann das unter Umständen
sehr lange dauern.
Jetzt wäre die Idee, man nimmt ein
kleines E 3 liegt da
nahe.
Lacht er, es ist also, ich glaube, es war
eine ganze Zeit so, dass es standardmäßig
drei als Spottlust genommen hat.
Und es ist auch gar nicht falsch, weil
es ist wirklich so und so ist es.
Es ist schnell
und es ist erst dann ein Problem,
wenn viele Leute gleich, also auch
das E als drei auswählen.
Wenn man jetzt eine Mail an verschiedene
Leute verschlüsselt, die als bodenlos
teilgenommen haben, dann kann es wieder
passieren, dass ein
Angreifer ganz einfach die.
Also wenn man jetzt mal drei Leute
aussucht, Sache in Reihe
A, B und C schicke ist eine
verschlüsselte Mail und alle an alle drei
Reihen haben quasi drei als mutlos
genommen. Dann könnte ich die
Nachricht nehmen und die verschlüsselte
Nachricht und daraus die Kubik Wurzel
ziehen, also sozusagen die dritte Wurzel
und habe eine Nachricht wieder
zurückerhalten.
Also unschön, so ein Angriff.
Den hat Koppers schon vor sehr vielen
Jahren gefunden.
Und die Lösung ist einfach, denn jede
Nachricht so ein bisschen ins World
einzugeben, also wenn Zufall es wert und
dann geht der Angriff
sozusagen in die Hose und
man kann in der Tat auch
drei als mutlos nehmen.
Es wird auch gerne gemacht mittlerweile.
Bei Open SSL ist es meiner Meinung nach
so, dass die auf 2
hoch 16 +1, also fünf und sechzig tausend
fünf hundert dreißig gegangen sind.
Was auch? Wenn ihr euch überlegt, wie die
Zahl binär aussieht, lässt die sich
relativ gut mit der rechnen
im Computer und es fallen
ein paar schwere Schwächen
weg. Ähnliches Problem hat man bei
kleinem D Also wenn man sozusagen
konventionell die Zahlen, diese
Primzahlen P und Q auswählt.
Hat dieses t was danach rechnet, wird es
eventuell relativ schlechte
Eigenschaften, auf die ich jetzt auch
nicht mehr eingehen will.
Und auch da kann man sich, dass diese
Zahlen alle wieder ausrechnen
und den einen privaten Schlüssel
in der Hand und
ist dann zu sagen hat Pech.
Und das sind noch diese Beispiele
hier sind vergleichsweise alt.
Die findet man in Büchern, die zum Teil
so 30, also 25 bis 30 Jahre
alt sind. Das ist also noch sozusagen
Gesetz, das Wissen. Aber es gibt
natürlich auch immer wieder neue
Angriffe, muss gerade bei der Auswahl
von P und Q noch viel mehr beachten, als
dass es jetzt hier auf die Folien
geschrieben habe. Also das
alleine ist eine Wissenschaft
für sich.
Jetzt könnte es aber sein, dass er
sozusagen alle Peoples gelesen habt,
alles beachtet habt.
Er sucht quasi die perfekten Primzahlen
aus, die perfektesten, die euch schon
ausdenken könnt
und schreibt euren Algorithmus.
Alles ist perfekt und auf einmal kommt
da jemand.
Und hört euch zu beim Rechnen.
Das ist, wer gestern bei dem Talk von
Bernstein war, hat es vielleicht schon
mal gesehen, dass es auch relativ groß
durch die Presse gegangen ist.
Shamir und andere haben
einfach mal im Rechner, also
in dem Falle der klug knuffige
Ersatzschlüssel mit dem gearbeitet
hat, dem quasi zugehört.
Wir haben also zunächst mit dem Mikrofon
gearbeitet, haben so vier Meter ungefähr
neben den Rechner gestellt und haben
versucht zu lauschen.
Was macht die CPU für Geräusche?
Später haben sie das dann einfach so
gemacht, dass ein Telefon und Smartphone
neben den Rechner gelegt. Kann man diese
Geräusche auch aufgezeichnet haben?
An das, was ich hier
mir aus dem Paper raus kopiert habe, ist
einfach sozusagen die das Frequenz
Muster. Und ganz rechts
seht ihr die CPU Instruktionen
die gemacht werden und
man sieht also schon, dass es bei
verschiedenen Instruktionen hier
verschiedene Muster gibt und die könnten
halt auf die Art und Weise in vier
tausend sechs und neunzig mit Schlüssel
einfach mal wieder zurückrechnen.
Und das ist nur eine
Möglichkeit von so
genannten Seiten Kanal Angriffen.
Also das ist also
Trummer beschäftigt sich seit zehn Jahren
ungefähr mit diesem Thema Akustik Crypto
Analysis. Das heißt, er hört Rechnern
beim Zufrieren und
anderen Sachen zu und versucht daraus was
zu rechnen.
Andere Leute gehen auf
den Stromverbrauch von Smart
Cards, von Rechnern und versuchen
zu gucken Wann gibt es mal so einen Peak
im Stromverbrauch? Wann gibt es keinen
Peak und gucken dann
Was macht der Rechner?
Oder eine relativ bekannte
Sache Sinn, Timing Attacken.
Das ist also das findet man auch sehr,
sehr, sehr, sehr häufig.
Und das ist jetzt auch wieder so ein ganz
einfaches, triviales Beispiel.
Es ist ein bisschen Java Code
und Equals und dann werden
hier zwei Werte bei beide verglichen.
Und dass dieser
dieser Code ist aus einer Bibliothek,
also Crypto Bibliothek, die heißt Kaiser.
Es ist 2009
oder 2010 von dem Forscher gefunden
worden.
Was macht der Code damit, dass wir zwei
Werte entgegen und vergleicht, die im
Beispiel war, was ich gerade sagte.
Und wenn das erste Paar jetzt
schon verschieden ist, kommt er zurück
und sagt hier Stimmen überein und
ist zu Ende. Ist ja, es sind ja gleich.
Geht halt im nächsten zum nächsten weiter
und zum nächsten weiter,
bis das entweder wirklich gleich ist,
dann ist alles gut oder irgendwann später
kommt er dann zurück.
Und dieser diese Unterschiede
in der Berechnung kann man halt auch
messen und daraus Schlüsse ziehen.
Das heißt, wenn schon die erste Stelle
bei diesem Vergleichswert falsch ist,
kommt der Code sehr schnell zurück.
Dauert ein bisschen länger, dauert bei
dem Code halt auch länger und
am längsten dauert es hier in dem
Beispiel halt, wenn die beiden
Werte wirklich gleich sind.
Und mit Wissen Geschick kann
man dann halt auf die Art und Weise
Passwort heraus.
Es gibt schon analysiert haben Leute
Geheimnisses Schlüssel übers Netzwerk
versucht zu ermitteln und das auch
geschafft. Also das sind
die heimlichen Attacken sind sehr sehr
unschön.
Und selbst wenn man sich jetzt überlegt,
wie kann man das ordentlich machen?
Wie kann man sozusagen Funktionen
schreiben, die das vielleicht anders
machen?
Muss man da immer noch aufpassen, weil
manche Compiler versuchen sehr
intelligent zu sein und optimieren
immer noch was weg?
Also hier bei solchen Sachen
muss man wirklich sehr, sehr aufpassen.
Ja und gerade das Beispiel habe ich vor
kurzem mit Bekannten besprochen,
wo wir so über Timing Attacken gesprochen
haben, die auch für das Thema
auch neu war. Und die meisten übers
Netzwerk geht sowas doch gar nicht.
Da ist es das.
Das kann nicht funktionieren.
Und da haben halt Leute sich
Gedanken gemacht, haben das mal versucht
nachzumachen und
haben gemessen, wenn man sozusagen im
Internet unterwegs ist.
Über weite Area Networks
kann man Zeitunterschied in der
Berechnung von 30 Mikrosekunden
messen und unterscheiden.
Im Land selbst sind sie bis auf 200
Nanosekunden runtergekommen
und das ist schon
relativ krass.
Das heißt, was sozusagen die
Konsequenz ist da ich brauche eine
Funktion, die unabhängig von der Eingabe
immer gleich lang laufen.
Also es gibt immer ein paar Leute, die
kommen dann auf die Idee und sagen Na ja,
wir machen das aus den randomisiert.
Das ist halt bisschen unklar, ist aber
auch Die Randomisierten bringt halt nicht
wirklich Sicherheit, sondern man muss
halt wirklich sicherstellen, gerade bei
krypto grafischen Code, dass die ja
unabhängig von der Eingabe immer gleich
lang läuft und dann eben keine
systematischen Unterschiede da sind, die
sich irgendwie errechnen lassen.
Und es gibt ja auch so ein schönes Paper
von Es ist auch schon ein paar Jahre alt
von der University of Cambridge.
Die haben Hathor
Hidden Services in dem Falle sich
genommen und haben festgestellt,
wenn man die unter Last setzt, die
Rechner, dann werden die warm
und dann verändert sich auch die Zeit und
die Quadratur, die andere Takte
aus und das konnten die messen.
Und das war so krass, dass
sie sogar laut dem Paper
messen konnten, wenn im Server haben
jemand die Tür aufgemacht hat und da der
Raum wärmer geworden ist und das ist halt
so.
Was man da machen kann, ist wirklich sehr
sehr erschreckend. Das es heißt irgendwie
hot or not detektiven
hidden services bei Skype oder so.
Wenn ich mich richtig erinnere, aber
einen Namen hat, dann wird man es
bestimmt finden.
Gut, jetzt sag mal okay habe.
Vielleicht habe ich euch überzeugt
schreibt euren Code nicht selber.
Gibt es eine Bibliothek?
Kann ich dir nehmen.
Versucht da mein Code rein zu schreiben.
Ich habe jetzt mal hier ganz schematisch
mal aufgeschrieben, wie bei
der SSL es funktioniert,
dass man dann
eine Verbindung aufmacht.
Man macht also das für eine Funktion ist
es Connect auch für den Handshake?
Dabei ist es wichtig zu wissen, ob man
es ja vergleichsweise generisch
macht. Keinerlei Überprüfung über die
Korrektheit des Huston,
weil natürlich, man kann mit
Knüppeln an HTTP, an diverse andere
Sachen. Und da gibt es halt ein bisschen
unterschiedliche Regeln, was
Husten, Husten betrifft.
Das heißt schon, diese Verifikation
des Namens muss man selbst
machen.
Und jetzt wird es eigentlich hakelig,
denn wenn jetzt das Zertifikat nicht
validiert mit Zertifikat zurück ist,
validiert nicht, dann
kann es sein, dass Open SSL über
den Rückgabewert sagt Da ist was schief
gegangen. Wenn der Rückgabewert kleiner
als 0 ist, ruft man dann Hier ist
Error auf und kriegt dann halt ein paar
Informationen zurück.
Es kann aber auch sein, dass es
anders zurückkommt und ein Fleck gesetzt
wird, das heißt verifiziert.
Und in dem Falle muss man dann halt
diese Funktion aufrufen,
um zu gucken, was denn hier
schiefgegangen ist. Also das klingt
schon so ein bisschen hakelig und es gibt
in der Tat einige Programme,
die das auch falsch machen.
Ein markantes Beispiel
ist Trillionen Trillionen, also ein
Messenger.
Ein Trillion hat auf jeden Fall bis
Version 5.3, eventuell noch später
eben nicht dieses es ist
result aufgerufen und hat damit
letztendlich beliebige SSL Zertifikat
akzeptiert.
Und das freut natürlich den Angreifer.
Man kann halt mit den Mitteln Attacke
machen, kann da diverse Zertifikate
der Software präsentieren und
hat dann seinen Spaß.
Und gerüchteweise ich weiß nicht, ob das
im Saal vielleicht jemand bestätigen
kann. Gibt es ein oder zwei Unis in
Deutschland, die die Trillion so
für ihre studentischen Übungen benutzen,
um in the middle Attacken zu
probieren? Vielleicht sollte man Trillion
eher als studentische Lernsoftware
um labeln und
das nach draußen gehen.
Also da gibt es allerdings natürlich noch
verschiedene andere Sachen.
Der zweite Punkt hier ist es auch eine
Sache, die viele nicht beachten, also
mit PHP programmiert und Open nimmt
hat man das Problem genauso wie bei
diesem URL Bibliotheken in Preußen.
Die prüfen auch keine Zertifikate
und es gab in der Vergangenheit
von Paypal schon ein paar
Bibliotheken, die genau genommen haben
Verbindungen aufgemacht haben, ohne das
Zertifikat wirklich zu prüfen.
Also das solltet ihr, wenn ihr so Code
schreiben wollt, wirklich im Hinterkopf
behalten.
Und ansonsten wenn es um Krypto
Bibliotheken gibt, gibt es so
relativ gute High Level Bibliotheken wie
Cisco.
Da gibt es von Goodman diese Krypto Lib
dann Bernstein hat mit
Stab, also mit dem Trainerteam Lange
und Henninger die als Bibliothek
geschrieben. Und die sind auch wesentlich
angenehmer und besser zu benutzen als in
der Bibliothek wie oben.
Es ist grundsätzlich.
Die, die Der Grund des Hinweises
Crypto Code sollte man nie
selbst schreiben.
Und wenn doch, den reviewen lassen.
Und grundsätzlich sind die Annahmen so,
dass man sagt die Entwicklungskosten
von Code ungefähr mal
10 mal 8 bis 10
ist das, was an Open Code
Crypto Code Review kostet.
Also schon das sollte man
im Hinterkopf behalten. Es ist also
wirklich auch keine preiswerte
Angelegenheit. Und gerade auch bei dieser
Kaiser Bibliothek, das hat ein relativ
bekannter Kryptographie auch geschrieben,
dass Steve weiß und es ist an
sich sehr perfekt und nur das eine Timing
Attacke ist dem damals
durch die Lappen gegangen.
Also die dritte Regel, die
ich eigentlich denken würde, die man auch
kennt, kennen sollte,
aber die dennoch gerne falsch gemacht
wird, ist der Betriebs Modus bei Blogs,
Foren, Blogs sind also so was
wie es ist.
Die nehmen den die Eingabe,
teilen die in gleich große Stücke auf
und arbeiten dann halt immer auf einem
Blog und machen mit dem machen was.
Also verschlüsseln den oder
umgekehrt entschlüsseln sie den
IS. Ist es hier so, dass es 128,
192 und 256
Blockgröße gibt?
Und wenn man jetzt nicht großartig
drüber nachdenkt, könnte man auf die Idee
kommen, man nimmt den Block der Eingabe,
verschlüsselt den und das wird sozusagen
der geheime Text.
Man nimmt den zweiten Block
verschlüsselt, den wird der nächste,
zweite geheime Text. Und das zusammen ist
dann der gesamte geheime Text, den ich
halt habe.
Das ist die naive, triviale
Annahme. Und wenn man dann einen geheimen
Text mal wirklich verschlüsselt, wie
jetzt gleich zu sehen ist, wird er sehen.
Ihr könnt quasi nicht mehr erkennen, was
ursprünglich mal in dem Text stand.
Ist also total sicher, oder?
Also das ist jetzt in dem Fall wirklich
verschlüsselt mit Mitsummen
etc. Wehmut also das heißt immer
sozusagen eins zu eins verschlüsselt.
Und man sieht eben immer noch, wie er
hier ganz klar erkennen könnt, was
hier gestanden hat auf diesem Bild.
Und es gibt auch wenn ihr in der
Wikipedia bei EZB Modus guckt,
da gibt es dieses berühmte Bild vom
Pinguin oder irgendwie
so. So ein Pinguin als normales
Bild, da steht dann halt mit etcpp Modus
verschlüsselt und dann sieht man immer noch
die Struktur des Pinguin.
Und es gibt dieses berühmte Buch
von Bruce Schneier Applied Kryptographie.
Das ist ich glaube aus 96
und schon dort steht explizit drinnen
nutzt keinen LCB Modus.
Das ist unsicher und
vor nicht allzu langer Zeit
gab es beim Kongress einen großen Vortrag
zum Staatstrojaner.
Und wer den verfolgt hat, wird wissen
die Profis
nutzen halt natürlich CB Modus
mit allen Konsequenzen.
Gut, dann
das zweite was man mal schnell
mit kennenlernt ist dann dieses
Cyber Blockchain Ding hier.
Das sieht also wieder erst mal ein
bisschen kompliziert aus.
Ist es aber nicht wirklich.
Also man hat am Anfang hier
den Klartext und
hier einen sogenannten Initialisierung
Vector.
Das heißt, es ist, dass es irgendeinen
Zufalls wert, den man sich ermitteln
muss, dass die beide Werte werden hier
per XOR miteinander verknüpft und das
Ergebnis fließt am Ende in diese
verschlüsselten Funktionen ein, also zum
Beispiel in IS oder andere Chiffre
und wird dann der Seiffert Text
und beim nächsten Block wird wieder der
nächste Klartext Block genommen.
Man nimmt hier unten den Seiffert Text,
der herausgekommen ist und verknüpft das
hier wieder mit XOR und gibt
das Ergebnis wieder in dieser Funktion
rein und macht es so und hat dann so eine
Art Kette von
verschlüsselten Blöcken, die jetzt
hintereinander geschalten
sind. Wichtig ist halt am Anfang nur die
Initialisierung Vector.
Das muss halt ein Zufall sein.
Es muss auch ordentlicher Zufall sein,
ansonsten hat man eventuell ein Problem.
Ja und OpenBC als Beispiel
hat unter anderem ein schön IPv6
Geek bei mir drin.
Und
vor zwei Jahren war das
kann mir jemand erklären, meinte ja, das
FBI hat ihn mal bezahlt oder
jemand anderes bezahlt eine Backdoor in
OpenBC einzubauen und da gab
es halt auch großen Aufschrei und
es gab dann halt einen relativ
tiefgehenden Review des Open BSD
Codes. Und was man da gefunden hat,
war eine Sache, die
zunächst erstmal ganz harmlos
aussah.
Open BSD hat nämlich
sozusagen, wenn man hier an die folgende
also eine letzte Folie denken, die die
haben sich hier das
den letzten Seiffert Text, also das hier
gemerkt.
Und wenn ja, wenn dann eine neue,
irgendwas neues verschlüsselt werden
sollte, haben Sie das dann wieder als
neuen Initialisierung Inspektor genommen?
Und haben dann die nächste Funktion damit
gefüttert und es ist an sich auch vom
Gedanken ja ganz korrekt, weil
man hat dann eben auch genauso eine
Kette.
Das Problem ist nur, wenn man jetzt einen
aktiven Angreifer denkt, jemand, der
wirklich Bösartiges vorhat,
der kann jetzt versuchen einen
Klartext so zu modifizieren,
dass er der Annahme ist
halt er hat vorher diesen
das Ergebnis der letzten Verschlüsselung
gesehen, kennt sozusagen den
Initialisierung Sektor und
kann halt so einen gewissen Klartext
sich ermitteln und
hat dann ein sogenanntes Oracle.
Er kann ungefähr erraten, was vielleicht
der Klartext gewesen ist bzw.
kann zumindestens den CBC Modus auf so
eine Art Exploit ist das so vorhin
gesehen haben.
Reduzieren ist natürlich ein
relativ exotischer Angriff.
Auch bei dem Kesselring muss man ganz
schön aufpassen, dass es auch richtig zu
machen. Ich werde dann, wenn ich die Folien
online stelle, auch das noch mal bissl
verlinken, dass er das nachvollziehen
kann. Ich habe das jetzt hier aus meinen
Folien auch extra rausgenommen.
Es ist jetzt schon seit längerer Zeit ein
OpenBC korrigiert worden.
Werden wir später noch ein anderes
Beispiel sehen, wo das noch ein bisschen
krasser wird?
Zweites Beispiel was auch lange Zeit
theoretisch bekannt ist und was so
ungefähr vor einer Woche jemand mal
wirklich praktiziert hat, ist
hat mit Festplatten verschlüsselt
gearbeitet.
Unter Linux gibt es das Lux,
was normalerweise Festplatten
Verschlüsselung macht und so ungefähr bis
Januar 2013 haben
die als STANDARD Modus für die
Festplatten Verschlüsselung auch diesen
CBC Modus verwendet.
Das Problem hier ist jetzt,
dass ein Angreifer, der kennt,
wenn man es an Linux denken geheime
Text.
Wenn er diese Festplatte zumindest in
Hand hat und auch Teile des Klartext,
also in dem Beispiel war, so dass
derjenige hat einfach nur Ubuntu CD
genommen hat, die installiert.
Man hat halt festgestellt, dass zum
Beispiel, dass die sexuell
immer auf der Festplatte eine gewisse
gleichbleibende Position geschrieben
wird, wie auch andere Dateien und
auch in dem Falle wieder
durch geschicktes Manipulieren und
Fixieren von
diversen Dateien
ist es ihm möglich gewesen, beliebigen
Code sozusagen auf das System
einzuspielen.
Das kann ein Trojaner oder irgendwas
anderes sein, ohne dass man das Passwort
kennen muss und ohne dass man
essenziell die Festplatten verschlüsselt.
Das liegt nur an den Schwächen, in dem
Falle an diesem CBC Modus.
Das heißt, jemand hat eine
verschlüsselte Partition auf seinem
Rechner. Es kann nicht passieren, niemand
kann seine Dateien lesen, kann auch
niemand lesen. Das ist richtig.
Aber ein geschickter Angreifer kann
diese Dateien manipulieren.
Unbemerkt.
Und das ist auch etwas, was man
vielleicht nicht unbedingt haben will.
In dem Artikel hier wird das alles sehr
genau beschrieben und da gibt es auch den
Exploit zum Runterladen oder zum
Angucken. Es ist schon ganz nett.
Grundsätzlich sollte man sich also immer
überlegen, welcher Betriebs Modus
sinnvoll ist. Es gibt also wirklich eine
ganz, ganz große Menge von diversen
Betriebsmittel, die verschiedene
Eigenschaften positiv wie negativ haben.
Und bevor man sowas einsetzt, muss
man sich das genau überlegen.
Wichtig ist immer wenn man CBC einsetzt,
muss es ein zufälliger Finanzialisierung
zwecklos sein.
Und wie man gesehen haben, alte
Werte zu recyceln ist keine gute
Idee. Auch CBC muss für Festplatten
Verschlüsselung zu verwenden ist
ebenfalls keine gute Idee, wie wir
gesehen haben. Es gibt aus meiner
Sicht momentan nur einen, der wirklich
nahezu uneingeschränkt zu empfehlen ist
ein Modus. Da ist es Modus
ist also relativ lang.
Es wird also X, also
jetzt wirklich ein langes Wort
für ein kryptisches oder mit Soyfer
Textur, Mode und
Seife, Textilien usw.
Also das das sind relativ
fortgeschrittene Konzepte in
diesem Modus mit enthalten.
Es gibt noch einige andere Modi.
Das Problem ist, dass die entweder
patentiert sind, was man nicht unbedingt
haben will, oder sie haben halt andere
Schwächen.
Will man also auch die unbedingt
einsetzen?
Und das, was wir jetzt gerade gesehen
haben, hier bei diesem CPC,
das ist es halt
doch ein großes Problem, wenn man einen
aktiven Angreifer vor sich hat.
Das heißt, der Angreifer kennt
irgendwie eine gewisse Menge von
verschlüsselten Texten, von geheimen
Texten, kennt auch Klartext dazu und
es ist ihm möglich, dadurch mit diesem
Wissen einen neuen geheimen Text
zu schaffen. Und das ist eine Sache,
die man nicht haben
will. Man spricht hier von Seiffert
Text, Integrität, die
erreicht werden soll.
Und diese sei Text Integrität
ist dann enthalten in einer Lösung, die
sich Authentizität nennt.
Es ist auch vom Prinzip her bekannt seit
ungefähr 2000 und
aus meiner Beobachtung heraus geht
es erst zu den letzten Jahren wirklich
los, dass diese auch wirklich
in größerem Rahmen eingesetzt wird.
Und TLS
hat es also auch probiert, dieses ganze
Thema aus den Kryptischen einzusetzen.
In einem Protokoll machen Sie folgendes
Sie haben also die Nachricht, berechnen
daraus eine ich sage jetzt mal eine
bestimmte Prüfsumme, eine ich mag
Fügen in Padding dazu
und verschlüsseln dann das Ganze
verschlüsselt die Nachricht, der Weg und
auch das Petting.
Wenn das die Nachricht ankommt, wird das
Ganze wieder entschlüsselt.
Petting wird geprüft.
Die Magd wird geprüft und eventuell
dann akzeptiert.
Und bis es eins eins
gab es zwei Fehlermeldungen bei der
Entschlüsselung. Und zwar hat haben
die hat das Protokoll quasi geguckt.
Ist das Petting korrekt oder ist es nicht
korrekt, wenn es falsch war?
Kam eine Meldung zurück,
die Grapschen fehlt.
Und wenn die mal falsch war,
kam die Meldung Bad Rekordmarke
zurück.
Dank neuer Nutzer freundliches Verhalten
ich weiß, was passiert ist, ist ja an
sich nicht schlimm.
Das Problem, was sich hieraus ergibt, mit
diesem kleinen Unterschied und das ist
jetzt eben das, was ich in
meinem Titel mit
reingetan habe. Also dieses Wissen
Petting falsch oder richtig?
Kann man hier wieder die Nachricht diesen
geheimen Text zu manipulieren,
dass man nur aufgrund der Fehlermeldung
description fehlt, entscheiden
kann durch einige
Versuche.
Was ist denn nun wirklich in dem
Klartext, in dem ursprünglichen Klartext
drin?
Und einige Versuche wenn man es an
Kryptographie denkt, dann denkt man an
Anzahl des Universums oder Milliarden
Billionen um.
Hier ist es so 16 Bit, also diese
Blockgröße rauszukriegen 328 Bit.
In dem Falle braucht man im Durchschnitt
2048 Versuche, dann hat
man den kompletten Klartext
zurückgerechnet.
Und das ist wie gesagt alles eins eins
ist hier gemacht worden, das
nennt sich padding Orakel.
Und wie gesagt, es ist halt, wie in dem
Fall sogar direkt möglich, den Klartext
zurück zu ermitteln.
Und ja,
es wird schon gesagt hat macht zuerst
dieses mag und verschlüsselt danach.
Deswegen heißt das ganze Verfahren mag
dann ein Kryptos an sich.
Wenn man alles richtig macht, kann man
das vielleicht verwenden, aber wir haben
es halt gesehen durch diese, dass
dieses eine Bit was dann noch an
Zusatzinformationen gekommen ist, also
dieser Information Pfad richtig oder
falsch ist am Ende alles kaputt gegangen.
IPC auf der anderen Seite ist den
anderen Weg gegangen. Die haben gesagt,
wir verschlüsseln erst unsere Nachricht
und berechnen danach den Mac.
Und dieses Verfahren in Crypto Denmark
ist also auch
heutzutage als sicheres Verfahren
angesehen, als sicheres
Verfahren.
Es gibt also auch hier bei der ITF
einen Vorschlag von Peter Goodman, der
versucht, dieses Skript in Mac Verfahren
als Extension mit
standardisieren zu lassen.
Was ich so sehe Es gibt da eine relativ
große Diskussion darum, weil natürlich
die Kryptographie hier wieder sagt
Na ja, wenn es eine SSL Extension
ist, ist es sozusagen wieder anfällig
für so Downgrade Attacken.
Das heißt, die eine Seite kann sagen,
ein Krypto habe ich nie gehört.
Das heißt, dann muss die andere Seite
irgendein Verfahren nehmen, was schwächer
ist.
Und deswegen sind sich da die
Leute in diesem Forum nie richtig einig,
das wirklich zu implementieren oder nicht
zu implementieren, was sie stattdessen
alternativ vorschlagen, was auch sinnvoll
ist. Es gibt halt hier direkt Modi,
die aus den kryptischen
Verwenden anbieten.
Also das geht zum Counter Mod
ist eine so eine Variante, das gibt es
eher x Modus und noch eine ganze
zahlreiche Menge andere Modi,
die hier mit
kryptischen arbeiten.
Und das ist auch eine Sache, die
man im Hinterkopf behalten sollte.
Also diese Seite Text Integrität
will man eigentlich haben.
Ein weiteres Problem, was
vielleicht auf den Folien hier ein
bisschen exotisch rüberkommt, was aber in
der Tat auch bei einigen Anbietern
zu krassen Problemen geführt hat,
spielt sich bei Hashes ab.
Hashes sind also so grafische
Prüfsumme und
einige Anbieter sind auf die Idee kommen,
man fügt einfach verschiedene Werte
hintereinander. Man Flickr
als klassisches Beispiel
hat Ensikat genommen.
Es ist gerade die letzte Zeile, die unten
steht und hat eine.
Nachricht kontaminiert daran
und hat darüber über dieses ganze
Konstrukt MD5
Summe berechnet.
Das Problem bei
diesen Hash SUM 5, 1
2 etc.
Die haben zwar eine gewisse innere
Konstruktion, das nennt sich Märkte
Verfahren nach den
Erfindern und die
wenden wiederholt zur Kompression
Funktion an und man kann jetzt,
wenn man geschickter Angreifer ist
an existierenden.
Man muss den Hash kennen und die
Nachrichten Länge und man kann es
manipulieren und noch eine modifizierte
Narayen dranhängen. Also das was hier
als Test gekennzeichnet ist
und kann daraus eine neue Hash
summarischen.
Man kennt sozusagen.
Die Werte hier, das hier und
hängt einfach mit dem Wissen noch was
hinten dran und
man kann einen komplett neuen Hash
errechnen, ohne dass man jetzt
grundsätzlich spricht. Es liegt einfach
an der internen Struktur.
Ich hatte es hier oben noch ein bisschen
genau aufgeführt. Man musste aufgrund der
Länge deswegen Form und Länge.
Muss man sich irgendwie ein Padding
errechnen, hängt es rein.
Und dann die Nachricht, mit der man das
ganze manipulieren will
und kriegt dann einen neuen Hash
rausgerechnet. Und bei der alten Flicker
API war es halt so,
dass man diesen Hash Wert dann als API
und sich an Flicker übergeben hat.
Man hat dann noch ein paar andere Parameter
übergeben und hat es
abgeschickt. Die haben das halt geprüft,
wo alles in Ordnung super und
haben das dann als korrekt akzeptiert.
Also so ein funktionierender Angriff bei
Flicker war dann in dem Falle, dass man
über die API auch Leute an externe
URLs weiterleiten konnte.
Also man hat sozusagen extra
ist gleich http, cc, ccd
zum Beispiel mit dran gehangen und
dann ist bei einem Aufruf der URL man
automatisch weitergeleitet worden an cc.
Ich meine CC. Die ist jetzt vielleicht
noch eine nette Seite. Man hätte aber
auch beliebig bösartige Seiten
dranhängen können. Also ist auch eine
Sache, die sehr unschön ist
und es gab da eine ganze ganze
Menge von weiteren Services, die das
genauso gemacht haben.
Das war insbesondere ein bisschen
merkwürdig, weil die halt auch die
aus dem Request String, der URL,
alles was und und dann
ist gleich mal raus extrahiert haben
und das dann
später
korrekt akzeptiert haben.
Also man könne da irgendwas so was wie FU
ist gleich reinschreiben.
Und das war für Flicker am Ende das
gleiche wie F ist gleich
Ober, also
das.
Da gab es also noch ein paar andere
Nettigkeiten, die die halt gemacht haben
ist das mittlerweile auch gefixt, ist
aber aufgrund der Struktur dieses
dieser Algorithmus hier
ein Problem.
Ein paar Wissenschaftler haben dann also
das entdeckt haben. Also auch die zwei,
die hier das
gesehen haben, haben gesagt Okay, wenn
ihr das umdreht. Das ganze
erste Nachricht und das Concert in ihren
mit dem Secrets, dann kann das.
Geht das gut, dann funktioniert unsere
Angriffe nicht mehr, weil man eben ein
gewisses Wissen nicht mehr hat.
Allerdings haben das später Leute wieder
andere Probleme gefunden, deswegen ist
es heute auch nicht mehr zu empfehlen.
Stattdessen das, was wir vorhin
schon gesehen haben Es gibt dieses Kit
schmeckt's also das Tags
und unter anderem das Extra
256 zum Beispiel.
Auch andere sind eine
sehr gute Alternative
und haben diese Probleme.
Ich vermute auch, dass das
weiß ich allerdings noch nicht genau,
dass der Ketchup Algorithmus,
also dieser SHA 3
Algorithmus, der eingreift,
aber noch nicht fertig spezifiziert ist,
vermutlich dieses Angriffs Szenario nicht
mehr bietet. Also
vorausgesetzt die NIST
akzeptiert diesen Catcher genauso wie er
vorgeschlagen ist, würde das vermutlich
nicht mehr funktionieren. Aber wer
gestern die Talks gehört
hat von Bronstein oder wer
halt auch das ganze zertifiziertes
Verfahren verfolgt, wird also auch
gesehen, dass die NIST hier und
da ein bissl an diesem Algorithmus rum
schleift und da was ändert.
Da muss man vielleicht vorsichtig
sein. Grundsätzlich ist es halt
so, dass für ein
ordentliches Krypto System braucht man
auch gut Zufall also.
Und das ist halt auch eine Sache, die
wo viele immer wieder auf die
Nase fallen Probleme kriegen,
das für manche sind.
Das ist Zufall sozusagen nur wichtig
scheint es ist essenziell, wenn es
schlechten Zufall habt und das ganze
in C in DSA digital
Designers Algorithmen füttert,
könnt ihr dort den
geheimen Schlüssel rausrechnen.
Ein anderes Beispiel, was
auch im Laufe des Jahres zu trauriger
Berühmtheit gelangt ist, ist in
Schadprogramm namens Crypto Katz ist also
ein Plugin für den Browser kann man
sich also zum Beispiel für den Google
Chrome installieren.
Und wenn man dann halt mit
Leuten chatten will, generiert das
Personen einen neuen Schlüssel und
man baut quasi gegenseitig über
den Browser eine Verbindung, also off
the record messaging auf und
kommuniziert miteinander.
Nun ist es halt auch so, dass derjenige,
der das geschrieben hat, auch kein
Kryptografie ist und eine ganze
Reihe von Fehlern gemacht hat, die
irgendwann dazu geführt haben, dass Leute
gesagt haben, das Programm sollte man
vielleicht eher in Crypto umbenennen.
Und ein interessanter
Fehler, der jetzt auf den
Generator, also auf den Zufallsgenerator,
sich bezieht, ist hier
mal auf diesen vier Zeilen mal
zusammengefasst. Da spielt also
noch ein bisschen was rein. Das ist, dass
das Programm hier JavaScript
benutzt. Was Sie hier gemacht haben, ist
also hier so eine kleine Schleife
und haben versucht, über 250 wäre
dazu
die Zahl 250 durch
Modulo auf die Zahl 0 bis 9 abzubilden.
So eine Hoffnung. Man hat eben 25 Martin
oder 25 und bis 25
mal die Neuen.
Wenn man sich aber den Code ganz genauer
anguckt, fällt vielleicht
dem ein oder anderen was auf.
Der Code hat eigentlich zwei Probleme.
Das eine ist vielleicht nur ein
artifizielles Problem, dass nämlich, dass
dieses diese Funktion Random Salsa
Arbeit, die garantiert,
dass das irgendwie innerhalb
einer gewissen Zeit wirklich
irgendwas heißt, wieder zurückkommt.
Das, was innerhalb
der Regel ist. Es heißt, theoretisch
könnte man hier davon ausgehen, dass man
so eine unendlich lange laufende Funktion
hat. Das könnte passieren,
ist, weiß man nicht.
Das hauptsächliche Problem ist, das
kennt man gerne mal Programmierer.
Das ist auch so ein Fehler, der einfach
auch sehr gerne gemacht wird.
Man zählt halt hier von 0 bis 250.
Es heißt, man integriert nämlich
nicht über 250 Wörter, sondern über 251
Wörter.
Und das Problem ist
halt hier, dass durch dieses ganze Modulo
hat man am Ende 26 mal eine 0 und 25
mal die anderen zahlen. Das heißt, ein
Wert hat so eine solche Bevorzugung
sonst Q wie man so schön sagt und
das kann ich mir denken.
Na ja, der eine Wert,
was macht das schon?
Das ist ja kein Problem oder was auch
immer.
Es haben dann ein paar Leute von
sowas immer das ganze in so schöner
Grafik hier abgebildet, haben diese Werte
halt hier geplottet. So eine quadratische
Funktion und was man hier sieht man was,
was man eben nicht sehen will,
nämlich ein Muster und ein Zufallszahlen
Generator, der ein Muster hat, ist also
nicht zufällig.
Also man will eher hier so ein schönes
Rauschen ohne irgendwelche Muster
grundsätzlich haben und das hat also hier
der Code nicht.
Und das ist also hier auch eines
der Probleme, wo Crypto Code
bisschen drüber gestolpert ist.
Und als Verbesserung kann
man sagen, nützt sowas wie am besten dev
random oder der führendem.
Wobei wer von euch
gerne mit Routern rum spielt.
Das ist halt auch so so ein nettes Ding.
Also versucht man Router anzumachen und
generiert euch den Schlüssel und dann
macht es mehrere Male und dann wird
er auf einmal sehen, dass das diverse
Schlüssel dann hier gleich sind.
Das ist halt auch das Problem,
was hier bei dem Linux
Zufallszahlen Generator mit ist.
Der muss halt irgendwo am
Anfang sein, sozusagen Initialen
zu CTR kriegen
und bei den normalen Desktop Systemen
ist es so, da wird irgendwas
gespeichert, das wird dann ausgelesen und
damit wird da Zufallszahlen Generator
gesichert und später kommen dann so
verschiedene Zufallszahl Quellen mit
rein. Also das wird das Eingaben.
Maurus Festplatten
Sachen werden mit ausgewertet, zum Teil
auch Netzwerk.
Und wenn ihr euch mal überlegt wie so ein
Router aussieht.
Also meine haben weder Maus noch
Festplatte und
auch gar keine Tastatur.
Das heißt für eine ganz große Klasse an
anderen Zufallszahl Quellen, die damit
reinkommen. Und deshalb dauert
es halt auch eine ganze Zeit, bis der
ordentlichen Vernünftigen Zufall liefert.
Es war eine ganze Zeit auch so,
dass der Zufallszahlen Generator von
Windows, der war so zufällig,
dass wenn man wusste, wie so ein gewisser
Status ist, konnte man den Status für
nächste Zufälle vorhersagen.
Also das ist auch so was, was man
von einem Zufallszahlen Generator nicht
wirklich will.
Ist aber auch mittlerweile gefixt
hier. Was man so an verschiedenen
Funktionen vielleicht verwenden kann,
habe ich hier mal mit aufgeschrieben für
Programmierer.
Und wenn man wirklich sozusagen selbst
Zufall generiert, muss
man das halt einfach testen.
Das ist halt wichtig, sich Gedanken
zu machen wie die, die
Ausgabe zu testen.
Es gibt ja ein Programm, was
meines Wissens nur als als C vorliegt,
also müsste kompilieren und dann können
da stehen die Ausgabe
von eurem Zufallszahlen Generator, ein
einzelnes Programm.
Die hattest
du dann in verschiedene statistische oder
verschiedene statistische Verfahren, um
die Ausgabe zu testen und sagt
dann. Ob der qualitativ
gut oder weniger gut
ist. Also grundsätzlich muss man sich
aber hier vielleicht bissel Gedanken auch
wieder um Mathematik Statistik machen, um
zu sehen, wie gut die Zufallszahlen
Generatoren sind.
Grundsätzlich ist es natürlich so das was
ich hier jetzt sozusagen innerhalb der
paar Minuten die Zeit hatte, habe ich mir
wirklich mal einfach 6 Sachen
rausgesucht. Es gibt noch einige andere
Sachen, die
wirklich problematisch sind.
Aus meiner Sicht ist eine der
wichtigsten, aus meiner
Sicht kann man sagen Kryptographie schon
franzsischer wenn es richtig
implementiert und verwendet werden, also
auch sozusagen ein Verfahren was man
hat, was aus etabliert ist und man
verwendet es aber einer ganz anderen Art
als ursprünglich vorgesehen.
Es kann auch zu sehr unvorhergesehenen
und zum Teil massiven Problemen führen.
Und was man hier
vielleicht gesehen hat, wenn das nicht
passiert, reichen bereits kleine
winzige Fehler aus für katastrophale
Folgen. Das ist halt so ein großes
Problem bei Kryptographie, dass wenn wenn
ihr einen kleinen Fehler habt, führt das
eben zu massiven Problemen
bis hin zur Klartext.
Und grundsätzlich auch nützt Sachen
nicht, weil irgendjemand von euren
Freunden oder von eurer Peergroup sagt,
dass das cool ist oder dass das ein
nettes Teilchen irgendwo hat
mit einem schönen Schloss oder sowas,
sondern am Ende muss man sich irgendwie
doch immer wieder die Quellen angucken
und selber entscheiden, ob das gut oder
schlecht ist. Und wie so oft,
je mehr Augen drauf gucken und versuchen,
da irgendwie Schwachstellen zu finden,
desto besser ist es am Ende für den Code.
Und vielleicht kriegt man am Ende
wirklich ein sicheres, gutes
System raus.
Ja, also wie gesagt, es waren halt so ein
paar Ideen, die ich mitgebracht habe.
Ich hoffe, das hat einer oder anderen
geholfen.
Ich danke euch fürs Zuhören und wer noch
Fragen hat.
Ich glaub wir haben noch ein paar Minuten
Zeit.
Ok, danke vielmals für
diesen Vortrag.
Und bevor es mit der New Show losgeht,
haben wir effektiv noch etwas Zeit.
Und wer also noch Fragen hat, bitte wie
immer geht zu den Mikrofonen im Saal oder
auf dem Balkon und wir starten
gerade mal mit einer Frage aus dem
Internet.
Also die Frage, die uns im Internet
mich erreicht hat, lautet Welche
von den bekannteren Crypto Labs
sollte man meiden und welche sind
zu empfehlen?
Also wie gesagt,
ich werde versuchen immer so eine
Level Bibliothek zu verwenden.
Also das was ich auch schon an dem
Beispiel versucht habe zu erklären, ist
also Krypto. Also die Bibliothek
ist per se nie unsicher, ist also
dasselbe und beileibe bei niemanden
hängen bleibt es einfach. Die die
Benutzung von der Bibliothek ist halt
bissel kryptisch. Man muss halt sehr sehr
aufpassen um das richtig zu machen und
diese Level Bibliothek nicht auch hier
genannt habe wie Caesar
diverse andere.
Die sind durchaus sinnvoll.
Es ist auch so, dass die.
Es gibt diese GPG Bibliothek,
die aus meiner Sicht
durchaus sinnvoll
sein kann. Wobei da mein Eindruck so
über die letzten letzte Zeit ist, dass
durch diese ganzen Snowden Leaks fangen
wieder mehr Leute an GnuPG als
Software sich anzugucken.
Und dann gab es in letzter Zeit doch
den ein oder anderen Fehler, der da
hochgekocht ist, der mir nicht gefallen
hat. Und es gibt auch von von Fefe schon
vor einiger Zeit schon längeren,
damals noch vielleicht vielleicht
Blogartikel oder einen anderen Artikel
bei einer ganzen Serie von Patches, die
auch so über die Zeit hinweg zur leise,
still und heimlich deinen Code
eingeflossen sind. Also an
sich, sagen wir mal so, kann man das
vielleicht verwenden, aber dann würde ich
auch bisschen vorsichtig sein.
Okay, also ich bitte euch doch noch etwas
leise zu sein, ich weiß ja, ihr seid
gespannt auf Fefe und Frank und den
Jusuf, aber wir machen trotzdem jetzt
noch Kunai. Also bitte seid ruhig
in den Saal, geht uns und sucht.
Nächste Frage vom Mikrofon Nr.
2 bitte.
Ja, ich habe eigentlich keine Frage,
sondern zwei Anmerkungen.
Das eine ist Bitte, bitte nehmt nicht
DVU, Random House blockt
nicht und das nimmt
das, was man Entropie genommen hat,
direkt hier. Das macht besonders dann
Spaß, wenn ihr den Server auf eine
Virtualisierung schickt.
Dann hat er nämlich überhaupt keine.
Das ist das eine.
Und die zweite Sache ist Die
Heard wird nicht reichen.
Da zeigt nur, ob der Pirincci weiter
gut fortschreibt. Aber schaut nicht nach,
ob die Initiale gut war.
Das heißt, ob man echt gute
Zufallszahlen auf die Art bekommen hat
wirste. Mit der habe ich feststellen Du
wirst nur Funktion nur feststellen, ob
dein Charon oder 256, der
da hinten drin steckt, ob der sauber
funktioniert oder nicht, ob das sauber
funktioniert hat. Das ist richtig.
Danke.
Mikrofon Nr. 4 bitte.
Ich wollte fragen, ob es bei der
Benutzung einer Kryptologie unabdingbar
ist, dass diese für die Plattform
auch optimiert ist oder ob es Crypto
laboris gibt, die auch auf andere
Plattformen angewendet werden können,
ohne Seiten Kanal Angriffe zu riskieren.
Also ich weiß es nicht.
Deine Frage richtig verstehe
die also
für mich Ein weiteres Beispiel ist die
Bibliothek von Bernstein,
die ja sehr, sehr klar und sehr
getrennt auf sehr verschiedene
Plattformen optimiert ist.
Wobei aus meiner Sicht meines Wissens
begründet das sehr mit Optimierung
ist. Das heißt, dass er sich sehr
genau überlegt.
Hier brauche ich nur sauber
5 Multiplikation und 3 Addition und
hier bei der Pausch dies und jenes.
Da also gerade bei uns
in achtet auch sehr oft Timing Attacken
da. Gerade bei diesen Bibliotheken
würde ich schon fast sicher sein, dass
das Timing Attacken nicht mehr möglich
sind. Also da währenddessen bei anderen
muss man halt wirklich drauf achten.
Es gibt einfach Leute, die obwohl
sich das aus meiner Sicht auch schon
rumgesprochen haben könnte,
durchaus vielleicht nicht auf
Timing Attacken achten, da muss man
gucken. Wobei die genannten, die aus
meiner Sicht zu geprüft,
abgehangen und auch zum Teil reviewed,
dass man die guten Gewissens empfehlen
kann.
Die Frage zielte er darauf ab, ob wir
nicht eine Bibliothek im Scout
nehmen. Zum Beispiel die Compilieren für
irgendeine besondere Plattform.
Ob dabei dann Effekte auftreten können,
wie zum Beispiel, dass irgendwo Schlüssel
in Registern vergessen werden oder so
etwas nicht.
Da kann ich nur eine klassische Antwort
darauf geben. Es kommt darauf an.
Also das Problem haben wir bei OpenBC
selbst gesehen, dass da
diverse Sachen weggeräumt worden sind.
Also es ist vom Compiler in dem Falle
und zum Teil auch von der Bibliothek
abhängig, je nachdem, wie die das
programmiert haben.
Da kann man keinen generellen Rat geben.
Okay, wir nehmen noch eine Liste von
Mikrofon Nummer zwei.
Ja, die Geschichte bei Flickr mit
den Hashes, was du gesagt hattest.
So als Laie hätte ich jetzt gedacht, dass
man bei Passwörtern was ähnliches
macht, dass man das Passwort nimmt uns
halt dazu und das dann durch eine
Hetzjagd kann.
Also bei mir kommt das ganz schlecht an.
Das was du sagst, kann es nur irgendwie
wiederholen.
Okay, dort ist die jetzt
okay.
Flickr und diese Geschichte, genau
da hatte ich das so verstanden.
Du hast irgendwie ein Geheimnis
und noch ein bisschen mehr und das wird
dann zusammen durch eine Funktion gesagt.
Und wenn ich jetzt Passwörter
verschlüsseln?
Da mag ich ja eigentlich was ähnlich ist
das Passwort soll dazu und das durch
einen Hash. Wäre das dann
mit der gleichen Attacke irgendwie
angreifbar?
Nebenbei wenn ein Passwort passt, machst
du ja
das irgendwie. Das ist halt dein Passwort
da drin und es wird dann gehackt und wenn
du da irgendwas hintendran hängst, dann.
Also ich weiß, gibt das vielleicht
nicht so gut rüberkommen. Ist da der Hash
am Ende? Dieser Wert ist eine andere als
der ursprüngliche Wert, aber
der ist korrekt.
Also und das war bei ihm, wenn
das Passwort dann machst,
bleibt ja gleich, ob du.
Wenn du bald was hinten dran hängst,
ändert sich der Hash und dann kommt es
nicht mehr dahin, wo du hin wolltest.
Das funktioniert eine.
Okay, danke für die Wahl, wir sind am
Ende unserer Zeit und ich bitte euch noch
mal um einen warmen Applaus
für Jannis.