# Exposure Notification

Das Exposure Notification Framework (ENF; deutsch „Expositionsbenachrichtigungs-Rahmenwerk“; auch Google/Apple Exposure Notification, GAEN) ist ein von Apple und Google entwickeltes System, dessen Ziel die Reduzierung der Verbreitung von COVID-19 durch Contact-Tracing ist. Es stellt eine Programmierschnittstelle (API) bereit, über das offizielle Regierungsstellen wie Gesundheitsbehörden beziehungsweise von diesen beauftragte Dritte auf bereitgestellte Funktionen zugreifen können. Das ENF ist auf Betriebssystemebene in iOS und die Google-Play-Dienste eingebunden und ermöglicht den Austausch von Zufallsschlüsseln über Bluetooth Low Energy (BLE).

## Funktionsweise

Die hier beschriebene Funktionsweise des ENF basiert auf den Spezifikationen zur Kryptografie in der Version 1.2.
Zu Beginn des Key Schedules wird ein Temporary Exposure Key ($tek_{i}$) – ein 16-Byte-Schlüssel – mit einem Cryptographic Random Number Generator (CRNG) generiert. Generierte $tek_{i}$ wechseln täglich und umfassen jeweils $TEKRollingPeriod:=144$ ca. zehn-minütige Zeitintervalle der Form $ENIntervalNumber(z)={\frac {Zeitstempel}{60\times 10}}$ mit Zeitangabe in Unixzeit. Die $tek_{i}$ werden jeweils mit dem Startintervall $i=\llcorner {\frac {ENIntervalNumber(Startzeitpunkt)}{TEKRollingPeriod}}\lrcorner \times TEKRollingPeriod$ assoziiert. Das ENF speichert die letzten 14 $tek_{i}$ auf dem Endgerät ab.
Durch $RPIK_{i}=HKDF_{i}(tek_{i},NULL,UTF8('EN-RPIK'),16)$ und $AEMK_{i}=HKDF_{i}(tek_{i},NULL,UTF8('EN-AEMK'),16)$ ergeben sich die mit HKDF abgeleiteten Schlüssel Rolling Proximity Identifier Key ($RPIK_{i}$) und Associated Encrypted Metadata Key ($AEMK_{i}$). Für jedes der 144 zehn-minütigen Zeitintervalle können unter Verwendung des Advanced Encryption Standard (AES) durch $RPI_{i,j}=AES_{128}(RPIK_{i},PaddedData_{j})$Rolling Proximity Identifier ($RPI_{i,j}$) gebildet werden. $PaddedData_{j}$ besteht dabei aus $UTF8('EN-RPI')$, $0x000000000000$ sowie $ENIntervalNumber(j)$ mit $j$ als Zeitpunkt der $RPI_{i,j}$-Erzeugung. Der $RPI_{i,j}$ fließt dann als Initialisierungsvektor in die Verschlüsselung von Bluetooth-Daten wie der Protokollversion und Signalstärke mit AES im Counter Mode. Durch $AEM_{i,j}=AES_{128}-CTR(AEMK_{i},RPI_{i.j},Metadaten)$ entsteht die Associated Encrypted Metadata ($AEM_{i,j}$). $RPI_{i,j}$ und $AEM_{i,j}$ wechseln parallel zur zufälligen BLE MAC-Adresse.
Die entstandenen $RPI_{i,j}$ und $AEM_{i,j}$ werden in einem Broadcast via Bluetooth an Geräte in der Umgebung verschickt. Zudem empfängt das Endgerät selbst die $RPI_{i,j}$ und $AEM_{i,j}$ anderer Geräte, die das ENF nutzen, und speichert diese ab.
Liegt ein bestätigtes positives Ergebnis eines COVID-19-Tests vor, können die $tek_{i}$ der letzten 14 Tage mit den zugehörigen $i$ als Diagnosis Keys zu einem designierten Server hochgeladen werden, welcher die Schlüssel verwaltet und den Clients zur Verfügung stellt.
Die Clients können die Diagnosis Keys herunterladen und über die aufgeführten Schritte die $RPI_{i,j}$ infizierter Personen generieren. Durch einen Vergleich der so generierten $RPI_{i,j}$ mit den über Bluetooth gesammelten $RPI_{i,j}$ lässt sich ermitteln, ob eine Übereinstimmung vorliegt. Ist dies der Fall, liegt ein Risikokontakt vor und die zugehörige $AEM_{i,j}$ wird entschlüsselt, um eine Risikoeinschätzung zu ermöglichen.

## Einstellung

Mitte Oktober 2023 hat Google das ENF aus Android entfernt. Die Änderung wurde mit Google Play Version 23.42 eingeführt.