Fragen? Antworten! Siehe auch: Alternativlos
Wenn ihr mir per PGP eine verschlüsselte Nachricht schreibt, dann MÜSST IHR DIE AUCH SIGNIEREN. Ansonsten kann ich die zwar lesen aber euch nicht verschlüsselt antworten.
Wenn ihr die Nachricht signiert, dann hängt da eure KeyID dran. Mit der kann sich mein GnuPG dann den public key vom Keyserver ziehen. Und dann kann ich auch verschlüsselt antworten.
Schaltet also bitte euren Default auf "Verschlüsseln UND signieren".
Aber Fefe, du kannst doch auch nach dem Namen oder der E-Mail suchen auf dem Keyserver! Ja schon, aber jeder kann Schlüssel unter beliebigen Namen hochladen. Wenn ihr mir eine signierte Nachricht schickt, dann kriege ich genau euren Public Key vom Server, egal wie viele Fake-Keys da noch daneben liegen.
Ich weiß nicht, welcher Volldepp "nur Verschlüsseln" zum Default gemacht hat, aber das ist an der Stelle nicht zielführend.
Ich will nicht verschweigen, dass es einen Grund gibt, etwas zu verschlüsseln aber nicht zu signieren. Der Grund ist, wenn ihr ein Dissident seid und mir etwas verraten wollt, aber wenn später die Gestapo euren Laptop beschlagnahmt und den Private Key findet, dann wäre eine Signatur unter der Mail an mich auch gleichzeitig der Beweis, dass die Mail von euch kam. Ihr hättet euch sozusagen selber inkriminiert.
Wenn ihr also etwas so Brisantes leaken wollt, dass ihr einen Zugriff der Gestapo befürchten müsst, wenn das rauskommt, dann signiert nicht.
Am besten schickt ihr das dann aber auch nicht an mich, denn da hab ich auch keinen Bock drauf, dass irgendwelche Geheimdienste mich auf ihrer Liste hochpriorisieren. :-)
Für eure normalen Mails an mich gilt jedenfalls: Verschlüsseln UND signieren. Und den public key auf einen der Keyserver hochgeladen haben.
Frühe Krypto-Software wie PGP haben nicht versucht, diese Komplexität zu verbergen. Die haben sich das angeguckt und sind zu dem Schluss gekommen, dass man die Lage nur unsicherer macht, wenn man so tut, als könnte man das in der Software lösen.
Ergebnis: Jahrelanges Herumgeflenne von Vollidioten, dass die Software ja so schwer zu bedienen sei. Man muss neue Konzepte lernen und so!1!!
Also ist moderne Krypto-Software anders. Die macht faule Kompromisse und verbirgt die Komplexität hinter einer Nebelwand aus Lügen und "weitergehen, gibt nichts zu sehen hier"-Bullshit. Am besten noch mit ein paar Dark UI Patterns wie bei Signal, der dir gelegentlich anzeigt, ein Schlüssel habe sich geändert, aber dir nicht sagt, was das bedeutet, und ob du jetzt was tun solltest oder nicht.
Das Problem ist: Da kann die Krypto so geil sein wie sie möchte! Lücken, die das UI aufreißt, kriegt auch der tollste Algorithmus nicht kompensiert.
Nimm z.B. Signal. Signal hat das Key Distribution Problem nicht gelöst. Daher hängen bei denen die Accounts an der Telefonnummer. Was für Auswirkungen hat das, wenn du deine Telefonnummer oder Simkarte verlierst? Das ist dem normalen Anwender überhaupt nicht klar.
Ich will hier nicht Signal bashen, die sind noch einer der besseren Marktteilnehmer. Ich erwähne die hier nur, weil die ein Vorreiter von neuartiger toller Krypto sind.
Nächstes Problem. Sagen wir mal, du baust einen Keyserver auf, wo man seinen Schlüssel höchlädt. Wenn jemand mit mir reden will, holt der sich meinen Schlüssel von dort. Super? Nein! Was wenn der Schlüssel da nicht von mir sondern vom BKA hochgeladen wurde?
PGP hat hier auch keine gute Lösung. Die haben sich gedacht, das wird dem Anwender schon klar sein, dass er Schlüssel von irgendeinem Server aus dem Internet erstmal prüfen muss. Daher gibt es Fingerprints und Signaturen unter dem Schlüssel. Was hat es gebracht? Sobald jemand kam und Gibt-hier-nichts-zu-sehen-UI um Bullshit-Automatismen um die Keyserver gebaut hat, war es plötzlich ein legitimer Angriff, dort einen falschen Key für jemanden hochzuladen, um dessen Kommunikation zu sabotieren. Wenn die Leute alle ihre Keys verifizieren würden, wäre das überhaupt kein Problem. Aber Dark UI hat das kaputtgemacht.
Warum erzähle ich das alles? Nun, Keyserver gibt es auch bei Messenger-Diensten. Und da kann die Krypto so geil sein wie sie will: Wenn du den Key automatisch vom Keyserver holst, kann der dir auch "den BKA-Key" unterschieben und behaupten, das sei der, nach dem du gefragt hattest.
Oder noch besser: Was wenn du Synchronisation anbietest? Dann kann ein Angreifer mal eben eine Weiterleitung an das BKA eintragen bei dir, wenn der kurzzeitig Zugriff auf deinen Account hat, und dann können die alles mitlesen.
Ach komm, Fefe, das ist doch unsubstanziiertes Paranoia-Geraune! Nun, äh, genau das hat das BKA bei Whatsapp gemacht.
Aber hey, solange gemeingefährliche Heulsusen uns die Krypto-Anwendungen schlechtreden, die die Komplexität an den User weiterleiten, damit er sie managen kann, und den Leuten Weitergehen-Apps empfehlen, die die Komplexität hinter Nebelwänden verstecken und den Leuten eine warme Gemütlichkeit vorgaukeln, die nicht da ist, wird diese Art von Problem noch zunehmen.
Update: Das soll kein Signal-Bashing werden hier. Die geben sich immerhin Mühe und sagen dir, wenn sich ein Schlüssel geändert hat. Andere zeigen das nicht mal an, weil es ja "die Bevölkerung verunsichern würde".
Update: Da hab ich wohl einige Leser überfordert. Whatsapp ist Ende-zu-Ende-verschlüsselt. Das heißt der Server kann gar nicht die alten Nachrichten im Klartext weiterreichen, selbst wenn er wollte, weil die da nur verschlüsselt vorbeihuschen. Wenn man also Synchronisieren will, gibt es zwei Varianten: Entweder man rückt den Schlüssel raus (daher meine Ausführungen oben über Schlüsselaustausch) oder man macht eine Fernsteuerung der Handy-App von dem Browser aus, in welchem Fall man auch ein Zugriffstoken (vulgo: einen Schlüssel) hat, den man dem BKA gibt.
Wenn ihr darüber nachdenkt, mir eine Mail zu schreiben, und ihr merkt selber, dass ihr von dem Thema keine Ahnung habt, dann tut es bitte nicht.
Erspart euch und mir die negativen Emotionen. Meine, wenn ich von eurer unfundierten Meinung belästigt werde, und eure, wenn ich euch schreibe, dass ihr doof seid.
Oh und aus aktuellen Anlass auch nochmal: Wenn ihr mir eine PGP-Mail schreiben wollt, dann müsst ihr die auch an mich verschlüsseln. Der richtige Schlüssel steht in der FAQ. Unter meinem Namen sind Fake-Keys auf den Keyservern unterwegs. Wenn ihr einen von denen nehmt, dann kann ich das nicht auspacken.
Hier gehen immer noch Mails ein, wo die Leute einfach irgendeinen Key vom Server genommen haben, nur weil da fefe.de drinsteht. Pro-Tipp: Keyserver publizieren alles. Und haben keinen Prozess, um Keys zu löschen. Die Fake-Keys dort bleiben da jetzt auch. Für immer.
Oh und wenn ihr möchtet, dass ich euch antworten kann, dann habt euren Public Key auf den Keyserver hochgeladen und signiert damit. Mails ohne Signatur kann ich nicht verschlüsselt beantworten, weil ich nicht weiß, welcher Key der Richtige ist.
Gut, das ist jetzt kein schlimmes Problem. Man kann eine PGP-Nachricht erzeugen, bei der die Signatur Verschlüsselung den eigentlichen Inhalt nicht umschließt, der als Plaintext (gut, innerhalb des ASCII Armor) liegt. Diesmal hat das nichts mit MIME-Handling zu tun, das geht auch mit uuencoded old-style PGP-Mail.
Die Auswirkungen sind eher gering. Aber es zeigt, dass man da mal einen blubbernden Sumpf trockenlegen sollte.
Update: Geht nur um Verschlüsselung, nicht um Signatur. Und wenn ihr euch jetzt fragt, wer so blöde wäre, Mails zu verschlüsseln aber nicht zu signieren: FAST FUCKING ALLE. Ich rege mich da seit Jahren drüber auf. Leute, signiert euren Scheiß. Schon rein pragmatisch. Wenn ihr es tut, steht in der Signatur eure PGP-KeyID drin, und mit der kann ich dann den Rückweg verschlüsseln. Wenn ihr mir eine verschlüsselte Mail schickt und die ist nicht signiert und ich habe euren Schlüssel nicht schon, dann kriegt ihr keine Antwort. Warum nehm ich nicht einfach den Schlüssel vom Keyserver? Weil da Leute Bullshit-Keys hochladen, u.a. gibt es für meinen Namen und meine E-Mail-Adresse verschiedene Fake-Keys. Damit kann ein Angreifer nicht viel machen, denn die Mail geht ja immer noch an mich, nicht an ihn. Es ist echt beschämend, dass die Keyserver da überhaupt keine Handhabe für vorsehen. (Danke, Stefan)
Das hätte natürlich so nie durch den Primzahlgenerator kommen dürfen. Und in der Tat, wenn man das mal in GMP durch den Miller-Rabin-Test jagt, ist das Ergebnis "keine Primzahl".
#include <gmp.h>Gibt es diesen Key wirklich? Ja, man findet ihn auf den Keyservern. Was zur Hölle ist hier passiert?! Hat der den Key mit einem Hexeditor generiert statt mit gnupg?!
#include <stdio.h>int main() {
mpz_t a;
mpz_init(a);
mpz_set_str(a,"817023023960376946633975507110154649249407598806798730414849884461776172171921668594148071323527016137506405823108520062504849249423700259406905313281403901410082762097159560221463048924336192384026777502177262731045200322200149773127502888545234973139480887644585192600631058962876114156934248895171959246969597637127280010272143593885240940877456234662196130491400738438731832514335353824697930453078426722191105157568392826870043655708008545411143367763836566011740499383456592129662585004880376777597714978023542434421914201119537685489173509942329090631662014650033142642110914360849421856179611226450806562235534802516081595259914768497444702718749402330070488028751073730349460752771915484847399385631524708487646079936572410398967582895983187640798072309362094727654167628620105981459021548290415800096769214437425690934372015628796027498219902441288189398386359846661623243493534897411417685435424010451956954083531228374002591372549525280610594684910812811287436481207089763125424247793044043309737269468709710679872269272855389945385386467765509880648929743498214329578288874987193768439353382305260108425688024147656806932474058888992099083804597481699305852902662863062054067183925164590726103552998367994727700722491707",10);
printf("%d\n",mpz_probab_prime_p(a,10));
}
Update: Bei Hacker News gibt es ein paar Kommentare, die Licht ins Dunkel scheinen.
The factored keypair in question is actually a subkey on HPA's public key. However, it appears that the self signature (which is a signature on the hash of the main public key and the subkey) does not match the hash_check. The issuer of this self signature has the same key_id as HPA's main key, which is why this subkey is listed under HPA's public key.
[…]
EDIT: It's the EXACT SAME subkey self-signature packet as HPA's real subkey self-signature packet! Someone (by malice or mistake) manually added a subkey to HPA's public key and copied the signature from the other subkey directly onto the new subkey.
Und weiter unten jemand anderes:
When I try to import HPA's key from the public key servers, I get an "invalid subkey binding" error and the weak sub key isn't imported. That error means that the sub key isn't properly signed by HPA's master key, so there is no cryptographic proof that this weak sub key actually belongs to HPA. This looks more like a fake sub key that someone tried to pollute the public key servers with, which isn't really an issue because PGP implementations will just ignore it.
Update: Jetzt ist mir in der Aufregung die Formulierung entglitten. Der Modulus ist bei RSA keine Primzahl, sondern das Produkt zweier Primzahlen. Allerdings zweier großer Primzahlen. Herauszufinden, welche zwei Primzahlen das im konkreten Einzelfall sind, ist so schwer, dass das die Sicherheit von RSA darauf beruht.
Wenn man einen Schlüssel generiert, generiert man u.a. diese zwei Primzahlen. Primzahlen generiert man, indem man Zufallszahlen nimmt, und die mit einem probabilistischen Primzahltest prüft, wie z.B. dem Miller-Rabin-Test. Der soll mit an Sicherheit grenzender Wahrscheinlichkeit ausschließen, dass es sich bei den beiden großen Faktoren nicht um eine Primzahl handelt, und der sollte daher fehlschlagen, wenn er einen so kleinen Faktor findet.
Der Grund, wieso Schlüsselaustausch mit PGP so auffallend nervig ist, ist dass PGP nicht lügt an der Stelle. Schlüsselaustausch ist das zentrale Problem bei der Verschlüsselung. Es gibt drei Lösungsansätze.
Entweder nimmt man ein zentralisiertes System, dann kann man sich die Verschlüsselung auch gleich sparen. Denn dann geht die NSA halt zu TextSecure und liefert MITM-Schlüssel aus. National Security Letter und so weiter.
Oder man tut einfach so, als gäbe es kein Problem. So macht OTR das. So gut wie niemand hat da jemals den Schlüssel der Gegenseite validiert. Geht ja auch so!1!! Dann kann man sich die Kryptographie im Grunde auch direkt sparen.
Oder man macht das wie PGP und steht dazu, dass das halt ein wichtiges Problem ist, und der Benutzer muss die Entscheidungen selber treffen. Nachteil: Ist nervig. Vorteil: Niemand drückt dir irgendwelche Schlüssel rein. Wenn du Schlüssel einfach so akzeptierst, ist das deine Entscheidung. PGP warnt dich jedes Mal, bis du den Schlüssel nochmal von Hand bestätigst.
PGP ist nicht "Krypto aus den 90ern". Mein ranziges GPG 1.x hier kann SHA512 und AES256. Klar, Perfect Forward Secrecy gibt es nicht bei einem Store+Forward-Medium. Wer das haben will, sorgt zusätzlich für STARTTLS auf dem Weg. Aber hey, STARTTLS funktioniert nicht ordentlich. Warum nicht? Es scheitert am Schlüsselaustausch. NA SOWAS.
Update: Haha, jetzt kommen hier Beschwerden rein, ordentlich implementiertes OTR würde ja auch ordentlich warnen, wenn man den Schlüssel nicht verifiziert hat. Ja wo ist dann der angebliche Vorteil gegenüber GPG? Richtig. Nicht da.
2DEC 3301 51BB 9F7D AD8B 0BDC FC32 CEEC A534 A9C6
Sehr lobenswert!
Im Detail gibt es da ein paar Punkte, die man kritisieren kann. Sie haben einen PGP-Schlüssel, das ist wunderbar, aber sie haben keine SSL-Version ihrer Webseite, über den man den sicher runterladen kann. Der Schlüssel ist 2048 Bit lang, das ist OK. Der Schlüssel ist auch auf den Keyservern. Das mit dem SSL sollten sie noch machen, und eigentlich sollten sie auch gleich ein per SSL erreichbares Upload-Fach einrichten, damit man Dokumente aus einem Internet-Cafe abwerfen kann, ohne Kontaktdaten zu hinterlassen.
Das im Zweifelsfall auf einen USB-Stick zu tun und per Post zu schicken ist ein guter Ratschlag. Allerdings hinterlässt man dann möglicherweise auf oder an dem Stick Spuren. Alte gelöschte Dateien, Fingerabdrücke, DNA, etc. Für Daten wie die Snowden-Files wäre das nichts, außer man will danach einen Snowden pullen und sich öffentlich bekennen.
Trotzdem: Guter Schritt, liebes Nachrichtenmagazin!
Update: Noch ein Hinweis: Die Sortiermaschinen bei der Post rupfen reihenweise USB-Sticks aus Briefen. Daher ein Kouvert mit Polsterung nehmen, oder auf einem Stück Pappe festkleben oder so.
pub 4096R/A534A9C6 2013-10-03Ich habe ihn mit meinen alten, noch herumfliegenden Schlüsseln signiert. Wenn ihr also einen meiner alten Schlüssel signiert oder unabhängig validiert habt, signiert bitte auch den neuen und ladet die Signatur bei den PGP-Keyservern hoch. Die Infrastruktur stinkt leider ziemlich bei PGP. Ich bitte darum, die alten Keys nicht mehr zu verwenden; die Schlüssellängen sind nicht mehr zeitgemäß.
Key fingerprint = 2DEC 3301 51BB 9F7D AD8B 0BDC FC32 CEEC A534 A9C6
uid Felix von Leitner <felix (at) fefe.de>
sub 4096R/530FBDF3 2013-10-03
Den Schlüssel kann man auch bei mir per https runterladen, aber wegen des schlimmen Zustands der Validierung bei X.509-Zertifikaten ist damit natürlich keine Gewähr verbunden. Möglicherweise reicht es aber dem einen oder anderen von euch trotzdem als Indiz, um dem Schlüssel zu vertrauen.
Ich werde demnächst wohl auch mal einen neuen SSL-Schlüssel mit 4096 Bit machen.
Update: Auf den Keyservern kursiert auch ein Schlüssel C18AE64E mit meinen Daten (aber ohne die Signaturen, versteht sich). Der ist nicht von mir.