Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-ietf-tls-openpgp-keys-09.txt
blob84d6393f6adedc3e9042f72b4bf022fdb0b70385
4 TLS Working Group                                   N. Mavrogiannopoulos
5 Internet-Draft                                               Independent
6 Expires: November 16, 2006                                  May 15, 2006
9                Using OpenPGP keys for TLS authentication
10                      draft-ietf-tls-openpgp-keys-09
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 November 16, 2006.
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 trust model and keys.  The extensions discussed here include
45    a certificate type negotiation mechanism, and the required
46    modifications to the TLS Handshake Protocol.
55 Mavrogiannopoulos       Expires November 16, 2006               [Page 1]
57 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
60 1.  Introduction
62    At the time of writing, TLS [TLS] uses the PKIX [PKIX]
63    infrastructure, to provide certificate services.  Currently the PKIX
64    protocols are limited to a hierarchical key management and as a
65    result, applications which follow different - non hierarchical -
66    trust models, could not be benefited by TLS.
68    OpenPGP keys (sometimes called OpenPGP certificates), provide
69    security services for electronic communications.  They are widely
70    deployed, especially in electronic mail applications, provide public
71    key authentication services, allow distributed key management and can
72    be used with a non hierarchical trust model called the "web of trust"
73    [WOT].
75    This document will extend the TLS protocol to support OpenPGP keys
76    using the existing TLS cipher suites.  In brief this would be
77    achieved by adding a negotiation of the certificate type in addition
78    to the normal handshake negotiations.  Then the required
79    modifications to the handshake messages, in order to hold OpenPGP
80    keys as well, will be described.  The normal handshake procedure with
81    X.509 certificates is not altered, to preserve compatibility with
82    existing TLS servers and clients.
84    This document uses the same notation used in the TLS Protocol
85    specification [TLS].
87    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
88    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
89    document are to be interpreted as described in [RFC2119].
111 Mavrogiannopoulos       Expires November 16, 2006               [Page 2]
113 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
116 2.  Changes to the Handshake Message Contents
118    This section describes the changes to the TLS handshake message
119    contents when OpenPGP keys are to be used for authentication.
121 2.1.  Client Hello
123    In order to indicate the support of multiple certificate types
124    clients will include an extension of type "cert_type" (see Section 4)
125    to the extended client hello message.  The hello extension mechanism
126    is described in [TLSEXT].
128    This extension carries a list of supported certificate types the
129    client can use, sorted by client preference.  This extension MUST be
130    omitted if the client only supports X.509 certificates.  The
131    "extension_data" field of this extension will contain a
132    CertificateTypeExtension structure.
135       enum { client, server } ClientOrServerExtension;
137       enum { X.509(0), OpenPGP(1), (255) } CertificateType;
139       struct {
140          select(ClientOrServerExtension) {
141             case client:
142                CertificateType certificate_types<1..2^8-1>;
143             case server:
144                CertificateType certificate_type;
145          }
146       } CertificateTypeExtension;
148    No new cipher suites are required to use OpenPGP keys.  All existing
149    cipher suites defined in [TLS] that support a compatible, with the
150    key, key exchange method can be used in combination with OpenPGP
151    keys.
153 2.2.  Server Hello
155    Servers that receive an extended client hello containing the
156    "cert_type" extension, and have chosen a cipher suite that supports
157    certificates, they MUST select a certificate type from the
158    certificate_types field in the extended client hello, or terminate
159    the connection with a fatal alert of type "unsupported_certificate".
161    The certificate type selected by the server, is encoded in a
162    CertificateTypeExtension structure, which is included in the extended
163    server hello message, using an extension of type "cert_type".
167 Mavrogiannopoulos       Expires November 16, 2006               [Page 3]
169 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
172    Servers that only support X.509 certificates MAY omit including the
173    "cert_type" extension in the extended server hello.
175 2.3.  Server Certificate
177    The contents of the certificate message sent from server to client
178    and vice versa are determined by the negotiated certificate type and
179    the selected cipher suite's key exchange algorithm.
181    If the OpenPGP certificate type is negotiated then it is required to
182    present an OpenPGP key in the Certificate message.  The OpenPGP key
183    must contain a public key that matches the selected key exchange
184    algorithm, as shown below.
187       Key Exchange Algorithm  OpenPGP Key Type
189       RSA                     RSA public key which can be used for
190                               encryption.
192       DHE_DSS                 DSS public key.
194       DHE_RSA                 RSA public key which can be used for
195                               signing.
197    An OpenPGP public key appearing in the Certificate message will be
198    sent using the binary OpenPGP format.  The term public key is used to
199    describe a composition of OpenPGP packets to form a block of data
200    which contains all information needed by the peer.  This includes
201    public key packets, user ID packets and all the fields described in
202    section 10.1 of [OpenPGP].
204    The option is also available to send an OpenPGP fingerprint, instead
205    of sending the entire key.  The process of fingerprint generation is
206    described in section 11.2 of [OpenPGP].  The peer shall respond with
207    a "certificate_unobtainable" fatal alert if the key with the given
208    key fingerprint cannot be found.  The "certificate_unobtainable"
209    fatal alert is defined in section 4 of [TLSEXT].
211    If the key is not valid, expired, revoked, corrupt, the appropriate
212    fatal alert message is sent from section A.3 of the TLS
213    specification.  If a key is valid and neither expired nor revoked, it
214    is accepted by the protocol.  The key validation procedure is a local
215    matter outside the scope of this document.
223 Mavrogiannopoulos       Expires November 16, 2006               [Page 4]
225 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
228       enum {
229            key_fingerprint (0), key (1), (255)
230       } PGPKeyDescriptorType;
232       opaque PGPKeyFingerprint<16..20>;
234       opaque PGPKey<0..2^24-1>;
236       struct {
237            PGPKeyDescriptorType descriptorType;
238            select (descriptorType) {
239                 case key_fingerprint: PGPKeyFingerprint;
240                 case key: PGPKey;
241            }
242       } Certificate;
244 2.4.  Certificate request
246    The semantics of this message remain the same as in the TLS
247    specification.  However if this message is sent, and the negotiated
248    certificate type is OpenPGP, the "certificate_authorities" list MUST
249    be empty.
251 2.5.  Client certificate
253    This message is only sent in response to the certificate request
254    message.  The client certificate message is sent using the same
255    formatting as the server certificate message and it is also required
256    to present a certificate that matches the negotiated certificate
257    type.  If OpenPGP keys have been selected, and no key is available
258    from the client, then a Certificate that contains an empty PGPKey
259    should be sent.  The server may respond with a "handshake_failure"
260    fatal alert if client authentication is required.
262 2.6.  Other Handshake messages
264    The rest of the handshake messages such as the server key exchange,
265    the certificate verify and the finished messages are identical to the
266    TLS specification.
279 Mavrogiannopoulos       Expires November 16, 2006               [Page 5]
281 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
284 3.  Security Considerations
286    As with X.509 ASN.1 formatted keys, OpenPGP keys need specialized
287    parsers.  Care must be taken to make those parsers safe against
288    maliciously modified keys, that could cause arbitrary code execution.
290    Security considerations about the use of the web of trust or the
291    verification procedure are outside the scope of this document and
292    they are considered an issue to be handled by local policy.
335 Mavrogiannopoulos       Expires November 16, 2006               [Page 6]
337 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
340 4.  IANA Considerations
342    This document defines a new TLS extension, "cert_type", assigned a
343    value of TBD-BY-IANA (the value 7 is suggested) from the TLS
344    ExtensionType registry defined in [TLSEXT].  This value is used as
345    the extension number for the extensions in both the client hello
346    message and the server hello message.  The new extension type will be
347    used for certificate type negotiation.
349    To accommodate for future additions to the TLS certificate types a
350    new registry is established in this document, to be maintained by
351    IANA.  The registry is segmented in the following way:
353    1.  Values 0 (X.509) and 1 (OpenPGP) are defined in this document.
355    2.  Values from 2 through 223 decimal inclusive are assigned via IETF
356        Consensus [RFC2434].
358    3.  Values from 224 decimal through 255 decimal inclusive are
359        reserved for private use [RFC2434].
391 Mavrogiannopoulos       Expires November 16, 2006               [Page 7]
393 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
396 5.  References
398 5.1.  Normative References
400    [TLS]      Dierks, T. and E. Rescorla, "The TLS Protocol Version
401               1.1", RFC 4346, April 2006.
403    [OpenPGP]  Callas, J., Donnerhacke, L., Finey, H., and R. Thayer,
404               "OpenPGP Message Format", RFC 2440, November 1998.
406    [TLSEXT]   Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
407               and T. Wright, "Transport Layer Security (TLS)
408               Extensions", RFC 4366, April 2006.
410    [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
411               IANA Considerations Section in RFCs", RFC 2434,
412               October 1998.
414    [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
415               Requirement Levels", RFC 2119, March 1997.
417 5.2.  Informative References
419    [PKIX]  Housley, R., Ford, W., Polk, W., and D. Solo, "Internet X.509
420            Public Key Infrastructure Certificate and Certificate
421            Revocation List (CRL) Profile", RFC 3280, April 2002.
423    [WOT]   Abdul-Rahman, A., "The PGP Trust Model", EDI Forum: The
424            Journal of Electronic Commerce, April 1997.
447 Mavrogiannopoulos       Expires November 16, 2006               [Page 8]
449 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
452 Appendix A.  Acknowledgements
454    This document was based on earlier work made by Will Price and
455    Michael Elkins.
457    The author wishes to thank Werner Koch, David Taylor, Timo Schulz and
458    Pasi Eronen for their suggestions on improving this document.
503 Mavrogiannopoulos       Expires November 16, 2006               [Page 9]
505 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
508 Author's Address
510    Nikos Mavrogiannopoulos
511    Independent
512    Arkadias 8
513    Halandri, Attiki  15234
514    Greece
516    Email: nmav@gnutls.org
517    URI:   http://www.gnutls.org/
559 Mavrogiannopoulos       Expires November 16, 2006              [Page 10]
561 Internet-Draft  Using OpenPGP keys for TLS authentication       May 2006
564 Intellectual Property Statement
566    The IETF takes no position regarding the validity or scope of any
567    Intellectual Property Rights or other rights that might be claimed to
568    pertain to the implementation or use of the technology described in
569    this document or the extent to which any license under such rights
570    might or might not be available; nor does it represent that it has
571    made any independent effort to identify any such rights.  Information
572    on the procedures with respect to rights in RFC documents can be
573    found in BCP 78 and BCP 79.
575    Copies of IPR disclosures made to the IETF Secretariat and any
576    assurances of licenses to be made available, or the result of an
577    attempt made to obtain a general license or permission for the use of
578    such proprietary rights by implementers or users of this
579    specification can be obtained from the IETF on-line IPR repository at
580    http://www.ietf.org/ipr.
582    The IETF invites any interested party to bring to its attention any
583    copyrights, patents or patent applications, or other proprietary
584    rights that may cover technology that may be required to implement
585    this standard.  Please address the information to the IETF at
586    ietf-ipr@ietf.org.
589 Disclaimer of Validity
591    This document and the information contained herein are provided on an
592    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
593    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
594    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
595    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
596    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
597    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
600 Copyright Statement
602    Copyright (C) The Internet Society (2006).  This document is subject
603    to the rights, licenses and restrictions contained in BCP 78, and
604    except as set forth therein, the authors retain all their rights.
607 Acknowledgment
609    Funding for the RFC Editor function is currently provided by the
610    Internet Society.
615 Mavrogiannopoulos       Expires November 16, 2006              [Page 11]