본문 바로가기
Work

[iOS] Secure Enclave

by Nirah 2023. 4. 8.

Secure Enclave

암호화 기능만을 수행하는 iOS(OS)에 완전히 독립된 하드웨어. 생체인식 기능이 탑재된 iPhone 5S부터 가능. 터치바 있는 맥북도 가능. (Secure Enclave는 최신 버전의 iPhone, iPad, iPod touch , Mac, Apple TV , Apple Watch 및 HomePod의 전용 보안 하위 시스템)

Touch ID, Face ID 인식에 필요한 수학적 계산도 Secure Enclave에서 일어난다. Touch ID데이터, Face ID데이터가 Secure Enclave에 저장되는 것은 아님! iOS가 Touch ID, Face ID 데이터로 연산을 한 뒤 이 데이터를 가지고 Secure Enclave에 물어본다. 이거 맞아?? Yes라고 대답하면 디바이스의 잠금이 해제된다.

 

Security Framework, Cryptokit 모두 Secure Enclave에 키를 저장할 수 있다.

Secure Enclave는 키를 Import, Export하지 않기 때문에 다른 곳에서 생성한 키를 Secure Enclave에 저장할 수 없고, 반대로 Secure Enclave에서 빼가는 것도 불가능하다. 즉, Key를 생성한 디바이스에서만 암호화가 가능하다.

 

iOS를 설치할 때, Secure Enclave가 리셋된다. 그래서 iOS를 재설치하면 Secure Enclave에 있는 키를 필요로 하는 작업을 할 수 없다.

현재 Secure Enclave는 4MB의 저장공간을 갖고 있고, P256 ECC 키만 저장할 수 있다.

CryptoKit and the Secure Enclave.

Cryptokit에서는 SecureEnclave라는 enum을 제공한다.

if SecureEnclave.isAvailable {
  // Secure Enclave is available.
}

SecureEnclave에서 생성한 키는 https://www.andyibanez.com/posts/common-cryptographic-operations-with-cryptokit/ 에서 사용하는 API를 동일하게 사용할 수 있다.

let enclaveKeys = try! SecureEnclave.P256.KeyAgreement.PrivateKey()
let dataRepresentation = enclaveKeys.dataRepresentation

DataRepresentation을 이용하여 키체인 또는 파일형태로 데이터를 저장할수 있다.

The Data Representation of A Private Key.

PrivateKey는 Secure Enclave를 떠날 수 없다면서?

우선 Secure Enclave에서 PrivateKey를 가져오는 방법을 생각해봐야 한다. 안그러면 사용할 때마다 일회용 Key Pair를 생성해야 할 테니깐. (놀랍게도, Cryptokit에서 Secure Enclave의 키를 삭제하는 방법을 찾지 못했다.)

Secure Enclave에 저장된 키도 다른 Cryptokit의 키처럼 Data Representation을 가지고 있다. 하지만 Secure Enclave 키는 이 데이터가 Raw key를 의미하지는 않는다. Secure Enclave는 자신만 암호화에 사용할 수 있는 Encrypted block을 제공한다.

The documentation states:

Keys that you store in the Secure Enclave expose a raw representation as well, but in this case the data isn’t the raw key. Instead, the Secure Enclave exports an encrypted block that only the same Secure Enclave can later use to restore the key.

이런 이유로 Private Key의 Data Representation을 이용한 Export가 불가능하다.

다른 디바이스에서 Private Key의 Data Representation을 사용하여 키를 Load할 수 있지만, 이를 실제로 암호화에 사용하려면 작동하지 않음을 확인할 수 있다. 새로운 디바이스의 Secure Enclave에서 이를 사용할 수 없기 때문이다.

CryptoKit, SecureEnclave, and Local Authentication

SecureEnclave에는 사용자 인증 옵션과 키 접근에 관련된 다른 옵션들을 제공한다.

그래서 non-secure enclave key에는 없는 API를 하나 갖고 있다.

init(compactRepresentable:accessControl:authenticationContext:)

사용예시

import LocalAuthentication // For LAContext
import Security // For SecAccessControl

// ...

let authContext = LAContext();
    
let accessControl = SecAccessControlCreateWithFlags(
   kCFAllocatorDefault,
   kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
   [.privateKeyUsage, .userPresence, .biometryCurrentSet],
   nil
)!;
    
let privateKey = try! SecureEnclave.P256.KeyAgreement.PrivateKey(
  accessControl: accessControl,
  authenticationContext: authContext)

CryptoKit and the Secure Enclave

Keys that you store in the Secure Enclave expose a raw representation as well, but in this case the data isn’t the raw key. Instead, the Secure Enclave exports an encrypted block that only the same Secure Enclave can later use to restore the key.

 

출처: https://www.andyibanez.com/posts/cryptokit-secure-enclave/

 

CryptoKit and the Secure Enclave

Learn about the limitations of CryptoKit, and how to go around them.

www.andyibanez.com

 

 

 

 

 

 

 

 

 

개요

Secure Enclave는 Apple 시스템 온 칩(SoC) 에 통합된 전용 보안 하위 시스템입니다 . Secure Enclave는 추가 보안 계층을 제공하기 위해 주 프로세서와 분리되어 있으며 애플리케이션 프로세서 커널이 손상된 경우에도 중요한 사용자 데이터를 안전하게 유지하도록 설계되었습니다. SoC와 동일한 설계 원칙을 따릅니다. 즉, 하드웨어 신뢰 루트를 설정하기 위한 부트 ROM, 효율적이고 안전한 암호화 작업을 위한 AES 엔진, 보호된 메모리입니다. Secure Enclave에는 스토리지가 포함되어 있지 않지만 애플리케이션 프로세서 및 운영 체제에서 사용하는 NAND 플래시 스토리지와는 별도로 연결된 스토리지에 정보를 안전하게 저장하는 메커니즘이 있습니다.

Secure Enclave는 대부분의 iPhone, iPad, Mac, Apple TV , Apple Watch 및 HomePod 버전의 하드웨어 기능입니다.

  • 아이폰 5s 이상
  • 아이패드 에어 이상
  • Apple T1 칩이 포함된 Touch Bar 가 장착된 MacBook Pro 컴퓨터 (2016 및 2017)
  • Apple T2 Security Chip이 포함된 Intel 기반 Mac 컴퓨터
  • Apple 실리콘이 장착된 Mac 컴퓨터
  • 애플 TV HD 이상
  • Apple Watch 시리즈 1 이상
  • HomePod 및 HomePod 미니

보안 엔클레이브 프로세서

Secure Enclave 프로세서는 Secure Enclave의 기본 컴퓨팅 성능을 제공합니다. 가장 강력한 격리를 제공하기 위해 Secure Enclave 프로세서는 Secure Enclave 전용입니다. 이렇게 하면 공격을 받는 대상 소프트웨어와 동일한 실행 코어를 공유하는 악성 소프트웨어에 의존하는 사이드 채널 공격을 방지할 수 있습니다.

Secure Enclave Processor는 Apple 맞춤형 버전의 L4 마이크로커널을 실행합니다. 낮은 클럭 속도에서 효율적으로 작동하도록 설계되어 클럭 및 전원 공격으로부터 보호합니다. A11 및 S4로 시작하는 Secure Enclave 프로세서에는 메모리 보호 엔진과 재생 방지 기능이 있는 암호화된 메모리, 보안 부팅, 전용 난수 생성기 및 자체 AES 엔진이 포함되어 있습니다.

메모리 보호 엔진

Secure Enclave는 장치 DRAM 메모리의 전용 영역에서 작동합니다. 다중 보호 계층은 Secure Enclave 보호 메모리를 애플리케이션 프로세서에서 격리합니다.

장치가 시작되면 Secure Enclave Boot ROM은 메모리 보호 엔진을 위한 임의 임시 메모리 보호 키를 생성합니다. Secure Enclave가 전용 메모리 영역에 쓸 때마다 메모리 보호 엔진은 Mac XEX(xor-encrypt-xor) 모드에서 AES를 사용하여 메모리 블록을 암호화하고 다음을 위한 CMAC(Cipher-based Message Authentication Code) 인증 태그를 계산합니다. 메모리. 메모리 보호 엔진은 암호화된 메모리와 함께 인증 태그를 저장합니다. Secure Enclave가 메모리를 읽을 때 메모리 보호 엔진은 인증 태그를 확인합니다. 인증 태그가 일치하면 메모리 보호 엔진이 메모리 블록을 해독합니다. 태그가 일치하지 않으면 메모리 보호 엔진이 Secure Enclave에 오류 신호를 보냅니다. 메모리 인증 오류 후,

Apple A11 및 S4 SoC부터 메모리 보호 엔진은 Secure Enclave 메모리에 대한 재생 보호를 추가합니다. 보안에 중요한 데이터의 재생을 방지하기 위해 메모리 보호 엔진은 인증 태그와 함께 메모리 블록에 대해 nonce 라고 하는 고유한 일회성 번호를 저장합니다 . nonce는 CMAC 인증 태그에 대한 추가 조정으로 사용됩니다. 모든 메모리 블록에 대한 nonce는 Secure Enclave 내의 전용 SRAM에 뿌리를 둔 무결성 트리를 사용하여 보호됩니다. 쓰기의 경우 메모리 보호 엔진은 nonce와 무결성 트리의 각 수준을 SRAM까지 업데이트합니다 . 읽기의 경우 메모리 보호 엔진이 다음을 확인합니다.SRAM까지 무결성 트리의 nonce 및 각 수준. Nonce 불일치는 인증 태그 불일치와 유사하게 처리됩니다.

Apple A14, A15, M1 제품군 및 이후 SoC에서 메모리 보호 엔진은 두 개의 임시 메모리 보호 키를 지원합니다. 첫 번째는 Secure Enclave 전용 데이터에 사용되고 두 번째는 Secure Neural Engine과 공유되는 데이터에 사용됩니다.

메모리 보호 엔진은 Secure Enclave에 대해 인라인으로 투명하게 작동합니다. Secure Enclave는 일반 암호화되지 않은 DRAM인 것처럼 메모리를 읽고 씁니다. 반면 Secure Enclave 외부의 관찰자는 암호화되고 인증된 메모리 버전만 봅니다. 그 결과 성능이나 소프트웨어 복잡성에 따른 트레이드오프 없이 강력한 메모리 보호가 가능합니다.

보안 엔클레이브 부트 ROM

Secure Enclave에는 전용 Secure Enclave 부트 ROM이 포함되어 있습니다. 애플리케이션 프로세서 부트 ROM과 마찬가지로 Secure Enclave 부트 ROM은 Secure Enclave에 대한 하드웨어 신뢰 루트를 설정하는 변경 불가능한 코드입니다.

시스템 시작 시 iBoot는 Secure Enclave에 전용 메모리 영역을 할당합니다. 메모리를 사용하기 전에 Secure Enclave Boot ROM은 메모리 보호 엔진을 초기화하여 Secure Enclave 보호 메모리의 암호화 보호를 제공합니다.

그런 다음 애플리케이션 프로세서는 sepOS 이미지를 Secure Enclave Boot ROM으로 보냅니다. SepOS 이미지를 Secure Enclave 보호 메모리에 복사한 후 Secure Enclave Boot ROM은 이미지의 암호화 해시 및 서명을 확인하여 sepOS가 장치에서 실행되도록 승인되었는지 확인합니다. sepOS 이미지가 장치에서 실행되도록 적절하게 서명된 경우 Secure Enclave Boot ROM은 제어권을 sepOS로 이전합니다. 서명이 유효하지 않은 경우 Secure Enclave Boot ROM은 다음 칩이 재설정될 때까지 Secure Enclave를 더 이상 사용하지 못하도록 설계되었습니다.

Apple A10 및 이후 SoC에서 Secure Enclave Boot ROM은 sepOS의 해시를 이 목적 전용 레지스터에 잠급니다. Public Key Accelerator는 운영 체제 바인딩(OS 바인딩) 키에 대해 이 해시를 사용합니다.

Secure Enclave 부트 모니터

Apple A13 이상 SoC에서 Secure Enclave에는 부팅된 sepOS의 해시에서 더 강력한 무결성을 보장하도록 설계된 부팅 모니터가 포함되어 있습니다.

시스템 시작 시 Secure Enclave Processor의 SCIP(System Coprocessor Integrity Protection)구성은 Secure Enclave Processor가 Secure Enclave Boot ROM 이외의 코드를 실행하지 못하도록 방지합니다. 부팅 모니터는 Secure Enclave가 SCIP 구성을 직접 수정하지 못하도록 방지합니다. 로드된 sepOS를 실행 가능하게 만들기 위해 Secure Enclave Boot ROM은 로드된 sepOS의 주소 및 크기와 함께 Boot Monitor에 요청을 보냅니다. 요청을 수신하면 Boot Monitor는 Secure Enclave Processor를 재설정하고, 로드된 sepOS를 해시하고, 로드된 sepOS의 실행을 허용하도록 SCIP 설정을 업데이트하고, 새로 로드된 코드 내에서 실행을 시작합니다. 시스템이 계속 부팅되면 새 코드를 실행할 때마다 이와 동일한 프로세스가 사용됩니다. 매번 부트 모니터는 부트 프로세스의 실행 중인 해시를 업데이트합니다. Boot Monitor에는 실행 중인 해시에 중요한 보안 매개변수도 포함되어 있습니다.

부팅이 완료되면 부팅 모니터는 실행 중인 해시를 마무리하고 공개 키 가속기로 전송하여 OS 바운드 키에 사용합니다. 이 프로세스는 Secure Enclave Boot ROM의 취약점이 있는 경우에도 운영 체제 키 바인딩을 우회할 수 없도록 설계되었습니다.

진정한 난수 생성기

TRNG(True Random Number Generator)는 안전한 무작위 데이터를 생성하는 데 사용됩니다. Secure Enclave는 임의의 암호화 키, 임의 키 시드 또는 기타 엔트로피를 생성할 때마다 TRNG를 사용합니다. TRNG는 CTR_DRBG(카운터 모드의 블록 암호 기반 알고리즘)로 후처리된 다중 링 오실레이터를 기반으로 합니다.

루트 암호화 키

Secure Enclave에는 고유 ID(UID) 루트 암호화 키가 포함되어 있습니다. UID는 각 개별 장치에 고유하며 장치의 다른 식별자와 관련이 없습니다.

임의로 생성된 UID는 제조 시 SoC에 융합됩니다. A9 SoC부터 UID는 제조 중에 Secure Enclave TRNG에 의해 생성되고 Secure Enclave에서 완전히 실행되는 소프트웨어 프로세스를 사용하여 퓨즈에 기록됩니다. 이 프로세스는 제조 과정에서 UID가 기기 외부에 표시되지 않도록 보호하므로 Apple 또는 그 공급업체가 액세스하거나 저장할 수 없습니다.

sepOS는 UID를 사용하여 장치별 비밀을 보호합니다. UID를 사용하면 데이터를 특정 장치에 암호화 방식으로 연결할 수 있습니다. 예를 들어 파일 시스템을 보호하는 키 계층 구조에는 UID가 포함되어 있으므로 내부 SSD 스토리지가 한 장치에서 다른 장치로 물리적으로 이동하는 경우 파일에 액세스할 수 없습니다. 기타 보호되는 장치별 비밀에는 Face ID 또는 Touch ID 데이터가 포함됩니다. Mac에서는 AES 엔진에 연결된 전체 내부 스토리지만 이 수준의 암호화를 받습니다. 예를 들어, USB를 통해 연결된 외부 저장 장치나 2019 Mac Pro 에 추가된 PCIe 기반 저장 장치 는 이 방식으로 암호화되지 않습니다.

Secure Enclave에는 지정된 SoC를 사용하는 모든 장치에 공통인 장치 그룹 ID(GID)도 있습니다(예: Apple A15 SoC를 사용하는 모든 장치는 동일한 GID를 공유함).

UID 및 GID는 JTAG(Joint Test Action Group) 또는 기타 디버깅 인터페이스를 통해 사용할 수 없습니다.

Secure Enclave AES 엔진

Secure Enclave AES 엔진은 AES 암호를 기반으로 대칭 암호화를 수행하는 데 사용되는 하드웨어 블록입니다. AES 엔진은 타이밍 및 정적 전력 분석(SPA)을 사용하여 정보 유출을 방지하도록 설계되었습니다. A9 SoC를 시작으로 AES 엔진에는 DPA(Dynamic Power Analysis) 대책도 포함됩니다.

AES 엔진은 하드웨어 및 소프트웨어 키를 지원합니다. 하드웨어 키는 Secure Enclave UID 또는 GID에서 파생됩니다. 이러한 키는 AES 엔진 내에 유지되며 sepOS 소프트웨어에도 표시되지 않습니다. 소프트웨어는 하드웨어 키로 암호화 및 암호 해독 작업을 요청할 수 있지만 키를 추출할 수는 없습니다.

Apple A10 및 최신 SoC에서 AES 엔진에는 UID 또는 GID에서 파생된 키를 다양화하는 잠금 가능한 시드 비트가 포함되어 있습니다. 이를 통해 장치의 작동 모드에 따라 데이터 액세스를 조정할 수 있습니다. 예를 들어 잠글 수 있는 시드 비트는 장치 펌웨어 업데이트(DFU) 모드에서 부팅할 때 암호로 보호된 데이터에 대한 액세스를 거부하는 데 사용됩니다. 자세한 내용은 암호 및 암호를 참조하십시오 .

AES 엔진

Secure Enclave가 있는 모든 Apple 장치에는 NAND(비휘발성) 플래시 스토리지와 기본 시스템 메모리 사이의 직접 메모리 액세스(DMA) 경로에 내장된 전용 AES256 암호화 엔진(이하 "AES 엔진")이 있어 파일 암호화 수준이 높습니다. 효율적인. A9 이상 A 시리즈 프로세서에서 플래시 스토리지 하위 시스템은 DMA 암호화 엔진을 통해 사용자 데이터가 포함된 메모리에 대한 액세스 권한만 부여된 격리된 버스에 있습니다.

부팅 시 sepOS는 TRNG를 사용하여 임시 래핑 키를 생성합니다. Secure Enclave는 Secure Enclave 외부의 소프트웨어가 키에 액세스하지 못하도록 설계된 전용 와이어를 사용하여 이 키를 AES 엔진으로 전송합니다. 그런 다음 sepOS는 임시 래핑 키를 사용하여 애플리케이션 프로세서 파일 시스템 드라이버에서 사용할 파일 키를 래핑할 수 있습니다. 파일 시스템 드라이버는 파일을 읽거나 쓸 때 래핑된 키를 AES 엔진으로 전송하고 AES 엔진은 키를 래핑 해제합니다. AES 엔진은 래핑되지 않은 키를 소프트웨어에 노출하지 않습니다.

참고: AES 엔진은 Secure Enclave 및 Secure Enclave AES 엔진 모두에 대한 별도의 구성 요소이지만 아래에 표시된 것처럼 해당 작업은 Secure Enclave와 밀접하게 연결되어 있습니다.

공개 키 가속기

PKA(Public Key Accelerator)는 비대칭 암호화 작업을 수행하는 데 사용되는 하드웨어 블록입니다. PKA는 RSA 및 ECC(Elliptic Curve Cryptography) 서명 및 암호화 알고리즘을 지원합니다. PKA는 SPA 및 DPA와 같은 타이밍 및 부채널 공격을 사용하여 정보 유출에 저항하도록 설계되었습니다.

PKA는 소프트웨어 및 하드웨어 키를 지원합니다. 하드웨어 키는 Secure Enclave UID 또는 GID에서 파생됩니다. 이러한 키는 PKA 내에 유지되며 sepOS 소프트웨어에도 표시되지 않습니다.

A13 SoC부터 PKA의 암호화 구현은 공식 검증 기술을 사용하여 수학적으로 올바른 것으로 입증되었습니다.

Apple A10 및 이후 SoC에서 PKA는 SKP(Sealed Key Protection) 라고도 하는 OS 바인딩 키를 지원합니다 . 이러한 키는 장치의 UID와 장치에서 사용 중인 sepOS의 해시 조합을 사용하여 생성됩니다. 해시는 Secure Enclave Boot ROM 또는 Apple A13 이상 SoC의 Secure Enclave Boot Monitor에서 제공됩니다. 이 키는 또한 특정 Apple 서비스에 요청할 때 sepOS 버전을 확인하는 데 사용되며 사용자 승인 없이 시스템에 중요한 변경 사항이 있는 경우 키 자료에 대한 액세스를 방지하여 암호로 보호된 데이터의 보안을 개선하는 데에도 사용됩니다.

안전한 비휘발성 스토리지

Secure Enclave에는 전용 보안 비휘발성 저장 장치가 장착되어 있습니다. 보안 비휘발성 스토리지는 전용 I2C 버스를 사용하여 Secure Enclave에 연결되므로 Secure Enclave에서만 액세스할 수 있습니다. 모든 사용자 데이터 암호화 키는 Secure Enclave 비휘발성 저장소에 저장된 엔트로피를 기반으로 합니다.

A12, S4 및 이후 SoC가 있는 장치에서 Secure Enclave는 엔트로피 저장을 위한 Secure Storage 구성 요소와 쌍을 이룹니다. 보안 저장소 구성 요소 자체는 변경할 수 없는 ROM 코드, 하드웨어 난수 생성기, 장치별 고유 암호화 키, 암호화 엔진 및 물리적 변조 감지 기능으로 설계되었습니다. Secure Enclave 및 Secure Storage Component는 엔트로피에 대한 독점 액세스를 제공하는 암호화되고 인증된 프로토콜을 사용하여 통신합니다.

2020년 가을 이후에 처음 출시된 장치에는 2세대 보안 스토리지 구성 요소가 장착되어 있습니다. 2세대 보안 스토리지 구성 요소는 카운터 잠금 상자를 추가합니다. 각 카운터 잠금 상자는 128비트 솔트, 128비트 암호 검증기, 8비트 카운터 및 8비트 최대 시도 값을 저장합니다. 카운터 잠금 상자에 대한 액세스는 암호화되고 인증된 프로토콜을 통해 이루어집니다.

카운터 잠금 상자는 암호로 보호된 사용자 데이터의 잠금을 해제하는 데 필요한 엔트로피를 보유합니다. 사용자 데이터에 액세스하려면 쌍을 이룬 Secure Enclave는 사용자의 암호와 Secure Enclave의 UID에서 올바른 암호 엔트로피 값을 가져와야 합니다. 페어링된 Secure Enclave 이외의 소스에서 전송된 잠금 해제 시도를 사용하여 사용자의 암호를 학습할 수 없습니다. 암호 시도 제한을 초과하면(예: iPhone에서 10회 시도) 암호로 보호된 데이터는 보안 저장소 구성 요소에 의해 완전히 지워집니다.

카운터 락박스를 생성하기 위해 Secure Enclave는 Secure Storage Component에 암호 엔트로피 값과 최대 시도 값을 보냅니다. 보안 저장소 구성 요소는 난수 생성기를 사용하여 솔트 값을 생성합니다. 그런 다음 제공된 암호 엔트로피, 보안 저장소 구성 요소의 고유 암호화 키 및 솔트 값에서 암호 검증자 값과 Lockbox 엔트로피 값을 파생합니다. 보안 저장소 구성 요소는 0의 카운트, 제공된 최대 시도 값, 파생된 패스코드 검증자 값 및 솔트 값으로 카운터 잠금 상자를 초기화합니다. 그런 다음 보안 저장소 구성 요소는 생성된 Lockbox 엔트로피 값을 Secure Enclave로 반환합니다.

나중에 카운터 Lockbox에서 Lockbox 엔트로피 값을 검색하기 위해 Secure Enclave는 Secure Storage Component에 암호 엔트로피를 보냅니다. 보안 저장소 구성 요소는 먼저 Lockbox에 대한 카운터를 증가시킵니다. 증가된 카운터가 최대 시도 값을 초과하면 보안 저장소 구성 요소가 카운터 잠금 상자를 완전히 지웁니다. 최대 시도 횟수에 도달하지 않은 경우 보안 저장소 구성 요소는 카운터 Lockbox를 생성하는 데 사용된 것과 동일한 알고리즘을 사용하여 암호 검증자 값과 Lockbox 엔트로피 값을 파생하려고 시도합니다. 파생된 패스코드 검증자 값이 저장된 패스코드 검증자 값과 일치하면 Secure Storage Component는 Lockbox 엔트로피 값을 Secure Enclave로 반환하고 카운터를 0으로 재설정합니다.

암호로 보호된 데이터에 액세스하는 데 사용되는 키는 카운터 잠금 상자에 저장된 엔트로피에 기반합니다. 자세한 내용은 데이터 보호 개요를 참조하십시오 .

보안 비휘발성 저장소는 Secure Enclave의 모든 재생 방지 서비스에 사용됩니다. Secure Enclave의 재생 방지 서비스는 다음을 포함하되 이에 국한되지 않는 재생 방지 경계를 표시하는 이벤트에서 데이터를 해지하는 데 사용됩니다.

  • 비밀번호 변경
  • Face ID 또는 Touch ID 활성화 또는 비활성화
  • Face ID 얼굴 또는 Touch ID 지문 추가 또는 제거
  • Face ID 또는 Touch ID 재설정
  • Apple Pay 카드 추가 또는 제거
  • 모든 콘텐츠 및 설정 지우기

Secure Storage Component가 없는 아키텍처에서는 EEPROM(Electrically Erasable Programmable Read-Only Memory)을 사용하여 Secure Enclave에 보안 스토리지 서비스를 제공합니다. 보안 스토리지 구성 요소와 마찬가지로 EEPROM은 보안 엔클레이브에서만 연결되고 액세스할 수 있지만 전용 하드웨어 보안 기능을 포함하지 않으며 엔트로피(물리적 연결 특성 제외) 또는 카운터 잠금 상자 기능에 대한 배타적 액세스를 보장하지 않습니다. .

보안 신경 엔진

Face ID 가 있는 장치에서 Secure Neural Engine은 2D 이미지와 깊이 맵을 사용자 얼굴의 수학적 표현으로 변환합니다.

A11 ~ A13 SoC에서 Secure Neural Engine은 Secure Enclave에 통합됩니다. Secure Neural Engine은 고성능을 위해 DMA(직접 메모리 액세스)를 사용합니다. sepOS 커널의 제어 하에 있는 입출력 메모리 관리 장치(IOMMU)는 승인된 메모리 영역에 대한 이러한 직접 액세스를 제한합니다.

A14 및 M1 제품군부터 Secure Neural Engine은 애플리케이션 프로세서의 Neural Engine에서 보안 모드로 구현됩니다. 전용 하드웨어 보안 컨트롤러는 애플리케이션 프로세서와 Secure Enclave 작업 사이를 전환하여 전환할 때마다 Neural Engine 상태를 재설정하여 Face ID 데이터를 안전하게 유지합니다. 전용 엔진은 메모리 암호화, 인증 및 액세스 제어를 적용합니다. 동시에 별도의 암호화 키와 메모리 범위를 사용하여 Secure Neural Engine을 승인된 메모리 영역으로 제한합니다.

전원 및 클록 모니터

모든 전자 장치는 제한된 전압 및 주파수 포락선 내에서 작동하도록 설계되었습니다. 이 엔벨로프 외부에서 작동하면 전자 장치가 오작동할 수 있으며 보안 제어가 우회될 수 있습니다. 전압과 주파수가 안전한 범위에 있도록 보장하기 위해 Secure Enclave는 모니터링 회로로 설계되었습니다. 이러한 모니터링 회로는 Secure Enclave의 나머지 부분보다 훨씬 더 큰 작동 범위를 갖도록 설계되었습니다. 모니터가 잘못된 작동 지점을 감지하면 Secure Enclave의 시계가 자동으로 중지되고 다음 SoC가 재설정될 때까지 다시 시작되지 않습니다.

Secure Enclave 기능 요약

참고: 2020년 가을에 처음 출시된 A12, A13, S4 및 S5 제품에는 2세대 보안 스토리지 구성 요소가 있는 반면, 이러한 SoC를 기반으로 하는 이전 제품에는 1세대 보안 스토리지 구성 요소가 있습니다.

SoC메모리 보호 엔진보안 스토리지AES 엔진PKA
A8 암호화 및 인증 EEPROM 아니요
A9 암호화 및 인증 EEPROM DPA 보호
A10 암호화 및 인증 EEPROM DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
A11 암호화, 인증 및 재생 방지 EEPROM DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
A12(2020년 가을 이전에 출시된 Apple 장치) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 1세대 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
A12(2020년 가을 이후 출시되는 Apple 기기) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
A13(2020년 가을 이전에 출시된 Apple 장치) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 1세대 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키 및 부트 모니터
A13(2020년 가을 이후 출시되는 Apple 기기) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키 및 부트 모니터
A14, A15 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키 및 부트 모니터
S3 암호화 및 인증 EEPROM DPA 보호 및 잠금 가능 시드 비트
S4 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 1세대 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
S5(2020년 가을 이전에 출시된 Apple 장치) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 1세대 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
S5(2020년 가을 이후 출시되는 Apple 기기) 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
S6, S7 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
T2 암호화 및 인증 EEPROM DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키
M1 패밀리 암호화, 인증 및 재생 방지 보안 스토리지 구성 요소 gen 2 DPA 보호 및 잠금 가능 시드 비트 OS 바운드 키 및 부트 모니터

 

 

https://support.apple.com/en-in/guide/security/sec59b0b31ff/web