Алгоритми шифрування в автосигналізації

Радіоканал, за яким передаються дані між сигналізацією і брелоком, має один великий недолік — радіохвилі поширюються не спрямовано і обмін можна прослухати, перебуваючи далеко від власника автомобіля. Такі канали зв'язку називають незахищеними та дані, які за ними передаються, шифрують.

Дані радіоканалу передають у вигляді невеликих послідовностей — пакетів. Кожен пакет можна подати як команду (наприклад, «Відкрий замки»), відповідь на команду (наприклад, «Замки відкриті») або повідомлення (наприклад, «Увага! Увімкнено запалювання!»).

Найперші сигналізації з радіоканалом мали статичний код – кожній команді відповідав свій командний пакет. Формат пакета вибирав сам користувач (або установник), перемикаючи двигуни всередині брелока, або запаюючи перемички.

алгоритми

Малюнок 95. Статичний код

Оскільки варіантів коду було небагато, то іноді своїм брелоком можна було відкрити чужу машину з такою самою сигналізацією — формати пакетів збігалися. Звичайно, таке кодування ніякого захисту не забезпечувало — достатньо було один раз прослухати пакет, який відповідає команді "Зняти з охорони", щоб потім просто повторивши його отримати доступ до автомобіля.

Напевно, саме тоді з'явилися перші кодграбери — технічні пристрої, призначені для перехоплення, декодування та повторення коду. Кінцевою метою зловмисника, який користується кодграбером, є зняття з охорони автомобіля, що "придивився", а потім крадіжка з салону або викрадення.

Структура кодграбера схожа на схему брелока сигналізації.

Малюнок 96. Структура кодграберу

Кодграббер має приймач, передавач, керуючиймікроконтролер, кнопки та засоби індикації (світлодіоди або РКІ). Зазвичай кодграбери збираються "на коліні", а схема вставляється в корпус брелока сигналізації - там вже є і кнопки і антена.

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

Динамічний код відрізняється від статичного тим, що при кожному натисканні на кнопку формат пакета змінюється.

Пакет змінюється за певним законом, який відомий лише сигналізації та запрограмованому в неї брелоку. Це означає, що просто повторити записаний пакет не можна - старі пакети сигналізація відкидає.

алгоритми

Малюнок 97. Динамічний код

Спочатку здавалося, що цього буде достатньо, і що проблема кодгаберів вирішена — але не тут було! Динамічне кодування теж не встояло перед новими кодграбер.

Міфи про динамічні коди: Найвідомішим алгоритмом динамічного кодування є Keeloq – розробка американської компанії Microchip. В Інтернеті давно гуляють чутки у зломі Keeloq, проте це не відповідає дійсності. Аналітично алгоритм Keeloq досі не зламаний — зламано його невдалі реалізації. Наприклад, багато автовиробників "грішать" тим, що використовують один і той же ключ для всіх систем, що дозволяє створити так звані "мануфактурні" кодграбери.

Зламують динамічне кодування декількома способами.

Перший спосіб: аналітичний. В основі цього способу лежать "дірки", які випадково чи свідомо залишили в алгоритмі розробники системи. Приклад наведено вище – однакові ключі у штатних охоронних систем деяких автомобілів.

Другий спосіб: заміна коду, метод, який свого часу наробив багато шуму та змусив виробників сигналізацій рознести команди постановки та зняття з охорони на різні кнопки брелока. При використанні цього способу кодграбер записує кілька посилок брелока користувача, а потім використовує одну з них для зняття автомобіля з охорони.

Багато виробників автомобільних систем охорони розробляли власні динамічні коди, вносячи різні поліпшення. Деякі з них так і не розкриті, і начебто можуть використовуватися в охоронних системах. Однак слід розуміти, що жоден динамічний код не гарантує захист від злому.

Найбільш криптостійким і надійним вважається діалогове кодування, яке потребує двостороннього каналу зв'язку, тобто наявності приймача та передавача, як в основному модулі, так і в брелоку.

Алгоритм роботи діалогового кодування зручно пояснювати, використовуючи персонажів із підручників із криптографії та шифрування — Алісу та Боба.

Уявіть, що Боб замкнувся в будинку і, крім Аліси, нікого пускати не хоче. У дверях немає вічка, а в будинку немає вікон. Після того як Боб почув стукіт у двері, йому потрібно визначити, чи дійсно за дверима стоїть Аліса. Найкращий спосіб - це поставити питання, правильну відповідь на яке може дати тільки Аліса. Якщо людина за дверима відповість правильно - сміливо відчиняти двері.

Так само працює і сигналізація з діалоговим кодом:

2. Основний модуль, прийнявши цей пакет, вигадує "загадку", якийсь пакет, відповідь який може бути лише один. "Загадка" передається брелоку радіоканалом.

3. Брелок, розгадавши "загадку", відповідає пакету підтвердження.

4. Основний модуль перевіряє відповідь і, якщо він вірний, виконує команду брелока ("відкриває"двері").

алгоритми

Малюнок 98. Структура діалогового коду

Тепер давайте додамо до нашої історії ще одного персонажа — Єву, яка дуже хоче потрапити до будинку до Боба. За певних умов Єва може підслухати розмову між Бобом та Алісою та дізнатися відповідь на загадку Боба. Тому загадки щоразу мають бути різні.

У діалоговому кодуванні роль загадки грає випадкове число, яке згенеровано за спеціальним алгоритмом. "Випадковість" цього числа має бути дуже високою.

Припустимо, що питання, які ставить Боб, — ​​дати історичних подій. Що робитиме Єва, якщо дізнається про це? Звичайно ж, купить підручник історії і після підготовки зможе пробратися в будинок.

Це означає, що в діалоговому кодуванні процес розгадування "загадки" має бути унікальним для кожної системи "сигналізація-брелок". Як це зробити? Дуже просто – унікальним ключем шифрування, який створюється при прив'язці брелока до системи. Тобто Аліса та Боб повинні заздалегідь домовитися, з якої теми будуть запитуватись і нікому цього не повідомляти.

шифрування

Рисунок 99. Узагальнений вид діалогового коду

Отже, для того, щоб реалізувати діалоговий код, необхідно забезпечити:

1. Якісний алгоритм генерації випадкових чисел (загадок).

2. Унікальний ключ для кожного комплекту сигналізації. Ключ повинен змінюватися при повторному прив'язуванні брелока до сигналізації.

3. Унікальний ключ має бути достатньої довжини (захист від перебору).

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

Ще одна важлива умова реалізаціїдіалогового кодування — якісний, надійний та швидкий радіоканал, оскільки навіть одне натискання на кнопку брелока викликає активний обмін пакетами. Якщо хоча б один із пакетів буде втрачено, доведеться повторювати всю процедуру заново.

В системах StarLine серії Dialog всі ці умови виконуються. Сучасний радіоканал, заснований на однокристальному трансівері, дозволяє виконувати діалоговий обмін швидко і чітко, а унікальний для кожної системи 128-бітний ключ є надійним захистом від злому.

Слід підбити підсумок, що реальним захистом від кодграберів є лише діалоговий код. Старі сигналізації з динамічним кодом не є стійкими до злому.

Ви знаєте, як улаштовані системи розпізнавання у військовій авіації? Там стоїть система запиту «Свій чужий». Якщо на запит із землі літак правильно не відповідає, його негайно збивають! Запропонуйте клієнту встановити систему розпізнавання, як у літаку!

шифрування

Малюнок 100. Схема-пам'ятка "Алгоритми шифрування"

автосигналізації