SLIP-PLATE - Shamir DEK Plates
SLIP-PLATE is a Python tool designed to split Data Encryption Keys (DEKs) (128/192/256-bit) using Shamir's Secret Sharing and render them as OneKey-style physical plates with built-in checksums.
This project does not implement a wallet and does not interact with blockchains directly.
Installation
You can now install SLIP-PLATE directly from PyPI:
pip install slip-plate
This will automatically install the necessary dependencies (cryptography and pyshamir) and register the slip-plate command in your terminal.
Usage
After installation, you can run the tool from anywhere using the slip-plate command:
slip-plate --dek-size 256 --parts 3 --threshold 2
Arguments
--dek-size: Size of the DEK in bits (128,192, or256). Default:256.--parts: Total number of Shamir shares to create. Default:3.--threshold: Minimum number of shares required to reconstruct the key. Default:2.
Example Output
The tool generates ANSI-rendered plates for your terminal:
=== KEK Share 1 ===
2 1 │ │
0 0 5 2 │ 1 │
4 2 1 5 │ 2 6 3 1 │
8 4 2 6 │ 8 4 2 6 │ 8 4 2 1
─────────────────────────────
1 | ○ ● ● ● │ ● ○ ○ ● │ ● ● ○ ○ │
2 | ○ ○ ● ○ │ ○ ○ ○ ○ │ ○ ○ ● ○ │
. | . . . . | . . . . | . . . . |
. | . . . . | . . . . | . . . . |
. | . . . . | . . . . | . . . . |
11 | ○ ○ ○ ● │ ● ● ● ○ │ ○ ○ ● ○ │
12 | ● ● ○ ○ │ ● ● ○ ● │ ● ○ ○ ○ │
─────────────────────────────
Dots (…) represent truncated rows for brevity.
Security Model
- Offline Storage: Plates are intended to be generated once and stored physically (e.g., punched into metal).
- Ephemeral Memory: DEKs are reconstructed from a quorum of shares only during active operations and are not persisted digitally.
- Unique Nonces: Encryption uses unique nonces per session, embedded in the ciphertext.
- Minimal Footprint: Designed to ensure no DEK is stored on disk in an unencrypted state.
Development & Testing
If you want to contribute or run tests from the source code:
- Clone the repository:
git clone https://github.com/avra911/slip-plate.git cd slip-plate
- Install in editable mode:
pip install -e .
- Run tests:
pip install pytest pytest -q
Notes and Caveats
- Research Tool: This is a demo/research tool. Review the code and cryptographic implementations before use in production environments.
- Physical Security: Treat printed/punched plates as high-security assets.
- Checksums: The built-in checksum helps detect transcription errors but does not replace proper key management procedures.
Disclaimer
This software is provided as-is, without warranty of any kind.
It is intended for educational and experimental purposes. No formal security audit has been performed.
Do not use this software to secure funds or data that you cannot afford to lose.
The authors take no responsibility for loss of funds, data corruption, or other damages resulting from the use or misuse of this software.
Contributions are welcome! Feel free to open a PR or an issue on GitHub.
Metadata
Release files for slip-plate 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slip_plate-0.1.3.tar.gz | 9.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slip_plate-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.3 kB
Release files / slip_plate-0.1.3.tar.gz
| Download URL | slip_plate-0.1.3.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76dd66be9baf364395022e6c3a1bf159b8a92cf6b0ae14364acce25fba0fdabc
|
|
BLAKE2b-256 checksum How to use checksums |
5cbdaed4f601af82d8a30dbba59ec67efdc73857f9affe28513fca8899fd2bf2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / slip_plate-0.1.3-py3-none-any.whl
| Download URL | slip_plate-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c6ebeb6e5bff5009ee3e5ba5a2edbd378565c45f8225d16729a2d72d21b77a5
|
|
BLAKE2b-256 checksum How to use checksums |
88489b8b4dccba3e587df7d31dfa03ed48f98cecfba62b5a00f7f71020afd7af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|