Fully-deterministic crypto design for Corda

(Konstantinos Chalkias) #1

By fully-deterministic I mean any crypto operation, except for the generation of master keys, to be independent of just collected random seeds. Theoretically, this is possible by taking advantage of the keyHashed (MAC-liked) r factor used in Schnorr signatures to create nonces, blinding factors, ephemeral keys and deterministic wallets. Thus, we can always use the private key attached with some other (unique) value as an input of a SHA or MAC function to produce random numbers.

I highlight that a unique number sequence, but not necessarily random, may still be required, such as a counter-based approach or a UUID.

The main advantage of a fully-deterministic design is that nodes won’t require to be equipped with a specialized TRNG or to be based on the OS’s (random/urandom) pool of entropy. In practice, after a node is provided with its master private key, it will never need access to random seeds.