HTML <keygen> 태그란?
HTML <keygen> 태그는 웹 폼(web form)을 인증서 관리 시스템(certificate management system)과 연동하여 처리하기 위해 사용되는 요소입니다. 이 태그는 보안 키를 생성하고, 생성된 키 중 공개 키(public key)를 서버로 전송하는 역할을 합니다.
동작 방식은 다음과 같습니다. 사용자가 폼을 제출하면 브라우저는 로컬 환경에서 키 쌍(key pair)을 생성하여 개인 키(private key)는 클라이언트에 저장하고, 공개 키만 서버에 전달합니다. 이를 통해 별도의 복잡한 설정 없이도 안전한 키 교환이 가능해집니다.
⚠️ 참고: <keygen> 태그는 HTML 5.2에서 공식적으로 폐기(deprecated)되었으며, 현재 대부분의 최신 브라우저에서는 더 이상 지원되지 않습니다. 신규 프로젝트에서는 Web Cryptography API와 같은 현대적인 대안을 사용하는 것이 좋습니다.
<keygen> 태그의 주요 속성
<keygen> 태그는 아래와 같은 추가 속성을 지원합니다.
| 속성 | 값 | 설명 |
|---|---|---|
| autofocus | autofocus | 페이지가 로드될 때 <keygen> 요소가 자동으로 포커스를 받도록 지정합니다. |
| challenge | challenge | 폼 제출을 검증하기 위한 챌린지 문자열을 지정합니다. 이 문자열은 공개 키와 함께 PublicKeyAndChallenge 형태로 패키징됩니다. 챌린지 문자열이 제공되지 않으면 길이가 0인 IA5STRING으로 인코딩됩니다. |
| disabled | disabled | <keygen> 요소를 비활성화 상태로 만듭니다. |
| form | form_id | 해당 요소가 속한 하나 이상의 폼을 지정합니다. |
| keytype | rsa dsa ec | 키 생성에 사용할 암호화 알고리즘을 지정합니다. |
| name | rsadsaec | <keygen> 요소의 이름을 지정합니다. |
예제 코드
아래 코드를 실행하면 HTML에서 <keygen> 태그가 어떻게 동작하는지 직접 확인할 수 있습니다.
<!DOCTYPE html> <html> <head> <title>HTML keygen Tag</title> </head> <body> <form> <keygen name = "random_key" challenge = "0987654321"> <input name = "subject" value = "subject"> </form> </body> </html>
위 예제에서 <keygen> 요소는 이름이 random_key인 키를 생성하고, 챌린지 값 0987654321을 공개 키와 함께 전송합니다. 폼에는 일반 입력 필드 하나가 함께 포함되어 있습니다.
마무리
<keygen> 태그는 과거 인증서 기반 폼 처리에 유용하게 사용되었지만, 현재는 표준에서 제외된 요소입니다. 레거시 코드를 분석하거나 오래된 문서를 다룰 때 이 태그의 구조와 속성을 이해해 두면 도움이 되며, 실제 개발에서는 Web Cryptography API 등 최신 기술을 활용하는 것을 권장합니다.