Initial commit
This commit is contained in:
90
README.md
Normal file
90
README.md
Normal file
@ -0,0 +1,90 @@
|
||||
# Post-Quantum FTP (PQ-FTPD)
|
||||
|
||||
A simple, secure file transfer utility using post-quantum cryptography for the key exchange. This project features a client-server architecture running inside Docker.
|
||||
|
||||
## Features
|
||||
|
||||
* **Post-Quantum Security**: Uses the **Kyber768** algorithm from the `liboqs` library to establish a secure channel, protecting against future quantum threats.
|
||||
* **Containerized Server**: The server runs in a Docker container for easy deployment and dependency management.
|
||||
* **CLI Interface**: The client provides a simple command-line interface for uploading files.
|
||||
* **Compression**: Uses `zlib` to compress files before transfer to save bandwidth.
|
||||
* **Authentication**: Implements a basic username/password authentication scheme.
|
||||
|
||||
---
|
||||
## Prerequisites
|
||||
|
||||
### Server (via Docker)
|
||||
* Docker
|
||||
* Docker Compose
|
||||
|
||||
### Client (Local Machine)
|
||||
* A C++ compiler (`g++`)
|
||||
* `make`
|
||||
* `git`
|
||||
* `liboqs` installed locally (see build instructions).
|
||||
* `zlib` (`zlib1g-dev` on Debian/Ubuntu).
|
||||
|
||||
---
|
||||
## How to Run
|
||||
|
||||
### 1. Start the Server
|
||||
|
||||
From the project's root directory, build and run the server using Docker Compose.
|
||||
|
||||
```bash
|
||||
docker-compose up --build -d
|
||||
```
|
||||
* The `-d` flag runs the server in the background.
|
||||
* To view server logs: `docker-compose logs -f`
|
||||
* To stop the server: `docker-compose down`
|
||||
|
||||
### 2. Build and Run the Client
|
||||
|
||||
First, ensure you have the client-side dependencies installed.
|
||||
|
||||
```bash
|
||||
# Install build tools and zlib
|
||||
sudo apt update
|
||||
sudo apt install g++ make git zlib1g-dev ninja-build cmake
|
||||
|
||||
# Install liboqs
|
||||
git clone --branch 0.10.2 [https://github.com/open-quantum-safe/liboqs.git](https://github.com/open-quantum-safe/liboqs.git)
|
||||
cd liboqs
|
||||
mkdir build && cd build
|
||||
cmake -GNinja ..
|
||||
ninja
|
||||
sudo ninja install
|
||||
cd ../.. # Go back to project root
|
||||
```
|
||||
|
||||
Now, navigate to the `client` directory and compile the client:
|
||||
|
||||
```bash
|
||||
cd client
|
||||
make
|
||||
```
|
||||
|
||||
Run the client:
|
||||
```bash
|
||||
./bin/client
|
||||
```
|
||||
---
|
||||
## Usage
|
||||
|
||||
Once the client is running, you can use the following commands:
|
||||
|
||||
* **Upload a file**:
|
||||
```
|
||||
> put /path/to/your/local/file.txt
|
||||
```
|
||||
|
||||
* **Exit the client**:
|
||||
```
|
||||
> exit
|
||||
```
|
||||
Transferred files will appear in the `pq-ftp/server/transfer` directory on the host machine.
|
||||
|
||||
---
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License. See the `LICENSE` file for details.
|
Reference in New Issue
Block a user