From 9dd3219c3fd6a5160a604155639b156f967a4d09 Mon Sep 17 00:00:00 2001 From: PeterKietzmann Date: Wed, 15 Jan 2020 17:19:54 +0100 Subject: [PATCH 1/2] sys/puf_sram: counter based reseed after soft reset --- sys/include/puf_sram.h | 7 +++++++ sys/puf_sram/puf_sram.c | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/sys/include/puf_sram.h b/sys/include/puf_sram.h index f8969192f..e7044cc7e 100644 --- a/sys/include/puf_sram.h +++ b/sys/include/puf_sram.h @@ -89,6 +89,13 @@ extern uint32_t puf_sram_seed; */ extern uint32_t puf_sram_state; +/** + * @brief Counter variable allocated in puf_sram.c. It is incremented + during each soft reset when no new PUF measurement was taken + and it gets reset to zero after a power cycle was detected. + */ +extern uint32_t puf_sram_softreset_cnt; + /** * @brief checks source of reboot by @p puf_sram_softreset and conditionally calls @p puf_sram_generate diff --git a/sys/puf_sram/puf_sram.c b/sys/puf_sram/puf_sram.c index e2195ef12..63a3b4aa4 100644 --- a/sys/puf_sram/puf_sram.c +++ b/sys/puf_sram/puf_sram.c @@ -24,6 +24,9 @@ PUF_SRAM_ATTRIBUTES uint32_t puf_sram_seed; /* Allocation of the PUF seed state */ PUF_SRAM_ATTRIBUTES uint32_t puf_sram_state; +/* Allocation of the PUF soft reset conter*/ +PUF_SRAM_ATTRIBUTES uint32_t puf_sram_softreset_cnt; + /* Allocation of the memory marker */ PUF_SRAM_ATTRIBUTES uint32_t puf_sram_marker; @@ -42,6 +45,8 @@ void puf_sram_generate(const uint8_t *ram, size_t len) puf_sram_marker = PUF_SRAM_MARKER; /* setting state to 0 means seed was generated from SRAM pattern */ puf_sram_state = 0; + /* reset counter of detected soft resets */ + puf_sram_softreset_cnt = 0; } bool puf_sram_softreset(void) @@ -51,5 +56,12 @@ bool puf_sram_softreset(void) return 0; } puf_sram_state = 1; + + /* increment number of detected soft resets */ + puf_sram_softreset_cnt++; + + /* generate alterntive seed value */ + puf_sram_seed ^= puf_sram_softreset_cnt; + puf_sram_seed = dek_hash((uint8_t *)&puf_sram_seed, sizeof(puf_sram_seed)); return 1; } From ecc7ee8255416a43e6bb2ba5022ee37c00f2f702 Mon Sep 17 00:00:00 2001 From: PeterKietzmann Date: Wed, 15 Jan 2020 18:10:07 +0100 Subject: [PATCH 2/2] tests/puf_sram: disable interactive sync --- tests/puf_sram/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/puf_sram/Makefile b/tests/puf_sram/Makefile index e8f75c97f..5ab039b74 100644 --- a/tests/puf_sram/Makefile +++ b/tests/puf_sram/Makefile @@ -3,5 +3,6 @@ BOARD ?= nucleo-f411re include ../Makefile.tests_common USEMODULE += puf_sram +DISABLE_MODULE += test_utils_interactive_sync include $(RIOTBASE)/Makefile.include