3.3. SRTP Packet Processing (Traitement des paquets SRTP)
3.3. SRTP Packet Processing (Traitement des paquets SRTP)
Ce qui suit s'applique à SRTP. SRTCP est décrit dans la Section 3.4.
En supposant que l'initialisation du ou des contextes cryptographiques a eu lieu via la gestion des clés, l'expéditeur DOIT effectuer ce qui suit pour construire un paquet SRTP:
-
Déterminer quel contexte cryptographique utiliser comme décrit dans la Section 3.2.3.
-
Déterminer l'index du paquet SRTP en utilisant le compteur de rollover (rollover counter), le numéro de séquence le plus élevé (highest sequence number) dans le contexte cryptographique, et le numéro de séquence dans le paquet RTP, comme décrit dans la Section 3.3.1.
-
Déterminer la clé maîtresse (master key) et le sel maître (master salt). Cela se fait en utilisant l'index déterminé à l'étape précédente ou le MKI actuel dans le contexte cryptographique, selon la Section 8.1.
-
Déterminer les clés de session (session keys) et le sel de session (session salt) (s'ils sont utilisés par la transformation) comme décrit dans la Section 4.3, en utilisant la clé maîtresse, le sel maître, key_derivation_rate, et les longueurs de clés de session dans le contexte cryptographique avec l'index déterminé aux étapes 2 et 3.
-
Chiffrer la charge utile RTP pour produire la partie chiffrée (Encrypted Portion) du paquet (voir Section 4.1 pour les chiffrements définis). Cette étape utilise l'algorithme de chiffrement indiqué dans le contexte cryptographique, la clé de chiffrement de session et le sel de session (s'il est utilisé) trouvés à l'étape 4 avec l'index trouvé à l'étape 2.
-
Si l'indicateur MKI est défini sur un, ajouter le MKI au paquet.
-
Pour l'authentification de message (message authentication), calculer la balise d'authentification (authentication tag) pour la partie authentifiée (Authenticated Portion) du paquet, comme décrit dans la Section 4.2. Cette étape utilise le compteur de rollover actuel, l'algorithme d'authentification indiqué dans le contexte cryptographique, et la clé d'authentification de session trouvée à l'étape 4. Ajouter la balise d'authentification au paquet.
-
Si nécessaire, mettre à jour le ROC comme dans la Section 3.3.1, en utilisant l'index de paquet déterminé à l'étape 2.
Pour authentifier et déchiffrer un paquet SRTP, le récepteur DOIT effectuer ce qui suit:
-
Déterminer quel contexte cryptographique utiliser comme décrit dans la Section 3.2.3.
-
Exécuter l'algorithme de la Section 3.3.1 pour obtenir l'index du paquet SRTP. L'algorithme utilise le compteur de rollover et le numéro de séquence le plus élevé dans le contexte cryptographique avec le numéro de séquence dans le paquet SRTP, comme décrit dans la Section 3.3.1.
-
Déterminer la clé maîtresse et le sel maître. Si l'indicateur MKI dans le contexte est défini sur un, utiliser le MKI dans le paquet SRTP, sinon utiliser l'index de l'étape précédente, selon la Section 8.1.
-
Déterminer les clés de session et le sel de session (s'il est utilisé par la transformation) comme décrit dans la Section 4.3, en utilisant la clé maîtresse, le sel maître, key_derivation_rate et les longueurs de clés de session dans le contexte cryptographique avec l'index déterminé aux étapes 2 et 3.
-
Pour l'authentification de message et la protection contre la relecture (replay protection), vérifier d'abord si le paquet a été rejoué (Section 3.3.2), en utilisant la liste de relecture (Replay List) et l'index déterminé à l'étape 2. Si le paquet est jugé avoir été rejoué, alors le paquet DOIT être rejeté, et l'événement DEVRAIT être enregistré.
Ensuite, effectuer la vérification de la balise d'authentification, en utilisant le compteur de rollover de l'étape 2, l'algorithme d'authentification indiqué dans le contexte cryptographique, et la clé d'authentification de session de l'étape 4. Si le résultat est "AUTHENTICATION FAILURE" (échec d'authentification) (voir Section 4.2), le paquet DOIT être rejeté de tout traitement ultérieur et l'événement DEVRAIT être enregistré.
-
Déchiffrer la partie chiffrée du paquet (voir Section 4.1 pour les chiffrements définis), en utilisant l'algorithme de déchiffrement indiqué dans le contexte cryptographique, la clé de chiffrement de session et le sel (s'il est utilisé) trouvés à l'étape 4 avec l'index de l'étape 2.
-
Mettre à jour le compteur de rollover et le numéro de séquence le plus élevé, s_l, dans le contexte cryptographique comme dans la Section 3.3.1, en utilisant l'index de paquet estimé à l'étape 2. Si la protection contre la relecture est fournie, mettre également à jour la liste de relecture comme décrit dans la Section 3.3.2.
-
Lorsqu'ils sont présents, retirer les champs MKI et balise d'authentification du paquet.