A local tool for testing End-to-End Encryption (E2EE) between two parties. GenE2EETool simulates the process of message exchange using asymmetric encryption (RSA) for key exchange and symmetric encryption (AES) for encrypting the messages themselves.
- RSA Key Generation: Generates RSA key pairs for the sender and receiver.
- AES Encryption: Encrypts messages using AES symmetric encryption.
- Secure Key Exchange: Encrypts the AES key with the receiver's RSA public key.
- Data Integrity: Uses HMAC to ensure the integrity of the encrypted message.
- Python 3.6 or higher
cryptography
library
-
Clone the Repository
git clone https://github.com/geniuszly/GenE2EETool.git cd GenE2EETool
-
Install Dependencies
pip install cryptography
Run the generate_keys.py
script to generate RSA key pairs for both the sender and the receiver.
python generate_keys.py
Create a text file named plain_message.txt
inside the messages directory with the content you wish to encrypt.
Run the sender.py
script to encrypt the message and the AES key.
python sender.py
This will generate:
encrypted_message.bin
: The AES-encrypted message.encrypted_key.bin
: The RSA-encrypted AES key.message.hmac
: The HMAC of the encrypted message.
Run the receiver.py
script to decrypt the AES key and then the message.
python receiver.py
The decrypted message will be saved as decrypted_message.txt
in the messages/
directory.
- Key Generation
- RSA keys are generated for both the sender and receiver.
- Keys are stored in the
keys/
directory.
- Encryption Process
- The sender generates an AES symmetric key.
- The message is encrypted using AES.
- The AES key is encrypted with the receiver's RSA public key.
- An HMAC is created for the encrypted message.
- Decryption Process
- The receiver decrypts the AES key using their RSA private key.
- The receiver verifies the HMAC to ensure data integrity.
- The message is decrypted using the AES key.
- Implement message exchange over a network using sockets or WebSockets.
- Extend the tool to support encryption and transfer of files.
- Implement additional security features like key rotation, password-protected keys, and secure key storage.
- Add comprehensive error handling and logging mechanisms.
Локальный инструмент для тестирования сквозного шифрования (End-to-End Encryption, E2EE) между двумя сторонами. GenE2EETool симулирует процесс обмена сообщениями, используя асимметричное шифрование (RSA) для обмена ключами и симметричное шифрование (AES) для шифрования самих сообщений.
- Генерация ключей RSA: Создает пары ключей RSA для отправителя и получателя.
- Шифрование AES: Шифрует сообщения с использованием симметричного шифрования AES.
- Безопасный обмен ключами: Шифрует ключ AES открытым ключом RSA получателя.
- Целостность данных: Использует HMAC для обеспечения целостности зашифрованного сообщения.
- Python 3.6 или выше
- Библиотека
cryptography
-
Клонируйте репозиторий
git clone https://github.com/geniuszly/GenE2EETool.git cd GenE2EETool
-
Установите зависимости
pip install cryptography
Запустите скрипт generate_keys.py
для генерации пар ключей RSA для отправителя и получателя.
python generate_keys.py
Создайте текстовый файл с именем plain_message.txt
в директории messages/
с содержимым, которое вы хотите зашифровать.
Запустите скрипт sender.py
для шифрования сообщения и ключа AES.
python sender.py
Это сгенерирует следующие файлы:
encrypted_message.bin
: Зашифрованное сообщение (AES).encrypted_key.bin
: Зашифрованный ключ AES (RSA).message.hmac
: HMAC зашифрованного сообщения.
Запустите скрипт receiver.py
для расшифровки ключа AES и сообщения.
python receiver.py
Расшифрованное сообщение будет сохранено как decrypted_message.txt
в директории messages/
.
- Генерация ключей
- Генерируются ключи RSA для отправителя и получателя.
- Ключи сохраняются в директории
keys/
.
- Процесс шифрования
- Отправитель генерирует симметричный ключ AES.
- Сообщение шифруется с помощью AES.
- Ключ AES шифруется открытым ключом RSA получателя.
- Создается HMAC для зашифрованного сообщения.
- Процесс расшифровки
- Получатель расшифровывает ключ AES с помощью своего закрытого ключа RSA.
- Проверяет HMAC для обеспечения целостности данных.
- Сообщение расшифровывается с использованием ключа AES.
- Реализовать обмен сообщениями через сеть с использованием сокетов или WebSockets.
- Расширить инструмент для поддержки шифрования и передачи файлов.
- Внедрить дополнительные функции безопасности, такие как ротация ключей, защита ключей паролями и безопасное хранение ключей.
- Добавить полноценную обработку ошибок и механизмы логирования.