Secure Enclave — یک پردازنده کمکی سختافزاری اختصاصی در دستگاههای اپل است که محیط امن ایزولهای را برای پردازش عملیات رمزنگاری و ذخیرهسازی دادههای محرمانه فراهم میکند. Secure Enclave روی ریزپردازنده اختصاصی خود با ریزهسته L4 کار میکند و به حافظه اصلی یا جانبیهای دستگاه دسترسی مستقیم ندارد. بر اساس Apple Platform Security Guide، Secure Enclave از مولد اعداد تصادفی سختافزاری TRNG و موتور تخصصی AES برای انجام عملیات رمزنگاری در سطح تراشه استفاده میکند.
نکات اصلی
Secure Enclave (SEP — پردازنده Secure Enclave) یک پردازنده 32-بیتی اختصاصی RISC (ARM Cortex-A7/A8 در تراشههای اولیه، ریزهسته اختصاصی L4) است که در SoC اپل یکپارچه شده است. این پردازنده بهعنوان یک پردازنده کمکی امن برای تمام عملیات رمزنگاری و بیومتریکی عمل میکند که نیاز به انزوای سختافزاری دارند.
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 بهعنوان کلید ریشه برای رمزنگاری تمام کلیدهای دیگر استفاده میشود. حتی اپل نیز نمیتواند این شناسه را استخراج یا بازیابی کند — این شناسه فقط در داخل Secure Enclave در دسترس است.
سیستمعاملهای موبایل مدرن پیچیده هستند و میلیونها خط کد دارند که آنها را در برابر اکسپلویت آسیبپذیر میکند. حتی اگر مهاجم کنترل کامل iOS را (در سطح هسته) به دست آورد، Secure Enclave همچنان غیرقابل دسترس میماند — این پردازنده بهصورت فیزیکی از SoC اصلی جدا است و دستورات را مستقیماً دریافت نمیکند. فقط درخواستهای رمزنگاریشده از طریق کانال امن میتوانند با SEP تعامل کنند.
طبق دادههای Apple Platform Security (2025)، هیچ استخراج موفق داده از Secure Enclave در دستگاه قفلشده با محدودیتهای سختافزاری فعلی مستند نشده است.
Secure Enclave بهعنوان یک پردازنده مستقل عمل میکند: پس از بوت دستگاه، توسط بوتلودر اختصاصی خود (SEP ROM) مقداردهی میشود، یکپارچگی ریزهسته L4 را بررسی میکند و سپس به حالت انتظار درخواستها از پردازنده برنامه (AP) از طریق صندوق پستی امن (Mailbox) میرود.
تبادل داده بین پردازنده برنامهها (AP) و Secure Enclave از طریق یک صندوق پستی امن با رمزنگاری روی کلید نشست مشترک انجام میشود. AP درخواست رمزنگاریشده را ارسال میکند، SEP آن را رمزگشایی میکند، عملیات (امضا، رمزگشایی، تولید کلید) را اجرا میکند و نتیجه را بهصورت رمزنگاریشده برمیگرداند. SEP هرگز دستورات رمزنگارینشده را نمیپذیرد.
قبل از برقراری کلید نشست، AP و SEP پروتکل احراز هویت را اجرا میکنند که از کلید گروهی (Group Key) تعبیهشده در SEP ROM و تأییدشده با گواهی اپل استفاده میکند. این مکانیزم تضمین میکند که فقط دستگاه معتبر اپل میتواند با این 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 فقط یک ماژول نرمافزاری نیست، بلکه یک کامپیوتر مستقل کامل روی تراشه است. این پردازنده شامل پردازنده اختصاصی، حافظه دسترسی تصادفی، ROM، حافظه غیرفرار و شتابدهندههای رمزنگاری تخصصی است.
پردازنده Secure Enclave — یک ARM Cortex-A7 32-بیتی (A7-A10) یا ریزهسته اختصاصی L4 (A12+) است. حافظه دسترسی تصادفی بهصورت استاتیک (SRAM) اختصاص یافته و از خارج قابل دسترسی نیست. ROM (SEP ROM) شامل بوتلودر و کلید گروهی است. حافظه غیرفرار UID، گواهیهای ریشه و کلیدهای دائمی را ذخیره میکند.
حجم SRAM در Secure Enclave محدود است (16-64 کیلوبایت بسته به نسل). این یک محدودیت معماری است: در داخل SEP فقط عملیات رمزنگاری و مقایسه الگوهای بیومتریک انجام میشود. سایر دادهها از طریق کانال رمزنگاریشده به حافظه اصلی AP منتقل میشوند.
Secure Enclave شامل بلوکهای سختافزاری اختصاصی است: موتور AES (رمزنگاری/رمزگشایی سختافزاری)، شتابدهنده P256 (ECDSA، ECDH)، ماژول SHA-256/SHA-512، TRNG (مولد اعداد تصادفی واقعی بر پایه نوسانسازهای حلقای). این امر عملکرد بالا (سرعتهای گیگابیتی AES) را با حداقل مصرف انرژی تضمین میکند.
| مؤلفه | عملکرد | کارایی |
|---|---|---|
| AES Engine | رمزنگاری سختافزاری AES-256 | 3.5 گیگابایت/ثانیه (A12+) |
| P256 Accelerator | امضا/تأیید ECDSA | 15000 عملیات/ثانیه |
| TRNG | تولید اعداد تصادفی | 1 مگابیت/ثانیه |
| SHA-256 | هشکردن دادهها | 2 گیگابایت/ثانیه |
| UID (eFuse) | شناسه یکتای تراشه | 256 بیت |
هر دسته از تراشههای Secure Enclave یک کلید گروهی (Group Key) دریافت میکند که در SEP ROM تعبیه شده است. این کلید برای احراز هویت SEP در برابر AP و برقراری کانال رمزنگاریشده استفاده میشود. اپل گواهیهایی صادر میکند که کلیدهای گروهی را امضا میکنند و امکان بررسی اصالت 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 وضعیت موفقیتآمیز + یک کلید موقت برای باز کردن قفل Keychain به AP برمیگرداند. تلاشهای ناموفق ردیابی میشوند و پس از تعداد مشخصی (قابل تنظیم) 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 تلاش بیومتریک ناموفق، کد دستگاه را درخواست میکند. حالت Lost Mode از طریق 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، به آن دسترسی خواندن ندارد.
بازنشانی کامل هنگام بازیابی فریمور از طریق حالت Recovery (DFU) انجام میشود. Secure Enclave سلسلهمراتب کلیدها را بازسازی میکند. در این فرآیند، تمام دادههای Keychain و الگوهای بیومتریک بدون امکان بازیابی حذف میشوند — این یک فرآیند غیرقابل بازگشت است.
جمعبندی
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید