Аппаратный ключ

Аппаратный ключ (также электронный ключ, иногда донгл от англ. dongle) — аппаратное средство, предназначенное для защиты программного обеспечения (ПО) и данных от копирования, нелегального использования и несанкционированного распространения.

Современные электронные ключи

Основой данной технологии является специализированная микросхема, либо защищённый от считывания микроконтроллер, имеющие уникальные для каждого ключа алгоритмы работы. Донглы также имеют защищённую энергонезависимую память небольшого объёма, более сложные устройства могут иметь встроенный криптопроцессор (для аппаратной реализации шифрующих алгоритмов), часы реального времени. Аппаратные ключи могут иметь различные форм-факторы, но чаще всего они подключаются к компьютеру через USB. Также встречаются с LPT, SOIC или PCMCIA-интерфейсами.

Принцип действия

Ключ присоединяется к определённому интерфейсу компьютера. Далее защищённая программа через специальный драйвер отправляет ему информацию, которая обрабатывается в соответствии с заданным алгоритмом и возвращается обратно. Если ответ ключа правильный, то программа продолжает свою работу. В противном случае она может выполнять определённые разработчиками действия, например, переключаться в демонстрационный режим, блокируя доступ к определённым функциям.

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

История

Защита ПО от нелицензионного пользования увеличивает прибыль разработчика. На сегодняшний день существует несколько подходов к решению этой проблемы. Подавляющее большинство создателей ПО используют различные программные модули, контролирующие доступ пользователей с помощью ключей активации, серийных номеров и т. д. Такая защита является дешёвым решением и не может претендовать на надёжность. Интернет изобилует программами, позволяющими нелегально сгенерировать ключ активации (генераторы ключей) или заблокировать запрос на серийный номер/ключ активации (патчи, крэки). Кроме того, не стоит пренебрегать тем фактом, что сам легальный пользователь может обнародовать свой серийный номер.

Эти очевидные недостатки привели к созданию аппаратной защиты программного обеспечения в виде электронного ключа. Известно, что первые электронные ключи (то есть аппаратные устройства для защиты ПО от нелегального копирования) появились в начале 1980-х годов, однако первенство в идее и непосредственном создании устройства, по понятным причинам, установить очень сложно.

Защита ПО с помощью электронного ключа

Комплект разработчика ПО

Донгл относят к аппаратным методам защиты ПО, однако современные электронные ключи часто определяются как мультиплатформенные аппаратно-программные инструментальные системы для защиты ПО. Дело в том, что помимо самого ключа компании, выпускающие электронные ключи, предоставляют SDK (Software Developer Kit — комплект разработчика ПО). В SDK входит все необходимое для начала использования представляемой технологии в собственных программных продуктах — средства разработки, полная техническая документация, поддержка различных операционных систем, детальные примеры, фрагменты кода, инструменты для автоматической защиты. Также SDK может включать в себя демонстрационные ключи для построения тестовых проектов.

Технология защиты

Технология защиты от несанкционированного использования ПО построена на реализации запросов из исполняемого файла или динамической библиотеки к ключу с последующим получением и, если предусмотрено, анализом ответа. Вот некоторые характерные запросы:

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

Стоит отметить, что некоторые современные ключи (Guardant Code от Компании «Актив», Sentinel от Thales, LOCK от Astroma Ltd., Rockey6 Smart от Feitian, Senselock от Seculab) позволяют разработчику хранить собственные алгоритмы или даже отдельные части кода приложения (например, специфические алгоритмы разработчика, получающие на вход большое число параметров) и исполнять их в самом ключе на его собственном микропроцессоре. Помимо защиты ПО от нелегального использования такой подход позволяет защитить используемый в программе алгоритм от изучения, клонирования и использования в своих приложениях конкурентами. Однако для простого алгоритма (а разработчики часто совершают ошибку, выбирая для загрузки недостаточно сложный алгоритм) может быть проведен криптоанализ по методу анализа «черного ящика».

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

Алгоритм шифрования может быть секретным или публичным. Секретные алгоритмы разрабатываются самим производителем средств защиты, в том числе и индивидуально для каждого заказчика. Главным недостатком использования таких алгоритмов является невозможность оценки криптографической стойкости. С уверенностью сказать, насколько надёжен алгоритм, можно было лишь постфактум: взломали или нет. Публичный алгоритм, или «открытый исходник», обладает криптостойкостью несравнимо большей. Такие алгоритмы проверяются не случайными людьми, а рядом экспертов, специализирующихся на анализе криптографии. Примерами таких алгоритмов могут служить широко используемые ГОСТ 28147—89, AES, RSA, Elgamal и др.

Защита с помощью автоматических средств

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

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

Реализация защиты с помощью функций API

Помимо использования автоматической защиты, разработчику ПО предоставляется возможность самостоятельно разработать защиту, интегрируя систему защиты в приложение на уровне исходного кода. Для этого в SDK включены библиотеки для различных языков программирования, содержащие описание функциональности API для данного ключа. API представляет собой набор функций, предназначенных для обмена данными между приложением, системным драйверомсервером в случае сетевых ключей) и самим ключом. Функции API обеспечивают выполнение различных операций с ключом: поиска, чтения и записи памяти, шифрования и расшифрования данных при помощи аппаратных алгоритмов, лицензирования сетевого ПО и т. д.

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

Обход защиты

Задача злоумышленника — заставить защищённую программу работать в условиях отсутствия легального ключа, подсоединённого к компьютеру. Не вдаваясь очень глубоко в технические подробности, будем исходить из предположения, что у злоумышленника есть следующие возможности:

  • перехватывать все обращения к ключу;
  • протоколировать и анализировать эти обращения;
  • посылать запросы к ключу и получать на них ответы;
  • протоколировать и анализировать эти ответы;
  • посылать ответы от имени ключа и др.

Такие широкие возможности противника можно объяснить тем, что он имеет доступ ко всем открытым интерфейсам, документации, драйверам и может их анализировать на практике с привлечением любых средств.

Для того чтобы заставить программу работать так, как она работала бы с ключом, можно или внести исправления в программу (взломать её программный модуль), или эмулировать наличие ключа путём перехвата вызовов библиотеки API обмена с ключом.

Стоит отметить, что современные электронные ключи (к примеру, ключи Guardant поколения Sign и современные ключи HASP HL) обеспечивают стойкое шифрование протокола обмена электронный ключ — библиотека API работы с ключом. В результате наиболее уязвимыми местами остаются точки вызовов функций этого API в приложении и логика обработки их результата.

Эмуляция ключа

При эмуляции никакого воздействия на код программы не происходит, и эмулятор, если его удаётся построить, просто повторяет все поведение реального ключа. Эмуляторы строятся на основе анализа перехваченных запросов приложения и ответов ключа на них. Они могут быть как табличными (содержать в себе все необходимые для работы программы ответы на запросы к электронному ключу), так и полными (полностью эмулируют работу ключа, так как взломщикам стал известен внутренний алгоритм работы).

Построить полный эмулятор современного электронного ключа — это достаточно трудоёмкий процесс, требующий большого количества времени и существенных инвестиций. Ранее злоумышленникам это удавалось: например, компания Aladdin признаёт, что в 1999 году злоумышленникам удалось разработать довольно корректно работающий эмулятор ключа HASP3 и HASP4. Это стало возможным благодаря тому, что ключ использовал проприетарный алгоритм кодирования, который был взломан. Сейчас большинство ключей используют публичные криптоалгоритмы, поэтому злоумышленники предпочитают атаковать какой-то конкретный защищённый продукт, а не защитный механизм в общем виде. Для современных систем защиты HASP и Guardant эмуляторов в свободном доступе нет, так как используется криптосистема с открытым ключом.

Информации о полной эмуляции современных ключей Guardant не встречалось. Существующие табличные эмуляторы реализованы только для конкретных приложений. Возможность их создания была обусловлена неиспользованием (или неграмотным использованием) основного функционала электронных ключей разработчиками защит.

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

Взлом программного модуля

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

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

Дизассемблирование — способ преобразования кода исполняемых модулей в язык программирования, понятный человеку — Assembler. В этом случае злоумышленник получает распечатку (листинг) того, что делает приложение.

Декомпиляция — преобразование исполняемого модуля приложения в программный код на языке высокого уровня и получение представления приложения, близкого к исходному коду. Может быть проведена только для некоторых языков программирования (в частности, для .NET приложений, создаваемых на языке C# и распространяемых в байт-коде — интерпретируемом языке относительно высокого уровня).

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

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

Литература

  • Скляров Д. В. Аппаратные ключи защиты // Искусство защиты и взлома информации. — СПб.: БХВ-Петербург, 2004. — 288 с. — 3000 экз. — ISBN 5-94157-331-6.

См. также

Ссылки

Read other articles:

Manajemen sumber daya air adalah aktivitas merencanakan, mengembangkan, mendistribusikan, dan mengelola penggunaan sumber daya air secara optimal. Manajemen sumber daya air adalah subbagian dari manajemen siklus air. Dalam kondisi yang ideal, perencanaan manajemen sumber daya air memperhatikan semua kebutuhan air dan mengalokasikan air berbasis kesetaraan yang memuaskan semua pengguna air. Secara praktik, hal in jarang terjadi. Sumber daya air Visualisasi distribusi air di bumi berdasarkan vo...

 

 

Moroccan tennis player Younes El Aynaoui يونس العيناويCountry (sports) MoroccoResidenceRabat, MoroccoBorn (1971-09-12) 12 September 1971 (age 52)Rabat, MoroccoHeight1.93 m (6 ft 4 in)Turned pro1990Retired2017PlaysRight-handed (two-handed backhand)Prize money$4,044,667SinglesCareer record265–227Career titles5Highest rankingNo. 14 (11 March 2003)Grand Slam singles resultsAustralian OpenQF (2000, 2003)French Open4R (1995, ...

 

 

Komando Distrik Militer 0611/GarutLambang Korem 062/TarumanagaraDibentuk1 Juni 1962Negara IndonesiaAliansiKorem 062/TNCabangTNI Angkatan DaratTipe unitKodimPeranSatuan TeritorialBagian dariKodam III/SiliwangiMakodimGarut, Jawa BaratPelindungTentara Nasional IndonesiaMotoNarendra Dhuaja BhunekaBaret H I J A U Ulang tahun1 JuniSitus webkodim0611garut.com Komando Distrik Militer 0611/Garut atau Kodim 0611/Garut merupakan satuan kewilayahan yang berada di bawah komando dan kendali ...

  لمعانٍ أخرى، طالع كايلي (توضيح). كايلي 凯里市  خريطة الموقع تقسيم إداري البلد  الصين[1] خصائص جغرافية إحداثيات 26°34′56″N 107°58′30″E / 26.58222°N 107.97511°E / 26.58222; 107.97511   [2] المساحة 1570 كم² السكان التعداد السكاني 522601 نسمة (إحصاء 2014) الكثافة السكانية 460.6 نس�...

 

 

French-American Catholic bishop (1764–1842) His ExcellencyJohn DuboisBishop of New YorkThird Bishop of New YorkSeeDiocese of New YorkTerm ended20 December 1842PredecessorJohn Connolly, O.P.SuccessorJohn HughesOrdersOrdinationSeptember 28, 1787by Antoine-Eléonore-Léon Le Clerc de JuignéConsecrationOctober 29, 1826by Ambrose Maréchal, S.S.Personal detailsBorn(1764-08-24)August 24, 1764Paris, Kingdom of FranceDiedDecember 20, 1842(1842-12-20) (aged 78)New York, New York, Uni...

 

 

Angkatan Darat JermanHeerLogo Angkatan Darat JermanDibentuk12 November 1955Negara JermanTipe unitAngkatan DaratJumlah personel64.036 (April 2020)189 pesawat[1]Bagian dariBundeswehrMotoSchützen, helfen, vermitteln, kämpfenMelindungi, membantu, menengahi, berjuangPertempuran Daftar pertempuran Operasi Perserikatan Bangsa-Bangsa di Somalia IIPasca Perang Balkan 1995-1999Operasi LibellePerang KosovoPertempuran TetovoOperasi Essential HarvestPerang di Afganistan (2001–sekarang)Kri...

Gran Hotel Bali di Alicante, Spanyol Gran Hotel Bali merupakan sebuah hotel berbintang 4 di Benidorm, provinsi Alicante, Spanyol. Dengan tinggi 186 meter (210 meter hingga ujungnya), menjadi hotel tertinggi di Eropa dan salah satu pencakar langit tertinggi di Eropa. Merupakan bangunan tertinggi di Spanyol mengalahkan Torre Picasso tahun 2001, hingga November 2006 dikalahkan oleh Torre Espacio (dan kemudian tiga menara dalam pembangunan di Cuatro Torres Business Area). Hotel ini, merupakan kum...

 

 

KøgeKøge Torv dengan patung Raja Frederik VII Lambang kebesaranKøgeLocation in DenmarkKoordinat: 55°27′22″N 12°10′47″E / 55.45611°N 12.17972°E / 55.45611; 12.17972Koordinat: 55°27′22″N 12°10′47″E / 55.45611°N 12.17972°E / 55.45611; 12.17972NegaraDenmarkRegionZealand (Sjælland)MunisipalitasKøgePiagam kotaAbad ke-13Munisipalitas saat ini2007-01-01Pemerintahan • Wali kotaFlemming ChristensenLuas •...

 

 

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「�...

Dalam nama Tionghoa ini, nama keluarganya adalah Yang. Yang QianInformasi pribadiKewarganegaraanTiongkokLahir10 Juli 2000 (umur 23)Ningbo, Zhejiang, Tiongkok[1] OlahragaOlahragaMenembak Rekam medali Permainan Olimpiade 2020 Tokyo Senapan angin 10 meter 2020 Tokyo Tim campuran senapan angin 10 meter Yang Qian (atlet tembak) Hanzi sederhana: 杨倩 Alih aksara Mandarin - Hanyu Pinyin: Yáng Qiàn Yang Qian (杨倩; lahir 10 Juli 2000) adalah seorang atlet tembak Tiongkok. Ia mewaki...

 

 

الأبجد مصطلح في علم اللسانيات ويعني نظام كتابة تدل فيه الرموز على حروف صامتة، ويترك للقارئ أن يورد حرف العلة المناسب.[1] يستعمل هذا المصطلح لوصف الأبجديات التي لا تكتب الحروف الصوتية كالأبجدية العربية والعبرية والأرامية. تاريخ نظام كتابة نظام كتابة قائمة أنظمة الكتابة...

 

 

American physicist and Nobel laureate (born 1951) Frank WilczekWilczek in 2004BornFrank Anthony Wilczek (1951-05-15) May 15, 1951 (age 73)Mineola, New York, U.S.EducationUniversity of Chicago (BS)Princeton University (MA, PhD)Known forAsymptotic freedomQuantum chromodynamicsParticle statisticsAxion modelSpouseBetsy DevineChildrenAmity and Mira[1]AwardsMacArthur Fellowship (1982)Sakurai Prize (1986)ICTP Dirac Medal (1994)Lorentz Medal (2002)Lilienfeld Prize (2003)Nobel Prize ...

此條目論述以部分區域為主,未必有普世通用的觀點。 (2009年7月3日)請協助補充內容以避免偏頗,或討論本文的問題。 此條目需要补充更多来源。 (2009年7月3日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:房地产 — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该�...

 

 

Private university in Tulsa, Oklahoma, US The University of TulsaFormer namesHenry Kendall College (1894–1920)MottoWisdom, Faith, ServiceTypePrivate research universityEstablished1894; 130 years ago (1894)Academic affiliationsAPCUNAICU[1]ORAUEndowment$1.36 billion (2021)[2]PresidentBrad Carson[3]Academic staff306 (full-time)Students3,740Undergraduates2,743Postgraduates997LocationTulsa, Oklahoma, United States36°09′08″N 95°56′47″W /...

 

 

This article is about an island in Wyoming. For other islands with a similar name, see Stephenson Island. Stevenson Island (Wyoming)Stevenson Island (Wyoming)GeographyLocationWyomingCoordinates44°30′50″N 110°23′02″W / 44.514°N 110.384°W / 44.514; -110.384Total islands1Highest elevation2,366 m (7762 ft)AdministrationUnited StatesDemographicsPopulation0 Stevenson Island is a small, uninhabited island in Yellowstone Lake, Teton County, Wyoming.&...

Hannover 96Tên đầy đủHannoverscher Sportverein von 1896Biệt danhDie Roten (Lữ đoàn đỏ)Thành lập12 tháng 4 năm 1896SânHDI-ArenaSức chứa49.200Chủ tịchMartin KindNgười quản lýMirko SlomkaGiải đấuBundesliga2015–16Bundesliga, 18 Màu áo sân nhà Màu áo sân khách Hannoverscher Sportverein von 1896, thường được biết đến là Hannover 96 (IPA: [haˈnoːfɐ ˌzɛksʔʊntˈnɔʏntsɪç]), Hannover hoặc đơn giản là 96, là một câu...

 

 

Community of organisms that live in the benthic zone Seaweed and two chitons in a tide pool Part of a series related toBenthic life Benthos              Benthic zoneBenthopelagic (coupling)        Seabed By size macrobenthos meiobenthos microbenthos By type zoobenthos phytobenthos By location endobenthos epibenthos hyperbenthos By habitat    Shallow: tide pool • bay mud • bivalve reef ...

 

 

IratyDatos generalesNombre Iraty Sport ClubApodo(s) AzulãoFundación 21 de abril de 1914Presidente Odair Sérgio Marochi Filho[1]​InstalacionesEstadio Estadio Coronel Emílio Gomes Irati, BrasilCapacidad 4 322 espectadores[2]​Inauguración 1950Uniforme Titular Alternativo Última temporadaLiga 3ª División Paranaense(2021) 4º Página web oficial[editar datos en Wikidata] El Iraty Sport Club es un club de fútbol brasilero de la ciudad de Irati. Fue fundado en 1914 y j...

Міжнародний жіночий день, Лондон, 2017Частина серіїФемінізм Жінки Дівчата Права Історія фемінізму Протофемінізм 1 хвиля 2 хвиля 3 хвиля 4 хвиля Постфемінізм Жіноча історія Жінки США[en] Британії[en] Канади[en] Німеччини[en] Жіночі музеї Поверх спадщини Феміністична історія Фемі...

 

 

American author (1874–1946) Gertrude SteinPortrait by Carl Van Vechten, 1935Born(1874-02-03)February 3, 1874Allegheny, Pennsylvania, U.S.DiedJuly 27, 1946(1946-07-27) (aged 72)Neuilly-sur-Seine, FranceResting placePère Lachaise CemeteryOccupation Writer poet novelist playwright art collector EducationHarvard University (BA)Johns Hopkins UniversityLiterary movementModernist literaturePartnerAlice ToklasSignature Gertrude Stein (February 3, 1874 – July 27, 1946) was an American n...