blob: 051dd3d554a709e669bfe6106dfc168ed589768d [file] [log] [blame]
David Huc9a45592020-02-17 20:26:10 +08001#######################################
2Trusted Firmware-M Profile Small Design
3#######################################
4
5:Authors: David Hu
6:Organization: Arm Limited
7:Contact: david.hu@arm.com
8
9************
10Introduction
11************
12
13The capabilities and resources may dramatically vary on different IoT devices.
14Some IoT devices may have very limited memory resource. The program on those
15devices should keep small memory footprint and basic functionalities.
16On the other hand, some devices may consist of more memory and extended storage,
17to support stronger software capabilities.
18
19Diverse IoT use cases also require different levels of security and requirements
20on device resource. For example, use cases require different cipher
21capabilities. Selecting cipher suites can be sensitive to memory footprint on
22devices with constrained resource.
23
24Trusted Firmware-M (TF-M) defines 3 general profiles, Profile Small,
25Profile Medium and Profile Large, to provide different levels of security to fit
26diverse device capabilities and use cases.
27Each profile specifies a predefined list of features, targeting typical use
28cases with specific hardware constraints. Profiles can serve as reference
29designs, based on which developers can continue further development and
30configurations, according to use case.
31
32As one of the TF-M Profiles, TF-M Profile Small (Profile S) consists of
33lightweight TF-M framework and basic Secure Services to keep smallest memory
34footprint, supporting fundamental security features on devices with ultra
35constrained resource.
36
37This profile enables connecting with Edge Gateways and IoT Cloud Services
38supporting secure connection based solely on symmetric cryptography.
39
40This document summarizes and discusses the features specified in TF-M Profile
41Small.
42
43**************
44Overall design
45**************
46
47TF-M Profile Small defines the following features:
48
49 - Lightweight framework
50
51 - Library model
52 - Level 1 isolation
53 - Buffer sharing allowed
54 - Single secure context
55
56 - Crypto
57
58 - Symmetric cipher only
59 - Cipher suite for symmetric-key algorithms based protocols, such as
60 cipher suites defined in TLS pre-shared key (TLS-PSK) [1]_.
61
62 - Advanced Encryption Standard (AES) as symmetric crypto algorithm
63 - SHA256 as Hash function
64 - HMAC as Message Authentication Code algorithm
65
66 - Internal Trusted Storage (ITS)
67
68 - No encryption
69 - No rollback protection
70 - Decrease internal transient buffer size
71
72 - Initial Attestation
73
74 - Based on symmetric key algorithms
75
76 - Lightweight boot
77
78 - Single image boot
79 - Anti-rollback protection is enabled
80
81
82Protected Storage, audit logging and other Secure Services provided by TF-M are
83disabled by default.
84
85**************
86Design details
87**************
88
89More details of TF-M Profile Small design are discussed in following sections.
90
91Lightweight framework
92=====================
93
94Library model
95-------------
96
97Profile Small selects Library model in TF-M. Library model implements secure
98function calls, via which clients directly call secure services. It provides a
99more simple implementation of TF-M framework and may reduce memory footprint,
100compared with Inter-Process Communication (IPC) model [2]_.
101
102.. note ::
103
104 **Implementation note**
105
106 Please note that there is no public dedicated specification for Library
107 model.
108 The design, interfaces and implementation of Library model in TF-M may
109 change.
110
111Level 1 isolation
112-----------------
113
114So far, TF-M Library model only supports level 1 isolation [2]_, which isolates
115Secure Processing Environment (SPE) from Non-secure Processing Environment
116(NSPE). Neither level 2 nor level 3 isolation [2]_ is implemented in TF-M
117Library model.
118
119PSA Root of Trust (PSA RoT) and Application Root of Trust (ARoT) are isolated
120from each other in level 2 isolation.
121Individual secure partitions are isolated from each other even within a
122particular security domain (PSA RoT, ARoT), in level 3 isolation.
123
124Profile Small dedicated use cases with simple service model may not require
125level 2 or level 3 isolation. Devices which Profile Small aims at may be unable
126to implement stricter isolation, limited by hardware capabilities.
127
128Level 1 isolation reduces requirements enforced by hardware isolation and cost
129of software for management.
130
131.. note ::
132
133 **Security note**
134
135 If a device or a use case enforces level 2 or level 3 isolation, it is
136 suggested to apply other configurations, other than TF-M Profile Small.
137
138Buffer sharing allowed
139----------------------
140
141To simplify interface and reduce memory footprint, TF-M Library model directly
142handles client call input vectors from non-secure client buffers and later
143writes results back to those buffers, without keeping a copy in a transient
144buffer inside TF-M.
145
146.. note ::
147
148 **Security note**
149
150 There can be security vulnerabilities if non-secure client buffers are
151 directly shared between NSPE and SPE, such as Time-of-check to time-of-use
152 (TOCTOU) attack.
153
154 Developers need to check if this can meet the Security Functional
155 Requirements (SFR) of the integration of their devices.
156 Some SFRs are listed in a set of example Threat Models and Security Analyses
157 (TMSA) offered by PSA for common IoT use cases. [3]_
158
159Single secure context
160---------------------
161
162TF-M Library model only supports single secure context.
163
164It cannot support multiple contexts or the scheduling implemented in IPC model.
165It neither can support multiple outstanding PSA client calls.
166
167But correspondingly, it can save memory footprint and runtime complexity in
168context management and scheduling.
169
170.. note ::
171
172 **Security note**
173
174 Non-secure software should prevent triggering multiple outstanding PSA
175 client calls concurrently. Otherwise, it may crash current running secure
176 context.
177
178Crypto service
179==============
180
181TF-M Profile Small only requires symmetric crypto since symmetric algorithms
182require shorter keys and less computational burden, compared with asymmetric
183crypto.
184
185By default, TF-M Profile Small requires the same capabilities as defined in
186TLS-PSK, to support symmetric key algorithms based protocols.
187
188.. note ::
189
190 **Implementation note**
191
192 Please note that TF-M Profile Small doesn't require that TLS-PSK is
193 mandatory in applications. Instead, Profile Small only requires the same
194 capabilities as defined in TLS-PSK, such as one symmetric cipher algorithm
195 and one hash function.
196
197TF-M Profile Small selects TLS-PSK cipher suite TLS_PSK_WITH_AES_128_CCM [4]_
198as reference, which requires:
199
200 - AES-128-CCM (AES CCM mode with 128-bit key) as symmetric crypto algorithm
201 - SHA256 as Hash function
202 - HMAC as Message Authentication Code algorithm
203
204TLS_PSK_WITH_AES_128_CCM is selected since it requires small key length and less
205hardware capabilities, while keeping enough level of security.
206
207.. note ::
208
209 **Implementation note**
210
211 Developers can replace default algorithms with others or implement more
212 algorithms.
213
214 Proper symmetric key algorithms and cipher suites should be selected
215 according to device capabilities, the use case and the requirement of peers
216 in connection.
217
218 Refer to `Crypto service configuration`_ for implementation details of
219 configuring algorithms and cipher suites.
220
221.. note ::
222
223 **Security note**
224
225 It is recommended not to use MD5 or SHA-1 for message digests as they are
226 subject to collision attacks [5]_ [6]_.
227
228Secure Storage
229==============
230
231TF-M Profile Small assumes that extremely constrained devices only contain basic
232on-chip storage, without external or removable storage.
233As a result, TF-M Profile Small includes ITS service and disables Protected
234Storage service.
235
236Encryption and rollback protection
237----------------------------------
238
239Neither encryption nor rollback protection is enabled in current ITS
240implementation.
241
242It is expected that ITS relies solely on the physical inaccessibility property
243of on-chip storage, together with PSA isolation, without requiring additional
244cryptographic protection.
245
246Internal transient buffer
247-------------------------
248
249ITS implements a internal transient buffer [7]_ to hold the data read
250from/written to storage, especially for flash, to solve the alignment and
251security issues.
252
253The internal transient buffer is aligned to the flash device’s program unit.
254Copying data to it from the caller can align all write requests to the flash
255device’s program unit.
256The internal transient buffer can help protect Flash access from some attacks,
257such as TOCTOU attack.
258
259Although removing this internal buffer can save some memory consumption,
260typically 512 bytes, it may bring alignment or security issues.
261Therefore, to achieve a better trade-off between memory footprint and security,
262TF-M Profile Small optimizes the internal buffer size to 32 bytes by default.
263
264As discussed in `Crypto service`_, TF-M Profile Small requires AES-128 and
265SHA-256, which use 128-bit key and 256-bit key respectively.
266Besides, either long public/private keys or PKI-based certificates should be
267very rare as asymmetric crypto is not supported in Profile Small.
268Therefore, a 32-byte internal buffer should cover the assets in TF-M Profile
269Small use cases.
270
271The buffer size can be adjusted according to use case and device Flash
272attributes. Refer to `Internal Trusted Storage configurations`_ for more
273details.
274
275Initial Attestation
276===================
277
278Profile Small requires an Initial Attestation secure service based on symmetric
279key algorithms. Refer to PSA Attestation API document [8]_ for details of
280Initial Attestation based on symmetric key algorithms.
281
282It can heavily increase memory footprint to support Initial Attestation based on
283asymmetric key algorithms, due to asymmetric ciphers and related PKI modules.
284
285.. note ::
286
287 **Implementation note**
288
289 As pointed out by PSA Attestation API document [8]_, the use cases of
290 Initial Attestation based on symmetric key algorithms can be limited due to
291 the associated infrastructure costs for key management and operational
292 complexities. It may also restrict the ability to interoperate with
293 scenarios that involve third parties.
294
295 If asymmetric key algorithms based Initial Attestation is required in use
296 scenarios, it is recommended to select other TF-M Profiles which support
297 asymmetric key algorithms.
298
299.. note ::
300
301 **Implementation note**
302
303 It is recommended to utilize the same MAC algorithm supported in Crypto
304 service to complete the signing in ``COSE_Mac0``, to minimize memory
305 footprint.
306
307Lightweight boot
308================
309
310If MCUBoot provided by TF-M is enabled, single image boot [9]_ is selected by
311default in Profile Small.
312In case of single image boot, secure and non-secure images are handled as a
313single blob and signed together during image generation.
314
315However, secure and non-secure images must be updated together in single image
316boot. It may decrease the flexibility of image update and cost longer update
317process. Since the image sizes should usually be small with limited
318functionalities in Profile Small dedicated use case, the cost may still be
319reasonable.
320
321BL2 implementation can be device specific. Devices may implement diverse
322boot processes with different features and configurations.
323However, anti-rollback protection is required as a mandatory feature of boot
324loader. Boot loader should be able to prevent unauthorized rollback, to protect
325devices from being downgraded to earlier versions with known vulnerabilities.
326
327**************
328Implementation
329**************
330
331Overview
332========
333
334The basic idea is to add dedicated top-level CMake configuration files under
335folder ``configs`` for TF-M Profile Small default configuration.
336
337The top-level Profile Small config file collects all the necessary configuration
338flags and set them to default values, to explicitly enable the features required
339in TF-M Profile Small and disable the unnecessary ones, during TF-M build.
340
341An alternative option is to set only a global flag in top-level Profile Small
342CMake file and configure the remaining configurations in dedicated CMake files
343of each module/secure service. However, since configuration flags are
344distributed in multiple CMake files, it will become difficult for a platform/use
345case to overwrite default configurations.
346Therefore it is more reasonable to explicitly set all critical configurations in
347a top-level CMake file.
348
349A platform/use case can provide a configuration extension file to overwrite
350Profile Small default setting and append other configurations.
351This configuration extension file can be added via parameter
352``TFM_PROFILE_CONFIG_EXT`` in build command line. The top-level config file will
353include the device configuration extension file to load platform/use case
354specific configurations.
355
356The overall build flow of Profile Small is shown as the flowchart below.
357
358.. uml::
359
360 @startuml
361
362 title Overall build flow
363
364 start
365
366 :Profile Small CMake file;
367 note left
368 Top-level CMake config file under ""configs"".
369 Set configurations to default values.
370 endnote
371
372 if (Platform config\nextension specified?) then (Yes)
373 :Include platform specific\nconfig extension file;
374 note left
375 Platform specific configuration extension file
376 is provided via ""TFM_PROFILE_CONFIG_EXT"" in
377 build command line.
378 endnote
379
380 :Overwrite default configurations;
381 else (No)
382 endif
383
384 :CommonConfig.cmake;
385 note left
386 Normal building sequence
387 endnote
388
389 stop
390
391 @enduml
392
393The control flags set in the top-level Profile Small config file are listed
394below.
395The details will be covered in each module in `Implementation details`_.
396
397.. list-table:: Config flags in Profile S top-level CMake config file
398 :widths: 20 15 30
399 :header-rows: 1
400
401 * - Configs
402 - Default value
403 - Descriptions
404 * - ``CORE_IPC``
405 - ``False``
406 - Library model is selected
407 * - ``TFM_LVL``
408 - ``1``
409 - Level 1 isolation
410 * - ``TFM_PARTITION_INTERNAL_TRUSTED_STORAGE``
411 - ``ON``
412 - Enable ITS SP
David Huc9a45592020-02-17 20:26:10 +0800413 * - ``ITS_BUF_SIZE``
414 - ``32``
415 - ITS internal transient buffer size
416 * - ``TFM_PARTITION_CRYPTO``
417 - ``ON``
418 - Enable Crypto service
419 * - ``CRYPTO_ASYMMETRIC_MODULE_DISABLED``
420 - ``ON``
421 - Disable asymmetric cipher in Crypto service
422 * - ``CRYPTO_AEAD_MODULE_DISABLED``
423 - ``OFF``
424 - Enable AEAD in Crypto service
David Huc9a45592020-02-17 20:26:10 +0800425 * - ``MBEDTLS_CONFIG_FILE``
426 - ``tfm_profile_s_mbedcrypto_config``
427 - Default mbed-crypto config file for Profile Small under
428 ``platform/ext/common``
429 * - ``TFM_PARTITION_AUDIT_LOG``
430 - ``OFF``
431 - Disable Audit Logging Logging service
432 * - ``TFM_PARTITION_SECURE_STORAGE``
433 - ``OFF``
434 - Disable Protected Storage service
435 * - ``TFM_PARTITION_INITIAL_ATTESTATION``
436 - ``ON``
437 - Enable Initial Attestation service
438 * - ``SYMMETRIC_INITIAL_ATTESTATION``
439 - ``ON``
440 - Select Initial Attestation based on symmetric key algorithms
441 * - ``TFM_PARTITION_PLATFORM``
442 - ``OFF``
443 - Disable Platform service
444
445Test cases settings in top-level Profile Small config files are listed below.
446The ``Default config`` stands for configuration without tests and the
447``Regression config`` stands for configuration with regression tests.
448
449.. list-table:: Test config flags in Profile S top-level CMake config file
450 :widths: 20 20 15 15
451 :header-rows: 1
452
453 * - Test cases
454 - Configs
455 - Default config
456 - Regression config
457 * - Regression test
458 - ``REGRESSION``
459 - ``OFF``
460 - ``ON``
461 * - Core test
462 - ``CORE_TEST``
463 - ``OFF``
464 - ``ON``
465 * - PSA API test
466 - ``PSA_API_TEST``
467 - ``OFF``
468 - ``OFF``
469
470Implementation details
471======================
472
473This section discusses the details of Profile Small implementation.
474
475.. note ::
476
477 **Implementation note**
478
479 The following sections focus on the feature selection via configuration
480 setting.
481 Dedicated optimization on memory footprint is not covered in this document.
482
483Top-level Profile Small CMake config file
484-----------------------------------------
485
486There are two top-level Profile Small CMake config files under folder
487``configs``.
488
489- ``ConfigDefaultProfileS.cmake`` completes Profile Small default configurations
490 without test cases.
491- ``ConfigRegressionProfileS.cmake`` enables regression and core test cases for
492 the features defined Profile Small, besides default configurations.
493
494The details of configuration control flags set in top-level configuration file
495are listed in following sections.
496
497Device configuration extension
498^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
499
500To overwrite default configurations and add platform specific configurations,
501a platform can set the path to its own configuration extension file in parameter
502``TFM_PROFILE_CONFIG_EXT`` in command line.
503
504A platform can also add its device specific configurations into its specific
505CMake file under ``platform/ext/`` folder.
506
507TF-M framework setting
508----------------------
509
510The top-level Profile Small CMake config file selects Library model and level 1
511isolation.
512
513Crypto service configuration
514----------------------------
515
516Crypto Secure Partition
517^^^^^^^^^^^^^^^^^^^^^^^
518
519TF-M Profile Small enables Crypto Secure Partition (SP) in its top-level CMake
520config file. Crypto SP modules not supported in TF-M Profile Small are disabled.
521The disabled modules are shown below.
522
523 - Disable asymmetric cipher
David Huc9a45592020-02-17 20:26:10 +0800524
525Other modules and configurations [10]_ are kept as default values.
526
527Additional configuration flags with more fine granularity can be added to
528control building of specific crypto algorithms and corresponding test cases.
529
530Mbed Crypto configurations
531^^^^^^^^^^^^^^^^^^^^^^^^^^
532
533TF-M Profile Small adds a dedicated Mbed Crypto config file
534``tfm_profile_s_mbedcrypto_config.h`` under ``platform/ext/common``.
535TF-M Profile Small specifies ``tfm_profile_s_mbedcrypto_config.h`` as the
536default Mbed Crypto config in ``MBEDTLS_CONFIG_FILE`` in top-level CMake config
537file, instead of the common one ``tfm_mbedcrypto_config.h`` [10]_.
538
539Major Mbed Crypto configurations are set as listed below:
540
541 - Enable SHA256
542 - Enable generic message digest wrappers
543 - Enable AES
544 - Enable CCM mode for symmetric ciphers
545 - Disable other modes for symmetric ciphers
546 - Disable asymmetric ciphers
547 - Disable HMAC-based key derivation function (HKDF)
548
549Other configurations can be selected to optimize the memory footprint of Crypto
550module.
551
552A device/use case can replace Profile Small default Mbed Crypto config file with
553its specific one to overwrite the default configurations. Alternatively, a
554device can overwrite the configurations by appending a config file via
555``MBEDTLS_USER_CONFIG_FILE``.
556
557Internal Trusted Storage configurations
558---------------------------------------
559
560ITS service is enabled in top-level Profile Small CMake config file.
561
562The internal transient buffer size ``ITS_BUF_SIZE`` [7]_ is set to 32 bytes by
563default. A platform/use case can overwrite the buffer size in its specific
564configuration extension according to its actual requirement of assets and Flash
565attributes.
566
567Profile Small CMake config file won't touch the configurations of device
568specific Flash hardware attributes [7]_.
569
570Initial Attestation secure service
571----------------------------------
572
573TF-M Profile Small provides a reference implementation of symmetric key
574algorithms based Initial Attestation, using HMAC SHA-256 as MAC algorithm in
575``COSE_Mac0`` structure. The implementation follows PSA Attestation API document
576[8]_.
577
578Profile Small top-level config file enables Initial Attestation secure service
579and selects symmetric key algorithms based Initial Attestation by default.
580
581 - Set ``TFM_PARTITION_INITIAL_ATTESTATION`` to ``ON``
582 - Set ``SYMMETRIC_INITIAL_ATTESTATION`` to ``ON``
583
584Symmetric and asymmetric key algorithms based Initial Attestation can share the
585same generations of token claims, except Instance ID claim.
586
587Profile Small may implement the procedure or rely on a 3rd-party tool to
588construct and sign ``COSE_Mac0`` structure.
589
590Details of symmetric key algorithms based Initial Attestation design will be
591covered in a dedicated document.
592
593Disabled secure services
594------------------------
595
596Audit logging, Protected Storage, and Platform Service are disabled by default
597in Profile Small top-level CMake config file.
598
599BL2 setting
600-----------
601
602Profile Small enables MCUBoot provided by TF-M by default. A platform can
603overwrite this configuration by disabling MCUBoot in its configuration extension
604file or in its specific CMake file under ``platform/ext/`` folder.
605
606If MCUBoot provided by TF-M is enabled, single image boot is selected in TF-M
607Profile Small top-level CMake config file.
608
609The following table lists the configurations specified in Profile Small
610top-level config file for MCUBoot provided by TF-M.
611
612.. list-table:: MCUBoot config flags in Profile S top-level CMake config file
613 :widths: 30 15 30
614 :header-rows: 1
615
616 * - Configs
617 - Default value
618 - Descriptions
619 * - ``BL2``
620 - ``True``
621 - MCUBoot is enabled
622 * - ``MCUBOOT_IMAGE_NUMBER``
623 - ``1``
624 - Single image boot
625
626If a device implements its own boot loader, the configurations are
627implementation defined.
628
629****************
630Platform support
631****************
632
633To enable Profile Small on a platform, the platform specific CMake file should
634be added into the platform support list in top-level Profile Small CMake config
635file.
636
637Building Profile Small
638======================
639
640To build Profile Small, argument ``PROJ_CONFIG`` in build command line should be
641set to ``ConfigRegressionProfileS.cmake`` or ``ConfigRegressionProfileS.cmake``.
642
643Take AN521 as an example.
644
645The following commands build Profile Small without test cases on **AN521** with
646build type **MinSizeRel**, built by **Armclang**.
647
648.. code-block:: bash
649
650 cmake -G"Unix Makefiles" -DPROJ_CONFIG=`readlink -f ../configs/ConfigDefaultProfileS.cmake` \
651 -DTARGET_PLATFORM=AN521 \
652 -DCMAKE_BUILD_TYPE=MinSizeRel \
653 -DCOMPILER=ARMCLANG ../
654 cmake --build ./ -- install
655
656The following commands build Profile Small with regression test cases on **AN521**
657with build type **MinSizeRel**, built by **Armclang**.
658
659.. code-block:: bash
660
661 cmake -G"Unix Makefiles" -DPROJ_CONFIG=`readlink -f ../configs/ConfigRegressionProfileS.cmake` \
662 -DTARGET_PLATFORM=AN521 \
663 -DCMAKE_BUILD_TYPE=MinSizeRel \
664 -DCOMPILER=ARMCLANG ../
665 cmake --build ./ -- install
666
667More details of building instructions and parameters can be found TF-M build
668instruction guide [11]_.
669
670The following commands include platform specific configuration extension file
671via ``TFM_PROFILE_CONFIG_EXT`` in command line. ``TFM_PROFILE_CONFIG_EXT`` can
672be an absolute path or a relative one to TF-M code root directory.
673
674.. code-block:: bash
675
676 cmake -G"Unix Makefiles" -DPROJ_CONFIG=`readlink -f ../configs/ConfigDefaultProfileS.cmake` \
677 -DTARGET_PLATFORM=AN521 \
678 -DCMAKE_BUILD_TYPE=MinSizeRel \
679 -DCOMPILER=ARMCLANG \
680 -DTFM_PROFILE_CONFIG_EXT=path/to/config_ext_file ../
681 cmake --build ./ -- install
682
683*********
684Reference
685*********
686
687.. [1] `Pre-Shared Key Ciphersuites for Transport Layer Security (TLS) <https://tools.ietf.org/html/rfc4279>`_
688
689.. [2] `DEN0063 Arm Platform Security Architecture Firmware Framework 1.0 <https://developer.arm.com/-/media/Files/pdf/DeviceSecurityArchitecture/Architect/DEN0063-PSA_Firmware_Framework-1.0.0-2.pdf?revision=2d1429fa-4b5b-461a-a60e-4ef3d8f7f4b4>`_
690
691.. [3] `PSA analyze stage <https://developer.arm.com/architectures/security-architectures/platform-security-architecture#analyze>`_
692
693.. [4] `AES-CCM Cipher Suites for Transport Layer Security (TLS) <https://tools.ietf.org/html/rfc6655>`_
694
695.. [5] `Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms <https://tools.ietf.org/html/rfc6151>`_
696
697.. [6] `Transitioning the Use of Cryptographic Algorithms and Key Lengths <https://www.nist.gov/publications/transitioning-use-cryptographic-algorithms-and-key-lengths>`_
698
Minos Galanakise4094012020-06-12 14:25:34 +0100699.. [7] :doc:`ITS integration guide </docs/reference/services/tfm_its_integration_guide>`
David Huc9a45592020-02-17 20:26:10 +0800700
701.. [8] `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>`_
702
Minos Galanakise4094012020-06-12 14:25:34 +0100703.. [9] :doc:`Secure boot </docs/getting_started/tfm_secure_boot>`
David Huc9a45592020-02-17 20:26:10 +0800704
705.. [10] :doc:`Crypto design </docs/design_documents/tfm_crypto_design>`
706
Minos Galanakise4094012020-06-12 14:25:34 +0100707.. [11] :doc:`TF-M build instruction </docs/getting_started/tfm_build_instruction>`
David Huc9a45592020-02-17 20:26:10 +0800708
709--------------
710
711*Copyright (c) 2020, Arm Limited. All rights reserved.*