Saltar al contenido

Cifrado

Capgo proporciona una robusta cifrado de extremo a extremo para sus paquetes de la aplicación, asegurando que su JavaScript code y activos estén protegidos durante la transmisión y el almacenamiento. Este sistema de cifrado está diseñado para brindarle un control completo sobre la seguridad de su aplicación mientras mantiene la comodidad de actualizaciones en vivo.

Capgo’s sistema de cifrado utiliza métodos criptográficos de industria estándar para proteger sus paquetes de acceso no autorizado. Cuando el cifrado está habilitado, sus paquetes se cifran antes de dejar su entorno de desarrollo y permanecen cifrados hasta que se desifran por su aplicación en el dispositivo del usuario.

¿Qué Protege Realmente la CifradoUnlike OTA systems that only sign updates, Capgo cifra el paquete subido antes de almacenamiento y entrega. Esto protege los contenidos del paquete de acceso casual en almacenamiento o tránsito y garantiza que solo alguien con su clave privada pueda producir una actualización cifrada válida. No hace que los activos web embarcados sean imposibles de descompilar: la clave pública utilizada por el cliente para desifrar actualizaciones se distribuye en la aplicación, por lo que un atacante determinado puede extraerla e inspeccionar los contenidos del paquete con suficiente esfuerzo. Cuándo Necesitas Cifrado

Capgo utiliza un enfoque de cifrado híbrido que combina la cifrado RSA y AES para una seguridad y rendimiento óptimos:

Capgo Flujo de Cifrado

  • Clave Privada: Generada y almacenada de manera segura en tu entorno de desarrollo (usada para la cifrado)
  • Clave Pública: Derivada de tu clave privada y almacenada en la configuración de tu app `Capacitor` (usada para la descifrado)
  • Claves de Sesión: Claves AES aleatorias generadas para cada carga de paquete
  1. Se genera una clave de sesión AES aleatoria para cada carga de paquete
  2. Tu paquete se cifra utilizando la clave de sesión AES
  3. El cálculo de la suma de verificación del paquete se realiza
  4. Ambas la clave de sesión AES y la suma de verificación están cifradas juntas utilizando su clave privada RSA (creando la “firma”)
  5. El paquete cifrado y la firma cifrada se almacenan

La suma de verificación se cifra junto con la clave AES para prevenir la manipulación. Dado que solo su clave privada RSA puede crear esta firma, y solo la clave pública correspondiente puede descifrarla, esto garantiza que tanto la clave de sesión AES como la suma de verificación esperada sean auténticas y no hayan sido modificadas por un atacante.

  1. Su aplicación descarga el paquete cifrado y la firma cifrada
  2. El Capgo SDK utiliza su clave pública RSA (almacenada en la aplicación) para descifrar la firma
  3. Esto revela la clave de sesión AES y la suma de verificación original
  4. La clave de sesión AES se utiliza para descifrar el paquete
  5. Se calcula una suma de verificación del paquete descifrado y se compara con la suma de verificación original para la verificación de integridad

Este proceso garantiza que incluso si un atacante intercepta el paquete cifrado, no puede modificar la clave de sesión AES o proporcionar una suma de verificación falsa, porque necesitaría su clave privada para crear una firma válida que la clave pública pueda descifrar.

CaracterísticaCapgoOtras Plataformas de Actualización OTA
Contenido del paqueteCifrado en almacenamiento/tránsito; aún inspeccionable por un ingeniero de reverso determinado con el binario de la aplicaciónLeído públicamente
Método de seguridadCifrado end-to-end completoCode solo firma
Nivel de privacidadProtección de entrega/almacenamiento fuerte; no anti-descompilaciónLa plataforma puede acceder a su code
ProtecciónContenido + integridad + autenticidadIntegridad + autenticidad solo

¿Por qué esto importa?:

  • Code firma solo verifica que las actualizaciones no han sido manipuladas y provienen de la fuente correcta
  • Capgo cifrado protege el paquete mientras se almacena y se entrega y hace que las actualizaciones cifradas falsificadas sean mucho más difíciles porque el atacante necesitaría tu clave privada
  • La ingeniería inversa sigue siendo posible después de que la aplicación se envíe, porque el cliente contiene la clave pública necesaria para descifrar y cargar la actualización

Capgo utiliza Cifrado V2 como el método de cifrado estándar:

Cifrado V2 (Método estándar actual)

Utiliza RSA-4096 para una mayor seguridad
  • AES-256-GCM para cifrado autenticado
  • Proporciona verificación de integridad
  • Mejora el rendimiento y la seguridad
  • Mejora el rendimiento y la seguridad
  • Utiliza RSA-2048 para cifrar la clave
  • AES-256-CBC para cifrar el paquete
  • Ya no está disponible en la versión actual CLI
  • Las aplicaciones legadas que utilizan V1 deben migrar a V2

Primero, genere sus claves de cifrado utilizando el Capgo CLI:

Ventana de terminal
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

Esto crea:

  • .capgo_key_v2: Su clave privada (mantenga esto seguro!)
  • .capgo_key_v2.pub: Su clave pública (utilizada por su aplicación)

Estos archivos se crean en el directorio actual donde ejecuta el comando.

Paso 2: Guarda tu clave pública en Capacitor Config (Requerido)

Sección titulada “Paso 2: Guarda tu clave pública en Capacitor Config (Requerido)”

debes guardar tu clave pública en el Capacitor config para que tu aplicación móvil pueda descifrar paquetes:

Ventana de terminal
# Save public key from file to Capacitor config (required)
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
# Or save public key data directly
npx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"

Paso 3: Sincroniza Capacitor Plataforma (Requerido)

Sección titulada “Paso 3: Sincroniza Capacitor Plataforma (Requerido)”

Después de guardar la clave pública, debes sincronizar la Capacitor plataforma para copiar la configuración actualizada a la capa nativa:

Ventana de terminal
# Sync the platform to copy config to native
npx cap sync

La forma más sencilla es cifrar durante el proceso de subida:

Pantalla de terminal
# Upload with automatic encryption
npx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)

Para tener más control, puede cifrar manualmente los paquetes:

  1. Crear un paquete zip:

    Pantalla de terminal
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Cifrar el paquete:

    Pantalla de terminal
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Subir a tu almacenamiento (por ejemplo, S3) y registrar con Capgo:

    Ventana de terminal
    # First upload the encrypted bundle to your storage (e.g., AWS S3)
    aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip
    # Then register with Capgo using the external URL
    npx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2

Opciones de clave privada:

  1. Basado en archivo (desarrollo local):

    Ventana de terminal
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. Variable de entorno (CI/CD):

    Ventana de terminal
    # Store in environment variable for CI
    export CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"
    npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"

Configuración de clave pública (Requerida):

Ventana de terminal
# Must save public key to Capacitor config for mobile app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

Entorno de producción:

  • Almacene las llaves privadas en servicios de gestión de claves seguras (AWS KMS, Azure Key Vault, etc.)
  • Utilice la gestión de secretos de CI/CD para las llaves privadas
  • Jamás comita llaves privadas en control de versiones

Uso de la clave:

  • Llave privada: Utilizado por CLI para la cifrado durante la carga de paquetes (mantener seguro)
  • Clave pública: Almacenado en la configuración de la aplicación para la descifrado en el dispositivo (seguro para comitar)

Rotar después de un compromiso de clave privada

Sección titulada “Rotar después de un compromiso de clave privada”

Rotar la pareja de claves cuando la clave privada se sospecha o se confirma comprometida. No se requiere una rotación de calendario rutinaria. Este es una migración de clave nativa, no un cambio solo OTA.

  1. Generar una pareja de claves de reemplazo:

    Ventana de terminal
    npx @capgo/cli@latest key create
  2. Guardar la clave pública de reemplazo en tu configuración de Capacitor:

    Ventana de terminal
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. Sync y envíe una versión nativa: Corra npx cap sync, luego distribuya una nueva versión de aplicación nativa que contenga la nueva clave pública.

  4. Dirija la nueva versión nativa: Los dispositivos que aún ejecutan la versión antigua del binario nativo no pueden descifrar actualizaciones cifradas con la nueva clave. Utilice Versión de destino para restringir los paquetes con la nueva clave a la nueva versión nativa mientras el resto de la flota se actualiza a través de la tienda o MDM.

  5. Cambie su secreto de carga: Tan pronto como esa versión nativa esté en vivo, reemplace la clave privada en CI y cargue solo paquetes dirigidos a versiones nativas que contengan la nueva clave pública.

  • No compartir claves privadas entre entornos o miembros del equipo
  • Usar claves diferentes para diferentes entornos (desarrollo, staging, producción)
  • Rotar después de una compromiso: reemplazar la pareja de claves cuando la clave privada se sospeche o se confirme comprometida; no se requiere una rotación de calendario rutinaria
  • Almacenar claves de manera segura utilizando sistemas de gestión de claves adecuados
  • Verificar siempre la integridad de la rama después de la desifrado
  • Monitorear patrones de descarga inusuales o fallas
  • Usar HTTPS para todas las URL de la rama (requerido para aplicaciones móviles)
  • Implementar manejo de errores adecuado para fallas de desifrado
  • Acceso limitado Acceda solo a personal autorizado a las llaves de cifrado
  • Utilice el acceso basado en roles para operaciones de gestión de llaves
  • Revisión Uso y acceso de llaves regularmente
  • Implementación procedimientos de respaldo y recuperación adecuados

Fallas de descifrado:

  • Verifique que la clave privada coincida con la clave pública utilizada para la cifrado
  • Compruebe que el ivSessionKey es correcto
  • Asegúrese de que esté utilizando la cifrado V2 (V1 ya no está soportado)

Errores relacionados con la clave:

  • Confirme que el formato de la clave privada es correcto (formato PEM)
  • Verifique que la clave no se haya dañado durante el almacenamiento o transferencia
  • Compruebe que la clave tenga permisos adecuados en la configuración de su aplicación

Problemas de rendimiento:

  • Los paquetes grandes pueden tardar más en cifrar/descifrar
  • Considere utilizar actualizaciones Delta (manifest) para reducir el tamaño de los paquetes
  • Monitore el rendimiento del dispositivo durante la desifrado

Verificar el estado de cifrado:

Ventana de terminal
npx @capgo/cli@latest app debug

Prueba del flujo de cifrado/descifrado:

Ventana de terminal
# Test the complete workflow: zip → encrypt → decrypt → unzip
npx @capgo/cli@latest bundle zip com.example.app --key-v2
npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --json
npx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEY

Capgo sigue la implementación de cifrado de los estándares de la industria:

  • AES-256: Algoritmo de cifrado aprobado por FIPS 140-2
  • RSA-4096: Fuerte cifrado asimétrico para protección de claves
  • GCM Mode: Proporciona tanto confidencialidad como autenticidad
  • Secure Random: Generación de números aleatorios criptográficamente seguros

Esto hace que Capgo sea adecuado para aplicaciones que requieren cumplimiento con:

  • RGPD (Reglamento General de Protección de Datos)
  • HIPAA (Ley de Portabilidad y Responsabilidad de Seguros de Salud)
  • SOC 2 (Control de Servicios Organizativos 2)
  • ISO 27001 (Gestión de la seguridad de la información)
  • Tamaño del paquete: Los paquetes cifrados son ligeramente más grandes (~1-2% de sobrecarga)
  • Tiempo de procesamiento: La cifrado/decifrado agrega una latencia mínima
  • Uso de memoria: Aumento temporal durante las operaciones de cifrado/decifrado
  • Utilice actualizaciones de Delta (manifest) para minimizar la transferencia de datos cifrados
  • Optimice el tamaño de su paquete convirtiendo las imágenes a formato WebP
  • Minimice los archivos JavaScript y CSS antes de empaquetarlos
  • Elimine dependencias no utilizadas y code
  • Monitoree el rendimiento del dispositivo en dispositivos más antiguos o lentos

Si estás utilizando Cifrado para planificar la seguridad y la conformidad, conectalo con Conformidad para los detalles de implementación en Conformidad, Capgo Escáner de Seguridad para el flujo de trabajo del producto en Capgo Escáner de Seguridad, Capgo Centro de Confianza para el flujo de trabajo del producto en Capgo Centro de Confianza, Capgo Centro de Confianza para el flujo de trabajo del producto en Capgo Centro de Confianza, y Seguridad de la Organización para el detalle de implementación en Seguridad de la Organización.