www.wikidata.de-de.nina.az
Eine Blockverschlusselung auch Blockchiffre oder auf Englisch block cipher genannt ist ein deterministisches Verschlusselungsverfahren das einen Klartextblock d h einen Klartextabschnitt fester Lange auf einen Geheimtext oder Schlusseltextblock fester in der Regel der gleichen Lange abbildet Diese Abbildung wird dabei durch einen Schlussel beeinflusst Kennt man diesen kann man aus dem Geheimtext wieder den Klartext berechnen mit etwa dem gleichen Aufwand wie fur das Verschlusseln Ohne Kenntnis des Schlussels ist dies hingegen viel schwieriger bei vielen modernen Blockchiffren ist dafur keine praktikable Methode bekannt Im Gegensatz zu einer Stromchiffre kann eine Blockchiffre nur einen Block der gegebenen Lange verschlusseln wobei die Blocklange typischerweise 64 Bit bis 256 Bit betragt Langere Texte werden auf ein Vielfaches der Blocklange aufgefullt und in Blocke geteilt und es wird ein Betriebsmodus gewahlt der festlegt wie die Blockchiffre darauf anzuwenden ist Blockchiffren werden auch als Bausteine zur Konstruktion weiterer kryptografischer Verfahren z B kryptographischer Hashfunktionen eingesetzt Inhaltsverzeichnis 1 Anforderungen 2 Geschichte 3 Mathematische Beschreibung 4 Entwurfsprinzipien 4 1 Feistelchiffre 4 2 Lai Massey Chiffre 4 3 Substitutions Permutations Netzwerk 4 4 Primitive 5 Kryptographische Betriebsmodi 6 Bekannte Blockchiffren 7 Weblinks 8 EinzelnachweiseAnforderungen BearbeitenEine Blockchiffre soll vielen Angriffsszenarien widerstehen Wenn etwa ein Angreifer beliebig viele mit dem gleichen Schlussel erzeugte Paare von Klar und Geheimtextblocken vorliegen hat soll es ihm dennoch nicht moglich sein den Schlussel zu ermitteln oder auf anderem Weg einen weiteren mit diesem Schlussel erzeugten Geheimtext zu entziffern Dies soll sogar dann noch gelten wenn der Angreifer die Klartextblocke frei wahlen kann also zu jedem von ihm konstruierten Block den unter dem gegebenen Schlussel zugehorigen Geheimtextblock erfahren kann Auch dann wenn der Angreifer wahlweise einen Klar oder Geheimtextblock frei wahlen kann soll es ihm unmoglich sein den Schlussel herauszufinden Dabei geht man davon aus dass der Angreifer den internen Aufbau der Verschlusselung kennt Der Schutz der Daten soll nicht von der Geheimhaltung des Verfahrens sondern nur von der Geheimhaltung des Schlussels abhangen Kerckhoffs Prinzip Weder die Blockgrosse noch die Schlussellange darf zu klein sein Eine Blockgrosse von 64 bit die bei alteren Blockchiffren verbreitet ist ist bereits grenzwertig Wenn es zu wenig mogliche Blockwerte gibt hier 2 64 displaystyle 2 64 nbsp dann ist ein Codebuchangriff moglich Ein Angreifer sammelt moglichst viele Paare von Klar und Schlusseltextblocken fur einen bestimmten Schlussel und wenn einer dieser Schlusseltextblocke in irgendeiner Nachricht auftaucht und der Schlussel nicht inzwischen geandert wurde kennt er damit auch den Klartextblock Ist andererseits der Schlussel zu klein dann ist das Durchprobieren aller moglichen Schlussel praktikabel um den richtigen zu finden Moderne Verfahren verwenden mindestens 128 bit als Block wie auch als Schlussellange Geschichte BearbeitenLucifer gilt als die erste zivil nutzbare Blockchiffre sie wurde im Jahr 1971 von IBM auf der Grundlage von Horst Feistels kryptographischen Arbeiten entwickelt Eine revidierte Version von Lucifer wurde vom National Bureau of Standards NBS der USA woraus 1988 das National Institute of Standards and Technology NIST hervorging ubernommen und zum DES Data Encryption Standard erklart nachdem Anderungen vom NBS selbst und vom Geheimdienst NSA am Algorithmus vorgenommen worden waren Der DES wurde 1976 der Offentlichkeit vorgestellt und fand eine weit verbreitete Anwendung Die Blockgrosse des DES ist 64 Bit und die Schlussellange 56 Bit Bereits Ende der 90er Jahre konnte DES aufgrund seiner geringen Schlussellange durch Brute Force Angriffe gebrochen werden siehe EFF DES Cracker Fur eine Ubergangszeit nutzte man deshalb Modifikationen des DES wie etwa Triple DES Im Jahr 2001 wurde der DES nach einer funfjahrigen Ausschreibungsphase durch den AES Advanced Encryption Standard ersetzt Der Auswahlprozess des AES wird weltweit von vielen Kryptographen wegen seiner offenen Gestaltung als vorbildlich angesehen Der Algorithmus des AES war von Joan Daemen und Vincent Rijmen unter dem Namen Rijndael entwickelt worden Die Blockgrosse betragt 128 Bit und die Schlussellange 128 192 oder 256 Bit vom Anwender wahlbar Mathematische Beschreibung BearbeitenEine Blockchiffre ist eine Funktion F S K C s k F s k c displaystyle F S times K rightarrow C s k mapsto F s k c nbsp die einen Klartextblock k K displaystyle k in K nbsp auf einen Geheimtextblock c C displaystyle c in C nbsp abbildet mit dem Schlussel s S displaystyle s in S nbsp als Parameter Fur jeden moglichen Schlussel muss die Verschlusselungsfunktion F s K C displaystyle F s K rightarrow C nbsp injektiv sein da genau dann eine Entschlusselungsfunktion F 1 S C K displaystyle F 1 S times C rightarrow K nbsp existiert die zu jedem Geheimtext wieder den Klartext berechnet s S k K F s 1 F s k k displaystyle forall s in S k in K F s 1 F s k k nbsp Dies ist gleichbedeutend zu der Aussage dass die Entschlusselungsfunktion linksinvers zur Verschlusselungsfunktion ist Meist ist K C displaystyle K C nbsp und die Ver und Entschlusselungsfunktionen sind dann fur jeden Schlussel aus S bijektiv Heute verwendet man ausserdem fast ausschliesslich Bitblockchiffren die auf Blocken mit b Bit arbeiten K C 0 1 b displaystyle K C 0 1 b nbsp Die Blockgrosse betragt meist 64 oder 128 Bit aber grossere Werte kommen ebenfalls vor z B Threefish bis 1024 Bit Eine Blockchiffre heisst involutorisch wenn Ver und Entschlusselung identisch sind also wenn gilt s S k K F s F s k k displaystyle forall s in S k in K F s F s k k nbsp Eine bijektive Abbildung von 0 1 b displaystyle 0 1 b nbsp auf 0 1 b displaystyle 0 1 b nbsp ist eine Permutation von 2 b displaystyle 2 b nbsp Elementen Es gibt folglich eine extrem grosse Zahl 2 b displaystyle 2 b nbsp verschiedener Abbildungen siehe Fakultat Durch den Schlussel einer Blockchiffre wird von den 2 b displaystyle 2 b nbsp moglichen bijektiven Abbildungen genau eine ausgewahlt Da die Schlussellange typischer Blockchiffren weit geringer als log 2 2 b displaystyle log 2 2 b nbsp Bits ist wird durch die Gesamtheit aller Schlussel nur ein kleiner Teil aller moglichen Abbildungen erfasst Bereits bei einer Blockgrosse von nur 8 Bit ware ein 1684 Bit langer Schlussel notig um alle Permutationen zu realisieren Entwurfsprinzipien BearbeitenFur die interne Verarbeitung der Blockdaten gibt es zwei Ziele Durch Konfusion soll der Zusammenhang zwischen Geheim und Klartext so komplex und undurchschaubar wie moglich gemacht werden Diffusion soll die Information an einer Stelle des Klartextblocks uber den gesamten Geheimtextblock verteilen am Ende soll jedes Bit des Geheimtextblocks von jedem Bit des Klartextblocks und des Schlussels abhangen Wenn an diesen etwas geandert wird soll sich jedes Geheimtextbit mit der Wahrscheinlichkeit 1 2 andern Es sollen keine Muster erkennbar sein mit denen man aus einem Geheimtext irgendwelche Informationen uber den Klartext oder den Schlussel gewinnen konnte Alle modernen Blockchiffren wie AES oder DES sind als iterierte Blockchiffren konzipiert Das bedeutet dass die Eingabe in mehreren aufeinanderfolgenden Runden verarbeitet wird die gleich aufgebaut sind Rundenfunktion Die Schwierigkeit eine Verschlusselung zu entwickeln liegt darin eine umkehrbare Transformation zu finden welche den kryptographischen Anforderungen Konfusion und Diffusion gerecht wird und mit nicht zu hohem Aufwand implementierbar und effizient ausfuhrbar ist Darum versucht man meist nicht eine komplexe Funktion zu finden die den Text in einem einzigen Schritt verschlusselt sondern beschrankt sich auf eine relativ einfach aufgebaute Rundenfunktion Erst deren mehrfache Anwendung ergibt eine ausreichend komplexe Verschlusselungsfunktion Die Rundenfunktion bewirkt sowohl Konfusion als auch Diffusion wodurch diese wahrend der Verschlusselung wirksam miteinander verzahnt werden Es werden genugend Runden durchlaufen um den Datenblock mehrmals vollstandig zu durchmischen meist etwa 8 bis 64 Runden Die Rundenfunktion wird ausserdem so aufgebaut dass sich die Diffusionseigenschaften zwischen Ver und Entschlusselung nicht wesentlich unterscheiden und somit auch beim Entschlusseln eine gute Diffusion besteht Die aufeinanderfolgenden Runden sollten nicht exakt gleich arbeiten da das Verfahren sonst fur den sogenannten Slide Angriff engl slide attack anfallig ware 1 Deshalb berechnet man ublicherweise aus dem Benutzerschlussel mehrere verschiedene Rundenschlussel und in jeder Runde wird ein anderer davon mit dem Datenblock verknupft entweder als zweite Eingabe in die Rundenfunktion k i f k i 1 g s i displaystyle k i f k i 1 g s i nbsp oder zwischen den Anwendungen der Rundenfunktion z B durch bitweise XOR Verknupfung k i f k i 1 g s i displaystyle k i f k i 1 oplus g s i nbsp mit Rundennummer i 1 2 r displaystyle i in 1 2 cdots r nbsp Dabei ist f displaystyle f nbsp die Rundenfunktion k 0 displaystyle k 0 nbsp der Klartext s displaystyle s nbsp der Benutzerschlussel und g displaystyle g nbsp die Schlusseleinteilungsfunktion die die einzelnen Rundenschlussel liefert Sich zyklisch alle x lt r displaystyle x lt r nbsp Runden wiederholende Rundenschlussel g s i g s i x displaystyle g s i g s i x nbsp sollten vermieden werden da dies ebenfalls einen Slide Angriff ermoglichen wurde Ausserdem ist es ungunstig wenn Abschnitte der Verschlusselung eine oder einige aufeinanderfolgende Runden mit zu wenig Schlusseldaten erfolgen da das Verfahren dann fur den Meet in the middle Angriff anfallig ware Das kann sich beispielsweise dadurch ergeben dass die wahrend der ersten Halfte der Verschlusselung Runden i 1 displaystyle i 1 nbsp bis r 2 displaystyle r 2 nbsp verwendeten Rundenschlussel nur von einer Halfte des Benutzerschlussels abhangen und die restlichen Rundenschlussel i r 2 1 displaystyle i r 2 1 nbsp bis r displaystyle r nbsp nur von der zweiten Halfte Die Rundenschlussel sollten ausreichend viele und ausreichend lang sein und jeder Rundenschlussel sollte vom gesamten Benutzerschlussel statt nur von einem Teil davon abhangen Idealerweise ist die Schlusseleinteilungsfunktion g displaystyle g nbsp ein Hashprozess der die Rundenschlussel auf komplexe pseudozufallige Weise aus dem Benutzerschlussel berechnet Damit man die Implementierung einer Chiffre gut gegen Seitenkanalangriffe absichern kann sollte die Art und die Reihenfolge der beim Verschlusseln ablaufenden Operationen nicht vom Schlussel oder vom Klartext abhangen Nur die Werte der Operanden sollten sich jeweils andern Ein Angreifer der den Ablauf von aussen verfolgen kann etwa indem er die Zeit eines Verschlusselungsvorgangs misst soll keine Ruckschlusse auf die verarbeiteten Daten ziehen konnen Wenn zum Beispiel abhangig von einem Bit des Schlussels bzw eines Rundenschlussels an einer Stelle entweder eine Addition oder eine Multiplikation zweier Werte erfolgt dann ist es schwer zu vermeiden dass diese Operation je nach Schlusselbit unterschiedlich lange dauert und der Prozessor dabei auch unterschiedlich viel Energie verbraucht und das Schlusselbit dadurch von einem Angreifer ermittelt werden kann Feistelchiffre Bearbeiten nbsp Struktur einer Feistelchiffre Hauptartikel Feistelchiffre Das Feistelnetzwerk ist eine allgemeine Struktur mit der Blockchiffren realisiert werden konnen Horst Feistel der im Jahr 1970 bei IBM an der Chiffre Lucifer arbeitete gilt als Erfinder Ein Klartextblock wird in zwei Teile geteilt und in mehreren Runden verarbeitet In jeder Runde wird ein Blockteil zusammen mit einem Rundenschlussel in die Rundenfunktion eingegeben und deren Ausgabe mit dem anderen Blockteil verknupft Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrung der Rundenfunktion berechnet werden muss Viele Chiffren zum Beispiel DES Twofish und Blowfish sind als Feistelnetzwerke aufgebaut Lai Massey Chiffre Bearbeiten nbsp Struktur einer Lai Massey ChiffreHier nutzt man ahnlich wie beim Feistelnetzwerk eine Rundenfunktion f displaystyle f nbsp auf eine Weise dass man beim Entschlusseln nicht ihre Umkehrung berechnen muss Der Datenblock wird in zwei Halften a b displaystyle a b nbsp geteilt In jeder Runde verknupft man beide Halften miteinander gibt das Ergebnis in die Rundenfunktion ein und verknupft dann deren Ausgabe mit jeder der Blockhalften a a f a b b b f a b displaystyle a a oplus f a ominus b b b oplus f a ominus b nbsp Das geschieht so dass a b a b displaystyle a ominus b a ominus b nbsp ist und man somit bei Wiederholung der Operation wieder die gleiche Eingabe in f displaystyle f nbsp erhalt So ist es leicht die Runde ruckgangig zu machen Am einfachsten geht das indem man fur displaystyle oplus nbsp und displaystyle ominus nbsp jeweils das bitweise XOR einsetzt Eine weitere Moglichkeit ist fur displaystyle ominus nbsp die Subtraktion zu verwenden und fur displaystyle oplus nbsp beim Verschlusseln die Addition und beim Entschlusseln die Subtraktion oder umgekehrt jeweils modulo 2 b displaystyle 2 b nbsp wobei b displaystyle b nbsp die Wortbreite in Bit ist Damit sich die aufeinanderfolgenden Runden beim Verschlusseln nicht gegenseitig schwachen oder aufheben muss der Datenblock zwischen den Runden mit einer weiteren Operation modifiziert werden Dazu werden haufig die Bits einer Blockhalfte permutiert z B durch Bitrotation Lai Massey Chiffren sind eher selten Beispiele sind IDEA und IDEA NXT Substitutions Permutations Netzwerk Bearbeiten nbsp Substitutions Permutations Netzwerk mit 16 bit Blockgrosse und 3 Runden Hauptartikel Substitutions Permutations Netzwerk Die Runden eines Substitutions Permutations Netzwerks sind dreiteilig Zuerst wird der Rundenschlussel mit dem Datenblock verknupft Dann wird eine n n displaystyle n times n nbsp S Box auf den Datenblock angewendet der dazu in Teile von n displaystyle n nbsp Bit geteilt wird die fur sich substituiert werden Danach werden die Bits des Datenblocks permutiert so dass die Ausgabe einer S Box sich in der nachsten Runde auf mehrere S Boxen und schliesslich uber den ganzen Datenblock verteilt Oft wird diese Permutation durch eine komplexere Operation ersetzt wie z B bei Serpent und AES um die Diffusion zu beschleunigen In der letzten Runde ist die Permutation uberflussig stattdessen wird noch einmal mit einem Rundenschlussel verknupft Zur Entschlusselung mussen diese drei Schritte invertiert werden Die S Box muss bijektiv sein und beim Entschlusseln muss die dazu inverse S Box eingesetzt werden Primitive Bearbeiten Als Einzeloperationen in der Rundenfunktion sog kryptographische Primitive werden meistens solche gewahlt die von den verbreiteten Mikroprozessoren durch einen einzigen Maschinenbefehl schnell ausfuhrbar sind damit sich die Verschlusselung einfach und effizient in Software programmieren lasst Addition Subtraktion und Multiplikation von Ganzzahlen modulo 2 w displaystyle 2 w nbsp wobei w displaystyle w nbsp die Breite eines Datenwortes in Bit ist bitweise boolesche Verknupfungen UND ODER XOR NICHT Bitrotation BitverschiebungBei Bitrotation und verschiebung kann die Schiebeweite konstant schlusselabhangig z B CAST oder datenabhangig RC5 RC6 MARS sein Viele moderne Blockchiffren sind sogenannte ARX Chiffren wie etwa Threefish Das bedeutet sie sind nur aus Addition Rotation mit konstanter Weite und XOR aufgebaut Dadurch sind sie einfach implementierbar und effizient obwohl meist viele Runden fur eine ausreichende Starke der Verschlusselung notig sind S Boxen sind in Software weniger effizient zu implementieren aber sie sind auch starke Konfusionserzeuger und somit kryptographisch sehr wirksam denn man kann weitgehend frei bestimmen wie die a displaystyle a nbsp eingegebenen Bits von einer a b displaystyle a times b nbsp S Box auf die b displaystyle b nbsp Ausgabebits abgebildet werden S Boxen konnen konstant DES AES CAST oder schlusselabhangig Blowfish sein Im Hinblick auf die Implementierung in Hardware nutzt man in vielen Chiffren auch die Permutation von Bits reichlich z B bei DES die sich hier einfach realisieren lasst man muss nur jede Bit Leitung an den richtigen Eingang des nachfolgenden Gatters legen Bei Software Implementierung sind allgemeine Bitpermutationen hingegen ungeschickt man muss das Datenwort in einzelne Bits zerteilen diese verschieben und neu zusammensetzen Meist lasst sich das am einfachsten als S Box darstellen die z B immer 8 Bit durch ein ganzes Wort ersetzt das die eingegebenen Bits an den richtigen Positionen enthalt wonach diese Worter durch bitweises ODER zusammengesetzt werden Eine Substitution mit anschliessender Bitpermutation kann mit dieser Technik zu einer Operation zusammengefasst werden Kryptographische Betriebsmodi Bearbeiten Hauptartikel Betriebsmodus Kryptographie Ein kryptographischer Betriebsmodus legt fest wie sich die Verschlusselung mehrerer Klartextblocke vollzieht indem er definiert in welcher Art der Verschlusselungsalgorithmus auf den Datenstrom angewandt wird 2 Je nach den Anforderungen der Anwendung variiert die Fehleranfalligkeit und Sicherheit Der internationale Standard ISO 10116 definiert fur blockorientierte Verschlusselungsalgorithmen vier verschiedenen Betriebsarten Electronic Code Book ECB Jeder Block wird fur sich verschlusselt Cipher Block Chaining CBC Jeder Block wird mit dem vorherigen Geheimtextblock XOR verknupft bevor man ihn verschlusselt Cipher Feedback CFB Ein Geheimtextblock entsteht durch XOR des Klartextblocks mit dem nochmals verschlusselten vorherigen Geheimtextblock Output Feedback OFB Die Blockchiffre wird wie eine Stromchiffre eingesetzt indem ein Initialisierungsvektor immer wieder uberschlusselt wird um damit jeweils den nachsten Klartextblock per XOR zu verknupfen Ausserdem gibt es den Counter Mode CTR bei dem eine Nonce zusammen mit der Nummer eines Blocks verschlusselt wird Das Ergebnis wird nach Art einer Stromverschlusselung mit diesem Block XOR verknupft Einige neuere Blockverschlusselungen wie z B Threefish nehmen eine zusatzliche Eingabe den sogenannten Tweak entgegen der die Abbildung des Klartextes auf den Schlusseltext beeinflusst Auf englisch nennt man sie tweakable block ciphers eine deutsche Ubersetzung hat sich bisher nicht verbreitet Bei Anderung des Tweak andert sich die Permutation der Blockwerte ebenso wie bei Anderung des Schlussels Wahrend aber letztere durch die komplexe Schlusseleinteilung vieler Chiffren aufwandig ist ein extremes Beispiel ist Blowfish kann der Tweak sehr einfach und schnell geandert werden Dadurch werden weitere Betriebsmodi moglich So kann man ECB derart modifizieren dass jeder Block mit einem anderen Tweak aber gleichem Schlussel verschlusselt wird Der Tweak muss nicht geheim gehalten werden und man kann dafur z B einfach die laufende Nummer des Blocks verwenden Dadurch werden gleiche Klartextblocke nicht mehr auf gleiche Geheimtextblocke abgebildet Bekannte Blockchiffren BearbeitenEinige bekannte Blockchiffren sind Camellia RC2 Data Encryption Standard DES Triple DES 3DES International Data Encryption Algorithm IDEA IDEA NXT FOX RC5 RC6 MARS Serpent Advanced Encryption Standard AES CAST Blowfish Twofish Threefish Skipjack FEAL Tiny Encryption Algorithm TEA Extended Tiny Encryption Algorithm XTEA SEEDWeblinks BearbeitenKlaus Pommerening Bitblock Verschlusselung PDF 712 kB Fachbereich Mathematik der Johannes Gutenberg Universitat Stefan Labitzke Sven Kampfhenkel Sicherheitsaspekte in der Softwaretechnik PDF 1 7 MB Fakultat IV Informatik der TU BerlinEinzelnachweise Bearbeiten Alex Biryukov und David Wagner uber slide attacks PDF 196 kB Bruce Schneier Applied Cryptography Protocols Algorithms and Source Code in C 2 Auflage John Wiley amp Sons New York 1996 ISBN 0 471 11709 9 S 206 208 Abgerufen von https de wikipedia org w index php title Blockverschlusselung amp oldid 239175552