noiseexplorer

module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2023 License: GPL-3.0

README

Noise Explorer

Version 1.0.4, based on Noise Protocol Revision 34.

Overview

The Noise Explorer command-line tool can parse Noise Handshake Patterns according to the original specification. It can generate cryptographic models for formal verification, including security queries, top-level processes and malicious principals, for testing against an active or passive attacker. Noise Explorer can also generate fully functional discrete implementations for any Noise Handshake Pattern, written in the Go and Rust programming languages, as well as WebAssembly binaries.

Noise Explorer can also render results from the ProVerif output into an elegant and easy to read HTML format: the pattern results that can be explored on Noise Explorer were generated using the Noise Explorer command-line tool.

Status
Output Functional Reliable Tests
ProVerif ✔️ ✔️ ✔️
Go ✔️ ✔️ ✔️
Rust ✔️ ✔️ ✔️
Wasm ✔️ ✔️ ✔️
Usage
$> node noiseExplorer --help
Noise Explorer version 0.3 (specification revision 34)
Noise Explorer has three individual modes: generation, rendering and web interface.

Generation:
--generate=(json|pv|go|rs|wasm): Specify output format.
--pattern=[file]: Specify input pattern file (required).
--attacker=(active|passive): Specify ProVerif attacker type (default: active).

Rendering:
--render: Render results from ProVerif output files into HTML.
--pattern=[file]: Specify input pattern file (required).
--activeModel=[file]: Specify ProVerif active attacker model (required).
--activeResults=[file]: Specify active results file for --render (required).
--passiveResults=[file]: Specify passive results file for --render (required).

Web interface:
--web=(port): Make Noise Explorer's web interface available at http://localhost:(port) (default: 8000).

Help:
--help: View this help text.
Requirements
  1. Node is required for running Noise Explorer locally.
  2. ProVerif is required for verifying generated models.
  3. Go and Rust are required for running generated implementations.
  4. Google Chrome is required for testing Wasm implementations.
Preparation
  1. cd src
  2. make dependencies
  3. make parser
Usage

node noiseExplorer --help

Model Generation

To quickly translate all Noise handshake patterns in the patterns folder to ProVerif models, simply run make models after completing the steps outlined in the Preparation section of this document. The models will be available in the models folder.

Implementation Generation

To quickly translate all Noise handshake patterns in the patterns folder to Go, Rust and Wasm implementations, simply run make implementations after completing the steps outlined in the Preparation section of this document. The software will be available in the implementations folder. Note that the implementations found under implementations/wasm and the ones found under implementations/rust use different cryptographic libraries for compatibility purposes.

WebAssembly Binaries

Wasm binaries and relevant helper files are found under implementations/wasm/*/pkg. To re-compile the Wasm binaries run make wasm after generating implementations using make implementations.

Implementation Testing

Running make tests will verify these implementations against test vectors obtained from Cacophony, a Haskell implementation of the Noise Protocol Framework. Testing Wasm implementations will utilize Google Chrome in headless mode.

Implementation Documentation

To view the documentation of a generated Rust implementation, navigate to the directory of the desired pattern and run cargo doc --open --no-deps.

Contributors and License

Authored by Symbolic Software. Released under the GNU General Public License, version 3.

Directories

Path Synopsis
implementations
go command
go/tests/I1K command
go/tests/I1K1 command
go/tests/I1N command
go/tests/I1X command
go/tests/I1X1 command
go/tests/IK command
go/tests/IK1 command
go/tests/IKpsk1 command
go/tests/IKpsk2 command
go/tests/IN command
go/tests/INpsk1 command
go/tests/INpsk2 command
go/tests/IX command
go/tests/IX1 command
go/tests/IXpsk2 command
go/tests/K command
go/tests/K1K command
go/tests/K1K1 command
go/tests/K1N command
go/tests/K1X command
go/tests/K1X1 command
go/tests/KK command
go/tests/KK1 command
go/tests/KKpsk0 command
go/tests/KKpsk2 command
go/tests/KN command
go/tests/KNpsk0 command
go/tests/KNpsk2 command
go/tests/KX command
go/tests/KX1 command
go/tests/KXpsk2 command
go/tests/Kpsk0 command
go/tests/N command
go/tests/NK command
go/tests/NK1 command
go/tests/NKpsk0 command
go/tests/NKpsk2 command
go/tests/NN command
go/tests/NNpsk0 command
go/tests/NNpsk2 command
go/tests/NX command
go/tests/NX1 command
go/tests/NXpsk2 command
go/tests/Npsk0 command
go/tests/X command
go/tests/X1K command
go/tests/X1K1 command
go/tests/X1N command
go/tests/X1X command
go/tests/X1X1 command
go/tests/XK command
go/tests/XK1 command
go/tests/XKpsk3 command
go/tests/XN command
go/tests/XNpsk3 command
go/tests/XX command
go/tests/XX1 command
go/tests/XXpsk3 command
go/tests/Xpsk1 command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL