Hai essenzialmente due problemi nel tuo processo: fornire l'aggiornamento e averlo installato.
Autenticazione server
In primo luogo, sì, è necessario autenticare il server. Ciò significa che la comunicazione con il server deve avvenire su un canale crittografato sicuro. Assicurati di prendere il tempo necessario per capire gli attacchi su SSL, quindi non utilizzare qualcosa che è scaduto . Spedisci il certificato con la tua app e cripta tutti gli scambi. Spedisci una chiave pubblica extra per la verifica delle firme, diversa da quella utilizzata per proteggere il canale.
Aggiorna architettura di distribuzione
In secondo luogo, devi assicurarti che i clienti possano fidarsi di ciò che viene loro servito. Supponendo il peggio, il tuo server potrebbe effettivamente essere compromesso. Puoi prendere due passaggi per attenuarlo. In primo luogo, assicurarsi che il server utilizzato per gli aggiornamenti sia dedicato. Non affidarti a quell'API su un server Web che ospita il tuo blog personale. Esegui solo l'API di aggiornamento e pensa attentamente a come gestisci questo server e ti connetti ad esso. Tienilo aggiornato. Chiedi a un tester di penetrazione di romperlo per te.
In secondo luogo, (grazie a Steffen-Ullrich per avermelo ricordato), assicurati che il server distribuisca solo il contenuto che hai convalidato. Quando pubblichi una versione software, devi firmare il tuo rilascio tarball / binary con una chiave privata (quella per cui hai spedito la chiave pubblica) e rilasciare la firma insieme al tarball. Pertanto, il processo prevede il caricamento di firma e binario sul server di aggiornamento e quindi i client che lo recuperano dal server. Se il tuo server è compromesso, i client non riceveranno più aggiornamenti ma almeno non riceveranno falsi / eseguibili malevoli.
Sostituzione del file binario sul sistema operativo
Sorpresa sorpresa. Questo è il 2016, non si limitano a sostituire gli eseguibili a livello di sistema su un sistema operativo senza il permesso dell'utente. Dovrai guidare i tuoi utenti attraverso una finestra di dialogo di autorizzazione UAC ogni volta che vuoi cambia il file binario . Questo ovviamente sarà noioso per loro.
Se ritieni che i tuoi clienti abbiano assolutamente bisogno dell'ultimo aggiornamento ogni volta che viene rilasciato (e supponendo che non sia possibile installare la tua app con un livello di integrità come fanno i fornitori di browser), potrebbe essere più trasparente e piacevole per i tuoi utenti per aggiornare la tua app tramite l'app store di Microsoft (dicendo "potrebbe" perché non ho mai inviato un'app lì e sono incerto su questo punto).