HTML 사전

keygen

설명

The HTML keygen element exists to facilitate generation of key material, and submission of the public key as part of an HTML form. This mechanism is designed for use with Web-based certificate management systems. It is expected that the keygen element will be used in an HTML form along with other information needed to construct a certificate request, and that the result of the process will be a signed certificate.
<keygen>은 HTML 폼 내에서, 키 값의 관리 및 공개키의 전송을 쉽게 하기 위해 사용한다. 이것은 웹 기반 인증 관리 시스템에서 사용하기 위해 만들어 졌다. <keygen>은 HTML 폼 안에서, 다른 정보들과 함께 인증 요청을 하고, 검증된 인증 정보를 결과로 받고자 할 때 사용된다.

<keygen>은 HTML 폼 내에서 한 쌍의 키(암호화된 비밀번호)를 제공하는데, 폼이 키를 전송할 때 개인키(private key)는 로컬(개인 컴퓨터 안)에 저장하고 공개키(public key)를 서버에 전달하는 방식이다. ※ 의역이 원뜻을 정확히 전달했는지 모르겠네요.

Usage Context

Permitted content Flow content, phrasing content, interactive content, listed, labelable, submittable, resettable.
Tag omission void element, has only a start tag
Permitted parent elements none
Normative document HTML5, section 4.10.5

속성

이 엘리먼트는 전역속성을 지원한다.

  • autfocus : This Boolean attribute lets you specify that the control should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form element in a document can have the autofocus attribute, which is a Boolean.
  • challenge : A challenge string that is submitted along with the public key. Defaults to an empty string if not specified.
  • disabled : This Boolean attribute indicates that the form control is not available for interaction.
  • form : The form element that this element is associated with (its form owner). The value of the attribute must be an id of a <form> element in the same document. If this attribute is not specified, this element must be a descendant of a <form> element. This attribute enables you to place <keygen> elements anywhere within a document, not just as descendants of their form elements.
  • keytype : The type of key generated. The default value is RSA.
  • name : The name of the control, which is submitted with the form data.
     
  • autofocus : true이면, 이 페이지가 로드되었을 때 이 콘트롤로 커서를 이동한다. 단, 사용자가 그것을 오버라이드 한 경우, 예를 들면 다른 콘트롤에서 타이핑에 의해서 페이지가 로딩된 경우는 동작하지 않는다. ※ 이 문장 정확한 번역인지 검토해 주세요. 또한 문서 내에 오직 1개의 <form> 엘리먼트가 있을 때에만 이 속성을 가질 수 있다.
  • chanllenge : 공개키와 함께 전송되는 챌린지 문자열. 지정하지 않으면, 빈 문자열("")이 전송된다.
  • disabled : true 이면 이 속성을 사용하지 않는다.
  • form : 이 엘리먼트가 속한 폼의 id. 이 값을 지정하지 않으려면, 이 엘리먼트는 반드시 1개의 <form> 엘리먼트의 하위 엘리먼트이어야 한다. 이 속성은 사용자가 HTML 문서 내 어디나 <keygen> 엘리먼트를 추가하면 활성화 된다. 즉 <form> 엘리먼트 내에 추가하지 않더라도 이 속성이 활성화 되므로, 사용에 주의해야 한다.
  • keytype : 생성된 키의 형식. 기본값은 RSA 다.
  • name : 이 엘리먼트의 이름. 이 이름은 다른 폼 데이터들과 함께 전송된다.

    ※ <keygen> 엘리먼트를 이해하기 위해서는 그 메커니즘에 대한 플로우 차트가 필요한 것 같습니다. 암호화/복호화에 대해 잘 아시는 분이 추가해 주시면 좋겠네요.

예제

DOM Interface

 

호환성

Desktop
기능 구글크롬 파이어폭스Gecko) 인터넷 익스플로러 Opera Safari
기본적인 지원 1.0 1.0 (1.7 or earlier)   3.0 1.2
Mobile
기능 안드로이드 파이어폭스 모바일(Gecko) 인터넷 익스플로러 모바일 오페라 모바일 사파리 모바일
기본적인 지원   1.0 (1.0)      

참고

댓글

댓글 본문
  1. 버드나무
    http://html5.litten.com/html5-...
    2010.06.28일에 James Litten이 포스팅한 글을 번역한 내용입니다.
    Keygen 엘리먼트는 Netscape가 만들어진 시점부터 존재한다.(아마도 Netscape스펙에 정의되어 있는 듯 한데 확인할 방법이 없네요) Keygen 엘리먼트는 파이어폭스, 오페라 그리고 사파리에서 동작하지만 IE에서는 동작하지 않는다. HTML5의 공식적인 부분으로 존재한다는 것은 Keygen 엘리먼트가 IE9에서 가능하다는 것일까? 아니면 Keygen 엘리먼트가 동작할 것이라는 것일까?
    "KEYGEN 태그는 키 생성에 필요한 정보의 생성과 HTML 폼의 부분으로 공개키의 전송을 용이하게 한다. 이 매커니즘은 웹-기반 인증 관리 시스템을 사용하기 위해 설계되었다. 이 매커니즘은 사용자로 하여금 키 생성 시 필요한 키의 길이를 선택하도록 강요하는데 가능한 키 사이즈를 하나의 메뉴형태로 보여준다. 그리고 나서 전송 버튼이 클릭되면, 선택된 사이즈의 키 한쌍(공개/비밀 키)이 생성된다. 비밀키는 암호화되어 로컬 키 저장소에 저장된다. 공개키와 인자 스트링은 DER 인코딩되는데 PublicKeyAndChallenge 라 불린다. 그리고 나서 비밀키로 서명되어 SignedPublicKeyAndChallenge를 생성한다. SignedPublicKeyAndChallenge는 base64로 인코딩되고 이 데이터는 마침내 이름-값 쌍의 값으로 서버에 전달된다. 여기서 이름은 KEYGEN 태그의 Name 속성에 명시된 값이다.”
    가까운 미래에는 IE에 이 엘리먼트가 구현이 될것인가? 이에 대한 대답을 HTMLWG 메일링 리스트에서 발견했다.http://lists.w3.org/Archives/P...
    이 포스트는 2009년 9월에 Microsoft’s Internet Explorer Group에서 프로그램 매니저로 일하고 있는 Adrian Bateman에 의해 작성되었다.
    요약하면 다음과 같다.
    keygen은 아래의 한계를 가지고 있다.
    1. keygen은 사용자가 리스트에서 적당한 키의 길이를 선택하도록 요구한다. 대부분의 사용자들은 이런 경험이 전혀 없다. 그리고 서버가 수용가능한 키의 길이와 알고리즘에 대한 정보를 클라이언트가 알 수 있는 방법이 없다. 예를 들면 한 은행 사이트가 RSA 512를 수용하지 않는다고 해도 클라이언트가 이를 알 수 있는 방법이 없다는 것이다.
    2. 키 쌍을 생성하고 서버로부터 전달된 인증서가 클라이언트에 설치되는 것이 사용자에게는 2개의 구분된 동작으로 인식된다. 이것은 겪어보지 않은 사용자 경험이고 이것을 피할 수 있는 방법은 없다. 더 나은 방법은 동일한 컨트롤에 통합된 키 전송과 인증서 응답을 가지는 것이다.
    3. 유효기간이 만료된 인증서 관리방법을 제공하지 않는다. 유효기간이 만료된 인증서는 그 자체로 가치가 없다.
    4. keygen에 의해 사욛된 포맷이 표준이 아니다. PKCS10과 같은 이미 만들어진 프로토콜들의 부분집합으로 제공될 뿐이다. 이것은 non-RSA 기반 인증서를 지원하지 않는다는 것이고 클라이언트 정보와 키의 조건부 사용을 위한 추가적인 정보를 제공할 방법이 없다는 것이다.
    이와 같은 이유로 MS는 스펙에서 keygen 엘리먼트가 사라질 것으로 믿는다. MS는 keygen을 위한 지원을 구현하지 않을 것이다. 왜냐하면 그것이 그들의 고객들에게 가치를 제공하지 않는다고 생각하기 때문이다. 그들은 공통 API를 고려하고 있다. 이 API는 브라우저 간에 상호운용성을 허용한다. 우리는 고객들의 진정한 요구를 그 스펙의 미래 버전이나 별도의 작업으로 다룬다.
  2. 버드나무
    호환성은 아래와 같습니다.Firefox 3.6+ : OKSafari 5+ : OKSafari Mobile iOS 4 : NOChrome 6+ : OKOpera 10.6+ : OKIE any : NO
    참고URL : http://wufoo.com......t...
  3. Jung Jongwon
    이 페이지가 브라우저의 화면에 나타날 때 autofocus 속성을 가지는 컨트롤(?)에 커서가 자동으로 위치하게 되는지를 결정한다. 단, autofocus를 가지도록 설정을 했더라도 다른 컨트롤을 명시적(typing)으로 지정하는 경우는 제외된다. 또한 문서(document) 내에서 하나의 form만 autofocus 속성을 가질 수 있다.
    주 1. typing은 명시적으로 다른 컨트롤이 autofocus 되도록 어딘가에서(?) 선언하는 경우를 말하는 듯 합니다.주 2. document와 page가 따로 쓰이고 있는데 공부한지 오래되고 html5는 잘 몰라서 page가 다수의 document를 포함할 수 있다면 명확히 구분해야할듯 해서 의역하면서 통일하지 않았습니다.주 3. control을 컨트롤로 단순히 옮겼는데... 어찌해야할지 ㅎ주 4. page load를 브라우저를 통해서 화면에 나타나는 것으로 했는데, 실제로는 안 나타날 수도 있지 않을까 싶습니다. hidden 속성을 가진다든지... 하지만 어쨌거나 안 나타나는 경우 autofocus가 의미가 없으므로 이런 경우는 없지 않을까하는 가정하에서 초보자가 읽고 이해하기 편하다록 의역했습니다.
  4. Jung Jongwon
    autofocus의 의역은 조금 생각해봐야겠는데, 뒷 문장은 "하나만 있을 때"가 아니고 "하나의 form element만 autofocus 속성을 가질 수 있다"가 아닌가 싶습니다.
버전 관리
graphittie
현재 버전
선택 버전
graphittie 자세히 보기