$30 off During Our Annual Pro Sale. View Details »

Die CORONA-WARN-APP (CWA)

Die CORONA-WARN-APP (CWA)

Was steckt hinter einer App? Aspekte komplexer Softwaresysteme.


Nicht erst seit „gestern“ bestimmen Softwaresysteme in zunehmendem Maße unseren Alltag.
Hinter sozialen Medien, Sport-Communities im Internet, Banking, Booking, etc stehen komplexe Softwaresystem.

Doch wieviel sehen wir davon im Alltag? Wohl in vielen Fällen nur noch eine „App“, nicht nur außerhalb der IT-Filterblase.
Twitter, Strava, die Banking- oder Bahn-App: Alles schrumpft zu einem Icon auf dem Homedisplays des Smartphones.

Während diese Apps das Leben ein bisschen witziger, komfortabler oder einfacher machen, so sind sie nicht notwendig.
2020 könnte eine App aber in vielen Ländern verpflichten, in einigen notwendig werden: Eine Anwendung zur Nachverfolgung von Kontakten und je nach Land, auch des Aufenthaltsortes.

In Deutschland wird diese App „Corona-Warn-App“ heißen und durch ein Konsortium der SAP und Telekom entwickelt.
Nach anfänglichem Zögern geschieht das als Open-Source-Projekt, vollständig öffentlich und unter einer freien Lizenz.

Dies gibt interessierten Menschen die Gelegenheit, sich mit dem Projekt zu beschäftigen: Was genau wird eigentlich implementiert? Wie wird das Projekt dokumentiert? Welche Technologien werden eingesetzt?

Wir werden uns das Projekt anschauen und analysieren, aus welchen Teilen eigentlich eine „App“ besteht und feststellen, dass es sich mit vielen Apps wie mit einem Eisberg verhält: Ein kleiner Teil ist für die Menschen auf dem Smartphone sichtbar, der weitaus größere Teil geschieht wo anders. Wo anders ist heutzutage oftmals „die Cloud“. Schlussendlich besteht „die Cloud“ aber auch nur aus den leistungsstarken Rechnern anderer Leute.

Meine Expertise besteht insbesondere in der Entwicklung von Datenbanknahen Anwendungen im Java-Umfeld. Ich mache das nun bereits seit 20 Jahren kommerziell und im Open-Source-Umfeld. Ich bin Autor zweier Bücher (Arc42 by Example (einem Buch über Dokumentation von Softwarearchitektur) sowie Spring Boot 2 - Das Buch (einem Buch über das gleichnamige Framework) und schreibe regelmässig Fachartikel für das JavaMagazin, c’t und andere Publikationen.

Unter diesem Aspekt werden wir insbesondere den Datenfluss im Corona-Warn-App-Server anschauen.

Michael Simons

June 15, 2020
Tweet

More Decks by Michael Simons

Other Decks in Programming

Transcript

  1. MICHAEL SIMONS AKA @ROTNROLL666
    Was steckt hinter einer App? Aspekte komplexer Softwaresysteme.
    Eine Gastvorlesung an der FH Aachen.
    CORONA-WARN-APP (CWA)

    View Slide

  2. ALLE ILLUSTRATIONEN © CWA
    UNTER APACHE 2 LIZEN

    View Slide

  3. AGENDA
    Was qualifiziert mich, über die App zu schreiben?
    Einordnung: Digitale Bildung, Verantwortung und Begehrlichkeiten
    Sind Open-Source-ProjektE automatisch öffentlich?
    Bestandteile der CORONA-WARN-APP (CWA)
    Und dann?

    View Slide

  4. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Autor (Spring Boot 2 und Arc42 by example)
    - Java Champion
    - Open Source Entwickler bei Neo4j
    - Und sonst:
    - Gründer und aktueller Leiter der Java User Group EuregJUG
    - Vater, Ehemann, Cycling, Running
    WAS QUALIFIZIERT MICH, ÜBER DIE APP ZU SCHREIBEN? 4

    View Slide

  5. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA)
    @rotnroll666, FH Aachen, 15. Juni 2020
    - Native Graphendatenbank
    - In großen Teilen Open Source
    - Viele 100% Open Source
    Projekte „drum herum“
    - Meine primäre Tätigkeit:
    - Entwicklung und Pflege der
    Spring Integration
    - Treiberentwicklung
    NEO4J
    MEIN ARBEIT
    5
    Native Graph Platform
    Neo4j is an internet-scale, native graph
    database which executes connected
    workloads faster than any other database
    management system.

    View Slide

  6. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Ausbildung Mathematisch-technischer Assistent
    - FH Studium „Technomathematik“
    - Datenmodellierung und Produktentwicklung im Energiemarkt
    - Sehr Datenbankzentrisch
    - Client / Server
    - Webanwendungen
    - Stack
    - Oracle Tools
    - SQL
    - Java
    - Berater
    UND VORHER SO? 6

    View Slide

  7. 100% ENTWICKLER_IN ODER DOCH AUCH LIEBER
    INHALTLICHE KENNTNISSE?

    View Slide

  8. EINORDNUNG: DIGITALE BILDUNG,
    VERANTWORTUNG UND BEGEHRLICHKEITEN

    View Slide

  9. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA)
    @rotnroll666, FH Aachen, 15. Juni 2020
    Aus einem Antrag von
    B’90 / Die Grünen
    - Installation einer „App oder
    Software“ zur Kontrolle der
    Rechner von Schüler_Innen
    - Kontrolle
    - Überwachung
    - „Gutes Lernen“
    APPS ZUM „GUTEN
    FERNLERNEN“
    QUELLE: DAS INTERNET(*)
    9
    (*) https://twitter.com/nblr/status/1270977603072122880

    View Slide

  10. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    BEGEHRLICHKEITEN 10
    Aus: https://www.oldenburger-onlinezeitung.de/nachrichten/landkreise-fordern-namen-und-ortsdaten-aus-corona-app-40380.html
    „Der Deutsche Landkreistag fordert in einem Schreiben an Kanzleramtsminister
    Helge Braun (CDU) und Bundesgesundheitsminister Jens Spahn (ebenfalls
    CDU), der der "Frankfurter Allgemeinen Sonntagszeitung" vorliegt und aus dem
    sie zitiert, die geplante Corona-App solle auch die Kontaktdaten der Nutzer
    sowie deren zeitlichen und örtlichen Umstände an die zuständigen Behörden
    leiten.“ 27. April 2020
    Aus: https://www.br.de/nachrichten/deutschland-welt/corona-apps-und-tracking-in-israel,Rw2L5uh
    „In Israel setzt das Gesundheitsministerium im Kampf gegen das Coronavirus auf eine
    App mit dem Namen "Schutzschild". Die Behörden füttern das System mit Daten von
    Corona-Infizierten, vor allem mit deren bekannten Bewegungsprofilen der letzten 14 Tage
    vor der vermuteten Ansteckung. Während die Nutzung dieser App freiwillig ist, setzt die
    israelische Regierung aber auch auf gezielte Überwachung. Der Inlandsgeheimdienst
    wurde ermächtigt, die Smartphones von Corona-Infizierten regelrecht zu hacken,
    Kontaktpersonen zu ermitteln und diese per Textnachricht aufs Telefon in Quarantäne zu
    schicken.“ 14. April 2020

    View Slide

  11. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - U.a. anonymisierten Google Daten (Location Tracking, Maps etc.)
    - Anonymisierte Mobilfunkbewegungsdaten (Zellenwechsel)
    - U.a. die Telekom selber bietet diese Daten der Bundesregierung bereits an
    - Aber: Bereits 21. März 2020 Gesetzentwürfe zur Freigabe erweiterter,
    personenbezogen Daten:
    „Dazu sollen die zuständigen Behörden „zum Zwecke der Nachverfolgung von
    Kontaktpersonen technische Mittel einsetzen“ dürfen, „um Kontaktpersonen von
    erkrankten Personen zu ermitteln, sofern aufgrund epidemiologischer Erkenntnisse
    gesichert ist, dass dies zum Schutz der Bevölkerung vor einer Gefährdung durch
    schwerwiegende übertragbare Krankheiten erforderlich ist“, heißt es in dem
    Entwurf.“
    BEWEGUNGSDATEN 11
    Aus: https://www.handelsblatt.com/politik/deutschland/handytracking-spahn-will-zugri -auf-mobilfunkdaten-von-corona-kontaktpersonen/25669028.html

    View Slide

  12. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    WIE SIEHT EUER SMARTPHONE SO AUS? 12

    View Slide

  13. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Mit der Corona-App gegen US-
    Demonstranten?
    https://www.heise.de/tp/features/Mit-
    der-Corona-App-gegen-US-
    Demonstranten-4776223.html
    UND DANN? 13

    View Slide

  14. SIND OPEN-SOURCE-PROJEKTE AUTOMATISCH
    ÖFFENTLICH?

    View Slide

  15. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Nicht jedes Open-Source-Projekt wird in der Ö entlichkeit entwickelt
    - Privates Repository, (teilweise) sync in ö entliche Repositories
    - Einmalige „Code dumps“
    - Ö entliche Repositories ohne Interaktion
    - Corona-Warn-App:
    - Open-Source-Projekt unter Apache 2 Lizenz
    - Ö entliche Organisation https://github.com/corona-warn-app
    - Ebenso die Teilprojekte, inkl. Issue Tracker
    - Mehrere Repositories je Komponente (Kein Monorepo)
    OPEN-SOURCE-PROJEKT == ÖFFENTLICHES PROJEKT? 15

    View Slide

  16. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Nein.
    - CWA wird entwickelt durch SAP und die Deutsche Telekom
    - Betrieben in der Open Telekom Cloud (OTC, https://open-telekom-cloud.com/)
    - „Die Entwicklung der Corona-Warn-App des Bundes durch SAP und die Deutsche
    Telekom wird rund 20 Millionen Euro kosten.“ (https://www.heise.de/news/Corona-
    Warn-App-kostet-den-Bund-rund-20-Millionen-Euro-4781235.html, 11. Juni 2020)
    OPEN-SOURCE == KOSTENLOS? 16

    View Slide

  17. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Scope des Projektes
    - Stories https://github.com/corona-warn-app/cwa-documentation/blob/master/
    scoping_document.md
    - Screen-Designs
    - Technische Dokumentation
    - Architektur der Lösung (https://github.com/corona-warn-app/cwa-documentation/blob/
    master/solution_architecture.md)
    - Beschreibung der Design Prozesse
    - Für alle Server Komponenten
    - Beinhaltet Kontexte, Definition fachlicher Entitäten, Aktoren
    - Architekturen der mobilen Apps
    - Evaluierungs- und Sicherheitskritierien
    PROJEKTDOKUMENTATION 17
    https://github.com/corona-warn-app/cwa-documentation

    View Slide

  18. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    INTERAKTION: ISSUES 18

    View Slide

  19. BESTANDTEILE DER
    CORONA-WARN-APP

    View Slide

  20. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020 20

    View Slide

  21. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA)
    @rotnroll666, FH Aachen, 15. Juni 2020
    - Framework für dezentrale
    Kontaktnachverfolgung
    - Basisimplementierung durch
    Googles/Apples Exposure
    Notification Framework (ENF)
    DECENTRALIZED PRIVACY-
    PRESERVING PROXIMITY
    TRACING
    DIE GRUNDLAGE: DP3T
    21

    View Slide

  22. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    ENF IM EINSATZ (SENDEN) 22

    View Slide

  23. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    RISIKOBESTIMMUNG 23

    View Slide

  24. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    ENF IM EINSATZ (EMPFANG) 24

    View Slide

  25. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    MIND THE GAP 25
    https://twitter.com/nipafx/status/1272140089410359296
    https://arxiv.org/abs/2006.05914

    View Slide

  26. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020 26
    DIE MOBILE APP
    Review: http://winkenschuerfel.de/die-corona-warn-app-ein-code-review/

    View Slide

  27. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    BACKEND UND PROZESS 27

    View Slide

  28. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    BEISPIEL DATENFLUSS VERIFIKATIONSSERVER 28

    View Slide

  29. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Ersetzt die generierte GUID
    - Muss manuell eingegeben werden
    ALTERNATIVE LÖSUNG MIT „TELETAN“ 29

    View Slide

  30. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    GÜLTIGES UPLOAD ZEITFENSTER 30

    View Slide

  31. BETRACHTETE BACKEND-KOMPONENTEN

    View Slide

  32. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - https://github.com/corona-warn-app/cwa-server
    - Multi-Module-Projekt
    - Java
    - Verwendete Frameworks: Spring, Spring Boot, JPA (Hibernate)
    - PostgreSQL Datenbank
    - Zielplattform: Kubernetes / Openshift in der Open Telekom cloud
    CORONA-WARN-APP-SERVER 32

    View Slide

  33. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    CORONA-WARN-APP-SERVER 33
    > cwa-server git:(master) ./mvnw clean verify

    [INFO] Reactor Summary for server 0.5.3-SNAPSHOT:

    [INFO]

    [INFO] server ............................................. SUCCESS [ 1.301 s]

    [INFO] common ............................................. SUCCESS [ 0.066 s]

    [INFO] protocols .......................................... SUCCESS [ 4.354 s]

    [INFO] persistence ........................................ SUCCESS [ 11.746 s]

    [INFO] services ........................................... SUCCESS [ 0.326 s]

    [INFO] distribution ....................................... SUCCESS [ 14.035 s]

    [INFO] submission ......................................... SUCCESS [ 13.675 s]

    [INFO] ------------------------------------------------------------------------

    View Slide

  34. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    CORONA-WARN-APP-SERVER: DATENMODEL 34
    CREATE TABLE diagnosis_key (

    id bigserial PRIMARY KEY,

    key_data bytea,

    rolling_period bigint NOT NULL,

    rolling_start_number bigint NOT NULL,

    submission_timestamp bigint NOT NULL,

    transmission_risk_level integer NOT NULL

    );
    A Data Model

    View Slide

  35. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - https://github.com/corona-warn-app/cwa-verification-server
    - Single-Module
    - Java
    - Verwendete Frameworks: Spring, Spring Boot, JPA (Hibernate)
    - PostgreSQL Datenbank
    - Mehr Abhängigkeiten
    - Stack zur Interaktion von REST-Webservices
    - Andere Datenbankmigrationstools
    - Ebenfalls Datensparsam
    - Dokumentation und Stories finden sich im Code wieder
    https://github.com/corona-warn-app/cwa-verification-server/blob/master/docs/architecture-
    overview.md
    VERIFIKATION-SERVER 35

    View Slide

  36. OFFENE FRAGEN UND FAZIT

    View Slide

  37. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Konfiguration und Orchestrierung der Produktionsumgebung
    - Buildsetup für die in Produktion gehenden Artefakte
    - Es bestünde theoretisch die Möglichkeit, über Spring Boot Mechanismen dynamisch
    zusätzliche Komponenten in den Build zu laden
    - Datenbankverschlüsselung und Schutz der Object-Stores
    - Automatisch anfallende Daten:
    - Serverlogs
    - IP-Adressen
    OFFENE FRAGEN 37

    View Slide

  38. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Hervorragend dokumentiert (SAP hätte eventuell unser arc42 nutzen können !)
    - Kein „Clean-Code“ oder DDD-Leuchtturm-Projekt
    - Muss es auch nicht sein. Es muss sicher, Datensparsam und funktionell sein
    - DP3T umgesetzt
    - Ho entlich nicht verbrannt aufgrund der „Datenspende App“ des Robert-Koch-Instituts
    im April
    FAZIT 38

    View Slide

  39. UND DANN?

    View Slide

  40. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Positiver Test: Quarantäne wird so oder so angeordnet (Im Zweifelsfall eh Krankenhaus)
    - Kontakt mit positiv getesteten Menschen: Verpflichten Quarantäne oder dringliche
    Empfehlung?
    - App als „Eintrittskarte“ zu Dingen?
    - „Not being infected“ das Maß der Dinge? Wer ist in der Beweisspflicht?
    - Empfehlenswert: „The long tail of contract tracing“ https://github.com/DP-3T/
    documents/issues/118
    IM FALLE EINER INFEKTION 40

    View Slide

  41. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - Entlastung für Ämter: Quarano https://www.quarano.de
    - Ein Ergebnis des „WirVsVirus“ Hackathons
    - Ebenfalls Open Source (EUPL-1.2)
    - „Langweilig“:
    - Erfassung von Kontaktketten in Gesundheitsämtern
    - Quarantäne Tagebücher
    - Symptomtagebücher
    ‣Digitalisierung im Wortsinne
    ALTERNATIVEN UND ERGÄNZUNGEN 41

    View Slide

  42. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666, FH Aachen, 15. Juni 2020
    - https://www.coronawarn.app
    - https://github.com/corona-warn-app
    - https://github.com/DP-3T/documents
    - https://www.google.com/covid19/exposurenotifications/
    - https://info.michael-simons.eu/2020/05/31/die-deutsche-corona-warn-app-cwa/
    - https://www.heise.de/hintergrund/Corona-Tracking-Wie-Contact-Tracing-Apps-
    funktionieren-was-davon-zu-halten-ist-4709903.html
    - https://www.verbraucherzentrale.nrw/wissen/digitale-welt/apps-und-software/
    coronawarnung-per-app-fragen-und-antworten-zur-geplanten-tracingapp-47466
    - https://ukw.fm/ukw029-corona-weekly-neuer-fall-nur-gestern/
    - https://twitter.com/nipafx/status/1270640694705692672
    RESSOURCEN 42

    View Slide