Фунт профилактики стоит пуда лечения.
Раннее вмешательство является одной из наиболее эффективных стратегий лечения заболеваний. Это справедливо не только для человеческого организма, но и для общества в целом. Вот почему чиновники здравоохранения используют отслеживание контактов в качестве первой линии защиты от распространения инфекционных заболеваний среди населения.
В наши дни мы много слышим об отслеживании контактов, но эта техника используется уже несколько десятилетий. Что изменилось благодаря повсеместному распространению персональных электронных устройств мы можем автоматизировать то, что было до сих пор — трудоемкий, ручной процесс. Подобно тому, как "компьютер" раньше был названием должности, занимаемой людьми, роль "контактного трассировщика" вскоре может быть заполнена в первую очередь приложениями.
29 апреля Apple выпустила iOS 13.5 beta 1, которая включает в себя первый публичный релиз ExposureNotification (ранее ContactTracing) протокола. Содержание этой статьи было обновлено, чтобы отразить эти изменения.
Что такое отслеживание контактов?
Отслеживание контактов — это метод, используемый должностными лицами общественного здравоохранения для выявления людей, подверженных инфекционному заболеванию, с тем чтобы замедлить распространение этого заболевания среди населения.
Когда пациент поступает в больницу с диагнозом нового инфекционного заболевания, он проходит собеседование с медицинскими работниками, чтобы узнать, с кем они взаимодействовали в последнее время. Любые контакты, взаимодействие которых с пациентом затем оценивается и, если они диагностируются с болезнью, процесс повторяется с их известными, недавними контактами.
Отслеживание контактов нарушает цепочку передачи. Это дает людям возможность изолировать себя до заражения других и обратиться за лечением до появления симптомов заболевания. Он также позволяет лицам, принимающим решения, выносить более обоснованные рекомендации и политические решения о дополнительных мерах, которые необходимо принять.
Если вы начинаете рано и действуете быстро, отслеживание контактов дает вам боевой шанс сдержать вспышку до того, как она выйдет из-под контроля.
К сожалению, на этот раз нам не так повезло.
Имея более миллиона подтвержденных случаев заболевания covid-19 во всем мире, многие регионы уже давно прошли тот этап, когда отслеживание контактов стало практичным. Но это не значит, что она не сможет сыграть существенную роль в ближайшие недели и месяцы.
“Только Apple (и Google) могут это сделать.”
После вспышки болезни различные правительства и ученые предложили, кака раз таки стандарты отслеживания контактов. Но самое значительное событие произошло намедни, когда Apple и Google объявили о совместной инициативе.
По данным nhs, около 60% взрослых в популяции должны были бы участвовать для того, чтобы цифровое отслеживание контактов было эффективным. Исследователи из вышеупомянутых учреждений отметили, что ограничения установленные iOS для сторонних приложений, делают этот уровень участия маловероятным.
С одной стороны, странно поздравлять Apple с тем, что она вмешалась в решение проблемы, которую она создала в первую очередь. Но мы все можем согласиться, что это объявление стоит отпраздновать. Не будет преувеличением сказать, что это было бы невозможно без их помощи.
Что предлагают Apple и Google в качестве решения?
На высоком уровне, Apple и Google предлагают единый стандарт для того, как персональные электронные устройства (телефоны, планшеты, часы) можно автоматизировать процесс отслеживания контактов.
Вместо того чтобы медицинские работники гонялись за контактами по телефону — процесс, который может занять часы или даже дни, — предложенная система могла бы идентифицировать каждый недавний контакт и уведомлять их всех в течение нескольких минут после подтверждения положительного диагноза.
Эта инфографика из блога Google, объявляющего о партнерстве, дает хорошее объяснение задействованных технологий.
Генеральный директор Apple Тим Кук обещает, что “отслеживание контактов может помочь замедлить распространение COVID-19 и может быть сделано без ущерба для конфиденциальности пользователей”.. Спецификации, сопровождающие объявление показывают, как это возможно.
Давайте рассмотрим их по очереди, начиная с криптографии (вывод и вращение ключей), затем и аппаратное обеспечение (Bluetooth), а так же программное обеспечение (приложение) и его компоненты.
Криптография
Когда вы устанавливаете приложение и открываете его в первый раз, платформа уведомлений о воздействии отображает диалоговое окно с запросом разрешения на включение трассировки контактов на устройстве.
Если пользователь соглашается, протокол генерирует 32-байтовое криптографическое случайное число, которое служит ключом трассировки устройства . Ключ трассировки хранится в секрете, никогда не покидая устройство.
Если понятие "двоичные данные" кажется вам пугающим или бессмысленным, вы можете посмотреть несколько примеров того, как эта информация может быть закодирована в удобно читаемую для человека форму.
32 байта двоичных данных могут быть представлены строкой длиной 44 символа в кодировке Base64 или строкой из 64 шестнадцатеричных цифр. Вы можете создать их для себя из командной строки с помощью следующих команд:
$ head -c32 < /dev/urandom | xxd -p -c 64
211ad682549d92fbb6cd5dc42be5121b22f8864b3a7e93cedb9c43c83332440d
$ head -c32 < /dev/urandom | base64
2pNDyj5LSr0GGi1IL2VOvsovBwmG4Yp5YYP7leg928Y=
16 байт двоичных данных также могут быть представлены в Base64 или шестнадцатеричном формате, но более распространено и удобно использовать uuid:
$ uuidgen
33F1C4D5-3F1C-4FF0-A05E-A267FAB237CB
Каждые 24 часа устройство принимает ключ трассировки и номер дня (0, 1, 2, …) и использует hkdf для получения 16-байтового ежедневного ключа трассировки используется временный ключ экспозиции . Эти ключи остаются на устройстве, если вы не согласны поделиться ими.
Каждые 15 минут прибор принимает временную экспозицию ключа и количество 10-минутных интервалов с начала суток (0 – 143), а также использует hmac для создания нового 16-байтового скользящего идентификатора близости . Этот идентификатор транслируется с устройства с помощью Bluetooth le.
Если кто-то, использующий приложение для отслеживания контактов, получает положительный диагноз, министерство здравоохранения запрашивает у него ключи временного воздействия на тот период времени, когда он был заразен. Если пациент соглашается, эти ключи затем добавляются в базу данных органа здравоохранения в качестве ключей положительного диагноза . Эти ключи передаются другим устройствам , чтобы определить, были ли у них какие-либо контакты в течение этого периода времени.
Оборудование
Bluetooth организует связь между устройствами вокруг концепции услуг .
Сервис описывает набор характеристик для выполнения конкретной задачи. В процессе своей работы устройство может взаимодействовать с несколькими службами . Многие определения услуг стандартизированы таким образом, что устройства, которые делают одни и те же вещи, общаются одинаково.
Например, беспроводной пульсометр использующий Bluetooth для связи с вашим телефоном будет иметь профиль, содержащий две службы: первичная служба сердечного ритма и вторичная служба батареи.
Стандарт отслеживания контактов Apple и Google определяет новую службу обнаружения контактов.
Когда приложение отслеживания контактов запущено (либо на переднем плане, либо в фоновом режиме), оно действует как периферийное устройство, рекламируя свою поддержку службы обнаружения контактов любому другому устройству в пределах досягаемости. Скользящий идентификатор близости, генерируемый каждые 15 минут , отправляется в рекламном пакете вместе с 16-битным служебным UUID.
Вот некоторый код для этого с устройства iOS, использующего основной протокол Bluetooth :
import CoreBluetooth
// Contact Detection service UUID
let serviceUUID = CBUUID(string: "FD6F")
// Rolling Proximity Identifier
let identifier: Data = … // 16 bytes
let peripheralManager = CBPeripheralManager()
let advertisementData: [String: Any] = [
CBAdvertisementDataServiceUUIDsKey: [serviceUUID]
CBAdvertisementDataServiceDataKey: identifier
]
peripheralManager.startAdvertising(advertisementData)
В то же время, когда устройство вещает как периферийное устройство, оно также сканирует подвижные идентификаторы близости других устройств. Опять же, вот как вы можете сделать это на iOS с помощью Core Bluetooth:
Условно, исходя из того, какие операции разрешены системой.
let delegate: CBCentralManagerDelegate = …
let centralManager = CBCentralManager(delegate: delegate, queue: .main)
centralManager.scanForPeripherals(withServices: [serviceUUID], options: [:])
extension DelegateClass: CBCentralManagerDelegate {
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber)
{
let identifier = advertisementData[CBAdvertisementDataServiceDataKey] as! Data
…
}
}
Bluetooth — это почти идеальная технология для отслеживания контактов. Он есть на каждом потребительском смартфоне. Он работает с низким энергопотреблением, что позволяет ему работать непрерывно, не разряжая аккумулятор. И так уж случилось, что у него есть дальность передачи, которая приближается к физической близости, необходимой для передачи инфекционных заболеваний воздушно-капельным путем. Именно это последнее качество позволяет отслеживать контакты, не прибегая к данным о местоположении.
Как мы уже отмечали в предыдущей статье, индивиды в пределах популяции могут быть выделены всего лишь по четырем координатам с временными метками.
Программное обеспечение
Ваше устройство хранит все обнаруженные им подвижные идентификаторы близости и периодически сверяет их со списком положительных диагностических ключей, отправленных из центрального органа здравоохранения.
Каждый положительный диагностический ключ соответствует чьему-то временному ключу воздействия. Мы можем получить все возможные идентификаторы подвижной близости, которые он мог бы рекламировать в течение этого дня (используя тот же алгоритм HMAC, который мы использовали для получения наших собственных идентификаторов подвижной близости). Если в списке подвижных идентификаторов близости вашего устройства были обнаружены какие-либо совпадения, это означает, что вы, возможно, контактировали с зараженным человеком.
Достаточно сказать, что цифровое отслеживание контактов действительно трудно получить правильно. Учитывая важность того, чтобы сделать это правильно, как с точки зрения получения точных результатов, так и с точки зрения сохранения конфиденциальности, Apple и Google предоставляют SDK для разработчиков приложений для iOS и Android соответственно.
Все детали, которые мы обсуждали о криптографии и Bluetooth, управляются протоколом. Единственное, что нам нужно сделать как разработчикам , это связаться с пользователем — в частности, запросить его разрешение начать отслеживание контактов и уведомить его о положительном диагнозе.
Независимая экспертиза
Когда Apple анонсировала ContactTracing протокол 10 апреля, все, что нам нужно было сделать,-это несколько аннотированных заголовков Objective-C. Но по состоянию на первую публичную бета-версию iOS 13.5, теперь у нас есть официальная документация под его названием: ExposureNotification(Уведомление о воздействии).
Расчет риска воздействия
Приложение для отслеживания контактов регулярно получает новые ключи положительного диагноза от министерства здравоохранения. Затем он проверяет эти ключи на соответствие идентификаторам подвижного приближения устройства. Любые совпадения указывают на возможный риск заражения.
В первой версии ContactTracing все, что вы могли узнать о положительном совпадении, было то, как долго вы подвергались воздействию (с шагом в 5 минут) и когда произошел контакт (с неопределенным уровнем точности) . Хотя мы могли бы порадоваться уровню защиты конфиденциальности, но это не дает много полезной информации. В зависимости от конкретного человека, push-уведомление гласит: “Вы были в разоблаченном состоянии в течение 5-10 минут где-то 3 дня назад” это могло бы оправдать визит в больницу или вызвать не больше беспокойства, чем пропущенный звонок.
С ExposureNotification его помощью вы получите гораздо больше информации, в том числе:
Дни с момента последнего инцидента с экспозицией
Кумулятивная продолжительность воздействия (ограничена 30 минутами)
Минимальное ослабление силы сигнала Bluetooth (Мощность передачи - RSSI) , которая может сказать вам, насколько близко они подошли
Риск передачи инфекции, который представляет собой определенное приложением значение, которое может быть основано на симптомах, уровне верификации диагноза или другом определении, полученном от приложения или органа здравоохранения
Для каждого случая воздействия ENExposureInfo объект предоставляет всю вышеупомянутую информацию плюс общую оценку риска (от 1 до 8 ), который вычисляется из приложение присваивает веса каждому фактору в соответствии с этим уравнением:
Apple приводит этот пример в своей Рамочной документации PDF :
Управление разрешениями и раскрытием информации
Самая большая проблема, с которой мы столкнулись с оригинальным API Contact Tracing framework, заключалась в работе со всеми его обработчиками завершения. Большая часть функциональности была предоставлена через асинхронные API; не имея возможности составить эти операции, вы можете легко найти вложенные 4 или 5 замыканий глубоко, с отступом в дальнюю сторону вашего редактора.
Если когда-либо возникала необходимость в асинхронном/ожидающем режиме в "Свифте" все было именно так.
К счастью, последний выпуск уведомления о воздействии включает в себя новый ENManager класс, который упрощает большую часть этого асинхронного управления состоянием.
let manager = ENManager()
manager.activate { error in
guard error == nil else { … }
manager.setExposureNotificationEnabled(true) { error in
guard error == nil else { … }
// app is now advertising and monitoring for tracing identifiers
}
}
Прослеживая путь назад к нормальной жизни
Многие из нас прячутся здесь неделями, если не месяцами. До тех пор, пока вакцина не будет разработана и широко распространена, это самая эффективная стратегия, которая у нас есть, чтобы остановить распространение болезни.
С технической точки зрения, Предложение Apple и Google дает нам все основания полагать, что мы можем отслеживать контакты без ущерба для конфиденциальности. Однако степень веры, которую вы вкладываете в это решение, зависит от того, насколько Вы доверяете этим компаниям и нашим правительствам в первую очередь.