Generierung öffentlicher Schlüssel mit GnuPG

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

Hallo erstmal!

Ich war mir nicht sicher, wo ich mein Problem genau posten sollte, also tue ich das erstmal hier. Ansonsten kann dies auch gerne verschoben werden.

Also, ich brauche für meine Bachelor-Arbeit eine sehr große Anzahl an öffentlichen PGP-Schlüsseln. Da ein Abruf einer solch großen Zahl nicht automatisiert von einen der Server im Internet erfolgen kann, möchte ich mir diese Schlüssel jetzt selbst generieren.

Hierfür versuche ich GnuPG zu benutzen. Meine relativ allgemein gehaltene Frage ist erstmal:

Gibt es eine Möglichkeit (da man nach meinem bisherigen Eindruck, bei jeder Schlüsselerzeugung eindeutige Daten wie Email-Adresse angeben muss) puristisch wie möglich, mehrere (sehr viele) Schlüssel zu erzeugen, ohne jedem zu erzeugenden Schlüssel solche Daten zuordnen zu müssen?

Diese öffentlichen Schlüssel brauche ich lediglich zur Mathematischen Untersuchung, für mich ist also nur der entstehende Schlüssel wichtig.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo tejubin, willkommen im Forum,

Ich sehe das Problem nicht, weder der Name noch die E-Mailadresse muss in OpenPGP eindeutig sein.

grüße,
Leonidas
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Wobei es auch kein Problem sein sollte diese Angaben ebenfalls programmatisch zu erzeugen. Kann man ja einfach durchnummerieren, oder so.
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

Ich habe jetzt den Versuch gestartet, wie von BlackJack vorgeschlagen, die Einzelnen Parameter einfach durchzunummerieren.

Es gibt bei der nicht-interaktiven Schlüsselerzeugung (interaktiv = mit der manuellen Eingabe der Parameter durch den Benutzer über die Tastatur) zwei Wege, um die Parameter automatisiert zu übergeben. Einmal ein Parameter-File, welches dann wie folgt ausschaut:

Code: Alles auswählen

 %echo Generating a standard key
     Key-Type: RSA
     Key-Length: 1024
     Subkey-Type: ELG-E
     Subkey-Length: 1024
     Name-Real: 1
     Name-Email: 1@web.de
     Passphrase: 1111111111111111111111111111
     %pubring 1.pub
     %secring 1.sec
     # Do a commit here, so that we can later print "done" :-)
     %commit
     %echo done
Um dann mit

Code: Alles auswählen

os.system("gpg --batch --gen-key /path/to/the/file/above")
Den Schlüssel zu erzeugen. Diese Methode scheint mir aber zu aufwendig, da ich eine Anzahl an Schlüssel in der Größenordnung von 10^13 erzeugen muss. Und für jeden Schlüssel diese Datei wieder editieren.. ich weiß ja nicht.

Die zweite Möglichkeit läuft über stdin, wovon ich lediglich weiß, dass das die Standard-Input Pipe ist, die üblicherweise mit der Tastatur verbunden ist und mir so meines Erachtens nicht weiterhelfen kann. ?

Habt ihr Vorschläge, wie man das mit dem Parameter-File geschickter lösen kann? Ich habe schon versucht, einfach einen String statt des Parameter-Files anzugeben. Brachte nichts.

Eigentlich müsste es doch irgendwie möglich sein, einen formatierten String in einer Schleife zu übergeben...

Wäre sehr nett, wenn jemandem von euch da etwas einfallen würde. Dankeschön! :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@tejubin: Mit "subprocess.Popen" kannst Du Prozessen Eingaben über ihre Standardeingabe schicken. Das ist zwar kürzer und eleganter als eine Parameter-Datei, aber – da ein solche Datei kurzlebig ist und daher hauptsächlich im Cache vorliegt – nicht wesentlich schneller. 10^13 Schlüssel zu erstellen, dauert so oder so ewig.
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

lunar hat geschrieben:@tejubin: Mit "subprocess.Popen" kannst Du Prozessen Eingaben über ihre Standardeingabe schicken. Das ist zwar kürzer und eleganter als eine Parameter-Datei, aber – da ein solche Datei kurzlebig ist und daher hauptsächlich im Cache vorliegt – nicht wesentlich schneller. 10^13 Schlüssel zu erstellen, dauert so oder so ewig.
Dafür hätte ich einen Hochleistungsrechner zur Verfügung. Aber wenn du sagst, dass das nicht viel langsamer ist, könnte man das dann ja notfalls so machen. Aber das mit dem "subprocess.Popen" werde ich mir mal angucken. Danke schonmal!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

tejubin hat geschrieben:
Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?
Möchtest du damit sagen, dass du es bei Google mit "python gnupg" nicht einmal bis zum ersten Treffer schafst? ;-)
Das Leben ist wie ein Tennisball.
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

EyDu hat geschrieben:
tejubin hat geschrieben:
Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?
Möchtest du damit sagen, dass du es bei Google mit "python gnupg" nicht einmal bis zum ersten Treffer schafst? ;-)
Damit versuche ich es ja bereits die ganze Zeit. Und bekomme ja nicht das hin, was ich will..
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das hoert sich mir aber ziemlich genau nach dem an was du willst: http://packages.python.org/python-gnupg ... ating-keys
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

Ah, ich sehe auch gerade, dass ich doch etwas anderes benutze, was dem ähnlich sieht. So, versuche mich mal daran, dass zu installieren.
tejubin
User
Beiträge: 7
Registriert: Montag 23. April 2012, 14:00

cofi hat geschrieben:Das hoert sich mir aber ziemlich genau nach dem an was du willst: http://packages.python.org/python-gnupg ... ating-keys
Ich habe es jetzt endlich hinbekommen, das zu installieren!

Nun versuche ich, es wie in der Documentation http://packages.python.org/python-gnupg/ beschrieben zu benutzen.
Aber alleine das initialisieren des Interfaces

Code: Alles auswählen

gpg = gnupg.GPG(gnupghome='/path/to/home/directory')
klappt nicht, da 'gnupg' nicht bekannt ist. Auch nicht, wenn ich es importiere. Ich arbeite und bin neu unter Ubuntu. Die installation von gnupg war erfolgreich. Muss ich noch zusätzliche Einstellungen vornehmen (irgendwelche Pfade setzen?), damit das klappt?

Danke für Eure Geduld..
BlackJack

@tejubin: Wenn Du ``import gnupg`` durchgeführt hast, dann ist danach auch der Name `gnupg` an das Modul gebunden. Oder Du bekommst einen `ImportError` weil das Modul/Paket nicht korrekt installiert wurde. Dann müsstest Du mal beschreiben, wie Du es installiert hast.

Auf der anderen Seite verstehe ich nicht warum Du nicht etwas aus der Paketverwaltung von Ubuntu installierst. Da gibt es gleich mehrere Anbindungen an GnuPG für Python, alleine zwei an die ``libgpgme``, die das verwenden von GnuPG aus Anwendungen heraus vereinfachen soll. Bei beiden gibt es ein Beispielskript zum generieren von Schlüsseln.
Antworten