the new makeinfo sets the FLOAT_NAME by default.
[gnutls.git] / doc / protocol / draft-housley-tls-authz-extns-04.txt
blobd4b4e15d4df880da2e33969640480a7be134d220
5 Internet-Draft                                                  M. Brown
6 April 2006                                             RedPhone Security
7 Expires: October 2006                                         R. Housley
8                                                           Vigil Security
10         Transport Layer Security (TLS) Authorization Extensions
11                  <draft-housley-tls-authz-extns-04.txt>
14 Status of this Memo
16    By submitting this Internet-Draft, each author represents that any
17    applicable patent or other IPR claims of which he or she is aware
18    have been or will be disclosed, and any of which he or she becomes
19    aware will be disclosed, in accordance with Section 6 of BCP 79.
21    Internet-Drafts are working documents of the Internet Engineering
22    Task Force (IETF), its areas, and its working groups.  Note that
23    other groups may also distribute working documents as Internet-
24    Drafts.
26    Internet-Drafts are draft documents valid for a maximum of six months
27    and may be updated, replaced, or obsoleted by other documents at any
28    time.  It is inappropriate to use Internet-Drafts as reference
29    material or to cite them other than as "work in progress."
31    The list of current Internet-Drafts can be accessed at
32    http://www.ietf.org/ietf/1id-abstracts.txt.
34    The list of Internet-Draft Shadow Directories can be accessed at
35    http://www.ietf.org/shadow.html.
37 Copyright Notice
39    Copyright (C) The Internet Society (2006).  All Rights Reserved.
41 Abstract
43    This document specifies authorization extensions to the Transport
44    Layer Security (TLS) Handshake Protocol.  Extensions carried in the
45    client and server hello messages to confirm that both parties support
46    the desired authorization data types.  Then, if supported by both the
47    client and the server, authorization information is exchanged in the
48    supplemental data handshake message.
56 Brown & Housley                                                 [Page 1]
58 Internet-Draft                                                April 2006
61 1. Introduction
63    Transport Layer Security (TLS) protocol [TLS1.0][TLS1.1] is being
64    used in an increasing variety of operational environments, including
65    ones that were not envisioned at the time of the original design for
66    TLS.  The extensions introduced in this document are designed to
67    enable TLS to operate in environments where authorization information
68    needs to be exchanged between the client and the server before any
69    protected data is exchanged.
71    The use of these TLS authorization extensions is especially
72    attractive when more than one application protocol can make use of
73    the same authorization information.  Straightforward binding of
74    identification, authentication, and authorization information is
75    possible when all of these are handled within TLS.  If each
76    application requires unique authorization information, then it might
77    best be carried within the TLS-protected application protocol.
78    However, care must be taken to ensure appropriate bindings when
79    identification, authentication, and authorization information are
80    handled at different protocol layers.
82    This document describes authorization extensions for the TLS
83    Handshake Protocol in both TLS 1.0 and TLS 1.1.  These extensions
84    observe the conventions defined for TLS Extensions [TLSEXT] that make
85    use of the general extension mechanisms for the client hello message
86    and the server hello message.  The extensions described in this
87    document confirm that both the client and the server support the
88    desired authorization data types.  Then, if supported, authorization
89    information is exchanged in the supplemental data handshake message
90    [TLSSUPP].
92    The authorization extensions may be used in conjunction with TLS 1.0
93    and TLS 1.1.  The extensions are designed to be backwards compatible,
94    meaning that the Handshake Protocol Supplemental Data messages will
95    only contain authorization information of a particular type if the
96    client indicates support for them in the client hello message and the
97    server indicates support for them in the server hello message.
99    Clients typically know the context of the TLS session that is being
100    setup, thus the client can use the authorization extensions when they
101    are needed.  Servers must accept extended client hello messages, even
102    if the server does not "understand" the all of the listed extensions.
103    However, the server will not indicate support for these "not
104    understood" extensions.  Then, clients may reject communications with
105    servers that do not support the authorization extensions.
112 Brown & Housley                                                 [Page 2]
114 Internet-Draft                                                April 2006
117 1.1. Conventions
119    The syntax for the authorization messages is defined using the TLS
120    Presentation Language, which is specified in Section 4 of [TLS1.0].
122    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
123    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
124    document are to be interpreted as described in RFC 2119 [STDWORDS].
126 1.2. Overview
128    Figure 1 illustrates the placement of the authorization extensions
129    and supplemental data messages in the full TLS handshake.
131     Client                                                   Server
133     ClientHello (w/ extensions) -------->
135                                         ServerHello (w/ extensions)
136                                                   SupplementalData*
137                                                        Certificate*
138                                                  ServerKeyExchange*
139                                                 CertificateRequest*
140                                 <--------           ServerHelloDone
141     SupplementalData*
142     Certificate*
143     ClientKeyExchange
144     CertificateVerify*
145     [ChangeCipherSpec]
146     Finished                    -------->
147                                                  [ChangeCipherSpec]
148                                 <--------                  Finished
149     Application Data            <------->          Application Data
151      *  Indicates optional or situation-dependent messages that
152         are not always sent.
154      [] Indicates that ChangeCipherSpec is an independent TLS
155         Protocol content type; it is not actually a TLS
156         handshake message.
158         Figure 1. Authorization data exchange in full TLS handshake
161    The ClientHello message includes an indication of the client
162    authorization data formats that are supported and an indication of
163    the server authorization data formats that are supported.  The
164    ServerHello message contains similar indications, but any
168 Brown & Housley                                                 [Page 3]
170 Internet-Draft                                                April 2006
173    authorization data formats that are not supported by the server are
174    not included.  Both the client and the server MUST indicate support
175    for the authorization data types.  If the list of mutually supported
176    authorization data formats is empty, then the ServerHello message
177    MUST NOT carry the affected extension at all.
179 2. Authorization Extension Types
181    The general extension mechanisms enable clients and servers to
182    negotiate whether to use specific extensions, and how to use specific
183    extensions.  As specified in [TLSEXT], the extension format used in
184    the extended client hello message and extended server hello message
185    is repeated here for convenience:
187       struct {
188          ExtensionType extension_type;
189          opaque extension_data<0..2^16-1>;
190       } Extension;
192    The extension_type identifies a particular extension type, and the
193    extension_data contains information specific to the particular
194    extension type.
196    As specified in [TLSEXT], for all extension types, the extension type
197    MUST NOT appear in the extended server hello message unless the same
198    extension type appeared in the corresponding client hello message.
199    Clients MUST abort the handshake if they receive an extension type in
200    the extended server hello message that they did not request in the
201    associated extended client hello message.
203    When multiple extensions of different types are present in the
204    extended client hello message or the extended server hello message,
205    the extensions can appear in any order, but there MUST NOT be more
206    than one extension of the same type.
208    This document specifies the use of two new extension types:
209    client_authz and server_authz.  These extension types are described
210    in Section 2.1 and Section 2.2, respectively.  This specification
211    adds two new types to ExtensionType:
213       enum {
214         client_authz(TBD), server_authz(TBD), (65535)
215       } ExtensionType;
217    The authorization extensions are relevant when a session is initiated
218    and any subsequent session resumption.  However, a client that
219    requests resumption of a session does not know whether the server
220    will have all of the context necessary to accept this request, and
224 Brown & Housley                                                 [Page 4]
226 Internet-Draft                                                April 2006
229    therefore the client SHOULD send an extended client hello message
230    that includes the extension types associated with the authorization
231    extensions.  This way, if the resumption request is denied, then the
232    authorization extensions will be negotiated as normal.
234 2.1. The client_authz Extension Type
236    Clients MUST include the client_authz extension type in the extended
237    client hello message to indicate their desire to send authorization
238    data to the server.  The extension_data field indicates the format of
239    the authorization data that will be sent in the supplemental data
240    handshake message.  The syntax of the client_authz extension_data
241    field is described in Section 2.3.
243    Servers that receive an extended client hello message containing the
244    client_authz extension MUST respond with the same client_authz
245    extension in the extended server hello message if the server is
246    willing to receive authorization data in the indicated format.  Any
247    unacceptable formats must be removed from the list provided by the
248    client.  The client_authz extension MUST be omitted from the extended
249    server hello message if the server is not willing to receive
250    authorization data in any of the indicated formats.
252 2.2. The server_authz Extension Type
254    Clients MUST include the server_authz extension type in the extended
255    client hello message to indicate their desire to receive
256    authorization data from the server.  The extension_data field
257    indicates the format of the authorization data that will be sent in
258    the supplemental data handshake message.  The syntax of the
259    server_authz extension_data field as described in Section 2.3.
261    Servers that receive an extended client hello message containing the
262    server_authz extension MUST respond with the same server_authz
263    extension in the extended server hello message if the server is
264    willing to provide authorization data in the requested format.  Any
265    unacceptable formats must be removed from the list provided by the
266    client.  The server_authz extension MUST be omitted from the extended
267    server hello message if the server is not able to provide
268    authorization data in any of the indicated formats.
280 Brown & Housley                                                 [Page 5]
282 Internet-Draft                                                April 2006
285 2.3. AuthzDataFormat Type
287    The AuthzDataFormat type is used in both the client_authz and the
288    server_authz extensions.  It indicates the format of the
289    authorization data that will be transferred.  The
290    AuthorizationDataFormats type definition is:
292       enum {
293          x509_attr_cert(0), saml_assertion(1), x509_attr_cert_url(2),
294          saml_assertion_url(3), (255)
295       } AuthzDataFormat;
297       AuthorizationDataFormats authz_format_list<1..2^8-1>;
299    When the x509_attr_cert value is present, the authorization data is
300    an X.509 Attribute Certificate (AC) that conforms to the profile in
301    RFC 3281 [ATTRCERT].
303    When the saml_assertion value is present, the authorization data is
304    an assertion composed using the Security Assertion Markup Language
305    (SAML) [SAML1.1][SAML2.0].
307    When the x509_attr_cert_url value is present, the authorization data
308    is an X.509 AC that conforms to the profile in RFC 3281 [ATTRCERT];
309    however, the AC is fetched with the supplied URL.  A one-way hash
310    value is provided to ensure that the intended AC is obtained.
312    When the saml_assertion_url value is present, the authorization data
313    is a SAML Assertion; however, the SAML Assertion is fetched with the
314    supplied URL.  A one-way hash value is provided to ensure that the
315    intended SAML Assertion is obtained.
317 3. Supplemental Data Handshake Message Usage
319    As shown in Figure 1, supplemental data can be exchanges in two
320    places in the handshake protocol.  The client_authz extension
321    determines what authorization data formats are acceptable for
322    transfer from the client to the server, and the server_authz
323    extension determines what authorization data formats are acceptable
324    for transfer from the server to the client.  In both cases, the
325    syntax specified in [TLSSUPP] is used along with the authz_data type
326    defined in this document.
336 Brown & Housley                                                 [Page 6]
338 Internet-Draft                                                April 2006
341       enum {
342          authz_data(TBD), (65535)
343       } SupplementalDataType;
345       struct {
346          SupplementalDataType supplemental_data_type;
347          select(SupplementalDataType) {
348             case authz_data:  AuthorizationData;
349          }
350       } SupplementalData;
352 3.1. Client Authorization Data
354    The SupplementalData message sent from the client to the server
355    contains authorization data associated with the TLS client.
356    Following the principle of least privilege, the client ought to send
357    the minimal set of authorization information necessary to accomplish
358    the task at hand.  That is, only those authorizations that are
359    expected to be required by the server in order to gain access to the
360    needed server resources ought to be included.  The format of the
361    authorization data depends on the format negotiated in the
362    client_authz hello message extension.  The AuthorizationData
363    structure is described in Section 3.3.
365    In some systems, clients present authorization information to the
366    server, and then the server provides new authorization information.
367    This type of transaction is not supported by SupplementalData
368    messages.  In cases where the client intends to request the TLS
369    server to perform authorization translation or expansion services,
370    such translation services ought to occur within the ApplicationData
371    messages, not within the TLS Handshake protocol.
373 3.2. Server Authorization Data
375    The SupplementalData message sent from the server to the client
376    contains authorization data associated with the TLS server.  This
377    authorization information is expected to include statements about the
378    server's qualifications, reputation, accreditation, and so on.
379    Wherever possible, authorizations that can be misappropriated for
380    fraudulent use ought to be avoided.  The format of the authorization
381    data depends on the format negotiated in the server_authz hello
382    message extensions.  The AuthorizationData structure is described in
383    Section 3.3.
392 Brown & Housley                                                 [Page 7]
394 Internet-Draft                                                April 2006
397 3.3. AuthorizationData Type
399    The AuthorizationData structure carried authorization information for
400    either the client or the server.  The AuthzDataFormat specified in
401    Section 2.3 for use in the hello extensions is also used in this
402    structure.
404    All of the entries in the authz_data_list MUST employ authorization
405    data formats that were negotiated in the relevant hello message
406    extension.
408       struct{
409          AuthorizationDataEntry authz_data_list<1..2^16-1>;
410       } AuthorizationData;
412       struct {
413          AuthzDataFormat authz_format;
414          select (AuthzDataFormat) {
415             case x509_attr_cert:     X509AttrCert;
416             case saml_assertion:     SAMLAssertion;
417             case x509_attr_cert_url: URLandHash;
418             case saml_assertion_url: URLandHash;
419          }
420       } AuthorizationDataEntry;
422       enum {
423          x509_attr_cert(0), saml_assertion(1), x509_attr_cert_url(2),
424          saml_assertion_url(3), (255)
425       } AuthzDataFormat;
427       opaque X509AttrCert<1..2^16-1>;
428       opaque SAMLAssertion<1..2^16-1>;
430       struct {
431          opaque url<1..2^16-1>;
432          HashType hash_type;
433          select (hash_type) {
434             case sha1:   SHA1Hash;
435             case sha256: SHA256Hash;
436          } hash;
437       } URLandHash;
439       enum {
440          sha1(0), sha256(1), (255)
441       } HashType;
443       opaque SHA1Hash[20];
444       opaque SHA256Hash[32];
448 Brown & Housley                                                 [Page 8]
450 Internet-Draft                                                April 2006
453 3.3.1. X.509 Attribute Certificate
455    When X509AttrCert is used, the field contains an ASN.1 DER-encoded
456    X.509 Attribute Certificate (AC) that follows the profile in RFC 3281
457    [ATTRCERT].  An AC is a structure similar to a public key certificate
458    (PKC) [PKIX1]; the main difference being that the AC contains no
459    public key.  An AC may contain attributes that specify group
460    membership, role, security clearance, or other authorization
461    information associated with the AC holder.
463    When making an authorization decision based on an AC, proper linkage
464    between the AC holder and the public key certificate that is
465    transferred in the TLS Certificate message is needed.  The AC holder
466    field provides this linkage.  The holder field is a SEQUENCE allowing
467    three different (optional) syntaxes: baseCertificateID, entityName
468    and objectDigestInfo.  In the TLS authorization context, the holder
469    field MUST use the either baseCertificateID or entityName.  In the
470    baseCertificateID case, the baseCertificateID field MUST match the
471    issuer and serialNumber fields in the certificate.  In the entityName
472    case, the entityName MUST be the same as the subject field in the
473    certificate or one of the subjectAltName extension values in the
474    certificate.  Note that [PKIX1] mandates that the subjectAltName
475    extension be present if the subject field contains an empty
476    distinguished name.
478 3.3.2. SAML Assertion
480    When SAMLAssertion is used, the field contains XML constructs with a
481    nested structure defined in [SAML1.1][SAML2.0].  SAML is an XML-based
482    framework for exchanging security information.  This security
483    information is expressed in the form of assertions about subjects,
484    where a subject is either human or computer with an identity.  In
485    this context, the SAML assertions are most likely to convey
486    authentication or attribute statements to be used as input to
487    authorization policy governing whether subjects are allowed to access
488    certain resources.  Assertions are issued by SAML authorities.
490    When making an authorization decision based on a SAML assertion,
491    proper linkage between the SAML assertion and the public key
492    certificate that is transferred in the TLS Certificate message may be
493    needed.  A "Holder of Key" subject confirmation method in the SAML
494    assertion can provide this linkage.  In other scenarios, it may be
495    acceptable to use alternate confirmation methods that do not provide
496    a strong binding, such as a bearer mechanism.  SAML assertion
497    recipients MUST decide which subject confirmation methods are
498    acceptable; such decisions MAY be specific to the SAML assertion
499    contents and the TLS session context.
504 Brown & Housley                                                 [Page 9]
506 Internet-Draft                                                April 2006
509    There is no general requirement that the subject of the SAML
510    assertion correspond directly to the subject of the certificate.
511    They may represent the same or different entities.  When they are
512    different, SAML also provides a mechanism by which the certificate
513    subject can be identified separately from the subject in the SAML
514    assertion subject confirmation method.
516    Since the SAML assertion is being provided at a part of the TLS
517    Handshake that is unencrypted, an eavesdropper could replay the same
518    SAML assertion when they establish their own TLS session.  This is
519    especially important when a bearer mechanism is employed, the
520    recipient of the SAML assertion assumes that the sender is an
521    acceptable attesting entity for the SAML assertion.  Some constraints
522    may be included to limit the context where the bearer mechanism will
523    be accepted.  For example, the period of time that the SAML assertion
524    can be short-lived (often minutes), the source address can be
525    constrained, or the destination endpoint can be identified.  Also,
526    bearer assertions are often checked against a cache of SAML assertion
527    unique identifiers that were recently received in order to detect
528    replay.  This is an appropriate countermeasure if the bearer
529    assertion is intended to be used just once.  Section 5 provides a way
530    to protect authorization information when necessary.
532 3.3.3. URL and Hash
534    Since the X.509 AC and SAML assertion can be large, alternatives
535    provide a URL to obtain the ASN.1 DER-encoded X.509 AC or SAML
536    Assertion.  To ensure that the intended object is obtained, a one-way
537    hash value of the object is also included.  Integrity of this one-way
538    hash value is provided by the TLS Finished message.
540    Implementations that support either x509_attr_cert_url or
541    saml_assertion_url MUST support URLs that employ the http scheme.
542    Other schemes may also be supported; however, to avoid circular
543    dependencies, supported schemes SHOULD NOT themselves make use of
544    TLS, such as the https scheme.
546    Implementations that support either x509_attr_cert_url or
547    saml_assertion_url MUST support both SHA-1 [SHA1] and SHA-256 [SHA2]
548    as one-way hash functions.  Other one-way hash functions may also be
549    supported.  Additional one-way hash functions can be registered in
550    the future using the procedures in section 3.
552 4. IANA Considerations
554    This document defines a two TLS extensions: client_authz(TBD) and
555    server_authz(TBD).  These extension type values are assigned from the
556    TLS Extension Type registry defined in [TLSEXT].
560 Brown & Housley                                                [Page 10]
562 Internet-Draft                                                April 2006
565    This document defines one TLS supplemental data type:
566    authz_data(TBD).  This supplemental data type is assigned from the
567    TLS Supplemental Data Type registry defined in [TLSSUPP].
569    This document establishes a new registry, to be maintained by IANA,
570    for TLS Authorization Data Formats.  The first four entries in the
571    registry are x509_attr_cert(0), saml_assertion(1),
572    x509_attr_cert_url(2), and saml_assertion_url(3).  TLS Authorization
573    Data Format identifiers with values in the inclusive range 0-63
574    (decimal) are assigned via RFC 2434 [IANA] Standards Action.  Values
575    from the inclusive range 64-223 (decimal) are assigned via RFC 2434
576    Specification Required.  Values from the inclusive range 224-255
577    (decimal) are reserved for RFC 2434 Private Use.
579    This document establishes a new registry, to be maintained by IANA,
580    for TLS Hash Types.  The first two entries in the registry are
581    sha1(0) and sha256(1).  TLS Hash Type identifiers with values in the
582    inclusive range 0-158 (decimal) are assigned via RFC 2434 [IANA]
583    Standards Action.  Values from the inclusive range 159-223 (decimal)
584    are assigned via RFC 2434 Specification Required.  Values from the
585    inclusive range 224-255 (decimal) are reserved for RFC 2434 Private
586    Use.
588 5. Security Considerations
590    A TLS server can support more than one application, and each
591    application may include several features, each of which requires
592    separate authorization checks.  This is the reason that more than one
593    piece of authorization information can be provided.
595    A TLS server that requires different authorization information for
596    different applications or different application features may find
597    that a client has provided sufficient authorization information to
598    grant access to a subset of these offerings.  In this situation the
599    TLS Handshake protocol will complete successfully; however, the
600    server must ensure that the client will only be able to use the
601    appropriate applications and application features.  That is, the TLS
602    server must deny access to the applications and application features
603    for which authorization has not been confirmed.
605    In many cases, the authorization information is itself sensitive.
606    The double handshake technique can be used to provide protection for
607    the authorization information.  Figure 2 illustrates the double
608    handshake, where the initial handshake does not include any
609    authorization extensions, but it does result in protected
610    communications.  Then, a second handshake that includes the
611    authorization information is performed using the protected
612    communications.  In Figure 2, the number on the right side indicates
616 Brown & Housley                                                [Page 11]
618 Internet-Draft                                                April 2006
621    the amount of protection for the TLS message on that line.  A zero
622    (0) indicates that there is no communication protection; a one (1)
623    indicates that protection is provided by the first TLS session; and a
624    two (2) indicates that protection is provided by both TLS sessions.
626    The placement of the SupplementalData message in the TLS Handshake
627    results in the server providing its authorization information before
628    the client is authenticated.  In many situations, servers will not
629    want to provide authorization information until the client is
630    authenticated.  The double handshake illustrated in Figure 2 provides
631    a technique to ensure that the parties are mutually authenticated
632    before either party provides authorization information.
635     Client                                                   Server
637     ClientHello (no extensions) -------->                            |0
638                                         ServerHello (no extensions)  |0
639                                                        Certificate*  |0
640                                                  ServerKeyExchange*  |0
641                                                 CertificateRequest*  |0
642                                 <--------           ServerHelloDone  |0
643     Certificate*                                                     |0
644     ClientKeyExchange                                                |0
645     CertificateVerify*                                               |0
646     [ChangeCipherSpec]                                               |0
647     Finished                    -------->                            |1
648                                                  [ChangeCipherSpec]  |0
649                                 <--------                  Finished  |1
650     ClientHello (w/ extensions) -------->                            |1
651                                         ServerHello (w/ extensions)  |1
652                                   SupplementalData (w/ authz data)*  |1
653                                                        Certificate*  |1
654                                                  ServerKeyExchange*  |1
655                                                 CertificateRequest*  |1
656                                 <--------           ServerHelloDone  |1
657     SupplementalData (w/ authz data)*                                |1
658     Certificate*                                                     |1
659     ClientKeyExchange                                                |1
660     CertificateVerify*                                               |1
661     [ChangeCipherSpec]                                               |1
662     Finished                    -------->                            |2
663                                                  [ChangeCipherSpec]  |1
664                                 <--------                  Finished  |2
665     Application Data            <------->          Application Data  |2
667          Figure 2. Double Handshake to Protect Authorization Data
672 Brown & Housley                                                [Page 12]
674 Internet-Draft                                                April 2006
677 6. Acknowledgement
679    The authors thank Scott Cantor for his assistance with the SAML
680    Assertion portion of the document.
682 7. Normative References
684    [ATTRCERT]   Farrell, S., and R. Housley, "An Internet Attribute
685                 Certificate Profile for Authorization", RFC 3281,
686                 April 2002.
688    [IANA]       Narten, T., and H. Alvestrand, "Guidelines for Writing
689                 an IANA Considerations Section in RFCs", RFC 3434,
690                 October 1998.
692    [PKIX1]      Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
693                 X.509 Public Key Infrastructure Certificate and
694                 Certificate Revocation List (CRL) Profile", RFC 3280,
695                 April 2002.
697    [TLS1.0]     Dierks, T., and C. Allen, "The TLS Protocol, Version 1.0",
698                 RFC 2246, January 1999.
700    [TLS1.1]     Dierks, T., and E. Rescorla, "The Transport Layer Security
701                 (TLS) Protocol, Version 1.1", RFC 4346, February 2006.
703    [TLSEXT]     Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
704                 and T. Wright, "Transport Layer Security (TLS) Extensions",
705                 RFC 3546, June 2003.
707    [TLSSUPP]    Santesson, S., " TLS Handshake Message for Supplemental
708                 Data", work in progress: draft-santesson-tls-supp,
709                 March 2006.
711    [SAML1.1]    OASIS Security Services Technical Committee, "Security
712                 Assertion Markup Language (SAML) Version 1.1
713                 Specification Set", September 2003.
715    [SAML2.0]    OASIS Security Services Technical Committee, "Security
716                 Assertion Markup Language (SAML) Version 2.0
717                 Specification Set", March2005.
719    [SHA1]       National Institute of Standards and Technology (NIST),
720                 FIPS PUB 180-1, Secure Hash Standard, 17 April 1995.
722    [SHA2]       National Institute of Standards and Technology (NIST),
723                 FIPS PUB 180-2: Secure Hash Standard, 1 August 2002.
728 Brown & Housley                                                [Page 13]
730 Internet-Draft                                                April 2006
733    [STDWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
734                 Requirement Levels", BCP 14, RFC 2119, March 1997.
736 Author's Address
738    Mark Brown
739    RedPhone Security
740    2019 Palace Avenue
741    Saint Paul, MN  55105
742    USA
743    mark <at> redphonesecurity <dot> com
745    Russell Housley
746    Vigil Security, LLC
747    918 Spring Knoll Drive
748    Herndon, VA 20170
749    USA
750    housley <at> vigilsec <dot> com
752 Full Copyright Statement
754    Copyright (C) The Internet Society (2006). This document is subject
755    to the rights, licenses and restrictions contained in BCP 78, and
756    except as set forth therein, the authors retain all their rights.
758    This document and translations of it may be copied and furnished to
759    others, and derivative works that comment on or otherwise explain it
760    or assist in its implementation may be prepared, copied, published
761    and distributed, in whole or in part, without restriction of any
762    kind, provided that the above copyright notice and this paragraph are
763    included on all such copies and derivative works. However, this
764    document itself may not be modified in any way, such as by removing
765    the copyright notice or references to the Internet Society or other
766    Internet organizations, except as needed for the purpose of
767    developing Internet standards in which case the procedures for
768    copyrights defined in the Internet Standards process must be
769    followed, or as required to translate it into languages other than
770    English.
772    This document and the information contained herein are provided on an
773    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
774    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
775    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
776    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
777    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
778    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
784 Brown & Housley                                                [Page 14]
786 Internet-Draft                                                April 2006
789    The IETF takes no position regarding the validity or scope of any
790    Intellectual Property Rights or other rights that might be claimed to
791    pertain to the implementation or use of the technology described in
792    this document or the extent to which any license under such rights
793    might or might not be available; nor does it represent that it has
794    made any independent effort to identify any such rights.  Information
795    on the procedures with respect to rights in RFC documents can be
796    found in BCP 78 and BCP 79.
798    Copies of IPR disclosures made to the IETF Secretariat and any
799    assurances of licenses to be made available, or the result of an
800    attempt made to obtain a general license or permission for the use of
801    such proprietary rights by implementers or users of this
802    specification can be obtained from the IETF on-line IPR repository at
803    http://www.ietf.org/ipr.
805    The IETF invites any interested party to bring to its attention any
806    copyrights, patents or patent applications, or other proprietary
807    rights that may cover technology that may be required to implement
808    this standard.  Please address the information to the IETF at
809    ietf-ipr@ietf.org.
840 Brown & Housley                                                [Page 15]