Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Yoav Nir

On Oct 11, 2015, at 8:53 AM, Dave Garrett  wrote:

> From a perspective to get it to work with the bare minimum needed, it's 
> excessive. From a perspective of killing SHA-1 wherever viable, it is not.

I don’t think killing SHA-1 wherever viable should be a goal of this document. 
A certificate is a credential. It can be used in multiple protocols, standard 
and proprietary. Whether the certificate is trusted or not is up to the relying 
party regardless of what protocols that relying party uses. It is not for the 
TLS spec to dictate what properties a certificate should have, except when 
those properties make a difference for the protocol. So if we’re removing DSA 
from the spec, and have not yet standardized EdDSA signatures, it makes sense 
to require that the public key (not the signature!) in the certificate be 
either RSA or ECDSA. I don’t think it’s reasonable to require stuff that 
doesn’t enter the protocol.

> Any continued legitimate allowance of a deprecated hash perpetuates other 
> possible continued allowances, even if the one in question is viable under 
> some specific circumstance.
> 
> The goal I'm aiming for is SHA-1 being restricted to TLS 1.2

And assuming that TLS 1.3 has better security than TLS 1.2, how does this goal 
help security on the Internet?

We are not in charge of the Internet. We are only engineering some protocols 
that we hope the implementers will find useful. The industry *is* moving away 
from signing certificates with SHA-1, but that decision is being made elsewhere.

Yoav


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


[TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Rick van Rein
Hello TLS WG,

I would like to propose new CipherSuites for TLS.  The cryptography is
founded on Kerberos authentication and DH encryption, cryptographically
bound together.  The mechanism uses mutual authentication, although
clients may use anonymous tickets.

Any feedback that you may have (technical, or WG-procedural) is kindly
welcomed.  I will also send this to the Kitten WG.

Thanks,
Rick van Rein
> *From:* internet-dra...@ietf.org
> *Date:* 1 October 2015 18:54
> *To:* "Rick van Rein" , "Rick van Rein"
> 
> *Subject:* New Version Notification for draft-vanrein-tls-kdh-00.txt
> A new version of I-D, draft-vanrein-tls-kdh-00.txt
> has been successfully submitted by Rick van Rein and posted to the
> IETF repository.
>
> Name: draft-vanrein-tls-kdh
> Revision: 00
> Title:TLS-KDH: Kerberos + Diffie-Hellman in TLS
> Document date:2015-10-01
> Group:Individual Submission
> Pages:26
> URL:
> https://www.ietf.org/internet-drafts/draft-vanrein-tls-kdh-00.txt
> Status: https://datatracker.ietf.org/doc/draft-vanrein-tls-kdh/
> Htmlized:   https://tools.ietf.org/html/draft-vanrein-tls-kdh-00
>
>
> Abstract:
>This specification extends TLS with a Kerberos-based method of mutual
>authentication, and binds in Diffie-Hellman to achieve Perfect
>Forward Secrecy for the session.

> The IETF Secretariat
>

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


Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Ilari Liusvaara
On Sun, Oct 11, 2015 at 09:25:10AM +0200, Rick van Rein wrote:
> > *From:* internet-dra...@ietf.org
> >
> > Name:   draft-vanrein-tls-kdh
> > Revision:   00
>
> Hello TLS WG,
> 
> I would like to propose new CipherSuites for TLS.  The cryptography is
> founded on Kerberos authentication and DH encryption, cryptographically
> bound together.  The mechanism uses mutual authentication, although
> clients may use anonymous tickets.
> 
> Any feedback that you may have (technical, or WG-procedural) is kindly
> welcomed.  I will also send this to the Kitten WG.

Some quick comments:
- The signed DH share does not look to be bound to anything (crypto
  parameters negotiation, randoms, server key exchange, etc..). I can't
  offhand say what that would lead to, but it looks even worse than
  TLS ServerKeyExchange, which has known vulernabilities due to
  lack of binding to things like ciphersuite.
- The ciphersuite list looks bad: 1) IDEA (bad idea), CBC
  (don't use), apparent SHA-1 prf-hash (REALLY bad idea)[1][2].
- Even use of DH is questionable.


[1] All the current ciphersuites have SHA-256 or SHA-384 prf-hash
(the prf-hash of existing ciphers was grandfathered as SHA-256,
even if the name has _SHA or _MD5).

[2] AFAIK, proving security properties of TLS against active
attack needs assumption that prf-hash is secure. And we know
SHA-1 isn't.


-Ilari

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


Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Viktor Dukhovni
On Sun, Oct 11, 2015 at 02:01:59AM -0400, Dave Garrett wrote:

> On Sunday, October 11, 2015 01:53:34 am Dave Garrett wrote:

> > If the trust model doesn't need the problematic portion of the chain,
> > then the chain is not trustworthy and this does not apply.
>
> Sorry, follow-up to fix a rather critical typo from a double negative.
> The "is not trustworthy" was meant to be "is not untrustworthy". If the
> trust model doesn't need a part to trust the peer, then it's not untrusted;
> it's irrelevant. The overall chain can be trustworthy regardless of what's
> in parts it doesn't care about.

Yes, of course.

-- 
Viktor.

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


Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Watson Ladd
On Sun, Oct 11, 2015 at 8:17 AM, Ilari Liusvaara
 wrote:
> On Sun, Oct 11, 2015 at 09:25:10AM +0200, Rick van Rein wrote:
>> > *From:* internet-dra...@ietf.org
>> >
>> > Name:   draft-vanrein-tls-kdh
>> > Revision:   00
>>
>> Hello TLS WG,
>>
>> I would like to propose new CipherSuites for TLS.  The cryptography is
>> founded on Kerberos authentication and DH encryption, cryptographically
>> bound together.  The mechanism uses mutual authentication, although
>> clients may use anonymous tickets.
>>
>> Any feedback that you may have (technical, or WG-procedural) is kindly
>> welcomed.  I will also send this to the Kitten WG.
>
> Some quick comments:
> - The signed DH share does not look to be bound to anything (crypto
>   parameters negotiation, randoms, server key exchange, etc..). I can't
>   offhand say what that would lead to, but it looks even worse than
>   TLS ServerKeyExchange, which has known vulernabilities due to
>   lack of binding to things like ciphersuite.
> - The ciphersuite list looks bad: 1) IDEA (bad idea), CBC
>   (don't use), apparent SHA-1 prf-hash (REALLY bad idea)[1][2].
> - Even use of DH is questionable.

I would suggest piggybacking on the PSK mode, using the key Kerberos
provides at both ends as the PSK key. This would address all of these
issues in TLS 1.3

Sincerely,
Watson

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


Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Eric Rescorla
This seems like a good approach.

-Ekr


On Sun, Oct 11, 2015 at 6:46 AM, Watson Ladd  wrote:

> On Sun, Oct 11, 2015 at 8:17 AM, Ilari Liusvaara
>  wrote:
> > On Sun, Oct 11, 2015 at 09:25:10AM +0200, Rick van Rein wrote:
> >> > *From:* internet-dra...@ietf.org
> >> >
> >> > Name:   draft-vanrein-tls-kdh
> >> > Revision:   00
> >>
> >> Hello TLS WG,
> >>
> >> I would like to propose new CipherSuites for TLS.  The cryptography is
> >> founded on Kerberos authentication and DH encryption, cryptographically
> >> bound together.  The mechanism uses mutual authentication, although
> >> clients may use anonymous tickets.
> >>
> >> Any feedback that you may have (technical, or WG-procedural) is kindly
> >> welcomed.  I will also send this to the Kitten WG.
> >
> > Some quick comments:
> > - The signed DH share does not look to be bound to anything (crypto
> >   parameters negotiation, randoms, server key exchange, etc..). I can't
> >   offhand say what that would lead to, but it looks even worse than
> >   TLS ServerKeyExchange, which has known vulernabilities due to
> >   lack of binding to things like ciphersuite.
> > - The ciphersuite list looks bad: 1) IDEA (bad idea), CBC
> >   (don't use), apparent SHA-1 prf-hash (REALLY bad idea)[1][2].
> > - Even use of DH is questionable.
>
> I would suggest piggybacking on the PSK mode, using the key Kerberos
> provides at both ends as the PSK key. This would address all of these
> issues in TLS 1.3
>
> Sincerely,
> Watson
>
> ___
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Viktor Dukhovni
On Sun, Oct 11, 2015 at 01:53:34AM -0400, Dave Garrett wrote:

> On Sunday, October 11, 2015 01:08:41 am Viktor Dukhovni wrote:
> > Is this clear yet?
> 
> It's clear, but we disagree on a few points here.

It is important to keep in mind that the TLS protocol specification
has a reasonably well defined scope and must not intrude on matters
that lie outside that scope.

In particular, the TLS 1.3 protocol, when not performing PSK
resumption, carries a sequence of "certificates" whose first element
(possibly in fact a bare public key) signs the protocol key exchange.

The protocol tries to be helpful by providing certificates that
the peer will understand.  Therefore, the peer's list of supported
signature algorithms, whose primary purpose is to negotiate a
mutually supported PRF, is overloaded to help in certificate chain
selection.  When multiple choices of certificate chain are available
(quite rare at present) to a peer, "the best" one can be selected.

Beyond that however, it is not the TLS protocol's job to preempt
a peer's decision as to whether a given sequence of "certificates"
is trustworthy or even well formed.  That responsibility falls on
related higher-level protocols (PKIX 5280, Peer name checks RFC
6125, DANE 6698 as imminently updated by RFC 7671).

> From a perspective to get it to work with the bare minimum needed, it's
> excessive.  From a perspective of killing SHA-1 wherever viable, it is not.

Is is not appropriate mission for the TLS WG to launch a wider
anti-SHA1 crusade.  The TLS WG just needs to just avoid SHA-1
problems in the TLS protocol itself (PRFs, ...).  Avoiding SHA-1
in PKIX is outside this group's purview.

Yes, libraries that implement both TLS and PKIX and provide
applications with active-attack resistant "secure channels" will
should avoid trusting SHA-1 in PKIX, and I'm fine with a narrow
statement that the peer chain verification code in such libraries
should not trust SHA-1 issued certificates when negotiating TLS
1.3.  However the TLS specification MUST NOT preempt that verifier's
responsibility at the supplicant.

> Any continued legitimate allowance of a deprecated hash perpetuates other
> possible continued allowances, even if the one in question is viable under
> some specific circumstance.

See above, no crusades.

> The goal I'm aiming for is SHA-1 being restricted to TLS 1.2, with the
> exception of self-signed roots.

A lofty goal, but one that thoroughly exceeds the scope of the TLS
protocol.  SHA-1 must also be allowed in non-root certs, provided
the peer does not trust them (possibly does not need them at all).
This is something only the peer can know.

> In fact,
> two endpoints exchanging certs using SHA1 with intent to directly trust
> certs is allowed with this wording. Shots-in-the-dark using SHA1 from
> general-purpose servers are not. I think you wish to allow this last case;
> I do not.

I'm afraid this wish exceeds the proper scope of what the TLS
protocol can properly specify.

> If the trust model doesn't need the problematic portion of the chain, then
> the chain is not trustworthy and this does not apply.

This decision fundamentally belongs on the verifier side, and
therefore, it is NOT up to the sender to make it, nor is incumbent
on the verifier to reject the handshake because the chain sent
contains certificate with some algorithm it does not support if it
ends up not needing (to trust or use) those certificates.

> Also note that it
> is merely saying that _if_ the client chooses to abort the handshake, that
> _then_ it must alert and abort, and then specifies which abort should be
> used. If the client does not decide to abort the handshake, then the
> _entire_ portion above is not applicable (no abort, because acceptable in
> its trust model, therefor no alert for the trustworthy chain), which is
> exactly what you're requesting.

We already know what verifiers should do when they don't trust a
peer's credentials.  Nothing new applies when that's due do an
unsupported signature algorithm.

> > This is fine, and applies to TLS PRFs, ... but the certificate
> > chain can still contain (untrusted) SHA-1 signatures even with TLS
> > 1.3.
> 
> Yes. The certificate list can contain untrusted stuff, but the whatever
> it builds out of that to trust cannot rely on it at any point. (e.g. can
> trust a chain with a root w/ SHA1 or directly trust such a cert, but not
> a link with a SHA1 sig)

This is something we agree on, so the pull request needs to limit itself
to *exactly* this.  Any trusted chain constructed by a TLS 1.3 peer cannot
contain issuer->subject links that employ SHA-1 signatures.

If you narrowly say just this, without making any other changes, I'm
on board.

> > +MD5 hashes MUST NOT be used in any certificate in any TLS version, and 
> > any
> > +implementation MAY reject any such certificate, without further 
> > inspection.
> > 
> > Again this is simply too strong.  Just like SHA-1, MD5 is not
> > trusted.  Its pres

Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Viktor Dukhovni
On Sun, Oct 11, 2015 at 01:24:36PM -0400, Dave Garrett wrote:

> > Is is not appropriate mission for the TLS WG to launch a wider
> > anti-SHA1 crusade.  The TLS WG just needs to just avoid SHA-1
> > problems in the TLS protocol itself (PRFs, ...).  Avoiding SHA-1
> > in PKIX is outside this group's purview.
> 
> Every time something is "someone else's problem", it is ensured that the
> problem will not be properly fixed. Security is only as strong as the
> weakest link in the chain, and thus I don't believe a philosophy of complete
> separation of roles is realistic, especially in a world where upgrades
> and fixes are still deployed slowly and badly.

And yet despite your best intentions, defining the semantics of
the certificates *carried* by TLS (but specified elsewhere and
possibly irrelevant to the verifier) is properly outside the purview
of the TLS WG.  We can suggest that in TLS 1.3 SHA-1 signatures
should not be trusted because they are too weak by comparison with
the algorithms used elsewhere in TLS 1.3, we cannot say that peers
must abort handshakes carrying certs with signature algorithms
employing SHA-1, MD5 or even hypothetically CRC-32 certificates on
sight.

> > See above, no crusades.
> 
> Calling the goal of phasing out known-bad features a "crusade" is not
> really helpful. I'm perfectly fine with stating that SHA-1 is reasonable
> to allow in areas where it needs to be for continued transition. It,
> however, should require justification to keep allowance rather than to
> remove.

And yet what you propose is a crusade.  You're no longer looking
at TLS.  You're suggesting we constrain choices outside of TLS,
because we know better, but we don't know better, because TLS has
no knowledge of the application trust model.  So TLS does not get
to dictate which offered certificate chains are to be rejected and
which accepted.  The best we can do is to specify which parameters
are too weak to include in such decisions when and if processing
chain elements that contain such parameters.


> > SHA-1 must also be allowed in non-root certs, provided
> > the peer does not trust them (possibly does not need them at all).
> > This is something only the peer can know.
> 
> If we consider the certificate authenticated cipher suite scenario within
> TLS to expect this to be the common case, then that gives the false
> impression that admins don't "have" to upgrade because they're "usable".

Nothing of the sort.  We've agreed that TLS 1.3 clients won't trust
SHA-1.  We need to stop there.  We have no choice.  We might like
to be able to be beneficent dictators, but that's not an option.

> > This is something we agree on, so the pull request needs to limit itself
> > to *exactly* this.  Any trusted chain constructed by a TLS 1.3 peer cannot
> > contain issuer->subject links that employ SHA-1 signatures.
> 
> Essentially, our disagreement is just what to do on the server side of
> things. I'm saying the server should be required to send non-obsolete
> certificates and not allowed to assume clients might be able to trust
> non-root certs directly, as this is not the dominant way certificate
> authentication is done.

The difference goes further, yes the server must not unilaterally
deny access to a configured SHA-1 chain, but also the client must
not out of hand reject the transmission of such a chain just because
SHA-1 is found.  Rather the client optionally (but typically)
attempts to authenticate the server's certificates, and if that
requires using a SHA-1 cert it might stops there given suitable
requirements in the TLS 1.3 draft, but if none of the presented
SHA-1 certs were needed, then all's well that ends well.  This
subsumes all the use-cases in which some or all of the server's
certificates go unused.

> > Well, this "MAY" is in fact used incorrectly in Schannel, which
> > aborts connections with opportunistic TLS SMTP clients that present
> > client certs that include CAcert's MD5 self-signed root.
> 
> Why on Earth is anyone still using an MD5 self-signed root? Regardless,
> "non-root" is acceptable here, if that's sadly still a concern.

Ask CAcert.org whose 4096-bit root CA is self-signed with MD5 for
no good reason whatsoever.  And yet there's no problem with that,
the cert is slightly smaller that way, and the self-signature plays
no role in security.

> When talking about MD5 still being around, I'm inclined to consider it
> acceptable collateral damage to avoid presenting a false sense of security,
> though if the land of half-assed email transport security is still this
> bad, then this may not be ideal.

Your "half-assed" is my impressive success, ~80% of outbound email
from Google, that used to go in clear is now encrypted.  What
fraction of HTTP sites have migrated from cleartext?

> The correct course of action is of course
> to not support this connection at all, but that requires more commitment
> than developers are willing to make to security. That lack of will is
> _why_ I'm argui

Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Paul Wouters


> On Oct 11, 2015, at 09:46, Watson Ladd  wrote:
> 
> 
> I would suggest piggybacking on the PSK mode, using the key Kerberos
> provides at both ends as the PSK key. This would address all of these
> issues in TLS 1.3
> 

Which would also match how Kerberos is used in IKE/IPsec

Paul

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


Re: [TLS] Fwd: New Version Notification for draft-sheffer-tls-pinning-ticket-00.txt

2015-10-11 Thread Daniel Kahn Gillmor
Hi Yaron--

On Sun 2015-10-11 15:57:38 -0400, Yaron Sheffer wrote:
> We have a standard for certificate pinning (RFC 7469), but it is rather 
> hard to use and as a result is rarely deployed. This draft proposes a 
> lightweight alternative that allows TLS clients to authenticate the 
> server they're connecting to, even if a rogue CA can generate fake 
> certificates for that server.
>
> The draft is currently TLS 1.3-only, and is based on the previous draft 
> of 1.3 so some minor details may have changed.

I've only just skimmed thus far, but i'm happy to see this proposal.  A
few comments below:

TACK


As you note in the draft, it addresses a similar problem as TACK, which
never made it through the standards process:

  http://tack.io/draft-tack.html

perhaps it would be useful to have a section next to the Comparison:
HPKP that included a Comparison: TACK ?


(dis)similarity to session tickets
--

In the session-ticket case, most servers (clustered or otherwise) can
afford to treat their session ticket master keys as ephemeral keys -- if
the server is restarted or dies and is re-installed, the worst that
happens is that a client doesn't get to resume their session -- they
have to open a new connection.

If the session ticket resumption master keys are used as recommended
here, it seems like the risk of master key loss is bricking the server,
so the master key becomes necessary to store non-ephemerally.

Writing the master key to disk or storing it off-site someplace can
present a risk to the forward-secrecy of ticket-resumed sessions.

tracking the master key itself seems like it also adds specific
operational overhead for server maintainers that doesn't currently
exist.  Does this reduce the advantage of the scheme over TACK or HPKP?
if not, can you explain why not?



Client Privacy
--

section 6.6 says "TODO", and page 5 says:

>   The main reason for refreshing the ticket on each connection is
>   privacy: to avoid the ticket serving as a fixed client
>   identifier.  It is RECOMMENDED to include a fresh ticket with
>   each response.

If the participating client wants privacy from the server (to avoid the
server using this to track the client) but also wants defense against
broken CAs, how does recomending this behavior from the server actually
allow the client to enforce privacy?

The server is trivially capable of tying together a history of
pinning_ticket objects to track specific clients, right?  it just
remembers the two tickets involved every time it generates a
PinningTicket extension.  If the pinning tickets returned by the server
are different each time, the client cannot know whether the server is
doing this tracking or not.


public key vs. certificate
--

In your introduction (and in the mail above), you refer to "certificate
pinning" -- but i don't think there is anything out there that is
"certificate pinning" -- HPKP is public key pinning, and it ignores the
certificates that wrap any given public key.  So your tables should
really refer to "main public key" and "backup public key", not "main
certificate" or "backup certificate".


HPKP example workflow
-

Your HPKP timeline seems to assume that your "old backup certificate"
can't be used as your "new main certificate" -- what makes you say this?

I agree with you that HPKP end-entity pinning generally makes more sense
(and is more useful at defending against malicious/incompetent CAs) than
authority pinning.  But I'd expect an HPKP timeline using end-entity
pinning to be more like:

lower-case letters are public keys.  we presume that the site
administrator has the corresponding secret keys backed up
offsite/offline somewhere, and the associated certs and secret keys
needed to operate the web site get deployed as needed.

Initial deployment:


 HPKP: { a, b }  Cert: A = X.509-wrapped(a)  

as A approaches expiry, we generate a new key c (storing its secret key
offline), get a new cert made over b, and switch to:

 HPKP: { b, c }  Cert: B = X.509-wrapped(b)

As B approaches expiry, we do the same dance, generating d and making a
cert over c:

 HPKP: { c, d }  Cert: C = X.509-wrapped(c)

and so on.

Does this simpler cycle change your analysis of HPKP?

I tend to think HPKP deployment has been slow because:

 (a) the risk of bricking the site makes admins (justifiably) nervous

 (b) having to have an additional offsite store (of your HPKP backup
 secret key) to avoid site-bricking is a workflow that most admins
 don't already have in place.

But i don't think your proposal addresses these issues either (though
the data stored offsite for (b) is slightly different between your
proposal and HPKP).  Does it address them in some way that i'm missing?

Regards,

 --dkg


signature.asc
Description: PGP signature
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/li

Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Viktor Dukhovni

> On Oct 11, 2015, at 3:59 PM, Dave Garrett  wrote:
> 
> On Sunday, October 11, 2015 02:17:17 pm Viktor Dukhovni wrote:
>> Please start with a sensibly minimal proposal that achieves the
>> essential goal of deprecating *trust* in SHA-1.  Please do not
>> overreach by requiring not sending SHA-1 or aborting when receiving
>> SHA-1.  This is adds nothing of value, just needlessly breaks
>> legitimate (yes non-primary) TLS use-cases.
> 
> It's getting lost in the long replies, but again, we have already said we 
> both agree with clients not aborting on receiving SHA-1 if trust doesn't rely 
> on it.

Excellent, I'm ready to +1 a PR that says just that and no more for clients.

> I am merely saying that TLS 1.3 servers should consider a certificate chain 
> which does not rely on obsolete hashes as a prerequisite to use certificate 
> authenticated cipher suites. Sorry, but I do not think this is unreasonable. 
> Allowing otherwise is, in my view, an unnecessary risk and should not be the 
> default assumption.

Well, since anon_DH suites just got removed, and not all servers support them 
anyway, clients that don't check certificates will still request "certificate 
authenticated ciphesuites".  So the server has no idea whether its certificates 
are relevant or not, and must not prevent their transmission if that's all it 
has.

> With regard to MD5, I think it's reasonable to allow (not require) 
> implementations to distrust based solely on that. Note that this is _reduced_ 
> from the _current_ draft which has mandatory rejection of all MD5, as I agree 
> that clarifying that ignoring it when not applicable (e.g. bonkers MD5 root) 
> can be valid.

We improve nothing by restricting the content of chain elements that are not 
used to build trust.  This just promotes the kind of needless failures that I 
see with opportunistic TLS in Schannel.  Sometimes more is less and less is 
more.

Pointless restrictions lead to fallback to even worse choices.

>> Soon enough the trusted CAs will stop issuing certs with SHA-1 in
>> them, and the problem goes away at that layer.
> 
> Organizations can run their own CAs for private use. It's not just about the 
> big public ones. Allowing TLS servers to send SHA-1-reliant chains means 
> considering this to be valid forever.

Yes, but they won't be trusted per the core limitation we've already agreed on. 
 The remaining issue is whether to prohibit the transmission of such chains, 
and the answer is an unequivocal NO.  Not trusting is plainly sufficient, and 
strictly better, by not breaking (downgrading) use-cases in which the 
certificates are otherwise ignored.

> Someone should not be able to blindly upgrade their system to TLS 1.3 and not 
> even notice that they're still sending SHA-1-reliant chains. One thing we 
> should have all learned over the past couple years is that proper design 
> requires making mistakes less possible, not merely labeling things as 
> potentially unsafe and delegating them appropriately.

They'll notice right away if the client stops trusting them and is doing 
authentication.  If the client was not doing authentication it will continue to 
not do authentication (ignore the certs regardless of the signature algorithm).

In your zeal to stamp out SHA-1 you're not going through the case analysis to 
see that prohibiting less is strictly better.

>> Nothing of the sort.  We've agreed that TLS 1.3 clients won't trust
>> SHA-1.  We need to stop there.  We have no choice.  We might like
>> to be able to be beneficent dictators, but that's not an option.
> 
> There's always a choice. Perpetuating all design assumptions in a 20 year old 
> protocol ensures perpetuating all chronic flaws that it produces. Each layer 
> cannot blindly trust the other and expect to work in a complex system. It's 
> not that simple anymore.

Yes, we could publish a protocol that shoots itself in the foot and achieves 
strictly less security than it otherwise would, and would be less 
interoperable.  I'm not going to sit idly by and let that happen.  Expect 
objections at every step of the way...

> Case in point: HTTP/2 has a messy set of TLS restrictions because this WG 
> decided against creating a TLS 1.2.1 it could require. Yes, it's not the 
> application layer's role to be picking security settings like that, but the 
> layer it relies on abdicated its role in maintaining a current version with a 
> full set of known-safe configurations. Sure, we may want to "get it right" 
> with TLS 1.3 to get ideal adoption rates, but that doesn't change the fact 
> that HTTP had a problem with its security layer that it needed fixing. 
> Likewise, we cannot safely trust the next layer down in full, because there 
> is no overriding standard to mandate only known-safe configurations, so here 
> we are debating how to best sanity-check cert chains. It's even messier than 
> HTTP, as TLS is the one negotiating the supported algorithms here, so it is 
> not even a fully sepa

Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Viktor Dukhovni
On Sun, Oct 11, 2015 at 07:13:03PM -0400, Dave Garrett wrote:


> A wording change might be helpful here. Instead of no sending of SHA1 certs:
> 1) SHA1 signatures must not be trusted

Excellent.

> 2) servers must not send cert chains they do not trust

Pointless overreach that breaks things.

> Yes, I know you'll say that the client can of course trust things the
> server might not be able to, but the core of what I'm concerned about is
> servers making an attempt to get clients to accept a chain it knows very
> well is not trustworthy and thus encourage implementations to accept it
> anyway.

You're still ignoring the fact that in many environments the client
(correctly) does not validate the chain via trust-anchors of any
kind, so signatures of certificates by some "issuer" are of interest
to the client.  There is no reason for the server to avoid sending
the chain even if some "signer" in the chain happened to use SHA-1.

At a minimum a leaf cert signed with SHA-1 may still be valid by
means other than trust of its signature.

> > They'll notice right away if the client stops trusting them and is doing 
> > authentication.
> 
> "if"
> If servers keep on sending SHA1 indefinitely, we risk clients keep on 
> accepting SHA1 indefinitely, no matter what it says in the spec.

Some implementations might even ignore any misguided text telling
them to not send the chain. :-)  We can't design for non-conformant
implementations.  You sure want that cherry on top.  However right
it might feel, it would still be counterproductive.


> > Once clients don't get to advertise SHA-1 in supported algorithms, servers 
> > will use SHA-1 only when they have nothing else to offer.
> 
> If servers still commonly send SHA-1, then clients will never stop offering 
> support for it.

No, that conclusion is unwarranted.  TLS 1.3 clients will not trust
SHA-1.  All the key implementors are reading this interminable
thread.  They understand the issues.  If we get consensus for at
least the minimal version (no trust in SHA-1) we're done.  There's
no reason for pessimism, we're not trying to deprecated deployed
functionality, there is no TLS 1.3 deployed base.  We can start
"clean" and keep it that way.

> > Breaking opportunistic TLS connections typically leads to cleartext
> > fallback (not progress).
> 
> Prohibiting TLS 1.3 implementations from using SHA1 certs does not break
> OE.  

It does when the SHA-1 leaf certificate is pinned, and/or the server
has nothing else to send, and its clients rightly don't care.

> > Where's the win in you're proposing beyond a "feel good" posture that've 
> > deprecated SHA-1 "harder".
> 
> My goal is to have fewer systems using SHA1 within a reasonable timeframe.

That happens automatically in the minimal version of the PR.

1.  Recall that the SHA-1 certs are not trusted by TLS 1.3
clients, so the vast majority of servers will need SHA2-256 certs.

2.  Recall that public CAs are phasing out SHA-1 certs sooner
than a non-negligible number of systems is likely to deploy
TLS 1.3

> The current TLS 1.3 draft completely delegates that issue away in a manner
> which does not put any onus on servers to upgrade, instead relying entirely
> on unspecified outside forces to deal with the issue (e.g. CA/Browser
> Forum; clients hopefully saying no, eventually).

We've agreed to require clients to not trust SHA-1 signatures.  That's
quite enough, and is a smaller, simpler change.

-- 
Viktor.

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


Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Hugo Krawczyk
On Sun, Oct 11, 2015 at 9:46 AM, Watson Ladd  wrote:

> On Sun, Oct 11, 2015 at 8:17 AM, Ilari Liusvaara
>  wrote:
> > On Sun, Oct 11, 2015 at 09:25:10AM +0200, Rick van Rein wrote:
> >> > *From:* internet-dra...@ietf.org
> >> >
> >> > Name:   draft-vanrein-tls-kdh
> >> > Revision:   00
> >>
> >> Hello TLS WG,
> >>
> >> I would like to propose new CipherSuites for TLS.  The cryptography is
> >> founded on Kerberos authentication and DH encryption, cryptographically
> >> bound together.  The mechanism uses mutual authentication, although
> >> clients may use anonymous tickets.
> >>
> >> Any feedback that you may have (technical, or WG-procedural) is kindly
> >> welcomed.  I will also send this to the Kitten WG.
> >
> > Some quick comments:
> > - The signed DH share does not look to be bound to anything (crypto
> >   parameters negotiation, randoms, server key exchange, etc..). I can't
> >   offhand say what that would lead to, but it looks even worse than
> >   TLS ServerKeyExchange, which has known vulernabilities due to
> >   lack of binding to things like ciphersuite.
> > - The ciphersuite list looks bad: 1) IDEA (bad idea), CBC
> >   (don't use), apparent SHA-1 prf-hash (REALLY bad idea)[1][2].
> > - Even use of DH is questionable.
>
> I would suggest piggybacking on the PSK mode, using the key Kerberos
> provides at both ends as the PSK key. This would address all of these
> issues in TLS 1.3
>

That's the right solution and this is why we need modular designs with
generic security (generic = not tailored to a specific use case). It allows
you to accommodate cases you did not necessarily think about when designing
the protocol.

Hugo



> Sincerely,
> Watson
>
> ___
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] banning SHA-1 in TLS 1.3, a new attempt

2015-10-11 Thread Dave Garrett
On Sunday, October 11, 2015 08:00:45 pm Viktor Dukhovni wrote:
> There's no reason for pessimism

Sorry, I have to laugh a bit here. :p

> we're not trying to deprecated deployed
> functionality, there is no TLS 1.3 deployed base.

Due to the fact that the vast majority of TLS implementations that will be used 
are going to be existing ones, upgraded to support TLS 1.3, yes we are 
deprecating deployed functionality for that implementation as well as their 
users.

> > Prohibiting TLS 1.3 implementations from using SHA1 certs does not break
> > OE.  
> 
> It does when the SHA-1 leaf certificate is pinned, and/or the server
> has nothing else to send, and its clients rightly don't care.

In the second case, a correct course of action for the server would be to send 
an incomplete or outright empty certificate_list fallback, in which case the 
clients that don't care will be fine with it. Pinning a SHA1 end-entiy (leaf) 
cert rather than an intermediate just seems like a bad idea that you can't 
expect to work forever. In cases where the server can't handle lack of SHA1, 
then my response is to fix that before upgrading TLS.

> > My goal is to have fewer systems using SHA1 within a reasonable timeframe.
> 
> That happens automatically in the minimal version of the PR.

We're both trying to predict possible futures with different thought processes. 
I'm concerned that the simpler course is too slow, _not_ because we need to 
rush to get rid of SHA1 certs ASAP, but because going slower requires keeping 
SHA-1 around in implementations in the interim. Even requiring settings and 
code for an algorithm at all poses an attack surface by itself (we had attacks 
on supposedly disabled features over the past year). Every known vulnerable 
feature is one which we have to be wary of getting re-enabled or left on 
accidentally. I consider this risk to be high enough to not rely on delegation 
to another layer; you think that delegation cannot be changed without excessive 
interop risk.

I'll post a follow-up question to the WG (with a changed title, as our 
discussion here got long) with the options phrased as a question with 3 main 
choices (including the option of doing nothing new). If there's no support for 
a full drop in SHA-1 support under the new version, then there won't be a point 
in pushing for it further, unless there's yet another SHA-1 revelation in the 
near future.


Dave

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


Re: [TLS] The SHA-1 Options (was: banning SHA-1 in TLS 1.3, a new attempt)

2015-10-11 Thread Dave Garrett
I'd like to get a sense of what the WG is willing to consider with regard to 
SHA-1, rather than only Viktor and myself discussing this. Basically, I see 3 
options:

Option 0: Do nothing new. SHA-1 is soft deprecated, but still a fully viable 
option in TLS 1.3 if nothing better is installed.
Option 1: Explicitly state that TLS 1.3+ clients must not trust SHA-1 
signatures (but may trust full certificates, namely roots).
Option 2: Distrust (option 1) and also prohibit endpoints from sending chains 
that rely on SHA-1 signatures to their peers when negotiating TLS 1.3. (aka, 
don't upgrade to TLS 1.3 until you've upgraded your certificates; self-signed 
roots still exempt)

No change is proposed with regard to dealing with SHA-1 under TLS 1.2 beyond 
the current state. TLS 1.3 already prohibits using SHA-1 in CertificateVerify. 
This discussion is only for TLS 1.3+ non-root certificates. The TLS 1.3 release 
is not yet near (assume we're talking about 2016, when others are phasing out 
SHA-1 more strictly as well).

I am in favor of #2, as I don't think the risk of keeping it in the spec is 
worth continued support (SHA-1 is on its way out, and TLS 1.3 shouldn't 
perpetuate its use). Viktor Dukhovni is in favor of #1, and considers 
prohibiting servers from sending SHA-1 certs to be sufficiently out-of-scope 
and not worth the interop risk (opportunistic encryption and direct trust of 
certificates, of note). Two opinions does not a working group make, so more 
input is clearly needed to move forward in any way here.

This is only a preliminary call for opinions, and certainly not a policy 
deciding vote.

The new reason to consider this:
https://sites.google.com/site/itstheshappening/
Current draft language:
https://tools.ietf.org/html/draft-ietf-tls-tls13-09#page-60
Start of the parent thread:
https://www.ietf.org/mail-archive/web/tls/current/msg17956.html



Dave

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


Re: [TLS] The SHA-1 Options (was: banning SHA-1 in TLS 1.3, a new attempt)

2015-10-11 Thread Ryan Sleevi
On Sun, October 11, 2015 7:43 pm, Dave Garrett wrote:
>  I'd like to get a sense of what the WG is willing to consider with regard
>  to SHA-1, rather than only Viktor and myself discussing this. Basically, I
>  see 3 options:
>
>  Option 0: Do nothing new. SHA-1 is soft deprecated, but still a fully
>  viable option in TLS 1.3 if nothing better is installed.
>  Option 1: Explicitly state that TLS 1.3+ clients must not trust SHA-1
>  signatures (but may trust full certificates, namely roots).
>  Option 2: Distrust (option 1) and also prohibit endpoints from sending
>  chains that rely on SHA-1 signatures to their peers when negotiating TLS
>  1.3. (aka, don't upgrade to TLS 1.3 until you've upgraded your
>  certificates; self-signed roots still exempt)

My personal preference, speaking on behalf of myself and neither that of
my employer or colleagues (we are all individuals here, right? ;D), would
be Option 0.

If that's all you care to know, stop here - the rest is pontificating and
poorly articulating why :)


Background:
It's no secret I hate SHA-1. I'm accused by a number of Chrome users as
being too aggressive in the deprecation of SHA-1. I'm unquestionably
accused by CAs of being too harsh on SHA-1 - my opposition towards any
extension of SHA-1 signatures by CAs complying with the CA/Browser Forum
Baseline Requirements is unquestionable and well known.

Why would I support "do nothing"-ism, which is effectively what Option 0 is?

Two reasons:
- I agree with Viktor that TLS is a protocol for which many credential
types can be delivered, and while I have no desire nor intent to support a
number of them within Chrome (... I'm looking at you, DANE), I don't deny
their utility or viability in some circumstances and environments beyond
that of web browsers. It feels inconsistent to apply this to one specific
type of credentials, with a particular policy. This is an ideological
argument for specification purity, fundamentally, so I fully anticipate
disagreement, as is expected with such arguments.

- Simply one of complexity. The modern TLS stack, as used in Web browsers
(thus revealing my bias, as if we didn't know it already) is already hairy
and complex. HTTP/2 imposes a (much needed) profile on ciphersuite
negotiations. Browsers themselves key UI off a variety of factors
contributing to the connection, both direct (e.g. ciphersuite) and
indirect (e.g. mixed content). If we accept that browsers are only
concerned with the Web PKI (I know some wish it were otherwise), then the
WebPKI is messy, and whether or not a certificate is signed by SHA-1 is...
complex and complicated and invokes path building and cross certificates
and many of the things outside the remit of TLS.

This certificate path building and discovery depends on a variety of
factors and external resources (and here's where Martin Rex would chime in
about how awful such a state is, but let's accept it as the state of the
world today and not argue about necessity or not), and implementing such a
policy necessarily interleaves that into the connection management.

The 'gross' state of my world today, which will no doubt shock and offend,
is that in many cases and ways, the verification of the server identity is
deferred until after the overall connection has been established, before
any data is transferred over it, and before any keys, session parameters,
or overall state is persisted for reuse. The alternative to this is to do
something akin to Firefox, which does verification semi-synchronously
during handshaking, but which doesn't fetch such external resources (and
thus has a much harder time interacting with nominally 'secure' sites),
and which if it did, would trigger the various 'retry' logic to deal with
servers that time out if the handshakes fail to happen in a 'reasonable'
time.

Look, I think the deprecation of SHA-1 is a noble goal - hopefully my
bonafides are established such that few would want it more - but my
concern is that it would add significant implementation complexity to my
world, and fundamentally offer no benefit for my existing and documented
plans.

Were I (and my colleagues) to ignore such a MUST, for entirely pragmatic
and yet equally secure reasons, we'd end up cheesing off folks like Dave
and those who treat MUSTs as inviolate (reasonably and rightfully so), and
would be seen as tacitly encouraging others to ignore such MUSTs as well.
I'd like to avoid that world.

I think the reasons for such a proposal are laudable, but the pragmatic
application and interpretation of such a requirement would be
confoundingly obnoxious, and to no obvious benefit, since I (and my
counterparts at various other browser organizations) am well on my way to
killing SHA-1 within the commercial space.

So the only party left to all this is the Enterprise folk, those who will
always override a MUST with an application profile, or who will always
deal with legacy in such a way that, practically speaking, such a MUST is
toothless.

Such a r

[TLS] closing this thread: Re: The SHA-1 Options (was: banning SHA-1 in TLS 1.3, a new attempt)

2015-10-11 Thread Sean Turner
I’m going to close this thread.  We discussed SHA-1 support in TLS on the list 
and at the interim the chairs made the consensus call that PR#231 reflects the 
WG’s consensus.

Note that Stephen started a thread on the saag list about further work to 
remove SHA-1 from protocols [1]; maybe the references both Dave and Stephen 
cite will accelerate the demise of SHA-1 issued certs.

spt

[1] http://mailarchive.ietf.org/arch/msg/saag/1iiiMLJmrtEMSmghoYO6lC_xje4

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


Re: [TLS] I-D: CipherSuites for Kerberos + DH

2015-10-11 Thread Rick van Rein
Hello,

Thanks for the feedback.  Responding to it:

Ilari>   - The signed DH share does not look to be bound to anything (crypto
Ilari>   parameters negotiation, randoms, server key exchange, etc..).

This is indeed easy to miss; it relies on Kerberos infra to deliver a
short-lived session key to only the proper TLS client and TLS server.
The ticket is part of this key delivery, and can travel over untrusted
networks.

An Authenticator is built especially for each connection, and encrypted
with the session key by the TLS client.  The only other that can decrypt
it is the TLS server.  With the client DH key only known to TLS client
and TLS server, only they can construct the DH shared secret.

What remains is MITM on the server side.  This is detected when the
Finished messages are off (these have more bytes for TLS-KDH).

A alternative option to fighting MITM could be to include (a hash of)
the server-sent DH offer in the Authenticator.  Only the Kerberos-
authenticated TLS server can decrypt it, making it detect MITM.  Is
that considered benefial?

Ilari>   I can't
Ilari>   offhand say what that would lead to, but it looks even worse than
Ilari>   TLS ServerKeyExchange, which has known vulernabilities due to
Ilari>   lack of binding to things like ciphersuite.

Have I taken away these concerns?  Pointers to the known vulnerabilities
are welcome, of course.  I'm not sure what you would like to bind to
CipherSuites.

Watson>   I would suggest piggybacking on the PSK mode, using the key Kerberos
Watson>   provides at both ends as the PSK key. This would address all of these
Watson>   issues in TLS 1.3

You mean to add the short-lived session key to the pre-master secret, right?

I have a (weak) preference to leave that key behind the API to help
it being better protected.  Also, I don't think it adds much to
the security explained above.

It might be an idea to add protected fields from the Authenticator though,
such as the usec timestamp, seq-number, client name@realm.

Ilari>   - The ciphersuite list looks bad: 1) IDEA (bad idea), CBC
Ilari>   (don't use), apparent SHA-1 prf-hash (REALLY bad idea)[1][2].

Yes, this is a naive/initial list, I knew I would need to interact here
to get it pruned.  Thanks, your suggestions will be taken care of!

Ilari>   - Even use of DH is questionable.

This is mod-exp DH, on account of its need for very large keys, right?

I would love to take it out, and only leave ECDH; I put up mod-exp DH
initially because it might be desired for backward compatibility.  If
I hear no warm-felt desire for mod-exp DH I will gladly remove it.


Thanks!
 -Rick



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