Encriptación
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Capgo proporciona una robusta cifrado de extremo a extremo para sus paquetes de aplicación, asegurando que su JavaScript code y activos están protegidos durante la transmisión y almacenamiento. Este sistema de cifrado está diseñado para brindarle un control completo sobre la seguridad de su aplicación mientras se mantiene la conveniencia de las actualizaciones en vivo.
Resumen
Sección titulada “Resumen”El sistema de cifrado de Capgo utiliza métodos criptográficos de industria estándar para proteger sus paquetes de acceso no autorizado. Cuando se habilita el cifrado, 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 el Cifrado?: A diferencia de los sistemas de OTA que solo firman actualizaciones, Capgo cifra el paquete subido antes del almacenamiento y la entrega. Esto protege los contenidos del paquete de acceso casual en almacenamiento o tránsito y asegura que solo alguien con su clave privada puede producir una actualización cifrada válida. Esto No hace que los activos web embarcados sean imposibles de revertir: 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.
Modelo de seguridad
Confidencialidad con respecto a Capgo
Sección titulada “Confidencialidad con respecto a Capgo”Su clave privada RSA se genera y se mantiene en su máquina. El Capgo CLI nunca transmite su clave privada, y Capgo no la almacena. Capgo tampoco almacena su clave pública RSA completa: las subidas incluyen solo una parte corta key_id (los primeros 20 caracteres del cuerpo PEM) para que los canales puedan coincidir con la pareja de claves que utilizó.
paquetes de bundles completos cifrados se almacenan y se entregan como cifrado AES-128-CBC. Los servicios de Capgo, CDN, almacenamiento de objetos y cualquier persona en el camino de entrega que vea solo los artefactos alojados no pueden leer su JavaScript, HTML o activos sin su clave privada.
La máxima confidencialidad desde Capgo
Sección titulada “La máxima confidencialidad desde Capgo”La cifrado predeterminado ya mantiene el paquete contents confidential in Capgo storage and in transit. If you also want to reduce what Capgo could learn by linking your update channel to a particular store binary, use the following guide.
Utilice una ID de aplicación dedicada Capgo. Set plugins.CapacitorUpdater.appId (your Capgo) app_id) a un valor que es not Al igual que su ID de paquete de iOS o ID de aplicación de Android. Almacena y edite tus builds de MDM con tu clave pública RSA. capacitor.configCuando la Capgo app_id coincide con el nombre de paquete de la tienda, es más fácil asociar la aplicación Capgo con un binario publicado que contiene esa clave pública. Una ID de aplicación separada Capgo evita esa conexión directa.
Constructor de Capgo y la clave pública. Capgo El constructor sube el zip de tu proyecto con capacitor.config (y la arborescencia nativa), incluyendo plugins.CapacitorUpdater.publicKey después de key saveMantenga la clave pública fuera de las subidas de Constructor:
- Construya aplicaciones nativas localmente o en tu propio CI cuando la confidencialidad desde Capgo importe, y evite subir esas ramas a través de Capgo Constructor mientras la clave pública está en la configuración. o
- Agregar la clave pública con
key savesolo después de que cualquier subida de Constructor que no debe exponer la clave haya completado ya o - Si dependes de Capgo Constructor para compilaciones nativas, trate el flujo de trabajo como proporcionando una fuerte integridad (firmas de comprobación de suma) pero no asuma confidencialidad desde Capgo una vez que la clave pública haya sido incluida en una subida de Constructor.
Encuentre las subidas de delta cifradas. Delta (ficheros parciales) de cuerpo son texto plano a menos que utilices @capgo/capacitor-updater 6.14.4 o una versión más nueva (la cifrado parcial se habilita automáticamente para subidas cifradas en versiones de actualizador compatibles) o pase --encrypt-partial on bundle uploadSi bien con cifrado parcial, file names listados en manifestos delta no están cifrados; solo se envuelven con hashes RSA por archivo.
Integridad
Sección titulada “Integridad”Después de la descifrado, el actualizador calcula SHA-256 Sobre el paquete y lo compara con el checksum recuperado del firmado con RSA. En caso de desacuerdo, el paquete es eliminado y nunca se activa.
- Android verifica el checksum después de la desifrado y antes descomprimiendo el archivo.
- iOS descompresiona y desencripta primero, luego verifica la suma de comprobación antes desifra y descomprime primero, luego verifica el checksum
Cuando se configura una clave pública, se rechazan los checksums que faltan o no están correctamente firmados con RSA.
Gestión de claves
Section titled “Key handling”Para cada carga completa de zip, el CLI genera un nuevo número aleatorio AES-128 clave de sesión y IV de 16 bytes, cifra el paquete con AES-128-CBC, y cifra la clave de sesión con tu RSA-2048 clave privada utilizando PKCS#1 v1.5 tipo 1 almacenamiento. Los dispositivos recuperan la clave AES con la clave pública RSA incorporada en la aplicación. Las claves y IVs no se reutilizan en subidas de paquetes separadas CLI. En una subida de delta, todos los archivos parciales cifrados comparten la clave de sesión y el IV de esa subida.
La clave pública utilizada para la descifra es incorporada en tu aplicación enviada. El contenido de paquete en claro está disponible en dispositivos que ejecutan tu aplicación a través del mismo camino de descifra que utiliza el actualizador, comparable a otros activos en el paquete de la aplicación.
Fallas y reportes
Sección titulada “Fallas y reportes”Fallas de descifrado y comprobación de checksum se informan como eventos de estadísticas ("download_fail, checksum_fail, decrypt_fail) al endpoint de estadísticas Capgo o a su manejador de estadísticas autogestionado. Las estadísticas se envían desde el dispositivo; no se informa nada a los anfitriones de paquetes de terceros basado en el éxito o fracaso de la descifrado. Cada intento es normalmente un descarga completa iniciada por el dispositivo, por lo que es impracticable el ataque de tipo probing mediante padding, y el texto modificado aún falla la verificación de checksum firmada.
Fortalecimiento futuro
Sección titulada “Fortalecimiento futuro”Una futura versión importante puede agregar un formato versionado con AES-GCM y RSA-PSS over the hash as defense in depth alongside today’s design. That would be an incremental hardening step, not an emergency security fix for the current format.
Cómo Funciona la Criptografía
Sección titulada “Cómo Funciona la Criptografía”Capgo utiliza un enfoque de criptografía híbrida que combina la criptografía RSA y AES para una seguridad y rendimiento óptimos:

1. Generación de Claves
Sección titulada “1. Generación de Claves”- Clave PrivadaGenerado y almacenado de manera segura en tu entorno de desarrollo (utilizado para la cifrado)
- Clave Pública: Derivada de tu clave privada y almacenada en la configuración de tu aplicación Capacitor (usada para la descriptografía)
- Claves de Sesión: Claves AES aleatorias generadas para cada carga de paquete
2. Proceso de cifrado
Sección titulada “2. Proceso de cifrado”- Se genera una clave de sesión AES aleatoria para cada carga de paquete
- Su paquete se cifra utilizando la clave de sesión AES
- Se calcula el checksum del paquete
- La clave de sesión AES y el checksum se cifran juntos utilizando su clave privada RSA (creando la “firma”)
- El paquete cifrado y la firma cifrada se almacenan
El checksum 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 el checksum esperado sean auténticos y no hayan sido modificados por un atacante.
3. Proceso de descifrado
Sección titulada “3. Proceso de descifrado”- Su aplicación descarga el paquete cifrado y la firma cifrada
- El Capgo SDK utiliza su clave pública RSA (almacenada en la aplicación) para descifrar la firma
- Esto revela la clave de sesión AES y el checksum original
- La clave de sesión AES se utiliza para descifrar el paquete
- Se calcula un checksum del paquete descifrado y se compara con el checksum original para verificar la integridad
Este proceso garantiza que incluso si un atacante intercepta el paquete cifrado, no pueden modificar la clave de sesión AES o proporcionar un checksum falso, porque necesitarían su clave privada para crear una firma válida que la clave pública pueda descifrar
Capgo vs Other Platforms
Título de la sección “Capgo vs Otras Plataformas”| Característica | Capgo | Otras plataformas de actualización OTA |
|---|---|---|
| Contenido del paquete | Encriptado en almacenamiento/tránsito; aún inspeccionable por un ingeniero de reversa determinado con el binario de la aplicación | Leído públicamente |
| Método de seguridad | Encriptación de extremo a extremo verdadera | Code solo con firma |
| Nivel de privacidad | Protección de entrega/almacenamiento fuerte; no anti-reversa | La plataforma puede acceder a su code |
| Protección | Contenido + integridad + autenticidad | Integridad + autenticidad solo |
¿Por qué esto importa:
- Code de firma solamente verifica que las actualizaciones no han sido manipuladas y provienen de la fuente correcta
- Capgo de 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 su 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
Métodos de cifrado
Título de la sección “Métodos de cifrado”Capgo utiliza el método de cifrado V2 como el método estándar:
Método de cifrado V2 (Método estándar actual)
Título de la sección “Cifrado V2 (Estándar Actual)”- Utiliza RSA-4096 para una mayor seguridad
- Utiliza AES-256-GCM para la cifrado autenticado
- Proporciona verificación de integridad
- Mejora el rendimiento y la seguridad
Cifrado V1 (Deprecatedo)
Título de la sección “Cifrado V1 (Deprecatedo)”- Utiliza RSA-2048 para cifrar la clave
- Utiliza AES-256-CBC para cifrar el paquete
- No está disponible en la versión actual CLI
- Las aplicaciones legadas que utilizan V1 deben migrar a V2
Configuración de cifrado
Título de la sección ‘Configuración de cifrado’Paso 1: Generar claves de cifrado
Paso 1: Generar Claves de CriptografíaPrimero, genere sus claves de cifrado utilizando el Capgo CLI.
# Generate new encryption keys (creates files in current directory)npx @capgo/cli@latest key createCopiar al portapapeles
.capgo_key_v2Tu clave privada (manténla segura).capgo_key_v2.pub: Su clave pública (utilizada por tu aplicación)
Estos archivos se crean en el directorio actual donde ejecutas 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)”Tú debes guardar tu clave pública en la Capacitor config para que tu aplicación móvil pueda descifrar paquetes:
# 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 directlynpx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"Paso 3: Sincronizar Capacitor Plataforma (Requerido)
Sección titulada “Paso 3: Sincronice la plataforma Capacitor (Requerido)”Después de guardar la clave pública, usted debe sincronizar la plataforma Capacitor para copiar la configuración actualizada a la capa nativa:
# Sync the platform to copy config to nativenpx cap syncEmpaquetar bundles
Título de la sección “Empaquetar bundles”Método 1: Cifrar durante la carga
Título de la sección “Método 1: Cifrar durante la carga”La forma más sencilla es cifrar durante el proceso de carga:
# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)Método 2: Flujo de trabajo de cifrado manual
Método 2: Flujo de trabajo de cifrado manualPara tener más control, puedes cifrar manualmente bundles:
-
Crear un paquete zip:
Ventana de terminal npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Proteger el paquete:
Ventana de terminal npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
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 URLnpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
Gestión de claves
Sección titulada “Gestión de claves”Almacenar claves de manera segura
Sección titulada “Almacenar claves de manera segura”Opciones de clave privada:
-
Basado en archivo (desarrollo local):
Ventana de terminal # Key stored as .capgo_key_v2 file in project rootnpx @capgo/cli@latest bundle upload --key-v2 -
Variable de entorno (CI/CD):
Ventana de terminal # Store in environment variable for CIexport 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 (Requerido):
# Must save public key to Capacitor config for mobile appnpx @capgo/cli@latest key save --key ./.capgo_key_v2.pubEntorno de producción:
- Almacenar claves 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 claves privadas
- Jamás cometa claves privadas en control de versiones
Uso de la clave:
- Clave privada: Utilizada por CLI para la cifrado durante la carga de paquete (mantener seguro)
- Clave públicaAlmacenado 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 sospeche o se confirme comprometida. No se requiere una rotación de calendario rutinaria. Este es un cambio de clave nativa, no un cambio OTA solo.
-
Generar una pareja de claves de reemplazo:
Ventana de terminal npx @capgo/cli@latest key create -
Guarda la clave pública de reemplazo en tu Capacitor configuración:
Ventana de terminal npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub -
Sincroniza y envía una versión nativa: Ejecutar
npx cap syncDistribuya una nueva versión nativa de la aplicación que contenga la nueva clave pública de reemplazo. -
Dirija la nueva versión nativa: Entonces distribuye una nueva versión de aplicación nativa que contenga la clave pública de reemplazo. Dirigir la nueva versión nativa: Los dispositivos que aún ejecutan la versión binaria nativa antigua no pueden descifrar actualizaciones cifradas con la clave de reemplazo. Utiliza
-
Targeteo de versión As pronto como esa versión nativa esté disponible, reemplaza la clave privada en CI y sube solo paquetes dirigidos a versiones nativas que contengan la clave pública de reemplazo.
Prácticas de Seguridad
Título de la sección “Prácticas de Seguridad”Seguridad de la Clave
Seguridad de la clave- Jamás compartas claves privadas entre entornos o miembros del equipo
- Utiliza claves diferentes para diferentes entornos (desarrollo, pruebas, producción)
- Rotar después de una vulneración: reemplaza la pareja de claves cuando se sospeche o confirme que la clave privada está comprometida; no se requiere una rotación de calendario rutinaria
- Almacena claves de manera segura utilizando sistemas de gestión de claves adecuados
Seguridad de la Caja
Título de la sección “Seguridad de la Caja”- Verifica siempre integridad del paquete después de la desifrado
- Monitorea por patrones de descarga inusuales o fallas
- Utiliza HTTPS para todas las URL de la caja (requerido para aplicaciones móviles)
- Implementar manejo de errores adecuado para fallos de descifrado
Control de Acceso
Sección titulada “Control de Acceso”- Limitar el acceso a las llaves de cifrado solo a personal autorizado
- Utilice acceso basado en roles para operaciones de gestión de llaves
- Audit del uso y acceso de las llaves regularmente
- Implementar procedimientos de respaldo y recuperación adecuados
Resolución de Problemas de Criptografía
Sección titulada “Resolución de Problemas de Criptografía”Problemas Comunes
Sección titulada “Problemas Comunes”Fallas de descifrado:
- Verifique que la clave privada coincida con la clave pública utilizada para la criptografía
- Verifique que el
ivSessionKeyesté correcto - Asegúrese de que esté utilizando la Criptografía V2 (V1 ya no está soportada)
Errores relacionados con la clave:
- Confirme que el formato de la clave privada es correcto (formato PEM)
- Verificar que la clave no se ha corrompido durante el almacenamiento/transferencia
- Verifique 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
- Consider using Delta updates to reduce bundle sizes
- Monitorear el rendimiento del dispositivo durante la descifrado
Comandos de depuración
Sección titulada “Comandos de depuración”Verifique el estado de cifrado:
npx @capgo/cli@latest app debugPrueba el flujo de cifrado/descifrado:
# Test the complete workflow: zip → encrypt → decrypt → unzipnpx @capgo/cli@latest bundle zip com.example.app --key-v2npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --jsonnpx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEYCumplimiento y Estándares
Título de la sección “Cumplimiento y Estándares”Capgo implementa la cifrado según estándares de la industria:
- AES-256: Algoritmo de cifrado aprobado por FIPS 140-2
- RSA-4096: Cifrado asimétrico fuerte para la protección de claves
- Modo GCM: Proporciona tanto confidencialidad como autenticidad
- Aleatorio Seguro: Generación de números aleatorios criptográficamente seguros
Esto hace a Capgo adecuado para aplicaciones que requieren cumplimiento con:
- RGPD (Reglamento General de Protección de Datos)
- HIPAA (Ley de Portabilidad e Integridad de Seguros de Salud)
- SOC 2 (Control de Servicios Organizativos 2)
- ISO 27001 (Gestión de la Seguridad de la Información)
Consideraciones de rendimiento
Sección titulada “Consideraciones de rendimiento”Sobrecarga de cifrado
Sección titulada “Sobrecarga de cifrado”- Tamaño del paquete: Los paquetes cifrados son ligeramente más grandes (~1-2% de sobrecarga)
- Tiempo de procesamiento: La cifrado/descifrado añade una latencia mínima
- Uso de memoria: Aumento temporal durante operaciones de cifrado/descifrado
Consejos de optimización
Sección titulada “Consejos de optimización”- Utilice actualizaciones Delta para minimizar el tráfico 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 innecesarias y code
- Monitor device performance on older/slower devices
Pasos siguientes
Sección titulada “Pasos siguientes”- Aprende sobre Almacenamiento personalizado a utilizar la cifrado con tu propia infraestructura
- Explora Channels Administrar conjuntos de paquetes cifrados en diferentes entornos
- Configura Integración CI/CD automatizar despliegues cifrados
Sigue adelante desde la Criptografía
a automatizar despliegues cifradosSigue adelante desde Cifrado Cifrado para planificar la seguridad y la conformidad, conecte con Conformidad para el detalle de implementación en Conformidad Capgo Escáner de Seguridad para el flujo de trabajo del producto en Capgo Escáner de Seguridad Capgo Seguridad para el flujo de trabajo del producto en Capgo Seguridad 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