Разработка аппаратной части комплекса защиты коммерческого ПО от несанкционированного копирования

Автор работы: Пользователь скрыл имя, 01 Февраля 2014 в 16:00, дипломная работа

Краткое описание

С конца 80-ых, начала 90-ых годов проблемы связанные с защитой информации беспокоят как специалистов в области компьютерной безопасности, так и многочисленных пользователей персональных компьютеров. Это связано с глубокими изменениями, вносимыми компьютерной технологией в нашу жизнь. Изменился сам подход к понятию «информация». Этот термин сейчас больше используется для обозначения специального товара, который можно купить, продать, обменять на что-то другое и т.д. При этом стоимость информации часто превосходит стоимость самой вычислительной системы, в рамках которой она хранится, в десятки, а то и в сотни раз.

Прикрепленные файлы: 1 файл

Д ЗАщита по от копирования.doc

— 1.14 Мб (Скачать документ)

    Защищенная программа  может исполняться следующими  способами:

- последовательно


 

 

Рис.10. Последовательное исполнение защищенной программы


- прямой переход

 

 

 

 

 

 

 

 

Рис.11. Прямой переход


 

- реверс 

 

 

 

 

 

 

Рис.12. Реверс

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

 

 

 

 

    1.     Аппаратные ключи

    Это программно-аппаратные комплексы защиты, просто они более известны как «аппаратные (электронные) ключи защиты».

    Этот класс систем защиты ПО в последнее время приобретает все большую популярность среди производителей программного обеспечения.

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

    Соответственно аппаратные ключи защиты состоят из собственно ключа, подключаемого в один из стандартных портов ПК (COMM, LPT, PCMCIA, USB и т.д.) или слот расширения материнской платы, и программного обеспечения (драйверов для различных операционных систем и модуля, встраиваемого в защищаемую программу).

    Аппаратная часть таких ключей выполнена на микросхемах FLASH-памяти, на PIC-котроллерах или на заказных ASIC-чипах. Эта элементная база отличается очень низким энергопотреблением.

    Рассмотрим аппаратные реализации ключей защиты.

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

    Ключи, сделанные на основе PIC или ASIC-чипов, имеют на порядок большую устойчивость к взлому и “прозрачность” для штатных протоколов обмена. Обе эти микросхемы представляют собой контроллеры, содержащие в себе процессор, некоторое количество оперативной памяти, FLASH-память команд и память для хранения микропрограммы. Микропрограмма и внутренняя память обычно защищается от внешнего считывания, так что сделать аппаратную копию ключа довольно проблематично. Такие комплексы содержат в аппаратной части не только ключ дешифрации, но и блоки шифрации/дешифрации данных, таким образом при работе защиты в электронный ключ передаются блоки зашифрованной информации, а принимаются оттуда расшифрованные данные. В системах этого типа достаточно сложно перехватить ключ дешифрации, так как все процедуры выполняются аппаратной частью, но остается возможность принудительного сохранения защищенной программы в открытом виде после отработки системы защиты. Кроме того, к ним применимы методы криптоанализа.

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

    Программная часть защитного комплекса:

    На стороне персонального компьютера навесная защита разделяется на двоичный код, внедряемый в защищаемый файл (файлы) и модуль ядра операционной (драйвер) взаимодействующий с аппаратной частью комплекса.

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

    Драйвер необходим для взаимодействия с устройством, предоставления интерфейса взаимодействия на уровень приложений и реализации защищенного обмена с аппаратурой.

 

 

 

 

 

 

 

 

 

 

  1. Описание системы

 

    1.    Описание идеи

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

Программно-аппаратный комплекс защиты программного обеспечения  физически и логически разделен на две составляющих, которые могу разрабатываться и использоваться как совместно, так и, с небольшими изменениями, как отдельные продукты: внешнее устройство, осуществляющее выполнение основных алгоритмов защиты информации и программного обеспечения персонального компьютера, реализующего связь с аппаратной частью защиты и шифрование исполняемого кода. Аппаратное устройство подключается и взаимодействует с персональным компьютером посредством интерфейса USB 2.0. Это последовательный, высокоскоростной аппаратный интерфейс, рассчитанный на скорость обмена до 480 Мбит/сек. И присутствующий практически на любом персональном компьютере.    

Мы совмещаем аппаратную защиту и методику шифрования исполняемого кода. Как и в случае шифрования исполняемого кода в него вносятся маркеры начала и конца защищаемых блоков. Часть кода, находящегося между маркерами, шифруют ключом. Далее эти зашифрованные участки кода переносятся во внешнее устройство. Там же хранится ключевая информация, необходимая для дешифровки. В исполняемый код вместо защищаемых блоков вносят «мусор» такого же объема.

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

Абстрактно, внешнее устройство может  выполнять различные функции, связанные с защитой информации:

  1. Хранение ключевой информации. Это наиболее простой в реализации метод защиты. В общем случае информация, расположенная на персональном компьютере, кодируется и для декодирования используется ключ, хранимый на внешнем носителе. Подобные системы достаточно просты в реализации, но обладает недостаточной надежностью. Предположим, что таким методом защищена программа. Внутри программы существуют зашифрованные блоки, которые дешифруются с помощью ключа, считываемого в процессе запуска или работы программы. Ключ хранится на внешнем USB устройстве. Требуется обеспечить защиту данной программы от несанкционированного копирования. В том случае, если производится попытка взлома данной программы без наличия лицензии, то данный метод позволит защитить программу от взлома и копирования в связи с отсутствием ключевой информации, так как пока программа не куплена у потенциального взломщика нет аппаратного ключа, то есть нет возможности просто дешифровать защищенные блоки. Взлом же криптографических алгоритмов с высокой криптостойкостью (например AES или DES) практически невозможен. Данный вид защит уязвим, если взломщик покупает лицензионную версию программы. В этом случае он может перехватить ключевую информацию и вручную дешифровать блоки кода или после дешифровки в процессе работы программы получить дамп памяти соответствующего процесса и на его основе сделать незаконную копию всей программы. Существуют различные приемы антидампинга, но учитывая, что взлом дорогостоящего программного обеспечения приносит высокую прибыль, данную задачу будут выполнять высококвалифицированные взломщики, которые с большой вероятностью найдут способ их обхода.
  2. Хранение части исполняемого кода. В этом случае в программу вводятся метки начала и окончания блоков, код которых находится во внешнем устройстве. В процессе работы программа вырабатывает запрос к внешнему устройству и выполняет в адресном пространстве процесса код, полученный от внешнего USB устройства. Недостатки данного метода аналогичны предыдущему, поскольку в любом случае дешифрованные блоки будут развернуты в оперативную память компьютера и могут быть подвергнуты дампингу.
  3. Исполнение защищаемых блоков вне программного обеспечения персонального компьютера. В нашем случае — это исполнение части защищаемой программы во внешнем устройстве и передача по каналу связи только результата выполнения этих операций. Рассмотрим данный вариант подробнее. При разработке программного обеспечения после завершения финального полнофункционального тестирования в программе выделяются часть блоков, которые шифруются. Эти блоки хранятся в составе программы в зашифрованном виде. Помимо этого, эти блоки отмечаются маркерами, и в программу вводится функционал для приема-передачи данных от USB устройства. Функции дешифровки и ключевая информация располагаются только во внешнем USB устройстве. Помимо этого, в состав аппаратной части защиты вводится Вычислитель, в задачу которого входит исполнение блоков кода, переданных от персонального компьютера. Таким образом, в системе отсутствует передача дешифрованных блоков (открытого текста), ключевой информации или какой-либо информации, по которой можно восстановить работу программы в целом. Этим мы избавляемся от недостатков двух предыдущих методов защиты, так как дамп памяти процесса не предоставит никакой информации, а перехват потока данных даст только результат работы защищенного блока. Для подобной реализации возможен только так называемый аппаратный взлом, то есть взлом и исследование алгоритма работы аппаратной части защиты, что намного сложнее, чем исследование программ и требует наличия специализированной аппаратуры и навыков схемотехники и исследования битовых потоков программирования микроконтроллеров или ПЛИС. Таким образом, стойкость данной системы защиты информации целиком определяется стойкостью к взлому аппаратной части защиты.

 

 

Достоинства разрабатываемой защиты

  1. Комплекс защиты является «навесным», то есть в исходный код программы не требуется внесение изменений.
  2. Максимально уменьшить себестоимость изготовления аппаратуры за счет использования менее мощных (и более дешевых) компонент и математически оптимизированных алгоритмов защиты.
  3. Таким образом в результате мы разрабатываем собственный, максимально оптимизированный, криптопроцессор.
  4. Реализация нескольких криптографических алгоритмов с возможностью пользовательского выбора. 
  5. Стоимость опытного образца не превышает $150. Сегмент защищаемого ПО по стоимости $1K-$100K.
  6. Оптимальное решение проблемы несанкционированного использования дорогостоящего ПО.

 

 

 

    1.     Постановка задачи

 

     Задачей данной дипломной работы является разработать аппаратную часть комплекса защиты ПО, которая должна удовлетворять условиям таблицы 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) Разработка модуля дешифрации получаемых блоков.

 

 

 

    1.     Подбор и обоснование элементной базы

    В связи с наложенными ограничениями на поставленную задачу выбор был остановлен на использовании микроконтроллера с интерфейсом 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


 

    Сравнение микроконтроллеров:

  1. По параметрам (быстродействие, USB).
  2. По наличию доступных средств разработки.
  3. Поддержка со стороны фирмы-производителя.
  4. Популярность, то есть наличие открытых сообществ разработчиков.

После оценки существующих микроконтроллеров  в качестве элементной базы был выбран микроконтроллер 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 лет гарантированного хранения), что позволяет использовать их в устройствах, эксплуатируемых в жестких условиях и требующих периодического обмена информацией с ПК.

Информация о работе Разработка аппаратной части комплекса защиты коммерческого ПО от несанкционированного копирования