yanmai
Goto Top

Wie genau veröffentlichen Firmen Updates?

Hallo ihr Administratoren,
wie werden die Applikationen geupdatet?

Wir machen es so: Wir laden eine Textdatei mit der neusten Version auf einen Server und das komplette neue Projekt in einem ZIP. Das Programm auf dem Client PC hat dann die aktuelle Versionsnummer. Wenn man dann nach einem Update sucht, wird die neuste Versionsnummer heruntergeladen und mit der aktuellen Verglichen. Stimmen diese nicht überein, dann wird der ZIP heruntergeladen, extrahiert und installiert. Dann hat der User die neuste Version.

Wie machen das andere Leute/Firmen? Welche Methoden sind die gängigsten?
Ich frage das, weil ich gerade ein Programm schreibe, was Updates automatisch veröffentlichen soll.

Mit freundlichen Grüßen face-smile

Content-Key: 325256

Url: https://administrator.de/contentid/325256

Printed on: April 19, 2024 at 12:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Jan 02, 2017 at 12:16:00 (UTC)
Goto Top
Moin,

Ich hoffe ihr signiert die Dateien, und Eure Software prüft die Signatur. Ansonsten kann man mit Hilfe Eurer Software ruckzuck die Systeme Eurer Kunden übernehmen.

lks
Member: Yanmai
Yanmai Jan 02, 2017 at 12:32:44 (UTC)
Goto Top
Wie jetzt?
Member: runasservice
runasservice Jan 02, 2017 at 12:34:39 (UTC)
Goto Top
Zitat von @Yanmai:

Wie machen das andere Leute/Firmen? Welche Methoden sind die gängigsten?
Ich frage das, weil ich gerade ein Programm schreibe, was Updates automatisch veröffentlichen soll.


Man kann auch auf fertige Produkte zugreifen, wie z.B. UDT von Andreas Kapust.

Da beim LiveUpdate die Software "nach Hause telefoniert", erfolgt bei uns das LiveUpdate über einen Lizenzserver. Es wird geprüft ob der Anwender überhaupt berechtigt ist ein Update zu beziehen und ob die Lizenz in Ordnung ist. Ermittelt wird u.a. bei der Gelegenheit, auf wievielen Computern die Lizenz installiert wurde. Das Update selbst läuft nur auf dem PC der das Update angefordert hat, wenn es eine Einzelplatz-Lizenz ist.


Viel Erfolg
Member: Lochkartenstanzer
Lochkartenstanzer Jan 02, 2017 at 12:36:10 (UTC)
Goto Top
Zitat von @Yanmai:

Wie jetzt?


Du sagtest:

Wir machen es so: Wir laden eine Textdatei mit der neusten Version auf einen Server und das komplette neue Projekt in einem ZIP. Das Programm auf dem Client PC hat dann die aktuelle Versionsnummer. Wenn man dann nach einem Update sucht, wird die neuste Versionsnummer heruntergeladen und mit der aktuellen Verglichen. Stimmen diese nicht überein, dann wird der ZIP heruntergeladen, extrahiert und installiert. Dann hat der User die neuste Version.

Wenn Ihr die Dateien nicht mit einer Signatur sichert, kann sich einer einfach in die Verbindung dazwischenhängen und eine download auslösen udn dabei seine manupulierten Dateien statt Eurer ausliefern. Und hat damit schon gewonnen.

Das meinte ich.

lks
Mitglied: 121016
121016 Jan 02, 2017 at 12:38:32 (UTC)
Goto Top
Servus,

wenn die Dateien nicht signiert sind, könnte man die Verbindung zu eurem Server auf einen anderen umbiegen und dort eine möglicherweise manipulierte ZIP herunterladen, entpacken und installieren lassen. Dank Programmen wie zB Wireshark sieht man schon sehr genau, welche Verbindungen hier aufgebaut werden.
Oder aber euer Server wird gehackt und die Dateien ausgetauscht, im Falle einer fehlenden Signaturprüfung wäre das auch schon fatal.

lg
Member: Yanmai
Yanmai Jan 02, 2017 at 13:16:17 (UTC)
Goto Top
Naja wir haben 2 Webserver. Einmal einen kostenlosen von Weebly (http) und einmal einen, die Hauptwebsite hostet (https). Wir würden diese Updatedaten nur auf dem von .weebly machen.
Und wir meint ihr mit signiert? Das die Daten verschlüsselt übertragen werden, oder wie?
Member: Lochkartenstanzer
Lochkartenstanzer Jan 02, 2017 updated at 13:23:56 (UTC)
Goto Top
Zitat von @Yanmai:

Und wir meint ihr mit signiert? Das die Daten verschlüsselt übertragen werden, oder wie?

Noch viel Lernen Du mußt, junger Padavan.

Du mußt die Dateien digital unterschreiben, so daß sichergestellt ist, daß die von euch kommen. Ob Du das durch entsprechendes Verschlüsseln machst oder einfach nur einen hash signierst, bleibt Dir überlassen. Jedenfalls ist die Methode, die Du jetzt verwendest die sicherste Möglichkeit, Deinem Kunden ein Kuckucksei unterzuschieben.

lks
Member: Yanmai
Yanmai Jan 02, 2017 at 13:30:32 (UTC)
Goto Top
Und wie macht man das sonst?
Mitglied: 121016
121016 Jan 02, 2017 updated at 13:40:30 (UTC)
Goto Top
Genau so - siehe Post von LKS

lg
Member: runasservice
runasservice Jan 02, 2017 at 14:24:46 (UTC)
Goto Top
Zitat von @Yanmai:

Und wie macht man das sonst?

Wenn Du dir das Codesign Zertifkat sparen möchtest, einfach ohne face-wink Dann musst Du eben etwas mehr Aufwand in den "download request" investieren.

Viel Erfolg...
Member: StefanKittel
StefanKittel Jan 02, 2017 at 15:21:54 (UTC)
Goto Top
Hallo,

es gibt sehr viele Möglichkeiten.
Stichpunkte sind zentrale Softwareverteilung und Updateverteilung.

Beides ist aber auch immer riskant.
Ein falsches Update kann hunderte von PCs außer Betrieb setzen.
Egal ob ein Mitarbeiter ein Update nicht richtig getestet hat, Jemand Sabotage betreibt oder Jemand den Server gehackt hat.

Stefan
Member: laster
laster Jan 02, 2017 updated at 20:48:47 (UTC)
Goto Top
Und wie macht man das sonst?

z.B. so:
1.) erstelle ein langes Password und baue es in Deine Software (die das Update verarbeitet) ein.
2.) erstelle über das Update einen SHA1 Hashcode und verschlüssele (z.B. AES) ihn mit dem Password aus 1.
3.) schreibe in deine Update/Versionsdatei den verschlüsselten Hashcode rein
4.) wenn deine Software das Update bekommt, muss es zuerst wie bei 2. einen Hashcode über das Update erstellen
5.) dann muss die Software den verschlüsselten Hashcode mit dem erstellten Hashcode (4.) vergleichen
6.) wenn beide Hashs identisch, dann ist das Update OK, sons nicht !

vG
LS
Member: Lochkartenstanzer
Lochkartenstanzer Jan 03, 2017 updated at 07:53:46 (UTC)
Goto Top
Oder man verwendet ein public key verfahren sie z.B. pgp und verschlüsselt den code mit den privaten key und jeder kann dann mit dem public key den code entschlüsseln. Dann ist sichergestellt, daß der code vom Author kommt. Ggf verschlüsselt man nur den hash.

Ein symmetrisches verfahren wie oben von laster impliziert sollte man vermeiden, weil das passwort aus der software ausgelesen werden kann u d der angreifer damit die hashes genauso verschlüsseln kann wie der Author.

lks.
Member: Yanmai
Yanmai Jan 03, 2017 at 12:58:46 (UTC)
Goto Top
Vielen Dank, kannst du mich vielleicht in die Richtung schubsen, wie man sowas macht?
Member: Lochkartenstanzer
Lochkartenstanzer Jan 04, 2017 updated at 15:46:34 (UTC)
Goto Top
https://de.wikipedia.org/wiki/Public-Key-Verschl%C3%BCsselungsverfahren
https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
https://www.gnupg.org/gph/de/manual/x96.html
https://www.math.uni-bielefeld.de/~baumeist/RSA.pdf

https://www.google.de/search?q=public+key+verfahren

  • Du erstellst ein schlüsselpaar mit öffentlichem udn geheimem schlüssel.
  • Den öffenlichen Schlüssel und die Ensthschlüsselung baust Du in Deine Software ein.
  • Die Updates signierst Du mit dem geheimen Schlüssel.
  • Die heruntergeladenen Updates prüfst Du mit dem öffentlichen Schlüssel, ob die korrekt signiert/verschlüsselt sind.
  • wenn ja, installieren
  • wenn nein, verwerfen.

Wie ich schon weiter oben sagte , haben symmetrische Verfahren den Nachteil, daß man den Schlüssel aus Deiner Software extrahieren könnte und damit korrekt signierte Programme erzeugen könnte.

lks
Mitglied: 131381
131381 Jan 04, 2017 updated at 15:52:17 (UTC)
Goto Top
Nur zur Info, du brauchst dafür dann ein für diesen Zweck gedachtes Codesigning-Zertifikat einer öffentlichen Zertifizierungsstelle wenn Ihr die Software an andere Leute vertreibt.
https://www.sslpoint.com/de/code-signing-zertifikate/

Gruß mik
Member: Lochkartenstanzer
Lochkartenstanzer Jan 04, 2017 at 15:55:00 (UTC)
Goto Top
Zitat von @131381:

Nur zur Info, du brauchst dafür dann ein für diesen Zweck gedachtes Codesigning-Zertifikat einer öffentlichen Zertifizierungsstelle wenn Ihr die Software an andere Leute vertreibt.

Nicht unbedingt. Man muß nur sicherstellen, daß die Kunden den public key verifizieren können.

lks
Mitglied: 131381
131381 Jan 04, 2017 updated at 16:04:57 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:

Zitat von @131381:

Nur zur Info, du brauchst dafür dann ein für diesen Zweck gedachtes Codesigning-Zertifikat einer öffentlichen Zertifizierungsstelle wenn Ihr die Software an andere Leute vertreibt.

Nicht unbedingt. Man muß nur sicherstellen, daß die Kunden den public key verifizieren können.
Schon klar aber ich installiere sicherlich kein internes CA Zertifikat bei Kunden face-wink
Außerdem schlagen zahlreiche Sicherheitsmechanissmen Alarm wenn der CA nicht vertraut wird und man versucht zu installieren.

Als seriöser Anbieter gehört sowas einfach zum Standard, vor allem wenn man damit sowieso Geld verdient.

Unternehmensintern ist das natürlich was anderes.

Mit .NET helfen einem z.B. diese Methoden zum Prüfen der Zertifikate einer Datei.
https://msdn.microsoft.com/en-us/library/system.security.cryptography.x5 ...
Member: Lochkartenstanzer
Lochkartenstanzer Jan 04, 2017 at 16:07:46 (UTC)
Goto Top
Zitat von @131381:

Schon klar aber ich installiere sicherlich kein internes CA Zertifikat bei Kunden face-wink
Außerdem schlagen zahlreiche Sicherheitsmechanissmen Alarm wenn der CA nicht vertraut wird und man versucht zu installieren.

Als seriöser Anbieter gehört sowas einfach zum Standard, vor allem wenn man damit sowieso Geld verdient.

Wie ich schon oben skizziert habe, braucht man da nicht einmal ein zertifikat zu installieren, wenn Du das alles in Deiner eigenen Software löst, z.B. auf basis von pgp. Es gibt Modelle, die auch ohne zentrale CA funktionieren.

lks