zkTLS is a proof-of-concept implementation of a Transport Layer Security (TLS) protocol with zero-knowledge elements. It combines traditional TLS handshake procedures with Multi-Party Computation (MPC) and Garbled Circuits to enhance privacy and security.
- TLS-like handshake protocol
- Garbled Circuit implementation for secure computation
- Oblivious Transfer (OT) protocol
- Multi-Party Computation (MPC) for key derivation
- Secure communication using AES-GCM encryption
garbled_circuit.py
: Implementation of the Garbled Circuitoblivious_transfer.py
: Implementation of the Oblivious Transfer protocolmpc_party.py
: Multi-Party Computation party and handshaketls_handshake.py
: TLS handshake implementationsecure_communication.py
: Secure communication using derived keysmain.py
: Entry point for running the client or server
- Python 3.7+
- cryptography library
-
Clone the repository:
git clone https://github.com/yourusername/zkTLS.git cd zkTLS
-
Install the required dependencies:
pip install cryptography
To run the server:
python main.py server
To run the client:
python main.py client
This is a proof-of-concept implementation and should not be used in production environments. It lacks many security features of a full TLS implementation, including:
- Complete certificate chain validation
- Support for multiple cipher suites
- Session resumption
- Perfect forward secrecy
- Protection against various attacks (e.g., padding oracle, timing attacks)
Contributions to improve the implementation or add features are welcome. Please submit a pull request or open an issue to discuss proposed changes.
This project is licensed under the MIT License - see the LICENSE file for details.
This implementation is for educational purposes only and should not be used in production systems or to protect sensitive information.