From: Arno Wagner <arno@wagner.name>
To: dm-crypt@saout.de
Subject: Re: [dm-crypt] Entropy available for luksFormat during GNU/Linux installs
Date: Wed, 3 Feb 2010 08:57:57 +0100 [thread overview]
Message-ID: <20100203075757.GA30434@tansi.org> (raw)
In-Reply-To: <20100203062112.GA29960@tansi.org>
On Wed, Feb 03, 2010 at 07:21:13AM +0100, Arno Wagner wrote:
> On Wed, Feb 03, 2010 at 11:45:02AM +1100, Roscoe wrote:
> > On Mon, Jan 25, 2010 at 10:25 PM, Milan Broz <mbroz@redhat.com> wrote:
> > >
> > > cryptsetup now depends on gcrypt, I will probably rewrite random source
> > > to use gcrypt random generators
> > > (its RNG can use both /dev/random and /dev/urandom for seeding)
> > > In LUKS case, there are four places which need random data:
> > >
> > > - volume (master) key generation
> > > - volume key digest salt and password salt
> > > - anti-forensic split for keyslot obfuscation
> > > - safe wipe
> > >
> > > we are talking only only the first (master key) case here, right?
> >
> > Yes.
> >
> > > Any known problem why not to use gcrypt RNG?
> > > (It should internally wrap possible waiting for enugh entropy,
> > > FIPS mode etc. No need to duplicate code in cryptsetup.)
Here is my short rundown of the impact of using the gcrypt PRNG.
Note that I have not personally used gcrypt, but I have some
crypto and security background.
Peer review:
- GnuPG and its components enjoy widespread use and should
have a reasonable level of expert review. However I did
not find any papers or architectural descriptions referring
to the PRNG.
PRNG:
- Not much info in the docs.
FIPS mode:
- Uses /dev/random, as it should.
- No random seeds support by gcrypt. Not a problem, the kernel
has its own.
- X9.31 PRNG instead of a large-pool-CSPRNG.
The CSPRNG does not seem to be documented well. It seems to have
a 600 Byte entropy pool and use RIPE-MD160. Seems this one
requires trust that the developers know what they are doing.
On the other hand, doing a PRNG with a crypto-hash is not
that difficult, as long as the hash is good and entropy gathering
is done right. RIPE-MD160 seems to be currently completely unbroken.
The X9.31 PRNG in gcrypt uses AES and seems to be in relative
wide use.
Software Engineering aspects:
- gcrypt is an active project and will very likely remain so in
the future. GPG is widely used and a standard tool for encryption
and signature generation. The library (libgcrypt) is used by many
other projects and seems reasonably easy to use.
- This removes one are we have to think about and makes the PRNG
somebody elses headache, with the somebody elses not really any
less qualified than we are. A big plus because it lowers effort
and oportunities to mess up.
Well, I would prefer to have a parameter for /dev/urandom telling
it how much entropy to gather before delivering output, but in the
absence of that we need to do somthing ourselves.
The two nice things about using gcrypt are that it is widely
used and already in cryptsetup and that it allows us to sidestep
the problem neatly. It even gives us the possibility to use FIPS
mode (which may or may not be more secure, basically it just
diallows a lot of things that lower security to gain speed)
by a command line switch.
On the otehr hand, how much key material are we talking here
with the master key? If it is less than 600 bytes, using
/dev/random directly would be better than obtaining 600
seed bytes and thens starting the gcrypt generator to actually
get less randomness from it.
If we have a large requirement for randomness that /dev/random
can definitely not fulfill, I am all for using the gcrypt
generators, also because it prevents cryptsetup complexity
increases and it would make cryptsetup about as secure as GPG,
which should be pretty good.
Arno
--
Arno Wagner, Dr. sc. techn., Dipl. Inform., CISSP -- Email: arno@wagner.name
GnuPG: ID: 1E25338F FP: 0C30 5782 9D93 F785 E79C 0296 797F 6B50 1E25 338F
----
Cuddly UI's are the manifestation of wishful thinking. -- Dylan Evans
If it's in the news, don't worry about it. The very definition of
"news" is "something that hardly ever happens." -- Bruce Schneier
next prev parent reply other threads:[~2010-02-03 7:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-24 6:17 [dm-crypt] Entropy available for luksFormat during GNU/Linux installs Roscoe
2010-01-24 10:50 ` Milan Broz
2010-01-24 13:11 ` Arno Wagner
2010-01-24 14:02 ` Heinz Diehl
2010-01-24 14:31 ` Rick Moritz
2010-01-24 16:56 ` Heinz Diehl
2010-01-24 23:11 ` Arno Wagner
2010-01-24 23:03 ` Arno Wagner
2010-01-25 11:25 ` Milan Broz
2010-02-03 0:45 ` Roscoe
2010-02-03 6:21 ` Arno Wagner
2010-02-03 7:57 ` Arno Wagner [this message]
2010-02-03 12:31 ` Roscoe
2010-02-03 8:56 ` Milan Broz
[not found] ` <cf657bae1002030430l3b0f4768x19e917466b5664bb@mail.gmail.com>
[not found] ` <4B697D55.5020304@redhat.com>
[not found] ` <cf657bae1002031231s6dd17c8bq118e5c5276c31b84@mail.gmail.com>
2010-03-23 8:43 ` Roscoe
-- strict thread matches above, loose matches on Subject: below --
2010-01-24 18:12 Si St
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100203075757.GA30434@tansi.org \
--to=arno@wagner.name \
--cc=dm-crypt@saout.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox