1) Ориентация на старый bluetooth и wifi, где каждое устройство обладает уникальным мак-адресом и вещает его в эфир, телефоны накапливают список мак-адресов которые они наблюдали последние 2 недели. В случае заболевания, заболевший публикует на специальном сервере свой MAC-адрес, остальные проверяют факт публикации известных им адресов и сигнализируют если нужно.
Здесь есть две проблемы: во-первых существуют, базы данных мак-адресов с номерами паспортов владельцев устройств. Т.е. факт заболевания конкретного гражданина становится широко известным, теряется анонимность. Во-вторых хеширование адресов практически бесполезно, т.к. каждый конкретный телефон может использовать модифицированное ПО и хранить вместе с хешами и настоящие маки, т.е. для тех кто наблюдал конкретный адрес функция хеша становится обратимой, и они могут по факту получения предупреждения опубликовать настоящий мак-адрес заразного.
2) Ориентация исключительно на Bluetooth LE, где возможна широковещательная рассылка (beacon) произвольной информации. В частности можно рассылать не свой мак-адрес, а некоторые хеши посчитанные на основе адреса и, например, текушего времени. Т.е. идентификатор конкретного человека постоянно меняется -- это существенный плюс. В случае заражения, опять же на специальном сервере публикуются некие числовые значения (уникальный идентификатор, случайный, но не мак) идентифицирующие человека. Далее все заинтересованные получают информацию с сервера, считают хеши, проверяют, не встречалось ли такие хеши в эфире, если встречались -- сигнализируют.
В данном случае всё равно есть уязвимость: каждый телефон записывает какой код он видел в какой момент времени, и впоследствии узнаёт что был потенциально заражен тогда-то. Далее человек может вспомнить с кем встречался именно в этот момент времени (хуже того, телефон может записать wifi и bluetooth MAC-адреса в автоматическом режиме -- опять же речь про модифицированное ПО).
Кроме того, в обоих случаях непонятно как запускать "волну" заражения. Как вариант, каждый телефон вычислив, что он потенциально заражен может тоже опубликовать свои коды на сервере, но с TTL меньшим на единичку...
Какие ещё потенциальные проблемы: получается должен существовать сервер способный выдерживать ГИГАНТСКИЕ нагрузки. К счастью в основном только GET-запросы, т.е. легко параллелится и масштабируется. Кроме того, абонентов можно принудительно разнести в разные "таймслоты" на основе их идентификаторов, чтоб выровнять нагрузку, избежать пиков.
И ещё важная проблема: недостоверные сообщения. Как с ней бороться непонятно. Это опять же опрос социальный, а не технический. У меня идей нет. Делать внос сведений платным -- нельзя. Разве что, после публикации сведений блокировать абонента на длительный срок.
И очевидно должна быть функция тестирования. Когда так же "волна" проходит, но с другим сообщением, мол тест. Чтоб люди убедились, что приложение работет.