Алгоритмы шифрования в автосигнализациях

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

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

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

Блок управления является сердцем сигнализации и располагается внутри автомобиля, в невидимом снаружи месте. В системе электронной проводки автомобиля (см. Controller Area Network) БУ соединен с датчиками, необходимыми для функционирования данной сигнализации (это могут быть датчики положения и скорости, индуктивные, магниторезистивные, оптические датчики (для контроля различных параметров автомобиля, например целостности кузова), датчики давления).

Данные между блоком управления и брелоком передаются по радиоканалу, который является незащищенным. Иными словами, радиоволны распространяются не направленно и передаваемые данные можно прослушать, находясь далеко от владельца автомобиля. Используя определенные алгоритмы шифрования, передаваемые данные шифруются и передаются в виде небольших последовательностей — пакетов. Каждый пакет можно представить как команду (например, «Открыть замки»), ответ на команду («Замки открыты») или сообщение («Внимание! Включено зажигание!»).

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

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

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

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

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

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

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

Актуальность 
Самым известным алгоритмом динамического кодирования является KeeLoq, разработанный американской компанией Microchip Technology. Алгоритм представляет собой симметричный (то есть одинаковый ключ для шифровки и расшифровки) блочный шифр с 32 битным блоком и 64 битным ключом, основанный на программном компоненте «NLFSR» — регистр сдвига с нелинейной обратной связью. Аналитически данный алгоритм до сих пор не взломан, взломаны лишь его неудачные реализации.  Например, многими производителями записывается один и тот же ключ для всех систем, что позволяет создавать «мануфактурные» кодграбберы.

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

Диалоговое кодирование 

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

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

Пример диалогового кодирования 
Рассмотрим следующий алгоритм:

,

где A, B, C, m — это числа, которые записываются в сигнализацию на этапе производства сигнализации (разные для каждой сигнализации);

X — случайное число, генерируемое блоком управления и передаваемое на брелок (меняется при каждой команде);

Y — число, которое рассчитывается блоком управления и брелоком по заданному алгоритму.

После нажатия кнопки на брелоке, блок управления сгенерировал случайное число (X = 977) и отправил его на брелок. Для расчета примем:

A = 37, B = 17, C =23, m = 610.

Подставляя и проводя вычисления, получим число (Y = 46882441603), которое должно получиться в ходе расчетов на брелоке и БУ. В случае совпадения, БУ разрешает выполнить команду.

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

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

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

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

Система бесключевого доступа (PKES) 
В последние годы стал популярным новый тип автосигнализаций, который не требует от владельца нажатий кнопок на брелоке для постановки/снятия с охраны, достаточно подойти к машине на близкое расстояние, чтобы двери разблокировались, или же отойти, чтобы двери заблокировались, и сигнализация перешла в режим охраны. Более того, такой тип сигнализаций позволяет заводить автомобиль кнопкой, не требуя при этом классического ключа зажигания. Такая система называется PKES (Passive Keyless Entry and Start — «пассивный бесключевой доступ и запуск двигателя»).

Принцип работы 
Как только владелец подходит к автомобилю и нажимает кнопку на рукоятке двери, автомобиль "просыпается" и начинает диалог с ключом (см. Диалоговое кодирование):

- Привет, я автомобиль X с идентификатором Z. А ты кто?

Этот посыл передается в эфир на частоте 125 кГц, и если ключ брелок (также называемый смарт-ключ/smart-key) находится рядом и понимает язык запроса, он тут же отвечает машине, используя уже свою рабочую частоту (433 или 868 МГц). Причем отвечает цифровой комбинацией, сгенерированной по алгоритму шифрования (индивидуальный для каждой сигнализации):

- Привет, я твой ключ! Код ответа X123.Y456.Z789.

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

Уязвимости 
О криминальной уязвимости PKES-систем заговорили в 2011 году, когда команда швейцарских программистов продемонстрировала метод «удлинения» канала связи «автомобиль-ключ». Технологию назвали Relay Station Attack. К тому времени российские угонщики уже вовсю пользовались такими устройствами.

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

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

Защита от угона 
Как бороться с данной уязвимостью? Существуют прошивки, которые изменят код управления сигнализацией на другой, а значит радиоканал будет вне досягаемости ретрансляторов. Также есть проверенный на практике способ — прятать брелок сигнализации в металлизированный экран из фольги (см. Клетка Фарадея) — простой, но действенный способ, позволяющий физически заблокировать диалог между брелоком и БУ, как только вы отошли от автомобиля и спрятали брелок.

См. также 
 Автосигнализация
 Шифрование
 Противоугонная система
 KeeLoq
 Автомобильный иммобилайзер

Примечания

Ссылки 
 Список сигнализаций, вскрываемых и стойких к алгоритмическому кодграбберу
 Attacking a car alarm. How does a car alarm security system work?
 'War Texting' SMS attack to steal a car or control SCADA systems?

Безопасность
Автосигнализация