From 6a3460659bb8494c918a676c2f24f0a10d821928 Mon Sep 17 00:00:00 2001 From: Marco Pashkov Date: Tue, 19 May 2020 21:28:09 -0700 Subject: [PATCH 1/7] better phrasing there is no `sending power`, but [signal strength](https://developer.apple.com/documentation/corebluetooth/cbperipheral/1518869-rssi) --- solution_architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution_architecture.md b/solution_architecture.md index 0055082..3ff80fd 100644 --- a/solution_architecture.md +++ b/solution_architecture.md @@ -37,7 +37,7 @@ With the Corona-Warn-App (see [scoping document](https://github.com/corona-warn- Identifiers are ID numbers sent out by the phones. To ensure privacy and prevent tracking of movement patterns of the app user, those broadcasted identifiers are only temporary and change constantly. New identifiers are derived from a Temporary Exposure Key (TEK) that substitutes daily at midnight (UTC) through means of cryptography, which will be explained in more detail in *Figure 10*. When the TEKs are linked to a positive test, they remain technically the same, but are called Diagnosis Keys. The collected identifiers of other users, as well as the own keys (which can later be used to derive the identifiers) are stored locally on the phone within the secure storage of the framework provided by Apple and Google. This secure storage cannot be accessed directly by the application, but only through the interfaces provided by the Exposure Notification Framework. Some of those interfaces are subjected to [rate limiting](https://developer.apple.com/documentation/exposurenotification/enmanager/3586331-detectexposures), in order to prevent misuse. In case users were tested positively for SARS-CoV-2, they can update their status in the app by providing a verification of their test and select an option to send their recent keys of up to 14 days. Once the keys have been uploaded to the Corona-Warn-App backend server, all keys of positively tested people are aggregated. This list of keys is then made available to all mobile phones with the app installed. Additionally, configuration parameters for the framework are available for download, so that adjustments to the calulation of the risk score can be taken (see the section regarding *Risk Scores*). -Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification API, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. sending power), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters of an individual on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. +Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification API, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. signal strength), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters of an individual on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. It is important to notice at this point, that the people that have been exposed to a positively tested person are **not informed by a central instance**, but the risk of an exposure is calculated locally on their phones. The information about the exposure remains on the user’s phone and is not shared. From 91249316fdaa6b6acc3b6654c6c60df49d827616 Mon Sep 17 00:00:00 2001 From: Marco Pashkov Date: Tue, 19 May 2020 22:46:34 -0700 Subject: [PATCH 2/7] replacing incorrect use of citizens I am guessing the author did not actually meant to use `citizens` (Staatsbuerger) in those two instances, since also non-citizen that reside in Germany are probably allowed, if not encouraged to use the app as well. --- solution_architecture.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solution_architecture.md b/solution_architecture.md index 0055082..bea80cf 100644 --- a/solution_architecture.md +++ b/solution_architecture.md @@ -29,7 +29,7 @@ Assuming a close association of a mobile phone and its user, we equate the devic ## INTRODUCTION -To reduce the spread of [COVID-19](https://www.ecdc.europa.eu/en/covid-19-pandemic) it is necessary to inform people about their close proximity to positively tested individuals. So far, health departments and citizens identified these in personal dialogues based on people’s memory, which led to a high number of unknown connections, e.g. when using public transport. +To reduce the spread of [COVID-19](https://www.ecdc.europa.eu/en/covid-19-pandemic) it is necessary to inform people about their close proximity to positively tested individuals. So far, health departments and persons identified these in personal dialogues based on people’s memory, which led to a high number of unknown connections, e.g. when using public transport. ![Figure 1: High-level architecture overview](images/solution_architecture/figure_1.svg "Figure 1: High-level architecture overview") @@ -56,7 +56,7 @@ This preexisting process for the processing of lab results includes that the doc The flow for using the app is as follows, referencing the steps from *Figure 2*: -- **Step 1:** Citizens are using the Corona-Warn-App (i.e. broadcasting and collecting RPIs) +- **Step 1:** Users of the Corona-Warn-App (i.e. broadcasting and collecting RPIs) - (1) When a test is conducted, they receive an information flyer with a custom QR code. The code is either created on-site or is already available as a stack of pre-printed QR codes. The QR code contains a globally unique identifier (GUID). - (2) Optionally, they can scan the QR code with the Corona-Warn-App (*Figure 3*, step 1) – if users decide against using the test retrieval functionality of the Corona-Warn-App, they still receive their test results through the regular channels explained before. - (3) When the code is scanned, a web service call (REST) is placed against the Verification Server (*Figure 3*, step 2), linking the phone with the data from the QR code through a registration token, which is generated on the server (*Figure 3*, step 3) and stored on the phone (*Figure 3*, step 4). From 03ed8bcfc7aaf91059ff76ef63a313dbce4245d5 Mon Sep 17 00:00:00 2001 From: Sebastian Wolf Date: Wed, 20 May 2020 15:54:11 +0200 Subject: [PATCH 3/7] assets: Add CWA logo --- images/CWA_title.png | Bin 0 -> 79526 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/CWA_title.png diff --git a/images/CWA_title.png b/images/CWA_title.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9bedfbf0065c94a8ae33e857e63ca9b190eb34 GIT binary patch literal 79526 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

6Orq*-LI`v^ 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 Date: Wed, 20 May 2020 16:32:14 +0200 Subject: [PATCH 4/7] docs: Include CWA logo and ToC in READMEs --- README.md | 21 +++++++++++++++++++-- translations/README.de.md | 25 +++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1d477d7..3b4e3f2 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,28 @@ -# Corona-Warn-App +

+ +

+ +
+

+ About this Project • + Who We Are • + Credits • + Data Privacy • + Code of Conduct • + Working Language • + Our Documentation • + Licensing • + How to Contribute • + Web Site +

+
NOTE: This README is also available [in German](translations/README.de.md). Thank you for understanding that the German version might not always be up-to-date with the English one. HINWEIS: Diese README ist ebenfalls [auf Deutsch](translations/README.de.md) verfügbar. Bitte haben Sie Verständnis, dass die deutsche Version nicht immer auf dem gleichen Stand wie die englische Version ist. ## About this Project -We are developing the official COVID-19 exposure notification app for Germany, called "Corona-Warn-App". This project has the goal to develop an app based on technology with a decentralized approach - heavily inspired by the [DP-3T](https://github.com/DP-3T/documents) (Decentralized Privacy-Preserving Proximity Tracing) and [TCN](https://tcn-coalition.org/) protocols and based on the [Privacy-Preserving Contact Tracing specifications](https://www.apple.com/covid19/contacttracing/) by Apple and Google. Like DP-3T and the TCN Protocol, the apps and backend infrastructure will be entirely open source - licensed under the [Apache 2.0 license](LICENSE)! The apps (for iOS and Android) will collect pseudonymous data from nearby mobile phones using Bluetooth technology. The data will be stored locally on each device preventing access and control over data by authorities or anyone else. We will meet the applicable data protection standards and guarantee a high level of IT security. By doing so, we are addressing people's privacy concerns and thereby aiming to increase the adoption of the app. +We are developing the official COVID-19 exposure notification app for Germany, called "Corona-Warn-App". This project has the goal to develop an app based on technology with a decentralized approach - heavily inspired by the [DP-3T](https://github.com/DP-3T/documents) (Decentralized Privacy-Preserving Proximity Tracing) and [TCN](https://tcn-coalition.org/) protocols and based on the [Privacy-Preserving Contact Tracing specifications](https://www.apple.com/covid19/contacttracing/) by Apple and Google. Like DP-3T and the TCN Protocol, the apps and backend infrastructure will be entirely open source - licensed under the [Apache 2.0 license](LICENSE)! The apps (for iOS and Android) will collect pseudonymous data from nearby mobile phones using Bluetooth technology. The data will be stored locally on each device preventing access and control over data by authorities or anyone else. We will meet the applicable data protection standards and guarantee a high level of IT security. By doing so, we are addressing people's privacy concerns and thereby aiming to increase the adoption of the app. ## Who We Are diff --git a/translations/README.de.md b/translations/README.de.md index 657d5ac..72c47f2 100644 --- a/translations/README.de.md +++ b/translations/README.de.md @@ -1,9 +1,26 @@ -# Corona-Warn-App +

+ +

+ +
+

+ Über dieses Projekt • + Wer wir sind • + Danksagungen • + Datenschutz • + Code of Conduct • + Arbeitssprache • + Unsere Dokumentation • + Lizenzierung • + Informationen zur Teilnahme • + Webseite +

+
HINWEIS: Die [englische Version](../README.md) der README-Datei ist die maßgebliche Fassung. Bitte haben Sie dafür Verständnis, dass die deutsche Version möglicherweise nicht durchgängig auf dem neuesten Stand ist. ## Über dieses Projekt -Wir entwickeln die offizielle COVID-19-App zur Kontaktfallbenachrichtigung für Deutschland, die sogenannte "Corona-Warn-App". Dieses Projekt hat zum Ziel, eine Anwendung auf der Grundlage einer Technologie mit einem dezentralisierten Ansatz zu entwickeln. Als Grundlage dienen die Protokolle [DP-3T](https://github.com/DP-3T/documents) (Decentralized Privacy-Preserving Proximity Tracing) und [TCN](https://tcn-coalition.org/) sowie die Spezifikationen für [Privacy-Preserving Contact Tracing](https://www.apple.com/covid19/contacttracing/) von Apple und Google. Wie DP-3T und TCN folgen auch die Apps und die Backend-Infrastruktur dem Open-Source-Prinzip - lizenziert unter [Apache 2.0 ](../LICENSE). Die Apps (für iOS und Android) werden pseudonymisierte Daten von Mobiltelefonen in der Umgebung mit Hilfe von Bluetooth-Technologie sammeln. Die Daten werden lokal auf den einzelnen Geräten gespeichert, um so den Zugriff auf die Daten und die Kontrolle über die Daten durch Behörden oder andere Instanzen zu verhindern. Wir erfüllen die geltenden Datenschutzvorgaben und garantieren höchste IT-Sicherheitsstandards. Auf diese Weise stellen wir uns den Datenschutzbedenken der Bevölkerung und hoffen dadurch, die Nutzung der Anwendung zu steigern. +Wir entwickeln die offizielle COVID-19-App zur Kontaktfallbenachrichtigung für Deutschland, die sogenannte "Corona-Warn-App". Dieses Projekt hat zum Ziel, eine Anwendung auf der Grundlage einer Technologie mit einem dezentralisierten Ansatz zu entwickeln. Als Grundlage dienen die Protokolle [DP-3T](https://github.com/DP-3T/documents) (Decentralized Privacy-Preserving Proximity Tracing) und [TCN](https://tcn-coalition.org/) sowie die Spezifikationen für [Privacy-Preserving Contact Tracing](https://www.apple.com/covid19/contacttracing/) von Apple und Google. Wie DP-3T und TCN folgen auch die Apps und die Backend-Infrastruktur dem Open-Source-Prinzip - lizenziert unter [Apache 2.0 ](../LICENSE). Die Apps (für iOS und Android) werden pseudonymisierte Daten von Mobiltelefonen in der Umgebung mit Hilfe von Bluetooth-Technologie sammeln. Die Daten werden lokal auf den einzelnen Geräten gespeichert, um so den Zugriff auf die Daten und die Kontrolle über die Daten durch Behörden oder andere Instanzen zu verhindern. Wir erfüllen die geltenden Datenschutzvorgaben und garantieren höchste IT-Sicherheitsstandards. Auf diese Weise stellen wir uns den Datenschutzbedenken der Bevölkerung und hoffen dadurch, die Nutzung der Anwendung zu steigern. ## Wer wir sind @@ -17,6 +34,10 @@ Wir möchten allen danken, die an diesem wichtigen Projekt gleich von Beginn an In diesem Projekt berücksichtigen wir die Prinzipien der Datenschutzgrundverordnung (DSGVO), um die Privatsphäre aller zu schützen. Wir verarbeiten ausschließlich notwendige Daten und ausschließlich zu dem Zweck, alle wissen zu lassen, ob sie in engem Kontakt mit anderen, bereits infizierten Personen standen, ohne die jeweilige Identität zu offenbaren. Die Einhaltung dieser Grundsätze wird durch verschiedene Schritte sichergestellt, zum Beispiel durch die Implementierung technischer und organisatorischer Maßnahmen, die sich sorgfältig an die hohen Standards der DSGVO halten. Selbstverständlich wird die Anwendung eine verständliche Datenschutzerklärung vorhalten, um so transparent und klar wie möglich zu sein. Da wir die Anwendung als Open-Source-Projekt entwickeln, kann die Community dies überprüfen. Wir begrüßen Ihre Rückmeldungen! +## Code of Conduct + +Dieses Projekt hat den [Contributor Covenant](https://www.contributor-covenant.org/) in Version 2.0 als unseren Code of Conduct übernommen. Bitte beachten Sie die Einzelheiten in unserem [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md). Alle Mitwirkenden müssen sich an den Code of Conduct halten. + ## Arbeitssprache Wir entwickeln diese Anwendung für Deutschland. Wir möchten so offen und transparent wie möglich sein, auch für Interessierte in der globalen Entwicklungscommunity, die nicht Deutsch sprechen. Daher wird sämtlicher Inhalt vor allem auf _Englisch_ zur Verfügung gestellt. Wir bitten auch alle Interessierten, Englisch als Arbeitssprache zu verwenden, etwa für Kommentare im Code, für die Dokumentation oder wenn Sie uns Anfragen senden. Die Anwendung selbst, die zugehörige Dokumentation und sämtlicher Inhalt für diejenigen, welche die Anwendungen nutzen, werden selbstverständlich auf Deutsch (und möglicherweise auch andere Sprachen) zur Verfügung gestellt. Wir werden auch versuchen, Entwicklungsdokumentation auf Deutsch zur Verfügung zu stellen, aber wir bitten um Verständnis dafür, dass es nur mit Englisch als der _Lingua Franca_ der globalen Entwicklungscommunity möglich sein wird, bei der Entwicklung dieser Anwendung mit höchstmöglicher Effizienz zu arbeiten. From 708909471b949fff0740d579a74d136e52f4d524 Mon Sep 17 00:00:00 2001 From: Marco Pashkov Date: Wed, 20 May 2020 08:39:25 -0700 Subject: [PATCH 5/7] `sending power` to `transmit power` (as discussed above in pull request) --- solution_architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution_architecture.md b/solution_architecture.md index 3ff80fd..8698816 100644 --- a/solution_architecture.md +++ b/solution_architecture.md @@ -37,7 +37,7 @@ With the Corona-Warn-App (see [scoping document](https://github.com/corona-warn- Identifiers are ID numbers sent out by the phones. To ensure privacy and prevent tracking of movement patterns of the app user, those broadcasted identifiers are only temporary and change constantly. New identifiers are derived from a Temporary Exposure Key (TEK) that substitutes daily at midnight (UTC) through means of cryptography, which will be explained in more detail in *Figure 10*. When the TEKs are linked to a positive test, they remain technically the same, but are called Diagnosis Keys. The collected identifiers of other users, as well as the own keys (which can later be used to derive the identifiers) are stored locally on the phone within the secure storage of the framework provided by Apple and Google. This secure storage cannot be accessed directly by the application, but only through the interfaces provided by the Exposure Notification Framework. Some of those interfaces are subjected to [rate limiting](https://developer.apple.com/documentation/exposurenotification/enmanager/3586331-detectexposures), in order to prevent misuse. In case users were tested positively for SARS-CoV-2, they can update their status in the app by providing a verification of their test and select an option to send their recent keys of up to 14 days. Once the keys have been uploaded to the Corona-Warn-App backend server, all keys of positively tested people are aggregated. This list of keys is then made available to all mobile phones with the app installed. Additionally, configuration parameters for the framework are available for download, so that adjustments to the calulation of the risk score can be taken (see the section regarding *Risk Scores*). -Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification API, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. signal strength), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters of an individual on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. +Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification API, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. transmit power), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters of an individual on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. It is important to notice at this point, that the people that have been exposed to a positively tested person are **not informed by a central instance**, but the risk of an exposure is calculated locally on their phones. The information about the exposure remains on the user’s phone and is not shared. From 17354f4370e5fe1e32486879c5b4115e7de6e041 Mon Sep 17 00:00:00 2001 From: Marco Pashkov Date: Wed, 20 May 2020 08:46:56 -0700 Subject: [PATCH 6/7] Update solution_architecture.md --- solution_architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution_architecture.md b/solution_architecture.md index bea80cf..8858ef7 100644 --- a/solution_architecture.md +++ b/solution_architecture.md @@ -29,7 +29,7 @@ Assuming a close association of a mobile phone and its user, we equate the devic ## INTRODUCTION -To reduce the spread of [COVID-19](https://www.ecdc.europa.eu/en/covid-19-pandemic) it is necessary to inform people about their close proximity to positively tested individuals. So far, health departments and persons identified these in personal dialogues based on people’s memory, which led to a high number of unknown connections, e.g. when using public transport. +To reduce the spread of [COVID-19](https://www.ecdc.europa.eu/en/covid-19-pandemic) it is necessary to inform people about their close proximity to positively tested individuals. So far, health departments and affected individuals identified these in personal dialogues based on people’s memory, which led to a high number of unknown connections, e.g. when using public transport. ![Figure 1: High-level architecture overview](images/solution_architecture/figure_1.svg "Figure 1: High-level architecture overview") From 4be065f858bc5c04e503bff9059d8c64dd1d51fa Mon Sep 17 00:00:00 2001 From: Thomas Klingbeil Date: Wed, 20 May 2020 17:56:36 +0200 Subject: [PATCH 7/7] use words API/framework correctly --- solution_architecture.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/solution_architecture.md b/solution_architecture.md index 65f87a1..542bf31 100644 --- a/solution_architecture.md +++ b/solution_architecture.md @@ -33,11 +33,11 @@ To reduce the spread of [COVID-19](https://www.ecdc.europa.eu/en/covid-19-pandem ![Figure 1: High-level architecture overview](images/solution_architecture/figure_1.svg "Figure 1: High-level architecture overview") -With the Corona-Warn-App (see [scoping document](https://github.com/corona-warn-app/cwa-documentation/blob/master/scoping_document.md )), shown centrally in *Figure 1*, individuals are enabled to trace their personal exposure risk through the means of their mobile phones. The application makes use of a new API made available by Apple and Google, called [Exposure Notification Framework](https://www.apple.com/covid19/contacttracing). It employs [Bluetooth Low Energy (BLE)](https://en.wikipedia.org/wiki/Bluetooth_Low_Energy) mechanics that let the individual phones act as beacons (constantly broadcasting a temporary identifier (called Rolling Proximity Identifier – RPI) to be remembered by), while scanning for identifiers of other phones at the same time (shown on the right side of *Figure 1*). +With the Corona-Warn-App (see [scoping document](https://github.com/corona-warn-app/cwa-documentation/blob/master/scoping_document.md )), shown centrally in *Figure 1*, individuals are enabled to trace their personal exposure risk through the means of their mobile phones. The application makes use of a new framework made available by Apple and Google, called [Exposure Notification Framework](https://www.apple.com/covid19/contacttracing). It employs [Bluetooth Low Energy (BLE)](https://en.wikipedia.org/wiki/Bluetooth_Low_Energy) mechanics that let the individual phones act as beacons (constantly broadcasting a temporary identifier (called Rolling Proximity Identifier – RPI) to be remembered by), while scanning for identifiers of other phones at the same time (shown on the right side of *Figure 1*). Identifiers are ID numbers sent out by the phones. To ensure privacy and prevent tracking of movement patterns of the app user, those broadcasted identifiers are only temporary and change constantly. New identifiers are derived from a Temporary Exposure Key (TEK) that substitutes daily at midnight (UTC) through means of cryptography, which will be explained in more detail in *Figure 10*. When the TEKs are linked to a positive test, they remain technically the same, but are called Diagnosis Keys. The collected identifiers of other users, as well as the own keys (which can later be used to derive the identifiers) are stored locally on the phone within the secure storage of the framework provided by Apple and Google. This secure storage cannot be accessed directly by the application, but only through the interfaces provided by the Exposure Notification Framework. Some of those interfaces are subjected to [rate limiting](https://developer.apple.com/documentation/exposurenotification/enmanager/3586331-detectexposures), in order to prevent misuse. In case users were tested positively for SARS-CoV-2, they can update their status in the app by providing a verification of their test and select an option to send their recent keys of up to 14 days. Once the keys have been uploaded to the Corona-Warn-App backend server, all keys of positively tested people are aggregated. This list of keys is then made available to all mobile phones with the app installed. Additionally, configuration parameters for the framework are available for download, so that adjustments to the calulation of the risk score can be taken (see the section regarding *Risk Scores*). -Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification API, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. sending power), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters of an individual on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. +Once the keys and the exposure detection configuration have been downloaded, the data is handed over to the Exposure Notification framework, which analyzes whether one of the identifiers collected by the phone matches to those of an infected person. Additionally, meta data that has been broadcasted together with the identifiers (e.g. sending power), can now be decrypted and used. Based on the collected data a risk score for each individual exposure as well as for the overall situation is calculated for every single user within the Exposure Notification framework by Apple and Google. Exposures are defined as an aggregation of all encounters with another person on a single calendar day (UTC timezone). For privacy reasons it is not possible to track encounters with other individuals across multiple days. It is important to notice at this point, that the people that have been exposed to a positively tested person are **not informed by a central instance**, but the risk of an exposure is calculated locally on their phones. The information about the exposure remains on the user’s phone and is not shared. @@ -67,7 +67,7 @@ The flow for using the app is as follows, referencing the steps from *Figure 2*: - **Step 2:** The samples are transported to the lab (together with a “Probenbegleitschein”, which has a machine-readable QR code on it, as well as multiple other barcodes (lab ID, sample IDs). - **Step 3:** As soon as the test result is available (i.e. the samples have been processed), the software running locally in the lab (lab client) transmits the test result to the Laboratory Information System, together with the GUID from the QR code. The Laboratory Information System hashes the GUID and the test result. It is made available to the Verification Server through a REST interface. - **Step 4a:** After signing up for notifications in step 1, the user’s phone regularly checks the Verification Server for available test results (polling, figure 3, steps 5-8). This way, no external push servers need to be used. If results are available, the user is informed about the availability of information and only after opening the app, the result is displayed, together with recommandations for further actions (see scoping document for more details). -- In case the test returned a positive result, users are asked to upload their keys to allow others to find out that they were exposed. If the users agree, the app retrieves a short-lived token (TAN) from the Verification Server (see also *Figure 3*, steps 6-8). The TAN is uploaded together with the diagnosis keys of up to the last 14 days to the Corona-Warn-App Server (*Figure 3*, step 12). +- In case the test returned a positive result, users are asked to upload their keys to allow others to find out that they were exposed. If the users agree, the app retrieves a short-lived token (TAN) from the Verification Server (see also *Figure 3*, steps 9-11). The TAN is uploaded together with the diagnosis keys of up to the last 14 days to the Corona-Warn-App Server (*Figure 3*, step 12). - The Corona-Warn-App Server uses the TAN to verify the authenticity (*Figure 3*, steps 13-15) of the submission with the Verification Server. - The TAN is consumed by the Verification Server and becomes invalid (*Figure 3*, step 14) - If the Corona-Warn-App Server receives a positive confirmation, the uploaded diagnosis keys are stored in the database (*Figure 3*, step 16). @@ -124,7 +124,7 @@ It is to note that even if a user has not been tested positive, the app randomly If diagnosis keys need to be uploaded on subsequent days of the submission of a positive test result, also that behavior should be represented within the random (dummy) submissions. -The possibility to identify temporary exposure keys belonging together (i.e. to the same user) is given, as they are posted together – resulting in them being in a sequential order in the database. To prevent this, the aggregated files will shuffled, e.g. by using an ORDER BY RANDOM on the database side while fetching the data for the corresponding file. Alternatively, returning them in the lexicographic order of the RPIs (which are random) is a valid option as well. +The possibility to identify temporary exposure keys belonging together (i.e. to the same user) is given, as they are posted together – resulting in them being in a sequential order in the database. To prevent this, the aggregated files will be shuffled, e.g. by using an ORDER BY RANDOM on the database side while fetching the data for the corresponding file. Alternatively, returning them in the lexicographic order of the RPIs (which are random) is a valid option as well. The configuration parameters mentioned above allow the health authorities to dynamically adjust the behavior of the mobile applications to the current epidemiological situation. For example, the risk score thresholds for the risk levels can be adjusted, as well as how the individual data from exposure events influence the overall score. @@ -229,7 +229,7 @@ If the backend calls from the mobile applications cannot be spread as evenly as ## Cross-border interoperability -A definite prerequisite for compatibility is, that the identifiers of the mobile devices can be matched, i.e. the API by Apple/Google is being used. +A definite prerequisite for compatibility is, that the identifiers of the mobile devices can be matched, i.e. the framework by Apple/Google is being used. Further details will be added as soon as they are available.