Проблемы одностороннего доступа

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

В настоящее время наиболее популярной системой кодирования является система Keeloq. Она была разработана южноафриканской фирмой Nanoteq (Pty) Ltd, а позже все права на ее использование перешли к международному концерну Microchip. Сегодня, открыв практически любой брелок сигнализации, Вы можете обнаружить 8-ногую микросхему с буквами HCS, подтверждающую потенциальную возможность работы брелока в составе системы с плавающим кодом.

В упрощенном изложении, такой брелок передает в эфир сложную последовательность, часть информации в которой открыта (например, номер брелока), другая - изменяется при каждой передаче. Закон изменения определяется секретным паролем, который известен только производителю (т.н. «стандартный Keeloq»). Приемный блок дешифрует сигнал и, при совпадении номера брелока и принятого кода с ожидаемым, разрешает доступ. Принятый сигнал считается использованным и его повторная передача дверей уже не откроет.
Проблема номер ноль (фиктивная): неполноценный Keeloq

К сожалению, применение в брелоках микросхем с плавающим кодом еще не гарантирует потребителя от неприятностей. В целях экономии производители иногда пользуются даже не «стандартным Keeloq'ом», а «усеченным». Иначе говоря, несмотря на то, что микросхема выдает в эфир весь код, базовый блок обрабатывает только постоянную часть информации (номер брелока). Экономия программного кода позволяет удешевить как программу, так и использовать более простой и дешевый микропроцессор. Но система превращается в систему с фиксированным кодом и легко снимается любым код-граббером, воспроизводящим длинные кодовые посылки.

Также, при использовании «стандартного Keeloq'а» можно внести в программу обработки изменения, превращающие его в фиктивный. Как правило, это касается недорогих систем, склонных «забывать» свои брелоки. В этом случае изменения касаются процедуры синхронизации брелоков. При возникновении проблем у пользователя ему рекомендуют несколько раз нажать на брелок рядом с автомобилем для восстановления синхронизации (иногда при этом рекомендуется еще и «передернуть» питание). Этой дырой в защите можно воспользоваться. Достаточно воспроизвести с помощью код-граббера 2-3 прошедших последовательных кода и автомобиль снимется с охраны.

Решать данную проблему не имеет смысла. По возможности, необходимо просто избегать устанавливать (или эксплуатировать) сигнализации подобного типа.

Проблема первая: интеллектуальный код-граббер

Идея была сформулирована сотрудником фирмы Nanoteq (одним из творцов Keeloq'а) довольно давно (1995 год):

There are ways to cheat even the best code hopping systems. Here's one example: You grab the user's code while he's locking the car, while jamming the receiver. He presses the button again. You grab the second code while jamming the receiver, and then retransmit the first code…

Chris R. Burger/Nanoteq

Но одно дело идея, другое — ее функциональное воплощение. Реальная информация о реализации подобного рода устройств появилась намного позже. Вкратце, механизм действия таков:

  • владелец выходит из автомобиля, нажимает на кнопку брелока
  • в этот момент эфирная помеха блокирует прием кода базовым блоком.
  • код до сигнализации не доходит, она не ставится на охрану.
  • синхронно с блокированием эфира происходит запись кода в память граббера.
  • хозяин, решивший что он плохо нажал на кнопку брелока, нажимает на нее еще раз.
  • эфир опять блокируется, записывается в память граббера второй код.
  • после этого в эфир посылается первый код, ставящий автомобиль на охрану.
  • результат — довольный хозяин уходит домой, считая, что все теперь нормально. В граббере записана команда, способная снять автомобиль с охраны (что и происходит).

Проблема может быть решена довольно легко при использовании различных команд (различных кнопок брелока) для постановки и снятия. В простейшем случае кража кода от одной кнопки (постановка) ничего не даст — для снятия нужен и код от другой.

Проблема вторая. Длительная блокировка при постановке

В этом случае попытка обмана владельца осуществляется более грубым (более изощренным) методом. Для достижения поставленной цели используется заградительная помеха с одновременной записью всех переданных в эфир кодов. При этом используется вполне очевидное свойство человеческой натуры — если не работает первая кнопка, дай нажму на вторую — вдруг сработает? Коротко, события развиваются так:

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

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

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

Проблема третья. Блокирующий код-граббер при постановке

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

  • все излученные в эфир коды записаны в память граббера.
  • автомобиль так и не встает на охрану.
  • далее возможны различные варианты развития событий:
    • хозяин пользуется кнопкой ручной постановки для перевода охраны в рабочий режим;
    • дожидается автопостановки;
    • уходит от автомобиля, закрыв двери ключом (предполагая неисправность брелока).
  • все варианты равнозначно плохи, так как после ухода хозяина автомобиль или уже не охраняется, или может быть снят с охраны одним из записанных кодов (что предпочтительнее, так как не нужно ломать двери).

Заметим, что если в последнем случае хозяин автомобиля знает о том, что автомобиль не охраняется, то в остальных случаях он будет полностью уверен, что успешно справился с проблемой. К сожалению, данная проблема вообще не может быть решена полностью. Первый случай может и должен быть защищен алгоритмически. Здесь может помочь или принудительный «перескок кода» при постановке в охрану по ручной кнопке, или запрет на отключение охраны последним зарегистрированным системой брелоком. Возможные трудности написания обоих возможных алгоритмов мы опускаем. Каждый может представить их самостоятельно.

Искушение воспользоваться «перескоком кода» во втором случае (при автопостановке) велико, однако оно не решает всех проблем. В частности, при обычном пользовании этим режимом (когда кнопка брелока умышленно не нажимается), легко наступает десинхронизация охраны и брелока.

Последний вариант является заведомо проигрышным.

Проблема четвертая. Блокирующий код-граббер при снятии

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

  • все излученные в эфир коды записаны в память граббера.
  • варианты развития событий:
    • хозяин, решивший что отказал брелок, пользуется для отключения охраны кодом с кнопки постановки/снятия и уезжает от места событий, проклиная по дороге «эту чертову сигнализацию»
    • возвращается домой за запасным брелоком
    • едет на работу пешком (или уезжает домой за запасным брелоком).
  • первый вариант практически гарантирует от угона, второй и третий являются катастрофическими по своим последствиям.

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

Проблема пятая. Системы доступа без нажатия на кнопку

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

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

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

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

Проблема шестая. Вскрытие пароля

Заметим, все изложенное выше не более чем использование более или менее очевидных пробелов систем одностороннего доступа. Сам алгоритм Keeloq при этом не взламывается, так как до сих пор никто не научился вскрывать его полностью (производительность современных компьютеров явно недотягивает до требуемой). Для лобового вскрытия по-прежнему требуется вполне астрономическое время (в масштабах существования если не вселенной, то автомобиля — уж точно).

Но можно попытаться вычислить тот пароль, которым конкретный производитель шифрует все брелоки. И в этом случае на вскрытие (при использовании высокопроизводительного компьютера и простом механическом переборе возможных комбинаций) уйдут годы. Естественно, использование сетевых технологий может эффективно уменьшить это время. Поэтому, если потенциальный хакер имеет доступ к разветвленной компьютерной сети (например, это может быть банковская сеть), подбор пароля — вопрос времени. Все равно 99,9 % времени компьютеры перемалывают воздух вентиляторами — пусть лучше пароль подбирают.

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

В идеале это может выглядеть следующим образом:

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

Конечно, нас можно упрекнуть, что это больше подходит для сценария ненаучно-фантастического фильма с условным названием «Угнать за 5 секунд». В ответ спросим, а вы вообще-то верите в существование хакеров? Тех самых, которые вскрывают компьютеры Пентагона и Сити-банка? А ведь там пароли подбираются (угадываются, крадутся). И методы подбора давно уже известны.

Не надо думать, что мы единственные, кто озаботился этой проблемой. В открытой печати уже было опубликовано сообщение о появлении устройства, которое может «дублировать» брелоки самых различных брендов. За подробностями отсылаем к изданию «АвтоРевю», №21 за 2000 год. Характерно перечисление брендов, брелоки которых (по утверждению авторов заметки, подтвержденному фотографией устройства) принципиально могут быть сдублированы — это чуть ли не все семейства, известные на российском рынке.

Метод борьбы очевиден. Каждый брелок должен кодироваться своим паролем.

Финальные замечания

Все перечисленные недостатки присущи практически всем (даже наиболее продвинутым) охранам, присутствующим на рынке сегодня. Более того, все изложенное распространяется и на так называемые «двусторонние» (Two-way) системы, которые представляют из себя не более, чем комбинацию из брелока-передатчика и пейджера-приемника в «одном флаконе». О существовании таких проблем мы вскользь говорили еще два года назад. На этот раз мы сформулировали проблему достаточно полно.

Кризис назрел.

Игорь Острейковский,
Magic Ring