User Tools

Site Tools


chat-bots:zaschischennaja_peredacha_dannyx._prosmotr_trafika._json

This is an old revision of the document!


Защищенная передача данных. Просмотр трафика. JSON.

Защищенная передача данных

Дано

  • Alice — отправитель сообщения message
  • Bob — получатель (PrivateKey_Bob, PublicKey_Bob)

Задача

Элис требуется отправить сообщение message Бобу, чтобы никто кроме Боба не мог его прочитать.

Алгоритм

  1. Элис запрашивает у Боба его PublicKey_Bob
  2. Элис шифрует свое сообщение message_encrypted = Encrypt(message, PublicKey_Bob)
  3. Элис отправляет message_encrypted Бобу по незащищенному каналу
  4. Боб расшифровывает message_decrypted = Decrypt(message_encrypted, PrivateKey_Bob)

На выходе имеем: message == message_decrypted

То есть message == Decrypt(Encrypt(message, PublicKey_Bob), PrivateKey_Bob)

Правила безопасности

  • Открытый ключ можно и нужно опубликовать в открытом доступе для всех желающих. Например см. https://keys.openpgp.org
  • Приватный ключ храним в секрете!!!

Практика шифрования файла при помощи GNU Privacy Guard (GPG)

https://gnupg.org

# Боб создает связку GPG ключей: name = Bob, email = bob@example.com
(Bob) $ gpg --full-gen-key
> (1) RSA and RSA
> 4096
> Bob Ivanov
> bob@example.com
> 8312 (ваша группа в ННГУ)
> придумать, запомнить и ввести Passphrase
 
 
# Боб экспортирует открытый ключ, чтобы передать его Элис
(Bob) $ gpg --export -a bob@example.com > PublicKey_Bob.gpg
 
# Боб отправляет файл PublicKey_Bob.gpg Элис доступным способом (почта, telegram, флешка и тп)
 
# Элис импортирует ключ Боба в GPG
(Alice) $ gpg --import PublicKey_Bob.gpg
 
# Элис делает ключ Боба доверенным
(Alice) $ gpg --edit-key bob@example.com
> trust
> 5
> quit
 
# Элис шифрует файл с сообщением при помощи открытого ключа Боба
# результат сохраняется в message.txt.asc (aka message_encrypted)
(Alice) $ gpg -e -a -r bob@example.com message.txt
 
 
# Элис отправляет зашифрованный файл message.txt.asc Бобу
 
# Боб расшифровывает message.txt.asc (aka message_encrypted)
(Bob) $ gpg -d -o message_decrypted.txt message.txt.asc

Полезные команды

# список открытых ключей
$ gpg -k
 
# список секретных ключей
$ gpg -K

Просмотр сетевого трафика

Замечания про HTTP

Смотрим HTTP трафик

Исходный код сервера см. в git.

# установка wireshark
$ sudo apt install wireshark
$ sudo dpkg-reconfigure wireshark-common
$ sudo chmod +x /usr/bin/dumpcap
 
# запускаем wireshark
$ wireshark
 
# запускаем HTTP сервер
$ python3 http-server.py
 
# отправляем HTTP запрос
$ curl "http://127.0.0.1:8000?login=user&password=passwd"

https://www.cloudflare.com/learning/ssl/why-is-http-not-secure/

Смотрим HTTPS трафик

# Генерируем самоподписанный ключ и сертификат
$ openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem
 
# запускаем HTTPS сервер
$ python3 https-server.py
 
# отправляем HTTPS запрос
$ curl https://127.0.0.1:8443
 
# отправляем HTTPS запрос (разрешаем самоподписанный сертификат)
$ curl --insecure "https://127.0.0.1:8443?login=user&password=passwd"

В каждом запросе в телеграмм используется секретный access token. Это можно делать только в HTTPS!

JSON

Д/З

  1. Создать про помощи gpg связку ключей. Экспортировать свой публичный ключ в текстовый файл.
  2. Отправить Олегу Андреевичу файл, содержащий Ваш публичный ключ.
  3. Получить в ответ зашифрованное сообщение, расшифровать его при помощи gpg.
  4. Отправить Олегу Андреевичу расшифрованное сообщение.
chat-bots/zaschischennaja_peredacha_dannyx._prosmotr_trafika._json.1758609226.txt.gz · Last modified: by olegsklyarov