Bei einem sicheren Nachrichtenaustausch zwischen verschiedenen Parteien muß dieser Schlüssel allen Beteiligten bekannt sein. Und hier liegt auch das Hauptproblem, auf das man bei der Benutzung von symmetrischen Chiffren stößt: Der sichere Schlüsselaustausch. Bevor man sicher vor ungewollten Lauschern mittels verschlüsselter Botschaften kommunizieren kann, muß man den Schlüssel an alle Gesprächspartner verteilen, falls er ihnen noch nicht bekannt ist. Doch dieses ist kein triviales Problem, da ja offensichtlich kein sicherer Kanal zu den Gesprächspartnern vorhanden ist (sonst müßte man den Nachrichtenaustausch schließlich nicht verschlüsseln).
In der Familie der symmetrischen Chiffren gibt es zwei Kategorien: Die Stromchiffren, welche die Daten bitweise verschlüsseln, und die Blockchiffren, die den Text in Blöcken fester Größe verschlüsseln.
Eine Stromchiffre verschlüsselt den Klartext i.A. bitweise (manchmal aber
auch in größeren Einheiten). Dieses geschieht in den meisten Fällen durch
eine bitweise exklusive Veroderung (XOR) mit einem Schlüsselstrom (
, wobei
jeweils das i-te Bit des
Chiffretextes, Klartextes und
Schlüsselstroms sind). Die Entschlüsselung findet ebenfalls durch bitweises
XOR mit dem gleichen Schlüsselstrom statt. (
). Der Schlüsselstrom wird durch einen Algorithmus (dem sogenannten
Schlüsselstrom-Generator) erzeugt, der als Eingabe zur Initialisierung einen
Wert (den eigentlichen Schlüssel) bekommt. Der gleiche Schlüssel erzeugt
immer den gleichen Schlüsselstrom, so dass den einzelnen
Kommunikationspartnern lediglich der Schlüssel bekannt sein muß, um den
Strom an Chiffretext-Bits zu entschlüsseln. Die Sicherheit einer Stromchiffre
beruht auf der Güte des Schlüsselstrom-Generators. Der Schlüsselstrom-Generator produziert
eine Folge von Bits, deren Auftreten möglichst zufällig
ist. Je besser der Generator den Zufall approximiert, desto sicherer wird die
Chiffrierung. Bei der Verwendung von Stromchiffren sollte man
darauf achten, niemals den gleichen Schlüssel (und somit den gleichen
Chiffrestrom) zweimal zu verwenden. Falls man dieses tut, könnte eine
dritte Person, die die beiden Chiffretexte abgefangen hat, diese beiden
miteinander exklusiv verodern. Als Ergebnis erhält sie eine exklusive
Veroderung der beiden Klartexte (die Schlüsselstrom-Bits fallen bei diesem
Vorgehen weg). Dieses ist leicht zu entschlüsseln, da das Vorkommen der
einzelnen Zeichen in Sprache alles andere als zufällig ist. Durch die
Kenntnis eines der Klartexte kann man nun den Schlüsselstrom berechnen
(durch XOR des Klar- und des Chiffretextes) und hat dadurch die
Möglichkeit, alle weiteren Nachrichten, die mit diesem Schlüssel chiffriert
wurden, problemlos zu lesen.
Ebenfalls sollte man darauf achten, dass, wenn man einen Schlüsselstrom- Generator mit einem periodischen Schlüsselstrom verwendet, die Größe der zu verschlüsselnden Daten kleiner ist als die Größe der Periode. Falls dieses nicht erfüllt ist, gibt man eventuellen Lauschern einen Ansatzpunkt zum erfolgreichen Entschlüsseln des Textes: Es besteht so die Möglichkeit, den Chiffretext in Blöcke der Größe der Periode aufzuteilen und diese, ähnlich zu dem oben erwähnten Angriff, mit einander exklusiv zu verodern. Da sich der Schlüssel nach dem Durchlaufen der Periode wiederholt, fallen auch bei diesem Vorgehen die Schlüsselbits weg (s.o.).
Durch die oben beschriebenen Eigenschaften (Strom von Chiffretext-Bits durch bitweise Verschlüsselung, keine Notwendigkeit, spezielle Blockgrößen der zu verschlüsselnden Daten einzuhalten) eignen sich Stromchiffren besonders für den Einsatz an Orten, wo es auf die Verschlüsselung kontinuierlicher Datenströme ankommt (z.B. Video/Audio).
Bei den synchronen Stromchiffren ist der Schlüsselstrom unabhängig vom Datenstrom, d.h. der generierte Strom von Schlüsselbits wird allein bestimmt durch den verwendeten Algorithmus und den Schlüssel. Der Vorteil einer solchen Verfahrensweise ist, dass die Berechnung des Schlüsselstroms im vorhinein erledigt werden kann, und beim eigentlichen Nachrichtenaustausch nur noch die XOR-Verknüpfung mit den Daten stattfinden muß. Besonders bei rechenintensiven Algorithmen kann man so den Datendurchsatz der Kommunikation erheblich erhöhen. Der Nachteil von synchronen Stromchiffren ist, dass bei nur einem verlorengegangenen Bit der gesamte folgende Chiffretext unbrauchbar ist. Dieses ist der Fall, weil sowohl auf Sender- wie auch auf Empfängerseite die Schlüsselstrom-Generatoren die jeweiligen Daten-Bits mit dem selben Schlüsselstrom-Bit (de)kodieren müssen, sie müssen also synchron vorgehen (daher auch der Name). Falls ein Bit verloren geht, geraten die beiden in Asynchronismus. Während der Sender schon bei Bit Nummer i+1 ist, ist der Empfänger noch bei Bit Nummer i und versucht somit eine Dechiffrierung anhand eines falschen Schlüsselstrom-Bits. Dieses setzt sich auf den Rest des Chiffretextes fort. Fehlerhaft übertragene Bits wiederum machen keine größeren Probleme. Die fehlerhaften Bits werden zwar falsch dechiffriert, aber der Rest der Nachricht bleibt entschlüsselbar.
Bei selbstsynchronisierenden Stromchiffren ist jedes Schlüsselstrom-Bit
eine Funktion einer festen Anzahl (n) vorhergehender Chiffretext-Bits.
Dadurch bekommt die Chiffre die Eigenschaft, dass auch unter Verwendung
des gleichen Schlüssels unterschiedliche Daten mit unterschiedlichen
Schlüsselströmen kodiert werden. Somit fällt der Angriffsansatz aus
weg. Fehlerhaft übertragene oder fehlende Bits führen dazu, dass die
nächsten n Bits falsch dechiffriert werden, da die Funktion zur Berechnung
des Schlüsselstroms auf Sender- und Empfängerseite mit unterschiedlichen
Chiffretext-Bits arbeitet. Nach n Bits haben sich die beiden aber wieder
synchronisiert (deswegen selbstsynchronisierend) und arbeiten wieder
korrekt (die Kommunikationspartner haben allerdings keine Möglichkeit zu
entscheiden, ab welcher Stelle wieder synchron gearbeitet wird - dieses
kann bestenfalls aus den empfangenen Daten geschlossen werden).
Dieses eigentlich sehr wünschenswerte Verhalten ermöglicht aber auch
einen Angriff auf die Kommunikation durch Wiedereinspielung. Eine dritte
Partei, die aus einem früher stattgefundenen Nachrichtenaustausch
Chiffretextbits gespeichert hat, kann diese später in einen
Nachrichtenaustausch wieder einschleusen. Auf Empfängerseite wird dann
für n Bits unbrauchbarer Datenmüll entschlüsselt, danach hat sich der
Schlüsselstrom-Generator aber mit den alten Daten synchronisiert und
entschlüsselt nun einwandfrei die eingeschleusten Daten. Dies funktioniert
natürlich nur, wenn der Schlüssel in der Zwischenzeit nicht geändert wurde.
Ein Beispiel für eine häufig verwendete Stromchiffre ist RC4 (von Ron Rivest, 1987). RC4 ist eine synchrone Stromchiffre mit einer variablen Schlüssellänge und findet unter anderem Einsatz in Lotus Notes und Oracle Secure SQL.