Re: [TLS] Require deterministic ECDSA

2016-02-05 Thread Michael StJohns

On 1/25/2016 7:41 PM, Bill Cox wrote:
I have low expectations for IoT vendors' TRNGs.  When deadlines get 
tight, good engineering on the TRNG is easy to drop.  As long as they 
whiten the output, it is very difficult to detect TRNG flaws, so there 
is little incentive to put in much engineering.  IIRC, the FIPS 
standard requires vendors to be secretive about their TRNGs.  They are 
not allowed to give us access to the raw data from the entropy source, 
and cannot show us schematics for their design, making it nearly 
impossible to differentiate a well designed TRNG from an insecure one.



Sorry for the late response on this one...

You should take a quick look at NIST Draft SP800-90B, section 7.1 
regarding how to do validation on entropy sources.While this is 
still in draft form and doesn't yet trigger requirements in the FIPS 
validation process, I would expect it will at some point.   I would also 
expect that new designers are probably making sure that this type of 
interface is included in their products - to at least allow for the 
possibility of validation.


Of course, if an IoT vendor isn't looking for FIPS validation (or some 
other such process that requires at least a little testing), all bets 
are off.


Later, Mike

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Jacob Maskiewicz
is/should, or they're going to have other problems.

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Salz, Rich
And your lightbulb maker?  Or your stove maker?  Or your fridge?  All on coming 
IoT?
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Watson Ladd
On Mon, Jan 25, 2016 at 11:25 AM, Salz, Rich  wrote:
>> is/should, or they're going to have other problems.
>
> Really?
>
> Some high-value device that is rarely connected-to?  Like a missle?

If you can't generate 256 random bits for use as a DH key or a client
random, anyone can read the connection if they know what the random
number generator actually produced. If you can produce 256 random
bits, and the device maker was halfway competent, they should know how
to turn 256 random bits into computationally indistinguishable
infinite stream of random bits. If your missile maker was not halfway
competent at computer security, I can only hope the guidance engineers
were of the same caliber.


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



-- 
"Man is born free, but everywhere he is in chains".
--Rousseau.

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Joseph Birr-Pixton
Thanks for the discussion so far on this.

I've closed PR 406; it is replaced by:

https://github.com/tlswg/tls13-spec/pull/408

to wit:

- ECDSA details para says RFC6979 is RECOMMENDED (I've tried to keep
this part succinct, but I think it fits next to the X9.62 reference).
- Crypto pitfalls section has a new point with a little further
discussion, trying to impress upon the reader how badly this goes
wrong.

Cheers,
Joe

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Daniel Kahn Gillmor
On Mon 2016-01-25 14:10:13 -0500, Yoav Nir wrote:
>> On 25 Jan 2016, at 5:08 PM, Salz, Rich  wrote:
>> 
>>> But any system running a TLS stack is already going to have a high quality 
>>> entropy source for client/server randoms and IVs and such
>> 
>> That's assuming a constraint that isn't accurate.
>
> Eh. Just s/is/should/

Remember that keys (whether in HSMs or not) can be moved between
implementations.  While it seems (hopefully) likely that most keys will
usually be used with a TLS stack with a high-quality entropy source,
it's also possible that the key gets used occasionally with some other,
less sophisticated code or platform.

We should be pushing heavily for deterministic ECDSA, even though it's
not something we can require via wire protocol at runtime.

   --dkg

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Salz, Rich
> is/should, or they're going to have other problems. 

Really?

Some high-value device that is rarely connected-to?  Like a missle?
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Yoav Nir

> On 25 Jan 2016, at 5:08 PM, Salz, Rich  wrote:
> 
>> But any system running a TLS stack is already going to have a high quality 
>> entropy source for client/server randoms and IVs and such
> 
> That's assuming a constraint that isn't accurate.

Eh. Just s/is/should/


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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Adam Langley
On Sat, Jan 23, 2016 at 9:20 PM, Brian Smith  wrote:
>> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>
> What about the way BoringSSL (and OpenSSL, I think) does it? It incorporates
> all the inputs that RFC6979 does, but using SHA-512 instead of HMAC. And, it
> also includes a random element in the SHA-512 hash.
>
> Ed25519 uses SHA-512 instead of HMAC for the same purpose and people seem to
> think it works fine.
>
> Also hashing in some randomness seems like it would help avoid some side
> channel leakage. Note that most (all the ones I've looked at for more than 5
> minutes) open-source ECDSA implementations have side-channel issues of
> various levels of significance.
>
> Anyway, I do think that implementations should do something *like this* to
> avoid problems when the RNG is bad, but I think prescribing RFC 6979 as the
> solution is overly-specific, especially when it doesn't even seem to be the
> best way to accomplish the goal in many cases.

I wrote that design before RFC6979 (or, at least, before I was aware
of it). The reason that I included randomness into the mix was because
I worried that someone might be depending on the randomised nature of
ECDSA signatures and suddenly making them deterministic seemed like a
risky thing to do. That's not a problem in TLS.

I think that those implementations that care about DPA-level
side-channel attacks will probably do their thing no matter what the
standard says, so I wouldn't have an objection to putting a "SHOULD"
in the spec for RFC 6979. I suspect that adherence would be poor,
however. As for using that RFC over what I came up with or anything
else: at least RFC 6979 has been written down already.


Cheers

AGL

-- 
Adam Langley a...@imperialviolet.org https://www.imperialviolet.org

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


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Salz, Rich
> But any system running a TLS stack is already going to have a high quality 
> entropy source for client/server randoms and IVs and such

That's assuming a constraint that isn't accurate.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Require deterministic ECDSA

2016-01-25 Thread Jacob Maskiewicz
The main argument I see from the RFC for deterministic ECDSA is computing k
on systems without high quality entropy sources. But any system running a
TLS stack is already going to have a high quality entropy source for
client/server randoms and IVs and such, so what's the benefit of
deterministic ECDSA here?

-Jake M
On Jan 23, 2016 11:13 AM, "Joseph Birr-Pixton"  wrote:

> Hi,
>
> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>
> For discussion, here's a pull request with possible language:
>
> https://github.com/tlswg/tls13-spec/pull/406
>
> Cheers,
> Joe
>
> ___
> 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] Require deterministic ECDSA

2016-01-25 Thread Hubert Kario
On Sunday 24 January 2016 02:04:28 Dave Garrett wrote:
> On Saturday, January 23, 2016 07:47:11 pm Michael StJohns wrote:
> > 1) A receiver of an deterministic ECDSA signature verifies it
> > EXACTLY
> > like they would a non-deterministic signature.
> > 2) A receiver of an ECDSA signature cannot determine whether or not
> > the signer did a deterministic signature.
> > 3) A TLS implementation has no way (absent repeating signatures over
> > identical data) of telling whether or not a given signature using
> > the
> > client or server private key is deterministic.
> > 
> > All that suggests that this is a completely unenforceable
> > requirement
> > with respect to TLS.
> 
> We can have unverifiable & unenforceable MUSTs. A SHOULD might be more
> appropriate, however, if we want to acknowledge this limitation to
> some degree.

a MUST is only necessary if you are not sure or simply know that your 
RNG is broken, if you're doing a HSM implementation you know that your 
RNG is good so you can just use it

and while we can have unverifiable MUSTs, it just looks silly if you do, 
especially if the other way of doing things is just as interoperable, 
and just as secure (if implemented properly) as the mandated one...

SHOULD with explanation why it's there is definitely better approach
-- 
Regards,
Hubert Kario
Senior Quality Engineer, QE BaseOS Security team
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purkyňova 99/71, 612 45, 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] Require deterministic ECDSA

2016-01-24 Thread Michael StJohns

On 1/24/2016 5:12 AM, Yoav Nir wrote:

The HSM has enough entropy to generate (once) a 256-bit (or 384-bit or 521-bit) 
key. When working as part of a TLS server using regular ECDSA it would need to 
generate a random k for each full handshake, and many such servers routinely 
handle tens of thousands of such handshakes per second. So it’s hundreds of 
kilobytes per second, for an HSM that has no network input, no I/O of any kind 
other than the signature requests, this may be a problem. I’ve seen people 
claim this in the past.


This *really* isn't how most HSMs work.  They mostly have TRNGs (True 
Random Number Generators) aka Hardware RNGs based on noisy diodes or 
ring oscillators or some such (e.g. no stupid linux like entropy source 
from keyboard motion or network interrupts).  This gets fed into a PRBG 
construct - something like the ones in SP800-90A.  Which does the 
entropy expansion/extraction to get you pretty much any number of bits 
you want of good quality randomness in plenty of time to do handshakes.


There's actually a cool set of USB devices that provide *very* good 
TRNG.Take a look at 
http://ubld.it/products/truerng-hardware-random-number-generator/ or 
http://ubld.it/ and the drivers (or internal logic) feed what they get 
from the TRNG into a good PRBG.  I've been playing with using them as an 
augmentation of how I generate keys.


If you're stuck on commodity hardware (e.g. intel motherboard)  and 
worried about randomness, there's also this: 
https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide. 
Later versions of the intel platform have a TRNG embedded in them as 
well as an SP800-90A PRBG.


One of the things about FIPS and RNGs is that there is a pretty good set 
of requirements AND tests that can be used to establish just how good of 
an RNG source you have (and provide pretty good error detection and fail 
logics).


Later, Mike



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


Re: [TLS] Require deterministic ECDSA

2016-01-24 Thread Michael StJohns

On 1/24/2016 5:15 AM, Yoav Nir wrote:

>Correct me if I'm wrong but:
>
>1) A receiver of an deterministic ECDSA signature verifies it EXACTLY like 
they would a non-deterministic signature.
>2) A receiver of an ECDSA signature cannot determine whether or not the signer 
did a deterministic signature.
>3) A TLS implementation has no way (absent repeating signatures over identical 
data) of telling whether or not a given signature using the client or server 
private key  is deterministic.

I might be missing something, but if k is deterministic, do we really need to 
send it? Can’t the receiver figure it out the same way that the sender did?

I know that makes it break compatibility, but since this is TLS 1.3 anyway, 
that’s not an issue, I think.

Yoav



Hi Yoav

If K is known and the signature is known then the private key is known.

The particular method the RFC uses to create the signature is to 
incorporate the signing private key as part of the input to the 
pseudo-random generation of K (along with the message).  The receiver 
doesn't have the private key and so can't derive K (which is a *GOOD* 
thing - see the point above.  :-) )



Mike.


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


Re: [TLS] Require deterministic ECDSA

2016-01-24 Thread Filippo Valsorda
Strong support for this. TLS will be deployed with broken
implementations and on broken systems. Anything the spec can do to
limit or prevent damage is more than appropriate.

However, agreed that a SHOULD makes more sense, to avoid having
discussions about OpenSSL not being compliant because of a different
PRF.

I've always been puzzled by pure-random ECDSA deployments anyway.

On Sat, Jan 23, 2016 at 7:13 PM, Joseph Birr-Pixton  wrote:
> Hi,
>
> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>
> For discussion, here's a pull request with possible language:
>
> https://github.com/tlswg/tls13-spec/pull/406
>
> Cheers,
> Joe
>
> ___
> 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] Require deterministic ECDSA

2016-01-24 Thread Watson Ladd
On Sun, Jan 24, 2016 at 2:12 AM, Yoav Nir  wrote:
> Hi, Mike
>
>> On 24 Jan 2016, at 2:53 AM, Michael StJohns  wrote:
>>
>> On 1/23/2016 7:17 PM, Yoav Nir wrote:
>>> Also if the signatures are done in a separate hardware module, that module 
>>> is even less likely to have a good random source.
>>>
>>> And if we make it rely on external input for the random, that’s a good way 
>>> of getting it to reveal information about the private key, whereas keeping 
>>> the private key secret forever was the whole point of using a hardware 
>>> module.
>>>
>>> So that’s another argument in favor of deterministic signatures.
>>>
>>> Yoav
>>
>> I tried to parse the above into meaningful A implies B logic and failed.
>>
>> If you have an HSM, the key that's generating the signature tends to be 
>> generated inside the HSM.  If your HSM has a bad RNG, then the key 
>> generation is going to be a problem well before the signature generation RNG 
>> problem kicks in.   And to clarify, a key generated inside an HSM tends to 
>> use that HSM's signature mechanism, not something in a separate module.
>>
>> I don't think your argument holds.
>>
>> "If we make it rely on external input for the random"???   Isn't that 
>> exactly what the RFC uses in the form of the hashed message?
>
> Yeah, it was way past midnight when I wrote that. Only so much coherence in 
> those hours.
>
> The HSM has enough entropy to generate (once) a 256-bit (or 384-bit or 
> 521-bit) key. When working as part of a TLS server using regular ECDSA it 
> would need to generate a random k for each full handshake, and many such 
> servers routinely handle tens of thousands of such handshakes per second. So 
> it’s hundreds of kilobytes per second, for an HSM that has no network input, 
> no I/O of any kind other than the signature requests, this may be a problem. 
> I’ve seen people claim this in the past.

Standard conjectures in cryptography imply that counter mode for short
messages is indistinguishable from random data. A device with 256
random bits can create a long random key . Maybe the issue is the HSM
isn't made by people who know the first thing about cryptography, who
believe the widely peddled nonsense about entropy.

>
> That last sentence there. If we’re using regular ECDSA, the HSM can either 
> generate its own k or receive a k from the caller. For our software’s FIPS 
> certification we had to support both modes to be able to produce a 
> predictable ECDSA. I don’t know, but I imagine hardware would be required to 
> support this as well. If you run the HSM in production with the external 
> random input, you’re making it possible for an attacker who has compromised 
> the system to discover the key bits by repeatedly calling the HSM with same 
> k’s for different inputs. This is negated by using deterministic ECDSA where 
> the k is a function of the input.

The whole point of HSMs is to protect keys, by denying the ability to
use the API in ways that reveal keys. Providing k along with the
message breaks that entirely.

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



-- 
"Man is born free, but everywhere he is in chains".
--Rousseau.

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


Re: [TLS] Require deterministic ECDSA

2016-01-24 Thread Yoav Nir

> On 24 Jan 2016, at 2:47 AM, Michael StJohns  wrote:
> 
> On 1/23/2016 2:13 PM, Joseph Birr-Pixton wrote:
>> Hi,
>> 
>> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>> 
>> For discussion, here's a pull request with possible language:
>> 
>> https://github.com/tlswg/tls13-spec/pull/406
>> 
>> Cheers,
>> Joe
>> 
>> ___
>> TLS mailing list
>> TLS@ietf.org
>> https://www.ietf.org/mailman/listinfo/tls
>> 
> 
> Correct me if I'm wrong but:
> 
> 1) A receiver of an deterministic ECDSA signature verifies it EXACTLY like 
> they would a non-deterministic signature.
> 2) A receiver of an ECDSA signature cannot determine whether or not the 
> signer did a deterministic signature.
> 3) A TLS implementation has no way (absent repeating signatures over 
> identical data) of telling whether or not a given signature using the client 
> or server private key  is deterministic.

I might be missing something, but if k is deterministic, do we really need to 
send it? Can’t the receiver figure it out the same way that the sender did?

I know that makes it break compatibility, but since this is TLS 1.3 anyway, 
that’s not an issue, I think.

Yoav

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


Re: [TLS] Require deterministic ECDSA

2016-01-24 Thread Yoav Nir
Hi, Mike

> On 24 Jan 2016, at 2:53 AM, Michael StJohns  wrote:
> 
> On 1/23/2016 7:17 PM, Yoav Nir wrote:
>> Also if the signatures are done in a separate hardware module, that module 
>> is even less likely to have a good random source.
>> 
>> And if we make it rely on external input for the random, that’s a good way 
>> of getting it to reveal information about the private key, whereas keeping 
>> the private key secret forever was the whole point of using a hardware 
>> module.
>> 
>> So that’s another argument in favor of deterministic signatures.
>> 
>> Yoav
> 
> I tried to parse the above into meaningful A implies B logic and failed.
> 
> If you have an HSM, the key that's generating the signature tends to be 
> generated inside the HSM.  If your HSM has a bad RNG, then the key generation 
> is going to be a problem well before the signature generation RNG problem 
> kicks in.   And to clarify, a key generated inside an HSM tends to use that 
> HSM's signature mechanism, not something in a separate module.
> 
> I don't think your argument holds.
> 
> "If we make it rely on external input for the random"???   Isn't that exactly 
> what the RFC uses in the form of the hashed message?

Yeah, it was way past midnight when I wrote that. Only so much coherence in 
those hours.

The HSM has enough entropy to generate (once) a 256-bit (or 384-bit or 521-bit) 
key. When working as part of a TLS server using regular ECDSA it would need to 
generate a random k for each full handshake, and many such servers routinely 
handle tens of thousands of such handshakes per second. So it’s hundreds of 
kilobytes per second, for an HSM that has no network input, no I/O of any kind 
other than the signature requests, this may be a problem. I’ve seen people 
claim this in the past.

That last sentence there. If we’re using regular ECDSA, the HSM can either 
generate its own k or receive a k from the caller. For our software’s FIPS 
certification we had to support both modes to be able to produce a predictable 
ECDSA. I don’t know, but I imagine hardware would be required to support this 
as well. If you run the HSM in production with the external random input, 
you’re making it possible for an attacker who has compromised the system to 
discover the key bits by repeatedly calling the HSM with same k’s for different 
inputs. This is negated by using deterministic ECDSA where the k is a function 
of the input.

Yoav



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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Dave Garrett
On Saturday, January 23, 2016 07:47:11 pm Michael StJohns wrote:
> 1) A receiver of an deterministic ECDSA signature verifies it EXACTLY 
> like they would a non-deterministic signature.
> 2) A receiver of an ECDSA signature cannot determine whether or not the 
> signer did a deterministic signature.
> 3) A TLS implementation has no way (absent repeating signatures over 
> identical data) of telling whether or not a given signature using the 
> client or server private key is deterministic.
> 
> All that suggests that this is a completely unenforceable requirement 
> with respect to TLS.

We can have unverifiable & unenforceable MUSTs. A SHOULD might be more 
appropriate, however, if we want to acknowledge this limitation to some degree.

> The above is a long way of saying that this is a WG overreach on 
> internal security module behavior that is not central, cognizable or 
> identifiable to a TLS implementation.

As far as I'm concerned, anything that directly affects the security of TLS is 
not an overreach. Beyond scope of control, yes, but it's not an overreach to 
lay out how to do things properly that commonly result in vulnerabilities with 
TLS. Like everything else in an RFC, it can of course be ignored, but I think 
it's worth it to make an official statement in the spec on how to do things 
properly.


Dave

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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Brian Smith
Joseph Birr-Pixton  wrote:

> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>

What about the way BoringSSL (and OpenSSL, I think) does it? It
incorporates all the inputs that RFC6979 does, but using SHA-512 instead of
HMAC. And, it also includes a random element in the SHA-512 hash.

Ed25519 uses SHA-512 instead of HMAC for the same purpose and people seem
to think it works fine.

Also hashing in some randomness seems like it would help avoid some side
channel leakage. Note that most (all the ones I've looked at for more than
5 minutes) open-source ECDSA implementations have side-channel issues of
various levels of significance.

Anyway, I do think that implementations should do something *like this* to
avoid problems when the RNG is bad, but I think prescribing RFC 6979 as the
solution is overly-specific, especially when it doesn't even seem to be the
best way to accomplish the goal in many cases.

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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Michael StJohns

On 1/23/2016 3:16 PM, Geoffrey Keating wrote:

But if k generation is broken, then that
leaks the key permanently and you need to get a new one and revoke the
old one, which may be difficult.


I agree that if RNG generation is broken then it breaks k generation.
But if RNG generation was broken during key generation, you also have a 
problem.


In your arguments, assuming that the RNG was fine for key generation and 
broken for signature generation IMHO only applies to software modules 
(where you have the option of using separate RNGs for different functions).


For HSMs with any reasonable amount of good design, if the RNG is bad, 
the thing just stops working (and there are ALL sorts of tests to ensure 
that).


With respect to a software module, I'd find it easier just to read the 
key bits out of memory than apply most of the other threats that seem to 
be creeping into the argument.


Later, Mike



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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Michael StJohns

On 1/23/2016 7:17 PM, Yoav Nir wrote:

Also if the signatures are done in a separate hardware module, that module is 
even less likely to have a good random source.

And if we make it rely on external input for the random, that’s a good way of 
getting it to reveal information about the private key, whereas keeping the 
private key secret forever was the whole point of using a hardware module.

So that’s another argument in favor of deterministic signatures.

Yoav


I tried to parse the above into meaningful A implies B logic and failed.

If you have an HSM, the key that's generating the signature tends to be 
generated inside the HSM.  If your HSM has a bad RNG, then the key 
generation is going to be a problem well before the signature generation 
RNG problem kicks in.   And to clarify, a key generated inside an HSM 
tends to use that HSM's signature mechanism, not something in a separate 
module.


I don't think your argument holds.

"If we make it rely on external input for the random"???   Isn't that 
exactly what the RFC uses in the form of the hashed message?


Mike







On 23 Jan 2016, at 9:59 PM, Joseph Birr-Pixton  wrote:

Hi,

The other benefit is being able to test that a critical code path
produces the correct answers. With randomised k, this is not really
possible. For instance, you can choose k with the top bit clear
without any obvious or externally-testable effects, except effectively
publishing your long-term private key after a large number of
signatures[1].

Given the history of these things, I would perhaps challenge the
assumption that all TLS stacks will have a bug-free, thread-safe,
fork-safe, high quality, uncompromised, backdoor-free, unbiased random
number generator :)

Cheers,
Joe

[1]: 
http://people.rennes.inria.fr/Jean-Christophe.Zapalowicz/papers/asiacrypt2014.pdf

On 23 January 2016 at 19:27, Jacob Maskiewicz  wrote:

The main argument I see from the RFC for deterministic ECDSA is computing k
on systems without high quality entropy sources. But any system running a
TLS stack is already going to have a high quality entropy source for
client/server randoms and IVs and such, so what's the benefit of
deterministic ECDSA here?

-Jake M

On Jan 23, 2016 11:13 AM, "Joseph Birr-Pixton"  wrote:

Hi,

I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.

For discussion, here's a pull request with possible language:

https://github.com/tlswg/tls13-spec/pull/406

Cheers,
Joe

___
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

___
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] Require deterministic ECDSA

2016-01-23 Thread Michael StJohns

On 1/23/2016 2:13 PM, Joseph Birr-Pixton wrote:

Hi,

I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.

For discussion, here's a pull request with possible language:

https://github.com/tlswg/tls13-spec/pull/406

Cheers,
Joe

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



Correct me if I'm wrong but:

1) A receiver of an deterministic ECDSA signature verifies it EXACTLY 
like they would a non-deterministic signature.
2) A receiver of an ECDSA signature cannot determine whether or not the 
signer did a deterministic signature.
3) A TLS implementation has no way (absent repeating signatures over 
identical data) of telling whether or not a given signature using the 
client or server private key  is deterministic.


 All that suggests that this is a completely unenforceable requirement 
with respect to TLS.


The above is a long way of saying that this is a WG overreach on 
internal security module behavior that is not central, cognizable or 
identifiable to a TLS implementation.


I'd instead recommend you approach the CFRG and offer a internet draft 
with a target of BCP on the general topic of ECDSA rather than specific 
guidance for TLS.


Mike





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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Yoav Nir
Also if the signatures are done in a separate hardware module, that module is 
even less likely to have a good random source. 

And if we make it rely on external input for the random, that’s a good way of 
getting it to reveal information about the private key, whereas keeping the 
private key secret forever was the whole point of using a hardware module.

So that’s another argument in favor of deterministic signatures.

Yoav

> On 23 Jan 2016, at 9:59 PM, Joseph Birr-Pixton  wrote:
> 
> Hi,
> 
> The other benefit is being able to test that a critical code path
> produces the correct answers. With randomised k, this is not really
> possible. For instance, you can choose k with the top bit clear
> without any obvious or externally-testable effects, except effectively
> publishing your long-term private key after a large number of
> signatures[1].
> 
> Given the history of these things, I would perhaps challenge the
> assumption that all TLS stacks will have a bug-free, thread-safe,
> fork-safe, high quality, uncompromised, backdoor-free, unbiased random
> number generator :)
> 
> Cheers,
> Joe
> 
> [1]: 
> http://people.rennes.inria.fr/Jean-Christophe.Zapalowicz/papers/asiacrypt2014.pdf
> 
> On 23 January 2016 at 19:27, Jacob Maskiewicz  wrote:
>> The main argument I see from the RFC for deterministic ECDSA is computing k
>> on systems without high quality entropy sources. But any system running a
>> TLS stack is already going to have a high quality entropy source for
>> client/server randoms and IVs and such, so what's the benefit of
>> deterministic ECDSA here?
>> 
>> -Jake M
>> 
>> On Jan 23, 2016 11:13 AM, "Joseph Birr-Pixton"  wrote:
>>> 
>>> Hi,
>>> 
>>> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>>> 
>>> For discussion, here's a pull request with possible language:
>>> 
>>> https://github.com/tlswg/tls13-spec/pull/406
>>> 
>>> Cheers,
>>> Joe
>>> 
>>> ___
>>> 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

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


Re: [TLS] Require deterministic ECDSA

2016-01-23 Thread Geoffrey Keating
[I guess we're top-posting...]

Another benefit is that if it turns out the entropy source is broken,
then if client/server random or IV is guessable, that's something that
affects one connection and can be addressed for future connections by
fixing the entropy source.  But if k generation is broken, then that
leaks the key permanently and you need to get a new one and revoke the
old one, which may be difficult.

Perhaps the RFC should say something to that effect?  I think there's
already a section in the security considerations about random number
generators.

Joseph Birr-Pixton  writes:

> Hi,
> 
> The other benefit is being able to test that a critical code path
> produces the correct answers. With randomised k, this is not really
> possible. For instance, you can choose k with the top bit clear
> without any obvious or externally-testable effects, except effectively
> publishing your long-term private key after a large number of
> signatures[1].
> 
> Given the history of these things, I would perhaps challenge the
> assumption that all TLS stacks will have a bug-free, thread-safe,
> fork-safe, high quality, uncompromised, backdoor-free, unbiased random
> number generator :)
> 
> Cheers,
> Joe
> 
> [1]: 
> http://people.rennes.inria.fr/Jean-Christophe.Zapalowicz/papers/asiacrypt2014.pdf
> 
> On 23 January 2016 at 19:27, Jacob Maskiewicz  wrote:
> > The main argument I see from the RFC for deterministic ECDSA is computing k
> > on systems without high quality entropy sources. But any system running a
> > TLS stack is already going to have a high quality entropy source for
> > client/server randoms and IVs and such, so what's the benefit of
> > deterministic ECDSA here?
> >
> > -Jake M
> >
> > On Jan 23, 2016 11:13 AM, "Joseph Birr-Pixton"  wrote:
> >>
> >> Hi,
> >>
> >> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
> >>
> >> For discussion, here's a pull request with possible language:
> >>
> >> https://github.com/tlswg/tls13-spec/pull/406
> >>
> >> Cheers,
> >> Joe
> >>
> >> ___
> >> 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] Require deterministic ECDSA

2016-01-23 Thread Joseph Birr-Pixton
Hi,

The other benefit is being able to test that a critical code path
produces the correct answers. With randomised k, this is not really
possible. For instance, you can choose k with the top bit clear
without any obvious or externally-testable effects, except effectively
publishing your long-term private key after a large number of
signatures[1].

Given the history of these things, I would perhaps challenge the
assumption that all TLS stacks will have a bug-free, thread-safe,
fork-safe, high quality, uncompromised, backdoor-free, unbiased random
number generator :)

Cheers,
Joe

[1]: 
http://people.rennes.inria.fr/Jean-Christophe.Zapalowicz/papers/asiacrypt2014.pdf

On 23 January 2016 at 19:27, Jacob Maskiewicz  wrote:
> The main argument I see from the RFC for deterministic ECDSA is computing k
> on systems without high quality entropy sources. But any system running a
> TLS stack is already going to have a high quality entropy source for
> client/server randoms and IVs and such, so what's the benefit of
> deterministic ECDSA here?
>
> -Jake M
>
> On Jan 23, 2016 11:13 AM, "Joseph Birr-Pixton"  wrote:
>>
>> Hi,
>>
>> I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.
>>
>> For discussion, here's a pull request with possible language:
>>
>> https://github.com/tlswg/tls13-spec/pull/406
>>
>> Cheers,
>> Joe
>>
>> ___
>> 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


[TLS] Require deterministic ECDSA

2016-01-23 Thread Joseph Birr-Pixton
Hi,

I'd like to propose that TLS1.3 mandates RFC6979 deterministic ECDSA.

For discussion, here's a pull request with possible language:

https://github.com/tlswg/tls13-spec/pull/406

Cheers,
Joe

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