<keygen>

Ajouté dans HTML5

Résumé

L'élément HTML <keygen> existe afin de faciliter la génération de clés et l'envoi d'une clé publique via un formulaire HTML. Le mécanisme utilisé est conçu pour être utilisé avec les systèmes de gestion de certificats électroniques. L'élément keygen est prévu pour être utilisé dans un formulaire HTML avec d'autres informations permettant de construire une requête de certificat, le résultat du processus étant un certificat signé.

Attributs

Cet élément inclut les attributs globaux.

autofocus
Cet attribut booléen permet de spécifier si le contrôle doit être sélectionné lorsque la page est chargée, à moins que l'utilisateur n'outrepasse ce comportement en remplissant un autre champ. Un seul élément par document peut avoir l'attribut autofocus.
challenge
Une chaîne de caractères correspondant à une requête/réponse qui est envoyée avec la clé publique. La valeur par défaut est une chaîne de caractères vide.
disabled
Cet attribut booléen indique qu'il est impossible d'interagir avec le contrôle.
form
L'élément form auquel cet élément est rattaché (son formulaire propriétaire). La valeur de cet attribut doit être l'identifiant (ou id) d'un élément <form> du même document. Si cet attribut n'est pas renseigné, l'élément doit être un descendant d'un élément <form>. Cet attribut permet de placer des éléments <keygen> au sein du document sans qu'ils soient présentés dans un formulaire.
keytype
Le type de clé générée, la valeur par défaut est RSA.
name
Le nom du contrôle qui en envoyé avec les données du formulaire.

L'élément se présente de cette façon :

<keygen name="nom" challenge="chaîne de challenge" keytype="type" keyparams="pqg-params">

Le paramètre keytype est utilisé pour spécifier le type de clé à générer. Les valeurs autorisées sont RSA (qui est la valeur par défaut), DSA et EC. Les attributs name et challenge sont obligatoires. L'attribut keytype est facultatif pour une génération de clé RSA mais obligatoire pour une génération de clé DSA et EC. L'attribut keyparams est requis pour la génération de clés DSA et EC et est ignoré pour la génération de clé RSA. PQG est un synonyme de keyparams. Les variantes suivantes sont donc équivalentes : keyparams="pqg-params" ou pqg="pqg-params".

Pour les clés RSA, le paramètre keyparams n'est pas utilisé (ignoré s'il est présent). L'utilisateur peut avoir le choix pour la force des clés RSA à générer. Actuellement, l'utilisateur peut choisir entre « high » (élevé) pour 2048 bits et « medium » (moyen) pour 1024 bits.

Pour les clés DSA, le paramètre keyparams définit les paramètres DSA PQG à utiliser pendant le processus de génération de la clé. La valeur du paramètre pqg est encodée en DER en suivant la structure Dss-Parms comme énoncé dans le RFC 3279. L'utilisateur peut avoir le choix des tailles de clés DSA, permettant à l'utilisateur de choisir parmi les tailles de clés définies dans le standard DSA.

Pour les clés EC, le paramètre keyparams définit le nom de la courbe elliptique sur laquelle sera générée la clé. Normalement, c'est une chaîne de caractères du tableau nsKeygenHandler.cpp. (Il faut noter que seulement un sous-ensemble des courbes peut être supporté par n'importe quel navigateur.) Si le paramètre keyparams n'est pas reconnu comme une chaîne de caractères correspondant à une courbe, une courbe est choisie selon la force de la clé choisie par l'utilisateur (faible, moyenne, élevée). La courbe secp384r1 est utilisée pour une force élevée, la courbe secp256r1 est utilisée pour des clés moyennes.

Note : Les détails concernant le nombre de degrés de force, les valeurs par défaut de chaque degré et les interfaces utilisateurs à utiliser pour offrir ce choix sortent du cadre de ce document.

L'élément keygen n'est valide que s'il appartient à un formulaire HTML. Il entraînera l'affichage d'une interface pour choisir la taille de clé à utiliser. L'interface peut être un menu, des boutons radio ou autre . Le navigateur offrant différents niveaux de forces pour les clés. Actuellement, deux forces sont proposées : élevée et moyenne (high et medium). Si le navigateur est configuré afin de supporter du matériel cryptographique (par exemple les « smart cards »), l'utilisateur peut avoir le choix du support sur lequel générer la clé : sur la carte ou par un logiciel puis stockée sur le disque.

Quand le bouton d'envoi du formulaire est activé, une paire de clés de la taille choisie est générée. La clé privée est chiffrée est stockée dans la base de clés locale.

   PublicKeyAndChallenge ::= SEQUENCE {
       spki SubjectPublicKeyInfo,
       challenge IA5STRING
   }
   SignedPublicKeyAndChallenge ::= SEQUENCE {
       publicKeyAndChallenge PublicKeyAndChallenge,
       signatureAlgorithm AlgorithmIdentifier,
       signature BIT STRING
   }

La clé publique et la requête/réponse sont encodées en DER en tant que PublicKeyAndChallenge, puis signées avec la clé privée pour produire un SignedPublicKeyAndChallenge. Le  SignedPublicKeyAndChallenge est encodé en base64 et les données ASCII sont finalement envoyées au serveur sous forme d'une paire nom-valeur du formulaire. Le nom étant la valeur définie par l'attribut name de l'élément keygen. Si aucune chaîne de requête/réponse n'est fournie, cela sera encodé comme une IA5STRING de longueur nulle.

Voici un exemple d'un envoi de formulaire, tel qu'envoyé au programme CGI par le serveur HTTP :

   commonname=John+Doe&email=doe@foo.com&org=Foobar+Computing+Corp.&
   orgunit=Bureau+of+Bureaucracy&locality=Anytown&state=California&country=US&
   key=MIHFMHEwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAnX0TILJrOMUue%2BPtwBRE6XfV%0AWtKQbsshxk5ZhcUwcwyvcnIq9b82QhJdoACdD34rqfCAIND46fXKQUnb0mvKzQID%0AAQABFhFNb3ppbGxhSXNNeUZyaWVuZDANBgkqhkiG9w0BAQQFAANBAAKv2Eex2n%2FS%0Ar%2F7iJNroWlSzSMtTiQTEB%2BADWHGj9u1xrUrOilq%2Fo2cuQxIfZcNZkYAkWP4DubqW%0Ai0%2F%2FrgBvmco%3D

Exemples

Spécifications

Spécification Statut Commentaires
WHATWG HTML Living Standard Living Standard  
HTML5 Candidate Recommendation  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 1.0 1.0 (1.7 ou moins) Pas de support 3.0 1.2
Fonctionnalité Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple ? 1.0 (1.0) ? ? ?

 

Étiquettes et contributeurs liés au document

Contributeurs ayant participé à cette page : tregagnon, SphinxKnight, teoli
Dernière mise à jour par : tregagnon,