scrtlabs / SafeTrace

Privacy preserving voluntary Covid-19 self-reporting platform. Share your location history and status, get alerts you are in high risk areas and identify high risk regions
MIT License
126 stars 27 forks source link
coronavirus coronavirus-tracking location-history privacy privacy-preserving proximity risk-areas sgx trusted-execution-environment

License: MIT Contributor Covenant

COVID-19 Self-reporting with Privacy

Privacy preserving voluntary COVID-19 self-reporting platform for contact tracing. Share your (encrypted) location history and test status, get a notification if you have been in proximity to higher risk locations.

Overview & Motivation

Social contact tracing based on mobile phone data has been used to track and mitigate the spread of COVID-19[1]. However, this is a significant privacy risk, and sharing these data may disproportionately affect at-risk populations, who could be subject to discrimination and targeting. In certain countries, obtaining this data en masse is not legally viable.

We propose a privacy-preserving, voluntary self-reporting system for sharing detailed location data amongst individuals and organizations. Users will be able to encrypt and share complete location history, and their current status (positive, negative, unknown). Users will be able to update their status if it changes. This system will compute on shared, aggregate data and return location-based social contact analytics.

This system relies on 3 core services:

Location History data from Google Location Services via Google Takeout

Any user who has Location Services active with Google is able to obtain a JSON format file of their location history. They are also able to edit this file manually to remove any unwanted or sensitive locations (i.e., a home address). A user who does not use Location Services can manually add a history via Google.

Note: This service could be swapped/replaced by a mobile application at some point

A Privacy-preserving Computation service

Private computation is a term for performing tasks on data that is never viewed in plaintext. Our system will use private computation to generate individual and global analytics. In this scenario, private computation techniques could be employed to:

Visualization and notification services

Our working assumption is to:

These diagrams provide an overview of how these services connect and how data is accessed and controlled throughout. Note: data is encrypted on the client side, remains encrypted in transit, and is protected by TEE security and privacy guarantees during compute.

image

User Story

  1. User creates an account (email and password)
  2. User views instructions for retrieving location data from Google Location services.
  3. User reviews Google Maps timeline, and optionally removes any sensitive activity (i.e., home address, work address, others)
  4. User exports her data via Google Takeout service
  5. User returns to app UI and uploads JSON file from Google Takeout for the previous month or two
  6. User indicates her current testing status (positive, negative, untested) and the date of the test (today's date if untested)
  7. User submits data to compute service (data is encrypted locally by the app prior to sending)
  8. User can now view "matches", where her data overlaps in time and proximity to a user reporting a positive test result
  9. User can opt in to receive emails if new matches occur, and prompting her to update her data and infection status periodically.

System Architecture

image

The system is made up from the following components:

Front-end UI

Login / Unique identifier DB

Private Compute Service

Components

Data self-reporting UI

Requirements:

img

Private compute

Requirements:

Input: Encrypted user location histories in Google Takeout JSON format

Output:

Open Questions

Post-Compute Results

Current thinking is to have two services result from the computation:

Open Questions

Get Involved

Below is a list of areas that we need help with and our open questions

LICENSE

The code in this repository is released under the MIT License.