StopCovid — приложение для фиксации контактов с зараженными без нарушения приватности
Некоторое время назад к нам в компанию пришел проект по фиксации контактов между людьми, чтобы в случае заражения была возможность протестировать потенциально зараженных. Данное приложение должно помочь африканской стране Джибути, где очень мало аппаратов ИВЛ.
На сегодня команда Workin Geeks завершила работу над приложением и я расскажу о том, как устроено решение, минимально вторгающееся в личную жизнь людей.
Исследование
К началу работы мы уже видели существующие приложения и знали, что есть сингапурская разработка TraceTogether от сообщества Open Trace. Также поиском решений занимались студенты из Стэнфорда. Первые обещали в скором времени открыть свой код для использования. Мы предложили заказчику дождаться публикации, чтобы не тратить ресурсы зря. Через две недели мы получили исходники и дополнили их в соответствии с особенностями Джибути.
Как оно работает?
Приложение не следит за геолокацией. Это можно понять по запрашиваемым доступам. Наличие контакта определяется с помощью Bluetooth. Эта популярная технология позволяет не только передавать файлы, но и прикидывать расстояние до другого обнаруженного устройства. Фиксация контакта работает только если на обоих устройствах запущено приложение StopCovid, поэтому без согласия участником сбора данных не стать.
В оригинальной версии приложения из данных пользователя запрашивается только телефон. Он используется для связи с человеком в случае потенциального заражения. При этом данные о контактах хранятся на телефоне и не могут быть получены правительством без действий со стороны пользователя.
Когда у пациента находят коронавирус, он может сообщить о тех, с кем он находился на расстоянии не более 2 метров, при помощи приложения. Ему сообщают пин код, который позволяет загрузить данные его контактов в зашифрованном виде на сервер, к которому оперативная группа по борьбе с вирусом имеет доступ и умеет расшифровывать. В расшифрованных данных хранятся телефоны и время контакта с больными.
По датам можно осечь тех, кто контактировал до максимально возможного инкубационного периода заболевания. Оставшимся можно позвонить и предоставить возможность тестирования на дому. И так далее по цепочке. Можно находить полные цепочки передачи вируса и заранее планировать количество необходимых ИВЛ, а так же обязывать к строгому карантину зараженных.
Представленное описание является довольно точным, но упрощенным. Если хочется понять технологию полностью, то это можно сделать на сайте Open Trace на английском языке.
Недостатки
Сейчас на iPhone и других устройствах компании Apple технология не может работать, когда пользователь выключил экран. Поэтому в текущей версии айфон приходится переводить в режим энергосбережения и класть в карман во включенном состоянии, чтобы он продолжал фиксировать контакты. Это создает ненужные сложности, в связи с чем Apple и Google скорей всего и объявили о совместной работе над предоставлением дополнительных возможностей разработчикам. После релиза улучшений недостаток скорей всего будет устранен.
Apple запрещает публиковать подобные приложения кому-то, кроме властей стран, поэтому сотрудничество с государством является необходимой частью. Однако не всегда легко наладить контакт.
Опыт других стран
Австралия уже адаптировала приложение TraceTogether для себя.
Судя по этой статье, Исландия, Великобритания и Тайвань тоже рассматривают подобное решение.
Германия и США ждут улучшений от Apple и Google. Возможно есть еще какие-то кейсы, но мы их не находили.
Что в России?
Приложение, которое пытались запускать в России, сильно отличалось от описанного решения и следило за геопозицией, а так же собирало много других данных, судя по тому что было найдено сторонними исследованиями. Мы пытались обратиться с предложением адаптировать TraceTogether для России, но, к сожалению, не получили ответа.
А вы в курсе, что если включить энергосбережение, то экран лочится через 30 секунд, и это не изменить? 🤔
Спасибо за комментарий!
Это не так. Если говорить конкретно, то следующий код заставляет телефон и экран продолжать работать, пока есть заряд даже в режиме энергосбережения.
UIApplication.shared.isIdleTimerDisabled = true
Это же используется в приложениях, воспроизводящих видео, навигаторах, приложениях по чтению книг и прочих. В том числе мы перепроверили это на практике.
Что касается определения расстояния, то вам эта информация ничего не даст. Вот находитесь вы дома, и в 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 метрах" мы не будем фиксировать контакт.
Для того, чтобы определить, что человек передвигается на транспорте, достаточно посмотреть скорость изменения геопозиции, не нужно залезать в базы ГИБДД.
И я хотел бы еще раз обратить внимание, что мы пытались найти решение, которое минимально следит за человеком и при этом помогает ему. Поэтому слежение без сообщения пользователю - это не наш путь. И есть основание верить, что такое приложение люди согласятся поставить.
С точки зрения методологии, здравая часть в вашем предложении конечно есть. Ловить всех кто ближе 2-х метров.
Не очень понятно. Нужно все время ходить с включённым приложением и не заблокированным экраном, чтобы просто отследить примерное расстояние? Зачем пользователям это делать?
Спасибо за вопрос!
Необходимость держать экран включенным есть только у пользователей iPhone и является временным неудобством, судя по заявлениям Apple.
Однако если принять, что это нужно сделать, уже сейчас можно более точечно отслеживать распространение инфекции и более эффективно бороться с ее распрострением. Это нужно для того, чтобы помочь себе, своим близким и своим согражданам.
Сейчас дневной прирост в России только тех у кого обнаруживается инфекция около 10к. Многие из этих людей выходили в магазин, аптеку или по своим делам, а значит контактировали с кем-то помимо своей семьи. Это дает довольно большой мультипликатор числу людей, которые заболеют завтра, через неделю, 20 дней.
В текущем варианте, люди которым был передан вирус, не знают об этом и продолжают ходить за продуктами и так далее. А если бы они потерпели необходимость чуть чаще заряжать телефон и держать приложение включенным, то смогли бы уберечь других людей.
Мы верим, что россиянам может быть небезразлична жизнь незнакомых им людей.
Это идея борьбы с вирусом или свободой граждан? Завтра к вам приедут и запретят выходить на улицу по причине возможного заражения гриппа, штраф за нарушение. Без всякой компенсации итп.
Вы хотите превратиться в подопытных мышей?
Чтобы к вам в дом являлись типа врачи и силой вас лечили и всю вашу семью заперли и взяли под контроль?
Это не тиф, это грип! Хотите сея обезопаситься делайте что хотите. Но не мешайте другим жить и работать.
Благодарю за комментарий!
Вся суть этой идеи в том, чтобы не изолировать всех подряд, а только тех, у кого есть инфекция. Это должно не мешать жить и работать, а наоборот помочь быстрее восстановиться. В Сингапуре, где написали первую версию приложения, спад темпов заражения произошел чуть больше, чем за две недели.
И грипп - это другой вирус, не стоит их приравнивать. Они обладают разной скоростью распространения.
Мне не понятно другое. А почему нельзя отслеживать местоположение провайдерам?? Ведь это наверняка легче сделать. Можно в режиме реального времени отслеживать местоположение путем триангуляции по базовым станциям через уровень сигнала. У спецслужб наверное есть уже миллион решений по данной тематике.
Плюс имеется вопрос по правомерности данного контроля в принципе, не говоря уже о хранении персональных данных. В сущности, вся современная жизнь человека будет под колпаком, и я глубоко убежден, что некоторые однозначно попытаются завладеть информацией.
Спасибо за комментарий!
Данный способ будет следить за геопозицией человека, мы как раз предлагаем этого не делать, так как и необходимости в этом нет.
Если смотреть с сугубо технической, а не правовой стороны, то триангуляция - это не самый точный из доступных методов определения геопозиции. GPS и ГЛОНАСС гораздо точнее.
Однако еще раз повторюсь, что у отслеживания геопозиции нет никаких преимуществ, она будет даже менее точной внутри зданий: магазинов, аптек и так далее, где люди находятся ближе всего друг к другу. Bluetooth с такой проблемой не столкнется.
У вашего способа есть масса недостатков.
Не будем говорить о принципиальной возможности того, что боютус будет включен, уже это сомнительно. Здесь есть вопрос энергопотребления.
Плюс вопрос достоверности данных.
Например, я включаю боютус на компьютере, и у меня со всех окружающих квартир становятся видны все окружающие устройства. Например, я могу не контактировать с соседом сверху, но при этом контакт будет зафиксирован.
Или, например, поток машин. Человек едущий по встрече со мной не контактирует, но система его будет видеть. А с учётом того, что вы не отслеживаете положение, вы не можете применить алгоритмы фильтрации данных.
То есть, вы не знаете, что человек едет в соседней машине, или едет в другом ряду, или едет по встрече.
Плюс, оценка расстояния сомнительна.
Плюс, вот взять офис. Человек ходит по офису, но при этом боютус может не показывать, что заболевший и здоровый находились в одном помещении и контактировали, а геолокация покажет.
Я вижу множество недостатков вашей системы. Даже с учётом снижения точности геолокация, всё равно она обладает преимуществом.
Касательно определения расстояния, в том числе в офисных сценариях, а так же энергосбережения можно прочитать как проводились исследования здесь https://github.com/opentrace-community/opentrace-calibration/blob/master/Trial%20Methodologies.md Погрешности, к сожалению, не указаны.
Bluetooth тратит меньше энергии, чем GPS или сотовая связь. Понятно, что сотовая связь у всех работает по-умолчанию, однако для триангуляции в реальном времени нужно постоянно посылать сигнал на вышки оператора, что убьет батарею гораздо быстрее. Bluetooth в этом плане самая экономная технология под задачу.
Фиксация контактов там, где их не было (в машине, с соседом) возможна. Однако описанный вами вариант с определением геопозиции не решает проблему, если не отсылать ее на сервер и не прогонять алгоритмы, которые еще нужно написать и протестировать. В краткосрочной перспективе гораздо проще протестировать еще одного человека на дому. В случае повторения пандемий этот вариант возможно улучшит показатели, но тут вопрос целесообразности. Суть нашей статьи в том, что решение уже существует, уже протестировано, его нужно только применить. Написание и тестирование новых, более точных алгоритмов может занять месяцы.
Нахождение в одном помещении и заражение через поверхности действительно не определяется и определение геопозиции в этом случае могло бы дать лучшие результаты. Возможно стоит рассмотреть варианты дополнения информации с Bluetooth контактами с общими wi-fi точками с придачей меньшего веса этим контактам. Вероятно, этого может быть достаточно.
"Нахождение в одном помещении и заражение через поверхности действительно не определяется и определение геопозиции в этом случае могло бы дать лучшие результаты. Возможно стоит рассмотреть варианты дополнения информации с Bluetooth контактами с общими wi-fi точками с придачей меньшего веса этим контактам. Вероятно, этого может быть достаточно."
Понимаете в чем дело. Решение должно закрывать вопрос или полностью, или вообще не предлагаться. Вот мы с вами подошли к вопросу дополнительных энергозатрат и модернизации приложения. Мол давайте еще дополнительно wi-fi точки отслеживать. А это уже как минимум лишь несколько часов работы в день устройства.
Но даже если так сделать, то опять же вопрос базы wi-fi. Есть у кого-то база расположения всех wi-fi точек доступа??
В общем, мне видится, что проще использовать уже готовую и понятную технологию, которую, уверен, многие спецслужбы применяют уже многие годы. Триангуляция по базовым станциям наверное сейчас уже настолько точна, что её можно просто взять и использовать.
Тезис про триангуляцию не верен, подробнее написал в ответе на ваш другой комментарий.
База Wi-Fi открытая, для это помощь спецслужб не нужна, подробнее можно прочитать здесь. https://en.wikipedia.org/wiki/Wi-Fi_positioning_system
По поводу того, что "Решение должно закрывать вопрос или полностью, или вообще не предлагаться" не соглашусь. Весь прогресс человечества основан на неидеальных промежуточных результатах и их непрерывном улучшении.
Не увидел где можно посмотреть базу данных по местоположению WiFi точек доступа. Да и вообще сомнительно, вот у меня стоит дома WiFi, и что, в открытом доступе находится информация о местоположении моей точки с соответствующим MAC-адресом??
Домашний конечно нет, если вы его не внесете в базу, эти базы пополняются вручную заинтересованными владельцами публичных wi-fi точек. Публичные базы данных есть в последнем разделе (скриншот приложил). В вики вроде российских нет, однако есть аналоги. С ходу нашел http://3wifi.stascorp.com/. Возможно есть еще какие-то.