Как создать свою программу для шифрования

Высокая практическая значимость Высокая теоретическая значимость Высокая научная новизна

Крайнов, И. К. Создание программы шифрования до указанного времени на языке Python / И. К. Крайнов, Е. В. Филина. — Текст : непосредственный // Юный ученый. — 2019. — № 8 (28). — С. 85-88. — URL: https://moluch.ru/young/archive/28/1693/ (дата обращения: 11.07.2023).

Надежная защита информации — актуальная проблема. Количество данных в мире возрастает со скоростью 50000 гб/сек [1]. Человек все больше хочет обезопасить свою информацию, но при этом иметь к ней прямой доступ. Для этого используются шифры, позволяющие переводить открытую информацию в закрытую при помощи секретного алгоритма или ключа.

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

Как сделать свой скрипт для шифрования (+ задачка)

В настоящее время применяются несколько вариантов передачи информации для использования ее в необходимый момент:

  1. Физическая передача.
  2. Передача информации электронным способом в зашифрованном виде с последующей передачей ключа.
  3. Передача по электронному каналу связи в необходимый момент.

Рассмотрим каждый из них:

  1. Физическая передача информации осуществляется при помощи курьеров, поэтому велика вероятность получения оной сторонними лицами, ее изменения, либо утери. Этот метод является самым незащищенным.
  2. При передаче в зашифрованном виде, утечка открытой информации практически невозможна. Главным неудобством такой системы является необходимость передачи ключа. Для дешифрации информации в определенное время, ключи должны быть переданы в соответствующий временной период. В случае утери связи с адресатом, ключи или информация не будут своевременно получены адресатом.
  3. Передача информации по каналу связи в определенный момент также обладает недостатком. В случае неисправности оборудования при передаче данных, информация не дойдет до адресата и будет утеряна. Ключевым плюсом этого механизма передачи данных является невозможность получения информации до необходимого срока.

В нашей работе используются такие библиотеки как Time [9] — для получения корректного времени с сервера, Datetime [7] — для перевода даты, представленной в стандартном виде в секунды от начала эпохи, Random [8] — для генерации случайного токена, Tkinter [10] — для отрисовки графического интерфейса, Requests [16] — для общения с сервером точного времени. И модуль, не использованный в программах, но позволяющий скомпилировать их в исполняемый файл — Pyinstaller [14].

Описание шифрования и принцип работы программы

Основы Шифрования за 5 минут — Asymmetric Cryptography — #ityoutubersru

Для усложнения взлома, в нашей программе используется собственная система шифрования. За основу взята система с закрытым ключом. В качестве ключа используется время в секундах от начала эпохи до времени расшифровки. Время в секундах от начала эпохи (UNIX время) — общепринятая система измерения времени в программах. Представляет собой количество секунд, прошедших с 01.01.1970 [11].

Во время работы программы дешифратора номер каждой секунды от начала эпохи проверяется как ключ. Если он подходит, начинается процесс дешифрации с использованием этого ключа. Поэтому для расшифровки, программу-дешифратор нужно запустить раньше срока расшифровки и ожидать, когда при наступлении оговоренного срока начнется процесс дешифрации.

Принцип работы кода программы шифратора

Она не обладает графическим интерфейсом, так как может быть использована алгоритмом.

Импортируем модули времени, рандом.

Получаем от пользователя время расшифровки файла и сам файл.

Читаем файл побайтово.

Преобразуем двоичную кодировку в шестнадцатеричную.

Генерируем одноразовый токен.

Для ускорения работы шифруем 50 % файла, выбираем случайные символы для шифрования.

При помощи цикла шифруем выбранные символы.

Если символ — буква, умножаем его символ в таблице символов на время расшифровки, деленное на токен.

Если цифра, то умножаем ее на время расшифровки, деленное на токен.

Добавляем в начало строки токен.

Принцип работы кода программы для расшифровки

Она должна обладать интерфейсом, причем темным, чтобы не «бить» по глазам, ведь время расшифровки может прийти ночью.

Импортируем модули общения с сервером времени, для удаления погрешности на запрос к серверу, для отрисовки графического интерфейса.

Читайте также:
Безопасна ли программа imazing

Создаем функцию получения точного времени:

Запоминаем время до запроса.

Делаем запрос к серверу.

Прибавляем к полученному времени время на запрос.

Создаем главную функцию:

Даем пользователю выбрать файл для расшифровки.

Получаем точное время при помощи функции, описанной выше.

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

Если секунда подходит, начинаем расшифровку.

Создаем объект Tkinter.

Создаем Label для информации и располагаем его.

Создаем кнопку для запуска главной функции и располагаем ее.

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

Для работы программ шифрации и дешифрации нужна лишь операционная система Windows. Для перевода скрипта.py в исполняемый файл.exe мы воспользовались модулем Pyinstaller и auto_py_to_exe. Отсутствие необходимости установки Python и дополнительных модулей для работы программы делает ее общедоступной. Кроме того, скомпилированные скрипты не позволят злоумышленникам похитить механизм шифрации и подобрать ключ.

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

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

Для прохождения задания необходимо было отправить текст из файла в личные сообщения автора. Скачиваний файла было порядка 200, однако ни один человек не смог заполучить информацию до срока. Затем пост был удален для предотвращения утечки программы. Из проведенного эксперимента следует, что программа является безопасной и может использоваться для шифрования данных на определенный срок.

Информация, чертежи, документы могут безопасно храниться до их официального релиза. Такая программа обеспечивает безопасность любой информации, что делает ее востребованной и универсальной. За помощь в работе благодарим сотрудников Яндекс.Лицея за обучение языку программирования Python 3, научного руководителя Филину Екатерину Владимировну и родителей!

  1. Благирев А. Big Data простым языком.- М.:АСТ, 2019.
  2. Борсук Н. А., Козеева О. О. Сравнительный анализ языков программирования Python и php // Символ науки. № 4, 2017
  3. http://cryptographer.ru/article1.php
  4. http://www.tadviser.ru/index.php/ %D0 %A1 %D1 %82 %D0 %B0 %D1 %82 %D1 %8C %D1 %8F: %D0 %9A %D1 %80 %D0 %B8 %D0 %BF %D1 %82 %D0 %BE %D0 %B3 %D1 %80 %D0 %B0 %D1 %84 %D0 %B8 %D1 %8F
  5. https://compress.ru/article.aspx?id=10135https://moluch.ru/young/archive/28/1693/» target=»_blank»]moluch.ru[/mask_link]

    Создание своего метода шифрования, часть 3

    Это 3 и последняя статья из цикла “Создание своего метода шифрования”. В ней я расскажу о том, как превратить алгоритм из 2-ой статьи в полноценную программу.

    Алгоритм

    Сейчас вкратце вспомним этапы, по которым будем писать программу.

    1. Ввод ключевых слов в систему
    2. Ввод текста
    3. Определения дальнейшего направления работы программы
    4. Получения результата работы программы (используя минимальное кол-во манипуляций)

    Писать программу мы будем с Visual Studio на языке C#. Сначала создадим форму нашей программы.

    Разместим на форме следующие элементы:

    1. Textbox – 4 штуки
    2. Button – 3 штуки
    3. Radio Button – 2 штуки

    Кнопки подпишем: Добавить ключ, отредактировать текст, выполнить операцию.

    Radio Button подпишем: Шифрование, Дешифрование.

    Форма программы

    Для работы программы нам понадобятся переменные, но не простые. Объявим эти переменные в public partial class Form1 : Form .

    public string shifrtext; public char[] stolb = new char[5]; public char[] strok = new char[6]; public string strokaa; public string stolbezz; public string textafter;

    Код ввода ключей

    Два раза щелкнем по кнопке “Добавить ключ” и напишем там код помеченный двумя слешами — //.

    strokaa = textBox1.Text; // stolbezz = textBox2.Text; //

    Код редактирования текста

    Теперь приступим к редактированию текста. Нам надо избавиться от пробелов и запятых. А также заменить некоторые буквы аналогами.

    Создадим новую процедуру под названием reduck.

    shifrtext = textBox3.Text; // shifrtext = shifrtext.Replace(«,», «»).Replace(«.», «»).Replace(«ъ», «»).Replace(«ё», «е»).Replace(«й», «и»).Replace(«ь», «»).Replace(» «, «»); // textBox5.Text = shifrtext; //

    Код шифрования

    Так же как и в прошлый раз создадим новую процедуру. Назовем ее shifrov. Это будет код шифрования наших данных.

    int st, str; string[,] keymas = new string[6, 5] , , , , , >; string textshifr = «»; for (int h = 0; h < shifrtext.Length; h++) < for (int i = 0; i < 6; i++) < for (int j = 0; j < 5; j++) < if (shifrtext[h].ToString() == keymas[i, j]) < textshifr += strokaa[j].ToString() + stolbezz[i].ToString(); >> > > textBox4.Text = textshifr.ToString();

    Код дешифрования

    Процедуру расшифровки так же создадим отдельно, и назовем ее rasshif.

    string textshifr = «»; int zstr = 0, zstl = 0; int x = 0, y = 1; string[,] keymas = new string[6, 5] , , , , , >; for (int h = 0; h < shifrtext.Length; h++) < if (x > ///////////// for (int j = 0; j < 5; j++) < if (shifrtext[x] == strokaa[j]) < zstl = j; x += 2; break; >> textshifr += keymas[zstr, zstl].ToString(); > > > textBox4.Text = textshifr.ToString();

    Код кнопки “Выполнить операцию”

    if (radioButton1.Checked) < redack(); shifrov(); >if (radioButton2.Checked)

    Цикл статей “Создание своего метода шифрования” подошел к концу. Здесь вы можете изучить первую и вторую часть.

    Источник: bazanovv.ru

    Лабораторная работа №6. Шифрование данных.¶

    Цель: Получение теоретических и практических навыков работы с программными средствами шифрования данных.

    Консольные команды:¶

    • gpg- инструмент для шифрования и цифровой подписи.
    • cryptsetup- программа для управления шифрованными дисковыми разделами, работающая на основе модуля ядра dm-crypt.
    • truecrypt- программа для управления шифрованными дисковыми разделами, при помощи truecrypt.
    • fallocate- команда, позволяющая вручную выделять блоки для файлов.

    PGP¶

    PGP (Pretty Good Privacy) — компьютерная программа, которая позволяет выполнять операции шифрования/дешифрования и цифровой подписи файлов или сообщений, а также другой информации, представленной в электронном виде, в том числе шифрование данных на запоминающих устройствах.

    _images/pgpgpg.png

    Процесс шифрования в PGP проходит в несколько этапов: хеширование, сжатие данных, шифрование с симметричным ключом, и, наконец, шифрованием с открытым ключом. Причём каждый этап может использовать разные алгоритмы. Так симметричное шифрование производится с использованием одного из семи симметричных алгоритмов (AES, Blowfish, 3DES, CAST5, IDEA,Twofish, Camellia) на сеансовом ключе. Сеансовый ключ в свою очередь генерируется с использованием криптографически стойкого генератора псевдослучайных чисел. Он зашифровывается открытым ключом получателя с использованием алгоритмов RSA или Elgamal (в зависимости от исходного открытого ключа получателя).

    Изначально PGP разрабатывалась для защиты электронной почты на стороне клиента, но начиная с 2002 года также включает в себя шифрование жёстких дисков, директорий, файлов, сессий программ мгновенного обмена сообщениям, защиту файлов и директорий в сетевых хранилищах, пакетной передачи файлов, а в новых версиях — шифрование HTTP-запросов и ответов на стороне сервера и клиента.

    TrueCrypt¶

    TrueCrypt — одна из самых известных программ для шифрования данных «на лету». Позволяет создавать виртуальный зашифрованный логический диск, хранящийся в виде особого файла — криптоконтейнера. С помощью TrueCrypt также можно полностью зашифровать раздел жёсткого диска или любого другого носителя информации, например, USB диск.

    В процессе работы данная утилита создает на компьютере специальную защищенную область. Операционная система в свою очередь воспринимает эту область как файл или диск. Отличие между защищенным пространством TrueCrypt и обычным диском, в том, что на обычном диске данные обычно никак не защищены, а TrueCrypt шифрует данные «на лету», абсолютно незаметно для пользователей, и тем самым обеспечивает надежную защиту информации без специальных манипуляций с ней. Кроме того, в защищенной области TrueCrypt умеет размещать данные, которые будут не просто зашифрованы, но и скрыты от посторонних глаз.

    TrueCrypt может создавать зашифрованный виртуальный диск:

    • В файловом контейнере, что позволит легко работать с ним — копировать, переносить (в том числе на внешние устройства в виде файла), переименовывать или удалять;
    • В виде зашифрованного раздела диска, что сделает работу более удобной и производительной, начиная с версии 5.0 появилась возможность шифровать системный раздел;
    • Путём полного шифрования содержимого устройства, такого как USB диск (флоппи-диски перестали поддерживаться с версии 7.0).

    В список поддерживаемых TrueCrypt алгоритмов шифрования входят AES, Twofish и Serpent.

    Для того, чтобы получит доступ к зашифрованным данным применяется пароль (ключевая фраза), ключевой файл (один или несколько), а также их комбинации. В качестве ключевых файлов можно использовать любые доступные файлы на локальных, съёмных, сетевых дисках (при этом будут использоваться первые 1,048,576 байт) или генерировать свои собственные ключевые файлы.

    Одна из интересных возможностей TrueCrypt — обеспечение двух уровней отрицания наличия зашифрованных данных, необходимого в случае вынужденного раскрытия пароля пользователем:

    • Создание скрытого тома, что позволяет задать еще один пароль (или набор ключевых файлов) к обычному тому. Доступ к этим данным невозможно получить доступ с основным паролем, при этом скрытый том может иметь свою файловую систему, а располагается он в свободном пространстве основного тома.
    • Ни один из томов TrueCrypt не может быть определен (тома TrueCrypt невозможно отличить от случайного набора данных, поэтому файл нельзя связать с TrueCrypt или с программой его создавшей, ни в какой форме и рамках).

    У TrueCrypt есть графический интерфейс для Linux, но можно управлять шифрованием и из консоли.

    • Создать файл ключа , где file — название файла-ключа. Учтите, что директория /home/user/test должна существовать.
    • Создать криптоконтейнер .
    • Примонтировать Директория для монтирования (здесь /mnt/crypto) уже должна существовать.
    • Размонтировать .
    • Чтобы снова получить доступ к информации, подключим контейнер .

    LUCKS/dm-crypt¶

    LUKS (Linux Unified Key Setup) — спецификация шифрования диска (или блочного устройства), изначально предложенная для Linux, но сейчас поддерживаемая и в ряде других операционных систем. Основана на стандартной подсистеме шифрования Linux-ядра под названием dm-crypt и следующая рекомендациям TKS1/TKS2.

    • В качестве «контейнера» используется файл. Его размер фиксирован. Возможно изменение размера.
    • «Внутри» контейнера создается файловая система, любого удобного вам формата.
    • При использовании — монтируется, как обычный раздел.
    • Данные сохраняются по блокам, как в обычном файле/файловой системе. То есть :
    • модификация файла внутри контейнера приводит к перезаписи блоков, занимаемых этим файлом, но не всего контейнера;
    • «потеря/порча» одного блока приводит к потере информации «того-что-было-в-этом-блоке», и не более того.
    • при синхронизации контейнера «в облако» — как правило, перезаписывается не весь файл, а «модифицированная часть», что требует малого объема трафика.

    В отличие от Truecrypt:

    • как правило, выше скорость обработки данных (зависит от алгоритма/размера ключа);
    • проще работа с ключами;
    • нет механизма «двойного дна»;
    • возможны проблемы при попытке использования контейнера «из другой ОС»

    Задания к лабораторной работе¶

    • Установить PGP, GPG
    • Произвести операции шифрования и дешифрования над произвольными файлами. Для шифрования используйте команду . Для дешифрования (В этом случае в директории зашифрованного файла будет создан расшифрованный. Если нужно лишь вывести на экран расшифрованное содержимое используйте )
    • Установить TrueCrypt. Нам потребуется версия 7.1а. Скачать её можно здесь или здесь.
    • Создать криптоконтейнер, примонтировать его как виртуальный диск.
    • Поместить в криптоконтейнер какую-то информацию.
    • Отмонтировать диск и переместить криптоконтейнер.
    • Повторно примонтировать криптоконтейнер как виртуальный диск. Убедиться, что криптоконтейнер может передаваться и использоваться независимо.
    • Установить LUKS/dm-crypt , .
    • Создаем файл, где будем хранить зашифрованные данные. Самый простой способ , где /root — директория хранения файла, test1 — имя файла. Так же для создания этого файла можно использовать команду dd. . Третий способ — использовать команду dd и заполнить файл случайными данными. .
    • Создать криптоконтейнер. (нужно будет согласиться переписать данные и задать пароль).
    • Открыть контейнер. . (volume1 — имя контейнера, его мы задаем этой командой). При этом будет создан файл /dev/mapper/volume1.
    • Создать в нем файловую систему .
    • Создать папку для монтирования . Монтировать
    • Теперь перенесем какие_ниибудь файлы в криптоконтейнер. Например, скопируем папку /etc .
    • Размонтировать .
    • Теперь закрываем volume1. . После этого наши данные зашифрованы.
    • Чтобы открыть их выполним и

    Вопросы к лабораторной работе¶

    1. Какие алгоритмы шифрования входят в комплект TrueCrypt?
    2. Какие алгоритмы шифрования входят в комплект PGP, GPG?
    3. Что такое «криптоконтейнер»?
    4. Каковы основные достоинства и недостатки рассмотренных программных продуктов?
    5. Какие алгоритмы шифрования, используемые в рассмотренных программных продуктах, наиболее надежны и почему?
    6. В каких случаях рекомендуется применять шифрование данных?

    Источник: xn--80aqobguv5e.xn--p1ai

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru