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

Re: Channel Binding and GSS-API mechanisms



>>>>> "Simon" == Simon Josefsson <simon@xxxxxxxxxxxxx> writes:

    Simon> 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.

    Simon> There is a security consideration in GS2 about this:

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

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

No, I think the doc is fine.
The question is whether the WG is OK with that consequence.
My personal recommendation is no change in this area.

    >> 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.

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

    Simon> 4.3.1.  The GS2_Wrap function

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

    Simon> The rest of the document uses GS2_Wrap, not GSS_Wrap.

You cannot use channel binding with contexts that do not have
integ_avail.

So, if you are going to design a SASL mechanism as a GSS-API mechanism
and want channel binding to work, you must provide gss_wrap with
integrity tokens.

The GS2 document explains why we made that design decision.  I
understand and agree with that explanation.  I just want to make sure
the WG is aware of the consequences.