В статье предложен оригинальный кодовый замок с “плавающим” кодом. По мнению автора, такой замок по степени секретности превосходит известные с постоянным кодом.
В основе любого кодового замка лежит принцип сравнения последовательности символов (цифр или букв), заложенных в память замка, и комбинации символов, вводимых с внешней клавиатуры. При совпадении этих двух последовательностей (кодов) замок выдаёт команду на исполнительный механизм, открывающий “потаённую дверцу”.
Know a great number of such structures — door locks, safe, garage, etc. unfortunately, they all have one common drawback: the code is recorded in the lock memory, permanent. Yes, it can be quickly changed, and it is regularly done in systems for better security. However the modified code is immediately permanent (static). And even increased code length (sometimes to open a lock requires you to enter a combination of 8-12 characters) can be observed, a matter one way or another. After all, in order to open the lock with a static code, require a strictly defined sequence of pressing buttons on the keypad lock or the same sequence of turning the knob of the encoder.
And if you make the lock, which will permanently change your internal code? But then people have access to open the lock, will be able to open it without knowing the current code combination? The answer is simple: the lock must somehow prompt the opening that you need to do in order to open.
The idea of the lock with dynamic code arose from the author's more than 40 years ago and was immediately implemented. Years of operation of such locks, made on different element base, has shown their absolute reliability. None of the many choices of locks made according to this principle, nobody has been able to access without the help of those who know the principle of their opening. Such cases, unfortunately, were. But the human factor has always been and remains the most vulnerable link in any secret or cryptographic system.
Consider the principle of operation of the code lock with pseudodiamesa code. We offer a simplified version of the lock has only two buttons, which requires a click in a sequence a specified number of times. The lock on every time you press any of the buttons modifies your internal code, but rather, changes the required sequence of pressing the buttons randomly. In the end, even if the attacker shall stand close to the person opening the door, and remember the order of pressing the buttons, he will not be able to open the lock, repeating just typed combination. Moreover, if the person who typed the correct code but for some reason was not included in the opened door, try to do it again in a few seconds, he would have to press on the lock button in a completely different sequence!
Дополнительная защитная опция замка — режим автоблокировки, который “замораживает” замок на некоторое время в случае попытки его открывания методом подбора. И чем дольше злоумышленник будет пытаться открыть замок, нажимая наугад на кнопки, тем дольше замок будет находиться в состоянии блокировки.
Как же происходит набор требуемого кода? Всё просто: рядом с кнопками находятся два светодиода, свет от которых проходит через коллиматоры, ограничивающие угол рассеивания светового потока. Попросту говоря, светодиоды видны только тому, кто стоит непосредственно перед клавиатурой замка. Следовательно, и “подсказка” замка видна только тому, кто его открывает. Но это не значит, что посторонний наблюдатель сможет воспользоваться такой подсказкой.
Допустим, рабочий код замка — четырёхразрядный (а в нашем случае он может быть любой, от двух-трех до восьми разрядов). Тогда для открывания замка потребуется четыре раза нажать на кнопки в требуемой очерёдности. Предположим, что замок запрограммирован на открывание кодом ”1—0—0—1″. Если принять, что левой кнопке замка присвоено значение “1”, а правой — значение “0”, то для открывания замка потребуется следующая последовательность нажатий на кнопки: “левая—правая—правая—левая”.
Теперь допустим, что на каждое нажатие на кнопку замок по случайному закону изменяет значения, присвоенные кнопкам. Следовательно, после первого же нажатия статус кнопок может измениться, но может и остаться прежним. Так вот подсказки, которые делает замок, включая один из светодиодов, касаются не самого кода, а только статуса кнопок, т. е. замок сообщает лишь то, какая кнопка при следующем нажатии будет “нулевой”, а какая — “единичной”. Тогда для того чтобы ввести требуемый код “1—0—0—1”, нужно будет нажимать на кнопки не в последовательности “левая—правая—правая—левая”, а в последовательности “светится—не светится—не светится—светится”.
Для того чтобы этот алгоритм работал корректно, перед набором следует обнулить внутренние регистры памяти замка, в которых уже могла быть случайно записана какая-то информация. Для этого нужно одновременно нажать сразу на обе кнопки, что подтверждается включением обоих светодиодов на 0,2 с. В этот момент генератор случайных чисел определит статус кнопок для следующего нажатия и включит тот или другой светодиод-подсказку. После очередного нажатия статус кнопок вновь будет переопределён, и снова один из светодиодов подскажет, какая кнопка стала “единичной” для следующего нажатия. Если же пауза между очередными нажатиями на кнопки продлится больше 5 с, замок выключит оба светодиода и будет оставаться в таком состоянии до следующего нажатия на любую из кнопок. Состояние внутренних регистров микроконтроллера при этом останется неизменным.
В случае ошибки при наборе кода потребуется снова обнулить замок одновременным нажатием на обе кнопки и начать набор кода с первой “цифры”. Если же выполнено три обнуления замка, но правильный код так и не введён, замок посчитает это несанкционированной попыткой открывания методом подбора и автоматически заблокируется на некоторое время, в течение которого он даже при наборе правильной комбинации уже не откроется. Внешне режим автоблокировки никак не отличается от штатного — светодиоды будут продолжать хаотично мигать при каждом нажатии на кнопки. Замок вернётся в рабочее состояние только после пятиминутного интервала, если в течение этого времени ни одна из кнопок не будет нажата.
It is obvious that even with a four-digit code to open the lock of a stranger will be very difficult. But if the code length to increase to 6-8 characters, then open it almost impossible.
We offer electronic lock assembled on the microcontroller ATtiny13A-P11 in housing 01R-8 (see drawing). The device has no features. The electronic lock is applied to the capacitors: C1 oxide K50-35 or imported with a rated voltage of not less than 16 In, C2 — ceramic.
Кнопки панели управления — КМ1-1 или другие с одной группой нормально разомкнутых контактов. Кнопки на плате — SWT-20-4,3 или любые другие аналогичные, предназначенные для монтажа на плату в отверстия. Подойдут как четырёхвыводные, так и двухвыводные кнопки. Интегральный стабилизатор — серии 78L05 в корпусе ТО-92, его можно заменить на любой другой с напряжением стабилизации 5 В и номинальным током нагрузки 50… 100 мА. Диод VD1, шунтирующий обмотку электромагнита, можно заменить на отечественный КД226А или другой с подходящими параметрами.
Питание устройства осуществляется от внешнего нестабилизированного 12-вольтного источника. Максимальный выходной ток источника зависит от рабочего тока применённого электромагнита, открывающего механическую часть замка. В сетевом блоке питания желательно предусмотреть буферную аккумуляторную батарею ёмкостью 4…7 А·ч. Это обеспечит длительную работу замка даже при отключении сетевого напряжения.
Электромагнит коммутируется полевым транзистором IRLU2905PBF с логическим уровнем управления в корпусе I-Pak (ТО-251АА). Этот транзистор, как и большинство остальных деталей, может быть заменён другим с подходящими параметрами: максимальное напряжение сток—исток — не менее 30 В, максимальный ток стока — не менее 5 А (зависит от тока срабатывания электромагнита), в таком же корпусе или ТО-220. Возможно применение биполярного составного транзистора, например, КТ829А или КТ827А. Учитывая, что электромагнит во включённом состоянии остаётся всего лишь 5 с, а промежутки времени между повторными срабатываниями, как правило, гораздо больше, установка коммутирующего транзистора на теплоотвод не обязательна. В крайнем случае можно использовать небольшую пластину из меди, латуни или алюминия толщиной 1,5…2 мм площадью 10…15 см2.
Управляется замок двумя кнопками SB4 и SB5, которые служат для ввода требуемого кода. На панели управления замком (на схеме выделена штрихпунктирной линией) над каждой из кнопок ввода кода установлен отдельный светодиод. Светодиод HL1 соответствует кнопке SB4, а светодиод HL2 — кнопке SB5. Светящийся светодиод показывает, какой кнопке в текущий момент присвоен статус “1”. Соответственно, не- подсвеченная кнопка имеет статус “0”.
При желании и некотором опыте эксплуатации замка можно оставить только один светодиод, расположив его между кнопками ввода. Это ещё больше затруднит несанкционированное открывание замка. Цвет свечения светодиодов — красный, диаметр 3…5 мм. Можно применять как отечественные светодиоды серии АЛ307, так и импортные.
The SB1 is located on the device Board and intended for ignition mode reprogramming code. For ease of reprogramming, in that case, if control panel lock is installed at some distance from its electronic part on the Board it is better to provide space for two extra buttons SB2 and SB3, the duplicate button enter the code on the control panel SB4 and SB5, as well as two additional LEDs (not shown in the diagram), which in this case it is necessary to include sequentially with the basic led control panel. You will need to reduce the resistance of the resistors R4 and R5 to approximately 100 Ohms. Since the input of the control code that permits change of the operating code is not provided, access to buttons SB1, SB2 and SB3 should only be possible when removing the protective housing (cover) from the body lock.
Для перевода замка в режим перепрограммирования кода следует одновременно нажать на обе кнопки ввода (или дублирующие кнопки на плате устройства). Замок коротко “моргнёт” светодиодами. Затем, не отпуская нажатые кнопки, необходимо кратковременно нажать на кнопку SB1 (“RESET”). При перезагрузке микроконтроллер проанализирует состояние кнопок SB2 (“0”) и SB3 (“1”). Если они обе находятся в замкнутом состоянии, микроконтроллер перейдёт в режим перепрограммирования кода, просигнализировав об этом однократным коротким включением обоих светодиодов. Следует иметь в виду, что несинхронность одновременного нажатия на кнопки не должна превышать 0,15 с, в противном случае замок может отработать не корректно. Требований к синхронности отпускания кнопок нет.
После отпускания всех кнопок можно ввести новый код требуемой длины последовательными кратковременными нажатиями на кнопки “0” и “1”. Нажатие на кнопки при наборе нового кода сопровождается коротким включением соответствующего светодиода. Завершается перепрограммирование кода повторным одновременным нажатием на кнопки “0” и “1”. Микроконтроллер просигнализирует о завершении перепрограммирования кода двойным коротким включением обоих светодиодов.
В режиме перепрограммирования кода замка генератор случайных чисел не работает и статус кнопок не изменяется, т. е. при нажатии на кнопку “0” в EEPROM микроконтроллера всегда вводится 0, а при нажатии на кнопку “1” всегда вводится 1. Длина (разрядность) кода определяется автоматически и также записывается в EEPROM микроконтроллера.
Конструкция панели управления замка может быть произвольной, но при этом должна защищать кнопки и светодиоды от возможных механических повреждений и отвечать требованиям эргономики. Оптимальное расстояние между кнопками — 40…60 мм. Светодиоды целесообразно располагать на расстоянии 30…40 мм над кнопками. Кнопки не должны выступать над поверхностью панели управления, а светодиоды следует поместить как можно дальше (глубже) от внешней поверхности, чтобы световой поток от них проходил через узкие каналы коллиматоров (отверстия диаметром не более 1… 1,5 мм и глубиной не менее 5 мм) и не рассеивался во все стороны. Ещё лучше сделать канал коллиматора в виде конусного отверстия с углом раскрытия 10… 15°. Яркость светодиодов должна быть минимально достаточной для уверенной идентификации при любых условиях внешней освещённости. Регулируют яркость подбором резисторов R4 и R5.
If initial programming of the microcontroller will be done directly on the assembled device (in-system programming), the Board should provide five-pin connector to connect the programmer. In the diagram, this connector is labeled XS1. Due to the low load capacity of the outputs of some programmers programming we recommend when wydanych the LEDs and the resistor R6.
При первоначальном программировании микроконтроллера в его EEPROM записывается тестовый трёхразрядный код “1—1—1”, который затем пользователь может заменить на любой другой. Максимальная длина пользовательского кода — восемь разрядов, что, как правило, является избыточным. В микроконтроллере задействован сторожевой таймер WDT, который автоматически перезагрузит устройство в случае его “зависания” по какой-либо причине.
Поскольку схема устройства очень простая и для её реализации можно применить детали различных типоразмеров, чертёж печатной платы не приводится. Её сможет самостоятельно “развести” под свои детали даже начинающий радиолюбитель.
The program is written in a graphical environment Algorithm Builder, which is available at http://www.algrom.net/russian.html free download. There you can find the schema of simple programmers for the Atmel microcontrollers.
Download Pthe t and hexfiles for flashing the microcontroller and its EEPROM
Author: I. KARPUNIN, Nizhny Tagil, Sverdlovsk region.
Source: Radio No. 12, 2016