Wie kann man schnell (unsichere) GPG-Schlüssel generieren?

8

Ich möchte die Generierung von mindestens zwei GPG-Schlüsseln für Test- und Demonstrationszwecke in einer virtuellen Maschine automatisieren. Aus diesem Grund möchte ich sicherstellen, dass die Schlüsselgenerierung schnell erfolgt und im Idealfall überhaupt nicht verwendet oder geändert wird /dev/*random. Zum Beispiel wäre es in Ordnung, die Systemuhr als einzige zufällige Quelle zu verwenden:

$ gpg --quick-gen-key 'alice' [options] --random-data $(date +%s)
$ sleep 2
$ gpg --quick-gen-key 'bob' [options] --random-data $(date +%s)

Ich konnte solche Optionen nicht finden. Es gibt -quick-randomund --debug-quick-randomdie nicht auf der manSeite sind, scheinen von unterstützt zu werden gpgund funktionieren einfach nicht. Diese Befehle wurden beispielsweise einige Minuten lang ausgeführt, bevor ich sie tötete:

$ gpg --batch --debug-quick-random --passphrase 'alice' --quick-gen-key '[email protected]'
$ gpg --batch -quick-random --passphrase 'alice' --quick-gen-key '[email protected]'

Verwenden von gpg(GnuPG) 2.1.2.

l0b0
quelle
Welchen Weg haben Sie am Ende genommen?
gf_
@gf_ Ich bin zu etwas anderem übergegangen.
10.

Antworten:

3

Ich hatte genau die gleichen Anforderungen beim Schreiben meines Smartcard-Setup-Programms . Während des Tests war mir die Entropie egal, und ich musste bei jedem Test mehrere GPG-Schlüssel hintereinander generieren.

Wie ich in meiner Antwort hier beschrieben habe, hat mir das folgende Skript geholfen, die Dinge zu beschleunigen:

#!/usr/bin/env python
# For testing purposes only 
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES

import fcntl
import time
import struct

RNDADDENTROPY=0x40085203

while True:
    random = "3420348024823049823-984230942049832423l4j2l42j"
    t = struct.pack("ii32s", 8, 32, random)
    with open("/dev/random", mode='wb') as fp:
        # as fp has a method fileno(), you can pass it to ioctl
        res = fcntl.ioctl(fp, RNDADDENTROPY, t)
    time.sleep(0.001)
Anthon
quelle
Hat dies nicht eine ziemlich große Chance, zu identischen Schlüsseln zu führen? (Ich denke, dem könnte durch Hinzufügen von Nano-Zeit zum Mix entgegengewirkt werden.)
10b0
@ l0b0 Ich habe das nicht bemerkt, es könnte sein. Dies muss jedoch nicht der Fall sein, da das System auch während der Ausführung noch Entropie einfügt. Sie können den Nanozeit- oder einen Zufallszahlengenerator mit langem Zyklus verwenden, der nicht vom Lesen abhängt /dev/random.
Anthon