1#######################################
2Trusted Firmware-M Profile Small Design
3#######################################
4
5************
6Introduction
7************
8
9As one of the TF-M Profiles, TF-M Profile Small (Profile S) consists of
10lightweight TF-M framework and basic Secure Services to keep smallest memory
11footprint, supporting fundamental security features on devices with ultra
12constrained resource.
13
14This profile enables connecting with Edge Gateways and IoT Cloud Services
15supporting secure connection based solely on symmetric cryptography.
16
17This document summarizes and discusses the features specified in TF-M Profile
18Small.
19
20**************
21Overall design
22**************
23
24TF-M Profile Small defines the following features:
25
26    - Lightweight framework
27
28        - Secure Function (SFN) model [2]_
29        - Level 1 isolation
30        - Buffer sharing allowed
31        - Single secure context
32
33    - Crypto
34
35        - Symmetric cipher only
36        - Cipher suite for symmetric-key algorithms based protocols, such as
37          cipher suites defined in TLS pre-shared key (TLS-PSK) [1]_.
38
39            - Advanced Encryption Standard (AES) as symmetric crypto algorithm
40            - SHA256 as Hash function
41            - HMAC as Message Authentication Code algorithm
42        - Only enable multi-part functions in hash, symmetric ciphers,
43          Message Authentication Code (MAC) and Authenticated Encryption with
44          Associated Data (AEAD) operations.
45
46    - Internal Trusted Storage (ITS)
47
48        - No encryption
49        - No rollback protection
50        - Decrease internal transient buffer size
51
52    - Initial Attestation
53
54        - Based on symmetric key algorithms
55
56    - Lightweight boot
57
58        - Single image boot
59        - Anti-rollback protection is enabled
60
61
62Protected Storage, firmware update and other Secure Services provided by TF-M are
63disabled by default.
64
65**************
66Design details
67**************
68
69More details of TF-M Profile Small design are discussed in following sections.
70
71Lightweight framework
72=====================
73
74TF-M framework model
75--------------------
76
77SFN model is selected by default in Profile Small implementation.
78SFN model is defined in FF-M 1.1 extensions [2]_. It is a more simple
79implementation of TF-M framework and may also reduce memory footprint, compared
80with Inter-Process Communication (IPC) model [3]_.
81
82Level 1 isolation
83-----------------
84
85PSA Security Model [4]_ defines 3 levels of isolation.
86
87  - Level 1 isolation isolates Secure Processing Environment (SPE) from
88    Non-secure Processing Environment (NSPE).
89  - PSA Root of Trust (PSA RoT) and Application Root of Trust (ARoT) are
90    isolated from each other in level 2 isolation.
91  - Individual secure partitions are isolated from each other even within a
92    particular security domain (PSA RoT, ARoT), in level 3 isolation.
93
94Profile Small dedicated use cases with simple service model may not require
95level 2 or level 3 isolation. Devices which Profile Small aims at may be unable
96to implement stricter isolation, limited by hardware capabilities.
97
98Level 1 isolation reduces requirements enforced by hardware isolation and cost
99of software for management.
100
101.. note ::
102
103    **Security note**
104
105    If a device or a use case enforces level 2 or level 3 isolation, it is
106    suggested to apply other configurations, other than TF-M Profile Small.
107
108Crypto service
109==============
110
111TF-M Profile Small only requires symmetric crypto since symmetric algorithms
112require shorter keys and less computational burden, compared with asymmetric
113crypto.
114
115By default, TF-M Profile Small requires the same capabilities as defined in
116TLS-PSK, to support symmetric key algorithms based protocols.
117
118.. note ::
119
120    **Implementation note**
121
122    Please note that TF-M Profile Small doesn't require that TLS-PSK is
123    mandatory in applications. Instead, Profile Small only requires the same
124    capabilities as defined in TLS-PSK, such as one symmetric cipher algorithm
125    and one hash function.
126
127TF-M Profile Small selects TLS-PSK cipher suite TLS_PSK_WITH_AES_128_CCM [5]_
128as reference, which requires:
129
130    - AES-128-CCM (AES CCM mode with 128-bit key) as symmetric crypto algorithm
131    - SHA256 as Hash function
132    - HMAC as Message Authentication Code algorithm
133
134TLS_PSK_WITH_AES_128_CCM is selected since it requires small key length and less
135hardware capabilities, while keeping enough level of security.
136
137.. note ::
138
139    **Implementation note**
140
141    Developers can replace default algorithms with others or implement more
142    algorithms.
143
144    Proper symmetric key algorithms and cipher suites should be selected
145    according to device capabilities, the use case and the requirement of peers
146    in connection.
147
148    Refer to `Crypto service configuration`_ for implementation details of
149    configuring algorithms and cipher suites.
150
151.. note ::
152
153    **Security note**
154
155    It is recommended not to use MD5 or SHA-1 for message digests as they are
156    subject to collision attacks [6]_ [7]_.
157
158By default, Profile Small only enables multi-part functions defined in PSA
159Cryptography API [13]_ in hash, symmetric ciphers, MAC and AEAD operations.
160Disabling single-part functions optimizes the code size of TF-M crypto service.
161Multi-part operations allows the message data to be processed in fragments
162instead of all at once. In static memory allocation, single-part operation may
163require to allocate a large memory space to support long message with unknown
164length. Therefore single-part operations can help users optimize memory
165footprint, especially while dealing with streaming data on IoT devices.
166
167It may slightly increase the code size in applications to replace single-part
168implementation with mulit-part implementation. Althgouth the code size increment
169can be qaulified, if users are concerned about the code size increment, they can
170enable single-part operations by toggling Profile Small default configuration.
171
172It may increase latency and overall time cost to implement cryptography
173functionality with single-part operations, compared to with multi-part ones.
174Users can enable single-part operations if the usage scenario requires
175single-part opreations to meet its perfermance metrics.
176
177Secure Storage
178==============
179
180TF-M Profile Small assumes that extremely constrained devices only contain basic
181on-chip storage, without external or removable storage.
182As a result, TF-M Profile Small includes ITS service and disables Protected
183Storage service.
184
185Encryption and rollback protection
186----------------------------------
187
188Neither encryption nor rollback protection is enabled in current ITS
189implementation.
190
191It is expected that ITS relies solely on the physical inaccessibility property
192of on-chip storage, together with PSA isolation, without requiring additional
193cryptographic protection.
194
195Internal transient buffer
196-------------------------
197
198ITS implements a internal transient buffer [8]_ to hold the data read
199from/written to storage, especially for flash, to solve the alignment and
200security issues.
201
202The internal transient buffer is aligned to the flash device’s program unit.
203Copying data to it from the caller can align all write requests to the flash
204device’s program unit.
205The internal transient buffer can help protect Flash access from some attacks,
206such as TOCTOU attack.
207
208Although removing this internal buffer can save some memory consumption,
209typically 512 bytes, it may bring alignment or security issues.
210Therefore, to achieve a better trade-off between memory footprint and security,
211TF-M Profile Small optimizes the internal buffer size to 32 bytes by default.
212
213As discussed in `Crypto service`_, TF-M Profile Small requires AES-128 and
214SHA-256, which use 128-bit key and 256-bit key respectively.
215Besides, either long public/private keys or PKI-based certificates should be
216very rare as asymmetric crypto is not supported in Profile Small.
217Therefore, a 32-byte internal buffer should cover the assets in TF-M Profile
218Small use cases.
219
220The buffer size can be adjusted according to use case and device Flash
221attributes. Refer to `Internal Trusted Storage configurations`_ for more
222details.
223
224Initial Attestation
225===================
226
227Profile Small requires an Initial Attestation secure service based on symmetric
228key algorithms. Refer to PSA Attestation API document [9]_ for details of
229Initial Attestation based on symmetric key algorithms.
230
231It can heavily increase memory footprint to support Initial Attestation based on
232asymmetric key algorithms, due to asymmetric ciphers and related PKI modules.
233
234.. note ::
235
236    **Implementation note**
237
238    As pointed out by PSA Attestation API document [9]_, the use cases of
239    Initial Attestation based on symmetric key algorithms can be limited due to
240    the associated infrastructure costs for key management and operational
241    complexities. It may also restrict the ability to interoperate with
242    scenarios that involve third parties.
243
244    If asymmetric key algorithms based Initial Attestation is required in use
245    scenarios, it is recommended to select other TF-M Profiles which support
246    asymmetric key algorithms.
247
248.. note ::
249
250    **Implementation note**
251
252    It is recommended to utilize the same MAC algorithm supported in Crypto
253    service to complete the signing in ``COSE_Mac0``, to minimize memory
254    footprint.
255
256Lightweight boot
257================
258
259If MCUBoot provided by TF-M is enabled, single image boot [10]_ is selected by
260default in Profile Small.
261In case of single image boot, secure and non-secure images are handled as a
262single blob and signed together during image generation.
263
264However, secure and non-secure images must be updated together in single image
265boot. It may decrease the flexibility of image update and cost longer update
266process. Since the image sizes should usually be small with limited
267functionalities in Profile Small dedicated use case, the cost may still be
268reasonable.
269
270BL2 implementation can be device specific. Devices may implement diverse
271boot processes with different features and configurations.
272However, anti-rollback protection is required as a mandatory feature of boot
273loader. Boot loader should be able to prevent unauthorized rollback, to protect
274devices from being downgraded to earlier versions with known vulnerabilities.
275
276**************
277Implementation
278**************
279
280Overview
281========
282
283The basic idea is to add dedicated profile CMake configuration files under
284folder ``config/profile`` for TF-M Profile Small default configuration.
285
286The top-level Profile Small config file collects all the necessary
287configuration flags and set them to default values, to explicitly enable the
288features required in Profile Small and disable the unnecessary ones, during
289TF-M build.
290
291A platform/use case can provide a configuration extension file to overwrite
292Profile Small default setting and append other configurations.
293This configuration extension file can be added via parameter
294``TFM_EXTRA_CONFIG_PATH`` in build command line.
295
296The behavior of the Profile Small build flow (particularly the order of
297configuration loading and overriding) can be found at
298:ref:`tfm_cmake_configuration`
299
300The details of configurations will be covered in each module in
301`Implementation details`_.
302
303Implementation details
304======================
305
306This section discusses the details of Profile Small implementation.
307
308Top-level configuration files
309-----------------------------
310
311The firmware framework configurations in ``config/profile/profile_small`` are
312shown below.
313
314.. table:: TFM options in Profile Small top-level CMake config file
315   :widths: auto
316   :align: center
317
318   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
319   | Configs                                    | Default value                                                                                       | Descriptions                        |
320   +============================================+=====================================================================================================+=====================================+
321   | ``TFM_ISOLATION_LEVEL``                    | ``1``                                                                                               | Select level 2 isolation            |
322   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
323   | ``TFM_PARTITION_INTERNAL_TRUSTED_STORAGE`` | ``ON``                                                                                              | Enable ITS SP                       |
324   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
325   | ``ITS_BUF_SIZE``                           | ``32``                                                                                              | ITS internal transient buffer size  |
326   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
327   | ``TFM_PARTITION_CRYPTO``                   | ``ON``                                                                                              | Enable Crypto service               |
328   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
329   | ``TFM_MBEDCRYPTO_CONFIG_PATH``             | ``${CMAKE_SOURCE_DIR}/lib/ext/mbedcrypto/mbedcrypto_config/tfm_mbedcrypto_config_profile_small.h``  | Mbed Crypto config file path        |
330   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
331   | ``TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH``  | ``${CMAKE_SOURCE_DIR}/lib/ext/mbedcrypto/mbedcrypto_config/crypto_config_profile_small.h``          | Mbed Crypto PSA config file path    |
332   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
333   | ``CRYPTO_ASYM_SIGN_MODULE_ENABLED``        | ``OFF``                                                                                             | Enable asymmetric signature         |
334   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
335   | ``CRYPTO_ASYM_ENCRYPT_MODULE_ENABLED``     | ``OFF``                                                                                             | Enable asymmetric encryption        |
336   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
337   | ``TFM_PARTITION_INITIAL_ATTESTATION``      | ``ON``                                                                                              | Enable Initial Attestation service  |
338   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
339   | ``SYMMETRIC_INITIAL_ATTESTATION``          | ``ON``                                                                                              | Enable symmetric attestation        |
340   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
341   | ``TFM_PARTITION_PROTECTED_STORAGE``        | ``OFF``                                                                                             | Enable PS service                   |
342   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
343   | ``TFM_PARTITION_PLATFORM``                 | ``OFF``                                                                                             | Enable TF-M Platform SP             |
344   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
345
346.. note ::
347
348    **Implementation note**
349
350    The following sections focus on the feature selection via configuration
351    setting.
352    Dedicated optimization on memory footprint is not covered in this document.
353
354Device configuration extension
355^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
356
357To change default configurations and add platform specific configurations,
358a platform can add a platform configuration file at
359``platform/ext<TFM_PLATFORM>/config.cmake``
360
361TF-M framework setting
362----------------------
363
364The top-level Profile Small CMake config file selects SFN model and level 1
365isolation.
366
367In SFN model, ``-DPSA_FRAMEWORK_HAS_MM_IOVEC`` is enabled by default.
368It reduces memory footprint by avoiding the transient copy from input
369vectors and copy to output vectors.
370
371Crypto service configuration
372----------------------------
373
374Crypto Secure Partition
375^^^^^^^^^^^^^^^^^^^^^^^
376
377TF-M Profile Small enables Crypto Secure Partition (SP) in its top-level CMake
378config file. Crypto SP modules not supported in TF-M Profile Small are disabled.
379The disabled modules/features are shown below.
380
381    - Disable asymmetric cipher
382    - Disable single-part operations in Hash, MAC, AEAD and symmetric ciphers
383      via selecting ``CRYPTO_SINGLE_PART_FUNCS_DISABLED``
384
385Other modules and configurations [11]_ are kept as default values.
386
387Additional configuration flags with more fine granularity can be added to
388control building of specific crypto algorithms and corresponding test cases.
389
390Mbed Crypto configurations
391^^^^^^^^^^^^^^^^^^^^^^^^^^
392
393TF-M Profile Small adds a dedicated Mbed Crypto config file
394``tfm_mbedcrypto_config_profile_small.h`` and Mbed Crypto PSA config file
395``crypto_config_profile_small.h`` at ``/lib/ext/mbedcrypto/mbedcrypto_config``
396folder, instead of the common one ``tfm_mbedcrypto_config_default.h`` and
397``crypto_config_default.h`` [11]_.
398
399Major Mbed Crypto configurations are set as listed below:
400
401    - Enable SHA256
402    - Enable generic message digest wrappers
403    - Enable AES
404    - Enable CCM mode for symmetric ciphers
405    - Disable other modes for symmetric ciphers
406    - Disable asymmetric ciphers
407    - Disable HMAC-based key derivation function (HKDF)
408
409Other configurations can be selected to optimize the memory footprint of Crypto
410module.
411
412A device/use case can append an extra config header to the  Profile Small
413default Mbed Crypto config file. This can be done by setting the
414``TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH`` cmake variable in the platform
415config file ``platform/ext<TFM_PLATFORM>/config.cmake``. This cmake variable is
416a wrapper around the ``MBEDTLS_USER_CONFIG_FILE`` options, but is preferred as
417it keeps all configuration in cmake.
418
419Internal Trusted Storage configurations
420---------------------------------------
421
422ITS service is enabled in top-level Profile Small CMake config file.
423
424The internal transient buffer size ``ITS_BUF_SIZE`` [8]_ is set to 32 bytes by
425default. A platform/use case can overwrite the buffer size in its specific
426configuration extension according to its actual requirement of assets and Flash
427attributes.
428
429Profile Small CMake config file won't touch the configurations of device
430specific Flash hardware attributes [8]_.
431
432Initial Attestation secure service
433----------------------------------
434
435TF-M Profile Small provides a reference implementation of symmetric key
436algorithms based Initial Attestation, using HMAC SHA-256 as MAC algorithm in
437``COSE_Mac0`` structure. The implementation follows PSA Attestation API document
438[9]_.
439
440Profile Small top-level config file enables Initial Attestation secure service
441and selects symmetric key algorithms based Initial Attestation by default.
442
443    - Set ``TFM_PARTITION_INITIAL_ATTESTATION`` to ``ON``
444    - Set ``SYMMETRIC_INITIAL_ATTESTATION`` to ``ON``
445
446Symmetric and asymmetric key algorithms based Initial Attestation can share the
447same generations of token claims, except Instance ID claim.
448
449Profile Small may implement the procedure or rely on a 3rd-party tool to
450construct and sign ``COSE_Mac0`` structure.
451
452Details of symmetric key algorithms based Initial Attestation design will be
453covered in a dedicated document.
454
455Disabled secure services
456------------------------
457
458Protected Storage and Platform Service are disabled by default
459in Profile Small top-level CMake config file.
460
461Test configuration
462------------------
463
464Some cryptography tests are disabled due to the reduced Mbed Crypto config.
465Some of them are shown in the table below.
466
467.. table:: TFM options in Profile Small top-level CMake config file
468   :widths: auto
469   :align: center
470
471   +--------------------------------------------+---------------+----------------------------------------+
472   | Configs                                    | Default value | Descriptions                           |
473   +============================================+===============+========================================+
474   | ``TFM_CRYPTO_TEST_ALG_CBC``                | ``OFF``       | Test CBC cryptography mode             |
475   +--------------------------------------------+---------------+----------------------------------------+
476   | ``TFM_CRYPTO_TEST_ALG_CCM``                | ``ON``        | Test CCM cryptography mode             |
477   +--------------------------------------------+---------------+----------------------------------------+
478   | ``TFM_CRYPTO_TEST_ALG_CFB``                | ``OFF``       | Test CFB cryptography mode             |
479   +--------------------------------------------+---------------+----------------------------------------+
480   | ``TFM_CRYPTO_TEST_ALG_ECB``                | ``OFF``       | Test ECB cryptography mode             |
481   +--------------------------------------------+---------------+----------------------------------------+
482   | ``TFM_CRYPTO_TEST_ALG_CTR``                | ``OFF``       | Test CTR cryptography mode             |
483   +--------------------------------------------+---------------+----------------------------------------+
484   | ``TFM_CRYPTO_TEST_ALG_OFB``                | ``OFF``       | Test OFB cryptography mode             |
485   +--------------------------------------------+---------------+----------------------------------------+
486   | ``TFM_CRYPTO_TEST_ALG_GCM``                | ``OFF``       | Test GCM cryptography mode             |
487   +--------------------------------------------+---------------+----------------------------------------+
488   | ``TFM_CRYPTO_TEST_ALG_SHA_384``            | ``OFF``       | Test SHA-384 cryptography algorithm    |
489   +--------------------------------------------+---------------+----------------------------------------+
490   | ``TFM_CRYPTO_TEST_ALG_SHA_512``            | ``OFF``       | Test SHA-512 cryptography algorithm    |
491   +--------------------------------------------+---------------+----------------------------------------+
492   | ``TFM_CRYPTO_TEST_HKDF``                   | ``OFF``       | Test HKDF key derivation algorithm     |
493   +--------------------------------------------+---------------+----------------------------------------+
494   | ``TFM_CRYPTO_TEST_ECDH``                   | ``OFF``       | Test ECDH key agreement algorithm      |
495   +--------------------------------------------+---------------+----------------------------------------+
496   | ``TFM_CRYPTO_TEST_CHACHA20``               | ``OFF``       | Test ChaCha20 stream cipher            |
497   +--------------------------------------------+---------------+----------------------------------------+
498   | ``TFM_CRYPTO_TEST_CHACHA20_POLY1305``      | ``OFF``       | Test ChaCha20-Poly1305 AEAD algorithm  |
499   +--------------------------------------------+---------------+----------------------------------------+
500   | ``TFM_CRYPTO_TEST_SINGLE_PART_FUNCS``      | ``OFF``       | Test single-part operations in hash,   |
501   |                                            |               | MAC, AEAD and symmetric ciphers        |
502   +--------------------------------------------+---------------+----------------------------------------+
503
504BL2 setting
505-----------
506
507Profile Small enables MCUBoot provided by TF-M by default. A platform can
508overwrite this configuration by disabling MCUBoot in its configuration extension
509file ``platform/ext<TFM_PLATFORM>/config.cmake``.
510
511If MCUBoot provided by TF-M is enabled, single image boot is selected in TF-M
512Profile Small top-level CMake config file.
513
514If a device implements its own boot loader, the configurations are
515implementation defined.
516
517.. table:: BL2 options in Profile Small top-level CMake config file
518   :widths: auto
519   :align: center
520
521   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
522   | Configs                                    | Default value                                                                                       | Descriptions                        |
523   +============================================+=====================================================================================================+=====================================+
524   | ``BL2``                                    | ``ON``                                                                                              | Enable MCUBoot bootloader           |
525   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
526   | ``MCUBOOT_IMAGE_NUMBER``                   | ``1``                                                                                               | Combine S and NS images             |
527   +--------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------+
528
529****************
530Platform support
531****************
532
533Building Profile Small
534======================
535
536To build Profile Small, argument ``TFM_PROFILE`` in build command line should be
537set to ``profile_small``.
538
539Take AN521 as an example.
540
541The following commands build Profile Small without test cases on **AN521** with
542build type **MinSizeRel**, built by **Armclang**.
543SFN model is selected by default.
544
545.. code-block:: bash
546
547   cd <TFM root dir>
548   mkdir build && cd build
549   cmake -DTFM_PLATFORM=arm/mps2/an521 \
550         -DTFM_TOOLCHAIN_FILE=../toolchain_ARMCLANG.cmake \
551         -DTFM_PROFILE=profile_small \
552         -DCMAKE_BUILD_TYPE=MinSizeRel \
553         ../
554   cmake --build ./ -- install
555
556The following commands build Profile Small with regression test cases on
557**AN521** with build type **MinSizeRel**, built by **Armclang**.
558SFN model is selected by default.
559
560.. code-block:: bash
561
562   cd <TFM root dir>
563   mkdir build && cd build
564   cmake -DTFM_PLATFORM=arm/mps2/an521 \
565         -DTFM_TOOLCHAIN_FILE=../toolchain_ARMCLANG.cmake \
566         -DTFM_PROFILE=profile_small \
567         -DCMAKE_BUILD_TYPE=MinSizeRel \
568         -DTEST_NS=ON \
569         ../
570   cmake --build ./ -- install
571
572.. Note::
573
574 - For devices with more constrained memory and flash requirements, it is
575   possible to build with either only TEST_S enabled or only TEST_NS enabled.
576   This will decrease the size of the test images. Note that both test suites
577   must still be run to ensure correct operation.
578
579More details of building instructions and parameters can be found TF-M build
580instruction guide [12]_.
581
582*********
583Reference
584*********
585
586.. [1] `Pre-Shared Key Ciphersuites for Transport Layer Security (TLS) <https://tools.ietf.org/html/rfc4279>`_
587
588.. [2] `Arm Firmware Framework for M 1.1 Extensions <https://developer.arm.com/documentation/aes0039/latest>`_
589
590.. [3] `Arm Platform Security Architecture Firmware Framework 1.0 <https://developer.arm.com/documentation/den0063/latest/>`_
591
592.. [4] `Platform Security Model 1.1 <https://developer.arm.com/documentation/den0128/latest>`_
593
594.. [5] `AES-CCM Cipher Suites for Transport Layer Security (TLS) <https://tools.ietf.org/html/rfc6655>`_
595
596.. [6] `Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms <https://tools.ietf.org/html/rfc6151>`_
597
598.. [7] `Transitioning the Use of Cryptographic Algorithms and Key Lengths <https://www.nist.gov/publications/transitioning-use-cryptographic-algorithms-and-key-lengths>`_
599
600.. [8] :doc:`ITS integration guide </integration_guide/services/tfm_its_integration_guide>`
601
602.. [9] `PSA Attestation API 1.0 (ARM IHI 0085) <https://developer.arm.com/-/media/Files/pdf/PlatformSecurityArchitecture/Implement/IHI0085-PSA_Attestation_API-1.0.2.pdf?revision=eef78753-c77e-4b24-bcf0-65596213b4c1&la=en&hash=E5E0353D612077AFDCE3F2F3708A50C77A74B2A3>`_
603
604.. [10] :doc:`Secure boot </design_docs/booting/tfm_secure_boot>`
605
606.. [11] :doc:`Crypto design </design_docs/services/tfm_crypto_design>`
607
608.. [12] :doc:`TF-M build instruction </building/tfm_build_instruction>`
609
610.. [13] `PSA Cryptography API 1.0 <https://developer.arm.com/documentation/ihi0086/a/?lang=en>`_
611
612--------------
613
614*Copyright (c) 2020-2022, Arm Limited. All rights reserved.*
615