Chiffrement
Capgo propose un chiffrement de bout en bout pour vos bundles OTA. Vos assets et votre code JavaScript restent protégés pendant l’upload, le transit et l’installation.
Aperçu
Section titled “Aperçu”Le système utilise des primitives cryptographiques standard pour protéger le bundle pendant le stockage et la distribution, garantir l’intégrité des fichiers et garantir l’authenticité des mises à jour.
Ce que le chiffrement protège réellement : contrairement à une simple signature de bundle, Capgo chiffre le bundle envoyé avant le stockage et la distribution. Cela protège le contenu contre un accès opportuniste pendant le transit ou dans le stockage et garantit que seule une personne disposant de votre clé privée peut produire une mise à jour chiffrée valide. Cela ne rend pas les assets web distribués impossibles à analyser par rétro-ingénierie : la clé publique utilisée par le client pour déchiffrer les mises à jour est embarquée dans l’application, donc un attaquant motivé peut encore l’extraire et inspecter le contenu du bundle.
Comment fonctionne le chiffrement
Section titled “Comment fonctionne le chiffrement”Capgo utilise une approche hybride RSA + AES.

1. Génération des clés
Section titled “1. Génération des clés”- Clé privée: utilisée par la CLI au moment de l’upload chiffré
- Clé publique: enregistrée dans la configuration de l’application
- Clé de session AES: générée pour chaque upload
2. Chiffrement
Section titled “2. Chiffrement”- Génération d’une clé de session AES
- Chiffrement du bundle avec AES
- Calcul du checksum du bundle chiffré/déchiffré selon le flux
- Chiffrement RSA des métadonnées de vérification (clé de session + checksum)
- Stockage du bundle chiffré + signature/métadonnées
3. Déchiffrement côté app
Section titled “3. Déchiffrement côté app”- L’app télécharge bundle + métadonnées
- Le SDK lit la clé publique embarquée
- Le SDK récupère les informations nécessaires au déchiffrement
- Le bundle est déchiffré localement
- Le checksum est vérifié
Capgo vs plateformes OTA classiques
Section titled “Capgo vs plateformes OTA classiques”| Fonctionnalité | Capgo | Plateformes OTA classiques |
|---|---|---|
| Contenu bundle | Chiffré en stockage et en transit, mais encore inspectable par rétro-ingénierie avec le binaire | Souvent lisible en clair |
| Garantie | Contenu + intégrité + authenticité | Intégrité + authenticité |
| Confidentialité code | Protection forte en distribution et stockage, pas anti-rétro-ingénierie | Limitée |
Versions de chiffrement
Section titled “Versions de chiffrement”Chiffrement V2 (standard)
Section titled “Chiffrement V2 (standard)”- RSA-4096
- AES-256-GCM
- vérification d’intégrité
- meilleur niveau de sécurité
Chiffrement V1 (obsolète)
Section titled “Chiffrement V1 (obsolète)”- non supporté par la CLI actuelle
- migration requise vers V2
Mise en place
Section titled “Mise en place”Étape 1: générer les clés
Section titled “Étape 1: générer les clés”# Generate new encryption keys (creates files in current directory)npx @capgo/cli@latest key createFichiers générés :
.capgo_key_v2(privée, ne jamais commit).capgo_key_v2.pub(publique)
Étape 2: enregistrer la clé publique (obligatoire)
Section titled “Étape 2: enregistrer la clé publique (obligatoire)”# 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"Étape 3: synchroniser les plateformes natives
Section titled “Étape 3: synchroniser les plateformes natives”npx cap syncChiffrer les bundles
Section titled “Chiffrer les bundles”Méthode 1: chiffrement direct à l’upload
Section titled “Méthode 1: chiffrement direct à l’upload”# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2Méthode 2: workflow manuel
Section titled “Méthode 2: workflow manuel”-
Créer le zip:
Terminal window npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
Chiffrer:
Terminal window npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
Uploader sur votre stockage puis enregistrer l’URL:
Terminal window aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zipnpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
Gestion des clés
Section titled “Gestion des clés”Stockage recommandé
Section titled “Stockage recommandé”- local dev: fichier temporaire
- CI/CD: variable secrète ou manager de secrets
- production: KMS / Vault / Key Vault
Exemple CI/CD:
export CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"Rotation des clés
Section titled “Rotation des clés”-
Générer de nouvelles clés:
Terminal window mkdir ./new-keys && cd ./new-keysnpx @capgo/cli@latest key create -
Enregistrer la nouvelle clé publique:
Terminal window npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub -
Publier une version native embarquant la nouvelle clé publique.
-
Basculer les futurs uploads sur la nouvelle clé privée.
Bonnes pratiques de sécurité
Section titled “Bonnes pratiques de sécurité”- une clé privée par environnement (dev/staging/prod)
- rotation périodique
- audit des accès aux secrets
- HTTPS obligatoire pour les URLs de bundles externes
- supervision des erreurs de déchiffrement
Dépannage
Section titled “Dépannage”Problèmes fréquents:
- clé privée / clé publique non correspondantes
ivSessionKeyinvalide- oubli de
key saveou decap sync - tentative d’utilisation V1
Commandes utiles:
npx @capgo/cli@latest app debug# Test workflownpx @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é
Section titled “Conformité”Le schéma cryptographique est compatible avec des exigences de sécurité enterprise:
- AES-256
- RSA-4096
- mode GCM
- génération aléatoire sécurisée
Références fréquentes:
- GDPR
- HIPAA
- SOC 2 (Service Organization Control 2)
- ISO 27001
Impact performance
Section titled “Impact performance”- léger surcoût de taille bundle
- léger surcoût CPU au chiffrement/déchiffrement
- bénéfice significatif si combiné aux mises à jour différentielles
Étapes suivantes
Section titled “Étapes suivantes”- Découvrir Custom Storage pour l’hébergement externe
- Gérer les Canaux pour piloter les déploiements
- Mettre en place la CI/CD Integration pour automatiser les releases