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 Sie die volle Kontrolle über die Sicherheit Ihrer App behalten, während die Lebendaktualisierung bequem bleibt.

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.

Was die Verschlüsselung tatsächlich schützt: Anders als OTA-Systeme, die nur Updates signieren, verschlüsselt Capgo das hochgeladene Bundle vor dem Speicher und der Lieferung. Dies schützt die Bundle-Inhalte 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 gibt nicht Machen Sie es unmöglich, webbasierte Assets zu rückzuübersetzen: Die öffentliche Schlüssel, die der Client zum Entschlüsseln von Updates verwendet, wird im App verteilt, sodass ein bestimmt Eindringling immer noch extrahieren und die Inhalte der Paketdatei mit genügend Anstrengung untersuchen kann.

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

Capgo-Verschlüsselungsablauf

  • Privatschlüssel: Erstellt und sicher gespeichert in Ihrem Entwicklungsumfeld (wird für die Verschlüsselung verwendet)
  • Öffentlicher Schlüssel: Aus Ihrem privaten Schlüssel abgeleitet und in Ihrer App-Capacitor-Konfiguration gespeichert (wird für die Entschlüsselung verwendet)
  • Sitzungschlüssel: Zufällige AES-Schlüssel werden für jede Upload-Paket generiert
  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. Der Paket-Checksumme wird berechnet
  4. Beide der AES-Sitzungschlüssel und die Checksumme werden gemeinsam mit Ihrem RSA-Privatschlüssel (die “Signatur” erstellend) verschlüsselt
  5. Das verschlüsselte Paket und die verschlüsselte Signatur werden gespeichert

Die Checksumme wird gemeinsam mit dem AES-Schlüssel verschlüsselt, um Manipulationen zu verhindern. Da nur Ihr RSA-Privatschlüssel diese Signatur erstellen kann und nur der entsprechende öffentliche Schlüssel sie entschlüsseln kann, wird sichergestellt, dass sowohl der AES-Sitzungschlüssel als auch die erwartete Checksumme authentisch sind und nicht von einem Angreifer manipuliert wurden.

  1. Ihre App lädt das verschlüsselte Bundle und die verschlüsselte Signatur herunter
  2. Der Capgo SDK verwendet Ihre RSA-Publikationschlüssel (gespeichert in der App) zum Entschlüsseln der Signatur
  3. Dies offenbart den AES-Sitzungsschlüssel und den ursprünglichen Prüfsummenwert
  4. Der AES-Sitzungsschlüssel wird zum Entschlüsseln des Bundles verwendet
  5. Eine 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 das verschlüsselte Bundle erfasst, er das AES-Sitzungsschlüssel nicht ändern oder eine fiktive Prüfsumme bereitstellen kann, da er Ihre private Schlüssel benötigen würde, um eine gültige Signatur zu erstellen, die der öffentliche Schlüssel entschlüsseln kann.

FunktionCapgoAndere OTA-Plattformen
Inhalt verpackenVerschlüsselt in Speicher/Übertragung; noch von einem bestimmten Reverse-Engineer mit dem App-Binary untersuchbarÖffentlich lesbar
SicherheitsmethodeWahre Ende-zu-Ende-VerschlüsselungCode-Signierung nur
DatenschutzbewertungStarker Lieferung/Speicher-Schutz; kein Anti-Reverse-EngineeringDie Plattform kann auf Ihr code zugreifen
SchutzInhalt, Integrität und AuthentizitätIntegrität und Authentizität nur

Weshalb das wichtig ist:

  • Code-Signierung überprüft nur, dass Updates nicht manipuliert wurden und vom richtigen Quellcode stammen
  • Capgo-Verschlüsselung schützt das Bundle während der Speicherung und -lieferung und macht gefälschte verschlüsselte Updates viel schwieriger, da der Angreifer Ihre private Schlüssel benötigen würde
  • Die Umkehrung der Reverse-Engineering ist immer noch möglich nachdem die App abgeschickt wurde, weil der Client den öffentlichen Schlüssel enthält, der zum Entschlüsseln und Laden des Updates benötigt wird

Capgo verwendet Verschlüsselung V2 als Standardverschlüsselungsmethode:

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

Abschnitt: Verschlüsselung einrichten

Schritt 1: Verschlüsselungsschlüssel generieren

First, generate your encryption keys using the Capgo CLI:

Zur Vorschau kopieren
# 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 in dem aktuellen Verzeichnis erstellt, in dem Sie den Befehl ausführen.

Schritt 2: Speichern Sie Ihren öffentlichen Schlüssel in der Capacitor-Konfiguration (Pflicht)

Überschrift ‘Schritt 2: Speichern Sie Ihren öffentlichen Schlüssel in der Capacitor-Konfiguration (Pflicht)’

Sie müssen Ihren öffentlichen Schlüssel in der Capacitor-Konfiguration speichern, damit Ihre mobile 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:

Terminalfenster
# 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. Eine 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 es in Ihr Speicher (z.B. S3) und registrieren Sie es mit Capgo:

    Terminal-Fenster
    # 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

Sichere Schlüssel speichern

Abschnitt: Sichere Schlüssel speichern

Privatschlüssel-Optionen:

  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:

  • Speichern Sie private Schlüssel in sicheren Schlüsselverwaltungsdiensten (AWS KMS, Azure Key Vault usw.)
  • Verwenden Sie CI/CD-Schlüsselmanagement für private Schlüssel
  • Komiten Sie private Schlüssel nie in die Versionskontrolle

Schlüsselverwendung:

  • Privater Schlüssel: Wird von CLI für die Verschlüsselung während der Upload des Bundles verwendet (halten Sie sicher)
  • Öffentlicher Schlüssel: In der Anwendungs-Konfiguration gespeichert für die Entschlüsselung auf dem Gerät (sicher zum Commiten)

Rotieren Sie Ihre Verschlüsselungsschlüssel regelmäßig für eine erhöhte Sicherheit:

  1. Neue Schlüssel generieren:

    Terminalfenster
    # Navigate to desired directory first, then create keys
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. Speichern Sie den neuen öffentlichen Schlüssel in der Capacitor-Konfiguration:

    Terminalfenster
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. Aktualisieren Sie die Anwendungs-Konfiguration mit dem neuen öffentlichen Schlüssel

  4. Die aktualisierte Anwendung hochladen Bevor Sie verschlüsselte Bundles mit dem neuen Schlüssel hochladen

  • Private Schlüssel nie mit anderen teilen zwischen Umgebungen oder Teammitgliedern
  • Verschiedene Schlüssel für verschiedene Umgebungen (Entwicklung, Staging, Produktion) verwenden
  • Schlüssel regelmäßig rotieren (empfohlen: alle 6-12 Monate)
  • Schlüssel sicher speichern mit geeigneten Sicherheits-Systemen für Schlüsselmanagement
  • Verifizieren Sie immer die Integrität des Bundles nach der Entschlüsselung
  • Überwachen für ungewöhnliche Downloadmuster oder Fehlschläge
  • Verwenden Sie HTTPS für alle Bundle-URLs (erforderlich für mobile Apps)
  • Implementieren eine ordnungsgemäße Fehlerbehandlung für Entschlüsselungsfehler
  • Beschränken Sie den Zugriff auf Verschlüsselungsschlüssel nur auf autorisierte Personen
  • Benutzen Sie rollenbasierte Zugriffssteuerung zur Verwaltung von Schlüsseloperationen
  • Audit Überprüfen Sie regelmäßig die Schlüsselverwendung und -zugriff
  • Implementieren Sie angemessene Sicherung und Wiederherstellungsverfahren

Verschlüsselungsfehler:

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

Schlüsselbeziehungsfehler:

  • 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 benötigen
  • Überlegen Sie, ob Sie Delta (Manifest)-Updates verwenden können, um die Paketgröße zu reduzieren
  • Überwachen Sie die Geräteleistung während der Entschlüsselung

Überprüfen Sie den Verschlüsselungsstatus:

Terminalfenster
npx @capgo/cli@latest app debug

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

Terminalfenster
# 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: genehmigte Verschlüsselungsalgorithmus nach FIPS 140-2
  • RSA-4096: Starke asymmetrische Verschlüsselung für die Schutz von Schlüsseln
  • GCM-Modus: Bietet sowohl Vertraulichkeit als auch Authentizität
  • Sichere Zufallszahlengenerator: Kryptografisch sichere Zufallszahlenerzeugung

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

  • DSGVO (Datenschutz-Grundverordnung)
  • HIPAA (Gesetz über die Portabilität von Gesundheitsversicherungen und die Verantwortlichkeit für die Gesundheitsversicherung)
  • SOC 2 (Service Organization Control 2)
  • ISO 27001 (Informationssicherheitsmanagement)
  • Bundle-Größe: Verschlüsselte Bundles sind leicht größer (~1-2% Überhead)
  • Verarbeitungszeit: Die Verschlüsselung/Entschlüsselung fügt minimalen Latenzfehler hinzu
  • Speicherverbrauch: Temporäre Erhöhung während Verschlüsselungs-/Entschlüsselungsoperationen
  • Verwende Delta (Manifest)-Updates, um den verschlüsselten Datentransfer zu minimieren
  • 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 von Geräten auf älteren/Schnelleren Geräten
  • Erhalten Sie Informationen Eigene Speicherung um Verschlüsselung mit Ihrer eigenen Infrastruktur zu verwenden
  • Erkunden Sie Kanäle um verschlüsselte Bundles über Umgebungen zu verwalten
  • Einrichten CI/CD-Integration um verschlüsselte Bereitstellungen zu automatisieren

Wenn Sie Verschlüsselung verwenden Verschlüsselung um Sicherheit und Compliance zu planen, verbinden Sie es mit Compliance für die Implementierungsdetails in 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.