- Padding
-
Padding (von engl. to pad für auffüllen) ist ein Fachbegriff der Informatik für Fülldaten, mit denen ein vorhandener Datenbestand vergrößert wird. Die Füllbytes werden auch Pad-Bytes genannt. Die für Prüfsummen verwendeten Daten zählen hierbei nicht zum Padding.
Padding wird vorwiegend eingesetzt, um vorhandene Daten in die Gestalt einer durch einen Algorithmus oder ein Protokoll vorgegebenen Struktur zu bringen. Entsprechen die vorhandenen Daten nicht der Struktur – beispielsweise eine Folge von 50 Bits bei einem Algorithmus, der auf einem Block von 64 Bit Länge operiert – werden diese mit geeigneten Bit- oder Bytefolgen erweitert. Die Wahl des Paddings kann hierbei – je nach Anwendung – von simplem Auffüllen mit Nullen (Zero Padding) bis zu komplexen Schemata reichen.
In der klassischen Kryptographie wurde Padding variabler Längen hingegen dazu eingesetzt, Anfang und Ende des Inhalts eines versandten Chiffrats zu verschleiern. Hierdurch sollte es Kryptanalysten erschwert werden, die Position fester Begriffe – etwa der Absenders oder eine Anrede – zu erraten und mit Hilfe einer solchen „Crib“ die Nachricht zu dechiffrieren.
In der modernen Kryptographie – in der simple „Cribs“ aufgrund der Komplexität der Algorithmen keine Rolle mehr spielen – hat das Padding neben dem reinen Auffüllen zudem die Aufgabe, die Sicherheit des Algorithmus zu erhöhen:
- Im Falle von Merkle-Damgård-Hash-Funktionen – der überwiegend verwendeten Form kryptographischer Hash-Funktionen – wird das Padding dazu eingesetzt, dass sich die Klartextbits im Hash möglichst gut vermischen und Hashes ähnlicher Klartexte möglichst stark voneinander abweichen.
- Bei asymmetrischer Kryptographie, vor allem beim RSA-Kryptosystem, soll das Padding dem Ergebnis (z. B. dem Chiffretext oder der digitalen Signatur) eine definierte Struktur geben und so kryptanalytische Angriffe (z. B. die Manipulation der digitalen Signatur) erschweren. Um dies zu erreichen, werden zum Auffüllen konstante oder nachrichtenabhängige Bitstrings verwendet. Standards für Paddingverfahren für RSA werden z. B. in PKCS#1 oder ISO 9796 festgelegt.
- Bei symmetrischen und asymmetrischen Blockchiffren wird Padding verwendet, um den Klartext an die Blocklänge anzupassen. Die meisten Betriebsarten (z. B. ECB, CBC) verlangen als Eingabe einen Klartext, dessen Länge ein Vielfaches der Blocklänge ist.[1] An das Auffüllen des Klartextes werden folgende Ansprüche gestellt:[2]
- Jeder beliebige Klartext kann an ein Vielfaches der Blocklänge angepasst werden.
- Das Padding ist eindeutig invertierbar.
- Die durchschnittliche Längenexpansion sollte minimal sein.
- Um diese Kriterien einzuhalten, bietet es sich an, jedem Klartext ein festgelegtes Zeichen (z. B. „1”) anzuhängen und dann mit einem anderen Zeichen (z. B. „0”) aufzufüllen.[3]
Außerhalb der Kryptographie findet man Padding bei Netzwerkprotokollen, diversen fest strukturierten Dateiformaten wie beispielsweise Grafikdateien, sowie allgemein (also sowohl in Dateien als auch im Arbeitsspeicher des Computers) in diversen Datenstrukturen, die Regeln solcher Art erfüllen müssen, beispielsweise Beginn neuer Elemente immer nur an geraden oder durch vier teilbaren Adressen. Bei Musikdateien findet Padding Anwendung, wenn Metadaten am Anfang der Datei stehen. Dadurch können die Metadaten in der Länge verändert werden (mit entsprechend gegenteiliger Änderung des Paddings), ohne dass die ganze Datei neu geschrieben werden muss (da die Position der Nutzdaten unverändert bleibt).
Quellen
- ↑ Niels Ferguson und Bruce Schneier: Practical Cryptography, Wiley 2003 S.68
- ↑ Andreas Pfitzmann: Skript Sicherheit in Rechnernetzen S.355
- ↑ Andreas Pfitzmann: Skript Sicherheit in Rechnernetzen S.424f
Wikimedia Foundation.