Трибуна
Anton Kondrashov
944

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

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

В закладки

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

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

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

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

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

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

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

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

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

Недостатки

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

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

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

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

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

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

Что в России?

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

{ "author_name": "Anton Kondrashov", "author_type": "self", "tags": [], "comments": 17, "likes": 7, "favorites": 8, "is_advertisement": false, "subsite_label": "tribuna", "id": 124900, "is_wide": false, "is_ugc": true, "date": "Mon, 04 May 2020 18:18:22 +0300", "is_special": false }
Карьера
Как сделать заказной веб или mobile проект с нуля: процессы, правила и немного крови
В интернете и книгах полным-полно best practices, которые освещают те или иные моменты в работе над ИТ-проектом…
Объявление на vc.ru
0
17 комментариев
Популярные
По порядку
Написать комментарий...
0

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

Ответить
1

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

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

UIApplication.shared.isIdleTimerDisabled = true

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

Ответить
0

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

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

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

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

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

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

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

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

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

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

Ответить
0

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

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

Ответить
1

С точки зрения методологии, здравая часть в вашем предложении конечно есть. Ловить всех кто ближе 2-х метров. 

Ответить
0

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

Ответить
0

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

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

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

Ответить
0

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

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

Ответить
0

Благодарю за комментарий!

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

И грипп - это другой вирус, не стоит их приравнивать. Они обладают разной скоростью распространения.

Ответить
0

Мне не понятно другое. А почему нельзя отслеживать местоположение провайдерам?? Ведь это наверняка легче сделать. Можно в режиме реального времени отслеживать местоположение путем триангуляции по базовым станциям через уровень сигнала. У спецслужб наверное есть уже миллион решений по данной тематике.

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

Ответить
0

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

Данный способ будет следить за геопозицией человека, мы как раз предлагаем этого не делать, так как и необходимости в этом нет.

Если смотреть с сугубо технической, а не правовой стороны, то триангуляция - это не самый точный из доступных методов определения геопозиции. GPS и ГЛОНАСС гораздо точнее.

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

Ответить
0

У вашего способа есть масса недостатков.

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

Плюс вопрос достоверности данных.

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

Или, например, поток машин. Человек едущий по встрече со мной не контактирует, но система его будет видеть. А с учётом того, что вы не отслеживаете положение, вы не можете применить алгоритмы фильтрации данных.

То есть, вы не знаете, что человек едет в соседней машине, или едет в другом ряду, или едет по встрече.

Плюс, оценка расстояния сомнительна.

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

Я вижу множество недостатков вашей системы. Даже с учётом снижения точности геолокация, всё равно она обладает преимуществом.

Ответить
0

Касательно определения расстояния, в том числе в офисных сценариях, а так же энергосбережения можно прочитать как проводились исследования здесь https://github.com/opentrace-community/opentrace-calibration/blob/master/Trial%20Methodologies.md Погрешности, к сожалению, не указаны.

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

Фиксация контактов там, где их не было (в машине, с соседом) возможна. Однако описанный вами вариант с определением геопозиции не решает проблему, если не отсылать ее на сервер и не прогонять алгоритмы, которые еще нужно написать и протестировать. В краткосрочной перспективе гораздо проще протестировать еще одного человека на дому. В случае повторения пандемий этот вариант возможно улучшит показатели, но тут вопрос целесообразности. Суть нашей статьи в том, что решение уже существует, уже протестировано, его нужно только применить. Написание и тестирование новых, более точных алгоритмов может занять месяцы.

Нахождение в одном помещении и заражение через поверхности действительно не определяется и определение геопозиции в этом случае могло бы дать лучшие результаты. Возможно стоит рассмотреть варианты дополнения информации с Bluetooth контактами с общими wi-fi точками с придачей меньшего веса этим контактам. Вероятно, этого может быть достаточно.

Ответить
0

"Нахождение в одном помещении и заражение через поверхности действительно не определяется и определение геопозиции в этом случае могло бы дать лучшие результаты. Возможно стоит рассмотреть варианты дополнения информации с Bluetooth контактами с общими wi-fi точками с придачей меньшего веса этим контактам. Вероятно, этого может быть достаточно."

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

Но даже если так сделать, то опять же вопрос базы wi-fi. Есть у кого-то база расположения всех wi-fi точек доступа?? 

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

Ответить
0

Тезис про триангуляцию не верен, подробнее написал в ответе на ваш другой комментарий.
База Wi-Fi открытая, для это помощь спецслужб не нужна, подробнее можно прочитать здесь. https://en.wikipedia.org/wiki/Wi-Fi_positioning_system

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

Ответить
0

Не увидел где можно посмотреть базу данных по местоположению WiFi точек доступа. Да и вообще сомнительно, вот у меня стоит дома WiFi, и что, в открытом доступе находится информация о местоположении моей точки с соответствующим MAC-адресом??

Ответить
0

Домашний конечно нет, если вы его не внесете в базу, эти базы пополняются вручную заинтересованными владельцами публичных wi-fi точек. Публичные базы данных есть в последнем разделе (скриншот приложил). В вики вроде российских нет, однако есть аналоги. С ходу нашел http://3wifi.stascorp.com/. Возможно есть еще какие-то.

Ответить

Прямой эфир