10 страница
Проблема аутентификации мастер - ключа может быть решена различными путями. Один из способов аутентификации показан на рис.7.2
Администратор, получив новое значение мастер - ключа Кн хост - компьютера, шифрует некоторое сообщение М ключом Кн Пара (криптограмма ЕКн(М), сообщение М) помещается в память компьютера. Всякий раз, когда требуется аутентификация мастер - ключа хост - компьютера, берется сообщение М из памяти и подается в криптографическую систему. Получаемая криптограмма сравнивается с криптограммой, хранящейся в памяти. Если они совпадают, считается, что данный ключ является правильным.
РЕЗУЛЬТАТ Рисунок 7.2 - Схема аутентификации мастер-ключа хост-компьютера |
Рабочие ключи (например, сеансовый) обычно создаются с помощью псевдослучайного генератора и могут храниться в незащищенном месте. Это возможно, поскольку такие ключи генерируются в форме соответствующих криптограмм, т.е. генератор ПСЧ выдает вместо ключа Ks его криптограмму Ekh(Ks), получаемую с помощью мастер - ключа хост - компьютера. Расшифровывание такой криптограммы выполняется только перед использованием ключа Ks.
Схема защиты рабочего (сеансового) ключа показана на рис.7.3. Чтобы зашифровать сообщение М ключом Ks, на соответствующие входы криптографической системы подается криптограмма Ekh(Ks) и сообщение М. Криптографическая система сначала восстанавливает ключ KS а затем шифрует сообщение М, используя открытую форму сеансового ключа Ks.
Рисунок 7.3 - Схема защиты ключа KS |
Таким образом, безопасность сеансовых ключей зависит от безопасности криптографической системы. Криптографический блок может быть
спроектирован как единая СБИС и помещен в физически защищенное место.
Очень важным условием безопасности информации является периодическое обновление ключевой информации в АСОИ. При этом должны переназначаться как рабочие ключи, так и мастер - ключи. В особо ответственных АСОИ обновление ключевой информации (сеансовых ключей) желательно делать ежедневно. Вопрос обновления ключевой информации тесно связан с третьим элементом управления ключами - распределением ключей.
7.3 Распределение ключей
Распределение ключей - самый ответственный процесс в управлении ключами. К нему предъявляются следующие требования:
• оперативность и точность распределения;
• скрытность распределяемых ключей.
Распределение ключей между пользователями компьютерной сети реализуется двумя способами:
1) использованием одного или нескольких центров распределения ключей;
2) прямым обменом сеансовыми ключами между пользователями сети.
Недостаток первого подхода состоит в том, что центру распределения
ключей известно, кому и какие ключи распределены, и это позволяет читать все сообщения, передаваемые по сети. Возможные злоупотребления существенно влияют на защиту. При втором подходе проблема состоит в том, чтобы надежно удостоверить подлинность субъектов сети.
В обоих случаях должна быть обеспечена подлинность сеанса связи. Это можно осуществить, используя механизм запроса-ответа или механизм отметки времени.
Механизм запроса-ответа заключается в следующем. Пользователь А включает в посылаемое сообщение (запрос) для пользователя В непредсказуемый элемент (например, случайное число). При ответе пользователь В должен выполнить некоторую операцию с этим элементом (например, добавить единицу), что невозможно осуществить заранее, поскольку неизвестно, какое случайное число придет в запросе. После получения результата действий пользователя В (ответ) пользователь А может быть уверен, что сеанс является подлинным.
Механизм отметки времени предполагает фиксацию времени для каждого сообщения. Это позволяет каждому субъекту сети определить, насколько старо пришедшее сообщение, и отвергнуть его, если появится сомнение в его подлинности. При использовании отметок времени необходимо установить допустимый временной интервал задержки.
В обоих случаях для защиты элемента контроля используют шифрование, чтобы быть уверенным, что ответ отправлен не злоумышленником и не изменен штемпель отметки времени.
Задача распределения ключей сводится к построению протокола распределения ключей, обеспечивающего:
• взаимное подтверждение подлинности участников сеанса;
• подтверждение достоверности сеанса механизмом запроса-ответа или отметки времени;
• использование минимального числа сообщений при обмене ключами;
• возможность исключения злоупотреблений со стороны центра распределения ключей (вплоть до отказа от него).
В основу решения задачи распределения ключей целесообразно положить принцип отделения процедуры подтверждения подлинности партнеров от процедуры собственно распределения ключей. Цель такого подхода состоит в создании метода, при котором после установления подлинности участники сами формируют сеансовый ключ без участия центра распределения ключей с тем, чтобы распределитель ключей не имел возможности выявить содержание сообщений.
Распределение ключей с участием центра распределения ключей
При распределении ключей между участниками предстоящего информационного обмена должна быть гарантирована подлинность сеанса связи. Для взаимной проверки подлинности партнеров приемлема модель рукопожатия: В этом случае ни один из участников не будет получать никакой секретной информации во время процедуры установления подлинности.
Взаимное установление подлинности гарантирует вызов нужного субъекта с высокой степенью уверенности, что связь установлена с требуемым адресатом и никаких попыток подмены не было. Реальная процедура организации соединения между участниками информационного обмена включает как этап распределения, так и этап подтверждения подлинности партнеров.
При включении в процесс распределения ключей центра распределения ключей (ЦРК) осуществляется его взаимодействие с одним или обоими участниками сеанса с целью распределения секретных или открытых ключей, предназначенных для использования в последующих сеансах связи.
Следующий этап-подтверждение подлинности участников - содержит обмен удостоверяющими сообщениями, чтобы иметь возможность выявить любую подмену или повтор одного из предыдущих вызовов.
Рассмотрим протоколы для симметричных криптосистем с секретными ключами и для асимметричных криптосистем с открытыми ключами. Вызывающий (исходный объект) обозначается через А, а вызываемый (объект назначения)-через В. Участники сеанса А и В имеют уникальные идентификаторы ldA и ldB соответственно.
7.4 Протокол аутентификации и распределения ключей для симметричных
криптосистем
Рассмотрим в качестве примера протокол аутентификации и распределения ключей Kerberos (по-русски - Цербер). Первоначально протокол Kerberos был разработан в Массачусетском технологическом институте (США) для проекта Athena. Протокол Kerberos спроектирован для работы в сетях TCP/IP и предполагает участие в аутентификации и распределении ключей третьей доверенной стороны. Kerberos обеспечивает надежную аутентификацию в сети, разрешая законному пользователю доступ к различным машинам в сети. Протокол Kerberos основывается на симметричной криптографии (реализован алгоритм DES, хотя возможно применение и других симметричных криптоалгоритмов). Kerberos разделяет отдельный секретный ключ с каждым субъектом сети. Знание такого секретного ключа равносильно Доказательству подлинности субъекта сети.
Основной протокол Kerberos является, вариантом протокола
аутентификации и распределения ключей Нидхема-Шредера. В основном протоколе Kerberos (версия 5) участвуют две взаимодействующие стороны А и В и доверенный сервер KS (Kerberos Server). Стороны А и В, каждая по отдельности, разделяют свой секретный ключ с сервером KS. Доверенный сервер KS выполняет роль центра распределения ключей ЦРК.
Пусть сторона А хочет получить сеансовый ключ для информационного обмена со стороной В.
Сторона А инициирует фазу распределения ключей, посылая по сети серверу KS идентификаторы ldA и ldB:
А -> KS: ldA, ldB. (7.1)
Сервер KS генерирует сообщение с временной отметкой Т, сроком действия L, случайным сеансовым ключом К и идентификатором ldA. Он шифрует это сообщение секретным ключом, который разделяет со стороной В.
Затем сервер KS берет временную отметку Т, срок действия L, сеансовый ключ К, идентификатор ldB стороны В и шифрует все это секретным ключом, который разделяет со стороной А. Оба эти зашифрованные сообщения он отправляет стороне А:
KS -> A: Ea(T, L, K, ldB), Eb(T, L, K, ldA). (7.2)
Сторона А расшифровывает первое сообщение своим секретным ключом, проверяет отметку времени Т, чтобы убедиться, что это сообщение не является повторением предыдущей процедуры распределения ключей.
Затем сторона А генерирует сообщение со своим идентификатором ldA и отметкой времени Т, шифрует его сеансовым ключом К и отправляет стороне В. Кроме того, А отправляет для В сообщение от KS, зашифрованное ключом стороны В:
A->B:Ek(Ma,T),Eb(T, L, К, ldA). (7.3)
Только сторона В может расшифровать сообщения (7.3). Сторона В получает отметку времени Т, срок действия L, сеансовый ключ К и идентификатор ldA. Затем сторона В расшифровывает сеансовым ключом К вторую часть сообщения (7.3). Совпадение значений Т и ldA в двух частях сообщения подтверждают подлинность А по отношению к В.
Для взаимного подтверждения подлинности сторона В создает сообщение, состоящее из отметки времени Т плюс 1, шифрует его ключом К и отправляет стороне А:
В->А:Ек(Т+1). (7.4)
Если после расшифрования сообщения (7.4) сторона А получает ожидаемый результат, она знает, что на другом конце линии связи находится действительно В.
Этот протокол успешно работает при условии, что часы каждого участника синхронизированы с часами сервера KS. Следует отметить, что в этом протоколе необходим обмен с KS для получения сеансового ключа каждый раз, когда А желает установить связь с В. Протокол обеспечивает надежное соединение объектов А и В при условии, что ни один из ключей не скомпрометирован и сервер KS защищен.
Система Kerberos обеспечивает защиту сети от несанкционированного доступа, базируясь исключительно на программных решениях, и предполагает многократное шифрование передаваемой по сети управляющей информации.
Система Kerberos имеет структуру типа клиент-сервер и состоит из клиентских частей С, установленных на все машины сети (рабочие станции пользователей и серверы), и Kerberos-сервера KS, располагающегося на каком- либо (не обязательно выделенном) компьютере.
Kerberos-сервер, в свою очередь, можно разделить на две. части: сервер идентификации AS (Authentication Server) и сервер выдачи разрешений TGS (Ticket Granting Server). Информационными ресурсами, необходимыми клиентам С, управляет сервер информационных ресурсов RS (рис.7.4).
-
KS AS TGS RS C 1 : C -»AS: 2 : AS -> C: 3 : C -> TGS: 4 : TGS -> C: 5 : C -» RS: 6 : RS-+C: |
- сервер идентификации
- сервер выдачи разрешений -сервер информационных ресурсов
- клиент системы Kerberos
- запрос разрешить обратиться к TGS
- разрешение обратиться к TGS
- запрос на допуск к RS
- разрешение на допуск к RS
- запрос на получение информационного ресурса от RS
- подтверждение подлинности сервера RS и предоставление информационного ресурса
Рисунок 7.4 - Схема и шаги протокола Kerberos
Область действия системы Kerberos распространяется на тот участок сети, все пользователи которого зарегистрированы под своими именами и паролями в базе данных Kerberos-сервера.
Укрупненно процесс идентификации и аутентификации пользователя в системе Kerberos можно описать следующим образом. Пользователь (клиент) С, желая получить доступ к ресурсу сети, направляет запрос серверу идентификации AS. Последний идентифицирует пользователя с помощью его имени и пароля и выдает разрешение на доступ к серверу выдачи разрешений TGS, который, в свою очередь, по запросу клиента С разрешает использование необходимых ресурсов сети с помощью целевого сервера информационных ресурсов RS.
Данная модель взаимодействия клиента с серверами может функционировать только при условии обеспечения конфиденциальности и целостности передаваемой управляющей информации. Без строгого
обеспечения информационной безопасности клиент не может отправлять серверам AS.TGS и RE свои запросы и получать разрешения на доступ к обслуживанию в сети. Чтобы избе жать возможности перехвата и несанкционированного использования информации, Kerberos применяет при передаче любой управляющей информации в сети сложную систему многократного шифрования с использованием комплекса секретных ключей (секретный ключ клиента, секретный ключ сервера, секретные сеансовые ключи, клиент-сервер).
7.5 Протокол для асимметричных криптосистем с использованием сертификатов открытых ключей
В этом протоколе используется идея сертификатов открытых ключей.
Сертификатом открытого ключа С называется сообщение ЦРК, удостоверяющее целостность некоторого открытого ключа объекта. Например, сертификат открытого ключа для пользователя A, обозначаемый СА, содержит отметку времени Т, идентификатор ldA и открытый ключ КА, зашифрованные секретным ключом ЦРК Кцрк, т. е. СА = Екцрк(Т, ldA, КА).
Отметка времени Т используется для подтверждения актуальности сертификата и тем самым предотвращает повторы прежних сертификатов, которые содержат открытые ключи и для которых соответствующие секретные ключи несостоятельны.
Секретный ключ кцРК известен только менеджеру ЦРК. Открытый ключ Кцрк известен участникам А и В. ЦРК поддерживает таблицу открытых ключей всех объектов сети, которые он обслуживает.
Вызывающий объект А инициирует стадию установления ключа, запрашивая у ЦРК сертификат своего открытого ключа и открытого ключа участника В:
А -> ЦРК: ldA,lde /'Вышлите сертификаты ключей А и В'". (7.5)
Здесь ldA и ldB- уникальные идентификаторы соответственно участников А и В.
Менеджер ЦРК отвечает сообщением
ЦРК-> А: ЕкцрК(Т, ldA. Кд>„ ЕкцрК(Т, lde, Kb). (7.6)
Участник А, используя открытый ключ ЦРК КцРК, расшифровывает ответ ЦРК, проверяет оба сертификата. Идентификатор ldB убеждает А, что личность вызываемого участника правильно зафиксирована в ЦРК и Кв - действительно открытый ключ участника B, поскольку оба зашифрованы ключом кдрК.
Хотя открытые ключи предполагаются известными всем, посредничество ЦРК позволяет подтвердить их целостность. Без такого посредничества злоумышленник может снабдить А своим открытым ключом, который А будет считать ключом участника В. Затем злоумышленник может подменить собой В и установить связь с А, и его никто не сможет выявить. Следующий шаг протокола включает установление связи А с В:
А->В:Са1Екд(Т),Екв(п). (7.7)
Здесь СА-сертификат открытого ключа пользователя А; Екд(Т)-отметка времени, зашифрованная секретным ключом участника А и являющаяся подписью участника А, поскольку никто другой не может создать такую подпись; г - случайное число, генерируемое А и используемое для обмена с В в ходе процедуры подлинности.
Если сертификат СА и подпись А верны, то участник В уверен, что сообщение пришло от А. Часть сообщения Екв(г,) может расшифровать только В, поскольку никто другой не знает секретного ключа кв, соответствующего открытому ключу Кв. Участник В расшифровывает значение числа г, и, чтобы подтвердить свою подлинность, посылает участнику А сообщение
В->Ека(г,). (7.8)
Участник А восстанавливает значение г, расшифровывая это сообщение с использованием своего секретного ключа кА. Если это ожидаемое значение г-,, то А получает подтверждение, что вызываемый участник действительно В.
Протокол, основанный на симметричном шифровании, функционирует быстрее, чем протокол, основанный на криптосистемах с открытыми ключами. Однако способность систем с открытыми ключами генерировать цифровые подписи, обеспечивающие различные функции защиты, компенсирует избыточность требуемых вычислений.
Прямой обмен ключами между пользователями
При использовании для информационного обмена криптосистемы с симметричным секретным ключом два пользователя, желающие обменяться криптографически защищенной информацией, должны обладать общим секретным ключом. Пользователи должны обменяться общим ключом по каналу связи безопасным образом. Если пользователи меняют ключ достаточно часто, то доставка ключа превращается в серьезную проблему.
Для решения этой проблемы можно применить два способа:
1) использование криптосистемы с открытым ключом для шифрования и передачи секретного ключа симметричной криптосистемы;
2) использование системы открытого распределения ключей Диффи- Хеллмана.
Второй способ основан на применении системы открытого распределения ключей. Эта система позволяет пользователям обмениваться ключами по незащищенным каналам связи. Интересно отметить, что система открытого распределения ключей базируется на тех же принципах, что и система шифрования с открытыми ключами.
Алгоритм открытого распределения ключей Диффи-Хеллмана
Алгоритм Диффи-Хеллмана был первым алгоритмом с открытыми ключами (предложен в 1976 г.). Его безопасность обусловлена трудностью вычисления дискретных логарифмов в конечном поле, в отличие от легкости дискретного возведения в степень в том же конечном поле.
Предположим, что два пользователя А и В хотят организовать защищенный коммуникационный канал.
1. Обе стороны заранее уславливаются о модуле N (N должен быть
простым числом) и примитивном элементе gеZN, (1<g<N-1), который образует все ненулевые элементы множества ZN, т.е. {g.g2........ gN-1=i}=zN-{0}.
Эти два целых числа N и g могут не храниться в секрете. Как правило, эти значения являются общими для всех пользователей системы.
2. Затем пользователи А и В независимо друг от друга выбирают собственные секретные ключи кА и кв (кА и кв-случайные большие целые числа, которые хранятся пользователями А и В в секрете).
3. Далее пользователь А вычисляет открытый ключ
уА = gkA(mod N), а пользователь В - открытый ключ
Ув = gkB(mod N).
4. Затем стороны А и В обмениваются вычисленными значениями открытых ключей уА и ув по незащищенному каналу. (Мы считаем, что все данные, передаваемые по незащищенному каналу связи, могут быть перехвачены злоумышленником.)
5. Далее пользователи А и В вычисляют общий секретный ключ, используя следующие сравнения:
пользователь А: К = (ув)ь= (g^)^ (mod N);
пользователь В: К'= (уА)кв = (gb )ks(mod N).
При этом К=К', так как (g^)^ (дка)ь (mod N).
Схема реализации алгоритма Диффи-Хеллмана показана на рис. 7.5.
Ключ К может использоваться в качестве общего секретного ключа (ключа шифрования ключей) в симметричной криптосистеме.
Кроме того, обе стороны А и В могут шифровать сообщения, используя следующее преобразование шифрования (типа RSA): C = EK(M) = Mk(modN).
К = К'= g^B(mod N) Рисунок 7.5 - Схема реализации алгоритма Диффи-Хеллмана |
Для выполнения расшифрования получатель сначала находит ключ расшифрования К* с помощью сравнения K*K*=1(modN-1), а затем восстанавливает сообщение М = Dk (С) = CK,(mod N).
Пример. Допустим, модуль N=47 а примитивный элемент д = 23. Предположим, что пользователи А и В выбрали свои секретные ключи: kA=12(mod47) и kB=33(mod47).
Для того чтобы иметь общий секретный ключ К, они вычисляют сначала значения частных открытых ключей: yA = gk‘=2312 = 27(mod47), yB = gkB=2 3 33=33(mod47).
После того, как пользователи А и В обменяются своими значениями уА и ув, они вычисляют общий секретный ключ
К = (ys)kA = (уа)кв = ЗЗ12 = 27м = 2312”33 = 25 (mod 47).
Кроме того, они находят секретный ключ расшифрования, используя следующее сравнение:
K*K*=1(modN-1), откуда К*=35 (mod 46).
Теперь, если сообщение М =16, то криптограмма
K 25
C=M =16 = 21(mod47}. Получатель восстанавливает сообщение так:
M = CK' = 2139=16(mod47).
Злоумышленник, перехватив значения N, g, уА и ув, тоже хотел бы определить значение ключа К. Очевидный путь для решения этой задачи состоит в вычислении такого значения kA no N, g, уА, что gkAmodN = yA (поскольку в этом случае, вычислив кА, можно найти K = (yB)kAmodN). Однако нахождение kA no N,g и уА-задача нахождения дискретного логарифма в конечном поле, которая считается неразрешимой.
Выбор значений N ид может иметь существенное влияние на безопасность этой системы. Модуль N должен быть большим и простым числом. Число (N-1)/2 также должно быть простым числом. Число g желательно выбирать таким, чтобы оно было примитивным элементом множества ZN. (В принципе достаточно, чтобы число g генерировало большую подгруппу мультипликативной группы по mod N).
Алгоритм открытого распределения ключей Диффи-Хеллмана позволяет обойтись без защищенного канала для передачи ключей. Однако, работая с этим алгоритмом, необходимо иметь гарантию того, что пользователь А получил открытый ключ именно от пользователя В, и наоборот. Эта проблема решается с помощью электронной подписи, которой подписываются сообщения об открытом ключе.
Метод Диффи-Хеллмана дает возможность шифровать данные при каждом сеансе связи на новых ключах. Это позволяет не хранить секреты на дискетах или других носителях. Не следует забывать, что любое хранение секретов повышает вероятность попадания их в руки конкурентов или противника.
Преимущество метода Диффи-Хеллмана по сравнению с методом RSA заключается в том, что формирование общего секретного ключа происходит в сотни раз быстрее. В системе RSA генерация новых секретных и открытых ключей основана на генерации новых простых чисел, что занимает много времени.
Протокол SKIP управления криптоключами
Протокол SKIP (Simple Key management for Internet Protocol) может использоваться в качестве интегрирующей среды и системы управления криптоключами.
Протокол SKIP базируется на криптографии открытых ключей Диффи- Хеллмана и обладает рядом достоинств:
• обеспечивает высокую степень защиты информации;
• обеспечивает быструю смену ключей;
• поддерживает групповые рассылки защищенных сообщений;
• допускает модульную замену систем шифрования;
• вносит минимальную избыточность.
Концепция SKIP-протокола основана на организации множества двухточечных обменов (по алгоритму Диффи-Хеллмана) в компьютерной сети.
• Узел I имеет секретный ключ i(i=k1) и сертифицированный открытый ключ g'mod N.
• Подпись сертификата открытого ключа производится при помощи надежного алгоритма (ГОСТ, DSA и др.). Открытые ключи свободно распространяются центром распределения ключей из общей базы данных.
• Для каждой пары узлов I, J вычисляется совместно используемый секрет (типичная длина 1024 бита): giJ mod N.
• Разделяемый ключ Ку вычисляется из этого секрета путем уменьшения его до согласованной в рамках протокола длины 64...128 бит.
• Узел вычисляет ключ Ку (используемый как ключ шифрования ключей) для относительно длительного применения и размещает его в защищенной памяти.
Следует отметить, что если сеть содержит п узлов, то в каждом узле должно храниться (п-1) ключей, используемых исключительно для организации связи с соответствующими узлами.
7.6 Контрольные вопросы
1. Чем отличаются симметричные криптосистемы от асимметричных?
2. Какие основные функции включает управление ключами?
3. Генерация ключей для асимметричных криптосистем с открытыми ключами много сложнее, потому что эти ключи должны обладать определенными математическими свойствами, какими?
4. Перечислите носители ключевой информации.
5. Понятие концепции иерархии ключей.
6. Для чего нужен мастер-ключ?
7. Почему процесс распределения ключей самый ответственный в управлении ключами, какие требования к нему предъявляются?
8. Какие протоколы аутентификации и распределения ключей для симметричных криптосистем вы можете назвать?
9. Опишите суть алгоритма Диффи-Хеллмана, чем обусловлена его безопасность?
8. ЗАЩИТА ПРОГРАММНЫХ СРЕДСТВ ОТ ИССЛЕДОВАНИЯ
Изучение логики работы программы может выполняться в одном из двух режимов: статическом и динамическом. Сущность статического режима заключается в изучении исходного текста программы. Для получения листингов исходного текста выполняемый программный модуль дизассемблируют, то есть получают из программы на машинном языке программу на языке Ассемблер.
Динамический режим изучения алгоритма программы предполагает выполнение трассировки программы. Под трассировкой программы понимается выполнение программы на ЭВМ с использованием специальных средств, позволяющих выполнять программу в пошаговом режиме, получать доступ к регистрам, областям памяти, производить остановку программы по определенным адресам и т. д. В динамическом режиме изучение алгоритма работы программы осуществляется либо в процессе трассировки, либо по данным трассировки, которые записаны в запоминающем устройстве.
Средства противодействия дизассемблированию не могут защитить программу от трассировки и наоборот: программы, защищенные только от трассировки, могут быть дизассемблированы. Поэтому для защиты программ от изучения необходимо иметь средства противодействия как дизассемблированию, так и трассировке.
Существует несколько методов противодействия дизассемблированию:
• шифрование;
• архивация:
• использование самогенерирующих кодов;
• «обман» дизассемблера.
Архивацию можно рассматривать как простейшее шифрование. Причем архивация может быть объединена с шифрованием. Комбинация таких методов
позволяет получать надежно закрытые компактные программы.
Зашифрованную программу невозможно дизассемблировать без расшифрования. Зашифрование (расшифрование) программ может
осуществляться аппаратными средствами или отдельными программами. Такое шифрование используется перед передачей программы по каналам связи или при хранении ее на ВЗУ. Дизассемблирование программ в этом случае возможно только при получении доступа к расшифрованной программе, находящейся в ОП перед ее выполнением (если считается, что преодолеть криптографическую защиту невозможно).
Другой подход к защите от дизассемблирования связан с совмещением процесса расшифрования с процессом выполнения программ. Если расшифрование всей программы осуществляется блоком, получающим управление первым, то такую программу расшифровать довольно просто. Гораздо сложнее расшифровать и дизассемблировать программу, которая поэтапно расшифровывает информацию, и этапы разнесены по ходу выполнения программы. Задача становится еще более сложной, если процесс расшифрования разнесен по тексту программы.
Сущность метода, основанного на использовании самогенерируемых кодов, заключается в том, что исполняемые коды про граммы получаются самой программой в процессе ее выполнения. Самогенерируемые коды получаются в результате определенных действий над специально выбранным массивом данных. В качестве исходных данных могут использоваться исполняемые коды самой программы или специально подготовленный массив данных. Данный метод показал свою высокую эффективность, но он сложен в реализации.
Под «обманом» дизассемблера понимают такой стиль программирования, который вызывает нарушение правильной работы стандартного дизассемблера за счет нестандартных приемов использования отдельных команд, нарушения общепринятых соглашений. «Обман» дизассемблера осуществляется
Дата добавления: 2016-02-16; просмотров: 1555;