Аппаратные ключи защита Аппаратные ключи защита хранят информацию для проверки подлинности на отдельном оборудовании и используются вместо паролей или обеспечивают механизм двухфакторной проверки подлинности. После того, как пользователь введет пароль, необходимо снова подтвердить ключ подключения для нормального входа в систему. Этот механизм обеспечивает дополнительный уровень защиты учетных записей. Аппаратные ключи защита подключаются к вашему устройству через USB-A, USB-C, Lightning, NFC и Bluetooth, и они достаточно портативны, чтобы их можно было носить на цепочке для ключей. Как правило, они основаны на протоколе FIDO, и веб-сайты могут использовать API WebAuthn для доступа к ключам. FIDO и WebAuthn являются открытыми стандартами. Двухфакторной проверки подлинности для ключей безопасности очень похожа на одноразовый код, который вы получаете в текстовом или электронном письме при входе на определенные веб-сайты, или на отпечаток пальца или биометрическое сканирование лица, используемое для разблокировки вашего ноутбука или смартфона. Однако вместо того, чтобы отправлять себе код или сканировать часть тела, вам нужно подключить устройство к компьютеру и нажать на него датчик, чтобы он мог получить доступ к тому, что вы защищаете. Основные средства и методы Электронные ключи Электронный ключ представляет собой специальное устройство, которое содержит в себе лицензионные данные, обеспечивающие возможность полноценного использования софта. Без получения этих данных программа работать не будет или будет работать с ограниченным функционалом. Электронный ключ предназначается для подключения к одному из интерфейсов компьютера, через который происходит считывание требуемой информации. Ключи бывают трех видов: • • • Специализированный электронный чип. Микросхема перепрограммируемой памяти, собственные источники электропитания. Ключ на базе микропроцессора. имеющая Среди электронных ключей, которые обеспечивают аппаратные методы защиты информации, используются устройства: • • • для чтения записи информации для разблокирования программы; с криптографическими алгоритмами шифрования/дешифрования лицензионных данных; на основе микропроцессора, способного обрабатывать специальные алгоритмы разработчика софта, блокирующие работу ПО. К основным преимуществам электронных ключей относятся: • • • возможность использования на любом компьютере с соответствующим интерфейсом; с помощью этих ключей могут выполняться криптографические преобразования; посредством ключей может выполняться произвольный код, встроенный разработчиком софта. Смарт карты Эти аппаратные средства представляют собой специальные электронные ключи, которые надежно защищают программные продукты от пиратства и неправомерного использования. Они выполнены в виде устройств, владеющих встроенным чипом, который может реализовывать произвольный информационный код и хранить любую информацию. Для хранения этих данных и различных кодов смарт карта владеет энергонезависимой памятью. К основным преимуществам смарт карт относятся: • • • • более высокая система защиты данных от неправомерного использования; возможность обработки информации с помощью встроенного чипа и ее хранения в энергонезависимой памяти; поддержка бесконтактной формы чтения/записи данных; большой эксплуатационный период. Защита ПО с помощью электронного ключа Комплект разработчика ПО Донгл относят к аппаратным методам защиты ПО, однако современные электронные ключи часто определяются как мультиплатформенные аппаратно-программные инструментальные системы для защиты ПО. Дело в том, что помимо самого ключа компании, выпускающие электронные ключи, предоставляют SDK (Software Developer Kit — комплект разработчика ПО). В SDK входит все необходимое для начала использования представляемой технологии в собственных программных продуктах — средства разработки, полная техническая документация, поддержка различных операционных систем, детальные примеры, фрагменты кода, инструменты для автоматической защиты. Также SDK может включать в себя демонстрационные ключи для построения тестовых проектов. Технология защиты Технология защиты от несанкционированного использования ПО построена на реализации запросов из исполняемого файла или динамической библиотеки к ключу с последующим получением и, если предусмотрено, анализом ответа. Вот некоторые характерные запросы: • проверка наличия подключения ключа; • считывание с ключа необходимых программе данных в качестве параметра запуска (используется, в основном, только при поиске подходящего ключа, но не для защиты); • запрос на расшифрование данных или исполняемого кода, необходимых для работы программы, зашифрованных при защите программы (позволяет осуществлять «сравнение с эталоном»; в случае шифрования кода, выполнение нерасшифрованного кода приводит к ошибке); • запрос на расшифрование данных, зашифрованных ранее самой программой (позволяет отправлять каждый раз разные запросы к ключу и, тем самым, защититься от эмуляции библиотек API / самого ключа) • проверка целостности исполняемого кода путём сравнения его текущей контрольной суммы с оригинальной контрольной суммой, считываемой с ключа (к примеру, путём выполнения ЭЦП кода или других переданных данных алгоритмом ключа и проверки этой ЭЦП внутри приложения; так как ЭЦП всегда разная — особенность криптографического алгоритма — то это также помогает защититься от эмуляции API/ключа); • запрос к встроенным в ключ часам реального времени (при их наличии; может осуществляться автоматически при ограничении времени работы аппаратных алгоритмов ключа по его внутреннему таймеру); Защита с помощью автоматических средств Для большинства семейств аппаратных ключей разработаны автоматические инструменты (входящие в SDK), позволяющие защитить программу «за несколько кликов мыши». При этом файл приложения «оборачивается» в собственный код разработчика. Реализуемая этим кодом функциональность варьируется в зависимости от производителя, но чаще всего код осуществляет проверку наличия ключа, контроль лицензионной политики (заданной поставщиком ПО), внедряет механизм защиты исполняемого файла от отладки и декомпиляции (например, сжатие исполняемого файла) и др. Важно то, что для использования автоматического инструмента защиты не требуется доступ к исходному коду приложения. Например, при локализации зарубежных продуктов (когда отсутствует возможность вмешательства в исходный код ПО) такой механизм защиты незаменим, однако он не позволяет использовать весь потенциал электронных ключей и реализовать гибкую и индивидуальную защиту. Реализация защиты с помощью функций API Помимо использования автоматической защиты, разработчику ПО предоставляется возможность самостоятельно разработать защиту, интегрируя систему защиты в приложение на уровне исходного кода. Для этого в SDK включены библиотеки для различных языков программирования, содержащие описание функциональности API для данного ключа. API представляет собой набор функций, предназначенных для обмена данными между приложением, системным драйвером (и сервером в случае сетевых ключей) и самим ключом. Функции API обеспечивают выполнение различных операций с ключом: поиска, чтения и записи памяти, шифрования и расшифрования данных при помощи аппаратных алгоритмов, лицензирования сетевого ПО и т. д.