Nachprüfbar

Open-Source- Kryptographie

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.

Was heißt hier „Open Source"?

Kurz 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.

Fehler werden gefunden

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.

Behauptungen werden prüfbar

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.

Sie bleiben unabhängig

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.

Der echte Code, nicht ein Beispiel dafür

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–453
const 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 Krypto-Kern, in Zahlen

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.

Paket
@finilog/crypto
Version
0.1.0
Lizenz
Apache-2.0
Umfang
6 Dateien, 2078 Zeilen

SHA-256 der Quellen

119f6001a4a051114a0727f09470486e69ef5d8ab2159297a65b8296621098a4

Gebildet ü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.

Was der Krypto-Kern an sich selbst prüft

108von 108 Tests bestandenzuletzt gelaufen am 10. September 2026
  • Krypto-Kern
    108 / 108
    10. September 2026 · 119f6001

    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.

Eine Ausnahme: Nachrichten an Empfänger

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.

Sicherheit ist kein Feature

Es ist das Fundament, auf dem finilog gebaut wurde.

Jetzt sicheren Tresor erstellen