Безопасность использования радиобрелков

Дмитрий Денисов | Электроника

Тайна ключа

На заре своего развития системы охраны, управляемые с помощью радиобрелков, оснащались простенькими, обычно однокнопочными брелками, которые передавали в эфир статический код. Статический код – это код, который от посылки к посылке (т.е. при нажатии кнопки на брелке) не изменяется. Такой код легко можно перехватить и повторно использовать. Кнопка на брелках в то время была только одна: нажал один раз – поставил на охрану, нажал еще раз – снял. Следует сразу отметить, что управление сигнализацией единственной кнопкой само по себе уязвимо даже при использовании брелков с динамическим кодом. Динамический код – это код, который постоянно, от посылки к посылке,  изменяется. Изменяется код, конечно, не абы как, а по достаточно сложному нелинейному алгоритму. Самое массовое распространение получил алгоритм шифрования KeeLoq, представляющий из себя симметричный алгоритм шифрования. Этот алгоритм как раз был “заточен” для шифрования коротких сообщений. KeeLoq и в настоящее время широко распространен. На его основе многие отечественные фирмы разработали собственные алгоритмы. Сам алгоритм KeeLoq найти на просторах Интернет достаточно легко, было бы желание.  Да и Microchip, фирма, которая владеет правами на этот алгоритм, может предоставить всю необходимую документацию для разработки на базе этого алгоритма своих устройств, надо только получить у них лицензию. Вся секретность передачи закодированных данных базируется на 64-битном ключе шифрования. Длины ключа вполне достаточно для надежного кодирования коротких посылок, которые используются для передачи команд управления.

Как устроен KeeLoq

Информационное сообщение посылаемое брелком состоит из двух частей. Одна часть закодирована (это и есть динамический код), другая часть – серийный номер брелка и номер нажатой кнопки – передается в открытом виде (для простоты изложения я описываю самую первую реализацию, которая заложена в кодеке от Microchip HCS200). В кодированной части сообщения передается следующая информация: значение 16-битного счетчика, состояние кнопок брелка, произвольная 12-битная константа (обычно используются последние 12 бит серийного номера). Каждое нажатие кнопки приводит к увеличению внутреннего 16-битного счетчика. Кодирование посылки происходит уникальным ключом, который получается из ключа шифрования и серийного номера брелка. Приемник охранной системы, приняв посылку от брелка, сравнивает его серийный номер с номерами ранее запрограммированных брелков и, если такой номер найден, декодирует закодированную часть посылки. Правильность декодирования приемник проверяет путем сравнения 12-битных констант из посылки и сохраненной в приемнике для этого брелка. Если правильность декодирования подтверждена, то происходит сравнение значений 16-битного счетчика. Если принятое в посылке значение  счетчика больше того, что сохранено в приемнике для этого брелка, но разница не превышает некоторого значения, например, 64-х (это, так называемое, окно синхронизации), то посылка признается действительной и выполняется переданная с этой посылкой команда управления, при этом значение 16-битного счетчика в приемнике перезаписывается новым принятым значением. Иначе, если принятое значение счетчика не попадает в окно синхронизации для этого брелка, посылка признается не действительной и команда не выполняется. У систем построенных на основе KeeLoq есть один недостаток: если бесконтрольно нажимать кнопки брелка, когда он находится вне зоны действия приемника системы, то такой брелок может выйти из синхронизма с приемником системы и, как следствие, работать не будет. Систему придется повторно обучать этому брелку.

Надежность Keeloq

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

Системы охраны на базе KeeLoq ломают по-другому. Причем системы охраны, построенные на использовании однокнопочных брелков, ломать проще, чем системы, в которых используются двухкнопочные брелки (функции постановки и снятия с охраны закреплены за разными кнопками).

Итак, как же можно сломать такой защищенный, казалось бы, алгоритм? Оказывается, все достаточно просто.  Структура передаваемого брелком кода такова, что в начале идет последовательность нулей и единиц, называемая преамбулой, которая необходима приемнику для обнаружения посылки и подстройки входных цепей для приема. После преамбулы идет небольшая пауза, а затем передается само сообщение. Зная структуру посылки, злоумышленник с помощью несложного устройства может обнаружить начало передачи посылки, а в момент паузы поставить помеху, после чего, убрав помеху, спокойно принять информационную часть посылки. Приемник же охранной системы посылку не примет. Таким образом у злоумышленника появится посылка, которую приемник охранной системы не принял. Далее, владелец брелка, видя, что предыдущее нажатие не привело к желаемому результату жмет кнопку еще раз. Злоумышленник опять перехватывает посылку и после перехвата передает в эфир предыдущую перехваченную посылку. Охранная система выполнит команду, а у злоумышленника останется последняя посылка, которую приемник не принял и она будет для него действующей.

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

Однако, при использовании двухкнопочных брелков с раздельной постановкой и снятием с охраны, такой простой алгоритм уже не пройдет. Несмотря на то, что и в этом случае у злоумышленника будет действующая посылка, эта посылка может быть использована только для постановки системы под охрану. Но радоваться рано, потому что для успешного открытия системы с двухкнопочным брелком злоумышленнику надо всего лишь немного терпения. Он будет упорно перехватывать посылки и ставить помехи, пока владелец системы не попробует проверить работоспособность брелка, нажав на другую кнопку (снятие с охраны). После этого, при очередном нажатии владельцем кнопки постановки под охрану,  злоумышленник передаст одну из ранее перехваченных посылок постановки под охрану. Успокоенный владелец уйдет, а у злоумышленника будет действующий код на снятие системы с охраны.

Выводы из всего этого сделать не сложно: если вы хотите поставить объект под охрану, а поставить не получается, то не надо судорожно давить на все кнопки подряд – поставьте объект под охрану каким-нибудь другим способом, который не предусматривает использование брелка.

Утечка информации

В системах охраны на базе KeeLoq или его клонов с симметричным шифрованием вся безопасность системы держится на ключе шифрования. Из этого ключа шифрования по известным алгоритмам получаются ключи для кодирования своих посылок отдельными брелками. Ключи шифрования для своих систем охраны производители держат в строжайшей тайне. Если происходит утечка информации о таких ключа, то вскрыть систему становится делом весьма простым, при этом даже нет необходимости ставить какие-либо помехи. Достаточно просто перехватить сообщение от брелка системы, код шифрования которой известен, и у злоумышленника появится как бы дубликат брелка владельца системы. То есть он сможет свободно ставить и снимать систему с охраны, так же как и владелец. Наиболее надежный способ защиты в данном случае – это иметь возможность самостоятельной установки ключа шифрования для используемой системы охраны. Однако, вместе со сменой ключа шифрования придется перепрограммировать и используемые с этой системой брелки. При этом, брелки должны иметь возможность перепрограммирования (такую возможность имеют все брелки построенные на базе стандартных кодеров, таких как HCS200, HCS300, HCS301). Мне не известен ни один производитель, который предоставил бы конечному потребителю такую возможность. Отчасти, это связано с тем, что для этого пришлось бы комплектовать систему программатором, что существенно увеличит ее стоимость. Да и вообще, производители особо не распространяются о таких деталях, как ключи шифрования и последствиях его потери, ограничиваясь только рекламными лозунгами о мощности и надежности алгоритмов.

Односторонняя и двусторонняя связь

Описанные выше способы  “взлома” осуществимы только при использовании систем с односторонней связью. То есть в брелке расположен только передатчик, а в охранной системе – только приемник.

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

При двусторонней связи между брелком и приемником обмен между ними в упрощенном виде может выглядеть следующим образом: при нажатии какой-либо кнопки на брелке идет передача сообщения, в котором содержится серийный номер брелка. Система охраны проверяет, есть брелок с таким серийным номером в ее таблице запрограммированных брелков и, если есть, посылает в ответ некое случайное число. Брелок, приняв это случайное число, кодирует его с помощью какого-либо алгоритма шифрования (например, с помощью того же KeeLoq) и отправляет результат обратно. Охранная система принимает результат, декодирует его и сравнивает с тем числом, которое было отправлено. Если оба эти числа совпали, система исполняет принятую от брелка команду управления. Кроме решения проблем с безопасностью, двусторонняя связь позволяет выводить на брелок различную сервисную информацию системы, а также сигнализировать о различных событиях.

Итог

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

Мы в своем проекте будем использовать обычные двухкнопочные брелки на базе кодеков HCS200, HCS300 или HCS301.

2 комменатриев »

  1. [...] [...]

    Pingback от Вскрытие пароля « Лаборатория умных замков — 28.12.2010 @ 15:59

  2. [...] правильном их использовании (почитать об этом можно здесь). Судя по минимуму информации о блоке управления это, [...]

    Pingback от Anonymous — 30.12.2010 @ 15:08

RSS-канал комментариев этого поста.

Оставить комментарий

Необходимо авторизоваться, чтобы комментировать.

Материалы сайта являются авторскими. Копирование и публикация материалов без активной ссылки на первоисточник запрещено.