Zum Hauptinhalt springen

Symmetrische Schlüsselkryptographie

In dieser Lektion betrachten wir die symmetrische Schlüsselkryptographie, die aufgrund ihrer Effizienz einen Großteil der ruhenden und übertragenen Daten absichert.

Am Ende der Lektion haben wir folgende Themen behandelt:

  • Was symmetrische Schlüsselkryptographie ist
  • Python-Codebeispiele zur Veranschaulichung der Verwendung symmetrischer Schlüsselkryptographie
  • Anwendungen der symmetrischen Schlüsselkryptographie
  • Anwendungsgebiete der symmetrischen Schlüsselkryptographie
  • Die Sicherheit der symmetrischen Schlüsselkryptographie
  • Bedrohungen dieser Algorithmen durch klassische und Quantencomputer

Einführung in die symmetrische Schlüsselkryptographie

Symmetrische Schlüsselkryptographie (SKC) ist die älteste und intuitivste Form der Kryptographie. Bei der SKC werden vertrauliche Informationen durch symmetrische Schlüsselverschlüsselung (SKE) gesichert, d. h. durch Verwendung eines einzigen geheimen Schlüssels sowohl für die Ver- als auch für die Entschlüsselung.

SKC umfasst:

  • Eine Verschlüsselungsfunktion, die einen gegebenen Klartext unter Verwendung eines geheimen Schlüssels in Ciphertext umwandelt
  • Eine Entschlüsselungsfunktion, die die Operation umkehrt, indem sie den Ciphertext mithilfe desselben geheimen Schlüssels wieder in Klartext zurückverwandelt

Klartext kann jede Art von unverschlüsselten Daten bedeuten, wie natürlichsprachlichen Text oder Binärcode, dessen Informationsgehalt grundsätzlich direkt zugänglich ist, während Ciphertext verschlüsselte Daten bezeichnet, deren Informationsgehalt vor der Entschlüsselung nicht zugänglich sein soll.

Ein Algorithmus, der die Ver- und Entschlüsselungsoperationen unter Verwendung eines gemeinsamen geheimen Schlüssels beschreibt, wird auch als symmetrische Chiffre bezeichnet.

Abb. 1: Symmetrische Schlüsselverschlüsselung eines gegebenen Klartexts zu Ciphertext und Entschlüsselung zurück zu Klartext mit demselben Schlüssel.

Abbildung 1. Symmetrische Schlüsselverschlüsselung eines gegebenen Klartexts zu Ciphertext und Entschlüsselung zurück zu Klartext mit demselben Schlüssel.

Eigenschaften symmetrischer Kryptosysteme

Ein symmetrisches Schlüsselkryptosystem sollte folgende Eigenschaften gewährleisten, um Nachrichten zu sichern – sowohl statisch gespeicherte Daten als auch Kommunikation über einen Übertragungskanal:

  • Vertraulichkeit: Bezeichnet die Eigenschaft, dass der Informationsgehalt verschlüsselter Nachrichten vor unbefugtem Zugriff geschützt ist.
  • Integrität: Bezeichnet die Eigenschaft, dass jede Manipulation verschlüsselter Nachrichten während der Speicherung oder Übertragung erkannt werden kann.
  • Authentizität: Bezeichnet die Eigenschaft, dass der Empfänger einer Nachricht die Identität des Absenders überprüfen und Nachahmungen durch eine unbefugte Partei erkennen kann.

Darüber hinaus sollten diese Eigenschaften in einem Umfeld realisiert werden, in dem die für die Ver- und Entschlüsselung verwendeten Algorithmen oder Chiffren öffentlich sein können und der Zugang zum Informationsgehalt verschlüsselter Nachrichten ausschließlich durch den Zugang zum geheimen Schlüssel kontrolliert wird.

Die Implementierung eines sicheren symmetrischen Schlüsselkryptosystems umfasst daher zwei Hauptaufgaben:

  1. Einsatz eines robusten symmetrischen Schlüsselverschlüsselungsalgorithmus, der gegen kryptographische Angriffe resistent ist.
  2. Sicherstellung der Vertraulichkeit bei der Verteilung und Verwaltung geheimer Schlüssel.

In dieser Lektion werden wir Aspekte im Zusammenhang mit der ersten Aufgabe besprechen, die das primäre Anliegen der SKC-Technologie darstellt. Die zweite Aufgabe erfordert jedoch Lösungen, die außerhalb der SKC selbst liegen, und wird später eingeführt.

Veranschaulichung der symmetrischen Schlüsselverschlüsselung mit Python

Wir zeigen ein einfaches Beispiel für die Verschlüsselungs- und Entschlüsselungsoperationen unter Verwendung der klassischen Caesar-Verschiebechiffre und des modernen Advanced Encryption Standard (AES), der seit 2001 der Standard für die symmetrische Schlüsselverschlüsselung ist. Zunächst richten wir einige Python-Bibliotheken ein, die die benötigten symmetrischen Schlüsselverschlüsselungschiffren bereitstellen, und definieren dann den Klartext, den wir verschlüsseln möchten.

# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy

# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np

# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")

Wir werden sehen, wie dieser Text mit zwei verschiedenen symmetrischen Schlüsselverschlüsselungsmethoden verschlüsselt und entschlüsselt werden kann:

  1. Die klassische Caesar-Verschiebechiffre
  2. Der moderne Advanced Encryption Standard AES-256

Caesar-Verschiebechiffre

Die Caesar-Verschiebeverschlüsselung beinhaltet die Definition:

  • Eines Alphabets möglicher zu kodierender Zeichen
  • Eines Verschiebewerts, der zwischen 0 (unverschlüsselt) und der Länge des Alphabets liegen kann. Wir betrachten diesen als den Schlüssel.

Sie ist als monoalphabetische Substitutionschiffre bekannt, da jeder Buchstabe des Klartexts durch einen anderen im Ciphertext ersetzt wird.

In diesem Beispiel verwenden wir Kleinbuchstaben des Alphabets.

Beginnen wir mit der Einrichtung.

# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()

# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")

# Define the alphabet
alphabet = (
"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",
"z",
" ",
)
print(f"alphabet: {alphabet}")

Den Klartext verschlüsseln, um den Ciphertext für die Caesar-Chiffre zu erhalten.

caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")

Den Ciphertext mit demselben Schlüssel, der für die Verschlüsselung verwendet wurde, wieder zum ursprünglichen Klartext entschlüsseln.

caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")

Advanced Encryption Standard (AES)

Wir verschlüsseln nun den Klartext mit AES, einem beliebten symmetrischen Schlüsselverschlüsselungsalgorithmus.

Wir beginnen mit der Erstellung des Schlüssels, in diesem Fall eine zufällige 16-Zeichen-Zeichenkette.

# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])

print(f"AES secret key: {aes_key}")

AES unterstützt mehrere Betriebsmodi und erfordert, dass wir angeben, welchen wir verwenden möchten.

Wir wählen den Cipher Block Chaining (CBC)-Modus, der von der modes.CBC-Klasse der cryptography-Bibliothek bereitgestellt wird. Der CBC-Modus von AES verwendet Zufälligkeit für zusätzliche Sicherheit. Dies erfordert die Angabe eines zufälligen Initialisierungsvektors (IV), auch Nonce genannt. Wir verwenden dafür ebenfalls eine zufällige Zeichenkette, genau wie beim Schlüssel.

aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")

Wir können nun eine AES-Chiffre im Namen des Absenders der geheimen Nachricht instanziieren. Beachte, dass der Initialisierungsvektor an die modes.CBC-Klasse übergeben wird, um den CBC-Betriebsmodus einzurichten.

Wir werden dann den zu sendenden Klartext verschlüsseln.

# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()

# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)

# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")

Um es zu entschlüsseln, instanziieren wir eine AES-Chiffre im Namen des Empfängers. Beachte, dass der beabsichtigte Empfänger Zugang sowohl zum geheimen Schlüssel als auch zum Initialisierungsvektor hat, letzterer muss jedoch nicht geheim sein.

# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()

# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()

# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")

print(f"Decrypted AES plaintext: {aes_plaintext}")

Anwendungen der symmetrischen Schlüsselkryptographie

Während klassische Chiffren wie die Caesar-Chiffre schon lange nicht mehr verwendet werden, sind moderne symmetrische Kryptosysteme wie AES in einer Vielzahl von Anwendungen im Einsatz, darunter:

  1. Datenverschlüsselung und -entschlüsselung: SKC wird häufig verwendet, um sensible Daten zu schützen, sei es statisch auf einem Gerät gespeichert oder über ein Netzwerk übertragen. Beispiele sind der Schutz von Benutzeranmeldeinformationen, die Verschlüsselung von E-Mail-Nachrichten und die Sicherung von Finanztransaktionen.

  2. Sichere Kommunikation: Gängige Kommunikationsprotokolle wie SSL/TLS verwenden eine Kombination aus symmetrischer und asymmetrischer Schlüsselverschlüsselung, um die Vertraulichkeit und Integrität der zwischen zwei Parteien ausgetauschten Daten sicherzustellen. Diese Nachrichten werden mit symmetrischer Schlüsselverschlüsselung ver- und entschlüsselt, wobei ein gemeinsamer Schlüssel verwendet wird. Der bei der symmetrischen Schlüsselverschlüsselung verwendete Schlüssel wird sicher mithilfe asymmetrischer Schlüsselverschlüsselung ausgetauscht, die ein öffentlich-privates Schlüsselpaar verwendet. Symmetrische Schlüsselverschlüsselung ist wesentlich schneller und kann daher für die Verschlüsselung großer Nachrichten verwendet werden.

  3. Authentizitätsprüfung: In einigen Umgebungen wird SKC durch Techniken wie Nachrichtenauthentifizierungscodes (MACs) und schlüsselbasierte Hash-MACs (HMAC) eingesetzt, um die Authentizität und Integrität von Nachrichten zu überprüfen und eine manipulationssichere Kommunikation zu gewährleisten.

  4. Datei- und Festplattenverschlüsselung: Vollständige Festplattenverschlüsselungssoftware und Dateiverschlüsselungstools verwenden SKC, um sensible Daten auf Festplatten oder tragbaren Speichergeräten zu schützen.

  5. Virtuelle private Netzwerke: VPN-Technologien, die vertrauliche Kommunikationskanäle frei von Abhören anbieten, können symmetrische oder asymmetrische Schlüsselverschlüsselung einsetzen, um Remote-Benutzer sowie Unternehmensnetzwerke zu verbinden.

Das vielfältige Anwendungsspektrum, in dem SKC eingesetzt wird, erfordert wiederum, dass symmetrische Kryptosysteme bestimmte Kriterien erfüllen.

Grundprinzipien der symmetrischen Schlüsselverschlüsselung

In diesem Abschnitt werden wir einige der grundlegenden Prinzipien, die der Sicherheit symmetrischer Schlüsselverschlüsselungsalgorithmen zugrunde liegen, besprechen.

Widerstandsfähigkeit gegen Brute-Force-Angriffe: Die grundlegendste Anforderung an die Sicherheit einer Verschlüsselungschiffre ist, dass der Schlüsselraum – mit anderen Worten, die Anzahl der möglichen verschiedenen Schlüssel, aus denen jemand, der den Algorithmus verwendet, hätte wählen können – sehr groß ist.

Widerstandsfähigkeit gegen kryptanalytische Angriffe: Die zweite grundlegende Anforderung an eine Chiffre, ob symmetrisch oder nicht, ist, dass sie Ciphertexte erzeugen kann, die informationell undurchdringlich sind. Zu diesem Zweck ist eine notwendige, aber nicht hinreichende Bedingung aus der Informationstheorie, dass Ciphertexte durch hohe Entropie gekennzeichnet sein sollten, sodass sie von zufälligem Text ohne erkennbare Muster oder Korrelationen nicht zu unterscheiden sind. Auf diese Weise kann ein Angreifer keine Informationen über den Klartext oder den geheimen Schlüssel gewinnen, indem er versucht, den Ciphertext mittels Häufigkeitsanalyse oder anderer statistischer Techniken zu analysieren.

Die Widerstandsfähigkeit gegen allgemeine Formen kryptanalytischer Angriffe, die ausreicht, um semantische Sicherheit zu gewährleisten, wird durch den Begriff der Ununterscheidbarkeit formalisiert. Obwohl es mehrere Varianten der Ununterscheidbarkeit mit unterschiedlichen Anforderungen gibt, gilt ein symmetrisches Kryptosystem als semantisch sicher, wenn es das Kriterium der Ununterscheidbarkeit unter gewähltem Klartextangriff (IND-CPA) erfüllt. Dies bedeutet, dass ein Angreifer nicht zwischen den Verschlüsselungen zweier verschiedener Nachrichten unterscheiden kann, selbst wenn es ihm erlaubt ist, mehrere Klartexte seiner Wahl an den Algorithmus zu senden und die entsprechenden Ciphertexte zu betrachten.

Wie wir später sehen werden, erfordert IND-CPA typischerweise den Einsatz von Zufälligkeit, um sicherzustellen, dass jedes Mal, wenn ein gegebener Klartext mit einem gegebenen geheimen Schlüssel verschlüsselt wird, der resultierende Ciphertext bei jeder Verschlüsselung unvorhersehbar anders ist.

Schwachstellen klassischer Chiffren: Vor dem Aufkommen der modernen Kryptographie in den 1970er Jahren erfüllten die meisten in der Praxis verwendeten klassischen Chiffren eine oder beide der oben genannten Anforderungen nicht. Frühe Substitutionschiffren wie die monoalphabetische Caesar-Verschiebechiffre waren beispielsweise sowohl durch einen kleinen Schlüsselraum (siehe Tabelle 1) als auch durch Ciphertext mit niedriger Entropie gekennzeichnet, was sie anfällig für eine Vielzahl kryptanalytischer Angriffe wie Brute-Force-Angriffe, Häufigkeitsanalyse und bekannte Klartextangriffe (KPA) machte.

Nachfolgende polyalphabetische Substitutionschiffren wie die Vigenère-Chiffre und die Enigma-Maschinenchiffre verfügten über effektiv große Schlüsselräume, was sie resistent gegen Brute-Force-Angriffe machte, aber sie waren anfällig für Häufigkeitsanalyse bzw. KPA. Ähnlich wie Substitutionschiffren sind auch klassische Transpositionschiffren, die Buchstaben in einer Nachricht umanordnen, anstatt sie zu ersetzen, durch eine Vielzahl von Angriffen wie Anagrammierung, statistische Analyse, Brute-Force und KPA gefährdet.

Theoretisch ist eine polyalphabetische Substitutionschiffre, bekannt als One-Time-Pad (OTP), als kryptographisch sicher bekannt. Ein OTP verfügt über einen geheimen Schlüssel, der (1) aus zufällig gewählten Buchstaben oder Bits bestehen, (2) mindestens so lang wie der ursprüngliche Klartext sein und (3) nur einmal verwendet werden muss. Ein OTP ist für praktische Anwendungen unpraktisch, denn wenn der geheime Schlüssel – der so lang wie der Klartext sein muss und nur einmal verwendet werden darf – sicher geteilt werden könnte, dann könnte auch der ursprüngliche Klartext sicher geteilt werden. Das OTP veranschaulicht stattdessen den Nutzen von Zufälligkeit bei der Erzeugung sicherer Ciphertexte.

Ein Angreifer, der einen Brute-Force-Suchlauf durch den Schlüsselraum durchführen möchte, um einen Schlüssel zu finden, der die Nachricht entschlüsselt, muss eine Anzahl von Operationen durchführen, die proportional zur Größe des Schlüsselraums ist.

Ein großer Schlüsselraum bietet daher Widerstandsfähigkeit gegen Brute-Force-Angriffe, indem er diese rechnerisch nicht machbar macht. Tabelle 1 listet die Schlüsselraumgrößen einiger bekannter Chiffren auf.

Tabelle 1: Schlüsselraumgrößen einiger symmetrischer Chiffren

ChiffreSchlüssellängeSchlüsselraumgröße
Caeser shift1alphabet-size
Vigenerenalphabet-sizen^\mathrm{n}
One-time-padplaintext-lengthalphabet-sizeplaintextlength^\mathrm{plaintext-length}
DES56256^\mathrm{56}
AES-1281282128^\mathrm{128}
AES-1921922192^\mathrm{192}
AES-2562562256^\mathrm{256}
ChaCha202562256^\mathrm{256}

Moderne symmetrische Schlüsselverschlüsselungsverfahren überwinden die Einschränkungen der klassischen Chiffren weitgehend. Sie erzeugen gegen Kryptanalyse resistenten Ciphertext und verfügen über große Schlüsselräume, während sie gleichzeitig wesentlich praktischer effizienter als ein OTP sind.

Blockchiffren: Eine Klasse moderner Chiffren – wie DES und AES – erreicht Sicherheit durch die Kombination der Prinzipien von Konfusion und Diffusion, die ursprünglich von Claude Shannon eingeführt wurden. Wir erläutern diese Konzepte in einem Umfeld, in dem Verschlüsselungsverfahren mit binären Darstellungen von Nachrichten arbeiten:

  • Konfusion: Konfusion ist die Eigenschaft, bei der jedes Bit im Ciphertext von mehreren Bits des geheimen Schlüssels abhängt. Sie stellt sicher, dass eine kleine Änderung im geheimen Schlüssel fast alle Bits des Ciphertexts verändert und so die Beziehung zwischen dem Ciphertext und dem geheimen Schlüssel verschleiert.

  • Diffusion: Diffusion ist die Eigenschaft, bei der das Umkehren eines einzelnen Bits im Klartext ungefähr die Hälfte der Bits im Ciphertext und umgekehrt verändern sollte. Diffusion verbirgt statistische Beziehungen zwischen dem Klartext und dem Ciphertext. Chiffren mit ausreichender Diffusion erfüllen das sogenannte Lawinenkriterium der Kryptographie.

Blockchiffren implementieren Konfusion und Diffusion mithilfe kryptographischer Strukturen, bekannt als Substitutions-Permutations-Netzwerke (SPNs), die auf diskreten Datenblöcken operieren. Ein SPN nimmt einen Block Klartext und den geheimen Schlüssel als Eingaben entgegen und führt eine festgelegte Anzahl von Runden von Transformationen durch, um einen Ciphertext-Block zu erzeugen. Jede Runde besteht aus abwechselnden mathematischen Strukturen, bekannt als Substitutionsboxen (S-Boxen) und Permutationsboxen (P-Boxen) oder gleichwertigen Operationen.

Diese implementieren jeweils komplexe nichtlineare und lineare Transformationen auf den Eingabeblöcken, was zu Lawineneffekten im Ciphertext führt.

SPNs sind so konzipiert, dass die Erhöhung der Anzahl von Runden typischerweise die Sicherheit der Chiffre erhöht. Dies führt zum Begriff der Sicherheitsmarge.

Sicherheitsmarge: Die Sicherheitsmarge einer gegebenen SPN-basierten kryptographischen Chiffre ist die Differenz zwischen der Anzahl der Runden in der vollständigen Implementierung der Chiffre und der maximalen Anzahl von Runden, von denen bekannt ist, dass sie mit dem besten bekannten realen Angriff gebrochen werden können.

Derzeit können beispielsweise die besten bekannten schnelleren-als-Brute-Force-Angriffe gegen AES-256 bis zu 9 Runden von insgesamt 14 Runden der vollständigen Chiffre brechen, wenn sie im Standardmodus bekannt als Electronic Codebook (ECB)-Modus verwendet wird. Daher beträgt die Sicherheitsmarge von AES-256 derzeit 5 Runden.

Stromchiffren: Als Alternative zu Blockchiffren haben moderne Kryptologen auch praktisch sichere Stromchiffren wie ChaCha20 entwickelt. Diese Chiffren nutzen Zufälligkeit als grundlegenden Teil ihres Designs und operieren auf pseudozufälligen Schlüsselströmen von Bits anstelle von diskreten Datenblöcken.

Dementsprechend kombinieren Stromchiffren einen geheimen Schlüssel und einen Initialisierungsvektor (IV), um einen pseudozufälligen Zufallszahlengenerator (PRNG) zu initialisieren und einen Schlüsselstrom zufälliger Bits zu erzeugen, der dann mit dem gegebenen Klartext kombiniert wird, um den Ciphertext zu erzeugen. In diesem Sinne ähneln Stromchiffren einem One-Time-Pad (OTP), verfügen aber über kürzere geheime Schlüssellängen und wiederverwendbare Schlüssel, was sie praktischer macht. Aus demselben Grund garantieren sie jedoch keine perfekte Geheimhaltung, im Gegensatz zu einem OTP.

Semantische Sicherheit: Wir schließen diesen Unterabschnitt mit einer Rückkehr zum Begriff der semantischen Sicherheit oder IND-CPA-Sicherheit, die oben eingeführt wurde. Die grundlegenden Operationen, die von Blockchiffren wie S-Box und P-Box implementiert werden, sind deterministisch. Das bedeutet, dass in Standardbetriebsmodi wie ECB ein gegebenes Klartext-Schlüssel-Paar stets denselben Ciphertext erzeugt – eine Situation, die anfällig für gewählte Klartextangriffe ist.

Um IND-CPA-Sicherheit zu erreichen, müssen Blockchiffren in einem Modus betrieben werden, der Zufälligkeit nutzt, die über einen pseudozufälligen Initialisierungsvektor (IV) eingebracht wird, mit der zusätzlichen Anforderung, dass keine zwei Verschlüsselungsoperationen dasselbe Schlüssel-IV-Paar verwenden. AES unterstützt mehrere Betriebsmodi, wie Cipher Block Chaining (CBC), die IND-CPA-sicher sind. Eine ähnliche Anforderung gilt auch für Stromchiffren, bei denen dasselbe Schlüssel-IV-Paar den PRNG nicht mehr als einmal initialisieren sollte, wenn IND-CPA gewünscht wird.

Nachdem wir einige grundlegende Prinzipien der SKC vorgestellt haben, listen wir nun einige beliebte symmetrische Schlüsselalgorithmen auf, um eine Vielzahl der in modernen Kryptosystemen verfolgten Ansätze zu illustrieren. Moderne Blockchiffren und Stromchiffren werden beide in verschiedenen Kontexten eingesetzt, wie unten dargestellt.

  1. Advanced Encryption Standard: AES, bereits oben vorgestellt, ist derzeit der De-facto-Standard für SKC dank seiner Sicherheits-, Effizienz- und Leistungseigenschaften. AES verfügt über feste Schlüsselgrößen von 128, 192 und 256 Bits und verwendet ein mehrrundenbasiertes Substitutions-Permutations-Netzwerk (SPN). AES ist bekannt dafür, gegen eine Vielzahl kryptanalytischer Angriffe resistent zu sein. AES wurde 2001 als Federal Information Processing Standard (FIPS) für die symmetrische Schlüsselverschlüsselung in den Vereinigten Staaten angekündigt.

  2. Data Encryption Standard (DES) und Triple Data Encryption Standard (3DES): DES war eine Blockchiffre, die ursprünglich von Horst Feistel und Mitarbeitern bei IBM® in den 1970er Jahren erfunden wurde und ein SPN mit einem relativ kurzen 56-Bit-Schlüssel verwendete. DES wurde bis Ende der 1990er Jahre als FIPS für die symmetrische Schlüsselverschlüsselung in den Vereinigten Staaten eingesetzt, bis gezeigt wurde, dass er mit Brute-Force-Angriffen mithilfe spezialisierter Hardware aufgrund seines kleinen Schlüsselraums gebrochen werden konnte. Daraufhin wurde 3DES als Ersatz eingeführt und wendet den DES-Algorithmus dreimal mit verschiedenen Schlüsseln an, was die Schlüssellänge auf 168 Bits erhöht. Dennoch wurde 3DES weitgehend durch AES ersetzt.

  3. Blowfish und Twofish: Blowfish und sein Nachfolger Twofish sind Blockchiffren, die vom Kryptographen Bruce Schneier in den 1990er Jahren vorgeschlagen wurden. Blowfish und Twofish erlauben variable Schlüssellängen von bis zu 448 Bits bzw. 256 Bits und bieten eine gewisse Flexibilität beim Abwägen von Sicherheit und Leistung. Im Gegensatz zu AES verfügen sie außerdem über schlüsselabhängige S-Boxen. Twofish war einer der Finalisten im NIST-Wettbewerb zur Auswahl des Advanced Encryption Standard, wurde aber letztendlich nicht gewählt. Beide Algorithmen gelten derzeit als sicher.

  4. Rivest-Chiffren (RC2, RC4, RC5 und RC6): Die Rivest-Cipher (RC)-Familie symmetrischer Schlüsselalgorithmen wurde ab den 1980er Jahren von Ron Rivest entworfen. RC2 war eine frühe 64-Bit-Blockchiffre, während RC4 eine weit verbreitete Stromchiffre in Sicherheitsprotokollen für den Webverkehr aufgrund ihrer Einfachheit und Geschwindigkeit war. Keine von beiden gilt derzeit als sicher. RC5 und RC6 sind SPN-basierte Blockchiffren, die mit anpassbarer Blockgröße, Schlüsselgröße und Rundenanzahl entworfen wurden. Wie Twofish war RC6 ein Finalist im NIST-AES-Wettbewerb und gilt als sicher.

  5. Salsa20 und ChaCha20: Salsa20 und ChaCha20 sind eine verwandte Familie von Stromchiffren, die vom Kryptographen Daniel Bernstein in den 2000er Jahren entworfen wurden. Salsa20 ist Teil des eSTREAM-Portfolios des europäischen kryptographischen Validierungsprojekts (Profil 1). ChaCha20, eine Modifikation von Salsa20, wurde entworfen, um die Diffusionseigenschaften und die Leistung zu verbessern. Derzeit gilt ChaCha20 als sicher und bietet eine bessere Leistung ohne dedizierte AES-Hardwarebeschleunigung. Daher findet ChaCha20 Verwendung in bestimmten Bereichen wie Netzwerkprotokollen wie QUIC und mobilen Geräten mit ARM-basierten CPUs.

Vorteile der symmetrischen Schlüsselkryptographie

Nachdem wir die Eigenschaften symmetrischer Schlüsselkryptosysteme und einige der Prinzipien, die ihrer Entwicklung zugrunde liegen, skizziert haben, listen wir nun einige der Hauptvorteile von SKC im Vergleich zur asymmetrischen Schlüsselkryptographie auf. Letztere wird in den folgenden Lektionen besprochen.

  1. Geschwindigkeit und Effizienz: Symmetrische Schlüsselalgorithmen sind besser für die Verschlüsselung großer Datenmengen oder für den Einsatz in Echtzeit-Kommunikationsszenarien geeignet, da sie im Allgemeinen schneller und ressourcenschonender sind als ihre asymmetrischen Gegenstücke. SKC-Algorithmen wie AES skalieren linear mit der Größe des Klartexts und beinhalten keine algebraisch intensiven mathematischen Operationen. Siehe Tomoiaga et al. für eine detaillierte Übersicht der Leistungseigenschaften von AES.

  2. Skalierbarkeit: Aufgrund ihres relativ geringen Rechenaufwands skalieren symmetrische Schlüsselalgorithmen gut mit der Anzahl der Benutzer und der Menge der zu verschlüsselnden Daten.

  3. Einfachheit: Symmetrische Verschlüsselungsprotokolle sind oft einfacher zu implementieren und zu verstehen als asymmetrische Schlüsselansätze, was sie für Entwickler und Benutzer attraktiv macht.

Herausforderungen und Einschränkungen der symmetrischen Schlüsselkryptographie

Trotz der Vorteile hat die symmetrische Schlüsselkryptographie auch einige Herausforderungen und Einschränkungen:

  1. Schlüsselverteilung und -verwaltung: Bei der SKC müssen sowohl Sender als auch Empfänger einer Nachricht Zugang zu demselben Schlüssel haben, der vor unbefugten Parteien geheim gehalten werden muss. Wenn der Schlüssel irgendwie von einer dritten Partei abgefangen oder kompromittiert wird, geht auch die Sicherheit der verschlüsselten Daten verloren. Die sichere Verteilung und Verwaltung des geheimen Schlüssels ist daher eine große Herausforderung. Die Lösung dieser Herausforderung liegt jedoch außerhalb der SKC selbst.

  2. Fehlende Nicht-Abstreitbarkeit: Nicht-Abstreitbarkeit bezeichnet die Fähigkeit, nachzuweisen, dass eine bestimmte Partei eine Nachricht gesendet hat. Bei der SKC ist es, da derselbe Schlüssel für die Ver- und Entschlüsselung verwendet wird, nicht möglich festzustellen, welche Partei einen bestimmten Ciphertext erstellt hat. Im Gegensatz dazu bietet die asymmetrische Schlüsselkryptographie Nicht-Abstreitbarkeit durch die Verwendung von digitalen Signaturen.

Um diesen Herausforderungen zu begegnen, wird die symmetrische Schlüsselkryptographie oft in Kombination mit der asymmetrischen Schlüsselkryptographie eingesetzt. Beispielsweise verwendet man häufig asymmetrische Schlüsselverschlüsselung, um einen relativ kurzen gemeinsamen geheimen Schlüssel sicher zwischen Sender und Empfänger zu übertragen. Dies ermöglicht die anschließende Nutzung der symmetrischen Schlüsselverschlüsselung, um wesentlich größere Daten und Nachrichten effizient zu übertragen.

Quantencomputing und symmetrische Schlüsselverschlüsselung: Risiken und Minderung

Quantenkryptographie bietet einen vielversprechenden Weg zur Risikominderung im digitalen Zeitalter, wobei die Einführung quantensicherer Produkte darauf abzielt, unsere Informationen gegen die drohende Bedrohung durch Fortschritte im Quantencomputing zu sichern.

Im Folgenden erörtern wir die Risiken, die Quantencomputer für symmetrische Schlüsselverschlüsselungsverfahren darstellen, und skizzieren einige potenzielle Wege zur Risikominderung.

Quantenkryptographische Angriffe

Es gibt zwei verschiedene Klassen von Quantenbedrohungen für traditionelle kryptographische Algorithmen:

  1. Quanten-Brute-Force-Angriffe: Diese beziehen sich auf Situationen, in denen der Angreifer einen Quantencomputer einsetzt, um einen spezialisierten Quantenalgorithmus zur Durchführung einer Brute-Force-Suche durch den Schlüsselraum einer symmetrischen Chiffre auszuführen. Das relevanteste Quanten-Primitiv für diese Art von Angriff ist Grovers Algorithmus.

  2. Quanten-kryptanalytische Angriffe: Diese beziehen sich auf Situationen, in denen Quantencomputer eingesetzt werden, um kryptanalytische Angriffe auszuführen, die darauf abzielen, den geheimen Schlüssel oder den Klartext effizienter als eine Brute-Force-Suche wiederherzustellen. Die Möglichkeit, erfolgreiche quanten-kryptanalytische Angriffe durchzuführen, hängt von vielen Faktoren ab, die mit der mathematischen Struktur der analysierten Chiffre sowie potenziellen Schwachstellen in spezifischen Implementierungen zusammenhängen.

Strategien zur Risikominderung bei Quantenangriffen

Bevor wir Strategien zur Risikominderung bei Quantenangriffen besprechen, führen wir den Begriff des Sicherheitsniveaus einer kryptographischen Chiffre ein:

Sicherheitsniveau ist ein Maß für die Schwierigkeit, eine Chiffre zu brechen, gemessen in der Anzahl der Rechenoperationen, die ein erfolgreicher Angriff erfordern würde.

Typischerweise wird das Sicherheitsniveau in Bits ausgedrückt; d. h., im Allgemeinen bietet eine Chiffre N-Bit-Sicherheit, wenn O(2N)\mathcal{O}(2^{N}) Operationen benötigt werden, um sie zu brechen. Auf klassischen Computern ist das Sicherheitsniveau, unter der Annahme, dass eine symmetrische Chiffre ansonsten kryptographisch sicher ist, grob gesagt gleichbedeutend mit der Schlüssellänge.

Das Sicherheitsniveau von AES-128, das über einen 128-Bit-Schlüssel verfügt, wird beispielsweise allgemein als 128 Bits betrachtet, da ein Angreifer, der einen klassischen Computer verwendet, auf die Größenordnung von 2128^{128} Operationen benötigen würde, um alle möglichen 128-Bit-Schlüssel im Schlüsselraum auszuprobieren.

Brute-Force-Angriffe und Minderung

Risiko eines Quanten-Brute-Force-Angriffs: Ein Quanten-Brute-Force-Angriff verändert die obige Bewertung, weil Grovers Algorithmus einem Angreifer mit einem geeigneten Quantencomputer ermöglicht, den Schlüsselraum einer Chiffre quadratisch schneller als jeder klassische Computer zu durchsuchen.

Der gleiche Brute-Force-Angriff auf AES-128 mit Grovers Algorithmus könnte beispielsweise potenziell mit nur 264^{64} Operationen durchgeführt werden. Daher wird das Sicherheitsniveau von AES-128 von 128 Bits auf 64 Bits reduziert, wenn ein Quantenangreifer mit der Grover-Suche konfrontiert wird. Da die Rechenleistung traditionell exponentiell mit der Zeit gewachsen ist, gilt ein Sicherheitsniveau von 64 Bits derzeit als unsicher, was bedeutet, dass AES-128 aufgegeben werden muss, sobald hinreichend leistungsfähige Quantencomputer realisiert werden.

Die gleiche Berechnung gilt für andere symmetrische Block- oder Stromchiffren, bei denen das Sicherheitsniveau für eine gegebene Schlüssellänge durch Grovers Algorithmus effektiv halbiert wird.

Minderung des Risikos eines Quanten-Brute-Force-Angriffs: Die obigen Überlegungen implizieren, dass ein offensichtlicher Weg, Quanten-Brute-Force-Angriffe zu widerstehen, darin besteht, zumindest die Mindestschlüssellängen für die symmetrische Schlüsselverschlüsselung zu verdoppeln.

Um daher 128-Bit-Sicherheit gegenüber Quanten-Brute-Force-Angriffen zu gewährleisten, würde man einfach Chiffren wie AES-256 oder ChaCha20 verwenden, die 256-Bit-Schlüssel einsetzen. Dies gilt als sicher, denn selbst mit Quantencomputern ist die Durchführung von 2128^{128} Operationen zum Brechen von Chiffren in absehbarer Zukunft nicht machbar.

Obwohl theoretisch einfach, ist diese vorgeschlagene Lösung der Verdoppelung der Schlüsselgrößen nicht ohne Kosten, da längere Schlüsselgrößen zusätzliche Rechenkosten für routinemäßige Ver- und Entschlüsselungsaufgaben sowie langsamere Leistung, mehr Speicherbedarf und zusätzlichen Energieverbrauch bedeuten.

Kryptanalytische Angriffe und Minderung

Risiko quanten-kryptanalytischer Angriffe: Das Risiko, das symmetrische Schlüsselkryptosysteme durch quanten-kryptanalytische Angriffe bedroht werden, wird derzeit von Kryptographen aktiv erforscht. Die Kombination von klassischem und Quantencomputing erweitert potenziell das Arsenal an Werkzeugen, das Angreifern zur Verfügung steht, um Schwachstellen in der mathematischen Struktur von Chiffren zu untersuchen, und eine breite Palette neuer quanten-kryptanalytischer Angriffe wird derzeit vorgeschlagen. Dazu gehören Quantisierungen bekannter klassischer Techniken wie lineare und differenzielle Kryptanalyse sowie neue Angriffsmodi ohne klassische Gegenstücke.

Eine aktuelle quanten-kryptanalytische Studie des Advanced Encryption Standard (AES) stellte fest, dass die Chiffre gegen verschiedene bekannte quanten-kryptanalytische Angriffe resistent blieb und weiterhin eine angemessene Post-Quanten-Sicherheitsmarge aufwies. Einige Studien haben jedoch festgestellt, dass verschiedene als klassisch sicher geltende symmetrische Chiffren leicht durch sogenannte quanten-gewählte Klartextangriffe kompromittiert werden. Daher wurden auch neue Primitive für die symmetrische Schlüsselverschlüsselung, die speziell für die Post-Quanten-Ära entworfen wurden, vorgeschlagen.

Minderung des Risikos quanten-kryptanalytischer Angriffe: Da die Quanten-Kryptanalyse als Disziplin noch in den Kinderschuhen steckt, könnte es sein, dass die Post-Quanten-symmetrische Kryptographie einer raschen Evolution unterliegt, wenn neue quanten-kryptanalytische Angriffe entstehen und neue dagegen resistente Chiffren vorgeschlagen und bewertet werden. Daher ist die beste Strategie zur Risikominderung gegenüber quanten-kryptanalytischen Angriffen in absehbarer Zukunft die kryptographische Agilität (oder Krypto-Agilität). Krypto-Agilität bezeichnet die Fähigkeit eines Informationssystems, schnell und einfach alternative kryptographische Primitive zu übernehmen, ohne störende Änderungen an der Systeminfrastruktur vorzunehmen.

Krypto-Agilität erfordert die Fähigkeit, veraltete Algorithmen für Verschlüsselung, Entschlüsselung, digitale Signaturen oder andere kryptographische Funktionen mit minimalem Aufwand und minimaler Störung zu ersetzen. Krypto-agile Systeme werden gut positioniert sein, um den Übergang zur Post-Quanten-symmetrischen Schlüsselkryptographie zu bewältigen.

Zusammenfassung

Symmetrische Schlüsselkryptographie bietet robuste und effiziente Lösungen zur Sicherung digitaler Informationen. Die Einfachheit, denselben Schlüssel für die Ver- und Entschlüsselung zu verwenden, ermöglicht hohe Leistung und Skalierbarkeit, was SKC für eine Vielzahl von Anwendungen geeignet macht.

Die Sicherheit der SKC beruht auf algorithmischer Resistenz gegen kryptographische Angriffe sowie auf einer ordnungsgemäßen Verwaltung geheimer Schlüssel. Moderne symmetrische Schlüsselkryptosysteme kombinieren die Prinzipien von Konfusion, Diffusion und Zufälligkeit in Verbindung mit angemessenen Schlüsselgrößen, um semantische Sicherheit zu erreichen. Die Verwaltung geheimer Schlüssel ist zwar entscheidend, kann aber mit SKC allein nicht erreicht werden.

Das Verständnis der Eigenschaften und Einschränkungen der SKC wird Entwicklerinnen und Entwicklern ermöglichen, sichere Informationstechnologielösungen zu entwerfen, zu implementieren und bereitzustellen, indem bei Bedarf längere Schlüsselgrößen und neue Algorithmen verwendet werden.

Der Fortschritt des Quantencomputings und des Quantenlernens führt eine neue Dimension in die symmetrische Schlüsselkryptographie ein. Quantencomputer haben das Potenzial, die durch klassische symmetrische Schlüsselalgorithmen bereitgestellte Sicherheit zu untergraben, was die Notwendigkeit quantenresistenter kryptographischer Ansätze weckt, um den Datenschutz und die Datensicherheit angesichts sich verändernder technologischer Landschaften zu gewährleisten.