Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вроде бы готовый реферат.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
183.88 Кб
Скачать
  1. Инициализация bluetooth-соединения

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

  • Генерация ключа Kinit

  • Генерация ключа связи (он носит название link key и обозначается, как Kab)

  • Аутентификация

Первые два пункта входят в так называемую процедуру паринга.

Паринг (PAIRING) — или сопряжение. Процесс связи двух (или более) устройств с целью создания единой секретной величины Kinit, которую они будут в дальнейшем использовать при общении. В некоторых переводах официальных документов по bluetooth можно также встретить термин «подгонка пары».

Перед началом процедуры сопряжения на обеих сторонах необходимо ввести PIN-код. Обычная ситуация: два человека хотят связать свои телефоны и заранее договариваются о PIN-коде.

Для простоты будем рассматривать ситуацию с двумя устройствами.

Далее соединяющиеся устройства будут обозначаться A и B, более того, одно из устройств при сопряжении становится главным (Master), а второе — ведомым (Slave). Будем считать устройство A главным, а B — ведомым. Создание ключа Kinit начинается сразу после того, как были введены PIN-коды.

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

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

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

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

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

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

Для этого необходимы величины:

  • BD_ADDR

  • 128-битный LK_RAND (каждое устройство хранит своё и полученное от другого устройства значения)

На данном этапе pairing заканчивается и начинается последний этап инициализации bluetooth — Mutual authentication или взаимная аутентификация. Основана она на схеме «запрос-ответ». Одно из устройств становится верификатором, генерирует случайную величину AU_RAND(A) и засылает его соседнему устройству (в plain text), называемому предъявителем (claimant — в оригинальной документации). Как только предъявитель получает это «слово», начинается вычисление величины SRES по алгоритму E1, и она отправляется верификатору. Соседнее устройство производит аналогичные вычисления и проверяет ответ предъявителя. Если SRES совпали, то, значит, всё хорошо, и теперь устройства меняются ролями, таким образом процесс повторяется заново.

E1-алгоритм оперирует такими величинами:

  • Случайно созданное AU_RAND

  • link key Kab

  • Свой собственный BD_ADDR