Kryptographie

Browser HTTPS

Die meisten Informationen habe ich aus dem Netz und aus dem Buch Kryptografie: Verfahren, Protokolle, Infrastrukturen (iX Edition).

Wie man Wikipedia entnehmen kann, ist Kryptografie heute mehr als nur die Lehre der Verschlüsselung:

… war ursprünglich die Wissenschaft der Verschlüsselung von Informationen. Heute befasst sie sich allgemein mit dem Thema Informationssicherheit …

Das Thema hat eine lange Historie vorzuweisen. Heute ist es ein Hilfsmittel im Alltag geworden - ein Auszug:

  • Online Banking: Surft man die Bankseite seiner Wahl an, wird man meist auf eine https (HyperText Transfer Protocol Secure) Seite umgeleitet. Schaut man sich die Browserinfos dazu an, wird man gleich mit einer Menge von Informationen überflutet: TLS, AES (bzw. den Operation Mode Galois/Counter Mode (GCM), Diffie–Hellman). Und Verisign mischt auch mit. Was das alles bedeutet und wie man es verwenden kann, wird in den Folgeartikeln genau erläutert.
  • Mobiltelefonie: GSM nutzt den [A5](http://de.wikipedia.org/wiki/A5_%28Algorithmus%29 Algorithmus zur Absicherung von Gesprächs- und Datenverkehr über eine Funkstrecke. Moderne Generationen wie HSDPA und LTE bedienen sich ebenfalls der Kryptographie.
  • Smart-Cards: Bankomatkarten e.g. haben heutzutage eine recht komplexe Software. Diese bedient sich auch in vielen Bereichen der Kryptographie.
  • PayTV: Lösungen wie VideoGuard wären ohne Kryptographie erst gar nicht möglich.

Die Liste ist lange - und wird in Zukunft immer länger werden.

Warum Kryptographie?

Bevor es los geht, stellt sich natürlich die Frage: Warum überhaupt Kryptographie einsetzen? Hier stoßt man in der Literatur auf die fiktiven Kommunikationspartner Alice und Bob.

Alice und Bob

Die zwei fiktiven Kommunikationspartner Alice und Bob wollen unter zur Hilfenahme von Kryptographie über einen unsicheren Kommunikationskanal kommunizieren. Kryptographie verhindert,

  • dass der Angreifer mit den abgefangenen Daten etwas anfangen kann.
  • dass der Angreifer Daten unbemerkt ändern kann.
  • dass der Angreifer sich Alice unbemerkt als Bob ausgibt.

Kryptografie ist nicht die Lösung für alle Security-Probleme - es ist ein Teil davon. Kryptografie ist u.a. die Lehre der Verschlüsselung von Daten. Man unterscheidet zwischen proaktiven (e.g. Kryptografie) und reaktiven (e.g. Monitoring) Maßnahmen.

Es gibt allerdings auch Dinge, bei denen Kryptografie nichts hilft (e.g. wenn Komponenten zum Absturz gebracht werden und die Kommunikation dadurch unterbrochen wird, Nachrichten abfangen oder ändern). Im Englischen hat das Wort Computersicherheit zwei Übersetzungen: Security und Safety. Security wird wiederum in Security in vernetzten Umgebungen und Security in unternetzen Umgebungen unterteilt. In vernetzten Umgebungen findet Kryptografie ihren Einsatz.

Die Herausforderung

Viele Ingenieurdisziplinen haben sehr einfach vorhersehbarer Rahmenbedingungen (e.g. Ausfallsicherheit, mechanische Belastungen, Alterung, …) - welche im Regelfall leicht zu beherrschen sind. Will man ein sicheres System bauen, ist man mit teils unbekannten Faktoren konfrontiert. Man muss immer davon ausgehen, dass der Angreifer klug und erfahren ist - er wird unvorhersehbare Methoden anwenden - was den präventiven Schutz extrem schwierig macht. Man weiß nicht, wann der Angreifer seinen Angriff startet, welche Ressourcen er zur Verfügung hat oder was sein Ziel ist.

Kryptographie ist ein Hilfsmittel um unsere Ziele zu erreichen. Die Herausforderung bei Kryptographie besteht primär in der der korrekten Anwendung bzw. Implementierung. So kann der protokollspezifische oder algorithmische Teil am Blatt korrekt sein, aber die Implementierung fehlerhaft sein - was alle Bemühungen zu Nichte macht (Dauerbrenner: Heartbleed). Und das Ganze natürlich vice versa. Zu beachten: Kryptographie ist nicht die Lösung für sichere Systeme - sie ist ein Teil davon.

Kryptoanalyse

Das Gegenstück zur Kryptographie ist die Kryptoanalyse. Die Definition von Wikipedia:

Die Kryptoanalyse (in neueren Publikationen auch Kryptanalyse) bezeichnet im ursprünglichen Sinne das Studium von Methoden und Techniken, um Informationen aus verschlüsselten Texten zu gewinnen. Diese Informationen können sowohl der verwendete Schlüssel als auch der Originaltext sein. Heutzutage bezeichnet der Begriff Kryptoanalyse allgemeiner die Analyse von kryptographischen Verfahren (nicht nur zur Verschlüsselung) mit dem Ziel, diese entweder zu “brechen”, d. h. ihre Schutzfunktion aufzuheben bzw. zu umgehen, oder ihre Sicherheit nachzuweisen und zu quantifizieren.

Wie können Daten abgehört werden?

Um den Kommunikationsverkehr zwischen Alice und Bob abzufangen, stehen dem Angreifer eine Vielzahl von Angriffspunkten zur Verfügung. Er kann unter anderem am Übertragungsmedium lauschen, er kann Netzwerkkomponenten manipulieren oder die Computer von Alice und Bob mit Schadsoftware infizieren.

Literatur

Der nachfolgende Block ist nur eine grobe Übersicht über die Thematik. Für genauere Informationen habe ich folgende Bücher als gut empfunden:

  • Kryptografie: Verfahren, Protokolle, Infrastrukturen von Klaus Schmeh. Sehr ausführliche und gut verständliche Einführung
  • Cryptography Engineering von Niels Ferguson, Bruce Schneier, und Tadayoshi Kohno. Das Buch hat auch sehr gut gefallen. Auch wenn Themenblöcke oft gleich wie in Klaus Schmehs Buch sind, so ist oft eine zweite Sicht auf ein Thema interessant.
  • Ristić, Ivan. “Bulletproof SSL and TLS.” Feisty Duck (2014). Gute Übersicht über die wichtigsten Crypto-Themen. Sollte für einen Software Entwickler genügen.

Methoden

Im Lauf der Zeit haben sich mehrere Methoden etabliert. Wir unterscheiden im Groben wie folgt:

Cipher Types

Allgemein

Verschlüsselung hilft Informationen geheim zu halten. Dazu wird ein Verschlüsselungsalgorithmus auf die zu versendende Nachricht angewandt. Wenn die Sicherheit eines Verfahrens (Algorithmus) von dessen Geheimhaltung abhängt (Algorithmus wird nicht veröffentlicht), so nennt man dies Security through Obscurity (verpönt). Im Kontrast dazu: die Idee, dass alleine die Geheimhaltung des Schlüssels die gewünschte Sicherheit bringt, wird Kerckhoffs’sches Prinzip genannt (bevorzugt).

Encryption

Die beiden fiktiven Personen Alice und Bob senden sich eine Nachricht m. Diese wird mit dem Schlüssel K verschlüsselt - die verschlüsselte Nachricht c wird an Bob geschickt und dieser kann sie unter zur Hilfenahme des geheimen Schlüssels wieder entschlüsseln. Dieses Verfahren nennt man Symmetrische Verschlüsselung.

One of the classical mistakes in cryptography is to think that encrypting a message also stops Eve from changing it. – Bruce Schneier

Angriffe auf die Verschlüsselung

Bevor wir uns mit der Symmetrischen Verschlüsselung im Detail beschäftigen - eine essentielle Frage die es zu beantworten gilt: Welche Methoden stehen einem Angreifer überhaupt zur Verfügung? Man unterscheidet zwischen folgenden Möglichkeiten:

Daneben gibt es auch noch exotische Angriffe:

  • Krypto-Schlüssel über das Erdungspotential ausspionierbar (heise)
  • Sidechannel Attacke (heise)

Von einer generischen Attacke spricht man, wenn sie nicht für einen speziellen Cipher entwickelt wurde. Ein Beispiel ist e.g. die Meet-in-the-middle attack, welche bei vielen Cipher funktioniert.

Algorithmen sollten veröffentlicht werden, damit sie auch Analysen von Experten unterzogen werden können. Militäreinrichtungen oder ähnlichen Einrichtungen halten sich nicht daran - haben allerdings auch genug Ressourcen, um intern Schwachstellen ausfindig machen zu können. Von Security by Intricacy spricht man, wenn man einen Algorithmus möglichst komplex macht, in der Hoffnung, dass er nie geknackt wird (verpönt).

Was ist bei einem Algorithmus eine Schwachstelle? Wenn es eine bessere Möglichkeiten gibt als die vollständige Schlüsselsuche (gesamter Suchraum) - dazu reichen auch statistische Verfahren oder Anomalien.

Wenn bei DES der Klartext und Schlüssel invertiert werden, so wird auch der Geheimtext invertiert - deswegen ist DES kein perfektes Zufalls Orakel (perfekt nur wenn kein Zusammenhang zwischen Geheimtext und Klartext erkennbar). Bis dato gibt es kein Verfahren, welches beweisbar sicher ist (außer das unhandliche One-Time-Pad).

Ein guter Algorithmus sollte daher

Schlüssellänge und Angriffe

Klaus Schmeh erklärt in seinem Buch anhand eines interessantes Beispiels, warum die Brute-Force Methode scheitert:

  • 2^128 sind ca. 3,4*10^38 Schlüssel
  • Annahme ist, dass ein Computer 10^11 Schlüssel pro Sekunde prüfen kann - hat der Angreifer 100 davon so braucht er 3,4*10^25 Sekunden
  • Hat der Angreifer Glück, hat er im 1% des Schlüsselraums einen Treffer - also braucht er 3,4*10^23 Sekunden
  • 4,3*10^17 Sekunden ist das Alter des Universums

Wie man sieht, ist die Brute Force Methode nicht zielführend (zumindest noch nicht - vermutlich).

Symmetrische Verschlüsselung

Bei einem symmetrisches Verfahren gibt es einen Schlüssel, mit dem sich die Nachricht verschlüsseln und entschlüsseln lässt.

Schlüssel K = 86F0860D10E3567FD15F5F515F9C05412B91C81BD3CF149C1A9772DFE1A0C35B (256 bit)
Nachricht m = Hallo Bob. Wie geht es dir?
Geheimtext c = A22D02A2831CA7D1EF568BA70237F402C382AF160C6079192D747BDD2F805BAE

Bevor es weiter geht, sollte man sich mit folgenden beiden Begriffen vertraut machen:

  • Transposition: Dabei werden die Zeichen einer Botschaft (des Klartextes) umsortiert. Jedes Zeichen bleibt zwar unverändert erhalten, jedoch wird die Stelle, an der es steht, geändert. (Wikipedia)
  • Substitution: Kennzeichen der Substitution ist, dass Buchstaben oder Zeichen oder auch Buchstabengruppen oder Zeichengruppen eines zu verschlüsselnden Klartextes durch andere Zeichen, genannt Geheimtextzeichen, ersetzt (substituiert) werden. Dadurch, dass Klartextzeichen durch Geheimtextzeichen substituiert werden, verlieren sie ihren “Charakter”, das heißt ihr Aussehen, und sind somit für unbefugte Blicke, zumindest auf den ersten Blick, nicht mehr zu erkennen. Claude Shannon bezeichnete dies mit dem Wort “Konfusion”. (Wikipedia)

Block Ciphers

Das oben gezeigte Beispiel entspricht einem Block Ciphers. Diese sind fundamentale Bausteine der Kryptographie. Ein Block Cipher ist eine Funktion, welche e.g. einen 256 bit Plaintext (die Nachricht) in 256 bit Ciphertext (Geheimtext) transformiert. Die Transformation geschieht unter zur Hilfenahme eines Geheimschlüssels.

Eine Blockverschlüsselung (auch Blockchiffre bzw. auf englisch block cipher genannt) ist ein deterministisches Verschlüsselungsverfahren, bei dem ein Klartext fester Länge auf ein Chiffrat fester Länge abgebildet wird. Die genaue Transformation wird dabei durch einen Schlüssel bestimmt. – Wikipedia

Im Laufe der Zeit wurden einige Entwurfsprinzipien entworfen, welche Grundlagen für diverse Verschlüsselungsalgorithmen sind. Diese sind (ein Auszug):

  • Produktchiffre: Hier kommt es zu einer Kombination der vorgestellten Methoden. Es erfolgt eine mehrfache Ausführung von Substitutionen und Permutationen.
  • Feistelchiffre: Ist eine Berechnungsvorschift, welche durch Mehrfachanwendung die erforderliche Komplexität erreicht. Eine Rundenschlüssel abhängige Rundenfunktion führt zur gewünschten Transformation. Ein Beispiel Algorithmus wäre der DES Algorithmus.
  • Substitutions-Permutations-Netzwerk: Besteht aus einer Anzahl gleicher Runden. Rundenschlüssels, Substitution durch eine Substitutionsbox und Vermischung durch eine Permutationsbox zeichnen diesen Algorithmus aus. Ein Beispiel Algorithmus wäre Rijndael

Rijndael (“Rendal”") - AES (Advanced Encryption Standard)

Im Jahr 2000 wurde der Rijndael von der NIST nach einem Wettbewerb als AES bekannt gegeben. Kryptoanalysten haben versucht, eine algebraische Formel zu entwickeln, welche es erlauben soll, verschlüsselten Text direkt in den Schlüssel umzuwandeln - es ist bis heute noch nicht gelungen die Formel zu lösen. Allerdings ist Vorsicht geboten, da AES mathematische Konstrukte nutzt, welche bis dato noch wenig Berührungspunkte mit der Kryptografie hatten - möglicherweise werden diese eines Tages geknackt. Der bis dato beste Angriff ist die Biclique-Kryptoanalyse - doch ist man weit davon entfernt diese praktisch verwenden zu können. Auch Quantencomputer und die XSL Attacke wird öfters erwähnt. Serpent ist eine Alternative zu Rijndael - langsamer, aber nutzt konventionelle Methoden und ist mit mehr Sicherheitspuffer versehen.

Padding

Padding ist ein sehr wichtiges Konzept in der Kryptographie. Hat man e.g. nur 96 Bit Nutzdaten zu verschlüsseln, so muss man die restlichen Daten bis 128 Bit (wenn dies die Blocklänge ist) auffüllen. Die korrekte Umsetzung ist aber alles andere als trivial. So kann es unter Umständen (je nach Umsetzung bzw. Wahl diverser Methodiken) zu sogenannten Padding Oracle Attacks kommen. Ein Beispiel wäre der Angriff auf SSL3 - die Poodle Attacke bzw. Poddle Attacke.

Block-Cipher-Mode

Blockciphers verschlüsseln nur Blöcke fixer Länge. Wenn man etwas verschlüsseln will, was nicht exakt 1 Block lang ist (e.g. 347 Bit mit 256 Bit Blocklänge), so muss man den Block-Cipher-Mode nutzen. Mit anderen Worten gibt der Betriebsmodus an, wie die Verschlüsselung auf mehrere Blöcke anzuwenden ist.

Erst die Kombination von Blockchiffre und Betriebsmodus erlaubt es, Nachrichten zu verschlüsseln, die länger sind als die Blocklänge. Üblicherweise wird dazu die Nachricht in mehrere Blöcke aufgeteilt und durch Padding auf eine passende Länge gebracht. Ein Initialisierungsvektor (IV) kann das Verfahren zusätzlich unabhängig vom verwendeten Schlüssel randomisieren. – Wikipedia

  • Electronic Codebook Modus (ECB): Klartext wird in 128 Bit Blöcke zerteilt und verschlüsselt. Der Modus ist monoalphabetisch. Die Betriebsart ist die einfachste - aber sicher nicht die beste (die Empfehlung ist: niemals nutzen). Folgende Nachteile ergeben sich im Betriebsmodus:
  • Der Angreifer kann die Reihenfolge der Blöcke ändern bzw. Blöcke doppelt einfügen
  • Gleiche Blöcke haben den gleichen Ciphertext
  • Cipher-Block-Chaining Modus (CBC): beim ECB Modus hat ein gleicher Klartextblock bei gleichen Schlüssel den gleichen Geheimtextblock. Durch XOR mit dem letzten Geheimtextblock kann das verhindert werden
  • Output-Feedback-Modus (OFB): Den Blockchiffre als Stromchiffre benutzen. Der Verschlüsselungsalgorithmus dient als Fortschaltfunktion. Eignet sich für Anwendungen, wo Pakete in kleinen Teilen kommen (e.g. RTP).
  • Cipher-Feedback-Modus (CFB): Ähnlich OFB, nur dass der Nachfolge-Geheimtextblock vom Vorhergehenden-Geheimtextblock abhängig ist.
  • Counter Modus (CTR): Hierbei wird ein erzeugter Geheimtextblock mittels XOR-Operation mit dem Klartext kombiniert. Momentan einer der beliebtesten Betriebsarten
  • Galois/Counter Mode: Ein relative neuer Betriebsmodus. Als wesentliche Eigenschaft bietet er einen authentifizierten Verschlüsselungsmodus mit assoziierten Daten, englisch Authenticated Encryption with Associated Data (AEAD) um sowohl die Authentifikation als auch die Verschlüsselung von Nachrichten zu ermöglichen. – Wikipedia
  • CCM Mode: Ebenfalls ein relativ neuer Betriebsmodus. CCM macht aus einer Blockchiffre ein Authenticated Encryption-Verfahren, das sowohl Vertraulichkeit als auch Integrität garantieren soll. – Wikipedia

Stromchiffren

Im Kontrast zu AES oder DES - welche Blockchiffren sind - wird hier ein Strom verschlüsselt. Der Klartext wird hier XOR mit einem Keystream (e.g. 128 Bit pro Iteration - Prinzip ähnlich One-Time-Pad) verschlüsselt. Der Keystream wird durch die Fortschaltfunktion berechnet - d.h., der Key ändert sich pro Iteration. Alice und Bob müssen sich hierbei auf einen Startwert einigen, mit der die Fortschaltfunktion startet.

Auch hier ist - wie bei eine One-Time-Pad - wichtig, dass der Keystream nur einmal verwendet wird. Tut man es trotzdem, so kann der Angreifer zwei Geheimtext XOR und erhält als Resultat ein XOR der beiden Klartexte. Anschließend kann er eine meist erfolgreiche Kryptoanalyse starten.

Eine Stromverschlüsselung ist im Gegensatz zur Blockchiffre nicht darauf angewiesen, dass sich erst genug zu verschlüsselnde Daten angesammelt haben, bis sie die Größe für einen Eingabeblock einer Blockchiffre erreicht haben, sondern kann jedes Klartextzeichen sofort in ein chiffriertes Ausgabezeichen übersetzen. – Wikipedia

Angriffe auf Stromchiffren

Prinzipiell gibt es hier auch wieder die drei Angriffsmethoden: Ciphertext-Only-, Known-Plaintext und Chosen-Plaintext Attacke. Im Falle von Stromchiffren bringt eine Chosen-Plaintext Attacke gegenüber einer Known-Plaintext Attacke aber keinen Vorteil. Der Angriff ist daher: Der Angreifer kennt einen Teil des Keystreams und versucht nun an den Klartext zu kommen. Auch wie bei Blockchiffren sind differentielle und lineare Kryptoanalyse möglich. Auch Related-Key Attacken sind ein Ansatz.

Strom vs Block Chiffren

Stromchiffren sind weniger gut untersucht. Grund ist, dass DES ein Block-Chiffre war. Auch am AES Wettbewerb durften nur Block-Chiffren teilnehmen. Vorteile von Strom-Chiffren:

  • Keystream kann vorberechnet werden und gepuffert werden - was einen Performancegewinn bringt
  • Tritt im Geheimtext ein Bitfehler auf, so ist im Klartext auch nur 1 Bit verloren. Im Kontrast ist bei einem Block-Chiffre der ganze Block unbrauchbar

Die Nachteile:

  • Vorteil nur bei längeren Klartexten, da Initialisierung aufwendig
  • Ändert der Angreifer ein Bit im Geheimtext, so ändert sich auch ein Bit im Klartext, was ein klarer Verstoss gegen das Zufallsorakel ist. So kann der Angreifer gezielt manipulieren - eine Hashfunktion schafft Abhilfe

Implementierungen

  • RC4: Besonders einfach und besonder schnell (in Software bis zu 10 Mal schneller als DES). Probleme gab es mit statistischen Angriffen und der Konfusionseigenschaft welche Anlass zur Vorsicht bei der Verwendung geben.
  • A5: wird bei GSM verwendet - unsicher
  • E0: wird u.a. bei Bluetooth verwendet - unsicher - nicht empfehlenswert
  • Crypto1: von NXP - sehr schlechter Chiffre - kann in 200 Sekunden mit nur 50 Kesystream-Bits geknackt werden
  • E-Stream Wettbewerb: Hier wurden Algorithmen gesucht, welche sich gut in Software (Rabbit, Salsa20, …) und gut in Hardware (Trivium, Grain, …) implementieren lassen

Asymmetrische Verschlüsselung (Public-Key Kryptographie)

Verschickt Alice an Bob ein Email mit dem aktuellen Schlüssel (den Sie in Zukunft planen zu nutzen), dann hat das wenig Sinn, da der Angreifer dann auch den Schlüssel kennt - man kann also getrost auf die Verschlüsselung verzichten. Welche Alternative gibt es?

  • Alice könnte Bob den Schlüssel persönlich geben
  • Alice und Bob verwenden einen Authentifizierungsserver wie e.g. Kerberos
  • Alice und Bob verwenden asymmetrische Verschlüsselung

Bei der Asymmetrischen Verschlüsselung gibt es einen Private Key und einen Public Key. Man kann aus dem öffentlichen Schlüssel nicht den privaten ableiten. Will Alice Bob eine Nachricht schicken, so verschlüsselt er die Nachricht mit Bob’s Public-Key. Bob kann die Nachricht mit seinem Private Key wieder entschlüsseln.

Zwei wichtige mathematische Verfahren sind Werkzeuge der asymmetrischen Verschlüsselung:

Diffie-Hellmann Schlüsselaustausch

Bei Diffie-Hellmann erzeugen zwei Kommunikationspartner jeweils einen geheimen Schlüssel, den nur diese beiden kennen. Dieser Schlüssel wird üblicherweise verwendet, um verschlüsselte Nachrichten mittels eines symmetrischen Kryptosystems zu übertragen. Das Diffie-Hellman-Problem nutzt das Diskrete-Logarithmus-Problem. Beispiel siehe Diffie-Hellmann Funktionsweise. Bei Diffie-Hellmann handelt es sich um ein non-authenticated Key-Agreementverfahren.

Es gibt einige Algorithmen, welche das Diskrete-Logarithmus Problem schneller lösen als die Brute-Force Methode. Daher ist es wichtig den Schlüssel groß genug zu wählen (2048 Bit ist Stand der Technik). Vorsicht ist vor Man-in-the-middle-Attacken geboten. Kennt der Angreifer den Privaten Schlüssel von Alice oder Bob, kann er großen Schaden anrichten. Alternativen können Verfahren wie MQV helfen dabei die Gefahr zu mildern, in dem mehrere Schlüsselpaare verwendet werden. Im Protokoll MQV wurden Schwachstellen entdeckt - der Nachfolger ist HMQV. Siehe auch Schwachstellen in HMQV.

Siehe auch allgemein: Schlüsselaustausch

RSA

Ist vielseitiger als Diffie-Hellman, da er zusätzlich noch zur asymmetrischen Verschlüsselung verwendet werden kann. Alice als auch Bob haben jeweils einen (unterschiedlichen) Private-Key. Da mathematische Operationen in der Regel mehr Angriffsfläche für die Kryptoanalyse bieten, müssen die Zahlen hier gut gewählt werden. Es gibt bei asymmetrischen Algorithmen u.a. zwei wichtige Angriffstypen:

  • Public-Key-Only-Attacke: Dem Angreifer steht nur der Public-Key zur Verfügung. Damit kann er beliebige Texte verschlüsseln
  • Chosen-Ciphertext-Attacke: in diesem Fall kann der Angreifer einen Text frei wählen und ihn von Alice verschlüsseln lassen

Ein Faktorisierungsangriff scheitert momentan noch bei 2048 Bit. Dabei wird der Public-Key genommen und es wird versucht die Zahl in zwei Primzahlen p und q zu zerlegen. Eine weitere wichtige Attacke ist die Low-Exponent-Attacke welche durch passende Wahl des Exponenten entschärft werden kann. Wichtig ist, dass falsche Wahl von Parameter oder eine kurze Schlüssellänge (oder auch andere Implementierungsfehler), führen bei RSA zu großen Sicherheitslücken.

DHE-RSA

Diffie-Hellmann ist anfällig für den Man-in-the-Middle-Angriff. Mit RSA wird die Nachricht zusätzlich signiert.

ECC (Elliptic Curve Cryptography)

Es gibt neben RSA und Co auch noch andere Verfahren - ECC. Wikipedia sagt dazu:

Da das Problem des diskreten Logarithmus in elliptischen Kurven (ECDLP) deutlich schwerer ist als die Berechnung des diskreten Logarithmus in endlichen Körpern oder die Faktorisierung ganzer Zahlen, kommen Kryptosysteme, die auf elliptischen Kurven beruhen – bei vergleichbarer Sicherheit – mit erheblich kürzeren Schlüsseln aus als die herkömmlichen asymmetrischen Kryptoverfahren.

Der schnellste Algorithmus hat eine oberere Schranke von O(2^(n/2)). Der mathematische Hintergrund ist in Klaus Schmehs Buch gut beschrieben. Der Vorteil liegt in der geringeren Schlüssellänge, welche benötigt wird, um e.g. die gleiche Sicherheit wie bei RSA zu erreichen.

Unterschied asymmetrisch und symmetrisch

  • Symmetrische Verfahren basieren auf einfachen bit-orientieren Verfahren - asymmetrische auf mathematisch anspruchsvollen Funktionen
  • Asymmetrische brauchen weitaus mehr Rechenkraft. So ist RSA im Vergleich zu AES ca. um den Faktor 1000 langsamer
  • Asymmetrische Verfahren sind anfälliger auf Implementierungsfehler
  • Bei asymmetrischen Verfahren ist die Schlüssellänge vollkommen variabel

In der Praxis werden meist nur Hypridverfahren (e.g. RSA und AES) eingesetzt. Auch RSA wird meist nur für den Schlüsselaustausch verwendet. Der Vorteil liegt darin, dass symmetrische Verfahren meist viel schneller sind.

Kryptografische Hashfunktion

Eine Hashfunktion nimmt eine Nachricht beliebiger Länge und produziert ein Resultat fixer Länge. Eine Hashfunktion wird auf die ursprüngliche Nachricht (Urbild) angewandt. Eine Hashfunktion sollte möglichst wenig Kollisionen haben (gleicher Hashwert zu unterschiedlichem Urbild). Um eine Hashfunktion für eine digitale Signatur verwenden zu können, muss garantiert werden, dass der Angreifer keine Kollision herbei führen kann - das wird dann als kryptografische Hashfunktion bezeichnet.

Eine kryptologische Hashfunktion oder kryptographische Hashfunktion ist eine spezielle Form der Hashfunktion, welche kollisionsresistent sein sollte und nach Definition immer eine Einwegfunktion ist. – Wikipedia

Hashfunktionen nutzen wie symmetrische Algorithmen einfache Bitoperationen und arbeiten blockbasiert. Folgende Angriffe sind bekannt:

  • Substitutionsattacke: Es werden einfache Teile einer Nachricht ersetzt. Hat man n Substitutionen gefunden, so kann man 2^n unterschiedliche Nachrichten generieren. Für all diese Nachrichten bildet man einen Hash und schaut, ob dieser dem Hash der Ursprungsnachricht entspricht. Hat man einen 160 Bit Hash, so muss man mindestens 160 Ersetzungsmöglichkeiten finden.
  • Geburtstagsproblem: Wie viele Leute müssen in einem Raum sein, dass mit der Wahrscheinlichkeit 1/2 zwei Leute am selben Tag Geburtstag haben? Angewandt auf Hashfunktionen heißt dass, dass bei einem 128 Bit Key nur 2^64 Hash Werte im Schnitt untersucht werden müssen.
  • Wörterbuchangriff: E.g. bei Passwörter kann man einer Wörterbuchattacke ein identer Hashwert gesucht werden. Gegenmaßnahmen: mit einem Salt wandelt man das Urbild so ab, dass es nicht in einem Wörterbuch zu finden ist. Für jedes Urbild sollte der Salt anders sein - er kann als Plaintext in der Datenbank gespeichert werden - auch kann der Angreifer den Salt kennen. Auch Pepper ist eine Lösung.
  • Regenbogentabellen: Berechnet man für alle Wörter vorab die Hashes, so muss man nur mehr danach suchen (es gibt im Internet fertige Tabellen). Allerdings braucht das viel Speicher. Regenbogentabellen schaffen Abhilfe.

Für das digitale Signieren wird oft auf Public-Key Methoden verzichtet, da diese teuer in der Anwendung sind. Stattdessen signiert man den Hashwert. Hash-Funktionen sind One-Way-Funktionen: Es ist einfach den Hash zu berechnen, aber nicht möglich, vom Hash auf die Ursprungsnachricht zu schließen.

Length extension Attack

Passiert, wenn Hashes für MAC der Form H(secret || message) “missbraucht” werden. Siehe Length extension attack: Angriffe

Kurzfassung: Es wird bei Hashes, welche dem Merkle–Damgård entsprechen, immer der letzte State zurückgegeben (siehe Grafik). Die Nachricht wird dabei immer aufgefüllt (Padding). Das macht sich der Angreifer zu Nutze: er füllt die Nachricht auf, initialisiert die Maschine mit dem bekannten Hash, und hängt dann noch eine Nachricht dran. Das Problem passiert, weil im letzten Schritt keine spezielle Behandlung passiert - es wird einfach der interne State zurückgegeben (=Hash).

Implementierungen

  • SHA-1: Kann schneller gebrochen werden als mit dem Geburtstagsproblem - sollte nicht mehr verwendet werden
  • SHA-224, SHA-256, SHA-384 und SHA-512: Nachfolger und können momentan als sicher betrachtet werden
  • MD5: noch häufig verwendet - aber die Hashlänge von 128 Bit ist am Limit - empfohlen wird min. 160 Bit. MD5 Kollisionen kann man auf einem normalen PC generieren - MD5 ist somit tod
  • SHA-3 (Keccak): Ähnlicher Wettbewerb wie AES. Keines der Algorithmen konnte in Sachen Performance SHA-2 das Wasser reichen. Daher ist SHA-3 als Alternative zu sehen - falls SHA-2 einmal geknackt wird oder umgekehrt. Weitere Implementierungen: Tiger, WHIRPOOL

Schlüsselabhängige Hashfunktionen

Will man unerlaubtes Ändern der Nachricht verhindern, so braucht man eine schlüsselabhängige Hashfunktion. Message Authentication Code (MAC) ist die Bezeichnung für diese Technik. Der Vorteil von schlüsselabhängigen Hashfunktionen ist klar: sie brauchen weniger Speicher und weniger Rechenzeit als digitale Signaturen. Im Kontrast dazu hat eine digitale Signatur eine Verbindlichkeit - sie kann nur von der Person mit dem privaten Schlüssel erstellt werden. Attacken sind Known-Preimage und Choosen-Preimage (Preimage = Urbild). Implementierungen:

  • HMAC: ist eine Art Message Authentication Code (MAC), dessen Konstruktion auf einer kryptografischen Hash-Funktion basiert. Wird e.g. mit SHA-256 genutzt
  • CRC-MAC
  • GMAC

Achtung: Der Angreifer kann die Nachrichten aufzeichnen und zu einem späteren Zeitpunkt wieder abspielen - siehe Replay Attacke.

Auch zu beachten ist das Horton Principle: Authenticate what is being meant, not what is being said. Man sollte eine Message m nicht nur als String betrachten, sondern den Teilen semantische Bedeutung geben (e.g. Message Header wie Counter, Source und Destination und Body). XML kann Abhilfe schaffen.

Hashbäume

Will man e.g. eine Datenbank signieren, so könnte Bob schwer einen einzelnen Eintrag verifizieren. Hashbäume erleichtern dies, in dem sie hierarchisch Hashwerte berechnen. Nehmen wir an, dass Alice eine Liste mit 1 Million Einträgen mit einem Hashbaum signiert hat. Statt 1 Million Einträge muss Bob jetzt nur ca. 20 Einträge verarbeiten. Siehe Wikipedia

Kryptografische Zufallsgeneratoren

Bei normalen randomisierten Zahlen heißt Zufall statitsisch gut verteilt und nicht vorhersehbar. Das ist allerdings für die Kryptografie zu wenig. Zufällig in der Kryptografie heißt mit realistischem Aufwand nicht vorhersagbar. Ein echter Zufallsgenerator basiert auf einem physikalischen Experiment. Mausbewegungen oder Latenzzeiten können hilfreich sein, wenn kein spezielles Hardwaremodul für die Generierung von Zufallszahlen vorhanden ist (was e.g. Spannungsschwankungen auf Bauteilen mist). Kommt ein Zufallsgenerator ohne physikalische Messung aus, so nennt man ihn Pseudozufallsgenerator. Hierbei muss der Startwert geheim bleiben, die Funktion zum Berechnen der Zufallsfolge kann der Angreifer aber kennen. Der Vorteil von Pseudozufallsgeneratoren ist, dass sie gut untersuchbar sind, da sie bei gleichem Startwert die gleiche Zufallsfolge liefern. Das Finden des Startwertes ist schwierig. In Software könnte man e.g. den Hash über einen Speicherbereich im Betriebssystem machen, welcher sich oft ändert bzw. - noch besser - oft von Hardware geändert wird. Eine Mischfunktion kann die Sicherheit noch erhöhen, in dem man aus mehren Quellen Zufallszahlen mischt (e.g. Pseudo-ZZG, Zeit, Speicherbereich, …).

Siehe e.g. Windows Implementierung

Die wichtigsten Pseudozufallsgeneratoren lauten:

  • Kryptografische Hashfunktion als Fortschaltfunktion
  • Schlüsselabhängige Hashfunktionen als Fortschaltfunktion
  • Blockchiffren als Fortschaltfunktion
  • Linear / Nicht linear rückgekoppelte Schieberegister
  • Zahlentheoretische Pseudozufallsgeneratoren

Zufällige Primzahlen kann man e.g. mit dem Miller-Rabin-Verfahren finden bzw. überprüfen.

Kryptografische Protokoll

Es ist nicht ausreichend, Daten einfach zu verschlüsseln. Parteien müssen sich oft initial einigen, wie sie es machen wollen.

Ein Netzwerkprotokoll (auch Netzprotokoll) ist ein Kommunikationsprotokoll für den Austausch von Daten zwischen Computern bzw. Prozessen, die in einem Rechnernetz miteinander verbunden sind (verteiltes System). Die Vereinbarung besteht aus einem Satz von Regeln und Formaten (Syntax), die das Kommunikationsverhalten der kommunizierenden Instanzen in den Computern bestimmen (Semantik). – Wikipedia

Trotz sicherer Kryptoverfahren sind Angriffe auf Protokolle möglich:

  • Replay Attacke: Der Angreifer fängt die verschlüsselte Nachricht ab und verschickt sie nach ein paar Tagen erneut. Gegenmaßnahme wären ein Zeitstempel oder ein Counter in der Nachricht. Ein Zeitstempel hat den Vorteil, dass der Angreifer die Nachricht nicht blocken kann und zu einem späteren Zeitpunkt erst schickt.
  • Spoofing Attacke: Sich als jemand anderer Ausgeben (e.g. der Angreifer gibt sich als Alice auf und nimmt zu Bob Kontakt auf).
  • Man-in-the-middle-Attacke: E.g. könnte man so eine verschlüsselte Session abhören, in dem man als Mittelsmann agiert und Nachrichten manipuliert. Beispiel siehe Diffie-Hellmann Man-in-the-middle-Attacke
  • Hijacking-Attacke: Geht etwas weiter als Man-in-the-middle und übernimmt die Kommunikation mit Bob zur Gänze. Authentifizierung kann Abhilfe schaffen
  • Known-Key-Attacke: Betrachtet man Protokolle (und sind diese fehlerhaft implementiert - e.g. Schlüsselaustausch), so kann es durchaus passieren, dass der Angreifer den Schlüssel bekommt. Abhilfe schaffen folgende Techniken:
  • Masterschlüssel und Sitzungsschlüssel: Der Masterschlüssel (e.g. auf einer SmartCard) wird nie zum Verschlüsseln verwendet und ist Alice und Bob bekannt. Dieser Schlüssel wird zum Generieren eines Sitzungsschlüssels verwendet - welcher wiederum für die Verschlüsselung des Klartextes verwendet werden kann.
  • Forward Security und Backward Security: Die Daten werden in einem Hybridverfahren von AES (wird täglich gewechselt) und RSA (zum Übertragen der Schlüssel) übertragen. Der Angreifer zeichnet die verschlüsselten Daten über Jahre hinweg auf. Das Protokoll kann nun so gestaltet sein, dass der Angreifer trotz Schlüssel eines Tages keine Möglichkeit hat vorhergehende Tage zu entschlüsseln - man spricht von Backward Security. Kann er dagegen Nachrichten nachgehender Tage nicht entschlüssel, spricht man von Forward Security. Dieffie-Hellmann oder besser MQV (bzw. HMQV) helfen dabei die beiden Konzepte umzusetzen.
  • Key-Compromise Impersonation Security: Wenn der Angreifer den privaten RSA / Diffie-Hellmann / DSA / ECC Schlüssel von Alice kennt, kann er sich als Alice ausgeben. Kann sich der Angreifer gegenüber Alice als andere Person ausgeben? Wenn er es nicht kann, so spricht man von Key-Compromise Impersonation Security. RSA, MQV (HMQV) unterstützen es - Diffie-Hellmann nicht.
  • Verkehrsflussanalyse: Analyse wann Daten fließen. Man kann Rückschlüsse ziehen
  • Denial Of Service Attacke: Einzelne Nachrichten können manipuliert oder verworfen werden. Auch kann Bob geflutet werden - die Nachrichten Verifikation kann u.U. rechen aufwendig sein und den Rechner von Bob stark verlangsamen

Weitere wichtige Protokolle bzw. Schlagworte die man kennen sollte

Authentifizierung

Authentifizierung ist die Überprüfung ob jemand der ist, als den er sich ausgibt. Will Bob die Echtheit von Alice überprüfen gibt es folgende Möglichkeiten:

  • Bob kontrolliert, ob Alice etwas bestimmtes weiß - Authentifizierung durch Wissen
  • Passwort: Erfährt jemand anderer das Passwort, kann auch er die Tür öffnen
  • Passgesten
  • Persönlich Information: Wie heißt dein erster Hund?
  • Bob kontrolliert, ob Alice e.g. einen schwer zu fälschenden Gegenstand hat - Authentifizierung durch Besitz
  • Ausweis
  • Bob kontrolliert eine besondere Eigenschaft von Alice (e.g. Fingerabdruck) - Authentifizierung durch Eigenschaft
  • Biometrische Authentifizierung

Authentifizierung

Messverfahren auf organische Objekte Ein Referenzwert wäre e.g. ein Fingerabdruck. Zusätzlich kann Alice ihren Namen angeben (Verifizierung). Wenn der Angreifer irrtümlich als Alice erkennt wird, so spricht man von einer Fehlerkennung (False Acceptance Rate). Auch kann passieren, dass Alice nicht erkannt wird (False Reject Rate). Weitere Methoden: Gesichtserkennung, Unterschriftenerkennung, Stimmerkennung, Iriserkennung.

In Computer Netzwerken Von einer Gegenseitigen Authentifizierung spricht man, wenn Bob sich gegenüber der Bank authentifiziert und die Bank gegenüber Bob. Passwörter und Einmal-Passwörter (e.g. TANs) sind gängige Methoden. Das Verfahren ist standardisiert unter dem Begriff One Time Passwort (OTP). Neben Passwörter gibt es auch noch das Challenge-Response Verfahren. Ein Beispiel wäre: Alice eine Passwort Tabelle geben und dann fragen: Gib mir das Passwort in Spalte 4, Reihe 3.

Neben dem Challenge-Response Verfahren gibt es noch OTP-Tokens (One-Time-Passwort). Das Passwort wird von einer speziellen Hardware generiert. Es gibt Varianten mit und ohne Tastatur (Challenge wird hier e.g. anhand der Uhrzeit berechnet). Hersteller:

Siehe auch HOTP und TOTP. Weitere Informationen für TOTP gibt es unter RFC6238. Testen kann man es hier.

Des Weiteren gibt es noch Erweiterungen, die wie folgt funktionieren:

  • Challenge-Response mit digitalen Signaturen: Server schickt Challenge an Alice, diese signiert die Challenge und schickt sie wieder an den Server zurück. Der Server verifiziert die Signatur. Der private Schlüssel kann e.g. auf einer Smart-Card gespeichert werden
  • Challenge-Response mit asymmetrischer Verschlüsselung: Asymmetrische Verfahren kommen normal zum Einsatz, wenn die zwei Parteien keine gemeinsame Information haben. Doch dieses Verfahren ist eine Ausnahme und wird Passwortbasierter Schlüsselaustausch genannt. Ein Beispiel Protokoll ist das SPEKE (Simple Password Exponential Key Exchange) Protokoll. Weitere Protokoll sind EKE, DH-EKE, B-SPEKE und PAK. Ein Netzwerkprotokoll ist unter dem Namen Secure Remote Password Protocol (SRP) spezifiziert.

Siehe auch:

Verteilte Authentifizierung

Angenommen eine Firma hat ein Webportal, eine Datenbank und ein Zeiterfassungssystem. Aller drei Systeme erfordern eigene Passwörter und Methoden zur Authentifizierung (e.g. SmartCard, Passwort, …). Das ist eine Schwachstelle, da Benutzer dabei unachtsam werden und Passwörter u.U. aufschreiben. Es gibt dabei folgende Ansätze:

  • Credential-Synchronisation: Auf allen Servern gleichen Authentifizierungsmethode und e.g. Passwörter abgleichen. Nachteil: Ist ein Server geknackt, sind es die anderen auch. Die Redential Synchronisation kann auf einem zentralen Server ausgelagert werden (RADIUS, DIAMETER).
  • Single-Sign-On: Geht einen Schritt weiter, sodass sich Alice nur 1 Mal anmelden muss. SSO wird oft nicht aus sicherheitstechnischen Gründen gemacht, sondern eher wegen Usabilitygründen. Bei SSO sollte die Hürde für den Angreifer aber sehr hoch sein (e.g. SmartCards statt weichen Passwörtern). Es gibt mehrere Methoden:
  • Ticket-SSO: eleganter als lokales SSO. Es gibt dabei einen Authentifizierungsserver, welcher Alice ein Ticket ausstellt, mit dem Sie die anderen Dienste nutzen kann. Beispiele sind SAML und Kerberos. Seit sich Public-Key-Infrastrukturen durchgesetzt haben, hat Kerberos deutlich an Bedeutung verloren. Es sollte nur innerhalb von Unternehmen eingesetzt werden, in denen Anwendern dem Betreiber ein gewisses Vertrauen entgegenbringen. SAML unterstützt SSO und Credential-Synchronisation. SAML wurde ursprünglich für Webservices entwickelt. Sehr beliebt ist SAML bei Kombination Web-SSO und Ticket-SSO. Siehe auch Shibboleth.
  • Web-SSO: Wenn mehrere Weblösungen involviert sind. Beispiel ist auch hier SAML

Schlüsselgenerierung und Speicherung

Eine Möglichkeit ist im RFC2898 beschrieben. In Section 5 ist die Vorgehensweise detailliert beschrieben. Die Windows Crypto API bietet eine Implementierung an. PKCS#12 kann dazu verwendet werden, um den Key geschützt in einer Datei zu speichern.

Public-Key-Infrastrukturen

Beim Einsatz asymmetrischer Verfahren ohne Infrastruktur ergeben sich folgende Probleme:

  • Authentizität des Schlüssels: Ist der öffentliche Schlüssel von Bob der richtige oder ist er jener des Angreifers?
  • Schlüssel sperren: Wie anderen Teilnehmern mitteilen, dass ein Schlüssel nicht mehr gültig ist
  • Verbindlichkeit: Eine Signatur abstreiten
  • Policy durchsetzen: bei einem öffentlichen Schlüssel sieht man nicht ob die Policy für ihn erfüllt ist

Durch ein digitales Zertifikat kann man einen Schlüssel und dessen Inhaber signieren. Man kann auch weitere Daten dem Zertifikat beifügen - wie e.g. die Gültigkeitsdauer. Ausgestellt wird ein Zertifikat von einer Certifikation Authority (CA). Eine CA kann in der IT-Abteilung aber auch ein externes Unternehmen sein. Als PKI bezeichnet man die Gesamtheit von Hard- und Software um digitale Zertifikate einzusetzen und eine eine CA zu betreiben. Alice und Bob müssen natürlich den öffentlichen Schlüssel von der zuständigen CA kennen, um ein Zertifikat verifizieren zu können. In Windows sieht man die Zertifikate mit certmgr.msc.

Vertrauensmodelle

Zertifikate stellen im Wesentlichen digitale Beglaubigungen dar. Somit stellt das Vertrauen zwischen dem Prüfer und dem Aussteller eines Zertifikates sowie die Art und Weise, wie dieses Vertrauen zustande kommt, die wesentliche Basis für die Verwendung digitaler Zertifikate dar. Umgekehrt lassen sich solche Vertrauensmodelle in der Regel erst durch Zertifikate technisch umsetzen. – Wikipedia

  • Direct Trust: Bob kann sich selbst ein Zertifikat ausstellen oder auch ausstellen lassen und übergibt Alice Schlüssel + Zertifikat bei e.g. CD-ROM
  • Authentizität des Schlüssels: in kleinen Kreisen durchaus realisierbar
  • Schlüssel sperren: Bob kann das Alice persönlich mitteilen
  • Verbindlichkeit: Bob kann jederzeit abstreiten dass es sich bei einem bestimmten öffentlichen Schlüssel um seinen handelt
  • Policy durchsetzen: schwierig bis unmöglich
  • Web-Of-Trust: Es lassen sich beliebige Vertrauensketten bilden.
  • Authentizität des Schlüssels: funktioniert in kleinen Kreisen gut - in großen schwierig
  • Schlüssel sperren: Schwieriger als bei Direct-Trust, da die Sperrung allen Betroffenen mitgeteilt werden muss
  • Verbindlichkeit: Etwas besser als bei Direct-Trust, da es ja Bürgen gibt
  • Policy durchsetzen: Schwer zu erreichen
  • Hierachical Trust: Ausstellen von einer CA - es handelt sich also um eine PKI
  • Authentizität des Schlüssels: Funktioniert in einer PKI sehr gut
  • Schlüssel sperren: Sperrung funktioniert sehr gut
  • Verbindlichkeit: hohes Maß an Verbindlichkeit
  • Policy durchsetzen: erheblich einfacher als bei Direct-Trust oder Web-Of-Trust

Funktionsweise einer PKI

Mit Public-Key-Infrastruktur (PKI, englisch public key infrastructure) bezeichnet man in der Kryptologie ein System, das digitale Zertifikate ausstellen, verteilen und prüfen kann. Die innerhalb einer PKI ausgestellten Zertifikate werden zur Absicherung rechnergestützter Kommunikation verwendet. – Wikipedia

  • Komponenten: Die Zentralen Komponenten einer PKI werden meist unter Trust Center zusammengefasst
  • Zertifizierungsstelle (CA): Erstellt Zertifikate und Sperrlisten
  • Hardware Security Modul (HSM): Der Vorteil von einer HSM ist, dass der Schlüssel sicher gespeichert wird und nicht auf dem CA Rechner im Arbeitsspeicher landet
  • Zertifikateserver: Ermöglicht Alice und Bob Zugriff auf Zertifikate und Sperrlisten. Meist umgesetzt mit LDAP Protokoll
  • Zeitstempeldienst (TSA): eine vertrauenswürdige Instanz um e.g. das Signierdatum zu erfassen.
  • Registrierungsstelle (RA): eine CA kann 0 bis n RAs haben
  • Sperrstellen
  • PKI-Anwendung: Beispiele sind E-Mail Verschlüsselung, VPN, …
  • Personal Security Environment (PSE): Umgebung, in der der private Schlüssel von Alice gespeichert wird. Es gibt dazu einige Standards
  • Rollen im PKI: Rollen sind e.g. CA-Operator bis hinzu Registrator, welcher für die RA stellen zuständig ist
  • Prozesse in einer PKI: e.g. Key-Recovery oder Sperren von Zertifikaten

Als weniger aufwendige Alternative bietet sich die Identitätsbasierte Krypto-Systeme an - diese haben aber kaum Praxis-Relevanz.

Soll man nun eine PKI Infrastruktur Outsourcen oder nicht? Für den Eigenbetrieb sprechen:

  • Sicherheitskritische Dienstleistung bleibt im Haus
  • Bei vorhandenen Ressourcen eventuell kostengünstiger
  • Flexibler

Für Outsourcing spricht:

  • Einfacher und nervenschonender
  • Wenn Performance und Ausfallsicherheit wichtig sind - billiger
  • Qualifizierte Zertifikate nach deutschem Signaturgesetz fordert sehr viel

A-Trust ist die einzige Zertifizierungsstelle in Österreich, die qualifizierte Zertifikate ausgibt. Qualifizierte Zertifikate (Zertifikate mit Personenbindung) sind beispielsweise in allen E-Government-Anwendungen zwingend vorgeschrieben. Nur eine qualifizierte Signatur entfaltet vor Gericht auch diesselbe Rechtskraft wie die eigenhändige Unterschrift auf Papier.

Digitale Zertifikate werden meist im Format X.509v3 ausgetauscht.

Kryptografische Netzwerkprotokolle

Ein sicheres Protokoll besteht meist aus einer Initialisierungsphase und einer Datenübertragungsphase.

  • Initialisierungsphase: Schlüsselaustausch. Am einfachsten persönlich. Wenn kein Schlüssel vorhanden ist RSA / Diffie-Hellmann. Viele Protokolle stützen sich hier auf eine PKI. Aber auch symmetrischer Schlüsselaustausch mit Kerberos (durch Verwendung des Sitzungsschlüssels) ist möglich.
  • Datenübertragungsphase: Der in der Initialisierungsphase ausgehandelte Schlüssel wird meist als Masterschlüssel verwendet. Mit einer kryptografischen Hashfunktion wird ein Sitzungsschlüssel erstellt. Für symmetrische Verfahren bietet sich AES mit der Betriebsart CBC, CFB und CTR an. Auch eine Integritätsprüfung bringt zusätzliche Sicherheit.

Sicherheit im OSI Schichtenmodell:

  • Layer 2: CHAP bzw. MS-CHAP, etwas besser EAP für PPP (Point-to-Point Protocol). VPN ist auch eine Technik in diesem Layer (PPTP von Microsoft, L2TP). Auch WLAN Methoden wie WPA / WEP finden sich in dieser Schicht.
  • Layer 3: IP sah ursprünglich keine Kryptografie vor - es entstand IPsec. IPsec ist fester Bestandteil von IPv6. IPsec ist recht komplex und umstritten. Allerdings gibt es derzeit keine Alternative. Ebenfalls kann man VPNs mit IPsec machen - da IPsec Authentifizierung und Verschlüsselung von Haus aus unterstützt, hat es die Alternativen PPTP und L2TP längst überholt.

Als Authentifizierungsverfahren bietet L2TP die Verfahren CHAP (Challenge Handshake Authentication Protocol) und PAP (Password Authentication Protocol) an. Eine Verschlüsselung ist in L2TP direkt nicht enthalten. Dies muss von Protokollen der unteren Schichten übernommen werden. L2TP wird deshalb oft in Kombination mit IPSec verwendet. (RFC 3193 – ““Securing L2TP using IPSec”). IPsec kann aber auch alleine für VPNs verwendet werden. – Wikipedia

  • Layer 4: In der Schicht findet man TCP und UDP vor. Beide enthalten ursprünglich keine Kryptografie - Secure Socket Layer (SSL) schafft Abhilfe.

SSL 3.1 wurde als TLS 1.0 standardisiert. Während IPsec IP Pakete manipuliert, fügt SSL eine extra Schicht hinzu. SSL spezifiziert kein spezielles Kryptoverfahren (es steht RC2, RC4, 3DES und AES zur Auswahl). Als schlüsselabhängige Hashfunktion wird HMAC basierend auf SHA256 spezifiziert - Alternativen sind möglich. Für den Schlüsselaustausch wird RSA und Diffie-Hellmann unterstützt. Als Signaturverfahren für die Authentifizierung RSA und DSA. Vergleicht man nun IPsec und SSL:

  • SSL lässt nur eine Ende-zu-Ende Verbindung zu. IPsec kann auch Teilstrecken zwischen zwei Routern verschlüsseln
  • SSL ist näher an der Anwendung und kann die Verfahren mit dieser abstimmen
  • SSL arbeitet nicht mit UDP zusammen
  • SSL lässt sich leicht in bestehende Strukturen einbauen - IPsec benötigt Modifikaationen
  • IPsec verwendet IKE als in Schicht-7 als Schlüsselmanagement Protokoll - bei SSL ist alles in einem Layer

In homogenen Umgebungen empfiehlt sich IPsec (gleiche PC Konfiguration / Administration). In nicht homogenen SSL.

Secure Channel nach Schneier und Ferguson

Eine ebenfalls interessante Sichtweise bietet Schneier und Ferguson in ihrem Buch Ferguson, Niels, Bruce Schneier, and Tadayoshi Kohno. Cryptography engineering. John Wiley & Sons, 2010.

Im Buch wird eine gute Analogie präsentiert: Kryptografie ist wie ein Schloss - in der realen Welt ist ein Schloss alleine nutzlos. Erst der Einsatz in einem größeren System macht es sinnvoll.

The same goes for cryptography: it is just a small part of a much larger security system. […] You have probably seen the door to a bank vault, at least in the movies. You know, 10-inch-thick, hardened steel, with huge bolts to lock it in place. It certainly looks impressive. We often find the digital equivalent of such a vault door installed in a tent. The people standing around it are arguing over how thick the door should be, rather than spending their time looking at the tent. – Schneier und Ferguson

Es ist wichtig, Kryptografie richtig zu implementieren, da ein “Einbruch” ggf. unentdeckt bleibt (der Angreifer kann offline entschlüsseln). Um auf mögliche Angriffe besser gewappnet zu sein, sollte man diese mit e.g. Attack Trees analysieren. A security system is only as strong as its weakest link. - sollte ein Link versagen, ist es daher wichtig ein Backup zu haben (Defence in Depth. Die Feststellung, ob ein System sicher ist oder nicht, ist ohne weiteres nicht möglich. Reviewing von Experten kann einen gewissen Grad an Zuversicht geben - mehr aber auch nicht.

Festzuhalten ist, dass Kryptographie kompliziert ist - aber noch der einfachste Teil eines Security-Systems.

Eine Secure Channel ist eine asynchrone Kommunikation zwischen Alice und Bob. Beide Parteien müssen wissen, welche Identität sie einnehmen (e.g. Server / Client oder Initiator / other participant). Dem Angreifer steht es frei, Nachrichten am Kanal zu ändern, zu löschen oder zu modifizieren. Der Schlüssel (Key) ist dabei ein elementares Element mit folgenden Eigenschaften:

  • Der Schlüssel ist nur Alice und Bob bekannt

  • Jedesmal wenn ein Secure-Channel initialisiert wird, wird ein neuer Schlüssel erzeugt (Session-Key) Einer der wichtigsten Dinge ist ein hochwertiges Softwareprojekt. Korrektes Requirement Engineering und gute Code Qualität wie e.g.

  • Simplicity

  • Modularization

  • Assertions

  • Testing

Ein weiterer Punkt sind Side-Channel-Attacks. Unter einem Seitenkanalangriff versteht man eine Angriffsmethode, der keine kryptographischen Zusatzinformationen verwendet. Man verwendet stattdessen die Ausführungszeit oder andere Messwerte. Zeitangriffe (Time-Attacks) funktionieren bei asymmetrischen Verfahren besser, da diese aufwendigere Rechenmodelle haben. Ein symmetrischer Algorithmus hat meist nur einfache Operationen wie XOR. Die Technik ist sehr effektiv - RSA Schlüssel konnten innerhalb weniger Stunden ermittelt werden. Verhindert kann das durch ein Blinding werden (e.g. künstlich Verzögern). Ein Stromangriff nutzt den Stromverbrauch unterschiedlicher Bauteile aus. Fazit: die richtige Umsetzung ist sehr wichtig - Kryptographie-Algorithmen alleine helfen nichts. Eine andere Möglichkeit ist durch Malware an den privaten Schlüssel zu kommen.