Aller au contenu principal

4. Exporter Definition (Définition de l'exportateur)

4. Exporter Definition (Définition de l'exportateur)

La sortie de l'exportateur est destinée à être utilisée dans une portée unique, qui est associée à la session TLS, à l'étiquette et à la valeur de contexte.

L'exportateur prend trois valeurs d'entrée:

  • une chaîne d'étiquette de désambiguïsation,

  • une valeur de contexte par association fournie par l'application utilisant l'exportateur, et

  • une valeur de longueur.

Si aucun contexte n'est fourni, il calcule alors:

PRF(SecurityParameters.master_secret, label,
SecurityParameters.client_random +
SecurityParameters.server_random
)[length]

Si un contexte est fourni, il calcule:

PRF(SecurityParameters.master_secret, label,
SecurityParameters.client_random +
SecurityParameters.server_random +
context_value_length + context_value
)[length]

Où PRF est la fonction pseudo-aléatoire TLS utilisée pour la session. La sortie est une chaîne de bits pseudo-aléatoire de longueur octets générée à partir du master_secret. (Cette construction permet l'interopérabilité avec des constructions de type exportateur plus anciennes qui n'utilisent pas de valeurs de contexte, par exemple [RFC5281]).

Les étiquettes ici ont la même définition que dans TLS, c'est-à-dire une chaîne ASCII sans NULL de terminaison. Les valeurs d'étiquette commençant par "EXPERIMENTAL" PEUVENT être utilisées pour un usage privé sans enregistrement. Toutes les autres valeurs d'étiquette DOIVENT être enregistrées via Specification Required tel que décrit par RFC 5226 [RFC5226]. Notez que les étiquettes d'exportateur ont le potentiel d'entrer en collision avec des étiquettes PRF existantes. Afin d'éviter cela, les étiquettes DEVRAIENT commencer par "EXPORTER". Ce n'est pas un DOIT car il existe des utilisations existantes qui ont des étiquettes qui ne commencent pas par ce préfixe.

La valeur de contexte permet à l'application utilisant l'exportateur de mélanger ses propres données avec le PRF TLS pour la sortie de l'exportateur. Un exemple où cela pourrait être utile est un paramètre d'authentification où les informations d'identification du client sont valides pour plus d'une identité; la valeur de contexte pourrait alors être utilisée pour mélanger l'identité attendue dans le matériel de clé, empêchant ainsi les attaques par substitution. La longueur de la valeur de contexte est encodée comme une quantité non signée de 16 bits (uint16; voir [RFC5246], Section 4.4) représentant la longueur de la valeur de contexte. Le contexte PEUT être de longueur nulle. Parce que la valeur de contexte est mélangée avec le master_secret via le PRF, il est sûr de mélanger des informations confidentielles dans l'exportateur, à condition que le master_secret ne soit pas connu de l'attaquant.