Douglas Raillard | d7c21b7 | 2017-06-28 15:23:03 +0100 | [diff] [blame] | 1 | OP-TEE Dispatcher |
| 2 | ================= |
| 3 | |
| 4 | `OP-TEE OS`_ is a Trusted OS running as Secure EL1. |
| 5 | |
| 6 | To build and execute OP-TEE follow the instructions at |
| 7 | `OP-TEE build.git`_ |
| 8 | |
Jeffrey Kardatzke | 7e6b09a | 2022-10-03 15:50:21 -0700 | [diff] [blame] | 9 | There are two different modes for loading the OP-TEE OS. The default mode will |
| 10 | load it as the BL32 payload during boot, and is the recommended technique for |
| 11 | platforms to use. There is also another technique that will load OP-TEE OS after |
| 12 | boot via an SMC call by enabling the option for OPTEE_ALLOW_SMC_LOAD that was |
| 13 | specifically added for ChromeOS. Loading OP-TEE via an SMC call may be insecure |
| 14 | depending upon the platform configuration. If using that option, be sure to |
| 15 | understand the risks involved with allowing the Trusted OS to be loaded this |
| 16 | way. ChromeOS uses a boot flow where it verifies the signature of the firmware |
| 17 | before executing it, and then only if the signature is valid will the 'secrets' |
| 18 | used by the TEE become accessible. The firmware then verifies the signature of |
| 19 | the kernel using depthcharge, and the kernel verifies the rootfs using |
| 20 | dm-verity. The SMC call to load OP-TEE is then invoked immediately after the |
| 21 | kernel finishes loading and before any attack vectors can be opened up by |
| 22 | mounting writable filesystems or opening network/device connections. this |
| 23 | ensures the platform is 'closed' and running signed code through the point where |
| 24 | OP-TEE is loaded. |
| 25 | |
Douglas Raillard | d7c21b7 | 2017-06-28 15:23:03 +0100 | [diff] [blame] | 26 | -------------- |
| 27 | |
Jeffrey Kardatzke | 7e6b09a | 2022-10-03 15:50:21 -0700 | [diff] [blame] | 28 | *Copyright (c) 2014-2023, Arm Limited and Contributors. All rights reserved.* |
Douglas Raillard | d7c21b7 | 2017-06-28 15:23:03 +0100 | [diff] [blame] | 29 | |
| 30 | .. _OP-TEE OS: https://github.com/OP-TEE/build |
| 31 | .. _OP-TEE build.git: https://github.com/OP-TEE/build |