Corona Warn App – Ein technischer Blick hinter die Kulissen

Grund genug für uns, mal einen professionellen Entwickler-Blick hinter die Kulissen und damit in die technische Umsetzung zu werfen. Wir wollen uns in diesem Blogartikel folglich darauf konzentrieren, WIE die Anwendung im Wesentlichen technisch umgesetzt wurde (für die Beschreibung, WAS fachlich passiert, möchten wir auf die Vielzahl von bereits verfügbaren Quellen verweisen)1.

In der Technical Documentation fällt zunächst auf, dass mit TAM (Technical Architecture Modeling) eine eigene Notation genutzt wird, die auf UML basiert2. Nachfolgend ist hierzu ein Beispiel in Form der High-Level Architektur aufgeführt, welche einen schönen Überblick über die gesamte Systemlandschaft gibt und die wir uns deshalb nachfolgend etwas genauer anschauen.

High-level architecture overview
Abbildung 1: High-level architecture overview Quelle: https://github.com/corona-warn-app/cwa-documentation/blob/master/solution_architecture.md

Mobile Phone

Kern der Corona Warn App (CWA) ist das Exposure Notification Framework, welches in Zusammenarbeit von Google und Apple bereitgestellt wurde3. Dieses Framework nutzt die Bluetooth Low Energy Funktechnik, welche besonders energieeffizient ist und für die Kommunikation über kurze Distanzen (<10m) geeignet ist. Damit wird kontinuierlich eine eindeutige Kennung in Form einer ID (im Bild mit RPI bezeichnet)4 über einen Broadcast ausgesendet. Diese ID ist grundsätzlich für alle Geräte im Umkreis des jeweiligen Handys auslesbar5. Sämtliche IDs (die selbst generierten und die ausgelesenen IDs anderer Handys) werden verschlüsselt lokal auf dem Gerät gespeichert.

Das Exposure Notification Framework ist auch für die Berechnung eines Risk Score zuständig, der das Risiko für einen Corona-Kontakt ermittelt6. Wichtig ist hierbei, dass diese Risikoermittlung vollständig lokal auf dem jeweiligen Endgerät erfolgt und keine anderen Stellen/ Systeme darüber informiert werden.

Beispiel für die Anzeige des Risk Score
Abbildung 2: Beispiel für die Anzeige des Risk Score. Quelle: https://github.com/corona-warn-app/cwa-documentation/blob/master/images/ui_screens/ui_screens_android.png

Um dieses Framework herum sind alle weiteren Funktionalitäten der App gebaut:

  1. Exposure Tracing Management: Verwaltet die Nachverfolgungsfunktionen (Aktivierung, Deaktivierung, Status Check, Zugriff auf die technischen Services).
  2. Exposure Risk Level Calculation: Berechnet das individuelle Risiko für einen Corona-Kontakt.
  3. Diagnosis Key Submission: Übermittelt Daten zu einem positiven Coronatest (TAN + Diagnose Key) an das Backend.
  4. Test Result Access: Ermöglicht den Zugang zu den Corona-Testergebnissen. Dies wird entweder über das Einscannen eines QR-Codes oder die manuelle eines TANs ermöglicht.

Neben den nativen MobileOS Funktionen, die Android und iOS zur Verfügung stellt, werden noch die folgenden Frameworks eingesetzt7:

Android

  • Room als Abstraktionsschicht über SQLite.
  • SQLCipher zur Verschlüsselung der Room Datenbanken.

iOS

  • SQLCipher zur Verschlüsselung der Datenbanken.
  • swift-protobuf Protokoll-Puffer für den Datenaustausch und das Parsen von Daten.
  • fmdb Für den Zugang auf SQLite.
App-Architektur.
Abbildung 3: App-Architektur. Quelle: https://raw.githubusercontent.com/corona-warn-app/cwa-app-android/master/docs/images/Architecture_Overview_v1.svg.

Weiterhin kommuniziert die App im Wesentlichen mit zwei Backendsystemen via REST:

  1. mit einem Corona Warn App Server bzw. einem vorgeschalteten Content Delivery Network (CDN) und
  2. mit einem Verification Server.

Wie die Backendsystemlandschaft genau aussieht? Wir geben Ihnen einen tiefergehenden Eindruck:

Technischer Überblick über die Backend Infrastruktur der Corona Warn App

Es gibt einige Komponenten, die sich durch die gesamte Backend Landschaft ziehen. Zunächst ist die gesamte Umgebung in der Open Telekom Cloud (OTC) gehostet und läuft auf einem Kubernetes Cluster und dem OpenShift Stack. Es gibt vier verschiedene Umgebungen (DEV, INT, WRU, PROD), für die es jeweils ein separates OTC Unterprojekt gibt. Pro Umgebung gibt es zwei separate OpenShift Stacks – einen für die Backend Services und einen für die PaaS Services – mit jeweils eigenem Namespace.

Corona Warn App Server und CDN

Der Corona Warn App Server hat im Wesentlichen zwei Aufgaben, die jeweils in einem eigenen Service gekapselt wurden (siehe hierzu auch Abbildung 4):

  1. Submission Service: TAN und Diagnose Key von den Mobile Clients entgegennehmen, die TAN vom Verification Server prüfen lassen und die Daten dann abspeichern.
  2. Distribution Service: Das Bereitstellen von Daten für die Mobile Clients in Form von zwei Dateitypen:
    1. Diagnose Keys von Nutzern die positiv getestet wurden,
    2. Konfigurationsdaten, die es ermöglichen den Risk Score zu berechnen und die App zu konfigurieren.
Corona Warn App Server Architektur
Abbildung 4: Corona Warn App Server Architektur. Quelle: https://github.com/corona-warn-app/cwa-server/raw/master/docs/images/v4.png

Beide Services laufen jeweils in einem eigenen Docker Container und greifen auf eine Postgres Datenbank zu. Der Distribution Service läuft 1x pro Stunde als Cronjob. Der Distribution Service sendet die Dateien dabei an einen S3 konformen Object Store auf Basis von Zenko8. Diese Daten werden dann von einem Content Delivery Network (CDN) ausgelesen, um die Daten für die Mobile Clients möglichst performant zur Verfügung zu stellen9.

Der Submission Service läuft (kontinuierlich) als Webservice und kommuniziert hierbei auch via REST mit dem Verification Server. Wie der im Detail aussieht, schauen wir uns im nächsten Absatz genauer an.

Verification Server

Der Verification Server hat zwei Aufgaben:

  1. Prüfen, ob ein Nutzer positiv getestet wurde und diese Information dann anderen Systemkomponenten zur Verfügung stellen.
  2. Informationen über den Status von Testergebnissen bereitstellen.

Um dies zu ermöglichen, kommuniziert diese Komponente mit drei Systemen via REST:

  1. Corona Warn App Server (siehe vorheriger Abschnitt)
  2. Test Result Server: Stellt Informationen zu den Labor-/Testergebnissen bereit.
  3. Portal Server: Stellt Anfragen zur Generierung von teleTANs10.
Verification Server
Abbildung 5: Verification Server. Quelle: https://github.com/corona-warn-app/cwa-verification-server/raw/master/docs/architecture_overview.svg

Nach außen werden via SWAGGER fünf Endpoints angeboten:

SWAGGER UI
Abbildung 6: SWAGGER UI. Quelle: https://github.com/corona-warn-app/cwa-verification-server

Intern werden die REST Calls dann über entsprechende Services verarbeitet, wie z.B. einen TanService, einen AppSessionService oder einen TestResultServerService. Im Gegensatz zu dem im vorherigen Abschnitt beschriebenen Corona-Warn-App Server laufen diese Services jedoch nicht in separaten Docker Containern sondern sind lediglich in einzelne Klassen gekapselt.

Weiterhin wird technisch für die Implementierung im Wesentlichen Spring Boot, PostgreSQL, H2 und Liquibase genutzt.

Übergreifende Konzepte der Corona Warn App

Nachdem wir einen Blick in die drei wichtigsten Komponenten geworfen haben, möchten wir abschließend noch einen kurzen Überblick über einige übergreifende Konzepte geben.

  • Security/Verschlüsselung: Im Wesentlichen wird TLS, Hashing mit SHA-256, OpenID und Virtual Private Cloud Peering eingesetzt. Weiterhin wird ein Denial of Service Protection am Telekom Backbone eingesetzt.
  • Datenbanken: Wie schon beschrieben wird im Wesentlichen PostgresSQL version 11.5 mit entsprechend verschlüsselten Datenbanken gesetzt.
  • Tracing/ Logging/ Monitoring: Die Anwendung wird 24/7 vom der Telekom Cyber Defence Center überwacht. Für das Logging wird unter anderem Graylog eingesetzt.
  • Last: Zur Verteilung der Last werden entsprechende Load Balancer verwendet, die IP whitelisting und IP masking verwenden. Die Anwendung ist dafür ausgelegt 720 Millionen Requests am Tag zu verarbeiten, was etwa 8.500 Sessions pro Sekunde entspricht und einen Traffic in Höhe von ~42 TerraByte am Tag generieren würde.

Unser Fazit zur Corona App: Nachvollziehbarkeit ist Weg zum Vertrauen der Nutzer

„Softwaretechnologie kämpft seit jeher um das Vertrauen ihrer Benutzer. Oft ist intransparent, was die Software im Code tut außer das, was sie soll. Insbesondere, wenn es um den Schutz von persönlichen Daten geht. Der eingeschlagene Weg der Corona Warn App, vollständig auf OpenSource zu setzen ist diesbezüglich vorbildlich und der einzig mögliche Weg, das Vertrauen der Menschen zurückzugewinnen. Der gesamte Entwicklungsprozess war durchgängig transparent und für jeden Bürger nachvollziehbar und überprüfbar. Das macht Mut für die Zukunft, damit noch mehr öffentliche oder systemrelevante Projekte OpenSource gehen. Insbesondere, wenn sie mit Steuergeldern finanziert werden,“ sagt doubleSlash Geschäftsführer Konrad Krafft.

Der veröffentlichte Quellcode und die zugehörige Dokumentation zur Corona Warn App ermöglichen im Wesentlichen eine gute Nachvollziehbarkeit der implementierten Anwendung. Für das von Google/ Android bereitgestellte Exposure Notification Framework wurde zwar eine detaillierte Dokumentation veröffentlicht, der Quellcode selbst ist jedoch nicht offen einsehbar, was schade ist. Darüber hinaus wird mit Hilfe von State of the Art Technologien eine robuste, sichere Anwendung entwickelt, bei der sehr viel Wert auf Datenschutz gelegt wurde.


1 Beispielsweise https://www.bundesregierung.de/breg-de/themen/corona-warn-app

2 Die Definition eines eigene Modellierungsstandards ist im Übrigen ein Vorgehen, dass wir häufig bei großen OEMs sehen.

3 Die App ist als Android und iOS Variante verfügbar => daher diese beiden Firmen.

4 RPI steht für Rolling Proximity Identifier.

5 Um ein unerwünschtes Tracking, z.B. von Bewegungsdaten zu verhindern, wird diese Kennung alle 15 Sekunden erneuert. Diese Kennung wiederum wird aus einem sogenannten Temporary Exposure Key abgeleitet, der alle 24h erneuert wird.

6 Wer im Detail nachlesen möchte, wie dieser Risk Score berechnet wird, kann dies hier nachlesen.

7 Die nachfolgende Liste ist lediglich ein Auszug. Nähere Informationen können hier und hier nachgelesen werden.

8 Die Postgres DB und der Object Store laufen auch jeweils in eigenen Containern.

9 CDNs sind darauf spezialisiert statischen Content auf viele regionale Knoten zu verteilen und dort zu cachen, was dazu führt, dass Konsumenten dieses Contents schnell und kostenoptimiert bedient werden können.

10 Der teleTAN wird vom Nutzer via Hotline (also telefonisch) angefragt und stellt fachlich eine Alternative zum QR-Code dar.

 

Buzzword Dschungel Künstliche Intelligenz (KI) – die wichtigsten Begriffe auf einen Blick

In unseren Gesprächen mit Kunden und Partnern werden häufig Begriffe wie Künstliche Intelligenz (KI), Data Science oder Machine Learning in einem Atemzug genannt. Dabei schwirren zahlreiche Schlagworte durch die Gegend, die häufig gar nicht so klar voneinander abgrenzbar sind oder als Synonyme verwendet werden. Hier möchten wir Licht ins Dunkel bringen und einen kurzen und klaren Überblick über die wichtigsten Begriffe geben, diese kurz erläutern und zueinander abgrenzen.

Künstliche Intelligenz, Machine Learning, Neuronale Netze

KI bezeichnet die Automatisierung von menschlichem Verhalten. Man unterscheidet hierbei zwischen der starken und schwachen KI.

Vergleich Starke-Schwache KI
Vergleich Starke-Schwache KI

Von einer starken KI mit eigenem Bewusstsein und Empathie ist die Wissenschaft noch meilenweit entfernt. Wenn heutzutage von Künstlicher Intelligenz gesprochen wird, dann bezieht sich dies auf Anwendungsfälle im Bereich der schwachen KI. Diese Systeme sind in der Lage einzelne, klar abgegrenzte Aufgaben, wie z.B. Bilderkennung, gut zu lösen. Sie erlangen dabei aber kein tiefergehendes Verständnis des dahinterliegenden Problems und erscheinen dadurch nur nach außen intelligent.

Teilmengen Künstliche Intelligenz
Teilmengen Künstliche Intelligenz

Die schwache KI basiert dabei auf Methoden der Mathematik und Informatik. Ein wichtiges Subset von Methoden in diesem Bereich wird unter dem Begriff Machine Learning zusammengefasst. Neuronale Netze wiederum sind innerhalb des „Werkzeugkastens“ Machine Learning eine Methode bzw. ein Tool das eingesetzt werden kann. Innerhalb dieser Methode stellt das Deep Learning eine ganz spezielle Ausprägung eines neuronalen Netzes dar.

Das könnte Dich auch interessieren: DFKI-Projekt soll Deep-Learning-Verfahren verlässlicher machen (elektroniknet.de)

Data Analytics, Data Science, Data Mining

Unter Data Analytics versteht man zunächst alles was mit einer zielgerichteten Analyse von Daten zu tun hat. Auf Basis des Ergebnisses dieser Analyse sollen neue Schlussfolgerungen und Handlungsempfehlungen ermöglicht werden. Unter dem Begriff Data Analytics haben sich über die Zeit weitere Disziplinen, wie beispielsweise Data Science entwickelt.

Data Science ist der Überbegriff für eine Reihe an Methoden und Algorithmen mit denen man aus Daten Wissen generieren kann. Hierzu kommen ausgereifte Verfahren aus dem Bereich Mathematik, Statistik und Informatik zum Einsatz. Um die Ergebnisse dieser Verfahren auch korrekt interpretieren zu können, ist es notwendig, dass ein Data Scientist auch ein entsprechendes fachliches Wissen (z.B. über die Funktionsweise einer Windkraftanlage) mitbringt bzw. im Verlauf eines Projekts aufbaut. Mit Data Science ist man in der Lage, sowohl strukturierte Daten (z.B. eine Tabelle mit fest definierten Attributen wie Alter, Name, etc.), unstrukturierte Daten (z.B. ein komplexer Text in natürlicher Sprache) und semistrukturierte Daten (ein Mix aus strukturierten und unstrukturierten Daten) zu analysieren.

Data Science

Data Mining ist als ein Teilbereich innerhalb von Data Science zu verstehen. Ziel ist es, bisher unbekannter Querverbindungen, Trends oder Muster in großen Datenmengen zu finden. Dabei werden auch Methoden eingesetzt, die im Bereich Machine Learning Anwendung finden (z.B. Clustering). Da diese Methoden aber quasi „von Hand“ durch einen Menschen auf Daten angewendet werden, bringen Data Mining Techniken (im Gegensatz zu Machine Learning) keine selbstlernenden Mechanismen mit. Bildlich gesprochen lernt der Mensch und nicht die Maschine.

Rollen in einem Data Science Projekt

Innerhalb von Data Analytics Projekten benötigt man ganz unterschiedliche Skills und Experten. Die zugehörigen Rollen sind dabei sehr breit gefächert und oft nicht ganz klar voneinander abzugrenzen. Ein Data Scientist kann beispielsweise auch Aufgaben übernehmen, die man eher einem Data Engineer zuordnen würde und umgekehrt. So muss ein Data Scientist auch häufig Daten aufbereiten, da dies ein elementarer Bestandteil von vielen Datenanalyse-Projekten ist.

Data Science Projekt Rollen
Data Science Projekt Rollen

 

Im Data Analytics gibt es vier verschiedene Stufen, um große Datenmengen zu analysieren.

Datenanalyseverfahren

Analyseansätze im Data Analytics

 

Jede Stufe ist mit einer bestimmten Fragestellung verknüpft – die es gilt zu beantworten. Dabei steigt die Komplexität, um zu einer zielgerichteten Antwort auf die jeweilige Frage zu kommen. Gleichzeitig steigt aber auch der entsprechende Mehrwert der damit verbunden ist.

Machine Learning- Business Value und Komplexität

 

Business Intelligence, Advanced Analytics

Sowohl Business Intelligence als auch Advanced Analytics sind häufig verwendete Begriffe, die Verfahren und Prozesse zur Analyse von Daten des eigenen Unternehmens bezeichnen.

Business Intelligence ist der Vorreiter von Advanced Analytics, wo man durch Datenanalysen vergangene Ereignisse untersucht. Man kann Business Intelligence in den Analyseverfahren Descriptive und Diagnostic Analytics einordnen, da Fragen wie „Wie viele Produkte habe ich zu welchem Preis in welcher Region verkauft?“ beantwortet werden können.

Im Gegensatz zu Business Intelligence wird mit Advanced Analytics Methoden der Blick gezielt in die Zukunft gerichtet¹. Dadurch können Prognosen über zukünftige Ereignisse aufgestellt werden. Fragen wie „Wie viele Produkte sollen wir produzieren?“ oder „Wann soll eine Wartung durchgeführt werden?“ können beantwortet werden. So ist Advanced Analytics unter den Predictive und Prescriptive Analytics Verfahren einzuordnen.

ETL, Big Data, Data Lake, Data Discovery, Data Exploration

ETL bedeutet Extract, Transform und Load und ist die Grundlage für die Befüllung von Data Warehouse und eine Basistechnologie zur Datenintegration. Zuerst werden die Daten extrahiert aus ein oder mehreren Quellen, dann transformiert in ein gewünschtes Zielformat und zuletzt an einen Zielort abgelegt.

Volume, Variety und Velocity sind die drei Dimensionen von Big Data. Was bedeutet, dass dieses Phänomen sich aus rasant (Velocity) steigender (Volume) Daten unterschiedlicher Art (Variety) ergibt. Daraus ergeben sich sowohl Herausforderungen wie das Speichern, Verwalten, als auch Chancen wie Möglichkeiten diese Daten auszuwerten.

In einem Data Lakewerden strukturierte und unstrukturierte Daten aus verschiedenen Datenquellen zusammengeführt mit dem Ziel, die verschiedenen, isolierten Datensilos eines Unternehmens aufzubrechen und die Daten an einen zentralen Ort zusammenzuführen. Auf diesen, dort gespeicherten Rohdaten können dann weitergehende, komplexe Datenanalysen durchgeführt werden.

Der Discovery Prozess im Bereich Data Discovery deckt die Erforschung und die Vorbereitung der Daten ab. Der Prozess kann mit einem initialen Qualitätscheck starten. Um eine erste Einschätzung zum Potential der Daten zu erhalten, kann ein simples Machine Learning Model angewandt werden. Der Discovery Prozess dient dazu erste Hypothese, Ideen oder Datenpotential ausfindig zu machen.

Als Weiterführung von Data Discovery wird in Data Exploration nach „tieferen“ Entdeckungen gesucht, welche zu einem ersten Prototyp führen können. Ziel ist es die gewünschte Lösung festzulegen, damit sie nicht vom Ziel abweicht.

 

FAZIT: Buzzword Dschungel KI – viele Wege führen zum Mehrwert aus Daten

Im Laufe der Zeit ist eine Vielzahl an Begrifflichkeiten rundum KI entstanden, die sich häufig in Teilen überlappen und auch nicht immer ganz 100% klar voneinander abgegrenzt werden können. Bei genauerer Betrachtung stellt man fest, dass sich hinter jedem Buzzword eine eigene, häufig sehr spezialisierte Wissensdomäne versteckt, die mit einem entsprechenden technologischen und methodischen Know-How verbunden ist. Sie alle haben aber gemein, dass sie versuchen, neue Informationen und damit einen Mehrwert aus Daten zu generieren. Mit diesem Beitrag haben wir versucht, die Abgrenzungen und auch die Überschneidungen deutlich zu machen.

Co-Autorin Christina Reiter


¹https://www.alexanderthamm.com/de/artikel/advanced-analytics-theorie-und-praxis/

 

Wollen Sie mehr Durchblick im KI Dschungel? Hier entlang …

Scrum: Ein Reality Check

Es lässt sich mittlerweile statistisch gut belegen, dass Projekte die agile Methoden einsetzen signifikant erfolgreicher sind als Projekte, die ein klassisches Projektmanagement nutzen [1]. Daher verwenden auch wir in vielen Kundenprojekten agile Vorgehensweisen, von denen Scrum eine der populärsten und am weitesten verbreiteten Methoden ist.
Die Realität zeigt jedoch, dass die überwiegende Mehrheit der Projekte von einem durchgängig agilen Vorgehen abweichen.Mehr

IoT Prozessoptimierung und Big Data (Teil 2)

Im ersten Teil dieser BlogserieIoT Prozessoptimierung und Big Data - copyright_alphaspirit-Fotolia habe ich den Begriff Big Data sowie dessen Ursprung und Entwicklungsgeschichte erläutert. In diesem zweiten Teil soll der Zusammenhang zwischen Big Data und dem Reifegrad von IoT Geschäftsprozessen erläutert werden.

In Beratungsgesprächen und Workshops mit Kunden nutzen wir bei doubleSlash ein einfaches Reifegradmodell. Das Modell zeigt auf, wie weit ein Unternehmen in Bezug auf seine IoT Geschäftsprozesse bereits entwickelt ist.

Mehr

IoT Prozessoptimierung und Big Data (Teil 1)

IoT Prozessoptimierung und Big DataJede Firma ist bestrebt ihre Geschäftsprozesse so schlank und effizient wie möglich zu gestalten. Genauso ist jedes Unternehmen heutzutage daran gewöhnt, mit großen Datenmengen umzugehen. Und vernetzt ist inzwischen sowieso alles und jeder. Hierzu muss man nur mal kurz das eigene Handy aus der Hosentasche nehmen und die letzten 50 E-Mails checken.

Mehr