Stromverschlüsselung
In der Kryptographie ist eine Stromchiffrierung eine symmetrische Schlüsselchiffrierung, bei der Klartextbits mit einem pseudozufälligen Chiffrierbitstrom (Schlüsselstrom) unter Verwendung einer Exklusiv-Oder-Operation (xor) kombiniert werden. Bei einer Stromchiffrierung werden die Klartextziffern einzeln verschlüsselt, und die Umwandlung aufeinanderfolgender Ziffern variiert während des Verschlüsselungsstatus. Ein alternativer Name ist eine Zustands-Chiffre, da die Verschlüsselung jeder Ziffer vom aktuellen Zustand abhängig ist. In der Praxis sind die Ziffern in der Regel einzelne Bits oder Bytes.
Stream-Chiffren stellen einen anderen Ansatz zur symmetrischen Verschlüsselung dar als Block-Chiffren. Blockchiffrierungen arbeiten mit großen Blöcken fester Länge. Stream-Chiffren arbeiten in der Regel mit einer höheren Geschwindigkeit als Blockchiffren und haben geringere Hardware-Anforderungen. Allerdings können Stream-Chiffren bei falscher Verwendung zu ernsthaften Sicherheitsproblemen führen; so darf insbesondere der gleiche Ausgangszustand nie zweimal verwendet werden.
Eine Stromchiffrierung verwendet einen viel kleineren und bequemeren kryptographischen Schlüssel, zum Beispiel 128-Bit-Schlüssel. Auf der Grundlage dieses Schlüssels erzeugt sie einen pseudozufälligen Schlüsselstrom, der ähnlich wie beim One-Time-Pad-Verschlüsselungsalgorithmus mit den Klartextziffern kombiniert werden kann. Da der Schlüsselstrom jedoch pseudozufällig und nicht wirklich zufällig ist, kann die mit dem One-Time-Pad verbundene Sicherheit nicht angewendet werden, und es ist durchaus möglich, dass eine Stromchiffrierung völlig unsicher ist.
Der Betrieb des Keystream-Generators in A5/1, einer LFSR-basierten Stromchiffrierung, die zur Verschlüsselung von Mobiltelefongesprächen verwendet wird.
Arten von Strom-Chiffren
Eine Stromchiffrierung erzeugt auf der Grundlage eines internen Zustands aufeinanderfolgende Elemente des Schlüsselstroms. Dieser Zustand wird auf zwei Arten aktualisiert:
- Ändert sich der Zustand unabhängig von den Klartext- oder Chiffretextnachrichten, wird die Chiffre als synchrone Stromchiffre klassifiziert.
- Wenn der Zustand aufgrund früherer Änderungen der Ziffern des Chiffriertextes aktualisiert wird, wird die Chiffre als selbstsynchronisierende Stromchiffre klassifiziert.
Synchrone Strom-Chiffren
Bei einer synchronen Stromchiffrierung wird unabhängig von den Klartext- und Chiffretextnachrichten ein Strom von Pseudozufallszahlen erzeugt und dann mit dem Klartext (zum Verschlüsseln) oder mit dem Chiffretext (zum Entschlüsseln) kombiniert. In der gebräuchlichsten Form werden Binärziffern (Bits) verwendet, und der Schlüsselstrom wird mit dem Klartext unter Verwendung der Exklusiv- oder Operation (XOR) kombiniert. Dies wird als binäre additive Stromchiffrierung bezeichnet.
Bei einer synchronen Stromchiffrierung müssen Sender und Empfänger synchron sein, damit die Entschlüsselung erfolgreich sein kann. Wenn während der Übertragung Ziffern zur Nachricht hinzugefügt oder aus ihr entfernt werden, geht die Synchronisierung verloren. Um die Synchronisierung wiederherzustellen, können systematisch verschiedene Offsets versucht werden, um die korrekte Entschlüsselung zu erhalten. Ein anderer Ansatz ist die Markierung des Chiffriertextes mit Markierungen an regulären Stellen in der Ausgabe.
Wenn jedoch eine Ziffer bei der Übertragung beschädigt wird und nicht hinzugefügt oder verloren geht, ist nur eine einzige Ziffer im Klartext betroffen, und der Fehler breitet sich nicht auf andere Teile der Nachricht aus. Diese Eigenschaft ist nützlich, wenn die Übertragungsfehlerrate hoch ist; sie macht es jedoch weniger wahrscheinlich, dass der Fehler ohne weitere Mechanismen entdeckt würde. Darüber hinaus sind synchrone Stromchiffrierungen aufgrund dieser Eigenschaft sehr anfällig für aktiveAngriffe - wenn ein Angreifer eine Ziffer im Chiffriertext ändern kann, ist er möglicherweise in der Lage, vorhersagbare Änderungen am entsprechenden Klartextbit vorzunehmen; wenn beispielsweise ein Bit im Chiffriertext umgedreht wird, wird dasselbe Bit im Klartext umgedreht (umgeschaltet).
Selbstsynchronisierende Strom-Chiffren
Selbstsynchronisierende Stromchiffrierungen sind eine weitere Technik, die einen Teil der vorherigen N Chiffriertextziffern zur Berechnung des Schlüsselstroms verwendet. Solche Schemata werden auch als asynchrone Stromchiffrierung oder Ciphertext-Autokey (CTAK) bezeichnet. Die Idee der Selbstsynchronisation wurde 1946 patentiert und hat den Vorteil, dass sich der Empfänger nach dem Empfang von N Chiffriertextziffern automatisch mit dem Schlüsselstromgenerator synchronisiert, wodurch die Wiederherstellung erleichtert wird, wenn Ziffern ausgelassen oder dem Nachrichtenstrom hinzugefügt werden. Einstellige Fehler sind in ihrer Wirkung begrenzt und betreffen nur bis zu N Klartextziffern. Es ist etwas schwieriger, aktive Angriffe auf selbstsynchronisierende Stromchiffrierungen durchzuführen als auf synchrone Gegenstücke.
Ein Beispiel für eine selbstsynchronisierende Stromchiffrierung ist eine Blockchiffrierung im Cipher-Feedback-Modus (CFB).
Linear rückgekoppelte Schieberegister-basierte Strom-Chiffren
Binäre Stromchiffrierungen werden oft mit Hilfe von Schieberegistern mit linearer Rückkopplung (LFSRs) konstruiert, da sie leicht in Hardware implementiert und schnell mathematisch analysiert werden können. Die Verwendung von LFSRs allein reicht jedoch nicht aus, um eine gute Sicherheit zu gewährleisten. Es wurden verschiedene Schemata entworfen, um die Sicherheit von LFSRs zu erhöhen.
Nicht-lineare Kombinationsfunktionen
Da LFSRs von Natur aus linear sind, besteht eine Technik zur Beseitigung der Linearität darin, die Ausgänge einer Gruppe paralleler LFSRs in eine nichtlineare Boolesche Funktion einzuspeisen, um einen Kombinationsgenerator zu bilden. Verschiedene Eigenschaften einer solchen Kombinationsfunktion sind wichtig, um die Sicherheit des resultierenden Schemas zu gewährleisten, z.B. um Korrelationsangriffe zu vermeiden.
Taktgesteuerte Generatoren
Normalerweise werden LFSRs regelmäßig gestuft. Eine Technik zur Einführung der Nichtlinearität besteht darin, dass der LFSR unregelmäßig getaktet wird, gesteuert durch das Ausgangssignal eines zweiten LFSR. Zu solchen Generatoren gehören der Stop-and-Go-Generator, der Wechselschrittgenerator und der Schrumpfungsgenerator.
Der Stop-and-Go-Generator (Beth und Piper, 1984) besteht aus zwei LFSRs. Ein LFSR wird getaktet, wenn der Ausgang eines zweiten eine "1" ist, andernfalls wiederholt er seinen vorherigen Ausgang. Dieser Ausgang wird dann (in einigen Versionen) mit dem Ausgang eines dritten LFSR kombiniert, der mit einer regelmäßigen Rate getaktet wird.
Der Schrumpfungsgenerator verwendet eine andere Technik. Es werden zwei LFSRs verwendet, die beide auf folgende Weise regelmäßig getaktet werden:
- Wenn der Ausgang des ersten LFSR "1" ist, wird der Ausgang des zweiten LFSR zum Ausgang des Generators.
- Wenn die Ausgabe des ersten LFSR "0" ist, wird die Ausgabe des zweiten LFSR verworfen, und es wird kein Bit vom Generator ausgegeben.
Diese Technik leidet unter Timing-Angriffen auf den zweiten Generator, da die Geschwindigkeit der Ausgabe in einer Weise variabel ist, die vom Zustand des zweiten Generators abhängt. Dies kann durch Puffern der Ausgabe verbessert werden.
Filter-Generator
Ein weiterer Ansatz zur Verbesserung der Sicherheit eines LFSR besteht darin, den gesamten Zustand eines einzelnen LFSR in eine nichtlineare Filterfunktion zu überführen.
Andere Entwürfe
Anstelle einer linearen Antriebsvorrichtung kann man auch eine nichtlineare Aktualisierungsfunktion verwenden. Beispielsweise schlugen Klimov und Shamir Dreiecksfunktionen (T-Funktionen) mit einem einzigen Zyklus auf n-Bit-Wörtern vor.
Sicherheit
Um sicher zu sein, muss die Periode des Schlüsselstroms (die Anzahl der ausgegebenen Ziffern, bevor sich der Strom wiederholt) groß genug sein. Wenn sich die Sequenz wiederholt, können die sich überlappenden Chiffriertexte "in der Tiefe" gegeneinander ausgerichtet werden, und es gibt Techniken, die die Extraktion des Klartextes aus den mit diesen Methoden erzeugten Chiffriertexten ermöglichen.
Verwendung
Stream-Chiffren werden häufig bei Anwendungen eingesetzt, bei denen Klartext in Mengen von unbekannter Länge vorliegt, wie z.B. bei sicheren drahtlosen Verbindungen. Würde eine Blockchiffrierung in dieser Art von Anwendung eingesetzt, müsste der Konstrukteur entweder die Übertragungseffizienz oder die Implementierungskomplexität wählen, da Blockchiffrierungen nicht direkt auf Blöcken arbeiten können, die kürzer als ihre Blockgröße sind. Wenn zum Beispiel eine 128-Bit-Blockchiffrierung separate 32-Bit-Klartext-Bursts empfängt, müssen drei Viertel der übertragenen Daten aufgefüllt werden. Blockchiffrierungen müssen im Modus des Chiffretext-Diebstahls oder der Restblockterminierung verwendet werden, um ein Auffüllen zu vermeiden, während Stromchiffrierungen dieses Problem beseitigen, indem sie mit der kleinsten übertragenen Einheit (normalerweise Bytes) arbeiten.
Ein weiterer Vorteil von Stromchiffrierungen in der militärischen Kryptographie besteht darin, dass der Chiffrierstrom von einem Verschlüsselungsgerät erzeugt werden kann, das strengen Sicherheitsmaßnahmen unterliegt und dann anderen Geräten, z.B. einem Funkgerät, zugeführt wird, die die Xor-Operation als Teil ihrer Funktion ausführen. Das andere Gerät kann für den Einsatz in weniger sicheren Umgebungen ausgelegt sein.
RC4 ist die am weitesten verbreitete Stream-Chiffre in der Software; weitere Beispiele A5/1, A5/2, Chamäleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 und WAKE.
RC4 ist eines der am weitesten verbreiteten Stream-Chiffre-Designs.
Vergleich von Strom-Chiffren
StreamCipher | Erstellungsdatum | Geschwindigkeit | (Bits) | Angriff | |||
Wirksam | Initialisierungs-Vektor | InternalState | Bekannteste | Computerkomplexität | |||
A5/1 | 1989 | Stimme (Wphone) | 54 | 114 | 64 | Aktives KPA ODER | ~2 Sekunden OR239.91 |
A5/2 | 1989 | Stimme (Wphone) | 54 | 114 | 64? | Aktiv | 4,6 Millisekunden |
FISCH | 1993 | Ziemlich schnell (Wsoft) | Riesige | ? | ? | Angriff mit bekanntem Klartext | 211 |
Getreide | Vor 2004 | Schnell | 80 | 64 | 160 | Schlüssel-Ableitung | 243 |
HC-256 | Vor 2004 | 4 (WP4) | 256 | 256 | 65536 | ? | ? |
ISAAC | 1996 | 2,375 (W64-Bit) -4 | 8-8288in der Regel | K.A. | 8288 | (2006) Erste Runde - Schwache innerstaatliche Ableitung | 4.67×101240 (2001) |
MUGI | 1998-2002 | ? | 128 | 128 | 1216 | N/A (2002) | ~282 |
PANAMA | 1998 | 2 | 256 | 128? | 1216? | Hash-Kollisionen (2001) | 282 |
Phelix | Vor 2004 | bis zu 8 (Wx86) | 256 + eine 128-Bit-Nonce | 128? | ? | Differential (2006) | 237 |
Hecht | 1994 | 0,9 x FISH (Wsoft) | Riesige | ? | ? | N/A (2004) | N/A (2004) |
Py | Vor 2004 | 2.6 | 8-2048? | 64 | 8320 | Kryptoanalytische Theorie (2006) | 275 |
Kaninchen | 2003-Feb | 3,7(WP3)-9,7(WARM7) | 128 | 64 | 512 | N/A (2006) | N/A (2006) |
1987 | Beeindruckend | 8-2048 in der Regel | 8 | 2064 | Shamir Initial-Bytes Schlüssel-Ableitung OR KPA | 213 ODER 233 | |
Salsa20 | Vor 2004 | 4,24 (WG4) -11 | 128 + eine 64-Bit-Nonce | 512 | 512 + 384 (Schlüssel+IV+Index) | Differenzial (2005) | N/A (2005) |
Schrei | 2002 | 4 - 5 (Wsoft) | 128 + eine 128-Bit-Nonce | 32? | 64-Bit-Runde-Funktion | ? | ? |
SEAL | 1997 | Sehr schnell (W32-Bit) | ? | 32? | ? | ? | ? |
SCHNEE | Vor 2003 | Sehr gut (W32-bit) | 128 ODER 256 | 32 | ? | ? | ? |
SÖBER-128 | 2003 | ? | bis zu 128 | ? | ? | Nachricht fälschen | 2−6 |
SOSEMANUK | Vor 2004 | Sehr gut (W32-bit) | 128 | 128 | ? | ? | ? |
Trivium | Vor 2004 | 4 (Wx86) - 8 (WLG) | 80 | 80 | 288 | Angriff mit roher Gewalt (2006) | 2135 |
Turing | 2000-2003 | 5,5 (Wx86) | ? | 160 | ? | ? | ? |
VEST | 2005 | 42 (WASIC) -64 (WFPGA) | Variabelgewöhnlich | Variabelgewöhnlich | 256 - 800 | N/A (2006) | N/A (2006) |
WAKE | 1993 | Schnell | ? | ? | 8192 | CPA & CCA | Anfällig |
StreamCipher | Erstellungsdatum | Geschwindigkeit | (Bits) | Angriff | |||
Wirksam | Initialisierungs-Vektor | InternalState | Bekannteste | Computerkomplexität |
Verwandte Seiten
- eSTREAM
Fragen und Antworten
F: Was ist eine Stromchiffre?
A: Eine Stromchiffre ist eine symmetrische Schlüsselchiffre, bei der Klartextbits mit einem pseudozufälligen Chiffre-Bitstrom (Schlüsselstrom) unter Verwendung einer Exklusiv-Oder-Operation (xor) kombiniert werden.
F: Wie unterscheidet sie sich von Blockchiffren?
A: Stromchiffren werden in der Regel mit höherer Geschwindigkeit ausgeführt als Blockchiffren und haben geringere Hardwareanforderungen. Blockchiffren arbeiten mit großen Blöcken fester Länge, während Stromchiffren Ziffern einzeln verschlüsseln und die Umwandlung der aufeinanderfolgenden Ziffern während des Verschlüsselungsvorgangs variiert.
F: Welche Art von Schlüssel wird verwendet?
A: Stromchiffren verwenden viel kleinere und bequemere kryptografische Schlüssel, zum Beispiel 128-Bit-Schlüssel.
F: Wie wird der Schlüsseldatenstrom erzeugt?
A: Der Keystream wird auf der Grundlage des verwendeten kryptografischen Schlüssels generiert, ähnlich wie beim One-Time-Pad-Verschlüsselungsalgorithmus. Da der Keystream jedoch pseudozufällig und nicht wirklich zufällig ist, kann die mit dem One-Time-Pad verbundene Sicherheit nicht angewendet werden.
F: Warum dürfen Sie denselben Ausgangszustand nie zweimal verwenden?
A: Die doppelte Verwendung desselben Ausgangszustands kann zu ernsthaften Sicherheitsproblemen führen, da es für Angreifer einfacher ist, Daten zu entschlüsseln, ohne Ihren kryptografischen Schlüssel zu kennen oder Zugriff darauf zu haben.
F: Besteht ein Risiko bei der Verwendung von Stromchiffren?
A: Ja, die Verwendung von Stromchiffren birgt ein Risiko, wenn sie falsch oder ohne entsprechende Vorsichtsmaßnahmen eingesetzt werden, da sie bei unsachgemäßer Handhabung völlig unsicher sein können.