Wednesday, May 06, 2020

My thoughts on contact tracing apps

Digital handshake: Can contact tracing deliver on its promise in coronavirus battle?

Here is my own take on how contact tracing apps can be implemented, based on some of the stuff I have been reading.

Basic model: Smartphone app using Bluetooth. The app will both broadcast its IMEI number, and at the same time, note down the IMEI numbers being broadcast by other phones in the vicinity.

1. Signal strength should be used to determine proximity. A threshold should be used; any signal strength below that should be ignored.

2. An IMEI number needs to be "valid" (above threshold signal strength) for a certain period of time in order to be flagged as "close contact". Maybe repeatedly seeing the same number over 15 to 30 minutes would be a good gauge. This needs to be determined by scientists studying infectious diseases.

3. Valid numbers are logged down in the phone, with a time stamp of the date and time when it became a valid number. This means the only personal data being stored on phones are the IMEI numbers. If the same number has already been logged in the past X hours (probably 6 hours, but this is again a number for experts to determine), then it is ignored.

4. If a person is found to have been infected, the log from his or her phone is downloaded by the authorities. Then, records falling within the "infectious period" are extracted. The IMEI numbers are checked against the records of mobile operators to determine the identities of the owners.

5. Step 4 is repeated in an outward cascade.

6. Records are deleted after a certain period has gone by (like 3 months).

The advantage of such a system is that the minimum data is being stored on phones. This means records will only take up very little storage space. Also, the only personal data stored is the IMEI number, which helps to keep identities private since linking IMEI number to owner name is something that is not easily done (without access to data maintained by mobile operators). Regular housekeeping of old records means the data set is kept small and manageable for use.

Implementation-wise, I think Python already has the Bluetooth libraries needed, and Kivy is probably a good way to create the actual UI portion since it can be easily packaged to run on both Android and iOS phones. The app will start as a beacon, and become a scanner at certain fixed intervals (like every 5 minutes) to do the processing and logging of nearby phones. Wonder if anyone wants to give this a try?

1 comment:

Teck said...

I just watched this video, which is also about using Bluetooth for decentralized contact tracing.
https://www.youtube.com/watch?v=D__UaR5MQao
The blog posts:
https://ncase.me/contact-tracing/
https://ncase.me/covid-19/

The idea is to exchange random hash values instead of IMEI. Yes, IMEI is private info, so hash values are probably the best. Still, there is a need for a central repo of all "infected" hash values. I just hope governments can start working on their own national repos and apps, and hopefully, there will be a worldwide version soon (WHO?) so that we can eventually get back to international travel.