Crittografia
Capgo fornisce una solida crittografia end-to-end per i bundle della tua app, garantendo che il tuo codice JavaScript e le risorse siano protette durante la trasmissione e lâarchiviazione. Questo sistema di crittografia è progettato per darti il controllo completo sulla sicurezza della tua app mantenendo la comoditĂ degli aggiornamenti live.
Panoramica
Section titled âPanoramicaâIl sistema di crittografia di Capgo utilizza metodi crittografici standard del settore per proteggere i tuoi bundle dallâaccesso non autorizzato. Quando la crittografia è abilitata, i tuoi bundle vengono crittografati prima di lasciare il tuo ambiente di sviluppo e rimangono crittografati fino a quando non vengono decrittografati dalla tua app sul dispositivo dellâutente.
Vera crittografia end-to-end: A differenza di altre piattaforme di aggiornamento OTA che si limitano a firmare gli aggiornamenti (lasciando il codice leggibile pubblicamente), Capgo fornisce vera crittografia end-to-end. Questo significa che solo i tuoi utenti possono decrittografare i tuoi aggiornamenti - nessun altro, incluso Capgo stesso. Il contenuto del tuo bundle rimane completamente privato e illeggibile durante lâintero processo di distribuzione.
Come funziona la crittografia
Section titled âCome funziona la crittografiaâCapgo utilizza un approccio di crittografia ibrida che combina la crittografia RSA e AES per sicurezza e prestazioni ottimali:

1. Generazione delle chiavi
Section titled â1. Generazione delle chiaviâ- Chiave privata: Generata e archiviata in modo sicuro nel tuo ambiente di sviluppo (utilizzata per la crittografia)
- Chiave pubblica: Derivata dalla tua chiave privata e archiviata nella configurazione Capacitor della tua app (utilizzata per la decrittografia)
- Chiavi di sessione: Chiavi AES casuali generate per ogni caricamento di bundle
2. Processo di crittografia
Section titled â2. Processo di crittografiaâ- Viene generata una chiave di sessione AES casuale per ogni caricamento di bundle
- Il tuo bundle viene crittografato utilizzando la chiave di sessione AES
- Viene calcolato il checksum del bundle
- Sia la chiave di sessione AES che il checksum vengono crittografati insieme utilizzando la tua chiave privata RSA (creando la âfirmaâ)
- Il bundle crittografato e la firma crittografata vengono archiviati
Il checksum viene crittografato insieme alla chiave AES per prevenire manomissioni. PoichÊ solo la tua chiave privata RSA può creare questa firma, e solo la corrispondente chiave pubblica può decrittografarla, questo garantisce che sia la chiave di sessione AES che il checksum previsto siano autentici e non siano stati modificati da un attaccante.
3. Processo di decrittografia
Section titled â3. Processo di decrittografiaâ- La tua app scarica il bundle crittografato e la firma crittografata
- LâSDK Capgo utilizza la tua chiave pubblica RSA (archiviata nellâapp) per decrittografare la firma
- Questo rivela la chiave di sessione AES e il checksum originale
- La chiave di sessione AES viene utilizzata per decrittografare il bundle
- Viene calcolato un checksum del bundle decrittografato e confrontato con il checksum originale per la verifica dellâintegritĂ
Questo processo garantisce che anche se un attaccante intercetta il bundle crittografato, non può modificare la chiave di sessione AES o fornire un checksum falso, perchÊ avrebbe bisogno della tua chiave privata per creare una firma valida che la chiave pubblica possa decrittografare.
Capgo vs altre piattaforme
Section titled âCapgo vs altre piattaformeâ| Caratteristica | Capgo | Altre piattaforme OTA |
|---|---|---|
| Contenuto del bundle | Completamente crittografato (illeggibile) | Leggibile pubblicamente |
| Metodo di sicurezza | Vera crittografia end-to-end | Solo firma del codice |
| Livello di privacy | Zero-knowledge (nemmeno Capgo può leggere il tuo codice) | La piattaforma può accedere al tuo codice |
| Protezione | Contenuto + integritĂ + autenticitĂ | Solo integritĂ + autenticitĂ |
PerchÊ è importante:
- La firma del codice verifica solo che gli aggiornamenti non siano stati manomessi e provengano dalla fonte corretta
- La crittografia end-to-end garantisce che il contenuto effettivo del tuo codice rimanga privato e illeggibile durante la trasmissione e lâarchiviazione
- Con la vera crittografia end-to-end di Capgo, solo i tuoi utenti possono decrittografare gli aggiornamenti - nessun altro, incluso Capgo stesso
Metodi di crittografia
Section titled âMetodi di crittografiaâCapgo utilizza Encryption V2 come metodo di crittografia standard:
Encryption V2 (standard attuale)
Section titled âEncryption V2 (standard attuale)â- Utilizza RSA-4096 per una sicurezza maggiore
- AES-256-GCM per la crittografia autenticata
- Fornisce verifica dellâintegritĂ
- Migliori prestazioni e sicurezza
Encryption V1 (deprecata)
Section titled âEncryption V1 (deprecata)â- Utilizza RSA-2048 per la crittografia della chiave
- AES-256-CBC per la crittografia del bundle
- Non piĂš disponibile nel CLI attuale
- Le app legacy che utilizzano V1 devono migrare a V2
Configurazione della crittografia
Section titled âConfigurazione della crittografiaâPassaggio 1: Generare le chiavi di crittografia
Section titled âPassaggio 1: Generare le chiavi di crittografiaâPrima, genera le tue chiavi di crittografia usando il CLI Capgo:
# Genera nuove chiavi di crittografia (crea file nella directory corrente)npx @capgo/cli@latest key createQuesto crea:
.capgo_key_v2: La tua chiave privata (mantienila sicura!).capgo_key_v2.pub: La tua chiave pubblica (utilizzata dalla tua app)
Questi file vengono creati nella directory corrente dove esegui il comando.
Passaggio 2: Salvare la chiave pubblica nella configurazione Capacitor (richiesto)
Section titled âPassaggio 2: Salvare la chiave pubblica nella configurazione Capacitor (richiesto)âDevi salvare la tua chiave pubblica nella configurazione Capacitor in modo che la tua app mobile possa decrittografare i bundle:
# Salva la chiave pubblica dal file alla configurazione Capacitor (richiesto)npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
# Oppure salva i dati della chiave pubblica direttamentenpx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"Passaggio 3: Sincronizzare la piattaforma Capacitor (richiesto)
Section titled âPassaggio 3: Sincronizzare la piattaforma Capacitor (richiesto)âDopo aver salvato la chiave pubblica, devi sincronizzare la piattaforma Capacitor per copiare la configurazione aggiornata al layer nativo:
# Sincronizza la piattaforma per copiare la config al nativonpx cap syncCrittografare i bundle
Section titled âCrittografare i bundleâMetodo 1: Crittografare durante il caricamento
Section titled âMetodo 1: Crittografare durante il caricamentoâIl modo piĂš semplice è crittografare durante il processo di caricamento:
# Carica con crittografia automaticanpx @capgo/cli@latest bundle upload --key-v2
# Per storage esterno, devi prima crittografare (vedi workflow di crittografia manuale sotto)Metodo 2: Workflow di crittografia manuale
Section titled âMetodo 2: Workflow di crittografia manualeâPer un maggiore controllo, puoi crittografare manualmente i bundle:
-
Creare un bundle zip:
Terminal window npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Crittografare il bundle:
Terminal window npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
Caricare sul tuo storage (es. S3) e registrare con Capgo:
Terminal window # Prima carica il bundle crittografato sul tuo storage (es. AWS S3)aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip# Poi registra con Capgo usando l'URL esternonpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
Gestione delle chiavi
Section titled âGestione delle chiaviâArchiviare le chiavi in modo sicuro
Section titled âArchiviare le chiavi in modo sicuroâOpzioni per la chiave privata:
-
File-based (sviluppo locale):
Terminal window # Chiave archiviata come file .capgo_key_v2 nella root del progettonpx @capgo/cli@latest bundle upload --key-v2 -
Variabile dâambiente (CI/CD):
Terminal window # Archivia nella variabile d'ambiente per CIexport CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"
Configurazione della chiave pubblica (richiesta):
# Deve salvare la chiave pubblica nella configurazione Capacitor per l'app mobilenpx @capgo/cli@latest key save --key ./.capgo_key_v2.pubAmbiente di produzione:
- Archivia le chiavi private in servizi di gestione chiavi sicuri (AWS KMS, Azure Key Vault, ecc.)
- Usa la gestione dei segreti CI/CD per le chiavi private
- Non committare mai le chiavi private nel controllo versione
Uso delle chiavi:
- Chiave privata: Utilizzata dal CLI per la crittografia durante il caricamento del bundle (mantienila sicura)
- Chiave pubblica: Archiviata nella configurazione dellâapp per la decrittografia sul dispositivo (sicuro da committare)
Rotazione delle chiavi
Section titled âRotazione delle chiaviâRuota regolarmente le tue chiavi di crittografia per una sicurezza maggiore:
-
Generare nuove chiavi:
Terminal window # Prima naviga nella directory desiderata, poi crea le chiavimkdir ./new-keys && cd ./new-keysnpx @capgo/cli@latest key create -
Salvare la nuova chiave pubblica nella configurazione Capacitor:
Terminal window npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub -
Aggiornare la configurazione della tua app con la nuova chiave pubblica
-
Distribuire lâapp aggiornata prima di caricare bundle crittografati con la nuova chiave
Best practice di sicurezza
Section titled âBest practice di sicurezzaâSicurezza delle chiavi
Section titled âSicurezza delle chiaviâ- Non condividere mai le chiavi private tra ambienti o membri del team
- Utilizzare chiavi diverse per ambienti diversi (dev, staging, produzione)
- Ruotare le chiavi regolarmente (consigliato: ogni 6-12 mesi)
- Archiviare le chiavi in modo sicuro utilizzando sistemi di gestione chiavi appropriati
Sicurezza del bundle
Section titled âSicurezza del bundleâ- Verificare sempre lâintegritĂ del bundle dopo la decrittografia
- Monitorare pattern di download o fallimenti insoliti
- Utilizzare HTTPS per tutti gli URL dei bundle (richiesto per app mobili)
- Implementare gestione appropriata degli errori per fallimenti di decrittografia
Controllo degli accessi
Section titled âControllo degli accessiâ- Limitare lâaccesso alle chiavi di crittografia solo al personale autorizzato
- Utilizzare accesso basato sui ruoli per le operazioni di gestione chiavi
- Verificare lâuso e lâaccesso alle chiavi regolarmente
- Implementare procedure appropriate di backup e ripristino
Risoluzione dei problemi di crittografia
Section titled âRisoluzione dei problemi di crittografiaâProblemi comuni
Section titled âProblemi comuniâFallimenti di decrittografia:
- Verifica che la chiave privata corrisponda alla chiave pubblica utilizzata per la crittografia
- Controlla che lâ
ivSessionKeysia corretto - Assicurati di utilizzare Encryption V2 (V1 non è piÚ supportata)
Errori relativi alle chiavi:
- Conferma che il formato della chiave privata sia corretto (formato PEM)
- Verifica che la chiave non sia stata corrotta durante lâarchiviazione/trasferimento
- Controlla che la chiave abbia le autorizzazioni appropriate nella configurazione della tua app
Problemi di prestazioni:
- Bundle grandi possono richiedere piĂš tempo per crittografare/decrittografare
- Considera lâutilizzo di aggiornamenti differenziali per ridurre le dimensioni del bundle
- Monitora le prestazioni del dispositivo durante la decrittografia
Comandi di debug
Section titled âComandi di debugâControlla lo stato della crittografia:
npx @capgo/cli@latest app debugTesta il workflow crittografia/decrittografia:
# Testa il workflow completo: 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_KEYConformitĂ e standard
Section titled âConformitĂ e standardâLâimplementazione della crittografia di Capgo segue gli standard del settore:
- AES-256: Algoritmo di crittografia approvato FIPS 140-2
- RSA-4096: Forte crittografia asimmetrica per la protezione delle chiavi
- GCM Mode: Fornisce sia riservatezza che autenticitĂ
- Secure Random: Generazione di numeri casuali crittograficamente sicura
Questo rende Capgo adatto per applicazioni che richiedono conformitĂ con:
- GDPR (Regolamento generale sulla protezione dei dati)
- HIPAA (Health Insurance Portability and Accountability Act)
- SOC 2 (Service Organization Control 2)
- ISO 27001 (Gestione della sicurezza delle informazioni)
Considerazioni sulle prestazioni
Section titled âConsiderazioni sulle prestazioniâOverhead della crittografia
Section titled âOverhead della crittografiaâ- Dimensione del bundle: I bundle crittografati sono leggermente piĂš grandi (~1-2% di overhead)
- Tempo di elaborazione: La crittografia/decrittografia aggiunge latenza minima
- Uso della memoria: Aumento temporaneo durante le operazioni di crittografia/decrittografia
Suggerimenti per lâottimizzazione
Section titled âSuggerimenti per lâottimizzazioneâ- Usa aggiornamenti differenziali per minimizzare il trasferimento di dati crittografati
- Ottimizza la dimensione del bundle convertendo le immagini in formato WebP
- Minimizza i file JavaScript e CSS prima del bundling
- Rimuovi dipendenze e codice non utilizzati
- Monitora le prestazioni del dispositivo su dispositivi piĂš vecchi/lenti
Prossimi passi
Section titled âProssimi passiâ- Scopri lo Storage personalizzato per utilizzare la crittografia con la tua infrastruttura
- Esplora i Canali per gestire bundle crittografati tra gli ambienti
- Configura lâIntegrazione CI/CD per automatizzare le distribuzioni crittografate