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

Re: WG Last Call: draft-ietf-sasl-scram-02



Chris Newman <Chris.Newman@xxxxxxx> writes:

> I consider TLS channel bindings very important, so much so I'm willing
> to invest significant effort attempting an implementation.  But there
> are three directions typical deployments could go here: 1. most people
> use "PLAIN+TLS", 2. SCRAM+TLS-no-channel-bindings gets deployed,
> 3. SCRAM+TLS-with-channel-bindings gets deployed.  If the attempt at 3
> is non-interoperable, then 1 will be the result as people will
> associate "SCRAM" with "doesn't work".  I strongly prefer option 2 to
> 1 and will act accordingly.  All this talk of channel binding
> negotiation is leading in the direction of non-interoperability and is
> risking the possibility of success with option 3.  I am stating up
> front that I'll fight for option 2 if option 3 looks like it will
> fail.  It's exactly because I care about actually getting security
> deployed that I'm willing to lose the channel binding feature if
> necessary to get an incremental improvement.

FWIW, I largely share your concern.  I may be more hopeful about getting
3 to work in practice though, technically it seems easy to implement.

> Now that you've goaded me to explain my concern.  I'll make a concrete
> suggestion to improve the SCRAM channel bindings section.  I suggest
> we replace this text:
>
>   Clients SHOULD choose the tls-unique channel binding type.
>   Conversely, clients MAY choose a different channel binding type based
>   on user input, configuration, or a future, as-yet undefined channel
>   binding type negotiation protocol.  Servers MUST choose the channel
>   binding type indicated by the client, if they support it.
>
> with:
>
>   Clients MUST use the tls-unique channel binding type if a TLS channel is
>   active when SCRAM is used.  Clients MAY use a different channel
> binding type if
>   an as-yet undefined channel binding type negotiation has confirmed
> the server
>   supports the channel-binding type the client selects.
>
> This way, SCRAM+TLS-channel-bindings will interoperate.  With the
> current vague text, it's possible for a compliant client's SCRAM
> implementation to fail to interoperate when communicating with a
> compliant server's SCRAM + TLS-channel-bindings implementation.

I'm not sure this change is good -- first, the MUST is clearly violated
when the MAY-path is exercised, so it is not internally consistent.
This was one of the motivations for SHOULD, IIRC, although I agree that
it wasn't completely clear before either.  Also you dropped the last
sentence which is necessary to get interoperability.  How about:

   Clients MUST use the tls-unique channel binding type if a TLS channel
   is active when SCRAM is used, or MAY use a different channel binding
   type if an as-yet undefined channel binding type negotiation has
   confirmed the server supports the channel-binding type the client
   selects.  Servers MUST choose the channel binding type indicated by
   the client, if they support it.

?

/Simon