Saltare al contenuto

Crittografia

Capgo garantisce una crittografia robusta end-to-end per i pacchetti del tuo'applicazione, assicurando che il tuo JavaScript code e le tue risorse siano protetti durante la trasmissione e lo storage. Questo sistema di crittografia è progettato per darti il controllo completo sulla sicurezza del tuo'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 da accessi non autorizzati. Quando abilitata la crittografia, i pacchetti sono 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. Non rende i beni web spediti impossibili da reverse ingegnerizzare: la chiave pubblica utilizzata dal client per decrittografare gli aggiornamenti è distribuita nell'applicazione, quindi un attaccante determinato può ancora estrarla e ispezionare i contenuti del pacchetto con sufficiente sforzo. Quando Hai Bisogno della Crittografia Quando Hai Bisogno della Crittografia

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

Flusso di Crittografia di Capgo

  • Chiave Privata: Generata e memorizzata in modo sicuro nel tuo ambiente di sviluppo (utilizzata per la crittografia)
  • Chiave Pubblica: Derivata dalla tua chiave privata e memorizzata nella configurazione del tuo app Capacitor (utilizzata per la decrittografia)
  • Chiavi di Sessione: Chiavi AES casuali generate per ogni caricamento di bundle
  1. Una chiave di sessione AES casuale viene generata per ogni caricamento di bundle
  2. Il tuo bundle viene crittografato utilizzando la chiave di sessione AES
  3. Si calcola il checksum del bundle
  4. Entrambe la chiave di sessione AES e il checksum vengono crittografate insieme utilizzando la tua chiave privata RSA (creando la “firma”)
  5. L'insieme crittografato del bundle e della firma crittografata vengono archiviati

Si crittografa 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ò decriptarla, ciò garantisce che sia la chiave di sessione AES che il checksum previsto siano autentici e non siano stati modificati da un attaccante.

  1. La tua app scarica il bundle crittografato e la firma crittografata
  2. L'Capgo SDK utilizza la tua chiave pubblica RSA (archiviata nell'app) per decriptare la firma
  3. Questa rivela la chiave di sessione AES e il checksum originale
  4. The 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 di sessione 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 determinato ingegnere di reverse engineering con il binario dell'applicazionePubblicamente leggibile
Metodo di SicurezzaVerifica crittografica end-to-endCode firma solo
Livello di PrivacyProtezione forte di consegna/archiviazione; non antiricorsioneLa piattaforma può accedere al tuo code
ProtezioneContenuto + integrità + autenticitàIntegrità + autenticità solo

Perché Questo Importa:

  • Code firma verifica solo che gli aggiornamenti non siano stati alterati e provengano dalla fonte giusta
  • Capgo crittografia proteggono il bundle durante il suo archiviazione e consegna e rendono molto più difficile la creazione di aggiornamenti criptati falsificati perché l'attaccante avrebbe bisogno della tua chiave privata
  • L'ingegneria inversa è ancora possibile dopo che l'app è stata distribuita, 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
  • AES-256-GCM per crittografia autenticata
  • Fornisce la verifica dell'integrità
  • Miglior prestazioni e sicurezza
  • Utilizza RSA-2048 per crittografia delle chiavi
  • AES-256-CBC per crittografia dei bundle
  • Non più disponibile nella versione corrente CLI
  • Gli app legacy che utilizzano V1 devono migrare a V2

Innanzitutto, genera le tue chiavi di crittografia utilizzando il Capgo CLI:

Fermata dei comandi
# 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.pub: La tua chiave pubblica (utilizzata dal tuo app)

Attenzione, i file sono stati creati nella directory corrente dove si esegue il comando.

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

Sottosezione intitolata “Passo 2: Salva la tua chiave pubblica nel Capacitor Config (Obbligatorio)”

Tu devi salvare la tua chiave pubblica nel Capacitor config affinché l'app mobile possa decrittare i pacchetti:

Fermata dei comandi
# 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 Capacitor Piattaforma (Obbligatorio)

Sottosezione intitolata “Passo 3: Sincronizza la Capacitor Piattaforma (Obbligatorio)”

Dopo aver salvato la chiave pubblica, dovrai deve sync il piattaforma Capacitor per copiare la configurazione aggiornata al layer nativo:

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

Il modo più semplice è criptare 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 manualmente criptare 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 bundle:

    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

Opzioni per la chiave privata:

  1. File-based (local development):

    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 (Richiesta):

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:

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

Utilizzo della chiave:

  • Chiave privata: Utilizzata da CLI per la crittografia durante l'upload del pacchetto (tenere al sicuro)
  • Chiave pubblica: Archiviata nella configurazione dell'applicazione per la decrittografia sul dispositivo (sicuro da commettere)

Rotare regolarmente le tue chiavi di crittografia per una maggiore sicurezza:

  1. Genera nuove chiavi:

    Finestra del terminale
    # Navigate to desired directory first, then create keys
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. Salva la nuova chiave pubblica nel Capacitor config:

    Finestra del terminale
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. Aggiorna la configurazione dell'applicazione con la nuova chiave pubblica

  4. Distribuisci l'applicazione aggiornata prima di caricare i bundle crittografati con la nuova chiave

  • Non condividere mai le chiavi private tra ambienti o membri del team
  • Usa chiavi diverse per ambienti diversi (dev, staging, produzione)
  • Rimuovi regolarmente le chiavi (consigliato: ogni 6-12 mesi)
  • Memorizza le chiavi in modo sicuro utilizzando sistemi di gestione delle chiavi appropriati
  • Verifica sempre l'integrità del pacchetto dopo la decrittografia
  • 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 appropriata per le fallite di decrittazione
  • Limita l'accesso ai chiavi di crittografia solo a personale autorizzato
  • Usa l'accesso basato su ruoli per le operazioni di gestione delle chiavi
  • Verifica accesso e gestione regolare delle chiavi
  • Implementa procedimenti di backup e ripristino adeguati

Fallimenti di decrittazione:

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

Errori relativi alle chiavi:

  • Conferma che il formato della chiave privata è corretto (formato PEM)
  • Verifica che la chiave non sia stata corrotta durante lo storage/trasferimento
  • Controlla che la chiave abbia le autorizzazioni corrette nella configurazione dell'app

Issue di prestazioni:

  • I pacchetti grandi possono richiedere più tempo per l'encrypt/decrypt
  • Considera l'uso delle aggiornamenti Delta (manifesto) per ridurre le dimensioni dei pacchetti
  • Monitora le prestazioni del dispositivo durante la decrittazione

Controlla lo stato di crittografia:

F finestra del terminale
npx @capgo/cli@latest app debug

Testa il flusso di cifratura/decifratura:

Finestra del terminale
# 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’s implementazione di cifratura segue gli standard dell'industria:

  • AES-256: Algoritmo di cifratura asintotico approvato da FIPS 140-2
  • RSA-4096: Cifratura asimmetrica forte per la protezione delle chiavi
  • Modo GCM: Fornisce sia la riservatezza che l'autenticità
  • Secure Random: Generazione di numeri casuali criptograficamente sicuri

This makes Capgo suitable for applications requiring compliance with:

  • GDPR (Regolamento generale sulla protezione dei dati)
  • HIPAA (Legge sulla portabilità e sulla responsabilità assicurativa per la salute)
  • SOC 2 (Controllo di servizio organizzativo 2)
  • ISO 27001 (Gestione della sicurezza delle informazioni)
  • Dimensione pacchetto: I pacchetti crittati sono leggermente più grandi (~1-2% di sovraccarico)
  • Tempo di elaborazione: L'aggiunta di crittografia/decriptazione comporta una latenza minima
  • Utilizzo della memoria: Aumento temporaneo durante le operazioni di crittografia/decriptazione
  • Utilizza aggiornamenti Delta (manifesto) per minimizzare il trasferimento di dati crittati
  • Ottimizza la dimensione del tuo pacchetto convertendo le immagini in formato WebP
  • Minimizza i file JavaScript e CSS prima di compilarli
  • Elimina le dipendenze non utilizzate e code
  • Monitorare le prestazioni del dispositivo su dispositivi più vecchi/lenti

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