Newer
Older
# Описание проекта
Проект предназначен для создания ЭЦП и проверки ЭЦП в соответствии с ГОСТ 34.10-2012, используя хеш функцию sha256
Информационная технология
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Процессы формирования и проверки электронной цифровой подписи
Настоящий стандарт определяет схему электронной цифровой подписи (ЭЦП) (далее - цифровая подпись), процессы формирования и проверки цифровой подписи под заданным сообщением (документом), передаваемым по незащищенным телекоммуникационным каналам общего пользования в системах обработки информации различного назначения.
Внедрение цифровой подписи на основе настоящего стандарта повышает по сравнению с ранее действовавшей схемой цифровой подписи уровень защищенности передаваемых сообщений от подделок и искажений.
```
# Возможности проекта
- Серверная часть
- Реализация взаимодействия с пользователем с помощью команд
- Фактическая реализация подписи/проверки ЭЦП данных, полученных пользователем
- Взаимодействие с базой данных 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_ = "<YOUR PAS>"
database_="postgres"
```
4. Генерация ключа
```
$ py key_gen.py
key name: key_test
```
Результат в папке: key_test.pem
5.Запуск сервера
```
$ py server.py
[Server listening...]
```
Сервер послед удачной регистрации и входа
```
[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 <SIZE>0.07
[SERVER] files in disk shared for login1
```
Консоль приложения
```
[CLIENT] login login1 d333caa8477e0ad6c22c1d594b05fa668eee01652f9297c71b3bfdf9cb98c197
[CLIENT] exit
[CLIENT] dwnld_files
```
Формат подписи .sig, формат ключей .pem, параметры кривой рекомендованные NIST: P-256, хэш функция для паролей базы данных и шифрования файла sha256.