Der Code, der Ihre Daten verschlüsselt, ist veröffentlicht — vollständig, unter einer freien Lizenz und mit einer Prüfsumme, die Sie selbst nachrechnen können. Sie müssen uns nicht glauben. Sie können nachsehen.
Hier liegt der Quelltext, hier laufen die Tests, hier entsteht jede Veröffentlichung. Wer wissen will, was der Kern tut, liest ihn hier — Datei für Datei, Zeile für Zeile.
AnsehenDerselbe Stand, an dem Ort, an dem die meisten Entwicklerinnen und Entwickler suchen. Ein Spiegel, damit die Prüfbarkeit nicht an der Gewohnheit scheitert.
AnsehenDas fertige Paket, so wie es in unseren Tresor eingebaut wird. Sie können es selbst installieren und gegen den Quelltext halten.
AnsehenKurz erklärt — und warum es die Verschlüsselung tatsächlich besser macht.
Open Source heißt: Der Quelltext ist veröffentlicht, jeder darf ihn lesen, prüfen, weiterverwenden und die Fehler darin benennen. Bei Verschlüsselung ist das kein Beiwerk, sondern der Normalfall — seit rund hundertfünfzig Jahren gilt in der Kryptographie der Grundsatz, dass ein Verfahren sicher sein muss, obwohl jeder weiß, wie es funktioniert. Sicherheit, die auf Geheimhaltung des Verfahrens beruht, ist keine Sicherheit, sondern ein Vorsprung auf Zeit.
Ein Fehler in der Verschlüsselung fällt beim Benutzen nicht auf — der Tresor öffnet sich, alles wirkt richtig. Gefunden wird er nur beim Lesen. Also muss lesen können, wer will.
Wir schreiben, dass Ihr Passwort das Gerät nie verlässt. Im offenen Code steht, ob das stimmt. Der Unterschied zwischen einem Versprechen und einer nachprüfbaren Aussage ist genau diese Veröffentlichung.
Der Kern läuft ohne uns. Sollte es finilog eines Tages nicht mehr geben, ist das Verfahren zum Entschlüsseln Ihrer Daten weiterhin veröffentlicht — unter einer Lizenz, die niemand zurücknehmen kann.
Dieser Ausschnitt ist kein nachgestellter Beispielcode. Er wird aus dem veröffentlichten Paket erzeugt und in unserer Pipeline dagegen geprüft — die Zeilennummern sind die echten, Sie können sie im Repository nachschlagen.
Er zeigt den Augenblick, in dem verschlüsselt wird. Rot ist, was hineingeht und das Gerät nie verlässt; türkis, was herauskommt und bei uns gespeichert wird. Im `return` steht keine der beiden Eingaben.
Selbst nachprüfen — mit Anleitung@finilog/crypto/src/crypto.ts431–453const encryptBytesWithPassword = async (
plaintext: BufferSource,
password: string,
saltBase64?: string | null,
aad?: BufferSource
) => {
const salt = saltBase64 || toBase64(randomBytes(16))
const iv = randomBytes(12)
const wrappingKey = await deriveKeyCached(password, salt)
const ciphertext = await crypto.subtle.encrypt(
gcmParams(iv, aad),
wrappingKey,
plaintext
)
return {
salt,
iv: toBase64(iv),
ciphertext: toBase64(ciphertext)
}
}
plaintext · passwordKlartext und Tresor-Passwort — gehen hinein, verlassen das Gerät nie
salt · iv · ciphertextSalz, Initialisierungsvektor, Chiffrat — nur das verlässt den Browser
Im `return` steht keine der beiden Eingaben. Was unser Server bekommt, sind genau diese drei Werte: ein Zufallssalz, ein Initialisierungsvektor und der verschlüsselte Text.
Der ganze Kern besteht aus wenigen Dateien ohne eine einzige Laufzeitabhängigkeit — klein genug, um ihn an einem Nachmittag zu lesen. Die Prüfsumme darunter bindet diese Seite an genau den Stand, den Sie herunterladen können.
119f6001a4a051114a0727f09470486e69ef5d8ab2159297a65b8296621098a4Gebildet über alle .ts-Dateien in @finilog/crypto/src, nach Namen sortiert, je Datei „Name, Länge, Inhalt", Zeilenenden auf LF normalisiert. Nachrechnen mit `npm run checksum` im Paket — das Skript liegt darin.
Diese Zahl wird nicht von Hand gepflegt: Ändert sich der Kern, ohne dass sie nachgezogen wird, schlägt die Prüfung in unserer Pipeline fehl.
Die Tests des veröffentlichten Pakets selbst — Schlüsselableitung, Formate, Hüllen, Wiederherstellungscode und der Passkey-Faktor. Sie laufen im Kern-Repository, nicht in dieser Anwendung.
Anders als Ihre Tresor-Einträge sind persönliche Nachrichten nicht ausschließlich für Sie lesbar. Sie werden später als E-Mail zugestellt — zu einem Zeitpunkt, an dem Sie nicht mehr mitwirken können. Dafür muss der Schlüssel auf unserem Server liegen.
Technisch könnten wir diese Nachrichten also lesen. Wir tun es nicht, aber „wir können es nicht" wäre hier gelogen. Für alles andere im Tresor — Zugangsdaten, Dokumente, Dateien — gilt es weiterhin uneingeschränkt.
Es ist das Fundament, auf dem finilog gebaut wurde.
Jetzt sicheren Tresor erstellen