# Security features

Qualcomm^®^ Linux^®^ incorporates several security features designed to protect devices and applications. These features are essential for defending against vulnerabilities, ensuring data integrity and confidentiality, maintaining compliance with industry standards, and supporting overall system stability.

Qualcomm^®^ Trusted Execution Environment (Qaulcomm TEE) further enhances these security capabilities. It provides interfaces that enable the extension of the security feature set through trusted applications. The hardware-supported TrustZone architecture integrates certain features, providing a system security configuration. These features can be further customized to meet specific requirements.

Explore the following security features and videos in this section.

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Cryptography](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-cryptography-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Key management](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-key-management-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Secure boot](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-secure-boot-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Storage security](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-storage-security-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Storage encryption](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-storage-encryption-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [SMC invoke](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-smc-invoke-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Access control](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-access-control-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Secure peripheral image loading](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-secure-peripheral-image-loading-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [SELinux](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-selinux-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Qualcomm TEE](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-qualcomm-tee-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Qualcomm Hypervisor](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-qualcomm-hypervisor-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Security hardening](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-security-hardening-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Qualcomm WES](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-qualcomm-wes-features)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Discrete trusted platform module](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-dtpm)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Watch a video on secure boot technology](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-watch-video-secure-boot-technology-label)

![icol](data:image/png;base64,UklGRpwAAABXRUJQVlA4TJAAAAAvF8AFEH+goG0bxqU4/kwuDQNp22T7Hd2/tito24Zxx5/keDw1kaw6pAoFSMK/iB/qXPECxHNdR35a5LyfAAqFBeA/Hm9S6E2CUWxbbf5gABvsO2yRgABSJERZJERCJMRBb/sM1UBE/xWmbcM46e4lUEfjF2LpUYCVX6HiHS5YDP3Jhgk/hl+K1nlAASYCVQQ=) [Watch video on Qualcomm® Type-1 Hypervisor and trusted execution environment](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-watch-video-hypervisor-qtee-label)

## Cryptography

Cryptography is the process of securing information by converting readable data into an unreadable format using algorithms and secret keys. Qualcomm Linux supports comprehensive cryptographic capabilities, leveraging both hardware-accelerated and software-based implementations to enhance system security.

The key capabilities include:

- A register and bus access manager with direct memory-based access.
- Interfaces to the cryptographic hardware.
- The Linux kernel crypto driver (qcrypto) provides access to the hardware cryptography independent of trusted applications.
- The Qualcomm TEE provides the hardware and software cryptographic application programming interfaces (APIs) to the trusted applications.

Qualcomm TEE supports the following cryptographic algorithms:

Table : Cryptographic algorithms

| Algorithm | Hardware | Software |
| --- | --- | --- |
| Hash | SHA-1/SHA-256 | <ul class="simple"><br><li><p>SHA-1/SHA-224/SHA-256/SHA-384/SHA-512</p></li><br><li><p>SM3</p></li><br></ul> |
| Symmetric cipher | <ul class="simple"><br><li><p>AES-128/AES-256 CBC, ECB, CTR, CCM, GCM,</p></li><br><li><p>Triple-TDES CBC/ECB</p></li><br></ul> | <ul class="simple"><br><li><p>AES-128/AES-192/AES-256 CBC, ECB, CTR, CCM, XTS, CFB, OFB, CTS</p></li><br><li><p>Triple-TDES CBC/ECB</p></li><br><li><p>PBKDF2</p></li><br><li><p>SM4</p></li><br></ul> |
| MAC | AES-CMAC | Hash-based message authentication (HMAC) |
| RNG | HRNG | – |
| HMAC | HMAC-SHA-1/SHA-256 | HMAC-SHA-1/SHA-224/SHA-256/SHA-384/SHA-512 |
| Asymmetric cipher | – | <ul class="simple"><br><li><p>RSA with 1024/2048/3072 modulus</p></li><br><li><p>ECDSA with P224, P256, P384, P521</p></li><br><li><p>ECDH</p></li><br><li><p>SM2</p></li><br></ul> |

### Inline crypto engine

The inline crypto engine (ICE) performs high-throughput cryptographic encryption of storage data.

ICE supports:

- AES 128/AES 256 ECB/XTS
- Multiple crypto streams to meet high throughput
- Multiple AES cores per crypto stream
- Provision of 32 software configurable keys
- Capability to enable symmetric and asymmetric operations

## Key management

Key management is how cryptographic keys are safely created, stored, used, and deleted. These keys help protect sensitive data. The Qualcomm Linux Security solution supports public-key cryptography standards through the implementation of PKCS#11 APIs. This allows applications to manage and use cryptographic keys and certificates in a platform-independent and standardized manner.

Qualcomm implements PKCS#11 as a global platform interface for running trusted applications within the Qualcomm TEE. A corresponding implementation is also available in the rich execution environment (REE), allowing seamless integration and interoperability between secure and non-secure application domains.

### Develop Linux user space applications for key management with PKCS#11

To perform key management operations such as key generation, storage, retrieval, and deletion, use the PKCS#11 service APIs from your user space client application on Qualcomm Linux. Your application should interact with the Cryptoki client library to access the PKCS#11 interface.

The following table list the generic APIs supported for key management functions.

| `C_GenerateKey` | generates a secret key | AES - CBC, CTS, CTR, CMAC |
| --- | --- | --- |
| `C_GenerateKeyPair` | generates a public-key/private-key pair | RSA, ECDSA |
| `C_WrapKey` | wraps (encrypts) a key | RSA, AES |
| `C_UnwrapKey` | unwraps (decrypts) a key | RSA, AES |
| `C_DeriveKey` | derives a key from a base key | AES-ECB, AES-CBC |

The following image shows the call flow from the client application to the PKCS trusted applications for key related use cases.

![../../../../../_images/key-management-function.png](data:image/png;base64,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)

**Figure : Client and PKCS trusted application call flow**

For more information, see the following documents:

- [PKCS #11 Cryptographic Token Interface Base Specification](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html)
- [PKCS #11 Cryptographic Token Interface Usage Guide](https://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cnd01/pkcs11-ug-v2.40-cnd01.html)

### Limitations

The following functionalities aren’t supported:

- Random number generator functionality
- P-192 in CKM\_ECDSA
- RSA PKCS key generation and signing in CKM\_RSA\_PKCS mode
- EDDSA key generation and signing

## Watch a video on secure boot technology

**Qualcomm Processor Security: Foundation**

*Unlock the full potential of Secure Boot technology on Qualcomm devices in this comprehensive tutorial. From generating cryptographic keys to programming hardware fuses and managing secure boot status, this video covers every step in detail. Ideal for users aiming to enhance device security through authenticated boot processes. Learn how to useQualcomm tools effectively to ensure your device boots securely every time.*

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 640 400" width="640" height="400" style="cursor:auto !important" aria-label="../../../../../_images/video1-features-qualcomm-security-processor-foundations.svg" class="align-center">
    <defs>
      <style>@import url("https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&amp;display=swap");
.svg-1 .bg-fill { fill: var(--color-background) }
.svg-1 .fill-text { color: var(--color-content); fill: var(--color-content) }
.svg-1 .video-hoverbox { transition: opacity 0.15s ease-in-out }
.svg-1 .video-hoverbox:hover { opacity: 0.9 }</style>
  </defs>

  <foreignobject x="0" y="0" width="640" height="400">
    <body xmlns="http://www.w3.org/1999/xhtml">
        <iframe width="640" height="400" src="https://players.brightcove.net/1414329538001/BJv5wEFt_default/index.html?videoId=6358216194112" allowfullscreen="" allow="encrypted-media"></iframe>
    <div class='topic-detail'><div class='topic-updated-date'><span> Last Published: </span>Apr 14, 2026</div><div class='prev-and-next-links'><span class='previous-topic-link'><span aria-hidden='true' class='disabled' data-tip='' data-effect='solid'></span></span></div></div></body>
    </foreignobject>
</svg>

## Secure boot

Secure boot is the boot up sequence that establishes a trusted platform for the entire software stack.

See the workflow to understand the secure boot and UEFI secure boot process.

![../../../../../_images/secure-boot-uefi-workflow-updated.png](data:image/png;base64,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)

**Figure : Secure boot vs UEFI secure boot**

This process uses cryptographic authentication to start an immutable sequence that validates the origin of the code, ensuring the execution of authorized software. This process:

> 
> 
> - Confirms the authenticity of all software images (non-Linux images) signed by Qualcomm and the users. The device carries out this process.
> - Prevents any unauthorized or maliciously modified software from running on the device.

The secure boot feature authenticates non-Linux images while UEFI secure boot authenticates the Linux images.

### UEFI secure boot

UEFI secure boot is a feature of the unified extensible firmware interface (UEFI) specification that defines an interface between an operating system and the platform firmware.

For more information, see [UEFI specification](https://uefi.org/specs/UEFI/2.10/).

The features of UEFI secure boot include:

- Ensuring that the code run by the device UEFI firmware is secure and trusted before the operating system begins boot up.
- Defining how the UEFI authenticates images such as the Linux image, the operating system loader (uki.efi), systemd boot (bootaa64.efi), and the device tree blob (DTB) image files.
- Ensuring that the images are loaded only when signed by valid and authorized users. This process also ensures that the Qualcomm Linux security and integrity over systems running on UEFI-based firmware.

The UEFI secure boot allows the Qualcomm Linux users to:

- Verify the integrity and security of a UEFI loaded image, ensuring it’s loaded in an approved manner.
- Manage the Qualcomm Linux security policy as defined by the UEFI secure boot authenticated variables, which includes:

    - Platform key (PK)
    - Key exchange keys (KEK)
    - Allowed database (dB)
    - Forbidden database (DBX) (Not supported in this release.)

## Storage security

The storage security feature stores and protects sensitive data through two key components: the secure file system (SFS) and the replay protected memory block (RPMB).

### SFS

The SFS is a protected storage feature that securely stores sensitive data such as cryptographic keys and biometric information. It operates within Qualcomm TEE, using encryption and isolation to prevent unauthorized access.

It provides confidentiality, integrity, and anti-rollback support to the trusted applications and securely stores sensitive data. The anti-rollback protection covers the files created or stored under SFS.

The SFS feature uses:

- An encryption key for each trusted application to ensure the confidentiality of the files.
- An HMAC key for each trusted application to verify the integrity of the files.

Both the encryption and HMAC keys are derived using a device unique key, which depends on the secure boot state of the device. The SFS anti-rollback protection is enabled by default.

When the devices are secure boot enabled, the SFS uses unique hardware keys for file data encryption and decryption to ensure they’re secure from each other.

### RPMB

The RPMB is a secure physical partition in storage devices such as the UFS/eMMC flash. This partition stores critical data that must be protected from tampering and rollback, and is only accessible from Qualcomm TEE.

To read from and write to the RPMB partition, RPMB key provision is required. This is a one-time process that can’t be overwritten or erased when completed.

Every access to the RPMB is authenticated, allowing the host to store data in an authenticated and replay-protected manner.

## Storage encryption

Storage encryption enhances security by supporting the transparent encryption of files and directories.

The Qualcomm Linux supports storage encryption with the [Inline crypto engine](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-crypto-inline-crypto-engine-label) and a hardware-wrapped key. It provides better efficiency and enhanced key protection.

The storage encryption feature allows:

- Provision of standard keys ranging from 32 bytes to 64 bytes for content encryption
- Encryption of filenames and file content with separate keys
- Generation of 32‑byte key identifiers

The Qualcomm universal flash storage (UFS) driver is added to support the `fscrypt` API.

For more information about the `fscrypt` API, see [Filesystem-level encryption (fscrypt) Linux kernel documentation](https://www.kernel.org/doc/Documentation/filesystems/fscrypt.rst).

For related kernel documentation, see the following files:

- [Inline encryption](https://www.kernel.org/doc/Documentation/block/inline-encryption.rst)
- [I/O control (IOCTL) support for storage encryption](https://www.kernel.org/doc/Documentation/userspace-api/ioctl/ioctl-number.rst)

You can invoke the storage encryption functionality using the open-source [fscryptctl](https://github.com/google/fscryptctl) tool.

## SMC invoke

The secure monitor call (SMC) invoke is used to expose the services and interfaces implemented in Qualcomm TEE to Linux clients. It provides identification information about the requesting processes to Qualcomm TEE.

The SMC invoke is an object-oriented, capability-based framework that enables communication between Linux clients, TrustZone, and the TrustZone applications, which use mini-kernel (MINK) invoke objects.

During the SMC invoke process, the following objects are involved:

Table : Objects - SMC invoke

| Objects | Owner execution environment | Description |
| --- | --- | --- |
| Remote | TrustZone | Linux obtains references to remote objects through the invoked operations. For example, an AppLoader, which is a remote object. |
| Callback | Linux | Linux sends references of the required callback objects through the invoked operations to the TrustZone, which may invoke these objects as needed. |
| Memory | Linux | These memory objects are useful for efficiently sharing large buffers between TrustZone and Linux. |

The figure shows the SMC invoke architecture:

![../../../../../_images/smcinvoke-fig-updated.png](data:image/png;base64,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)

**Figure : SMC invoke architecture**

The SMC invoke has the following components:

- Linux kernel:

    The SMC invoke driver in the kernel is responsible for transporting user space requests between the TrustZone and the Linux user space clients. It exposes the following input/output controls (IOCTL).

    - `SMCINVOKE_IOCTL_INVOKE_REQ`
    - `SMCINVOKE_IOCTL_ACCEPT_REQ`
    - `SMCINVOKE_IOCTL_SERVER_REQ`
    - `SMCINVOKE_IOCTL_ACK_LOCAL_OBJ`
- Linux user space:

    The SMC invoke in the user space includes `libminkdescriptor.so` and the SSGTZD daemon.

Table : SMC invoke modules

| Module | Description |
| --- | --- |
| `SMCInvoke client` | This client communicates with the trusted applications in Qualcomm TEE through the SMC invoke driver. |
| `TA client` | This client communicates with the TrustZone applications through the SMC invoke driver. |
| `Libminkdescriptor` | <ul class="simple"><br><li><p>The module creates a bridge between the user space client and kernel.</p></li><br><li><p>A client using SMC invoke must use <code class="docutils literal notranslate"><span class="pre">libminkdescriptor</span></code> to communicate with the kernel.</p></li><br><li><p>The <code class="docutils literal notranslate"><span class="pre">libminkdescriptor.so</span></code> is available at <code class="docutils literal notranslate"><span class="pre">/usr/lib/libminkdescriptor.so</span></code></p></li><br></ul> |
| `SMCInvoke driver` | <ul class="simple"><br><li><p>The driver in the Linux kernel communicates with application clients and the trusted applications in the TrustZone.</p></li><br><li><p>The SMC invoke driver source code is available at <code class="docutils literal notranslate"><span class="pre">/kernel/drivers/soc/qcom/smcinvoke/smcinvoke.c.</span></code></p></li><br></ul> |

## Access control

Access control ensures only authorized entities can access specific resources under defined conditions, using policies, technologies, and trust models.

The access control trust model ensures ongoing security by managing access control configurations among various assets, interfaces, SoC (system on chip) components, and images. This model helps support the integrity and confidentiality of sensitive information.

- The Qualcomm access control uses an external protection unit (xPU) to control access from the secondary side for registers, fixed address, and dynamic memory regions.
- The system memory management unit (SMMU) controls access from the primary side for content protection and subsystem memory sharing use cases.

### Access control domains

The two levels of control are:

1. The TrustZone manages the TrustZone-domains and controls access from the secondary side using xPUs.

    - An xPU is a combination of many security blocks known as protection units. It allows conditional access based on a set of programmable access control registers.
    - If the system denies access, the xPU generates an error output signal and, if necessary, an interrupt request signal.
2. The hypervisor (EL2) manages the non‑secure domains, including the content protection zone (CPZ) that’s designed to prevent access to premium videos.

    - It configures access control from the primary side through the second-stage page tables through the SMMU.
    - It manages stage‑2 mappings to protect assets across all primary domains (Linux, display, GPU, and video). The Linux kernel manages stage‑1 mappings to protect the assets in applications that run at the user privilege level.

The figure shows the access control domains.

![../../../../../_images/access-control-trust-hierarchy-security-domain-updated.png](data:image/png;base64,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)

**Figure : Access control domains**

## Secure peripheral image loading

The secure peripheral image loading (PIL) of a TrustZone authenticates different images and configures the xPUs for all subsystems such as audio, camera, and video.

For more information about xPU, see [Access control](https://docs.qualcomm.com/doc/80-70022-11/topic/features.html#section-access-control-features).

## SELinux

SELinux is a security enhancement for Linux, providing greater control over system access. It implements mandatory access control (MAC) in the Linux kernel using the Linux security modules (LSM) framework.

For more information, see [What’s SELinux?](https://www.redhat.com/en/topics/linux/what-is-selinux)

The LSM framework includes the following controls:

- Discretionary access control (DAC)

    - This is the standard form of Linux access control. The data owner has full control over the resource (such as data and files) and can update or modify the data.
    - Some applications (with root privilege) can override this control. Some resources, like the socket, are unchecked.
    - Access controls are provided with limited granularity, based on user and group identity. For example, File mode `–rwxr-xr-x-`.
- MAC

    - A system‑wide security policy determines the Linux access controls for all processes, objects, and operations.
    - The policy can confine flawed and malicious applications or incautious users. It can even prevent users from escalating privilege such as root or UID 0.
    - MAC provides finer granularity to access controls, allowing access to many more resources other than files with more specific controls. For example, unlink, append only, or move a file.

The figure shows the steps in the decision‑making chain for DAC and MAC:

![../../../../../_images/selinux-mac-dac-updated.png](data:image/png;base64,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)

**Figure : Linux security modules: DAC and MAC**

SELinux supports three modes:

- Enforcing mode: In this mode, the SEPolicy is enforced on the system. If the SEPolicy rules aren’t met when software is run, access is prevented. The kernel logs an attempted access
violation as an access vector cache (AVC) denial message to `dmesg` and `journalctl`.
- Permissive mode: In this mode, the SEPolicy isn’t enforced on the system. All denials are logged into `dmesg` and `journalctl` logs, but access of a process or software isn’t disallowed.
- Disable mode (Default): In this mode, the SEPolicy isn’t enforced or logged.

For information about enabling SELinux, see [Enable SELinux](https://docs.qualcomm.com/doc/80-70022-11/topic/enable-selinux.html#enable-selinux). To configure the SELinux modes, see [SELinux configuration](https://docs.qualcomm.com/doc/80-70022-11/topic/enable-selinux.html#section-ql1-bwm-m1c).

### SELinux layers

The SELinux dynamic layer incorporates essential SELinux‑specific code modifications that activate and initialize the device when SELinux is enabled with a monolithic design.

![../../../../../_images/selinux-folders-fig1.jpg](data:image/jpeg;base64,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)

**Figure : SELinux layers**

This layer is built on top of the meta‑SELinux layer, which is part of the Yocto upstream. It includes:

- The recipe‑kernel, which contains the recipe to enable the required kernel configuration flags for SELinux.
- The recipe‑security includes:

    - Policies for booting the device to the shell
    - Policies for Qualcomm services and test applications
    - Policies of upstream services in the form of patches
    - A recipe to handle compilation of Qualcomm policies

### SEPolicy

SEPolicy is a directory that contains the core SELinux policy configuration.

The upstream SEPolicy is defined in `sepolicy`, which is downloaded during the build and amended with Qualcomm SEPolicy at: `layers/meta-qcom-hwe/dynamic-layers/selinux/recipes-security/sepolicy/`.

The upstream directory structure is adhered to, with `apps/kernel/system/services` added to the respective directory.

The figure shows the high-level directory structure that’s merged and compiled to generate `policy.33`, which is the SEPolicy binary used or loaded during boot.

![../../../../../_images/sepolicy-figure-updated.png](data:image/png;base64,UklGRgY5AABXRUJQVlA4TPo4AAAvd4SEEB8Hsbbdts3HB1jcNvXOXsJJ2ACkDeG2tt0G+dK3ydDRMQNDsBo7MgB1zk6SIAdgG7cBCMq531mnv+7SITuWT4pgEMlWm8UIFvBvhSQKeu8lAQDwZ9jul7AWboIBGlaDDCAOiYlKkEH7dEZxWriFNcSgTEnKoDPErYRLOIWXJsWtpOzCm5uFNwBfWAMQAAQANYAewJzAI8AEoAIwZiBmOAMY/gPoRXgA+KnMEq9Ekc07EdndMkr4MKsB7QwAJreQIbOaSDsDRKbVhlEso4XTGeRm4Re3AMisEG4Zl90DIKOcVqNR2mo0a5uVVmujwO72+QM3+/haOLw/BvwQiCaylGwkXSyUQIaSh8K7Mg11slC5EU51sih5oAYRSkt9ISJkKSlFhJQChJLF5Im5UEOb3ogQ46EtgBosJfpDmTdLyVISIWqItrCHlV0igRqoIfvddUOWklIspf1LGab2hQh9QSLhgRUlYJuogSRhEaGSh7iBe1nzw9d/E95wFiJ83XepNh4HGIz3LgfM7yFaW7+T17b+Fy/TLuX8y2llf4v3aX1OMdp8n9JtPA8DO+4nOVi5/OqTjzYXEWgzIalMSRnKlCyJZbAsmqFOhIQ6TaS1uSDodfr3PP7JAGW4Lz9EQSlWYdy2jSSn/7Znx1cG+40IBW7bKNsxdviI2cfQmAFjGABcwBo1JmhDOS40/+nZzwhzsNiiciQ1lcnizwpzFWx++LZKS5pG5zQTc+hQzOCrXERMaXRjei0BpE9CEXH1BAAEVSFIWQAwit1kFZggWpTi8UV+NH36NltBOa9asJzrVWyCXyOduawmrH5r4x/4ltMuGPQnC5Y8IWELQ9cC0JLeSBLSQ1I9i2brNem9+2n2fdMsve/7viRJPmZ/iClTSSM8+3i2ooUfEjxLL4UxenAhKI89FKYwojCJXzzgEYlHGIHpVLb/SdxzTsQn2dmSrJq+8Tk2xfKdG/eL41jyhhTRf1qQJIWxo+KMDU/s9uC4CaRFo1l/Wry2X5HbJjKkraUcUzHMzFBmZmbmNqQTn8gpqD3bDUdOuQ0zro+9LoSZmZm3J+p/skP33r0zc393bjS7ksfWrLSa2dHOrOCnVUT/aUGSbbdteiXYYImsI+RFSsD1Kp9blHPgnm9XafKOvQ8e1eXQPZLLlnUvVGWyOFm+w9v3O0x7f+eOPajYZHLXPcsanUWo3GRql31H68kUKjhZkQSty1DJyc4HJMvUHK13Jd1qjis2vR19//lW+/RPfg7V/OADbujNn/8mVPK1j1H7aAuw+dmE+9lqOANMPknrR5DV+o77aWegySylFmg13M8kbGwDeC3ff77/vuaMTy1I07T5Y4699c9EfrAOSPbjh2TImci3/KrHZwSUuvlxCTB3We1n1i+YYzSve5/mC+nHOfCZrdP065T8VkC5QAK+n+abwte/1I60DmHSabV+2uz8kOmgB8tvCDfNXN56jnhbfhpY41HTM9FnJvUlIzlPTwZowwPls+kHs+xHlf42pHVftG/68/0kwyKl1QpjXqXnc6DVPCdQM1Se+wAd4aspl3AnMGz9Bu1+39f683pc/sXp1lVi5fvaM6HpME3P3mkac6YcFQMXUgqfibBaMRmRn27eEVEyPvPTZ1KDc7d5o9ZpIpknmIXPxbxVGxHGv/fYrLmkTVNLDS2YY5Tkt5oG2PDjadPU2VzkrGfxDPBTgTwZoJyn/qTKFj4XYdCgzVJVA0Sdv8IzeCymtvWHUnn9i8BDSTuqcSLDIGMkn74eW2l/VAncOk2z2W9mtWHdkOXZ3jBv+DeZzuA+9edCLjw/6An8UVTJ6BGKzC6g/zP5pDa+QeT7jjaky9ykys+dnffAObwSoxxE+o6YsmF5u3lLuCk/8+NI6Pl5qbzY3JMyb5osSz3BqUetlGd9M5eyQeshRS9M8Uq4qWWOTsKgSGBDn2XKQXHTm8+oKTB+KiCMzhUDVQxE1Z/5aYWPWQogitOm8QiCmIyvfzGavX79/e3wesQnaoPMPlUe8AL0/2IbAm1IZPsmXl8BaWB5Fqj6KU/cL3pv8KMUs9kvvnbLgwdl1IWM2Uy7JjjmDYNrL+anm7flvCmN9M3ZWfOOvGqaFLurV4z56Qa5oPJcnVlBT8bQpb0CDo4+GUxlTgDlZhngLXkb2nqWNQ0w8seVgLn0TfNKSl8V0IXKGUNElTnuPjNpA84mWXoPH7M80FzFofEIgthMLXXkp+C1njHCREqdWv583ZvwXO37lz+FIp38olI6vAbl+5bfHBX4MjbiwpObAF8YRgQXkihDvs+DMArYk31iTnicZfgS0Dk35pV51Zyzx1tQVS1gZYKZw0MpP1QSIKXBQeoBUEwDDQGWAAiNvipg6edGmKyIYeosFXpNDz+z5sArA/dsPIJg9ouegO8X4HMwF689fxWBa0ZoRUXxKTx9g+UX3dctj6iiHR9QCvT+IgIoVsWDMupiOSzfLD47WY08Q3N29rb05Vkv5xRNfSaGaVKBpQQfqYs/UzSauYgIwtOF7FZk9ZQQpTZnPg0sB/jeVJjgvCF4S0DpGI4gnH0K3NPXyZs/SnMhoLRAkkhg4KIqQEMJbIEoGQja1xjSqIs3041zYuMtqcmKzzlrXp2/Om9IGqXnzKfiBpRS6uAVS6l4W16RPsy8RVR88FU6B4aw9EEIUrFPdd6oYjyCwKXWOkSFTtZGnyrBx4+Bq0/dAIX9YgACVaNPlbwmylx7a6FxZhqiW/kN5crOs5okQ56HJMvAnxqWPhD+L8TSQ85/uvEI3D195alGfjQQ03WjKdi82eQIgtWbX4fcFNENOl/PZhRoq8+nn74Ov26KRvt9kCEIU3ZTRs2QLeIiPTt/p4HD6vO+aRqj/MSZvCJhedWkylX8NMHbUgJPWQs3/Zk//vsV31HqMo/MpA0LpMmyFA8DZh0ALDxFA3xMVvoNS8lhr5p+tGlyBGHl4LcZXrTymhoWRsPrQTmh6E0E+AzsF2fha7ecvL74uoCMMk7RCDbsUzSMMAq8wezwsKhsRER+um8aYt+Qx08buF6hG3wON/b0Rrg5nxP3XvRAkmGZBwBrk6wHrk+pq4F5P/7T52mT1dDuM2rf0EEAL2LNyfszKILuGzoj9w3JeMt4BAF7XdgAb6vwmH0f2jfkvQF46QuRAfJ6bOGWHiVtlItg3Rdviogj78+gCLpv6E1y35B8H3qD2qzAX4/6jjl/6+TtflTA8f8++PSn01M6NE3zNXW8fv0n/uP778SJ6qQPdaffnLLT51Ih6q+rysT3n+8/339DO9rwl9Nhmn+ud0dhNAmUnEtvba7vZKA6YdVpbmiykwHF/HHzG2jlxlKwPqVu90+6n6ivjWDJRJLSac+nCNec2+d+5tsImOQm6Eyehm6e4587CPsQMs7KUZoErZzraedg8yzf95/vv6Hr/e7VW4G4ebqEzy2p8tmcZp15EoTBE3OLo1MkmH8r+5zcorjGifyngChJp0gQ59xkaZ1C1J+D4rJbp0wQjpz7/GSJo5tuNPxMbrVydZyYTjEaXm9RQ0Z4/sej66RzLhM57VGNrmNeNzxxvMTMw8CgdNC78X6ugAdES88kYRl5cG7kyamObuYhcwOPzg18TTVuep7t2a1s5AELmBDkS/uZu+YpSjh3hsfTHcMmzt1aYhGZLI2gG66obi5xu84CBOSYcclgyaMSdpqjMfB+5nIGxZ9hgk4AB4oI0vGkWzKnOw55xqLIgBQ/rhnAMxqDND/jydJ4uoOR91F31tHkS4kbOQICgnS7dVbt0x3DBjjMCPMtDK/LZClyN/eBgMR/2OjcNWZz+mPf0ODc1ckSm8Fhng3Mk5vO5cMS87ojAOur/RE2u5eLOH8yh7zbNQdKNtzCcjIfgfuJO12CQ0xdJFqKTuWQqdO/Uyhkw7XppWXD6Z04h3/iP77/fP/xZ+1p/R1RT182IvOFfVkbRT3hP5N5iS83tlDks6HvXGkv7aQo9Jkfk+mOF5e327khUF30Ih/ZTrmw5MmHeMnzqoXmND+5SLHwMEeeVixMc2TUr8mNN4KqOQXNuuv4yL/ks8EBOh8ui8he37dGzBOP/OtFriM1ouSae3nJLUtls66o9xwGmz3ZBf1O2n5m9JGq6kzxkxvksyhaXaBmrvd9P1/tn8oj74C9IxWzHLlH1jojH4aBcQDjDMUw7NJSCik9ltzjuvEqfeTqvo0jU7JWvpdK1P8gnV0BRSloZL532oKQZqdeROoN90TZM83Rj/vyZcAdUaX4gFbQbd9elq2vnIgzmCHSSs1TjzTtvzXqe/USwueurEDUK42bWw9IBV9VvvCeDCfHBAGpUh6RznU47Em/E2nwBo/UoYng2bot9wi6maSkgsgpBRdJcArS+G4R0mrmaN+QXO/hG+hHUI3Amclsq6B4IHdJBZuA+3fzoJxU8gCuCxM4FyvdkORkNZAKBtme5pBssCtSOaxcKM9GdN/eykkF3YVEQ1CKvVGkdLinDtraDD6sG++6YEfeZzjVIgxj3dcJz0B5jTVk0lKWgQFcU1VyXzVILXTZ3oqC6M2XqNRDiflAYPBgZRmUISB5db/zyiBjkEZhNc1OXtp6liMXCI9BZp1Xoq2gVfJliAl4SK98tuRxboyg8Njcwi8XkEGGwA3d5xG0yF++y1qI40+P8pCRd6PwMMsDeukiUDe6PyO9Vi5fn2GbCOL1qK8BFQSqDkTgCgJVRz5UDVzFkZsUCzjBjTuWylrFWNThVbfcxkWuGUdq3v8D8fu3lcRll35zKgLg9puLY4lJ1ek3F4bg7TfnAaw3NlQIROAKQ3nsjRsHwZ58eHqHo3N+c/JZEwdkT0Rk1j/SIt8663sdXZenfboqUkS673dWRZq0NyKij9D5zclmzP/i96apoijtG5P2WvaAip2+Fd2nX7/ap1EEqqN0fnPy9jxp5v3mjEYJhu2K6/W8Vyoc1LMnO32fCyuO0vnNSVu9oS668/jPkAYEl0Kqm2eKCJzzpZDVee8dJW1QxHW9MSkt6n+Q1O6qiGAKTCSqQE5/5DdHaCY6YNXAYUczVqoDorFJkvebI7YnOxi6uzDK8c1OTcC839x8tQf5ee+sQtCwAg5Lwc+eCJ/e4IsuMLsis37PyLyVAgL3DRm0byhyfd83oo9kVDJ03ZBIcg88h102PTV3RG4rLkQ279PIBqXruj9xzM11YW9c97sv7CjGAH7JNuovlBpJu/vJ0HXR1tgVyd3EijK2hwYiBx7Nn6oMUneOfGwvVzjPla2oG2TEKjYjkElqN8oMoUJ/VyTn9R+uijSz/qjHnaToOujYuovE4wG42qSokPfbGiMTlCKD4n+AxVEaekMJvv7GkQ8RlbXl9jIo/tyFcsjctzpSPGzOkgjkzgx0+FfJVMPO6VU6+s2tVCCR1AfAw+W5L9sga+Yphv15UNXoN4c8W5SM3eAdOm7e8UMNM912MgR/oUK+RN5DQ/73mxMi+dZmrvYNyZc7f7oLkWSYar9iUcaer2ibCO/1qP5ZpOuHnJH5ZfWbQ4RfvznlAb/frpC2guA1Kv3mzsiG4O83N5SLPXkCH5kjqjz1UdC3Xy+yuhsI9eCBKuFbpSFTQzANpQD5wuvy+PQDiBWwI6uyQ6XCsicNreA6fIjyqY/85gK2zY60FLviKAWPBJC3/WmT/ObQIqqJ6OoxqaCZ74BDTj/kN4fIut8cTG5uTz4kuuertIK0kevO4/RDfnNnrGbeb66/Ljt9I0XwYf1uIfO8P22S3xxxrTqa+6TQbLTvB/ztsYEvmalZ1O1KGQFpv7ldgeVxQGZF2nulmR8F2V6+/yLEk6/tlrhTLh8BaL+5G29AD3c9ECCzXYA5LlF7u2vlMnj2m0tRXk/aBG2szndB47jEbu4lWQzOfnN78hi9dBu0u52LzNv+aMadzQu52423RaL7ECjiQdflhcjmtoavfnM9iYvphvr1qEc1loeuy7cikBmCAojIq6rrqirvConL+Oo31y3zBAEobHVdN6w86LrOXQAGGbvunnw1l7tdl1ca0n5zEhYiKGx6RBV0fYDIdTCfwsrhnzLvN6dQqArF3RXApoAyeEJECqNh3m9O2dhEHVHGSIYJd86pS9od+/SbEyP+3XeBCAPzmwMvMUXab07CKsb26TcnSNCwghqWd4OYDr6Bdgf2/ebcmzzoNydOguwbqrbhG2yplJqn2Pebc2/eWd8nvy9nZKqOfCgxwa/fnLDwwPrNce7yEl8JpOZ/5dtfJWT0F4IQ80Mb6zIgjUlKJb9P8e6loBxbI+GB9Zvjm1F/Ckw1ILNW2OAsgrEmOpMH1djL8IKfvhcrpuQ4MMSJ9UZQpljIHZVw4JRqAlHbvchFXlop9gphF0O6WOPa1u8yX7Y2ZGZtL7kFsxutBXLaL+AKeCPWpd0A7qwKlZDK2obLkIGU0TG7BlVcIiGjdRqs4WqltoS2chu3yLpSQ9XWaA4LjzAEZ5oxpNQM1lWmYi4AbXscoxjb5YLUCwQWgwcaGIyY0p5/2vB6Gr2ATsZe4od2rN6FcsYwpFjo2tb8EBzbcOkRLhThaBd8xcbVmrVOjwSxVkIqeGxbgSVSDG2tWSvrWmtL5W91YYFFY+gDklUytLfRrUes62PosM40P3m3oEPMeqOIrcICl2RtoTHK3RjesE4JaNgg0CXqtrIlj7bUsRLVeMAFlINSbFUQLDQUDqzTC7hEQgpCaCtSUfIIzSz90QUwCk6JKeHaLhBeX7+5gtlqZOfU9XGUhqOJXMaHGm5IRi6VJiAK81+BY0OiwjXllEKLKTR0WLatCMLQwlIo0RtgiYQgnFrJNXaKi0BssMG6W3y1aXHCEU9e1Ddmq68WztDHURr+TuoLS6D4EPMCXZUOW4oGqV0LR+CHqpJgwTG8/LzQFC1ig+uigkskf4AxSmXMwagZFG1t7RiZ2byERHcfqh3iDd7iM3W1wTXiIS90DD6Mn7JyoUWlKqoF/LT/EKqS/JBNO9A+DvOh7B4Q33rjuMBAgFhcxRw6D2sOqruorI21bpUEZ+0BdI9slGpulISNAATqbiuKGMiKY0pnVb6UJAx1D3A4axtcqBcLNiz2G9bYmsGLsUH7BolhNRzW+gxr0cXyhlE7CCXXtiGGVR4lb9haE8OMHcPWlmzAJGzweMLAcSO/ObbQBqG1kaiKqfYNwWVOqVQYbSHFdPuG2tHiU8iqDILvviGwX1HZTe8b4gK9QRvDtd1xct/Q4AA59Oz16yLRrO9vRFaezmSvEWk9dlZFmkeKI3R+c9xfjwoaB1DWWuWy3kPUB6Bzgxtrax7t4ZcvfHQlKKDrN0fsxhuzHuQxp03aa9lTauYz8MT2dL7ap1GkOELnN+cIiKvMB8iae/7vgwdevzkyT8WhPFdUWpd63ivyvk+lBZmk9rmwxxE6vzlH8NHSFXuwPOS1+PhPyLjf3EzAwgo6tn6uvQY861MUMM+nHWmDoRqsN4Yhbb85AiKrHoWA4k8E5BwriGP3Bs1+czPRT9RvLUokzL9qelCOESBKWIMZ8YdcNzu9A+8786cwqZJzZOTOykk8pRCRWDqP+n51Puud2fMlnTdp38rsRBBo9pubwVfRYN+Q98sPuG8ockeu6v5tkeiDLlrxuCfbXbq1LBedQZmvDIkkadcNMiQp3pxieRiyfnPuTi5cj3qU4sHKnS7f3FLHosRXhs4kBaoG2Ub9RTe1cVNjburaNGbab05hAJNbuV896FYuui6pumo577p0gAAx3VbkkSuJm3W9w5j2m1MbNtEIBFyo5MK+6vUXVPdMUqAIYNK/Rwb3m8syCPQMGwsR7/duJtsXW13XSbTsBsT2Mii+KCT95rY3tx6o7MIccmXDSoSrGVDiV4l2v7me7XdLhCvV5pRj95vrzN7raLnrpqUcqQhPVq2oS9WbFRQDyBPl3PLcD8HuN9dTTcQs3dScqt/cf+91vNwxzg8jF2pNlSsFIHNmuQeT9L5IkIqxKvwg6jcnsnZIBM1OWOG3l0a5yNMXIHP3OJ+pCY52tjdhRnNdtzLAn4rcybtu3JIBqrjo/OCm39xiQZIIW0Lq/x8iNglznSkHdBeP50nP5P4Ldl8Y7uRiX9dYBAHdtA8kbqZ4dDvqXjQS97IcvRRfkSh/4cBke3ey4zKU2hyz35xLx/uTDwXUL49h6syuUyqFbTMZyuJV73N5cMS69OOyPlg+XhyVcYx+c8BRVjYwDZfPOWvv2cPgNxW1JpoTZY7Rbw44wocvLLHeOBz7KmryqISpMzKB4xj95gTdQ2ZtiESniCSkSi45tHHLHNbQ2TQ4/SnwqERFwRw2toVJLTSOqWd6NCHrkksPLLzUDHWEl5ndWDJXNcZUrGs7Kl01b8BHSo+EGWWFDFlwSUyPXrTMzhLzZnVMzCtZkZiKeQGfOWsLHcNcsIDkimNgQKnTGGd9orQ44zaCrtCNvcw1OLbhkkhCqgQuLQxj23KD8oFp2JOxYJQalV2rRtvqGK5/Rt3asQohI8iGShGCB0w3OPUp/IhqmC0V+QiiVluQd0zBhbUuBE4pDkOcFEyMDCGmR7OxjS6JeTM/JlaVrCgMl7bmBTjWVi3OBQtIhk/Ihi66WQ04s+TdfEQ6Uz4o5ss40SkiCamSRyjIxgtFVaLHmMUMlKG8gUZ+CIA6Fxwj7xIDtwSXTbYqqNQY2lDpUiINN4jRAoEPtbVVVVmrSyjGKNUNN542ZIjf9ISOmDerY6LRP7Vq2CCQ7wtDMGEl1zgXLKQNONeHsb5kHnP2KBr28EWibiAQ2Js9b4QSnSKSkEJXe0J8ElbrmAA9e77kETgX8npPiXChBRAOkEgFBgDl1FxDsVjEBpcN1zw2XAJfBM/4FiFpCJoeIskQYt4sj0mgjVcju7kNYW5nmsoFC0i2Czx7QbXJl5ce4ifbCTpEQTW2zMyXUaJTOAkpjF0wtw1ce/izYFAwZcXMHCs1ZUigLYBIfcoPIJLA6rKsbFUabW3IoJToIk+IQPlYEeB5I9Q2HF1mbhRwpjxKHVcFzgULAifOGcM3DLn6kEc58qxc9vHaqLwHTnRqg0vfT7dGp6RoE4CHmh5WchmoKg+2ss65hS1c4ax1zuezdIdA+VgR4Hkjg9abtqotsLvhBXSvcN4UsBTAo46RcIr1VaWyho1VoESniCSkkBfCTsRo6w/yVw2irSxFOUX3lJRab9hSVw/BlSloVLFGG4LysSIA80bCopIVgS4sxIa6AvrAZPpKnovWeGHgh00tX0aJThFJSCHXVTnl+WrriiBYVzW21iW6/MMbtq4QMTksJoY1urBTMrJWzgtcSYcWN1YbP0Nsy4YCz5sli0pWBGGlTFGUXFC5YKGqrRrwqdoDjcR+nr7xQnBfViAPEjGHynDgqvNk6HIZTh4OqUPmsgJOQFtLJCGFGNeYqytq7REIW6CdNgvWMJOpEpwp4W0+eN+Qo/YNTYutWuB4LLI4rK3R/huRSm0piHmzYl7JCoN0gFdueIPKBQs3Cnwdy71IihzWC8ddxTH/haiLTk2zcfhjexil8XgOyrvvHeD0cHKtSdKM5lxsEwE2X7Sq67opcIh+c8Jvg0s7TXnBeP6nJ/54yhnhxuAAjTeur8pu775V5MYjCBBR9H3/YSPS7Bwqvx0H5rYY8AZ36H+elJWLSD1POFneHMTAQKV3sZcqRDYNiIu8Jcl21wF5F5httywXigsRlyqDhkpkUAYVhArwMwW2lI1Vgd36zYm9j/iK/eTguZ+eS/yefa4IApp+cxTMrO8fy9N+51sjBRQxM0X/yNzo0+jrD5Xcszcg98ADHarE558nJUlM16UydGPl8VWvxyQVZLPKuyjJQRQv+AQsIA+ARLii6yI3doOkHp7Ou5Jsw8cTC3gOcYrBlrLRGx2eOUq/Oam37k8l+82Rb/q+X4WJIDwBNMrFWQPTYpkVjw4VYG8gtu9sebiLe+Q/Twp8ePDtCp24RUrZRQKYSQrCryuNSsAMyUNUERAxzkStwArXGRip/ULZVkAVnYswhKWMRNF00U795iSmP5g3CTs4DYZ+c6SeguOg6wMY6/FEPnxk4E8PhD9lhPktaG8glGuS5dlA//OkgEVVUkGg97snhlZLPf8hqTDkoyAGyaHjQ1TKF1aIiwRDWGruHLoj97vf22e9MSkt6n+Q3CPpC5pvvaFIBZYP+0aLFOnB8OtewpQiLYf/jcCg1j/FZqeoREQE8UAQuYCCz+BuL4uQ5Ms+DJAqARqXTTDuLueYTRERsVKjO3K/+K3Xsb4qImW/OXabvZ4ou9/69YfeKJ2EHSLDikmGDlRRB4p/NdBC70xVdcnBVxF0NMx2pvPtHB/ubj0H8eSF3X/l9w/ipd57dxrVzw1hoHetFgeleIrvojpW40CW0fWbI2d9cxQpZn0hqfefuEOmv4CERtlU16epf54UxO1NRFUBiciRjX4E6r5HdvsQoBtbyojuC2PcSB4c79Dx1J9vXZmC+vkhtPaS9mGD/8cBsgg8Xxw/UClEpKL/1tkjath18GIfiu1VGt+HSr2ISKq7rdZOA/nPk+JBfCYGhl104AoQFhORIHmBh/mBh21jCEvZ0L4RWMbNznGOg9D2kX0hSgAurx3YCm2q+eJYAamRnDe0uoPe4MP+MCkiUrgn2x7UP08KOE2jNgShBw2PHfwtka1B7hLPFYbyBnrf0F1q31AALnz2DRGWMlH+HVP5HWAPsefJyLAlRgaPyMHLXoNIMnR465JxVOt+c8LvfRiWFEVaxZW6s6JkDkfqJogS3g9Wo/AcJZcc4qCrVt0kxgVUXWqjQThVHDUVxW1FGKgwiGR0ywWyKGwbZubS96uk2pJZl6RNekHGf60MqsDNItBaUnjbJuPC16MS53PPUVGNw7wflbHNKu/uUHue4P4leBkrGQBVst0JtXXJZFRm/eYEGbiNM1ZfkbLkWvVT8HueoDWfG1Lj/6ELGKJL0Voq6GrNpR2rFsLwW6HiqKl03FaLv9ZpAMk0LVgtgcrnq6RScVEpmzSIsVpAO0o2EDLYKyU81k1BMGze78zWRfdJDFrZ5RWx58kjBYvEvEvFKHJwxB1HbF0yjmrRb074QS/TXCYirSKQh1hokv+hF20Vw/usFKOlgq6GDkqBxEoMFTUVxW0F4K91GkQyyUhidYHuR21bKi4qEZEVSio0ijXUVhAyGAgl/GGViMJmWAGfrH9SV1vAQmLPE7T4A2/ohesU22gKiK1L2qgs+80J9AY8+4GItEo2oHMib4R/iG6XCBeA2BJBV5U4UAhs5aioqWFVkw62tdYGkkwSE/h8lVQyLiphE8TwBlRb8ggggr2Swm24ICSM6/68MHR3l+XO/Q7tecJ0UdFtDQi4oiK2LhlGNe03BwEwYqn3e82gTEnMGt4B1mAWDIpH6U8YElFTUdxWoLKEX+vUR/JU+H2VVCouKrIJADUvNLKbQFsPUnjDDQjB69QzYs8TYkhmyyNgRlSRn1TTfnMQ2IEBcT6O8Q3n07HQ/BA6HqLCPkUHrBzpVh15R/tD7WjJU+H3VVKpuKiETVNUSD4SjtrsVDKjHHlRSFAJPOE9T5gPlqOq66juL2/hrUsmnZ8s+s0JPtO1wHCk1QBYXSAaLhfgGVglAvko21h4ceiKXzeOmkp5Mkt+7eUAkhs2wfD7KqnY+xI2HUQ3Fm6rhy8E2z3MjceXiMoG7kfaxnueiCta0fIAUP2m2ya3LhlHtew3J/qapfeUX4lxpNUgtDhOaViBT902eMQQQVeDDYuJqKlE3Fao19g4DANIBisz63wo0PkkblNxUQmb0LBFwGGxXXCDhW/w+EKA2z3Nx28efXYJiooPIrBvCe95IkiXR0Q3iLihw1uXjKOy6zcnxDsmq442RKTVIMSOuW1D6LBKLgtnMWTQ1Ro8jBhRkvuGwhrHbSV+ytzGQSTbpmIuNc1YcUl/lVQiLippk26n2zfkaouFF84eIM4QdwXh86Q5+XlMpy0lx89drMPG2jr4KklfPijhsTbPCcXYq2OtfeFYcxaUQ8S55yy+qleu5LX4kBmPMJAp4lgurfsjU+RDuQbY/eakImD3m5O34Ndvznt3D3PcRoTtJmqq1N9ocah+c+uc0Cyc1URNDR253xze4ID+BdoeGkL4djmiY/Wbc/i35lUI5949iIu6BSyLkZ6t+81N+8MOX3nlyA5nQQSPE8PvNXpGL2//hHk/8qGS5Y0b/nyrPm6QZdJcdNwgDGW1P94bDtFvTm7iq9/ck6+Hicw9WhUpFOZ6I6JTLdLsgMaHsrcq0v6xjt36zclbjPvNPZG9flf9F0U7fSsKM+udmLZv5tpgYni6nT7l7uzVb07eYtxvbnUOLx49ll3UMIVSAvObM3hOVwfK7dmp35ysVewnbRtG129OR/2epD5EHoVs1ntGM+aCQLvemBj/Qoq831whIhL1xXECmflAXPWb0/PdI3F1Z+VAE52TtecrIjLuN2eu9x6g+6hN8uDkGcb95qJ56h0RwWFP5QhN1504V0HAuN9csyqir5sU7huKjpLcx99/oBKJIo87m0rBB4PI1jZ8UHJSFZ6SwBQ9hOtRBcu4UnTj1ibKZi5RgIwzk6jrIodQaWcmQzCi1V3k642pDgYZQX7gMEPNAlRg0TV2XSoGcgES7w1EvkTTf0VNEODQB1+VbR9QEqyooaj80bXuUTgMW8si8mD7ELivN9KlXj9H869yUGKkoaU8GJaHw6uylk6WFTT1a1C+hDXEEpN9+s0JjmKr8wDdh9DAk0rlHel6tyyzT785wXF3eaZSl38Ahy0fNFjol5Scot+c6Nz85WW5Pcg23Dd0ceAgNnsFEyjjRpym79OQ54JA1ZEPFWyO0W/Og+cY/eY8eI7Rb059wG0kLpv0m1MQBIFt+s158Jyj35znzkH6zakH7LPe2FAhskxt6lU4fbph/z8Ymt8BBMht7nr/aL4KkntK+z0R06pxIh/2vRX51lnf6+ipSLPTisx3lQzMee3Lruz1M6PBsf1c94WZ9a20qFqd7/TapL2Wtm/mZrXvmzkMyOB+c4Wk3gF7/WPJe5ZdmARCmwOAmH5H2l5HQGLT97kMC4S1q1Kxd9o8QNQp+835VboHxWsWb/R9IXtUdys7SpHGpEonCgQ8+QSht6FvPUSw7De3uypz5eLaN9L5dfUGc2meIJ4KKEcY1tZy/2wLe07vixbCrt8cOLbp+9lygV3ZdWlRZXpQji4g/iUn7jm5vRBB128uIjxZZL4ep/QURQrs3GZHC4AR0PWb25MnfRpFQAFIr3A+62emANeZ+r7xVOya9vQHX3QA35+K6LRXzcfwpwKG7OJ9Q6Y9RVEV44qcJ703P7D7wlQGYVgJ6XzvdA7a+/kpnarvv5YSyPebUw/Yp9+cesA+/ebkKlDGp9nN0zpMlq66fzsZTnYIQ9ngd5c4OyA+y//plA7Z4E5rIHLtcxO5ORgWxbi/xKMbmZnF3YqYk5FgiCZmVM7QLLHJIaO0bpB8nJjPOxctiXPC4kQyl4lkpxnImPeZebLEzOvOJbwvz1h+d51ZrrpnbGSfO/yLk0niibu1zybiJFPAAfyMmTmnWOfICRv3CQTY+80BxbWbHXOXdbzvbimvlXMCG5mMzo0cIQx3QM+6UhLxSBK1mWGhyPb5WsL5yQi26TcHEhl1XMfPRMTzVLgbMorIVRdxdM3dzNwzjkQMRyTinNCAE0RxJyPYp98ccIwMCmYwzKwcG7zKNFni/ShzCdA2Le4ZJ9kJSVxn+/SbA4+JAwWQ877cohrOdesDTzyuAhnTMTBzd0KyX9E+640Bh9d9zevJIcD7UYg414Luz3qMgUg4cfDQyVLEz7JTFLh15iTiwbl9NlcHIIINcUgyjPxMDZvIsNQFoWNeN8wCPGW0JCdnfOuNYx9w39DnbjnXMYvrEn62zgOWaJh5+F3nWsM8BKucMJuExRs5uJw5PzkjOo7Fdb6ZkcdNXX53uOanmex3WSBjTkAYCFSj9eT/KPZjtqqyloMPSTZP+r6VVqJWZh5Gw4YWiXY9XCTylJCqXGDOa5LU6D6N5srP7aJ+rY5t+/6xMCCKmr6QWc9S9DNTYKnSEND6zaHcDmZF2pvrfd/PV1FeYTrqezvvFQ7kiDC3MJ1CawipshC4+s1RFTxTeyxPgDfzSD1yafq5BRSCPJuxQNAMS5WF4NZvrtEiRdrvCigQ0JzJY4hBnlFgmSGpCsMOw35zu9E8fSwMRGD0ajvvAS1RtX5SVQVZxqLfHJnAU2qKvu/TFPPEREXv0432EM2InJ8Uj35zM7ne99qkIMm5HXJZZYQhfRSlaJjtvRcjpKoe/eZ2I5FmhpKcu94jwGhEr0UahyXuEFLVBdyfJ/0aGydX94X5MPeb69k+caXssMzz7DfX/XbXynKvs9/cTu5lt0Xy4M9HhonFiYulGzwGAtDrlnkQff+BV5apOvKhBPHLY5i68tEXDpPfVMu3v0qtMakmWHvPBub9pYcHRDWgtCY6kxFZ0G8OzmJdHjoMZjsqYUQe9JsDn5L5I2M3gM/6OLS21KyNklNyaJs1Zjcqygo4tpC5HB1zq3iPOWxsy8zaQol4JWUq5oKQhitr9aJldtb+V66tjXlhW26sDatRGV0eFBKh3xzwFLqxl7kGxzZc2pJr1N+qxVVr47ACGheKMLYL1rWtubR2rRptq2NYjbq1YxUCgKxGt4Q0Cja20SVFXDlr2CitOj42Yp9+c8CjC+h4Sh5tqWOgw368BnRAt9QsYnVs4wG9FFDW2g021o78EAB1Llj5LPQGpiSkUSjNoaOwhusKvHbbHth9YRJhfVUI3qwvA68UrkEPZQvt8QVVuRFd9AktwUJJDqGHs1VLdpeImoFFhDSqATWTWKf16BHr+vi4X1GSGFtmVo5nLRzZ2JpBgUBV6ndblQFYMCiYsmJmjkNmbmzt2FOKpU1JzS26bnXSwI3omEu1NkI3VPJCx15V+i2ZbB1WSs4YpNL0sJJLLBYJ146QNh2h5gZsDzgJ4MYbx2gavmIhsdatGrfwiGPIgmMLfFOxZilon2UbRFtZBFQFRCNpQWjYIEreUCpHLl+yE3urIdsCF9YC1/eQjR3DFtJwYcHnYNoEwbqqsbUu7ahY8IatKwUSH5PSAmArZ61Tw3Rray5V+9hIMSb128aXN56uitxQ7ImYJ/1MRKSFKlpFKxKRCdD1+VzSC+G4U4fMZRVai0/GSs38HlwyQVVr79sr2gbCFsy6BCsqDUS4kmtLiG9jQloQmoq59FQ4HSuP2lTl8fe+MP7Dsy/6YXZ7pxyYNbP+qThUFUDOXq/F9mm0ihOgg2KG4yp4VCJrl6ZxjO/Z573US+MxGOY/+h2/CiQYBvMIS6WApCDLHj33WsD59UQCdIWk3gFtgbF4xRVcpMd+Nrg8KboPfnWWnaN7oZeVgzR88fVr8IlqXvvyRB4jFYhdcWR3ISmRAJ0TfbTpnnk7L7nMXsAO5hOjePL1er3fOADWUOc5g/Jb/4cGuDeQtpwIwcwPIgG63q3KxAuuzjYr7lwhm9c5VPzhf3aBqnmzQ1UcpOKeKC/E7xEW2/P0J1RJaP/qi8G6Z+AEzvh02zkBkQBdhISIih3ezlGks/xLLtCwok9N0/daPK7DYTM1DEMnQJf3mzdunFYuZIiWNNo3tBuJ7M2jvt+Zo31D87YnwAnQwTfQ6RGJ93k8GMCdDQ4l/qh8brhcBeHYX0IaEnj6SX4/alivH16q1+t/diijR2zHwFzSn5Bcfn7QsS258fvw7nhpK4t0GUSHssaXvPq9A8MNd/w5pZpIW7hKJ3OsnfFdIuToJXcZhSotmfUV2zAzl1AFeKW4EVWbJLLDbaPhsuIYh1e1I4ysGnOJw6pS4VLRbGHBDk4oycjw5lNk0UJbzcxtyRvWzumvRGvDXt9/olMsRVFUR8dS8mWN4Ycq/igR0BRVCxSsdFz7F2O7ai3uRJGNhLHF4VXhfaquQoSjXfAVOlxqY0suPYgYrAQjEyCLFhpWIy/QgiuoNiUuDMuKzqW6bNccQl26vcIbOKCpAl8ubivjcqZrLBTCrshWjLVEeNWFhlIgNRBDhEuFd6OWxoOKwUowMomxBMAVWtQN3kiAyiX7zRUGu/rRucTWjpYA+gpQNKLmmujWTWFuoKR/8arFcHENuxn+Xhm1pcKrhugTLopCk+FSiYiqOAYr0cgkNY3hDejma5NQ5Zb95gZKBYc7b4gAugAU0JSgmYLzVkf6a/i0GC6uYTfD0ZVChVcNW38WHBPhUm1Z8ZoBKlsUg9V8ZFpWL0w0p32iLahyrH5z6266jbPcz9uncc1S3vhWKKApYmO6qnxKlM12avJm+LWAlSZ1FuQBda0RmI5Mra1a/b5k66FxyT33Ol3uWMoxwxsooKlPd1ER0j2JtBcqvCq8ODT6dqNwqYQnAyzQjBGMbHURlJrBbDfGJZu77nW+XMefd0NiGBnQtIDDGjWMXPkutkKGV4116z+spsKltlVjG7CTkYrBSjCybSslhsbAtVil2uPRnFzzr3sdUMapsGBeG8mApmOF9g1VpSWnPbCdEOFV0eafdkQU5L4huDJkJISIwUoyso0dc9vSWMct2EOljY6J52CK252pi4OdJ91wbZ+zolxmUD1evVFW8F4U1UbDVWO9CgK87s/XlDPDke0VC3gZN3ZapFrAmeYOXGTFCNrU++9yFQCwfSjW5YGlf7pgNv7Ae+AWVUDGqOmNsEtsCuQ5F5zLQQi239mwsTYwOg7Gw0bi/dOXA3OQ6Z+WHAcncHl33ItXcsnv4sipNTNz6RdQtTKo4pKIneo0WE/V6LZSXTiuwY0al60NYZ5i2miuamuBnEsxrpQQkGRqXDlll45BJA5v3iVLRE4Ft7j7BlQt2WBw7FR4bFvh9E+1bkAwWXiT6kJVD1kp1COQM4YhRQ3uzG3hsVULkzb05o2WiJwKIAOqAgGXKgxcJzUotoYmYsLrArhMsG4iiKEl7l0olSB00Fpla4mWah692BKRUwmoZFKBKASKnQpF1byBY8LrBT7UcEMAfaZeWCAKgYIGWTIGdK1jaeqBfKXLV4agfFkkmTEZQJSgyKk+LDheaHQhmqBFbHBdVPATMETMoPgRhuhKeNhSlNhiHVcFfIyOZHU3ILe3Pui2F8yYDCBKG21Bmb5aI64AfVxUC5j+KVEhPzZ1ZTWuGl4AA7U5WSVw+UDuqUMvNRlAjBCRUw+o+3+wsZ4CbkD6pxh07tccVLfh0dpQV0qCtieV3JdhUwSfsm2lqFJKPohEorGLVjxS2aYO32gygBghIqcCiICqAYZRsVNtw6hNsMGF0uQ3LAbD4mDDlDZwHbw4wWTzg+6upPCUbZCUIF+JlBh47B3XIZQ2kwGECBU5FVNMt2/o0mjx6VxVIohAqyNBOd2+oQVowkcllyeXgAXUVtR9FQi44wjurgBZaZdcdB2+zpSLSMNkANc+T9oGC4yVql3zOJUbndbV4lXa5cqecHKx0g3LOVg7fYDZBFeNoKjt5RmhNE1nTAYQVcRznw+VwHC+kOTkNXOwrPIcmyEoEDPZvtjyeXGTAQRVyWvx4WPSDEbCbshPybYu3F2SRlo3GcDBuei6P5L2ZvhBfZWIQSuuFCyvzAaAENl5t+1gwwrk0oy4Dm5h3KzANkWTAdQOF9PtGypGpWhlQOQFuC3DbADFY2f6Mls2Qe9HVV5EUXe0oMcrMyxH+RED3M3FLPY21/3BFe7lcvQ44Yqqa717nhC7XSkjKPcJfXz/+f4bmtmG4wDnnznIWrsqpf3pk5zQbdQ/Sul6yDhtnk7aFwHWyTnqwW5xQP+lPrInAMaGvnMtWc81di5Qc1auP6W29DbHcxX9M8labqQNlEwm0UJKuH4sB9X8JV3IIJdc52i5Zh2Ll7ATOahkrL2QgCoT33++/3z/+f7z/ef7b4g1b/rOD8zzLW699/MWeSt3Lho1z//7theAS26zyP9+CcOXfm6Vzc8rX/umRYZ5s/Ihq/zfF4C77rXKq5cvBJa+PiWfX7p2SGyTWYY377bUvwDca+l/vTRinZmT55//b9Lwf/Jn5OcEZuZJdzBkS9nzwsjMyc2XOXxu/5rLhugTn8S5f8vjC0Wyn7nfHSYvcciWPg+dG/AZHd9y2WSJI0jrSfjsTefGfU5G59YHT8c4Mg+56zhiNtcG5u6AYTPwfuacUixuYOau5cnSOrCtc9BqHxPZcSPfdK1hNq0zE+fEk3GVryUTs8SJQ3MIFpXAUGChOKB00tLzyEYO5GV81RkwQ3C9Osk9/cI8uemcQ3OLFGUO/8V2PPFEj0xMs5zMI3zTI2PBZJy4fH8EDJOb7bDuOvD/51WXeFKEn93MBuMxuqvMuYv2swNmyJ3ZzzIWT3YHqpaNU57JjYTVtIkM5XwVzBQzcH0TT4bsu3Ue3ci5m7Br99dVBQ1t90fg7Cd8M2O/eWRiZKAuEWfA7F1z8qx1ZvAwLudRged2fV9NdUsxOvRX2SLjT+RZZ+QwMO1N55wxioFz5zJxE6OksEueKec0OpfsgxWZG8B6LD9gEqBd+SYnmM65SaQcxIispk1kqOVReU2X8ZDzcJOfiZtEyIJOuSY3jojOOUkcsDYH3stnHpkQds4BoWYAb3CTR+eucg71ryvQ3AJF2b5QtHCanVxDxr8cwHWTJWYAvujD4pwTRnRKLCJRZAeP49EZjkbnKBiUEVlNm8gWWP5kPLp9GZNxyLgjGHmSZI7CMAMLcyXAbx4rwZiMQclI0Nxm6uXcxPgAVmKE8S8HGuDkx/gxPn+Ic3ky2c9JBOiDVh8WOXcjO0gyiSRfGjmjLMgSwx0JuhY9cOtGP9juICbQqzlHguY2W8qmYfIy4JCB+N8xcOMQMb6GyRE5j5kob7FONhi7i0NE+CZuuIH3Bzd5xg7TJq1z0UA2gMcCGvxh+yGQfa8h/qC5JRpDoMbSzZcAL2SGm9lkqc15dCMb6pDIk9Cp/sPlxGgOr5zst/iQazyC69Yjt5COR5clV6HVh4Tw6NRMZTyoAzhzwkKQ7RuXTYxyVJCWjWsn4hLj2XsIuAi9ED4EXIEf91sSNLfgkHVu4V8sogNqc2T8Cf5+Rc6dywdmw60bmSc8APLJEkfqhVi90OGifXs+muTOLU0S74Wgjsi5mwOPADeCnyCraRifr9gyeCHnJhG8okNYkE3A5/QuWjLQ0GxQk6p6hohbGsbnK5p99EIR8/B5skHMrYvUC6G/WACUPXTY+JP7+zNGtTNZSMLn9RnRr1zn+gwzvPzYr/g9quvCThzlx1sVBJ+2NIWc5otWJnmz5FErz9rAbVbuQO8FfvTr5omRV1t9+GOmGZlH3jL20oumuQDtkKssmpEvVXfWOfT997VdLFZ2dKs6dr9czbHjPvvuukjFkbz94MPecZmCY6Sz1xajByUtBef9nYeOZtnftOd//nTNn8LvTf9Opkr8l639zu84NVO+2/4DLjJUivqvn54pf6MFx2Y=)

**Figure : SEPolicy high-level directory**

For more information, see [Customize memory and SEPolicy](https://docs.qualcomm.com/doc/80-70022-11/topic/customize.html#customize).

## Watch a video on Qualcomm Type-1 Hypervisor and trusted execution environment

**Qualcomm Processor Security: TEE and Chipset Services**

*Learn how to use Qualcomm Type-1 Hypervisor and Trusted Execution Environment in this comprehensive tutorial. Dive deep into platform virtualization, secure communication, and the extensive security features offered by Qualcomm. Learn how to develop secure applications using Qualcomm tools and APIs, and understand the critical security use cases and compliance standards that Qualcomm supports. Perfect for users aiming to enhance device security and functionality.*

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 640 400" width="640" height="400" style="cursor:auto !important" aria-label="../../../../../_images/video2-features-tee-and-chipset-services.svg" class="align-center">
    <defs>
      <style>@import url("https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&amp;display=swap");
.svg-2 .bg-fill { fill: var(--color-background) }
.svg-2 .fill-text { color: var(--color-content); fill: var(--color-content) }
.svg-2 .video-hoverbox { transition: opacity 0.15s ease-in-out }
.svg-2 .video-hoverbox:hover { opacity: 0.9 }</style>
  </defs>

  <foreignobject x="0" y="0" width="640" height="400">
    <body xmlns="http://www.w3.org/1999/xhtml">
        <iframe width="640" height="400" src="https://players.brightcove.net/1414329538001/BJv5wEFt_default/index.html?videoId=6358216309112" allowfullscreen="" allow="encrypted-media"></iframe>
    <div class='topic-detail'><div class='topic-updated-date'><span> Last Published: </span>Apr 14, 2026</div><div class='prev-and-next-links'><span class='previous-topic-link'><span aria-hidden='true' class='disabled' data-tip='' data-effect='solid'></span></span></div></div></body>
    </foreignobject>
</svg>

## Qualcomm TEE

Qualcomm TEE is the software that operates within the Arm TrustZone environment on the Qualcomm device.

The TrustZone is a hardware-based security architecture enabled through a Secure mode of the Arm processor. It establishes two execution environments with system-wide hardware-enforced isolation. For more information, see [What’s TrustZone?](https://developer.arm.com/documentation/102418/0101/What-is-TrustZone-).

Qualcomm offers a 64‑bit Arm 8.x processor system with hardware virtualization to run TrustZone.

In the TrustZone architecture, there are two security states:

- Secure
- Non‑secure

At the EL0, EL1, and EL2 [exception levels](https://developer.arm.com/documentation/102412/0103/Privilege-and-Exception-levels/Exception-levels), the processor can be in either the secure state or the non‑secure state while EL3 is always in the secure state.

The operating system runs in non‑secure EL1. The transition from Non‑secure to Secure mode is facilitated through a Secure Monitor mode.

Qualcomm TEE provides the following features:

- Operation from hardware-protected memory
- Support for power-collapse of security blocks such as the crypto engine, PRNG, inline crypto engine, and external protection units
(xPU)
- Support for a secure peripheral image loader (PIL)
- Support for subsystem restart
- Provision of content protection
- Support for running trusted applications
- Support for fuse management

### Trusted applications

Trusted applications (TA) offer services within a secure environment for Linux clients that aren’t secure. Qualcomm TEE extends the following services to TA:

- Support for trusted applications to operate in the secure world at EL0
- Sand-boxing environment for trusted applications
- Position-independent loading of trusted applications
- Message passing between different trusted applications

TA operates from the memory that’s protected by the hardware. However, the applications that require more memory can use double data rate (DDR) memory for loading and running. By default, an application is set to run from hardware-protected memory.

## Qualcomm Hypervisor

Qualcomm Hypervisor provides a modern virtualization framework that allows multiple operating systems to run independently and concurrently, delivering high performance.

Qualcomm Type-1 Hypervisor facilitates the hosting of multiple trusted execution environments for secure use cases. The figure shows the Qualcomm Hypervisor software architecture, components, and virtual machines. It also includes an example of one guest virtual machine using the Linux kernel.

![../../../../../_images/qualcomm-hypervisor-architecture-updated.png](data:image/png;base64,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)

**Figure : Hypervisor architecture**

Qualcomm Type-1 Hypervisor, also known as a native Hypervisor, does the following:

- Provides enhanced security compared to Type 2 (hosted) Hypervisors
- Supports multi-core, real-time operations that are independent of Linux
- Operates distinctly, independently, and with higher privileges than Linux
- Has a minimal impact on the performance

The architecture of the Type-1 Hypervisor includes Qualcomm Hypervisor access control, which supports:

- Multiple operating systems
- Smaller attack surface

The figure shows a Type-1 Hypervisor.

![../../../../../_images/type1-hypervisor-updated.png](data:image/png;base64,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)

**Figure : Type-1 Hypervisor**

### Virtualization

Virtual machines and CPUs provide flexibility and abstraction. The Qualcomm Hypervisor provides the following virtualization features:

> 
> 
> Table : Qualcomm Hypervisor virtualization features
> 
> 
> | **Feature** | **Description** |
> | --- | --- |
> | Memory management | <ul class="simple"><br><li><p>Qualcomm Hypervisor manages stage-2 page tables and translates the intermediate physical address (IPA) to the physical address (PA)</p></li><br><li><p>It also isolates memory between virtual machines</p></li><br></ul> |
> | Interrupt virtualization | It virtualizes and maps interrupts to the correct and independent virtual machines |
> | Scheduling | The virtualization CPU (VCPU) scheduler prevents virtual machine starvation during failure |
> | Interprocess communication (IPC) | This includes shared memory, message passing (IPC) APIs, and virtual interrupts |
> | Power management | It supports multiple virtual machines and adopts the lowest common denominator power state |

### Qualcomm Hypervisor BSP

Qualcomm Hypervisor supports the following features within the board support package (BSP):

- PIL
- Access to SoC AC policy
- System MMU driver
- Pathway support for SMC TrustZone communication

The figure shows all the features of a Qualcomm Hypervisor and the BSP, which collectively provide a complete hypervisor solution:

![../../../../../_images/qualcomm-hypervsior-bsp-updated.png](data:image/png;base64,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)

**Figure : Qualcomm Hypervisor and BSP**

### Resource manager

The exception level 1 (EL1) resource manager performs the following functions:

- Creates and manages virtual machines
- Handles and assigns the virtual machine admission control policy
- Manages the I/O pass-through, which includes:

    - I/O space mapping and isolation
    - Interrupt routing configuration

For more information, see [Qualcomm Linux Kernel Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-3/virtualization.html).

## Security hardening

Security hardening is a process that minimizes the risk of system attacks by making it more challenging for attackers to exploit the system vulnerabilities.

Kernel security hardening aligns with upstream kernel guidelines. Key kernel flags like KASLR, hardened user copy, stack protector, and permissions (RWX) are enabled.

### User space hardening

The [security_flags.inc](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc) file, a part of the [Yocto Project](https://www.thegoodpenguin.co.uk/blog/yocto-security-hardening-security-flags/) is used to enable security compiler and linker flags for a build.

To extend this feature to the Qualcomm modules, add the following command to `qcom-security_flags.inc` (file path: [qcom-security_flags.inc](https://github.com/quic-yocto/meta-qcom-distro/blob/kirkstone/conf/distro/include/qcom-security_flags.inc)):

require conf/distro/include/security_flags.inc
    Copy to clipboard

Adding these flags may result in warnings or errors that can disrupt a build. However, Yocto provides a way to disable certain compiler flags for problematic packages. Modern compilers such as GCC and Clang offer a wide range of compiler flags that can make it more difficult for an
attacker to exploit certain types of vulnerabilities.

The following are the example flags with GCC:

- The `Wformat` flag adds compile-time checks to detect issues related to the format of string arguments in common library functions such as `printf`, `scanf`, and `strftime`.
- The `D_FORTIFY_SOURCE` flag adds compile and runtime checks to detect buffer overflows in memory and string functions.
- The `Fstack-protector` flag adds runtime checks to detect buffer overflows and stack smashing.
- The `Fpie` flag enables position-independent code, which allows for loading the binary at randomized locations, thus making certain types of attacks (like return-oriented programming) more difficult.
- The `Wl,-z,relro,-z,now` flag makes it harder to abuse a binary global offset table.

If there are warnings and errors, customizing these flags for some modules can break a build. The binaries in a file system can be verified if the compiler exploit mitigation features are applied using the Checksec tool.

For information about making images more secure, see [The Yocto Project Documentation](https://docs.yoctoproject.org/dev/dev-manual/securing-images.html).

## Qualcomm^®^ wireless edge services (WES)

Qualcomm WES is a suite of trusted services, rooted in hardware, which securely connects and manages devices.

It provides the following services:

- Feature licensing enables device features identified by a feature ID and an alias feature name. These features are enabled by installing the corresponding feature licenses or certificates.
- Device attestation provides cryptographically signed and encrypted data items that describe the security state of the device and its software. These data items are useful for risk engines and other similar applications.
- Secure provisioning enables the generation and use of cryptographic keys that are secured using unique device keys. These keys are used to:

    - Securely provision data to the device post-sale and over-the-air
(OTA).
    - Sign data on the device.

To install or upgrade QCS5430 SoftSKU feature packs, see [Install or upgrade SoftSKU feature packs](https://docs.qualcomm.com/doc/80-70022-11/topic/upgrade-qualcomm-wes-feature-pack.html#upgrade-qualcomm-wes-feature-pack).

To develop applications that offer hardware-based attestation, zero-touch device provisioning, and chipset feature management, see [Qualcomm Linux Wireless Edge Services Guide](https://docs.qualcomm.com/bundle/resource/topics/80-70022-11B/overview.html). This feature is available to licensed users with authorized access.

## Discrete trusted platform module

A discrete trusted platform module (dTPM) is a dedicated hardware module that provides robust security features such as secure key storage, cryptographic operations, measured boot, and platform attestation. Qualcomm Linux support dTPM integration, particularly for industrial and security-focused applications that require enhanced hardware-based protection.

The dTPM key features are:

- TPM 2.0 compliance: Full support for TPM 2.0 standard.
- Measured boot: Platform integrity verification from UEFI onwards.
- Secure storage: Hardware-backed protection for cryptographic keys and sensitive assets.
- Open-source stack: Integration with TPM2 software stack (TSS, tpm2-tools, tpm2-abrmd, tpm2-tss-engine, tpm2-pkcs11).
- Linux kernel support: Upstream drivers for TPM 2.0 (SPI interface).

The following use cases are supported:

- Secure boot and measured boot
- Key management for cryptographic operations
- Platform attestation for industrial IoT
- Integration with OpenSSL and PKCS#11 using TPM2 engines

### Qualcomm Linux chipsets supporting dTPM

The dTPM support is enabled and verified for Qualcomm Linux custom software distributions on QCS5430/QCS6490 and IQ-9075/IQ-9100. It includes the following integration and capabilities:

- Hardware interface: dTPM is connected using SPI (typically SPI11), with reset controlled by GPIO.
- Device tree support: Only device tree changes are required for hardware detection; no kernel driver modifications are needed.
- Software stack: Yocto-based Linux distributions include the full TPM2 software stack (for example, tpm2-tss and tpm2-tools).
- Virtualization support: Multi-VM (KVM) configurations are supported, with dTPM resource manager passthrough for guest VMs.
- Platform specificity: dTPM isn’t enabled by default on all Qualcomm SoCs; it’s intended for platforms requiring industrial-grade security and measured boot.
- Availability: The TPM2 software stack is included in QC Linux Yocto layers for supported platforms.

#### Software stack

- Yocto layers: TPM user-space stack (for example, tpm2-tss, tpm2-tools) is enabled through dedicated recipes.
- Kernel driver: Uses upstream TPM drivers; minimal changes are needed for hardware bring-up. See [Bootlin Source Drivers](https://elixir.bootlin.com/linux/v6.10.4/source/drivers/char/tpm).
- User space interaction: Applications interact with the TPM through the libtss stack. See [Linux TPM2 & TSS2 Software](https://github.com/tpm2-software).

#### Hardware integration

- SPI interface: The TPM is connected through SPI lines (for example, SPI11), with reset controlled by a dedicated GPIO.
- Device tree configuration: TPM support is enabled by adding a TPM node to the device tree, allowing the open-source TPM driver to probe the hardware.
- GPIO control: The PMIC node is updated to manage TPM reset functionality.

#### External dependencies

- TPM2 software stack: Includes components such as tpm2-tss, tpm2-tools, and cryptographic engines for user-space interaction. See [tpm2-tools git.X](https://layers.openembedded.org/layerindex/recipe/87697/) and [tpm2-software/tpm2-tools](https://github.com/tpm2-software/tpm2-tools).
- UEFI firmware support: Requires firmware implementing EFI\_TCG2\_PROTOCOL for measured boot and platform attestation.
- Linux kernel integration: Relies upon upstream TPM drivers located in `build-qcom-wayland/workspace/<linux_kernel_recipe>/drivers/char/tpm`.

#### Software enablement

To set up the Qualcomm Linux custom software distribution for QCS5430/QCS6490 and IQ-9075/IQ-9100, see the [Qualcomm Linux Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-251013063244/ReleaseNote.html).

#### Kernel

- TPM driver support: Uses upstream Linux kernel TPM drivers; no more changes are required for standard dTPM hardware bring-up.
- Device tree configuration: Device tree updates are enough to enable hardware detection.

#### Yocto/User space

Enable the TPM2 software stack through Yocto recipes, including:

- `tpm2-tss` – TPM2 Software Stack (TSS) library
- `tpm2-tools` – Command-line tools for TPM2
- `tpm2-abrmd` – TPM2 access broker and resource manager daemon
- `tpm2-tss-engine` – OpenSSL engine for TPM2
- `tpm2-pkcs11` – PKCS#11 interface for TPM2

#### Installation example

The following figure shows an example for installation.

> 
> 
> ![../../../../../_images/dtpm-installation-example.jpg](data:image/jpeg;base64,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)

#### Validation

- Use tpm2-tools for functional validation, including tests for random number generation (RNG), key management, and measured boot.
- Unit tests are available within the tpm2-tss and tpm2-tools packages to verify TPM2 functionality.

#### Verify the TPM2 functionality - Test example

**Prerequisites**

- Download the TPM2 tools package from the official upstream source before beginning the setup.

> 
> 
> - See [tpm2-tools git.X](https://layers.openembedded.org/layerindex/recipe/87697/).
>     - See [tpm2-software/tpm2-tools](https://github.com/tpm2-software/tpm2-tools).
- Enable the secure shell (SSH) in permissive mode to securely access your host device.

> 
> 
> - See [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/how_to.html#use-ssh).

1. Connect to the device console using SSH.
2. Enable Write access.

mount -o rw,remount /usr
        Copy to clipboard
3. Copy the TPM2 tools package from another terminal on the host computer.

scp /path/to/tpm2-tools_5.4-r0_armv8-2a.ipk root@<device-ip-address>:/data/
        Copy to clipboard
4. Install the TPM2 tools.

opkg install --force-reinstall --force-depends /data/tpm2-tools_5.4-r0_armv8-2a.ipk
        Copy to clipboard
5. Verify the TPM2 functionality.

> 
> 
> 1. Generate a random data.
> 
> 
> tpm2_getrandom --hex -T device:/dev/tpmrm0 16
>             Copy to clipboard
>     2. Create a primary key.
> 
> 
> tpm2_createprimary -C o -c primary.ctx
>             Copy to clipboard
>     3. Create the RSA key pair.
> 
> 
> tpm2_create -G rsa -u key.pub -r key.pri -C primary.ctx
>             Copy to clipboard
>     4. Load the key.
> 
> 
> tpm2_load -C primary.ctx -u key.pub -r key.pri -n key.name -c key.ctx
>             Copy to clipboard
>     5. Encrypt the file.
> 
> 
> echo "wangdg love eating fruit" > secre.data
>             tpm2_rsaencrypt -c key.ctx -o jiami_file.enc secre.data
>             cat jiami_file.enc
>             Copy to clipboard
> 
> 
>         See the encrypted data.
>     6. Decrypt the file
> 
> 
> tpm2_rsadecrypt -c key.ctx -o jiemi.dec jiami_file.enc
>             cat jiemi.dec
>             Copy to clipboard
> 
> 
>         See the original message.
>     7. Hash the file
> 
> 
> tpm2_hash -C e -g sha1 -o hash.bin -t ticket.bin secre.data --hex
>             cat hash.bin
>             Copy to clipboard

## Next steps

- To learn about TrustZone and security framework, see [Security architecture](https://docs.qualcomm.com/doc/80-70022-11/topic/architecture.html#architecture).
- To learn about security tools and how to integrate them into your workflows, see [Security tools](https://docs.qualcomm.com/doc/80-70022-11/topic/tools.html#tools).

Last Published: Apr 14, 2026

[Previous Topic
Security architecture](https://docs.qualcomm.com/bundle/publicresource/80-70022-11/topics/architecture.md) [Next Topic
Security tools](https://docs.qualcomm.com/bundle/publicresource/80-70022-11/topics/tools.md)