- Что выбрать
- 1. Импульсные сигналы и электронный ключ | Электротехника
- Быстродействие
- Взаимодействие с другими ключами
- Взлом программного модуля
- Защита с помощью автоматических средств
- История
- Комплект разработчика по
- На чем делаются транзисторные ключи
- Насыщение ключа
- Недостатки ненасыщенного ключа
- Обход защиты
- Принцип действия
- Расчет транзисторного ключа
- Реализация защиты с помощью функций api
- Статический режим работы
- Технология защиты
- Эмуляция ключа
- Заключение
Что выбрать
С чем лучше работать? Давайте представим, что у нас есть простой транзисторный ключ, напряжение питания которого составляет 0,5 В. Тогда с использованием осциллографа можно будет зафиксировать все изменения. Если ток коллектора выставить в размере 0,5мА, то напряжение упадёт на 40 мВ (на базе будет примерно 0,8 В).
Поэтому в них применяются специальные
где есть управляющий р–n-переход. Их преимущества над биполярными собратьями такие:
- Незначительное значение остаточного напряжения на ключе в состоянии проводки.
- Высокое сопротивление и, как результат – малый ток, что протекает по закрытому элементу.
- Потребляется малая мощность, поэтому не нужен значительный источник управляющего напряжения.
- Можно коммутировать электрические сигналы низкого уровня, которые составляют единицы микровольт.
Транзисторный ключ реле – вот идеальное применение для полевых. Конечно, это сообщение здесь размещено исключительно для того, чтобы читатели имели представление об их применении. Немного знаний и смекалки – и возможностей реализаций, в которых есть транзисторные ключи, будет придумано великое множество.
1. Импульсные сигналы и электронный ключ | Электротехника
В предыдущих разделах рассматривались аналоговые сигналы: постоянный ток, гармоническое напряжение, модулированный сигнал и т.п. У аналоговых сигналов каждое их значение в любой момент времени может использоваться для передачи информации.
В цифровых устройствах, в компьютерах используются импульсные сигналы (рис. 4.1). В этом случае для передачи информации используется факт наличия или отсутствия импульса. Реальный импульсный сигнал (см. рис. 4.1) характеризуется следующими параметрами:
· амплитудой импульса (UМ);
· длительность импульса (tИ), равной 0,5 амплитуды импульса;
· длительностью переднего фронта (tФ);
· длительностью заднего фронта (среза) импульса (tСР).
Длительности переднего и заднего фронтов соответственно равны 0,1UМ и 0,9UМ. Как правило, значения сигнала меньше 0,1UМ, соответствуют отсутствию импульса – логическому нулю (в положительной логике). Если уровень сигнала превышает 0,9UМ, то импульс считается присутствующим: его значение соответствует логической единице (в положительной логике). Импульсные сигналы, по сравнению с аналоговыми, обладают информационной избыточностью. Но при этом импульсные сигналы с большей надежностью сохраняют информацию о логическом значении в условиях воздействия помех, наводок и шумов.
Используемые в электронно-вычислительных машинах (ЭВМ) импульсные сигналы несут двоичную информацию: большим значениям приписывается значение логической единицы, а малым значениям – логического нуля (здесь и далее используем положительную логику). Импульсному сигналу соответствует в этом случае логический сигнал (рис. 4.2), равный в некоторые моменты времени логической единице, а в другие моменты – логическому нулю.
Отметим, что для простоты временные интервалы, при которых значение логического сигнала не определено, на рис. 4.2 не показаны.
Электронный ключ – это устройство, выполненное, как правило, на транзисторе и предназначенное для получения импульсного (логического) сигнала. Электронный ключ – основа для построения более сложных цифровых устройств, включая микропроцессоры.
Простейшая схема ключа на биполярном транзисторе с резистивной нагрузкой приведена на рис. 4.3. Аналогично строится схема простейшего ключа на полевом транзисторе. На входе ключа включен источник сигнала с внутренним сопротивлением, равным RC. Нагрузкой каскада служит резистор RК. Внешняя нагрузка для простоты не учитывается. На схеме штриховыми линиями показаны две паразитные емкости.
Входная емкость СВХ включает в себя емкость эмиттерного перехода и емкость монтажа, возникающую между элементами входной цепи и корпусом устройства. Выходная емкость CВЫХ образована емкостью между коллектором и эмиттером транзистора и емкостью монтажа в выходной цепи.
Для оценки работы электронного ключаиспользуется переключательная (амплитудная) характеристика (рис. 4.4). При малом входном напряжении (uВХ < UIВХ ) транзистор закрыт, и на выходе устанавливается высокое напряжение, соответствующее логической единице. Если напряжение uВХ > U0ВХ, то транзистор полностью открывается. Через него в этом случае протекает большой ток коллектора, падение напряжения на нагрузочном резисторе RК будет большим, примерно равным напряжению питания (ЕП). Следовательно, потенциал коллектора будет близок к нулю. На выходе ключа устанавливается низкий уровень напряжения, соответствующий логическому нулю.
Транзистор в составе электронного ключа удобно рассматривать как резистор с управляемым сопротивлением. При открытом транзисторе сопротивление между коллектором и эмиттером мало (ключ замкнут), при закрытом – велико (ключ разомкнут).
Напряжение UIВХ определяет помехоустойчивость закрытого ключа. Если уровень помех, наводок или шумов не превышает это напряжение, то переключения ключа в замкнутое состояние с логическим нулем на выходе
Быстродействие
Этот параметр зависит от максимальной допустимой частоты, когда может осуществляться переключение сигналов. Это в свою очередь зависит от длительности переходного процесса, что определяется инерционностью транзистора, а также влиянием паразитных параметров.
Для характеристики быстродействия логического элемента часто указывают среднее время, которое происходит при задержке сигнала, при его передаче в транзисторный ключ. Схема, отображающая его, обычно именно такой усреднённый диапазон отклика и показывает.
Взаимодействие с другими ключами
Для этого используются элементы связи. Так, если первый ключ на выходе имеет высокий уровень напряжения, то на входе второго происходит открытие и работает в заданном режиме. И наоборот. Такая цепь связи существенно влияет на переходные процессы, что возникают во время переключения и быстродействия ключей.
Вот как работает транзисторный ключ. Наиболее распространёнными являются схемы, в которых взаимодействие совершается только между двумя транзисторами. Но это вовсе не значит, что это нельзя сделать устройством, в котором будет применяться три, четыре или даже большее число элементов. Но на практике такому сложно бывает найти применение, поэтому работа транзисторного ключа такого типа и не используется.
Взлом программного модуля
Злоумышленник исследует логику самой программы, с той целью, чтобы, проанализировав весь код приложения, выделить блок защиты и деактивировать его. Взлом программ осуществляется с помощью отладки (или пошагового исполнения), декомпиляции и дампаоперативной памяти. Эти способы анализа исполняемого кода программы чаще всего используются злоумышленниками в комплексе.
Отладка осуществляется с помощью специальной программы — отладчика, который позволяет по шагам исполнять любое приложение, эмулируя для него операционную среду. Важной функцией отладчика является способность устанавливать точки (или условия) остановки исполнения кода.
Декомпиляция — преобразование исполняемого модуля приложения в программный код на языке высокого уровня и получение представления приложения, близкого к исходному коду. Может быть проведена только для некоторых языков программирования (в частности, для .
Суть атаки с помощью дампа памяти заключается в считывании содержимого оперативной памяти в момент, когда приложение начало нормально исполняться. В результате злоумышленник получает рабочий код (или интересующую его часть) в «чистом виде» (если, к примеру, код приложения был зашифрован и расшифровывается только частично, в процессе исполнения того или иного участка). Главное для злоумышленника — верно выбрать момент.
Отметим, что существует немало способов противодействия отладке, и разработчики защиты используют их: нелинейность кода, (многопоточность), недетерминированную последовательность исполнения, «замусоривание» кода, (бесполезными функциями, выполняющими сложные операции, с целью запутать злоумышленника), использование несовершенства самих отладчиков и др.
Защита с помощью автоматических средств
Для большинства семейств аппаратных ключей разработаны автоматические инструменты (входящие в SDK), позволяющие защитить программу «за несколько кликов мыши». При этом файл приложения «оборачивается» в собственный код разработчика. Реализуемая этим кодом функциональность варьируется в зависимости от производителя, но чаще всего код осуществляет проверку наличия ключа, контроль лицензионной политики (заданной поставщиком ПО), внедряет механизм защиты исполняемого файла от отладки и декомпиляции (например, сжатие исполняемого файла) и др.
Важно то, что для использования автоматического инструмента защиты не требуется доступ к исходному коду приложения. Например, при локализации зарубежных продуктов (когда отсутствует возможность вмешательства в исходный код ПО) такой механизм защиты незаменим, однако он не позволяет использовать весь потенциал электронных ключей и реализовать гибкую и индивидуальную защиту.
История
Защита ПО от нелицензионного пользования увеличивает прибыль разработчика. На сегодняшний день существует несколько подходов к решению этой проблемы. Подавляющее большинство создателей ПО используют различные программные модули, контролирующие доступ пользователей с помощью ключей активации, серийных номеров и т. д.
Такая защита является дешёвым решением и не может претендовать на надёжность. Интернет изобилует программами, позволяющими нелегально сгенерировать ключ активации (генераторы ключей) или заблокировать запрос на серийный номер/ключ активации (патчи, крэки). Кроме того, не стоит пренебрегать тем фактом, что сам легальный пользователь может обнародовать свой серийный номер.
Эти очевидные недостатки привели к созданию аппаратной защиты программного обеспечения в виде электронного ключа. Известно, что первые электронные ключи (то есть аппаратные устройства для защиты ПО от нелегального копирования) появились в начале 1980-х годов, однако первенство в идее и непосредственном создании устройства, по понятным причинам, установить очень сложно.
Комплект разработчика по
Донгл относят к аппаратным методам защиты ПО, однако современные электронные ключи часто определяются как мультиплатформенные аппаратно-программные инструментальные системы для защиты ПО. Дело в том, что помимо самого ключа компании, выпускающие электронные ключи, предоставляют SDK (Software Developer Kit — комплект разработчика ПО).
В SDK входит все необходимое для начала использования представляемой технологии в собственных программных продуктах — средства разработки, полная техническая документация, поддержка различных операционных систем, детальные примеры, фрагменты кода, инструменты для автоматической защиты. Также SDK может включать в себя демонстрационные ключи для построения тестовых проектов.
На чем делаются транзисторные ключи
Они выполняются с использованием полевых или
Первые дополнительно делятся на МДП и ключи, которые имеют управляющий р–n-переход. Среди биполярных различают не/насыщенные. Транзисторный ключ 12 Вольт сможет удовлетворить основные запросы со стороны радиолюбителя.
Насыщение ключа
В таких случаях переходы транзистора являются смещенными в прямом направлении. Поэтому, если изменится ток базы, то значение на коллекторе не поменяется. В кремниевых транзисторах для получения смещения необходимо примерно 0,8 В, тогда как для германиевых напряжение колеблется в рамках 0,2-0,4 В.
А как вообще достигается насыщение ключа? Для этого увеличивается ток базы. Но всё имеет свои пределы, равно как и увеличение насыщения. Так, при достижении определённого значения тока, оно прекращает увеличиться. А зачем проводить насыщение ключа? Есть специальный коэффициент, что отображает положение дел.
С его увеличением возрастает нагрузочная способность, которую имеют транзисторные ключи, дестабилизирующие факторы начинают влиять с меньшей силой, но происходит ухудшение быстродействия. Поэтому значение коэффициента насыщения выбирают из компромиссных соображений, ориентируясь по задаче, которую необходимо будет выполнить.
Недостатки ненасыщенного ключа
А что будет, если не было достигнуто оптимальное значение? Тогда появятся такие недостатки:
- Напряжение открытого ключа упадёт потеряет примерно до 0,5 В.
- Ухудшится помехоустойчивость. Это объясняется возросшим входным сопротивлением, что наблюдается в ключах, когда они в открытом состоянии. Поэтому помехи вроде скачков напряжения будут приводить и к изменению параметров транзисторов.
- Насыщенный ключ обладает значительной температурной стабильностью.
Как видите, данный процесс всё же лучше проводить, чтобы в конечном итоге получить более совершенное устройство.
Обход защиты
Задача злоумышленника — заставить защищённую программу работать в условиях отсутствия легального ключа, подсоединённого к компьютеру. Не вдаваясь очень глубоко в технические подробности, будем исходить из предположения, что у злоумышленника есть следующие возможности:
Такие широкие возможности противника можно объяснить тем, что он имеет доступ ко всем открытым интерфейсам, документации, драйверам и может их анализировать на практике с привлечением любых средств.
Для того чтобы заставить программу работать так, как она работала бы с ключом, можно или внести исправления в программу (взломать её программный модуль), или эмулировать наличие ключа путём перехвата вызовов библиотеки API обмена с ключом.
Стоит отметить, что современные электронные ключи (к примеру, ключи Guardant поколения Sign и современные ключи HASP HL) обеспечивают стойкое шифрование протокола обмена электронный ключ — библиотека API работы с ключом.
Принцип действия
Ключ присоединяется к определённому интерфейсу компьютера. Далее защищённая программа через специальный драйвер отправляет ему информацию, которая обрабатывается в соответствии с заданным алгоритмом и возвращается обратно. Если ответ ключа правильный, то программа продолжает свою работу.
Существуют специальные ключи, способные осуществлять лицензирования (ограничения числа работающих в сети копий программы) защищенного приложения по сети. В этом случае достаточно одного ключа на всю локальную сеть. Ключ устанавливается на любой рабочей станции или сервере сети.
Расчет транзисторного ключа
Для понимания привожу пример расчета, можете подставить свои данные:
1) Коллектор-эмиттер – 45 В. Общая рассеиваемая мощность – 500 mw. Коллектор-эмиттер – 0,2 В. Граничная частота работы – 100 мГц. База-эмиттер – 0,9 В. Коллекторный ток – 100 мА. Статистический коэффициент передачи тока – 200.
2) Резистор для тока 60 мА: 5-1,35-0,2 = 3,45.
3) Номинал сопротивления коллектора: 3,45,06=57,5 Ом.
4) Для удобства берём номинал в 62 Ом: 3,4562=0,0556 мА.
5) Считаем ток базы: 56200=0,28 мА (0,00028 А).
6) Сколько будет на резисторе базы: 5 – 0,9 = 4,1В.
7) Определяем сопротивление резистора базы: 4,1,00028 = 14,642,9 Ом.
Реализация защиты с помощью функций api
Помимо использования автоматической защиты, разработчику ПО предоставляется возможность самостоятельно разработать защиту, интегрируя систему защиты в приложение на уровне исходного кода. Для этого в SDK включены библиотеки для различных языков программирования, содержащие описание функциональности API для данного ключа.
API представляет собой набор функций, предназначенных для обмена данными между приложением, системным драйвером (и сервером в случае сетевых ключей) и самим ключом. Функции API обеспечивают выполнение различных операций с ключом: поиска, чтения и записи памяти, шифрования и расшифрования данных при помощи аппаратных алгоритмов, лицензирования сетевого ПО и т. д.
Умелое применение данного метода обеспечивает высокий уровень защищённости приложений. Нейтрализовать защиту, встроенную в приложение, достаточно трудно вследствие её уникальности и «размытости» в теле программы. Сама по себе необходимость изучения и модификации исполняемого кода защищенного приложения для обхода защиты является серьёзным препятствием к её взлому.
Статический режим работы
В нём проводится анализ закрытого и открытого состояния ключа. В первом на входе находится низкий уровень напряжения, который обозначает сигнал логического нуля. При таком режиме оба перехода находятся в обратном направлении (получается отсечка). А на коллекторный ток может повлиять только тепловой.
В открытом состоянии на входе ключа находится высокий уровень напряжения, соответствующий сигналу логической единицы. Возможной является работа в двух режимах одновременно. Такое функционирование может быть в области насыщения или линейной области выходной характеристики. На них мы остановимся детальнее.
Технология защиты
Технология защиты от несанкционированного использования ПО построена на реализации запросов из исполняемого файла или динамической библиотеки к ключу с последующим получением и, если предусмотрено, анализом ответа. Вот некоторые характерные запросы:
- проверка наличия подключения ключа;
- считывание с ключа необходимых программе данных в качестве параметра запуска (используется, в основном, только при поиске подходящего ключа, но не для защиты);
- запрос на расшифрование данных или исполняемого кода, необходимых для работы программы, зашифрованных при защите программы (позволяет осуществлять «сравнение с эталоном»; в случае шифрования кода, выполнение нерасшифрованного кода приводит к ошибке);
- запрос на расшифрование данных, зашифрованных ранее самой программой (позволяет отправлять каждый раз разные запросы к ключу и, тем самым, защититься от эмуляции библиотек API / самого ключа)
- проверка целостности исполняемого кода путём сравнения его текущей контрольной суммы с оригинальной контрольной суммой, считываемой с ключа (к примеру, путём выполнения ЭЦП кода или других переданных данных алгоритмом ключа и проверки этой ЭЦП внутри приложения; так как ЭЦП всегда разная — особенность криптографического алгоритма — то это также помогает защититься от эмуляции API/ключа);
- запрос к встроенным в ключ часам реального времени (при их наличии; может осуществляться автоматически при ограничении времени работы аппаратных алгоритмов ключа по его внутреннему таймеру);
- и т. д.
Стоит отметить, что некоторые современные ключи (Guardant Code от Компании «Актив», Sentinel от Thales, LOCK от Astroma Ltd., Rockey6 Smart от Feitian, Senselock от Seculab) позволяют разработчику хранить собственные алгоритмы или даже отдельные части кода приложения (например, специфические алгоритмы разработчика, получающие на вход большое число параметров) и исполнять их в самом ключе на его собственном микропроцессоре.
Помимо защиты ПО от нелегального использования такой подход позволяет защитить используемый в программе алгоритм от изучения, клонирования и использования в своих приложениях конкурентами. Однако для простого алгоритма (а разработчики часто совершают ошибку, выбирая для загрузки недостаточно сложный алгоритм) может быть проведен криптоанализ по методу анализа «черного ящика».
Как следует из вышесказанного, «сердцем» электронного ключа является алгоритм преобразования (криптографический или другой). В современных ключах он реализован аппаратно — это практически исключает создание полного эмулятора ключа, так как ключ шифрования никогда не передается на выход донгла, что исключает возможность его перехвата.
Алгоритм шифрования может быть секретным или публичным. Секретные алгоритмы разрабатываются самим производителем средств защиты, в том числе и индивидуально для каждого заказчика. Главным недостатком использования таких алгоритмов является невозможность оценки криптографической стойкости.
С уверенностью сказать, насколько надёжен алгоритм, можно было лишь постфактум: взломали или нет. Публичный алгоритм, или «открытый исходник», обладает криптостойкостью несравнимо большей. Такие алгоритмы проверяются не случайными людьми, а рядом экспертов, специализирующихся на анализе криптографии.
Эмуляция ключа
При эмуляции никакого воздействия на код программы не происходит, и эмулятор, если его удается построить, просто повторяет все поведение реального ключа. Эмуляторы строятся на основе анализа перехваченных запросов приложения и ответов ключа на них.
Они могут быть как табличными (содержать в себе все необходимые для работы программы ответы на запросы к электронному ключу), так и полными (полностью эмулируют работу ключа, так как взломщикам стал известен внутренний алгоритм работы).
Построить полный эмулятор современного электронного ключа — это достаточно трудоёмкий процесс, требующий большого количества времени и существенных инвестиций. Ранее злоумышленникам это удавалось: например, компания Aladdin признаёт, что в 1999 году злоумышленникам удалось разработать довольно корректно работающий эмулятор ключа HASP3 и HASP4.
Это стало возможным благодаря тому, что ключ использовал проприетарный алгоритм кодирования, который был взломан. Сейчас большинство ключей используют публичные криптоалгоритмы, поэтому злоумышленники предпочитают атаковать какой-то конкретный защищённый продукт, а не защитный механизм в общем виде.
Информации о полной эмуляции современных ключей Guardant не встречалось. Существующие табличные эмуляторы реализованы только для конкретных приложений. Возможность их создания была обусловлена неиспользованием (или неграмотным использованием) основного функционала электронных ключей разработчиками защит.
Так же отсутствует какая-либо информация о полной или хотя бы частичной эмуляции ключей LOCK, либо о каких-либо других способах обхода этой защиты.
Заключение
И напоследок про название “электронные ключи”. Дело в том, что состояние меняется под действием тока. А что он собой представляет? Верно, совокупность электронных зарядов. От этого и происходит второе название. Вот в целом и все. Как видите, принцип работы и схема устройства транзисторных ключей не является чем-то сложным, поэтому разобраться в этом – дело посильное.
Следует заметить, что даже автору данной статьи для освежения собственной памяти потребовалось немного попользоваться справочной литературой. Поэтому при возникновении вопросов к терминологии предлагаю вспомнить о наличии технических словарей и проводить поиск новой информации про транзисторные ключи именно там.