# Описание проекта Проект предназначен для создания ЭЦП и проверки ЭЦП в соответствии с ГОСТ 34.10-2012, используя хеш функцию sha256 ``` ГОСТ 34.10-2012 Информационная технология КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ Процессы формирования и проверки электронной цифровой подписи Настоящий стандарт определяет схему электронной цифровой подписи (ЭЦП) (далее - цифровая подпись), процессы формирования и проверки цифровой подписи под заданным сообщением (документом), передаваемым по незащищенным телекоммуникационным каналам общего пользования в системах обработки информации различного назначения. Внедрение цифровой подписи на основе настоящего стандарта повышает по сравнению с ранее действовавшей схемой цифровой подписи уровень защищенности передаваемых сообщений от подделок и искажений. ``` # Возможности проекта - Серверная часть - Реализация взаимодействия с пользователем с помощью команд - Фактическая реализация подписи/проверки ЭЦП данных, полученных пользователем - Взаимодействие с базой данных PostgreSQL для учета пользователей - Возможность скачивать и сохранять клиента на облаке, передавать файлы клиента - Создание директории для каждого пользователя после регистрации - Клиентская часть - Создание ЭЦП с использованием закрытого ключа и проверка ЭЦП с помощью открытого - Хранение файлов на облаке - Доступ к скачиванию файлов на облаке # Загрузка и установка 1. Загрузка файлов ``` $ git clone http://studgit.smcm.space/vvolkov/signify.git $ cd src ``` 2. Загрузка требуемых библиотек ``` $ pip install -r requirements.txt ``` 3. Настройка параметров По умолчанию сервер запуститься на 127.0.0.1:1234 (host, port), директория для создания папок для пользователей (storaGe_dir) по умолчанию в текущей папке. Токен для яндекс диска: https://yandex.ru/dev/disk/api/concepts/quickstart.html server.py ```python #Параметры host = 'localhost'# port = 1234 #Токен yandex диска y = yadisk.YaDisk(token='y0_AgAAAAA6Qd7JAAoMJgAAAADlfHsiBIK6yTKwQduJv4vG9Sg4ZH8z2ug') storage_dir = getcwd() ``` По умолчанию сервер запуститься на 127.0.0.1:1234 (host, port). **Указать в соответствии с сервером, инчае пользователь не сможет присоедениться к сессии.** signify.py, gui_auth.py ```python #Параметры host = 'localhost' port = 1234 ``` По умолчанию подключение к PostgreSQL на 127.0.0.1:5432 (host, port) к стандартной базе данных. Установить пароль, требуемый при установке PostgreSQL. base_api.py ```python #Параметры host_ = "localhost" port_ = 5432 user_ = "postgres" password_ = "" database_="postgres" ``` 4. Генерация ключа ``` $ py key_gen.py key name: key_test ``` Результат в папке: key_test.pem 5.Запуск сервера ``` $ py server.py [Server listening...] ``` 6.Запуск приложения ``` $ py signify.py ``` Сервер послед удачной регистрации и входа ``` [SERVER] rec command from [None]: login login1 d333caa8477e0ad6c22c1d594b05fa668eee01652f9297c71b3bfdf9cb98c197 [SERVER] Entered in app: login1 login1 d333caa8477e0ad6c22c1d594b05fa668eee01652f9297c71b3bfdf9cb98c197 [SERVER] rec command from [login1]: exit [SERVER] client [ login1 ] disconnected [New connection]: ('127.0.0.1', 57096) [SERVER] active users 1 [SERVER] rec command from [login1]: dwnld_files table.png.sig 0.07 [SERVER] files in disk shared for login1 ``` Консоль приложения ``` [CLIENT] login login1 d333caa8477e0ad6c22c1d594b05fa668eee01652f9297c71b3bfdf9cb98c197 [CLIENT] exit [CLIENT] dwnld_files ``` ## Дополнительная информация Формат подписи .sig, формат ключей .pem, параметры кривой рекомендованные NIST: P-256, хэш функция для паролей базы данных и шифрования файла sha256.