Secure Enclave é um coprocessador de hardware dedicado em dispositivos Apple que implementa um ambiente seguro isolado para processar operações criptográficas e armazenar dados confidenciais. O Secure Enclave funciona em seu próprio microprocessador com o microkernel L4 e não tem acesso direto à memória principal ou aos periféricos do dispositivo. De acordo com o Apple Platform Security Guide, o Secure Enclave usa um gerador de números aleatórios de hardware TRNG e um mecanismo AES especializado para fornecer operações criptográficas no nível do chip.
Principais conclusões
Secure Enclave (SEP — Secure Enclave Processor) é um processador RISC de 32 bits dedicado (ARM Cortex-A7/A8 em chips antigos, microkernel L4 proprietário) integrado ao SoC da Apple. Ele funciona como um coprocessador seguro para todas as operações criptográficas e biométricas que exigem isolamento de hardware.
O Secure Enclave apareceu pela primeira vez no chip A7 (iPhone 5S, 2013) junto com o Touch ID. No A7–A8, o Secure Enclave é implementado como parte do processador. A partir do A9 (iPhone 6S, 2015), o Secure Enclave usa uma área separada do chip com alimentação e clock independentes. Desde o A12 (2018), o Secure Enclave tem seu próprio Gerador de Números Aleatórios Verdadeiros (TRNG) e um acelerador de hardware Ed25519.
Cada Secure Enclave tem um identificador único (UID) gravado no estágio de fabricação do chip. O UID é usado como chave raiz para criptografar todas as outras chaves. Nem mesmo a Apple pode extrair ou recuperar este identificador — ele só é acessível dentro do Secure Enclave.
Os sistemas operacionais móveis modernos são complexos e contêm milhões de linhas de código, tornando-os vulneráveis a explorações. Mesmo que um invasor obtenha controle total do iOS (nível de kernel), o Secure Enclave permanece inacessível — ele está fisicamente separado do SoC principal e não aceita comandos diretos. Apenas solicitações criptografadas através de um canal seguro podem interagir com o SEP.
De acordo com a Apple Platform Security (2025), nenhuma extração bem-sucedida de dados do Secure Enclave em um dispositivo bloqueado foi documentada com as restrições de hardware atuais.
O Secure Enclave funciona como um processador autônomo: após a inicialização do dispositivo, ele é iniciado com seu próprio carregador de boot (SEP ROM), verifica a integridade do microkernel L4 e entra em um estado de espera por solicitações do Processador de Aplicação (AP) através de uma caixa postal segura.
A comunicação entre o Processador de Aplicação (AP) e o Secure Enclave ocorre através de uma caixa postal segura com criptografia usando uma chave de sessão compartilhada. O AP envia uma solicitação criptografada, o SEP a descriptografa, realiza a operação (assinatura, descriptografia, geração de chave) e retorna o resultado criptografado. O SEP nunca aceita comandos não criptografados.
Antes de estabelecer uma chave de sessão, o AP e o SEP realizam um protocolo de autenticação usando uma Chave de Grupo (Group Key) incorporada na ROM do SEP e verificada por um certificado Apple. Este mecanismo garante que apenas um dispositivo Apple genuíno possa interagir com este Secure Enclave.
Todas as chaves criptográficas são geradas dentro do Secure Enclave usando TRNG de hardware. Cada chave está vinculada ao UID do dispositivo e não pode ser exportada. Ao acessar uma chave, o AP especifica seu identificador (como no Keychain) e o SEP realiza a operação sem revelar a chave em si.
// Geração de chave ECDSA dentro do Secure Enclave
@interface AppDelegate ()
- (SecKeyRef)generateSEKey;
@end
- (SecKeyRef)generateSEKey {
let attributes: [String: Any] = [
kSecAttrKeyType as String: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrKeySizeInBits as String: 256,
kSecAttrTokenID as String: kSecAttrTokenIDSecureEnclave,
kSecPrivateKeyAttrs as String: [
kSecAttrIsPermanent as String: true,
kSecAttrLabel as String: "com.app.key"
]
]
var error: Unmanaged<CFError?>?
return SecKeyCreateRandomKey(attributes as CFDictionary, &error)
}
O Secure Enclave não é apenas um módulo de software — é um computador autônomo completo em um chip. Ele contém seu próprio processador, RAM, ROM, memória não volátil e aceleradores criptográficos especializados.
O processador do Secure Enclave é um ARM Cortex-A7 de 32 bits (A7-A10) ou um microkernel L4 proprietário (A12+). A RAM é alocada estaticamente (SRAM) e inacessível externamente. A ROM (SEP ROM) contém o carregador de boot e a chave de grupo. A memória não volátil armazena o UID, certificados raiz e chaves permanentes.
O tamanho da SRAM do Secure Enclave é limitado (16–64 KB dependendo da geração). Esta é uma limitação arquitetural: apenas operações criptográficas e correspondência de modelos biométricos são realizadas dentro do SEP. Todos os outros dados são transferidos através de um canal criptografado para a memória principal do AP.
O Secure Enclave contém blocos de hardware dedicados: mecanismo AES (criptografia/descriptografia por hardware), acelerador P256 (ECDSA, ECDH), módulo SHA-256/SHA-512, TRNG (Gerador de Números Aleatórios Verdadeiros baseado em osciladores em anel). Isso proporciona alto desempenho (velocidades AES de gigabit) com consumo mínimo de energia.
| Componente | Função | Desempenho |
|---|---|---|
| Mecanismo AES | Criptografia AES-256 por hardware | 3.5 GB/s (A12+) |
| Acelerador P256 | Assinatura/verificação ECDSA | 15000 op/s |
| TRNG | Geração de números aleatórios | 1 Mbit/s |
| SHA-256 | Hash de dados | 2 GB/s |
| UID (eFuse) | Identificador único do chip | 256 bits |
Cada lote de chips Secure Enclave recebe uma Chave de Grupo (Group Key) incorporada na ROM do SEP. Esta chave é usada para autenticar o SEP perante o AP e para estabelecer um canal criptografado. A Apple emite certificados que assinam as chaves de grupo, permitindo verificar a autenticidade do SEP no nível do firmware.
Os desenvolvedores iOS não acessam o Secure Enclave diretamente. A interação ocorre através de APIs de alto nível: LocalAuthentication (Touch ID, Face ID), Keychain Services (armazenamento de chaves no SEP), CryptoKit (operações criptográficas com chaves SEP).
O framework CryptoKit (iOS 13+) fornece acesso direto ao Secure Enclave para gerar chaves ECDSA e assinar dados. As chaves criadas com o sinalizador secureEnclaveKey estão fisicamente localizadas dentro do SEP. Ao assinar, os dados são transmitidos através de um canal seguro, a operação é realizada no SEP e a assinatura é retornada ao aplicativo.
import CryptoKit
import LocalAuthentication
func signWithSecureEnclave() throws -> Data {
let context = LAContext()
let accessControl = try SecAccessControl(
protection: kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
flags: .userPresence
)
let key = try SecureEnclave.P256.SigningKey(
accessControl: accessControl
)
let dataToSign = "authenticate".data(using: .utf8)!
return try key.signature(for: dataToSign)
}
O Keychain Services pode usar o Secure Enclave para armazenar chaves criptográficas. O atributo kSecAttrTokenID = kSecAttrTokenIDSecureEnclave informa ao sistema que a chave deve ser criada e armazenada dentro do SEP. As chaves no SEP são sempre do tipo EC (secp256r1/P-256), pois o Secure Enclave não suporta RSA.
Touch ID e Face ID são recursos-chave do usuário implementados através do Secure Enclave. O SEP não apenas armazena modelos biométricos, mas também realiza a correspondência com os dados fornecidos, eliminando a possibilidade de interceptar a imagem da impressão digital ou do rosto.
Ao registrar uma impressão digital ou rosto, o sensor transmite a imagem ao Secure Enclave, onde é convertida em um modelo matemático (não uma imagem!) e armazenada na memória criptografada do SEP. A imagem original é destruída. O modelo não pode ser extraído externamente — o SEP só pode comparar um novo modelo com os armazenados.
O Secure Enclave pode armazenar até 5 impressões digitais ou rostos. Todos os modelos são protegidos pelo UID do dispositivo. Quando o dispositivo é reiniciado, o SEP bloqueia o acesso aos modelos até que o código de acesso (código de bloqueio, não biometria) seja inserido pela primeira vez.
Quando um usuário coloca o dedo no Touch ID, o sensor captura a imagem e (através do driver iOS) a transmite ao Secure Enclave por um canal seguro. O SEP compara o modelo com os armazenados. Em caso de correspondência, o SEP retorna um status de sucesso ao AP junto com uma chave efêmera para desbloquear o Keychain. As tentativas falhas são rastreadas e, após um número configurável de falhas, o SEP bloqueia todas as solicitações biométricas até que o código seja inserido.
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Autenticar"
) { success, error in
if success {
// SEP confirmou correspondência biométrica
}
}
}
Em caso de perda do dispositivo, os dados biométricos são protegidos em vários níveis: os modelos são criptografados com UID (ilegíveis fora do SEP), o SEP exige o código do dispositivo em cada reinicialização, após 48 horas de inatividade ou após 5 tentativas biométricas falhas. O Modo Perdido através do Find My bloqueia adicionalmente o SEP.
Perguntas frequentes
Em um dispositivo bloqueado — não. O Secure Enclave é projetado para que os dados fiquem inacessíveis sem autenticação do usuário. Ataques conhecidos (checkm8 em A5-A11) não podem extrair dados do SEP — eles comprometem o AP, mas não o Secure Enclave.
ECDSA (secp256r1/P-256) — para assinatura e verificação. ECDH — para acordo de chaves. AES-256 — para criptografia simétrica. SHA-256 — para hash. RSA não é suportado. Todas as operações são realizadas por hardware.
No Apple Silicon (M1, M2, M3), o Secure Enclave é implementado de forma semelhante aos chips A, mas com recursos ampliados. Suporta mais chaves simultâneas, operações P256 mais rápidas e tem um conjunto expandido de casos de uso (FileVault, preenchimento automático, Safari).
O UID (Identificador Único) é um identificador aleatório de 256 bits gravado no Secure Enclave durante a fabricação do chip. O UID é usado como chave raiz para criptografar todas as outras chaves no dispositivo. Nenhum componente, incluindo o próprio SEP, pode lê-lo.
Uma redefinição completa ocorre ao restaurar o firmware através do Modo de Recuperação (DFU). O Secure Enclave recria a hierarquia de chaves. Todos os dados do Keychain e modelos biométricos são excluídos permanentemente sem possibilidade de recuperação — este é um processo irreversível.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também