Skip to main content

🔐 DH-secrets

Diffie-Hellman based secure secret exchange with CLI interface

A Python package that implements secure secret sharing using the Diffie-Hellman key exchange protocol. Perfect for securely exchanging sensitive information between parties without requiring a pre-shared secret.

✨ Features

  • 🔐 Secure Key Exchange: Uses Diffie-Hellman protocol for secure communication
  • 🖥️ CLI Interface: Easy-to-use command-line tool (dhs-cli)
  • 🔑 Key Management: Generate, list, and manage public/private key pairs
  • 📝 Message Encoding/Decoding: Encrypt and decrypt messages between parties
  • 🎯 No Pre-shared Secrets: Secure communication without prior key exchange

🚀 Installation

Install lib and cli using the following command.

$ pip install dhsecrets

📖 Usage

The package installs a command-line utility called dhs-cli for easy interaction.

🆘 Help

$ dhs-cli -h

usage: dhs-cli [-h] [-p PATH] {list,generate,encode,decode} ...

Diffie-Hellman secrets.

positional arguments:
  {list,generate,encode,decode}

optional arguments:
  -h, --help            show this help message and exit
  -p PATH, --path PATH  Key path

🚀 Quick Start

  1. Generate key pairs for Alice and Bob
  2. Exchange public keys between parties
  3. Encode messages using your private key and recipient's public key
  4. Decode messages using your private key and sender's public key

🔑 Create Keys

We are Alice and we want to share a secret with Bob. First step is to create a key pair and share the public key with Bob.

$ dhs-cli generate priv -n alice

Created alice-3cf5.pub and alice-3cf5.priv

Bob on his side do the following.

$ dhs-cli generate priv -n bob

Created bob-d740.pub and bob-d740.priv.

📋 List Keys

After Alice copies Bob's public key to the key folder, she can list the known keys.

$ dhs-cli list priv

[
    {
        "file": "./alice-3cf5.priv",
        "name": "alice",
        "pub": "0319c6697fb8e0d65f0f4d4e93a7fe52ce41e51dfb340a8a2207830158f85e3cf5",
        "encodig": "HEX",
        "timestamp": "Thursday, 08 September 2022 10:43AM"
    }
]

Alice known only 1 private key and 2 publik keys, she can check using the following command.

$ dhs-cli list pub

[
    {
        "file": "./bob-d740.pub",
        "name": "bob",
        "pub": "031bf3ecc3458bec4f34f8d47d2db8d46d7679562e3efa5d71edd10d8f35ccd740",
        "encodig": "HEX",
        "timestamp": "Thursday, 08 September 2022 10:43AM"
    },
    {
        "file": "./alice-3cf5.pub",
        "name": "alice",
        "pub": "0319c6697fb8e0d65f0f4d4e93a7fe52ce41e51dfb340a8a2207830158f85e3cf5",
        "encodig": "HEX",
        "timestamp": "Thursday, 08 September 2022 10:43AM"
    }
]

🔐 Encode Messages

Alice can encode the string message using the encode command.

$ dhs-cli encode --priv alice-3cf5.priv --pub bob-d740.pub -P "supersecret"

Created alice-bob-d60c.enc


$ cat alice-bob-d60c.enc

E7irYBYdMxBOZGtu221RZSJc3VSQ8yAVt33NmH2eW959Y6lYyMJoCTAG7Q3kxHLBhbIhGYUPLzraUDwvZeHyaDLQHqnq/7K2XNMvtGOy7wWVtlRuYIBGdNXNslGvugke/kr71xkWEfjgG7sUDYyYXJqxUa2Ol24KPoxPDr+5jJYrzSCzGgRZYhEo/2/rsrANBHN5Z698w/bVB4eC8+KyzIJ51A2HaDz0CCHi73bCsJv6sJPLf6U2HYHdK/xig1XADQYb7eWAVv4C51mTi1iv9LqGKoLgMnUD7GEzXVgbCmhol9CG3ZnsDrrLZy/ntEOj9Q+qMhPdhPzKCoxmJkQf+6xLLRSEmkTi7fg4XlKIoERh4IgJ+blZ3MOngmHz/cJs97WlKnTlK4djr3EHdA2N0WO+YVvJ/lXpXCe1dE1RIJrUc04oJtasXMjlZIB8wDXYIBKzAbR8+khgw9/Oapm/BZBBmHpM36yIGgz0zmmnCybYJOagXT93LkatOWK/olqc

🔓 Decode Messages

Bob can decode the message using the decode command.

$ dhs-cli decode --priv bob-d740.priv --pub alice-3cf5.pub -F alice-bob-d60c.enc | jq

{
  "from": "0319c6697fb8e0d65f0f4d4e93a7fe52ce41e51dfb340a8a2207830158f85e3cf5",
  "to": "031bf3ecc3458bec4f34f8d47d2db8d46d7679562e3efa5d71edd10d8f35ccd740",
  "type": "string",
  "payload": "supersecret",
  "payload_signature": "maYEEc7yhP/iP/8ZtoiuomVtLtXp2FHfrJz0IZvCpR5NDOUpCpBG4WbU3LWGk6Lf0e/ORhNFBXFhXCXyzUw84w==",
  "local_timestamp": "Thursday, 08 September 2022 01:23PM"
}

📚 Use Cases

  • 💬 Secure messaging: Exchange sensitive information between parties
  • 🔐 API key sharing: Securely share API keys and credentials
  • 📋 Configuration secrets: Exchange configuration files with sensitive data
  • 🎯 One-time secrets: Share temporary passwords or access codes
  • 🔒 Document encryption: Encrypt documents for specific recipients

🤝 Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for DHsecrets 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for DHsecrets 0.0.3
File Size Uploaded
dhsecrets-0.0.3.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for DHsecrets 0.0.3
File Interpreter ABI Platform
dhsecrets-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 13.7 kB

Release files / dhsecrets-0.0.3.tar.gz

Download URL dhsecrets-0.0.3.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6500182646480fbc384033602cc19f9a701fbb7e2be3758b4820ddd8013ef1eb
BLAKE2b-256 checksum
How to use checksums
3ef964a6affc559995c5c673d6847e2c2e00242218f0d17a00fc2fe373f7df1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / dhsecrets-0.0.3-py3-none-any.whl

Download URL dhsecrets-0.0.3-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0e5f747954ac6a629d71cbff659d14ca41f14d8325fb077271d8196e3b92cda
BLAKE2b-256 checksum
How to use checksums
68711e1eecea98d51e787a53abd2bee2dea072e9fb841790adcd928ffb3c4b04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page