47492 (588486), страница 6
Текст из файла (страница 6)
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.1. Назначение программного продукта
Данный программный продукт должен предоставлять надежную криптографическую защиту для конфиденциальной информации, хранящейся на носителе в виде образов виртуальных логических дисков. Программный продукт реализуется в виде двух частей: драйвера и загрузчика. Драйвер отвечает за функции шифрования и взаимодействия виртуального логического диска с системой. Загрузчик предоставляет пользователю интерфейс для управления драйвером, а также функции по созданию образов, монтированию образов на виртуальные логические диски, надежному удалению файлов образов дисков с затиранием содержимого. Работа драйвера после монтирования диска никак не должна зависеть от работы загрузчика.
-
4.2. Назначение и условия применения программного продукта
Данный программный продукт предназначен для криптографической защиты конфиденциальной информации посредством создания виртуальных логических дисков.
Для работы приложения необходимо:
-
операционная система семейства Microsoft Windows не ниже Windows 2000;
-
50 Кб свободного места на жестком диске + файлы образов дисков;
-
Требования к ресурсам оперативной памяти: для загрузчика порядка 4Мб, для драйвера в районе 100Кб.
-
-
4.3. Тестирование программного продукта
Для тестирования программного продукта необходимо выполнить следующие действия (если что-либо будет отличаться от предъявленного, то программа работает некорректно):
-
Запустите загрузчик (Loader.exe). В трее должна появиться иконка приложения
. Вызовите контекстное меню:
-
Выберите пункт меню «Создать образ диска». В появившемся диалоговом окне введите размер диска 200 (Мб), и выберите имя создаваемого файла образа. Имя можно ввести вручную в соответствующее поле, либо выбрать через стандартный системный диалог создания файла, открываемый при нажатии кнопки
. Вид окна после выбора файла и ввода размера:
-
После нажатия кнопки «Создать» загрузчик начнет выделение места под требуемый файл образа. В зависимости от требуемого размера, объема свободного места на выбранном носителе и фрагментации файлов данный процесс может занять до минуты и даже более. Процесс отображается внизу диалогового окна в полосе прогресса. На время создания файла все кнопки диалога блокируются. Также диалог нельзя закрыть стандартными системными способами: через кнопку закрытия окна, комбинацию Alt+F4, соответствующий пункт меню окна. Окно в процессе выделения места:
-
В случае успешного завершения выделения места выдается сообщение с предложением сразу подключить диск и произвести его форматирование. Соглашаемся.
-
Теперь перед непосредственным созданием виртуального диска, загрузкой драйвера и его инициализацией на заданный файл образа необходимо указать параметры выполняемых действий: пароль, который будет применяться при шифровании, и букву создаваемого диска, которую можно выбрать из не занятых в данный момент в системе:
-
После ввода пароля (требования к нему приведены в диалоге) и выбора диска из списка доступных происходит монтирование образа на созданный диск. Диск сразу же становится виден для всех программ, например для трех следующих:
T otal Commander:
Проводник:
WinHex:
-
В принципе с ним уже можно работать, но для этого нужны специализированные программы. А для того, чтобы с диском можно было работать из любых программ как с обычным логическим диском, его нужно отформатировать. Программа сама вызывает диалог форматирования. Нужно только выбрать параметры форматирования:
-
После завершения форматирования диском можно пользоваться как обычным логическим диском. Например, поменять метку диска и скопировать на него какие-нибудь файлы:
-
Кроме того, теперь иконка в трее изменилась на
, показывая, что драйвер загружен и работает (создан виртуальный логический диск).
-
Теперь можно завершить работу загрузчика, выбрав пункт «Выход» его контекстного меню. Работа драйвера никак не зависит от того, запущен ли загрузчик. После завершения работы загрузчика диск по-прежнему полностью функционален. Если снова запустить загрузчик, то иконка сразу же примет вид
, т.к. загрузчик определит, что в системе есть виртуальный диск, работа которого осуществляется через драйвер из данного программного продукта. Работа сторонних программ виртуальных дисков (HDD и CD-ROM) ни как не влияет на работу данного программного продукта.
-
Для выгрузки драйвера и удаления виртуального диска из системы выберите пункт «Выгрузить диск» контекстного меню. В случае, если диск в данный момент используется (к нему происходят обращения), будет выведено соответствующее сообщение:
В данном случае работа с виртуальным диском аналогична работе с flash-дисками, так же требующих отсутствия запросов к ним для их корректного извлечения.
-
Если надобность в образе диска отпала, и он больше не нужен, но данные на нем имеют некоторую ценность, то программа позволяет удалить файл образа диска с предварительным затиранием содержимого нулями. Для этот служит пункт контекстного меню «Удалить образ диска».
Если файл недоступен для операции монопольной записи, то будет выдано соответствующее сообщение. Это защищает систему от удаления файла образа в то время, когда с ним работает драйвер.
-
4.4. Обращение к программе
Для вызова программы необходимо запустить Loader.exe. В системной папке System32\ либо в папке, из которой запускается загрузчик, должен находится файл драйвера acvhdd.sys. Если в системной папке файла драйвера нет, загрузчик сам его туда скопирует.
-
4.5. Руководство пользователя
Приложение-загрузчик не имеет главного окна, т.к. все действия выполняются через контекстное меню:
Пункт «Загрузить образ диска» предназначен для запуска драйвера и монтирования виртуального логического диска в системе. При выборе данного пункта вызывается стандартный диалог выбора файла:
Если есть уже созданный ранее диск, то после его выбора будет отображено диалоговое окно «Ввода пароля и выбора диска»:
В данном диалоговом окне нужно ввести пароль, который был задан при первом подключении данного образа (при создании).
При нажатии кнопки «Принять» и корректности пароля загрузчик создает новый логический диск, который будет «отображением» образа диска из файла. Отображение осуществляется драйвером вне зависимости от того, корректно ли введен пароль или нет. Если был введен некорректный пароль, то просто любые запросы к диску будут приводить к получению некорректных данных. Например, попытка получения содержимого диска (его открытия) приведет к появлению системного сообщения о том, что диск не отформатирован и недоступен. Только в случае ввода корректного пароля все будет работать корректно.
Пункт «Выгрузить диск» предназначен для выгрузки образа диска и удаления виртуального логического диска с последующей выгрузкой драйвера из памяти.
Пункт «Создать образ диска» предназначен для создания нового файла образа диска:
Поле «размер диска» задает размер диска в мегабайтах (Мб) в пределах от 1Мб, до 4096Мб (4Гб). Ограничение на 4Гб поставлено из-за ограничений файловой системы FAT32. В дальнейшем данное ограничение будет снято.