StopCovid — приложение для фиксации контактов с зараженными без нарушения приватности

Некоторое время назад к нам в компанию пришел проект по фиксации контактов между людьми, чтобы в случае заражения была возможность протестировать потенциально зараженных. Данное приложение должно помочь африканской стране Джибути, где очень мало аппаратов ИВЛ.

На сегодня команда Workin Geeks завершила работу над приложением и я расскажу о том, как устроено решение, минимально вторгающееся в личную жизнь людей.

Исследование

К началу работы мы уже видели существующие приложения и знали, что есть сингапурская разработка TraceTogether от сообщества Open Trace. Также поиском решений занимались студенты из Стэнфорда. Первые обещали в скором времени открыть свой код для использования. Мы предложили заказчику дождаться публикации, чтобы не тратить ресурсы зря. Через две недели мы получили исходники и дополнили их в соответствии с особенностями Джибути.

StopCovid — приложение для фиксации контактов с зараженными без нарушения приватности

Как оно работает?

Приложение не следит за геолокацией. Это можно понять по запрашиваемым доступам. Наличие контакта определяется с помощью Bluetooth. Эта популярная технология позволяет не только передавать файлы, но и прикидывать расстояние до другого обнаруженного устройства. Фиксация контакта работает только если на обоих устройствах запущено приложение StopCovid, поэтому без согласия участником сбора данных не стать.

В оригинальной версии приложения из данных пользователя запрашивается только телефон. Он используется для связи с человеком в случае потенциального заражения. При этом данные о контактах хранятся на телефоне и не могут быть получены правительством без действий со стороны пользователя.

Когда у пациента находят коронавирус, он может сообщить о тех, с кем он находился на расстоянии не более 2 метров, при помощи приложения. Ему сообщают пин код, который позволяет загрузить данные его контактов в зашифрованном виде на сервер, к которому оперативная группа по борьбе с вирусом имеет доступ и умеет расшифровывать. В расшифрованных данных хранятся телефоны и время контакта с больными.

По датам можно осечь тех, кто контактировал до максимально возможного инкубационного периода заболевания. Оставшимся можно позвонить и предоставить возможность тестирования на дому. И так далее по цепочке. Можно находить полные цепочки передачи вируса и заранее планировать количество необходимых ИВЛ, а так же обязывать к строгому карантину зараженных.

Представленное описание является довольно точным, но упрощенным. Если хочется понять технологию полностью, то это можно сделать на сайте Open Trace на английском языке.

Недостатки

Сейчас на iPhone и других устройствах компании Apple технология не может работать, когда пользователь выключил экран. Поэтому в текущей версии айфон приходится переводить в режим энергосбережения и класть в карман во включенном состоянии, чтобы он продолжал фиксировать контакты. Это создает ненужные сложности, в связи с чем Apple и Google скорей всего и объявили о совместной работе над предоставлением дополнительных возможностей разработчикам. После релиза улучшений недостаток скорей всего будет устранен.

Apple запрещает публиковать подобные приложения кому-то, кроме властей стран, поэтому сотрудничество с государством является необходимой частью. Однако не всегда легко наладить контакт.

Опыт других стран

Австралия уже адаптировала приложение TraceTogether для себя.

Судя по этой статье, Исландия, Великобритания и Тайвань тоже рассматривают подобное решение.

Германия и США ждут улучшений от Apple и Google. Возможно есть еще какие-то кейсы, но мы их не находили.

Что в России?

Приложение, которое пытались запускать в России, сильно отличалось от описанного решения и следило за геопозицией, а так же собирало много других данных, судя по тому что было найдено сторонними исследованиями. Мы пытались обратиться с предложением адаптировать TraceTogether для России, но, к сожалению, не получили ответа.

1010
17 комментариев

А вы в курсе, что если включить энергосбережение, то экран лочится через 30 секунд, и это не изменить? 🤔

Ответить

Спасибо за комментарий!

Это не так. Если говорить конкретно, то следующий код заставляет телефон и экран продолжать работать, пока есть заряд даже в режиме энергосбережения.

UIApplication.shared.isIdleTimerDisabled = true

Это же используется в приложениях, воспроизводящих видео, навигаторах, приложениях по чтению книг и прочих. В том числе мы перепроверили это на практике.

1
Ответить

Что касается определения расстояния, то вам эта информация ничего не даст. Вот находитесь вы дома, и в 10 метрах от вас фиксируется человек. И что?? Может быть он в подъезде по лестнице прошел. Или может быть человек в соседней квартире в любом направлении. Что эта информация вам даёт?? Ничего.

Что касается соотношения энергозатрат блютус и GSM, то я немного посмотрел этот вопрос. Да, действительно мощность GSM передатчика меньше на порядок. С точки зрения энергозатрат я с вами соглашусь, однако я не могу согласиться с вами в части решения проблем с применением данной технологии.

"Однако описанный вами вариант с определением геопозиции не решает проблему, если не отсылать ее на сервер и не прогонять алгоритмы, которые еще нужно написать и протестировать."
Я не предлагаю передавать информацию с телефона пользователя. Я предлагаю делать всё на стороне провайдера.

https://habr.com/ru/company/megafon/blog/167905/
http://pro-gsm.info/location-tracking.html

Я бегло ознакомился с парой статей, и это вполне решаемая задача уже давно, контролировать перемещение человека со стороны провайдера, даже так чтобы он не узнал, причем с достаточно высокой точностью.

При применении блютус невозможно сделать алгоритмы анализа движения человека в принципе, а в случае геолокации можно не только отслеживать путь, но и привязывать контекст.

Привожу пример.
У человек есть машина. По базе ГИБДД мы знаем, что у него есть авто. Мы фиксируем движение. Камера фиксирует движение авто. Мы понимаем кто едет в авто. Таким образом, пешеходов и водителей других авто можно исключить.

Если же взять блютус, то мы вообще ничего не понимаем. Едит ли человек в автомобиле или автобусе. Люди рядом это пассажиры в авто/автобусе или соседи в других авто в пробке. Мы по сути ничего не знаем.

Поэтому, я считаю, применение геолокации в данном случае оптимальным решением.

Более того, заставить других людей установить приложение в условиях российской действительности вы сможете с трудом. Контроль же со стороны провайдера будет гарантировать результат. Причем о зарадяке телефона люди будут беспокоиться сами. Многие даже не предадут значения тому, что телефон станет быстрее разряжаться.

Ответить

В тех же статьях, что вы упомянули - "Точность в городе от 100 до 300 метров, за городом как правило от 100 до 500-700 метров." Этого недостаточно, чтобы хоть сколько то точно зафиксировать контакт. То же самое я могу сказать по собственному опыту работы в телекоме. Будет гораздо больше ложноположительных, чем при нашем решении.
Мы отсекаем контакты по 2 метрам, поэтому "в 10 метрах" мы не будем фиксировать контакт.
Для того, чтобы определить, что человек передвигается на транспорте, достаточно посмотреть скорость изменения геопозиции, не нужно залезать в базы ГИБДД.

И я хотел бы еще раз обратить внимание, что мы пытались найти решение, которое минимально следит за человеком и при этом помогает ему. Поэтому слежение без сообщения пользователю - это не наш путь. И есть основание верить, что такое приложение люди согласятся поставить.

Ответить

Не очень понятно. Нужно все время ходить с включённым приложением и не заблокированным экраном, чтобы просто отследить примерное расстояние? Зачем пользователям это делать?

Ответить

Спасибо за вопрос!

Необходимость держать экран включенным есть только у пользователей iPhone и является временным неудобством, судя по заявлениям Apple.

Однако если принять, что это нужно сделать, уже сейчас можно более точечно отслеживать распространение инфекции и более эффективно бороться с ее распрострением. Это нужно для того, чтобы помочь себе, своим близким и своим согражданам.
Сейчас дневной прирост в России только тех у кого обнаруживается инфекция около 10к. Многие из этих людей выходили в магазин, аптеку или по своим делам, а значит контактировали с кем-то помимо своей семьи. Это дает довольно большой мультипликатор числу людей, которые заболеют завтра, через неделю, 20 дней.
В текущем варианте, люди которым был передан вирус, не знают об этом и продолжают ходить за продуктами и так далее. А если бы они потерпели необходимость чуть чаще заряжать телефон и держать приложение включенным, то смогли бы уберечь других людей.
Мы верим, что россиянам может быть небезразлична жизнь незнакомых им людей.

Ответить

Это идея борьбы с вирусом или свободой граждан? Завтра к вам приедут и запретят выходить на улицу по причине возможного заражения гриппа, штраф за нарушение. Без всякой компенсации итп. 
 
Вы хотите превратиться в подопытных мышей?
Чтобы к вам в дом являлись типа врачи и силой вас лечили и всю вашу семью заперли и взяли под контроль? 

Это не тиф, это грип! Хотите сея обезопаситься делайте что хотите. Но не мешайте другим жить и работать.

Ответить