4.1. Encryption (Chiffrement)
4.1. Encryption (Chiffrement)
Les paramètres suivants sont communs aux deux transformations de chiffrement prédéfinies non NULL spécifiées dans cette section.
- BLOCK_CIPHER-MODE indique le chiffrement par bloc utilisé et son mode de fonctionnement
- n_b est la taille en bits du bloc pour le chiffrement par bloc
- k_e est la clé de chiffrement de session
- n_e est la longueur en bits de k_e
- k_s est la clé de salage de session (session salting key)
- n_s est la longueur en bits de k_s
- SRTP_PREFIX_LENGTH est la longueur en octets du préfixe de flux de clés, un entier non négatif, spécifié par le code d'authentification de message en cours d'utilisation.
Les clés de session et les sels distincts pour SRTP/SRTCP sont par défaut dérivés comme spécifié dans la Section 4.3.
Les transformations de chiffrement définies dans SRTP mappent l'index de paquet SRTP et la clé secrète en un segment de flux de clés pseudo-aléatoire. Chaque segment de flux de clés chiffre un seul paquet RTP. Le processus de chiffrement d'un paquet consiste à générer le segment de flux de clés correspondant au paquet, puis à effectuer un OU exclusif bit à bit de ce segment de flux de clés sur la charge utile du paquet RTP pour produire la portion chiffrée du paquet SRTP. Dans le cas où la taille de la charge utile n'est pas un multiple entier de n_b bits, les bits excédentaires (les moins significatifs) du flux de clés sont simplement rejetés. Le déchiffrement est effectué de la même manière, mais en inversant les rôles du texte en clair et du texte chiffré.
+----+ +------------------+---------------------------------+
| KG |-->| Keystream Prefix | Keystream Suffix |---+
+----+ +------------------+---------------------------------+ |
|
+---------------------------------+ v
| Payload of RTP Packet |->(*)
+---------------------------------+ |
|
+---------------------------------+ |
| Encrypted Portion of SRTP Packet|<--+
+---------------------------------+
Figure 3: Traitement de chiffrement SRTP par défaut. Ici KG désigne le générateur de flux de clés, et (*) désigne le OU exclusif bit à bit.
La définition de la manière dont le flux de clés est généré, étant donné l'index, dépend du chiffrement et de son mode de fonctionnement. Ci-dessous, deux de ces générateurs de flux de clés sont définis. Le chiffrement NULL est également défini, à utiliser lorsque le chiffrement de RTP n'est pas requis.
La définition SRTP du flux de clés est illustrée dans la Figure 3. Les octets initiaux de chaque segment de flux de clés PEUVENT être réservés pour une utilisation dans un code d'authentification de message, auquel cas le flux de clés utilisé pour le chiffrement commence immédiatement après le dernier octet réservé. Les octets réservés initiaux sont appelés le "préfixe de flux de clés" (à ne pas confondre avec le "préfixe de chiffrement" de [RFC3550, Section 6.1]), et les octets restants sont appelés le "suffixe de flux de clés". Le préfixe de flux de clés NE DOIT PAS être utilisé pour le chiffrement. Le processus est illustré dans la Figure 3.
Le nombre d'octets dans le préfixe de flux de clés est désigné par SRTP_PREFIX_LENGTH. Le préfixe de flux de clés est indiqué par une valeur positive et non nulle de SRTP_PREFIX_LENGTH. Cela signifie que, même si la confidentialité ne doit pas être fournie, la sortie du générateur de flux de clés peut encore devoir être calculée pour l'authentification des paquets, auquel cas le générateur de flux de clés (mode) par défaut DOIT être utilisé.
Le chiffrement par défaut est l'Advanced Encryption Standard (AES) [AES], et nous définissons deux modes d'exécution d'AES, (1) Segmented Integer Counter Mode AES et (2) AES in f8-mode. Dans le reste de cette section, soit E(k,x) l'AES appliqué à la clé k et au bloc d'entrée x.