Zum Hauptinhalt springen

2.4. Padding (for Encryption) (Padding für Verschlüsselung)

Zwei Hauptfaktoren erfordern oder motivieren die Verwendung des Padding-Feldes.

  • Wenn ein Verschlüsselungsalgorithmus verwendet wird, der erfordert, dass der Klartext ein Vielfaches einer bestimmten Anzahl von Bytes ist, z.B. die Blockgröße einer Blockverschlüsselung, wird das Padding-Feld verwendet, um den Klartext (bestehend aus den Feldern Payload Data, Padding, Pad Length und Next Header) auf die vom Algorithmus benötigte Größe aufzufüllen.

  • Padding kann auch erforderlich sein, unabhängig von den Anforderungen des Verschlüsselungsalgorithmus, um sicherzustellen, dass der resultierende Chiffretext an einer 4-Byte-Grenze endet. Insbesondere müssen die Felder Pad Length und Next Header innerhalb eines 4-Byte-Worts rechts ausgerichtet sein, wie in den obigen ESP-Paketformat-Abbildungen dargestellt, um sicherzustellen, dass das ICV-Feld (falls vorhanden) an einer 4-Byte-Grenze ausgerichtet ist.

Padding über das hinaus, was für den Algorithmus oder die oben genannten Ausrichtungsgründe erforderlich ist, könnte verwendet werden, um die tatsächliche Länge der Nutzlast zu verbergen, zur Unterstützung von TFC. Das beschriebene Padding-Feld ist jedoch zu begrenzt, um für TFC wirksam zu sein, und sollte daher nicht für diesen Zweck verwendet werden. Stattdessen sollte der unten beschriebene separate Mechanismus (siehe Abschnitt 2.7) verwendet werden, wenn TFC erforderlich ist.

Der Sender KANN 0 bis 255 Bytes Padding hinzufügen. Die Aufnahme des Padding-Feldes in ein ESP-Paket ist optional, vorbehaltlich der oben genannten Anforderungen, aber alle Implementierungen MÜSSEN die Erzeugung und den Verbrauch von Padding unterstützen.

  • Zum Zweck der Sicherstellung, dass die zu verschlüsselnden Bits ein Vielfaches der Blockgröße des Algorithmus sind (erster Aufzählungspunkt oben), gilt die Padding-Berechnung für die Payload Data unter Ausschluss jeglicher IV, aber einschließlich der ESP-Trailer-Felder. Wenn ein kombinierter Algorithmusmodus die Übertragung von SPI und Sequence Number zur Bewirkung der Integrität erfordert, z.B. Replikation von SPI und Sequence Number in den Payload Data, dann sind die replizierten Versionen dieser Datenelemente und alle zugehörigen ICV-äquivalenten Daten in der Berechnung der Pad-Länge enthalten. (Wenn die ESN-Option ausgewählt ist, würden auch die höherwertigen 32 Bits des ESN in die Berechnung eingehen, wenn der kombinierte Modusalgorithmus ihre Übertragung für die Integrität erfordert.)

  • Zum Zweck der Sicherstellung, dass der ICV an einer 4-Byte-Grenze ausgerichtet ist (zweiter Aufzählungspunkt oben), gilt die Padding-Berechnung für die Payload Data einschließlich IV, Pad Length und Next Header-Felder. Wenn ein Kombinationsmodus-Algorithmus verwendet wird, sind alle replizierten Daten und ICV-äquivalenten Daten in den Payload Data enthalten, die von der Padding-Berechnung abgedeckt werden.

Wenn Padding-Bytes benötigt werden, aber der Verschlüsselungsalgorithmus den Padding-Inhalt nicht spezifiziert, MUSS die folgende Standardverarbeitung verwendet werden. Die Padding-Bytes werden mit einer Reihe von (vorzeichenlosen, 1-Byte) Ganzzahlwerten initialisiert. Das erste Padding-Byte, das an den Klartext angehängt wird, wird mit 1 nummeriert, wobei nachfolgende Padding-Bytes eine monoton ansteigende Sequenz bilden: 1, 2, 3, .... Wenn dieses Padding-Schema verwendet wird, SOLLTE der Empfänger das Padding-Feld überprüfen. (Dieses Schema wurde aufgrund seiner relativen Einfachheit, der einfachen Implementierung in Hardware und weil es begrenzten Schutz gegen bestimmte Formen von "Ausschneiden und Einfügen"-Angriffen in Abwesenheit anderer Integritätsmaßnahmen bietet, wenn der Empfänger die Padding-Werte bei der Entschlüsselung überprüft, ausgewählt.)

Wenn ein Verschlüsselungs- oder Kombinationsmodus-Algorithmus Einschränkungen für die Werte der für das Padding verwendeten Bytes auferlegt, MÜSSEN diese durch das RFC spezifiziert werden, das definiert, wie der Algorithmus mit ESP verwendet wird. Wenn der Algorithmus die Überprüfung der Werte der für das Padding verwendeten Bytes erfordert, MUSS dies ebenfalls in diesem RFC spezifiziert werden.