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.
Generierung öffentlicher Schlüssel mit GnuPG
-
- 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
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
Wobei es auch kein Problem sein sollte diese Angaben ebenfalls programmatisch zu erzeugen. Kann man ja einfach durchnummerieren, oder so.
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:
Um dann mit
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!
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
Code: Alles auswählen
os.system("gpg --batch --gen-key /path/to/the/file/above")
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!
@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.
Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
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!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.
Möchtest du damit sagen, dass du es bei Google mit "python gnupg" nicht einmal bis zum ersten Treffer schafst?tejubin hat geschrieben:Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
Das Leben ist wie ein Tennisball.
Damit versuche ich es ja bereits die ganze Zeit. Und bekomme ja nicht das hin, was ich will..EyDu hat geschrieben:Möchtest du damit sagen, dass du es bei Google mit "python gnupg" nicht einmal bis zum ersten Treffer schafst?tejubin hat geschrieben:Und wie würde so etwas aussehen? Weiß jetzt nicht genau, was du damit meinst. Hast du ein bestimmtes im Hinterkopf?Leonidas hat geschrieben:Du könntest doch auch ein Python-GnuPG-Binding nehmen, das könnte die Sache einfacher machen.
- 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
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ich habe es jetzt endlich hinbekommen, das zu installieren!cofi hat geschrieben:Das hoert sich mir aber ziemlich genau nach dem an was du willst: http://packages.python.org/python-gnupg ... ating-keys
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')
Danke für Eure Geduld..
@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.
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.