Защита программ и данных от модификации и копирования. Защита от перехвата информации с помощью шифрования

Автор работы: Пользователь скрыл имя, 01 Мая 2013 в 13:20, реферат

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

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

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

реферат.docx

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

Защита от дизассемблирования

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

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

 

- увеличение исходного кода  программы добавлением множества  «бессмысленных» операций, а рабочий  участок программы записать в  определенное место этого множества;

- замена местами адресов обработчиков (векторов) прерываний, например, поменять местами вектор прерывания видео сервиса (INT 10h) с вектором прерываниясервиса DOS (INT 21h), после такой замены для вызова из программы какой-либо функции прерывания INT 21h необходимо пользоваться вызовом прерывания INT 10h.

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

Защита от отладки

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

Первый способ

Идея:

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

Алгоритм реализации:

1. Запомнить текущее время;

2. Выполнить контрольный участок кода;

3. Запомнить текущее время и разность текущего и предыдущего запомненного времени;

4. Выполнить контрольный участок кода повторно;

5. Сравнить разность текущего времени и предыдущего запомненного текущего времени с предыдущей запомненной разностью;

6. Если разности совпадают, продолжить выполнение, иначе – выйти из программы.

Второй способ

Идея:

Большинство отладчиков используют для  пошаговой трассировки программы  специальные прерывания процессора. Такими прерываниями есть INT 1h и INT 3h. Ври включенном флаге TF=1 прерывание INT 1h вызывается автоматически после вызова каждой команды. Таким образом отладчик изменяет обработчик прерывания INT 1hдля реализации алгоритма пошаговой отладки (для отладчика Turbo Debugger по нажатии клавиши F7). Вызов прерывания INT 3h занимает всего один байт, поэтому отладчики используют его для задания точки останова программы. Команда, на которой должна быть приостановлена работа программы сохраняется и заменяется вызовом прерывания INT 3h, таким образом коды последующих команд не изменяются при вставке однобайтового вызова. Отладчик таким же образом отладчик заменяет обработчик прерывания INT 3h для реализации алгоритма перехода к точке останова(для отладчика Turbo Debugger по нажатии клавиши F4). Таким образом для реализации защиты от отладчика необходимо во время работы программы заменить обработчики прерываний INT 1h и INT 3h на вызов команды IRET(машинный код команды IRET - 0CFh). Как известно, таблица векторов(адресов обработчиков) прерываний находится по адресу 0000:0000. Вектора прерываний в таблице размещены последовательно начиная с прерывания INT 00h. Размер каждого вектора прерывания 4 байта – первые 2 байта означают сегмент, а вторые - смещение . таким образом адрес вектора прерывания INT 03h будет равен [0000:4*03h] – 2 байта сегмента, [0000:4*03h+2] - 2 байта смещения.

Алгоритм реализации:

1. Найти адрес обработчика прерывания INT 1h;

2. По адресу обработчика прерывания INT 1h записать число 0CFh (команда IRET);

3. Найти адрес обработчика прерывания INT 3h;

4. По адресу обработчика прерывания INT 3h записать число.

Пример реализации:

xor ax,ax

mov es,ax

mov bx,es:[4*3h]

mov es,es:[4*3h+2]

mov al,es:[bx]

mov ah,0CFh

mov es:[bx],ah

 

xor ax,ax

mov es,ax

mov bx,es:[4*1h]

mov es,es:[4*1h+2]

mov al,es:[bx]

mov ah,0CFh

mov es:[bx],ah


 

 

 

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

Сущность криптографии заключается  в следующем.

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

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

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

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

Шифрование может быть симметричным и асимметричным. Симметричное основывается на использовании одного и того же секретного ключа для шифрования и дешифрования. Асимметричное характеризуется тем, что для шифрования используется один ключ, являющийся общедоступным, а для дешифрования — другой, являющийся секретным, при этом знание общедоступного ключа не позволяет определить секретный ключ.

Наряду с шифрованием  используются и другие механизмы  безопасности:

  • цифровая (электронная) подпись;
  • контроль доступа;
  • обеспечение целостности данных;
  • обеспечение аутентификации;
  • постановка графика;
  • управление маршрутизацией;
  • арбитраж или освидетельствование.

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

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

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

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

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

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

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

В АИТ при организации  безопасности данных используется комбинация нескольких механизмов.

Метод Винижера

 

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

Пример.

Возьмем латинский алфавит  A  B C D E F…L… R   S   V … X   Y   Z

       0   1  2 3 4 5  11  17 18 19      23 24 25 

Зашифруем CAREFUL – осторожный.

В качестве ключа возьмем P I E S – 15 8 4 18

 

C

A

R

E

F

U

L

2

0

17

4

5

20

11

P

I

E

S

P

I

E

15

8

4

18

15

8

4

- зашифрованное сообщение

17

8

21

22

20

2

15


Расшифруем полученное сообщение.

 

17

8

21

22

20

2

15

P

I

E

S

P

I

E

15

8

4

18

15

8

4

2

0

17

4

5

20

11

C

A

R

E

F

U

L


Шифр Винижера с ключом в 1-ой букве – шифр Цезаря.

Шифр с неограниченным ключом– шифр Вернама.

 

 

Шифрование с гаммированием

 

Цифровой эквивалент сообщения  складывается с какой-то последовательностью  чисел, которая является случайной. Эта последовательность называется гаммой, затем складываются по |K|, где К – количество букв в алфавите. Если гамма> длины текста, взломать шифр нельзя.

Информация о работе Защита программ и данных от модификации и копирования. Защита от перехвата информации с помощью шифрования