Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 69 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,84 @@
# OpenStopCovid
## Solution de contact tracing décentralisée, 100 % libre et issue de la société civile
**100% Open Source contact tracing application, powered by contributors and fueled by community.**

## Pour faire tourner ce site en local
## To add a new language
### 1. Copy the folder default to [my-two-letters-language-code]
[Pick the code here](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
```
cp -r default [my-two-letters-language-code]

Example:
cp -r default en
```
### 2. Translate everything in [my-two-letters-language-code]
### 3. Add the[my-two-letters-language-code] to the array `langs` in `_config`
```
vim _config
# initial array
langs = [fr, en]
# new array
langs = [fr, en, my-two-letters-language-code]
```
### You're done

## To run this site locally ##
```
git clone https://github.com/OpenStopCovid/openstopcovid.github.io.git
cd openstopcovid.github.io
git checkout fr # optionnel: sélectionnez une branche existante (fr, en ou master)
git checkout fr # optional: select an existing branch (fr, en, or master)
bundle install
bundle exec jekyll serve
# connectez votre navigateur à l'adresse: [http://localhost:4000](http://localhost:4000)
# connect your browser to the address: [http://localhost:4000]
```

## Pour construire un docker en local
## To build a local docker
```
git clone https://github.com/OpenStopCovid/openstopcovid.github.io.git
cd openstopcovid.github.io
docker build . --tag openstopcovid
docker run -p 80:4000 openstopcovid
# connectez votre navigateur à l'adresse: [http://0.0.0.0:80](http://0.0.0.0)
# connect your browser to the address: [http://0.0.0.0:80](http://0.0.0.0)
```

![OpenStopCovid](./logo.png)

# OpenStopCovid

Mobile tracing apps have a potential to support our efforts to limit the spread of COVID-19 and to keep some semblance of normality despite containment/preventive measures:
* people can be quickly informed that they may have been in contact with an infected person
* people can receive instructions on which further actions to take from public health authorities
* epidemiologists could receive anonymous or pseudonymous research information about the spread from volunteering users

## Disclaimer

Contact tracing technology using mobile applications is under active investigation and development for deployment by different countries. However, it has never been tested at a wide scale and its effectiveness is controversial. As stated by our Open Source licence please note that the software is thus provided "as is", without warranty of any kind. Would you want to deploy your own instance please ensure it complies with the applicable laws or required certifications in your country, state or province.

## Why OpenStopcovid ?

Different initiatives have been taken to tackle the underlying technical difficulties of contact tracing:
* the use of Bluetooth LE (Low Energy) for proximity detection of nearby mobile phones;
* privacy-preserving - personal data should be securely encrypted and dismantled as soon as no longer needed.

The most famous being [BlueTrace](https://bluetrace.io/) by the Singaporean Government, or [DP-3T](https://github.com/DP-3T/documents) and [ROBERT](https://github.com/ROBERT-proximity-tracing/documents) from the Pan-European Privacy-Preserving Proximity Tracing (PEPP-PT) project.

Although all procols have been publicly published, only BlueTrace proposes an Open Source [reference implementation](https://github.com/OpenTrace-community). However, it was published before Google and Apple jointly announced a [framework](https://www.apple.com/covid19/contacttracing) to support contact tracing apps. Moreover, it is thightly coupled to a specific Cloud Provider and we believe that a universal solution should be cloud-agnostic as much as possible.

So far no reference implementation has been published for ROBERT. Moreover, the choice of a centralized approach makes it hardly compatible with the contact tracing framework of Google and Apple. Indeed, Bluetooth tracking on mobile devices requires privileged access to the system in order to work efficiently.

As a consequence, we selected the decentralized [DP-3T](https://github.com/DP-3T/documents) approach as the underlying technology to provide our reference implementation. Currently it is based on the Design 1, which is less complex and more pluggable to the contact tracing framework.

We strongly believe that an easy-to-install, cloud-agnostic, 100% Open Source application is mandatory to increase trust and allow large scale deployment at the level of what is at stake. However, we are also convinced that this technology should only be one piece in the puzzle of the investigative work and keeping human-in-the-loop is important. Contact tracing is inherently "invasive", whatever the technical measures in place to protect against deanonymisation, so the key to protect privacy as much as possible is also in the operational processes, the governance and oversight of the authorities conducting it.

## What's inside ?

The global architecture is depicted by the following diagram:

![Architecture](./architecture.png)

The main components of OpenStopCovid are the following:
* [Backend microservices](https://github.com/OpenStopCovid/dp3t-ms)
* `exposed-keys` microservice to publish exposed keys and get a list of exposed keys
* `codes` microservice to create and use validation codes to declare sick patients
* [User interface for physicians](https://github.com/OpenStopCovid/health-authority-ui) in order to generate validation codes for sick patients
* [Android application]() relying on [DP-3T SDK](https://github.com/DP-3T/dp3t-sdk-android) for end-users
* [iOS application]() relying on [DP-3T SDK](https://github.com/DP-3T/dp3t-sdk-ios) for end-users
22 changes: 13 additions & 9 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,22 @@ description:
# Your name to show in the footer
author: OpenStopCovid

# Languages
langs: [fr, en, de]


# --- List of links in the navigation bar --- #

navbar-links:
A propos: "aboutus"
Resources:
- Application mobile: "https://github.com/OpenStopCovid/app"
- Interface médecin: "https://pro-sante.openstopcovid.fr/#home"
- Interface médecin-code: "https://github.com/OpenStopCovid/health-authority-ui"
- Serveur de l'application: "https://github.com/OpenStopCovid/dp3t-ms"
- Specifications: "https://github.com/DP-3T/documents/blob/master/DP3T%20White%20Paper.pdf"
- Documentation: "https://github.com/DP-3T/documents"
Press Kit: "presskit"
about: "aboutus"
ressources:
- appmobile: "https://github.com/OpenStopCovid/app"
- uidoctor: "https://pro-sante.openstopcovid.fr/#home"
- uidoctordev: "https://github.com/OpenStopCovid/health-authority-ui"
- appserv: "https://github.com/OpenStopCovid/dp3t-ms"
- specs: "https://github.com/DP-3T/documents/blob/master/DP3T%20White%20Paper.pdf"
- doc: "https://github.com/DP-3T/documents"
presskit: "presskit"

# --- Local development options ---

Expand Down
62 changes: 3 additions & 59 deletions _includes/header.html
Original file line number Diff line number Diff line change
@@ -1,66 +1,15 @@
<!-- TODO this file has become a mess, refactor it -->

{% assign date_format = site.date_format | default: "%B %-d, %Y" %}

{% if page.bigimg or page.title %}

{% if page.bigimg %}
<div id="header-big-imgs" data-num-img={% if page.bigimg.first %}{{ page.bigimg.size }}{% else %}1{% endif %}
{% for bigimg in page.bigimg %}
{% assign imgnum = forloop.index %}
{% for imginfo in bigimg %}
{% if imginfo[0] %}
data-img-src-{{ imgnum }}="{{ imginfo[0] | relative_url }}"
data-img-desc-{{ imgnum }}="{{ imginfo[1] }}"
{% else %}
data-img-src-{{ imgnum }}="{{ imginfo | relative_url }}"
{% endif %}
{% endfor %}
{% endfor %}
></div>
{% endif %}

<header class="header-section {% if page.bigimg %}has-img{% endif %}">
{% if page.bigimg %}
<div class="big-img intro-header">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="{{ include.type }}-heading">
<h1>{% if page.title %}{{ page.title }}{% else %}<br/>{% endif %}</h1>
{% if page.subtitle %}
{% if include.type == "page" %}
<hr class="small">
<span class="{{ include.type }}-subheading">{{ page.subtitle }}</span>
{% else %}
<h2 class="{{ include.type }}-subheading">{{ page.subtitle }}</h2>
{% endif %}
{% endif %}

{% if include.type == "post" %}
<span class="post-meta">Posted on {{ page.date | date: date_format }}</span>
{% endif %}
</div>
</div>
</div>
</div>
<span class='img-desc'></span>
</div>
{% endif %}
<div class="intro-header no-img">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="{{ include.type }}-heading">
<h1>{% if page.title %}{{ page.title }}{% else %}<br/>{% endif %}</h1>
{% if page.subtitle %}
{% if include.type == "page" %}
<hr class="small">
<span class="{{ include.type }}-subheading">{{ page.subtitle }}</span>
{% else %}
<h2 class="{{ include.type }}-subheading">{{ page.subtitle }}</h2>
{% endif %}
{% endif %}
<h1>{{ page.title }}</h1>
<hr class="small">
<span class="{{ include.type }}-subheading">{{ page.subtitle }}</span>

{% if include.type == "post" %}
<span class="post-meta">Posted on {{ page.date | date: date_format }}</span>
Expand All @@ -71,8 +20,3 @@ <h2 class="{{ include.type }}-subheading">{{ page.subtitle }}</h2>
</div>
</div>
</header>


{% else %}
<div class="intro-header"></div>
{% endif %}
16 changes: 13 additions & 3 deletions _includes/nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,30 @@

<div class="collapse navbar-collapse" id="main-navbar">
<ul class="nav navbar-nav navbar-right">

{% assign locale = page.url | replace:'/',' ' | truncatewords: 1,"" %}

{%- for link in site.navbar-links -%}
{%- if link[1].first %}

<li class="navlinks-container">
<a class="navlinks-parent" href="javascript:void(0)">{{ link[0] }}</a>
{% assign key = link[0] %}
<!--a class="navlinks-parent" href="javascript:void(0)">{{ page[key] }}</a-->
<a href="javascript:void(0)">{{ page[key] }}</a>
<div class="navlinks-children">
{%- for childlink in link[1] -%}
{%- for linkparts in childlink %}
<a href="{{ linkparts[1] | relative_url }}">{{ linkparts[0] }}</a>
{% assign key = linkparts[0] %}
{%- if page[key] %}
<a href="{{ linkparts[1] | relative_url }}">{{ page[key] }}</a>
{%- endif -%}
{%- endfor -%}
{%- endfor %}
</div>
</li>
{% else %}
<li><a href="{{ link[1] | relative_url }}">{{ link[0] }}</a></li>
{% assign key = link[0] %}
<li><a href="{{ locale | append:'/' | append:link[1] | relative_url }}">{{ page[key] }}</a></li>
{%- endif -%}
{%- endfor -%}
</ul>
Expand Down
7 changes: 0 additions & 7 deletions aboutus.md

This file was deleted.

63 changes: 63 additions & 0 deletions de/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: OpenStopCovid
subtitle: Dezentralisierte Lösung für die Ermittlung von Kontaktpersonen<br>100% frei und zivilgesellschaftlich
ressources: Ressourcen
presskit: Pressemappe
appmobile: Mobile Anwendung
uidoctor: Medizinische Anwendung
uidoctordev: Medizinische Anwendung (Code)
appserv: Anwendungs-Server
specs: Spezifikationen
doc: Dokumentation
lang: de
---

## Was ist die Ermittlung von Kontaktpersonen ##

Die Ermittlung von Kontaktpersonen besteht für einen Benutzer darin, eine spezifische Smartphone-Anwendung zu installieren, die mit Hilfe der Bluetooth-Technologie andere Geräte in der Nähe lokalisiert. In der Praxis speichert das Telefon Pseudonyme im Speicher, die von anderen Geräten in seiner Umgebung ausgestrahlt werden. Diese Pseudonyme sind meist verschlüsselt und können nur von Smartphones verstanden werden, die mit der gleichen Anwendung ausgestattet sind.

Diese Technologie hat das Potenzial ([aber nicht die Gewissheit] (https://github.com/DP-3T/documents/issues/224)), die Ausbreitung der Covid-19-Krankheit in der Bevölkerung zu begrenzen. So könnte eine dedizierte mobile Anwendung, die nach den Regeln der Kunst entwickelt wurde, es uns ermöglichen, zu einem scheinbar normalen Leben zurückzukehren, ohne die Ergebnisse der zu Ende gehenden Abriegelung zu untergraben. Lassen Sie uns drei Vorteile erwähnen, die von einer Tracking-Anwendung zu erwarten sind:
* Eine Person kann schnell benachrichtigt werden, wenn sie zu lange in der Nähe einer infizierten Person gestanden hat.
* Eine Person kann automatisch von den Gesundheitsbehörden über die zu ergreifenden Maßnahmen instruiert werden.
* Eine Person kann auf freiwilliger Basis Epidemiologen anonyme Forschungsinformationen über die Ausbreitung der Krankheit auf dem Territorium zur Verfügung stellen.

Die Ermittlung von Kontaktpersonen allein kann jedoch keine Lösung für die Pandemie sein. Sie kann nur Teil eines umfassenderen Systems sein.

## Warum eine dezentralisierte Lösung

Wenn ein Benutzer positiv diagnostiziert wird, ist es möglich, das Risiko für alle Personen zu berechnen, die kürzlich von diesem Benutzer gekreuzt wurden. Um diese Operation durchzuführen, ist es notwendig, den Gesundheitszustand des Opfers, das dem Auftreten von Symptomen entsprechende Datum und alle Pseudonyme, die sein Smartphone in den vorangegangenen Tagen aufgezeichnet hat, zu erfassen, um sich gegenüber anderen Benutzern zu identifizieren. Gleichzeitig ist es auch notwendig, die Pseudonyme zu sammeln, die das Smartphone während der Inkubationsphase der Krankheit von anderen Benutzern erhalten hat. Durch die Kombination dieser Daten kann eine Tracking-Anwendung den Grad des Expositionsrisikos jeder Person bestimmen.

Das Problem besteht hier weniger darin, wie diese Berechnung durchgeführt wird, als vielmehr darin, wo sie stattfindet und welche Daten übertragen werden. Auf der Grundlage des DP-3T-Protokolls, das von der École polytechnique fédérale de Lausanne ([EPFL](https://www.epfl.ch/en/)) und ihren Partnern entwickelt wurde, hat sich OpenStopCovid für eine dezentrale Antwort auf dieses Problem entschieden. Dies bedeutet, dass die Berechnung im Smartphone des Benutzers erfolgt und dass die Kontakte es nicht verlassen. Umgekehrt besteht eine zentralisierte Lösung notwendigerweise darin, pseudonymisierte Kontakte an einen entfernten Server zu senden, eine für uns inakzeptable Voraussetzung für die Verarbeitung.

Wir sind der Meinung, dass es zu riskant ist, solche Daten in einem zentralen Server zu sammeln, so sicher dieser auch sein mag. In Anbetracht der Entwicklungen in der Informationstechnologie sind solche anonymen Daten heute vielleicht morgen nicht mehr anonym. Darüber hinaus besteht die Gefahr, diese Informationen zu zentralisieren, aufzuzeichnen und mit anderen Informationen wie z.B. den Systemprotokollen von Telekommunikationsbetreibern zu vergleichen. Der dezentralisierte Ansatz birgt auch Risiken, die jedoch auf der Ebene des Einzelnen lokalisiert und damit minimiert bleiben. Diese Risiken sind vergleichbar mit denen, die durch die Installation von Malware oder Spionagekameras verursacht werden.

## Warum eine 100% kostenlose Lösung

Technologien zur Kontaktverfolgung sind aus epidemiologischer Sicht interessant. Gleichzeitig stellen sie aber auch eine Gefahr für die individuellen Freiheiten dar. Dieses Risiko kann auf einfache Art und Weise entstehen, indem eine allgemeine Überwachung der gesamten Bevölkerung durchgeführt wird. Oder auf heimtückische Weise, mittel- und langfristig, indem man die Menschen ermutigt, sich mit einer regelmässigen Verfolgung ihrer Handlungen zu begnügen. Um diese Risiken zu verringern, ist es notwendig, die Kontrolle der Bürger über den "Quellcode" (Herstellungsplan) der Anwendungen zu behalten.

Eine Strategie zur Gewährleistung dieser Kontrolle besteht darin, den Quellcode der Anwendung auf spezialisierten Plattformen zu veröffentlichen. Dieser als "Open Source" bezeichnete Quellcode wird dann jedem zugänglich sein, der ihn lesen und testen möchte, mit dem Ziel, zu überprüfen, dass keine Bedrohungen, Schwachstellen oder betrügerisches Verhalten die Integrität der darin zirkulierenden Daten verändern.

Der andere Vorteil von Open-Source-Code besteht darin, dass er die Anwendung für Beiträge von Entwicklern außerhalb des Projekts und nicht nur von einem kleinen Team bereithält. Bereits heute helfen diese Entwickler OpenStopCovid dabei, die Sicherheit, Leistung, aber auch die Benutzerfreundlichkeit und Ergonomie der Anwendung und der Komponenten, auf die sie angewiesen ist, zu verbessern. Diese Mitwirkenden bilden in gewisser Weise ein unbegrenztes und internationales Entwicklungsteam.

Umgekehrt ist der geschlossene Quellcode frei von jeder schwerfälligen externen Kontrolle und wirft daher im weiteren Sinne Legitimations- und Sicherheitsprobleme für die Gesellschaft als Ganzes auf.

## Verfügbare Komponenten

Die Hauptkomponenten des Projekts sind wie folgt:

* Eine Android-Anwendung
* Eine iPhone-Anwendung
* Eine Schnittstelle für Angehörige der Gesundheitsberufe (vertrauenswürdige Drittpartei)
* Einige serverseitige Bausteine zur Sicherung des Geräts

Die von uns gewählte Architektur basiert direkt auf dem DP-3T-Protokoll und verwendet mehrere Referenzkomponenten. Unsere Implementierung wird durch das folgende Diagramm dargestellt:

![Architektur]({{site.url}}/img/architecture.png)

## Wie Sie beitragen können

Sie können unsere Arbeit auf [GitHub](https://github.com/OpenStopCovid) verfolgen.

## Kontakt

contact@openstopcovid.fr
29 changes: 29 additions & 0 deletions de/presskit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Pressemappe
subtitle: OpenStopCovid
ressources: Ressourcen
presskit: Pressemappe
appmobile: Mobile Anwendung
uidoctor: Medizinische Anwendung
uidoctordev: Medizinische Anwendung (Code)
appserv: Anwendungs-Server
specs: Spezifikationen
doc: Dokumentation
lang: de
---

## Mobile Anwendung für Benutzer
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-16.png)
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-17.png)
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-18.png)
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-19.png)
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-20.png)
<hr>
![OpenStopCovid](/img/mobile-app/App Protocole D3PT V0-15.png)

## Webanwendung für Ärzte
![OpenStopCovid](/img/medic-app/interface-medecin.png)
<hr>
![OpenStopCovid](/img/medic-app/interface-medecin2.png)
<hr>
![OpenStopCovid](/img/medic-app/interface-medecin3.png)
Loading