Re: dropbear delayed startup

2013-02-12 Thread Mike Mestnik
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 02/12/13 15:11, Lukas Schwaighofer wrote:
> Hello Mike,
> 
> thanks for your answer.
> 
> On 12.02.2013 21:05, Mike Mestnik wrote:
>> What issue do you have, sounds like you are just generally
>> concerned. You should direct concerns to the authors of the
>> software you are concerned about, no many others would care or be
>> in any position to answer.
> Yes, I'm generally concerned on the impact of little entropy for
> the dropbear ssh server (if a Diffie–Hellman key exchange is
> performed and the secret of the low-entropy server can be guessed,
> the session key is compromised).
> 
As indicated, this happens after the connection and thus there "can"
be plenty of entropy even in the daemon is started when there is not.
 You can even create or push entropy by pinging the host at irregular
intervals or a verity of other activities.  You can have the initrd
hit random.org a few times.

A really good solution can be employed if you have an HA setup, once
past the point of loading the stored entropy, urandom can be securely
served out to the other node over a local network or serial connection.

> The manpage of random in section 4 (man 4 random) has some 
> recommendations about the using /dev/urandom. It states that using 
> /dev/urandom for network encryption keys is fine after the seed
> file (which is saved across reboots and handled by
> /etc/init.d/urandom in debian) has been reloaded. This is not yet
> the case during execution of the initial ramdisk.
> 
> I wrote a set of scripts that perform the reloading of a seed
> already in the initramdisk and before dropbear starts which solves
> my concerns. I posted to this list because I'm not sure if it's
> really an issue or if I'm just being overcautious. In case you
> agree this should be mitigated I'll happily share my work.
> 
> Since my concern is specific to the integration into the
> initramdisk (which is not part of the upstream packages of either
> cryptsetup and dropbear afaik) I think this is the right place to
> ask.
> 
I'm not sure that having static entropy in an initrd would be good
either.  You wouldn't gain entropy, only randomness.  I'd be concerned
about using the same initrd image for more then 100 times or so.  You
could regenerate the initrd though, but this starts to fall into the
category of custom solutions.

>> If you followed the above instructions it's possible that during
>> the start of dropbear there is vary little entropy required/used
>> until you auth over ssh.  If you skipped the step where of saving
>> host keys into your initrd, then this could be your issue as
>> dropbear's initscripts should 'block' startup while entropy is
>> collected. Is that the behavior you are seeing?  If each startup
>> is generating ssh host keys, that's vary bad and should be
>> avoided.
> My host-keys are pre-generated and built into the initramdisk (this
> is taken care automatically by the dropbear package, at least in
> wheezy). The dropbear ssh server in the initramdisk is usable
> without any (noticable) delay, even without reapplying the seed
> first.
> 
Unless you point out you are running testing, you may only get
suggestions for stable.

>> AUMK urandom is not delayed if there is no entropy available. 
>> Applications should not be looking there for entropy, that would
>> be a bug in the application.  I'm unfamiliar with a method for
>> determining the entropy of bytes read from urandom, an
>> interesting concept.
> /dev/urandom is non-blocking while /dev/random is blocking. The
> amount of entropy currently available can be accessed using the
> proc-interface: # cat /proc/sys/kernel/random/entropy_avail 
> However, I'm pretty sure dropbear does no such thing and as far as
> I can tell does not wait for entropy.
> 
entropy_avail has to do with the number of bytes one can read from
random.  Values read from urandom are based off a 1k seed, knowing how
much this seed has ever been populated is not exported nor is the
number of times the current seed has been given out to users.

An attacker with local access could conceivably read the contents of
the seed as long as one could do so without triggering an event that
would cause the kernel to build more entropy.

>> Only a dropbear developer would be able to insist that urandom is
>> only used when appropriate.  Only you can prevent the
>> re-generation of ssh host keys.
> dropbear is especially targetted for embedded devices. I assume
> that gathering enough randomness from /dev/random is especially
> hard for those devices. The dropbear changelog 
> (https://matt.ucc.asn.au/dropbear/CHANGES) contains an entry
> regarding the switch from /dev/random to /dev/urandom at version
> 0.50: - Use /dev/urandom by default, since that's what everyone
> does anyway
> 
This is where the need for the kernel to export information on the
viability of urandom would come into play.  For example dropbear could
kick out new connections if there was not yet

Re: dropbear delayed startup

2013-02-12 Thread Lukas Schwaighofer
Hello Mike,

thanks for your answer.

On 12.02.2013 21:05, Mike Mestnik wrote:
>   cryptsetup does not encrypted filesystems, so you must be mistaken
> if you believe that you are "remote unlocking of encrypted
> filesystems" with cryptsetup.  Be specific about your configuration,
> this is important in this case.  Those looking for assistance are in
> no position to be determining what is and/or is not important.
Sorry for not being clear about that. I was refering to the cryptsetup
because /usr/share/initramfs-tools/scripts/local-top/cryptroot (which is
part of the cryptsetup package) performs the unlocking within the
initial ramdisk.

> Are you perchance taking about fully encrypted systems as in:
> http://www.howtoforge.com/remotely-unlock-fully-encrypted-debian-squeeze
Yes. I have stopped talking about fully encrypted systems, because some
people then assume I don't have an unencrypted boot partition (which I
have).

> What issue do you have, sounds like you are just generally concerned.
>  You should direct concerns to the authors of the software you are
> concerned about, no many others would care or be in any position to
> answer.
Yes, I'm generally concerned on the impact of little entropy for the
dropbear ssh server (if a Diffie–Hellman key exchange is performed and
the secret of the low-entropy server can be guessed, the session key is
compromised).

The manpage of random in section 4 (man 4 random) has some
recommendations about the using /dev/urandom. It states that using
/dev/urandom for network encryption keys is fine after the seed file
(which is saved across reboots and handled by /etc/init.d/urandom in
debian) has been reloaded. This is not yet the case during execution of
the initial ramdisk.

I wrote a set of scripts that perform the reloading of a seed already in
the initramdisk and before dropbear starts which solves my concerns. I
posted to this list because I'm not sure if it's really an issue or if
I'm just being overcautious. In case you agree this should be mitigated
I'll happily share my work.

Since my concern is specific to the integration into the initramdisk
(which is not part of the upstream packages of either cryptsetup and
dropbear afaik) I think this is the right place to ask.

> If you followed the above instructions it's possible that during the
> start of dropbear there is vary little entropy required/used until you
> auth over ssh.  If you skipped the step where of saving host keys into
> your initrd, then this could be your issue as dropbear's initscripts
> should 'block' startup while entropy is collected.
> Is that the behavior you are seeing?  If each startup is generating
> ssh host keys, that's vary bad and should be avoided.
My host-keys are pre-generated and built into the initramdisk (this is
taken care automatically by the dropbear package, at least in wheezy).
The dropbear ssh server in the initramdisk is usable without any
(noticable) delay, even without reapplying the seed first.

> AUMK urandom is not delayed if there is no entropy available.
> Applications should not be looking there for entropy, that would be a
> bug in the application.  I'm unfamiliar with a method for determining
> the entropy of bytes read from urandom, an interesting concept.
/dev/urandom is non-blocking while /dev/random is blocking. The amount
of entropy currently available can be accessed using the proc-interface:
# cat /proc/sys/kernel/random/entropy_avail
However, I'm pretty sure dropbear does no such thing and as far as I can
tell does not wait for entropy.

> Only a dropbear developer would be able to insist that urandom is only
> used when appropriate.  Only you can prevent the re-generation of ssh
> host keys.
dropbear is especially targetted for embedded devices. I assume that
gathering enough randomness from /dev/random is especially hard for
those devices. The dropbear changelog
(https://matt.ucc.asn.au/dropbear/CHANGES) contains an entry regarding
the switch from /dev/random to /dev/urandom at version 0.50:
- Use /dev/urandom by default, since that's what everyone does anyway

Sorry if my first E-Mail sounded like I want support for my setup
(that's not the case). I wanted to get second opinions if little entropy
and a running dropbear in the initramdisk is a problem.

The matter seems important, because when using an encrypted root
partition in wheezy, an installed dropbear package will automatically
case dropbear to be started during the execution of the initramdisk.

Regards
Lukas



signature.asc
Description: OpenPGP digital signature


Re: dropbear delayed startup

2013-02-12 Thread Mike Mestnik
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Lukas,
  cryptsetup does not encrypted filesystems, so you must be mistaken
if you believe that you are "remote unlocking of encrypted
filesystems" with cryptsetup.  Be specific about your configuration,
this is important in this case.  Those looking for assistance are in
no position to be determining what is and/or is not important.

Are you perchance taking about fully encrypted systems as in:
http://www.howtoforge.com/remotely-unlock-fully-encrypted-debian-squeeze

What issue do you have, sounds like you are just generally concerned.
 You should direct concerns to the authors of the software you are
concerned about, no many others would care or be in any position to
answer.

If you followed the above instructions it's possible that during the
start of dropbear there is vary little entropy required/used until you
auth over ssh.  If you skipped the step where of saving host keys into
your initrd, then this could be your issue as dropbear's initscripts
should 'block' startup while entropy is collected.

Is that the behavior you are seeing?  If each startup is generating
ssh host keys, that's vary bad and should be avoided.

AUMK urandom is not delayed if there is no entropy available.
Applications should not be looking there for entropy, that would be a
bug in the application.  I'm unfamiliar with a method for determining
the entropy of bytes read from urandom, an interesting concept.

Only a dropbear developer would be able to insist that urandom is only
used when appropriate.  Only you can prevent the re-generation of ssh
host keys.

On 02/12/13 10:55, Lukas Schwaighofer wrote:
> Hi,
> 
> I started using remote unlocking of encrypted filesystems within
> the initramdisk (as provided by the cryptsetup/dropbear packets)
> some time ago. However I am worried because of the potentially low
> entropy during the execution of the initramfs and dropbear using
> /dev/urandom as a source for randomness.
> 
> /usr/share/doc/cryptsetup/README.remote.gz from my installed
> cryptsetup (2:1.4.3-4) states in the Issues section, that the ssh
> daemon (dropbear) "might be delayed until enough entropy has been
> retrieved". I couldn't find any other references of dropbear
> delaying startup due to low entropy. In the dropbear code I could
> only find graceful handling of a blocking random source but no
> builtin delay mechanism.
> 
> Can anyone confirm that dropbear does delay startup if the kernel
> is low on entropy?
> 
> Thanks Lukas
> 

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iQIcBAEBAgAGBQJRGqB8AAoJEOPRqa2O3KuK4JsP/jmboZHlnlIO4qEMvXpHVwSA
0EMWj59MSjDdMsDjOfylQoGs4f1IybxYPt/OhFM+ZWnAutchacpz7AM2nodvi7G/
TbqzHb3+YX6Ee3M4iVql7SAUBNTd4bv0xkG7tCoiZm5uaPC2UMtxajGy9q66vB49
TNp6R1MFCfU2l8ymSFMI5/IpBtkN4e+swy66rxuKl0POTw0Gh84YfElReRyJt+mM
jC7zYmUJY4rmp5wSYUpTNaUfMNRnFXfWSpji4odDB48MQRumsbvOdAgl/xcGYB5Q
GdPLJBY0VpzU2RBQfrl8ugyFYy935uUlmhlOn9hIkf1+hj33yzQ1o9z5Vbn6U32m
YYxi2wJ3CRiPuhSi786xJZ3Z6ZQAwlt6y1G9YdbZyEwry0zT/lzkX1rkzgZfbXjC
WlxBG4b+Bez3d6sbU/F4LEps5wrthy+EZazlICDFKTRYjzEWPRWPwxr4mJlgW4V2
Njb1Srjhv5h7YVDshRn/Uu4OqSO4uepV6GvrPGjhrhMSlzB3+FwRx3F2KIb1gaWW
un7HmFm/WXOweeJoheTzntfqxsxD2OSHglICgR+Nr0xl9rm/GZW2zIVpD4NyoNVR
tmNcoREvDiY+FwWOE4wf5rFZGGUrModFcUTv34CtSFcKd0bHogAvW/ED3Idip3l2
aD4WHj8/F0BEqo6I8qHL
=xWXO
-END PGP SIGNATURE-


-- 
To UNSUBSCRIBE, email to debian-security-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/511aa082.6030...@mikemestnik.net



dropbear delayed startup

2013-02-12 Thread Lukas Schwaighofer
Hi,

I started using remote unlocking of encrypted filesystems within the
initramdisk (as provided by the cryptsetup/dropbear packets) some time
ago. However I am worried because of the potentially low entropy during
the execution of the initramfs and dropbear using /dev/urandom as a
source for randomness.

/usr/share/doc/cryptsetup/README.remote.gz from my installed cryptsetup
(2:1.4.3-4) states in the Issues section, that the ssh daemon (dropbear)
"might be delayed until enough entropy has been retrieved". I couldn't
find any other references of dropbear delaying startup due to low
entropy. In the dropbear code I could only find graceful handling of a
blocking random source but no builtin delay mechanism.

Can anyone confirm that dropbear does delay startup if the kernel is low
on entropy?

Thanks
Lukas



signature.asc
Description: OpenPGP digital signature