Decentralized Privacy-Preserving Proximity Tracing (DP-3T) — еще один протокол отслеживания цепочек контактов с помощью Bluetooth для предотвращения распространения коронавируса SARS-CoV-2.

Протокол разработан международным научным сообществом и анонсирован в начале апреля, на две недели раньше протокола Apple & Google, но детальная спецификация и исходный код появились только недавно. Правительства Швейцарии, Австрии и Эстонии объявили, что будут использовать SDK DP-3T для отслеживания контактов в своих приложениях.

 Изначально проект вступил в инициативу PEPP-PT (Pan-European Privacy-Preserving Proximity Tracing).

Впоследствии у DP-3T возникли разногласия с подходом PEPP-PT из-за централизованного подхода и они вышли из этой инициативы.
 Если вы еще не знакомы с протоколом Apple & Google, то можете посмотреть нашу статью об этом протоколе. В целом принцип отслеживания контактов через Bluetooth такой:
 На телефонах с операционной системой iOS или Android запускается BLE-сервис со специальными service UUID и characteristic UUID.

Работает это так же, как с вашими Bluetooth наушниками или гарнитурой, которые используют Bluetooth-сервис со стандартным задающим класс гарнитур кодом (characteristic UUID), только в данном случае это особый код, определяющий протокол отслеживания контактов Apple & Google. Потребление энергии в таком режиме небольшое.

Телефоны периодически ищут по Bluetooth другие устройства с фиксированными service UUID и characteristic UUID, и если находят, то понимают, что произошел контакт.
 Задача протокола — передать анонимные идентификаторы устройств друг другу при таком контакте, и если в дальнейшем кто-то заразится, сообщить всем контактам об этом.
 Сам протокол DP-3T очень похож на протокол Apple & Google:  Вместе с дневным ключом приложение генерирует временные ID EphID’s (ephemeral ID, в терминологии Apple & Google — Rolling Proximity ID). Это 24*60 временных ID на каждую минуту дня, которые используются для обмена контактами.

 То есть если вы находитесь рядом с телефоном с таким BLE сервисом, то он видит один из 1440 ваших EphID’s, которые меняются каждую минуту, чтобы вас было невозможно по ним отследить.

Эти идентификаторы генерируются с помощью дневного ключа. Таким образом, получив дневной ключ, вы можете сгенерировать все EphID’s аналогично протоколу Apple & Google.
 Для генерации EphID’s протокол использует массив 16*24*60 нулевых байт, и шифрует его AES CTR с ключем HMAC (“broadcast key” || Daily Key)
Где “broadcast key” — это соль, Daily Key — дневной ключ для текущего дня, а символом || обозначена конкатенация. После генерации ключи перемешиваются.
 Как видно из описания выше, протоколы похожи, давайте сравним их на каждом шаге:  К моменту публикации статьи компании Apple и Google анонсировали новую версию спецификации Contact Tracing Protocol.

В новом протоколе они стали использовать AES для оптимизации вычислений при генерации временных ключей, так же как и в DP-3T.

Подробный разбор отличий мы сделаем в следующей статье.
 Главное различие, конечно же, в том, что DP-3T реализовано как open-source решение.
В данный момент в репозитории DP-3T на Github доступно SDK для iOS и Android, а также демонстрационное приложение и open-source backend.
 DP-3T предлагает также open-source реализацию сервера, который используется для загрузки зараженных дневных ключей.
Архитектура протокола DP-3T подразумевает децентрализацию, т.е. может существовать много различных приложений, работающих на протоколе DP-3T, использующих различные бэкенды.

Контакты между различными приложениями DP-3T будут работать, но чтобы своевременно узнавать о новых зараженных, требуется обмениваться такими зараженными ключами между серверами, в то время как все приложения, использующие Apple & Google протокол, будут связаны с единой базой зараженных ключей. 
 Наиболее вероятный вектор атаки на систему через дневной ключ возможен как трансляция временных ID, соответствующих уже зараженным дневным ключам.

Злоумышленник скачивает зараженный дневной ключ, генерирует по нему EphID’s и рассылает их по Bluetooth.

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

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

С другой стороны, при проприетарной имплементации протокола, мы не можем быть уверены в том, что все работает именно так, как описано в спецификации.
 Если у злоумышленника под контролем имеется ботнет из устройств с операционными системами iOS или Android, то, получив временный идентификатор, его можно ретранслировать на всех устройства ботнета. Таким образом количество контактов увеличится многократно.

В этом плане Apple & Google решение может быть надежнее, так как их временный ключ привязан к конкретном временному интервалу (10 минут).

При заражении временный ключ сверяется вместе с проверкой временного интервала, а в случае с DP-3T все временные ключи действуют в течение суток.
 DP-3T — хорошая и нужная альтернатива решению Apple & Google благодаря open-source имплементации и децентрализованной структуре. Ни Apple, ни Google не анонсировали своих приложений для отслеживания коронавируса, следовательно ожидается, что свои приложения, базирующиеся на этом протоколе, создадут государственные и медицинские организации.

Но все ли государственные организации готовы доверять Apple и Google? Кажется, что нет. 
Например в России хранение дневных ключей зараженных пользователей должно осуществляться на российских серверах, что вряд ли будет возможно в решении Apple & Google.

Также не ясно, насколько анонимными будут контакты, ведь секретный ключ пользователя может быть ассоциирован с id устройства. 
 В то же время любая организация может создать свой сервер и приложение на базе протокола DP-3T безопасно и быстро, но какое будет покрытие у такого решения?
 Для нас очевидно, что максимальная польза может быть только, если объединить все доступные решения и наладить межсерверный обмен информацией о зараженных пользователях.
  Поэтому мы работаем над open-source платформой OpenCovidTrace, объединяющей протоколы отслеживания контактов.

Присоединяйтесь к нам на Github!
Ваши идеи и замечания будут полезны для развития проекта, вместе мы поможем погасить новые вспышки заболевания после снятия карантина.

Также вы можете помочь OpenCovidTrace, если поделитесь ссылкой на проект в социальных сетях.
 В следующей статье мы разберем изменения спецификации Apple/Google v1.1

Спасибо за внимание, не болейте.