Capacitor-updater unterstützt jetzt End-to-End-code-Verschlüsselung. Code Signing stellt sicher, dass die Updates, die auf den Geräten der Endnutzer laufen, nicht manipuliert wurden, und bietet eine zusätzliche Schutzebene über die Standard-Web-Sicherheit von Capacitor-updater hinaus.
Die Standard-Sicherheit von Capacitor-updater
Standardmäßig ähnelt das Sicherheitsmodell von Capgo dem von Web-Hosting-Anbietern. Capgo speichert Updates verschlüsselt gespeichert und stellt sie über HTTPS mit modernen Chiffren bereit. Ebenso läuft das Veröffentlichen eines Updates vom Rechner eines Entwicklers immer über HTTPS.

Die Standard-Sicherheit von Capgo erhält ein A+ im HTTPS-Test von SSL Labs (https://www.ssllabs.com, November 2022)
Wie erstklassige Web-Hosts nutzt Capgo HTTPS, um die Privatsphäre und Integrität der Netzwerkverbindungen zwischen dem Server und den Geräten der Endnutzer zu schützen. Das ist ein hervorragendes Sicherheitsniveau, das sowohl im Web als auch in Ionic-Apps mit Capgo gut funktioniert.
Die Cloud-Infrastruktur-Supply-Chain
Ein weiterer Punkt, den Capgo und die meisten Web-Hosts gemeinsam haben, ist, dass sie auf niedrigerer Cloud-Infrastruktur laufen, oft von AWS, GCP oder einem anderen beliebten Cloud-Anbieter. Die von diesen Cloud-Anbietern und Capgo oder anderen Web-Hosts betriebenen Hardware- und Softwarekomponenten sind Teil der Cloud-Supply-Chain.
Die Cloud-Supply-Chain und ihr Sicherheitsmodell funktionieren für eine Vielzahl von Websites und Apps. Jeder Web-Entwickler, der einen Cloud-Anbieter nutzt, vertraut diesem Anbieter und erwartet, dass die hochgeladenen Dateien genau die sind, die ausgeführt oder ausgeliefert werden, ohne manipuliert zu sein. Und Cloud-Anbieter arbeiten hart daran, ihre Infrastruktur sicher zu halten.
Aber natürlich werden Hardware- und Software-Schwachstellen entdeckt. Cloud-Anbieter patchen Schwachstellen nach zeitnahen Zeitplänen, verhindern bösartige Software proaktiv (z. B. Googles SLSA) und bauen Schichten der Defense in Depth auf. In der Praxis hat sich gezeigt, dass die Cloud-Infrastruktur die Sicherheitsanforderungen der meisten Websites und Apps erfüllt. Allerdings schließen einige Ionic-Apps kompromittierte Cloud-Infrastruktur in ihre Threat-Models ein. Für diese Capacitor JS-Apps mit den höchsten Sicherheitsanforderungen über dem Web hinaus haben wir End-to-End-code-Signierung in Capgo und das Capgo Updates Standardprotokoll.
End-to-End-code-Signierung mit Capgo
Die End-to-End-code-Signierung von Capgo verwendet Public-Key-Kryptographie, um sicherzustellen, dass die Geräte der Endnutzer nur unveränderte, originale Updates vom Capacitor-App-Entwickler ausführen.
„End-to-end“ bedeutet, dass diese Sicherheit den gesamten Ablauf abdeckt – vom Moment, in dem eine:r Entwickler:in ein Update veröffentlicht, bis zum Zeitpunkt, an dem das Gerät des Endnutzers das Update empfängt und ausführt. „Code signing“ nutzt Kryptografie und einen geheimen privaten Schlüssel, um code zu „signieren“, und verifiziert die Signatur später mit einem vertrauenswürdigen öffentlichen Schlüssel.
Hier ist ein einfaches* Schema, das erklärt, wie es funktioniert:

- In der Praxis komplex, Kryptografie ist schwierig
Definition:
- AES: Advanced Encryption Standard, ein symmetrisches Verschlüsselungsverfahren, ein Schlüssel für Verschlüsselung und Entschlüsselung.
- RSA: Rivest–Shamir–Adleman, ein asymmetrisches Verschlüsselungsverfahren, zwei Schlüssel werden verwendet: ein öffentlicher Schlüssel und ein privater Schlüssel.
- Cypher: Die verschlüsselten Daten.
- Session-Key: Ein AES-Key zum Verschlüsseln und Entschlüsseln von Daten.
- Checksumme: Ein Hash, der für eine Datei berechnet wird
- Signatur: Eine Checksumme, die mit einem privaten RSA-Key verschlüsselt wurde. Sie kann mit einem öffentlichen RSA-Key verifiziert werden
Wir verwenden den AES-Algorithmus, um das Update zu verschlüsseln. Für jeden Upload wird ein zufälliger AES-Key generiert; anschließend werden der AES-Key und die Checksumme (im Folgenden „Signatur“) mit dem privaten RSA-Key des Entwicklers verschlüsselt. In der App wird der öffentliche RSA-Key des Entwicklers verwendet, um den AES-Key und die Signatur zu entschlüsseln (wobei die Signatur wieder in eine Checksumme umgewandelt wird). Anschließend wird der entschlüsselte AES-Key genutzt, um das Update zu entschlüsseln; eine Checksumme des entschlüsselten Updates wird berechnet und mit der entschlüsselten Signatur verglichen.
Wir verwenden zwei verschiedene Verschlüsselungsalgorithmen, da sich RSA nicht zum Verschlüsseln großer Datenmengen eignet. AES verschlüsselt das Update, während RSA den AES-Key und die Checksumme verschlüsselt.
Damit kann selbst Capgo den Inhalt deines Bundles nicht lesen. Dies ist ein robustes Sicherheitsmodell, das bereits von vielen Enterprise-Kunden genutzt wird.
Update-Verschlüsselung V2 2024-08-27:
- Wir haben den in der App gespeicherten Schlüsseltyp geändert. Das geschah, um zu verhindern, dass vom privaten Key (früher zum Entschlüsseln genutzt) auf den öffentlichen Key (früher zum Verschlüsseln genutzt) geschlossen werden kann. Jetzt speichert die App den öffentlichen Key (nun zur Entschlüsselung genutzt).
- Wir haben die Checksumme vom CRC32- auf den SHA256-Algorithmus umgestellt. Außerdem haben wir begonnen, das Bundle zu signieren. Wenn Encryption V2 konfiguriert ist, muss ein Update eine gültige Signatur besitzen. Das Plugin erzwingt dies strikt.
- Wir erzwingen nun eine gültige Signatur, wenn Encryption V2 konfiguriert ist. Diese drei Änderungen wurden nach einer Sicherheitsanalyse durch ein Community-Mitglied vorgenommen. Sie dienen dazu, kryptografische Angriffe während des Updates zu verhindern.
Wenn Sie Encryption V1 verwendet haben, migrieren Sie zu V2, um von den neuen Sicherheitsfunktionen zu profitieren. Folgen Sie den Migrationsanweisungen.
Mit End-to-End-code-Signierung wird Capgo zu einer „trustless“ Cloud-Infrastruktur. Sollte einer der Cloud-Anbieter von Capgo oder sogar Capgo selbst ein code-signiertes Update manipulieren, würden die Geräte der Endnutzer dieses Update ablehnen und das bereits auf dem Gerät vorhandene, vertrauenswürdige Update ausführen.
Während HTTPS auf Web-Ebene für viele Apps ausreicht, schätzen einige große Unternehmen das zusätzliche Sicherheitsniveau durch End-to-End-code-Signierung. Einige dieser Unternehmen entwickeln Finanz-Apps, die hochwertige, dauerhafte Transaktionen ausführen. Andere haben CISOs, die kompromittierte Cloud-Infrastruktur in ihre Threat-Models einbeziehen. Wir haben End-to-End-code-Signierung in Capgo integriert, um genau diese Use Cases abzudecken, und freuen uns über Feedback von Unternehmen mit höheren Sicherheitsanforderungen.
Erste Schritte für Enterprise-Kunden
Für große Unternehmen oder Projekte, die großen Wert auf Sicherheit legen, möchten wir die code-Signierung einfach in der Einrichtung und Wartung gestalten. Dafür stellen wir nun folgende Funktionen bereit:
- Schnelle Zertifikatseinstellung und -konfiguration
- Unterstützung für code-Signing auf Entwicklungsservern mit Capgo und Development-Builds
- Produktions-code-Signierung bei jedem Update
Capgo code-Signierung ist für alle Kunden verfügbar. Um zu starten, befolgen Sie die Einrichtungsanweisungen.
Danksagungen
Vielen Dank an Ionic, dieser Artikel basiert auf diesem Artikel mit ChatGPT-3 neu geschrieben und angepasst.
Weiter geht's: E2E-Verschlüsselung für Capacitor Updater via Code Signing
Wenn du es nutzt E2E-Verschlüsselung für den Capacitor Updater via Code Signing um Sicherheit und Compliance zu planen, verbinden Sie es mit Verschlüsselung für die Implementierungsdetails in Encryption, Compliance für das Implementierungsdetail in Compliance, Capgo Security-Scanner für den Produkt-Workflow im Capgo Security Scanner, Capgo Sicherheit für den Produkt-Workflow in Capgo Security und Capgo Trust Center für den Produkt-Workflow im Capgo Trust Center.