Skip to main content

Matryoshka Protocol - Invisible quantum-resistant messaging

Project description

Matryoshka Protocol (MATP)

Invisible secure messaging with steganography, post-quantum cryptography, and zero-knowledge proofs.

📦 Features

  • Invisible messaging - Hide encrypted messages in normal web traffic
  • Post-quantum cryptography - Kyber-512 KEM and Dilithium-2 signatures
  • Group messaging - Fractal Group Ratchet for efficient group encryption
  • Zero-knowledge proofs - Sigma protocol for plausible deniability
  • Multiple steganography modes - JSON API, EXIF, Fast Ghost
  • Classical crypto fallback - X25519, Ed25519, AES-256-GCM

📦 Installation

pip install matp

🚀 Quick Start

1. Basic 1-to-1 Messaging

from matp import MatryoshkaProtocol

# Initialize
alice = MatryoshkaProtocol()
bob = MatryoshkaProtocol()

# Key exchange (X25519)
alice_priv, alice_pub = MatryoshkaProtocol.generate_keypair()
bob_priv, bob_pub = MatryoshkaProtocol.generate_keypair()

shared_secret = MatryoshkaProtocol.derive_shared_secret(alice_priv, bob_pub)
alice_session = MatryoshkaProtocol(key=shared_secret)
bob_session = MatryoshkaProtocol(key=shared_secret)

# Send invisible message
msg = alice_session.send_message("Secret meeting at midnight")
# Looks like: {"status": "success", "data": {...}}

# Receive
plaintext = bob_session.receive_message(msg)

2. Ghost Mode (Perfect Invisibility)

from matp import GhostMode

key = b"shared_secret_key_32_bytes_long!"
alice = GhostMode(key=key)
bob = GhostMode(key=key)

# Send hidden in GitHub API response
cover = alice.send_invisible("Secret data", service="github")
# Returns: {"id": 123456, "login": "user", "bio": "<encrypted>", ...}

# Receive
message = bob.receive_invisible(cover)

3. Fast Ghost Mode (Speed + Invisibility)

from matp import FastGhostMode

key = b"benchmark_key_32_bytes_padding!!"
alice = FastGhostMode(key=key)
bob = FastGhostMode(key=key)

# 0.01ms latency, perfect invisibility
cover = alice.send("Fast secret message")
message = bob.receive(cover)

4. Dead Drop Protocol

from matp import DeadDropProtocol

key = b"dead_drop_key_32_bytes_padding!!"
dead_drop = DeadDropProtocol(key=key)

# Alice drops message (no direct connection to Bob)
location = dead_drop.drop_message("secret_spot_42", "The eagle has landed")

# Bob picks up later
message = dead_drop.pickup_message(location)

5. Group Messaging

from matp import MatryoshkaGroupManager

# Create users
alice = MatryoshkaGroupManager("alice")
bob = MatryoshkaGroupManager("bob")

# Alice creates group
group = alice.create_group("team", "Secret Team")

# Bob joins
invite = group.export_invite()
bob.join_group(invite)

# Alice sends invisible group message
msg = alice.send_to_group("team", "Meeting at 3pm!")
# Returns: {"status": "success", "data": {...}}  # Looks like normal API

# Bob receives
received = bob.receive_group_message(msg)
print(received['message'])  # "Meeting at 3pm!"

6. Quantum-Resistant Crypto (Optional)

from matp import quantum

qc = quantum.get_quantum_crypto()

# Generate post-quantum keypair
keypair = qc.generate_kem_keypair()

# Encapsulate shared secret
kem_ct = qc.kem_encapsulate(keypair.public_key)

# Decapsulate
shared_secret = qc.kem_decapsulate(keypair.secret_key, kem_ct.ciphertext)

📚 API Reference

Core Classes

  • MatryoshkaProtocol - 1-to-1 encrypted messaging
  • GhostMode - Steganographic messaging
  • FastGhostMode - High-performance steganography
  • DeadDropProtocol - Asynchronous message drops
  • MatryoshkaGroupManager - Group messaging
  • quantum.get_quantum_crypto() - Post-quantum cryptography

⚠️ Disclaimer

Research prototype. Use for educational purposes. Not audited for production use.

📄 License

Apache 2.0

👤 Author

Sangeet Sharma

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matp-0.5.0.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matp-0.5.0-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file matp-0.5.0.tar.gz.

File metadata

  • Download URL: matp-0.5.0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for matp-0.5.0.tar.gz
Algorithm Hash digest
SHA256 0a8c3ba87ff9187f6d50d811ebe9231766a6f399a8500c6740022a995cc48232
MD5 4e955c6773f74a5247f859b5a9154d2a
BLAKE2b-256 b0f8e698b909f9438a343e5f45624b849d597e99102f0dbde70cfd379690e330

See more details on using hashes here.

File details

Details for the file matp-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: matp-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for matp-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4cc2e5c08237c0047f249a828726068963a49830af1751cb24e4279c8e92e5b5
MD5 098238d17c9432eda132ccb1548de762
BLAKE2b-256 04b51eeb9bf165b04469f7b504f15359690129382fef19e569b3b336aed03996

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page