Sicherheit
Was Loclavis technisch tut und was nicht. Hier stehen nur Eigenschaften, die im Code nachvollziehbar sind.
Lokale Verarbeitung
Verschlüsseln und Entschlüsseln laufen in Ihrem Browser, in einem Web Worker. Die zu schützenden Dateien werden nicht hochgeladen.
Verwendete Verfahren
- AES-256-GCM für Inhalte und Metadaten, mit getrennten Schlüsseln.
- Argon2id (64 MiB, 3 Durchläufe) zur Ableitung aus Ihrem Passwort.
- HKDF-SHA-256 zur Trennung von Wrap-, Metadaten- und Stream-Schlüssel.
- Für normale PDFs optional native AES-256-Verschlüsselung über qpdf (WebAssembly, lokal gebündelt).
Was im Container sichtbar ist
Der öffentliche Header eines .safe-Containers enthält Salt, Verfahrensparameter und Größenangaben. Dateiname, Ordnerstruktur und Inhalt liegen verschlüsselt darin.
Welche Online-Funktionen es gibt
Zahlung und Lizenzprüfung. Beides ist vom Verschlüsselungs-Kern getrennt und überträgt niemals Dateien, Passwörter oder Schlüssel.
Wie die lokale Verarbeitung technisch funktioniert
- Der Browser stellt Datei-APIs bereit. Eine ausgewählte Datei ist ein File-Objekt, aus dem sich mit slice() einzelne Abschnitte lesen lassen, ohne die ganze Datei in den Speicher zu holen.
- Web Crypto (crypto.subtle) liefert AES-256-GCM und HKDF-SHA-256 als native Implementierung des Browsers. Der Schlüssel wird als nicht-extrahierbares CryptoKey-Objekt importiert; sein Rohmaterial ist danach aus JavaScript nicht mehr auslesbar.
- Argon2id läuft als WebAssembly-Modul, weil die Berechnung bewusst rechenintensiv ist. Für die native PDF-Verschlüsselung wird qpdf als WebAssembly geladen, lokal gebündelt und nicht von einem fremden Server.
- Die Verschlüsselung läuft in einem Web Worker, also einem eigenen Thread. Die Oberfläche bleibt bedienbar, und der Worker sieht immer nur den Header und einen Abschnitt, nie die ganze Datei.
- Verarbeitet wird in Abschnitten von etwa 1 MiB. Jeder Abschnitt wird gelesen, verschlüsselt, geschrieben und wieder freigegeben. Der Speicherbedarf hängt dadurch nicht von der Dateigröße ab.
- Wo der Browser es unterstützt, wird das Ergebnis über die File System Access API direkt in die von Ihnen gewählte Datei geschrieben. Sonst entsteht ein Blob und daraus ein normaler Download.
Authentifizierte Verschlüsselung und Manipulationserkennung
- AES-GCM erzeugt zu jedem Abschnitt einen Authentifizierungs-Tag. Beim Entschlüsseln wird er geprüft, bevor Klartext herausgegeben wird.
- In die Prüfsumme fließen zusätzlich die Formatversion, der Abschnittsindex und die Markierung des letzten Abschnitts ein. Dadurch fallen vertauschte, entfernte oder doppelte Abschnitte auf.
- Die Anzahl der Abschnitte steht in den verschlüsselten Metadaten. Angehängte Daten am Ende der Datei führen zum Abbruch.
- Schlägt eine Prüfung fehl, wird die Ausgabe verworfen. Es entsteht keine halb entschlüsselte Datei.
- Die Fehlermeldung unterscheidet nicht zwischen falschem Passwort und beschädigter Datei. Eine genauere Meldung wäre eine Hilfe für Angreifer.
Aufbau der geschützten Datei
- Der öffentliche Header enthält Magic, Formatversion, die Argon2id-Parameter, ein zufälliges Salt, ein zufälliges Präfix für die Nonces, die Abschnittsgröße sowie die verschlüsselten Metadaten und den verschlüsselten Datenschlüssel.
- Aus dem Passwort entsteht über Argon2id ein Hauptschlüssel. Daraus leitet HKDF-SHA-256 einen Wrap-Schlüssel ab. Pro Container wird ein zufälliger Datenschlüssel erzeugt und damit verpackt; aus ihm leiten sich getrennte Schlüssel für Metadaten und Inhalt ab.
- Dateiname, Originalgröße und Abschnittsanzahl liegen im verschlüsselten Metadatenblock, nicht im Header. Sichtbar sind nur Verfahrensparameter und Größenordnungen.
- Bei mehreren Dateien wird lokal ein Archiv gestreamt und als Ganzes verschlüsselt. Pfade und Namen liegen dadurch ebenfalls im verschlüsselten Bereich.
Nativer PDF-Weg
- Für gewöhnliche PDFs erzeugt qpdf eine PDF mit AES-256 nach dem PDF-Standard. Der Empfänger öffnet sie in einem geeigneten Programm und gibt das Passwort ein.
- Die Schlüsselableitung gibt hier der PDF-Standard vor. Sie ist deutlich schneller durchzuprobieren als Argon2id, deshalb verlangt Loclavis auf diesem Weg ein stärkeres Passwort.
- PDF/A- und ZUGFeRD-Dokumente werden erkannt und stattdessen unverändert in einer geschützten Datei abgelegt, weil nachträgliche Verschlüsselung ihre Struktur beschädigen kann.
- qpdf benötigt SharedArrayBuffer und damit eine cross-origin-isolierte Seite. Fehlen die entsprechenden HTTP-Header, meldet Loclavis den PDF-Weg als nicht verfügbar und weicht auf die geschützte Datei aus.
Passwortgenerator
- Zufall kommt ausschließlich aus crypto.getRandomValues. Math.random, Zeitstempel oder Zähler werden nicht verwendet.
- Die Auswahl aus Zeichensatz und Wortliste verwirft Werte außerhalb des gleichverteilten Bereichs und zieht neu. Eine einfache Modulo-Rechnung würde niedrige Indizes bevorzugen.
- Erzeugte Passwörter werden nicht gespeichert, nicht protokolliert und nicht übertragen. Es gibt keine Passwort-Historie.
- Das Standardpasswort hat rund 120 Bit Zufall. Eine Passphrase aus der 512 Wörter langen Liste hat exakt 9 Bit pro Wort.
Offline-Verhalten
- Nach dem Laden der Seite benötigen Verschlüsseln und Entschlüsseln keine Verbindung. Das ist gemessen: Seite laden, Netzwerk abschalten, Datei schützen und wieder entschlüsseln funktioniert vollständig.
- Die für einen Vorgang nötigen Programmteile werden nach dem ersten Rendern im Hintergrund nachgeladen, damit sie bei Bedarf bereits vorliegen.
- Loclavis ist keine installierte Offline-Anwendung. Es gibt keinen Service Worker, und ein Neuladen der Seite ohne Verbindung funktioniert nicht.
Was serverseitig passiert
- Die Auslieferung der Website. Dabei fallen beim Hoster technisch notwendige Zugriffsdaten an.
- Beim Kauf von Plus werden Sie zu Stripe weitergeleitet. Zahlungsdaten geben Sie dort ein; wir sehen und speichern sie nicht.
- Bei der Lizenzprüfung sendet der Browser ausschließlich den Plus-Schlüssel an eine eigene Prüf-Funktion. Diese verifiziert die Signatur und fragt bei Stripe den Abostatus ab.
- Ein Spendenlink führt, sobald konfiguriert, zu einem externen Anbieter. Er wird erst durch Ihren Klick aufgerufen und bekommt keine Angaben über Ihren Vorgang.
- Niemals übertragen werden: Dateien, Dateiinhalte, Dateinamen, Passwörter, abgeleitete Schlüssel und geschützte Container.
Passwortverlust
Es gibt keine Wiederherstellung. Ohne das Passwort lässt sich der Inhalt nicht rekonstruieren, auch nicht von uns. Es existiert kein Zweitschlüssel, keine Hintertür und kein Verfahren, das dies umgehen könnte.
Grenzen
- Die Sicherheit hängt von Ihrem Gerät und Browser ab. Auf einem kompromittierten System hilft keine Web-Anwendung.
- Ein schwaches Passwort bleibt ein schwaches Passwort. Argon2id erschwert das Raten, macht es aber nicht unmöglich.
- JavaScript kann Speicher nicht garantiert überschreiben. Schlüsselmaterial wird nach bestem Bemühen gelöscht.
- Loclavis wurde nicht extern zertifiziert. Es gibt kein Sicherheitssiegel und keine Garantie.