Entwicklung und Funktion der deutschen Lösung zur Unterstützung der Kontaktverfolgung
"Die App" ist jetzt verfügbar: die "Corona Warn-App" (CWA) ist veröffentlicht, außerdem in aller Munde und vielleicht auch schon bald auf vielen Telefonen. Auf dem Weg dahin gab es ein paar außergewöhnliche Wendungen in der öffentlichen Debatte und wie Software im Rahmen eines öffentlichen Projektes entwickelt wird.
Ich spreche mit Malte Janduda und Thomas Klingbeil, beide Entwickler bei SAP und Teil des CWA-Teams, über ihre das Zustandekommen und Funktion des Systems, welche Funktionen die App erfüllt und welche nicht, welche grundsätzlichen Entscheidungen beim Design getroffen wurden und was die Rolle von Google und Apple in dem ganzen Prozess war.
Wir reden darüberhinaus über die Bedeutung von Open Source im Entwicklungsprozess und seine mögliche Bedeutung in der Zukunft für die Gestaltung öffentlicher Projekte.
Für diese Episode von UKW liegt auch ein vollständiges Transkript mit Zeitmarken und Sprecheridentifikation vor.
Bitte beachten: das Transkript wurde automatisiert erzeugt und wurde nicht nachträglich gegengelesen oder korrigiert. Dieser Prozess ist nicht sonderlich genau und das Ergebnis enthält daher mit Sicherheit eine Reihe von Fehlern. Im Zweifel gilt immer das in der Sendung aufgezeichnete gesprochene Wort. Formate: HTML, WebVTT.
Transkript
Shownotes
-
GitHub Corona-Warn-App
-
coronawarn.app Open-Source-Projekt für Corona-Warn-App
-
ito-app.org ito | Track infections, not people
-
Pepp Pt HOME | PEPP-PT
-
GitHub DP^3T
-
-
-
de.wikipedia.org Apache-Lizenz – Wikipedia
-
-
20 Millionen EUR Entwicklungskosten? Really?
Für SAP ist das noch günstig..
Schon mal bei SAP gekauft? 😉 Ansonsten kann ich ehrlich gesagt nicht viel sagen ob das gerechtfertigt ist. Wenn sie tatsächlich hilft, ist es billiger als der Schaden. Das wären 25c pro Einwohner. Dafür kannst du nicht mal jedem ne Maske schicken.
Meine Mutter (80Jahre) hat mir stolz ihre vor 2009 gekauften 10er Pack Masken gezeigt – Preis 36Eurocent.
Am Ende kommt kurz Stille und dann kurz der Anfang. Ist mein Download korrupted oder die Aufnahme?
Nur eine kurze Korrektur zu der Aussage, dass man unter GPL verpflichtet wäre, jede Änderung „zurück zu committen“ oder veröffentlichen zu müssen.
Das ist nicht so: https://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
Aber wenn man wiederum veröffentlichen will, dann halt nur unter Bedingungen der GPL.
Wirklich sehr hörenswert dieser Podcast, auch wenn er ziemlich lang ist!
Danke 🙂
Klappt ja gut mit der Applenkung, springen alle drauf. So vergisst man, daß aus der „Risikoanalyse im Bevölkerungsschutz 2012“ (Bundesdrucksache vom 03.01.2013) nichts gelernt und keine Konsequenzen gezogen wurden. So wird es dann auch keine politischen Konsequenzen geben. Lass uns stattdessen einfach mal über Technik reden…
Magst du uns erklären auf was du abzielst oder muss ich mir die gut 80 Seiten text jetzt durchlesen und danach raten was genau du meinst?
Ansonsten stellt das dortige szenario ja recht gut das tatsächliche geschehen da, teils überzogen, teils treffend.
Masken und weitere Utensilien als Mangelware, keine Lagerhaltung, kein Vorkaufsrecht etc. – man war schlecht vorbereitet. Was machen eigentlich Gesundheitsminister, ausser alles kaputt zu sparen und Patientendaten an die Medizinlobby weiterzugeben?
https://www.heise.de/tp/features/Der-fleissige-Herr-Spahn-Mit-Vollgas-gegen-den-Datenschutz-4556149.html
Ach ja, Krankenhausschliesseungen empfehlen tu’n die auch noch.
Statt Datentransfer Gesundheitsamt -> RKI, was sehr sinnvoll wäre, eine zweifelhafte App (und falls sie so sinnvoll sein sollte – sie existiert nicht schon als Konsequenz aus dem langen Paper, sondern kommt erst, als das Kind am Brunnenrand gerade abzurutschen begann – und wurde nicht von der App gerettet, sondern vom Lockdown – der ggf. zu vermeiden gewesen wäre, wäre man denn vorberitet gewesen).
Einschätzung zur App, siehe Kekule-Podcast (MDR) vom 16.06.2020.
Die Basics sind nicht da – Neuland als Dauerbrenner zeigt sich bei den Problemen der nicht vorhandenen Daten.
Aber dann mal eben Geld verbrennen mit der AppLenkung.
Erst den Karneval durchwinken, dann den Saubermann spielen, etc.
Macht sich aber gut sowas:
http://www.dkriesel.com/_media/sonntagsfrage_90tage.png
Das sollte einem schon 68 Milliönchen bis 2021 wert sein;
https://www.spiegel.de/netzwelt/apps/corona-warn-app-wie-erklaeren-sich-die-gesamtkosten-von-68-millionen-euro-a-56b5abe1-e0a6-4b1c-9177-9066df3d9b14
Stattdessen jedem Gesundheitsamt sein Github-Repo mit den aktuellen Daten (kannste Tool bauen, für einfache Eingabe durch „Gesundheistbeamte“, kostet keine 68 Millionen), wo das RKI nur „git pull“ machen muss und alles vor Ort hat… das wäre zu trivial und zu UNSPEKTAKULÄR.
Warum soll es funktionieren, was dann auch keiner sieht.
Stattdessen besser: teuren Schwachsinn für die nächste Bundestagdswahl „wir sind die Macher – wir haben Euch aus der Krise gerettet“.
Und in der nächsten Pandemie dann wieder „wir haben Meldeverzug“, weil womöglich die Software, die das RKI demnächst fertig haben will auch nur grottig sein wird?
Oder weil’s dann bei irgend einem Gesundheitsamt wieder an irgendwas klemmt?
„Aber das ist ja Ländersache!“
Na dann, danke und Gute Nacht!
alternative fuer google-freie telefone asap, ffs! bei google nach den sourcen fragen, selbst als seperate app im fdroid store veroeffentlichen…
Schöne informative Folge geworden, obwohl ich dachte, schon CoronaApp-Überdosis zu haben. Diese neue interessante Infrastruktur, die mit der CoronaWarnApp geschaffen wurde, ist die nicht auch für sonstige Dienste i.w.S tauglich? MessengerApps, BezahlApps usw. usf. … alles ohne Zentrale.
Das werden Google und Apple aber nie zulassen.
Die App gibt es nicht im Spanischen iOS-App-Store?! Warum? Weiß jemand, ob es die App nur im Deutschen Store gibt?
Scheint blöd im App-Store platziert zu sein: https://github.com/corona-warn-app/cwa-app-android/issues/478
Ich wohne im Elsaß, einen Kilometer von DE, wo mit mir Tausende Elsässer (Deutsche, Franzosen, alle) regelmäßig in den deutschen DM, Aldi etc. pilgern. Auch hier kann man die App nicht ohne Workaround installieren. Wirklich ungeschickt, dass man bei der Publikation nicht an diese Grenzregionen gedacht hat..
Bzgl. zur Datenreduzierung beim Runterladen: Die IDs zunächst mittels eines Bloomfilters ( https://de.wikipedia.org/wiki/Bloomfilter ) komprimiert verteilen. Mit diesem Bloomfilter können die Endgeräte dann checken, ob eine der IDs, die sie gesehen haben, als infiziert gilt. An dieser Stelle kann es ein False-Positive geben (inhärente Eigenschaft des Bloomfilters). Man muss also bei einem positiven Bloomfilter-Test die Daten nochmal unkomprimiert laden und den positiven Befund gegenchecken. Bei einem negativen Test braucht man aber eben nicht die Daten nochmal laden, da es keine False-Negatives beim Bloomfilter gibt.
Das funktioniert leider nicht, weil aus den heruntergeladenen Diagnosis Keys erst einmal die Rolling Proximity Identifier abgeleitet werden – und mit denen findet dann der Abgleich statt.
Wenn ich das richtig gehört habe, ist SAP proaktiv auf die Regierung zugegangen und dadurch kam der Auftrag zustande. Für mich als Steuerzahler (und selber App Dev) wäre eine richtige Ausschreibung viel effektiver gewesen. Die 20 Mio sind null gerechtfertigt, wenn man sich den Code auf Github anschaut. Die App macht nur eine Auswertung der Daten von Google/Apple. Also die eigentliche Logik der Messungen machten die OS Hersteller. Was bitte kostet dann also 20 Mio? Und wir reden dabei nicht von Folgekosten (Serverbetrieb, Hotline usw.), also wofür sind diese Kosten angefallen? Kann das bitte jemand im Detail recherchieren?
Vielleicht ist dir als „App Dev“ entgangen, dass der eigentliche Aufwand bei dieser Lösung in einer serverseitigen Infrastruktur steckt, über welche die Keys verteilt sowie Labore und Telefonhotlines angebunden werden. Die fällt nicht vom Himmel, die muss auch jemand programmieren.
Das Erste, was wir auf Github von dem ganzen CWA-Zeug an Code gesehen haben, waren denn auch – plausiblerweise – Fragmente des serverseitigen Teils. Das spricht dafür, dass auch SAP die Aufwandsverteilung so gesehen hat, dass der Hauptanteil der Coding-Arbeitszeit im Server stecken wird und man folglich damit anfangen sollte.
Noch früher haben wir aber noch was anderes gesehen: Doku. Die muss man bei Projekten dieser Größenordnung auch anfertigen, sonst geht das hinterher mit der längerfristigen Wartung unter Garantie schief, und das, was hier öffentlich sichtbar an Doku abgeliefert wurde, war gar nicht mal so schlecht und wurde auch permanent aktualisiert während der Entwicklung. Auch das alles fällt nicht vom Himmel.
20 Millionen klingen meiner Einschätzung nach insgesamt zugegeben immer noch eher nach oberem Ende der Skala für dieses ganze Projekt, allerdings drehen gute Softwareentwicklungs-Teams jetzt auch nicht gerade den ganzen Tag Däumchen, um nicht zu sagen, dass die eigentlich durch die Branche weg zu 120% ausgelastet sind. Kommst du also mit einem neuen Projekt um die Ecke und willst, dass das „am besten gestern“ schon begonnen worden ist, und zwar von fähigen Leuten, die schnell und trotzdem gut abliefern, wird dir aktuell jeder, der überhaupt in der Lage ist, die Anfrage zu bedienen, eher ein bisschen mehr Geld abknöpfen, schlicht weil er’s kann und sehr wahrscheinlich anderweitig was liegen lassen muss, das auch gutes Geld gebracht hätte.
Wenn ich mich nicht geirrt habe, wurde nichts dazu gesagt, ob nur eine persönliche ID oder mehrere IDs angelegt werden. Wenn mehrere IDa angelegt werden, in welchen zeitlichen Abstand? Und es müssten dann alle angelegten IDs im Krankheitsfall an den Server übertragen werden, sonst würden zeitliche Löcher entstehen. Wie werden die IDs berechnet, damit sie tatsächlich eindeutig sind, wir’s die MAC-Adresse per Hash verwurstelt?
Die IDs sind nicht „persönlich“, es sind im Kern einfach zufällige IDs. Die IDs ändern sich alle 15 Minuten werden allerdings aus einem gemeinsamen Schlüssel abgeleitet, der sich täglich ändert. So muss nur dieser eine Schlüssel pro Tag veröffentlicht werden (dann nennt man ihn einen „Diagnose Key“) und alle an dem Tag verwendeten IDs lassen sich daraus ableiten. Für 14 Tage müssen also nur diese 14 Schlüssel publiziert werden.
Vielen Dank Tim,
wird wirklich der Diagnose-Key täglich und pauschal an den Server übertragen? Ich bin davon ausgegangen und so wurde es bis dato kommuniziert, dass der Diagnose-Key – oder jetzt besser die letzten 14 Diagnose-Keys – nur im Krankheitsfall (freiwillig) übertragen werden. Somit hält sich die Liste „relativ“ klein, um im Smartphone den Abgleich der IDs der ausschließlich erkrankten Personen vorzunehmen.
Die Übertragung findet nur nach ausdrücklicher Zustimmung und auch nur bei einem bestätigten positiven Test statt.
Kurz vor 1:30:00 wird gesagt, dass im Fall eines positiven Tests 14 Keys hochgeladen werden.
Daraus leite ich ab, dass man, auch wenn man definitiv weiß, dass man sich vor 7 Tagen angesteckt hat, die Kontakte zwischen 7 und 14 Tagen dennoch informiert.
Pragmatisch die einfachste Lösung, aber natürlich auch schade. Gut, problematisch wäre es, dem User zu überlassen, wie sicher er sich ist, wann er sich infiziert hat. Alleine wenn ich betrachte wie viele Leute ich schon gehört haben, die definitiv im Dez. 19 schon Corona hatten … trockener Husten … 🙂
Aber wenn man Infektionsketten hat, die durch App-Kontakte gedeckt sind: Mo.: A trifft B, Mi.: B trifft C, Fr. C trifft D und Sa. A wird als infektiös bestätigt, nächsten Mo. der inzw. benachrichtigte B, Di. C.
Gut – könnte ein Zufall sein, dass sich C am Mo. bei J angesteckt hat, der keine App hat oder B hat sich schon am So. davor bei A angesteckt, den er öfter trifft, aber es waren halt keine 15 Minuten.
PS: Zum Thema Notifications, dafür bedarf es natürlich keine native APP. Das Zauberwort heißt hier PWA und das bedeutet einfach nur https + manifest.json und das wars dann.
Ich hab mal eine Frage auf die ich sonst nirgends eine Antwort gefunden hab. Dass die App nicht im Vordergrund laufen muss um zu funktionieren weiß ich aber muss sie im Hintergrund geöffnet sein?
Also um zu erklären was ich mein: Wenn ich das Handy anschalte seh ich da erstmal keine geöffneten Apps. Ich kann ja eine App starten und dann quasi wie am PC mit alt+tab aus der App raus, dann ist sie im Hintergrund geöffnet oder ich kann sie schließen. Macht das für die Corona-Warn-App einen Unterschied? (Also sprich, muss ich die App nach dem Einschalten des Handys starten und dann aus der App rausgehen damit sie läuft?)
Ich frag, weil die App sagt sie konnte in den letzten 24 Stunden meinen Risikostatus nicht aktualisieren obwohl ich mit dem Handy mit dem Internet verbunden bin. (Messenger und Spiele laufen ^^)
Okay, ich hab inzwischen was bei den Tickets auf Github gefunden, mal sehen ob das es war.
https://github.com/corona-warn-app/cwa-app-android/issues/637#issuecomment-646455698
Das hat das Problem bei mir gelöst. Nur falls es wen interessiert. (Also die App aus der Akku-Kontrolle rauszunehmen so dass nicht wegen Energiesparoptionen irgendwas davon gedrosselt wird).
danke für das nette gepräch. ist tatsächlich sehr informativ, klar gibt es immer checker, die alles besser (und billiger) hinbekommen hätten.
am besten gefällt mir, dass man das gefühl bekommt, deine beiden gäste sind auch ein bisschen stolz auf ihre arbeit, was sie wahrscheinlich sonst auch nicht alltäglich erleben dürften ;P
Was mir gefehlt hat war eine Darstellung, was die App macht, nachdem sie mich informiert hat. Bleibt die Warnung weiter sichtbar, nach dem Test? Für 14 Tage? Was, wenn man dann die zweite, Warnung bekommt?
Zu Fehlalarmen: Ich denke alles andere als ein großes Übergewicht an Fehlalarmen darf man nicht erwarten. Vor den Abstandsgeboten und Sperren ging man von einem R0 von 2,5 bis 3 aus, mit Ansteckungsgefahr über ca. 2 Wochen, am stärksten in den ersten 5 Tagen außer dem ersten.
Als kontaktscheuer Eremit kann ich nicht von mir auf andere schließen, aber ich kann auch schlecht schätzen, wie viele Kontakte der Durchschnittsmensch am Tag hat, die die App triggern würde, wenn beide Partien die App laufen haben. Da kommen Büro-, Werkstatt-, Baustellen- und andere Kollegen (Wurstfabrik) in Betracht sowie Schüler und Vorgesetzte. Außerdem bei Pendlern Leute im gleichen Abteil oder den nächsten 2 Busbänken. Natürlich Mitbewohner und Freizeitkontakte (Sport, Partei, Kaninchenzüchter, Löter). Sind das im Mittel 5-10 am Tag? Bei 7 komme ich über 14 Tage auf ca. 100 Kontakte pro Infiziertem. Davon ist aber ein großer Teil redundant weil die Kollegen, Mitbewohner, MItschüler immer die gleichen sind. Also vielleicht nur 30 unterschiedliche in 2 Wochen? Von denen hat man 3 angesteckt, also jeden 10.
Die Anwesenheit eines Smartphones ändert daran nichts, also werden auf jede erkannten Kontakt mit Übertragung 9 Kontakte ohne kommen.
Die beste Erhöhung der Treffgenauigkeit würde ich davon erwarten, dass die App feststellt, ob sie indoor oder outdoor ist. Messbar vielleicht am besten über die Stärke des GPS-Signals. Dann noch das Mikro um festzustellen, ob der Kontakt (brüllt|singt|hustet). 🙂 Der arme Akku! 🙂
Das ganze als Hardware ganz vom Smartphone entkoppeln, ein kl. Gadget um es auf der Schulter zu positionieren (wg. des Stimmempfangs) oder um den Hals hängen wie ein Amulett, ich würd’s auch gleich Amulett nennen oder Amuletto mit eigenem Wechselakku, ein 18650er oder so ein 9V-Block.
Und das könnte man 1x am Tag mit dem Smartphone koppeln um den Datenaustausch zu machen. Vielleicht noch einen LIchtsensor einbauen, wg. UV-Licht.
Und wer kein Smartphone hat, der kann es trotzdem nutzen und sich einfach ab und zu an einem öffentlichen Terminal andocken.
Weitere Sensoren müssten natürlich nachträglich andockbar sein, falls die Wissenschaft neue Risikofaktoren identifiziert.
Die öffentlichen Terminals wären auch für Überwachungsskeptiker prima: Da das Gerät nicht weiß wem es gehört und mit keinem Adressbuch und keiner MAC verbunden ist kann man alles anonym halten. Die Station druckt einem eine Art Bon mit QR-Code aus, damit man sich testen lassen kann.
Sehr anschauliche Darstellung aller Aspekte der Corona-Warn-App Entwicklung. Vielen Dank dafür!
Besonders freut mich die Erfahrung, dass es nicht als Hindernis, sondern als wertvolle Ergänzung empfunden wurde, den Datenschutz von Beginn an dabei zu haben. Für mich als einer der Beteiligten im Workstream Datenschutz des Projektes ein (erneuter) Beweis dafür, dass Privacy by Design wertvoll für jede Entwicklung ist: full functionality , positive sum, not zero sum!
https://gpsbydesign.org/privacy-by-design-principle-4-full-functionality-positive-sum-not-zero-sum/
App gleich am ersten Tag installiert.
Heute: Fehler: „Ursache 4000“ „Status 902“
Alle gesammelten Schlüssel sind weg. Risiko von grün wieder auf unbekannt.
Screenshots der Details in der Fehlermeldung kann aus „Datenschutzgründen“ nicht gemacht werden.
Keine Option den Bug ohne größere Hürden zu melden, keine weiteren Infos.
Schöner Fail an dieser Stelle.
Vielen Dank für diesen Podcast. Es ist interessant, das mal aus der Perspektive der App/Server Entwickler zu hören.
Im Bereich „Laborsoftware“ sind wohl ein paar Begriffe durcheinander geraten. Aber das hatten die Beteiligten ja auch gesagt, dass sie hier nicht so sicher sind.
Im Augenblick warten die Labore darauf, dass die Kassenärztliche Bundesvereinigung (KBV) die neuen Auftragsbelege mit dem QR-Code veröffentlicht. Das soll im Laufe der KW 26 passieren. Außerdem müssen die Labore noch ihre Schlüssel bekommen, um Ergebnisse hochladen zu können. Und dann muss die Software im Labor natürlich auch in der Lage sein den QR-Code auf dem Auftragsbeleg zu erkennen und dann zusammen mit dem Ergebnis der SARS-CoV-2 PCR zu melden. Das ist auch nicht ganz so einfach, weil da meistens mehrere Software-Produkte unterschiedlicher Hersteller für OCR, LIS usw. im Einsatz sind und die natürlich bis vor Kurzem noch nichts von einer UUID wussten. Das betrifft dann auch innerhalb des Labors noch mal mehrere Schnittstellen.
Der genannten „neue Standard zur Übertragung von Laborergebnissen“ (ich vermute, dass hier LDT3 und die Telematikinfrastruktur (TI) gemeint ist), kommt übrigens weder für die Meldung an die Corona-Warn-App noch für die elektronische Meldung an das RKI (DEMIS) zum Einsatz. Ich vermute, weil sich LDT3 und TI in diesem Bereich bisher nicht durchsetzen konnte. „Aber das ist eine andere Geschichte und soll ein andermal erzählt werden.“
Ich habe ein Nethunter Android, ein ub touch….. aber kein Google Spiele Framework….die App funktioniert ausschließlich wenn man die API von einem von 2 möglichen US Konzernen nutzt. Kann und will ich nicht.
Meine App zeigte gestern Abend 13 von 14 Tagen aktiv. Heut morgen nur noch 4/14 und aktuell 5/14.
läuft da was schief?