Implement support for hardware RNG device(s) #55
Labels
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: public/keyfork#55
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
There are several devices which can be used as an additional source of entropy such as:
Secondary computer with different chip architecture from primary workstation which can generate entropy and save it to a file (RISC-V, FPGA, HSMs etc.)
Quantis QRNG USB
TrueRNG
Infinite Noise TRNG
It appears that most of these devices have the ability to write entropy to a file. This is convenient because it means we can just implement functionality that uses the file + OS entropy for cryptographic actions, rather than implement interfaces for specific devices.
This would also allow the use of a photograph as a source of entropy. Ideally we can pass multiple files as additional entropy.
Threat Modeling
There is the risk of supply chain / bad usb style attacks here so in the context of managing cryptographic material so we need to ensure a few counter measures.
Use "chain of custody" principles / processes
Use anti-interdiction where/if available
Inspect hardware physically if possible
Use devices to seed entropy to a USB, then wipe system. In other words never plug in the device while cryptographic actions are being performed - primarily to avoid entropy issues as a bad USB could do a
libfakerand
style attack.