Разработка ПО для защиты данных
Требования к криптосистемам. Режимы и алгоритмы шифрования. Обоснование необходимости разработки программного продукта. Формирование требований к программному обеспечению. Использованные при разработке библиотеки. Разработка пользовательского интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
2
Размещено на http://www.allbest.ru/
2
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1 Теоретические основы криптографии
- 1.1 Задачи криптографии
- 1.2 Работа криптографии
- 1.3 Требования к криптосистемам
- 1.4 Режимы шифрования
- 1.5 Алгоритмы шифрования
- 2 Проектирование программы
- 2.1 Обоснование необходимости разработки программного продукта
- 2.2 Обоснование выбора языка и среды программирования
- 2.3 Обоснование выбора платформы
- 2.4 Формирование требований к программному обеспечению
- 3 Разработка программы
- 3.1 Использованные при разработке библиотеки
- 3.2 Структура программы
- 3.3 Разработка пользовательского интерфейса
- 4 Использование программы
- 4.1 Руководство пользователя
- Заключение
- Список использованных источников
- Приложение
криптосистема шифрование программный библиотека
Введение
Криптография возникла как наука о методах шифрования, и долгое время именно шифрование (т.е. защита передаваемых или хранимых данных от несанкционированного чтения) оставалась единственной проблемой, изучаемой криптографией. Однако в последнее время, в связи с бурным развитием информационных технологий, возникло множество новых применений, напрямую не связанных с сокрытием секретной информации.
Необходимость применения криптографических методов вытекает из условий, в которых происходит хранение и обмен информацией. В современных информационных системах очень часто происходит обмен данными в коллективах, члены которых не доверяют друг другу. В качестве примеров можно привести подписание контрактов или других документов, финансовые операции, совместное принятие решений и т.п. В таких ситуациях необходимы средства, гарантирующие, что в процессе обмена или хранения информация не будет подвергнута искажениям, или не будет подменена целиком.
Целью данной выпускной квалификационной работы является создание программы для прозрачного шифрования данных с интеграцией в проводник Windows.
Задачей выпускной квалификационной работы является разработать программу с учетом следующих требований:
- простой интерфейс;
- интеграция в оболочку Windows;
- поддержка нескольких алгоритмов шифра;
Актуальностью данной работы является тот факт, что доступное на данный момент программное обеспечение для шифрования не всегда удовлетворяет пользователей по каким-либо параметрам.
Объектом исследования является принципы разработки программы для шифрования с использованием различных библиотек и решений на базе языка программирования C#.
Предметом исследования является разработка приложения, которое даст возможность хранить информацию в криптозащищенном контейнере.
В качестве методологической основы исследования были использованы сетевые ресурсы с научными статьями, сайты направленные на обучение работы с библиотеками, также были изучены литературные источники о проектировании программного обеспечения, объектно-ориентированном подходе для разработки приложений.
В первой главе была рассмотрена теоретическая часть, относящаяся к криптографии, криптографическим системам, а также режимам и алгоритмам шифрования.
Во второй главе были определены требования для разрабатываемой программы, сформулировано обоснование необходимости разработки программного продукта, описан выбор языка и среды программирования. Было рассмотрено обоснование выбора операционной системы и сформированы требования к программному обеспечению.
В третьей главе описывается разработка программы: структура, модули и использованные при разработке программы библиотеки.
В четвертой главе было представлено руководство пользователя.
1 Теоретические основы криптографии
1.1 Задачи криптографии
Основные задачи криптографии заключаются в следующем:
- Обеспечение конфиденциальности данных (предотвращение несанкционированного доступа к данным). Это одна из основных задач криптографии, для ее решения применяется шифрование данных, т.е. такое их преобразование, при котором прочитать их могут только законные пользователи, обладающие соответствующим ключом.
- Обеспечение целостности данных -- гарантии того, что при передаче или хранении данные не были модифицированы пользователем, не имеющим на это права. Под модификацией понимается вставка, удаление или подмена информации, а также повторная пересылка перехваченного ранее текста.
- Обеспечение аутентификации. Под аутентификацией понимается проверка подлинности субъектов (сторон при обмене данными, автора документов, и т.д.) или подлинности самой информации. Частным случаем аутентификации является идентификация -- процедура доказательства субъектом того, что он действительно является именно тем, за кого себя выдает. Во многих случаях субъект X должен не просто доказать свои права, но сделать это так, чтобы
- проверяющий субъект (Y) не смог впоследствии сам использовать полученную информацию для того, чтобы выдать себя за X. Подобные доказательства называются «доказательствами с нулевым разглашением».
- Обеспечение невозможности отказа от авторства -- предотвращение возможности отказа субъектов от совершенных ими действий (обычно -- невозможности отказа от подписи под документом). Эта задача неотделима от двойственной -- обеспечение невозможности приписывания авторства.
Наиболее яркий пример ситуации, в которой стоит такая задача -- подписание договора двумя или большим количеством лиц, не доверяющих друг другу. В такой ситуации все подписывающие стороны должны быть уверены в том, что в будущем, во-первых, ни один из подписавших не сможет отказаться от своей подписи и, во-вторых, никто не сможет модифицировать, подменить или создать новый документ (договор) и утверждать, что именно этот документ был подписан.
Основным способом решения данной проблемы является использование цифровой подписи.
1.2 Работа криптографии
Криптография предоставляет возможность преобразовать информацию таким образом, что восстановить информацию возможно только при условии того, что известен ключ [1].
В качестве шифрованной и дешифрованной информации, будут рассматриваться тексты, построенные с использованием некоторого алфавита. Под этими терминами понимается следующее.
Алфавит - определенное количество знаков, используемых для кодирования информации.
Текст -элементы алфавита в определенном для каждого случая порядке.
Шифрование - преобразование исходного текста или открытого текста на шифрованный текст с помощью ключа.
Рис. 1.1 - Схема шифрования
Расшифрование - процесс обратный шифрованию.
Рис. 1.2 - Схема расшифрования
Ключ - информация, применимая для шифрования и дешифрования текстов.
Составление и распределение ключей между пользователями или распределение ключей и управление ключами относятся к процессам системы обработки информации.
Криптостойкость шифра - стойкость к расшифрованию без знания ключа (т.е. стойкость к криптоанализу).
Криптографическое преобразование производится по соответствующему алгоритму и значению ключа.
Эффективность шифрования зависит от того, на сколько достигнута тайна сохранения ключа и криптостойкость шифра. [1]
1.3 Требования к криптосистемам
Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования [2]:
- Зашифрованное сообщение должно поддаваться чтению только при наличии ключа;
- количество операций, необходимых для определения использованного ключа по части шифрованного сообщения и соответствующего ему исходного текста, должно быть не менее общего числа возможных ключей;
- число операций, необходимых для расшифрования сходной информации путем брутфорса (перебором всевозможных ключей) должно иметь строгую нижнюю оценку и выходить за пределы вычислительных возможностей современных компьютеров;
- знание алгоритма шифрования не должно влиять на надёжность защиты;
- любое изменение ключа должно приводить к существенному изменению вида зашифрованной информации;
- структурные элементы алгоритма шифрования должны быть неизменными;
- дополнительные биты, вводимые в сообщение в процессе шифрования, должен быть полностью и надежно скрыты в шифрованном тексте;
- отсутствие простых и легко устанавливаемых зависимостей между ключами, последовательно используемыми в процессе шифрования;
- абсолютно любой ключ из множества возможных должен обеспечивать надежную защиту информации;
- алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования.
1.4 Режимы шифрования
Существует пять основных режимов шифрования, которые представлены в документе [3], изданном НИСТ США и озаглавленном «Рекомендации для режимов шифрования с блочным шифром»:
1. ECB (Electronic Code Book) - электронная кодовая книга;
2. CBC (Cipher Block Chaining) - сцепление блоков по шифротексту;
3. CFB (Cipher Feed Back) - обратная загрузка шифротекста;
4. OFB (Output Feed Back) - обратная загрузка выходных данных;
5. CTR (Counter) - шифрование со счетчиком.
Основными режимами шифрования являются первые четыре режима. Последний режим (CTR) появился спустя три года после принятия первого стандарта шифрования. [2]
В шифре ГОСТ 28147-89 отсутствует режим OFB, а соотнести названия режимов с классификацией НИСТ можно следующим образом [2]:
1. ECB (Electronic Code Book) - режим простой замены;
2. CBC (Cipher Block Chaining) - режим выработка имитовставки;
3. CFB (Cipher Feed Back) - режим гаммирования с обратной связью;
4. CTR (Counter) - режим гаммирования.
Рис. 1.3 - Шифрование в режиме ECB
В режиме ECB шифрование/дешифрование -го блока открытого текста/шифротекста выполняется независимо от остальных блоков:
, |
(1.1) (1.2) |
где - номера блоков;
- блок зашифрованного текста;
- блок открытого текста;
- функция блочного шифрования.
Недостатком режима ECB является то, что одинаковые блоки входного текста будут кодироваться в одинаковые блоки шифротекста, что делает возможным предполагать о характере информации в открытом тексте и подменять один или несколько блоков шифротекста. [4]
Достоинством режима является простота реализации и простота шифрации.
Рис. 1.4 - Шифрование в режиме CBC
Режим CBC имеет алгоритмы шифрации/дешифрации:
, |
( ( ( |
где - номера блоков;
- ключ;
- вектор инициализации;
- блок зашифрованного текста;
- блок открытого текста;
- функция блочного шифрования.
В режиме CBC берется не только ключ и открытый текст, но и генерируется случайное число, которое не является секретным и имеет размер с блок. Называется оно инициализационным вектором. [5]
При шифровании первого блока берется инициализационный вектор, складывается по модулю 2 с открытым текстом и шифруется. На выходе -- шифротекст. Дальше складывается полученный шифротекст по модулю 2 со вторым блоком и шифруется. На выходе -- второй блок шифротекста. Далее он складывается по модулю 2 с третьим блоком открытого текста и шифруем. На выходе получается третий блок шифротекста. Здесь видно сцепление: каждый следующий блок сцепляется с предыдущим.
Рис. 1.5 - Шифрование в режиме CFB
В режиме CFB также происходит «маскировка» блока открытого текста уже зашифованными блоками:
, |
где - номера блоков;
- ключ;
- вектор инициализации;
- блок зашифрованного текста;
- блок открытого текста;
- функция блочного шифрования.
Возможности режима CFB и режима CBC похожи. Отличия в том, что если в режиме CBC длина сообщения не кратна размеру блока шифра, то добавляются дополнительные биты в последний блок и производится информирование принимающей стороны об истинном размере сообщения, а в режиме CFB формируется шифротекст того же размера, что и исходное сообщение.
Рис. 1.6 - Шифрование в режиме OFB
Рис. 1.7 - Расшифрование в режиме CFB
В режиме OFB исходное сообщение вообще не подвергается криптопреобразованию, оно складывается с шифруемыми на секретном ключе блоками ( является задаваемым несекретным параметром режима):
, |
где - номера блоков;
- ключ;
- вектор инициализации;
- ключевой блок;
- блок зашифрованного текста;
- блок открытого текста;
- функция блочного шифрования.
Схожесть режима OFB и режима ECB в том, что ошибки, возникающие при передаче шифротекста по каналам связи, находятся в блоке, не затрагивая соседние, а в режиме OFB с ошибками будут только биты, которые были изменены (в ECB изменится весь блок). Злоумышленник может незаметно для принимающей стороны подменить блок шифротекста.
Возникают трудности распараллеливания процедур шифрации и дешифрации. [6]
1.5 Алгоритмы шифрования
В настоящее время выделяют несколько наиболее популярных и криптоустойчивых алгоритмов шифрования: AES (Rijndael), Threefish, а также распространённый в России ГОСТ 28147-89 (Магма).
1.5.1 Алгоритм AES
В AES был поиск нового стандарта шифрования как альтернатива, но более надежная, таких алгоритмов как DES и IDEA, криптостойкость которых вызвала сомнение и их признали ненадежными. [7]
На конкурсной основе был выбран новый стандарт шифрования Advanced Encryption Standard (AES) или Rijndael - симметричный алгоритм блочного шифрования с переменной длиной блока и переменной длиной ключа. Длина ключа и блока независимы в 128, 192 или 256 бит. Алгоритм использует линейно-подстановочные преобразования и состоит из 10, 12 или 14 раундов в зависимости от длины ключа (соответственно 128, 192 и 256 бит). Блок данных, обрабатываемый с использованием алгоритма Rijndael, делится на массивы байтов, и каждая операция шифрования является байт-ориентированной [8].
Раунд алгоритм Rijndael основан на использовании структуры типа SP-сеть (подстановочно-перестановочная сеть) - одна из блочного шифра, предложенная в 1971 году Хорстом Фейстелем. Преобразование каждого раунда состоит из четырех разных преобразований, или слоев. Каждый в отдельности слой с собственной функцией разрабатывался с учетом противодействия линейному и дифференциальному криптоанализу. [9]
Алгоритм AES очень хорошо реализуется как аппаратно так программно в большом диапазоне окружений, требования к памяти небольшие, пригоднен для окружений с ограниченными ресурсами.
1.5.2 Алгоритм Threefish
Threefish с простой структурой и может быть альтернативой алгоритмов блочного шифрования, является быстрым и гибким шифром, имеет произвольный режим шифрования. Threefish не использует S-блоки. Он использует комбинации инструкций повторяющегося сдвига, сложения и исключающего или.
Как и AES, Threefish реализован в виде подстановочно-перестановочной сети на обратимых операциях, не являясь шифром сети Фейстеля.
Алгоритм использует tweak-значения, своего рода вектора инициализации, позволяя изменять значение выхода, без изменения ключа, что положительно как для реализации новых режимов шифрования, так и на криптостойкости алгоритма.
Несколько сложных раундов чаще хуже применения большого числа простых раундов, алгоритм имеет большое число раундов -- 72 или 80 при ключе 1024 бит, но по заявлению создателей, его характеристики по скорости опережают примерно в два раза AES. Это утверждение верно, если используется 64-разрядная архитектура (по причине 64-битной структуры шифра), а на 32-разрядных процессорах демонстрирует значительно худшие результаты.
Ядро шифра простая функция «MIX», которая преобразует два 64-битных беззнаковых числа, происходит сложение, циклический сдвиг (ROL/ROR), и сложение по модулю 2 (XOR).
Создатели утверждают, что алгоритм имеет более высокий уровень безопасности, чем AES. Существует атака на 25 из 72 раундов Threefish, в то время как для AES -- на 6 из 10. Threefish имеет показатель фактора безопасности 2.9, в свою очередь, AES всего 1.7 [9].
Для достижения полной диффузии, шифру Threefish-256 достаточно 9 раундов, Threefish-512 -- 10 раундов и Threefish-1024 -- 11 раундов. Это говорит о том, что 72 и 80 раундов соответственно в среднем, обеспечат лучшие результаты, чем существующие шифры.
Необходимую стойкость обеспечивает выполнение 72-80 раундов с алгоритмом простой структуры и функции преобразования, а размер ключа от 256 до 1024 бит сводит на нет возможность полного перебора паролей при так называемой атаке грубой силой (brute force attack) на современном оборудовании.
1.5.3 Алгоритм ГОСТ 28147-89
Алгоритм ГОСТ используется в качестве государственного стандарта в Российской Федерации.
Алгоритм предусматривает процесс формирования имитовставки. Этот процесс одинаков для любого из режимов шифрования данных. Имитовставка -- криптографическая контрольная комбинация, предназначенная для защиты шифрограммы от изменений (случайных, вызванных помехами, или преднамеренных, обусловленных несанкционированным вмешательством). Имитовставка представляет собой блок из двоичных символов, который вырабатывается либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию и не зашифровываться. [10]
Для получения имитовставки открытые данные, представленные первым 64-разрядным блоком подвергаются преобразованию, соответствующему первым 16 циклам алгоритма шифрации в режиме простой замены. При этом в качестве ключа для выработки имитовставки используется ключ, по которому шифруются данные.
Полученное после 16 циклов работы 64-разрядное число суммируется по модулю 2 со вторым блоком открытых данных. Результат суммирования снова подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены.
Сформированное таким образом 64-разрядное число суммируется по модулю 2 с третьим блоком открытых данных и т. д. Последний блок, при необходимости дополненный до полного 64-разрядного блока нулями, суммируется по модулю 2 с результатом работы на N -- 1 шаге, после чего зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного 64-разрядного числа выбирается отрезок имитовставки длиной р бит.
Использование алгоритмом ГОСТ 28147 -- 89 имитовставки повышает его стойкость к подделкам и искажениям.
2 Проектирование программы
2.1 Обоснование необходимости разработки программного продукта
Необходимость разработки данной программы обоснована тем, что достаточно мало программ похожего действия, да и то они имеют один или несколько из следующих недостатков:
- Стоимость программ может достигать сотен долларов, что неприемлемо для массового распространения;
- Шифрование реализовано через собственный графический интерфейс пользователя, а не через интеграцию с системой, что резко сужает область применения данного программного продукта;
- Неоднозначный, зачастую непонятный интерфейс, либо слишком большое нагромождение различных функций;
- Необоснованно большой объем программного продукта вследствие добавления функций, не имеющих отношения к основной функции - шифрованию.
Исходя из этого, я решил взять именно эту тему и реализовать надежный, бесплатный и интуитивно понятный в использовании продукт.
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.
3.2 Структура программы
Основными структурными элементами программы являются:
- src/Classes/Chiper/BaseChiper.cs - базовый абстрактный класс для реализации шифра (табл. 3.1);
- src/Classes/Chiper/Rijndael.cs - класс шифра Rijndael (AES);
- src/Classes/Chiper/Threefish.cs - класс шифра Threefish;
- src/Classes/Chiper/Gost.cs - класс шифра ГОСТ 28147-89;
- src/Classes/Chiper/None.cs - класс шифра, не выполняющий шифрование;
- src/Models/DiskUtils/ContainerModel.cs - класс модели, реализующий функционал управления контейнерами;
- src/Models/FUSE/Dokan.cs - proxy-класс файловой системы, реализующий взаимодействие с контейнерами, созданными с помощью библиотеки DiscUtils (табл. 3.2);
- src/Models/FUSE/DokanSolFS.cs - proxy-класс файловой системы, реализующий взаимодействие с контейнерами, созданными с помощью библиотеки EldoS Solid File System;
Таблица 3.1 Основные методы и поля класса «src/Classes/Chiper/BaseChiper.cs»
Метод или поле |
Входные данные |
Выходные данные |
Описание |
|
IBlockCipher engine |
- |
- |
Класс шифра. |
|
ICipherParameters param |
- |
- |
Параметры шифра, включает в себя бинарный ключ и инициализирующий вектор (опционально). |
|
BufferedBlockCipher EncodeCipher |
- |
- |
Класс-обработчик входных данных с последующим их преобразованием. Настроен на шифрование. |
|
BufferedBlockCipher DecodeCipher |
- |
- |
Класс-обработчик входных данных с последующим их преобразованием. Настроен на расшифрование. |
|
void Init() |
- |
- |
Инициализация полей данного класса. |
|
byte[] Encrypt( byte[] data) |
data: массив байт, представляющий исходные данные в бинарном формате. |
массив байт, представляющий зашифрованные данные. |
Шифрование данных. |
|
byte[] Decrypt( byte[] data) |
data: массив байт, представляющий зашифрованные данные в бинарном формате. |
массив байт, представляющий исходные данные. |
Расшифрование данных. |
|
byte[] GetHash( byte[] data, byte[] key, int length) |
data: массив байт, представляющий данные для хеширование; key: соль; length: необходимая длина хеша |
Результат хеширования |
Хеширование |
Таблица 3.2 Основные методы и поля класса «src/Models/FUSE/Dokan.cs»
Метод или поле |
Входные данные |
Выходные данные |
Описание |
|
Dokan( string path, DiscFileSystem sys, ChiperBase chiper) |
path: путь к контейнеру; sys: контейнер; chiper: класс шифратора/ дешифратора. |
- |
Конструктор. |
|
GetPath( string fileName) |
fileName: внутренний путь к файлу. |
- |
Получение пути внутри контейнера. |
|
NtStatus Trace( string method, string fileName, DokanFileInfo info, NtStatus result, Params object[] parameters) |
method: название метода; fileName: название файла или директории; info: внутренняя информация о файле result:NT status операции; |
NT status операции. |
Метод трассировки. Выводит отладочную информацию. |
|
NtStatus Trace( string method, string fileName, DokanFileInfo info, FileAccess access, FileShare share, FileMode mode, FileOptions options, FileAttributes attributes, NtStatus result) |
method: название метода; fileName: название файла или директории; info: внутренняя информация о файле; access: информация о доступе к файлу; share: информация об общем доступе к файлу; mode: режим доступа к файлу; attributes: атрибуты файла; result:NT status операции. |
NT status операции |
Метод трассировки. Выводит отладочную информацию. |
|
void DbgTrace( string data) |
data: строка с отладочной информацией; |
- |
Метод трассировки. Выводит отладочную информацию. |
|
NtStatus CreateFile( string fileName, FileAccess access, FileShare share, FileMode mode, FileOptions options, FileAttributes attributes, DokanFileInfo info) |
fileName: название файла или директории; access: информация о доступе к файлу; share: информация об общем доступе к файлу; mode: режим доступа к файлу; attributes: атрибуты файла; info: внутренняя информация о файле. |
NT status операции |
Метод создания файла или директории. |
|
void Cleanup ( string fileName, DokanFileInfo info) |
fileName: название файла или директории; info: внутренняя информация о файле; |
- |
Метод удаления файла или пустой директории. |
|
NtStatus CloseFile( string fileName, DokanFileInfo info) |
fileName: название файла или директории; info: внутренняя информация о файле; |
NT status операции |
Закрытие файлового дескриптора. |
|
NtStatus ReadFile( string fileName, byte[] buffer, out int bytesRead, long offset, DokanFileInfo info) |
fileName: название файла или директории; buffer: буфер со считаными данными. offset: смещение относительно начала файла. info: внутренняя информация о файле. |
NtStatus : NT status операции; bytesRead: количество прочтенных байт информации. |
Метод чтения части файла указанной длины с указанным смещением. |
|
NtStatus WriteFile( string fileName, byte[] buffer, out int bytesWritten, long offset, DokanFileInfo info) |
fileName: название файла или директории; buffer: буфер содержащий данные для записи. offset: смещение относительно начала файла. info: внутренняя информация о файле. |
NtStatus : NT status операции; bytesWritten: количество записанных байт информации. |
Метод записи данных в файл с указанным смещением. |
|
NtStatus FlushFileBuffers( string fileName, DokanFileInfo info) |
fileName: название файла или директории; info: внутренняя информация о файле. |
NT status операции |
Метод очистки буферов (кэша) файла. |
|
NtStatus GetFileInformation( string fileName, out FileInformation fileInfo, DokanFileInfo info) |
fileName: название файла или директории; info: внутренняя информация о файле. |
NtStatus : NT status операции; FileInformation: информация о файле. |
Метод получения информации о размере, атрибутах, времени создания, времени последнего доступа, времени модификации файла или директории. |
|
NtStatus FindFiles( string fileName, out IList<FileInformation> files, DokanFileInfo info) |
fileName: название директории; info: внутренняя информация о директории. |
NtStatus : NT status операции; files: список дочерних элементов в указанной директории. |
Метод получения списка файлов или директорий в указанной директории. |
|
NtStatus SetFileAttributes( string fileName, FileAttributes attributes, DokanFileInfo info) |
fileName: название файла или директории; attributes: список атрибутов файла или директории; info: внутренняя информация о директории. |
NT status операции |
Метод установки атрибутов файла или директории. |
|
NtStatus SetFileTime( string fileName, DateTime? creationTime, DateTime? lastAccessTime, DateTime? lastWriteTime, DokanFileInfo info) |
fileName: название файла или директории; creationTime: дата создания файла или директории; lastAccessTime: дата последнего доступа к файлу или директории; lastWriteTime:дата последней модификации файла или директории; info: внутренняя информация о файле или директории. |
NT status операции |
Метод установки времени создания, времени последнего доступа, времени модификации файла или директории. |
|
NtStatus DeleteFile( string fileName, DokanFileInfo info) |
fileName: название файла или директории; info: внутренняя информация о файле. |
NT status операции |
Метод, который помечает файл на удаление (удаление проводится в Cleanup). |
|
NtStatus DeleteDirectory( string fileName, DokanFileInfo info) |
fileName: название директории; info: внутренняя информация о директории. |
NT status операции |
Метод, который помечает директорию на удаление (удаление проводится в Cleanup). |
|
NtStatus MoveFile( string oldName, string newName, bool replace, DokanFileInfo info) |
oldName: название файла или директории; newName: новое название файла или директории; replace: перезапись; info: внутренняя информация о файле или директории. |
NT status операции |
Метод перемещения или переименования файла/директории. |
|
NtStatus SetEndOfFile( string fileName, long length, DokanFileInfo info) |
fileName: название файла; length: длина в байтах; replace: перезапись; info: внутренняя информация о файле или директории. |
NT status операции |
Метод установки размера файла (используется при создании пустого файла определенной длины). |
|
NtStatus SetAllocationSize( string fileName, long length, DokanFileInfo info) |
fileName: название файла; length: длина в байтах; replace: перезапись; info: внутренняя информация о файле или директории. |
NT status операции |
- |
|
NtStatus LockFile( string fileName, long offset, long length, DokanFileInfo info) |
fileName: название файла; length: смещение относительно начала файла; length: длина в байтах; info: внутренняя информация о файле или директории. |
NT status операции |
Метод блокировки файла в single-доступе. |
|
NtStatus UnlockFile( string fileName, long offset, long length, DokanFileInfo info) |
fileName: название файла; length: смещение относительно начала файла; length: длина в байтах; info: внутренняя информация о файле или директории. |
NT status операции |
Метод снятия блокировки. |
|
NtStatus GetDiskFreeSpace( out long free, out long total, out long used, DokanFileInfo info) |
info: внутренняя информация о файле или директории. |
NtStatus : NT status операции; free: количество свободных байт в контейнере; total: общее количество байт в контейнере; used: количество занятых байт в контейнере; |
Метод получения информации о количестве доступного, общего и свободного места в файловой системе. |
|
NtStatus GetFileSecurity( string fileName, out FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info) |
fileName: название директории; sections: параметры доступа учетных записей ОС; info: внутренняя информация о файле или директории. |
NtStatus : NT status операции; security: параметры доступа к файлу или директории; |
Метод получения информации о разрешениях доступа к файлу или директории. |
|
NtStatus SetFileSecurity( string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info) |
fileName: название директории; sections: параметры доступа учетных записей ОС; security: параметры доступа к файлу или директории; sections: параметры доступа учетных записей ОС; info: внутренняя информация о файле или директории. |
NT status операции |
Метод установки информации о разрешениях доступа к файлу. |
|
NtStatus Mounted( DokanFileInfo info) |
info: внутренняя информация о файле или директории. |
NT status операции |
Метод монтирования файловой системы. |
|
NtStatus Unmounted( DokanFileInfo info) |
info: внутренняя информация о файле или директории. |
NT status операции |
Метод размонтирования файловой системы. |
|
NtStatus FindStreams( string fileName, IntPtr enumContext, out string streamName, out long streamSize, DokanFileInfo info) |
fileName: название файла; enumContext:дескриптор потока; info: внутренняя информация о файле или директории. |
NtStatus : NT status операции; streamName: название потока; streamSize: размер потока; |
Метод поиска работающих файловых потоков. |
|
NtStatus FindStreams( string fileName, out IList<FileInformation> streams, DokanFileInfo info) |
fileName: название файла; info: внутренняя информация о файле или директории. |
NtStatus : NT status операции; streams: список потоков; |
Метод поиска работающих файловых потоков. |
|
IList<FileInformation> FindFilesHelper( string fileName, string searchPattern) |
fileName: название файла или директории; searchPattern: паттерн поиска; |
IList<FileInformation>: список файлов |
Метод поиска дочерних элементов в папке по паттерну. |
|
NtStatus FindFilesWithPattern( string fileName, string searchPattern, out IList<FileInformation> files, DokanFileInfo info) |
fileName: название файла или директории; searchPattern: паттерн поиска; info: внутренняя информация о файле или директории. |
NtStatus : NT status операции; files: список файлов; |
Метод поиска дочерних элементов в папке по паттерну. |
3.3 Разработка пользовательского интерфейса
Пользовательский интерфейс состоит из 2-х форм и контекстного меню приложения в трее (Рис 3.1).
Рис. 3.1 - Контекстное меню в трее
В программе присутствуют следующие формы:
- Создать новый контейнер (Рис 3.2);
- Открыть контейнер (Рис 3.4);
Рис. 3.2 - Форма «Создать новый контейнер»
В поле «Путь» нужно указать путь к создаваемому контейнеру.
В поле «Объем» вводится объем создаваемого контейнера и выбирается единица измерения.
В поле «Тип» нужно выбрать тип создаваемого контейнера. Всего доступно два:
- VHDX;
- Solid File System;
В поле «Шифрование» нужно выбрать тип шифрования (Рис. 3.2). Всего доступно десять вариантов:
- Отсутствует;
- Rijndael (AES)-128;
- Rijndael (AES)-160;
- Rijndael (AES)-192;
- Rijndael (AES)-224;
- Rijndael (AES)-256;
- Threefish-256;
- Threefish-512;
- Threefish-1024;
- ГОСТ 28147-89 (Магма);
Рис. 3.3 - Поле «Шифрование»
В поле «Ключ» нужно выбрать его тип и ввести его, а в случае если выбран тип ключа «Файл», то выбрать файл.
Рис. 3.4 - Форма «Открыть контейнер»
Заполнение полей в форме «Открыть контейнер» происходит аналогично форме «Создать новый контейнер».
После нажатия кнопки «Открыть», в случае отсутствия ошибок, будет смонтирован новый логический диск с содержанием контейнера.
4 Использование программы
4.1 Руководство пользователя
Общие сведения о программном продукте:
Данный программный продукт предназначен для создания криптозащищенных файловых контейнеров с возможностью их монтирования их как логический диск, и, следовательно, реализующий прозрачное шифрование файлов.
Условия работы программы:
- Компьютер с процессором Pentium или Athlon;
- Установленный .Net Framework 4.0;
- 512 Мб оперативной памяти;
- 100 Мб свободного дискового пространства.;
- Клавиатура и мышь.
Для установки программы следует выполнить следующие шаги:
1) Установить .NET Framework 4.0.
2) Установить драйвер Dokan версии 1.0.3.
3) Запустить программу EEFS.
Для создания или открытия контейнеров используйте контекстное меню, которое появляется при нажатии ПКМ на иконке программы в трее. При запуске программы, происходит автоматическая проверка наличия драйвера Dokan в системе.
В ходе работы пользователь может получать следующие сообщения:
Рис. 4.1 - Ошибка инициализации .NET Framework
Данная ошибка возникает если на компьютере не установлен .NET Framework версии 4.0. Для ее устранения нужно установить .NET Framework указанной версии.
Рис. 4.2 - Ошибка инициализации драйвера Dokan
Данная ошибка возникает если на компьютере на установлен драйвер Dokan версии 1.0.3. Для ее устранения нужно установить драйвер Dokan указанной версии.
Рис. 4.3 - Ошибка создания контейнера при неверной директории
Данная ошибка возникает если при создании контейнера была указана несуществующая директория. Для ее устранения нужно указать верную директорию.
Рис. 4.4 - Ошибка создания контейнера при отсутствии доступа
Данная ошибка возникает если при создании контейнера была указана директория с правами, ограничивающие запись в данную директорию. Для ее устранения нужно запустить программу с правами, обеспечивающими запись в данную директорию или указать другую директорию.
Рис. 4.5 - Ошибка создания контейнера при недостаточном свободном пространстве на диске
Данная ошибка возникает в случае того, когда указанный объем контейнера больше, чем объем свободного места на диске. Для ее устранения нужно указать меньший объем контейнера или выбрать другой диск.
Рис. 4.6 - Ошибка открытия контейнера
Данная ошибка возникает если выбрать файл, не являющийся контейнером или указанные параметры при открытии не соответствуют параметрам, указанным при создании контейнера. Для ее устранения нужно указать верный файл контейнера и верные параметры при открытии.
Заключение
В ходе выпускной квалификационной работы было разработано приложение, предназначенное для прозрачного шифрования информации с интеграцией в проводник Windows и поддержкой нескольких алгоритмов шифрования. Для приложения были спроектированы формы создания и открытия контейнеров, построены алгоритмы решения поставленной задачи. Была создана документация для пользователя и описаны возможные ошибки.
Разработанная программа в дальнейшем может использоваться как в личных целях, так и в любых организациях.
В ближайшее время дальнейшая разработка программы продолжиться и в нее будет добавлено следующее:
- Поддержка других алгоритмов шифрования, а так же возможность комбинировать алгоритмы.
- Сетевая составляющая программы, а именно: контейнер можно будет создать на сервере, а смонтировать на клиенте.
- Возможность монтировать контейнеры без драйвера через протоколы FTP и WebDAV, что позволит исключить первоначальную установку драйвера от имени администратора для доступа к данным в контейнере.
- Кроссплатформенность, т.к. все библиотеки можно скомпилировать под Mono.
Размещено на Allbest.ru
...Подобные документы
Требования к аппаратному и программному обеспечению, требуемому для разработки программного модуля. Критерии приемлемости разрабатываемого программного продукта. Разработка удобного пользовательского интерфейса программы. Алгоритм и листинг программы.
курсовая работа [2,6 M], добавлен 23.11.2011Определение требований к программному обеспечению. Ознакомление с процессом проектирования интерфейса пользователя. Рассмотрение результатов обзора существующих информационных систем. Обоснование необходимости разработки программного обеспечения.
дипломная работа [1,1 M], добавлен 05.07.2017Основание для разработки автоматизированной информационной системы "Будущий абитуриент". Технические требования к программному изделию. Порядок контроля и приемки продукта. Рассмотрение исходной базы данных. Описание интерфейса программного обеспечения.
дипломная работа [3,3 M], добавлен 08.02.2013Анализ криптографических методов шифрования данных. Разработка криптосистемы, основанной на схеме Эль-Гамаля. Определение функциональных и нефункциональных требований. Выбор языка программирования и среды разработки. Тестирование программного продукта.
дипломная работа [1,6 M], добавлен 17.07.2016Требования к функциональности сайта, информационному и программному обеспечению. Концептуальная модель данных. Затраты на разработку программного изделия. Описание пользовательского интерфейса главной страницы и разделов. Создание контрольного примера.
отчет по практике [1,2 M], добавлен 03.06.2015Требования к метрологическому обеспечению. Разработка архитектуры пользовательского интерфейса. Требования к программному, математическому, информационному обеспечению. Функциональная схема автоматизации. Разработка схемы информационных потоков.
курсовая работа [343,1 K], добавлен 20.12.2013Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.
курсовая работа [1,6 M], добавлен 08.02.2013Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.
курсовая работа [41,2 K], добавлен 19.12.2010Описание входных и выходных данных. Общая характеристика и требования к проектируемой программе, ее структуре и функциональным компонентам. Выбор и обоснование средств разработки, разработка интерфейса пользователя. Требования к программному обеспечению.
курсовая работа [1,4 M], добавлен 12.05.2016Разработка программного обеспечения для моделирования процесса абсорбции; расчёт характеристик при варьировании температуры. Требования к программному обеспечению; структуры данных и алгоритмы в программе; дисплейные фрагменты, внешний вид приложения.
курсовая работа [2,8 M], добавлен 20.11.2012Общее описание разрабатываемого программного обеспечения, требования к его функциональности и сферы практического применения. Выбор инструментальных средств разработки. Проектирование структур баз данных и алгоритмов, пользовательского интерфейса.
дипломная работа [3,1 M], добавлен 19.01.2017Анализ особенностей жанров и технологий видеоигр. Обзор средств разработки видеоигр. Требования к разрабатываемому программному обеспечению. Разработка архитектуры программы и пользовательского интерфейса. Бизнес-модель внедрения видеоигры на рынок.
дипломная работа [1,7 M], добавлен 25.06.2017Анализ требований к программному продукту. Требования к информационной и программной совместимости. Проектирование архитектуры программного продукта. Виды программ и программных документов. Общие сведения о С++. Технология разработки программного модуля.
дипломная работа [1,2 M], добавлен 05.08.2011Разработка программного продукта для спирографического обследования. Структура базы данных программы "СпирографОтдел". Выбор программного продукта и руководство пользователя. Минимальные рекомендуемые требования к техническому и программному обеспечению.
дипломная работа [1,0 M], добавлен 13.04.2014Спецификация требований к разрабатываемому приложению. Разработка структурной схемы интерфейса. Описание алгоритма шифрования DES. Разработка программного кода приложения "DES". Проведение исследования основных шагов для генерации ключей и шифрования.
курсовая работа [398,4 K], добавлен 13.12.2022Требования к программному продукту, к задачам и функциям, выполняемым программой, к техническому, программному и организационному обеспечению. Стадии и этапы разработки программного продукта. Простота навигации по программе, присутствие строки подсказки.
курсовая работа [236,7 K], добавлен 09.03.2009Обзор подходов к разработке музейных приложений с элементами дополненной реальности, формирование требований к ним. Выбор методов разработки приложения, разработка пользовательского интерфейса. Принципы тестирования. Реализация раздела "Распознавание".
дипломная работа [2,8 M], добавлен 03.07.2017Создание прикладного программного обеспечения для реализации интерфейса терминала по приему платежей за услуги связи. Анализ требований к программному обеспечению. Выбор языка программирования. Разработка интерфейса пользователя и проектной документации.
дипломная работа [1,3 M], добавлен 18.06.2015Разработка программного продукта для экспорта спецификации из приложения PartList. Выбор метода передачи информации в файл, формата для представления. Разработка конвертера, реализация пользовательского интерфейса. Обоснование актуальности разработки.
дипломная работа [2,6 M], добавлен 25.09.2014Общие сведения о миномётах, их конструкция, боевые качества и классификация. Структурное построение обучающих программ, их алгоритмы. Жизненные циклы программного продукта. Реализация функционирования программы и разработка пользовательского интерфейса.
курсовая работа [1,2 M], добавлен 06.11.2012