Реверс протокола шифрования в закрытом устройстве. Возможно ли?
Имеется система из двух устройств общающихся по цифровой шине, первое устройство управляет оборудованием, второе устройство разрешает или запрещает первому работу на основе считанных рфид меток.
Реализовано таким образом, что первое устройство при попытке включения отправляет некую, судя по всему рандомную последовательность вида «43 50 47 9d e0 d1 21 8e» во второе устройство, которое в свою очередь преобразовывает её в «66 e8 f4 4f a0 d8 de 71» и работа разрешается. Видимо первое устройство сравнивает с заранее известным ему результатом. Алгоритм преобразования всегда дает одни и те-же ответы на выходе при одинаковых запросах, во времени не меняется.
Сами рфид метки считанные вторым устройством на алгоритм шифрования тоже не влияют, любая считанная метка приводит к шифрованию одним алгоритмом. Но алгоритм меняется каждый раз при обучении меток и судя по всему устройства 1 и 2 обмениваются неким ключом во время этой сервисной процедуры, дабы потом работать в паре.
Задача сэмулировать поведение второго устройства, т.е. разобрать алгоритм по какому производятся преобразования. Из исходных данных можно сколько угодно получить пар значений вход-выход ну и предположительно есть ключ из процесса обучения (не знаю только зашифрован ли он тоже как-то или нет).
Путем не хитрого анализа удалось самому понять, что из 8 байт, последние 2 в ответе являются просто инвертированными последними двумя байтами запроса и от ключа шифрования не меняются. Соответственно остается 6 байт для анализа.
Для предположительного ключа «30 95 ca 3b c8 98 5e 84»
Пары выглядят так:
Вход: 00 00 00 00 00 00
Выход: 62 1e af 7c da 27
Вход: 01 00 00 00 00
Выход: dd 3e 53 d6 50 05
Для ключа «39 72 98 4e 69 4a 6b af»
Вход: 00 00 00 00 00 00
Выход: 2d c2 cb 75 4e ec
Вход: 01 00 00 00 00 00
Выход: 2d d1 32 2c e4 69
Из наблюдений, первые 4 байта похоже шифруются отдельным блоком, и на их результат не влияют 5 и 6 байт в запросе. При изменении 5 и 6 байтов в запросе, в ответе меняются тоже только 5 и 6 байты, но при изменении первых 4 в запросе, 5 и 6 тоже меняются в ответе. В общем шифрование 5 и 6 байта похоже зависят от результатов шифрования первых четырех.
Возможно ли вообще по этим параметрам определить алгоритм шифрования? Или это гиблое занятие если нет доступа к прошивке? Может быть это некий общеизвестный алгоритм? Микроконтроллер во втором устройстве, которое занимается шифрованием — PIC16.
Крайне умно хакать иммобилайзеры в Q&A на открытом ресурсе. Даже если за вами еще не выехали, как вы думаете — на сколько подскачут угоны по стране если здесь в открытую выложить решение вашего вопроса?))
Я уже вижу школоту, ходящую с iPod по стоянкам и выбирающих себе авто по росту и под цвет куртки. Это же не дыра в wordpress… =|
Вы не разобравшись в сути уже начинаете наезды. Иммобилайзер нельзя просто так взять и «похакать», здесь вопрос об используемом алгоритме шифрования. При известном алгоритме шифрования для хакания нужен еще и ключ для шифрования, а он как известно генерируется для каждой пары иммобилайзер-ЭБУ двигателя индивидуально и взлому в лоб не подлежит.
У меня мысль как-раз иного плана, вместо обходчиков из серии «примотать чип изолентой» сделать интеллектуальное устройство, которое и не позволяло бы угонщикам просто взять и вытащить из под коврика чип и уехать. Чипа в машине быть не должно.
Да и рассуждайте логически, чем пытаться найти в проводке нужный провод для подключения, проще уж воткнуть чистый контроллер двигателя и уехать.
Интеллектуальное устройство (для удаленного завода/прогрева, видимо, да?) в данном случае будет просто «отключать» один иммобилайзер и заменять его собой, чем оно будет отличаться от стандартной схемы для удаленного завода? И в чем вообще тогда логика?
p.s. И, да, ломать такие вещи не только плохо, но также сложно, дорого и может быть чревато.
Его нельзя будет вытащить из под коврика и приложив к замку зажигания уехать. А так-же нельзя будет завести если срабатывала тревога, просто не будет больше эмулировать до момента пока не включишь зажигание верным ключем. Тем самым безопасность повысится относительно обычных обходчиков.
Предлагаете вшить чип в кисть? Чтобы угонщики руки отрубали? =)
Если авто хотят угнать-его угонят. У меня знакомого по башке тюкнули на выходе из магазина, затискали в его же тачку и увезли в лес. А там уже он сам все сказал. Страховая, кстати, не выплатила. поскольку он сам передал чип с ключами, и терморектальный криптоанализ их не волновал. Был бы чип вшит в руку… думаю вырезали бы. =(
Пусть уж лучше угоняют — новую купить можно. Попробуйте договориться с производителем каким-нить, если дело действительно стоящее.
Ну тут уже от установщиков зависит и конструкции автомобиля, ну и опять-же обходная петля включается одним проводом. А в предложенном варианте нет и такой возможности, в машине просто будет бесполезный кусок текстолита.