Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-ietf-tls-openpgp-keys-11.txt
blob084e00c4b5723f5fcf56202b2220b931d73545ce
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
12 Status of this Memo
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-
22    Drafts.
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.
37 Copyright Notice
39    Copyright (C) The Internet Society (2006).
41 Abstract
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
60 Table of Contents
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
116 1.  Introduction
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
172 2.  Terminology
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.
233 3.1.  Client Hello
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;
251       struct {
252          select(ClientOrServerExtension) {
253             case client:
254                CertificateType certificate_types<1..2^8-1>;
255             case server:
256                CertificateType certificate_type;
257          }
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.
264 3.2.  Server Hello
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
302                               encryption.
304       DHE_DSS                 DSS public key which can be used for
305                               authentication.
307       DHE_RSA                 RSA public key which can be used for
308                               authentication.
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
320    [TLSEXT].
335 Mavrogiannopoulos       Expires February 1, 2007                [Page 6]
337 Internet-Draft  Using OpenPGP keys for TLS authentication      July 2006
340       enum {
341            cert_fingerprint (0), cert (1), (255)
342       } OpenPGPCertDescriptorType;
344       opaque OpenPGPCertFingerprint<16..20>;
346       opaque OpenPGPCert<0..2^24-1>;
348       struct {
349            OpenPGPCertDescriptorType descriptorType;
350            select (descriptorType) {
351                 case cert_fingerprint: OpenPGPCertFingerprint;
352                 case cert: OpenPGPCert;
353            }
354       } Certificate;
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
361    be empty.
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
378    specification.
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
469        Consensus [RFC2434].
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
508 6.  References
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),
518               May 2006.
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,
526               October 1998.
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
567    Michael Elkins.
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
620 Author's Address
622    Nikos Mavrogiannopoulos
623    Independent
624    Arkadias 8
625    Halandri, Attiki  15234
626    Greece
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
698    ietf-ipr@ietf.org.
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.
712 Copyright Statement
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.
719 Acknowledgment
721    Funding for the RFC Editor function is currently provided by the
722    Internet Society.
727 Mavrogiannopoulos       Expires February 1, 2007               [Page 13]