Thread (42 messages) 42 messages, 5 authors, 2017-12-22

Re: [PATCH 3/3] crypto: exynos - Reseed PRNG after generating 2^16 random bytes

flat view

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2017-12-05 13:55:44
Also in: linux-samsung-soc, lkml

On Tue, Dec 5, 2017 at 1:35 PM, Łukasz Stelmach [off-list ref] wrote:
Reseed PRNG after reading 65 kB of randomness. Although this may reduce
performance, in most casese the loss is not noticable.
s/casese/cases/
s/noticable/noticeable/

Please explain why you want to reseed after 65 kB (as opposite to
current implementation). Mention also why you are changing the time of
reseed.
quoted hunk ↗ jump to hunk
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
---
 drivers/crypto/exynos-rng.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/exynos-rng.c b/drivers/crypto/exynos-rng.c
index 002e9d2a83cc..0bf07a655813 100644
--- a/drivers/crypto/exynos-rng.c
+++ b/drivers/crypto/exynos-rng.c
@@ -54,12 +54,15 @@ enum exynos_prng_type {
 };

 /*
- * Driver re-seeds itself with generated random numbers to increase
- * the randomness.
+ * Driver re-seeds itself with generated random numbers to hinder
+ * backtracking of the original seed.
  *
  * Time for next re-seed in ms.
  */
-#define EXYNOS_RNG_RESEED_TIME         100
+#define EXYNOS_RNG_RESEED_TIME         1000
+#define EXYNOS_RNG_RESEED_BYTES                65536
+
+
Just one empty line.
quoted hunk ↗ jump to hunk
 /*
  * In polling mode, do not wait infinitely for the engine to finish the work.
  */
@@ -81,6 +84,8 @@ struct exynos_rng_dev {
        unsigned int                    seed_save_len;
        /* Time of last seeding in jiffies */
        unsigned long                   last_seeding;
+       /* Bytes generated since last seeding */
+       unsigned long                   bytes_seeding;
 };

 static struct exynos_rng_dev *exynos_rng_dev;
@@ -125,6 +130,7 @@ static int exynos_rng_set_seed(struct exynos_rng_dev *rng,
        }

        rng->last_seeding = jiffies;
+       rng->bytes_seeding = 0;

        return 0;
 }
@@ -166,6 +172,8 @@ static int exynos_rng_get_random(struct exynos_rng_dev *rng,
        memcpy_fromio(dst, rng->mem + EXYNOS_RNG_OUT_BASE, *read);

        return 0;
+
+
No need for these lines.

Best regards,
Krzysztof
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help