The German Federal Ministry of Health and the Robert Koch-Institut operate a web form which you have to fill out when you enter Germany from a COVID-19 high-risk area.
I had to submit my data, so I took a glimpse at what it does in the background.

They are asking you for your personal data, arrival date, travel itinerary, etc.
And, of course, the place where you will stay at your 10 days of mandatory quarantine.
In the background it's sending your entered zip code to a server, asking for a crypto public key in return.

Looks like it's one certificate per local health authority.

See how the zip codes 13357 and 13359 (both Berlin) return the same key, while 50667 (Cologne) delivers a different one.

It also seems like not all local health authorities have a key (yet). Then it always returns the same pubkey with the name "CLEAR", which seems to be a fallback.

You can check if your local health authority has a pubkey by asking the api endpoint for it. Have fun:

When submitting the form, it encrypts your data client side and submits that beside the zip code and certificate serial number. The latter two are probably used to forward the data to the responsible local health authority, which then can decrypt your data to contact you.

After submitting you receive a certificate of registration as pdf, which contains some of the data you entered. That pdf is generated client side in your browser, so the server never has to see the plaintext/unencrypted data.


From what I can see the web portal looks pretty well engineered.
Assuming they haven't fucked up their cryptography and don't store their private keys on the server, your data should be pretty safe.

Β· Β· 1 Β· 0 Β· 20

Still, there's the possibility of compromising the server and handing over altered JavaScript code or delivering different pubkeys, but well, we're still using the web, so that'll always be a threat.

@vidister Thanks for the analysis. Indeed sounds very good!

Great to see some good news about digitalisation in Germany, too.

Sign in to participate in the conversation – a Fediverse instance for & by the Chaos community