just some notes on some research i've been doing as an application developer looking to better understand crypto libraries and cipher suites
with a focus on noise protocol
noise adds additional higher-level constructs to common ciphers used in other cipher suites that are useful for transport encryption (replacing openssl more than libsodium)
- AEAD
- handshake patterns
- EC key-derivation functions
- noise spec
- https://duo.com/labs/tech-notes/noise-protocol-framework-intro
- https://github.com/mcginty/snow
- https://docs.rs/snow/0.7.0-alpha4/snow/params/index.html
- https://noiseexplorer.com/
- https://cryptobook.nakov.com/
- https://blog.cloudflare.com/do-the-chacha-better-mobile-performance-with-cryptography/
- http://loup-vaillant.fr/articles/implemented-my-own-crypto
- monocypher
- libsodium
- p-521 (NIST) vs ed25519 (Edwards / DJB) vs secp256k1 (BTC)
- blake2s vs blake2b (in the context of wasm32)
- AESGCM vs ChaCha20
- ChaCha20 vs XChaCha20
- Poly1305 vs HMAC?
- handshake
all in the asymmetric context:
- key generation?
- key encryption with a passcode? (symmetric secret? with a hash, right?)
- signing data? (does noise provide signatures?) - 7.7
- ed25519
- encrypting data?
perhaps monocypher might be better, since it uses more orthogonal algorithm constructs (like EdDSA with Blake2b instead of SHA512). also, noise protocol focuses on a different problem than the ones I'm looking to solve, in terms of E2EE and general application crypto suites.