HTML-тег <keygen>
Тег <keygen> является одним из элементов HTML5. Он отвечает за генерацию пары ключей (открытого и закрытого), используемых для шифрования и расшифровки данных, отправляемых на сервер при отправке HTML-формы. Открытый ключ отправляется на сервер вместе с данными формы, тогда как закрытый ключ никогда не покидает устройство пользователя и управляется браузером или системным хранилищем ключей.
Его основной целью было шифрование форм и аутентификация, а не цифровые подписи.
Элемент <keygen> позволяет пользователю выбрать из ряда вариантов размера ключа и указать место его генерации, например, на смарт-карте или в программном обеспечении, хранящемся на диске. Эта функциональность работает как с криптографическим аппаратным обеспечением, так и со стандартной программной генерацией ключей.
Синтаксис
Тег <keygen> размещается в контейнере <form>; закрывающий тег не требуется. Однако в XHTML тег <keygen> должен быть самозакрывающимся (<keygen />).
Пример использования HTML-тега <keygen>:
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>Результат

Поддержка браузерами
- Chrome, Edge, Firefox, Safari, Opera: Устарел и удалён. Все основные браузеры прекратили поддержку
<keygen>в 2021 году из-за проблем с безопасностью и удобством использования. - Мобильные браузеры: Не поддерживается.
DANGER
Обратите внимание, что тег '<keygen>' устарел в HTML5 и не должен использоваться. Вместо этого рекомендуется применять другие методы аутентификации, такие как OAuth или OpenID.
Атрибуты
| Атрибут | Значение | Описание |
|---|---|---|
| autofocus | autofocus | Определяет, что элемент автоматически получает фокус при загрузке страницы. Не поддерживается в IE и Firefox. |
| challenge | string | Определяет строку вызова, передаваемую вместе с открытым ключом. По умолчанию пустая строка, если не указано иное. |
| disabled | disabled | Указывает, что элемент <keygen> должен быть отключён. |
| form | form_id | Связывает элемент с конкретной формой по ID. Не поддерживается в IE. |
| keytype | rsa, dsa, ec | Определяет алгоритм шифрования ключа. rsa — единственное официально стандартизированное значение. dsa и ec никогда не стандартизировались и имели непоследовательную поддержку в браузерах. rsa (по умолчанию) обеспечивает высокую/среднюю безопасность. dsa позволяет выбирать размер ключа. ec обеспечивает высокую/среднюю безопасность. |
| name | string | Определяет имя элемента <keygen>. |
Тег <keygen> поддерживает Глобальные атрибуты и Атрибуты событий.
Практика
Какие утверждения верны для HTML-тега <keygen>?