document fixes.
[gnutls.git] / doc / protocol / draft-housley-tls-authz-extns-05.txt
blob458445261fd122bb82365715de1ed7e98a052b8b
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-05.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.
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                                                  May 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                                                  May 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                                                  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
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), keynote_assertion_list(4), (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    When the keynote_assertion_list value is present, the authorization
318    data is a list of KeyNote assertions that conforms to the profile in
319    RFC 2704 [KEYNOTE].
321 3. Supplemental Data Handshake Message Usage
323    As shown in Figure 1, supplemental data can be exchanges in two
324    places in the handshake protocol.  The client_authz extension
325    determines what authorization data formats are acceptable for
326    transfer from the client to the server, and the server_authz
327    extension determines what authorization data formats are acceptable
328    for transfer from the server to the client.  In both cases, the
329    syntax specified in [TLSSUPP] is used along with the authz_data type
330    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             case keynote_assertion_list: KeyNoteAssertionList;
420          }
421       } AuthorizationDataEntry;
423       enum {
424          x509_attr_cert(0), saml_assertion(1), x509_attr_cert_url(2),
425          saml_assertion_url(3), keynote_assertion_list(4), (255)
426       } AuthzDataFormat;
428       opaque X509AttrCert<1..2^16-1>;
430       opaque SAMLAssertion<1..2^16-1>;
432       opaque KeyNoteAssertionList<1..2^16-1>;
434       struct {
435          opaque url<1..2^16-1>;
436          HashType hash_type;
437          select (hash_type) {
438             case sha1:   SHA1Hash;
439             case sha256: SHA256Hash;
440          } hash;
441       } 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 3.3.4. KeyNote Assertion List
570    When KeyNoteAssertion List is used, the field contains an ASCII-
571    encoded list of signed KeyNote assertions, as described in RFC 2704
572    [KEYNOTE].  The assertions are separated by two '\n' (newline)
573    characters.  A KeyNote assertion is a structure similar to a public
574    key certificate; the main difference is that instead of a binding
575    between a name and a public key, KeyNote assertions bind public keys
576    to authorization rules that are evaluated by the peer when the sender
577    later issues specific requests.
579    When making an authorization decision based on a list of KeyNote
580    assertions, proper linkage between the KeyNote assertions and the
581    public key certificate that is transferred in the TLS Certificate
582    message is needed.  Receivers of a KeyNote assertion list should
583    initialize the ACTION_AUTHORIZER variable to be the sender's public
584    key, which was used to authenticate the TLS exchange.
586 4. IANA Considerations
588    This document defines a two TLS extensions: client_authz(TBD) and
589    server_authz(TBD).  These extension type values are assigned from the
590    TLS Extension Type registry defined in [TLSEXT].
592    This document defines one TLS supplemental data type:
593    authz_data(TBD).  This supplemental data type is assigned from the
594    TLS Supplemental Data Type registry defined in [TLSSUPP].
596    This document establishes a new registry, to be maintained by IANA,
597    for TLS Authorization Data Formats.  The first five entries in the
598    registry are x509_attr_cert(0), saml_assertion(1),
599    x509_attr_cert_url(2), saml_assertion_url(3), and
600    keynote_assertion_list(4).  TLS Authorization Data Format identifiers
601    with values in the inclusive range 0-63 (decimal) are assigned via
602    RFC 2434 [IANA] Standards Action.  Values from the inclusive range
603    64-223 (decimal) are assigned via RFC 2434 Specification Required.
604    Values from the inclusive range 224-255 (decimal) are reserved for
605    RFC 2434 Private Use.
607    This document establishes a new registry, to be maintained by IANA,
608    for TLS Hash Types.  The first two entries in the registry are
609    sha1(0) and sha256(1).  TLS Hash Type identifiers with values in the
610    inclusive range 0-158 (decimal) are assigned via RFC 2434 [IANA]
611    Standards Action.  Values from the inclusive range 159-223 (decimal)
612    are assigned via RFC 2434 Specification Required.  Values from the
616 Brown & Housley                                                [Page 11]
618 Internet-Draft                                                  May 2006
621    inclusive range 224-255 (decimal) are reserved for RFC 2434 Private
622    Use.
624 5. Security Considerations
626    A TLS server can support more than one application, and each
627    application may include several features, each of which requires
628    separate authorization checks.  This is the reason that more than one
629    piece of authorization information can be provided.
631    A TLS server that requires different authorization information for
632    different applications or different application features may find
633    that a client has provided sufficient authorization information to
634    grant access to a subset of these offerings.  In this situation the
635    TLS Handshake protocol will complete successfully; however, the
636    server must ensure that the client will only be able to use the
637    appropriate applications and application features.  That is, the TLS
638    server must deny access to the applications and application features
639    for which authorization has not been confirmed.
641    In many cases, the authorization information is itself sensitive.
642    The double handshake technique can be used to provide protection for
643    the authorization information.  Figure 2 illustrates the double
644    handshake, where the initial handshake does not include any
645    authorization extensions, but it does result in protected
646    communications.  Then, a second handshake that includes the
647    authorization information is performed using the protected
648    communications.  In Figure 2, the number on the right side indicates
649    the amount of protection for the TLS message on that line.  A zero
650    (0) indicates that there is no communication protection; a one (1)
651    indicates that protection is provided by the first TLS session; and a
652    two (2) indicates that protection is provided by both TLS sessions.
654    The placement of the SupplementalData message in the TLS Handshake
655    results in the server providing its authorization information before
656    the client is authenticated.  In many situations, servers will not
657    want to provide authorization information until the client is
658    authenticated.  The double handshake illustrated in Figure 2 provides
659    a technique to ensure that the parties are mutually authenticated
660    before either party provides authorization information.
662 6. Acknowledgement
664    The authors thank Scott Cantor for his assistance with the SAML
665    Assertion portion of the document and Angelos Keromytis for his
666    assistance with the KeyNote 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.
722    [KEYNOTE]    Blaze, M., Feigenbaum, J., Ioannidis, J., and
723                 A. Keromytis, "The KeyNote Trust-Management System,
724                 Version 2", RFC 2704, September 1999.
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]