All Projects → OpenMined → covid-alert

OpenMined / covid-alert

Licence: Apache-2.0 license
A privacy-preserving app for comparing last-known locations of coronavirus patients

Programming Languages

javascript
184084 projects - #8 most used programming language
objective c
16641 projects - #2 most used programming language
ruby
36898 projects - #4 most used programming language
java
68154 projects - #9 most used programming language
Starlark
911 projects
HTML
75241 projects

Projects that are alternatives of or similar to covid-alert

data2019nCoV
COVID-19 Pandemic Data R Package
Stars: ✭ 40 (-6.98%)
Mutual labels:  coronavirus, covid-19
twitter-digest
✉️ A netlify lambda function that emails you tweets from a twitter list.
Stars: ✭ 14 (-67.44%)
Mutual labels:  coronavirus, covid-19
covid-19-sg
Visualising COVID-19/Coronavirus cases and cluster zones in Singapore
Stars: ✭ 15 (-65.12%)
Mutual labels:  coronavirus, covid-19
covid-19-data
COVID-19 datasets are constructed entirely from primary (government and public agency) sources
Stars: ✭ 104 (+141.86%)
Mutual labels:  coronavirus, covid-19
cowin-slot-tracker
Tracker to check the covid shot slot availability in India and send mobile alerts via Telegram Bot.
Stars: ✭ 30 (-30.23%)
Mutual labels:  coronavirus, covid-19
covid-19-status
Menu bar widget for MacOS with COVID-19 statistics
Stars: ✭ 50 (+16.28%)
Mutual labels:  coronavirus, covid-19
CoronaVirus-2019-nCoV-Live-Tracking
CoronaVirus(COVID-19) Live Map Tracker Android Kotlin App
Stars: ✭ 43 (+0%)
Mutual labels:  coronavirus, covid-19
COVID-19-Greece
A python-generated website for visualizing the novel coronavirus (COVID-19) data for Greece.
Stars: ✭ 21 (-51.16%)
Mutual labels:  coronavirus, covid-19
ncov2019
从官方数据中提取我感兴趣的2019新型冠状病毒发展情况
Stars: ✭ 20 (-53.49%)
Mutual labels:  coronavirus, covid-19
rid-covid
Image-based COVID-19 diagnosis. Links to software, data, and other resources.
Stars: ✭ 74 (+72.09%)
Mutual labels:  coronavirus, covid-19
COVID19 AgentBasedSimulation
COVID-ABS: An Agent-Based Model of COVID-19 Epidemic to Simulate Health and Economic Effects of Social Distancing Interventions
Stars: ✭ 56 (+30.23%)
Mutual labels:  coronavirus, covid-19
AnomalyDetect
Detects anomalous resting heart rate from smartwatch data.
Stars: ✭ 18 (-58.14%)
Mutual labels:  coronavirus, covid-19
cli-corona
📈 Track COVID-19 (2019 novel Coronavirus) statistics via the command line.
Stars: ✭ 14 (-67.44%)
Mutual labels:  coronavirus, covid-19
iorestoacasa
#covid19 Ciò che stiamo facendo è creare un servizio informazioni, aggiornato in tempo reale, relativo ad ospedali e supporto medico, attività produttive, servizi di approvvigionamento e molto altro. COVID-19
Stars: ✭ 23 (-46.51%)
Mutual labels:  coronavirus, covid-19
cotect
🛡Crowd-sourced COVID-19 reporting and assessment system.
Stars: ✭ 14 (-67.44%)
Mutual labels:  coronavirus, covid-19
Bluetooth-ble-beamer-and-scanner-for-tracing-corona-virus-infected-individual
Bluetooth ble beacon beamer and scanner for tracing corona virus infected person similar to Trace Together app
Stars: ✭ 26 (-39.53%)
Mutual labels:  coronavirus, covid-19
COVID-19-STAT
A web application to keep track of COVID-19 numbers & growth across the world
Stars: ✭ 19 (-55.81%)
Mutual labels:  coronavirus, covid-19
covid19-br-info
Coronavirus frontend info about Brazil's states and cities
Stars: ✭ 12 (-72.09%)
Mutual labels:  coronavirus, covid-19
covid19-visualized
COVID-19 World update with data Visualization (Include Indonesia cases)
Stars: ✭ 23 (-46.51%)
Mutual labels:  coronavirus, covid-19
iorestoacasa.work
Frontend of the video calling platform iorestoacasa.work
Stars: ✭ 36 (-16.28%)
Mutual labels:  coronavirus, covid-19

COVID Alert

NOTE: This repo serves as a demo for the work being done by the Private Set Intersection team here at OpenMined. You can find their repos here:

We are no longer pursuing a production use-case with this application. Instead we've decided to contribute to another project: https://github.com/corona-trace

Folder Structure

  • /covidalert - React Native App for end-users
  • /dashboard - Create React App with Firebase cloud functions for an API and admin dashboard
  • /designs - All the related design files
  • /package - A small NPM package with three functions. One is for turning GPS coordinates into a sectorKey and gridTensor, and two others for allowing us to stringify and parse BitInts in JSON.

Languages

We have support for the following languages:

  • English
  • Spanish
  • Italian
  • Portuguese (Brazilian)
  • French
  • Russian
  • Chinese (Mandarin)
  • Arabic
  • Hindi

We are open to any pull requests to add support for other languages!

Getting app to work

The dashboard and package directories mostly speak for themselves. To get the app to run, run the following lines:

  1. yarn install to install dependencies
  2. react-native link to add assets (fonts and images) to packages
  3. If you want to install ios, run cd ios && pod install && cd ../
  4. yarn start for hot reloading
  5. iOS: yarn ios / Android: yarn android

Technical Explanation

For anyone wanting to know how we’re currently performing set intersection on the Covid Alert app… this is the description of how the system works. We’re looking to improvements on this process, specifically related to key generation and private set intersection in either Paillier HME or SEAL.

We’re trying to work on improving key generation speed for iOS and Android using React Native. There’s two places where we’re currently using Paillier HME: on the device to generate keys, encrypt the grid tensor, and then decrypt the result AND on the Node.js serverless function where the actual computation takes place. Here’s the workflow:

  1. Mobile phone generates a public/private key for Paillier upon loading the application. Mobile phone also generates a GPS coordinate of the user’s location every 30 seconds while moving.
  2. Coordinates are clipped to 2 digits to generate a “sector key” (accurate to 1km x 1km, aka… not very accurate) and then the 3rd digit (accurate to 100m x 100m) is clipped to generate a “grid tensor” (a 10x10 array of 0's with a 1 representing the location of the user).
  3. The sector key is left unencrypted since it’s not accurate enough to describe a person. The grid tensor, however, is flattened and then each value is encrypted.
  4. The unencypted sector key, the encrypted grid tensor, and the n and g values of the public key are sent to the server.
  5. The server receives everything and immediately regenerates the public key (using the provided n and g values, it must be identical to the one generated on the phone). It also then looks up all locations in the database reported in the last 72 hours for the same sector key.
  6. If one or more locations are found, we loop through the locations and perform a Paillier multiplication of each of the values (unencrypted) of that location (converted into a grid tensor) and the encrypted grid tensor supplied by the mobile phone. At the end of that matrix multiplication, the values are summed. We then continue to iterate over each location summing them against each other as we go.
  7. The final value (all the multiplied sums computed into value) is returned to the mobile phone in encrypted form.
  8. The mobile phone decrypts the value. If it’s 0, they’re safe. If it’s 1 or greater, they’re in an overlapped zone of someone with COVID in the last 72 hours and are promptly notified to exit the area calmly and quietly.

That’s the whole workflow from A->Z. Here’s a link to each of the main files involved in this work...

Acknowledgements

Many people have worked on this application within the OpenMined community, many of which do not show up in the commit history. Here's a brief list (in alphabetical order):

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].