Grundlage für die Entwicklung des Programms XGpgSig war die interessante Diskussion in der Newsgruppe „hamster.de.tools“
mit den Thema „Headersignatur“ Siehe: Google-Gruoups Nachrichten
(speziell für Newsgruppen) sollten mit einen Header „X-PGP-Sig“ als signierte Nachrichten versehen sein.
Ursprünglich hatte solche Nachrichten dieses Format:
Message-ID: <47EF7D9D.40206700@example.com> Date: Sun, 30 Mar 2008 13:46:37 +0200 From: Thomas Mustermann <test@example.com> User-Agent: Thunderbird 2.0.0.12 (Windows/20080213) Hamster/2.1.0.15 MIME-Version: 1.0 Newsgroups: de.test Subject: Testnachricht Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hier ist eine Testnachricht. TEST...TEST....TEST....TEST.... -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (MingW32) iQEVAwUBR/Yr91WX8k69M166AQHHXwf/WM8LpnoDO9ghHsUJm4aRGbKiEL3qHy8x j6sJNiQZMAQA0NRl6l7ctmoupEuwdseZ8x4jUvSuNea8BKtGLOIeHTwVdZCAO6d5 ZLgqIRMrEnQZnjoPeNloBm92ewZhe+Z1okmJgdtISLbldFAFsuG4Ol70RVp/Qun8 b3hsOB/900YaSTX0ILQzn6eks0H1Njt0DQaNxy34czCSmVZfwFv4CQmQOXFga0QT 5pu/dekbbnsWy/DNM3qh57DOEbFeQNGq3TsLVyrvri35VoQe7SsiK1iaRXG0pWC3 PrTJ0b1YfCJ51N3Yff00+gd7wEDi3EXdHOuEtbw7zBwcKZKC6t89Eg== =uDDq -----END PGP SIGNATURE----
Und hier die bevorzugte Form:
Message-ID: <47EF7D9D.40206700@example.com> Date: Sun, 30 Mar 2008 13:46:37 +0200 From: Thomas Mustermann <test@example.com> User-Agent: Thunderbird 2.0.0.12 (Windows/20080213) Hamster/2.1.0.15 MIME-Version: 1.0 Newsgroups: de.test Subject: Testnachricht Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-PGP-Sig: GnuPG_v1.4.8_(MingW32) Date,From,Newsgroups,Subject iQEVAwUBR/Yr91WX8k69M166AQHHXwf/WM8LpnoDO9ghHsUJm4aRGbKiEL3qHy8x j6sJNiQZMAQA0NRl6l7ctmoupEuwdseZ8x4jUvSuNea8BKtGLOIeHTwVdZCAO6d5 ZLgqIRMrEnQZnjoPeNloBm92ewZhe+Z1okmJgdtISLbldFAFsuG4Ol70RVp/Qun8 b3hsOB/900YaSTX0ILQzn6eks0H1Njt0DQaNxy34czCSmVZfwFv4CQmQOXFga0QT 5pu/dekbbnsWy/DNM3qh57DOEbFeQNGq3TsLVyrvri35VoQe7SsiK1iaRXG0pWC3 PrTJ0b1YfCJ51N3Yff00+gd7wEDi3EXdHOuEtbw7zBwcKZKC6t89Eg== =uDDq Hier ist eine Testnachricht. TEST...TEST....TEST....TEST....
Es werden nur bestimmte Header und der Nachrichtentext zur Signierung verwendet.
Das von Programm „XPgpSig“ von Jürgen Haible hatte PGP verwendet. XGpgSig setzt nun auf GnuPG auf.
Das Programm XgpgSig wird über die Eingabeaufforderung gesteuert.
Hierzu muß man bestimmte Parameter eingeben. Folgende Parameter gibt es:
Parameter | Bedeutung | |
sign | Anweisung zur Signierung | |
verify | Anweisung zur Prüfung einer Signatur | |
Help | Zeigt Hilfe an | |
? | Zeigt Hilfe an | |
-i <Pfad> | Nachricht zum Signieren (vollständiger Pfad) | |
-o <Pfad> | Fertige, signierte Nachricht (vollständiger Pfad) | |
-s <ID> | Unterschreiben mit Schlüssel-ID | |
-p <Pfad> | Vollständiger Pfad zur GPG.EXE | |
-k <Passwort> | Kennwort zur Signierung [ab Version 0.0.2.4 vorhanden] | |
-h <Name> | Zuweisung des Hash Algorithmus zur Signierung und Prüfung [ab Version 0.0.2.5 vorhanden] |
In diesen Versionen wird GNUPG in der Version 1.x verwendet.
Die INI-Datei ist der einfachste Weg bestimmte Veränderung vor der Signierung vorzunehmen.
Hierbei kann man sich der Scriptsprache von Hamster bedienen.
Sektion | Eintrag | Wert |
XGpgSig | GnuPG | Vollständiger Pfad zur GPG.EXE z.B. C:\GnuPG\ (Wird nur verwendet, wenn Option -p nicht verwendet wird.) |
XGpgSig | RunGPG | Optionen zum Signieren mit der GPG.EXE z.B. –pgp2 –no-comments –clearsign Standard: –pgp2 –no-comments –clearsign |
XGpgSig | SigHeader | Header die zur Signierung benutzt werden sollen. Format: “:HEADER:HEADER:HEADER:„ z.B. :Subject:Control:Date:From:Sender: Standard: :Subject:Control:Message-ID:Date:From:Sender:Newsgroups:Approved:Followup-To:Supersedes: |
XGpgSig | KillTmp | 0 oder 1 |
XGpgSig | PWait | Integer Wert in Millisekunden, z.B. 300 |
XGpgSig | ShowGPG | 0 oder 1 |
XGpgSig | SigHash | Kennzeichnung des Hash Algorithmus |
Log | LogBadSig | 0 oder 1 |
Log | LogGoodSig | 0 oder 1 |
PW | Passwort | Ihr Passwort |
PW | KeyID | Ihre Schlüssel ID |
Hier ein Beispiel einer INI-Datei (liegt auch dem Programm bei)
[XGpgSig] GnuPG=G:\Programme\GNU\GnuPG\ SigHeader=:From:Subject:Newsgroups: RunGPG=--no-comments –clearsign KillTmp=0 PWait=300 ShowGPG=0 SigHash=MD5 [Log] LogBadSig=1 LogGoodSig=0 [PW] Passwort=passwort KeyID=0xGnuKey
In diesen Versionen wird GNUPG in der Version 2.x verwendet.
Gegenüber der obrigen Versionen wird GNUPG anders über die Kommandozeile aufgerufen.
Die INI-Datei ist der einfachste Weg bestimmte Veränderung vor der Signierung vorzunehmen.
Hierbei kann man sich der Scriptsprache von Hamster bedienen.
Sektion | Eintrag | Wert |
XGpgSig | GnuPG | Vollständiger Pfad zur GPG2.EXE z.B. C:\GnuPG\ (Wird nur verwendet, wenn Option -p nicht verwendet wird.) |
XGpgSig | RunGPG | Optionen zum Signieren mit der GPG2.EXE z.B. –batch –no-comments Standard: –batch –no-comments |
XGpgSig | SigHeader | Header die zur Signierung benutzt werden sollen. Format: “:HEADER:HEADER:HEADER:„ z.B. :Subject:Control:Date:From:Sender: Standard: :Subject:Control:Message-ID:Date:From:Sender:Newsgroups:Approved:Followup-To:Supersedes: |
XGpgSig | KillTmp | 0 oder 1 |
XGpgSig | PWait | Integer Wert in Millisekunden, z.B. 300 |
XGpgSig | ShowGPG | 0 oder 1 |
XGpgSig | SigHash | Kennzeichnung des Hash Algorithmus |
Log | LogBadSig | 0 oder 1 |
Log | LogGoodSig | 0 oder 1 |
PW | Passwort | Ihr Passwort |
PW | KeyID | Ihre Schlüssel ID |
Hier ein Beispiel einer INI-Datei (liegt auch dem Programm bei)
[XGpgSig] GnuPG=G:\Programme\GNU\GnuPG\ SigHeader=:From:Subject:Newsgroups: RunGPG=--batch --no-comments KillTmp=0 PWait=300 ShowGPG=0 SigHash=MD5 [Log] LogBadSig=1 LogGoodSig=0 [PW] Passwort=passwort KeyID=0xGnuKey
XGpgSig verwendet ab der Version 0.1.x einen anderen internen Aufruf der Kommandozeile.
Zudem wird nur noch GNUPG 2.x verwendet und ist gegenüber den älteren Versionen daher inkompatibel.
Abweichungen in der INI-Datei sind hier extra aufgeführt, alle anderen Parameter bleiben gleich.
Wert: | Der volländige Pfad zur EXE-Datei „GPG.EXE“ |
Standardwert: | N/A 1) |
:bu04: Bei Programmversion 0.1.x und höher ist hier der vollständige Pfad zur „GPG2.EXE“ anzugeben.
Siehe: Parameter der GPG.EXE , Parameter der GPG2.EXE
Wert: | Parameter die zur Signierung verwendet werden. |
Standardwert: | –pgp2 –no-comments –clearsign |
:bu04: Bei Programmversion 0.1.x und höher hat sich der Standardwert geändert.
Dieser Eintrag sollte nicht verändert, sonder nur ergänzt werden. (Anfügen von Parametern)
Wert: | Parameter die zur Signierung verwendet werden. |
Standardwert: | –batch –no-comments |
Wert: | Folgende Header werden zur Signierung verwendet. |
Standardwert: | :Subject:Control:Message-ID:Date:From:Sender:Newsgroups:Approved:Followup-To:Supersedes: |
Das allgemeine Format ist „Format: “:HEADER:HEADER:HEADER:“.
Hierbei werden die Header durch den Doppelpunkt getrennt.
Wert: | 0 oder 1 |
Standardwert: | 1 |
Der Eintrag „KillTmp“ (Sektion: XgpgSig) ist in der Version 0.0.2.2 in der INI-Datei hinzugekommen.
Der Wert 0 steht für den boolescher Ausdruck FALSE und der Wert 0 für TRUE.
Mit den Wert 0 werden die erzeugten temporären Dateien die in Betrieb des Programms verwendet werden
nicht gelöscht. Ist jedoch der Wert 1, so werden diese Dateien kurz vorm Beenden des Programms gelöscht.
Es wird empfohlen den Wert auf 1 zu setzen, da es zu Problemen innerhalb des Programms kommen kann
wenn diese temporären Dateien noch vor der Benutzung von XgpgSig vorhanden sind.
Bei der Signierung werden die temporären Dateien „XpgpSig.$$i“ und die Datei „XpgpSig.$$i.asc“ erstellt.
Die Datei „XpgpSig.$$i“ wird durch die internen Prozedur ConvertMsgToSign erzeugt.
Hier werden die ausgewählten Header und der Nachrichtentext für die Signierung ausgewählt und in dieser
temporären Datei abgespeichert. Die Datei „XPgpSig.$$i.asc“ ist die Datei, welche nach der Signierung mit
der GPG.EXE entsteht. Diese Datei wird später weiterverarbeitet um dann die Ausgabedatei zu erzeugen.
Bei der Prüfung werden die temporären gleichen Dateien wie bei der Signierung erzeugt.
Dabei wird die Datei „XPgpSig.$$i“ durch die interne Prozedur ConvertXPgpSigToPgp erzeugt.
Nun wird noch der PGP-Block noch hinzugefügt und die Datei „XPgpSig.$$i.asc“ erzeugt.
Dann wird mittels GPG.EXE geprüft. Das Prüfergebnis wird in die Ausgabedatei geschrieben.
Wert: | Integer Wert in Millisekunden, z.B. 300 |
Standardwert: | 300 |
Dieser Eintrag wird erst ab der Version 0.0.2.4 genutzt. Hier wird ein Integerwert angegeben.
Dies ist die Wartezeit (in Millisekunde) zwischen den Erscheinen des Fensters zur Signierung (GPG.EXE)
`[Die Passphrase wird abgefragt]` und der automatischen Übergabe des Passworts.
Wert: | 0 oder 1 |
Standardwert: | 1 |
Beim Wert `1` wird das das Fenster (Kommandozeile) bei der Parameterübergabe angezeigt. Beim Wert `0` nicht.<br>
Wert: | Kennzeichnung des Hash Algorithmus |
Standardwert: | MD5 |
Die möglichen Hash Alogrithem sind von der Version von GnuPG anbhängig.
Bei der Version 1.4.9 sind es: „MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224“.
Genauer Informationen entnehmen Sie bitte der Dokumenation von GnuPG für Windows.
Wert: | 0 oder 1 |
Standardwert: | 1 |
Der Wert „1“ steht für das Anlegen einer Logdatei.
Hierbei werden Fehlermeldungen in einer Datei gesammelt gespeichert.
Wert: | 0 oder 1 |
Standardwert: | 1 |
Der Wert „1“ steht für das Anlegen einer Logdatei.
Hierbei werden Meldungen in einer Datei gesammelt gespeichert.
Wert: | Ihr Kennwort |
Standardwert: | XGpgSig |
Hier können Sie ihr benötiges Kennwort bei der Signierung mit Ihren GnuPG-Schlüssel angeben.
Dies erfolgt im Klartext. Sie können auch das Kennwort im Kommandozeilenfenster von GnuPG selbst eingeben.
Hierbei sollte der Wert „ShowGPG“ in Sektion „XGpgSig“ auf „1“ stehen.
Wert: | KeyID |
Standardwert: | N/A 2) |
Hier sollte nun Ihre GnuPG-Schlüssel ID stehen in Form „0x…..“.
Mit dieser KeyID wird die Nachricht signiert. Alternativ kann es über
den Parameter „-s`<ID>`“ erfolgen.
Weitere Informationen können Sie den deutschsprachigen Handbuch im PDF-Format entnehmen.
Dies ist im Downloadbereich zu finden.