Public key encryption system combining X25519 ephemeral Diffie-Hellman key exchange and STREAM-based symmetric cryptography
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
go
js
python
ruby
rust
vectors
.travis.yml
CHANGES.md
CODE_OF_CONDUCT.md
LICENSE-APACHE
LICENSE-MIT
README.md

README.md

XSTREAM Build Status MIT/Apache 2.0 Licensed Gitter Chat

A public-key encryption system supporting streaming message encryption/decryption.

What is XSTREAM?

XSTREAM (pronounced "extreme!") is a public key encryption system combining X25519 Elliptic Curve Diffie-Hellman (RFC 7748) with the STREAM construction.

The implementations in this repository are built on top of the Miscreant misuse-resistant symmetric encryption library, which provides the AES-SIV and AES-PMAC-SIV algorithms.

More information on XSTREAM is available in the Wiki.

Is it any good?

Yes.

Is it "Production Ready™"?

DANGER: EXPERIMENTAL

tl;dr: Not ready yet. Check back later.

XSTREAM is an experimental construction whose design has not yet been finalized which is still potentially subject to change. It is not yet suitable to use in production systems.

The design has not yet been thoroughly reviewed and we're presently soliciting feedback from cryptographers.

Additionally all XSTREAM libraries are v0.1, which is hopefully a sign, at least for a cryptography library, that you should probably wait before attempting to use it.

Key Derivation Function

XSTREAM KDF

STREAM Construction

XSTREAM KDF

NOTE: As XSTREAM derives a unique symmetric key every time the KDF is invoked, and also supports an optional salt value passed directly to HKDF, the N parameter passed to the underlying STREAM construction is fixed to all-zeroes.

The API is explicitly designed to prevent encrypting more than one message under the same ephemeral key.

Language Support

XSTREAM libraries are available for the following languages:

Language Version
Go N/A
JavaScript npm
Python pypi
Ruby gem
Rust crate

Help and Discussion

Have questions? Want to suggest a feature or change?

Documentation

Please see the XSTREAM Wiki for more information about XSTREAM.

Code of Conduct

We abide by the Contributor Covenant and ask that you do as well.

For more information, please see CODE_OF_CONDUCT.md.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/miscreant/xstream

License

Copyright (c) 2017 The Miscreant Developers.

All XSTREAM libraries are licensed under either of:

at your option.