Design Documents# FF-M Isolation Introduction Isolation Levels Isolation Rules Memory Asset Class Hardware Infrastructure Reference Implementation MPU Region Access Permission Example Image Layout Example Region Numbers under Isolation Level 3 Default access rules Interfaces Appendix Secure Services Secure Partition Manager Introduction Partition runtime model Components and isolation levels Implementation principle Runtime management Initializing Serving IDLE state Background state Practical implementation items Architecture security settings SPM Runtime ABI NS Agent Partition Integration and development HAL Configurations History Secure Partition RTL Background Design Principle API Categories Privileged Access Supporting Secure Partition Local Storage Tooling Support on Partition Entry Implementation Inter-Process Communication Terminology Design Overview Implementation Details SPM and Core Memory Pool Message Manager Thread Synchronization API PSA API Reference Stateless Services Introduction Implementation Details Stateless Handle Value Definition Tooling Support Changes in Programming API Application Recommendation Update Feasibility of Existing Services Grouping Services Migrating to Stateless Services Reference Service Signing Declaring secure service interface Individual signatures - current method Uniform signatures - proposal Compatibility Crypto Abstract Introduction Components Relationship between Mbed TLS and the TF-M Crypto service TF-M Crypto as a particular configuration of Mbed TLS Usage of Mbed TLS configuration headers Hardware acceleration Builtin keys Service API description Configuration parameters References Initial Attestation Introduction Design overview IAT generation in Initial Attestation secure service Symmetric Instance ID attest_token_start() Instance ID claim attest_token_finish() COSE_Mac0 support in t_cose File structure Encoding COSE_Mac0 Decoding COSE_Mac0 Short-circuit tagging TF-M Test suite HAL APIs Fetch device symmetric IAK Get symmetric IAK key identifier Reference Internal Trusted Storage Block-aligned flash Abstract Requirements Current implementation Proposed implementation overview Considerations Functional flow diagram PSA Internal Trusted Storage Current TF-M Secure Storage New TF-M service Code structure TF-M ITS implementation Filesystem Flash layer Platform layer Detailed design considerations Mapping UID onto file ID Storing create flags Code sharing between Protected Storage and ITS Encryption in ITS Firmware Update Introduction of Firmware Update service Components Service API description Shim Layer between FWU and bootloader Shim layer introduction Interfaces of the shim Layer Additional shared data between BL2 and SPE Build configurations related to FWU partition Limitations of current implementation Benefits Analysis on this Partition Implement the FWU functionality in the non-secure side Pros and Cons for implementing FWU APIs in secure side Reference PS Key Management Background Design description Key derivation Keeping the storage key private to PS Key use References