Н. И. Лиманова Должность Уч степень, звание Подпись


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



страница6/8
Дата09.08.2018
Размер0.51 Mb.
#43720
1   2   3   4   5   6   7   8

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


В качестве языка программирования был выбран язык C#. Главными причинами к этому послужило то, что язык C# обладает следующими качествами:

  • Высокая скорость разработки;

  • большое количество библиотек, предназначенных для решения всевозможных задач;

  • удобство сборки и отладки;

В качестве среды программирования была выбрана Visual Studio 2017, поскольку является самой удобной средой для разработки .Net приложений.

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


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

2.4 Формирование требований к программному обеспечению


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

В программе должны присутствовать следующие алгоритмы шифрования: AES (Rijndael), Threefish и ГОСТ 28147-89 (Магма).

Минимальные требования к составу и параметрам технических средств:


  • Персональный IBM-совместимый компьютер с процессором Pentium 4 или Athlon с тактовой частотой от 800 МГц, объемом оперативной памяти от 256 Мбайт и жестким диском размером от 50 Гбайт;

  • Монитор и видеоадаптер, позволяющие работу в графическом режиме с разрешением экрана от 800х600 пикселей и обеспечивать частоту обновления экрана не менее 60 Гц;

  • Объем дискового пространства для программы не менее 15 Мбайт;

3 Разработка программы

3.1 Использованные при разработке библиотеки

3.1.1 EldoS Solid File System


Solid File System является реализацией файловой системы, использующей один файл на носителе (диск, запись БД, память) для хранения данных. Может использоваться для сохранения целостности данных, хранения метаданных и версий одного потока информации. SolFS поддерживает журналирование, неограниченный размер хранилища, сжатие и шифрование данных. [11]

Основные преимущества:



  • Возможность выбора оптимального размера страницы.

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

  • Возможность дополнения стандартных файловых атрибутов собственными.

  • Отсутствие ограничений на одновременный доступ к различным хранилищам, а также на одновременный доступ из нескольких порожденных процессов.

  • Независимость от контейнера и платформы.

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

  • Журналирование операций.

  • Встроенные средства контроля целостности, восстановления и оптимизации.

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

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

Разработчики современных мультимедийных приложений (в первую очередь игровых), оперирующих большим количеством файлов, сталкиваются с проблемой эффективного хранения и доступа к данным. Не вдаваясь глубоко в подробности, отметим одну особенность организации многих файловых систем, вследствие которой любому файлу вне зависимости от его размера выделяется не менее одного кластера (это не всегда так для NTFS: файлы длиной несколько сотен байт могут храниться целиком в служебной области MFT, не занимая ни одного кластера), состоящего из N идущих подряд секторов стандартной емкости (512 байт для HDD, 2048 для CD/DVD). На больших дисковых разделах значение N может быть достаточно велико, как следствие, объем фактически занимаемого файлом дискового пространства может в десятки и даже сотни раз превышать объем хранимой в этом файле полезной информации. Такая избыточность оправданна в случае, когда предполагается рост размера файла, что, в частности, характерно для лог-файлов.

На примере некоторых CD-энциклопедий, содержащих тысячи небольших файлов в одной директории, хорошо заметны снижение скорости доступа к данным, а также низкая эффективность использования дискового пространства. Очевидно, для многих задач можно подобрать значение N, близкое к оптимальному, беда лишь в том, что размер кластера определяется на этапе форматирования раздела и, хотя существуют специализированные утилиты, позволяющие изменить размер кластера без переформатирования, отнюдь не каждое приложение может на специально для него подготовленный дисковый раздел. В случае же использования SolFS понятие кластера становится неактуальным: атомом данных в пределах контейнера является страница (ближайшая аналогия — сектор), требуемый размер которой можно легко выбрать сообразно специфике конкретного приложения и тем самым оптимизировать доступ к данным.

Рассматриваемое решение весьма примечательно своей гибкостью: файловая система создается практически в любом контейнере, будь то файл, запись в базе данных или просто выделенная область памяти. Кроме того, получить доступ в организованное с помощью SolFS хранилище данных могут приложения, работающие под различными платформами: Windows, Unix/Linux, .NET и PDA, при этом версия Embedded Edition доступна в виде исходных текстов, соответствующих стандарту ANSI C, что дает возможность компиляции в экзотической среде. Подобная всеядность должна заметно облегчить жизнь разработчикам, занятым в кроссплатформенных проектах.

3.1.2 .NET DiscUtils


.NET DiscUtils — open source-библиотека .NET Framework для доступа и работы с образами виртуальных дисков. Библиотека полностью написана на C#, и доступна на сайте Microsoft CodePlex. [12]

.NET DiscUtils поддерживает несколько форматов образов дисков, схем выделения разделов и файловых систем Windows.

Форматы дисковых образов: VHD, VMDK, VDI, ISO, UDF, SDI, WIM, необработанные образы дисков (IMA, IMG, VFD, FLP).

Схемы выделения разделов: таблица разделов BIOS, таблица разделов GUID, диспетчер логических дисков.

Файловые системы: FAT, FAT32, NTFS.

В файловых системах FAT и FAT32 отсутствует поддержка длинных имён файлов.



3.1.3 Dokan


Dokan — это драйвер, работающий на уровне ядра Windows, с которым могут взаимодействовать любые приложения из userspace. [13]

Драйвер существует как для 32-ух разрядный систем, так и для 64-ех разрядных. Драйвер не несет в себе реализацию какой-либо файловой системы, а лишь выступает в роли прокси, пропуская через себя все операции ввода-вывода (IO) из ядра ОС в userspace.

Реализация функционала файловой системы лежит на программисте, он создает базовые функции файловой системы, такие как открытие/закрытие файла, чтение из файла, запись в файл и т.д., которые будут вызываться драйвером Dokan при возникновении в системе соответствующих событий. В момент регистрации разрабатываемой файловой системы в драйвере Dokan, программист указывает некоторые параметры работы файловой системы (количество потоков-обработчиков операций ввода/вывода, точка монтирования файловой системы (Dokan поддерживает монтирование в качестве съемного или сетевого диска и только в корень файловой системы), автоматическое размонтирование файловой системы, в случае ошибок в работе, и некоторые другие параметры). После этого в операционной системе появляется новый диск в корне файловой системы, с которым любые приложения и сама ОС взаимодействует, как и с обычным диском. Какие операции разрешено производить в данной файловой системе, зависит только от разработчика этой системы.

DokanNet – это обертка над драйвером Dokan. Позволяет разрабатывать свою файловую системы на managed-коде. DokanNet описывает интерфейс DokanOperations, который необходимо реализовать для регистрации разрабатываемой файловой системы в драйвере Dokan. Автор DokanNet вместе с исходными кодами самого проекта положил 2 примера работы с данной оберткой:



  • DokanNetMirror — файловая система-зеркало уже существующего каталога.

  • RegistoryFS — файловая система, представляющая структуру системного реестра Windows в директории и файлы.

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

Реализация интерфейса DokanOperations сводится к реализации следующих функций:



  • CreateFile — создание файлов/директорий.

  • OpenDirectory — открытие директории.

  • CreateDirectory — создание директории.

  • Cleanup — удаление файла/пустой директории.

  • CloseFile — закрытие файлового дескриптора.

  • ReadFile — чтение части файла указанной длины с указанным смещением.

  • WriteFile — запись данных в файл с указанным смещением.

  • FlushFileBuffers — очистка буферов (кэша) файла.

  • GetFileInformation — получение информации о размере, атрибутах, времени создания/последнего доступа/модификации файла/директории.

  • FindFiles — получение списка файлов/директорий в указанной директории.

  • SetFileAttributes — установка атрибутов файла/директории.

  • SetFileTime — установка времени создания/последнего доступа/модификации файла/директории.

  • DeleteFile — пометка файла на удаление (удаление проводится в Cleanup).

  • DeleteDirectory — пометка директории на удаление (удаление проводится в Cleanup)

  • MoveFile — перемещение/переименование файла/директории.

  • SetEndOfFile — установка размера файла (используется при создании пустого файла определенной длины).

  • SetAllocationSize — автор не указал для чего необходима данная фун-ция, на практике передача управления в нее не замечена.

  • LockFile — блокировка файла в single-доступе.

  • UnlockFile — снятие блокировки.

  • GetDiskFreeSpace — получение информации о количестве доступного/общего/свободного места в файловой системе.

  • Unmount — размонтирование/отключение файловой системы.



3.1.4 Bouncy Castle


Bouncy Castle — это программная библиотека, в которой представлен обширный функционал из области криптографии. Существуют реализации библиотеки на языках программирования Java и C#. Библиотека включает в себя как реализации большого числа криптографических функций, так и поддержку стандартных высокоуровневых криптографических API соответствующих платформ, а также содержит низкоуровневые проприетарные API для более гибкого и эффективного доступа к функционалу. [14]

Bouncy Castle был создан в Австралии и американские ограничения на экспорт криптографических алгоритмов на него не распространяются.

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

Криптопровайдер, совместимый с JCE, построен на низкоуровневом API. Таким образом, исходный код криптопровайдера JCE может служить примером того, как решить многие «насущные» проблемы криптографии, используя низкоуровневый API.



Каталог: sites -> store -> ЭИОС -> ВКР%202017%20год
ВКР%202017%20год -> В. Н. Тарасов Должность Уч степень, звание Подпись
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись
ВКР%202017%20год -> Информатика и вычислительная техника
ВКР%202017%20год -> Н. И. Лиманова Должность Уч степень, звание Подпись
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись
ВКР%202017%20год -> Информационных систем и технологий
ВКР%202017%20год -> Н. Ф. Бахарева Должность Уч степень, звание Подпись
ВКР%202017%20год -> Актуальность. В общедоступном значении слова маршрутизация означает передвижение информации от источника к пункту назначения через объединенную сеть. При этом, как правило, на пути встречается по крайней мере один узел
ВКР%202017%20год -> В. Г. Карташевский Должность Уч степень, звание Подпись
ВКР%202017%20год -> М. В. Новикова Должность Уч степень, звание Подпись


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница