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.

Follow

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.

· · Web · 1 · 0 · 8

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:
api.einreiseanmeldung.de/reise

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.

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.

@vidister Welp just checked my zip code and there's a name: CLEAR. Seems like no keys for my region :(

@vidister hmmm, it seems Berlin and Braunschweig (38100) are handled by the same office, at least they have the same key and "GA number" in the API

Sign in to participate in the conversation
chaos.social

chaos.social – a Fediverse instance for & by the Chaos community