Saltare al contenuto

Encryption

Capgo fornisce una robusta crittografia end-to-end per i pacchetti dell'applicazione, garantendo che il tuo JavaScript code e gli asset siano protetti durante la trasmissione e lo storage. Questo sistema di crittografia è progettato per darti il controllo completo sulla sicurezza dell'applicazione mentre mantieni la comodità degli aggiornamenti in tempo reale.

Capgo's sistema di crittografia utilizza metodi crittografici di standard industriale per proteggere i pacchetti dall'accesso non autorizzato. Quando la crittografia è abilitata, i pacchetti vengono crittografati prima di lasciare l'ambiente di sviluppo e rimangono crittografati fino a quando non vengono decrittografati dall'applicazione sul dispositivo dell'utente.

Cosa la Crittografia Protegge Effettivamente: A differenza dei sistemi OTA che firmano solo gli aggiornamenti, Capgo crittografa il pacchetto caricato prima dello storage e della consegna. Ciò protegge i contenuti del pacchetto da accessi casuali in storage o in transito e assicura che solo qualcuno con la tua chiave privata possa produrre un aggiornamento crittografato valido. Ciò Non evitare che gli asset web consegnati siano impossibili da sottoporre a reverse engineering: la chiave pubblica utilizzata dal client per decrittare gli aggiornamenti è distribuita nell'app, quindi un determinato attaccante può ancora estrarla e ispezionare i contenuti del pacchetto con sufficiente impegno.

Capgo utilizza un approccio di crittografia ibrida che combina la crittografia RSA e AES per una sicurezza e prestazioni ottimali:

Flusso di Crittografia di Capgo

  • Chiave PrivataGenerato e archiviato in modo sicuro nel tuo ambiente di sviluppo (utilizzato per la crittografia)
  • Chiave Pubblica: Derivato dal tuo chiave privata e memorizzato nel tuo app’s Capacitor config (utilizzato per la decrittazione)
  • Sessioni Chiavi: Chiavi AES casuali generate per ogni caricamento di bundle
  1. Viene generata una chiave AES casuale per ogni caricamento di bundle
  2. La tua bundle è crittografata utilizzando la chiave AES di sessione
  3. Viene calcolato il checksum del bundle
  4. Entrambe la chiave AES di sessione e il checksum sono crittografate insieme utilizzando la tua chiave privata RSA (creando la “firma”)
  5. Viene memorizzato il bundle crittografato e la firma crittografata

Viene crittografato il checksum insieme alla chiave AES per prevenire la manipolazione. Poiché solo la tua chiave privata RSA può creare questa firma, e solo la chiave pubblica corrispondente può decritturarla, ciò assicura che sia autentica e non modificata da un attaccante sia la chiave AES di sessione che il checksum previsto.

  1. La tua app scarica il pacchetto crittografato e la firma crittografata
  2. La Capgo SDK utilizza la tua chiave pubblica RSA (archiviata nell'app) per decrittare la firma
  3. Questa rivela la chiave di sessione AES e il checksum originale
  4. La chiave di sessione AES viene utilizzata per decrittare il pacchetto
  5. Si calcola un checksum del pacchetto decrittato e si confronta con il checksum originale per la verifica dell'integrità

Questo processo assicura che anche se un attaccante intercetta il pacchetto crittografato, non può modificare la chiave AES o fornire un checksum falso, perché dovrebbe avere la tua chiave privata per creare una firma valida che la chiave pubblica può decrittare

CaratteristicaCapgoAltre piattaforme OTA
Contenuto del pacchettoCriptato in archiviazione/trasito; ancora esaminabile da un ingegnere inversore determinato con il binario dell'applicazionePubblicamente leggibile
Metodo di sicurezzaVerifica end-to-endCode firma solo
Livello di privacyProtezione forte di consegna/ archiviazione; non antiriciclaggioLa piattaforma può accedere al tuo code
ProtezioneIntegrità + autenticità + contenutoIntegrità + autenticità solo

Perché è importante:

  • Code firma verifica solo che gli aggiornamenti non siano stati alterati e provengano dalla fonte giusta
  • Capgo crittografia protege il pacchetto mentre è archiviato e distribuito e rende molto più difficile creare aggiornamenti criptati falsificati perché l'attaccante avrebbe bisogno della tua chiave privata
  • La reverse engineering è ancora possibile dopo che l'app è stata rilasciata, perché il client contiene la chiave pubblica necessaria per decrittare e caricare l'aggiornamento

Capgo utilizza la crittografia V2 come metodo di crittografia standard:

  • Utilizza RSA-4096 per una maggiore sicurezza
  • Utilizza AES-256-GCM per la crittografia autenticata
  • Provides integrity verification
  • Maggiore prestazione e sicurezza
  • Utilizza RSA-2048 per la crittografia delle chiavi
  • AES-256-CBC per l'encryption del bundle
  • Non più disponibile nella versione corrente di CLI
  • Applicazioni legacy che utilizzano V1 devono migrare a V2

Prima, generare le tue chiavi di crittografia utilizzando il Capgo CLI.

Finestra del terminale
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

Questo crea:

  • .capgo_key_v2: La tua chiave privata (tienila sicura!)
  • .capgo_key_v2.pubLa tua chiave pubblica (utilizzata dal tuo app)

Questi file vengono creati nella directory corrente in cui esegui il comando.

Passo 2: Salva la tua chiave pubblica nel Capacitor Config (Obbligatorio)

Titolo della sezione: “Passo 2: Salva la tua chiave pubblica nel Capacitor Config (obbligatorio)”

You Devi salvare la tua chiave pubblica nel Capacitor config affinché l'app mobile possa decrittare i bundle:

Finestra del terminale
# 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"

Passo 3: Sincronizza la piattaforma Capacitor (obbligatoria)

Area del passo 3: sincronizza la piattaforma Capacitor (obbligatoria)

Dopo aver salvato la chiave pubblica, tu devi sincronizzare la piattaforma Capacitor per copiare la configurazione aggiornata al layer nativo:

Finestra del terminale
# Sync the platform to copy config to native
npx cap sync

La via più semplice è crittografare durante il processo di upload:

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

Per avere più controllo, puoi crittografare manualmente i pacchetti:

  1. Crea un pacchetto zip:

    Finestra del terminale
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Crittografa il pacchetto:

    Finestra del terminale
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Carica sul tuo storage (ad esempio, S3) e registra con Capgo:

    Finestra del terminale
    # 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

Archiviazione delle chiavi in modo sicuro

Section titled “Storing Keys Securely”

Opzioni per la chiave privata:

  1. File-based (sviluppo locale):

    Finestra del terminale
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. Variabile di ambiente (CI/CD):

    Finestra del terminale
    # 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"

Configurazione della chiave pubblica (obbligatoria):

Finestra del terminale
# Must save public key to Capacitor config for mobile app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

Ambiente di produzione:

  • Conservare le chiavi private in servizi di gestione delle chiavi sicure (AWS KMS, Azure Key Vault, ecc.)
  • Utilizza la gestione dei segreti del CI/CD per le chiavi private
  • Non commettere mai le chiavi private nel controllo delle versioni

Uso della chiave:

  • Chiave privata: Utilizzata da CLI per l'encryption durante l'upload del pacchetto (mantenere sicuro)
  • Chiave pubblica: Salvato nella configurazione dell'applicazione per la decrittografia sul dispositivo (sicuro da commit)

Rimuovi la chiave privata quando si sospetta o si conferma compromesso. Non è richiesta una routine di rotazione del calendario. Si tratta di una migrazione di una chiave nativa, non di un cambiamento solo OTA.

  1. Genera un nuovo coppia di chiavi:

    Finestra del terminale
    npx @capgo/cli@latest key create
  2. Salva la chiave pubblica di sostituzione nel tuo Capacitor config:

    Finestra del terminale
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. Sincronizza e invia una versione nativa: Esegui npx cap syncSe distribuisci una nuova versione nativa contenente la chiave pubblica di sostituzione,

  4. Seleziona la nuova versione nativa: I dispositivi che ancora utilizzano il binario nativo vecchio non possono decrittare gli aggiornamenti crittografati con la chiave di sostituzione. Utilizza Targeta di Versione per limitare i pacchetti di sostituzione-chiave a versioni native nuove mentre il resto della flotta si aggiorna attraverso la store o MDM.

  5. Cambia il tuo segreto di caricamento: Appena quella versione nativa è live, sostituisci la chiave privata nel CI e carica solo pacchetti mirati alle versioni native che contengono la chiave pubblica di sostituzione.

  • Pratiche di Sicurezza tra ambienti o membri del team
  • Usa chiavi diverse per ambienti diversi (dev, staging, production)
  • Rotazione dopo una compromissione: sostituisci la coppia di chiavi quando il privato è sospettato o confermato compromesso; non è richiesta una rotazione calendario regolare
  • Memorizza le chiavi in modo sicuro utilizzare sistemi di gestione delle chiavi adeguati
  • Verifica sempre l'integrità del pacchetto dopo la decrittazione
  • Monitora per patterni di download insoliti o fallimenti
  • Usa HTTPS per tutte le URL dei bundle (richiesto per le app mobili)
  • Implementa gestione degli errori corretta per le fallite di decrittazione
  • Limita gli accessi ai chiave di crittografia solo a personale autorizzato
  • Usa l'accesso basato su ruoli per le operazioni di gestione delle chiavi
  • Audit utilizzo e accesso regolari delle chiavi
  • Implementa procedure di backup e ripristino corrette

Fallimenti di decrittografia:

  • Verifica che la chiave privata corrisponda alla chiave pubblica utilizzata per la crittografia
  • Assicurati che il ivSessionKey sia corretto
  • Assicurati di utilizzare la crittografia V2 (V1 non è più supportata)

Error di chiave:

  • Confermare che il formato della chiave privata è corretto (formato PEM)
  • Verifica che la chiave non sia stata corrotta durante lo storage/transfer
  • Controllare che la chiave abbia le autorizzazioni corrette nella configurazione dell'applicazione

Problemi di prestazioni:

  • Large bundles may take longer to encrypt/decrypt
  • Consider using Delta updates to reduce bundle sizes
  • Monitorare le prestazioni del dispositivo durante la decrittazione

Controllare lo stato di encryption:

Finestra del terminale
npx @capgo/cli@latest app debug

Flusso di test di crittografia/descrittografia:

Fermata dei comandi
# 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

L'implementazione di crittografia di Capgo segue gli standard dell'industria:

  • AES-256: Algoritmo di crittografia approvato da FIPS 140-2
  • RSA-4096: Crittografia asimmetrica forte per la protezione delle chiavi
  • Modalità GCM: Fornisce sia la riservatezza che l'autenticità
  • Casuali Random Sicuro: Generazione di numeri casuali criptograficamente sicuri

Ciò rende Capgo adatto per applicazioni che richiedono la conformità con:

  • GDPR (Regolamento generale sulla protezione dei dati)
  • HIPAA (Legge sulla Portabilità e Responsabilità dell'Assicurazione Sanitaria)
  • SOC 2 (Controllo Organizzativo del Servizio 2)
  • ISO 27001 (Gestione della sicurezza dell'informazione)
  • Bundle size: I pacchetti crittati sono leggermente più grandi (~1-2% di sovraccarico)
  • Tempo di elaborazioneLa crittografia/decrittografia aggiunge una latenza minima
  • Utilizzo della memoria: Aumento temporaneo durante le operazioni di crittografia/decrittografia
  • Usa gli aggiornamenti Delta per ridurre il trasferimento di dati crittografati
  • Ottimizza la dimensione del tuo pacchetto convertendo le immagini in formato WebP
  • Minimizza i file JavaScript e CSS prima di bundleggerli
  • Elimina le dipendenze non utilizzate e code
  • Monitorare le prestazioni del dispositivo su dispositivi più vecchi/lenti

Se stai utilizzando Criptazione per pianificare la sicurezza e la conformità, connettilo con Conformità per i dettagli di implementazione in Conformità, Capgo Centro di Sicurezza per il workflow del prodotto in Capgo Scanner di Sicurezza, Capgo Sicurezza per il flusso di lavoro del prodotto in Capgo Sicurezza, Capgo Centro di Trust per il workflow del prodotto nel Capgo Centro di Trust Sicurezza dell'organizzazione per i dettagli di implementazione in Sicurezza dell'organizzazione.