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.