Кодирование сигналов брелка-передатчика

Здесь я коротко попытаюсь описать принципы кодирования сигналов брелка — передатчика и вкратце опишу один из способов реализации системы «антиграбер». Естественно, для большей доступности материала где-то придется применить некоторые упрощения, а где-то использовать специальные термины. Поэтому, знающие люди, не пинайте ногами, а те, кто не в курсе, не обижайтесь, если текст трудно читается. Достаточно тяжело «на пальцах» объяснять, как работают сложные электронные схемы…

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

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 =1024

Теперь возьмем, к примеру, число 25. 25=16(24)+8(23)+1(20) Эту сумму надо записать и упорядочить. Предлагается следующая система: расположить последовательно справа налево идентификаторы присутствия в сумме, определяющей число, степеней двойки. Начиная от 2 в степени 0. В качестве идентификаторов предлагается использовать цифры 0 и 1.
0 — степень отсутствует
1 — степень присутствует.

Понятнее будет, если вы посмотрите на таблицу, расположенную ниже. Здесь вы увидите, как записывается число 25 в двоичной системе.

1
1
0
0
1
4
23
22
21
20
Присутствует в сумме
Присутствует в сумме
Отсутствует в сумме
Отсутствует в сумме
Присутствует в сумме

Таким образом, число 25 в двоичной системе выглядит так: 11001. Данная запись состоит из пяти символов. Каждый символ называется разрядом (битом). Количество разрядов, которое имеет запись числа называют разрядностью. Разрядность, записи чисел, используемых для систем приема — передачи в автосигнализациях, в свою очередь, зависит от применяемых в конструкции радиоэлементов (микросхем), и чаще всего тоже определяется степенью числа два. Наиболее распространены восьми и шестнадцатиразрядные (битные) схемы. Максимальное число, которое можно записать/считать за один раз ограничено разрядностью схемы. и в первом случае это 255 (для восьмиразрядной схемы), во втором — 65535 (для шестнадцатиразрядной схемы). Если количество разрядов схемы больше, чем количество разрядов числа, записанного в двоичной системе, то слева, перед символами, обозначающими число, дописываются нули. К примеру, восьмиразрядная запись числа 25 будет выглядеть так: 00011001. А расшифровка этой записи показана в таблице.

0
0
0
1
1
0
0
1
7
26
25
4
23
22
21
20

Таким образом, вне зависимости от того, какое количество разрядов имеет запись числа, общее количество разрядов, его описывающих, всегда сохраняется одинаковым. Запись в двоичной системе называют еще двоичным кодом числа.

Ну, с математикой покончено, теперь вернемся к сигнализациям. На бумаге достаточно просто написать 0 и 1, но как это сделать в электронике? Очень просто: 0 — напряжения нет, 1 — напряжение есть. Таким образом, набор нулей и единиц будет представлять собой набор выбросов напряжения (импульсов), появляющихся на выходе устройства во время передачи какого-нибудь числа в двоичном коде.

На рисунке вы можете увидеть наше число 25 в двоичном коде, и как этот код передается в виде импульсов.

Импульсы

Такой способ передачи называется последовательным кодом. Почему последовательным? Потому что импульсы передаются последовательно, друг за другом. Этот способ применяется практически во всех передающих устройствах автосигнализаций. Приемник пересылает принятый сигнал (код) в преобразователь, который преобразует последовательный код в параллельный. Затем из преобразователя код поступает в дешифратор, который определяет правильность кода, и , если он правильный — выдает сигнал постановки/снятия с охраны на элементы управления, а если код неправильный — просто игнорирует его. Что такое параллельный код? Это такой способ передачи, при котором все импульсы передаются одновременно по шине (набору проводов).

А преобразуется последовательный код в параллельный так: есть такой элемент, называется РЕГИСТР, представляет собой набор ячеек памяти, в каждую из которых можно записать и сохранить там либо низкий уровень напряжения, либо высокий. Количество этих ячеек, обычно равно разрядности схемы. Как я уже писал, это чаще всего 8 или 16. Так вот в эти ячейки последовательно, друг за другом передаются элементы кода — каждый в свою ячейку. Напомню, 0 — низкий уровень, 1 — высокий уровень. Когда весь регистр заполнится, появится возможность передать все его содержимое сразу по шине. На другой стороне шины тоже находится регистр, состоящий из такого же количества ячеек, только заполняется он сразу всеми элементами кода, ведь, сколько элементов — столько проводов в шине, поэтому нет проблем передать все сразу. Этот способ передачи данных и называют параллельным, хорош он тем, что за меньшее время можно передать больше информации.

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

Но как это реализовать? Рассмотрим один из предлагаемых методов — метод приращений. Мы выяснили, что передаваемый брелком код, ничто иное, как последовательность импульсов (нулей и единиц), имеющая определенную длину (разрядность). Эта последовательность является записью в двоичном коде какого-то числа. Назовем его кодовым числом. Таким образом, шифратор формирует, передатчик брелка передает, приемник принимает, а дешифратор обрабатывает кодовое число. Чтобы угонщики не смогли снять автомобиль с охраны при помощи граббера, нужно сделать так, чтобы каждый раз при постановке/снятии с охраны формировалось и обрабатывалось новое кодовое число. Но изменение его должно происходить синхронно, как в шифраторе, так и в дешифраторе, чтобы брелок передал нужное число, а дешифратор воспринял его, как правильное. Как это сделать? Предлагается использовать ПРИРАЩЕНИЕ — другое число фиксированного (неизменяемого) значения и передавать и обрабатывать его сумму с кодовым числом. К примеру, кодовое число — 25, приращение — 5. Брелок будет передавать при первом нажатии кнопки число 30, при втором — 35, при третьем — 40, и т.д. Значение приращения должно быть записано и в память дешифратора. Таким образом, приняв и раскодировав число 30, дешифратор записывает в свою память, что следующее число, которое будет являться правильным равняется имеющемуся (30) плюс приращение, записанное в памяти (5), то есть 35. Таким образом, если еще раз передатчик передает кодовое число 30 — дешифратор воспринимает его, как неправильное и игнорирует. Возникает вопрос, а как дешифратор узнает, какое число, передаваемое брелком, является правильным, если впервые воспринимает код от брелка? Для этого есть режим активации брелка.

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

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

Последовательность — набор любых чисел, записанный в память шифратора и дешифратора, например 1, 2, 3. Посмотрим, как будет изменяться кодовое число. Примем за исходное, опять число 25. В первый раз брелок передаст 26 (25+1), во второй раз — 28 (26+2), в третий раз — 31 (28+3), в четвертый раз — 32 (31+1), в пятый раз 34 (32+2), в шестой раз 37 (34+3), и так далее по кругу. Только теперь для активации брелка надо будет нажимать кнопку два раза, чтобы дешифратор вычислил, какое приращение будет следующим, и записал в память правильное кодовое число. Чаще всего таких чисел 8 или 16 (ох уж эта разрядность…). Второй способ шифрования — применение в качестве кодового числа прогрессии, то есть последовательности чисел, изменяющихся по определенному закону. Возьмем для примера самую простую прогрессию, где последующее число больше предыдущего на единицу, то есть 1, 2, 3, 4, 5, и т.д. и любимое начальное кодовое число 25. Коды, передаваемые брелком, будут выглядеть так: 26 (25+1), 28 (26+2), 31 (28+3), 35 (21+4), 40 (35+5) и т.д.

Здесь уже по-другому обрабатываются коды — в памяти дешифратора находится число, на которое увеличивается приращение, и следующий правильный код ВЫЧИСЛЯЕТСЯ. Подобрать правильный код к системам, использующим для кодирования метод последовательного приращения уже достаточно сложно, но можно. При помощи компьютера можно вычислить следующий правильный код, правда, для этого надо сграбить несколько сигналов брелка — передатчика подряд, чтобы получить необходимые исходные данные. Перед производителями опять встает задача увеличения уровня секретности кода. И они применяют метод вычисляемых приращений. При этом методе величина приращения вычисляется по программе, встроенной в микрокомпьютер, находящийся в блоке управления. Не буду, как раньше приводить математическую модель, как это делается, это достаточно сложно, опишу лишь степень надежности. Системы, использующие метод вычисляемых приращений выполняются, в основном по 16 битной схеме. Значит, имеется 65535 вариантов кодового числа, приращение кодируется тоже по функции, описываемой 16 битным числом — это еще 65535 вариантов. Да и само приращение может быть в пределах от 1 до 65535.

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

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

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