Sie verwenden wahrscheinlich jeden Tag Verschlüsselung in der einen oder anderen Form. Du weißt vielleicht nicht, dass du es bist, aber du bist es. Und meine Vermutung ist, dass Sie es nicht einen zweiten Gedanken geben. Haben Sie ein Abonnement basierte Kabel-oder Satelliten-TV-Service? Ratet mal, einige dieser Inhalte werden verschlüsselt. Tun Sie eine Verbindung zu websites mit https://? Das ist mehr Verschlüsselung. Jemals erstellt ein .zip-Datei mit einem Passwort? Sie haben es, die Verschlüsselung verwendet.,
ich könnte weitermachen und eine Liste Dutzende andere Beispiele für jeden Tag-Verschlüsselung, aber das werde ich nicht. Wie für Android, es unterstützt auch Verschlüsselung, nicht nur für das web mit https://, aber auch für Ihre Dateien und Daten. Android 6.0 Marshmallow verwendete die vollständige Festplattenverschlüsselung, während Android 7.0 Nougat die Option für die Verschlüsselung pro Datei hinzugefügt hat. Die Idee ist, dass, wenn Ihr Telefon in die Hände von Unfreundlichen fallen sollte, Ihre privaten Daten sicher sind.
Also, was ist Verschlüsselung? Es ist der Prozess, einfache Daten, einschließlich Text, zu nehmen und in eine unlesbare (von Menschen oder Computern) Form umzuwandeln., Der Verschlüsselungsprozess basiert auf einem Schlüssel, wobei die Analogie hier ein Schloss ist, das einen Schlüssel benötigt, und nur Personen mit dem Schlüssel können die Daten entsperren (entschlüsseln) und wieder in ihre ursprüngliche Form bringen. Dies bedeutet, dass jeder, der Ihre verschlüsselten Daten erhält, sie nur lesen kann, wenn er den Schlüssel hat.
Wie der Tom Jericho Charakter in dem ausgezeichneten Film Enigma es ausdrückte: „Es verwandelt Klartextnachrichten in Gobbledygook. Am anderen Ende befindet sich eine andere Maschine, die die Nachricht zurück in den Originaltext übersetzt.“Verschlüsselung und Entschlüsselung!,
Alles begann mit Caesar
Die Kunst des geheimen Schreibens, was wir Verschlüsselung nennen würden, gibt es seit mindestens 2500 Jahren, aber das bekannteste Beispiel aus der Antike ist die Substitutionschiffre, die Julius Caesar zum Senden von Nachrichten an Cicero verwendet., Eine Substitutionsverschlüsselung funktioniert so, Sie beginnen mit dem Alphabet in einer Zeile und fügen dann eine zweite Zeile hinzu, wobei das Alphabet ein wenig verschoben ist:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZX Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Wenn Sie das Wort „HALLO“ verschlüsseln möchten, nehmen Sie den ersten Buchstaben H und schauen sich den Buchstaben darunter an, der Ihnen E gibt, Dann gibt das E B und so weiter. Die verschlüsselte Form von HALLO ist EBIIL. Um es zu entschlüsseln, suchen Sie E in der unteren Reihe und sehen das H darüber, dann das B unten, um das E darüber zu erhalten und so weiter. Schließen Sie den Vorgang ab, um HALLO zu erhalten.,
In diesem Fall ist die“ Taste “ 3, da das Alphabet drei nach rechts verschoben wurde (Sie können stattdessen auch nach links wechseln). Wenn Sie zu key wechseln, um 5 zu sagen, erhalten Sie Folgendes:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
Jetzt wäre die verschlüsselte Version von HELLO CZGGJ. Ganz anders EBIIL. In diesem Fall ist der Schlüssel 5. Magie!
Allerdings gibt es einige große Probleme mit dieser Form der Verschlüsselung. Zunächst einmal gibt es nur 26 Tasten. Sie haben vielleicht von Leuten gehört, die über 128-Bit-Schlüssel oder 256-Bit-Schlüssel sprechen, nun, dies ist ein 5-Bit-Schlüssel (dh 26 in Binärdatei ist 11010)., Es würde also nicht allzu lange dauern, alle 26 Variationen auszuprobieren und zu sehen, welche verständlichen Text erzeugt.
Zweitens hat Englisch (und andere Sprachen) bestimmte Eigenschaften. Wenn Sie also einen guten Textblock haben, können Sie sehen, welcher Buchstabe am häufigsten erscheint, und dann erraten, dass es E. Verschieben Sie das untere Alphabet, um E mit dem gebräuchlichsten Zeichen abzugleichen, und Sie haben wahrscheinlich den Code geknackt. Es gibt auch nur wenige Buchstaben, die sich auf Englisch verdoppeln können, wie OO, LL, SS, EE und so weiter., Wann immer Sie ein Double wie das II oder GG sehen (aus den obigen Beispielen), sollten Sie zuerst versuchen, diese in den Alphabeten abzugleichen.
Die Kombination des kleinen Schlüssels und die Tatsache, dass derselbe Buchstabe immer denselben entsprechenden Buchstaben auf dem Chiffrenalphabet verschlüsselt, bedeutet, dass dies eine sehr schwache Verschlüsselung ist. Und heute mit Computern die harte Arbeit zu tun, das ist jenseits schwach!,
Mehr Alphabete und unzerbrechliche Verschlüsselung
Die Schwächen der Caesar-Substitutions-Chiffre können durch die Verwendung von mehr als einem verschobenen Alphabet leicht gelindert werden. Das folgende Beispiel kann auf 26 verschobene Alphabete erweitert werden, von denen mehrere gleichzeitig verwendet werden, aber nicht alle.
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZZ A B C D E F G H I J K L M N O P Q R S T U V W X YY Z A B C D E F G H I J K L M N O P Q R S T U V W XX Y Z A B C D E F G H I J K L M N O P Q R S T U V WW X Y Z A B C D E F G H I J K L M N O P Q R S T U VV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
Wenn wir also den Schlüssel auf W setzen, bedeutet dies, dass wir das Alphabet verwenden, das zuerst mit W beginnt, dann mit V und schließlich mit Y. Dies wird dann wiederholt, um die gesamte Nachricht zu codieren. Also HALLO würde DZJHJ werden., Beachten Sie, dass jetzt das doppelte L in HELLO nicht mehr als dasselbe Zeichen codiert ist, sondern jetzt J und dann H. Außerdem ist das erste J im verschlüsselten Text der Code für L, während das zweite der Code für O ist O. J repräsentiert jetzt nicht immer den gleichen Klartextbuchstaben.
Eine Version dieser Idee mit 26 Alphabeten ist die Grundlage der Vigenère-Chiffre, die im 16. Eine ähnliche Idee wurde 1553 auch von Giovan Battista Bellaso beschrieben., Die Vigenère-Chiffre blieb 300 Jahre lang unzerbrechlich, bis sie von Charles Babbage und dann von Friedrich Kasiski geknackt wurde. Das Geheimnis, um die Vigenère-Chiffre zu brechen, besteht darin, zu verstehen, dass letztendlich dieselben Wörter mit denselben Buchstaben codiert werden können, da immer wieder dieselben Alphabete verwendet werden. Das Wort “ UND “ könnte also in den ersten Malen, in denen es erscheint, anders codiert werden, aber letztendlich wird es erneut mit denselben Buchstaben codiert. Wiederholung ist im Allgemeinen der Untergang einer Chiffre.,
Wiederholung ist die Schwäche der Caesar-Chiffre, der Vigenère und aller Varianten, aber es gibt eine Möglichkeit, eine Alphabet-Chiffre zu verwenden, um einen unzerbrechlichen Geheimcode ohne Wiederholungen zu erstellen. Die Idee ist, dass anstelle eines verschobenen Alphabets eine zufällige Buchstabenfolge verwendet wird. Diese Sequenz muss wirklich zufällig sein und die gleiche Länge wie die Nachricht haben.
I S T H I S U N B R E A K A B L EP S O V Y V U B M W S P A H Q T D
Anstatt diesmal eine gerade Substitution durchzuführen, verwenden wir Addition mit einer Drehung., Jedem Buchstaben des Alphabets wird eine Zahl zugewiesen, A ist 0, B ist 1, C ist 2 und so weiter. I ist der 9. Buchstabe des Alphabets, was bedeutet, dass es einen Wert von 8 hat. P (der Buchstabe darunter auf unserer einmaligen Chiffre Pad) 15. 8 + 15 = 25 was bedeutet X. Der zweite Buchstabe unserer Nachricht ist S, der den Wert 18 hat. Es passiert einfach so, dass S auch der Buchstabe auf unserem einmaligen Pad ist (was überhaupt kein Problem ist). 18 + 18 = 36. Jetzt ist hier die Wendung, es gibt keinen 36.Buchstaben des Alphabets. Wir führen also eine sogenannte Moduloperation durch., Was das im Grunde bedeutet, ist, dass wir das Ergebnis durch 26 (die Anzahl der Buchstaben im Alphabet) geteilt und den Rest verwendet haben. 36 / 26 = 1 Rest 10. Der Buchstabe mit dem Wert 10 ist K. Wenn Sie dies weiterhin tun, lautet die endgültige verschlüsselte Nachricht:
X K H C G N O O N N W P K H R E H
Der Grund, warum dieser Code unzerbrechlich ist, ist, dass Sie den Schlüssel (die zufällige Zeichenfolge) immer nur einmal verwenden. Dies bedeutet, dass jeder, der versucht, die Nachricht zu dekodieren, keinen Bezugspunkt hat und es keine Wiederholung gibt. Die nächste zu sendende Nachricht verwendet einen völlig anderen Zufallsschlüssel und so weiter.,
Das größte Problem bei einmaligen Pads besteht darin, die Schlüssel an die andere Partei zu senden, damit sie die Nachricht entschlüsseln können. Traditionell wurde dies mit einem Buch in Form eines Notizblocks gemacht, mit den verschiedenen Codes auf jeder Seite. Welche Seiten verwendet wurden, würde sich jeden Tag ändern und sobald ein Code verwendet wurde, konnte er vom Pad gerissen und verworfen werden. Diese Pads müssen jedoch sicher transportiert werden. Denn wenn jemand anderes die Codes erhält, kann die Verschlüsselung geknackt werden., Dies bedeutete im Grunde, dass Sie sich vorher mit der anderen Partei treffen und vereinbaren mussten, welche Codes wann verwendet werden. Es ist die sicherste Methode, aber es ist auch die umständlichste, und es ist sicherlich keine praktikable Lösung für die heutige moderne digitale Welt.
Das digitale Zeitalter
Während des 20. Jahrhunderts wurde die Verschlüsselung mechanisiert, das berühmteste Beispiel ist die Enigma-Maschine, die von den Nazis während des Zweiten Weltkriegs benutzt wurde., Die computergestützte Kryptographie hat drei große Vorteile:
- Computer sind flexibel, im Gegensatz zu mechanischen Boxen können Computer so programmiert werden, dass sie viele verschiedene Operationen an einer Nachricht ausführen, und die Anzahl und Komplexität dieser Operationen kann relativ schnell geändert werden.
- Geschwindigkeit.
- Computer beschäftigen sich mit Binärzahlen, nicht nur mit Buchstaben.
Die Punkte 1 und 2 sind sehr wichtig, insbesondere beim Vergleich von Computern mit mechanischen Verschlüsselungsmethoden. Der Paradigmenwechsel besteht jedoch darin, dass Computer mit Zahlen und nicht mit Buchstaben umgehen., Dies bedeutet, dass die Verschlüsselung auf jede Art von Daten angewendet werden kann. Eine Textnachricht, ein Bild, eine Audiodatei, ein Film, eine Datenbank, Dateien auf einem Smartphone und so weiter.
Mit dem Wechsel von Buchstaben zu binär kam eine Änderung, wie Verschlüsselung durchgeführt wird. Ganze Buchstaben müssen nicht mehr verschlüsselt werden, sondern die Einsen und Nullen können manipuliert werden, um neue Sequenzen zu ergeben. Das Wort HALLO in 8-Bit ASCII ist 0100100001000101010011000100110001001111. Von hier aus kann die Binärdatei auf vielfältige Weise manipuliert werden. Es kann geteilt, verschoben, hinzugefügt, multipliziert werden, was auch immer.,
Die Methode zur Verarbeitung der Einsen und Nullen wird als kryptographischer Algorithmus bezeichnet und es gibt viele verschiedene Arten von Algorithmen. Die Hauptmerkmale eines Verschlüsselungsalgorithmus sind seine Sicherheit (kann es geknackt werden) und seine Leistung (wie lange dauert es, Daten zu codieren oder zu dekodieren).
Stream-Chiffren sind wie einmalige Pads, da die Daten nicht nur gegen einen einzelnen Schlüssel verschlüsselt werden, sondern eine Folge von Pseudozufallszahlen, die auf dem Schlüssel basiert. Der Unterschied zwischen einem einmaligen Pad und einer Stream-Chiffre besteht darin, dass bei einem einmaligen Pad der Schlüssel wirklich zufällig sein muss. Mit Stream-Chiffren mit dem gleichen Schlüssel bedeutet, dass Sie die gleiche Folge von Zahlen erhalten, das ist, was es möglich macht, die Nachricht zu dekodieren., Ohne den Schlüssel sieht die Sequenz jedoch zufällig aus und ist daher schwer zu brechen.
Die Schwäche von RC4 war, dass es unter bestimmten Umständen und unter bestimmten Bedingungen (hauptsächlich wenn dieselben Daten wiederholt verschlüsselt wurden) möglich ist zu erraten, welche Zahlen in der Folge als nächstes kommen könnten. Diese Vermutung reduziert die Anzahl möglicher Kombinationen und ermöglicht die Verwendung eines Brute-Force-Angriffs (bei dem jede Kombination versucht wird). Damit der Angriff funktioniert, werden viele Daten benötigt. Der RC4 NO MORE Attack muss verschlüsselte Daten im Wert von 75 Stunden sammeln, basierend auf 4450 Anfragen pro Sekunde.,
Der andere Haupttyp der Chiffre ist die Blockchiffre. Dies funktioniert, indem die Daten in besser verwaltbare Blöcke unterteilt werden, z. B. 64-Bit. Jeder Block wird mehrmals verarbeitet, bekannt als Runden (wie im Boxen). Für jede Runde wird der Block in zwei gleiche Teile geteilt, die linke und die rechte. Der rechte Teil bleibt unberührt, während der linke Teil mit einer speziellen Funktion verschlüsselt wird, die als runde Funktion bezeichnet wird. Die runde Funktion nimmt zwei Eingänge, den Schlüssel und den rechten Teil (den Teil, der unberührt blieb). Das Ergebnis der runden Funktion wird dann mit XOR zum linken Teil „hinzugefügt“.,
Dieses Modell ist als Feistel-Chiffre bekannt, benannt nach ihrem Erfinder Horst Feistel, der bei IBM an der Verschlüsselung arbeitete. Seine Arbeit führte schließlich zur Entwicklung des Data Encryption Standard (DES). 1977 wurde DES der offizielle Verschlüsselungsstandard für die Vereinigten Staaten und wurde weltweit eingeführt. DES verwendet 16 Runden, die an 64-Bit-Blöcken arbeiten. Das Problem bei DES ist, dass die NSA die Schlüsselgröße auf 56 Bit begrenzt hat. Während dies 1977 ausreichte, wurde es für Nichtregierungsorganisationen Ende der 1990er Jahre möglich, verschlüsselte Nachrichten abzubrechen.,
Exklusiv ODER (XOR) – Dies ist eine logische Operation auf Bitebene, die auf 2 Eingabebits A und B angewendet wird.Die exklusive ODER gibt true oder false (1 oder 0) an die Frage „A oder B, aber nicht, A und B“zurück. Sie können es sich als „das eine oder andere, aber nicht beides“vorstellen. Wenn also A 1 und B 0 ist, dann ist das die eine oder andere, also ist das Ergebnis 1 (true). Das gleiche Ergebnis gilt für A ist 0 und B ist 1. Wenn A jedoch 0 und B 0 ist, ist das Ergebnis 0 (false), da beide denselben Wert haben. False ist auch gegeben für A ist 1 und B ist 1.,
Aber die wahre Magie von XOR ist, dass es reversibel ist. Wenn A XOR B = C ist, dann ist B XOR C = A und A XOR C = B. Dies ist sehr wichtig für die Verschlüsselung, da Daten mit einem Schlüssel (B) verschlüsselt werden können verschlüsselte Daten (C). Später können die verschlüsselten Daten durch XOR es mit dem Schlüssel wieder entschlüsselt werden, um die Originaldaten zu erhalten. Der Grund, warum XOR in Verbindung mit komplizierten Rundenfunktionen und Bitverschiebungsoperationen verwendet wird, liegt darin, dass XOR allein durch Frequenzanalyse (aufgrund der sich ständig wiederholenden Taste) unterbrochen werden kann.,
Als Reaktion auf die Schwächen von DES wurde ein neuer Standard namens Triple DES (3DES) vorgeschlagen. Die im Grunde verschlüsselt die Daten dreimal mit DES, aber mit drei verschiedenen Schlüsseln. 3DES bot eine Möglichkeit, die Schlüsselgröße von 56 Bit auf 168 Bit zu erhöhen, ohne einen völlig neuen Blockchiffrealgorithmus entwerfen zu müssen. Aufgrund einiger technischer Details beträgt der effektive Schlüssel 112 Bit, aber wenn Sie eine Maschine hätten, die DES in 1 Minute knacken könnte, würde es ungefähr 260,658 Jahre dauern, bis dieselbe Maschine einen Triple-DES-Schlüssel knackt.,
Während DES seinen Zweck fast 25 Jahre lang erfüllt hatte, bedeutete die begrenzte Schlüssellänge, dass es Zeit für einen anderen Verschlüsselungsstandard war. Im Jahr 2001 veröffentlichte das US National Institute of Standards and Technology (NIST) den Advanced Encryption Standard (AES). Es ist keine Feistel-Chiffre, sondern ein Substitutions-Permutationsnetzwerk. Es verwendet immer noch Blöcke und Runden wie DES, aber während jeder Runde wird die Reihenfolge der Bits im Block vertauscht und das Ergebnis wird mit dem Schlüssel unter Verwendung von XOR kombiniert.
AES verwendet 128, 192 oder 256 bit schlüssel und arbeitet auf blöcke von 128-bits., Die Anzahl der verwendeten Runden hängt von der Schlüsselgröße ab. Das Minimum ist 10, das für 128-Bit-Schlüssel verwendet wird, und das Maximum ist 14, das für 256-Bit-Schlüssel verwendet wird.
AES, Android und die ARMv8-Architektur
AES ist im Herzen der Verschlüsselungs-Subsysteme in Android. Für Android 5.0 und Android 6.0 hat Google die Verwendung von AES mit mindestens einem 128-Bit-Schlüssel für Geräte vorgeschrieben, die eine vollständige Festplattenverschlüsselung unterstützen., Mit Android 7 ist Google zu File Based Encryption (FBE) übergegangen, mit der verschiedene Dateien mit verschiedenen Schlüsseln verschlüsselt und gleichzeitig Dateien unabhängig entschlüsselt werden können. Es sieht so aus, als ob FBE in Android 7 256-Bit-AES verwendet.
Als ARM von 32-Bit auf 64-Bit überging, definierte es eine neue Revision seiner Befehlssatzarchitektur namens ARMv8. Neben der Definition des Befehlssatzes für 64-Bit-ARM-Chips wurden auch neue Anweisungen hinzugefügt, um Teile des AES-Algorithmus in Hardware zu implementieren. Während jeder Runde werden verschiedene Bits ausgetauscht und ersetzt., Wie die Bits manipuliert werden, ist gut definiert (und Teil des Standards), sodass die AES-Erweiterungen in ARMv8 ermöglichen, dass diese Teile der Verschlüsselung eher in Hardware als in Software erfolgen.
Das Ergebnis ist eine blitzschnelle Verschlüsselung, die einen vernachlässigbaren Einfluss auf die Gesamtleistung des Systems haben sollte. Die AOSP-Implementierung der dateibasierten Verschlüsselung verwendet AES-256 und erfordert eine Leistung von mindestens 50 MB/s.
Public Key Cryptography and Wrap-up
Das meiste, was wir bisher besprochen haben, ist als symmetrische Verschlüsselung bekannt., Um eine Nachricht zu verschlüsseln und zu entschlüsseln, müssen sowohl der Absender als auch der Empfänger den geheimen Schlüssel kennen. Es gibt eine Form der Verschlüsselung, die als asymmetrische Verschlüsselung bezeichnet wird, bei der es zwei Schlüssel gibt, einen zum Verschlüsseln von Nachrichten und einen anderen zum Entschlüsseln. Der Verschlüsselungsschlüssel kann für jeden frei veröffentlicht werden, der dem Empfänger eine Nachricht senden möchte, der Entschlüsselungsschlüssel muss jedoch geheim bleiben, muss aber nur dem Empfänger bekannt sein. Dies bedeutet, dass es einen öffentlichen und einen privaten Schlüssel gibt. Dieses System ist die Grundlage dafür, wie die Sicherheit im Internet funktioniert und wie das https:// – Protokoll funktioniert., Das ist jedoch eine Geschichte für einen anderen Tag!
Zum Schluss möchte ich eine Einschränkung hinzufügen. Verschlüsselung ist ein komplexes Thema und es gibt viel mehr zu verschlüsseln, als ich hier geschrieben habe.