Zum Inhalt springen

Verschlüsselung

Capgo bietet eine robuste Ende-zu-Ende-Verschlüsselung für Ihre App-Bundles, die sicherstellt, dass Ihre JavaScript-code und -Assets während der Übertragung und Speicherung geschützt sind. Dieses Verschlüsselungssystem ist so konzipiert, dass Ihnen die volle Kontrolle über die Sicherheit Ihrer App erhalten bleibt, während die Vorteile von Live-Updates beibehalten werden.

Capgo's Verschlüsselungssystem verwendet branchenstandardisierte kryptographische Methoden, um Ihre Bundles vor unbefugtem Zugriff zu schützen. Wenn die Verschlüsselung aktiviert ist, werden Ihre Bundles vor dem Verlassen Ihres Entwicklungsumgebungen verschlüsselt und bleiben verschlüsselt, bis sie von Ihrer App auf dem Gerät des Benutzers entschlüsselt werden.

What Encryption Actually Protects: Im Gegensatz zu OTA-Systemen, die nur Updates signieren, Capgo verschlüsselt das hochgeladene Bundle vor dem Speichern und der Lieferung. Dies schützt die Inhalte des Bundles vor zufälligem Zugriff im Speicher oder im Transit und stellt sicher, dass nur jemand mit Ihrem privaten Schlüssel ein gültig verschlüsseltes Update erstellen kann. Es macht jedoch die im App verteiltete öffentliche Schlüssel, mit dem der Client Updates entschlüsseln kann, nicht unmöglich, ihn zu extrahieren und die Inhalte des Bundles zu untersuchen, wenn ein bestimmter Angreifer genug Anstrengung unternimmt. When You Need Encryption When You Need Encryption

Capgo verwendet eine hybride Verschlüsselungsanordnung, die RSA- und AES-Verschlüsselung kombiniert, um optimalen Schutz und Leistung zu erzielen:

Capgo-Verschlüsselungsablauf

  • Privater Schlüssel: Generiert und sicher im Entwicklungsumfeld gespeichert (für die Verschlüsselung verwendet)
  • Öffentlicher Schlüssel: Aus Ihrem privaten Schlüssel abgeleitet und im Capacitor-Konfiguration Ihres Apps gespeichert (für die Entschlüsselung verwendet)
  • Sitzungschlüssel: Zufällige AES-Schlüssel generiert für jede Upload-Paket
  1. Ein zufälliger AES-Sitzungschlüssel wird für jeden Upload-Paket generiert
  2. Ihr Paket wird mit dem AES-Sitzungschlüssel verschlüsselt
  3. The Bundle-Prüfsumme wird berechnet
  4. Beide, die AES-Sitzungsschlüssel und die Prüfsumme, werden mithilfe Ihres RSA-Privatschlüssels (wodurch der „Signature“ entsteht) verschlüsselt
  5. Der verschlüsselte Bundle und der verschlüsselte Signature werden gespeichert

Die Prüfsumme wird neben dem AES-Schlüssel verschlüsselt, um Manipulationen zu verhindern. Da nur Ihr RSA-Privatschlüssel diese Signature erstellen kann und nur der entsprechende öffentliche Schlüssel sie entschlüsseln kann, stellt dies sicher, dass sowohl der AES-Sitzungsschlüssel als auch die erwartete Prüfsumme authentisch sind und nicht von einem Angreifer manipuliert wurden.

  1. Ihr App lädt den verschlüsselten Bundle und den verschlüsselten Signature herunter
  2. Der Capgo SDK verwendet Ihren RSA-öffentlichen Schlüssel (gespeichert in der App) zur Entschlüsselung der Signature
  3. Dies offenbart den AES-Sitzungsschlüssel und die ursprüngliche Prüfsumme
  4. Der AES-Sitzungsschlüssel wird zum Entschlüsseln des Bundles verwendet
  5. Ein Prüfsumme des entschlüsselten Bundles wird berechnet und mit der ursprünglichen Prüfsumme für eine Integritätsprüfung verglichen

Dieser Prozess stellt sicher, dass selbst wenn ein Angreifer den verschlüsselten Bundle aufgreift, er den AES-Sitzungsschlüssel oder eine Falschprüfsumme nicht ändern kann, da er Ihren Privatschlüssel benötigen würde, um eine gültige Signature zu erstellen, die der öffentliche Schlüssel entschlüsseln kann.

FunktionCapgoAndere OTA-Plattformen
PaketinhaltIn der Speicherung/Übertragung verschlüsselt; kann jedoch noch von einem bestimmten Reverse-Engineer mit dem App-Binary eingesehen werdenÖffentlich lesbar
SicherheitsmethodeVollständige Ende-zu-Ende-VerschlüsselungCode-Signatur nur
PrivatsphäresebeneStarker Schutz bei der Lieferung/Speicherung; kein Anti-Reverse-EngineeringDie Plattform kann auf Ihr code zugreifen
SchutzInhalt + Integrität + AuthentizitätNur Integrität + Authentizität

Warum das wichtig ist:

  • Code-Signatur nur überprüft, ob Updates nicht manipuliert wurden und von der richtigen Quelle stammen
  • Capgo-Verschlüsselung schützt das Bundle während es gespeichert und geliefert wird und macht gefälschte verschlüsselte Updates viel schwieriger, weil der Angreifer Ihre private Schlüssel benötigen würde
  • Die Umkehrung der Entwicklung ist immer noch möglich nachdem die App abgeschickt wurde, weil der Client die öffentliche Schlüssel enthält, die zum Entschlüsseln und Laden des Updates benötigt werden

Capgo verwendet Verschlüsselung V2 als Standardverschlüsselungsmethode:

  • Verwendet RSA-4096 für eine erhöhte Sicherheit
  • AES-256-GCM für authentifizierte Verschlüsselung
  • Bietet eine Integritätsprüfung
  • Bessere Leistung und Sicherheit
  • Verwendet RSA-2048 für die Verschlüsselung von Schlüsseln
  • AES-256-CBC für die Verschlüsselung von Paketen
  • Nicht mehr verfügbar in der aktuellen CLI
  • Legacy-Anwendungen, die V1 verwenden müssen, migrieren zu V2

Erstens generieren Sie Ihre Verschlüsselungsschlüssel mithilfe der Capgo CLI:

Terminalfenster
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

Dies erstellt:

  • .capgo_key_v2: Ihre private Schlüssel (halten Sie dies sicher!)
  • .capgo_key_v2.pub: Ihre öffentliche Schlüssel (wird von Ihrer App verwendet)

Diese Dateien werden im aktuellen Verzeichnis erstellt, in dem Sie den Befehl ausführen.

Schritt 2: Speichern Sie Ihre öffentliche Schlüssel in Capacitor Konfiguration (Pflicht)

Abschnitt mit dem Titel „Schritt 2: Speichern Sie Ihre öffentliche Schlüssel in Capacitor Konfiguration (Pflicht)“

Sie müssen Ihre öffentliche Schlüssel in der Capacitor Konfiguration speichern, damit Ihre mobilen App die Pakete entschlüsseln kann:

Terminalfenster
# 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"

Schritt 3: Synchronisieren Sie die Capacitor Plattform (Pflicht)

Abschnitt mit dem Titel „Schritt 3: Synchronisieren Sie die Capacitor Plattform (Pflicht)“

Nachdem Sie die öffentliche Schlüssel gespeichert haben, müssen Sie die Capacitor Plattform synchronisieren, um die aktualisierte Konfiguration auf die native Ebene zu kopieren:

Terminalfenster
# Sync the platform to copy config to native
npx cap sync

Der einfachste Weg ist, während des Upload-Prozesses zu verschlüsseln:

Terminal-Fenster
# Upload with automatic encryption
npx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)

Für mehr Kontrolle können Sie die Bundles manuell verschlüsseln:

  1. Ein Zip-Bundle erstellen:

    Terminal-Fenster
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Das Bundle verschlüsseln:

    Terminal-Fenster
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. Hochladen Sie Ihre Datei in Ihr Speicher (z.B. S3) und registrieren Sie sich bei Capgo:

    Terminalfenster
    # 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

Optionen für den privaten Schlüssel:

  1. Dateibasiert (lokale Entwicklung):

    Terminalfenster
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. Umgebungsvariable (CI/CD):

    Terminalfenster
    # 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"

Öffentlicher Schlüssel-Setup (erforderlich):

Terminalfenster
# Must save public key to Capacitor config for mobile app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

Produktionsumgebung:

  • Sichere Schlüssel in sicheren Schlüsselverwaltungsdiensten (AWS KMS, Azure Key Vault usw.) speichern
  • Verwenden Sie CI/CD-Secret-Management für private Schlüssel
  • Nie private Schlüssel in der Versionskontrolle committen

Schlüsselverwendung:

  • Privater SchlüsselWird von CLI für die Verschlüsselung während des Bundle-Uploads verwendet (sicher aufbewahren)
  • Öffentlicher SchlüsselWird in der Anwendungs-Konfiguration für die Entschlüsselung auf dem Gerät gespeichert (sicher zum Commit)

Rotieren Sie das Schlüsselpaar, wenn der private Schlüssel verdächtig oder bestätigt als kompromittiert ist. Eine routinemäßige Kalenderrotation ist nicht erforderlich. Dies ist eine native-Schlüssel-Migration und keine nur-OTA-Änderung.

  1. Erstellen Sie ein Ersatzschlüsselpaar:

    Terminal-Fenster
    npx @capgo/cli@latest key create
  2. Speichern Sie das Ersatzschlüsselpaar in Ihrer Capacitor-Konfiguration:

    Terminal-Fenster
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. Synchronisiere und verteile eine native Version: Ausführen npx cap sync, dann verteile eine neue native App-Version mit der ersetzen öffentlichen Schlüssel.

  4. Ziel die neue native Version: Geräte, die noch die alte native Binärdatei ausführen, können Updates verschlüsselt mit dem ersetzen Schlüssel nicht entschlüsseln. Verwende Version Targeting um die ersetzen-Schlüssel-Bundles auf die neue native Version zu beschränken, während der Rest der Flotte über den Store oder MDM aktualisiert wird.

  5. Wechseln Sie Ihr Upload-Secret: Sobald diese native Version live ist, ersetzen Sie den privaten Schlüssel in CI und laden nur Bundles hoch, die auf native Versionen abzielen, die den ersetzen öffentlichen Schlüssel enthalten.

  • Teile niemals private Schlüssel zwischen Umgebungen oder Teammitgliedern
  • Verwende unterschiedliche Schlüssel für unterschiedliche Umgebungen (Entwicklung, Staging, Produktion)
  • Drehen nach einem Kompromiss: Ersetze das Schlüsselpaar, wenn der private Schlüssel verdächtig oder bestätigt als kompromittiert ist; eine regelmäßige Kalenderrotation ist nicht erforderlich
  • Speichere Schlüssel sicher mit geeigneten Systemen für die Schlüsselverwaltung
  • Stets überprüfen die Integrität des Bündels nach der Entschlüsselung
  • Überwachen unübliche Herunterladepattern oder Fehlschläge
  • Verwenden von HTTPS für alle Bündel-URLs (erforderlich für mobile Apps)
  • Implementieren eine ordnungsgemäße Fehlerbehandlung für Entschlüsselungsfehler
  • Zugriff auf Verschlüsselungsschlüssel beschränken auf autorisierte Personen nur
  • Verwenden Sie rollenbasierten Zugriff für die Verwaltung von Schlüsseloperationen
  • Audit den Schlüsselverwendung und Zugriff regelmäßig
  • Implementieren Sie eine ordnungsgemäße Sicherung und Wiederherstellungsverfahren

Verschlüsselungsfehler:

  • Überprüfen Sie, ob die private Schlüssel mit der öffentlichen Schlüssel verwendet wird, die für die Verschlüsselung verwendet wird
  • Überprüfen Sie, ob der ivSessionKey ist korrekt
  • Stellen Sie sicher, dass Sie Encryption V2 (V1 wird nicht mehr unterstützt) verwenden

Schlüsselbezogene Fehler:

  • Bestätigen Sie, dass die private Schlüsselformat korrekt ist (PEM-Format)
  • Überprüfen Sie, ob der Schlüssel während der Speicherung/Übertragung nicht beschädigt wurde
  • Überprüfen Sie, ob der Schlüssel in Ihrer Anwendungs-Konfiguration die richtigen Berechtigungen hat

Leistungsausfälle:

  • Große Pakete können länger zum Verschlüsseln/Entschlüsseln dauern
  • Überlegen Sie, ob Sie Delta (Manifest)-Updates verwenden können, um die Paketgröße zu reduzieren
  • Geräteneistung überwachen während der Entschlüsselung

Überprüfen Sie den Status der Verschlüsselung:

Terminal-Fenster
npx @capgo/cli@latest app debug

Testen Sie den Verschlüsselungs-/Entschlüsselungsworkflow:

Terminal-Fenster
# 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 Verschlüsselungsimplementierung folgt Branchenstandards:

  • AES-256: FIPS 140-2 zugelassener Verschlüsselungsalgorithmus
  • RSA-4096: Starker asymmetrischer Verschlüsselungsalgorithmus für die Schutz von Schlüsseln
  • GCM Mode: Bietet sowohl Vertraulichkeit als auch Authentizität
  • Secure Random: Kryptografisch sichere Zufallszahlengenerierung

Dies macht Capgo für Anwendungen geeignet, die die Einhaltung von:

  • DSGVO (Allgemeine Datenschutzverordnung)
  • HIPAA (Gesetz über die Gesundheitsversicherungsportabilität und -verantwortlichkeit)
  • SOC 2 (Service Organization Control 2)
  • ISO 27001 (Informationssicherheitsmanagement)

Verschlüsselungsüberhead

Abschnitt: Verschlüsselungsüberhead
  • Bundle-Größe: Verschlüsselte Bundle sind leicht größer (~1-2% Überhead)
  • : Verschlüsselung/Entschlüsselung fügt minimalen Latenzverlust hinzu: Kurzzeitige Erhöhung während Verschlüsselungs- und Entschlüsselungsoperationen
  • Optimierungshinweise__CAPGO_KEEP_0__
  • Verwenden Sie Delta-Updates (manifest) zur Minimierung des verschlüsselten Datenübertragung
  • Optimieren Sie die Größe Ihres Bundles, indem Sie Bilder im WebP-Format umwandeln
  • Minimieren Sie JavaScript- und CSS-Dateien, bevor Sie sie bündeln
  • Entfernen Sie nicht benötigte Abhängigkeiten und code
  • Überwachen Sie die Leistung Ihres Geräts auf älteren/Schnellereinheiten
  • Erfahren Sie mehr über Zur Anwendung von Custom Storage um Verschlüsselung mit Ihrer eigenen Infrastruktur zu verwenden
  • Erkunden Sie Kanäle um verschlüsselte Pakete über Umgebungen zu verwalten
  • Einrichten CI/CD-Integration um verschlüsselte Bereitstellungen zu automatisieren

Verschlüsselung um Sicherheit und Compliance zu planen, verbinden Sie es mit Compliance für die Implementierungsdetails in Compliance, Compliance Capgo Sicherheits-Scanner für den Produktworkflow in Capgo Sicherheits-Scanner Capgo Sicherheit für den Produktworkflow in Capgo Sicherheit Capgo Vertrauenszentrum für den Produktworkflow in Capgo Vertrauenszentrum, und Organisationssicherheit für die Implementierungsdetails in Organisationssicherheit.