При запуске программы происходит поиск устройств, которые являются USB-ключами и открывается форма входа в программу. Если пара логин-пароль введена верно и выбранный USB-ключ корректен, происходит вход в систему. Пользователю предоставляется три попытки входа в систему, по исчерпанию которых происходит принудительное завершение работы программы. На каждую попытку входа отводится определенный лимит времени, по исчерпании лимита происходит принудительное завершение работы.
Далее система ожидает получение очередной команды от пользователя и обрабатывает ее в зависимости от ее назначения. Пользователь может выбрать опцию шифрования/расшифрования файла или папки файлов, при этом будет создан файловый контейнер. В случае создания контейнера пользователю предоставляется возможность предварительной архивации файлов.
Общая схема программного средства представлена на Рисунке 10.
Вход в систему Создание USB-ключа
Нет
Да Да
Рисунок 10 - Общая схема программного средства.
.5 Создание USB-ключа и нового пользователя
Если программа запущена в первый раз или пользователь выбрал команду «Создать USB-ключ», запускается процедура создания USB-ключа.
На первом шаге от пользователя требуется ввести свои личные данные (Фамилию и Имя), логин и пароль для входа в систему, а также указать USB. Затем происходит проверка верности введенных данных. Требования следующие:
- длина фамилии от 7 до 50 символов;
- длина имени от 2 до 30 символов;
- длина логина от 5 до 50 символов;
- длина пароля от 8 до 30 символов.
При этом в режиме реального времени (во время ввода данных в информационные поля) происходит оценка надежности пароля, или соответствия при повторе пароля.
Если все данные введены верно, генерируется S-key: вычисляется хэш-функция в 512 бит от <сеансовый счетчик> + <соль> + <логин> + <соль> + <пароль> + <соль> + < id USB-ключа>.
Случайным образом генерируются ключи шифрования и константа шифрования: 256-битный ключ для алгоритма RC6, 128-битный для алгоритма IDEA и 128-бит вектора инициализации. Вычисляется контрольная сумма от этих данных (CRC64_2). После чего ключи шифрования и вектор инициализации шифруется S-key путем наложения гаммы.
Берется временная метка - дата создания USB-ключа. Производится вычисление хэша доступа (LiteKey) - SHA-512 от следующих данных: логин входа в систему + пароль входа в систему + соль + id USB-ключа. При помощи хэша доступа (LiteKey) шифруются поля данных: контрольная сумма (CRC64_2), сеансовый счетчик, временная метка.
Затем от зашифрованных полей вычисляется контрольная сумма (CRC64_1).
Вычисляется контрольный хэш (ControlHash) - SHA-512 от следующих данных: соль + пароль входа в систему + логин входа в систему + соль + id USB-ключа.
На этом процедура создания USB-ключа завершена. Общая схема USB-ключа представлена на Рисунке 11.