Crittografia
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Capgo fornisce una robusta crittografia end-to-end per i pacchetti dell'applicazione, garantendo che il suo JavaScript code e gli asset siano protetti durante la trasmissione e lo storage. Questo sistema di crittografia è progettato per fornirle il controllo completo sulla sicurezza dell'applicazione mentre mantiene la comodità degli aggiornamenti in tempo reale.
Panoramica
Sezione intitolata “Panoramica”Il sistema di crittografia di Capgo utilizza metodi crittografici di standard industriale per proteggere i pacchetti da accessi non autorizzati. Quando abilitata la crittografia, 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 Protegge Effettivamente la Crittografia: A differenza dei sistemi OTA che firmano solo gli aggiornamenti, Capgo crittografa il bundle caricato prima della memorizzazione e della consegna. Ciò protegge i contenuti del bundle da accessi casuali in memoria o in transito e assicura che solo qualcuno con la tua chiave privata possa produrre un aggiornamento crittografato valido. Non rende gli asset web spediti impossibili da reverse engineering: la chiave pubblica utilizzata dal client per decrittografare gli aggiornamenti è distribuita nell'app, quindi un attaccante determinato può ancora estrarla e esaminare i contenuti del bundle con sufficiente sforzo. Quando Hai Bisogno di Crittografia Quando Hai Bisogno di Crittografia
Come Funziona la Crittografia
Sottosezione intitolata “Come Funziona la Crittografia”Capgo utilizza un approccio di crittografia ibrida che combina la crittografia RSA e AES per una sicurezza e prestazioni ottimali:

1. Generazione della chiave
Sezione intitolata “1. Generazione della chiave”- Chiave Privata: Generata e archiviata in modo sicuro nel tuo ambiente di sviluppo (utilizzata per l'encryption)
- Chiave Pubblica: Derived from your private key and stored in your app’s Capacitor config (used for decryption)
- Chiavi di Sessione: Chiavi AES casuali generate per ogni caricamento di bundle
2. Processo di Encryption
Sezione intitolata “2. Processo di Encryption”- Viene generata una chiave AES di sessione casuale per ogni caricamento di bundle
- Il tuo bundle viene encryptato utilizzando la chiave AES di sessione
- The checksum del bundle è calcolato
- Entrambi la chiave di sessione AES e il checksum sono crittografati insieme utilizzando la tua chiave privata RSA (creando la “firma”)
- Il bundle crittografato e la firma crittografata sono memorizzati
Il checksum è crittografato 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.
3. Processo di Decrittazione
Sottosezione intitolata “3. Processo di Decrittazione”- La tua app scarica il bundle crittografato e la firma crittografata
- Il Capgo SDK utilizza la tua chiave pubblica RSA (memorizzata nell'app) per decriptare la firma
- Questa rivela la chiave di sessione AES e il checksum originale
- La chiave di sessione AES viene utilizzata per decriptare il bundle
- Si calcola un checksum del bundle decriptato e si confronta 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é dovrebbe avere la tua chiave privata per creare una firma valida che la chiave pubblica può decriptare.
Capgo vs Altre Piattaforme
Sezione intitolata “Capgo vs Altre Piattaforme”| Caratteristica | Capgo | Altre Piattaforme OTA |
|---|---|---|
| Contenuto del Pacchetto | Crittografato in archiviazione/trasporto; ancora esaminabile da un determinato ingegnere di reverse engineering con il binario dell'applicazione | Leggibile pubblicamente |
| Metodo di Sicurezza | Crittografia end-to-end completa | Code firma solo |
| Livello di protezione | Protezione di consegna/archiviazione forte; non antiriciclaggio | La piattaforma può accedere al tuo code |
| Protezione | Contenuto + integrità + autenticità | Integrità + autenticità solo |
Perché è importante:
- Code firma verifica solo che gli aggiornamenti non siano stati alterati e provengano dalla fonte giusta
- Capgo crittografia proteggere il bundle mentre è in archivio e viene consegnato e rende molto più difficile per l'attaccante creare aggiornamenti criptati falsificati perché l'attaccante avrebbe bisogno della tua chiave privata
- La reverse engineering è ancora possibile dopo che l'app è stata distribuita, perché il client contiene la chiave pubblica necessaria per decrittare e caricare l'aggiornamento
Metodi di crittografia
Sottosezione intitolata “Metodi di crittografia”Capgo utilizza la crittografia V2 come metodo di crittografia standard:
Crittografia V2 (Metodo di crittografia corrente)
Sottosezione intitolata “Crittografia V2 (Metodo di crittografia corrente)”- Utilizza RSA-4096 per una maggiore sicurezza
- Utilizza AES-256-GCM per la crittografia autenticata
- Verifica l'integrità
- Miglior prestazioni e sicurezza
Crittografia V1 (Deprecated)
Sezione intitolata “Crittografia V1 (Deprecated)”- Utilizza RSA-2048 per la crittografia delle chiavi
- AES-256-CBC per la crittografia dei pacchetti
- Non più disponibile nella versione corrente CLI
- Gli app legacy che utilizzano V1 devono migrare a V2
Configurazione della crittografia
Sezione intitolata “Impostazione della crittografia”Passo 1: Genera le chiavi di crittografia
Sezione intitolata “Passo 1: Genera le chiavi di crittografia”Innanzitutto, genera le tue chiavi di crittografia utilizzando il Capgo CLI:
# Generate new encryption keys (creates files in current directory)npx @capgo/cli@latest key createQuesto crea:
.capgo_key_v2: La tua chiave privata (tienila sicura!).capgo_key_v2.pub: La tua chiave pubblica (utilizzata dal tuo app)
Il file è creato nella directory corrente in cui esegui il comando.
Passo 2: Salva la tua chiave pubblica nel Capacitor Config (obbligatorio)
Sezione 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 decrittografare i pacchetti:
# 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"Passo 3: Sincronizza il Capacitor Platform (obbligatorio)
Sezione intitolata “Passo 3: Sincronizza il Capacitor Platform (obbligatorio)”Dopo aver salvato la chiave pubblica, devi sincronizzare il __CAPGO_KEEP_0__ platform per copiare la configurazione aggiornata al layer nativo: Dopo aver salvato la chiave pubblica, devi sincronizzare il Capacitor platform per copiare la configurazione aggiornata al layer nativo:
# Sync the platform to copy config to nativenpx cap syncCrittografia dei bundle
Sezione intitolata “Crittografia dei bundle”Metodo 1: Crittografia durante l'upload
Sezione intitolata “Metodo 1: Criptare durante l'upload”Il modo più semplice è criptare durante il processo di upload:
# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)Metodo 2: Flusso di lavoro di crittografia manuale
Sezione intitolata “Metodo 2: Flusso di lavoro di crittografia manuale”Per avere più controllo, puoi manualmente criptare i pacchetti:
-
Crea un pacchetto zip:
Finestra del terminale npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Crittografa il pacchetto:
Finestra del terminale npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
Carica nel 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 URLnpx @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
Sezione intitolata “Gestione delle chiavi”Stoccare le chiavi in modo sicuro
Sezione intitolata “Stoccare le chiavi in modo sicuro”Opzioni per la chiave privata:
-
File-based (sviluppo locale):
Finestra del terminale # Key stored as .capgo_key_v2 file in project rootnpx @capgo/cli@latest bundle upload --key-v2 -
Variabile di ambiente (CI/CD):
Finestra del terminale # 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"
Impostazione della chiave pubblica (Richiesta):
# Must save public key to Capacitor config for mobile appnpx @capgo/cli@latest key save --key ./.capgo_key_v2.pubAmbiente di produzione:
- Mantieni 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
Utilizzo della chiave:
- Chiave privata: Utilizzato da CLI per la crittografia durante l'upload del pacchetto (mantenere sicuro)
- Chiave Pubblica: Memorizzato nella configurazione dell'applicazione per la decrittografia sul dispositivo (sicuro da commit)
Rotazione della Chiave
Sezione intitolata “Rotazione della Chiave”Rotare regolarmente le tue chiavi di crittografia per una maggiore sicurezza:
-
Genera nuove chiavi:
Finestra del terminale # Navigate to desired directory first, then create keysmkdir ./new-keys && cd ./new-keysnpx @capgo/cli@latest key create -
Salva la nuova chiave pubblica nella configurazione di Capacitor:
Finestra del terminale npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub -
Aggiorna la configurazione dell'applicazione con la nuova chiave pubblica
-
Distribuisci l'applicazione aggiornata prima di caricare i pacchetti crittografati con la nuova chiave
Pratiche di Sicurezza
Sezione intitolata “Pratiche di Sicurezza”Sicurezza della Chiave
Sezione intitolata “Sicurezza della Chiave”- Non condividere mai le chiavi private tra ambienti o membri del team
- Usa chiavi diverse per ambienti diversi (dev, staging, production)
- Rimuovi le chiavi regolarmente (consigliato: ogni 6-12 mesi)
- Mantieni le chiavi in modo sicuro utilizzando sistemi di gestione delle chiavi adeguati
Sicurezza del Pacchetto
Sezione intitolata “Sicurezza del Pacchetto”- Verifica sempre l'integrità del pacchetto dopo la decrittografia
- Monitora per i pattern di download insoliti o fallimenti
- Utilizza HTTPS per tutte le URL dei pacchetti (obbligatorio per le app mobili)
- Eseguire il trattamento degli errori per le fallite di decrittazione Sezione intitolata “Controllo degli accessi”
Limitare l'accesso
agli chiavi di crittografia solo ai personale autorizzato- Utilizzare il controllo degli accessi basato sui ruoli per le operazioni di gestione delle chiavi
- Monitorare regolarmente l'uso e l'accesso alle chiavi Eseguire le procedure di backup e ripristino corrette
- Implementare procedure di backup e ripristino corrette
- Implementare procedure di backup e ripristino corrette
Risoluzione Problemi di Crittografia
Sezione intitolata “Risoluzione Problemi di Crittografia”Problemi Comuni
Sezione intitolata “Problemi Comuni”Fallimenti di Decrittazione:
- Verifica che la chiave privata corrisponda alla chiave pubblica utilizzata per la crittografia
- Controlla che il
ivSessionKeyè corretto - Assicurati di utilizzare la Crittografia V2 (V1 non è più supportata)
Errori legati alle chiavi:
- Conferma che il formato della chiave privata è corretto (formato PEM)
- Verifica che la chiave non sia stata corrotta durante lo storage/trasferimento
- Verifica che la chiave abbia le autorizzazioni corrette nella configurazione dell'app
Problemi di prestazioni:
- I pacchetti grandi possono richiedere più tempo per l'encrypt/decrypt
- Considera l'utilizzo delle aggiornamenti Delta (manifesto) per ridurre le dimensioni dei pacchetti
- Monitorare le prestazioni del dispositivo durante la decrittografia
Comandi di debug
Sezione intitolata “Comandi di debug”Verifica lo stato di crittografia:
npx @capgo/cli@latest app debugTesta il flusso di crittografia/decrittografia:
# 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_KEYConformità e Standard
Sezione intitolata “Conformità e Standard”Capgo implementa l'implementazione di crittografia in conformità con gli standard dell'industria:
- AES-256: Algoritmo di crittografia asimmetrico approvato da FIPS 140-2
- RSA-4096: Crittografia asimmetrica forte per la protezione delle chiavi
- Modalità GCM: Fornisce sia la riservatezza che l'autenticità
- Generazione di numeri casuali sicuri: Generazione di numeri casuali crittograficamente sicuri
Ciò rende Capgo adatto per le applicazioni che richiedono la conformità a:
- 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)
Considerazioni di prestazioni
Sezione intitolata “Considerazioni di prestazioni”Onere di crittografia
Sezione intitolata “Onere di crittografia”- Dimensione del pacchettoI pacchetti crittografati sono leggermente più grandi (~1-2% di onere)
- Tempo di elaborazione: La crittografia/decrittografia aggiunge una latenza minima
- Utilizzo della memoria: Aumento temporaneo durante le operazioni di crittografia/decrittografia
Suggerimenti di ottimizzazione
Sezione intitolata “Suggerimenti di ottimizzazione”- Utilizza gli aggiornamenti Delta (manifesto) per minimizzare il trasferimento di dati crittografati
- Optimizza il tuo bundle di dimensioni convertendo le immagini in formato WebP
- Minimizza i file JavaScript e CSS prima di compilarli
- Elimina le dipendenze non utilizzate e code
- Monitora le prestazioni del dispositivo su dispositivi più vecchi/lenti
Passaggi successivi
Sezione intitolata “Passaggi successivi”- Scopri di più Storage personalizzato __CAPGO_KEEP_0__
- Esplora Canali __CAPGO_KEEP_0__
- Configura Integrazione CI/CD __CAPGO_KEEP_0__