Why we cannot see it
Even if an attacker steals our entire database, they see only random-looking bytes. The key belongs solely to the end customer — derived from their passphrase, which never leaves their device.
Company
HTML tool, runs locally
ciphertext only
MeinDatensatz
Stores ciphertext
browser decrypts
Individual
Decrypts locally
The passphrase never leaves the individual's device at any point.
For companies
Local HTML tool – data never leaves the device unencrypted
Open the HTML tool locally
The escrow tool is opened as a local HTML file in the browser — no server connection required. All cryptography runs exclusively on the company's own machine.
Read customer data locally
The tool reads customer data directly from a local source file (e.g. CSV). The raw data never leaves the device at any point.
Local encryption
A random 32-byte key is generated per record and the content encrypted using AES-256-GCM (libsodium). Each record key is in turn protected by a key derived from the company's password via Argon2id. The password is never stored.
Two output files are created
The tool produces two files: (1) a mailing file containing individual invitation links and access tokens for the customer email campaign, and (2) an upload file with all encrypted records ready to upload to MeinDatensatz.
Decoding when retrieving corrections
To retrieve customer corrections, the company reopens the HTML tool. Decryption is performed using the previously created file (key reference) together with the encrypted records downloaded from the server — entirely locally, with no server-side access to the content.
For affected individuals
Decryption happens locally in the browser
Invitation link by email
The individual receives a link with a single-use token. This token is not a decryption key — it merely grants access to the dataset endpoint.
Passphrase delivered separately
The passphrase is delivered to the individual via a separate channel (e.g. letter, SMS, or in person). It is never transmitted by email.
Key derivation in the browser
The browser derives the decryption key from the entered passphrase using Argon2id. This runs locally — the passphrase never leaves the device.
Local decryption
The encrypted record is fetched from the server and decrypted exclusively in the browser. No plaintext leaves the device — the server has no access to the decrypted content at any point.
Corrections are encrypted before sending
Any corrections entered are encrypted exclusively in the browser before being transmitted to the server. The server receives only the new ciphertext — never plaintext data.