Автор работы: Пользователь скрыл имя, 01 Мая 2013 в 13:20, реферат
Локальная программная защита
Требование ввода серийного номера (ключа) при установке/запуске. История этого метода началась тогда, когда приложения распространялись только на физических носителях (к примеру, компакт-дисках). На коробке с диском был напечатан серийный номер, подходящий только к данной копии программы.
Первое направление защиты, как правило, реализуется значительно легче, чем второе, поэтому будет приведен лишь краткий обзор данного направления. При реализации защиты программ от дизассемблирования можно применять различные приемы.
Среди них наиболее часто используемым и эффективным приемом является зашифровка и \ или запаковка отдельных участков исходного кода или всего кода целиком, при этом необходимо позаботиться о распаковке \ расшифровке программы на точке входа. Таким образом при просмотре исполняемого машинного кода исполняемого файла вместо рабочего кода программы будет отображен лишь бессмысленный набор операций. При реализации защиты от дизассемблирования используется также множество приемов, которые реализуются с целью запутать потенциального взломщика. Можно навести несколько примеров такого вида приемов:
- увеличение исходного кода
программы добавлением
- замена местами адресов
Для достижения наиболее надежной и эффективной защиты используется комбинация нескольких приемов.
Защита от отладки
Для защиты программы от трассировки отладчиком также существует несколько способов. Наиболее распространенными являются два из них.
Первый способ
Идея:
При трассировке программы команды выполняются по команде человека, поэтому длительность выполнения операций(время от начала одной операции до начала следующей) изменяется. Поэтому в программу можно включать точки для проверки времени выполнения одинаковых участков кода программы. Если время выполнениявыполнения одинаковых участков различна, то это означает, что программа трассируется в данный момент, необходимо выйти из программы, иначе - продолжить выполнение.
Алгоритм реализации:
1. Запомнить текущее время;
2. Выполнить контрольный участок кода;
3. Запомнить текущее время и разность текущего и предыдущего запомненного времени;
4. Выполнить контрольный участок кода повторно;
5. Сравнить разность текущего времени и предыдущего запомненного текущего времени с предыдущей запомненной разностью;
6. Если разности совпадают, продолжить выполнение, иначе – выйти из программы.
Второй способ
Идея:
Большинство отладчиков используют для
пошаговой трассировки
Алгоритм реализации:
1. Найти адрес обработчика
2. По адресу обработчика
3. Найти адрес обработчика
4. По адресу обработчика
Пример реализации:
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|, где К – количество букв в алфавите. Если гамма> длины текста, взломать шифр нельзя.