4 TLS Working Group N. Mavrogiannopoulos
5 Internet-Draft Independent
6 Expires: February 1, 2007 July 31, 2006
9 Using OpenPGP keys for TLS authentication
10 draft-ietf-tls-openpgp-keys-11
14 By submitting this Internet-Draft, each author represents that any
15 applicable patent or other IPR claims of which he or she is aware
16 have been or will be disclosed, and any of which he or she becomes
17 aware will be disclosed, in accordance with Section 6 of BCP 79.
19 Internet-Drafts are working documents of the Internet Engineering
20 Task Force (IETF), its areas, and its working groups. Note that
21 other groups may also distribute working documents as Internet-
24 Internet-Drafts are draft documents valid for a maximum of six months
25 and may be updated, replaced, or obsoleted by other documents at any
26 time. It is inappropriate to use Internet-Drafts as reference
27 material or to cite them other than as "work in progress."
29 The list of current Internet-Drafts can be accessed at
30 http://www.ietf.org/ietf/1id-abstracts.txt.
32 The list of Internet-Draft Shadow Directories can be accessed at
33 http://www.ietf.org/shadow.html.
35 This Internet-Draft will expire on February 1, 2007.
39 Copyright (C) The Internet Society (2006).
43 This memo proposes extensions to the TLS protocol to support the
44 OpenPGP key format. The extensions discussed here include a
45 certificate type negotiation mechanism, and the required
46 modifications to the TLS Handshake Protocol.
55 Mavrogiannopoulos Expires February 1, 2007 [Page 1]
57 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
63 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
64 3. Changes to the Handshake Message Contents . . . . . . . . . . 5
65 3.1. Client Hello . . . . . . . . . . . . . . . . . . . . . . . 5
66 3.2. Server Hello . . . . . . . . . . . . . . . . . . . . . . . 5
67 3.3. Server Certificate . . . . . . . . . . . . . . . . . . . . 6
68 3.4. Certificate request . . . . . . . . . . . . . . . . . . . 7
69 3.5. Client certificate . . . . . . . . . . . . . . . . . . . . 7
70 3.6. Other Handshake messages . . . . . . . . . . . . . . . . . 7
71 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8
72 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
73 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
74 6.1. Normative References . . . . . . . . . . . . . . . . . . . 10
75 6.2. Informative References . . . . . . . . . . . . . . . . . . 10
76 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11
77 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12
78 Intellectual Property and Copyright Statements . . . . . . . . . . 13
111 Mavrogiannopoulos Expires February 1, 2007 [Page 2]
113 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
118 The IETF has two sets of standards for public key certificates, one
119 set for use of X.509 certificates [PKIX] and one for OpenPGP
120 certificates [OpenPGP]. At the time of writing, the TLS [TLS]
121 standards are defined to use only X.509 certificates. This document
122 specifies a way to negotiate use of OpenPGP certificates for a TLS
123 session, and specifies how to transport OpenPGP certificates via TLS.
124 The proposed extensions are backward compatible with the current TLS
125 specification, so that existing client and server implementations
126 that make use of X.509 certificates are not affected.
167 Mavrogiannopoulos Expires February 1, 2007 [Page 3]
169 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
174 The term ``OpenPGP key'' is used in this document as in the OpenPGP
175 specification [OpenPGP]. We use the term ``OpenPGP certificate'' to
176 refer to OpenPGP keys that are enabled for authentication.
178 This document uses the same notation and terminology used in the TLS
179 Protocol specification [TLS].
181 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
182 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
183 document are to be interpreted as described in [RFC2119].
223 Mavrogiannopoulos Expires February 1, 2007 [Page 4]
225 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
228 3. Changes to the Handshake Message Contents
230 This section describes the changes to the TLS handshake message
231 contents when OpenPGP certificates are to be used for authentication.
235 In order to indicate the support of multiple certificate types
236 clients MUST include an extension of type "cert_type" (see Section 5)
237 to the extended client hello message. The hello extension mechanism
238 is described in [TLSEXT].
240 This extension carries a list of supported certificate types the
241 client can use, sorted by client preference. This extension MUST be
242 omitted if the client only supports X.509 certificates. The
243 "extension_data" field of this extension contains a
244 CertificateTypeExtension structure.
247 enum { client, server } ClientOrServerExtension;
249 enum { X.509(0), OpenPGP(1), (255) } CertificateType;
252 select(ClientOrServerExtension) {
254 CertificateType certificate_types<1..2^8-1>;
256 CertificateType certificate_type;
258 } CertificateTypeExtension;
260 No new cipher suites are required to use OpenPGP certificates. All
261 existing cipher suites that support a compatible, with the key, key
262 exchange method can be used in combination with OpenPGP certificates.
266 If the server receives a client hello that contains the "cert_type"
267 extension and chooses a cipher suite that requires a certificate,
268 then two outcomes are possible. The server MUST either select a
269 certificate type from the certificate_types field in the extended
270 client hello or terminate the connection with a fatal alert of type
271 "unsupported_certificate".
273 The certificate type selected by the server is encoded in a
274 CertificateTypeExtension structure, which is included in the extended
275 server hello message using an extension of type "cert_type". Servers
279 Mavrogiannopoulos Expires February 1, 2007 [Page 5]
281 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
284 that only support X.509 certificates MAY omit including the
285 "cert_type" extension in the extended server hello.
287 3.3. Server Certificate
289 The contents of the certificate message sent from server to client
290 and vice versa are determined by the negotiated certificate type and
291 the selected cipher suite's key exchange algorithm.
293 If the OpenPGP certificate type is negotiated then it is required to
294 present an OpenPGP certificate in the Certificate message. The
295 certificate must contain a public key that matches the selected key
296 exchange algorithm, as shown below.
299 Key Exchange Algorithm OpenPGP Certificate Type
301 RSA RSA public key which can be used for
304 DHE_DSS DSS public key which can be used for
307 DHE_RSA RSA public key which can be used for
310 An OpenPGP certificate appearing in the Certificate message is sent
311 using the binary OpenPGP format. The certificate MUST contain all
312 the elements required by Section 10.1 of [OpenPGP].
314 The option is also available to send an OpenPGP fingerprint, instead
315 of sending the entire certificate. The process of fingerprint
316 generation is described in section 11.2 of [OpenPGP]. The peer shall
317 respond with a "certificate_unobtainable" fatal alert if the
318 certificate with the given fingerprint cannot be found. The
319 "certificate_unobtainable" fatal alert is defined in section 4 of
335 Mavrogiannopoulos Expires February 1, 2007 [Page 6]
337 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
341 cert_fingerprint (0), cert (1), (255)
342 } OpenPGPCertDescriptorType;
344 opaque OpenPGPCertFingerprint<16..20>;
346 opaque OpenPGPCert<0..2^24-1>;
349 OpenPGPCertDescriptorType descriptorType;
350 select (descriptorType) {
351 case cert_fingerprint: OpenPGPCertFingerprint;
352 case cert: OpenPGPCert;
356 3.4. Certificate request
358 The semantics of this message remain the same as in the TLS
359 specification. However if this message is sent, and the negotiated
360 certificate type is OpenPGP, the "certificate_authorities" list MUST
363 3.5. Client certificate
365 This message is only sent in response to the certificate request
366 message. The client certificate message is sent using the same
367 formatting as the server certificate message and it is also required
368 to present a certificate that matches the negotiated certificate
369 type. If OpenPGP certificates have been selected and no certificate
370 is available from the client, then a Certificate structure that
371 contains an empty OpenPGPCert vector MUST be sent. The server SHOULD
372 respond with a "handshake_failure" fatal alert if client
373 authentication is required.
375 3.6. Other Handshake messages
377 All the other handshake messages are identical to the TLS
391 Mavrogiannopoulos Expires February 1, 2007 [Page 7]
393 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
396 4. Security Considerations
398 All security considerations discussed in [TLS], [TLSEXT] as well as
399 [OpenPGP] apply to this document. Considerations about the use of
400 the web of trust or identity and certificate verification procedure
401 are outside the scope of this document. These are considered issues
402 to be handled by the application layer protocols.
404 The protocol for certificate type negotiation is identical in
405 operation to ciphersuite negotiation of the [TLS] specification with
406 the addition of default values when the extension is omitted. Since
407 those omissions have a unique meaning and the same protection is
408 applied to the values as with ciphersuites, it is believed that the
409 security properties of this negotiation are the same as with
410 ciphersuite negotiation.
412 When using OpenPGP fingerprints instead of the full certificates, the
413 discussion in Section 6.3 of [TLSEXT] for "Client Certificate URLs"
414 applies, especially when external servers are used to retrieve keys.
415 However a major difference is that while the "client_certificate_url"
416 extension allows to identify certificates without including the
417 certificate hashes, this is not possible in the protocol proposed
418 here. In this protocol the certificates, when not sent, are always
419 identified by their fingerprint, which serves as a cryptographic hash
420 of the certificate (see Section 11.2 of [OpenPGP]).
422 The information that is available to participating parties and
423 eavesdroppers (when confidentiality is not available through a
424 previous handshake) is the number and the types of certificates they
425 hold, plus the contents of certificates.
447 Mavrogiannopoulos Expires February 1, 2007 [Page 8]
449 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
452 5. IANA Considerations
454 This document defines a new TLS extension, "cert_type", assigned a
455 value of TBD-BY-IANA (the value 7 is suggested) from the TLS
456 ExtensionType registry defined in [TLSEXT]. This value is used as
457 the extension number for the extensions in both the client hello
458 message and the server hello message. The new extension type is used
459 for certificate type negotiation.
461 The "cert_type" extension contains an 8-bit CertificateType field,
462 for which a new registry, named "TLS Certificate Types", is
463 established in this document, to be maintained by IANA. The registry
464 is segmented in the following way:
466 1. Values 0 (X.509) and 1 (OpenPGP) are defined in this document.
468 2. Values from 2 through 223 decimal inclusive are assigned via IETF
471 3. Values from 224 decimal through 255 decimal inclusive are
472 reserved for Private Use [RFC2434].
503 Mavrogiannopoulos Expires February 1, 2007 [Page 9]
505 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
510 6.1. Normative References
512 [TLS] Dierks, T. and E. Rescorla, "The TLS Protocol Version
513 1.1", RFC 4346, April 2006.
515 [OpenPGP] Callas, J., Donnerhacke, L., Finey, H., Shaw, D., and R.
516 Thayer, "OpenPGP Message Format",
517 draft-ietf-openpgp-rfc2440bis-18 (work in progress),
520 [TLSEXT] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
521 and T. Wright, "Transport Layer Security (TLS)
522 Extensions", RFC 4366, April 2006.
524 [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
525 IANA Considerations Section in RFCs", RFC 2434,
528 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
529 Requirement Levels", RFC 2119, March 1997.
531 6.2. Informative References
533 [PKIX] Housley, R., Ford, W., Polk, W., and D. Solo, "Internet X.509
534 Public Key Infrastructure Certificate and Certificate
535 Revocation List (CRL) Profile", RFC 3280, April 2002.
559 Mavrogiannopoulos Expires February 1, 2007 [Page 10]
561 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
564 Appendix A. Acknowledgements
566 This document was based on earlier work made by Will Price and
569 The author wishes to thank Werner Koch, David Taylor, Timo Schulz,
570 Pasi Eronen, Jon Callas, Stephen Kent, Robert Sparks and Hilarie
571 Orman for their suggestions on improving this document.
615 Mavrogiannopoulos Expires February 1, 2007 [Page 11]
617 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
622 Nikos Mavrogiannopoulos
625 Halandri, Attiki 15234
628 Email: nmav@gnutls.org
629 URI: http://www.gnutls.org/
671 Mavrogiannopoulos Expires February 1, 2007 [Page 12]
673 Internet-Draft Using OpenPGP keys for TLS authentication July 2006
676 Intellectual Property Statement
678 The IETF takes no position regarding the validity or scope of any
679 Intellectual Property Rights or other rights that might be claimed to
680 pertain to the implementation or use of the technology described in
681 this document or the extent to which any license under such rights
682 might or might not be available; nor does it represent that it has
683 made any independent effort to identify any such rights. Information
684 on the procedures with respect to rights in RFC documents can be
685 found in BCP 78 and BCP 79.
687 Copies of IPR disclosures made to the IETF Secretariat and any
688 assurances of licenses to be made available, or the result of an
689 attempt made to obtain a general license or permission for the use of
690 such proprietary rights by implementers or users of this
691 specification can be obtained from the IETF on-line IPR repository at
692 http://www.ietf.org/ipr.
694 The IETF invites any interested party to bring to its attention any
695 copyrights, patents or patent applications, or other proprietary
696 rights that may cover technology that may be required to implement
697 this standard. Please address the information to the IETF at
701 Disclaimer of Validity
703 This document and the information contained herein are provided on an
704 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
705 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
706 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
707 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
708 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
709 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
714 Copyright (C) The Internet Society (2006). This document is subject
715 to the rights, licenses and restrictions contained in BCP 78, and
716 except as set forth therein, the authors retain all their rights.
721 Funding for the RFC Editor function is currently provided by the
727 Mavrogiannopoulos Expires February 1, 2007 [Page 13]