4.1. Encryption (Verschlüsselung)
4.1. Encryption (Verschlüsselung)
Die folgenden Parameter sind beiden in diesem Abschnitt spezifizierten vordefinierten Nicht-NULL-Verschlüsselungstransformationen gemeinsam.
- BLOCK_CIPHER-MODE gibt die verwendete Blockchiffre und ihren Betriebsmodus an
- n_b ist die Bitgröße des Blocks für die Blockchiffre
- k_e ist der Sitzungsverschlüsselungsschlüssel
- n_e ist die Bitlänge von k_e
- k_s ist der Sitzungssalzschlüssel (session salting key)
- n_s ist die Bitlänge von k_s
- SRTP_PREFIX_LENGTH ist die Oktettlänge des Schlüsselstrom-Präfixes, eine nichtnegative Ganzzahl, die durch den verwendeten Nachrichtenauthentifizierungscode spezifiziert wird.
Die unterschiedlichen Sitzungsschlüssel und Salze für SRTP/SRTCP werden standardmäßig wie in Abschnitt 4.3 spezifiziert abgeleitet.
Die in SRTP definierten Verschlüsselungstransformationen bilden den SRTP-Paketindex und den geheimen Schlüssel auf ein pseudozufälliges Schlüsselstromsegment ab. Jedes Schlüsselstromsegment verschlüsselt ein einzelnes RTP-Paket. Der Prozess der Verschlüsselung eines Pakets besteht darin, das dem Paket entsprechende Schlüsselstromsegment zu generieren und dann dieses Schlüsselstromsegment bitweise exklusiv-oder mit der Nutzlast des RTP-Pakets zu verknüpfen, um den verschlüsselten Teil des SRTP-Pakets zu erzeugen. Falls die Nutzlastgröße kein ganzzahliges Vielfaches von n_b Bits ist, werden die überschüssigen (am wenigsten signifikanten) Bits des Schlüsselstroms einfach verworfen. Die Entschlüsselung erfolgt auf die gleiche Weise, aber mit vertauschten Rollen von Klartext und Chiffretext.
+----+ +------------------+---------------------------------+
| KG |-->| Keystream Prefix | Keystream Suffix |---+
+----+ +------------------+---------------------------------+ |
|
+---------------------------------+ v
| Payload of RTP Packet |->(*)
+---------------------------------+ |
|
+---------------------------------+ |
| Encrypted Portion of SRTP Packet|<--+
+---------------------------------+
Abbildung 3: Standard-SRTP-Verschlüsselungsverarbeitung. Hier bezeichnet KG den Schlüsselstromgenerator, und (*) bezeichnet bitweises exklusives Oder.
Die Definition, wie der Schlüsselstrom gegeben dem Index generiert wird, hängt von der Chiffre und ihrem Betriebsmodus ab. Im Folgenden werden zwei solche Schlüsselstromgeneratoren definiert. Die NULL-Chiffre ist ebenfalls definiert, zur Verwendung, wenn eine Verschlüsselung von RTP nicht erforderlich ist.
Die SRTP-Definition des Schlüsselstroms ist in Abbildung 3 dargestellt. Die anfänglichen Oktette jedes Schlüsselstromsegments KÖNNEN für die Verwendung in einem Nachrichtenauthentifizierungscode reserviert werden, wobei in diesem Fall der für die Verschlüsselung verwendete Schlüsselstrom unmittelbar nach dem letzten reservierten Oktett beginnt. Die anfänglichen reservierten Oktette werden als "Schlüsselstrom-Präfix" bezeichnet (nicht zu verwechseln mit dem "Verschlüsselungspräfix" von [RFC3550, Abschnitt 6.1]), und die verbleibenden Oktette werden als "Schlüsselstrom-Suffix" bezeichnet. Das Schlüsselstrom-Präfix DARF NICHT für die Verschlüsselung verwendet werden. Der Prozess ist in Abbildung 3 dargestellt.
Die Anzahl der Oktette im Schlüsselstrom-Präfix wird als SRTP_PREFIX_LENGTH bezeichnet. Das Schlüsselstrom-Präfix wird durch einen positiven, von Null verschiedenen Wert von SRTP_PREFIX_LENGTH angezeigt. Dies bedeutet, dass, selbst wenn keine Vertraulichkeit bereitgestellt werden soll, die Ausgabe des Schlüsselstromgenerators möglicherweise noch für die Paketauthentifizierung berechnet werden muss, in welchem Fall der Standard-Schlüsselstromgenerator (Modus) verwendet werden SOLL.
Die Standardchiffre ist der Advanced Encryption Standard (AES) [AES], und wir definieren zwei Modi zum Ausführen von AES, (1) Segmented Integer Counter Mode AES und (2) AES in f8-mode. Im Rest dieses Abschnitts sei E(k,x) AES angewendet auf Schlüssel k und Eingabeblock x.