the new makeinfo sets the FLOAT_NAME by default.
[gnutls.git] / doc / protocol / draft-ietf-tls-openpgp-keys-10.txt
bloba382b26f980aeebfb136a7b8588fed315db62ff1
4 TLS Working Group                                   N. Mavrogiannopoulos
5 Internet-Draft                                               Independent
6 Expires: December 7, 2006                                   June 5, 2006
9                Using OpenPGP keys for TLS authentication
10                      draft-ietf-tls-openpgp-keys-10
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 December 7, 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 December 7, 2006                [Page 1]
57 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006                [Page 2]
113 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 that support a compatible with the key, key exchange
150    method can be used in combination with OpenPGP keys.
152 2.2.  Server Hello
154    Servers that receive an extended client hello containing the
155    "cert_type" extension, and have chosen a cipher suite that supports
156    certificates, they MUST select a certificate type from the
157    certificate_types field in the extended client hello, or terminate
158    the connection with a fatal alert of type "unsupported_certificate".
160    The certificate type selected by the server, is encoded in a
161    CertificateTypeExtension structure, which is included in the extended
162    server hello message, using an extension of type "cert_type".
163    Servers that only support X.509 certificates MAY omit including the
167 Mavrogiannopoulos       Expires December 7, 2006                [Page 3]
169 Internet-Draft  Using OpenPGP keys for TLS authentication      June 2006
172    "cert_type" extension in the extended server hello.
174 2.3.  Server Certificate
176    The contents of the certificate message sent from server to client
177    and vice versa are determined by the negotiated certificate type and
178    the selected cipher suite's key exchange algorithm.
180    If the OpenPGP certificate type is negotiated then it is required to
181    present an OpenPGP key in the Certificate message.  The OpenPGP key
182    must contain a public key that matches the selected key exchange
183    algorithm, as shown below.
186       Key Exchange Algorithm  OpenPGP Key Type
188       RSA                     RSA public key which can be used for
189                               encryption.
191       DHE_DSS                 DSS public key.
193       DHE_RSA                 RSA public key which can be used for
194                               signing.
196    An OpenPGP public key appearing in the Certificate message will be
197    sent using the binary OpenPGP format.  The term public key is used to
198    describe a composition of OpenPGP packets to form a block of data
199    which contains all information needed by the peer.  This includes
200    public key packets, user ID packets and all the fields described in
201    section 10.1 of [OpenPGP].
203    The option is also available to send an OpenPGP fingerprint, instead
204    of sending the entire key.  The process of fingerprint generation is
205    described in section 11.2 of [OpenPGP].  The peer shall respond with
206    a "certificate_unobtainable" fatal alert if the key with the given
207    key fingerprint cannot be found.  The "certificate_unobtainable"
208    fatal alert is defined in section 4 of [TLSEXT].
210    If the key is not valid, expired, revoked, corrupt, the appropriate
211    fatal alert message is sent from section A.3 of the TLS
212    specification.  If a key is valid and neither expired nor revoked, it
213    is accepted by the protocol.  The key validation procedure is a local
214    matter outside the scope of this document.
223 Mavrogiannopoulos       Expires December 7, 2006                [Page 4]
225 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006                [Page 5]
281 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006                [Page 6]
337 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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    The "cert_type" extension contains an 8-bit CertificateType field,
350    for which a new registry, named "TLS Certificate Types", is
351    established in this document, to be maintained by IANA.  The registry
352    is segmented in the following way:
354    1.  Values 0 (X.509) and 1 (OpenPGP) are defined in this document.
356    2.  Values from 2 through 223 decimal inclusive are assigned via IETF
357        Consensus [RFC2434].
359    3.  Values from 224 decimal through 255 decimal inclusive are
360        reserved for Private Use [RFC2434].
391 Mavrogiannopoulos       Expires December 7, 2006                [Page 7]
393 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006                [Page 8]
449 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006                [Page 9]
505 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006               [Page 10]
561 Internet-Draft  Using OpenPGP keys for TLS authentication      June 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 December 7, 2006               [Page 11]