Re: FIPS requirements changing in 2013?

2011-08-01 Thread David H. Lipman
From: Dave Tubbs tu...@moorglade.com

 Greetings,

 We're utilizing NSS and will be submitting a Linux-based hardware

 platform for FIPS certification.

 The FIPS/CC organization we're working with is telling us that the FIPS

 requirements will change in 2013.  I'm wondering which NSS versions

 might support these 2013 specs:

 1- For DSA, p = 2048 and q = 224

 2- For ECDSA generation, n = 224; for ECDSA verification, n = 160 and n 
 224

 3- RSA key generation = 2048

 Just getting spun-up on the NSS code, but thought someone on the list

 may have some quick answers.

 Thanks!


Have you researched it with the NIST ?



-- 
Dave
Multi-AV Scanning Tool - http://multi-av.thespykiller.co.uk
http://www.pctipp.ch/downloads/dl/35905.asp 


-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto


Re: Protecting PRNG against malicious users / multiple independent PRNG states

2011-08-01 Thread Nelson B Bolyard
On 2011-07-26 13:30 PDT, Brian Smith wrote:
 Mozilla would like to expose a secure PRNG (basically, a wrapper around
 PK11_GenerateRandom) to JavaScript content: 
 https://bugzilla.mozilla.org/show_bug.cgi?id=440046
 
 There is some agreement that we should maintain separate PRNG state for
 each origin (roughly: domain name), and that all those states should be
 separate from the PRNG state used internally. PK11_GenerateRandom
 currently shares the PRNG state across all callers. Does anybody
 disagree about this separation being necessary?

Yes.

 If not, then we (Mozilla) would to change pk11wrap so that we can 
 control these separate PRNG states. (If this is really important, then 
 eventually this consideration for separate contexts will need to be 
 made for all APIs that use the PRNG that we plan to expose to 
 JavaScript, such as PK11_GenerateKeyPair.) However, I am not sure if 
 these separate states are really necessary;

I'm pretty certain they are not necessary.  There might be other reasons
to have multiple parallel DRBGs, such as parallel performance on
multi-core CPUs.

 if they were, then wouldn't it be better to maintain separate states
 for each SSL connection in libssl too?
 
 There was also some concern raised about preventing unnecessary 
 depletion of entropy, while still providing good randomness to the 
 calling JavaScript code. Suggestions for this would be much 
 appreciated. My current thought is that we should restrict the 
 JavaScript API such that a origin can only acquire a certain 
 (relatively small) quantity of output from the PRNG.

The current NIST-approved DRBG is claimed by NIST to not require
re-seeding until 2^48 (~256 trillion) requests have been fulfilled,
each requesting up to 2^16 bytes.  See  table 2, p. 34-45 of
http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf


 
 Thanks, Brian


-- 
/Nelson Bolyard
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto


Re: Protecting PRNG against malicious users / multiple independent PRNG states

2011-08-01 Thread Marsh Ray

On 07/26/2011 03:30 PM, Brian Smith wrote:


There is some agreement that we should maintain separate PRNG state
for each origin (roughly: domain name), and that all those states
should be separate from the PRNG state used internally.
PK11_GenerateRandom currently shares the PRNG state across all
callers. Does anybody disagree about this separation being necessary?


If you believe there is a need to separate the PRNG state or restrict 
its output, then you believe there is an attack on the PRNG.



There was also some concern raised about preventing unnecessary
depletion of entropy, while still providing good randomness to the
calling JavaScript code. Suggestions for this would be much
appreciated.


Complexity added to PRNGs out of concern for entropy depletion has, on 
several notable occasions, introduced bugs which caused PRNGs to fail 
badly. OpenSSL, OpenBSD, others.


On the other hand, no one has ever shown a successful attack on a 
properly designed and implemented PRNG with even 200 bits of state. 
Maybe there's one I haven't heard about, but I've been looking out for 
it for some time.



My current thought is that we should restrict the
JavaScript API such that a origin can only acquire a certain
(relatively small) quantity of output from the PRNG.


I understand the mathematical justifications for it, but I believe that 
model no longer reflects reality. We have to be willing to move beyond 
certain lessons learned from WWII crypto.


Here's a longer post with my arguments:
http://www.mail-archive.com/cryptography@randombit.net/msg00601.html
Of course, not everyone agrees with me on this (yet :-)

- Marsh
--
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto


Re: Protecting PRNG against malicious users / multiple independent PRNG states

2011-08-01 Thread Wan-Teh Chang
On Tue, Jul 26, 2011 at 1:30 PM, Brian Smith bsm...@mozilla.com wrote:
 Mozilla would like to expose a secure PRNG (basically, a wrapper around 
 PK11_GenerateRandom) to JavaScript content:
 https://bugzilla.mozilla.org/show_bug.cgi?id=440046

 There is some agreement that we should maintain separate PRNG state for each 
 origin (roughly: domain name), and that all those states should be separate 
 from the PRNG state used internally. PK11_GenerateRandom currently shares the 
 PRNG state across all callers. Does anybody disagree about this separation 
 being necessary?

I just want to note my objection to this proposal before I forget
again.  I won't repeat the arguments given by Nelson Bolyard and Marsh
Ray.

Wan-Teh Chang
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto


Re: Protecting PRNG against malicious users / multiple independent PRNG states

2011-08-01 Thread Kyle Hamilton
Using a separate PRNG state for each origin will ensure that entropy
is reused (since all of them will need to seed from the same master
PRNG).  This is bad.

Not seeding them from the same master PRNG would reduce the entropy
available in each state.  As was the case with Netscape Navigator in
the early 2000s, this would be worse.

This proposal also has the potential to worse-than-negate the
perceived security benefit, as the same sequence of operations without
additional entropy being stirred in will result in the same PRNG
sequences, potentially leading to the same keystream being used
multiple times.  This has the potential to be worse still.

My thought is that the entire crypto API should be exposed to
Javascript, while ensuring that approval for use of private keys (the
only persistent value store) is always obtained through the same type
of mechanism as is used to authorize the display of passwords

Passwords are, to be honest, a lot more common and thus a lot more
valuable than private keys in today's consumer world.

What's the threat model?  When's the last time it was reviewed?  The
new Mozilla CA requirements (possibly via the Basic Requirements)
mandate threat-model review annually.  Will Mozilla adhere to the same
rules it enforces against external entities?  Mozilla is trusted more
than any of its CA program members, by definition -- as Mozilla has
the potential to list and de-list any CA unilaterally, it is the true
Root of Trust.

-Kyle H

On Tue, Jul 26, 2011 at 1:30 PM, Brian Smith bsm...@mozilla.com wrote:
 Mozilla would like to expose a secure PRNG (basically, a wrapper around 
 PK11_GenerateRandom) to JavaScript content:
 https://bugzilla.mozilla.org/show_bug.cgi?id=440046

 There is some agreement that we should maintain separate PRNG state for each 
 origin (roughly: domain name), and that all those states should be separate 
 from the PRNG state used internally. PK11_GenerateRandom currently shares the 
 PRNG state across all callers. Does anybody disagree about this separation 
 being necessary? If not, then we (Mozilla) would to change pk11wrap so that 
 we can control these separate PRNG states. (If this is really important, then 
 eventually this consideration for separate contexts will need to be made for 
 all APIs that use the PRNG that we plan to expose to JavaScript, such as 
 PK11_GenerateKeyPair.) However, I am not sure if these separate states are 
 really necessary; if they were, then wouldn't it be better to maintain 
 separate states for each SSL connection in libssl too?

 There was also some concern raised about preventing unnecessary depletion of 
 entropy, while still providing good randomness to the calling JavaScript 
 code. Suggestions for this would be much appreciated. My current thought is 
 that we should restrict the JavaScript API such that a origin can only 
 acquire a certain (relatively small) quantity of output from the PRNG.

 Thanks,
 Brian
 --
 dev-tech-crypto mailing list
 dev-tech-crypto@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-tech-crypto

-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto