Skip to content

Security: planktonlabs/frozenkrill

Security

docs/security.md

Using frozenkrill safely

In future, frozenkrill (or software designed with similar goals) will run on hardware wallets (fingers crossed🤞), but as today it requires a "normal" computer and a tech-savvy user.

It requires that:

  1. the user is able to check the hardware for potential malware, in particular
    1. There are no keyloggers on main computer or keyboard
    2. The BIOS can be trusted
    3. Components like Intel Management Engine are not doing funny stuff
  2. the user will boot a minimal and safe (preferably open-source) system in a known state (e.g use a secure Linux/BSD distribution that has been safely downloaded and minimally audited)
    • In particular it's imperative that the swap memory is disable so no RAM contents ever get persisted to disk
    • And, of course, that frozenkrill is the official version and no tampering has happened
  3. the system will never get connected to internet during key generation and it will be reset before connecting again
  4. the password is reasonably strong and has not been reused (and will not be reused) outside of frozenrkrill
  5. no one is watching you

A note about computer entropy and randomness

Many hardware wallet users are very concerned about the capabilities of their devices of being random enough while generating a seed.

Many will prefer to throw dice (or some similar method) and generate the seed using non digital methods of gathering entropy.

While frozenkrill is perfectly capable of accepting an external seed generated by the user (see the --user-generated-seed flag of the singlesig-generate command), in practice if the user don't trust the operating system's entropy pool, then others cryptographic processes like salt and nonce generation shouldn't also be trusted.

So we recommended everyone to do their own due diligence and check if they can trust the entropy of their setup.

One tip is to install the package rng-tools, present in most Linux distributions, in particular run the rngtest binary like rngtest -c 1000 < /dev/random.

If it doesn't block and yield a low failure rate (let's say, less than 1%), then it may be safe enough for our purposes.

There aren’t any published security advisories