Hallo,
als gpg und CaCert Veteran kann und will ich diese Diskussion nicht unkommentiert lassen ;)
Ich stelle in letzter Zeit fest, dass mit einer reihe fadenscheiniger Argumente sehr stark gegen gpg/pgp argumentiert wird und frage mich ein bisschen wo wir falsch abgebogen sind.
Zunächst meine Probleme mit S/MIME:
Ich vertraue hier darauf, dass keine einzige der hunderten bis tausenden Zertifizierungsstellen und Unter-CAs einen Fehler in ihrer Validierung haben, da - wie bei SSL-Zertifikaten für Webseiten - eine Ca für beliebige Emailadressen ein Zertifikat ausstellen kann.
Du brauchst hier also auch einen zweiten Kommunikationsweg um die Authentizität sicherzustellen, eigentlich brauchst du sogar zwei.
Der erste out-of-band Kommunikationsweg ist dein Client oder dein Betriebssystem, das eine lange Liste an 'vertrauenswürdigen' CAs mitliefert. In der Regel bedeutet das aber nur, dass sie genug Geld hatten um einen Wirtscahftsprüfer zu bezahlen der die Kriterien zur Zertifizierung prüft.
Dass es immer wieder fehlerhafte Zertifikate gibt ist hinreichend bekannt. Sowohl sind Fehler in der Validierung in den Webseiten der CAs bekannt geworden, als auch missbräuchliche Ausstellung von Zertifikaten. Zuletzt ging durch die Medien, dass auch Zertifikate zum Code-Signieren missbraucht wurden.
Die Reaktion von Banken und google ist nun, dass sie bei besonders 'wichtigen' Zertifikaten auf ZErtifikatspinning setzen. Also das Zertifikat in der Applikation die es prüfen soll fest codieren oder andere Schritte zur Validierung einbauen. Also habe ich schon zwei Validierungsschritte.
Das ist eigentlich eine Bankrotterklärung des Systems zentraler CAs.
Ein Ausweg ist das hier schon erwähnte DANE - dann muss man sich aber fragen wozu ich dann noch eine kommerzielle CA bezahlen soll, die mir ausser Kosten, zusätzlichem Aufwand und potentiell Kontrollverlust beim Ausstellen von Zertifikaten nichts bringt.
Was ist nun der Unterschied zu gpg?
Es handelt sich hier um ein komplett dezentrales System!
Ich habe eben nicht tausende von Zertifizierungsstellen von denen eine reicht um ein ZErtifikat auszustellen, sondern ich habe im idealfall ein Web of Trust.
Ich habe ein paar Jahre lang jede Gelegenheit genutzt und meinen gpg-key von Leuten die ich getroffen habe bestätigen lassen.
Insgesamt haben 773 Personen meinen Personalausweis geprüft und mir ihre Signatur per Email zugeschickt. Insgesamt habe ich fast 4000 Signaturen auf meinen Key für die uids.
Damit ist mein key Teil des Strongsets. Mein Fingerprint findest Du an jeder Ecke, unter mails die ich versende, auf meiner Webseite und auf meinen Visitenkarten.
Wenn ich aktuell den torbrowser runterlade, sehe ich dass ich dem Paket vertrauen kann, weil ich die Person, die ihn signiert, persönlich getroffen habe und den Ausweis in meiner Hand hatte. Und das geht auch indirekt. Bei debian paketen sehe ich dass die keys der maintainer von diversen Leuten signiert wurden die ich alle getroffen habe. Selbsts wenn ich den Uploader nicht direkt kenne oder selbst den key verifiziert habe, reicht mir zu wissen dass 5 meiner Freunde das getan haben.
S/Mime ist im Unternehmenskontext super, weil ich eine zentrale Stelle habe die Keys revoken können sollte und Zertifikate prüfen kann - und auch verifiziert dass zum Beispiel nur die offizielle Firmen Emailadresse drinsteht.
Das habe ich bei gpg so natürlich nicht - dafür aber auch mehr Freiheit und muss nicht allen CAs vertrauen.
Grüße, Florian