Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Криптографическая защита информации

Работа добавлена на сайт samzan.net:


"Криптографическая защита информации"

Государственное образовательное учреждение высшего профессионального образования «Калужский филиал Московского государственного технического университета имени Н.Э.Баумана»

Калужский филиал

Факультет «Фундаментальных Наук»

Кафедра «Программного Обеспечения ЭВМ, Информационных Технологий и Прикладной Математики»

РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К ВЫПУСКНОЙ РАБОТЕ БАКАЛАВРА

Тема:

“________________________________________________

________________________________________________

________________________________________________

________________________________________________”

Студент (___________)

Группа

Руководитель работы (___________)

Калуга, 2007 г.

Содержание

1.      Техническое задание

1.1.   Общие сведения

1.2.   Назначение и цели создания системы

1.3.   Требования к программе или программному изделию

1.4.   Требования к надежности

1.5.   Условия эксплуатации

1.6.   Требования к составу и параметрам технических средств

1.7.   Требования к информационной и программной совместимости

1.8.   Требования к программной документации

2.      Исследовательская часть

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

2.2.   Обоснование выбора темы

2.3.   Обоснование выбора языка программирования

2.4.   Обоснование выбора среды разработки

2.5.   Обоснование выбора платформы

2.6.   Основы криптографии

2.7.   Причины выбора алгоритма

2.8.   Алгоритм Rijndael

3.      Конструкторская часть

3.1.   Функциональное назначение

3.2.   Руководство программиста

4.      Технологическая часть

4.1.   Назначение программного продукта

4.2.   Назначение и условия применения программного продукта

4.3.   Тестирование программного продукта

4.4.   Обращение к программе

4.5.   Руководство пользователя

4.6.   Сообщения оператору

5.      Заключение

6.      Список использованных источников

1.         Техническое задание

 

1.1.      Общие сведения

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

1.2.      Назначение и цели создания системы

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

1.3.      Требования к программе или программному изделию

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

1.4.      Требования к надежности

Программный продукт должен стабильно работать на всех окончательных версиях (free build) предъявленных операционных систем, не снижая надежность хранения в зависимости от каких-либо настроек системы, установленных приложений или действий пользователя во время работы приложения (кроме случаев умышленного взаимодействия с приложением: отладка, некоторые виды стресс-тестов, модификация файлов программного продукта).

1.5.      Условия эксплуатации

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

1.6.      Требования к составу и параметрам технических средств

 

Для работы приложения необходимо:

1.         операционная система семейства Microsoft Windows не ниже Windows 2000;

2.         50 Кб свободного места на жестком диске + файлы образов дисков;

3.         Требования к ресурсам оперативной памяти: для загрузчика порядка 4Мб, для драйвера в районе 100Кб.

1.7.      Требования к информационной и программной совместимости

Для проектирования программы необходимо использовать такие среды проектирования как Microsoft Visio и Microsoft Word. Для реализации данного программного продукта используется среда разработки RadAsm с MASM32, а также следующие вспомогательные программы: OllyDbg, DebugView, VMware Workstation и Restorator.

1.8.      Требования к программной документации

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

1.         Титульный лист с подписями.

2.         Утвержденное задание на дипломный проект (работу).

3.         Техническое задание на разработку.

4.         Содержание (с постраничной разметкой).

5.         Основная часть текста, разделенная на разделы:

Исследовательская часть.

Конструкторская часть.

Технологическая часть.

6.         Заключение (основные результаты и возможности внедрения).

7.         Список использованных источников.

8.         Приложения.

Графическая часть может содержать следующие части:

1.      схема структурная АСОИ,

2.      схема функциональной структуры,

3.      схема организационной структуры,

4.      схема структурная КТС,

5.      схема алгоритма,

6.      схема программы (подпрограммы, программного модуля, пакета прикладных программ),

7.      схема информационной (математической и т.д.) модели,

8.      схема прохождения и обработки информации,

9.      формы входных и выходных документов,

10.    теоретический чертеж,

11.    экспериментальные данные.

2.         Исследовательская часть

 

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

 

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

Алгоритм, выбранный для использования в шифровании, должен быть максимально надежен и устойчив к взлому. Кроме того, он должен быть достаточно быстродейственен и использовать минимум ресурсов.

2.2.     Обоснование выбора темы

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

·           Использование устаревших алгоритмов шифрование (например 1DES);

·           Стоимость программ может достигать сотен долларов, что неприемлемо для массового распространения;

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

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

·           Необоснованно большой объем программного продукта вследствие добавления функций, не имеющих отношения к основной функции - шифрованию.

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

2.3.     Обоснование выбора языка программирования

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

2.4.     Обоснование выбора среды разработки

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

2.5.     Обоснование выбора платформы

Платформой для разработки программного продукта была выбрана линейка операционных систем Microsoft Windows, начиная с версии Windows2000. Эта операционная система предоставляет свои широкие функциональные возможности через достаточно стандартизованный и логичный интерфейс API. Кроме того, данная операционная система и ее программные интерфейсы достаточно хорошо изучены и понятны.

2.6.     Основы криптографии

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

Все многообразие существующих криптографических методов можно свести к следующим классам преобразований:

Моно- и многоалфавитные подстановки

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

Перестановки

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

Гаммирование

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

Блочные шифры

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

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

Требования к хорошему блочному шифру формулируются следующим образом. Необходимы:

-достаточно большая разрядность блока (N, 64 или более бит) для того, чтобы затруднить составление и поддержание каталога;

-достаточно большое пространство ключей (K) для того, чтобы исключить возможность подбора ключа;

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

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

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

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

В режиме сцепления блоков шифра (cipher block chaining, CBC) перед шифрованием над открытым текстом и предыдущим блоком шифротекста выполняется операция XOR.

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

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

В режиме СВС одинаковые блоки открытого текста при шифровании переходят в различные блоки шифротекcта только, если отличались какие-то из предшествующих блоков открытого текста. Два идентичных сообщения, однако, будут шифроваться как один и тот же шифротекст. Что еще хуже, два одинаково начинающихся сообщения будут шифроваться одинаково, пока не появится первое различие.

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

Избежать этого можно, шифруя в качестве первого блока какие-то случайные данные. Этот блок случайных данных называется вектором инициализации (initialization vector, IV), инициализирующей переменной или начальным значением сцепления. IV не имеет никакого смыслового значения, он используется только дня того, чтобы сделать каждое сообщение уникальным. Когда получатель дешифрует этот блок, он использует его только для заполнения регистра обратной связи. Хорошим IV служит метка времени. Или использование каких-нибудь случайных бит. (В данной реализации вектор инициализации основан на позиции блока, что лишь незначительно повышает защиту. К сожалению, в данном случае нет возможности использовать более сложные векторы инициализации).

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

IV не должен храниться в секрете, он может передаваться открыто вместе с шифротекстом.

2.7.     Причины выбора алгоритма

Для выбора конкретного алгоритма шифрования я обратился к результатам конкурса на создание нового общенационального стандарта шифрования, который должен прийти на замену DES, проведенным в конце 1996г. национальным институтом стандартов США (NIST). Разрабатываемому стандарту было присвоено рабочее наименование AES (Advanced Encryption Standard). Отбор проходил в два этапа, после первого среди претендентов осталось 15 кандидатов, после второго – 5 (Crypton, Mars, RC6, Rijndael и Seipent). В конце 2000 года был сделан окончательный выбор. В качестве предлагаемого стандарта был выбран алгоритм Rijndael. Этот алгоритм был разработан Винсентом Райманом (Vincent Rijman) и Иоан Дамен (Joan Daemen) и представляет собой алгоритм, не использующий сети Фейстела.

Также исходя из документа «Performance Analysis of AES candidates on the 6805 CPU core», в котором приводятся результаты сравнения кандидатов по затратам ресурсов и времени работы, я пришел к выводу, что Rijndael лучше всех остальных подходит к моему заданию, т.к. является самым быстрым и требует наименьший объем ресурсов во время работы.

Также немаловажным было при выборе то, чтобы размер сектора диска (512 байт) был кратен размеру блока алгоритма. Из-за этого условия сразу отсеиваются алгоритмы MARS и RC6. Из оставшихся Serpent оказался слишком медленным (примерно на порядок медленнее средней скорости Rijndael). Crypton оказался медленнее примерно в 3 раза из-за медленного вычисления преобразования числа p, используемого в нем, а также сложнее в реализации.

Исходя из этого, было принято решение об использовании криптографического алгоритма Rijndael.

2.8.     Алгоритм Rijndael

Самостоятельная и оригинальная разработка молодых, но достаточно широко известных в криптографическом сообществе ученых из Бельгии. Алгоритм демонстрирует превосходную производительность на всех рассматриваемых в состязании платформах. Для шифра характерны быстрое разворачивание ключа и низкие требования к памяти, так что он также хорошо работает и в аппаратной реализации, и в ограниченных по памяти условиях. Простая конструкция схемы и консервативный выбор операций должны облегчить дальнейший криптоанализ шифра. Кроме того, специалистами отдельно отмечается, что избранные конструкторами операции относительно просто защитить от известных опасных атак на физическую реализацию криптоалгоритма. Еще одна важная положительная характеристика (хотя и не рассматривавшаяся при выборе финалистов) - в шифре Rijndael имеется существенный потенциал к распараллеливанию, то есть к получению выгод в производительности благодаря применению компьютерных процессоров, позволяющих одновременно выполнять множество инструкций.

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

В качестве стандарта принят вариант шифра только с размером блока 128 бит (16 байт). Число раундов шифрования определяется в зависимости от размера блока и ключа по следующей таблице:

размер ключа 128 192 256 размер блока 128 10 12 14 192 12 12 14 256 14 14 14

Иными словами, из двух размеров выбирается максимальный, и если он равен 128 бит, то используется 10 раундов, если 192 бита, то 12, и если 256 - то 14 раундов шифрования.

В данном продукте решено использовать стандартный размер блока в 128 бит и размер ключа в 256 бит, как наиболее стойкий вариант. Следовательно, будет 14 раундов шифрования.

Шифр Rijndael выполнен в архитектуре "Квадрат" (Square), получившей свое название от первого, построенного в соответствии с ее принципами, криптоалгоритма. В Rijndael блоки открытых и шифрованных данных, соответственно T и T', представляются в виде массивов из 16, 24 или 32 байтов:

T = (t1, t2,...,tN)

T' = (t'1, t'2,...,t'N)

| t | = | t' | = 8, N{16, 24, 32}.

В соответствии с использованными архитектурными принципами в ходе криптографических преобразований исходный и зашифрованный блоки данных, а также все промежуточные результаты процесса шифрования интерпретируются как матрицы байтов размером 4´n, откуда получаем n = N/4, nÎ{4, 6, 8}. Матрицы заполняются байтами входного блока (открытых данных при шифровании и шифрованных данных при дешифрации соответственно) по столбцам сверху вниз и слева направо, и в точно таком же порядке извлекаются байты из матрицы-результата:

 

Схема преобразования данных при шифровании:




1. Контрольная работа 2 по дисциплине Основы цифровой схемотехники Синтез пересчетной схемы
2. Статья- Порядок и хаос.html
3. Символические образы и их смысл в поэме А Блока Двенадцать.html
4. Тема- Виконання оперативних перемикань при ліквідації аварії в електричній частині електростанції В
5. Хрустальный Апельсин Приглашаем умных смелых талантливых девушек принять участие в специальном Ко.html
6. і. Ваші відповіді на нескладні запитання дадуть змогу дослідити актуальну для науки проблему.
7. Музыка Отечественной войны 1812 года
8. і Ця на перший погляд неблагодарна справа майже завжди закінчувалась невдачею особливо у наш час
9. 479 гг. до н.э. 54. Живя В эпоху смуты и анархии удрученный всеобщей нищетой и страданиями народа Конфуций поня
10. то здания которых в округе ЧАЭС хватало после второго взрыва
11. ТЕМА- Психолог в школе и РАБОТА ПЕДАГОГАПСИХОЛОГА С РОДИТЕ
12. Этап получения данных о внешней торговле называется статистическим наблюдением внешней торговли
13. тема нормативных документов в строительстве СТРОИТЕЛЬНЫЕ НОРМЫ И ПРАВИЛА РОССИЙСКОЙ ФЕДЕРАЦИИ
14. Маленькая ночная серенада
15. і Що таке ldquo;принципові переговориrdquo; Назвіть та охарактеризуйте головні структурні елементи таких пе
16. ЗНАЧИТ ВЫ ПО АДРЕСУ.html
17. ЛДМСтандарт Снукервилль ЛДМ Петроградский рнул
18. поле создаваемое электрическим зарядом
19. . Socjologi jko wiedz o spo~ecze~stwie 1
20. . Лечение пациентов терапевтического профиля Раздел- Лечение пациентов инфекционного профиля для специа