Re: [TLS] Alexey Melnikov's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)

2018-03-12 Thread Alexey Melnikov
Hi,

On Wed, Feb 21, 2018, at 4:06 PM, Shumon Huque wrote:
> On Wed, Feb 7, 2018 at 9:05 PM, Shumon Huque  wrote:>> On 
> Wed, Feb 7, 2018 at 1:22 PM, Alexey Melnikov
>>  wrote:
>>> Alexey Melnikov has entered the following ballot position for 
>>> draft-ietf-tls-dnssec-chain-extension-
>>> 06: Discuss
>>>
>>>  -
>>>  -
>>>  DISCUSS:
>>>  -
>>>  -
>>>
>>>  I think this is a useful document and I will ballot Yes once my
>>>  small issues are resolved:
>>>
>>>  1) In 3.4:
>>>
>>> The first RRset in the chain MUST contain the TLSA record set
>>> being presented.  However, if the owner name of the TLSA record
>>> set is an alias (CNAME or DNAME), then it MUST be preceded by
>>> the chain of alias records needed to resolve it.  DNAME chains
>>> should omit
>>>
>>>  SHOULD? What are the implications if this is not followed?>> 
>> Ok. I guess we need the upper case word here, yes.
>> 
>> Implication: If the synthesized CNAME records are included in
>> the chain>> then the client will have to ignore them (they aren't signed and 
>> thus
>> can't be>> validated) - the signed DNAME record is sufficient for the client 
>> to
>> securely>> validate the mapping and continue processing.
>> 
>> It might make things simpler to just make this a MUST. I would
>> guess this>> would not raise any objections from the working group.
> 
> A quick follow-up on this. I think we just keep this as a SHOULD.
> I looked> at what an existing DNS library implementation does, and it
> includes the> synthesized CNAME. It's easy enough for the client to just
> ignore it when> validating the chain.

I think adding some text explaining this would be a good addition to
the document.
Best Regards,
Alexey
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] draft-ietf-tls-tls13-26 is vulnerable to externally set PSK identity enumeration

2018-03-12 Thread Hubert Kario
When the server supports externally set PSKs that use human readable 
identities (or, in general, guessable identities), the current text makes it 
trivial to perform enumeration attack.

The proposed fix was identified as conflicting with the "Client Hello 
Recording" security section, the severity of that conflict wasn't quantified 
though.


Issue in detail:

Problematic paragraph as it stands in draft-ietf-tls-tls13-26 (section 
4.2.11):
   Prior to accepting PSK key establishment, the server MUST validate
   the corresponding binder value (see Section 4.2.11.2 below).  If this
   value is not present or does not validate, the server MUST abort the
   handshake.  Servers SHOULD NOT attempt to validate multiple binders;
   rather they SHOULD select a single PSK and validate solely the binder
   that corresponds to that PSK.  In order to accept PSK key
   establishment, the server sends a "pre_shared_key" extension
   indicating the selected identity.

That means, given a server with both PSK and PKI authentication, if attacker 
sends multiple PSK identities with garbage binders, the server will abort the 
connection if and only if at least one of the identities was recognised by 
server. Applying the well known binary search method allows the attacker to 
then narrow it down to a single identity in O(log_2(n)) steps.

The solution to ignore that one selected binder, and continuing the connection 
in case that binder does not validate (this is the version in the PR mentioned 
below), unfortunately doesn't solve this issue either;

If the attacker is in possession of a known good PSK secret (established 
either through session resumption mechanism or of a less-privileged identity), 
it can list the known good one as the very last one in the PSK extension. If 
server recognises one of the identities earlier in the list it will choose no 
identity (as the binder didn't validate) or the known good identity if none of 
the previous identities were recognised. Again, applying binary search method 
allows the attacker to narrow the list to a single entry in just O(log_2(n)) 
steps.


Proposed solution:

in paragraph above, in description of `binders`:
  binders
  : A series of HMAC values, one for
   each PSK offered in the "pre_shared_keys" extension and in the same
   order, computed as described below. If the number of binders does not match
   number of identities the server MUST abort the connection with
   "illegal_parameter" alert.

problematic paragraph after changes:
   Prior to accepting PSK key establishment, the server MUST validate
   the corresponding binder value (see Section 4.2.11.2 below).  If this
   value does not validate, the server MUST ignore the
   associated identity and retry selection of identity. If no identity is 
   recognised or, for recognised identities, no binder could be validated
   the server MUST continue connection as if PSK key establishment wasn't
   attempted.  In order to accept PSK key
   establishment, the server sends a "pre_shared_key" extension
   indicating the selected identity.

Unfortunately that solution was identified as conflicting with "Client Hello 
Recording" section.

Do we consider that conflict to be severe enough to block this change?

Or should we just add more information to that security section, that it needs 
to deal with this kind of attack?

PS: some discussion on this issue already happened in the github PR: 
https://github.com/tlswg/tls13-spec/pull/1167
-- 
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

signature.asc
Description: This is a digitally signed message part.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Eric Rescorla's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)

2018-03-12 Thread Paul Wouters

On Mon, 5 Mar 2018, Willem Toorop wrote:


No Paul, the division in sections is irrelevant for a verifier.  The
only bit of information in a DNS message that is used by a verifier is
the question.  From the question, validation starts and the relevant
records are followed and verified.  But the question section is also not
needed as the question can be derived from the name and port of the
service, i.e. ._tcp.. TLSA

The order described in the draft is both an optimization to reduce the
number of times a verifier has to go over the RRs, and it makes the
content easier to read (and understand) for humans too.

Also, for non existence answers, DNSSEC validators (and thus also a
verifier for the chain extension) simply ignore the DNS message header.
Proof of non-existence can and must be derived from the set of RRs in
the message body/sections too.


Willem (and Shumon and Viktor) have convinced me the DNS Header and
Sections are not needed.


The extension already supports Denial of Existence proof b.t.w., because
it is also needed for wildcard expansions (which are supported).


The issue here is the requirement of the TLS server to send these
records in the absence of any TLS record. This allows the clients to
detect a rogue webserver cert that is valid in webPKI but not valid
based on DANE. Without this commitment, the TLS extension does not
really work, as it can be omitted by an attacker.

Paul

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


Re: [TLS] Eric Rescorla's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)

2018-03-12 Thread Kathleen Moriarty
Hello,

Can you please provide updated text that addresses EKR's discuss while
this additional discussion continues?  I'd like to see if it's
possible to get this wrapped up before the plenary in London.
Eliminating discuss points and resolving this additional issue are
required for that.  If this does not get wrapped up before then, it is
likely the draft will have to go on another IESG telechat with Ben as
AD, which is fine if that's needed, but better to avoid.

Thank you,
Kathleen

On Mon, Mar 12, 2018 at 2:29 PM, Paul Wouters  wrote:
> On Mon, 5 Mar 2018, Willem Toorop wrote:
>
>> No Paul, the division in sections is irrelevant for a verifier.  The
>> only bit of information in a DNS message that is used by a verifier is
>> the question.  From the question, validation starts and the relevant
>> records are followed and verified.  But the question section is also not
>> needed as the question can be derived from the name and port of the
>> service, i.e. ._tcp.. TLSA
>>
>> The order described in the draft is both an optimization to reduce the
>> number of times a verifier has to go over the RRs, and it makes the
>> content easier to read (and understand) for humans too.
>>
>> Also, for non existence answers, DNSSEC validators (and thus also a
>> verifier for the chain extension) simply ignore the DNS message header.
>> Proof of non-existence can and must be derived from the set of RRs in
>> the message body/sections too.
>
>
> Willem (and Shumon and Viktor) have convinced me the DNS Header and
> Sections are not needed.
>
>> The extension already supports Denial of Existence proof b.t.w., because
>> it is also needed for wildcard expansions (which are supported).
>
>
> The issue here is the requirement of the TLS server to send these
> records in the absence of any TLS record. This allows the clients to
> detect a rogue webserver cert that is valid in webPKI but not valid
> based on DANE. Without this commitment, the TLS extension does not
> really work, as it can be omitted by an attacker.
>
> Paul
>



-- 

Best regards,
Kathleen

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


Re: [TLS] Adam Roach's Yes on draft-ietf-tls-tls13-26: (with COMMENT)

2018-03-12 Thread Adam Roach

On 3/7/18 12:58 PM, Eric Rescorla wrote:

> >  -  TLS SignatureScheme Registry: Values with the first byte in the
> >     range 0-253 (decimal) are assigned via Specification Required
> >     [RFC8126].  Values with the first byte 254 or 255 (decimal) are
> >     reserved for Private Use [RFC8126].  Values with the first byte in
> >     the range 0-6 or with the second byte in the range 0-3 that are
> >     not currently allocated are reserved for backwards compatibility.
>
> Unless I misunderstand the compatibility mechanisms here, the 
reservation of
> first byte=0-6 seems to assume that no further assignments will be 
made from
> the "TLS HashAlgorithm Registry" (after 4492bis lands). If this is 
the case, I
> would expect the IANA considerations section to include a request 
that the IANA
> close the table to further registrations. The same comment applies 
to TLS

> SignatureAlgorithm Registry.

Agreed, but I'd like to hear from the chairs.



I think we're still waiting to hear from the chairs on this topic.

/a

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


Re: [TLS] Eric Rescorla's Discuss on draft-ietf-tls-dnssec-chain-extension-06: (with DISCUSS and COMMENT)

2018-03-12 Thread Ilari Liusvaara
On Mon, Mar 12, 2018 at 02:29:55PM -0400, Paul Wouters wrote:
> On Mon, 5 Mar 2018, Willem Toorop wrote:
> 
> > No Paul, the division in sections is irrelevant for a verifier.  The
> > only bit of information in a DNS message that is used by a verifier is
> > the question.  From the question, validation starts and the relevant
> > records are followed and verified.  But the question section is also not
> > needed as the question can be derived from the name and port of the
> > service, i.e. ._tcp.. TLSA
> > 
> > The order described in the draft is both an optimization to reduce the
> > number of times a verifier has to go over the RRs, and it makes the
> > content easier to read (and understand) for humans too.
> > 
> > Also, for non existence answers, DNSSEC validators (and thus also a
> > verifier for the chain extension) simply ignore the DNS message header.
> > Proof of non-existence can and must be derived from the set of RRs in
> > the message body/sections too.
> 
> Willem (and Shumon and Viktor) have convinced me the DNS Header and
> Sections are not needed.
> 
> > The extension already supports Denial of Existence proof b.t.w., because
> > it is also needed for wildcard expansions (which are supported).
> 
> The issue here is the requirement of the TLS server to send these
> records in the absence of any TLS record. This allows the clients to
> detect a rogue webserver cert that is valid in webPKI but not valid
> based on DANE. Without this commitment, the TLS extension does not
> really work, as it can be omitted by an attacker.


One idea for adding pinning:

- Add pinned flag to the client request structure. This is set if
  the client has the server pinned, otherwise clear.
- Add max_age field to the server response structure.
- If max_age=0, the payload can either be authenticated TLSA RRset or
  proof no such thing exists. Any sent RRset applies to current
  connection. In either case, the pin breaks immediately.
- If max_age>0, the payload must be TLSA RRset. The TLSA RRset
  appiles to this connection. Pin the name as requiring this extension
  for next max_age seconds.
- Add security consideration that sending TLSA RRsets with max_age=0
  is vulernable to downgrade attacks.

The reason for the flag in client request is to tell the server if
it should bother sending ADoE back or not.


Also, could cached_info extension be extended to cover data for this
extension? It would save some bandwidth...


-Ilari

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


Re: [TLS] Adam Roach's Yes on draft-ietf-tls-tls13-26: (with COMMENT)

2018-03-12 Thread Sean Turner


> On Mar 12, 2018, at 19:58, Adam Roach  wrote:
> 
> On 3/7/18 12:58 PM, Eric Rescorla wrote:
>> > >  -  TLS SignatureScheme Registry: Values with the first byte in the
>> > > range 0-253 (decimal) are assigned via Specification Required
>> > > [RFC8126].  Values with the first byte 254 or 255 (decimal) are
>> > > reserved for Private Use [RFC8126].  Values with the first byte in
>> > > the range 0-6 or with the second byte in the range 0-3 that are
>> > > not currently allocated are reserved for backwards compatibility.
>> >
>> > Unless I misunderstand the compatibility mechanisms here, the reservation 
>> > of
>> > first byte=0-6 seems to assume that no further assignments will be made 
>> > from
>> > the "TLS HashAlgorithm Registry" (after 4492bis lands). If this is the 
>> > case, I
>> > would expect the IANA considerations section to include a request that the 
>> > IANA
>> > close the table to further registrations. The same comment applies to TLS
>> > SignatureAlgorithm Registry.
>> 
>> Agreed, but I'd like to hear from the chairs.
> 
> 
> I think we're still waiting to hear from the chairs on this topic.
> 
> /a

I think this got lost somewhere in the flurry of emails:

See s17 of 
https://datatracker.ietf.org/doc/draft-ietf-tls-iana-registry-updates/
We don’t close the registry because technically, if somebody really, really 
wanted to they could register values for earlier versions.

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


Re: [TLS] Adam Roach's Yes on draft-ietf-tls-tls13-26: (with COMMENT)

2018-03-12 Thread Adam Roach

On 3/12/18 5:33 PM, Sean Turner wrote:



On Mar 12, 2018, at 19:58, Adam Roach  wrote:

On 3/7/18 12:58 PM, Eric Rescorla wrote:

  -  TLS SignatureScheme Registry: Values with the first byte in the
 range 0-253 (decimal) are assigned via Specification Required
 [RFC8126].  Values with the first byte 254 or 255 (decimal) are
 reserved for Private Use [RFC8126].  Values with the first byte in
 the range 0-6 or with the second byte in the range 0-3 that are
 not currently allocated are reserved for backwards compatibility.

Unless I misunderstand the compatibility mechanisms here, the reservation of
first byte=0-6 seems to assume that no further assignments will be made from
the "TLS HashAlgorithm Registry" (after 4492bis lands). If this is the case, I
would expect the IANA considerations section to include a request that the IANA
close the table to further registrations. The same comment applies to TLS
SignatureAlgorithm Registry.

Agreed, but I'd like to hear from the chairs.


I think we're still waiting to hear from the chairs on this topic.

/a

I think this got lost somewhere in the flurry of emails:

See s17 of 
https://datatracker.ietf.org/doc/draft-ietf-tls-iana-registry-updates/
We don’t close the registry because technically, if somebody really, really 
wanted to they could register values for earlier versions.


Ah, thanks for the pointer. I don't agree with your evaluation that 
draft-ietf-tls-iana-registry-updates preserves the ability to register 
values for earlier versions, as it marks all remaining available 
codepoints "reserved." That's effectively equivalent to what I'm asking 
for, though, so my comment is addressed. There's still a potential mess 
brewing for the HashAlgorithm codepoints 224 though 253 colliding with 
SignatureScheme values of 0xE000 - 0xFDFF, but it seems pretty unlikely 
that SignatureScheme allocations will reach that point before 1.2 and 
previous versions disappear.


/a

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


Re: [TLS] Adam Roach's Yes on draft-ietf-tls-tls13-26: (with COMMENT)

2018-03-12 Thread Sean Turner


> On Mar 12, 2018, at 22:46, Adam Roach  wrote:
> 
> On 3/12/18 5:33 PM, Sean Turner wrote:
>> 
>>> On Mar 12, 2018, at 19:58, Adam Roach  wrote:
>>> 
>>> On 3/7/18 12:58 PM, Eric Rescorla wrote:
>>  -  TLS SignatureScheme Registry: Values with the first byte in the
>> range 0-253 (decimal) are assigned via Specification Required
>> [RFC8126].  Values with the first byte 254 or 255 (decimal) are
>> reserved for Private Use [RFC8126].  Values with the first byte in
>> the range 0-6 or with the second byte in the range 0-3 that are
>> not currently allocated are reserved for backwards compatibility.
> Unless I misunderstand the compatibility mechanisms here, the reservation 
> of
> first byte=0-6 seems to assume that no further assignments will be made 
> from
> the "TLS HashAlgorithm Registry" (after 4492bis lands). If this is the 
> case, I
> would expect the IANA considerations section to include a request that 
> the IANA
> close the table to further registrations. The same comment applies to TLS
> SignatureAlgorithm Registry.
 Agreed, but I'd like to hear from the chairs.
>>> 
>>> I think we're still waiting to hear from the chairs on this topic.
>>> 
>>> /a
>> I think this got lost somewhere in the flurry of emails:
>> 
>> See s17 of 
>> https://datatracker.ietf.org/doc/draft-ietf-tls-iana-registry-updates/
>> We don’t close the registry because technically, if somebody really, really 
>> wanted to they could register values for earlier versions.
> 
> Ah, thanks for the pointer. I don't agree with your evaluation that 
> draft-ietf-tls-iana-registry-updates preserves the ability to register values 
> for earlier versions, as it marks all remaining available codepoints 
> "reserved." That's effectively equivalent to what I'm asking for, though, so 
> my comment is addressed.

Subtly different but I’m glad you’re good with this ;)

> There's still a potential mess brewing for the HashAlgorithm codepoints 224 
> though 253 colliding with SignatureScheme values of 0xE000 - 0xFDFF, but it 
> seems pretty unlikely that SignatureScheme allocations will reach that point 
> before 1.2 and previous versions disappear.

i may have been lazy when I just did 9-223.  We could obviously remove this by 
marking 224-253 reserved for both the HashAlgorithm and SignatureAlgorithm 
registries.  Note that there are also other unassigned values in 4-6 in 
SignatureAlgorithms and 7 in HashAlgorithm that should/could also be marked 
reserved.  But, we can do that on the IANA draft in early April.

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