blob: aece7bbbb5df3aefa8cd70bb59ca89f195bf61eb [file] [log] [blame]
############
About OP-TEE
############
OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a
non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone
technology. OP-TEE implements :ref:`tee_internal_core_api` v1.1.x which is the
API exposed to Trusted Applications and the :ref:`tee_client_api` v1.0, which is
the API describing how to communicate with a TEE. Those APIs are defined in the
:ref:`globalplatform_api` specifications.
The non-secure OS is referred to as the Rich Execution Environment (REE) in TEE
specifications. It is typically a Linux OS flavor as a GNU/Linux distribution or
the AOSP.
OP-TEE is designed primarily to rely on the Arm TrustZone technology as the
underlying hardware isolation mechanism. However, it has been structured to be
compatible with any isolation technology suitable for the TEE concept and goals,
such as running as a virtual machine or on a dedicated CPU.
The main design goals for OP-TEE are:
- **Isolation** - the TEE provides isolation from the non-secure OS and
protects the loaded Trusted Applications (TAs) from each other using
underlying hardware support,
- **Small footprint** - the TEE should remain small enough to reside in a
reasonable amount of on-chip memory as found on Arm based systems,
- **Portability** - the TEE aims at being easily pluggable to different
architectures and available HW and has to support various setups such as
multiple client OSes or multiple TEEs.
OP-TEE components
*****************
OP-TEE is divided in various components:
- A secure privileged layer, executing at Arm secure PL-1 (v7-A) or EL-1
(v8-A) level.
- A set of secure user space libraries designed for Trusted Applications
needs.
- A Linux kernel TEE framework and driver (merged to the official tree in
v4.12).
- A Linux user space library designed upon the GlobalPlatform
:ref:`tee_client_api` specifications.
- A Linux user space supplicant daemon (tee-supplicant) responsible for
remote services expected by the TEE OS.
- A test suite (xtest), for doing regression testing and testing the
consistency of the API implementations.
- An example git containing a couple of simple host- and TA-examples.
- And some build scripts, debugging tools to ease its integration and the
development of Trusted Applications and secure services.
These components are available from several git repositories. The main ones are
:ref:`build`, :ref:`optee_os`, :ref:`optee_client`, :ref:`optee_test`,
:ref:`optee_examples` and the :ref:`linux_kernel`.
History
*******
OP-TEE was initially developed by ST-Ericsson (and later on by
STMicroelectronics), but this was before OP-TEE got the name "OP-TEE" and was
turned into an open source project. Back then it was a closed source and a
proprietary TEE project. In 2013, ST-Ericsson obtained GlobalPlatforms
compliance qualification with this implementation, proving that the APIs were
behaving as expected according to the GlobalPlatform specifications.
Later on the same year (2013) Linaro was about to form Security Working Group
(SWG) and one of the initial key tasks for SWG was to work on an open source
TEE project. After talking to various TEE vendors Linaro ended up working with
STMicroelectronics TEE project. But before being able to open source it there
was a need to replace some proprietary components with open source components.
For a couple of months Linaro/SWG together with engineers from
STMicroelectronics re-wrote major parts (crypto library, secure monitor, build
system etc), cleaned up the project by enforcing :ref:`coding_standards`,
running checkpatch_ etc.
June 12 2014 was the day when OP-TEE was "born" as an open source project. At
that day the OP-TEE team pushed the `first commit
<https://github.com/OP-TEE/optee_os/commit/b01047730e77127c23a36591643eeb8bb0487d68>`_
to GitHub. A bit after this Linaro also made a `press release
<https://www.linaro.org/blog/op-tee-open-source-security-mass-market/>`_ about
this. That press release contains a bit more information. At the first year as
an open source project it was owned by STMicroelectronics but maintained by
Linaro and STMicroelectronics. In 2015 there was an ownership transfer of
OP-TEE from STMicroelectronics to Linaro. In September 2019, ownership was
transferred from Linaro to the TrustedFirmware.org project (see _blogpost for
more information). Maintenance is a shared responsibility between the members
for TrustedFirmware.org and some community maintainers representing other
companies who are using OP-TEE.
.. _blogpost: https://www.trustedfirmware.org/blog/op-tee-moving-into-trusted-firmware/
.. _checkpatch: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/checkpatch.pl