Zu Chrome hinzufügen

So funktioniert es

Ein technischer Überblick für Sicherheitsprüfer. Alles hier lässt sich am Quellcode nachprüfen — auch die weniger schmeichelhaften Punkte, die wir benennen statt wegzulassen.

Architektur

Es gibt kein Backend. Die Erweiterung ist eine Manifest-V3-Chrome-Erweiterung, die TOTP-/HOTP-Codes lokal mit OTPAuth erzeugt. Wir betreiben keine Server, führen keine Konten und haben keinen Kanal, über den Nutzerdaten zu uns gelangen könnten.

Weil es keinen Server gibt, gibt es auch kein serverseitiges Schlüsselmaterial, keine Schlüsselhinterlegung und keinen von uns kontrollierten Wiederherstellungsweg. Wer sein Passwort vergisst und den Wiederherstellungscode verliert, dem können wir nicht helfen — so ist es beabsichtigt.

Kryptografie

Der Passwortschutz ist optional und standardmäßig aus. Ist er aktiv:

Verschlüsselung
AES-256-GCM, zufälliger 96-Bit-IV pro Datensatz und pro Neuschreiben
Schlüsselableitung
PBKDF2-HMAC-SHA256, 600.000 Iterationen, zufälliges 128-Bit-Salt (nach OWASP-Empfehlung)
Hauptschlüssel
256 Bit, aus crypto.getRandomValues, einmalig erzeugt; das Passwort umschließt ihn lediglich
Fingerabdrücke
HMAC-SHA256 unter einem per HKDF abgeleiteten Teilschlüssel, um Datensätze geräteübergreifend zusammenzuführen
Speicherung des entsperrten Schlüssels
chrome.storage.session — nur im Arbeitsspeicher, nie auf die Festplatte geschrieben, beim Schließen des Browsers gelöscht, für Content-Skripte unerreichbar
Automatische Sperre
Bei jedem Öffnen / nach 5, 15, 60 Minuten Inaktivität / bis der Browser schließt
Umsetzung
Ausschließlich WebCrypto. Kein Primitiv ist selbst gebaut, keine Krypto-Bibliothek wird mitgeliefert.

Warum zwei Schlüsselebenen

Daten werden nie direkt mit einem aus dem Passwort abgeleiteten Schlüssel verschlüsselt. Ein zufälliger Hauptschlüssel verschlüsselt die Datensätze; die PBKDF2-Ausgabe umschließt nur diesen Hauptschlüssel. Daraus folgen zwei Dinge, und beide zählen:

  • Ein Passwortwechsel schreibt 32 Byte neu, statt jeden Datensatz, jedes Backup und jeden Export neu zu verschlüsseln. Genau bei solchen Massenschreibvorgängen verlieren Speichersysteme Daten.
  • Ein 160-Bit-Wiederherstellungscode kann denselben Hauptschlüssel unabhängig umschließen, ein vergessenes Passwort ist also kein Totalverlust. Der Code wird einmal angezeigt, muss zur Bestätigung erneut eingegeben werden und wird nach jeder Verwendung erneuert. Nichts wird auf die Festplatte geschrieben, bevor der Nutzer ihn bestätigt hat.

Was verschlüsselt wird — und was nicht

Bei aktivem Passwortschutz wird der gesamte Kontodatensatz verschlüsselt, bis auf Kennung und Fingerabdruck — auch der Dienstname, damit ein gestohlenes Profil nicht verrät, bei welchen Diensten jemand Konten hat. Beim Aktivieren werden die Datensätze verschlüsselt, durch Entschlüsseln und Vergleichen geprüft und erst danach alle Klartextkopien entfernt: lokaler Browserspeicher, Sync und alle sieben rollierenden Backup-Stände.

Klar gesagt, weil es für Ihre Bewertung zählt:

  • Ohne Passwortschutz werden Konten unverschlüsselt gespeichert und, wenn Chrome Sync aktiv ist, über das Google-Konto des Nutzers repliziert. Zu uns gelangen sie nie, aber Google hält sie vor. Sync lässt sich abschalten, was auch das Vorhandene wieder entfernt.
  • Der seitenbezogene Nutzungsverlauf — welches Konto auf welcher Domain verwendet wird — liegt lokal und ist während der Erfassung nicht vom Tresor abgedeckt. Das Aktivieren des Passwortschutzes löscht ihn; er lässt sich auch unabhängig abschalten.

Bedrohungsmodell

Schützt gegen

  • Ein gestohlenes oder kopiertes Browser-Profilverzeichnis
  • Infostealer-Malware, die Browserdaten en bloc abzieht
  • Physischen Zugriff auf einen unbeaufsichtigten Rechner
  • Kontodatensätze, die über Chrome Sync zu Google gelangen
  • Eine verlorene oder gestohlene Backup-Datei (passwortgeschützter Export)

Schützt nicht gegen

  • Malware, die als der Nutzer läuft, während der Tresor entsperrt ist
  • Einen Keylogger, der das Passwort bei der Eingabe mitliest
  • Einen kompromittierten Browser oder ein kompromittiertes Betriebssystem
  • Die Kompromittierung der Drittdienste, für die die Codes gelten

Kurz gesagt: Das schützt Daten im Ruhezustand. Ein Gerät, das während der Nutzung bereits unter der Kontrolle eines Angreifers steht, schützt es nicht — und kann es nicht.

Berechtigungen

Das Manifest deklariert genau zwei Berechtigungen und keine Host-Berechtigungen:

storage
Konten und Einstellungen im lokalen Speicher, der entsperrte Schlüssel im Session Storage und die optionale Sync-Kopie
activeTab
Liest den Hostnamen des aktiven Tabs, um das passende Konto hervorzuheben, und erfasst den Tab, wenn ein QR-Code vom Bildschirm gescannt wird

Es gibt keine Content-Skripte, keine Berechtigungen für tabs, cookies oder webRequest und keine web-accessible resources. Die Erweiterung kann den Inhalt keiner Seite lesen oder verändern.

Kamera

Das QR-Scannen per Kamera läuft auf einer Erweiterungsseite in einem Tab, nicht im Popup — ein Popup wird zerstört, sobald es den Fokus verliert, und genau das tut eine Berechtigungsabfrage. Dafür ist keine Manifest-Berechtigung nötig: Es nutzt die Standard-Kameraabfrage des Browsers, erteilt pro Erweiterungs-Origin und in den Website-Einstellungen widerrufbar, und sie erscheint erst, wenn der Scanner geöffnet wird. Das Video wird lokal dekodiert und nie übertragen oder gespeichert.

Ausgehender Netzwerkverkehr

Im normalen Betrieb stellt die Erweiterung keine automatischen Anfragen, und Manifest V3 verbietet Remote-Code. Alle Verbindungen, die überhaupt möglich sind:

HostWannEnthält Nutzerdaten?
worldtimeapi.org
timeapi.io
Prüfung auf Uhrabweichung, zwischengespeichert, scheitert stillschweigend. Bei falsch gehender Uhr bricht TOTP.Nein
authenticator.shWillkommensseite bei der Installation; Feedback-Seite bei Deinstallation oder Bewertung.Nein (gewöhnliche Webserver-Logs)

Weder Schriften noch Skripte, Styles oder Bilder werden von Drittanbieter-Hosts geladen. Alles, was die Oberfläche zum Rendern braucht, steckt im Paket.

Überprüfen, was wir veröffentlichen

Sie müssen nichts davon glauben. Die Erweiterung ist quelloffen, und jedes Release ist reproduzierbar:

  1. Die veröffentlichte .crx aus dem Chrome Web Store herunterladen und entpacken
  2. Den passenden Git-Tag auschecken
  3. npm ci && npm run build unter Node 20 LTS ausführen
  4. Das entstandene dist/ mit dem entpackten Paket vergleichen

Für jede Datei im erzeugten dist/ wird mit jedem GitHub-Release ein SHA-256 als SHA256SUMS-v<version>.txt veröffentlicht, im Format sha256sum — Schritt 4 ist damit ein einziger Aufruf von sha256sum -c. Abweichungen sollten sich auf die Dateireihenfolge in Archiven und Leerzeichen in minifizierter Ausgabe zwischen Node-Patch-Versionen beschränken.

Die Laufzeitabhängigkeiten sind bewusst wenige — OTPAuth, React, jsQR, Zustand, Framer Motion und Lucide — festgehalten durch eine eingecheckte Lockfile. Eine CycloneDX-SBOM stellen wir auf Anfrage bereit.

Quellcode ansehen

Was wir nicht haben

Wir sind ein kleiner unabhängiger Anbieter. Wenn eines der folgenden Dinge für Ihren Prozess zwingend ist, erfahren Sie es besser jetzt als drei Wochen später in der Bewertung:

  • Keine Zertifizierung nach SOC 2, ISO 27001 oder Vergleichbarem
  • Bis heute kein beauftragter externer Penetrationstest
  • Kein bezahltes Bug-Bounty-Programm

Was wir stattdessen bieten: vollständige Transparenz des Quellcodes, einen verifizierbaren Build, eine minimale Berechtigungsfläche und keine serverseitige Infrastruktur, die Ihre Daten überhaupt halten könnte.

Kontakt

Schwachstellenmeldungen und Sicherheitsfragen: security@authenticator.sh. Offenlegungsrichtlinie, Geltungsbereich, Reaktionszeiten und Safe-Harbour-Bedingungen stehen auf der Seite Sicherheitsrichtlinie; was gespeichert wird und was das Gerät verlässt, steht in der Datenschutzerklärung.

Wir beantworten gerne einen schriftlichen Lieferantenfragebogen oder gehen den Code mit einem Sicherheitsteam durch.

Für alles, was keine Sicherheitsfrage ist — Installation, Kontowiederherstellung, Abrechnungsfragen aus einem Rollout — siehe Support. Bitte schicken Sie dorthin keine Schwachstellenmeldungen; dieses Postfach gilt nicht als vertraulich.