Zum Sicherheitsmodell von Software-Wallets | Hauptbuch

Zum Sicherheitsmodell von Software-Wallets | Hauptbuch

Quellknoten: 2671485

Wir können zwei vorherrschende Arten von Wallets unterscheiden: Software- und Hardware-Wallets. Sie erfüllen die gleiche Funktion, jedoch auf unterschiedliche Weise. Software-Wallets gelten als einfacher zu verwenden: Ein einziges Programm reicht aus, um Transaktionen zu erstellen, zu validieren und zu signieren. Bei einem Software-Wallet ist es nicht notwendig, die Transaktion auf der Software zu erstellen und auf einem Hardwaregerät zu bestätigen.

Vor zwei Wochen, Verbotene Geschichten enthüllte einen gezielten Angriff gegen Tausende von Menschen auf der ganzen Welt. Bei diesem Angriff wurden Schwachstellen auf Android und iOS ausgenutzt, um die von der NSO Group entwickelte Spyware Pegasus zu installieren. Diese Malware ist in der Lage, die gesamte Aktivität des Geräts zu überwachen und persönliche Informationen auszuschleusen: SMS, WhatsApp- und Signal-Gespräche, Telefonanrufe usw. In diesem Artikel wird erläutert, wie eine solche Malware unter diesen Bedingungen in der Lage wäre, alle Informationen zu extrahieren Geheimnisse einer Software-Wallet und die Unterschiede aus Sicherheitssicht zwischen Software-Wallets auf Mobiltelefonen und Desktop-Computern.

Dieser Artikel soll nicht sehr technisch sein. Um es relativ einfach zu halten, werden nur grundlegende Funktionen besprochen.

Geheimnisse schützen

Was wird in einer Krypto-Wallet gespeichert?

Wallets speichern nicht wirklich die Kryptowährungen der Benutzer: Sie speichern nur die Geheimnisse, insbesondere die privaten Schlüssel, die den Zugriff auf die Kryptowährungen und die Möglichkeit, sie auszugeben, ermöglichen. Bei diesen privaten Schlüsseln handelt es sich meist um private ECC-Schlüssel (Elliptic Curve Cryptography) auf unterschiedlichen Kurven je nach Blockchain. Die häufigsten Kurven sind secp256k1 (Bitcoin, Ethereum…), Ed25519 (Monero) oder BLS12-381 (Ethereum 2).

Diese Schlüssel werden zum Signieren von Transaktionen und allgemeiner zur Interaktion mit Blockchain-Assets verwendet.

Die Speicherung dieser Schlüssel hängt von der Art der Wallet ab: deterministisch oder nicht. Eine hierarchisch-deterministische (HD) Wallet ermöglicht die Erstellung eines Schlüsselbaums aus einem einzigen Hauptgeheimnis, dem sogenannten Seed (vgl BIP44). Dieser Seed wird häufig aus einer mnemonischen Folge von 12, 18 oder 24 Wörtern abgeleitet, die zufällig generiert oder vom Benutzer ausgewählt werden (vgl.BIP39). Diese Mnemoniken ermöglichen es, die Anzahl der zu speichernden Schlüssel zu begrenzen: Sie können jederzeit aus dem Seed neu berechnet werden. HD-Wallets speichern nur diese Mnemonik oder den Seed.

Nicht deterministische Wallets generieren für jede Verwendung einen neuen Schlüssel und müssen alle speichern. Nicht deterministische Wallets können nicht einfach auf ein anderes Wallet migriert werden, da Backups nicht kompatibel sind.

Die wichtigsten Sicherheitsmerkmale einer Wallet bestehen darin, diese Geheimnisse ordnungsgemäß zu generieren, zu speichern und zu nutzen. Es gibt verschiedene Sicherheitsstufen gegen verschiedene Arten von Bedrohungen:

  • Schutz vor „bösen Dienstmädchen“-Angriffen: Ein Angreifer mit vorübergehendem Zugriff auf das Wallet darf nicht in der Lage sein, eine Hintertür in das Wallet einzubauen, die es ihm ermöglicht, die PIN oder das Passwort zu stehlen, um Geheimnisse zu schützen.
  • Sicheres kryptografisches Material: Von der Wallet generierte Schlüssel und Nonce dürfen niemals vorhersehbar sein. Darüber hinaus darf das Wissen über Geheimnisse (mit Ausnahme des Samens), die zu einem bestimmten Zeitpunkt erzeugt wurden, keine Vorhersage darüber ermöglichen, welches Geheimnis in der Zukunft erzeugt wird.
  • Schutz im Ruhezustand: Wenn ein Angreifer an persistente Daten einer Software-Wallet gelangt, darf er nicht in der Lage sein, die Schlüssel zu extrahieren.
  • Schutz bei heimlicher Nutzung: Wenn das Wallet entsperrt ist, dürfen die Schlüssel weder einem Angreifer noch einer Schadsoftware zugänglich sein.
Hardware-Geldbörsen

Das Sicherheitsmodell einer Hardware-Wallet zielt darauf ab, diese Sicherheitsbedrohungen zu vermeiden. Hardware-Wallets schützen von Natur aus vor Malware. Es handelt sich um unabhängige Geräte, die Transaktionen selbstständig signieren. Die kryptografischen Materialien verbleiben immer im Gerät und werden niemals an die Softwareanwendung gesendet, mit der sie kommunizieren. Die Kommunikationsschnittstelle ist stets einfach, was die Angriffsfläche drastisch reduziert. Es kann USB, Micro SD oder Kamera + Bildschirm (über QR-Code) oder Bluetooth Low Energy sein.

Darüber hinaus integrieren Hardware-Wallets einen Bildschirm direkt in das Gerät, sodass der Benutzer die Aktionen überprüfen kann, die er ausführen wird, wenn er mit seinen geheimen Schlüsseln interagiert. Diese manuellen Überprüfungen auf Geräten sind eine sehr effiziente Gegenmaßnahme gegen Malware auf dem Computer/Mobilgerät. Während Malware auf einem Computer/Mobilgerät auf die Geheimnisse (Seed oder private Schlüssel) zugreifen oder sogar Adressen oder Beträge austauschen/ändern könnte, wenn der Benutzer eine Transaktion durchführt, ist dies mit einer Hardware-Wallet nicht möglich.

Hardware-Wallets sollen auch vor „Evil Maid“-Angriffen und vor einem Angreifer mit physischem Zugriff schützen. Je nach Hardware-Wallet verfügen sie über unterschiedliche Sicherheitsstufen, sind aber in jedem Fall darauf ausgelegt, vor diesen Bedrohungen zu schützen. Eine detaillierte Beschreibung der Bedrohungsmodelle von Ledger Nano finden Sie hier hier.

Software Geldbörsen

Reguläre Software-Wallets schützen Geheimnisse mit herkömmlichen Mitteln: Sicherheitsmechanismen des Betriebssystems, auf dem sie laufen, und manchmal eine Zugriffskontrolle auf Basis einer PIN oder eines Passworts.

Im Folgenden werden Desktop-Wallets (Windows, macOS, Linux) und mobile Wallets betrachtet. Die Hauptunterschiede zwischen ihnen beruhen hauptsächlich auf den Sicherheitsmechanismen, die das Betriebssystem bietet.

Software-Wallets auf einem Computer

Mehrere beliebte Wallets wie Electrum, Exodus, Atomic oder Bitcoin Core laufen auf Computern.

Auf einem Computer sind die vom Betriebssystem angebotenen Sicherheitsmechanismen zur Isolierung eines Wallet-Prozesses von anderen Prozessen begrenzt. Die meisten Apps werden von demselben Benutzer ausgeführt und Apps dürfen die Daten anderer Anwendungen lesen.

Die Sicherheit dieser Software-Wallets hängt hauptsächlich von der Sicherheit des Passworts ab, das sie schützt, und auch von der Tatsache, dass auf dem Betriebssystem keine Malware läuft (was ziemlich schwer zu garantieren ist, siehe aktuelle Nachrichten zu Pegasus).

Meistens wird der Seed in einem verschlüsselten Container gespeichert, der durch ein Passwort geschützt ist. Ein einfacher Angriff besteht für eine Malware oder ein Remoteverwaltungstool darin, diesen verschlüsselten Container abzurufen und an den Angreifer zu senden. Dann kann das Passwort entweder brutal erzwungen oder durch die Verwendung eines erhalten werden Keylogger.

In einem Szenario, in dem es einem Angreifer nur gelingt, auf den verschlüsselten Container zuzugreifen (der Angreifer findet einen USB-Stick mit einer Wallet oder installiert Malware auf einem Computer, aber das Opfer öffnet seine Wallet-Anwendung nie), muss der Angreifer das Passwort brutal erzwingen.

Die meisten Passwörter sind Badewanne . Es gibt Milliarden von Passwörtern, die im Internet durchgesickert sind, und viele Menschen neigen dazu, ihre Passwörter für mehrere Dienste wiederzuverwenden. Mit vorgefertigten Tools können Sie Passwörter für Kryptowährungs-Wallets abrufen, z btcrecover or hashcat. Passwörter können komplex sein, aber hinter jeder Wallet steckt echtes Geld, sodass Angreifer nicht zögern, Ressourcen zu investieren, um solche Passwörter zu knacken.

Zwei grundlegende Sicherheitsprinzipien zum Schutz Ihrer Passwörter bestehen darin, einen Passwort-Manager zu verwenden und Ihr Passwort niemals für andere Zwecke wiederzuverwenden.

Die besorgniserregendste Bedrohung für Software-Wallets sind dedizierte Malware und Stealer, die speziell entwickelt wurden, um Ihr Geld abzuschöpfen. Solche Malware, wie KPOT oder ElektroRAT, müssen nicht einmal Ihr Passwort brutal erzwingen: Sie können es direkt erfassen, wenn Sie es eingeben, die Wallet-Konfigurationsdaten entschlüsseln und den Seed herausfiltern.

Hier ist eine Spielzeuganwendung, die für diesen Artikel entwickelt wurde und auf die Electrum-Wallet abzielt (obwohl es sich auch um eine andere Software-Wallet handeln könnte). Es simuliert eine Schadsoftware, die das Benutzerpasswort stiehlt, wenn es vom Opfer eingegeben wird. Das Passwort wird dann verwendet, um die Wallet-Daten zu entschlüsseln und den Seed anzuzeigen:

Wie Sie sehen, ist die App in der Lage, das Passwort selbst dann abzurufen, wenn es komplex ist, da sie es direkt im Speicher ausspioniert.

Dieses Beispiel ist dem jüngsten sehr ähnlich .SCR-Malware Kampagnen zum Diebstahl von Kryptowährungen. Kriminelle nutzten Social-Engineering-Techniken, um Benutzer dazu zu verleiten, einen bösartigen Bildschirmschoner herunterzuladen. Dieser Bildschirmschoner hat tatsächlich Informationen vom Opfer des Computers gestohlen, darunter Informationen zu Geldbörsen und Kryptowährungsbörsen.

Abschließend zu Software-Wallets, die auf Computern laufen:

  • In den meisten Fällen schützen Software-Wallets, die auf Computern laufen, den Seed des Benutzers durch ein Passwort.
  • Die Zugriffskontrolle für diese Wallet-Dateien hängt hauptsächlich von der Sicherheit des Computers ab. In der Praxis ist es schwierig, Computer vor Malware zu schützen, und da Kryptowährungen zum Mainstream werden, werden Angriffe auf Wallets immer ausgefeilter.
  • Der Einsatz solcher Software-Wallets zur Sicherung digitaler Vermögenswerte ist keine gute Idee. Jede spezielle Malware kann offline an die Wallet-Dateien gelangen und die Passwörter finden oder das Passwort über einen Keylogger abrufen.
Software-Wallets auf einem Smartphone

Android- und iOS-Smartphones bieten standardmäßig Sicherheitsfunktionen, die auf Desktop-Betriebssystemen nicht häufig verwendet werden.

Mobile Betriebssysteme bieten App- und Benutzerdatenschutz. Insbesondere sind App-Sandboxen für alle Apps verpflichtend. Dies ist beispielsweise unter Windows nicht der Fall: Standardmäßig kann jede Anwendung auf Benutzerdaten zugreifen.

Daher kann eine bösartige App keine Daten von einer anderen App lesen, es sei denn:

  • Es wird eine Schwachstelle in dieser App gefunden.
  • Oder es gelingt ihm, die Berechtigungen auszuweiten, indem es beispielsweise eine Kernel-Schwachstelle ausnutzt, die es ihm ermöglicht, Root-Zugriff auf das System zu erhalten.

Leider gibt es solche Angriffe. Sie sind auf veralteten Versionen von Android und iOS sowie auf älteren oder billigen Geräten, auf denen Code von Drittanbietern oft weniger sicher ist, viel einfacher.

Auf einem aktuellen Betriebssystem sind diese Angriffe schwieriger, aber nicht annähernd undurchführbar. Ian Beer zeigte zum Beispiel ein äußerst beeindruckender Zero-Click-Angriff auf iOS 13.5 im Dezember 2020. Guang Gong präsentierte eine Exploit-Kette im Juni 2020 eine Vielzahl von Qualcomm-basierten Android-Geräten aus der Ferne zu rooten. Und vor zwei Wochen Verbotene Geschichten enthüllte, dass die NSO Group eine Exploit-Kette verwendet hat, um aktuelle iOS- und Android-Geräte mithilfe von 0-Day-Schwachstellen anzugreifen.

Weniger raffinierte Angreifer können lokale Schwachstellen ausnutzen, um Wallet-Daten aus einer bösartigen Anwendung zu extrahieren. Schwachstellenmakler wie Zerodium zahlen bis zu $ ​​200,000 für eine Rechteausweitung zum Rooten auf Android und iOS, aber bis zu 1,500,000 US-Dollar für Remote-Angriffe.

Wir haben ein paar Android/iOS-Wallets untersucht. Ihre Sicherheit hängt von der App selbst, aber auch von den Sicherheitsfunktionen des zugrunde liegenden Betriebssystems ab. Wenn die Sicherheit des Betriebssystems beeinträchtigt ist, ist die Anwendung natürlich nicht mehr sicher

Üblicherweise werden zwei Methoden zum Schutz des Saatguts angewendet:

  • Passwortschutz – Die Wallet-Daten werden durch ein vom Benutzer eingegebenes Passwort geschützt. Das Design ist das gleiche wie bei Desktop-Wallets. In der Praxis ist es schwieriger, Daten zu extrahieren als von einem Computer, da das Abrufen von App-Daten aus einer bösartigen App aus den oben erläuterten Gründen technisch schwieriger ist. Allerdings ist es in der Praxis einfacher, das Passwort wiederzuerlangen, nachdem die Daten gestohlen wurden: Die Eingabe komplexer Passwörter auf Mobiltelefonen ist mühsam, weshalb Benutzer eher einfachere Passwörter wählen. Darüber hinaus sind Schlüsselableitungsmechanismen (die zum Erstellen eines Schlüssels aus einem Passwort verwendet werden) auf Mobilgeräten in der Regel einfacher zu knacken, da sie aus Leistungsgründen oft einfacher sind.
  • Coinomi und Metamask sind Beispiele für solche Wallets.

Im folgenden Video zeigen wir eine weitere Spielzeug-App, die für diesen Artikel entwickelt wurde. Es handelt sich um eine Malware, die als gefälschtes Bitcoin-Ticker-Widget getarnt ist. Malware nutzt eine bekannte Schwachstelle auf einem nicht gepatchten Gerät aus, um Root-Zugriff auf das Gerät zu erhalten und den verschlüsselten Seed an einen Remote-Server zu exfiltrieren. Der Server erzwingt dann brutal das Passwort, um den Seed zu entschlüsseln.

Diese Methode ist nicht spezifisch für eine Wallet. Es kann (mehr oder weniger) einfach an jede passwortgeschützte Wallet angepasst werden. Hier ist das gleiche Beispiel mit Coinbase Wallet:

[Eingebetteten Inhalt]

  • Sicherheit basierend auf dem Android Keystore (oder iOS-Schlüsselbund) – In diesem Fall werden die Wallet-Daten mit einem im Android Keystore (iOS-Schlüsselbund) gespeicherten Verschlüsselungsschlüssel verschlüsselt. Diese Dienste wurden ursprünglich für die sichere Speicherung von Verschlüsselungsschlüsseln entwickelt und viele Apps verwenden sie, um einen Schlüssel zu generieren, der alle sensiblen Benutzerdaten verschlüsselt. Anwendungen, die den Keystore verwenden, implementieren den folgenden Mechanismus:
    • Die App fordert den Keystore auf, einen Verschlüsselungsschlüssel für eine bestimmte Kennung zu generieren. Keystore generiert den Schlüssel und speichert ihn sicher.
    • Wenn die App ein Blob verschlüsseln oder entschlüsseln möchte, sendet sie das Blob zusammen mit der Schlüsselkennung an den Keystore.
    • Abschließend prüft der Keystore, ob die App tatsächlich über die Rechte zur Nutzung dieses Schlüssels verfügt und sendet daraufhin Ausgabedaten an die App zurück.

Bei diesem Modell kann die App den Wert des Schlüssels nicht kennen, ihn aber verwenden. Es ist auch möglich, dem Schlüssel zusätzliche Zugriffskontrollen zuzuordnen: Beispielsweise kann der Schlüsselzugriff an eine Benutzerauthentifizierung gebunden werden (Anforderung einer PIN oder eines Entsperrmusters).

Dieser Mechanismus kann im Vergleich zum passwortbasierten Schutz zusätzliche Sicherheit bieten. Tatsächlich wird der Keystore bei neueren Telefonen durch eine Trusted Execution Environment (TEE) oder manchmal ein Secure Element unterstützt.

Das bedeutet, dass ein Angreifer mit Root-Rechten keine Verschlüsselungsschlüssel aus dem Keystore extrahieren kann. Dennoch können sie den Keystore als Entschlüsselungsorakel nutzen und beliebige Daten verschlüsseln oder entschlüsseln.

Keystore bietet Verschlüsselungs-, aber auch Signierungsdienste an. Könnte eine Wallet also ihre Verschlüsselungsschlüssel schützen und es so erschweren, sie zu extrahieren? Die Antwort ist leider nein: Software-Wallets verwenden Keystore nicht zum Signieren von Transaktionen und Private Schlüssel werden von der App immer im Klartext manipuliert.

Dies hat einen einfachen Grund: KeyStore und KeyChain bieten generische Signatur- und Verschlüsselungsdienste, unterstützen jedoch nicht die in Kryptowährungen verwendete Kryptografie. Beispielsweise implementiert der KeyStore die ECDSA-Signatur, jedoch nur auf NIST-Kurven, die in FIPS 186-4 (P-224, P-256, P-384 und P-521) definiert sind. Bitcoin verwendet eine andere Kurve, secp256k1, was noch nicht unterstützt wird.

Zusammenfassend lässt sich sagen, dass Keystore und Keychain gute Dienste zum Schutz sind geheime und private Schlüssel. Sie können durch die Verschlüsselung sensibler Daten ein gewisses Maß an Sicherheit bieten: Einige Klassen von Schwachstellen (z. B. willkürliches Lesen von Dateien) werden durch die Keystore-Verschlüsselung bekämpft. Wenn eine Eskalation der Root-Rechte jedoch nicht ausreicht, um die Schlüsselwerte aus einem hardwaregestützten Keystore zu extrahieren, reicht es aus, sensible Daten zu entschlüsseln. Ein Angreifer, der die App manipulieren kann, ist in der Lage, ihre Geheimnisse abzurufen.

Zum Abschluss zu mobilen Geldbörsen:

  • Der Isolationsmechanismus zwischen Apps, der von iOS/Android bereitgestellt wird, legt die Messlatte für Sicherheit höher als bei einer Software-Wallet, die auf einem Computer ausgeführt wird. Der Angreifer benötigt zunächst eine Rechteerweiterung, um auf App-Daten zugreifen zu können. Dies ist auf veralteten Geräten möglich. Geschickte Angreifer (Ian Beer hat es allein in 6 Monaten geschafft, aber ... es ist Ian Beer) können es auch auf neueren, gepatchten Geräten tun.
  • Schlüsselschutzdienste (KeyStore, KeyChain) könnten eine zusätzliche Sicherheitsebene zum Schutz ruhender Geheimnisse hinzufügen. Da sie jedoch keine kryptografischen Algorithmen für Kryptowährungsanwendungen unterstützen, kann der Schlüssel trotzdem extrahiert werden.
  • In allen Fällen kann ein Angreifer mit Root-Zugriff entweder den Seed im Ruhezustand abrufen, wenn er verwendet wird, oder die Rechte des Benutzers nutzen, um die Wallet zu leeren, indem er die Software-Wallet als Orakel nutzt.

Hier ist ein letztes Beispiel einer Spielzeug-Spyware, die es auf die Blockchain.com-Wallet abgesehen hat (obwohl dies auch auf vielen anderen Wallets genauso einfach möglich wäre). Es wird aus der Ferne installiert und überwacht das Wallet. Sobald sich der Benutzer mithilfe seines Fingerabdrucks authentifiziert hat, wird der Verschlüsselungsschlüssel entsperrt und die Wallet-Daten entschlüsselt. Die Spyware instrumentalisiert die App, um diesen Verschlüsselungsschlüssel abzurufen. Anschließend werden der Schlüssel und die Wallet-Daten an einen Remote-Server exfiltriert:

[Eingebetteten Inhalt]

Zusammenfassung

Zusammenfassend lässt sich sagen, dass Software-Wallets unterschiedliche Sicherheitsstufen aufweisen. Ihr Bedrohungsmodell deckt jedoch nicht den Fall ab, dass eine Malware auf dem Betriebssystem mit einer Rechteausweitung ausgeführt wird. Das ist beabsichtigt: Die Wallet-App kann nicht sicherer sein als das Betriebssystem, auf dem sie läuft.

  • Der Isolationsmechanismus zwischen Apps, der von iOS/Android bereitgestellt wird, legt die Messlatte für Sicherheit höher als bei einer Software-Wallet, die auf einem Computer ausgeführt wird. Der Angreifer benötigt zunächst eine Rechteerweiterung, um auf App-Daten zugreifen zu können.
  • Schlüsselschutzdienste (KeyStore, KeyChain) könnten eine zusätzliche Sicherheitsebene zum Schutz ruhender Geheimnisse hinzufügen. Da sie jedoch keine kryptografischen Algorithmen für Kryptowährungsanwendungen unterstützen, müssen Schlüssel direkt von der App aus manipuliert werden, sodass sie nur einen begrenzten Schutz bieten.
  • In allen Fällen kann ein Angreifer mit Root-Zugriff entweder den Seed im Ruhezustand abrufen, wenn er verwendet wird, oder die Rechte des Benutzers nutzen, um das Wallet zu leeren, indem er das Software-Wallet als Orakel nutzt.

Zeitstempel:

Mehr von Ledger