Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/42loco42/go-zeolite
zeolite rewrite in golang
https://github.com/42loco42/go-zeolite
encryption golang-library perfect-forward-secrecy
Last synced: 1 day ago
JSON representation
zeolite rewrite in golang
- Host: GitHub
- URL: https://github.com/42loco42/go-zeolite
- Owner: 42LoCo42
- License: agpl-3.0
- Created: 2022-08-17T16:42:59.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-12T10:30:25.000Z (about 2 years ago)
- Last Synced: 2023-08-10T21:26:12.484Z (over 1 year ago)
- Topics: encryption, golang-library, perfect-forward-secrecy
- Language: Go
- Homepage:
- Size: 45.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-zeolite
Zeolite: simple & secure communications
based on [libsodium](https://doc.libsodium.org) with
[perfect forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy),
[XChaCha20-Poly1305](https://en.wikipedia.org/wiki/ChaCha20-Poly1305)
and a mirrored protocol (no distinction between client & server).## Protocol design
The protocol is completely identical for server & client.### Handshake (performed in lockstep by both participants)
1. Protocol version (currently `zeolite1`, so 8 bytes)
2. Public key (32 bytes)
4. Ephemeral key (for PFS) signed with public key (96 bytes)
5. Symmetric key (for communication) encrypted with ephemeral key (72 bytes)
6. Stream header (24 bytes)Total: 232 bytes
### Data Transmission
1. Message size (4 bytes)
2. Encrypted message (17 bytes + message size)Total: 21 bytes + message size