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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ых: соль + пароль входа в систему + логин входа в систему + соль + id USB-ключа.

На этом процедура создания USB-ключа завершена. Общая схема USB-ключа представлена на Рисунке 11.

Рисунок 11 - Схема USB-ключа.

.6 Вход в систему

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

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

Первым шагом проверяется лимит попыток входа: если более трех попыток - происходит завершение программы.

Выбранный пользователем USB проверяется на причастность к USB-ключам.

Если все вышеперечисленные этапы успешно пройдены, происходит подсчет целостности зашифрованных полей USB-ключа (CRC64_1). При совпадении происходит проверка введенных пользователем логина-пароля - для этого рассчитывается контрольный хэш (ControlHash) и сверяется со значением на USB-ключе.

Затем происходит генерация хэша доступа (LiteKey) и S-key, которыми расшифровываются зашифрованные поля USB-ключа. Происходит генерация нового значения сеансового счетчика. После чего генерируется новый S-key, которым перезашифровывается поле ключей шифрования и вектора инициализации. Также старым хэшем доступа (LiteKey) зашифровывается сеансовый счетчик. Вычисляется новая контрольная сумма (CRC64_2).

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

.7 Основные модули программы

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

-CryptoAPI - данный модуль используется для вычисления хэш-суммы SHA-512 (FIPS PUB 180-2). Модуль взят из библиотеки HashLib! 1.03 ((C) Alex Demchenko, 2002, Moldova, Chishinev) и видоизменен в целях удобства интеграции в программу;

-CRC64 - данный модуль используется для вычисления контрольной суммы CRC64;

-RC6 - данный модуль используется для шифрования/расшифрования файлов по алгоритму RC6;

-IDEA - данный модуль используется для шифрования/расшифрования файлов по алгоритму IDEA;

-FolderActions - модуль обеспечивает создание архива;

-Unit3 - модуль позволяет создать новый USB-ключ;

.7.1 Модуль вычисления контрольной суммы

Модуль CRC64.pas позволяет вычислить контрольную сумму CRC64 файла. Основные применяемые функции и процедуры представлены в таблице 1.

Таблица 1 - Основные функции и процедуры модуля CRC64.pas

Входные данныеВыходные данныеОписаниеCRC64Streamconst Source: TStream - имя файла от которого берется сумма; Count: Integer - размер этого файла; const BufSize: Cardinal = 1024 - размер выделенного буфераCRC64Stream: Int64 - итоговая контрольная сумма файлаОсновная функция модуля - выполняет подсчет контрольной суммы файла CRC64Nextconst Data - входные данные для расчета промежуточного значения контрольной суммы; const Count: Cardinal - значение промежуточного счетчика.CRC64: Int64 - итог вычислений.Вычисление промежуточных данных

.7.2 Модуль алгоритма шифрования RC6

Модуль RC6.pas позволяет производить шифрование, расшифрование файлов по алгоритму RC6. Основные применяемые функции и процедуры представлены в таблице 2.

Таблица 2 - Основные функции и процедуры модуля RC6.pas

Функция или процедураВходные данныеВыходные данныеОписаниеCalculateSubKeysKeyPtr: PChar - исходный ключ шифрования.S: array[0..KeyLength-1] of LongWord - развернутый подключ шифрования;Процедура выполняет разворачивание основного ключа шифрования на раундовые подключи. DecipherBlockBlock: array[1..4] of LongWord - входной блок данных.DecipherBlock: Boolean - успешное или незавершенное расшифрование блока данных.Выполняется расшифрование одного блока входных данных по алгоритму RC6.EncipherBlockBlock: array[1..4] of LongWord - входной блок данных.EncipherBlock: Boolean - успешное или незавершенное расшифрование блока данных.Выполняется шифрование одного блока входных данных по алгоритму RC6.EncryptCopyDestStream, SourseStream: TStream - итоговый и исходный потоки для шифрования; Count: Int64 - размер потока данных; Key : string - ключ шифрования.EncryptCopy: Boolean - успешное или аварийное завершение работы.Шифрование одного потока данных в другой согласно алгоритму RC6.DecryptCopyDestStream, SourseStream: TStream - итоговый и исходный потоки для расшифрования; Count: Int64 - размер потока данных; Key : string - ключ расшифрования.DecryptCopy: Boolean - успешное или аварийное завершение работы.Расшифрование одного потока данных в другой согласно алгоритму RC6.EncryptStreamDataStream: TStream - поток данных для шифрования; Count: Int64 - размер потока; Key: string - ключ шифрования; KCONST: Array of cardinal - вектор инициализации.EncryptStream: Boolean - успешное или аварийное завершение работы.Выполняет шифрование одного потока данных согласно алгоритму RC6.DecryptStreamDataStream: TStream - поток данных для расшифрования; Count: Int64 - размер потока; Key: string - ключ расшифрования; KCONST: Array of cardinal - вектор инициализации.DecryptStream: Boolean - успешное или аварийное завершение работы.Выполняет расшифрование одного потока данных согласно алгоритму RC6.InitializeAKey: string - ключ шифрования.KeyPtr : PChar - развернутый ключ.Производит разворачивание ключа шифрования до 64 байт.

3.7.3 Модуль алгоритма шифрования IDEA

Модуль IDEA.pas позволяет производить шифрование, расшифрование файлов по алгоритму IDEA. Основные применяемые функции и процедуры представлены в таблице 3.

Таблица 3 - Основные функции и процедуры модуля IDEA.pas

Функция или процедураВходные данныеВыходные данныеОписаниеCalculateSubKeysFKeyPtr: PChar - исходный ключ шифрования; FKeySize: Integer - размер ключа.pz: PWord;- развернутый подключ шифрования;Процедура выполняет разворачивание основного ключа шифрования на раундовые подключи. D