0

Электронный замок с псевдодинамическим кодом

В статье предложен оригинальный кодовый замок с «плаваю­щим» кодом. По мнению автора, такой замок по степени секрет­ности превосходит известные с постоянным кодом.

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

Известно огромное множество по­добных конструкций — дверные замки, сейфовые, гаражные и пр. К сожале­нию, все они имеют один общий недо­статок: код, записанный в памяти замка, постоянен. Да, его можно оперативно изменить, и это регулярно делается в системах повышенной секретности. Тем не менее модифицированный код сразу же становится постоянным (статичным). А даже код увеличенной длины (иногда для открывания замка требуется ввести комбинацию из 8—12 символов) может быть подсмотрен, считан тем или иным способом. Ведь для того, чтобы открыть замок со статичным кодом, требуется строго определённая последователь­ность нажатия на кнопки клавиатуры замка или одна и та же последователь­ность поворота ручки энкодера.

А если сделать замок, который сам будет постоянно изменять свой внутрен­ний код? Но как же тогда человек, имею­щий доступ к открыванию замка, сможет его открыть, не зная текущей кодовой комбинации? Ответ прост: замок должен как-то подсказывать открывающему, что нужно сделать для того, чтобы он от­крылся.

Идея замка с динамическим кодом возникла у автора более 40 лет назад и сразу же была реализована. Многолет­няя эксплуатация таких замков, выпол­ненных на различной элементной базе, показала их абсолютную надёжность. Ни один из многочисленных вариантов зам­ков, изготовленных по такому принципу, никому не удавалось открыть без под­сказок лиц, знающих принцип их открывания. Такие случаи, к сожалению, были. Но человеческий фактор всегда был и остаётся самым уязвимым звеном в любой секретной или криптографиче­ской системе.

Рассмотрим принцип работы кодово­го замка с псевдодинамическим кодом. Предлагаемый упрощённый вариант замка имеет всего две кнопки, на кото­рые требуется нажать в какой-то после­довательности заданное число раз. При этом замок на каждое нажатие на любую из кнопок модифицирует свой внутрен­ний код, а точнее, изменяет требуемую очерёдность нажатия на кнопки по слу­чайному закону. В итоге, даже если зло­умышленник будет стоять рядом с чело­веком, открывающим дверь, и запомнит очерёдность нажатия на кнопки, он не сможет открыть замок, повторив только что набранную комбинацию. Более того, если человек, который набрал правильный код, но по какой-то причине не вошёл в открывшуюся дверь, попыта­ется сделать это ещё раз через несколь­ко секунд, он должен будет нажимать на кнопки замка уже в совершенно другой последовательности!

Дополнительная защитная опция замка — режим автоблокировки, кото­рый «замораживает» замок на некото­рое время в случае попытки его откры­вания методом подбора. И чем дольше злоумышленник будет пытаться открыть замок, нажимая наугад на кнопки, тем дольше замок будет находиться в состоянии блокировки.

Как же происходит набор требуемо­го кода? Всё просто: рядом с кнопками находятся два светодиода, свет от которых проходит через коллиматоры, ограничивающие угол рассеивания светового потока. Попросту говоря, светодиоды видны только тому, кто стоит непосредственно перед клавиа­турой замка. Следовательно, и «под­сказка» замка видна только тому, кто его открывает. Но это не значит, что посторонний наблюдатель сможет вос­пользоваться такой подсказкой.

Допустим, рабочий код замка — четырёхразрядный (а в нашем случае он может быть любой, от двух-трех до восьми разрядов). Тогда для открыва­ния замка потребуется четыре раза нажать на кнопки в требуемой очерёд­ности. Предположим, что замок запро­граммирован на открывание кодом ”1—0—0—1″. Если принять, что левой кнопке замка присвоено значение «1», а правой — значение «0», то для откры­вания замка потребуется следующая последовательность нажатий на кноп­ки: «левая—правая—правая—левая».

Теперь допустим, что на каждое нажатие на кнопку замок по случайному закону изменяет значения, присвоенные кнопкам. Следовательно, после первого же нажатия статус кнопок может изме­ниться, но может и остаться прежним. Так вот подсказки, которые делает за­мок, включая один из светодиодов, касаются не самого кода, а только стату­са кнопок, т. е. замок сообщает лишь то, какая кнопка при следующем нажатии будет «нулевой», а какая — «единичной». Тогда для того чтобы ввести требуемый код «1—0—0—1», нужно будет нажимать на кнопки не в последовательности «левая—правая—правая—левая», а в последовательности «светится—не све­тится—не светится—светится”.

Для того чтобы этот алгоритм работал корректно, перед набором следует обну­лить внутренние регистры памяти замка, в которых уже могла быть случайно запи­сана какая-то информация. Для этого нужно одновременно нажать сразу на обе кнопки, что подтверждается включе­нием обоих светодиодов на 0,2 с. В этот момент генератор случайных чисел определит статус кнопок для следующе­го нажатия и включит тот или другой све­тодиод-подсказку. После очередного нажатия статус кнопок вновь будет пере­определён, и снова один из светодиодов подскажет, какая кнопка стала «единич­ной» для следующего нажатия. Если же пауза между очередными нажатиями на кнопки продлится больше 5 с, замок выключит оба светодиода и будет оста­ваться в таком состоянии до следующего нажатия на любую из кнопок. Состояние внутренних регистров микроконтролле­ра при этом останется неизменным.

В случае ошибки при наборе кода по­требуется снова обнулить замок одно­временным нажатием на обе кнопки и начать набор кода с первой «цифры». Если же выполнено три обнуления замка, но правильный код так и не введён, замок посчитает это несанкционирован­ной попыткой открывания методом под­бора и автоматически заблокируется на некоторое время, в течение которого он даже при наборе правильной комбина­ции уже не откроется. Внешне режим автоблокировки никак не отличается от штатного — светодиоды будут продол­жать хаотично мигать при каждом нажа­тии на кнопки. Замок вернётся в рабочее состояние только после пятиминутного интервала, если в течение этого времени ни одна из кнопок не будет нажата.

Очевидно, что даже при четырёхзнач­ном коде открыть такой замок посто­роннему будет очень непросто. А если длину кода увеличить до 6—8 знаков, то открыть его практически невозможно.

Предлагаемый электронный замок со­бран на микроконтроллере ATtiny13A-P11 в корпусе 01Р-8 (см. рисунок). Уст­ройство не имеет никаких особеннос­тей. В электронном замке применены конденсаторы: С1 — оксидный К50-35 или импортный с номинальным напряже­нием не менее 16 В, С2 — керамический.

Кнопки панели управления — КМ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, так и импортные.

Кнопка SB1 расположена на плате устройства и предназначена для перево­да замка в режим перепрограммирова­ния кода. Для удобства перепрограмми­рования, в том случае, если панель уп­равления замка установлена на некото­ром расстоянии от его электронной час­ти, на плате лучше предусмотреть места для установки двух дополнительных кно­пок SB2 и SB3, дублирующих кнопки ввода кода на панели управления SB4 и SB5, а также двух дополнительных свето­диодов (на схеме не показаны), которые в таком случае нужно включить последо­вательно с основными светодиодами панели управления. При этом потребу­ется уменьшить сопротивление резисто­ров R4 и R5 приблизительно до 100 Ом. Поскольку ввод контрольного кода, раз­решающего изменение рабочего кода, не предусмотрен, доступ к кнопкам SB1, SB2 и SB3 должен быть возможен только при снятии защитного кожуха (крышки) с корпуса кодового замка.

Для перевода замка в режим пере­программирования кода следует одно­временно нажать на обе кнопки ввода (или дублирующие кнопки на плате уст­ройства). Замок коротко «моргнёт” све­тодиодами. Затем, не отпуская нажатые кнопки, необходимо кратковременно на­жать на кнопку 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.

Если первоначальное программиро­вание микроконтроллера будет произво­диться непосредственно на собранном устройстве (внутрисистемное програм­мирование), на плате следует преду­смотреть пятиконтактный разъём для подключения программатора. На схеме этот разъём обозначен XS1. Из-за невы­сокой нагрузочной способности выходов некоторых программаторов программи­рование рекомендуется выполнять при выпаянных светодиодах и резисторе R6.

При первоначальном программиро­вании микроконтроллера в его EEPROM записывается тестовый трёхразрядный код «1—1—1», который затем пользова­тель может заменить на любой другой. Максимальная длина пользовательско­го кода — восемь разрядов, что, как правило, является избыточным. В мик­роконтроллере задействован стороже­вой таймер WDT, который автоматиче­ски перезагрузит устройство в случае его «зависания» по какой-либо причине.

Поскольку схема устройства очень простая и для её реализации можно при­менить детали различных типоразмеров, чертёж печатной платы не приводится. Её сможет самостоятельно «развести» под свои детали даже начинающий ра­диолюбитель.

Программа написана в графической среде Algorithm Builder, которую можно по адресу http://www.algrom.net/russian.html скачать бесплатно. Там же можно найти схемы простых програм­маторов для микроконтроллеров Atmel.

Скачать программу и hex-файлы для прошивки микроконтроллера и его EEPROM

Автор: И.КАРПУНИН, г. Нижний Тагил Свердловской обл.
Источник: Радио №12, 2016

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *