Construyendo un Signing Server

The Android APK signing model sets the expectation that the signing key will be the same for the entire lifetime of the app. That can be seen in the recommended lifetime of an Android signing key: 20+ years. On top of that, it is difficult to migrate an app to a new key. Since the signing key is an essential part to preventing APKs from impersonating another, Android signing keys must be kept safe for the entire life of the app.

Las claves de firma de repositorio de F-Droid siguen un modelo muy similar: la clave de firma es la forma esencial de identificar de forma segura un repositorio de F-Droid. Por lo tanto, las mismas consideraciones se aplican a las claves de firma de repositorio de F-Droid en cuanto a las claves de firma de APK. Esto también proporciona algunos beneficios realmente útiles. Dado que la integridad del archivo de índice repo y los APK está garantizada por la firma del repo, los archivos pueden entregarse a través del método que sea más conveniente, y su integridad será verificada automáticamente por la aplicación de cliente F-Droid, f-droid. org deploy process y Repomaker.

Esto significa que la carga de seguridad se desplaza del servidor web público y en línea a una máquina de firma privada. Mantener esa máquina fuera de la vista del público contribuye en gran medida a mejorar la seguridad. Hay una serie de medidas adicionales que se pueden tomar para mejorar aún más la seguridad del proceso de firma. Aquí hay algunos enfoques, comenzando con la seguridad más fácil y la menos segura, y pasando a configuraciones más seguras que requieren más trabajo de configuración y ejecución. La firma no es un proceso intensivo en recursos, por lo que cualquier máquina funcionará, incluso una computadora portátil básica de 10 años. Recomendamos utilizar una instalación mínima Debian y reconstruir la máquina desde cero.

Automated Signing Server with HSM

Para una configuración de firma totalmente automatizada, la máquina que ejecuta la firma debe estar en línea y ejecutándose. Idealmente, esta máquina no tendría acceso remoto, al menos el acceso remoto debería controlarse y monitorearse cuidadosamente. Una computadora portátil facilita el trabajo, incluso cuando el acceso remoto está desactivado, ya que proporciona un teclado y monitor integrados. Si se requiere acceso remoto, cualquier PC básica funcionará bien. El uso de un Módulo de seguridad de hardware (HSM) para almacenar las claves evita que sean robadas si el servidor está roto. Un atacante solo podría ejecutar el proceso de firma en ese servidor.

Idealmente, esta máquina solo sería accesible a través de Tor. Eso oculta la ubicación física del servidor y oculta el tráfico de la red. Esto hace que sea mucho más difícil para los atacantes encontrar la máquina real para atacar.

Para el HSM, recomendamos usar hardware Nitrokey, ya que son software / hardware gratuitos y ofrecen una amplia gama de opciones. Usa una máquina separada para colocar las claves de firma en HSM. Un buen HSM mantendrá una pista de auditoría de cuántas firmas se han hecho, de modo que la información se pueda usar para crear un proceso de auditoría automático para generar alarmas si se han realizado demasiadas firmas. Eso podría significar que este servidor fue violado y utilizado para firmar paquetes no autorizados.

Another possibility is to use a setup like Fedora’s Sigul that involves three machines.

Computadora portátil básica dedicada a la firma

Comienza con una computadora portátil que pueda limpiarse y reconstruirse desde cero. Lo más importante es que solo el software esencial está instalado en ella, y nada más. No incluyas ningún navegador, por ejemplo, ya que es el vector de ataque más común. No se debe instalar o configurar ninguna configuración de acceso remoto (por ejemplo, SSH o VNC). Para firmar aplicaciones y repositorios, alguien sacaría esta computadora portátil, la conectaría a la red y ejecutaría el proceso de firma. Los resultados firmados pueden publicarse a través de la conexión de red. Cuando se completa la firma, la máquina se puede apagar, desconectar y guardar en un lugar seguro.

Esto podría hacerse bastante automático con algunos scripts personalizados. La persona que ejecuta el proceso solo necesitaría sacar la máquina, conectarla, encenderla, esperar hasta que el proceso se complete y luego guardar todo de nuevo.

Ordenador portátil de firma totalmente fuera de línea con memorias USB

Este proceso se basa en la misma computadora portátil básica y sin cables que en el ejemplo anterior. Pero esta vez, la red debe estar completamente inhabilitada antes del proceso de instalación. Por ejemplo, es fácil en muchas computadoras portátiles eliminar físicamente la tarjeta WiFi. Por lo tanto, tiene sentido utilizar una computadora portátil que no incluya una toma de ethernet, que generalmente no es posible eliminar. De lo contrario, la lista negra de todos los módulos del kernel relacionados con neworking puede ser suficiente. Dado que esta máquina está completamente fuera de línea, el trabajo adicional de usar un HSM no es tan importante, pero no está de más incluirlo.

Descarga la imagen completa “CD” o “DVD” de Debian para ejecutar la instalación. Asegúrese de verificar las firmas GPG y los hashes SHA-256. En orden de actualizar una máquina sin conexión, una configuración “apt offline” es necesaria.

Para tener un cuidado extra, todo el software utilizado debe ser verificado. Los Chromebook son laptops agradables y baratas que ejecutan Linux de forma nativa. También usan Coreboot para el BIOS.

  • Compre una computadora en el estante con efectivo, evite que se la envíe, especialmente a través de las fronteras
  • Compre un Chromebook compatible con Debian con hardware WiFi extraíble, y no necesita binary blobs
  • Install a reproducibly built Coreboot binary
  • Instalar desde una imagen Debian reproducible, eliminando por completo el sistema operativo Chrome

El entorno físico

Lo último a tener en cuenta es la ubicación física donde se registran las firmas y dónde se almacenan los equipos esenciales. El entorno de firma debe ser físicamente seguro. De lo contrario, no hay forma de evitar que las computadoras portátiles o los HSM se pierdan o se utilicen para firmar contenido inapropiado. Para las máquinas fuera de línea, mantenerlos en una habitación cerrada es un buen comienzo. Para una máquina en línea, forzar todo el tráfico de red y el acceso remoto a través de Tor oculta la ubicación física de la máquina de los observadores de la red.

Para claves de firma de alto riesgo es importante usar múltiples capas de defensa:

  • Acceso físico restringido a HSMs o tarjetas inteligentes
  • Cámaras de seguridad
  • Guardias de seguridad en el lugar
  • Registro de visitantes
  • Un servidor seguro para servidores de firma de código

El servidor de registro debería estar físicamente separado del resto de la infraestructura. Y los logs, máquina y red deberían ser periódicamente auditados.

Decisiones difíciles

Idealmente todas esas prácticas deberían estar establecidas, pero cada una de esas medidas de seguridad trae un costo de dificultad, expansión y complejidad.··También pueden demorar el proceso de obtención de actualizaciones regulares.··Entonces hay riesgos de implementación con políticas de seguridad demasiado estrictas, tanto como los riesgos de insuficiente implementación.