add an invalid protection level to the enum
[heimdal.git] / doc / standardisation / draft-ietf-kitten-gssapi-channel-bindings-00.txt
blobb7bcc7c5eac754d4d20bb8074b5433be419e3d3b
2 KITTEN WG                                                    N. Williams
3 Internet-Draft                                                       Sun
4 Expires: December 30, 2004                                     July 2004
7   Clarifications and Extensions to the GSS-API for the Use of Channel
8                                 Bindings
9             draft-ietf-kitten-gssapi-channel-bindings-00.txt
11 Status of this Memo
13    By submitting this Internet-Draft, I certify that any applicable
14    patent or other IPR claims of which I am aware have been disclosed,
15    and any of which I become aware will be disclosed, in accordance with
16    RFC 3668.
18    Internet-Drafts are working documents of the Internet Engineering
19    Task Force (IETF), its areas, and its working groups.  Note that
20    other groups may also distribute working documents as
21    Internet-Drafts.
23    Internet-Drafts are draft documents valid for a maximum of six months
24    and may be updated, replaced, or obsoleted by other documents at any
25    time.  It is inappropriate to use Internet-Drafts as reference
26    material or to cite them other than as "work in progress."
28    The list of current Internet-Drafts can be accessed at
29    http://www.ietf.org/ietf/1id-abstracts.txt.
31    The list of Internet-Draft Shadow Directories can be accessed at
32    http://www.ietf.org/shadow.html.
34    This Internet-Draft will expire on December 30, 2004.
36 Copyright Notice
38    Copyright (C) The Internet Society (2004).  All Rights Reserved.
40 Abstract
42    This document clarifies and generalizes the GSS-API "channel
43    bindings" facility.  This document also specifies the format of the
44    various types of channel bindings.
54 Williams               Expires December 30, 2004                [Page 1]
56 Internet-Draft          GSS-API Channel Bindings               July 2004
59 Table of Contents
61    1.  Conventions used in this document  . . . . . . . . . . . . . .  3
62    2.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
63    3.  Generic Structure for GSS-API Channel Bindings . . . . . . . .  5
64      3.1   Proper Mechanism Use of Channel Bindings . . . . . . . . .  5
65    4.  Channel Bindings for SSHv2 . . . . . . . . . . . . . . . . . .  6
66      4.1   GSS_Make_sshv2_channel_bindings()  . . . . . . . . . . . .  6
67        4.1.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . .  6
68    5.  Channel Bindings for TLS . . . . . . . . . . . . . . . . . . .  7
69      5.1   GSS_Make_tls_channel_bindings()  . . . . . . . . . . . . .  7
70        5.1.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . .  7
71    6.  Channel Bindings for IPsec . . . . . . . . . . . . . . . . . .  8
72      6.1   GSS_Make_ipsec_channel_bindings()  . . . . . . . . . . . .  8
73        6.1.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . .  9
74    7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 10
75    8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
76    8.1   Normative  . . . . . . . . . . . . . . . . . . . . . . . . . 11
77    8.2   Informative  . . . . . . . . . . . . . . . . . . . . . . . . 11
78        Author's Address . . . . . . . . . . . . . . . . . . . . . . . 12
79    A.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 13
80        Intellectual Property and Copyright Statements . . . . . . . . 14
110 Williams               Expires December 30, 2004                [Page 2]
112 Internet-Draft          GSS-API Channel Bindings               July 2004
115 1.  Conventions used in this document
117    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
118    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
119    document are to be interpreted as described in [RFC2119].
166 Williams               Expires December 30, 2004                [Page 3]
168 Internet-Draft          GSS-API Channel Bindings               July 2004
171 2.  Introduction
173    The concept of "channel bindings" and the abstract construction of
174    channel bindings for several types of channels are described in
175    [CHANNEL-BINDINGS]
177    To actually use channel bindings in GSS-API aplications additional
178    details are required that are given below.
180    First the structure given to channel bindings data in [RFC2744] is
181    generalized to all of the GSS-API, not just its C-Bindings.
183    Then the actual construction of channel bindings to SSHv2, TLS and
184    IPsec channels is given.
222 Williams               Expires December 30, 2004                [Page 4]
224 Internet-Draft          GSS-API Channel Bindings               July 2004
227 3.  Generic Structure for GSS-API Channel Bindings
229    The base GSS-API v2, update 1 specification [RFC2743]describes
230    channel bindings as an OCTET STRING and leaves it to the GSS-API v2,
231    update 1 C-Bindings specification to specify the structure of the
232    contents of the channel bindings OCTET STRINGs.  The C-Bindings
233    specification [RFC2744]then defines, in terms of C, what should be
234    generic structure for channel bindings.  The Kerberos V GSS mechanism
235    [RFC1964]then defines a method for encoding GSS channel bindings in a
236    way that is independent of the C-Bindings!
238    In other words, the structure of GSS channel bindings given in
239    [RFC2744] is actually generic, rather than specific to the C
240    programming language.
242    Here, then, is a generic re-statement of this structure, in
243    pseudo-ASN.1:
245                 GSS-CHANNEL-BINDINGS := SEQUENCE {
246                         initiator-address-type  INTEGER,
247                         initiator-address       OCTET STRING,
248                         acceptor-address-type   INTEGER,
249                         acceptor-address        OCTET STRING,
250                         application-data        OCTET STRING,
251                 }
253    The values for the address fields are described in [RFC2744].
255    Language-specific bindings of the GSS-API should specify a
256    language-specific formulation of this structure.
258 3.1  Proper Mechanism Use of Channel Bindings
260    As described in [CHANNEL-BINDINGS], GSS mechanisms should exchange
261    integrity protected proofs of channel bindings, where the proof is
262    obtained by running a strong hash of the channel bindings data
263    (encoded as per some mechanism-specific, such as in [RFC1964]) and a
264    binary value to represent the initiator->acceptor, and opposite,
265    direction.
267    The encoding of channel bindings used in [RFC1964], with the addition
268    of a binary value as described above, and the substitution of SHA-1
269    for MD5 is a reasonable, generic encoding of GSS-CHANNEL-BINDINGS
270    that any future GSS mechanisms can use.
278 Williams               Expires December 30, 2004                [Page 5]
280 Internet-Draft          GSS-API Channel Bindings               July 2004
283 4.  Channel Bindings for SSHv2
285    The SSHv2 channel bindings are constructed as an octet string for the
286    'application-data' field of the channel bindings by concatenating the
287    following values and in this order:
289    1.  The ASCII string "GSS SSHv2 CB:"
290    2.  The SSHv2 session ID
291    3.  Any additional application-provided data, encoded as the DER
292        encoding of an ASN.1 OCTET STRING
294 4.1  GSS_Make_sshv2_channel_bindings()
296    Inputs:
298    o  session_id OCTET STRING,
299    o  additional_app_data OCTET STRING
301    Outputs:
303    o  major_status INTEGER,
304    o  minor_status INTEGER,
305    o  channel_bindings_app_data OCTET STRING
307    Return major_status codes:
308    o  GSS_S_COMPLETE indicates no error.
309    o  GSS_S_FAILURE indicates failure to construct the channel bindings
310       as a result, perhaps, of a memory management, or similar failure.
312    This function constructs an OCTET STRING for use as the value of the
313    application-data field of the GSS-CHANNEL-BINDINGS structure
314    described above.
316 4.1.1  C-Bindings
318    OM_uint32 gss_make_sshv2_channel_bindings(
319      OM_uint32                  *minor_status,
320      const gss_buffer_t         session_id,
321      const gss_buffer_t         additional_app_data,
322      gss_buffer_t            channel_bindings_app_data
323    );
334 Williams               Expires December 30, 2004                [Page 6]
336 Internet-Draft          GSS-API Channel Bindings               July 2004
339 5.  Channel Bindings for TLS
341    The TLS channel bindings are constructed as an octet string for the
342    'application-data' field of the channel bindings by concatenating the
343    following values and in this order:
345    1.  The ASCII string "GSS TLSv1.0 CB:"
346    2.  The TLS finished message sent by the client
347    3.  The TLS finished message sent by the server
348    4.  Any additional application-provided data, encoded as the DER
349        encoding of an ASN.1 OCTET STRING
351 5.1  GSS_Make_tls_channel_bindings()
353    Inputs:
355    o  client_finished_msg OCTET STRING,
356    o  server_finished_msg OCTET STRING,
357    o  additional_app_data OCTET STRING
359    Outputs:
361    o  major_status INTEGER,
362    o  minor_status INTEGER,
363    o  channel_bindings_app_data OCTET STRING
365    Return major_status codes:
366    o  GSS_S_COMPLETE indicates no error.
367    o  GSS_S_FAILURE indicates failure to construct the channel bindings
368       as a result, perhaps, of a memory management, or similar failure.
370    This function constructs an OCTET STRING for use as the value of the
371    application-data field of the GSS-CHANNEL-BINDINGS structure
372    described above.
374 5.1.1  C-Bindings
376    OM_uint32 gss_make_tls_channel_bindings(
377      OM_uint32                  *minor_status,
378      const gss_buffer_t         client_finished_msg,
379      const gss_buffer_t         server_finished_msg,
380      const gss_buffer_t         additional_app_data,
381      gss_buffer_t               channel_bindings_app_data
382    );
390 Williams               Expires December 30, 2004                [Page 7]
392 Internet-Draft          GSS-API Channel Bindings               July 2004
395 6.  Channel Bindings for IPsec
397    The IPsec channel bindings are constructed as an octet string for the
398    'application-data' field of the channel bindings by concatenating the
399    following values and in this order:
401    1.  The ASCII string "GSS IPsec CB:"
402    2.  The transform ID for encryption, as a 16-bit big-endian word
403    3.  The transform ID for integrity protection, as 16-bit in
404        big-endian word
405    4.  The initiator ID payload as used in the key exchange protocol
406        used for setting up the channel's SAs
407    5.  The responder ID payload as used in the key exchange protocol
408        used for setting up the channel's SAs
409    6.  Any additional application-provided data, encoded as the DER
410        encoding of an ASN.1 OCTET STRING
412    Note that traffic selectors are not included.  Inclusion of
413    confidentiality/integrity algorithms protects against MITMs that can
414    compromise weaker algorithms that policy might permit, for the same
415    peers, for other traffic.
417 6.1  GSS_Make_ipsec_channel_bindings()
419    Inputs:
421    o  encr_alg INTEGER,
422    o  integ_alg INTEGER,
423    o  initiator_id OCTET_STRING,
424    o  acceptor_id OCTET_STRING,
425    o  additional_app_data OCTET STRING
427    Outputs:
429    o  major_status INTEGER,
430    o  minor_status INTEGER,
431    o  channel_bindings_app_data OCTET STRING
433    Return major_status codes:
434    o  GSS_S_COMPLETE indicates no error.
435    o  GSS_S_FAILURE indicates failure to construct the channel bindings
436       as a result, perhaps, of a memory management, or similar failure.
438    This function constructs an OCTET STRING for use as the value of the
439    application-data field of the GSS-CHANNEL-BINDINGS structure
440    described above.
446 Williams               Expires December 30, 2004                [Page 8]
448 Internet-Draft          GSS-API Channel Bindings               July 2004
451 6.1.1  C-Bindings
453    OM_uint32 gss_make_ipsec_channel_bindings(
454      OM_uint32                  *minor_status,
455      OM_uint32                  encr_alg,
456      OM_uint32                  integ_alg,
457      const gss_buffer_t         initiator_id,
458      const gss_buffer_t         acceptor_id,
459      const gss_buffer_t         additional_app_data,
460      gss_buffer_t               channel_bindings_app_data
461    );
502 Williams               Expires December 30, 2004                [Page 9]
504 Internet-Draft          GSS-API Channel Bindings               July 2004
507 7.  Security Considerations
509    For general security considerations relating to channel bindings see
510    [CHANNEL-BINDINGS]
558 Williams               Expires December 30, 2004               [Page 10]
560 Internet-Draft          GSS-API Channel Bindings               July 2004
563 8.  References
565 8.1  Normative
567    [RFC1964]  Linn, J., "The Kerberos Version 5 GSS-API Mechanism", RFC
568               1964, June 1996.
570    [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
571               Requirement Levels", BCP 14, RFC 2119, March 1997.
573    [RFC2743]  Linn, J., "Generic Security Service Application Program
574               Interface Version 2, Update 1", RFC 2743, January 2000.
576    [RFC2744]  Wray, J., "Generic Security Service API Version 2 :
577               C-bindings", RFC 2744, January 2000.
579 8.2  Informative
581    [RFC0854]  Postel, J. and J. Reynolds, "Telnet Protocol
582               Specification", STD 8, RFC 854, May 1983.
584    [RFC1035]  Mockapetris, P., "Domain names - implementation and
585               specification", STD 13, RFC 1035, November 1987.
587    [RFC2025]  Adams, C., "The Simple Public-Key GSS-API Mechanism
588               (SPKM)", RFC 2025, October 1996.
590    [RFC2203]  Eisler, M., Chiu, A. and L. Ling, "RPCSEC_GSS Protocol
591               Specification", RFC 2203, September 1997.
593    [RFC2478]  Baize, E. and D. Pinkas, "The Simple and Protected GSS-API
594               Negotiation Mechanism", RFC 2478, December 1998.
596    [RFC2623]  Eisler, M., "NFS Version 2 and Version 3 Security Issues
597               and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5",
598               RFC 2623, June 1999.
600    [RFC3530]  Shepler, S., Callaghan, B., Robinson, D., Thurlow, R.,
601               Beame, C., Eisler, M. and D. Noveck, "Network File System
602               (NFS) version 4 Protocol", RFC 3530, April 2003.
614 Williams               Expires December 30, 2004               [Page 11]
616 Internet-Draft          GSS-API Channel Bindings               July 2004
619 Author's Address
621    Nicolas Williams
622    Sun Microsystems
623    5300 Riata Trace Ct
624    Austin, TX  78727
625    US
627    EMail: Nicolas.Williams@sun.com
670 Williams               Expires December 30, 2004               [Page 12]
672 Internet-Draft          GSS-API Channel Bindings               July 2004
675 Appendix A.  Acknowledgments
677    The author would like to thank Mike Eisler for his work on the
678    Channel Conjunction Mechanism I-D and for bringing the problem to a
679    head, Sam Hartman for pointing out that channel bindings provide a
680    general solution to the channel binding problem, Jeff Altman for his
681    suggestion of using the TLS finished messages as the TLS channel
682    bindings, Bill Sommerfeld, for his help in developing channel
683    bindings for IPsec, and Radia Perlman for her most helpful comments.
726 Williams               Expires December 30, 2004               [Page 13]
728 Internet-Draft          GSS-API Channel Bindings               July 2004
731 Intellectual Property Statement
733    The IETF takes no position regarding the validity or scope of any
734    Intellectual Property Rights or other rights that might be claimed to
735    pertain to the implementation or use of the technology described in
736    this document or the extent to which any license under such rights
737    might or might not be available; nor does it represent that it has
738    made any independent effort to identify any such rights.  Information
739    on the procedures with respect to rights in RFC documents can be
740    found in BCP 78 and BCP 79.
742    Copies of IPR disclosures made to the IETF Secretariat and any
743    assurances of licenses to be made available, or the result of an
744    attempt made to obtain a general license or permission for the use of
745    such proprietary rights by implementers or users of this
746    specification can be obtained from the IETF on-line IPR repository at
747    http://www.ietf.org/ipr.
749    The IETF invites any interested party to bring to its attention any
750    copyrights, patents or patent applications, or other proprietary
751    rights that may cover technology that may be required to implement
752    this standard.  Please address the information to the IETF at
753    ietf-ipr@ietf.org.
756 Disclaimer of Validity
758    This document and the information contained herein are provided on an
759    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
760    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
761    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
762    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
763    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
764    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
767 Copyright Statement
769    Copyright (C) The Internet Society (2004).  This document is subject
770    to the rights, licenses and restrictions contained in BCP 78, and
771    except as set forth therein, the authors retain all their rights.
774 Acknowledgment
776    Funding for the RFC Editor function is currently provided by the
777    Internet Society.
782 Williams               Expires December 30, 2004               [Page 14]