Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-housley-tls-authz-extns-06.txt
blob6d2e48a93c83d6b04685a5ca8d9c5f5cd1308f3d
5 Internet-Draft                                                  M. Brown
6 May 2006                                               RedPhone Security
7 Expires: November 2006                                        R. Housley
8                                                           Vigil Security
10         Transport Layer Security (TLS) Authorization Extensions
11                  <draft-housley-tls-authz-extns-06.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                                                  May 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                                                  May 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.
132     Client                                                   Server
134     ClientHello (w/ extensions) -------->
136                                         ServerHello (w/ extensions)
137                                                   SupplementalData*
138                                                        Certificate*
139                                                  ServerKeyExchange*
140                                                 CertificateRequest*
141                                 <--------           ServerHelloDone
142     SupplementalData*
143     Certificate*
144     ClientKeyExchange
145     CertificateVerify*
146     [ChangeCipherSpec]
147     Finished                    -------->
148                                                  [ChangeCipherSpec]
149                                 <--------                  Finished
150     Application Data            <------->          Application Data
152      *  Indicates optional or situation-dependent messages that
153         are not always sent.
155      [] Indicates that ChangeCipherSpec is an independent TLS
156         Protocol content type; it is not actually a TLS
157         handshake message.
159         Figure 1. Authorization data exchange in full TLS handshake
162    The ClientHello message includes an indication of the client
163    authorization data formats that are supported and an indication of
164    the server authorization data formats that are supported.  The
168 Brown & Housley                                                 [Page 3]
170 Internet-Draft                                                  May 2006
173    ServerHello message contains similar indications, but any
174    authorization data formats that are not supported by the server are
175    not included.  Both the client and the server MUST indicate support
176    for the authorization data types.  If the list of mutually supported
177    authorization data formats is empty, then the ServerHello message
178    MUST NOT carry the affected extension at all.
180 2. Authorization Extension Types
182    The general extension mechanisms enable clients and servers to
183    negotiate whether to use specific extensions, and how to use specific
184    extensions.  As specified in [TLSEXT], the extension format used in
185    the extended client hello message and extended server hello message
186    is repeated here for convenience:
188       struct {
189          ExtensionType extension_type;
190          opaque extension_data<0..2^16-1>;
191       } Extension;
193    The extension_type identifies a particular extension type, and the
194    extension_data contains information specific to the particular
195    extension type.
197    As specified in [TLSEXT], for all extension types, the extension type
198    MUST NOT appear in the extended server hello message unless the same
199    extension type appeared in the corresponding client hello message.
200    Clients MUST abort the handshake if they receive an extension type in
201    the extended server hello message that they did not request in the
202    associated extended client hello message.
204    When multiple extensions of different types are present in the
205    extended client hello message or the extended server hello message,
206    the extensions can appear in any order, but there MUST NOT be more
207    than one extension of the same type.
209    This document specifies the use of two new extension types:
210    client_authz and server_authz.  These extension types are described
211    in Section 2.1 and Section 2.2, respectively.  This specification
212    adds two new types to ExtensionType:
214       enum {
215         client_authz(TBD), server_authz(TBD), (65535)
216       } ExtensionType;
218    The authorization extensions are relevant when a session is initiated
219    and any subsequent session resumption.  However, a client that
220    requests resumption of a session does not know whether the server
224 Brown & Housley                                                 [Page 4]
226 Internet-Draft                                                  May 2006
229    will have all of the context necessary to accept this request, and
230    therefore the client SHOULD send an extended client hello message
231    that includes the extension types associated with the authorization
232    extensions.  This way, if the resumption request is denied, then the
233    authorization extensions will be negotiated as normal.
235 2.1. The client_authz Extension Type
237    Clients MUST include the client_authz extension type in the extended
238    client hello message to indicate their desire to send authorization
239    data to the server.  The extension_data field indicates the format of
240    the authorization data that will be sent in the supplemental data
241    handshake message.  The syntax of the client_authz extension_data
242    field is described in Section 2.3.
244    Servers that receive an extended client hello message containing the
245    client_authz extension MUST respond with the same client_authz
246    extension in the extended server hello message if the server is
247    willing to receive authorization data in the indicated format.  Any
248    unacceptable formats must be removed from the list provided by the
249    client.  The client_authz extension MUST be omitted from the extended
250    server hello message if the server is not willing to receive
251    authorization data in any of the indicated formats.
253 2.2. The server_authz Extension Type
255    Clients MUST include the server_authz extension type in the extended
256    client hello message to indicate their desire to receive
257    authorization data from the server.  The extension_data field
258    indicates the format of the authorization data that will be sent in
259    the supplemental data handshake message.  The syntax of the
260    server_authz extension_data field as described in Section 2.3.
262    Servers that receive an extended client hello message containing the
263    server_authz extension MUST respond with the same server_authz
264    extension in the extended server hello message if the server is
265    willing to provide authorization data in the requested format.  Any
266    unacceptable formats must be removed from the list provided by the
267    client.  The server_authz extension MUST be omitted from the extended
268    server hello message if the server is not able to provide
269    authorization data in any of the indicated formats.
280 Brown & Housley                                                 [Page 5]
282 Internet-Draft                                                  May 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 AuthzDataFormats
290    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       AuthzDataFormats 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                                                  May 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                                                  May 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>;
429       opaque SAMLAssertion<1..2^16-1>;
431       struct {
432          opaque url<1..2^16-1>;
433          HashType hash_type;
434          select (hash_type) {
435             case sha1:   SHA1Hash;
436             case sha256: SHA256Hash;
437          } hash;
438       } URLandHash;
448 Brown & Housley                                                 [Page 8]
450 Internet-Draft                                                  May 2006
453       enum {
454          sha1(0), sha256(1), (255)
455       } HashType;
457       opaque SHA1Hash[20];
459       opaque SHA256Hash[32];
461 3.3.1. X.509 Attribute Certificate
463    When X509AttrCert is used, the field contains an ASN.1 DER-encoded
464    X.509 Attribute Certificate (AC) that follows the profile in RFC 3281
465    [ATTRCERT].  An AC is a structure similar to a public key certificate
466    (PKC) [PKIX1]; the main difference being that the AC contains no
467    public key.  An AC may contain attributes that specify group
468    membership, role, security clearance, or other authorization
469    information associated with the AC holder.
471    When making an authorization decision based on an AC, proper linkage
472    between the AC holder and the public key certificate that is
473    transferred in the TLS Certificate message is needed.  The AC holder
474    field provides this linkage.  The holder field is a SEQUENCE allowing
475    three different (optional) syntaxes: baseCertificateID, entityName
476    and objectDigestInfo.  In the TLS authorization context, the holder
477    field MUST use the either baseCertificateID or entityName.  In the
478    baseCertificateID case, the baseCertificateID field MUST match the
479    issuer and serialNumber fields in the certificate.  In the entityName
480    case, the entityName MUST be the same as the subject field in the
481    certificate or one of the subjectAltName extension values in the
482    certificate.  Note that [PKIX1] mandates that the subjectAltName
483    extension be present if the subject field contains an empty
484    distinguished name.
486 3.3.2. SAML Assertion
488    When SAMLAssertion is used, the field contains XML constructs with a
489    nested structure defined in [SAML1.1][SAML2.0].  SAML is an XML-based
490    framework for exchanging security information.  This security
491    information is expressed in the form of assertions about subjects,
492    where a subject is either human or computer with an identity.  In
493    this context, the SAML assertions are most likely to convey
494    authentication or attribute statements to be used as input to
495    authorization policy governing whether subjects are allowed to access
496    certain resources.  Assertions are issued by SAML authorities.
498    When making an authorization decision based on a SAML assertion,
499    proper linkage between the SAML assertion and the public key
500    certificate that is transferred in the TLS Certificate message may be
504 Brown & Housley                                                 [Page 9]
506 Internet-Draft                                                  May 2006
509    needed.  A "Holder of Key" subject confirmation method in the SAML
510    assertion can provide this linkage.  In other scenarios, it may be
511    acceptable to use alternate confirmation methods that do not provide
512    a strong binding, such as a bearer mechanism.  SAML assertion
513    recipients MUST decide which subject confirmation methods are
514    acceptable; such decisions MAY be specific to the SAML assertion
515    contents and the TLS session context.
517    There is no general requirement that the subject of the SAML
518    assertion correspond directly to the subject of the certificate.
519    They may represent the same or different entities.  When they are
520    different, SAML also provides a mechanism by which the certificate
521    subject can be identified separately from the subject in the SAML
522    assertion subject confirmation method.
524    Since the SAML assertion is being provided at a part of the TLS
525    Handshake that is unencrypted, an eavesdropper could replay the same
526    SAML assertion when they establish their own TLS session.  This is
527    especially important when a bearer mechanism is employed, the
528    recipient of the SAML assertion assumes that the sender is an
529    acceptable attesting entity for the SAML assertion.  Some constraints
530    may be included to limit the context where the bearer mechanism will
531    be accepted.  For example, the period of time that the SAML assertion
532    can be short-lived (often minutes), the source address can be
533    constrained, or the destination endpoint can be identified.  Also,
534    bearer assertions are often checked against a cache of SAML assertion
535    unique identifiers that were recently received in order to detect
536    replay.  This is an appropriate countermeasure if the bearer
537    assertion is intended to be used just once.  Section 5 provides a way
538    to protect authorization information when necessary.
540 3.3.3. URL and Hash
542    Since the X.509 AC and SAML assertion can be large, alternatives
543    provide a URL to obtain the ASN.1 DER-encoded X.509 AC or SAML
544    Assertion.  To ensure that the intended object is obtained, a one-way
545    hash value of the object is also included.  Integrity of this one-way
546    hash value is provided by the TLS Finished message.
548    Implementations that support either x509_attr_cert_url or
549    saml_assertion_url MUST support URLs that employ the http scheme.
550    Other schemes may also be supported; however, to avoid circular
551    dependencies, supported schemes SHOULD NOT themselves make use of
552    TLS, such as the https scheme.
554    Implementations that support either x509_attr_cert_url or
555    saml_assertion_url MUST support both SHA-1 [SHA1] and SHA-256 [SHA2]
556    as one-way hash functions.  Other one-way hash functions may also be
560 Brown & Housley                                                [Page 10]
562 Internet-Draft                                                  May 2006
565    supported.  Additional one-way hash functions can be registered in
566    the future using the procedures in section 3.
568 4. IANA Considerations
570    This document defines a two TLS extensions: client_authz(TBD) and
571    server_authz(TBD).  These extension type values are assigned from the
572    TLS Extension Type registry defined in [TLSEXT].
574    This document defines one TLS supplemental data type:
575    authz_data(TBD).  This supplemental data type is assigned from the
576    TLS Supplemental Data Type registry defined in [TLSSUPP].
578    This document establishes a new registry, to be maintained by IANA,
579    for TLS Authorization Data Formats.  The first five entries in the
580    registry are x509_attr_cert(0), saml_assertion(1),
581    x509_attr_cert_url(2), and saml_assertion_url(3).  TLS Authorization
582    Data Format identifiers with values in the inclusive range 0-63
583    (decimal) are assigned via RFC 2434 [IANA] Standards Action.  Values
584    from the inclusive range 64-223 (decimal) are assigned via RFC 2434
585    Specification Required.  Values from the inclusive range 224-255
586    (decimal) are reserved for RFC 2434 Private Use.
588    This document establishes a new registry, to be maintained by IANA,
589    for TLS Hash Types.  The first two entries in the registry are
590    sha1(0) and sha256(1).  TLS Hash Type identifiers with values in the
591    inclusive range 0-158 (decimal) are assigned via RFC 2434 [IANA]
592    Standards Action.  Values from the inclusive range 159-223 (decimal)
593    are assigned via RFC 2434 Specification Required.  Values from the
594    inclusive range 224-255 (decimal) are reserved for RFC 2434 Private
595    Use.
597 5. Security Considerations
599    A TLS server can support more than one application, and each
600    application may include several features, each of which requires
601    separate authorization checks.  This is the reason that more than one
602    piece of authorization information can be provided.
604    A TLS server that requires different authorization information for
605    different applications or different application features may find
606    that a client has provided sufficient authorization information to
607    grant access to a subset of these offerings.  In this situation the
608    TLS Handshake protocol will complete successfully; however, the
609    server must ensure that the client will only be able to use the
610    appropriate applications and application features.  That is, the TLS
611    server must deny access to the applications and application features
612    for which authorization has not been confirmed.
616 Brown & Housley                                                [Page 11]
618 Internet-Draft                                                  May 2006
621    In many cases, the authorization information is itself sensitive.
622    The double handshake technique can be used to provide protection for
623    the authorization information.  Figure 2 illustrates the double
624    handshake, where the initial handshake does not include any
625    authorization extensions, but it does result in protected
626    communications.  Then, a second handshake that includes the
627    authorization information is performed using the protected
628    communications.  In Figure 2, the number on the right side indicates
629    the amount of protection for the TLS message on that line.  A zero
630    (0) indicates that there is no communication protection; a one (1)
631    indicates that protection is provided by the first TLS session; and a
632    two (2) indicates that protection is provided by both TLS sessions.
634    The placement of the SupplementalData message in the TLS Handshake
635    results in the server providing its authorization information before
636    the client is authenticated.  In many situations, servers will not
637    want to provide authorization information until the client is
638    authenticated.  The double handshake illustrated in Figure 2 provides
639    a technique to ensure that the parties are mutually authenticated
640    before either party provides authorization information.
642 6. Acknowledgement
644    The authors thank Scott Cantor for his assistance with the SAML
645    Assertion portion of the document.
672 Brown & Housley                                                [Page 12]
674 Internet-Draft                                                  May 2006
677     Client                                                   Server
679     ClientHello (no extensions) -------->                            |0
680                                         ServerHello (no extensions)  |0
681                                                        Certificate*  |0
682                                                  ServerKeyExchange*  |0
683                                                 CertificateRequest*  |0
684                                 <--------           ServerHelloDone  |0
685     Certificate*                                                     |0
686     ClientKeyExchange                                                |0
687     CertificateVerify*                                               |0
688     [ChangeCipherSpec]                                               |0
689     Finished                    -------->                            |1
690                                                  [ChangeCipherSpec]  |0
691                                 <--------                  Finished  |1
692     ClientHello (w/ extensions) -------->                            |1
693                                         ServerHello (w/ extensions)  |1
694                                   SupplementalData (w/ authz data)*  |1
695                                                        Certificate*  |1
696                                                  ServerKeyExchange*  |1
697                                                 CertificateRequest*  |1
698                                 <--------           ServerHelloDone  |1
699     SupplementalData (w/ authz data)*                                |1
700     Certificate*                                                     |1
701     ClientKeyExchange                                                |1
702     CertificateVerify*                                               |1
703     [ChangeCipherSpec]                                               |1
704     Finished                    -------->                            |2
705                                                  [ChangeCipherSpec]  |1
706                                 <--------                  Finished  |2
707     Application Data            <------->          Application Data  |2
709          Figure 2. Double Handshake to Protect Authorization Data
712 7. Normative References
714    [ATTRCERT]   Farrell, S., and R. Housley, "An Internet Attribute
715                 Certificate Profile for Authorization", RFC 3281,
716                 April 2002.
718    [IANA]       Narten, T., and H. Alvestrand, "Guidelines for Writing
719                 an IANA Considerations Section in RFCs", RFC 3434,
720                 October 1998.
728 Brown & Housley                                                [Page 13]
730 Internet-Draft                                                  May 2006
733    [PKIX1]      Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
734                 X.509 Public Key Infrastructure Certificate and
735                 Certificate Revocation List (CRL) Profile", RFC 3280,
736                 April 2002.
738    [TLS1.0]     Dierks, T., and C. Allen, "The TLS Protocol, Version 1.0",
739                 RFC 2246, January 1999.
741    [TLS1.1]     Dierks, T., and E. Rescorla, "The Transport Layer Security
742                 (TLS) Protocol, Version 1.1", RFC 4346, February 2006.
744    [TLSEXT]     Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
745                 and T. Wright, "Transport Layer Security (TLS) Extensions",
746                 RFC 3546, June 2003.
748    [TLSSUPP]    Santesson, S., " TLS Handshake Message for Supplemental
749                 Data", work in progress: draft-santesson-tls-supp,
750                 March 2006.
752    [SAML1.1]    OASIS Security Services Technical Committee, "Security
753                 Assertion Markup Language (SAML) Version 1.1
754                 Specification Set", September 2003.
756    [SAML2.0]    OASIS Security Services Technical Committee, "Security
757                 Assertion Markup Language (SAML) Version 2.0
758                 Specification Set", March2005.
760    [SHA1]       National Institute of Standards and Technology (NIST),
761                 FIPS PUB 180-1, Secure Hash Standard, 17 April 1995.
763    [SHA2]       National Institute of Standards and Technology (NIST),
764                 FIPS PUB 180-2: Secure Hash Standard, 1 August 2002.
766    [STDWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
767                 Requirement Levels", BCP 14, RFC 2119, March 1997.
784 Brown & Housley                                                [Page 14]
786 Internet-Draft                                                  May 2006
789 Author's Address
791    Mark Brown
792    RedPhone Security
793    2019 Palace Avenue
794    Saint Paul, MN  55105
795    USA
796    mark <at> redphonesecurity <dot> com
798    Russell Housley
799    Vigil Security, LLC
800    918 Spring Knoll Drive
801    Herndon, VA 20170
802    USA
803    housley <at> vigilsec <dot> com
805 Full Copyright Statement
807    Copyright (C) The Internet Society (2006). This document is subject
808    to the rights, licenses and restrictions contained in BCP 78, and
809    except as set forth therein, the authors retain all their rights.
811    This document and translations of it may be copied and furnished to
812    others, and derivative works that comment on or otherwise explain it
813    or assist in its implementation may be prepared, copied, published
814    and distributed, in whole or in part, without restriction of any
815    kind, provided that the above copyright notice and this paragraph are
816    included on all such copies and derivative works. However, this
817    document itself may not be modified in any way, such as by removing
818    the copyright notice or references to the Internet Society or other
819    Internet organizations, except as needed for the purpose of
820    developing Internet standards in which case the procedures for
821    copyrights defined in the Internet Standards process must be
822    followed, or as required to translate it into languages other than
823    English.
825    This document and the information contained herein are provided on an
826    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
827    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
828    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
829    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
830    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
831    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
840 Brown & Housley                                                [Page 15]
842 Internet-Draft                                                  May 2006
845    The IETF takes no position regarding the validity or scope of any
846    Intellectual Property Rights or other rights that might be claimed to
847    pertain to the implementation or use of the technology described in
848    this document or the extent to which any license under such rights
849    might or might not be available; nor does it represent that it has
850    made any independent effort to identify any such rights.  Information
851    on the procedures with respect to rights in RFC documents can be
852    found in BCP 78 and BCP 79.
854    Copies of IPR disclosures made to the IETF Secretariat and any
855    assurances of licenses to be made available, or the result of an
856    attempt made to obtain a general license or permission for the use of
857    such proprietary rights by implementers or users of this
858    specification can be obtained from the IETF on-line IPR repository at
859    http://www.ietf.org/ipr.
861    The IETF invites any interested party to bring to its attention any
862    copyrights, patents or patent applications, or other proprietary
863    rights that may cover technology that may be required to implement
864    this standard.  Please address the information to the IETF at
865    ietf-ipr@ietf.org.
896 Brown & Housley                                                [Page 16]