Это четвертая часть перевода книги Мохаммада Афане “Intro to Bluetooth Low Energy”. Сегодня мы рассмотрим возможности, появившиеся с новой версией стандарта а также различные методы обеспечения безопасности соединения и пользовательских данных в BLE. Предыдущие части:Про архитектуру BLEПро типы устройств, адвертайзинг и сканированиеПро соединения и сервисы Bluetooth 5 решает задачу расширения числа приложений Интернета Вещей, которые могут использовать BLE. Он в два раза увеличивает скорость передачи, в четыре - ее дальность, и в 8 раз - объем информации, который может передаваться во время адвертайзинга. Рассмотрим список нововведений Bluetooth 5 (из официальной спецификации): CSA 5 features (Higher Output Power) Slot Availability Mask (SAM) 2 Msym/s PHY for LE LE Long Range High Duty Cycle Non-Connectable Advertising LE Advertising Extensions LE Channel Selection Algorithm #2 В этой главе мы сфокусируемся на наиболее важных изменениях: 2 Msym/s PHY for LE - удвоение скорости передачи. LE Long Range - увеличение максимальной дальности передачи в 4 раза. LE Advertising Extensions - восьмикратное увеличение емкости широковещательных пакетов. Для того, чтобы узнать больше о новых возможностях, привнесенных Bluetooth 5 и не рассмотренных в этой главе, обратитесь к официальной спецификации.Примечание: Msym/s - мегасимволы в секунду, используются здесь вместо более привычных мегабит в секунду, поскольку они отражают реальную скорость передачи. В некоторых случаях (как мы увидим в зашифрованном PHY), множество символов будет использовано для кодирования одного бита, уменьшая реальную скорость в Мбит/с. В этой главе мы будем использовать сокращение “Мсим/с” для “мегасимволов в секунду”. Напомним, что PHY относится к физической части радио. Предыдущие спецификации Bluetooth (до Bluetooth 5) допускали использование только одного PHY, со скоростью передачи 1Мсим/с.Как мы упоминали ранее, Bluetooth 5 привнес два новых (опциональных) PHY: 2M PHY:Используется для удвоения скорости передачи (по сравнению с предыдущими версиями Bluetooth). Также добавляет несколько новых возможностей:Уменьшение энергопотребления за счет того, что тот же объем данных передается за меньшее время, уменьшая время нахождения передатчика в активном состоянии.Уменьшение уровня взаимных помех за счет меньшего времени нахождения передатчика в активном состоянии.Также существуют и недостатки: возможное уменьшение радиуса действия, так как увеличенная скорость передачи требует увеличенной чувствительности приемника. Кроме того, использование этого PHY запрещено для первичного адвертайзинга. Важно отметить, что появление этого PHY повлекло за собой изменения в оборудовании, так что старые микроконтроллеры и модули могут не поддерживать работу с ним. Кодированный PHY:Используется для четырехкратного увеличения радиуса действия приемников и передатчиков по сравнению с предыдущими версиями BLE. Очевидное преимущество в увеличенной дальности передачи имеет два недостатка:Увеличенное энергопотребление: так как для передачи одного бита используется несколько символов, нам требуется увеличить время активности передатчика.Уменьшенная скорость: по той же причине, нам остаются доступны скорости 125 кбит/с или 500 кбит/с, в зависимости от используемой схемы кодирования.Были достигнуты расстояния передачи до 800 метров (в пределах прямой видимости) во время тестирования. Это делает возможным использование BLE в устройствах, отдаленных на сотни метров друг от друга. Скорости передачи, рассмотренные нами, определяют скорости, с которыми “сырые” данные передаются по радиоканалу. С учетом обязательных временных задержек между пакетами (150 микросекунд, согласно спецификации), а также служебной информации и с учетом прочих требований, накладываемых спецификацией (например ответы и пакеты подтверждения), реальная скорость передачи полезной информации будет ниже. Например, для 2M PHY максимальная скорость передачи полезных данных будет составлять порядка 1.4 Мбит/с. На уровне приложения вам нет необходимости знать о множестве низкоуровневых деталей, касающихся PHY. Все, что вам нужно - включить его для достижения высоких скоростей передачи. Однако помните о том, что использование этого PHY потенциально может уменьшить дальность связи вашего устройства. Мы также упоминали о запрете использования 2M PHY для первичного адвертайзинга. Нам остаются две возможности использовать этот режим: Вторичный адвертайзинг (режим расширенного адвертайзинга). Адвертайзинг на первичном или вторичном канале с использованием 1M PHY. После установления соединения любая из сторон может запросить смену PHY на 2М. Стоит помнить о том, что канал связи между устройствами может быть асимметричным, то есть пакеты от периферийного устройства могут передаваться с использованием 1M PHY, а пакеты центрального устройства - используя 2M PHY. Bluetooth 5 позволяет значительно увеличить дальность передачи используя новый, кодированный PHY. Что в данном контексте означает кодирование? И как оно помогает увеличить дальность связи? Увеличение дальности достигается благодаря прямой коррекции ошибок (FEC). Помехоустойчивое кодирование позволяет приемнику восстановить принятые с ошибками данные. Это становится возможным благодаря внесению избыточности в передаваемые данные, используя специальный алгоритм. Таким образом, вместо запроса повторной передачи данных в случае возникновения ошибок, приемник восстанавливает данные, декодируя их. Используются следующие схемы кодирования: S = 2, каждый бит данных кодируется 2 битами, максимальная скорость передачи 500 кбит/с. S = 8, каждый бит данных кодируется 8 битами, максимальная скорость передачи 125 кбит/с. Bluetooth 5 добавил концепцию вторичных каналов адвертайзинга, которые позволяют устройству рассылать пакеты большего размера, чем разрешенные на первичных каналах адвертайзинга. Пакеты адвертайзинга, рассылаемые только с использованием первичных каналов, называются устаревшими, в то время как адвертайзинг, начинающийся на первичном канале и продолжающийся на вторичном, называется расширенным. В случае расширенного адвертайзинга пакеты посылаются по первичному каналу и содержат информацию о том, на каком вторичном канале искать оставшуюся часть данных. Это позволяет передавать 255 байт данных вместо 31. Также это может быть полезно для разгрузки трех первичных каналов адвертайзинга. Пакеты, передаваемые по вторичным каналам адвертайзинга могут использовать любой из трех существующих PHY, в то время как пакеты, передаваемые по первичным каналам могут использовать только классический 1М PHY или кодированный PHY. Это означает, что центральное устройство должно использовать соответствующий PHY при поиске периферийных устройств. Представьте себе следующую ситуацию: у нас имеется множество температурных датчиков, распределенных по всему зданию. Показания температуры на них меняются со временем. Эти показания, вместе с сопутствующей служебной информацией (местоположение, время снятия показаний и проч.) должны быть переданы на устройства, передающие эти данные в облако. Мы могли бы использовать расширенный адвертайзинг, так как размер наших пакетов превышает размер старого пакета адвертайзинга (31 байт), однако это означало бы, что центральному устройству пришлось постоянно слушать радиоканал в ожидании пакетов, потребляя большое количество энергии. Вместо этого мы можем использовать новую возможность, появившуюся вместе с Bluetooth 5: периодический адвертайзинг. Это специальный случай расширенного адвертайзинга, он позволяет центральному устройству синхронизироваться с периферийными, которые рассылают расширенные пакеты через фиксированные интервалы времени. Это позволяет снизить энергопотребление, так как пакеты посылаются через длительные промежутки времени, и в то же время позволяет большому количеству центральных устройств синхронизироваться с периферийными. Работа периодического адвертайзинга основана на передаче информационных пакетов по первичным каналам адвертайзинга. Эти пакеты содержат информацию ( временную метку, используемый PHY и т.п.), помогающую найти расширенный пакет адвертайзинга. Этот пакет, в свою очередь, содержит поля, которые определяют данные, необходимые для синхронизации с пакетами периодического адвертайзинга - похожие на те, которые используются для синхронизации соединений: карта каналов, шаг прыжка, используемый PHY и прочие). Расширенный адвертайзинг использует вторичные каналы адвертайзинга, это те же самые каналы, что используются для передачи пакетов данных между двумя устройствами во время соединения. Пакеты расширенного адвертайзинга не считаются частью  событий адвертайзинга, о которых мы говорили ранее (устаревший адвертайзинг), которые происходят на первичных каналах адвертайзинга (37, 38 и 39). Расширенный адвертайзинг используется для того, чтобы не передавать вспомогательные пакеты на первичных каналах адвертайзинга, тем самым разгружая их. Разгрузка происходит путем передачи по первичному каналу указателя на вспомогательный пакет, передаваемый на вторичном канале. Пакет, передаваемый по первичному каналу, содержит номер радиоканала и сдвиг во времени относительно времени начала передачи расширенного пакета адвертайзинга. Важно еще раз отметить, что расширенные пакеты адвертайзинга могут использовать любой из трех PHY, в то время как первичные пакеты адвертайзинга могут использовать либо классический, либо кодированный PHY. Так как устройства, не поддерживающие Bluetooth 5, не могут обнаружить пакеты расширенного адвертайзинга, рекомендуется использовать дополнительный набор данных адвертайзинга, использующий только первичный канал и совместимый со старыми устройствами, чтобы позволить им принимать данные и устанавливать соединение. Ниже представлена диаграмма, показывающая пример использования расширенного адвертайзинга: Режим периодического адвертайзинга позволяет нескольким устройствам коммуницировать без установления соединения. Периферийное устройство посылает данные синхронизации вместе с другими данными расширенного адвертайзинга, позволяя другому устройству быть синхронизированным с ним. Эта синхронизация позволяет устройству получать данные адвертайзинга через постоянные определенные отрезки времени. На диаграмме ниже представлен пример использования периодического адвертайзинга: Безопасность - один из наиболее важных аспектов Интернета Вещей. Из-за громких заголовков новостей, которые упоминают о взломах и уязвимостях, обнаруженных во многих продуктах IoT, обеспечение безопасности стало одной из главных проблем для производителей и разработчиков устройств Интернета Вещей. В этой главе мы: Ознакомимся с некоторыми аспектами обеспечения безопасности. Посмотрим на меры защиты, которые предоставляет BLE. Рассмотрим вопросы обеспечения конфиденциальности. Мне очень нравится старая шутка о том, что буква “S” в аббревиатуре IoT означает “Security”. Некоторые из наиболее распространенных аспектов безопасности любой системы представлены ниже: Аутентификация: это доказательство того, что на другой стороне действительно находится требуемое устройство. Если вы подключаетесь к устройству с BLE, вы хотите быть уверены, что вы действительно подключаетесь к нему, а не к какому-то другому устройству, маскирующемуся под ваше. Целостность: гарантирует нам, что принятые данные не повреждены и не подменены третьими лицами. Конфиденциальность: обеспечивает уверенность в том, что наши данные не стали достоянием общественности. Приватность: дает ответ на вопрос, насколько наше соединение скрыто и есть ли у сторонних устройств возможность отследить нас, особенно по Bluetooth-адресу. Это наиболее общие аспекты безопасности, применимые к любой системе. Важность каждого из них зависит от сферы применения и типа устройства. Основываясь на вышеприведенных аспектах безопасности, мы можем выделить несколько различных типов атак, которые может осуществить злоумышленник. Некоторые из них представлены ниже: Пассивное прослушивание: случай, когда злоумышленник прослушивает соединение между двумя устройствами и имеет возможность понять передаваемые данные - обычно путем получения доступа к ключу, которым зашифрованы передаваемые данные. Активное прослушивание: также известно как атака посредника (MitM). В этой атаке злоумышленник исполняет роль обоих устройств (периферийного и центрального). Он перехватывает соединение между устройствами таким образом, что они не подозревают о проведении атаки, и подменяет данные в передаваемых пакетах. Слежка: в этой атаке устройства и пользователи отслеживаются по Bluetooth-адресу, что может дать доступ к их местоположению и спрогнозировать их действия в оффлайне. Безопасность в BLE обеспечивается слоем менеджера безопасности (SM). Менеджер безопасности определяет протоколы и алгоритмы для генерации и обмена ключами между двумя устройствами. Он включает в себя пять функций безопасности: Сопряжение: процесс создания общих секретных ключей двух устройств. Связывание: процесс создания и сохранения общих секретных ключей на каждой стороне для использования при последующих подключениях между устройствами. Аутентификация: процесс проверки того, что оба устройства имеют те же секретные ключи. Шифрование: процесс шифрования данных, передаваемых между устройствами. Шифрование в BLE использует стандарт AES-128, симметричный алгоритм блочного шифрования (один и тот же ключ используется и для шифрования и для дешифровки данных на обеих сторонах). Обеспечение целостности сообщений: процесс подписывания данных при передаче и проверки подписи при приеме. Это помимо простой проверки целостности при помощи контрольной суммы. Спецификация Bluetooth постоянно развивалась, чтобы обеспечить наиболее сильные меры защиты. Особенно характерно это для BLE, который привнес концепцию безопасных соединений (LESC) в версии 4.2. LESC использует протокол Диффи-Хеллмана на эллиптических кривых (ECDH) во время процесса сопряжения, что делает соединение гораздо более безопасным в сравнении с методами, используемыми в предыдущих версиях Bluetooth. Bluetooth 4.2 также привнес термин “устаревшее соединение”, который в совокупности относится к методам сопряжения, используемым в ранних версиях протокола. Важно отметить, что устаревшие соединения по прежнему поддерживаются в Bluetooth 4.2 и более новых. Менеджер безопасности решает различные проблемы обеспечения безопасности следующим образом: Конфиденциальность путем шифрования. Аутентификация через сопряжение и связывание устройств Приватность через разрешимые приватные адреса. Целостность при помощи цифровых подписей. В BLE ведущее устройство является инициатором проведения мероприятий безопасности. Ведомое устройство может запросить о старте процедуры безопасности путем отправки запроса ведомому, однако принятие решения о начале процедуры всегда остается за ведущим. Для лучшего понимания механизма обеспечения безопасности в BLE нам необходимо разобраться с двумя важными концепциями: сопряжением и связыванием. Но сперва давайте посмотрим на диаграмму, отображающую процесс обеспечения безопасности: Сопряжение это комбинация фаз 1 и 2. Связывание представлено в третьей фазе процесса. Отметим, что разница между LE Legacy Connections и LE Secure Connections заключается только в реализации фазы 2. Сопряжение это временная мера безопасности, которая вызывается и выполняется каждый раз при установлении или переподключении соединения для его шифрования. Для того, чтобы однократно зашифровать все последующие соединения, необходимо произвести связывание устройств.Рассмотрим более подробно шаги процесса обеспечения безопасности: На этом шаге ведомое устройство может запросить ведущее о начале процесса сопряжения. Ведущее инициирует процесс сопряжения посылая запрос на сопряжение ведомому, на которое оно отвечает сообщением ответа на сопряжение. Сообщения запроса на сопряжение и ответа на сопряжение представляют собой обмен функциями, поддерживаемыми обоими устройствами, и требованиями безопасности, предъявляемыми устройствами. Каждое из сообщений включает в себя следующую информацию: Возможности ввода-вывода: наличие дисплея, клавиатуры или кнопок. Поддержка передачи сообщений другим методом, например при помощи NFC. Требования аутентификации: включают в себя требование на защиту от атаки посредника, требование на связывание и поддержку безопасных соединений. Максимальный размер ключа шифрования, поддерживаемый устройством. Различные ключи безопасности, использование которых могут запросить устройства. Информация, которой устройства обмениваются на этом шаге, определяет используемый метод связывания. Ниже представлена таблица, показывающая различные комбинации возможностей ввода-вывода у сопрягаемых устройств и соответствующий им метод связывания: Как было упомянуто ранее, реализация второго шага зависит от выбранного метода: LE Legacy Connections или LE Secure Connections. Рассмотрим разницу между этими двумя методами: LE Legacy Connections:В устаревших соединениях используются два ключа: временный ключ и кратковременный ключ. Временный ключ, в связке с другими передаваемыми данными, используется для генерации кратковременного ключа, шифрующего соединение. LE Secure Connections:В безопасных соединениях при сопряжении не происходит обмена секретными ключами между устройствами по радиоканалу. Вместо этого устройства используют алгоритм эллиптических кривых Диффи-Хеллмана для генерации пары из публичного и секретного ключа. После этого устройства обмениваются только публичными ключами и генерируют из них общий секретный долговременный ключ. Преимущество использования эллиптических кривых Диффи-Хеллмана состоит в том, что они исключают возможность перехватить или узнать общий секретный ключ, даже при наличии у злоумышленника обоих публичных ключей. Узнать больше о эллиптических кривых и методах их работы можно здесь. Также я нашел видео, хорошо объясняющее их принцип работы. Третий шаг представляет собой процесс связывания устройств. Это опциональный шаг, который избавляет от необходимости пересопряжения при каждом новом соединении для защиты канала связи. В результате связывания каждое устройство сохраняет набор ключей, которые могут быть использованы при каждом последующем подключении и позволяют устройствам пропустить фазу сопряжения. Эти ключи передаются между устройствами по каналу, зашифрованному при помощи ключей, полученных на втором шаге. Устаревшие соединения и безопасные соединения имеют различные методы сопряжения. Некоторые из этих методов имеют одинаковое название, но различаются в своих деталях. Используемый метод сопряжения определяется возможностями устройств, которыми они обмениваются на первом шаге. Как мы уже упоминали, в устаревших соединениях создается краткосрочный ключ при помощи временного ключа и двух случайно сгенерированных чисел. Метод “Just Works”:В этом методе временный ключ равен 0. По очевидным причинам этот метод является наименее защищенным из всех. Out of Band (OOB), использование другого метода передачи:В этом методе передача временного ключа происходит при помощи другой технологии, отличной от BLE. Наиболее часто используется NFC - ближняя бесконтактная связь. Этот метод делает процесс сопряжения гораздо более защищенным, особенно если используется технология обеспечивающая большую степень защиты, нежели BLE. Это наиболее надежный из устаревших методов сопряжения. Пароль:В этом методе временный ключ представляет собой шестизначное число, передаваемое между пользовательскими устройствами. Например, оно может быть введено вручную на одном из устройств. Сложность заключается в необходимости иметь минимальные возможности ввода-вывода на устройствах, такие как дисплей и клавиатура, что ограничивает возможность использования этого метода. Метод “Just Works”:В этом методе публичные ключи для каждого устройства вместе с другими сгенерированными значениями передаются между двумя устройствами через BLE. Out of Band (OOB), использование другого метода передачи:В этом методе ключи передаются с использованием другой среды передачи (например, NFC). Пароль:В этом методе используются шестизначные цифры. Они должны быть введены пользователем на каждом устройстве или же одно из устройств сгенерирует это число для того, чтобы пользователь ввел его на другом устройстве. Сравнение чисел:Этот метод не отличается от первого за исключением дополнительного шага в конце процедуры. Этот дополнительный шаг позволяет организовать защиту от атак посредника. Это наиболее защищенный из всех методов сопряжения. Примечание: безопасность в BLE это довольно обширный раздел, который не может быть рассмотрен полностью в этой книге. Вы можете узнать больше о различных методах сопряжения и особенностях их работы, изучив диаграммы сообщений, представленные в спецификации Bluetooth 5 (Vol 3, Part H, Appendix C. page 2364). Обеспечение приватности является еще одной важной задачей для пользователя, и к ней стоит отнестись со всем вниманием. Каждое Bluetooth-устройство имеет свой адрес и, если не предприняты определенные меры безопасности, этот адрес может быть использован для отслеживания пользователя. К счастью, BLE предоставляет все необходимые функции для защиты от этой уязвимости. Устройство может использовать часто меняющийся приватный адрес в качестве своего Bluetooth-адреса, который могут получить только доверенные устройства. В данном случае это связанные устройства. Случайный приватный адрес генерируется при помощи ключа идентификации, которым два связанных устройства обмениваются во время третьего шага. Таким образом, связанное устройство имеет доступ к ключу идентификации и может расшифровать случайный адрес. Существует множество ключей и переменных, используемых в различных процедурах безопасности. Рассмотрим их все. Временный ключ:Создание временного ключа зависит от выбора метода сопряжения. Временный ключ создается каждый раз, когда происходит процесс сопряжения. Он используется только в устаревших методах соединения. Кратковременный ключ:Этот ключ создается с использованием временного ключа, общего для обоих устройств. Кратковременный ключ генерируется каждый раз, когда происходит процесс сопряжения и используется для шифрования данных, передаваемых между устройствами в текущем соединении. Он используется только в устаревших методах соединения. Долговременный ключ:Этот ключ создается и сохраняется на устройстве во время третьего шага процесса обеспечения безопасности в устаревших соединениях и во время второго шага в безопасных соединениях. Он сохраняется на каждом из двух связанных устройств и используется в последующих соединениях между двумя устройствами. Зашифрованный диверсификатор и случайное число:Два этих значения используются для создания и идентификации долговременного ключа. Они также сохраняются на устройстве во время процесса связывания. Ключ расшифровки подписи соединения:Используется для подписывания передаваемых данных и проверки подписи принятых данных на другом устройстве. Этот ключ сохраняется на обоих связанных устройствах. Ключ идентификации:Используется для расшифровки случайного частного адреса. Этот ключ уникален для каждого устройства, ключ ведущего устройства сохраняется на ведомом, а ключ ведомого сохраняется на ведущем. Существует два режима обеспечения безопасности: режим 1 и  режим 2. Первый больше имеет отношение к шифрованию, второй - к подписи передаваемых данных. Также существуют различные уровни каждого режима: Режим безопасности 1 Уровень 1: Отсутствие защиты (нет аутентификации и шифрования). Уровень 2: Непроверенное сопряжение с шифрованием. Уровень 3: Проверенное сопряжение с шифрованием. Уровень 4: Проверенное безопасное сопряжение со связыванием и шифрованием. Режим безопасности 2 Уровень 1: Непроверенное сопряжение с подписыванием данных. Уровень 2: Проверенное сопряжение с подписыванием данных. Соединение признается проверенным или непроверенным в зависимости от выбранного метода сопряжения. В таблице, приведенной на рисунке 24, перечислены условия, при которых метод сопряжения признается проверенным. Соединение между двумя устройствами должно быть установлено с использованием одного режима, но в то же время могут использоваться различные уровни этого режима (используемые характеристики могут требовать различных уровней безопасности). Приведем пример: Одна характеристика может не предъявлять требований безопасности при ее чтении (уровень 1). Та же самая характеристика может требовать 3 уровень при записи. Другая характеристика может требовать уровня 4 на чтение и запись в характеристику. Существует набор ситуаций, проведение которых требует обеспечения безопасности соединения. Вот некоторые из них: Ведущее устройство посылает запрос на сопряжение, что ведет к отправке ведомым ответа на сопряжение. Ведомый отправляет запрос на обеспечение безопасности, на который ведущее устройство отправляет запрос на сопряжение и ожидает от ведомого ответа на этот пакет. Клиент запрашивает доступ к характеристике, представленной на сервере, которая требует определенного уровня обеспечения безопасности. Это вызывает запуск процесса сопряжения и, возможно, связывание устройств.Например, если разрешения на уведомления определенной характеристики сконфигурированы таким образом, чтобы требовать определенного уровня безопасности, то, в случае попытки включения уведомлений незащищенным клиентом, сервером будет послан ответ о недостаточной аутентификации, означающий необходимость обеспечения требуемого уровня безопасности для завершения операции. Два связанных устройства соединяются друг с другом, запуская шифрование с использованием сохраненных ключей. Примечание: iOS не позволяет требовать специальных разрешений (таких как  сопряжение, аутентификация или шифрование) для обнаружения сервисов и характеристик. Вместо этого она требует от сервера ограничить доступ к значениям характеристик до завершения процесса сопряжения. Указания к проектированию под iOS с использованием Bluetooth могут быть найдены здесь. HW Engineer