Passer au contenu

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.

Le système utilise des primitives cryptographiques standard pour garantir :

  • la confidentialité du contenu
  • l’intégrité des fichiers
  • l’authenticité des mises à jour

Différence clé : contrairement à une simple signature de bundle, le contenu lui-même est chiffré. Même Capgo ne peut pas lire votre code en clair.

Capgo utilise une approche hybride RSA + AES.

Capgo Encryption Flow

  • 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
  1. Génération d’une clé de session AES
  2. Chiffrement du bundle avec AES
  3. Calcul du checksum du bundle chiffré/déchiffré selon le flux
  4. Chiffrement RSA des métadonnées de vérification (clé de session + checksum)
  5. Stockage du bundle chiffré + signature/métadonnées
  1. L’app télécharge bundle + métadonnées
  2. Le SDK lit la clé publique embarquée
  3. Le SDK récupère les informations nécessaires au déchiffrement
  4. Le bundle est déchiffré localement
  5. Le checksum est vérifié
FonctionnalitéCapgoPlateformes OTA classiques
Contenu bundleChiffré de bout en boutSouvent lisible en clair
GarantieConfidentialité + intégrité + authenticitéIntégrité + authenticité
Confidentialité codeÉlevéeLimitée
  • RSA-4096
  • AES-256-GCM
  • vérification d’intégrité
  • meilleur niveau de sécurité
  • non supporté par la CLI actuelle
  • migration requise vers V2
Terminal window
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

Fichiers 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)”
Terminal window
# 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"

Étape 3: synchroniser les plateformes natives

Section titled “Étape 3: synchroniser les plateformes natives”
Terminal window
npx cap sync

Méthode 1: chiffrement direct à l’upload

Section titled “Méthode 1: chiffrement direct à l’upload”
Terminal window
# Upload with automatic encryption
npx @capgo/cli@latest bundle upload --key-v2
  1. Créer le zip:

    Terminal window
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Chiffrer:

    Terminal window
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Uploader sur votre stockage puis enregistrer l’URL:

    Terminal window
    aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip
    npx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
  • local dev: fichier temporaire
  • CI/CD: variable secrète ou manager de secrets
  • production: KMS / Vault / Key Vault

Exemple CI/CD:

Terminal window
export CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"
npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"
  1. Générer de nouvelles clés:

    Terminal window
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. Enregistrer la nouvelle clé publique:

    Terminal window
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. Publier une version native embarquant la nouvelle clé publique.

  4. Basculer les futurs uploads sur la nouvelle clé privée.

  • 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

Problèmes fréquents:

  • clé privée / clé publique non correspondantes
  • ivSessionKey invalide
  • oubli de key save ou de cap sync
  • tentative d’utilisation V1

Commandes utiles:

Terminal window
npx @capgo/cli@latest app debug
Terminal window
# Test workflow
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

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
  • 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