Rolling Code Объяснение

13

Может кто-нибудь объяснить, как работают протоколы с постоянным кодом, такие как KeeLoq? Я понимаю основную предпосылку, что они каждый раз используют другой код, поэтому вы не можете просто использовать атаку воспроизведения, но я не понимаю, как одна сторона проверяет правильный код и т. Д.

Кроме того, как они выполняют начальную синхронизацию, если индекс в скользящих кодах не известен / не передан заранее?

Если вам нужно использовать Keeloq в качестве примера для объяснения, это нормально, но я бы предпочел общее объяснение скользящих кодов.

NickHalden
источник
Ответы также на сайте crypto.stackexchange.com/questions/18311/…
обрабатывать

Ответы:

10

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

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

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

Это подвижная часть кода. Если PRNG достаточно длинный, очень трудно найти номер обратной связи без большого количества чисел в последовательности подряд, что трудно получить при обычном использовании. Но это не криптографически безопасно.

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

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

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

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

Адам Дэвис
источник
Ах, я, должно быть, забыл, что часть PRNG «без повторения последовательности», это очень важно. В чем преимущество передачи информации, которая позволяет приемнику определять код обратной связи? Это кажется менее безопасным, чем просто выбрать код обратной связи и изготовить передатчик и приемник с его известной ...
NickHalden
@NickHalden код обратной связи отличается для каждого пульта, и клиенты захотят добавить больше пультов позже или заменить отсутствующие пульты. Это нужно только для обучения. Некоторые чуть более безопасные версии требуют определенной последовательности нажатий кнопок на пульте дистанционного управления, прежде чем он выдаст дополнительную информацию обратной связи, но в целом система в целом достаточно безопасна, и даже если вы нарушите шифрование, вам все же потребуется гораздо больше информации, прежде чем это небольшое Вам достаточно информации, чтобы получить полный код обратной связи.
Адам Дэвис
8

Впервые я столкнулся с KeeLoq при исследовании чипа в устройстве открывания гаражных ворот. Спецификация Microchip хорошо объясняет, как это работает.

В двух словах:

  • получатель ведет базу данных всех передатчиков, указав их серийный номер.
  • Каждый передатчик связан с симметричным ключом шифрования (64 бита), который находится на чипе, а также в базе данных получателя.
  • Каждый передатчик связан с 16-битным циклическим порядковым номером, который также хранится в чипе и в базе данных.
  • Когда передатчик активирован, он увеличивает свой порядковый номер по модулю 65536 (16 бит), и отправляет пакет, состоящий из битовой маски, представляющей, какие кнопки были нажаты, его серийный идентификатор и зашифрованную версию серийного номера.
  • получатель сопоставляет серийный номер в базе данных, извлекает ключ и расшифровывает серийный номер.
  • серийный номер должен быть новым; это не может быть недавно использованный серийный номер, который защищает от повторных атак. (См. Рис. 7.3 в техническом описании).
  • если проверяется серийный номер, то получатель может активировать функциональность на основе битовой маски того, какие кнопки были нажаты.
  • если новый серийный номер опережает более чем на 16 значений (пользователь нажимал кнопки много раз случайно, находясь вдали от приемника), то для повторной синхронизации требуется дополнительное дрожание руки, что требует дополнительного нажатия кнопки. (Пользователь выполнит дополнительное нажатие кнопки, полагая, что прием плохой).

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

Новый передатчик может быть принят из информации, передаваемой в обычных сообщениях активации, если приемник и передатчик имеют один и тот же секретный идентификатор производителя. Это связано с тем, что 64-битный ключ шифрования получен из идентификатора производителя и серийной информации получателя. (См. Раздел 7.1).

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

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

Kaz
источник