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

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

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

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

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

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

Тема:

“________________________________________________

________________________________________________

________________________________________________

________________________________________________”

Студент (___________)

Группа

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

Калуга, 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.     Условия эксплуатации

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


/>/>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» или еще что-нибудь. Хотя повтор блока будет невозможен, такое одинаковоеначало может предоставить криптоаналитику какую-нибудь полезную информацию. (В данномслучае известно, что в образе сформирована файловая система, т.е. известен форматнекоторых секторов).

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

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

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

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

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

Также исходя из документа «Performance Analysis of AES candidates onthe 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}. Матрицы заполняются байтами входногоблока (открытых данных при шифровании и шифрованных данных при дешифрации соответственно)по столбцам сверху вниз и слева направо, и в точно таком же порядке извлекаютсябайты из матрицы-результата:

/> />

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

/>

Схема алгоритма шифрования:

/>

На рисунках использованы следующие обозначения:

T, T' — открытый и зашифрованный блоки данныхсоответственно;

kii-тый ключевой элемент;

F, F' — регулярное нелинейное преобразованиеи преобразование последнего раунда соответственно;

Xi — промежуточноесостояние шифруемого блока после прибавления i-тогоключевого элемента.

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

T'= EK(T) = kR+1/>F'(kR/>F(kR-1/>… F(k2/>F(k1/>T))...)).

Число R раундов шифрованияпеременное и зависит от размера блока данных и ключа. Прибавление ключевых элементов,которым начинается и заканчивается процесс шифрования, а также некоторые другиеоперации раундового преобразования выполняется побайтно в конечном поле Галуа GF(28),полевой операцией сложения в нем является побитовое суммирование по модулю 2. Соответственно,каждый ключевой элемент является байтовой матрицей того же самого размера, что иблок данных. За один раунд шифрования преобразуется полный блок данных, а не егочасть, как в сетях Файстеля. На последнем раунде функция нелинейного преобразованияотличается от аналогичной функции, используемой в остальных раундах — это сделанодля обеспечения алгоритмической эквивалентности прямого и обратного преобразованийшифрования.

Процесс дешифрации блока данных алгоритмически идентичен процессу егошифрования и, следовательно, рисунки 1 и 2 также справедливы и для него, если черезT обозначить блок зашифрованныхданных, а через T' — открытых. Однако различия между этимидвумя процедурами в архитектуре «Квадрат» несколько более существенны,чем в сетях Файстеля — они различаются не только порядком использования ключевыхэлементов в раундах шифрования, но и самими этими элементами, и некоторыми другимиконстантами, используемыми в алгоритме.

Нелинейное преобразование Fматрицы данных состоит из трех шагов: замены байтов матрицы на новые значения (S[]),циклического сдвига строк матрицы влево (R¬),умножения матрицы данных слева на постоянную матрицу-циркулянт M:

X' = F(X) = M´ R¬(S(X)).

Схема преобразования блока данных при нелинейном преобразовании:

/>

Схема алгоритма нелинейного преобразования:

/>

Все входные (X), выходные(X') и промежуточные (Y,Z) значения преобразования являютсяматрицами байтов одинакового размера 4´n.Функция преобразования последнего раунда F' отличается от регулярной функции преобразованияF отсутствием шага умножения матрицыданных слева на постоянную матрицу.

Вся нелинейность преобразования сосредоточена в его первом шаге — замене,второй и третий шаги являются линейными. Первый шаг служит для перемешивания информациивнутри байтов, второй обеспечивает «экспорт» изменений в другие столбцы,третий осуществляет диффузию изменений в одном элементе матрицы на весь соответствующийстолбец. Таким образом, за два раунда достигается диффузия изменений в одном единственномбите на весь блок данных. Ниже каждый из указанных шагов рассмотрен подробно, приэтом некоторые преобразования байтов определены в терминах операций в конечном полеGF(28), порожденном неприводимым полиномом m(x)над полем GF(2): m(x) = x8+x4+x3+x+1.Операция сложения в этом поле является ни чем иным, как побитовым суммированиемпо модулю 2, умножение в соответствие с определением поля выполняется как обычноеумножение полиномов над GF(2) по модулю полинома m(x). При манипулированиис байтами данных как с элементами поля GF(28) каждый бит соответствуетслагаемому вида xi всоответствии со старшинством бита в байте. Можно сказать, что если байт с целочисленнымзначением b представлен в виде полиномаB(x), то справедливо b= B(2).

Побайтовая замена

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

yij = S[xij],1£i£4, 1£j£n,

где n — число столбцовматрицы данных — 4,6 или 8. Единственный узел замен в шифре Rijndael конструируетсяс помощью следующего алгебраического соотношения:

S[y] = (x4+x3+x2+x+1)+ y-1/>(x7+x6+x5+x4+1) mod (x8+1).

При этом обращение ненулевых байтов осуществляется в описанном вышеконечном поле GF(28), для нулевого байта полагают 0-1 = 0.Таким образом, байтовая замена определяется как обращение элемента-байта в конечномполе GF(28), доопределенное для нулевого элемента поля, с последующимаффинным преобразованием результата. Коэффициенты этого преобразования выбраны такимобразом, чтоб у полученного узла замен отсутствовали точки неподвижности (S[y] =y), и «антинеподвижности» (S[y] = ~y).Тильдой (знаком "~") обозначена операция побитового дополнения своегоаргумента.

Естественно, указанная выше формула для построения узла замен не предназначенадля использования непосредственно во время шифрования — гораздо эффективнее использоватьуже готовый узел замен:

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 0x 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 1x ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 2x b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 3x 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 4x 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 5x 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 6x d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 7x 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 8x cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 9x 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db Ax e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 Bx e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 Cx ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a Dx 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e Ex e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df Fx 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

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

Построчное вращение матрицы

В ходе данной операции каждая строка матрицы данных, кроме первой, вращается(циклически сдвигается) влево на определенное число позиций, зависящее от номерастроки и от размера блока данных:

/>, 1£i£4, 1£j£n.

Первая строка всегда остается на месте: С1= 0, для нее приведенная выше формула существенноупрощается: z1j= y1j. Ниже в таблице приведены величинысдвига для строк матрицы со второй по четвертую в зависимости от числа столбцовn в матрице:

n 4 6 8

C2

1 1 1

C3

2 2 3

C4

3 3 4

Умножение на постоянную матрицу

/>На этом шаге матрицаданных слева умножается на постоянную матрицу-циркулянт M:

X = M´X,

При выполнении матричного умножения операции сложения и умножения элементовобеих матриц выполняются в конечном поле GF(28). Матрица M является циркулянтом: каждая ее строка получаетсяциклическим сдвигом предыдущей строки вправо на один элемент. Элементы матрицы выбранытаким образом, чтобы свести к минимуму трудоемкость операции умножения: в ней присутствуютлишь небольшие по значению числа 01, 02 и 03, половина элементов — единичные, т.е.реального умножения выполнять для них не требуется. Этим самым обеспечивается высокаяэффективность возможных реализаций этой операции.

Следует добавить, что операция умножения в конечном поле GF(28)является достаточно трудоемкой в программной реализации и никаким образом не сводитсяк обычному арифметическому умножению. Если умножение двоичных чисел реализуетсясдвигами и обычным арифметическим суммированием, то умножение полиномов над полемGF(2) — теми же сдвигами и побитовым суммированием по модулю 2. Однако в шифре Rijndaelодним из множителей всегда является константа и размер операндов невелик — одинбайт. Это позволяет реализовать умножение на константу в поле GF(28)как замену, что существенно повышает эффективность программной реализации. Для каждогомножителя-константы при этом требуется свой отдельный узел замен. Напротив, наиболееэффективной аппаратной реализацией этой операции является реализация в виде сериисдвигов и побитовых сложений по модулю два в соответствие с ее непосредственнымопределением.

Дешифрация

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

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

k1, k2, k3,…, kR, kR+1,

то при дешифрации должна быть использована следующая последовательностьэлементов:

kR+1, M -1/>kR,…, M -1/>k3, M -1/>k2, k1.

2. На шаге побайтовой замены используется узел замен S-1обратный тому, что применяется в процедуре шифрования S. Это означает, что каково бы ни было байтовоезначение b, всегда справедливо следующеесоотношение:

S -1[S[b]] = b.

Указанный узел замен S-1 представлен в следующей таблице:

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 0x 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb 1x 7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb 2x 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e 3x 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25 4x 72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92 5x 6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84 6x 90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06 7x d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b 8x 3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73 9x 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e Ax 47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b Bx fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4 Cx 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f Dx 60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef Ex a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61 Fx 17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d

3. На шаге построчного вращения матрицы данных осуществляется циклическийсдвиг строк на то же самое количество элементов, что и при шифровании, но в обратнуюсторону — вправо. Либо, в силу свойств операции циклического сдвига, можно осуществитьвращение строк матрицы в ту же сторону, что и при шифровании, т.е. влево, но надругое количество элементов, вычисляемое по следующей формуле:

Сi' = n — Ci, 2£i£4.

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

n 4 6 8

C2’

3 5 7

C3’

2 4 5

C4’

1 3 4

На шаге умножения слева на постоянную матрицу используется матрица M-1,обратная используемой при шифровании матрице M:

/>

Следует отметить, что умножение в конечном поле GF(28) наэлементы матрицы M-1 с точки зрения вычислительныхзатрат является более трудоемкой операцией, чем умножение на элементы матрицы M. Кроме того, в обратной матрице присутствуютчетыре различных элемента, тогда как в исходной — только три, что позволяло «сэкономить»одно умножение из четырех. Все сказанное приводит к тому, что при непосредственнойреализации умножения в поле GF(28) модули дешифрования получаются заметноменее быстродействующими, чем модули шифрования. Однако, эта особенность не являетсянастолько существенной, как может показаться на первый взгляд. Во-первых, в большинствепрактических режимов использования шифра применяется только прямое преобразование(шифрование) — подобная ситуация имеет место при шифровании с использованием потоковыхрежимов (в том числе и при дешифрации), при выработке имитовставки (кода аутентификации),при выработке хэш-функции и при выработке массивов псевдослучайных данных. Во вторых,если умножение на константу в поле GF(28) реализовать как замену, различияв трудоемкости нивелируются.


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

 

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

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

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

 

/>3.2.1.            Структура программы

Программный продукт состоит из следующих частей:

-         \Driver\*.* – файлы исходных кодов драйвера;

-         \Driver\ACVHDD.asm – главный модуль драйвера;

-         \Driver\dispatch.asm – модуль обработки IRP-запросов к драйверу;

-         \Driver\consts.inc – объявление типов и констант;

-         \Driver\proto.inc – прототипы реализованных функций;

-         \Driver\seh0.inc – макросы для SEH (модуль написан Four-F);

-         \Driver\ACVHDD.rap – файл проекта RadASM;

-         \Driver\acvhdd.sys – сам драйвер;

-         \Driver\AES\ – файлы части драйвера, реализующие шифрование;

-         \Driver\AES\AESCrypt.inc – функции шифрования верхнего уровня (инициализация,шифрование и дешифрация целого буфера);

-         \Driver\AES\boxes-fst.inc – таблицы перестановок;

-         \Driver\AES\consts.inc – объявление констант и структур;

-         \Driver\AES\EncodeDecode.inc – функции шифрования и дешифрации блоковпо 16 байт, а также вспомогательные по отношению к ним функции;

-         \Driver\AES\usefull_functions.inc – вспомогательные функции и макросы;

-         \Loader\*.* – файлы исходных кодов загрузчика и оболочки;

-         \Loader\Loader.asm – основной модуль загрузчика;

-         \Loader\DelImageDlg.inc – диалог удаления файла образа;

-         \Loader\DriverService.inc – функции взаимодействия с драйвером;

-         \Loader\MainWndProc.inc – главная оконная функция;

-         \Loader\NewImageDlg.inc – диалог создания нового образа диска;

-         \Loader\PasswordDlg.inc – диалоговое окно ввода пароля при монтированиифайла образа новым виртуальным логическим диском в систему;

-         \Loader\TrayIcon.inc – модуль реализации иконки в трее;

-         \Loader\Loader.rc – список подключаемых ресурсов;

-         \Loader\Loader.rap – файл проекта RadASM;

-         \Loader\Loader.exe – сам загрузчик;

-         \Loader\Icons\*.ico – иконки, используемые в загрузчике;

-         \Loader\Res\*.* – файлы ресурсов используемых в загрузчике;

-         \Loader\Res\XPMan.manifest – манифест для программы;

-         \Loader\Res\DialogForms.rc – ресурсы диалоговых окон;

-         \Loader\Res\LoaderRes.rc – иконки, добавляемые в ресурсы;

-         \Loader\Res\XPMan.rc – подключение к проекту манифеста.

3.2.2.            Структура данных

Для реализации программного продукта кроме стандартных заголовочныхфайлов необходимы файлы из KmdKit (Kernel Mode Driver Development Kit for MASM32programmers) от Four-F, являющийся переработкой заголовочный файлов из DDK. Безних совершенно невозможна компиляция драйвера, а также компиляция нескольких модулейзагрузчика.

3.2.3.            Средства обмена данными

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

Система взаимодействует с драйвером через диспетчер ввода-вывода (Input/OutputManager), а загрузчик – через функции диспетчера управления службами (Service ControlManager, SCM).

3.2.4.            Алгоритм работы программы

Общий принцип работы программного приложения следующий:

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

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

При создании окна функцией AC_TrayIconCreate создается иконка в трее,затем с помощью функции AC_FindDriverInMem осуществляется поиск драйвера в памяти.Если драйвер загружен, то вызов AC_GetUsedDriveLetter возвращает букву диска, скоторой связан драйвер. Затем в зависимости от состояния драйвера функция AC_TrayIconMenuItemsCheckStateменяет иконку в трее и доступность пунктов контекстного меню, информируя пользователяо состоянии драйвера.

При закрытии окна функцией AC_TrayIconDelete иконка в трее удаляется.

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

При выборе пункта «Загрузить образ диска» вызывается функция AC_Cmd_LoadDriver,производящая загрузку драйвера и монтирование образа на создаваемый файл. Послетого, как функция отработает, вызывается AC_TrayIconMenuItemsCheckState.

При выборе пункта «Выгрузить диск» сначала вызывается AC_Cmd_UnloadDriver,выгружающая образ, драйвер и удаляющая диск, затем вызывается AC_TrayIconMenuItemsCheckState.

При выборе пункта «Создать образ диска» вызывается единственная функцияNewImageDlgShow, описанная в модуле NewImageDlg.inc и реализующая весь процесс созданиянового файла образа диска.

При выборе пункта «Удалить образ диска» также вызывается единственнаяфункция DelImageDlgShow, внутри которой происходит весь процесс удаления существующегофайла образа диска.

Алгоритм загрузки образа реализован внутри функции AC_Cmd_LoadDriver,и состоит из следующего: первоначально с помощью функции AC_FindDriverInMem осуществляетсяпоиск драйвера в памяти и, если он работает, выводится сообщение о невозможностизагрузки нового образа без предварительной выгрузки старого, после чего происходитпрерывание функции загрузки образа. Иначе вызов AC_RegisterService загружает драйверв память, а функция AC_StartService монтирует диск из файла, путь к которому переданей в качестве параметра.

Выгрузка образа реализована в функции AC_Cmd_UnloadDriver следующимобразом: сначала драйвер ищется вызовом AC_FindDriverInMem. Если он не найден, товыводится соответствующее сообщение и выгрузка на этом завершается. Иначе в функцииAC_StopService производится выгрузка образа и удаление диска, затем вызов AC_DeleteServiceудаляет из памяти сам драйвер.

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

Процесс удаления существующего файла образа происходит внутри вызовафункции DelImageDlgShow, по своему устройству весьма похожей на NewImageDlgShowтем, что так же создает диалог из ресурсов. Само удалении происходит в обработчикенажатия кнопки «Удалить».

3.2.5.            Описание основных функций программы

Описание функций дано в порядке вхождения модулей, в которых те описаны,в список файлов проектов.

Программа загрузчик (Loader.exe):

ProcessMessages proc hWnd:DWORD

Обработка всех сообщений из очереди для данного окна;

DelImageDlgWndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM,lParam:LPARAM

Диалоговая оконная функция диалога удаления файла;

DelImageDlgShow proc

Вызов диалогового окна удаления файла;

AC_ErrorMessage proc error:DWORD

Вывод системной информации о произошедшей ошибке;

AC_FindDriverInMem proc

Поиск драйвера в памяти и получение его состояния;

AC_RegisterService proc

Загрузка драйвера в память;

AC_StartService proc lpFileName:DWORD

Загрузка образа из указанного файла и создание диска;

AC_StopService proc

Выгрузка образа и удаление диска;

AC_DeleteService proc

Выгрузка драйвера из памяти;

AC_CreateNewImage proc imgsize:DWORD, imgpath:DWORD

Процесс создания нового файла образа диска;

AC_Cmd_LoadDriver proc lpFileName:DWORD

Интерфейс загрузки существующего файла образа диска;

AC_Cmd_UnloadDriver proc

Интерфейс выгрузки драйвера из памяти;

AC_GetUsedDriveLetter proc

Поиск логического диска, с которым связан загруженный драйвер;

WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE,CmdLine:LPSTR, CmdShow:DWORD

Создание и поддержка главного окна приложения;

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

Оконная функция главного окна приложения;

_SaveFileDialog_ proc lpTitle:DWORD, lpFilter:DWORD,lpDefExt:DWORD

Вызов системного диалога выбора файла;

SwapButtonsEnabling proc hOwnerDlgWnd:DWORD

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

NewImageDlgWndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM,lParam:LPARAM

Оконная функция диалогового окна, в котором создается новый файл образадиска;

NewImageDlgShow proc

Создание диалогового окна, в котором создается новый файл образа диска;

FillDriveLetters proc hWndComboBox:DWORD

Заполнение всплывающего списка выбора (ComboBox) буквами дисков, незарегистрированных в системе;

PasswordDlgWndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM,lParam:LPARAM

Оконная функция ввода пароля;

PasswordDlgShow proc

Создание диалогового окна ввода пароля;

AC_TrayIconCreate proc

Создание иконки в трее и контекстного меню для нее;

AC_TrayIconDelete proc

Удаление иконки приложения из трея;

AC_TrayIconChange proc hNewIcon:DWORD

Изменение изображения у иконки приложения в трее;

AC_TrayIconWndProc_WM_TRAY proc wParam:DWORD, lParam:DWORD

Функция обработки сообщений от иконки в трее, которые система посылаетглавной оконной функции приложения;

AC_TrayIconWndProc_WM_COMMAND proc wParam:DWORD, lParam:DWORD

Функция обработки сообщений от пунктов контекстного меню;

AC_TrayIconMenuItemsCheckState proc

Функция меняет доступность пунктов меню и изображения иконки в треев зависимости от текущего состояния драйвера.

Драйвер устройства (ACVHDD.SYS):

AC_OpenFileDrive proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

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

AC_CloseFileDrive proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

Освобождение выделенных ресурсов, закрытие файла образа, завершениеработы системы шифрования;

AC_DriverUnload proc pDriverObject: PDRIVER_OBJECT

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

AC_DriverEntry proc pDriverObject: PDRIVER_OBJECT,pusRegistryPath: PUNICODE_STRING

Точка входа при первоначальной загрузке драйвера. Создает само устройство,инициализирует мютекс, а также устанавливает обработчики в DRIVER_OBJECT на системныезапросы IRP_MJ_ xxx;

InitAES proc passwrd:DWORD

Инициализация системы шифрования по заданному паролю;

DoneAES proc

Завершение работы системы шифрования;

EncodeBuffer proc src:DWORD, dst:DWORD, block_count:DWORD

Шифрование буфера src длиной block_count 16 байтных блоков с записьюрезультатат в dst;

DecodeBuffer proc src:DWORD, dst:DWORD, block_count:DWORD

Дешифровка буфера src длиной block_count 16 байтных блоков с записьюрезультате в dst;

b_SetUp_Encode proc

Внутренняя функция, используемая при шифровании;

b_SetUp_Decode proc

Внутренняя функция, используемая при десшифрации;

rijndaelEncrypt proc a:DWORD, b:DWORD, rk:DWORD

Шифрование 16 байтного блока a с записью результата в b на основе ключейраундов rk;

rijndaelDecrypt proc a:DWORD, b:DWORD, rk:DWORD

Дешифровка 16 байтного блока a с записью результата в b на основе ключейраундов rk;

my_strncpy proc dst:DWORD, src:DWORD, maxlen:DWORD

Функция копирования нультерминальной строки. Аналог C/C++ функции strncpy;

copy_block proc dst:DWORD, src:DWORD

Функция копирования 16 байтного блока src в dst;

StrLen proc item:DWORD

Функция быстрого вычисления длины строки. Аналог C/C++ функции strlen;

populateKeyMaterial proc text:DWORD, key:DWORD

Расширение пароля text до заполнения длины ключа key;

InvMixColumn proc a:DWORD

Специальное перемешивание байт массива a;

rijndaelKeySched proc k:DWORD, W:DWORD

Формирование ключа шифрования по расширенному паролю;

rijndaelKeyEnctoDec proc keyBits:DWORD, W:DWORD

Формирования ключа дешифрации из ключа шифрования;

makeKey proc key:DWORD, direction:DWORD, keyLen:DWORD,keyMaterial:DWORD

Формирование ключа шифрования/дешифрования на основе пароля key, требуемомунаправлению шифрования direction, длины ключа keyLen и начального материала дляформирования ключа keyMaterial;

MmGetSystemAddressForMdlSafe proc pMdl:PMDL, Priority:DWORD

Получение указателя в системном адресном пространстве нулевого кольцадля пользовательского буфера в третьем кольце защиты;

AC_DispatchReadWrite proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

Функция – обработчик запросов системы на чтение/запись с устройства– диска; производит чтение / запись с соответствующим шифрованием / дешифрованием;

AC_DispatchCreate proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

Обработка инициализации драйвера в системе;

AC_DispatchClose proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

Обработка выгрузки драйвера;

AC_LoadKeyAndInitAES proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

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

AC_DispatchControl proc pDeviceObject: PDEVICE_OBJECT,pIrp: PIRP

Функция обработки всех приходящих драйверу сообщений от системы;


/>/>4.        Технологическая часть/> 4.1.   Назначение программного продукта

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

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

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

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

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

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

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


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

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

1.        Запустите загрузчик (Loader.exe). В трее должна появиться иконка приложения/> . Вызовитеконтекстное меню:

/>

2.        Выберите пункт меню «Создать образ диска». В появившемся диалоговом окневведите размер диска 200 (Мб), и выберите имя создаваемого файла образа. Имя можноввести вручную в соответствующее поле, либо выбрать через стандартный системныйдиалог создания файла, открываемый при нажатии кнопки />. Вид окна после выбора файла и вводаразмера:

/>

3.        После нажатия кнопки «Создать» загрузчик начнет выделение места под требуемыйфайл образа. В зависимости от требуемого размера, объема свободного места на выбранномносителе и фрагментации файлов данный процесс может занять до минуты и даже более.Процесс отображается внизу диалогового окна в полосе прогресса. На время созданияфайла все кнопки диалога блокируются. Также диалог нельзя закрыть стандартными системнымиспособами: через кнопку закрытия окна, комбинацию Alt+F4, соответствующий пунктменю окна. Окно в процессе выделения места:

/>

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

/>

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

/>

6.        После ввода пароля (требования к нему приведены в диалоге) и выбора дискаиз списка доступных происходит монтирование образа на созданный диск. Диск сразуже становится виден для всех программ, например для трех следующих:

/>Total Commander:

/>

Проводник:

/>

WinHex:

7.        В принципе с ним уже можно работать, но для этого нужны специализированныепрограммы. А для того, чтобы с диском можно было работать из любых программ какс обычным логическим диском, его нужно отформатировать. Программа сама вызываетдиалог форматирования. Нужно только выбрать параметры форматирования:

/>

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

/>

9.        Кроме того, теперь иконка в трее изменилась на />, показывая, что драйвер загружен иработает (создан виртуальный логический диск).

10.      Теперь можно завершить работу загрузчика, выбрав пункт «Выход» его контекстногоменю. Работа драйвера никак не зависит от того, запущен ли загрузчик. После завершенияработы загрузчика диск по-прежнему полностью функционален. Если снова запуститьзагрузчик, то иконка сразу же примет вид />, т.к. загрузчик определит, что в системеесть виртуальный диск, работа которого осуществляется через драйвер из данного программногопродукта. Работа сторонних программ виртуальных дисков (HDD и CD-ROM) ни как невлияет на работу данного программного продукта.

11.      Для выгрузки драйвера и удаления виртуального диска из системы выберите пункт«Выгрузить диск» контекстного меню. В случае, если диск в данный момент используется(к нему происходят обращения), будет выведено соответствующее сообщение:

/>

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

12.      Если надобность в образе диска отпала, и он больше не нужен, но данные нанем имеют некоторую ценность, то программа позволяет удалить файл образа диска спредварительным затиранием содержимого нулями. Для этот служит пункт контекстногоменю «Удалить образ диска».

/>

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

/>

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

 

Для вызова программы необходимо запустить Loader.exe. В системной папкеSystem32\ либо в папке, из которой запускается загрузчик, должен находится файлдрайвера acvhdd.sys. Если в системной папке файла драйвера нет, загрузчик сам еготуда скопирует.

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

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

/>

Пункт «Загрузить образ диска» предназначен для запуска драйвера и монтированиявиртуального логического диска в системе. При выборе данного пункта вызывается стандартныйдиалог выбора файла:

/>

Если есть уже созданный ранее диск, то после его выбора будет отображенодиалоговое окно «Ввода пароля и выбора диска»:

/>

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

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

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

Пункт «Создать образ диска» предназначен для создания нового файла образадиска:

/>

Поле «размер диска» задает размер диска в мегабайтах (Мб) в пределахот 1Мб, до 4096Мб (4Гб). Ограничение на 4Гб поставлено из-за ограничений файловойсистемы FAT32. В дальнейшем данное ограничение будет снято.

Кнопка /> предназначена для выбора файла черезстандартный системный диалог открытия файла. Имя выбранного фала заносится в поле«путь к образу».

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

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

В процессе работы загрузчика пользователь может получить следующие сообщения:

-       «Недопустимая версия Windows» — попытка запуска приложения в старойверсии операционной системы (до Win2k);

-       «Программа уже запущена» выдается при попытке запуск второй копиизагрузчика;

-       «Ошибка монопольного открытия файла» выдается при попытке удалитьфайл образа, используемый в данный момент;

-       «Файл образа был удален» выдается при успешном удалении файла образа;

-       «Сбой в системе» выдается при некорректной работе системы. При получениитакого сообщения для продолжения работы с приложением требуется перезапуск системы;

-       «Некорректный размер образа диска» выдается при создании нового файлаобраза диска в том случае, когда введенное значение равно нулю или больше 4096Мб(4Гб);

-       «Ошибка в записи имени файла» выдается при создании нового файла образадиска в том случае, когда приложение не может создать файл с именем, введенным всоответствующее поле диалогового окна;

-       «Образ диска был создан. Хотите подключить и отформатировать?» — данныйвопрос задается пользователю после завершения выделения места на носителе;

-       «В данный момент загружен другой образ. Выгрузить?» — данный вопросзадается пользователю в случае, когда он пытается загрузить новый образ не выгрузивстарый (при монтировании только что созданного диска);

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

-       «Ошибка при создании файла образа» выдается при создании нового файлаобраза диска в том случае, когда в процессе создания файла произошел какой-либосбой;

-       «Пароль должен содержать не менее 6 символов» выдается в диалоге вводапароля, когда пользователь вводит некорректный пароль.


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

Результатом выполненной выпускной работы является программный продукт,реализующий все запланированные функциональные возможности, сформированные на этапеисследования практической криптографии и написания драйверов устройств в семействеоперационных систем Microsoft Windows. Итоговое программное обеспечение предоставляетпростой в использовании и в то же время удобный способ надежного скрытия конфиденциальнойинформации от посторонних лиц. Благодаря реализованной драйвером интеграции в системупосредством создания виртуальных логических дисков совершенно прозрачно для пользователя,успешная и понятная работа с программой возможна даже для пользователя, имеющеголишь базовые навыки работы с компьютером. Кроме того, реализованный в данной работекриптографический алгоритм Rijndael (AES), обладает высокой криптостойкостью и оченьвысокой скоростью работы.

Некоторые преимущества данного продукта по сравнению с аналогичнымии похожими программными продуктами:

-          Реализован шифр, не имеющий на данный момент слабых мест;

-          Высокая скорость работы при шифровании «на лету»;

-          Благодаря интеграции в систему, работа с зашифрованными данными прозрачнадля пользователя;

-          Очень простой и понятный интерфейс приложения;

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

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

К сожалению, данный продукт имеет и ряд недостатков, которые будут исправленыв ближайшее время:

-          Возможна одновременная работа только с одним образом диска;

-          Внутренняя реализация некоторых алгоритмов недостаточно оптимизирована,что не позволяет шифру работать на полную мощность;

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

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


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

1.        С. Бернет, С.Пейн, «Криптография. Официальноеруководство RSA Security», — М.: Бином-Пресс, 2002 г. – 384 с.: ил.

2.        Джеффри Рихтер, «Windows для профессионалов:создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows»,изд. «Русская редакция», 2000

3.        Брюс Шнайер, «Прикладная криптография2-е издание» (электронная версия)

4.        MSDN Library

5.        Интернет-ресурсы:

www.microsoft.com/ddk/

www.wasm.ru

www.enlight.ru

csrc.nist.gov/

www.pgpru.com

www.sysinternals.com/

kiwibyrd.chat.ru/

еще рефераты
Еще работы по информатике, программированию