https://github.com/sjdonado/secure-p2p-real-time-chat
Real time P2P messaging app using ECDH (Curve 256) + AES GCM **Education only**
https://github.com/sjdonado/secure-p2p-real-time-chat
aes-gcm ecdh python3 real-time-chat
Last synced: 5 months ago
JSON representation
Real time P2P messaging app using ECDH (Curve 256) + AES GCM **Education only**
- Host: GitHub
- URL: https://github.com/sjdonado/secure-p2p-real-time-chat
- Owner: sjdonado
- Created: 2021-09-23T14:31:26.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-09-23T17:14:00.000Z (about 4 years ago)
- Last Synced: 2025-05-10T09:54:30.040Z (5 months ago)
- Topics: aes-gcm, ecdh, python3, real-time-chat
- Language: Python
- Homepage:
- Size: 24.4 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Secure P2P messaging chat
===## 1. Pre register protocol
Generate and store `pi_0`, `pi_1` and `c`
## 2. Client-Server secure connection
### Key exchange

### Communication

## 3. Client-Client secure connection
### Key exchange
### Communication
Same as **2**: AES GCM using `k_ab`, `k_ba` and `N`
# Setup
### 1. Create virtual env
```bash
python3 -m venv env
```### 2. Install dependencies
```bash
pip install -r requirements.txt
```### 3. Pre register
```bash
./pre_register.py user_a root_server userapass
./pre_register.py user_b root_server userbpass
```# How to run?
- To display help: `./client.py --help`
- To run in verbose mode: `./client.py --verbose`
- To exit write `exit` in all terminals## Step by step
### 1. Open the server in a new terminal
```bash
./server.py
```### 2. Open the client **B** in a new terminal
```bash
./client.py user_b 127.0.0.1:8001 --point-a user_a
```### 3. Open the client **A** in a new terminal
```bash
./client.py user_a 127.0.0.1:8002 --point-b user_b
```## Server interactive session
Run allowed commands: `ip_signup`, `get_ip`, `update_ip`, `update_pass`, `exit`
NOTE: make sure to be registered before or run `ip_signup````bash
./client.py user_a 127.0.0.1:8001 --server-interactive-session
```# Demo
