Шифры и коды существуют, наверное, с того момента, как человечество научилось записывать свои впечатления об окружающем мире на носителях. Если немного вдуматься, даже обыкновенный алфавит - уже шифр. Ведь когда мы читаем какой-либо текст, в нашей голове каждому нарисованному символу сопоставляется некий звук, сочетание звуков, или даже целое понятие, а в голове соседа, который читать не умеет, этого уже не происходит.
Не зная, какому символу и что сопоставлено, мы никогда не сможем понять, что же именно писавший имел ввиду. К примеру, попробуйте взять и прочитать что-то, написанное на иврите, или на китайском языке. Сами алфавиты этих языков будут являться для вас непреодолимым препятствием, даже если с помощью этих символов написаны понятия вашего родного языка.
Но, тем не менее, простое использование чужого алфавита все же недостаточная мера для защиты ваших данных. Ведь любой алфавит, так или иначе, создавался для удобства пользования им и является неразрывно связанным с языком, которому данный алфавит характерен. А значит, выучив этот язык и некоторый набор базовых понятий на нем (а то и просто воспользовавшись услугами человека, знающего данный язык), нехороший человек может прочитать вашу информацию.
Электронная цифровая подпись – последовательность символов, являющаяся реквизитом электронного документа и предназначенная для подтверждения целостности и подлинности электронного документа. Средство электронной цифровой подписи – программное, программно-аппаратное или техническое средство, реализующее одну или несколько следующих функций: выработку электронной цифровой подписи, проверку электронной цифровой подписи, создание личного ключа подписи или открытого ключа.
ЭЦП получается в результате криптографического преобразования электронных данных документа с использованием личного ключа ЭЦП .
ЭЦП используется физическими и юридическими лицами в качестве аналога собственноручной подписи для придания электронному документу юридической силы, равной юридической силе документа на бумажном носителе, подписанного собственноручной подписью правомочного лица и скрепленного печатью.
Использование цифровой подписи позволяет:
- осуществить контроль целостности передаваемого документа ЭЦП вычислена на основании исходного состояния документа и соответствует лишь ему, поэтому при любом случайном или преднамеренном изменении документа подпись станет недействительной;
1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ
Шифрование подразделяют на симметричное, асимметричное и комбинированное. Рассмотрим, в чем суть каждого из них.
Симметричное шифрование, по большому счету, достаточно слабо отличается от старого доброго секретного алфавита. Собственно говоря, отличается оно как раз наличием ключа – некоторой сравнительно маленькой последовательности чисел, которая используется для шифрования и расшифровывания. При этом, каждая из обменивающихся информацией сторон должна этот ключ знать и хранить в секрете. Огромным плюсом такого подхода является скорость шифрования: ключ, по сути, является достаточно простой и короткой инструкцией, какой символ, когда, и на какой надо заменять. И работает данный ключ в обе стороны (то есть с его помощью можно как заменить все символы на новые, так и вернуть все как было), за что такой способ шифрования и получил название симметричного. Столь же огромным минусом является именно то, что обе стороны, между которыми информация пересылается, должны ключ знать. При этом, стоит нехорошему человеку заполучить ключ, как он тут же прочитает наши столь бережно защищаемые данные, а значит проблема передачи ключа принимающей стороне становится в полный рост.
Асимметричное шифрование поступает несколько хитрее. Здесь и у нас, и у нашего получателя есть уже два ключа, которые называют открытый и закрытый. Закрытый ключ мы и получатель храним у себя (заметьте, каждый хранит только свой ключ, а значит, мы уже выходим за пределы той самой поговорки про двоих знающих), а открытый мы и получатель можем спокойно передавать кому угодно – наш закрытый, секретный, по нему восстановить нельзя. Итого, мы используем открытый ключ получателя для шифрования, а получатель, в свою очередь, использует свой закрытый ключ для расшифровывания. Плюс данного подхода очевиден: мы легко можем начать обмениваться секретной информацией с разными получателями, практически ничем (принимая условие, что наш получатель свой закрытый ключ не потерял/отдал и т.п., то есть не передал его в руки нехорошего человека) не рискуем при передаче информации. Но, без огромного минуса не обойтись. И здесь он в следующем: шифрование и расшифровывание в данном случае идут очень, очень, очень медленно, на два-три порядка медленнее, чем аналогичные операции при симметричном шифровании. Кроме того, ресурсов на это шифрование тратится также значительно больше. Да и сами ключи для данных операций существенно длиннее аналогичных для операций симметричного шифрования, так как требуется максимально обезопасить закрытый ключ от подбора по открытому. А значит, большие объемы информации данным способом шифровать просто невыгодно. Пример использования асимметричного шифрования приведён на рисунке 1.1.
Проектирование программного обеспечения - процесс создания проекта программного обеспечения (ПО), а также дисциплина, изучающая методы проектирования. Проектирование ПО является частным случаем проектирования продуктов и процессов.
Целью проектирования является определение внутренних свойств системы и детализации её внешних (видимых) свойств на основе выданных заказчиком требований к ПО (исходные условия задачи). Эти требования подвергаются анализу.
Первоначально программа рассматривается как чёрный ящик. Ход процесса проектирования и его результаты зависят не только от состава требований, но и выбранной модели процесса, опыта проектировщика.
Модель предметной области накладывает ограничения на бизнес-логику и структуры данных.
В зависимости от класса, создаваемого ПО, процесс проектирования может обеспечиваться как «ручным» проектированием, так и различными средствами его автоматизации. В процессе проектирования ПО для выражения его характеристик используются различные нотации - блок-схемы, ER-диаграммы, UML-диаграммы, DFD-диаграммы, а также макеты.
Проектированию обычно подлежат:
- Архитектура ПО;
- Устройство компонентов ПО;
- Пользовательские интерфейсы.
Для написания приложения была выбрана среда разработки Visual Studio 2015, язык программирования высокого уровня C#, краткое описание выбранной среды разработки и языка программирования приведено ниже.
Microsoft Visual Studio 2015 - это набор инструментов для создания программного обеспечения: от планирования до разработки пользовательского интерфейса, написания кода, тестирования, отладки, анализа качества кода и производительности, развертывания в средах клиентов и сбора данных телеметрии по использованию. Эти инструменты предназначены для максимально эффективной совместной работы; все они доступны в интегрированной среде разработки (IDE) Visual Studio.
Разработанное приложение будет иметь схему работы, представленную на рисунке 3.1.
Программная реализация приложения состоит в создании приложения в котором будет возможность шифрования файлов, это будет реализовано с помощью выбранной среды разработки и языка программирования. Для этого необходимо на форме разместить все необходимые для этого компоненты, что бы пользователь смог выбрать, какой файл необходимо шифровать, где хранить зашифрованный файл и смог указать простые числа для шифрования.
Код программы будет приведён в приложении, описание всех элементов системы и так далее.
Тестирование программного обеспечения - процесс исследования, испытания программного продукта, имеющий две различные цели:
- продемонстрировать разработчикам и заказчикам, что программа соответствует требованиям;
- выявить ситуации, в которых поведение программы является неправильным, нежелательным или не соответствующим спецификации.
Существует несколько признаков, по которым принято производить классификацию видов тестирования. Обычно выделяют следующие:
ЗАКЛЮЧЕНИЕ
Таким образом в ходе выполнения курсовой работы было разработано приложение, которое осуществляет цифровую подпись файлов с помощью алгоритма RSA.
Для разработки приложения была использована среда разработки Visual Studio и язык программирования высокого уровня C#, разработанное приложение прошло несколько тестов, результат которых был положительный, значит приложение готово для использования пользователем.
В ходе разработки были закреплены знания по написанию приложений в среде Visual Studio, изучены необходимые алгоритмы шифрования файлов и реализованы программно.
Разработанное приложение выполняет необходимые действия по шифрованию файлом, для этого необходимо лишь указать путь желаемого файла, указать простые числа для шифрования и нажать кнопку подписать, в результате перед пользователем появится зашифрованный файл.
Скриншоты программы