Codesigning Signatur

  • Allgemein

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Manawyrm.

    Codesigning Signatur

    Als Entwickler im Windows-Umfeld, wird man immer häufiger feststellen, dass man zur Auslieferung seines Codes bei Firmenkunden den Code digital signiert haben muss. Im Windows-Umfeld müssen dies in der Regel S/MIME Zertifikate sein.

    Wo bekommt man nun so ein Zertifikat her?
    Man kann es teuer von einem kommerziellen Anbieter, z.B. VeriSign, StartSLL, erhalten oder kostenfrei vom OpenSource Projekt CAcert.
    Was ist der Unterschied, wo sind die Schwierigkeiten?

    Das Hauptproblem beim Umgang mit digitalen Zertifikaten ist "Vertrauen". Jeder Anwender muss, wenn er eine digitale Signatur hat, diesem Vertauen, so wie man es auch mit einer Unterschrift unter einem Schriftstück zu tuen hat.
    Deshalb sollte man, wenn ein digitales Zertifikat bekommt ruhig einmal nachschauen, wer denn das Zertifikat ausgestellt hat, und wie der Zertifikatsgeber die Identität der Person, die das Zertifikat benutzt überprüft.

    Hier bei ist zu beachten, dass wenn eine Certificate Authority (CA), ein Codesigning Zertifikat ausstellt, die Identität des Zertifikatsnutzer überprüfen muss.

    Bei der Identitätsprüfung unterschieden sich dann die verschiedensten Anbieter, während bei einigen nur das Post-Identverfahren, genutzt wird, bei dem entweder der Ausweis nicht sonderlich geprüft wird oder ein Personalausweis kopiert wird, werden bei anderen mehrere Überprüfung notwendig. So sind bei dem OpenSource Projekt CAcert zum Erhalt von SSL Wildcard-Zertifikat mindesten 2 Überprüfung und zum Erhalt eines Code-Signing Zertifikats mindestens 3 Überprüfungen notwendig. CAcert baut bei seinen Überprüfungen ein sogenanntes Web of Trust auf.

    Der nächste Unterschied ist, das kommerzielle Anbieter in den meisten Fällen ihren Sourcecode nicht offen legen, so dass man nicht weiß was dieser macht. Bei CAcert ist der SourceCode sowie auch die Prozesse im Netz jederzeit einseh- und überprüfbar.

    Die Zertifikate bei CAcert sind kostenfrei, das sich die Gründer von CAcert zum Ziel gesetzt haben, jedem die Zertifikate kostenfrei zur Verfügung zustellen. Ein weitere Vorteil der Zertifikate von CAcert ist, dass die CA nicht in den Besitz der privaten Schlüssel kommt, da der private Schlüssel auf dem Rechner des Anwenders erstellt wird und lediglich der öffentliche Schlüssel von CAcert signiert wird. Hier kann dann auch keinber einbrechen und die privaten Schlüssel klauen.

    CAcert hat allerdings auch einen Nachteil. Die Stammzertifikate von CAcert sind standardmäßig nicht in den Truststores der Browser enthalten, so dass sich die SSL-Zertifikate von CAcert zur Absicherung von Web-Seiten nur bedingt eignen. Für den gesicherten Zugang auf seine eigenen Server sind sie sehr gut gebrauchbar, für den Einsatz von Web-Seiten für die breite Öffentlichkeit nur bedingt.
    Aber auch hier kommt wieder die Frage von Vertauen zum tragen. Wie kommt man in die Trusstores der Browser, in den meisten Fällen in dem man einfach Geld zahlt. CAcert arbeitet daran auch in die Truststores zu kommen, dies benötigt aber noch einige Zeit.
    In der Zwischenzeit vertrauen aber immer mehr Firmen und Organisationen den Zertifikaten von CAcert. z.B. die Allianz-Firmengruppe, die Abrechnungssysteme im Europäischen Gasverbund "edigas".

    Wo kann man mehr über CAcert erfahren, zum einem im Netz zum anderen auf OpenSouce-Veranstaltungen. Eine Auswahl der nächsten Veranstaltungen bei den CAcert vertreten sein wird: Chaos Communication Congress in Hamburg, die FOSDEM in Brüssel und die Chemnitzer Linux Tage.

    *Topic verschoben*
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Ich finde diesen Post mal sehr interessant. Mit dem Problem der Code-Signierung konfrontiert, habe ich bisher nur kommerzielle Zertifizierungsstellen entdeckt. Ein Zeichen dafür, mal wieder die Super-Cookies zu löschen ;) Mithin ist es auch reichlich frech, wenigstens USD99 (billiger hab ich es nicht gefunden) dafür zu verlangen, das einmal im Jahr eine Checkbox geklickt wird.

    Allerdngs gibts bei CACert so ein Problem: Wie bekommt man da sein Zertifikat ? Das ganze ist äußerst undurchsichtig, von den ständigen Warnungen des Browsers bzgl. ungültiges Zertifikat mal abgesehen ;)
    Nach der Anmeldung bei CAcert können die ersten Zertifikate ausgestellt werden.
    Die Ausstellung der Zertifikate macht man selber in der Webseite. Hierbei ist wichtig: Der private Schlüssel verlässt dabei nicht den eigenen Computer und er wird auch nicht bei CAcert gepeichert.
    Für ein Code-Signing-Zertifikat muss man seine Identität von mindesten 3 CAcert Mitgliedern bestätigen lassen. Wenn man einen Account bei CAcert hat, kann man unter dem Menüpunkt "CAcert Vertrauensnetzwer - Einen Assurer finden" nach Personen in seiner Umgebung suchen, die die Identität bestätigen können. Häufig finden sich auch in den Linux User Gruppen oder Hackerspaces Personen, die die Überprüfung durchführen können.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Aha, ich verstehe. Wird schwierig für mich, diese drei aufzutreiben ;) Mit meiner Panikstörung kann ich nicht "mal eben" zu wem hinfahren und meinen Perso vorzeigen :D Aber ich bin solche Probleme gewohnt. Wird schon werden ;)
    *Dieses und nachfolgende zwei Postings wurden aus altem Thread hierher verschoben*

    CAcert scheint mir dennoch nicht 100% vertrauenswürdig, da es damit laut Aussagen ja Warnungen gibt und da ich mir nicht gerade vorstellen kann, wie das funktionieren soll.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Was ist Class-1 , ist das auch eine Firma?
    Und dem vertrauen die Browser? - ist die Firma denn vertrauenswürdig?

    Trade schrieb:

    CAcert scheint mir dennoch nicht 100% vertrauenswürdig, da es damit laut Aussagen ja Warnungen gibt und da ich mir nicht gerade vorstellen kann, wie das funktionieren soll.
    Aber das hat Inopae in seim Thread doch geschrieben, zumindest teilweise.
    Mitglieder der OpenSource-Community überprüfen ihre Identität gegenseitig.
    Das ist offenbar mehr, als etwa Verisign leistet, wo man scheints für Ausweis-Kopien ein Zertifikat bekommt.

    Und du kannst (hofflich) dir nicht aussuchen, wer dich überprüft, also dass sich da Klüngel bilden, die sich gegenseitig durchwinken....

    Die Warnungen kommen vermutlich v.a. daher, dass von kommerzieller Seite her versucht wird, eine kostenlose Konkurrenz auszubooten.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Nein, Class 1 ist eine Klasse der Validierung. Im dem Fall wird eine Email an ​postmaster@domain gesendet.
    StartSSL ist eine Firma die Class-1-Zertifikate kostenlos ausstellt. Und diesen Zertifikaten wird vertraut, solange sie nicht abgelaufen sind oder auf der Liste der kompromittierten Zertifikate stehen.
    Mit freundlichen Grüßen,
    Thunderbolt
    Das liegt daran, dass Browser dem selbst-signierten Stammzertifikat nicht trauen. Die Stammzertifikate der "großen" CAs sind in den Truststores der Betriebssysteme hinterlegt.
    Mit freundlichen Grüßen,
    Thunderbolt
    Wie gesagt es ist immer eine Frage. wem man vertauen will.

    Ich habe die Diskussion primär wegen der kostenfreien Code-Signing Zertifikate begonnen. Auch hab ich glaube ich hingewiesen, dass man für den Bereich der SSL-Verschlüsselung überlegen muss, wo man die CAcert Zertifikate sinnvoll einsetzen kann.

    Man sollte sich aber auch mal überlegen, wer im Besitz der privaten Schlüssel ist. Der geklauten Schlüssel von Sony hat ja gezeigt, was damit angestellt werden kann.
    Bei Sony wurde der Schlüssel nicht von der CA (Certificate Authority) sondern bei Sony selbst entwendet.
    Meines Wissen ist CAcert die einzige CA die nicht die privaten Schlüssel zu den Zertifikaten besitzt. Dies ist denke ich im Rahmen des von Snowdon publizierten Überwachungsmaßnahmen zu berücksichtigen, wem man vertrauen will, wie die IT-Kommunikation verschlüsselt werden soll.

    Jeder muss sich selber überlegen, wo und wie er Zertifikate bezieht und einsetzt.
    Bisher habe ich mit den CAcert-Zertifikate, die ich bei meinen Programmierungen einsetze, bei meinen Kunden noch keine Schwierigkeiten gehabt.

    ​Und diesem Class1-Zertifikat trauen die Browser, aber beinem CaCert-Zertifikat schmeißen sie mit Warungen und Fehlern?Versteh einer die Browser

    Wenn man die Stammzertifikate von CAcert in den Truststore des Browsers importiert, wird dem Zertifikat vertraut. Die Stammzertifikate findet man unter cacert.org/index.php?id=3. Es sollten beide Stammzertifikate importiert werden. Class 1 und Class 3.

    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „INOPIAE“ ()

    Meines Wissen ist CAcert die einzige CA die nicht die privaten Schlüssel zu den Zertifikaten besitzt.

    Bitte?!
    Sollte irgendeine CA die Schlüssel zu einem einzigen Kundenzertifikat besitzen, ist irgendetwas ganz horrend schiefgelaufen.
    Das SSL-Zertifikats-Erzeugungs und Signierungs-Verfahren ist explizit darauf ausgelegt, dass der private Schlüssel niemals den Einsatzort verlassen muss. Er wird direkt auf dem Server generiert, sein Public Key wird an die CA zum Signieren versendet und das passende Zertifikat wird dann wieder zum Server gesendet.

    Das ändert nichts an der Tatsache, dass man allen CA's auf seinem Rechner vertrauen muss, denn selbst wenn ich ein Zertifikat für meine Domain manawyrm.de ausgestellt habe, kann immer noch jeder Zeit jemand fremdes mit böswilligen Absichten ein Zertifikat für manawyrm.de bei einem anderen Hoster bestellen.

    CodeSigning mit CaCert halte ich für absolut sinnlos. CaCert ist ein schönes Konzept, welches ich auch im Club-Umfeld sehr gerne einsetze, aber gerade auf Windows-Rechnern verfehlt es sein Ziel komplett. Ob ich nun ein CaCert, oder ein komplett selbst-signiertes Binary nutze hilft mir am Ende nicht sonderlich viel, insbesondere, da sich die Code-Signing-Zertifikate im Gegensatz zu den normalen Web/HTTPS-Zertifikaten nicht ganz problemlos installieren lassen. (diesen wird dann zumindest nicht für Dinge wie Treiber vertraut).
    Unter Linux wird man für CodeSigning ohnehin nicht auf x509-basierte Lösungen gehen, da es hier mit GnuPG eine wesentlich bessere Möglichkeit zum Erreichen des gleichen Ziels gibt.

    Viele Grüße,
    Manawyrm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

    Da ich CAcert im Store habe (wegen fefe) und ich auch Linux benutze ist so was für mich wohl irgendwie unumgänglich. Mal angenommen ich würde zum 31c3 kommen, habe ich folgende fragen:
    - Was für Zertifikate kann ich mir dort holen? (bin bisher noch nicht bei CAcert gewesen)
    - Würde man sich da treffen?
    Von meinem iPhone gesendet
    CAcert arbeitet nach einem Assurance-Prinzip.
    d.h. ein Nutzer mit einem hohen Punktestand kann dir (nach dem er sich versichert hast, dass du wirklich Nikeee bist, deinen Account "upvoten".)

    Wenn du genug Trust eingefahren hast, kannst du dir entsprechend Zertifikate signieren.
    ne ganze Menge CAcertler wirst du an der CAcert Assembly finden. Die waren letztes Jahr auf der zweiten Etage. (ansonsten mal bei mir unter der 6502 durchrufen)