One Time Password

Was haben Banken, World of Warcraft und einige große Unternehmen gemeinsam? In allen kann ein Gerät, welches ein „One Time Password“ erstellt, zum authentifizieren verwendet werden.

Wie sieht sowas aus und wie wird es verwendet?

Das Gerät besitzt ein oder zwei Knöpfe und ein kleines Display. Nachdem ein Knopf betätigt wurde zeigt dieser einen meist 6-stelligen Code an. Dieser muss dann im System (z.B. für die Banküberweisung) eingegeben werden. Bei erneutem betätigen wird wiederrum eine andere Ziffernfolge (pseudozufällig) erstellt.

Wie funktioniert das?

Sofern das Gerät keine innere Uhr besitzt (meist der Fall), müssen 2 Modi unterstützt werden:
TAN-Generierung und Synchronisation. Sobald also, wie oben geschildert, der Benutzer aufgefordert wird eine Tan einzugeben, berechnet das Gerät aus dem aktuellen Index einen Code. Der Index ist die Anzahl der bisher erstellten TANs.

Also ein Beispiel: G(I,K) ist die zweistellige Generatorfunktion, I ist der Index und K ein Passwort, welches fest im Gerät „eingebrannt“ und nicht auslesbar ist:

beim ersten Mal: G(0001,“abc123″) -> 495096
beim zweiten Mal: G(0002,“abc123″) -> 938237
beim dritten Mal: G(0003,“abc123″) -> 294921

Der Index wird also immer weiter inkrementiert.

Der Server, auf der anderen Seite, kennt auch das Passwort K. Dies hat der Hersteller so eingerichtet. Nach jedem benutzen inkrementiert der Server, genau wie das Gerät, den Index wodurch synchronisation zwischen Gerät und Server hergestellt wird.

Beispiel: Der Benutzer betätigt die Taste des Geräts und lässt sich ein Key berechnen: G(0325, „abcdefg“). Der Benutzer gibt die ausgegebene Ziffernfolge (439323) in das Formular ein. Der Server kennt die Anzahl der bisherigen Logins (324) und berechnet nun den aktuellen Index: 0325. Dadurch ist es möglich die Eingabe zu validieren.

Angenommen ein Benutzer betätigt versehentlich die Taste ist das System asynchron. Daher muss, wie schon angedeutet, die Möglichkeit bestehen, den aktuellen Index auszugeben.

Sicherheit?

Das System eliminiert das recht große Sicherheitsloch des unsicheren Benutzerpassworts. Es stetig wechselndes Passwort bietet durchaus Vorteile. Allerdings ist das System nicht resistent gegen Man-in-the-Middle. Beispiel: Der Server sendet an den Benutzer die Aufforderung zur Eingabe. Dieser kommt dem natürlich sofort nach und sendet die entsprechende Tan. Der Angreifer fängt diese Antwort ab, ändert den Inhalt (Überweisung auf ein anderes Konto) und schickt diese zum Server. Grund zur Angst besteht allerdings nicht, da Online-Banking mittels SSL resistent dem gegenüber ist.

SSL Check

Die Stiftung Warentest bietet einen Onlinedienst zum prüfen der SSL Sicherheit einer Webseite an.

http://www.test.de/themen/computer-telefon/ssl_check

In einem guten Browser wird dies allerdings auch übersichtlich angezeigt, wofür das Ganze also?

Das wird vielleicht klar, wenn wir mal ein Beispiel betrachten. Die Webseite https://www.sofortueberweisung.de/ ist auch SSL geschützt. Schauen wir uns an, was der Test dort ausspuckt:

Vom Server unterstützte SSL-Version: 3
Bevorzugte Verschlüsselung: Triple-DES (168/112 Bit)

Wenn ich allerdings mit meinem Browser die Webseite betrete erhalte ich eine andere Information

sofuebscreenshot

Woher kommt das?

Dafür muss man sich das SSL (Secure Sockets Layer) bzw. TLS (Transport Layer Security) Protokoll etwas genauer anschauen. Bei der Kontaktaufnahme teilt der Client dem Server mit, welche sym. / asm. Verschlüsselungskombinationen er „versteht“. Diese werden auch Ciphersuites genannt. Mein Browser teilt also dem Server der Webseite mit, das er AES 256 bevorzugt was auch durchaus in meinem Interesse ist.

Aber angenommen ich wäre einem Man-in-the-middle Angriff ausgesetzt, d.h. jemand kann meinen Traffic komplett auslesen und verändern, dann hätte er bei SSL nur dann eine Chance, wenn die Verschüsselung unsicher ist. Wenn also der Bösewicht in der Mitte dafür sorgt das eine schwache Verschlüsselung (CipherSuite) ausgesucht wird, wäre er in einer eindeutig besseren Lage als vorher.

Aus diesem Grund wählt der SSL Check eine möglichst schlechte Verschlüsselung aus um herauszufinden wo der Server noch mitspielt und wann nicht mehr. Würde er also DES (effektiv 56 Bit) und gleichzeitig AES (128 – 256) unterstützen, wäre der SSL Schutz vielleicht nicht mehr so sicher, wie er auf den ersten Blick erscheint.

Daher ist dieser Check, obwohl er vielleicht auf den ersten Blick nicht so wichtig erscheint, eine gute Sache.

Digitale Signaturen (Teil 2)

Im letzten Artikel hatten wir uns damit beschäftigt wie diese Signaturen technisch umgesetzt werden. Sehen wir selbige nun auch einfach als korrekt an.

Mit Hilfe des öffentlichen Schlüssels des Absenders (im Idealfall -allen- bekannt) lässt sich also eine Signatur auf Gültigkeit prüfen. Wir sehen also, das der Text bei der Übersendung nicht geändert wurde. Sofern wir also den öffentlichen Schlüssel einer natürlichen Person zweifelsfrei zuordnen können, wissen wir, das diese Nachricht authentisch ist.

Um dies zu erreichen gibt es eine Public – Key – Infrastruktur, kurz PKI. Wie sieht das aus: eine vertrauenswürdige Stelle (Bank, Bundesdruckerei, etc.) bestätigt, das dieser öffentliche Schlüssel der Person XYZ gehört. Dies wurde mittels Ausweis (Post-Ident Verfahren) geprüft. Diese Einrichtungen nennt man CA (certification authority).

In der Regel läuft es so ab:

Ein recht Anspruchsvolles Wurzelzertifikat sichert das Zertifikat der CA ab, welches wiederum das Zeritifkat der „Person“ bestätigt.

So sichert Verisign das CA Zertifikat der Deutschen Bank ab welches wiederrum ihren Mitarbeiter Zertifikate ausstellt.

Und wo ist da nun die große Sicherheit?

Das online banking ist SSL geschützt und beruht auf einem Zertifikat. Dieses Zertifikat besagt, das diese Webseite (auf der man sich befindet) „Eigentum“ der (z.B.) Deutschen Bank und entsprechend stark gesichert ist. Im Browser wird dies meist durch ein grünes Zeichen (aufleuchten) oder ein Schloss signalisiert. Wenn dies also gegeben ist, kann ich sicher sein, mich auf der korrekten Seite zu befinden, sofern ich die korrekte Internetadresse eingegeben habe. Analog bei E-Mails.

Ich hoffe den Sinn und Zweck von Digitalen Signaturen / Zertifikaten vermittelt zu haben.

Digitale Signaturen (Teil 1)

Dieses Thema ist mir persönlich sehr wichtig da darüber sehr viel Unwissen herrscht. Rein theoretisch könnten digitale Signaturen dafür sorgen, das unsere E-Mail Postfächer fast spamfrei bleiben. In der Praxis werden Sie jedoch leider (auch aus Kostengründen) nicht dafür verwendet. Dafür gibt es andere gute Anwendungsmöglichkeiten die ich auch präsentieren möchte.

Im ersten Teil jedoch, will ich eine kurze Einführung in die Technik „dahinter“ geben um im zweiten Teil das organisatorische, also PKI (Public-Key-Infrastruktur), zu erklären.

Wie funktionieren überhaupt diese digitalen Unterschriften? In der realen Welt stellen wir mit einer persönlichen Unterschrift Verbindlichkeit zwischen dem Text auf dem Papier und dessen Inhalt her. Wenn ich also etwas unterschreibe, nehme ich den Text (inhaltlich) zur Kenntnis. Dies hat auch eine gewisse Beweiskraft, da die Authentizität der Unterschrift geprüft werden kann.

Im Gegensatz zum realen Leben, lässt sich im Internet allerdings alles „kopieren“. Ich könnte eine Unterschrift also einfach irgendwo ausschneiden und unter einen anderen Text kleben. Ob das nun auch in der wirklichen Welt möglich ist lasse ich einfach mal offen. Sicher ist jedoch, das es auf dem Computer viel einfacher geht.

Also muss die digitale Unterschrift in Zusammenhang mit dem Text stehen, so das ein Verändern des Textes auch gleich die Unterschrift zerstört. Und genau so funktioniert das auch. Kommen wir also zu den Details.

Zunächst der Text:

Hiermit nehme ich Ihr Angebot auf Abschluss eines Kaufvertrags vom 25.06.2008 bzgl. drei Gläser Weizenbier schriftlich an.

Dies ist also der Text (z.B. in einer E-Mail) der zu unterschreiben ist. Der erste Schritt besteht nun darin, aus diesem Text ein Fingerabdruck zu erstellen. Wie wir bereits wissen, ist dies mit Hashfunktionen wie z.B. MD5 oder SHA möglich. Der Grund dafür ist eigentlich nur, die Länge der Signatur möglichst klein zu halten.

Hash(Text) = f998fb1e1a73549287404a43a2506801

Ich habe aus meinem Text also nun einen kompakten Hash (MD5) erstellt. Weiter geht es…

… und zwar mit dem RSA Verfahren. Ja, es taucht überall auf und das ist auch Grund warum dieses System so wichtig ist. Ich möchte nicht nochmal im Detail darauf eingehen wie damit ver- und entschlüsselt wird denn dies ist in den Grundlagen schon hinreichend beschrieben. Diese komplett im Detail zu verstanden haben ist allerdings auch nicht so unbedingt notwendig. Sehr wichtig dagegen ist folgendes:

Sei E( text ) die Funktion zum verschüsseln (RSA), sei D( text ) die Funktion zum entschüsseln (RSA), jeweils mit dem gleichen Schlüssel.

1) E ( Klartext ) = Chiffretext
2) D ( Chiffretext ) = Klartext
3) D ( E ( Klartext ) ) = Klartext
4) E ( D ( Klartext ) ) = Klartext

Zeile 1 und 2 sind denke ich recht offensichtlich. Ich verschlüssel einen Text und erhalte den verschlüsselten Chiffretext und umgekehrt. In Zeile 3 wird das beschrieben, was im Internet so geläufig ist: ich verschlüssel einen Text (mit E), sende ihn und erhalte (durch D) den Klartext zurück. Wichtig ist also die Zeile 4: wenn ich einen Text entschlüssel, also D anwende, erhalte ich auch eine Art von Chiffretext. Und wenn ich diesen entschlüsselten Text wieder verschlüssel, erhalte ich den Klartext.

Dieses Verfahren wird auch bei den digitalen Signaturen eingesetzt. Ich bilde (wie oben beschrieben) einen Hash aus dem Text und entschlüssel ihn mit meinem (geheimen) privaten Schlüssel. Niemandem (außer mir) ist der private Schlüssel bekannt und daher kann auch nur ich diese Signatur leisten. Der „entschlüsselte“ Text wird einfach an die E-Mail angehangen.

Die Validierung der Signatur ist jedem möglich, indem er den „entschlüsselten“ Text mit dem öffentlichen Schlüssel des E-Mail Absenders verschlüsselt. Dadurch erhält er den Hashcode und kann diesen abgleichen. Das ganze nochmal mit Beispiel:

Hash(Text) = f998fb1e1a73549287404a43a2506801

hatten wir eben ausgerechnet. Nun wird der Hashcode mit dem privaten Schlüssel entschlüsselt.

DECRYPT ( privatekey , „f998fb1e1a73549287404a43a2506801“ )
= dfmkomogerglmmerfohgnjutrihdmfkosemvgtjngrmakofrjlsgnhbhrgnamghktmhkke
(nur Beispielhaft)

Dieser wird an die E-Mail einfach angehangen

Hiermit nehme ich Ihr Angebot auf Abschluss eines Kaufvertrags vom 25.06.2008 bzgl. drei Gläser Weizenbier schriftlich an.
dfmkomogerglmmerfohgnjutrihdmfkosemvgtjngrmakofrjlsgnhbhrgnamghktmhkke

Die E-Mail wird versendet. Die andere Seite verwendet den öffentlichen (allen bekannt da veröffentlicht) des Absenders und verschlüsselt

ENCRYPT ( publickey , „dfmkomogerglmmerfohgnjutrihdmfkosemvgtjngrmakofrjlsgnhbhrgnamghktmhkke“)
=
f998fb1e1a73549287404a43a2506801

Nun bildet der Empfänger einfach den Hashcode vom Text und gleicht die 2 Werte ab:

Hash(Text) =?= f998fb1e1a73549287404a43a2506801

Wenn beide Werte identisch sind, ist die Signatur gültig.

Angenommen ein böser Mensch würde nun den Inhalt ändern wollen, also folgende Änderung durchführen:

Hiermit nehme ich Ihr Angebot auf Abschluss eines Kaufvertrags vom 25.06.2008 bzgl. zehn Gläser Weizenbier schriftlich an.

würde sich folgender neuer Hashwert ergeben:

Hash(neuerText) = cc8bfa6863caafd65d3476c390ece04a 

und der Abgleich mit der Signatur (f998fb1e1a73549287404a43a2506801) schlägt fehl.

Die Funktionsweise sollte damit klar sein. Irgendwie muss jedoch auch beweisbar sein, das die Unterschrift auch wirklich von DIESER Person kommt und nicht von einer anderen… (Cliffhanger)

 

Kryptoanalyse für Anfänger (Teil 3)

Wir haben es nun geschafft diese Vigenère – Verschlüsselung in drei additive (verschiebe) Chiffren mit jeweils einem Schlüssel zu verwandeln, indem wir den Text geschickt in |k| Teile (|k| = Länge des Schlüssels) aufspalten. Das hilft allerdings bisher nur bedingt, denn die Anzahl der Möglichkeiten hat sich dadurch nicht verändert. Obwohl wir nun die Länge des Schlüssels kennen.

Erst wenn es uns gelingt, den Aufwand von 255 Möglichkeiten (pro Schlüsselzeichen) auf wenige zu reduzieren, ist aus diesem großen Problem, ein sehr kleines geworden. Und dies ist mit Hilfe der „Häufigkeitsanalyse“ möglich. Diese beruht darauf, dass das „E“ und das Leerzeichen “ “ am Häufigsten in deutschen Texten vorkommt. Ein Beispiel:

Hat der alte Hexenmeister
Sich doch einmal wegbegeben!
Und nun sollen seine Geister
Auch nach meinem Willen leben.
Seine Wort und Werke
Merkt ich und den Brauch,
Und mit Geistesstärke
Tu ich Wunder auch.
Walle! walle
Manche Strecke,
Daß, zum Zwecke,
Wasser fließe
Und mit reichem, vollem Schwalle
Zu dem Bade sich ergieße.

Das „E“ findet sich in diesem Text 50 mal und macht daher knapp 20% aus. An zweiter Stelle (hier) das „N“ mit 7,6%. Dieses Verhältnis ändert sich nach der einfachen Verschiebechiffre nicht. D.h. das häufigste Zeichen im Chiffretext wird wohl im Klartext das „E“ gewesen sein. Angenommen bei der Häufigkeitsanalyse des verschlüsselten Textes ergibt sich, dass das „A“ am häufigsten vorkommt, berechnen wir die Differenz zwischen „E“ und „A“ und kennen den Wert des Schlüssels.

So verwandeln wir 255 verschiedene Möglichkeiten (pro Schlüsselzeichen) in 1 oder 2, max 3. Daraus ergibt sich im average-case 2^3 = 8 anstelle von 255^3 = 16581375. Analog für 8 Zeichen 256 anstelle von

17.878.103.347.812.890.625

Möglichkeiten.

Die meisten Kryptosysteme (besonders die asymmetrischen) bauen darauf, dass das große Problem auch ein großes bleibt und sich nicht (wie hier) in ein kleines verwandeln lässt. Exakt das ist es, was die Krypoanalyse ausmacht.

Was ist eigentlich wenn der Schlüssel genauso lange ist wie der Text?

Kryptoanalyse für Anfänger (Teil 2)

Was der Rechner mit „roher Gewalt“ bei einer entsprechenden Passwortlänge nicht mehr vollbringt, bewältigt der Mensch mit seinem gesunden Menschenverstand recht schnell.

Die beschriebene Verschlüsselung wird auch als Vigenère Chiffre bezeichnet. Brechen lässt sich diese über den Kaskiski test.

Wir konnten ja beobachten das der Text mittels einem sich wiederholenden Passwort („MNMNMN…“) verschlüsselt wird. Dies ist auch der Fall, wenn das Passwort etwas länger ist („TESTTESTTEST…“). Nun haben wir aber den Vorteil das die deutsche Sprache recht redundant ist und sich daher viele Wörter wiederholen. Nehmen wir nur mal die 3 Artikel, „der“, „die“ und „das“. Je nach Position und mit etwas Glück, werden sie im Text mit dem selben Passwort verschlüsselt. Ein Beispiel:

P= DAS KANN MAN ABER NICHT SAGEN DAS IST SO NICHT RICHTIG
K= BLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLA
C= FMT WBPZ OMO MCGD PUDJF UMHGZ FMT UTV TQ OKOIV SKOIVUH
(!) In diesem Beispiel wurde das Leerzeichen nicht mit verschlüsselt.

„DAS“ wird jeweils mit dem selben Passwort („BLA“) verschlüsselt. Daher ergibt sich auch später im Chiffretext das gleiche Ergebnis. Es gilt also im Text (der möglichst lange sein sollte) gleiche Sequenzen zu finden. Hier an dieser Stelle also „FMT“. Das war Schritt 1.

Schritt 2 besteht darin, aus diesen gefundenen Sequenzen, die Passwortlänge ungefähr zu erraten. Hier in diesem Fall lässt sich also von 3 oder 4 Zeichen ausgehen. Je länger der Text, desto besser die Ergebnisse.

Im 3. Schritt muss zunächst noch einmal nachgedacht werden. Durch den Algorithmus wissen wir, dass das erste Zeichen des Klartextes, mit dem 1. Zeichen des Passworts verschlüsselt wurde. Da wir von einer Passwortlänge |k|=3 ausgehen, analog das zweite und dritte Zeichen:

___ + K1 = F       ___ + K2 = M        ___ + K3 = T
___ + K1 = _       ___ + K2 = W        ___ + K3 = B
___ + K1 = P       ___ + K2 = Z        ___ + K3 = _
___ + K1 = O       ___ + K2 = M        ___ + K3 = O
...

In der Mitte dieser Tabelle sehen wir z.B. das „M W Z M …“ mit dem gleichen „Passwortbuchstaben“ (K2) verschlüsselt wurde… (Cliffhanger)

 Ich danke für die Aufmerksamkeit bei meinem siebten konstruktiven Blogeintrag.

Kryptoanalyse für Anfänger (Teil 1)

Ich denke das sich viele schon einmal gefragt haben, meist ausgelöst durch Filme, wie Kryptoanalytiker arbeiten bzw. wie Chiffren gebrochen werden. Bei recht einfachen Chiffren wie z.B. rot13 oder Cäsar, bei denen einfach die Buchstaben jeweils um einen Schlüssel im Alphabet verschoben werden, ist das relativ trivial. Vorweg ein Beispiel für die Cäsar Chiffre:

Klartext P = HALLO
Schlüssel K = (+)3
Verschlüsselung:
H -> K
A -> D
L -> O
L -> O
O -> R
Chiffretext C = KDOOR

Um dies nun zu „knacken“ müsste man lediglich nacheinander die Schlüssel ausprobiern. Also k=1, k=2, k=3… Das Ganze geht natürlich mit dem Computer sehr schnell, wobei allerdings eine Plausibilitätskontrolle notwendig ist um einen sinnvollen Text festzustellen. Jedoch (heute) kein wirkliches Problem. Zur Not klappt dies auch noch „von Hand“. Diese Art von Verschlüsselung wird als „additive Chiffre“ oder Verschiebechiffre bezeichnet.

Das Ganze geht jedoch auch schwieriger. Nehmen wir beispielhaft ein Alphabet

A = ABCDEFGHIJKLMNOPQRSTUVWXYZ

und weisen den Buchstaben jeweils nacheinander einen festen Wert zu:

A = 1
B = 2
C = 3

Y = 25
Z = 26
A = 27 (1)
B = 28 (2)

Das ganze ist zyklisch, hinter Z geht es mit A weiter. Der Klartext „HALLO“ lässt sich dann auflösen zu: H=8 A=1 L=12 L=12 O=15 bzw. 8 1 12 12 15

Dies wird nun mit dem Schlüssel „MN“ verschlüsselt, sofern der Text länger ist „MNMNMN…“:

H ( 8 )  + M ( 13 ) = U ( 21 )
A ( 1 )  + N ( 14 ) = O ( 15 )
L ( 12 ) + M ( 13 ) = Y ( 25 )
L ( 12 ) + N ( 14 ) = Z ( 26 )
O ( 15 ) + M ( 13 ) = B ( 28 = 2 )

Hier lässt sich auch gleich erkennen, das die zwei „L“ unterschiedlich verschlüsselt werden. Wenn man sich nun ein 8, oder sogar 16 Bit Alphabet vorstellt und ein Passwort mit 8 Zeichen ist dieses Problem mit „Brute Force“ praktisch nicht mehr zu lösen.

Das macht dies allerdings nicht zu einer guten Chiffre. Tatsächlich ist diese jedoch in sehr kurzer Zeit geknackt… (Cliffhanger) 

 

Ich danke für die Aufmerksamkeit bei meinem sechsten konstruktiven Blogeintrag.

Hybride Verschlüsselung

Wie versprochen einen Beitrag zur hybriden Verschlüsselung.

Sie ist eigentlich sehr simpel und umso mehr genial. Sie verbindet die Vorteile der 2 anderen Systeme zu einem Neuen.

Erstmal warum das Ganze. Symmetrische Verfahren benötigen den Austausch eines geheimen Schlüssels zwischen Sender und Empfänger. Im Internet, im Normalfall, nicht möglich. Bei Asymmetrischen ist das nicht nötig, jedoch haben sie den Nachteil, das sie sehr langsam sind. Genauer gesagt ca. 1000 mal langsamer.

Die „Hybride Verschlüsselung“ vereinigt die Vorteile und besitzt eigentlich keine Nachteile. Sie funktioniert nämlich so: eine Seite würfelt sich einen geheimen Schlüssel beliebiger Länge für z.B. ein AES256. Dieser Schlüssel wird (asymmetrisch) mit dem öffentlichen Schlüssel der Gegenseite verschlüsselt und übersendet. Dieser entschlüsselt den Chiffretext mit Hilfe seines privaten Schlüssels und erhält den (vom Sender gewürfelten) Schlüssel. Alles weitere (z.B. Dateien) werden mit Hilfe dieses Schlüssels symmetrisch verschlüsselt.

Also nochmal kurz: mit Hilfe eines asymmetrischen Verfahrens (z.B. RSA) wird ein Schlüssel ausgetauscht, welcher für eine symmetrische Verschlüsselung (z.B. AES) verwendet wird. Das wars schon.

Verwendet wird dieses Verfahren z.B. bei SSH (Secure Shell) oder bei SSL/TLS (Secure Sockets Layer / Transport Layer Security). 

Ich danke für die Aufmerksamkeit bei meinem fünftem konstruktiven Blogeintrag.

Mythos der Bits

Heute möchte ich in wenigen Worten einige „Ungenauigkeiten“ aus der Welt räumen. Was Verschlüsselungsverfahren angeht, hört man recht häufig verschiedene Werte: 56/64, 128, 256, 1024, 2048.

Zuerst einmal ist wichtig zwischen zwei verschiedenen Kryptosystemen zu unterscheiden. Auf der einen Seite die symmetrischen (DES, 3DES, Blowfish, AES, Twofish, Serpent, etc.) und auf der anderen Seite die asymmetrischen (RSA, DH).

Bei den symmetrischen, gibt diese Größe an, wie viele Bits des Schlüssels in die Verschlüsselung eingehen. Bei 64 Bit Schlüssellänge, gibt es 2^64 (18.446.744.073.709.551.616) verschiedene Schlüssel. Das klingt zwar nach sehr viel, ist es allerdings nicht. Als Sicher werden Systeme angesehen, die mind. 128 Bit verschlüsselt sind.

340.282.366.920.938.463.463.374.607.431.768.211.456 verschiedene Schlüssel

Die Anzahl der Möglichkeiten für ein 256 Bit System erspare ich mir an dieser Stelle.

Was bedeutet das? 128-256 sind bei symmetrischen Verschlüsselungsverfahren üblich und sicher, mehr wird meist nur durch Kaskadierung erreicht. Das bedeutet, das ein 512 Bit Schlüssel in 2×256 aufgespalten und jeweils in einem anderen System verwendet wird. Hier leidet allerdings die Performance stark.

Und was ist nun mit 1024 und 2048 Bit? Sieht man ja auch des Häufigeren. Dies bezieht sich auf die asymmetrischen Verfahren z.B. RSA. Wie ich in einem anderen Beitrag schon einmal erklärte habe, bezieht sich die Angabe auf die Länge des RSA Moduls. Die Primfaktorzerlegung für eine 1024 Bit Zahl ist nach dem heutigen Stand der Technik so aufwendig, das sie als praktisch unmöglich angesehen wird. Und da Banken immer eine Nummer sicherer gehen, verwenden sie ein 2048 Bit Modul. Warum sich das eigentlich auch der „normale“ Mensch leisten kann erkläre ich ein anderes mal, Stichwort „Hybride Verschlüsselung“.

Fazit: Die Anzahl der Bits ist nur interessant mit der Nennung des Verfahrens. Bei AES ist 256 Bit sehr sicher, bei RSA jedoch kein wirkliches Problem. Dort wirds frühestens bei 512 interessant, wirklich jedoch erst bei 1024.

Ich danke für die Aufmerksamkeit bei meinem vierten konstruktiven Blogeintrag.

Quantenkryptographie

Da stellen wa uns mal janz dumm und fragen uns, watt is eigentlich n Dampfmaschine Quantenkryptographie ?

Klingt ja eigentlich supercool. Es hat durchaus etwas Geheimnisvolles. So wie Quantenphysik (von der ja auch kaum einer Ahnung hat) und in Verbindung mit der Wissenschaft der Geheimnisse, der Kryptographie, für mich DAS Wort dieses Jahrhunderts.

Viele denken, das hat was mit Quantencomputern zu tun. Das sind die Geräte, auf die sich alle freuen  abgesehen von Behörden, Banken, Zertifizierungsdienste, … also fast alle. ABER: Sie werden nicht für die Quantenkryptographie benötigt denn selbige wird schon heute praktisch eingesetzt.

Die Idee ist eigentlich nur, dass über polarisierte Photonen (4) und der Messung mittels Basen (2), beiden Seiten ein eindeutiger Schlüssel zur Verfügung gestellt wird. Dieser wird dann mittels „One Time Pad“ Verfahren auf den Klartext binär aufaddiert.

Und das Ganze nochmal in langsam.

Zuerst einmal will ich etwas ganz wichtiges in der Kryptogaphie vorstellen: die Involution. Nein, nichts französisches, sondern ein besonderes Merkmal. Eine Funktion bekommt dieses Prädikat, wenn folgendes gilt:

f = f^-1 oder anders: inverse(f) = f  oder anders: f(f(x)) = x

In Prosa: bei doppelter Anwendung kommt das ursprüngliche wieder heraus. Ja so etwas gibts und ein wichtiges Beispiel ist das Exklusive Oder, kurz XOR.

0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0

Ein schönes Beispiel:

       10101101
xor    01011100
---------------
       11110001
xor    01011100
---------------
       10101101
 

Rot markiert ist der ursprüngliche Text, das Blaue ist z.B. ein Schlüssel, verbleibt das Grüne welches unseren verschlüsselten Text (Chiffretext) darstellt. Hier sehen wir gleich: wende ich den Schlüssel zwei mal an, erhalte ich das ursprüngliche, also den Klartext (rot). Das Ganze lässt sich auch leicht beweisen, ist jedoch an dieser Stelle nicht so wichtig. Hier zu merken (und das ist in der Kryptographie nunmal ausschlaggebend): mit einem XOR lässt sich sowohl Ver- als auch Entschlüsseln sofern der Schlüssel korrekt ist. Das ist also eine Involution.

Das One – Time – Pad Verfahren beruht darauf, das Klartext und Schlüssel gleich lang sind. Man besitzt also auf der einen Seite einen Text der Länge x Bytes und auf der anderen Seite einen Schlüssel >=x Bytes. Diese werden einfach mit dem XOR verrechnet wie oben dargestellt. Es ergibt sich einen Chiffretext c = p xor k. Hier kommt dann das Ausschlaggebende: nur mit exakt dem gleichen Schlüssel lässt sich c wieder entschlüsseln p = c xor k. Dadurch ist das Verfahren zwar beweisbar sicher, jedoch praxisfremd. Denn wenn es mir möglich ist einen Schlüssel k, mit der gleichen Länge von p, geheim zu halten, kann ich ja auch direkt p weitergeben. Bei normalen symmetrischen Verschlüsslungen besteht k nur aus 16 Zeichen und verschlüsselt seitenweise Texte. Hier jedoch soll zu jedem Buch, welches verschlüsselt werden soll, ein weiteres (genauso dickes) Buch mit der Aufschrift „Schlüssel“ existieren. Sowas möchte eigentlich niemand.

Doch! Die Quantenkryptographie. Diese stellt auf beiden Seiten beliebig lange (gleiche) Schlüssel zur Verfügung. In diesem Beitrag möchte ich mich nicht allzu sehr mit den technischen Details befassen, auch wenn diese Recht interessant sind. Kurz: auf der einen Seite werden polarisierte Photonen über einen Lichtwellenleiter „gesendet“ und auf der anderen Seite mittels einer Basis gemessen. Am Ende tauschen sich beide aus, welcher Filter an welcher Stelle korrekt war. Da es jedes Photon nicht nur 2 sondern 4 Zustände einnehmen kann, erhält ein Angreifer bei diesem Kommunikationsaustausch keine weiteren Informationen. Genau gesagt kann er immer nur eins wissen: es war entweder eine 1 oder eine 0.

Das ist allerdings nur ein Protokoll. Viel wichtiger ist das, was in der Quantenphysik als das „No-Cloning-Theorem“ bezeichnet wird. Selbiges geht ein wenig zurück auf die 3. Aussage der Heisenbergschen Unschärferelation welche besagt, dass die Messung eines Quantenobjekts unmittelbar dessen Störung zur Folge hat und genau an dieser Stelle muss der Informatiker erstmal schlucken. Aus der Welt von Bits und Bytes sind wir gewohnt, alles unverändert (digital) kopieren zu können. Ich erhalte ein Bild und kann selbiges unverändert via E-Mail weitersenden. Laut der Quantentheorie ist dies jedoch mit Photonen nicht möglich. Sobald ich diese gemessen habe, wurden sie bereits verändert. Aufgrund des Protokollaufbaus ist dies bei der Quantenkryptographie nicht so schlimm, jedoch ein Angreifer, welcher sich in die Leitung „setzt“ und mithören will, würde dessen Signale so verändern, das zumindest eine Seite dies bemerkt. Dadurch haben wir also einen abhörsicheren Kanal auf welchem der Schlüssel wandern kann.

Das klingt gut und tatsächlich scheint es so, als hätten die Kryptographen den Kampf gegen die Kryptoanalytiker gewonnen. Jedoch gibt es an dieser Stelle ein großes Problem: der Quantenkanal (also z.B. der Lichtwellenleiter) darf zwischen Sender und Empfänger nicht unterbrochen werden. Außerdem ist es nicht möglich das Signal zu verstärken und die Reichweite ist stark begrenzt. Ein Internet, wie wir es kennen, lässt sich mittels Quantenkryptographie nicht sichern. Maximal könnte es ein System vertrauenswürdiger Instanzen („trusted network“) geben wobei hier die Frage ist, wem wir vertrauen können während wir unser Online Banking durchführen.

Fazit: Quantenkryptographie ist eine tolle Sache, sie ersetzt jedoch nicht die bisherigen Verfahren. Das System selbst verlangt sogar, als „Man in the middle“ Abwehr, asymmetrische Verfahren zur Authentifizierung. 

Ich danke für die Aufmerksamkeit bei meinem dritten konstruktiven Blogeintrag.