Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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)
  2. 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?
  3. 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
  4. 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.
  5. 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
  6. 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
  7. 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
  8. 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
  9. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666,

    FH Aachen, 15. Juni 2020 WIE SIEHT EUER SMARTPHONE SO AUS? 12
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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/
  17. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666,

    FH Aachen, 15. Juni 2020 BEISPIEL DATENFLUSS VERIFIKATIONSSERVER 28
  18. 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
  19. Aspekte komplexer Softwaresysteme am Beispiel der Corona-Warn-App (CWA) / @rotnroll666,

    FH Aachen, 15. Juni 2020 GÜLTIGES UPLOAD ZEITFENSTER 30
  20. 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
  21. 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] ------------------------------------------------------------------------
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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