mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-06-13 23:42:04 +08:00
76 lines
3.0 KiB
Diff
76 lines
3.0 KiB
Diff
![]() |
From 0baa8fab334a4d7017235b72fa8a547433572109 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Stephan=20M=C3=BCller?= <smueller@chronox.de>
|
||
|
Date: Thu, 21 Sep 2023 13:48:59 +0200
|
||
|
Subject: [PATCH] crypto: jitter - Allow configuration of oversampling rate
|
||
|
|
||
|
The oversampling rate used by the Jitter RNG allows the configuration of
|
||
|
the heuristically implied entropy in one timing measurement. This
|
||
|
entropy rate is (1 / OSR) bits of entropy per time stamp.
|
||
|
|
||
|
Considering that the Jitter RNG now support APT/RCT health tests for
|
||
|
different OSRs, allow this value to be configured at compile time to
|
||
|
support systems with limited amount of entropy in their timer.
|
||
|
|
||
|
The allowed range of OSR values complies with the APT/RCT cutoff health
|
||
|
test values which range from 1 through 15.
|
||
|
|
||
|
The default value of the OSR selection support is left at 1 which is the
|
||
|
current default. Thus, the addition of the configuration support does
|
||
|
not alter the default Jitter RNG behavior.
|
||
|
|
||
|
Signed-off-by: Stephan Mueller <smueller@chronox.de>
|
||
|
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||
|
---
|
||
|
crypto/Kconfig | 17 +++++++++++++++++
|
||
|
crypto/jitterentropy-kcapi.c | 6 ++++--
|
||
|
2 files changed, 21 insertions(+), 2 deletions(-)
|
||
|
|
||
|
--- a/crypto/Kconfig
|
||
|
+++ b/crypto/Kconfig
|
||
|
@@ -1340,6 +1340,23 @@ config CRYPTO_JITTERENTROPY_MEMORY_BLOCK
|
||
|
default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
|
||
|
default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
|
||
|
|
||
|
+config CRYPTO_JITTERENTROPY_OSR
|
||
|
+ int "CPU Jitter RNG Oversampling Rate"
|
||
|
+ range 1 15
|
||
|
+ default 1
|
||
|
+ depends on CRYPTO_JITTERENTROPY
|
||
|
+ help
|
||
|
+ The Jitter RNG allows the specification of an oversampling rate (OSR).
|
||
|
+ The Jitter RNG operation requires a fixed amount of timing
|
||
|
+ measurements to produce one output block of random numbers. The
|
||
|
+ OSR value is multiplied with the amount of timing measurements to
|
||
|
+ generate one output block. Thus, the timing measurement is oversampled
|
||
|
+ by the OSR factor. The oversampling allows the Jitter RNG to operate
|
||
|
+ on hardware whose timers deliver limited amount of entropy (e.g.
|
||
|
+ the timer is coarse) by setting the OSR to a higher value. The
|
||
|
+ trade-off, however, is that the Jitter RNG now requires more time
|
||
|
+ to generate random numbers.
|
||
|
+
|
||
|
config CRYPTO_JITTERENTROPY_TESTINTERFACE
|
||
|
bool "CPU Jitter RNG Test Interface"
|
||
|
depends on CRYPTO_JITTERENTROPY
|
||
|
--- a/crypto/jitterentropy-kcapi.c
|
||
|
+++ b/crypto/jitterentropy-kcapi.c
|
||
|
@@ -256,7 +256,9 @@ static int jent_kcapi_init(struct crypto
|
||
|
crypto_shash_init(sdesc);
|
||
|
rng->sdesc = sdesc;
|
||
|
|
||
|
- rng->entropy_collector = jent_entropy_collector_alloc(0, 0, sdesc);
|
||
|
+ rng->entropy_collector =
|
||
|
+ jent_entropy_collector_alloc(CONFIG_CRYPTO_JITTERENTROPY_OSR, 0,
|
||
|
+ sdesc);
|
||
|
if (!rng->entropy_collector) {
|
||
|
ret = -ENOMEM;
|
||
|
goto err;
|
||
|
@@ -345,7 +347,7 @@ static int __init jent_mod_init(void)
|
||
|
|
||
|
desc->tfm = tfm;
|
||
|
crypto_shash_init(desc);
|
||
|
- ret = jent_entropy_init(0, 0, desc);
|
||
|
+ ret = jent_entropy_init(CONFIG_CRYPTO_JITTERENTROPY_OSR, 0, desc);
|
||
|
shash_desc_zero(desc);
|
||
|
crypto_free_shash(tfm);
|
||
|
if (ret) {
|