#!/bin/blog

June 3, 2008

Massengenerierung von PGP-Schlüsseln

Filed under: Security — Tags: , , , — martin @ 4:50 pm

Wenn man jemandem ins Pflichtenheft geschrieben hat, daß seine Software unter der Last von 10.000 PGP-Keys nicht schwächeln darf, muß man irgendwann auch mal ins kalte Wasser springen und tatsächlich 10.000 Keys generieren:

#!/bin/sh -e

export LANG=C

for I in `seq 1 10000`
do
        NUMBER=`printf "%5.5d\n" $I`
        USERNAME="Testuser #$NUMBER"
        COMMENT="auto-generated key"
        EMAIL="testuser-$NUMBER@pgp-loadtest.example.com"
        (
        cat <<EOF
        %echo Generating Key for $EMAIL
        Key-Type: DSA
        Key-Length: 1024
        Subkey-Type: ELG-E
        Subkey-Length: 1024
        Name-Real: $USERNAME
        Name-Comment: $COMMENT
        Name-Email: $EMAIL
        Expire-Date: 2009-01-01
        Passphrase: foo
        %commit
EOF
        ) | gpg --gen-key --batch --no-default-keyring \
            --secret-keyring /var/tmp/gpg-test.sec \
            --keyring /var/tmp/gpg-test.pub
done

Die schlechte Nachricht: Spätestens nach dem dritten Key wird GnuPG eine Pause einlegen, weil der Entropie-Pool ausgelutscht ist. Ich habe meine Lösung für dieses Problem gefunden, indem ich (und das ist wirklich sehr, sehr böse, bitte auf keinen Fall zuhause nachmachen) /dev/urandom zu /dev/random umgelötet habe. Kreative alternative Lösungsvorschläge für das schmutzige kleine Entropie-Problem werden auf jeden Fall gern entgegengenommen.

Advertisements

2 Comments »

  1. Ich hatte mal ein ähnliches Problem, wenn ich mich recht erinnere ein vServer-Host, dessen Entropie chronisch ausgelaugt war, da zu viele Gäste zu viel mit HTTPS und/oder SSH kommunizierten. Oder so, ist etwas her.

    Abhilfe schuf in dem Fall der RNGD (http://packages.debian.org/rng-tools), der den Entropie-Pool auffrischt. Da das System keinen Hardware-TRNG hatte, bastelte ich mir zusätzlichen einen kleinen Daemon, der Daten vom PRNGD (http://prngd.sourceforge.net/) in den RNGD schaufelte (die EGD-Schnittstelle ist etwas eigenwillig und lässt sich nicht einfach als Input für den RNGD verwenden). Das verursachte zwar etwas Prozessorlast, half aber gegen die stockenden SSL-/SSH-Verbindungen.

    Comment by Malte — June 4, 2008 @ 10:55 am

  2. Wenn die Maschine ein sound-device hat, dann ist der audio-entropyd ganz gut: http://www.mindrot.org/audio-entropyd.html

    Comment by cycloon — June 4, 2008 @ 12:55 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: