Schlagwort-Archive: GPG

YubiKey: GPG-Kartenfehler / Sharing Violation unter Windows

Ugh – Windows und Sicherheitsfunktionen passt irgendwie immer noch nicht zusammen. Schon länger nutze ich einen YubiKey als GPG-Smartcard um E-Mails zu signieren und entschlüsseln. Das funktionierte mit GPG4Win und Thunderbird bisher auch recht brauchbar – also bis auf den Windows-GPG-Agent-Bug.

Wie gesagt: Bisher. Heute dann ein etwas seltsamer Bug:

Wat. Schnell nochmal den Daemon durchstarten: Nix. Im Log findet man folgende Info:

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2017/02/wp-1485952629803-300×225.jpgWait. Sharing violation? Greift sonst noch wer zu? Jepp, natürlich tut das Jemand. Ich hatte zwischenzeitlich auf dem YubiKey für ein anderes System X.509-Zertifikate (aka PIV) eingerichtet. Diese kommen z.B. zur Authentifizierung zum Einsatz und können unter Windows auch z.B. für Remote-Logins und das entschlüsseln von Bitlocker-Festplatten verwendet werden. Entsprechend hat nun also auch Windows die PIV-Smartcard gefunden und belagert das Device dauerhaft – somit ist der Zugriff für gpg nicht mehr möglich. Abhilfe schafft hier den Dienst “CertPropSvc” (aka “Zertifikatverteilung”) zu beenden bzw. neuzustarten. In letzterem Fall bleibt das Gerät frei bis man die nächste Software mit PIV-Zugriff (z.B. Remotedesktop) startet.

Also als weiterer Punkt auf dem nicht enden wollenden Wunschzettel für einen würdigen Nachfolger für die leider sicherheitstechnisch bedenklich gewordenen YubiKeys: Parallelität der SC-Reader…

Windows/GPG/Smartcard – GPG mit Powershell bei SC-Verbindung neu starten

Beim Thema E-Mail-Verschlüsselung ist GPG weit verbreitet. Die Gundfunktionen sind z.B. mit Thunderbird und Enigmail oder gar eine Appliance auch für Einsteiger nutzbar und durch das WoT erstpart man sich die Abhängigkeit von – teils Zweifelhaften – zentralen Zertifizierungsstellen. Ich selbst nutze seit einiger Zeit keinen Softwareschlüssel sondern ein dediziertes HSM (Hardware Security Module) in Form eines YubiKey. Hiermit befindet sich der Key nicht mehr auf dem PC und auch die Verschlüsselung/Signierung läuft in Teilen auf dem Prozessor des YubiKey. Was unter Linux ohne große Änderungen funktioniert macht bei Windows eher wenig Spaß. Zwar ist auch GPG4Win in der Lage mit CryptoCards & Co umzugehen, häufiges Ein- und Ausstecken führt jedoch schnell zu einem hängenden GPG-Agent oder Absturzen der scdaemon.exe (GPG SmartCard Daemon). Einzige Abhilfe: Alle GPG-Prozesse beenden und neu starten. Da Verschlüsselung und Windows ohnehin eher selten zu finden ist sind auch Informationen dazu dünn gesät. Da ich teilweise um das System aus Redmond nicht herum komme und ein Fix in GPG4Win nicht in Sichtweite ist muss also wieder einmal der Holzhammer her: Irgendwie muss beim Einstecken des USB-Gerätes das GPG-System zurückgesetzt werden.

Also frisch ans Werk. Als Sprache soll mal wieder Powershell herhalten – direkt verfügbar, halbwegs systemnah, sollte passen. Über WMI kann man sich auch über ab- und angesteckte Geräte informieren lassen. Leider konnte ich keine Möglichkeit finden weitere Infos wie z.B. Hersteller oder Treiber gleich mit zu erhalten. Da sonst eher wenig Gerätefluktuation zu erwarten ist ziehe ich die “passt scho”-Karte und werde das GPG-System bei jedem neu auftauchenden Gerät einmal zurücksetzen.

Das Grundkonstrukt selbst scheint von Andy.L13 zu stammen, die kläglichen versuche von Mass-Storage auf andere USB-Geräte umzustellen stammen von mir. In Zeile 24 kann man für WindowStyle statt Minimized auch Hidden nutzen um das Ganze im Hintergrund laufen zu lassen – ich bevorzuge ein optisches Feedback. Das Script kann passend in Autostart oder als geplanter Task verstaut werden.

Sicher keine saubere Lösung, aber “works for me”.


Edit: Stackoverflow (bzw warriorpostman) liefert

Das folgende Script reagiert nur noch auf den vom YubiKey emulierten Smartcard-Reader. Das Objekt $Event.SourceEventArgs.NewEvent.TargetInstance sieht wie folgt aus – die Informationen für’s Query sollten sich im Gerätemanager finden lassen:

Ich werde mich am Service WUDFRd (aka Gerät mit Windows SmartCard-Treber) orientieren. Prinzipiell könne man aber auch auf die USB-ID triggern uns so Scripte bauen, welche bei einstecken eines USB-Sticks ein Backup durchführen oder bei verbinden einer unbekannten USB-Tastatur entsprechend reagieren (böse Ente). Das zugehörige Script:

 

[Linux/GnuPG] Key-Erstellung nicht möglich: command get_passphrase failed: Operation cancelled

Beim Versuch einen GPG-Key für eine Backupverschlüsselung zu erzeugen bricht GPG an der Stelle, an der nach einem Kennwort gefragt werden müsste, mit folgender Meldung ab:

can't connect to `/home/user/.gnupg/S.gpg-agent': No such file or directory
gpg-agent[4854]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: Key generation canceled.

Grund dafür ist offenbar die Art, mit welcher die aktuelle Shell gestartet wurde. Ich nutzte su um von root, mit dem ich die nötigen Pakete installiert hatte, in den Benutzerkontext des Backupnutzers zu wechseln. Dies seint allerdings etwas Chaos bei der Umgebungsdefinition zu verursachen und wird von GPG offenbar nicht unterstützt. Mann muss sich mit dem User direkt auf der Konsole oder per SSH anmelden, dann lässt sich der Schlüssel fehlerfrei generieren. (via christian-stankowic.de)

E-Mail made in Germany?

Da gerade auf einem meiner alten Accounts Werbung für “E-Mail made in Germany” aufgeschlagen ist erstelle ich dann hiermit mal meine eigene Zertifizierung:

Verschlüsselung zwischen Server und Endgerät
Alle meine E-Mail werden – wie auch bei “E-Mail made in Germany” zwischen Server und Endgerät mittels TLS (früher SSL genannt) verschlüsselt. Gegen NSA & Co bringt dies natürlich nichts, da diese sich auf Grund der Zentralen Struktur recht einfach eigene, gültige Zertifikate ausstellen können.

Verschlüsselung zwischen Mailervern
Alle E-Mails werden – wenn von der Gegenseite unterstützt – zwischen den Mailservern verschlüsselt übertragen. Dieses Verfahren ist bereits seit Jahren im Einsatz, ist jedoch ebenfalls für Manipulationen auf Infrastrukturebene anfällig. Bei E-Mail-Provider wie z.B. GMX oder T-Online, welche dieses 1999 spezifizierte Sicherheitsverfahren nicht vollständig unterstützen[1], muss die E-Mail auf dieser Strecke unverschlüsselt übertragen werden.

Sichere Rechenzentren
Alle Server stehen in Rechenzentren, welche über eine Zutrittskontrolle verfügen. Da Angriffe üblicherweise über das Internet erfolgen bzw. Behörden mit richterlichem Beschluss hereingelassen werden müssen hat dies auf die Sicherheits allerdings keine Wirkliche Auswirkung.

Datenspeicherung in Europa
Leider befinden sich nicht alle meine Server in Deutschland, jedoch ist Frankreich beim Thema Datenschutz etwa auf deutschem Niveau. Btw: Meine E-Mails werden fast ausschließlich in Deutschland geschrieben, sind also dennoch “made in germany” 😉

…und ich lege noch drei Punkte oben drauf:

Keine Speicherung bei Cloud-Diensten
Die Daten werden nicht auf den Speicherdiensten von Cloud-Speichern oder CDNs abgelegt, entsprechend ist zumindest grob bekannt an welcher Stelle die Daten liegen.

Die E-Mail nimmt den kürzesten Weg
Daten werden – sofern möglich – auf dem kürzesten Weg übermittelt und nehmen keinen Umweg über Staaten der “Five Eyes”. [2]

Die Mail kommt verschlüsselt!
Jeder, der GPG nutzt und mir seinen öffentlichen Key bereitstellt erhält meine Kommunikation grundsätzlich in Verschlüsselter form – so lässt sich der Mailtext zwischendurch nicht mitlesen oder Manipulieren.

[1] Beim Test am 26.10.2013 wurden eingehende Mails ohne TLS angeliefert
[2] Alle Rechenzentren sind über DeCix verbunden, Traceroutes zu diversen Testsystemen in Deutschland zeigen – im Gegensatz zum Verhalten einiger anderer Provider – keine Umwege über den Ozean.