МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Защита информации в системах дистанционного обучения с монопольным доступом

    по модулю p. Это удобнее в том смысле, что в первом случае текст (или

    значение хэш-функции) необходимо разбивать на блоки той же длины, что и

    число yk (mod p). Во втором случае этого не требуется и можно обрабатывать

    блоки текста заранее заданной фиксированной длины (меньшей, чем длина числа

    p).

    2.2.2.2. Криптосистема Ривеста-Шамира-Эйделмана

    Система Ривеста-Шамира-Эйделмана (Rivest, Shamir, Adlеman – RSA)

    представляет собой криптосистему, стойкость которой основана на сложности

    решения задачи разложения числа на простые сомножители. Кратко алгоритм

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

    Пользователь A выбирает пару различных простых чисел pA и qA ,

    вычисляет nA = pAqA и выбирает число dA, такое что НОД(dA, j(nA)) = 1, где

    j(n) – функция Эйлера (количество чисел, меньших n и взаимно простых с n.

    Если n = pq, где p и q – простые числа, то j(n) = (p - 1)(q - 1)). Затем он

    вычисляет величину eA, такую, что dAЧeA = 1 (mod j(nA)), и размещает в

    общедоступной справочной таблице пару (eA, nA), являющуюся открытым ключом

    пользователя A.

    Теперь пользователь B, желая передать сообщение пользователю A,

    представляет исходный текст

    x = (x0, x1, ..., xn–1), x О Zn , 0 Ј i < n,

    по основанию nA:

    N = c0+c1 nA+....

    Пользователь В зашифровывает текст при передаче его пользователю А,

    применяя к коэффициентам сi отображение [pic]:

    [pic],

    получая зашифрованное сообщение N'. В силу выбора чисел dA и eA,

    отображение [pic]является взаимно однозначным, и обратным к нему будет

    отображение

    [pic]

    Пользователь А производит расшифрование полученного сообщения N', применяя

    [pic].

    Для того чтобы найти отображение [pic], обратное по отношению к [pic],

    требуется знание множителей nA = pAqA. Время выполнения наилучших из

    известных алгоритмов разложения при n > 10145 на сегодняшний день выходит

    за пределы современных технологических возможностей.

    2.2.2.3. Криптосистема, основанная на эллиптических кривых

    Рассмотренная выше криптосистема Эль-Гамаля основана на том, что

    проблема логарифмирования в конечном простом поле является сложной с

    вычислительной точки зрения. Однако, конечные поля являются не

    единственными алгебраическими структурами, в которых может быть поставлена

    задача вычисления дискретного логарифма. В 1985 году Коблиц и Миллер

    независимо друг от друга предложили использовать для построения

    криптосистем алгебраические структуры, определенные на множестве точек на

    эллиптических кривых.

    2.2.3. Адаптированный метод асимметричного шифрования

    Рассмотренные ранее методы построения асимметричных алгоритмов

    криптопреобразований хоть и интересны, но не достаточно хорошо подходят для

    решаемой задачи. Можно было бы взять реализацию уже готового асимметричного

    алгоритма, или согласно теоретическому описанию, реализовать его

    самостоятельно. Но, во-первых, здесь встает вопрос о лицензировании и

    использовании алгоритмов шифрования. Во-вторых, использование стойких

    криптоалгоритмов связано с правовой базой, касаться которой бы не хотелось.

    Сам по себе стойкий алгоритм шифрования здесь не нужен. Он просто излишен и

    создаст лишь дополнительное замедление работы программы при

    шифровании/расшифровании данных. Также планируется выполнять код

    шифрования/расшифрования в виртуальной машине, из чего вытекают большие

    трудности реализации такой системы, если использовать сложные алгоритмы

    шифрования. Виртуальная машина дает ряд преимуществ, например, делает более

    труднодоступной возможность проведения некоторых операций. В качестве

    примера можно привести проверку алгоритмом допустимого срока своего

    использования.

    Отсюда следует вывод, что создаваемый алгоритм шифрования должен быть

    достаточен прост. Но при этом он должен обеспечивать асимметричность и быть

    достаточно сложным для анализа. Именно исходя из этих позиций берет свое

    начало идея создания полиморфных алгоритмов шифрования.

    Основная сложность будет состоять в построении генератора, который

    должен выдавать на выходе два алгоритма. Один – для шифрования, другой –

    для расшифрования. Ключей у этих алгоритмов шифрования/расшифрования нет.

    Можно сказать, что они сами являются ключами, или что они содержат ключ

    внутри. Они должны быть устроены таким образом, чтобы производить

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

    алгоритма шифрования должны производить шифрования абсолютно различными

    способами. И для их расшифровки возможно будет использовать только

    соответствующий алгоритм расшифрования, который был сгенерирован в паре с

    алгоритмом шифрования.

    Уникальность создания таких алгоритмов должен обеспечить полиморфный

    генератор кода. Выполняться такие алгоритмы будут в виртуальной машине.

    Анализ таких алгоритмов должен стать весьма трудным и нецелесообразным

    занятием.

    Преобразования над данными будут достаточно тривиальны, но

    практически, вероятность генерации двух одинаковых алгоритмов должна

    стремиться к нулю. В качестве элементарных действий следует использовать

    такие нересурсоемкие операции, как сложение с каким-либо числом или,

    например, побитовое "исключающее или" (XOR). Но повторение нескольких таких

    преобразований с изменяющимися аргументами операций (в зависимости от

    адреса шифруемой ячейки) делает шифр достаточно сложным. Генерации каждый

    раз новой последовательности таких преобразований с участием различных

    аргументов усложняет анализ алгоритма.

    2.3. Преимущества применения полиморфных алгоритмов шифрования

    К преимуществам применения полиморфных алгоритмов шифрования для

    систем, по функциональности схожим с АСДО, можно отнести следующие пункты:

    . слабая очевидность принципа построения системы защиты;

    . сложность создания универсальных средств для обхода системы защиты;

    . легкая реализация системы асимметрического шифрования;

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

    . возможность расширения виртуальной машины с целью сокрытия части кода.

    Рассмотрим теперь каждый их этих пунктов по отдельности и обоснуем эти

    преимущества. Можно привести и другие удобства, связанные с использование

    полиморфных механизмов в алгоритмах шифрования. Но, на мой взгляд,

    перечисленные преимущества являются основными и заслуживающими внимания.

    1) Слабая очевидность принципа построения системы защиты, является

    следствием выбора достаточно своеобразных механизмов. Во-первых, это само

    выполнение кода шифрования/расшифрования в виртуальной машине. Во-вторых,

    наборы полиморфных алгоритмов, уникальных для каждого пакета защищаемого

    программного комплекса. Это должно повлечь серьезные затруднения при

    попытке анализа работы такой системы с целью поиска слабых мест для атаки.

    Если система сразу создаст видимость сложности и малой очевидности работы

    своих внутренних механизмов, то скорее всего это остановит человека от

    дальнейших исследований. Правильно построенная программа с использованием

    разрабатываемой системой защиты может не только оказаться сложной на вид,

    но и быть такой в действительности. Выбранные же методы сделают устройство

    данной системы нестандартным, и, можно сказать, неожиданным.

    2) Сложность создания универсальных средств для обхода системы защиты

    заключается в возможности генерации уникальных пакетов защищенного ПО.

    Создание универсального механизма взлома средств защиты затруднено при

    отсутствии исходного кода. В противном случае необходим глубокий, подробный

    и профессиональный анализ такой системы, осложняемый тем, что каждая

    система использует свои алгоритмы шифрования/расшифрования. А модификация

    отдельного экземпляра защищенного ПО интереса не представляет. Ведь

    основной упор сделан на защиту от ее массового взлома, а не на высокую

    надежность отдельного экземпляра пакета.

    3) Легкая реализация системы асимметрического шифрования, хоть и

    является побочным эффектом, но очень полезна и важна. Она представляет

    собой следствие необходимости генерировать два разных алгоритма, один для

    шифрования, а другой для расшифрования. На основе асимметрического

    шифрования можно организовать богатый набор различных механизмов в

    защищаемом программном комплексе. Примеры такого применения будут даны в

    других разделах данной работы.

    4) Возможность легкой, быстрой адаптации и усложнения такой системы.

    Поскольку для разработчиков система предоставляется в исходном коде, то у

    него есть все возможности для его изменения. Это может быть вызвано

    необходимостью добавления новой функциональности. При этом для такой

    функциональности может быть реализована поддержка со стороны измененной

    виртуальной машины. В этом случае работа новых механизмов может стать

    сложной для анализа со стороны. Также легко внести изменения с целью

    усложнения генератора полиморфного кода и увеличения блоков, из которых

    строятся полиморфные алгоритмы. Это, например, может быть полезно в том

    случае, если кем-то, не смотря на все сложности, будет создан универсальный

    пакет для взлома системы зашиты. Тогда совсем небольшие изменения в коде,

    могут свести на нет труды взломщика. Стоит отметить, что это является очень

    простым действием, и потенциально способствует защите, так как делает

    процесс создания взлома еще более нерациональным.

    5) Поскольку программисту отдаются исходные коды система защиты, то

    он легко может воспользоваться существующей виртуальной машиной и расширить

    ее для собственных нужд. То же самое касается и генератора полиморфных

    алгоритмов. Например, он может встроить в полиморфный код ряд специфической

    для его системы функций. Сейчас имеется возможность ограничить возможность

    использования алгоритмов по времени. А где-то, возможно, понадобится

    ограничение по количеству запусков. Можно расширить только виртуальную

    машину с целью выполнения в ней критических действий. Например, проверку

    результатов ответа. Выполнение виртуального кода намного сложнее для

    анализа, а, следовательно, расширяя механизм виртуальной машины, можно

    добиться существенного повышения защищенности АСДО.

    2.4. Функциональность системы защиты

    Ранее были рассмотрены цели, для которых разрабатывается система

    защиты, а также методы, с использованием которых эта система будет

    построена. Сформулируем функции системы защиты, которые она должна будет

    предоставить программисту.

    1. Генератор полиморфных алгоритмов шифрование и расшифрования.

    2. Виртуальная машина в которой могут исполняться полиморфные алгоритмы.

    Отметим также, что виртуальная машина может быть легко адаптирована, с

    целью выполнения программ иного назначения.

    3. Асимметричная система шифрования данных.

    4. Ограничение использования полиморфных алгоритмов по времени.

    5. Защита исполняемых файлов от модификации.

    6. Контроль за временем возможности запуска исполняемых файлов.

    7. Поддержка таблиц соответствий между именами зашифрованных файлов и

    соответствующих им алгоритмам шифрования/расшифрования.

    8. Упаковка шифруемых данных.

    ГЛАВА 3. РЕАЛИЗАЦИЯ СИСТЕМЫ ЗАЩИТЫ

    3.1. Выбор средств разработки и организации системы

    Для разработки системы защиты необходим компилятор, обладающий хорошим

    быстродействием генерируемого кода. Требование к быстродействию обусловлено

    ресурсоемкостью алгоритмов шифрования и расшифрования. Также необходима

    среда с хорошей поддержкой COM. Желательно, чтобы язык был объектно

    ориентированный, что должно помочь в разработке достаточно сложного

    полиморфного генератора.

    Естественным выбором будет использование Visual C++. Он отвечает всем

    необходимым требованиям. Также понадобится библиотека для сжатия данных.

    Наиболее подходящим кандидатом является библиотека ZLIB. Теперь рассмотрим

    по отдельности каждый из этих компонентов, с целью показать почему был

    сделан именно такой выбор. В рассмотрение войдут: язык С++, среда Visual

    C++, библиотека активных шаблонов (ATL), библиотека ZLIB.

    3.1.1. Краткая характеристика языка программирования С++

    Объектно-ориентированный язык С++ создавался как расширение языка Си.

    Разработанный Бьярном Страуструпом (Bjarne Stroustroup) из AT&T Bell Labs в

    начале 80-х, С++ получил широкое распространение среди программистов по

    четырем важным причинам.

    . В языке С++ реализовано несколько дополнений к стандартному Си.

    Наиболее важным из этих дополнений является объектная ориентация,

    которая позволяет программисту использовать объектно-ориентированную

    парадигму разработки.

    . Компиляторы С++ широко доступны, а язык соответствует стандартам ANSI.

    . Большинство программ на С++ широко доступны, а язык соответствует

    стандартам ANSI.

    . Большинство программ на Си без всяких изменений, либо с незначительными

    изменениями , можно компилировать с помощью компилятора С++. Кроме

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

    работать с компилятором С++, постепенно осваивая его новые возможности.

    При этом не нужно осваивать новый сложный объектно-ориентированный язык

    с нуля.

    . Программы на С++ обычно сохраняют эффективность программ на Си.

    Поскольку разработчики С++ уделяли большое внимание эффективности

    генерируемого кода, С++ наилучшим образом подходит для задач, где

    быстродействие кода имеет важное значение.

    Хотя большинство экспертов рассматривают С++ как самостоятельный язык,

    фактически С++ представляет собой развитое объектно-ориентированное

    расширение Си, или объектно-ориентированный «гибрид». Язык допускает

    смешанное программирование ( с использованием концепции программирования Си

    и объектно-ориентированной концепции, и это можно охарактеризовать как

    недостаток.

    Объектно-ориентированное программирование (ООП) ( основная методология

    программирования 90-х годов. Она является результатом тридцатилетнего опыта

    и практики, которые берут начало в языке Simula 67 и продолжаются в языках

    Smalltalk, LISP, Clu и в более поздних ( Actor, Eiffel, Objective C, Java и

    С++. ООП ( это стиль программирования, который фиксирует поведение

    реального мира так, что детали разработки скрыты, а это позволяет тому, кто

    решает задачу, мыслить в терминах, присущих этой задаче, а не

    программирования. ООП ( это программирование, сфокусированное на данных,

    причем данные и поведение неразрывно связаны. Они вместе составляют класс,

    а объекты являются экземплярами класса.

    С++ относительно молодой и развивающийся язык, только в 1998 году был

    утвержден стандарт ANSI, и еще не все компиляторы полностью соответствуют

    этому стандарту. Тем не менее язык очень популярен и распространен не

    меньше, чем Си.

    Выбор был остановлен на языке С++ по следующим причинам. Поскольку

    будет использоваться среда Visual C++, то нет смысла отказываться от

    преимуществ языка С++, тем более, что программа достаточно сложная.

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

    преимуществом является возможность использовать умные указатели на COM

    интерфейсы, что часто бывает очень удобно. Использование библиотеки ATL

    тоже подразумевает необходимость языка С++, так как она написана именно на

    нем.

    3.1.2. Краткая характеристика среды Visual C++

    В связи с тем, что сегодня уровень сложности программного обеспечения

    очень высок, разработка приложений Windows с использованием только какого-

    либо языка программирования (например, языка C) значительно затрудняется.

    Программист должен затратить массу времени на решение стандартных задач по

    созданию многооконного интерфейса. Реализация технологии COM потребует от

    программиста еще более сложной работы.

    Чтобы облегчить работу программиста практически все современные

    компиляторы с языка C++ содержат специальные библиотеки классов. Такие

    библиотеки включают в себя практически весь программный интерфейс Windows и

    позволяют пользоваться при программировании средствами более высокого

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

    разработка приложений, имеющих сложный интерфейс пользователя, облегчается

    поддержка технологии COM и взаимодействие с базами данных.

    Современные интегрированные средства разработки приложений Windows

    позволяют автоматизировать процесс создания приложения. Для этого

    используются генераторы приложений. Программист отвечает на вопросы

    генератора приложений и определяет свойства приложения - поддерживает ли

    оно многооконный режим, технологию COM, трехмерные органы управления,

    справочную систему. Генератор приложений, создаст приложение, отвечающее

    требованиям, и предоставит исходные тексты. Пользуясь им как шаблоном,

    программист сможет быстро разрабатывать свои приложения.

    Подобные средства автоматизированного создания приложений включены в

    компилятор Microsoft Visual C++ и называются MFC AppWizard. Заполнив

    несколько диалоговых панелей, можно указать характеристики приложения и

    получить его тексты, снабженные обширными комментариями. MFC AppWizard

    позволяет создавать однооконные и многооконные приложения, а также

    приложения, не имеющие главного окна, -вместо него используется диалоговая

    панель. Можно также включить поддержку технологии COM, баз данных,

    справочной системы.

    Среда Visual C++ 6.0 была выбрана как одно из лучших средств

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.