[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Channel Binding and GSS-API mechanisms



Sam Hartman <hartmans-ietf@xxxxxxx> writes:

> Folks, a couple of odd consequences of how GS2 and channel binding
> interact came to me during the meeting and I want to make sure we're
> aware of them and agree they are OK.
>
> First, if you have a channel binding that requires confidentiality for
> a channel that does not provide confidentiality you cannot use it with
> GS2.  Honestly I don't consider this a big deal because I cannot think
> of any reason you'd define such a channel binding.  It seems like such
> a bad idea I'd hope that the expert would decline the registration.
> If we do find a channel where this is the right solutionwe'll have
> some work to do.

There is a security consideration in GS2 about this:

   The channel binding is sent without privacy protection and knowledge
   of it is assumed to provide no advantage to an attacker.  This is a
   property that has to be considered when specifying channel bindings
   for a security protocol that will be used with GS2.

Is there anything else the document could say, or is this sufficient?

> The second problem is more concerning.  The way GS2 handles channel
> bindings makes it a bit tricky for things that want to be both a SASL
> mechanism and a GSS-API mechanism.  GS2 does not use the GSS-API
> binding facility.  It instead uses a wrap token.  So, you'll need to
> define a wrap token for your mechanism.

I don't think that is required, see section 4.3.1 of GS2:

4.3.1.  The GS2_Wrap function

   The GS2_Wrap function have two implementations, and which one is used
   depends on whether the negotiated GSS-API context supports per-
   message protection.  When a context is successfully negotiated (i.e.,
   when GSS_S_COMPLETE is returned from, for clients,
   GSS_Init_sec_context, or, for servers, GSS_Accept_sec_context) and
   the output variable integ_avail is FALSE, then GSS_Wrap cannot be
   used and instead we define GS2_Wrap to be the identity function.
   When integ_avail is negotiated TRUE, the GS2_Wrap is identical to
   calling the GSS_Wrap function with conf_flag set to FALSE and using
   the generated output_message as the output data.

The rest of the document uses GS2_Wrap, not GSS_Wrap.

> However if your mechanism is going to support channel binding when it
> is used as a GSS-API mechanism, then it needs to also support channel
> bindings in the GSS-API token.
>
> This complexity isn't a over-the wire complexity issue.  It does not
> effect round trips.  If you are only implementing the SASL mechanism
> there is not more work to do.
>
> However it makes the spec kind of complicated.

That may still be the case, though.

/Simon