Alle Dateien-Werkzeuge

> dateien verschluesseln

Verschlüsseln

Eine Datei oder einen Text mit einem Passwort schützen, bevor du sie verschickst oder ablegst. Verschlüsselt wird auf diesem Gerät, mit AES-256-GCM und einem aus dem Passwort abgeleiteten Schlüssel.

Wichtig, bevor du ein Passwort vergibstVergisst du das Passwort, ist die verschlüsselte Datei für immer verloren: Es gibt keine Wiederherstellung und keinen Generalschlüssel. Das ist kein ZIP-, PDF- oder Office-Passwort, sondern ein eigenes, offen dokumentiertes Format (Aufbau und ein Python-Beispiel stehen unten unter „So funktioniert's“): Nur dieses Werkzeug oder ein Programm, das dieses Format nachbaut, öffnet die Datei wieder. Dein Passwort bleibt im Arbeitsspeicher dieses Tabs, es wird nirgends gespeichert oder gesendet. Name und Größe der verschlüsselten Datei verraten weiterhin ungefähr, wie groß dein Original war.
Richtung

Bleibt nur im Speicher dieses Tabs, wird nirgends gespeichert oder gesendet.

Stärke: –Grobe Schätzung: nur Länge und Zeichenvielfalt

Sechs zufällige deutsche Wörter aus dem Zufallsgenerator deines Geräts, gut zu merken und zu tippen. Sie erscheinen offen im Feld, damit du sie dir notieren kannst.

Bleibt absichtlich neutral: Der echte Dateiname steckt verschlüsselt im Inhalt und erscheint erst beim Entschlüsseln wieder.

Datei auswählen

oder hierher ziehen, auch mehrere auf einmal.

JEDES FORMAT · BIS 500 MB · BLEIBT AUF DEINEM GERÄT

Deine Datei, dein Text und dein Passwort verlassen dieses Gerät nicht. Verschlüsselt und entschlüsselt wird ausschließlich in diesem Tab.

So funktioniert's
  1. 01Reiter wählen: „Datei“ für ein oder mehrere Dokumente, „Text“ für einen Absatz, den du in eine Mail einfügen willst.
  2. 02Ein Passwort eingeben (oder eine vorgeschlagene Passphrase übernehmen) und dir das Passwort getrennt von der Datei merken, zum Beispiel in einem Passwort-Manager oder telefonisch weitergegeben.
  3. 03Datei oder Text auswählen, „Verschlüsseln“ antippen und das Ergebnis herunterladen oder kopieren. Zum Öffnen brauchst du später genau dasselbe Passwort und dieses Werkzeug (oder ein Programm nach demselben Format, Beispiel unten).

Was hier passiert. Aus deinem Passwort wird mit PBKDF2-HMAC-SHA-256 und 600.000 Runden ein 256-Bit-Schlüssel abgeleitet, dabei bekommt jede Datei ein neues, zufälliges Salz (16 Byte). Verschlüsselt wird mit AES-256-GCM und einem ebenfalls neuen, zufälligen Startwert (IV, 12 Byte); das Authentifizierungs-Tag von GCM steckt am Ende des Chiffretexts. Salz und IV werden nie wiederverwendet, deshalb ergeben zwei Verschlüsselungen derselben Datei mit demselben Passwort trotzdem unterschiedliche Ausgaben. Alles läuft über die eingebaute crypto.subtle-Schnittstelle deines Browsers, nichts davon verlässt das Gerät.

Das Dateiformat „BNKZENC1“. Damit eine verschlüsselte Datei nicht von diesem Werkzeug abhängt, ist der Aufbau offen: 8 Byte Kennung „BNKZENC1“, 1 Byte Formatversion, 1 Byte KDF-Kennung (1 = PBKDF2-HMAC-SHA-256), 4 Byte Rundenzahl, 16 Byte Salz, 12 Byte IV, danach der Chiffretext mit angehängtem Tag. Der ursprüngliche Dateiname steht nicht offen in der Datei, sondern selbst verschlüsselt vor dem eigentlichen Inhalt; die heruntergeladene Datei trägt deshalb absichtlich einen neutralen Namen. Beim Entschlüsseln wird die Rundenzahl geprüft: Werte unter 100.000 oder über 10.000.000 werden abgelehnt, damit eine manipulierte Datei dich weder zu einer schwächeren Ableitung herabstufen noch zu einer mutwilligen Rechenbombe zwingen kann.

So liest du eine .bnkz-Datei mit Python nach (pip install cryptography), zum Beispiel wenn du das Format in einem eigenen Programm brauchst:

import struct, unicodedata
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

def entschluessle_bnkz(pfad, passwort):
    daten = open(pfad, "rb").read()
    assert daten[:8] == b"BNKZENC1", "keine BNKZ-Datei"
    version, kdf_id = daten[8], daten[9]
    runden = struct.unpack(">I", daten[10:14])[0]
    assert 100_000 <= runden <= 10_000_000
    salz, iv = daten[14:30], daten[30:42]
    kopf, chiffre = daten[:42], daten[42:]
    pw = unicodedata.normalize("NFKC", passwort).encode("utf-8")
    schluessel = PBKDF2HMAC(hashes.SHA256(), 32, salz, runden).derive(pw)
    klartext = AESGCM(schluessel).decrypt(iv, chiffre, kopf)
    n = struct.unpack(">H", klartext[:2])[0]
    name = klartext[2:2 + n].decode("utf-8")
    return name, klartext[2 + n:]

name, inhalt = entschluessle_bnkz("dokument.bnkz", "das-passwort")
open(name or "entschluesselt.bin", "wb").write(inhalt)

Falsches Passwort oder beschädigte Datei. GCM erkennt zuverlässig, ob Passwort und Datei zusammenpassen, kann aber nicht zwischen einem falschen Passwort und einer nachträglich veränderten oder beschädigten Datei unterscheiden. Deshalb steht in beiden Fällen dieselbe Meldung, und es wird nie ein halbes oder falsches Ergebnis ausgegeben.

Grenzen. Dateien bis 500 MB, größere werden abgelehnt. Vergisst du das Passwort, ist die Datei unwiederbringlich verloren, dieses Werkzeug kann und will Passwörter nicht erraten. Es ist kein ZIP-, PDF- oder Office-Passwort und öffnet auch keine solchen Dateien. Name und Größe der verschlüsselten Datei bleiben sichtbar, auch wenn ihr Inhalt es nicht ist: Wer sie sieht, kennt weiterhin ungefähr die Größe deines Originals. Die Stärke-Anzeige für ein selbst getipptes Passwort ist eine grobe Schätzung aus Länge und Zeichenvielfalt, keine echte Berechnung der Rateversuche, die ein Angreifer bräuchte. Bei einer über „Passphrase vorschlagen“ erzeugten Passphrase steht dagegen die genaue Bit-Zahl: Wortzahl und Wortliste sind dann exakt bekannt.