4. Extensions TLS pour l'ECC
Deux extensions TLS sont définies dans cette spécification : (i) l'extension Supported Elliptic Curves (Courbes elliptiques supportées) et (ii) l'extension Supported Point Formats (Formats de points supportés). Celles-ci permettent de négocier l'utilisation de courbes spécifiques et de formats de points (par exemple, compressé vs non compressé, respectivement) lors d'une poignée de main commençant une nouvelle session. Ces extensions sont particulièrement pertinentes pour les clients contraints qui peuvent ne supporter qu'un nombre limité de courbes ou de formats de points. Elles suivent l'approche générale décrite dans [RFC4366] ; les détails des messages sont spécifiés dans la section 5. Le client énumère les courbes qu'il supporte et les formats de points qu'il peut analyser en incluant les extensions appropriées dans son message ClientHello. Le serveur énumère de la même manière les formats de points qu'il peut analyser en incluant une extension dans son message ServerHello.
Un client TLS qui propose des suites de chiffrement ECC dans son message ClientHello DEVRAIT (SHOULD) inclure ces extensions. Les serveurs implémentant des suites de chiffrement ECC DOIVENT (MUST) supporter ces extensions, et lorsqu'un client utilise ces extensions, les serveurs NE DOIVENT PAS (MUST NOT) négocier l'utilisation d'une suite de chiffrement ECC à moins qu'ils ne puissent compléter la poignée de main tout en respectant le choix de courbes spécifié par le client. Cela élimine la possibilité qu'une poignée de main ECC négociée soit ensuite abandonnée en raison de l'incapacité d'un client à traiter la clé EC du serveur.
Le client NE DOIT PAS (MUST NOT) inclure ces extensions dans le message ClientHello s'il ne propose aucune suite de chiffrement ECC. Un client qui propose des suites de chiffrement ECC peut choisir de ne pas inclure ces extensions. Dans ce cas, le serveur est libre de choisir l'une quelconque des courbes elliptiques ou des formats de points énumérés à la section 5. Cette section décrit également la structure et le traitement de ces extensions plus en détail.
Dans le cas d'une reprise de session, le serveur ignore simplement l'extension Supported Elliptic Curves et l'extension Supported Point Formats apparaissant dans le message ClientHello actuel. Ces extensions ne jouent un rôle que lors des poignées de main négociant une nouvelle session.