ilch Forum » Ilch CMS 2.x » Kritik und Verbesserungen » Signierte Updates für Ilch2

Geschlossen
  1. #1
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    606
    Beitragswertungen
    71 Beitragspunkte
    Die Update-Funktion in Ilch2 wird es einfacher machen Ilch auf den aktuellen Stand zu halten.
    Hierfür erkennt die Update-Funktion ob ein Update verfügbar ist, lädt dieses vom Ilch-Server herunter,
    welches dann mit einem Mausklick installiert wird.

    Dabei möchte man sichergehen, dass das Update auch wirklich von den Ilch-Entwicklern kommt und nicht
    zwischenzeitlich manipuliert wurde. Die Kryptographie bietet hier Lösungen.

    Nachfolgend ist also mein Vorschlag und die Erklärungen dazu. Die Erläuterungen sind auf die Update-Funktion
    bezogen und ich habe versucht die Erklärungen einfach zu halten und nicht weiter ins Detail zu gehen als nötig.

    Zu Beginn wird ein Schlüsselpaar generiert. Dieses Schlüsselpaar besteht aus dem öffentlichen und dem privaten
    Schlüssel. Hier handelt es sich also um ein asymmetrisches Kryptosystem [1].
    Der öffentliche Schlüssel wird in Form eines selbstsignierten Zertifikats [2] mit weiteren Informationen wie z.B.
    der Gültigkeitsdauer herausgegeben. Dieses Zertifikat liegt Ilch bei und ist z.B. 2 Jahre gültig.
    Der private Schlüssel dagegen wird streng vertraulich behandelt. Ihn haben nur die Entwickler von Ilch, die später
    auch selber Updates herausgeben dürfen. Der private Schlüssel wird zusätzlich mit einer Passphrase geschützt.

    Signieren des Updates
    Nachdem die Entwickler ein Update fertiggestellt haben, signieren sie es.
    Schritt 1: Einen Hash/Fingerabdruck des Updates erstellen, welcher die Update-Datei eindeutig identifiziert.
    Schritt 2: Der Hash/Fingerabdruck wird mit dem privaten Schlüssel der Entwickler verschlüsselt.

    Die Entwickler haben nun das Update und einen verschlüsselten Fingerabdruck (ab jetzt Signatur genannt). Diese
    beiden Dateien werden auf den Update-Server abgelegt und die Update-Funktion von Ilch wird diese herunterladen.



    Verifizieren des Updates
    Die Update-Funktion von Ilch hat erkannt, dass es ein neues Update gibt und hat dieses zusammen mit der Signatur
    heruntergeladen. Bevor das Update nun installiert wird, wird überprüft ob das Update in Ordnung ist.
    Schritt 1: Einen Hash/Fingerabdruck des Updates erstellen, welcher die Update-Datei eindeutig identifiziert.
    Schritt 2: Die Signatur mit Hilfe des Zertifikats bzw. des öffentlichen Schlüssels entschlüsseln. Man hat nun
    wieder den unverschlüsselten Hash/Fingerabdruck.
    Schritt 3: Die Fingerabdrücke werden verglichen. Es ist alles in Ordnung, wenn die beiden Fingerabdrücke gleich sind.



    Übersicht


    Aktualisieren des Zertifikats
    Das Aktualisieren des Zertifikats ist dann nötig, wenn das Zertifikat bald abläuft, ein Entwickler mit privaten
    Schlüssel das Team verlässt, die Gefahr besteht, dass der private Schlüssel in falsche Hände gelangt ist oder
    bekannt wird, dass z.B. die Schlüssellänge nicht mehr ausreichend ist.
    Es wird ein neues Zertifikat erstellt anschließend ein Update herausgegeben, welches das neue Zertifikat enthält
    und noch mit dem alten privaten Schlüssel signiert ist. Dieses Update wird noch mit dem alten Zertifikat verifiziert.
    Das alte Zertifikat wird vom neuen Zertifikat ersetzt. Nachfolgende Updates werden dann mit dem privaten Schlüssel
    des neuen Schlüsselpaares signiert und mit dem neuen Zertifikat verifiziert.

    Handhabung von bereits abgelaufenen Zertifikaten
    Dieser Fall sollte vermieden werden. Der Webmaster sollte dann von der offiziellen Ilch-Seite das aktuelle Zertifikat
    herunterladen und sicherstellen, dass das heruntergeladene Zertifikat dem richtigen Zertifikat entspricht. Dies kann
    er sich von anderen Webmastern oder Ilch-Entwicklern bestätigen lassen. Er muss dann das alte Zertifikat mit dem neuen
    ersetzen.

    Kompromisse und Verbesserungspotential
    Durch die Nutzung von HTTPS mit einem von einer Zertifizierungsstelle [3] (z.B. startssl.com) ausgestellten Zertifikat könnte der Ilch-Updater erkennen ob er das Update wirklich vom Ilch-Updateserver herunterlädt.
    Desweiteren kann das Update nicht auf den Weg zwischen Update-Server und Server manipuliert werden. Da die Update-Datei aber signiert wird, würde eine Manipulation beim Verifizieren auffallen.
    Zudem würde der Webmaster mit dem bereits abgelaufenen Zertifikat eine zusätzliche Bestätigung dafür sehen können,
    dass er das aktuelle Zertifikat wirklich von Ilch.de herunterlädt.
    Als letzten Punkt könnte man dann noch eine Art Zertifikatsperrliste [4] implementieren. In dieser Liste würde man dann schnell das Zertifikat eintragen, wenn der private Schlüssel in falsche Hände gelangt ist. Der Ilch-Updater müsste dann diese Liste bei jedem Update abfragen und die Update-Datei verwerfen, wenn das Zertifikat zurückgezogen wurde.

    Die Nutzung eines Zertifikats fürs Code signieren ausgestellt von einer Zertifizierungsstelle. In diesem Fall könnte man
    das Zertifikat sogar mit dem Update ausliefern und der Ilch-Updater könnte überprüfen ob es das richtige Zertifikat ist.
    Leider ist mir kein Anbieter bekannt, der dies gratis macht. Der niedrigsten Preis, den ich bisher gesehen habe, ist
    59,90 $ pro Jahr.
    Um die Kosten zu vermeiden habe ich den Kompromiss gemacht, das selbstsignierte Zertifikat mit Ilch auszuliefern und der Ilch-Updater nutzt dann auch nur dieses Zertifikat um Update-Dateien zu verifizieren. Alle Update-Dateien, die damit nicht als gültig verifiziert werden können, werden abgewiesen.


    Was haltet ihr von der Idee? Fragen?

    [1] de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
    [2] de.wikipedia.org/wiki/Digitales_Zertifikat
    [3] de.wikipedia.org/wiki/Zertifizierungsstelle
    [4] de.wikipedia.org/wiki/Zertifikatsperrliste


    verwendete ilch Version: 2.0 (alpha)
    2 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    606
    Beitragswertungen
    71 Beitragspunkte
    Hier der Fork in denen ich die Änderungen machen würde. Bitte Verbesserungsvorschläge. Benutze Git zum ersten Mal - also hoffentlich noch alles richtig.
    github.com/blackcoder87/Ilch-2.0

    Ich habe schon mal eine Änderungen gemacht und zwar das bei der Installation überprüft wird ob das Zertifikat vorhanden und noch gültig ist. Das ist für den Fall, dass Ilch von einem alten Download installiert wird.
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    841
    Beitragswertungen
    72 Beitragspunkte
    Hey, also für mich hört sich das ganze logisch und gut an. Ich habe aber leider zu wenig Erfahrung damit....ich würde jetzt mal auf die Meinungen der anderen warten.

    Mfg corian
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Kritik und Verbesserungen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten