My general feeling is that the document is close to being done, modulo some XXX-style comments in several places.
Some specific comments (mostly nits) below.

General comment: the document is using terminology for multiple technologies
(EAP, GSS-API and even SASL). While I think the document is correct and
it explains most of the terms used, some additional references on first
use would be very helpful in order to improve readability.
In particular I am thinking about Section 1 and its subsections, e.g. Section 1.2.


In Section 1, 5th paragraph:

  The goal of this specification is to combine GSS-API's support for
  application protocols with EAP/AAA's support for common credential
  types and for authenticating to a server without requiring that
  server to specifically support the authentication method in use.  In
  addition, this specification supports thearchitecture goal of

Missing space, should be "the architecture".

  transporting attributes about subjects to relying parties.  Together
  this combination will provide federated authentication and
  authorisation for GSS-API applications.






3.  EAP Channel Binding and Naming

  EAP authenticates a realm.

The whole realm? I thought a realm is a collection of user and service accounts.

  The peer knows that it has exchanged
  authentication with an EAP server in a given realm.


3.1.  Mechanism Name Format

  The string representation of the GSS-EAP mechanism name has the
  following ABNF [RFC5234] representation:

         ; Define name-string to handle escaping and prevent / and @

I was about to ask where is it defined.

         empty =

This is going to fail ABNF validation. Use something like 0"blah".

         user-or-service = name-string
         host = empty/name-string

Can host really be empty? If yes, this can result in the following name:

  user-or-service "/" "@" realm

Is it going to be valid?
If not, you might be missing an extra pair of [] in the definition
of <name> below:

         realm = name-string
         service-specific = name-string
         service-specifics = service-specific 0*('/' service-specifics)
         name = user-or-service '/' host [ '/' service-specifics] [ '@'
                 realm ]

Also change a single quote to double quote, otherwise this is not a correct ABNF.



  The user-or-service component is the portion of a network access
  identifier (NAI) before the '@' symbol for initiator names

NAI syntax needs a reference.

  and the
  service name from the registry of GSS-API host-based services in the
  case of acceptor names [GSS-IANA].



  If the null name type or the GSS_EAP_NT_EAP_NAME (oid XXX) is

Yes, this needs to be defined :-).

  imported, then the string representation above should be directly
  imported.  Mechanisms MAY support the GSS_KRB5_NT_KRB5_PRINCIPAL_NAME
  name form with the OID {iso(1) member-body(2) United States(840)
  mit(113554) infosys(1) gssapi(2) krb5(2) krb5_name(1)}.


3.4.  Proxy Verification of Acceptor Name

This section is empty.



5.1.  Mechanisms and Encryption Types

  This mechanism family uses the security services of the Kerberos
  cryptographic framework [RFC3961].  As such, a particular encryption
  type needs to be chosen.  By convention, there is a single object
  identifier arc for the EAP family of GSS-API mechanisms.  A specific
  mechanism is chosen by adding the numeric Kerberos encryption type
  number to the root of this arc.  However, in order to register the
  SASL name, the specific usage with a given encryption type needs to
  be registered.  This document defines the eap-aes128-cts-hmac-sha1-96
  GSS-API mechanism.  XXX define an OID for that and use the right
  language to get that into the appropriate SASL registry.

Yes :-).


5.2.  Processing received tokens

  Implementations of this mechanism maintain a state machine for the
  context establishment process.  Both the initiator and acceptor start
  out in the initial state; see Section 5.4 for a description of this
  state.  Associated with each state are a set of subtoken types that
  are processed in that state and rules for processing these subtoken
  types.  The reciever examines the subtokens in order, processing any
  that are appropriate for the current state.

What happens to the subtokens which are not appropriate for the current state?



5.4.2.  Acceptor Name Request

  The acceptor name request token is sent from the initiator to the
  acceptor indicating that the initiator wishes a particular acceptor
  name.  This is similar to TLS Server Name Indication.

This needs an Informative Reference.


In Section 5.5:

  o  If the acceptor receives an EAP failure, then the acceptor sends
     this in the Eap Request subtoken type.  If the initiator receives
     an EAP Failure, it returns GSS failure.

Can you expand on what you mean here. "receive" doesn't mean receive over the wire here, right?
Also, what does it mean to return a "GSS failure"?


5.6.2.  Channel Bindings Subtoken

  Again, only the application data is sent in the channel binding.  The
  initiator and acceptor addresses are ignored.

I am not entirely clear on what you mean here by "addresses are ignored".


In 5.6.3:

  The input to GSS_GetMIC is as follows:

  1.  The DER-encoded object identifier of the mechanism in use; this
      value starts with 0x06 (the tag for object identifier).  When
      encoded in an RFC 2743 context token, the object identifier is
      preceeded by the tag and length for [Application 0] SEQUENCE.
      This tag and the length of the overall token is not inclded; only
      the tag, length and value of the object identifier itself.

  2.  A 16-bit token type in network byte order of the RFC 4121 token
      identifier (0x0601 for initiator, 0x0602 for acceptor).

  3.  For each subtoken other than the MIC subtoken itself:

What is the order of subtokens?
Does this cover all subtokens sent during the extension phase?
Does this cover only subtokens sent by the initiator/acceptor respectively?

      1.  A four octet subtoken type in network byte order

      2.  A four byte length in network byte order

      3.  Length octets of value from that subtoken



6.  Acceptor Services

  The CRK is derived from the GMSK using the following procedur

Typo: procedure

  Tn = pseudo-random(KMSK, n || "rfc4121-gss-eap")

How is "n" respresented, in particular how many bytes are used to represent it?

  CRK = truncate(L, T1 || T2 || .. || Tn)
  L = output RFC 3961 key size


In Section 6.1:

  In this mechanism an extension option of type 0 with the critical bit

I am a bit confused here: what is "an extension option".

  set is sent from the initiator to the acceptor.  This option contains
  a GSS_Wrap token of the channel binding data passed into
  GSS_Init_sec_context.


8.1.  RFC 4121 Token Identifiers

  A new top level registry titled "Kerberos GSS-API Mechanism
  Parameters," should be created.  This registry should be separate
  from the existing "Kerberos Parameters" registry.

  In this registry is a subregistry called "Kerberos GSS-API Token
  Identifiers"; the overall reference for this subregistry is section
  4.1 of RFC 4121.

What is the IANA registration procedure here?


8.4.  GSS EAP Errors

  A new subregistry is created in the GSS EAP parameters registry
  titled "Error Codes".  XXX fill in minor statuses.

What is the IANA registration procedure here?

_______________________________________________
abfab mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/abfab

Reply via email to