Básicamente, tiene dos problemas en su proceso: proporcionar la actualización y tenerla instalada.
Autenticación del servidor
En primer lugar, sí, necesita autenticar el servidor. Esto significa que la comunicación con el servidor debe realizarse en un canal cifrado seguro. Asegúrese de tomarse el tiempo para comprender los ataques en SSL para que no use algo que haya caducado . Envíe el certificado con su aplicación y cifre todos los intercambios. Envíe una clave pública adicional para verificar las firmas, diferente de la utilizada para asegurar el canal.
Actualizar arquitectura de distribución
En segundo lugar, debe asegurarse de que los clientes puedan confiar en lo que se les brinda. Suponiendo lo peor, su servidor podría verse comprometido. Puedes tomar dos pasos para mitigar esto. En primer lugar, asegúrese de que el servidor utilizado para las actualizaciones esté dedicado. No ejecute su API en un servidor web que hospeda su blog personal. Ejecute solo la API de actualización y piense detenidamente sobre cómo mantener este servidor y cómo conectarse a él. Mantenlo actualizado. Haga que un probador de penetración lo rompa por usted.
En segundo lugar, (gracias a @ Steffen-Ullrich por recordarme esto) asegúrese de que el servidor solo distribuya el contenido que haya validado. Cuando publique una versión de software, debe firmar su tarball / binario de liberación con una clave privada (aquella para la cual envió la clave pública) y liberar la firma junto con el tarball. Por lo tanto, su proceso implica cargar la firma y el binario en el servidor de actualización y luego los clientes lo recuperan del servidor. Si su servidor está comprometido, los clientes ya no recibirán actualizaciones, pero al menos no recibirán ejecutables falsos / maliciosos.
Reemplazando el binario en el sistema operativo
Sorpresa sorpresa. Esto es 2016, no solo reemplaza los ejecutables de todo el sistema en un sistema operativo sin el permiso del usuario. Tendrá que conducir a sus usuarios a través de un diálogo de permiso UAC cada vez que desee cambiar el binario . Esto, por supuesto, va a ser molesto para ellos.
Si espera que sus clientes necesiten absolutamente la última actualización cada vez que se lance (y suponiendo que no puede hacer que su aplicación se instale con un nivel de integridad como lo hacen los proveedores de navegadores), podría ser más transparente y agradable para sus usuarios. para actualizar su aplicación a través de la tienda de aplicaciones de Microsoft (diciendo "podría" ya que nunca he enviado una aplicación allí y no estoy seguro de ese punto).