Aubergine

Sicherheit

Diese Seite beschreibt, wie die Wallet gebaut ist, wogegen sie schützt — und wogegen ausdrücklich nicht. Der zweite Teil ist der wichtigere.

Projektstand

Diese Wallet läuft im Testnetzwerk (kein echtes Geld) und ist noch nicht in den Browser-Stores veröffentlicht. Es liegt kein Sicherheitsaudit vor.

Die Regeln, die nicht verhandelbar sind

  1. 01

    Schlüssel verlassen den Hintergrundprozess nur auf deine ausdrückliche Anforderung

    Ein entschlüsselter Wiederherstellungsschlüssel wird niemals an eine Webseite oder über das Netzwerk weitergegeben, und signiert wird ausschließlich im geschützten Hintergrundprozess. Genau eine Methode gibt Wiederherstellungsmaterial heraus: die Anzeige deines Wiederherstellungssatzes, damit du ihn aufschreiben kannst. Sie lässt sich nur von dir auslösen, verlangt jedes Mal das Passwort neu und entschlüsselt den Datenblock dafür von Grund auf. Ohne diese eine Ausnahme könntest du kein Backup anlegen.

  2. 02

    Nichts Unverschlüsseltes wird gespeichert

    Dauerhaft abgelegt wird nur ein verschlüsselter Datenblock plus unkritische Einstellungen. Die Verschlüsselung ist AES-256-GCM, der Schlüssel wird aus deinem Passwort mit Argon2id abgeleitet — ein Verfahren, das Angriffe mit Grafikkarten deutlich teurer macht als ältere Alternativen.

  3. 03

    Kein nachgeladener Code

    Kein CDN, kein eval, keine dynamischen Importe von externen Adressen. Der ausgelieferte Code ist der ausgeführte Code. Das ist zugleich harte Voraussetzung für die Freigabe im Chrome Web Store und bei Mozilla Add-ons.

  4. 04

    Kein Telemetrie-Aufruf, überhaupt keiner

    Keine Analytics, kein Crash-Reporting, keine Nutzungsmessung. Netzwerkverkehr geht ausschließlich an die Stellar-Endpunkte, die in den Einstellungen hinterlegt sind.

  5. 05

    Jede Unterschrift wird bestätigt — in Klartext

    Keine Aktion, die deine Schlüssel verwendet, läuft ohne ausdrückliche Bestätigung. Und bestätigt wird nur, was vorher in verständlichen Worten dagestanden hat, nicht eine Zeichenkette aus Hexadezimalcode. Der Dialog nennt außerdem das Netzwerk und warnt ausdrücklich, wenn eine dApp ein anderes Netzwerk angibt, als in der Wallet eingestellt ist.

  6. 06

    Schlüsselmaterial wird gelöscht, so weit JavaScript das zulässt

    Seed und Verschlüsselungsschlüssel werden in Byte-Puffern gehalten und nach Gebrauch aktiv überschrieben. Absolut ist das nicht: Wiederherstellungssatz und Passwort laufen als JavaScript-Zeichenketten durch die Laufzeitumgebung, und die lassen sich in JavaScript nicht zuverlässig überschreiben — sie sind unveränderlich, und die Speicherbereinigung darf sie beliebig kopieren. Wir sagen das lieber, als eine Absolutheit zu behaupten, die der Code nicht einlöst.

  7. 07

    Einsteiger haben keine Angriffsfläche über Webseiten

    Das Skript, über das Webseiten mit der Wallet sprechen können, wird nur registriert, wenn der Entwickler-Modus aktiv ist. Solange du im Einsteiger-Modus bist, kann keine Webseite die Wallet ansprechen — auch keine bösartige.

Drei Bereiche, eine Grenze

Die Wallet ist absichtlich in drei getrennte Bereiche zerlegt. Schlüssel gibt es nur im mittleren. Alles andere muss fragen.

Webseite (nicht vertrauenswürdig)

Eine Webseite kann Anfragen stellen — verbinden, eine Transaktion zum Bestätigen vorlegen. Mehr nicht. Sie erhält niemals einen Schlüssel und kann nichts ohne deine Bestätigung auslösen. Im Einsteiger-Modus erreicht sie die Wallet gar nicht erst.

Hintergrundprozess (der einzige Ort mit Schlüsseln)

Hier liegen entschlüsselte Schlüssel — nur im Arbeitsspeicher, nur solange entsperrt ist. Ein Auto-Sperr-Timer (Standard 15 Minuten, einstellbar) beendet die Sitzung von selbst. Dieser Bereich signiert Transaktionen und gibt niemals einen Schlüssel heraus. Auch die Anfragen an das Stellar-Netzwerk laufen gebündelt hier durch.

Popup-Oberfläche (hält keinen eigenen Schlüssel)

Zeigt Guthaben an, fragt das Passwort ab, stellt Bestätigungsdialoge dar. Wird die Oberfläche kompromittiert, ist damit noch kein Signierschlüssel erreichbar — sie hat schlicht keinen. Die einzige Ausnahme ist der Moment, in dem du bewusst deinen Wiederherstellungssatz anzeigen lässt: Dann steht er auf dem Bildschirm, solange dieser Bildschirm offen ist.

Klartext vor der Unterschrift

Der häufigste reale Schaden entsteht nicht durch gebrochene Kryptografie, sondern durch Bestätigungen, die niemand verstanden hat. Deshalb übersetzt die Wallet jede Transaktion in Klartext und weist aktiv auf riskante Muster hin. Erkannt werden mindestens:

  • Änderungen an den Unterschriftsberechtigten oder Schwellenwerten deines Kontos
  • Das Löschen einer Asset-Freigabe (Limit auf null)
  • Kontoauflösung — dein Konto wird geleert und geschlossen
  • Tauschgeschäfte mit mehr als 2 % Abweichung vom erwarteten Kurs
  • Ein Asset, dessen Herausgeber wir nicht kennen
  • Ein Empfängerkonto, das noch nicht existiert — dann wird ein reservierter Kontobetrag fällig
  • Ein Sprung in der Transaktionsnummerierung
  • Eine Abweichung zwischen dem Netzwerk, das eine dApp angibt, und dem Netzwerk, das in der Wallet aktiv ist

Und wenn eine Operation auftaucht, die wir nicht in Klartext übersetzen können, wird sie nicht stillschweigend durchgereicht. Dann steht dort: „Diese Operation können wir nicht in Klartext übersetzen.“ Im Zweifel warnen wir lieber zu viel. Jede Bestätigung nennt außerdem das Netzwerk, gegen das signiert wird, und markiert das Hauptnetz als „echte Werte“.

Bedrohungsmodell

Wogegen Phase 1 schützt

  • Eine bösartige Webseite, die versucht, an deine Schlüssel zu kommen
  • Eine Phishing-dApp, die dich zu einer schädlichen Unterschrift verleiten will
  • Diebstahl der gespeicherten Wallet-Datei, solange die Wallet gesperrt ist
  • Versehentliches Bestätigen, weil die Oberfläche nicht klar gemacht hat, was passiert

Wogegen sie nicht schützt

  • Ein kompromittiertes Betriebssystem — wer deinen Rechner kontrolliert, kontrolliert auch den Browser
  • Eine andere bösartige Browser-Erweiterung mit Debugger-Rechten
  • Physischen Zugriff auf dein Gerät, während die Wallet entsperrt ist
  • Den Verlust deines Wiederherstellungssatzes — dagegen hilft keine Software

Was wir noch nicht haben

Diese Liste steht hier absichtlich prominent. Sie wird kürzer, wenn wir vorankommen — nicht, wenn wir das Thema wechseln.

Kein externes Sicherheitsaudit

Es hat keine unabhängige Prüfung durch Dritte stattgefunden. Bis eine solche Prüfung vorliegt und veröffentlicht ist, gilt diese Software als nicht auditiert. Wir werden das an dieser Stelle ändern, sobald es etwas zu berichten gibt.

Testnetzwerk-Phase

Die Wallet startet im Testnetzwerk. Das Hauptnetzwerk lässt sich umschalten, aber nur bewusst: mit Tippbestätigung, eigener Browser-Berechtigung und einem roten Dauerhinweis in der Kopfzeile. Sie ist dafür weder auditiert noch veröffentlicht — wer sie dort ausprobiert, sollte nur Beträge einsetzen, deren Verlust verschmerzbar wäre, und keinen Wiederherstellungssatz verwenden, der auch andere Guthaben schützt.

Kein Bug-Bounty-Programm

Wir können derzeit keine Prämien für Sicherheitsmeldungen auszahlen. Melden kannst du Funde trotzdem jederzeit — und wir nennen dich auf Wunsch, wenn du das möchtest.

Keine Hardware-Wallet-Unterstützung

Die Anbindung von Hardware-Geräten ist in Phase 1 kein Ziel. Für größere Beträge ist eine Hardware-Wallet weiterhin der sicherere Weg — das sagen wir lieber deutlich, als es zu verschweigen.

Multisig nur zur Ansicht

Konten mit mehreren Unterschriftsberechtigten werden im Entwickler-Modus mit Signern und Schwellenwerten angezeigt — mehr nicht. Es gibt keinen Multisig-Signaturfluss: kein Sammeln von Unterschriften, keinen Import teilsignierter Transaktionen, keine Koordination mit anderen Signern.

Keine Dekodierung von Soroban-Argumenten

Im Entwickler-Modus lässt sich ein Smart-Contract-Aufruf signieren, und der Dialog benennt den Contract und warnt vor dem Aufruf. Die Funktionsargumente übersetzen wir aber noch nicht in Klartext — bei genau diesem Operationstyp bestätigst du also mit weniger Information als bei einer normalen Zahlung. Das ist die größte bekannte Lücke unseres Klartextversprechens, und sie steht ganz oben auf der Liste.

Noch kein Laufzeittest in einem echten Browser

Kryptografie, Schlüsselableitung und Transaktionsbeschreibung sind durch Unit-Tests abgedeckt, die Ableitung zusätzlich gegen die offiziellen SEP-0005-Testvektoren geprüft. Was fehlt, ist ein automatisierter Durchlauf, der die Erweiterung in Chrome oder Firefox installiert und eine Zahlung abschließt. Bis dahin gilt: Der Build läuft und die Unit-Tests sind grün — mehr behaupten wir nicht.

Noch keine Store-Freigabe

Die Erweiterung hat die Prüfung von Chrome Web Store und Mozilla Add-ons noch nicht durchlaufen. Installiere sie derzeit nur aus dem Quelltext und nur, wenn du weißt, was du tust.

Sicherheitslücke gefunden?

Bitte melde sie uns zuerst und nicht öffentlich, damit wir sie beheben können, bevor sie ausgenutzt wird. Wir antworten so schnell wie möglich und halten dich über die Behebung auf dem Laufenden.

Platzhalter Sicherheits-Kontaktadresse — von Rene einzutragen

Für Entwickler