Etiqueta HTML <keygen>
La etiqueta <keygen> es uno de los elementos HTML5. Se encarga de generar un par de claves (pública y privada) utilizadas para cifrar y descifrar los datos enviados al servidor cuando se envía un formulario HTML. La clave pública se envía al servidor junto con los datos del formulario, mientras que la clave privada nunca sale del dispositivo del usuario y es gestionada por el navegador o el llavero del sistema operativo.
Su propósito principal era el cifrado y la autenticación de formularios, en lugar de las firmas digitales.
El elemento <keygen> permite al usuario elegir entre una variedad de opciones de tamaño de clave y especificar dónde generar la clave, por ejemplo, en una tarjeta inteligente o en un software almacenado en el disco. Esta funcionalidad funciona tanto con hardware criptográfico como con la generación de claves basada en software estándar.
Sintaxis
La etiqueta <keygen> se coloca dentro del contenedor <form>; la etiqueta de cierre no es obligatoria. Sin embargo, en XHTML, la etiqueta <keygen> debe ser autocierrante (<keygen />).
Ejemplo de la etiqueta HTML <keygen>:
Etiqueta HTML <keygen>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<form action="/form/submit" method="post">
<keygen name="rsaPublicKey" keytype="rsa">
User’s name:
<input type="text" name="usr_name" />
<input type="submit" />
</form>
</body>
</html>Resultado

Compatibilidad con navegadores
- Chrome, Edge, Firefox, Safari, Opera: Obsoleto y eliminado. Todos los principales navegadores eliminaron el soporte para
<keygen>en 2021 debido a problemas de seguridad y usabilidad. - Navegadores móviles: No compatible.
peligro
Ten en cuenta que la '
<keygen>' tag está obsoleta en HTML5 y no debería utilizarse. En su lugar, se recomienda utilizar otros métodos de autenticación, como OAuth o OpenID.
Atributos
| Atributo | Valor | Descripción |
|---|---|---|
| autofocus | autofocus | Indica que el elemento recibe automáticamente el foco cuando se carga la página. No es compatible con IE y Firefox. |
| challenge | string | Define una cadena de desafío que se envía junto con la clave pública. Si se omite, el valor predeterminado es una cadena vacía. |
| disabled | disabled | Indica que el elemento <keygen> debe estar deshabilitado. |
| form | form_id | Asocia el elemento con un formulario específico por ID. No es compatible con IE. |
| keytype | rsa, dsa, ec | Define el algoritmo de cifrado de la clave. rsa es el único valor estandarizado oficialmente. dsa y ec nunca fueron estandarizados y tenían una compatibilidad inconsistente entre navegadores. rsa (predeterminado) ofrece seguridad alta/media. dsa permite seleccionar el tamaño de la clave. ec ofrece seguridad alta/media. |
| name | string | Define el nombre del elemento <keygen>. |
La etiqueta <keygen> es compatible con los Atributos globales y los Atributos de eventos.
Práctica
¿Qué es cierto sobre la etiqueta HTML <keygen>?