linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] enhance RNG api with flags to allow for different operational modes
@ 2009-09-16 16:04 Neil Horman
  2009-09-16 16:11 ` [PATCH 1/3] add RNG api calls to set common flags Neil Horman
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Neil Horman @ 2009-09-16 16:04 UTC (permalink / raw)
  To: linux-crypto; +Cc: jarod, herbert, davem

Hey all-
	Ok, so I've got a story behind this one.  It was recently called to my
attention that the ansi cprng is missing an aspect of its compliance requrements
for FIPS-140.  Specifically, its missing a behavior in its continuous test.
When the CPRNG produces random blocks, the firrst block that it produces must
never be returned to the user.  Instead it must be saved and a second block must
be generated so that it can be compared to the first block before being returned
to the user.

	I recently posted a patch to do this for the hardware RNG.  Its fine to
do this there, since there are no expectations of a predictable result in that
RNG.  The CPRNG however, provides a predictable random sequence for a given
input seed key and iteration.  The above requirement messes with that
predictability however because it changes which block is returned on the zeroth
iteration to the user.  Some test vectors expect this, some do not.

	So the question is, how do I make this RNG fips compliant without
breaking some subset of users out there that rely on the predictability of the
CPRNG?  The solution I've come up with is a dynamic flag.  This patch series
adds two api calls to the crypto RNG api rng_set_flags and rng_get_flags, which
set flags with global meaning on instances of an rng.  A given RNG can opt to
set the registered agorithm methods for these api calls or not.  In the event
they don't a default handler is set for each that returns EOPNOTSUPPORT.

	Using this new mechanism I've implemented these calls in ansi_cprng so
that setting the TEST_MODE flag disables the continuous check, allowing for the
zeroth block to get returned to the user, which lets us pass most of the
supplied test vectors (most notably the NIST provided vectors).

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2009-10-19  2:56 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-16 16:04 [PATCH 0/3] enhance RNG api with flags to allow for different operational modes Neil Horman
2009-09-16 16:11 ` [PATCH 1/3] add RNG api calls to set common flags Neil Horman
2009-09-16 20:56   ` Jarod Wilson
2009-09-16 16:13 ` [PATCH 2/3] augment the testmgr code to set TEST_MODE flag on all rng instances Neil Horman
2009-09-16 20:57   ` Jarod Wilson
2009-09-16 16:25 ` [PATCH 3/3] augment CPRNG to correctly implement continuous test for FIPS, and support TEST_MODE flags Neil Horman
2009-09-16 20:57   ` Jarod Wilson
2009-09-16 20:56 ` [PATCH 0/3] enhance RNG api with flags to allow for different operational modes Jarod Wilson
2009-09-17  3:37 ` Herbert Xu
2009-09-17 12:28   ` Jarod Wilson
2009-09-17 12:43   ` Neil Horman
2009-09-17 15:39     ` Herbert Xu
2009-09-17 17:08       ` Neil Horman
2009-09-17 20:16         ` Herbert Xu
2009-09-17 20:18           ` Jarod Wilson
2009-09-17 20:23             ` Herbert Xu
2009-09-18 18:32 ` [PATCH 0/1] enhance RNG api with flags to allow for different operational modes (v2) Neil Horman
2009-09-18 18:34   ` [PATCH 1/1] add fips(ansi_cprng) (v2) Neil Horman
2009-09-19  1:12     ` Jarod Wilson
2009-10-19  2:56     ` Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).