Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #77, МАЙ 2005 г.

Анатомия синего зуба

Eto’o (eto-o@mail.ru)

Хакер, номер #077, стр. 077-070-5


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

[атака на Bluetooth]

В самом деле, так ли уж все безупречно? Конечно, нет! Подумай сам. В самом начале сеанса простым текстом пересылается параметр IN_RAND, который при помощи определенных инструментов вполне может отсниффать злоумышленник – к слову, точно так же пересылается и параметр AU_RANDa. Что это дает? Обладая этой информацией уже вполне можно вычислить используемый для связи PIN-код и даже link key! Каким образом? Совершенно ясно, что сделать это аналитически невозможно, а значит ответ прост – получить доступ к этим “секретным” данным можно простым перебором пина. Что если написать простенькую программку, которая в цикле по всем возможным значениям PIN будет вычислять последовательно значения-претенденты на LK_Ka, LK_Kb, Kab=LK_Ka XOR LK_Kb и функцию E1(AU_RANDa, BD_ADDRb, Kab). В случае, если мы угадаем PIN, полученное значение функции совпадет с захваченным при сниффинге. Таким образом, со 100% вероятностью можно восстановить используемый при соединении PIN-код. Однако, за какое время? :) Ну, давай прикинем. Для каждой попытки необходимо один раз выполнить функцию E22, 2 раза — E21, 1 раз — E1 и трижды посчитать XOR. Вообще, это довольно ресурсоемкая задача. Однако если вспомнить, что любой нормальный человек при использовании bluetooth не указывать пины длиннее 6 символов, можно с уверенностью сказать, что секунд за 20 современный компьютер с такой задачей управится :).

На самом деле, в некоторых условиях вполне возможно перебирать PIN и без всяких заморочек. Например, если есть желание повеселиться, заюзав чужую bluetooth-гарнитуру, можно подобрать к ней PIN, не сниффая не байта. Все дело в том, что у таких устройств обычно статичный PIN, это такой ключик к устройству. И поскольку девайс самостоятельно реагирует на попытки подключиться к нему, появляется возможность вести прямой перебор этого ключа. Постой, ты ведь не забыл, о чем я говорил выше? Ну, про то, что если аутентификация не удалась, то устройство не отвечает некоторое время на повторные запросы от этого же девайса. Так вот, ничто на самом деле не мешает каждую попытку проводить от имени нового устройства просто меняя BD_ADDR – сделать это даже проще, чем сварить доширак.

Что касается шифрования с использованием ключа Kc, то здесь ситуация схожая той, которую мы с тобой разобрали. К сожалению, у меня нет возможности показать тебе этот недочет, но он абсолютно аналогичен рассмотренному случаю: есть функция трех аргументов, точно известны два из них и значение функции. Требуется подобрать значение третьего, неизвестного аргумента. Словом, задачка на один несложный цикл.

Назад на стр. 077-070-4  Содержание  Вперед на стр. 077-070-6