fix readme typos etc

This commit is contained in:
Triss 2023-08-24 04:20:39 +02:00
parent 6aa14a75d4
commit 057f41dcd2
1 changed files with 12 additions and 10 deletions

View File

@ -25,8 +25,8 @@ whitening/compression step based on [Ascon](https://ascon.iaik.tugraz.at/)-Xofa.
## Requirements ## Requirements
* Pico C SDK * Pico C SDK
* System must not run from ROSC, and the system clock must be at least 48 MHz * System must not run from ROSC
(80 MHz or higher preferred, 125 MHz or higher ideal). * System clock must be at least 48 MHz (80 MHz or higher preferred, 125 MHz or higher ideal)
* SysTick not used by something else * SysTick not used by something else
## How it works ## How it works
@ -130,9 +130,9 @@ a high enough system clock frequency (≥80 MHz preferred, ≥125 MHz ideal).
Dieharder isn't the most stringent test suite, though. Dieharder isn't the most stringent test suite, though.
[TestU01](http://simul.iro.umontreal.ca/testu01/tu01.html)'s BigCrush suite is [TestU01](http://simul.iro.umontreal.ca/testu01/tu01.html)'s BigCrush suite is
much more comprehensive, but requires ***much*** more data (many gigabytes). much more comprehensive, but requires ***much*** more data (many gigabytes).
Thanks to the limited throughput of a hardware TRNG, using this test isn't very Due to the limited throughput of a hardware TRNG, using this test isn't very
feasible. Real evaluations such as FIPS 140-2, or Common Criteria EAL4 or feasible. Real evaluations such as FIPS 140-2, or Common Criteria EAL4 or
higher, is completely out of my means. higher are completely out of my means.
In conclusion, don't trust someone's life --- neither your own nor someone In conclusion, don't trust someone's life --- neither your own nor someone
else's --- with this. But otherwise, you should be fine. If you need the else's --- with this. But otherwise, you should be fine. If you need the
@ -264,7 +264,8 @@ Preparing to run test 209. ntuple = 0
dab_monobit2| 12| 65000000| 1|0.71153312| PASSED dab_monobit2| 12| 65000000| 1|0.71153312| PASSED
``` ```
At 48 MHz and a core voltage of 0.95 V, there would be three or four `WARN`ings. At 48 MHz and a core voltage of 0.95 V, there would be three or four `WARN`ings
(but still no `FAILED` messages).
### Throughput ### Throughput
@ -289,9 +290,10 @@ very fast. The "cooked" (whitened) throughput is about 10 times higher than the
would then modify the ROSC `COUNT` register in parallell. This is bad and would then modify the ROSC `COUNT` register in parallell. This is bad and
will lead to bad results. Don't do this. (Or alternatively, add mutex guards, will lead to bad results. Don't do this. (Or alternatively, add mutex guards,
or bug me to do so.) or bug me to do so.)
* **More useful `rand()` functions**: currently, the code just gives you bits, * **More useful `rand()` functions**: currently, the code just gives you bits.
and turning these bits into a random integer in a range, or a random float, Turning these bits into a random integer in a range, or a random float, ...,
..., is left as an exercise for the reader. is currently left as an exercise for the reader. (Read: I totally forgot
about these.)
* **Protections against physical attacks**: if an adversary is in the physical * **Protections against physical attacks**: if an adversary is in the physical
proximity of the device, it's game over. They could attach an SWD debugger to proximity of the device, it's game over. They could attach an SWD debugger to
the RP2040 (it has no protection against this), use a power side channel or the RP2040 (it has no protection against this), use a power side channel or
@ -314,14 +316,14 @@ Here's a quick example:
#include "rourand.h" /* 'cooked'/whitened rng */ #include "rourand.h" /* 'cooked'/whitened rng */
static void health_alarm(const char* msg) { static void health_alarm_callback(const char* msg) {
// TRNG health alarm raised! // TRNG health alarm raised!
iprintf("TRNG health alarm! %s\n", msg); iprintf("TRNG health alarm! %s\n", msg);
} }
int main() { int main() {
/** raw randomness **/ /** raw randomness **/
enum rourand_error r = rorand_init(health_alarm); enum rourand_error r = rorand_init(health_alarm_callback /* can be NULL */);
if (r != rr_ok) { if (r != rr_ok) {
panic("rorand failed to initialize!"); panic("rorand failed to initialize!");
} }