Klarheit ins Chaos bringen

Als Computer-Nutzer ist man täglich mit Verschlüsselung und Begriffen wie Hashing konfrontiert. Doch was steckt dahinter?

Artikel erschienen in Swiss IT Magazine 2006/20

     

Heutzutage hat jeder, der einen Computer besitzt, mit Verschlüsselung von Daten zu tun. Egal ob bei der Bestellung im Online-Shop, wenn niemand die Kreditkartennummer ausspähen soll, oder beim Smartphone oder Notebook, das – wenn es denn schon unbedingt verlorengehen muss – wenigstens seine Daten nicht hergeben soll. Das Bedürfnis, Informationen vor anderen zu verbergen, ist aber nicht neu.


Rotierende Buchstaben

Bereits die Ägypter, Hebräer oder Römer hatten einfache Methoden der Datenverschlüsselung. So wurden etwa Schriftzeichen durch andere, unbekannte, ersetzt. Beim sogenannten Caesar-Chiffre, den Julius Caesar verwendet haben soll, wird jeder Buchstabe des Klartextes durch einen anderen des Alphabets ersetzt. Ihm ähnelt die im Usenet verbreitete ROT13-Methode, welche auf dem Verschieben der Buchstaben um 13 Stellen («rotieren um 13 Stellen») basiert. Manche Rätselseiten im Netz verwenden ebenfalls solche Verfahren, um die Lösungen nicht sofort sichtbar, aber trotzdem für jedermann zugänglich zu machen.
Allerdings würde man so einen Algorithmus heutzutage eher als Verschleierung denn als Verschlüsselung bezeichnen, da keine echte Sicherheit gegeben ist. Eine so kodierten Botschaft würde einer Kryptoanalyse nicht standhalten. Dies ist aber eine Grundvoraussetzung für eine sichere Verschlüsselung.


Transparenz und Offenheit

Unerlässlich für einen sicheren Algorithmus ist, dass es keine theoretischen Angriffsmöglichkeiten gibt. Deshalb ist es sehr wichtig, dass ein Verschlüsselungsalgorithmus in allen Einzelheiten samt Stärken und eventuellen Schwächen bekannt ist.
Es existieren aber leider viele Firmen, die vom Gegenteil überzeugt sind und Algorithmen in ihre Produkte integrieren und für sie maximale Sicherheit proklamieren – ein prominentes Beispiel ist die VoIP-Software Skype. Allerdings bleibt der Algorithmus selbst ein Betriebsgeheimnis. Wie gut er tatsächlich ist, ist schwer herauszufinden. Vielleicht mag er ganz brauchbar sein, aber weil dies niemand mit Sicherheit sagen kann, wird so ein Algorithmus oft als als Snake Oil bezeichnet – Quacksalberei (www.schneier.com/crypto-gram-9902.html#snakeoil).
Vertrauenswürdige Verfahren zeichnen sich im Gegensatz dazu durch maximale Transparenz und Offenheit aus: Je freier sie erhältlich, je besser sie dokumentiert sind und je öfter sie den Analysen von Wissenschaftlern auf der ganzen Erde widerstanden haben, umso vertrauenswürdiger und bewährter sind sie. Beispiele sind AES oder Blowfish, auf die noch im Detail eingegangen wird.


Text eindampfen

Als Computer-Anwender trifft man vor allem auf drei Verschlüsselungsmethoden: Hashing sowie asymmetrische und symmetrische Verschlüsselung, wobei es sich bei Hashing nicht um Verschlüsselung im klassischen Sinn handelt. Ein kryptographischer Hash-Algorithmus ist ein Verfahren, mit dem es möglich ist, aus beliebigen Daten einen eindeutigen und reproduzierbaren Wert zu erzeugen. Umgekehrt darf es aber nicht möglich sein, aus diesem Hash auf die Ausgangsdaten Rückschlüsse ziehen zu können.




Fingerprinting heisst dies in der Fachsprache. Es kommt vor allem bei Authentifizierung zum Einsatz. Der Benutzer tippt sein Passwort ein. Aus diesem wird ein Hash berechnet, welcher im System gespeichert wird. Möchte sich nun der Benutzer einloggen, wird das von ihm eingetippte Passwort wieder in einen Hash verwandelt und dann mit dem im System gespeicherten Wert verglichen. Stimmen beide Werte überein, ist das Passwort korrekt.
Eine weitere Eigenschaft von Hashes ist, dass sie je nach Algorithmus immer genau gleich lang sind, egal wie gross die Eingabedatei ist. Dies kommt der nächsten Verwendungsmöglichkeit von Hashes zugute: der Überprüfung von Dateien auf Veränderungen. Über die ursprüngliche Datei wird ein Hash-Wert berechnet. Der Empfänger der Datei kann nun anhand dieses Hash überprüfen, ob die Datei verändert wurde.





Die gebräuchlichsten kryptographischen Hash-Algorithmen sind MD5 und SHA-1. Leider existieren mittlerweile theoretische Schwachstellen für beide Algorithmen. Dies bedeutet, dass der Aufwand, sogenannte Kollisionen, also verschiedene Eingabedateien mit dem gleichen Hash zu finden, gesenkt werden konnte. Betroffen ist vor allem SHA-1, bei dem ein Angriff auch in der Praxis relevant sein könnte. Deshalb sollte SHA-1 nach und nach durch stärkere Algorithmen ersetzt werden wie Varianten von SHA-1, die längere Hashes produzieren – etwa SHA-256, SHA-384 oder SHA-512 –, RIPEMD-160 oder Tiger. Für diese Algorithmen sind noch keine Schwachstellen bekannt, allerdings sind diese Verfahren auch noch nicht so gut und tief erforscht wie MD5 oder SHA-1.


Zwei Schlüssel zu einem Geheimnis

Im weitesten Sinn mit Hash-Algorithmen verwandt sind die sogenannten asymmetrischen Algorithmen, die auch als Public Key Encryption bekannt sind. Solche Verfahren basieren auf Einwegfunktionen. Das sind Verfahren, die in die eine Richtung leicht und schnell und in die andere schwierig zu berechnen sind. Dies ist beispielsweise mit der Zerlegung von grossen Zahlen in Primfaktoren (Faktorisierung) vergleichbar.




Asymmetrische Verschlüsselungsalgorithmen benutzen immer ein Schlüsselpaar: Einen geheimen Schlüssel, den nur der «Absender» kennt, und einen öffentlichen, für jedermann zugänglichen Schlüssel. Daten, die mit dem privaten Schlüssel verschlüsselt worden sind, lassen sich nur mit dem öffentlichen Schlüssel wieder entschlüsseln und umgekehrt. Eine Entschlüsselung kann also nur immer mit dem jeweiligen Gegenstück erfolgen. Möchte man nun jemandem eine geheime Botschaft übermitteln, braucht man nur dessen Public-Key zu kennen und die Daten mit diesem Schlüssel zu verschlüsseln. Nur der Besitzer des dazu passenden Private-Key kann die Nachricht wieder entschlüsseln.



Dieses Verfahren ist überdies auch ganz gut dazu geeignet, sein Gegen­über zu authentifizieren. Ist man sich nicht sicher, ob dieser derjenige ist, für den er sich ausgibt, braucht man ihn nur zu bitten, einen vereinbarten Datensatz mit seinem privaten Schlüssel zu verschlüsseln und einem zurückzusenden. Ergibt die Entschlüsselung mit dem öffentlichen Schlüssel wieder den gewünschten ursprünglichen Datensatz, ist der Absender «echt». So ein ähnliches Verfahren wird beispielsweise bei SSH verwendet, um sicherzustellen, dass die Kommunikation übers Netz wirklich mit der gewünschten Gegenstelle erfolgt und nicht etwa ein «Man in the Middle» die ausgetauschten Daten abhört.





Die gebräuchlichsten asymmetrischen Verschlüsselungsalgorithmen sind RSA, DSA und Diffie-Hellman. Mittlerweile sind alle drei Algorithmen patentfrei. Doch leider sind alle prinzipbedingt bis zu einem Faktor 1000 langsamer als symmetrische Verfahren. Deshalb werden sie in der Regel nicht zur eigentlichen Verschlüsselung der Daten verwendet, sondern nur zur Verifizierung der Gegenstelle. Bei SSH wird beispielsweise zwischen den Kommunikationspartnern nur der sogenannte Session Key per Public-Key-Verfahren ausgetauscht. Dies ist ein zufälliger Wert, mit dem anschliessend der eigentliche Datenverkehr mit symmetrischen Verfahren verschlüsselt wird, die deutlich schneller als ihre asymmetrischen Kollegen sind.


Einfach und schnell

Symmetrische Verfahren benutzen dagegen nur ein Geheimnis wie beispielsweise ein Passwort zum Ver- und Entschlüsseln. Meistens werden die Informationen dabei
in Blöcke von einer bestimmten Bit-Grösse aufgegliedert und
dann vorzu ver- respektive entschlüsselt. Vorherige Blöcke
beeinflussen meistens den nächsten zu verschlüsselnden Block. Viele Algorithmen unterstützen variable (oder zumindest anpassbare) Blockgrössen. Die Schlüssellänge (in Bit) gibt dabei an, wie lang ein Schlüssel (Passwort) für die Verschlüsselung maximal sein darf.
Es existiert eine Vielzahl von verschiedenen symmetrischen Algorithmen. Zu den bekanntesten gehören AES, Blowfish, DES, RC4, Serpent und Twofish. DES (Digital Encryption Standard) ist ein 1976 standardisiertes Verfahren, welches aber mit einer Schlüssellänge von nur 56 Bit bei heutiger Rechenkapazität als unsicher eingestuft wird. Deshalb wird ab und zu heute noch die Variante 3DES verwendet, welche grob gesagt ein Verschlüsseln, Entschlüsseln und wiederum Verschlüsseln mit DES darstellt.





Nachfolger von DES ist der im Oktober 2000 vom amerikanischen NIST (National Institute of Standards) gewählte AES-Algorithmus, der auch als Rijndael nach seinen Erfindern Joan Daemen und Vincent Rijmen bekannt ist. Der ursprünglich vorgeschlagene Algorithmus bot eine Blocklänge von 128, 192 oder 256 Bit und eine Schlüssellänge von ebenfalls 128, 192 oder 256 Bit. Der AES-Standard schränkt aber die Blocklänge auf 128 Bit ein. Anhand der Schlüssellänge wird zwischen AES-128, AES-192 und AES-256 unterschieden.
Blowfish ist ein vom bekannten Kryptoanalytiker Bruce Schneier entwickelter Algorithmus, welcher ursprünglich auf Open-Source-Systemen sehr verbreitet war und immer noch als sehr sicher gilt. Twofish als Nachfolger von Blowfish war Schneiers nicht angenommener Vorschlag für den AES-Standard. Auch er gilt als sehr sicher und kam zusammen mit Serpent und Rijndael in die Endrunde für die Auswahl für AES, wurde aber nicht gewählt, da Rijndael weniger Ressourcen benötigt und performanter ist.


Keine absolute Sicherheit

Potentiell sind aber alle bekannten Algorithmen angreifbar. Es ist unmöglich zu beweisen, dass ein Verfahren absolut sicher ist. Das einzig mathematisch sichere und unangreifbare Verschlüsselungs­system ist ein sogenanntes One Time Pad von der Länge der zu verschlüsselnden Information – sofern bei der Erzeugung des One Time Pad nicht geschlampt wird, was beispielsweise den Deutschen im 2. Weltkrieg passiert ist.




Die Information wird dabei per binärem XOR mit einem Datensatz von genau der Länge der zu verschlüsselnden Daten verknüpft. Ein erneutes XOR mit dem Schlüssel-Datensatz ergibt wieder die ursprüngliche Information. Der Schlüssel darf bei diesem Verfahren nur genau ein einziges Mal verwendet werden. Somit ist dieses Verfahren sehr aufwendig – allein den sicheren Transportweg des Schlüssels vom Sender zum Empfänger zu garantieren, ist eine echte Herausforderung.
Ein Beispiel für das Zusammenspielen von verschiedenen kryptographischen Methoden ist PGP beziehungsweise die offene Variante GPG. Dazu wird der eigene öffentliche PGP-Schlüssel übermittelt. Haben beide Kommunikationspartner den öffentlichen Schlüssel des anderen, kann
die Datenübermittlung begin-
nen. Die zu übermittelnde Information wird mit einem symmetrischen Verfahren und einem zufällig generierten Schlüssel verschlüsselt. Der Schlüssel wird an das Ergebnis angehängt und mit dem öffentlichen Schlüssel
des Gegenübers verschlüsselt.
Der Empfänger kann diesen Anhang nun mit seinem privaten Schlüssel wieder entschlüsseln
und hat den Key, um die eigentlichen Informationen zu dechiff-rieren.





Mit diesem Verfahren ist es
auch möglich, Daten digital zu signieren. Dazu erzeugt der Ab-sender einen Hash der vorliegenden Daten, welcher mit dem eigenen privaten Schlüssel verschlüsselt wird. Das Ergebnis
wird nun als Signatur an die Information angehängt. Der Empfänger entschlüsselt die Signatur mit dem öffentlichen Schlüssel
des Absenders. Dann bildet er ebenfalls einen Hash über die
im Klartext vorliegenden Daten. Stimmen diese mit dem entschlüsselten Anhang überein, ist es sicher, dass der Absender der ist, der er vorgibt zu sein.
Die eigentliche Arbeit (verschlüsseln, signieren, vergleichen usw.) braucht der Benutzer natürlich nicht selber zu machen. Das erledigt PGP respektive GPG für ihn. Neben S-MIME, einer ähnlichen Art von Public-Key-Verschlüsselung, ist dies eine ein-fache und verbreitete Methode, den eigenen Mailverkehr mit bestimmten Partnern sicher zu verschlüsseln.


Steganographie

Nicht mit Kryptographie verwechselt werden darf die Steganographie. Im Gegensatz zur Kryptographie, wo Daten für einen Betrachter unlesbar gemacht werden, verschleiert beziehungsweise versteckt Steganographie Informationen. So ist es beispielsweise möglich, in einem digitalen Bild Information zu verstecken, ohne dass es einem Angreifer auffällt. Weiss man nicht, dass geheime Information vorhanden ist, kann man sie auch nicht finden. Allerdings hat Steganographie nichts mit Kryptographie und Sicherheit zu tun. Findet man die Daten dennoch, können sie problemlos gelesen werden, sofern sie nicht vorher verschlüsselt wurden.


Buchtip: Applied Cryptography

Sicherheitsexperte Bruce Schneier, Autor der Verschlüsselungsalgorithmen Blowfish und Twofish, hat mit Applied Cryptography das Standardwerk für den Einstieg in Datenverschlüsselung geschrieben. Das Buch erklärt, wie Datenverschlüsselung im Computer- und Kommunikationsbereich zur Geheimhaltung von Daten verwendet werden kann. Es werden Dutzende von kryptographischen Algorithmen sowie deren Implementierung und Einsatzgebiete beschrieben, wobei Source-Code in C beim praktischen Verständnis helfen soll.Zudem erfährt man, wie PGP funktioniert und erhält sinnvolle Hinweise zum Key-Management.


ISBN: 0-471-11709-9; 784 Seiten; John Wiley & Sons; 60 Dollar.


Der Autor

Gregor Longariva (longariva@softbaer.de) ist Solaris-Administrator am Rechenzentrum der Universität Erlangen-Nürnberg und Spezialist für die Unix-Betriebssysteme Solaris, OpenBSD und Linux.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Fliegen erledigte das tapfere Schneiderlein auf einen Streich?
GOLD SPONSOREN
SPONSOREN & PARTNER