On Tuesday, 4 September 2018 15:32:19 CEST Eric Rescorla wrote:
> On Tue, Sep 4, 2018 at 5:46 AM, Hubert Kario <hka...@redhat.com> wrote:
> > On Monday, 3 September 2018 21:26:06 CEST Eric Rescorla wrote:
> > > On Mon, Sep 3, 2018 at 12:19 PM, Hubert Kario <hka...@redhat.com> wrote:
> > > > On Monday, 3 September 2018 17:30:15 CEST Eric Rescorla wrote:
> > > > > On Mon, Sep 3, 2018 at 8:20 AM, Hubert Kario <hka...@redhat.com>
> > 
> > wrote:
> > > > > > On Monday, 3 September 2018 17:15:24 CEST Eric Rescorla wrote:
> > > > > > > On Mon, Sep 3, 2018 at 7:28 AM, Hubert Kario <hka...@redhat.com>
> > > > 
> > > > wrote:
> > > > > > > > On Monday, 3 September 2018 16:01:22 CEST Eric Rescorla wrote:
> > > > > > > > > On Mon, Sep 3, 2018 at 4:18 AM, Hubert Kario <
> > 
> > hka...@redhat.com>
> > 
> > > > > > > > > wrote:
> > > > > > > > not
> > > > > > > > abort connection, so I still think it will create less
> > 
> > confusion
> > 
> > > > > > > > to
> > > > > > > > re-allow
> > > > > > > > them than to re-assign new codepoints
> > > > > > > 
> > > > > > > The issue is that it's not possible to distinguish a
> > 
> > non-compliant
> > 
> > > > TLS
> > > > 
> > > > > > 1.3
> > > > > > 
> > > > > > > implementation which is inappropriately sending these code
> > > > > > > points
> > > > 
> > > > from
> > > > 
> > > > > > > one which actually supports Brainpool with TLS 1.3. Using new
> > 
> > code
> > 
> > > > > > > points makes this clear.
> > > > > > 
> > > > > > and why having that distinction is that important?
> > > > > 
> > > > > Because otherwise you are risking interop problems:
> > > > > 
> > > > > 1. A stack which supports TLS 1.2 and TLS 1.3 but only supports
> > > > > Brainpool
> > > > > for TLS 1.2 (the only kind you can write at this point), and
> > > > 
> > > > inappropriately
> > > > 
> > > > > advertises the Brainpool curves in violation of the MUST above.
> > > > > 2. A stack which supports TLS 1.2 and TLS 1.3 and supports Brainpool
> > 
> > for
> > 
> > > > > both (assuming that we adopt your proposal and reactivate these code
> > > > > points).
> > > > > 
> > > > > If stack 2 receives a CH from stack 1 and responds by selecting a
> > > > 
> > > > Brainpool
> > > > 
> > > > > curve, then there will be an interop issue when it sends an HRR [0]
> > > > > selecting
> > > > > the Brainpool curve.
> > > > > 
> > > > > -Ekr
> > > > > 
> > > > > [0] I'm assuming that the client doesn't offer a Brainpool KeyShare.
> > > > 
> > > > ah, yes, missed this case. That does taint all those codepoints for
> > > > TLS
> > > > 1.3
> > > > 
> > > > but while the server may abort the connection upon receiving them in
> > 
> > TLS
> > 
> > > > 1.3
> > > > CH (as it is violation of the MUST clause), I don't think it actually
> > > > should
> > > > abort it...
> > > > 
> > > > For one, and I think we can agree on that, is the server MUST ignore
> > 
> > them
> > 
> > > > if
> > > > it doesn't support them in TLS 1.2.
> > > 
> > > I don't think I agree with this. Why would that be the case?
> > 
> > because when servers don't do it we have "TLS version intolerance", "TLS
> > extension intolerance" and so on.
> > 
> > From RFC 5246:
> >    If the list contains cipher
> >    suites the server does not recognize, support, or wish to use, the
> >    server MUST ignore those cipher suites, and process the remaining
> >    ones as usual.
> > 
> > and:
> >    the rules specified in [TLSEXT]
> >    require servers to ignore extensions they do not understand.
> > 
> > Not to mention the most explicit statement on this topic, from RFC 8446:
> >    Future extensions or additions to the protocol may define new values.
> >    Implementations need to be able to parse and ignore unknown values
> >    unless the definition of the field states otherwise.
> > 
> > In general, if the servers weren't required to ignore values they don't
> > recognise, we would never be able to extend the value lists (be it
> > SupportedGroups, or SignatureSchemes/SignatureAlgorithms).
> 
> This isn't an unknown value. It's a specifically prohibited value. Those
> are different cases.

yes, that's why I said "doesn't support them in TLS 1.2.". I meant there the 
protocol in general, not a specific implementation (i.e. a server that 
implements TLS 1.2 as the highest version)

> > > > Given that TLS 1.3 server usually implement both TLS 1.2 and TLS 1.3,
> > > > having
> > > > code that does ignore them in TLS 1.2 and doesn't ignore them in TLS
> > 
> > 1.3
> > 
> > > > is
> > > > only inviting bugs.
> > > 
> > > We already have other special case code that enforces such rules. For
> > > instance,
> > > 
> > > compression:
> > >       For every TLS 1.3 ClientHello, this vector
> > >       MUST contain exactly one byte, set to zero, which corresponds to
> > >       the "null" compression method in prior versions of TLS.  If a
> > >       TLS 1.3 ClientHello is received with any other value in this
> > >       field, the server MUST abort the handshake with an
> > >       "illegal_parameter" alert.  Note that TLS 1.3 servers might
> > >       receive TLS 1.2 or prior ClientHellos which contain other
> > >       compression methods and (if negotiating such a prior version) MUST
> > >       follow the procedures for the appropriate prior version of TLS.
> > 
> > the difference is that we we don't want people to use compression in TLS
> > 1.2,
> > while brainpool in TLS 1.2 is just not recommended, not provably dangerous
> > even when implemented correctly
> 
> That's reading stuff into the spec that's not there. They're both
> prohibited from
> being offered by TLS 1.3 clients.

Yes, it's not there, and I already agreed that it's acceptable for a server to 
abort when it sees such behaviour. But the reason why a behaviour (any 
behaviour) is prohibited influences the urgency of the fix (or presence of a 
check).
-- 
Regards,
Hubert Kario
Senior Quality Engineer, QE BaseOS Security team
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purkyňova 115, 612 00  Brno, Czech Republic

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to