Saltar al contenido principal
Solución

Cifrado E2E para el Capacitor Updater mediante firma Code

Uso de criptografía RSA + AES para cifrar actualizaciones, diseñado para empresas y apps de alta seguridad

Cifrado E2E para el Capacitor Updater mediante firma Code

Capacitor-updater ahora admite cifrado de extremo a extremo de code. La firma de Code garantiza que las actualizaciones ejecutadas en los dispositivos de los usuarios no hayan sido manipuladas, ofreciendo una capa extra de protección sobre la seguridad web estándar de Capacitor-updater.

La seguridad por defecto de Capacitor-updater

Por defecto, el modelo de seguridad de Capgo es similar al de los proveedores de hosting web. Capgo almacena las actualizaciones cifrados en reposo y los sirve mediante HTTPS usando cifrados modernos. Del mismo modo, publicar una actualización desde el ordenador de un desarrollador siempre usa HTTPS.

Capgo obtiene un A+ en el test de HTTPS de SSL Labs

La seguridad por defecto de Capgo obtiene un A+ en el test de HTTPS de SSL Labs (https://www.ssllabs.com, noviembre de 2022)

Al igual que los mejores web hosts, Capgo usa HTTPS para proteger la privacidad e integridad de las conexiones de red entre el servidor y los dispositivos de los usuarios. Es un nivel de seguridad excelente que funciona tanto para la web como para apps de Ionic que usan Capgo.

La cadena de suministro de infraestructura cloud

Otro punto común entre Capgo y la mayoría de los web hosts es que funcionan sobre infraestructura cloud de bajo nivel, a menudo de AWS, GCP u otro proveedor popular. El hardware y software operado por estos proveedores y por Capgo u otros web hosts forman parte de la cadena de suministro cloud.

La cadena de suministro cloud y su modelo de seguridad funcionan para un gran número de webs y apps. Todo desarrollador web que usa un proveedor cloud confía en él y espera que los archivos que sube sean los mismos que se ejecutan o sirven sin haber sido manipulados. Los proveedores cloud trabajan duro para mantener su infraestructura segura.

Pero, obviamente, se descubren vulnerabilidades de hardware y software. Los proveedores cloud parchean vulnerabilidades con regularidad y previenen software malicioso de forma proactiva (p. ej. SLSA de Google), y construir capas de defensa en profundidad; en la práctica, la infraestructura en la nube suele cubrir las necesidades de seguridad de la mayoría de webs y apps. Sin embargo, algunas apps de Ionic incluyen infraestructura en la nube comprometida en sus modelos de amenazas. Para estas Capacitor JS con los requisitos de seguridad más altos por encima de la web, creamos el firmado code de extremo a extremo en Capgo y el protocolo estándar de Capgo Updates.

Firmado code de extremo a extremo con Capgo

El firmado code de extremo a extremo de Capgo utiliza criptografía de clave pública para garantizar que los dispositivos de los usuarios finales ejecuten solo actualizaciones originales y sin modificar del desarrollador de la app Capacitor.

“Extremo a extremo” significa que esta seguridad cubre todo el flujo, desde que un desarrollador publica una actualización hasta que el dispositivo del usuario final la recibe y la ejecuta. “Firmado Code” consiste en usar criptografía y una clave privada secreta para “firmar” code, y luego usar una clave pública de confianza para verificar la firma.

Aquí tienes un esquema sencillo* para explicar cómo funciona:

Esquema de cifrado de Capgo

  • La criptografía es compleja y difícil en la práctica

Definición:

  • AES: Advanced Encryption Standard, un algoritmo de cifrado simétrico con una sola clave para cifrar y descifrar.
  • RSA: Rivest–Shamir–Adleman, un algoritmo de cifrado asimétrico que utiliza dos claves: una pública y una privada.
  • Cypher: Los datos cifrados.
  • Clave de sesión: Una clave AES usada para cifrar y descifrar datos.
  • Checksum: Un hash calculado para un archivo
  • Firma: Un checksum cifrado con una clave privada RSA. Se puede verificar con una clave pública RSA

Usamos el algoritmo AES para cifrar la actualización. Se genera una clave AES aleatoria en cada upload; luego, la clave AES y el checksum (en adelante, la “firma”) se cifran con la clave privada RSA del desarrollador. La clave pública RSA del desarrollador se usa en la app para descifrar la clave AES y la firma (convirtiéndola de nuevo en un checksum). Después, la clave AES descifrada se usa para descifrar la actualización; se calcula el checksum de la actualización descifrada y se compara con la firma descifrada.

Usamos dos algoritmos de cifrado distintos porque RSA no puede usarse para cifrar grandes cantidades de datos. AES se usa para cifrar la actualización y RSA para cifrar la clave AES y el checksum.

Con esto, ni siquiera Capgo puede leer el contenido de tu bundle. Es un modelo de seguridad robusto utilizado por muchos clientes enterprise.

Cifrado de actualizaciones V2 2024-08-27:

  • Cambiamos el tipo de clave almacenada en la app. Esto se hizo para evitar inferir la clave pública (antes usada para cifrar) a partir de la clave privada (antes usada para descifrar). Ahora, la app almacena la clave pública (usada para descifrar).
  • Cambiamos el checksum del algoritmo CRC32 al algoritmo SHA256. También empezamos a firmar el bundle. Cuando se configura el cifrado V2, la actualización debe tener una firma válida. El plugin lo exige estrictamente.
  • Ahora exigimos una firma válida cuando se configura el cifrado V2. Estos 3 cambios se realizaron tras un análisis de seguridad de un miembro de la comunidad para prevenir ataques criptográficos durante la actualización.

Si usabas el cifrado V1, migra a V2 para aprovechar las nuevas funciones de seguridad. Sigue las instrucciones de migración.

Con el firmado end-to-end de code, Capgo se convierte en una infraestructura cloud "trustless". Si uno de los proveedores cloud de Capgo, o incluso Capgo, modificara una actualización firmada con code, los dispositivos de los usuarios finales rechazarían esa actualización y ejecutarían la versión anterior y confiable que ya está en el dispositivo.

Aunque el HTTPS a nivel web es suficiente para muchas apps, algunas grandes empresas prefieren el nivel extra de seguridad del firmado end-to-end de code. Algunas de estas empresas desarrollan apps financieras con transacciones permanentes de alto valor. Otras tienen CISOs que incluyen la infraestructura cloud comprometida en sus modelos de amenazas. Implementamos el firmado end-to-end de code en Capgo para estos casos de uso y queremos escuchar a más empresas con necesidades de seguridad de alto nivel.

Primeros pasos para clientes enterprise

Para grandes empresas o proyectos que priorizan la seguridad, queremos que el firmado de code sea fácil de configurar y mantener. Con ese fin, ahora ofrecemos las siguientes funciones:

  • Configuración rápida de certificados
  • Soporte para el firmado de code en servidores de desarrollo con Capgo y Native Build
  • Firmado de code en producción para cada actualización

El firmado Capgo code está disponible para todos los clientes. Para empezar, sigue las instrucciones de configuración.

Créditos

Muchas gracias a Ionic, este artículo se basa en este artículo reescrito con chat-gpt-3 y adaptado.

Continuamos con el cifrado E2E para Capacitor Updater mediante el firmado Code

Si estás usando Cifrado E2E para el Capacitor Updater mediante firma Code para planificar la seguridad y el cumplimiento, conéctalo con Cifrado para los detalles de implementación en Cifrado, Cumplimiento para los detalles de implementación en Cumplimiento, Escáner de seguridad de Capgo para el flujo de trabajo del producto en Capgo Security Scanner, Seguridad de Capgo para el flujo de trabajo del producto en Capgo Security, y Centro de confianza de Capgo para el flujo de trabajo del producto en Capgo Trust Center.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.