[noise] Noise Explorer: Generate Software Implementations

Georgio Nicholas georgio at symbolic.software
Mon Apr 8 05:02:26 PDT 2019


Hello everyone,

Under Nadim’s mentorship, I have assisted in enabling Noise Explorer to
generate Rust software implementations for arbitrary Noise Handshake
Patterns.

In addition to Noise Explorer’s existing support for generating Go
implementations, anyone can now generate enhanced implementations in Rust
that provide the following guarantees, in addition to Rust’s memory safety
and performance features:

•    Memory safe, functionally correct, and secret independent Curve25519
and ChaCha20Poly1305 operations by using FFI bindings to HACL* reference
implementations.
•    All Hash, Key, Message, and Nonce objects are now constrained to their
appropriate sizes as defined in the specification.
•    Clearing operations for Key and Hash objects are strictly
unoptimizable by LLVM and overwrite data with zeros.
•    Nonce objects can only be incremented after successful
encryption/decryption and their constructor/destructor functions are called
exclusively and simultaneously with those of a wrapping CipherState.
•    Ephemeral Keys are cleared immediately after use in an
encryption/decryption operation.
•    Operations are executed in constant time.
•    Keypairs cannot hold anything other than one PrivateKey and one
PublicKey.

We are also planning to support targeting WebAssembly from the generated
Rust code, as well as no_std which would allow us to compile for embedded
devices.

You can try out Noise Explorer’s code generation features directly via the
web application: https://noiseexplorer.com

You can also run Noise Explorer locally by downloading the command-line
tool: https://github.com/symbolicsoft/noiseexplorer

We welcome your feedback on this and hope to contribute more soon!

Georgio Nicolas
*Symbolic Software • https://symbolic.software <https://symbolic.software/>*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://moderncrypto.org/mail-archive/noise/attachments/20190408/acd7c1e5/attachment.html>


More information about the Noise mailing list