Signing, Hashing and Key Derivation¶
Signing algorithm: ED25519¶
ED25519 is an elliptic curve algorithm developed in an academic setting with a focus on security from side channel attack, performance, and fixing a lot of the little annoyances in most elliptic curve systems1. However, it should be noted that instead of using SHA-512 in the key derivation function, Nano uses Blake2b.
Incorrect, SHA-512 has been used
0000000000000000000000000000000000000000000000000000000000000000 -> 3B6A27BCCEB6A42D62A3A8D02A6F0D73653215771DE243A63AC048A18B59DA29
Correct, Blake2b digested the seed
0000000000000000000000000000000000000000000000000000000000000000 -> 19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858
Hashing algorithm: Blake2¶
Compared to existing cryptocurrencies, the hash algorithm chosen is much less important since it's not being used in a Proof-of-Work context. In Nano hashing is used purely as a digest algorithm against block contents. Blake2 is a highly optimized cryptographic hash function whose predecessor was a SHA3 finalist.2
Key derivation function: Argon2¶
The key derivation function of Argon2 is used for securing the account keys in the reference wallet. 3