Главное


Инициализация соединения Bluetooth

Инициализацией, касательно Bluetooth, принято называть процесс установки связи. Её можно разделить на три этапа:

- генерация ключа Kinit;

- генерация ключа связи (он носит название linkkey и обозначается, как Kab);

- аутентификация.

Первые два пункта входят в так называемую процедуру паринга. Паринг (PAIRING) - или сопряжение -процесс связи двух (или более) устройств с целью создания единой секретной величины Kinit, которую они будут в дальнейшем использовать при общении. В некоторых переводах официальных документов по Bluetooth можно также встретить термин «подгонка пары». Перед началом процедуры сопряжения на обеих сторонах необходимо ввести PIN-код. Обычная ситуация: два человека хотят связать свои телефоны и заранее договариваются о PIN-коде. Далее соединяющиеся устройства будут обозначаться A и B, более того, одно из устройств при сопряжении становится главным (Master), а второе - ведомым (Slave). Будем считать устройство A главным, а B - ведомым. Создание ключа Kinit начинается сразу после того, как были введены PIN-коды[8].

Kinit формируется по алгоритму E22, который оперирует следующими величинами[8]:

- BD_ADDR - уникальный адрес BT-устройства. Длина 48 бит (аналог MAC-адреса сетевой карты PC);

- PIN-код и его длина;

- IN_RAND. Случайная 128-битная величина.

На выходе E22 алгоритма получаем 128-битное слово, именуемое Kinit. Число IN_RAND отсылается устройством A в чистом виде. В случае если PIN неизменяем для этого устройства, то при формировании Kinit используется BD_ADDR, полученное от другого устройства. В случае если у обоих устройств изменяемые PIN-коды, будет использован BD_ADDR(B) - адрес slave-устройства. Первый шаг сопряжения пройден. За ним следует создание Kab. После его формирования Kinit исключается из использования[8].

Для создания ключа связи Kab устройства обмениваются 128-битными словами LK_RAND(A) и LK_RAND(B), генерируемыми случайным образом. Далее следует побитовый XOR с ключом инициализации Kinit. И снова обмен полученным значением. Затем следует вычисление ключа по алгоритму E21.Для этого необходимы величины:

- BD_ADDR;

- 128-битный LK_RAND (каждое устройство хранит своё и полученное от другого устройства значение). Алгоритм Е21 представлен на рис. 3.1.

На данном этапе pairing заканчивается и начинается последний этап инициализации Вluetooth - Mutual authentication или взаимная аутентификация. Основана она на схеме «запрос-ответ». Одно из устройств становится верификатором, генерирует случайную величину AU_RAND(A) и засылает его соседнему устройству (в plaintext), называемому предъявителем (claimant в оригинальной документации)[8].

Рисунок 3.1 - Вычисление ключа по алгоритму Е21

Как только предъявитель получает это «слово», начинается вычисление величины SRES по алгоритму E1, и она отправляется верификатору. Соседнее устройство производит аналогичные вычисления и проверяет ответ предъявителя. Если SRES совпали, то, значит, всё хорошо, и теперь устройства меняются ролями, таким образом, процесс повторяется заново.E1-алгоритм представлен на рис. 3.2 и оперирует такими величинами[8]:

- случайно созданное AU_RAND;

- linkkey Kab;

- свой собственный BD_ADDR.

Другие статьи по теме

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

Исследование алгоритма оценивания стохастических динамических систем
Целью данной работы является исследование алгоритма оценивания стохастических динамических систем называемого Фильтром Калмана. Задачей работы помимо исследования алгоритма является реа ...

Информационно-измерительная система
Целью данной курсовой работы является анализ информационно-измерительной системы (ИИС), определение типа топологии и оптимального пространственного расположения объектов ИИС, при которо ...

www.techspirit.ru © 2020