Secure Enclave คือโคโปรเซสเซอร์ฮาร์ดแวร์เฉพาะในอุปกรณ์ Apple ที่สร้างสภาพแวดล้อมที่ปลอดภัยแบบแยกส่วนสำหรับการประมวลผลการดำเนินการเข้ารหัสและการจัดเก็บข้อมูลที่เป็นความลับ Secure Enclave ทำงานบนไมโครโปรเซสเซอร์ของตัวเองกับไมโครเคอร์เนล L4 และไม่สามารถเข้าถึงหน่วยความจำหลักหรืออุปกรณ์ต่อพ่วงของอุปกรณ์ได้โดยตรง ตาม Apple Platform Security Guide Secure Enclave ใช้เครื่องกำเนิดตัวเลขสุ่มฮาร์ดแวร์ TRNG และเอ็นจิน AES เฉพาะเพื่อให้การดำเนินการเข้ารหัสในระดับชิป
ประเด็นสำคัญ
Secure Enclave (SEP — Secure Enclave Processor) คือโปรเซสเซอร์ RISC 32 บิตเฉพาะ (ARM Cortex-A7/A8 บนชิปรุ่นเก่า, ไมโครเคอร์เนล L4 ที่เป็นกรรมสิทธิ์) ที่รวมอยู่ใน SoC ของ Apple มันทำหน้าที่เป็นโคโปรเซสเซอร์ที่ปลอดภัยสำหรับการดำเนินการเข้ารหัสและไบโอเมตริกทั้งหมดที่ต้องการการแยกฮาร์ดแวร์
Secure Enclave ปรากฏครั้งแรกใน ชิป A7 (iPhone 5S, 2013) พร้อมกับ Touch ID ใน A7–A8 Secure Enclave ถูกนำมาใช้เป็นส่วนหนึ่งของโปรเซสเซอร์ เริ่มตั้งแต่ A9 (iPhone 6S, 2015) Secure Enclave ใช้พื้นที่แยกต่างหากของชิปพร้อมพลังงานและสัญญาณนาฬิกาอิสระ ตั้งแต่ A12 (2018) Secure Enclave มี เครื่องกำเนิดตัวเลขสุ่มจริง (TRNG) ของตัวเองและตัวเร่งฮาร์ดแวร์ Ed25519
แต่ละ Secure Enclave มีตัวระบุที่ไม่ซ้ำกัน (UID) ที่ถูกฝังในขั้นตอนการผลิตชิป UID ถูกใช้เป็นคีย์รากสำหรับเข้ารหัสคีย์อื่นๆ ทั้งหมด แม้แต่ Apple ก็ไม่สามารถแยกหรือกู้คืนตัวระบุนี้ได้ — มันสามารถเข้าถึงได้เฉพาะภายใน Secure Enclave เท่านั้น
ระบบปฏิบัติการมือถือสมัยใหม่มีความซับซ้อนและมีโค้ดหลายล้านบรรทัด ทำให้พวกมันเสี่ยงต่อการถูกโจมตี แม้ว่าผู้โจมตีจะควบคุม iOS ได้อย่างสมบูรณ์ (ระดับเคอร์เนล) Secure Enclave ก็ยังคงไม่สามารถเข้าถึงได้ — มันถูกแยกทางกายภาพจาก SoC หลักและไม่รับคำสั่งโดยตรง มีเพียงคำขอที่เข้ารหัสผ่านช่องทางที่ปลอดภัยเท่านั้นที่สามารถโต้ตอบกับ SEP ได้
ตาม Apple Platform Security (2025) ไม่มีการแยกข้อมูลจาก Secure Enclave บนอุปกรณ์ที่ล็อกไว้สำเร็จภายใต้ข้อจำกัดฮาร์ดแวร์ปัจจุบัน
Secure Enclave ทำหน้าที่เป็นโปรเซสเซอร์ อิสระ: หลังจากบูตอุปกรณ์ มันเริ่มต้นด้วยบูตโหลดเดอร์ของตัวเอง (SEP ROM) ตรวจสอบความสมบูรณ์ของไมโครเคอร์เนล L4 จากนั้นเข้าสู่สถานะรอคำขอจาก Application Processor (AP) ผ่านกล่องจดหมายที่ปลอดภัย
การสื่อสารระหว่าง Application Processor (AP) และ Secure Enclave เกิดขึ้นผ่าน กล่อง จดหมายที่ปลอดภัยด้วยการเข้ารหัสโดยใช้คีย์เซสชันร่วมกัน AP ส่งคำขอที่เข้ารหัส SEP ถอดรหัส ดำเนินการ (ลายเซ็น, การถอดรหัส, การสร้างคีย์) และส่งคืนผลลัพธ์ในรูปแบบที่เข้ารหัส SEP ไม่เคยยอมรับคำสั่งที่ไม่เข้ารหัส
ก่อน การสร้าง คีย์เซสชัน AP และ SEP ดำเนินโปรโตคอลการตรวจสอบสิทธิ์ที่ใช้คีย์กลุ่ม (Group Key) ที่ฝังอยู่ใน SEP ROM และตรวจสอบโดยใบรับรอง Apple กลไกนี้รับประกันว่าเฉพาะอุปกรณ์ Apple ของแท้เท่านั้นที่สามารถโต้ตอบกับ Secure Enclave นี้ได้
คีย์ การเข้ารหัสทั้งหมดถูกสร้างขึ้นภายใน Secure Enclave โดยใช้ TRNG ฮาร์ดแวร์ แต่ละคีย์เชื่อมโยงกับ UID ของอุปกรณ์และไม่สามารถส่งออกได้ เมื่อเข้าถึงคีย์ AP จะระบุแฮนเดิลของมัน (เช่นใน Keychain) และ SEP ดำเนินการโดยไม่เปิดเผยคีย์นั้น
// การสร้างคีย์ ECDSA ภายใน 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)
}
Secure Enclave ไม่ใช่แค่โมดูลซอฟต์แวร์ — มันเป็น คอมพิวเตอร์ อิสระที่สมบูรณ์บนชิป มันประกอบด้วยโปรเซสเซอร์, RAM, ROM, หน่วยความจำแบบไม่ลบเลือน และตัวเร่งการเข้ารหัสเฉพาะทางของตัวเอง
โปรเซสเซอร์ ของ Secure Enclave คือ ARM Cortex-A7 32 บิต (A7-A10) หรือไมโครเคอร์เนล L4 ที่เป็นกรรมสิทธิ์ (A12+) RAM ถูกจัดสรรแบบคงที่ (SRAM) และไม่สามารถเข้าถึงได้จากภายนอก ROM (SEP ROM) ประกอบด้วยบูตโหลดเดอร์และคีย์กลุ่ม หน่วยความจำแบบไม่ลบเลือนจัดเก็บ UID, ใบรับรองราก และคีย์ถาวร
ขนาด SRAM ของ Secure Enclave มีจำกัด (16–64 KB ขึ้นอยู่กับรุ่น) นี่คือข้อจำกัดทางสถาปัตยกรรม: ภายใน SEP มีเพียงการดำเนินการเข้ารหัสและการจับคู่เทมเพลตไบโอเมตริกเท่านั้นที่ดำเนินการ ข้อมูลอื่นๆ ทั้งหมดจะถูกถ่ายโอนผ่านช่องทางที่เข้ารหัสไปยังหน่วยความจำหลักของ AP
Secure Enclave ประกอบด้วย บล็อก ฮาร์ดแวร์เฉพาะ: เอ็นจิน AES (การเข้ารหัส/ถอดรหัสด้วยฮาร์ดแวร์), ตัวเร่ง P256 (ECDSA, ECDH), โมดูล SHA-256/SHA-512, TRNG (เครื่องกำเนิดตัวเลขสุ่มจริงที่ใช้ออสซิลเลเตอร์แบบวงแหวน) สิ่งนี้ให้ประสิทธิภาพสูง (ความเร็ว AES ระดับกิกะบิต) โดยใช้พลังงานน้อยที่สุด
| ส่วนประกอบ | ฟังก์ชัน | ประสิทธิภาพ |
|---|---|---|
| เอ็นจิน AES | การเข้ารหัส AES-256 ด้วยฮาร์ดแวร์ | 3.5 GB/s (A12+) |
| ตัวเร่ง P256 | การลงนาม/ตรวจสอบ ECDSA | 15000 op/s |
| TRNG | การสร้างตัวเลขสุ่ม | 1 Mbit/s |
| SHA-256 | การแฮชข้อมูล | 2 GB/s |
| UID (eFuse) | ตัวระบุชิปที่ไม่ซ้ำกัน | 256 บิต |
แต่ละ ชุด ของชิป Secure Enclave จะได้รับคีย์กลุ่ม (Group Key) ที่ฝังอยู่ใน SEP ROM คีย์นี้ใช้สำหรับการตรวจสอบสิทธิ์ของ SEP ต่อ AP และสำหรับการสร้างช่องทางที่เข้ารหัส Apple ออกใบรับรองที่ลงนามคีย์กลุ่ม ทำให้สามารถตรวจสอบความถูกต้องของ SEP ในระดับเฟิร์มแวร์ได้
นักพัฒนา iOS ไม่ได้เข้าถึง Secure Enclave โดยตรง การโต้ตอบเกิดขึ้นผ่าน API ระดับสูง: LocalAuthentication (Touch ID, Face ID), Keychain Services (การจัดเก็บคีย์ใน SEP), CryptoKit (การดำเนินการเข้ารหัสด้วยคีย์ SEP)
เฟรมเวิร์ก CryptoKit (iOS 13+) ให้การเข้าถึง Secure Enclave โดยตรงสำหรับการสร้างคีย์ ECDSA และการลงนามข้อมูล คีย์ที่สร้างขึ้นด้วยแฟล็ก secureEnclaveKey จะอยู่ใน SEP ทางกายภาพ เมื่อลงนาม ข้อมูลจะถูกส่งผ่านช่องทางที่ปลอดภัย การดำเนินการจะดำเนินการใน SEP และลายเซ็นจะถูกส่งกลับไปยังแอปพลิเคชัน
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)
}
Keychain Services สามารถใช้ Secure Enclave สำหรับการจัดเก็บคีย์การเข้ารหัส แอตทริบิวต์ kSecAttrTokenID = kSecAttrTokenIDSecureEnclave บอกระบบว่าคีย์ควรถูกสร้างและจัดเก็บภายใน SEP คีย์ใน SEP เป็นประเภท EC (secp256r1/P-256) เสมอ เนื่องจาก Secure Enclave ไม่รองรับ RSA
Touch ID และ Face ID เป็นฟีเจอร์สำคัญของผู้ใช้ที่นำมาใช้ผ่าน Secure Enclave SEP ไม่เพียงแต่จัดเก็บเทมเพลตไบโอเมตริกเท่านั้น แต่ยังดำเนินการจับคู่กับข้อมูลที่ให้มา ซึ่งช่วยขจัดความเป็นไปได้ในการสกัดกั้นภาพลายนิ้วมือหรือใบหน้า
เมื่อ ลงทะเบียน ลายนิ้วมือหรือใบหน้า เซนเซอร์จะส่งภาพไปยัง Secure Enclave ซึ่งจะถูกแปลงเป็นเทมเพลตทางคณิตศาสตร์ (ไม่ใช่ภาพ!) และเก็บไว้ในหน่วยความจำที่เข้ารหัสของ SEP ภาพต้นฉบับจะถูกทำลาย เทมเพลตไม่สามารถถูกแยกออกมาได้ภายนอก — SEP สามารถเปรียบเทียบเทมเพลตใหม่กับเทมเพลตที่จัดเก็บไว้เท่านั้น
Secure Enclave สามารถจัดเก็บได้สูงสุด 5 ลายนิ้วมือหรือใบหน้า เทมเพลตทั้งหมดได้รับการป้องกันโดย UID ของอุปกรณ์ เมื่ออุปกรณ์รีสตาร์ท SEP จะบล็อกการเข้าถึงเทมเพลตจนกว่าจะป้อนรหัสผ่าน (รหัสล็อก ไม่ใช่ไบโอเมตริก) เป็นครั้งแรก
เมื่อ ผู้ใช้ วางนิ้วบน Touch ID เซนเซอร์จะจับภาพและ (ผ่านไดรเวอร์ iOS) ส่งไปยัง Secure Enclave ผ่านช่องทางที่ปลอดภัย SEP เปรียบเทียบเทมเพลตกับเทมเพลตที่จัดเก็บไว้ หากตรงกัน SEP จะส่งคืนสถานะสำเร็จให้กับ AP พร้อมกับคีย์ชั่วคราวสำหรับปลดล็อก Keychain ความพยายามที่ล้มเหลวจะถูกติดตาม และหลังจากจำนวนครั้งที่กำหนดได้ SEP จะบล็อกคำขอไบโอเมตริกทั้งหมดจนกว่าจะป้อนรหัสผ่าน
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "ตรวจสอบสิทธิ์"
) { success, error in
if success {
// SEP ยืนยันการจับคู่ไบโอเมตริกแล้ว
}
}
}
เมื่อสูญเสีย อุปกรณ์ ข้อมูลไบโอเมตริกจะได้รับการป้องกันในหลายระดับ: เทมเพลตถูกเข้ารหัสด้วย UID (อ่านไม่ได้ภายนอก SEP), SEP ต้องใช้รหัสผ่านอุปกรณ์ทุกครั้งที่รีสตาร์ท หลังจากไม่มีการใช้งาน 48 ชั่วโมง หรือหลังจากความพยายามไบโอเมตริกล้มเหลว 5 ครั้ง โหมดสูญหายผ่าน Find My จะบล็อก SEP เพิ่มเติม
คำถามที่พบบ่อย
บนอุปกรณ์ที่ ล็อก ไว้ — ไม่ได้ Secure Enclave ถูกออกแบบให้ข้อมูลไม่สามารถเข้าถึงได้หากไม่มีการตรวจสอบสิทธิ์ผู้ใช้ การโจมตีที่รู้จัก (checkm8 บน A5-A11) ไม่สามารถแยกข้อมูลจาก SEP ได้ — มันบุกรุก AP แต่ไม่ใช่ Secure Enclave
ECDSA (secp256r1/P-256) — สำหรับการลงนามและการตรวจสอบ ECDH — สำหรับการตกลงคีย์ AES-256 — สำหรับการเข้ารหัสแบบสมมาตร SHA-256 — สำหรับการแฮช RSA ไม่ได้รับการสนับสนุน การดำเนินการทั้งหมดดำเนินการด้วยฮาร์ดแวร์
บน Apple Silicon (M1, M2, M3) Secure Enclave ถูกนำมาใช้คล้ายกับชิป A แต่มีทรัพยากรเพิ่มขึ้น รองรับคีย์พร้อมกันมากขึ้น การดำเนินการ P256 เร็วขึ้น และมีชุดกรณีการใช้งานที่ขยายออกไป (FileVault, การเติมข้อความอัตโนมัติ, Safari)
UID (รหัสเฉพาะ) คือตัวระบุสุ่ม 256 บิตที่ถูกฝังใน Secure Enclave ระหว่างการผลิตชิป UID ถูกใช้เป็นคีย์รากสำหรับเข้ารหัสคีย์อื่นๆ ทั้งหมดบนอุปกรณ์ ไม่มีส่วนประกอบใด รวมถึง SEP เอง ที่สามารถอ่านมันได้
การรีเซ็ต อย่างสมบูรณ์เกิดขึ้นเมื่อกู้คืนเฟิร์มแวร์ผ่านโหมดกู้คืน (DFU) Secure Enclave สร้างลำดับชั้นคีย์ใหม่ ข้อมูล Keychain ทั้งหมดและเทมเพลตไบโอเมตริกจะถูกลบอย่างถาวรโดยไม่สามารถกู้คืนได้ — นี่เป็นกระบวนการที่ไม่สามารถย้อนกลับได้
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม