1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu
bors[bot] 9be022afd8
Merge #18547
18547: sys: PSA Crypto API implementation r=MrKevinWeiss a=Einhornhool

### Contribution description
This adds an implementation of the ARM [PSA Crypto API](https://armmbed.github.io/mbed-crypto/html/index.html) specification to RIOT. 

It is a cryptographic API that supports software and hardware backends as well as the use of multiple secure elements, which can be configured with Kconfig.
It integrates indirect, identifier based key management to support persistent storage of key material in local memory and devices with protected key storage.

A description of the implementation design and an evaluation of the processing time and memory overhead in RIOT has been published here: [Usable Security for an IoT OS: Integrating the Zoo of Embedded Crypto Components Below a Common API](https://arxiv.org/abs/2208.09281)

#### Implementation status
So far this implementation supports the following operations:
- Volatile key storage
- AES in CBC mode
- Hashes (MD5, SHA1, SHA224, SHA256)
- HMAC SHA256
- ECDSA with NIST P192 and P256 curves

The following backends are supported so far:
- RIOT Cipher Module
- RIOT Hash Module
- Micro ECC library package
- Cryptocell 310 hardware accelerator on the Nordic NRF52840dk
- Microchip ATECC608A secure element

Other operations and backends as well as persistent key storage can and will be implemented by me and anyone who wants to contribute in the future.

### Testing procedure
So far there is a show case application in `examples/psa_crypto` to demonstrate the usage and configuration of different backends of the API (refer to the application README for more information). 


Co-authored-by: Lena Boeckmann <lena.boeckmann@haw-hamburg.de>
2023-09-04 08:15:08 +00:00
..
arm7_common cpu/arm7: Fix undefined behavior based on invalid assembly 2023-05-19 11:34:30 +02:00
atmega8 cpu/atmega_common: some additional periph drivers fixed for atmega8 cpu 2023-07-11 21:22:02 +02:00
atmega32u4 cpu/atmega_common: implement periph/gpio_ll{,_irq} 2022-05-02 14:44:55 +02:00
atmega128rfa1 cpu/atmega128rfa1/Kconfig: select default transceiver 2023-01-19 15:34:19 +01:00
atmega256rfr2 cpu/atmega256rfr2/Kconfig: select default transceiver 2023-01-19 15:34:19 +01:00
atmega328p cpu/atmega_common: implement periph/gpio_ll{,_irq} 2022-05-02 14:44:55 +02:00
atmega1281 cpu/atmega_common: implement periph/gpio_ll{,_irq} 2022-05-02 14:44:55 +02:00
atmega1284p cpu/atmega_common: implement periph/gpio_ll{,_irq} 2022-05-02 14:44:55 +02:00
atmega2560 cpu/atmega_common: implement periph/gpio_ll{,_irq} 2022-05-02 14:44:55 +02:00
atmega_common cpu/atmega_common: hook up BAT LOW irq to power bus 2023-07-12 14:52:05 +02:00
atxmega cpu/avr8_common: Add AVR8_ISR macro 2023-07-05 20:00:19 +02:00
avr8_common cpu/avr8_common: Add AVR8_ISR macro 2023-07-05 20:00:19 +02:00
cc26x0_cc13x0 cpu/cc26x0_cc13x0: Drop feature cortexm_mpu 2023-04-26 10:51:52 +02:00
cc26x2_cc13x2 cpu: call early_init() 2023-01-08 22:26:12 +01:00
cc26xx_cc13xx cpu/cc26xx_cc13xx: Fix bogus array-bound warning 2023-04-25 15:31:27 +02:00
cc2538 cpu: call early_init() 2023-01-08 22:26:12 +01:00
cortexm_common core/thread: drop unused thread_arch_t 2023-05-21 22:17:52 +02:00
efm32 cpu/efm32: include periph_conf.h for system-related methods 2023-08-30 16:47:52 +02:00
esp32 Merge #19452 2023-08-01 12:19:48 +00:00
esp8266 cpu/esp8266: fix region overflow with '*periph' directory in app path 2023-07-02 12:21:16 +02:00
esp_common cpu/esp_common: esp-wifi: drop assert(val) 2023-08-01 23:06:11 +02:00
fe310 cpu/riscv: Add PMP driver 2023-06-28 11:55:34 +02:00
gd32v tree wide: fix typos in comments found by codespell 2023-05-02 09:52:06 +02:00
kinetis cpu: call early_init() 2023-01-08 22:26:12 +01:00
lm4f120 cpu: call early_init() 2023-01-08 22:26:12 +01:00
lpc23xx cpu: Add TLS symbols for newer picolibc to linker scripts 2023-03-02 22:55:22 -08:00
lpc1768 cpu: call early_init() 2023-01-08 22:26:12 +01:00
msp430 cpu/msp430: make use of vendor header files 2023-07-04 20:21:05 +02:00
native drivers/periph/rtc: improve doc on rtc_set_alarm 2023-05-30 17:41:36 +02:00
nrf5x_common Merge #19634 2023-07-18 10:47:46 +00:00
nrf51 cpu/nrfxx: simplify LFCLK source selection 2023-07-06 15:47:22 +02:00
nrf52 pkg: Add cryptocell driver and nrf52 HW features 2023-08-31 14:38:49 +02:00
nrf53 boards/nrf5340dk-app: add SPI flash configuration and I2C pins 2023-07-12 21:51:50 +02:00
nrf9160 cpu/nrfxx: use shared serial IRQ 2023-07-11 22:42:10 +02:00
qn908x cpu/qn908x/periph_i2c: enable internal pull-up on SCL 2023-06-13 14:43:36 +02:00
riscv_common cpu/riscv_common: remove picolibc from blacklisting in CI 2023-08-07 13:21:40 +02:00
rpx0xx cpu/rpx0xx: Fix kconfig model 2023-05-24 09:53:23 +02:00
sam0_common Merge #19539 #19815 #19860 #19886 2023-08-23 16:55:09 +00:00
sam3 cpu: call early_init() 2023-01-08 22:26:12 +01:00
sam_common cpu/sam_common: make use of cortexm.ld 2022-09-23 15:55:12 +02:00
samd5x cpu/samd5x: change FDPLL1 frequency to 100 MHz 2023-06-20 12:48:54 +02:00
samd21 cpu/sam0_common: move adc_res_t to common code 2023-01-17 17:18:07 +01:00
saml1x cpu/sam0_common: move adc_res_t to common code 2023-01-17 17:18:07 +01:00
saml21 treewide: fix path to ztimer test applications 2023-05-13 19:08:38 +02:00
stellaris_common
stm32 cpu/stm32/ptp: drop vendor file typo workaround 2023-08-28 09:56:40 +02:00
doc.txt docs/doxygen : Add CPU section 2021-07-09 10:47:42 +02:00
Kconfig treewide: change Kconfig prefix for module symbols 2020-08-31 09:57:28 +02:00