Feb 26, 2016
development securityÖffnet man die Zusatzinformationen von google.at, so wird man mit einer Vielzahl von Imformationen konfrontiert. AES_128_GCM, ECDHE_RSA - was bedeutet das? Grund genug, sich das mal genau anzuschauen
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:
Die Liste ist lange - und wird in Zukunft immer länger werden.
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.
Die zwei fiktiven Kommunikationspartner Alice und Bob wollen unter zur Hilfenahme von Kryptographie über einen unsicheren Kommunikationskanal kommunizieren. Kryptographie verhindert,
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.
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.
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.
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.
Der nachfolgende Block ist nur eine grobe Übersicht über die Thematik. Für genauere Informationen habe ich folgende Bücher als gut empfunden:
Im Lauf der Zeit haben sich mehrere Methoden etabliert. Wir unterscheiden im Groben wie folgt:
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).
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
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:
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
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üssel10^11
Schlüssel pro Sekunde prüfen kann - hat der Angreifer 100 davon so braucht er 3,4*10^25
Sekunden3,4*10^23
Sekunden4,3*10^17
Sekunden ist das Alter des UniversumsWie man sieht, ist die Brute Force Methode nicht zielführend (zumindest noch nicht - vermutlich).
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:
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):
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 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.
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
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
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.
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:
Die Nachteile:
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?
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:
f(x)=a^x mod n
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
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:
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.
Diffie-Hellmann ist anfällig für den Man-in-the-Middle-Angriff. Mit RSA wird die Nachricht zusätzlich signiert.
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.
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.
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:
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.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.
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).
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:
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.
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
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:
Zufällige Primzahlen kann man e.g. mit dem Miller-Rabin-Verfahren finden bzw. überprüfen.
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:
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:
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:
Siehe auch:
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:
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.
Beim Einsatz asymmetrischer Verfahren ohne Infrastruktur ergeben sich folgende Probleme:
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
.
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
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
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:
Für Outsourcing spricht:
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.
Ein sicheres Protokoll besteht meist aus einer Initialisierungsphase und einer Datenübertragungsphase.
Sicherheit im OSI Schichtenmodell:
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
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:
In homogenen Umgebungen empfiehlt sich IPsec (gleiche PC Konfiguration / Administration). In nicht homogenen SSL.
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:
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.