Guile: Fix `x509-certificate-dn-oid' and related functions.
[gnutls.git] / doc / protocol / draft-ietf-tls-openpgp-keys-07.txt
blob39ea78b9216d4f704355ab3e77e40cf547d57eaa
4 TLS Working Group                                   N. Mavrogiannopoulos
5 Internet-Draft                                    Independent Consultant
6 Expires: July 1, 2006                                  December 28, 2005
9                Using OpenPGP keys for TLS authentication
10                      draft-ietf-tls-openpgp-keys-07
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 July 1, 2006.
37 Copyright Notice
39    Copyright (C) The Internet Society (2005).
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 July 1, 2006                  [Page 1]
57 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
60 Table of Contents
62    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
63    2.  Extension Type . . . . . . . . . . . . . . . . . . . . . . . .  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.  Server key exchange  . . . . . . . . . . . . . . . . . . .  8
71      3.7.  Certificate verify . . . . . . . . . . . . . . . . . . . .  8
72      3.8.  Finished . . . . . . . . . . . . . . . . . . . . . . . . .  8
73    4.  Cipher suites  . . . . . . . . . . . . . . . . . . . . . . . .  9
74    5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 10
75    6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
76      6.1.  Normative References . . . . . . . . . . . . . . . . . . . 11
77      6.2.  Informative References . . . . . . . . . . . . . . . . . . 11
78    Appendix A.  Acknowledgements  . . . . . . . . . . . . . . . . . . 12
79    Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13
80    Intellectual Property and Copyright Statements . . . . . . . . . . 14
111 Mavrogiannopoulos         Expires July 1, 2006                  [Page 2]
113 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
116 1.  Introduction
118    At the time of writing, TLS [1] uses the PKIX [4] infrastructure, to
119    provide certificate services.  Currently the PKIX protocols are
120    limited to a hierarchical key management and as a result,
121    applications which follow different - non hierarchical - trust
122    models, like the "web of trust" model, could not be benefited by TLS.
124    OpenPGP keys (sometimes called OpenPGP certificates), provide
125    security services for electronic communications.  They are widely
126    deployed, especially in electronic mail applications, provide public
127    key authentication services, and allow distributed key management.
129    This document will extend the TLS protocol to support OpenPGP keys
130    and trust model using the existing TLS cipher suites.  In brief this
131    would be achieved by adding a negotiation of the certificate type in
132    addition to the normal handshake negotiations.  Then the required
133    modifications to the handshake messages, in order to hold OpenPGP
134    keys as well, will be described.  The the normal handshake procedure
135    with X.509 certificates will not be altered, to preserve
136    compatibility with existing TLS servers and clients.
138    This document uses the same notation used in the TLS Protocol
139    specification.
141    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
142    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
143    document are to be interpreted as described in RFC 2119.
167 Mavrogiannopoulos         Expires July 1, 2006                  [Page 3]
169 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
172 2.  Extension Type
174    A new value, "cert_type(7)", is added to the enumerated
175    ExtensionType, defined in TLSEXT [3].  This value is used as the
176    extension number for the extensions in both the client hello message
177    and the server hello message.  This new extension type will be used
178    for certificate type negotiation.
223 Mavrogiannopoulos         Expires July 1, 2006                  [Page 4]
225 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
228 3.  Changes to the Handshake Message Contents
230    This section describes the changes to the TLS handshake message
231    contents when OpenPGP keys are to be used for authentication.
233 3.1.  Client Hello
235    In order to indicate the support of multiple certificate types
236    clients will include an extension of type "cert_type" to the extended
237    client hello message.  The hello extension mechanism is described in
238    TLSEXT [3].
240    This extension carries a list of supported certificate types the
241    client can use, sorted by client preference.  This extension MAY be
242    omitted if the client only supports X.509 certificates.  The
243    "extension_data" field of this extension will contain 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 3.2.  Server Hello
262    Servers that receive an extended client hello containing the
263    "cert_type" extension, and have chosen a cipher suite that supports
264    certificates, then they MUST select a certificate type from the
265    certificate_types field in the extended client hello, or terminate
266    the connection with a fatal alert of type "unsupported_certificate".
268    The certificate type selected by the server, is encoded in a
269    CertificateTypeExtension structure, which is included in the extended
270    server hello message, using an extension of type "cert_type".
271    Servers that only support X.509 certificates MAY omit including the
272    "cert_type" extension in the extended server hello.
279 Mavrogiannopoulos         Expires July 1, 2006                  [Page 5]
281 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
284 3.3.  Server Certificate
286    The contents of the certificate message sent from server to client
287    and vice versa are determined by the negotiated certificate type and
288    the selected cipher suite's key exchange algorithm.
290    If the OpenPGP certificate type is negotiated then it is required to
291    present an OpenPGP key in the Certificate message.  The OpenPGP key
292    must contain a public key that matches the selected key exchange
293    algorithm, as shown below.
296       Key Exchange Algorithm  OpenPGP Key Type
298       RSA                     RSA public key which can be used for
299                               encryption.
301       DHE_DSS                 DSS public key.
303       DHE_RSA                 RSA public key which can be used for
304                               signing.
306    An OpenPGP public key appearing in the Certificate message will be
307    sent using the binary OpenPGP format.  The term public key is used to
308    describe a composition of OpenPGP packets to form a block of data
309    which contains all information needed by the peer.  This includes
310    public key packets, user ID packets and all the fields described in
311    "Transferable Public Keys" section in OpenPGP [2].
313    The option is also available to send an OpenPGP fingerprint, instead
314    of sending the entire key.  The process of fingerprint generation is
315    described in OpenPGP [2].  The peer shall respond with a
316    "certificate_unobtainable" fatal alert if the key with the given key
317    fingerprint cannot be found.  The "certificate_unobtainable" fatal
318    alert is defined in section 4 of TLSEXT [3].
320    If the key is not valid, expired, revoked, corrupt, the appropriate
321    fatal alert message is sent from section A.3 of the TLS
322    specification.  If a key is valid and neither expired nor revoked, it
323    is accepted by the protocol.  The key validation procedure is a local
324    matter outside the scope of this document.
335 Mavrogiannopoulos         Expires July 1, 2006                  [Page 6]
337 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
340       enum {
341            key_fingerprint (0), key (1), (255)
342       } PGPKeyDescriptorType;
344       opaque PGPKeyFingerprint<16..20>;
346       opaque PGPKey<0..2^24-1>;
348       struct {
349            PGPKeyDescriptorType descriptorType;
350            select (descriptorType) {
351                 case key_fingerprint: PGPKeyFingerprint;
352                 case key: PGPKey;
353            }
354       } Certificate;
356 3.4.  Certificate request
358    The semantics of this message remain the same as in the TLS
359    specification.  However the structure of this message has been
360    modified for OpenPGP keys.  The PGPCertificateRequest structure will
361    only be used if the negotiated certificate type is OpenPGP.
364       enum {
365           rsa_sign(1), dss_sign(2), (255)
366       } ClientCertificateParamsType;
368       struct {
369           ClientCertificateParamsType certificate_params_types<1..2^8-1>;
370       } PGPCertificateRequest;
372    The certificate_params_types is a list of accepted client certificate
373    parameter types, sorted in order of the server's preference.
375 3.5.  Client certificate
377    This message is only sent in response to the certificate request
378    message.  The client certificate message is sent using the same
379    formatting as the server certificate message and it is also required
380    to present a certificate that matches the negotiated certificate
381    type.  If OpenPGP keys have been selected, and no key is available
382    from the client, then a Certificate that contains an empty PGPKey
383    should be sent.  The server may respond with a "handshake_failure"
384    fatal alert if client authentication is required.  This transaction
385    follows the TLS specification.
391 Mavrogiannopoulos         Expires July 1, 2006                  [Page 7]
393 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
396 3.6.  Server key exchange
398    The server key exchange message for OpenPGP keys is identical to the
399    TLS specification.
401 3.7.  Certificate verify
403    The certificate verify message for OpenPGP keys is identical to the
404    TLS specification.
406 3.8.  Finished
408    The finished message for OpenPGP keys is identical to the description
409    in the specification.
447 Mavrogiannopoulos         Expires July 1, 2006                  [Page 8]
449 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
452 4.  Cipher suites
454    No new cipher suites are required to use OpenPGP keys.  OpenPGP keys
455    can be combined with existing cipher suites defined in TLS [1],
456    except the ones marked as "Exportable".  Exportable cipher suites
457    SHOULD NOT be used with OpenPGP keys.
503 Mavrogiannopoulos         Expires July 1, 2006                  [Page 9]
505 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
508 5.  Security Considerations
510    As with X.509 ASN.1 formatted keys, OpenPGP keys need specialized
511    parsers.  Care must be taken to make those parsers safe against
512    maliciously modified keys, that could cause arbitrary code execution.
514    Security considerations about the use of the web of trust or the
515    verification procedure are outside the scope of this document and
516    they are considered an issue to be handled by local policy.
559 Mavrogiannopoulos         Expires July 1, 2006                 [Page 10]
561 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
564 6.  References
566 6.1.  Normative References
568    [1]  Dierks, T. and C. Allen, "The TLS Protocol", RFC 2246,
569         January 1999.
571    [2]  Callas, J., Donnerhacke, L., Finey, H., and R. Thayer, "OpenPGP
572         Message Format", RFC 2440, November 1998.
574    [3]  Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and
575         T. Wright, "TLS Extensions", RFC 3546, June 2003.
577 6.2.  Informative References
579    [4]  Housley, R., Ford, W., Polk, W., and D. Solo, "Internet X.509
580         Public Key Infrastructure Certificate and Certificate Revocation
581         List (CRL) Profile", RFC 3280, April 2002.
583    [5]  "Recommendation X.509: The Directory - Authentication
584         Framework", 1988.
615 Mavrogiannopoulos         Expires July 1, 2006                 [Page 11]
617 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
620 Appendix A.  Acknowledgements
622    The author wishes to thank Werner Koch, David Taylor and Timo Schulz
623    for their suggestions on improving this document.
671 Mavrogiannopoulos         Expires July 1, 2006                 [Page 12]
673 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
676 Author's Address
678    Nikos Mavrogiannopoulos
679    Independent Consultant
680    Arkadias 8
681    Halandri, Attiki  15234
682    Greece
684    Email: nmav@gnutls.org
685    URI:   http://www.gnutls.org/
727 Mavrogiannopoulos         Expires July 1, 2006                 [Page 13]
729 Internet-Draft  Using OpenPGP keys for TLS authentication  December 2005
732 Intellectual Property Statement
734    The IETF takes no position regarding the validity or scope of any
735    Intellectual Property Rights or other rights that might be claimed to
736    pertain to the implementation or use of the technology described in
737    this document or the extent to which any license under such rights
738    might or might not be available; nor does it represent that it has
739    made any independent effort to identify any such rights.  Information
740    on the procedures with respect to rights in RFC documents can be
741    found in BCP 78 and BCP 79.
743    Copies of IPR disclosures made to the IETF Secretariat and any
744    assurances of licenses to be made available, or the result of an
745    attempt made to obtain a general license or permission for the use of
746    such proprietary rights by implementers or users of this
747    specification can be obtained from the IETF on-line IPR repository at
748    http://www.ietf.org/ipr.
750    The IETF invites any interested party to bring to its attention any
751    copyrights, patents or patent applications, or other proprietary
752    rights that may cover technology that may be required to implement
753    this standard.  Please address the information to the IETF at
754    ietf-ipr@ietf.org.
757 Disclaimer of Validity
759    This document and the information contained herein are provided on an
760    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
761    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
762    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
763    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
764    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
765    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
768 Copyright Statement
770    Copyright (C) The Internet Society (2005).  This document is subject
771    to the rights, licenses and restrictions contained in BCP 78, and
772    except as set forth therein, the authors retain all their rights.
775 Acknowledgment
777    Funding for the RFC Editor function is currently provided by the
778    Internet Society.
783 Mavrogiannopoulos         Expires July 1, 2006                 [Page 14]