Skip to content

Commit a8af380

Browse files
frkvde-nordic
authored andcommitted
nrf_security: Add Oberon PSA crypto driver support
-Added new supported features from Oberon PSA driver - Key derivation: HKDF, TLS 1.2 PRF and PSK to MS - HMAC/CMAC - CBC PKCS7 - RSA support -Added missing curve-type PSA_WANT_ECC_TWISTED_EDWARDS_255, as well as PSA crypto driver configs for this: -CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_CC3XX -CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_OBERON -Added missing curve-type for Oberon PSA driver: secp384r1 -Added documentation for PRNG algorithm support ref: NCSDK-19412 Signed-off-by: Frank Audun Kvamtrø <[email protected]>
1 parent b16cd9d commit a8af380

File tree

1 file changed

+94
-22
lines changed

1 file changed

+94
-22
lines changed

nrf_security/doc/driver_config.rst

Lines changed: 94 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ You can use the following Kconfig options for fine-grained control over which dr
6969
+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
7070
| CBC_NO_PADDING | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_NO_PADDING_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_NO_PADDING_OBERON` |
7171
+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
72-
| CBC_PKCS7 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_CC3XX` | Not supported |
72+
| CBC_PKCS7 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CBC_PKCS7_OBERON` |
7373
+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
7474
| CFB | Not supported | Not supported |
7575
+----------------+---------------------------------------------------------------------+----------------------------------------------------------------------+
@@ -85,6 +85,41 @@ You can use the following Kconfig options for fine-grained control over which dr
8585
* The :ref:`nrf_security_drivers_cc3xx` is limited to AES key sizes of 128 bits on devices with Arm CryptoCell cc310.
8686

8787

88+
Key Derivation Function
89+
***********************
90+
91+
To enable key derivation function (KDF) support, set one or more of the following Kconfig options:
92+
93+
+-------------------+-------------------------------------------------------+
94+
| KDF algorithm | Configuration option |
95+
+===================+=======================================================+
96+
| HKDF | :kconfig:option:`CONFIG_PSA_WANT_ALG_HKDF` |
97+
+-------------------+-------------------------------------------------------+
98+
| TLS 1.2 PRF | :kconfig:option:`CONFIG_PSA_WANT_ALG_TLS12_PRF` |
99+
+-------------------+-------------------------------------------------------+
100+
| TLS 1.2 PSK to MS | :kconfig:option:`CONFIG_PSA_WANT_ALG_TLS12_PSK_TO_MS` |
101+
+-------------------+-------------------------------------------------------+
102+
103+
104+
Key Derivation Function driver configurations
105+
=============================================
106+
107+
You can use the following Kconfig options for fine-grained control over which drivers provide Key Derivation Function (KDF) support:
108+
109+
+-------------------+--------------------------+-----------------------------------------------------------------------+
110+
| KDF algorithm | nrf_cc3xx driver support | nrf_oberon driver support |
111+
+===================+==========================+==========================================+============================+
112+
| HKDF | Not supported | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_HKDF_OBERON` |
113+
+-------------------+--------------------------+-----------------------------------------------------------------------+
114+
| TLS 1.2 PRF | Not supported | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_TLS12_PRF_OBERON` |
115+
+-------------------+--------------------------+-----------------------------------------------------------------------+
116+
| TLS 1.2 PSK to MS | Not supported | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_TLS12_PSK_TO_MS_OBERON` |
117+
+-------------------+--------------------------+-----------------------------------------------------------------------+
118+
119+
.. note::
120+
* If a KDF algorithm is enabled and no PSA driver enables or supports it, :ref:`nrf_security_drivers_builtin` support is enabled and used.
121+
122+
88123
MAC configurations
89124
******************
90125

@@ -98,23 +133,25 @@ To enable MAC support, set one or more of the following Kconfig options:
98133
| HMAC | :kconfig:option:`CONFIG_PSA_WANT_ALG_HMAC` |
99134
+----------------+--------------------------------------------+
100135

136+
101137
MAC driver configurations
102138
=========================
103139

104140
You can use the following Kconfig options for fine-grained control over which drivers provide MAC support:
105141

106-
+----------------+-----------------------------------------------------------+----------------------------+
107-
| MAC cipher | nrf_cc3xx driver support | nrf_oberon driver support |
108-
+================+===========================================================+============================+
109-
| CMAC | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_CC3XX` | Not supported |
110-
+----------------+-----------------------------------------------------------+----------------------------+
111-
| HMAC | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_CC3XX` | Not supported |
112-
+----------------+-----------------------------------------------------------+----------------------------+
142+
143+
+----------------+-----------------------------------------------------------+------------------------------------------------------------+
144+
| MAC cipher | nrf_cc3xx driver support | nrf_oberon driver support |
145+
+================+===========================================================+============================================================+
146+
| CMAC | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_CMAC_OBERON` |
147+
+----------------+-----------------------------------------------------------+------------------------------------------------------------+
148+
| HMAC | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_HMAC_OBERON` |
149+
+----------------+-----------------------------------------------------------+------------------------------------------------------------+
113150

114151
.. note::
115152
* If a MAC algorithm is enabled and no PSA driver enables or supports it, :ref:`nrf_security_drivers_builtin` support is enabled and used.
116153
* The :ref:`nrf_security_drivers_cc3xx` is limited to AES CMAC key sizes of 128 bits on devices with Arm CryptoCell cc310.
117-
* The :ref:`nrf_security_drivers_cc3xx` is limited to HMAC using SHA-1, SHA-224, and SHA-256 on devices with Arm CryptoCell cc310.
154+
* The :ref:`nrf_security_drivers_cc3xx` is limited to HMAC using SHA-1, SHA-224, and SHA-256 on devices with Arm CryptoCell.
118155

119156

120157
AEAD configurations
@@ -189,7 +226,8 @@ You can use the following Kconfig options for fine-grained control over which dr
189226

190227
.. note::
191228
* If an ECC algorithm is enabled and no PSA driver enables or supports it, then :ref:`nrf_security_drivers_builtin` support is enabled and used.
192-
* The :ref:`nrf_security_drivers_oberon` is currently limited to curve types secp224r1 and secp256r1 for ECDH and ECDSA.
229+
* The :ref:`nrf_security_drivers_oberon` is currently limited to curve types secp224r1, secp256r1, and secp384r1 for ECDH and ECDSA.
230+
* The :ref:`nrf_security_drivers_oberon` is currently limited to X25519 (using Curve25519) and Ed25519 for EdDSA.
193231

194232

195233
ECC curve configurations
@@ -210,6 +248,8 @@ To configure elliptic curve support, set one or more of the following Kconfig op
210248
+-----------------------+-----------------------------------------------------------+
211249
| Curve448 | :kconfig:option:`CONFIG_PSA_WANT_ECC_MONTGOMERY_448` |
212250
+-----------------------+-----------------------------------------------------------+
251+
| Ed25519 | :kconfig:option:`CONFIG_PSA_WANT_ECC_TWISTED_EDWARDS_255` |
252+
+-----------------------+-----------------------------------------------------------+
213253
| secp192k1 | :kconfig:option:`CONFIG_PSA_WANT_ECC_SECP_K1_192` |
214254
+-----------------------+-----------------------------------------------------------+
215255
| secp256k1 | :kconfig:option:`CONFIG_PSA_WANT_ECC_SECP_K1_256` |
@@ -247,6 +287,8 @@ You can use the following Kconfig options for fine-grained control over which dr
247287
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
248288
| Curve448 | Not supported | Not supported |
249289
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
290+
| Ed25519 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_TWISTED_EDWARDS_255_OBERON` |
291+
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
250292
| secp192k1 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_K1_192_CC3XX` | Not supported |
251293
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
252294
| secp256k1 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_K1_256_CC3XX` | Not supported |
@@ -257,12 +299,41 @@ You can use the following Kconfig options for fine-grained control over which dr
257299
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
258300
| secp256r1 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_256_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_256_OBERON` |
259301
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
260-
| secp384r1 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_CC3XX` | Not supported |
302+
| secp384r1 | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ECC_SECP_R1_384_OBERON` |
261303
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
262304
| secp521r1 | Not supported | Not supported |
263305
+-----------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------+
264306

265307

308+
RNG configurations
309+
******************
310+
311+
To enable PRNG seeded by entropy (also known as TRNG), set one or more of the following configurations:
312+
313+
+---------------------------+-------------------------------------------------+
314+
| PRNG algorithms | Configuration option |
315+
+===========================+=================================================+
316+
| CTR_DRBG | :kconfig:option:`CONFIG_PSA_WANT_ALG_CTR_DRBG` |
317+
+---------------------------+-------------------------------------------------+
318+
| HMAC_DRBG | :kconfig:option:`CONFIG_PSA_WANT_ALG_HMAC_DRBG` |
319+
+---------------------------+-------------------------------------------------+
320+
321+
.. note::
322+
* Both PRNG algorithms are NIST qualified Cryptographically Secure Pseudo Random Number Generators (CSPRNG).
323+
* :kconfig:option:`CONFIG_PSA_WANT_ALG_CTR_DRBG` and :kconfig:option:`CONFIG_PSA_WANT_ALG_HMAC_DRBG` are custom configurations not described by the PSA Crypto specification.
324+
* If multiple PRNG algorithms are enabled at the same time, CTR_DRBG will be prioritized for random number generation through the front-end APIs for PSA Crypto.
325+
326+
327+
RNG driver configurations
328+
*************************
329+
330+
There are no public configurations for entropy and PRNG algorithm support and the choice of drivers that provide support is automatic.
331+
332+
The PSA drivers using the Arm CryptoCell peripheral is enabled by default for nRF52840, nRF91 Series, and nRF5340 devices.
333+
334+
For devices without a hardware-accelerated cryptographic engine, entropy is provided by the nRF RNG periperal. PRNG support is provided by the Oberon PSA driver, which is implemented using software.
335+
336+
266337
RSA configurations
267338
******************
268339

@@ -286,21 +357,22 @@ RSA driver configurations
286357

287358
You can use the following Kconfig options for fine-grained control over which drivers provide RSA support:
288359

289-
+-----------------------+--------------------------------------------------------------------------+----------------------------+
290-
| RSA algorithms | nrf_cc3xx driver support | nrf_oberon driver support |
291-
+=======================+==========================================================================+============================+
292-
| RSA OAEP | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_CC3XX` | Not supported |
293-
+-----------------------+--------------------------------------------------------------------------+----------------------------+
294-
| RSA PKCS#1 v1.5 crypt | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_CC3XX` | Not supported |
295-
+-----------------------+--------------------------------------------------------------------------+----------------------------+
296-
| RSA PKCS#1 v1.5 sign | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_CC3XX` | Not supported |
297-
+-----------------------+--------------------------------------------------------------------------+----------------------------+
298-
| RSA PSS | Not supported | Not supported |
299-
+-----------------------+--------------------------------------------------------------------------+----------------------------+
360+
+-----------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+
361+
| RSA algorithms | nrf_cc3xx driver support | nrf_oberon driver support |
362+
+=======================+==========================================================================+==========================================================================+
363+
| RSA OAEP | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_OAEP_OBERON` |
364+
+-----------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+
365+
| RSA PKCS#1 v1.5 crypt | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_CRYPT_OBERON` |
366+
+-----------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+
367+
| RSA PKCS#1 v1.5 sign | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_CC3XX` | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PKCS1V15_SIGN_OBERON` |
368+
+-----------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+
369+
| RSA PSS | Not supported | :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_ALG_RSA_PSS_OBERON` |
370+
+-----------------------+--------------------------------------------------------------------------+--------------------------------------------------------------------------+
300371

301372
.. note::
302373
* If an RSA algorithm is enabled and no PSA driver enables or supports it, :ref:`nrf_security_drivers_builtin` support is enabled and used.
303374
* :ref:`nrf_security_drivers_cc3xx` is limited to key sizes less than or equal to 2048 bits.
375+
* :ref:`nrf_security_drivers_oberon` does not support RSA key pair generation.
304376

305377

306378
Secure Hash configurations

0 commit comments

Comments
 (0)