Разработка аппаратной части комплекса защиты коммерческого ПО от несанкционированного копирования
Дипломная работа, 01 Февраля 2014, автор: пользователь скрыл имя
Краткое описание
С конца 80-ых, начала 90-ых годов проблемы связанные с защитой информации беспокоят как специалистов в области компьютерной безопасности, так и многочисленных пользователей персональных компьютеров. Это связано с глубокими изменениями, вносимыми компьютерной технологией в нашу жизнь. Изменился сам подход к понятию «информация». Этот термин сейчас больше используется для обозначения специального товара, который можно купить, продать, обменять на что-то другое и т.д. При этом стоимость информации часто превосходит стоимость самой вычислительной системы, в рамках которой она хранится, в десятки, а то и в сотни раз.
Прикрепленные файлы: 1 файл
Д ЗАщита по от копирования.doc
— 1.14 Мб (Скачать документ)Защищенная программа может исполняться следующими способами:
- последовательно
Рис.10. Последовательное исполнение защищенной программы
- прямой переход
Рис.11. Прямой переход
- реверс
Рис.12. Реверс
Нужно отметить, что есть некоторые дополнения. После исполнения дешифрованного кода, данный код остается в памяти и программа подвержена взлому. Потенциальный взломщик может купить одну лицензию и после исполнения кода снять дамп памяти. На его основе может быть получена работоспособная программа. Для противодействия данному типу атак необходимо сразу после исполнения кода стереть его из памяти.
- Аппаратные ключи
Это программно-аппаратные комплексы защиты, просто они более известны как «аппаратные (электронные) ключи защиты».
Этот класс систем защиты ПО в последнее время приобретает все большую популярность среди производителей программного обеспечения.
Идея ключа заключается в том, что ключ присоединяется к определённому интерфейсу компьютера. Далее защищённая программа через специальный драйвер отправляет ему информацию, которая обрабатывается в соответствии с заданным алгоритмом и возвращается обратно. Если ответ ключа правильный, то программа продолжает свою работу. В противном случае она может выполнять любые действия, заданные разработчиками - например, переключаться в демонстрационный режим, блокируя доступ к определённым функциям.
Соответственно аппаратные ключи защиты состоят из собственно ключа, подключаемого в один из стандартных портов ПК (COMM, LPT, PCMCIA, USB и т.д.) или слот расширения материнской платы, и программного обеспечения (драйверов для различных операционных систем и модуля, встраиваемого в защищаемую программу).
Аппаратная часть таких ключей выполнена на микросхемах FLASH-памяти, на PIC-котроллерах или на заказных ASIC-чипах. Эта элементная база отличается очень низким энергопотреблением.
Рассмотрим аппаратные реализации ключей защиты.
Самый простой и самый легко взламываемый - ключ на основе FLASH-памяти. Основная его идея в том, чтобы перед продажей защищаемого программного обеспечения записать в ключ некоторые данные и/или части программного кода, а на этапе проверки легальности использования ПО считать эти данные из ключа. Ломается защита приблизительно следующим образом: определяется алгоритм обмена информацией между компьютером и ключом, считывается информация из FLASH-памяти ключа и пишется соответствующий эмулятор (драйвер, который подменяет собой штатный драйвера электронного ключа и - вместо обмена с реальным устройством - передает прикладной программе заранее подготовленные данные). Помимо этого, такие ключи обладают наименьшей степенью прозрачности для стандартных протоколов обмена (из-за того, что данные, не предназначенные для ключа, теоретически могут быть восприняты им как команда на чтение или запись FLASH-памяти, что приведет либо к порче хранимой информации, либо к нарушению протокола обмена с другим устройством, подключенным к тому же порту компьютера).
Ключи, сделанные на основе PIC или ASIC-чипов, имеют на порядок большую устойчивость к взлому и “прозрачность” для штатных протоколов обмена. Обе эти микросхемы представляют собой контроллеры, содержащие в себе процессор, некоторое количество оперативной памяти, FLASH-память команд и память для хранения микропрограммы. Микропрограмма и внутренняя память обычно защищается от внешнего считывания, так что сделать аппаратную копию ключа довольно проблематично. Такие комплексы содержат в аппаратной части не только ключ дешифрации, но и блоки шифрации/дешифрации данных, таким образом при работе защиты в электронный ключ передаются блоки зашифрованной информации, а принимаются оттуда расшифрованные данные. В системах этого типа достаточно сложно перехватить ключ дешифрации, так как все процедуры выполняются аппаратной частью, но остается возможность принудительного сохранения защищенной программы в открытом виде после отработки системы защиты. Кроме того, к ним применимы методы криптоанализа.
Основное отличие PIC-ключей от ASIC-ключей в том, что PIC-чипы программируются разработчиком ключей (то есть он может относительно легко изменить алгоритмы работы), а ASIC-чипы являются заказными микросхемами (алгоритмы жестко задаются на этапе производства микросхем). Поэтому ASIC-ключи получаются более дешевыми, чем собранные на основе PIC-чипов, но по этой же причине защита на их основе менее надежна (определив алгоритм обработки данных в одном из ASIC-чипов, можно написать эмулятор ключа для всей партии, которая - в силу особенностей производства - обычно бывает достаточно большой).
Программная часть защитного комплекса:
На стороне персонального компьютера навесная защита разделяется на двоичный код, внедряемый в защищаемый файл (файлы) и модуль ядра операционной (драйвер) взаимодействующий с аппаратной частью комплекса.
Двоичный код уровня приложений операционной системы размещает в защищаемом файле (файлах) метки начала и окончания защищаемых блоков и после запуска программного обеспечения с установленной навесной защитой, при обнаружении меток производит обмен с аппаратной частью посредством драйвера.
Драйвер необходим для взаимодействия с устройством, предоставления интерфейса взаимодействия на уровень приложений и реализации защищенного обмена с аппаратурой.
- Описание системы
- Описание идеи
Данный комплекс представляет собой комбинированную систему, предназначенную для защиты, в первую очередь, коммерческого программного обеспечения или конфиденциальной информации пользователя от несанкционированного использования. Основная идея состоит в создании распределенной защиты с совместным использованием методов шифрования исполняемого кода и хранением, дешифрацией и исполнением защищаемых блоков программы во внешнем устройстве.
Программно-аппаратный комплекс защиты программного обеспечения физически и логически разделен на две составляющих, которые могу разрабатываться и использоваться как совместно, так и, с небольшими изменениями, как отдельные продукты: внешнее устройство, осуществляющее выполнение основных алгоритмов защиты информации и программного обеспечения персонального компьютера, реализующего связь с аппаратной частью защиты и шифрование исполняемого кода. Аппаратное устройство подключается и взаимодействует с персональным компьютером посредством интерфейса USB 2.0. Это последовательный, высокоскоростной аппаратный интерфейс, рассчитанный на скорость обмена до 480 Мбит/сек. И присутствующий практически на любом персональном компьютере.
Мы совмещаем аппаратную защиту и методику шифрования исполняемого кода. Как и в случае шифрования исполняемого кода в него вносятся маркеры начала и конца защищаемых блоков. Часть кода, находящегося между маркерами, шифруют ключом. Далее эти зашифрованные участки кода переносятся во внешнее устройство. Там же хранится ключевая информация, необходимая для дешифровки. В исполняемый код вместо защищаемых блоков вносят «мусор» такого же объема.
На этапе выполнения
программы, при достижении
Абстрактно, внешнее устройство может выполнять различные функции, связанные с защитой информации:
- Хранение ключевой информации. Это наиболее простой в реализации метод защиты. В общем случае информация, расположенная на персональном компьютере, кодируется и для декодирования используется ключ, хранимый на внешнем носителе. Подобные системы достаточно просты в реализации, но обладает недостаточной надежностью. Предположим, что таким методом защищена программа. Внутри программы существуют зашифрованные блоки, которые дешифруются с помощью ключа, считываемого в процессе запуска или работы программы. Ключ хранится на внешнем USB устройстве. Требуется обеспечить защиту данной программы от несанкционированного копирования. В том случае, если производится попытка взлома данной программы без наличия лицензии, то данный метод позволит защитить программу от взлома и копирования в связи с отсутствием ключевой информации, так как пока программа не куплена у потенциального взломщика нет аппаратного ключа, то есть нет возможности просто дешифровать защищенные блоки. Взлом же криптографических алгоритмов с высокой криптостойкостью (например AES или DES) практически невозможен. Данный вид защит уязвим, если взломщик покупает лицензионную версию программы. В этом случае он может перехватить ключевую информацию и вручную дешифровать блоки кода или после дешифровки в процессе работы программы получить дамп памяти соответствующего процесса и на его основе сделать незаконную копию всей программы. Существуют различные приемы антидампинга, но учитывая, что взлом дорогостоящего программного обеспечения приносит высокую прибыль, данную задачу будут выполнять высококвалифицированные взломщики, которые с большой вероятностью найдут способ их обхода.
- Хранение части исполняемого кода. В этом случае в программу вводятся метки начала и окончания блоков, код которых находится во внешнем устройстве. В процессе работы программа вырабатывает запрос к внешнему устройству и выполняет в адресном пространстве процесса код, полученный от внешнего USB устройства. Недостатки данного метода аналогичны предыдущему, поскольку в любом случае дешифрованные блоки будут развернуты в оперативную память компьютера и могут быть подвергнуты дампингу.
- Исполнение защищаемых блоков вне программного обеспечения персонального компьютера. В нашем случае — это исполнение части защищаемой программы во внешнем устройстве и передача по каналу связи только результата выполнения этих операций. Рассмотрим данный вариант подробнее. При разработке программного обеспечения после завершения финального полнофункционального тестирования в программе выделяются часть блоков, которые шифруются. Эти блоки хранятся в составе программы в зашифрованном виде. Помимо этого, эти блоки отмечаются маркерами, и в программу вводится функционал для приема-передачи данных от USB устройства. Функции дешифровки и ключевая информация располагаются только во внешнем USB устройстве. Помимо этого, в состав аппаратной части защиты вводится Вычислитель, в задачу которого входит исполнение блоков кода, переданных от персонального компьютера. Таким образом, в системе отсутствует передача дешифрованных блоков (открытого текста), ключевой информации или какой-либо информации, по которой можно восстановить работу программы в целом. Этим мы избавляемся от недостатков двух предыдущих методов защиты, так как дамп памяти процесса не предоставит никакой информации, а перехват потока данных даст только результат работы защищенного блока. Для подобной реализации возможен только так называемый аппаратный взлом, то есть взлом и исследование алгоритма работы аппаратной части защиты, что намного сложнее, чем исследование программ и требует наличия специализированной аппаратуры и навыков схемотехники и исследования битовых потоков программирования микроконтроллеров или ПЛИС. Таким образом, стойкость данной системы защиты информации целиком определяется стойкостью к взлому аппаратной части защиты.
Достоинства разрабатываемой защиты
- Комплекс защиты является «навесным», то есть в исходный код программы не требуется внесение изменений.
- Максимально уменьшить себестоимость изготовления аппаратуры за счет использования менее мощных (и более дешевых) компонент и математически оптимизированных алгоритмов защиты.
- Таким образом в результате мы разрабатываем собственный, максимально оптимизированный, криптопроцессор.
- Реализация нескольких криптографических алгоритмов с возможностью пользовательского выбора.
- Стоимость опытного образца не превышает $150. Сегмент защищаемого ПО по стоимости $1K-$100K.
- Оптимальное решение проблемы несанкционированного использования дорогостоящего ПО.
- Постановка задачи
Задачей данной дипломной работы является разработать аппаратную часть комплекса защиты ПО, которая должна удовлетворять условиям таблицы 2.
Таблица 2.
Наименование параметра |
Значение |
1. Себестоимость разработки |
Не более 4 800 руб. ($150) |
2. Форм-фактор |
FLASH — устройство (USB - Flash-drive) |
3. Габариты |
10х50х10 мм |
4. Интерфейс связи с ПК |
USB 2.0 |
5. Задержка, вносимая в работу ПО |
Не более 300 мс |
Также в задачу входит реализация функционала, с помощью которого можно осуществлять обмен с ПК по интерфейсу USB, и дешифровать полученные блоки. В первоначальном варианте необходимо реализовать криптографический алгоритм DES.
Таким образом в данную задачу входят:
1) Аппаратная реализация,
2) Разработка ПО для микроконтрол
3) Разработка конструктива (разработка печатной платы)
Аппаратная реализация состоит из:
1) Разработки архитектуры на основе наложенных ограничений
2) Выбор и обоснование
3) Разработка схемотехники (принципиальной схемы устройства на основе архитектуры)
4) Моделирование схемы
5) Разработка печатной платы
В разработку ПО для микроконтроллера входит:
1) Разработка инициализации контроллера и периферии
2) Разработка взаимодействия с ПК по порту USB
3) Разработка модуля дешифрации получаемых блоков.
- Подбор и обоснование элементной базы
В связи с наложенными ограничениями на поставленную задачу выбор был остановлен на использовании микроконтроллера с интерфейсом USB. Существует достаточно большое количество подобных микроконтроллеров. Есть несколько фирм, которые их делают: Microchip, Atmel и Cyrrus Logic.
В таблице приведены некоторые из микроконтроллеров.
Таблица 3.
микроконтроллер |
габарит |
Разрядность АЛУ (bit) |
Ток (mA) |
Диапазон напряжения (V) |
Мощность (mW) |
цена |
ST7SCR1R4 |
TQFP 64 16x16x1.6 mm |
8 |
15 |
4.0 - 5.5 |
40 – 82.5 |
$12.7 |
AT90USB82 |
QFN32 5x5x0.8 - 5x5x1 mm TQFP32 9x9x1.2 mm |
32 |
25 - 30 |
2.7 - 5.5 |
67.5 - 165 |
$1.95, $ 2.04 |
PIC18F2450 |
QFN 28 6x6х0.8 - 6x6х1 mm |
8 |
250 - 300 |
2.0 - 5.5 |
500 - 1650 |
$3.32, $3.35 |
PIC18F4550 |
TQFP44 12x12x1.2mm QFN44 8x8x0.8 - 8x8x1 mm |
8 |
250 - 300 |
2.0- 5.5 |
500 - 1650 |
$4.38-4.64 |
ATmega16U4/ATmega32U4 |
QFN44 7x7x1 mm TQFP44 12x12x1.20mm |
32 |
18 |
2.7 - 5.5 |
48.6 - 99 |
$2.48, $3.57 |
ATmega32U6/AT90USB128 |
TQFP64 16x16x1.20 mm QFN64 9x9x0.8 – 9x9x1.0 mm |
32 |
30 |
2.7 - 5.5 |
81 - 165 |
$3.43, $3.37/ $2.7, $3.5 |
Сравнение микроконтроллеров:
- По параметрам (быстродействие, USB).
- По наличию доступных средств разработки.
- Поддержка со стороны фирмы-производителя.
- Популярность, то есть наличие открытых сообществ разработчиков.
После оценки существующих микроконтроллеров в качестве элементной базы был выбран микроконтроллер PIC18F4550 фирмы Microchip. Данный микроконтроллер обладает следующими характеристиками:
- содержит высокоскоростной интерфейс USB2.0 в составе периферии,
- имеет достаточное быстродействие
- малое время проектирования устройства на его основе
- возможность изменения микрокода программы на этапе выпуска изделий
- поддержка разработок со стороны фирмы Microchip, в том числе, в обучении
Описание микроконтроллера PIC18F4550
PIC18F4550 - 8-разрядный микроконтроллер со встроенной Flash-памятью и высокоскоростным USB-интерфейсом для экономичных (nanoWatt) и взаимосвязанных применений. Три последовательных порта - FS-USB (12 Мбит/сек), I2C, SPI (до 10 Мбит/сек), и асинхронный последовательный порт EUSART. Микросхема содержит 13-канальный 10-разрядный АЦП, два аналоговых компаратора, два 10-разрядных контроллера ШИМ, три 16-разрядных и один 8-разрядный таймер, сторожевой таймер, детектор напряжения и схему сброса по провалам питания. Модуль USB полностью интегрирован с ядром микроконтроллера, что позволило добиться максимальной пропускной способности при меньшей загрузке процессора. Производительность PIC18F4550 достигает 12 MIPS. В основе микроконтроллера лежит технология Enhanced FLASH (1 000 000 циклов перезаписи, 40 лет гарантированного хранения), что позволяет использовать их в устройствах, эксплуатируемых в жестких условиях и требующих периодического обмена информацией с ПК.