Secure Enclave — ماهیت، معماری و نحوه عملکرد پردازنده کمکی امن

نویسنده: IT Sectr منتشر شده: 2026-03-14 زمان مطالعه: 10 دقیقه

Secure Enclave — یک پردازنده کمکی سختافزاری اختصاصی در دستگاه‌های اپل است که محیط امن ایزوله‌ای را برای پردازش عملیات رمزنگاری و ذخیره‌سازی داده‌های محرمانه فراهم می‌کند. Secure Enclave روی ریزپردازنده اختصاصی خود با ریزهسته L4 کار می‌کند و به حافظه اصلی یا جانبی‌های دستگاه دسترسی مستقیم ندارد. بر اساس Apple Platform Security Guide، Secure Enclave از مولد اعداد تصادفی سخت‌افزاری TRNG و موتور تخصصی AES برای انجام عملیات رمزنگاری در سطح تراشه استفاده می‌کند.

نکات اصلی

  • Secure Enclave — یک پردازنده کمکی ایزوله اپل با پردازنده، حافظه و موتور AES اختصاصی
  • Touch ID و Face ID از Secure Enclave برای ذخیره‌سازی ایمن و تطبیق الگوهای بیومتریک استفاده می‌کنند
  • کلیدهای رمزنگاری در داخل Secure Enclave تولید می‌شوند و هرگز به شکل رمزنگاری‌نشده از آن خارج نمی‌شوند
  • انزوای سخت‌افزاری تضمین می‌کند که حتی هسته هک‌شده iOS نیز به داده‌های Secure Enclave دسترسی ندارد
  • SOC از تراشه A7 (iPhone 5S، 2013) شامل Secure Enclave اختصاصی است و از A9 به بعد به‌صورت جداگانه

Secure Enclave چیست؟

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 چگونه کار می‌کند؟

Secure Enclave به‌عنوان یک پردازنده مستقل عمل می‌کند: پس از بوت دستگاه، توسط بوت‌لودر اختصاصی خود (SEP ROM) مقداردهی می‌شود، یکپارچگی ریزهسته L4 را بررسی می‌کند و سپس به حالت انتظار درخواست‌ها از پردازنده برنامه (AP) از طریق صندوق پستی امن (Mailbox) می‌رود.

کانال ارتباطی AP-SEP

تبادل داده بین پردازنده برنامه‌ها (AP) و Secure Enclave از طریق یک صندوق پستی امن با رمزنگاری روی کلید نشست مشترک انجام می‌شود. AP درخواست رمزنگاری‌شده را ارسال می‌کند، SEP آن را رمزگشایی می‌کند، عملیات (امضا، رمزگشایی، تولید کلید) را اجرا می‌کند و نتیجه را به‌صورت رمزنگاری‌شده برمی‌گرداند. SEP هرگز دستورات رمزنگاری‌نشده را نمی‌پذیرد.

قبل از برقراری کلید نشست، AP و SEP پروتکل احراز هویت را اجرا می‌کنند که از کلید گروهی (Group Key) تعبیه‌شده در SEP ROM و تأییدشده با گواهی اپل استفاده می‌کند. این مکانیزم تضمین می‌کند که فقط دستگاه معتبر اپل می‌تواند با این Secure Enclave تعامل کند.

تولید و محافظت از کلیدها

همه کلیدهای رمزنگاری در داخل Secure Enclave با استفاده از TRNG سخت‌افزاری تولید می‌شوند. هر کلید به UID دستگاه مرتبط است و نمی‌توان آن را صادر کرد. هنگام دسترسی به کلید، AP از طریق هندل آن (مانند Keychain) به آن اشاره می‌کند و SEP عملیات را بدون افشای خود کلید اجرا می‌کند.

objective-c
// تولید کلید 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-2563.5 گیگابایت/ثانیه (A12+)
P256 Acceleratorامضا/تأیید ECDSA15000 عملیات/ثانیه
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 و Secure Enclave

فریمورک CryptoKit (iOS 13+) دسترسی مستقیم به Secure Enclave را برای تولید کلیدهای ECDSA و امضای داده‌ها فراهم می‌کند. کلیدهایی که با پرچم secureEnclaveKey ساخته می‌شوند، به‌صورت فیزیکی در داخل SEP قرار دارند. هنگام امضا، داده‌ها از طریق کانال امن منتقل می‌شوند، عملیات در SEP انجام می‌شود و امضا به برنامه بازگردانده می‌شود.

swift
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 و Secure Enclave

Keychain Services می‌تواند از Secure Enclave برای ذخیره‌سازی کلیدهای رمزنگاری استفاده کند. ویژگی kSecAttrTokenID = kSecAttrTokenIDSecureEnclave به سیستم نشان می‌دهد که کلید باید در داخل SEP ایجاد و ذخیره شود. کلیدهای موجود در SEP همیشه از نوع EC (secp256r1/P-256) هستند، زیرا Secure Enclave از RSA پشتیبانی نمی‌کند.

Secure Enclave و بیومتریک

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 تمام درخواست‌های بیومتریک را تا ورود کد مسدود می‌کند.

swift
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 وجود دارد؟

در دستگاه قفل‌شده — خیر. Secure Enclave به‌گونه‌ای طراحی شده که داده‌ها بدون احراز هویت کاربر در دسترس نیستند. حملات شناخته‌شده (checkm8 روی A5-A11) نمی‌توانند داده‌ها را از SEP استخراج کنند — آن‌ها AP را به خطر می‌اندازند، اما نه Secure Enclave را.

Secure Enclave از چه الگوریتم‌هایی پشتیبانی می‌کند؟

ECDSA (secp256r1/P-256) — برای امضا و تأیید. ECDH — برای توافق کلید. AES-256 — برای رمزنگاری متقارن. SHA-256 — برای هش‌کردن. RSA پشتیبانی نمی‌شود. تمام عملیات به‌صورت سخت‌افزاری انجام می‌شوند.

آیا Secure Enclave در مک‌های دارای Apple Silicon متفاوت است؟

در Apple Silicon (M1، M2، M3)، Secure Enclave مشابه تراشه‌های A پیاده‌سازی شده اما با منابع افزایش‌یافته. کلیدهای همزمان بیشتری را پشتیبانی می‌کند، عملیات P256 سریع‌تری دارد و مجموعه گسترده‌تری از سناریوهای استفاده دارد (FileVault، تکمیل خودکار، Safari).

UID در Secure Enclave چیست؟

UID (شناسه یکتا) یک شناسه تصادفی 256-بیتی است که هنگام تولید تراشه در Secure Enclave تعبیه می‌شود. UID به‌عنوان کلید ریشه برای رمزنگاری تمام کلیدهای دیگر روی دستگاه استفاده می‌شود. هیچ مؤلفه‌ای، از جمله خود SEP، به آن دسترسی خواندن ندارد.

چگونه Secure Enclave را بازنشانی کنیم؟

بازنشانی کامل هنگام بازیابی فریمور از طریق حالت Recovery (DFU) انجام می‌شود. Secure Enclave سلسله‌مراتب کلیدها را بازسازی می‌کند. در این فرآیند، تمام داده‌های Keychain و الگوهای بیومتریک بدون امکان بازیابی حذف می‌شوند — این یک فرآیند غیرقابل بازگشت است.

جمع‌بندی

  • Secure Enclave — یک پردازنده کمکی سخت‌افزاری ایزوله اپل با پردازنده، حافظه و شتاب‌دهنده‌های رمزنگاری اختصاصی
  • الگوهای بیومتریک Touch ID و Face ID منحصراً در داخل SEP ذخیره و پردازش می‌شوند، AP به آن‌ها دسترسی ندارد
  • کلیدهای رمزنگاری توسط Secure Enclave با استفاده از TRNG سخت‌افزاری تولید می‌شوند و نمی‌توان آن‌ها را صادر کرد
  • CryptoKit و Keychain به برنامه‌ها اجازه می‌دهند از Secure Enclave از طریق kSecAttrTokenIDSecureEnclave استفاده کنند
  • SEP شامل موتور AES (3.5 گیگابایت/ثانیه)، شتاب‌دهنده P256 (15000 امضا/ثانیه) و بلوک اختصاصی SHA-256 است
  • انزوای سخت‌افزاری حفاظت از داده‌ها را حتی در صورت به خطر افتادن کامل هسته iOS تضمین می‌کند
  • از Secure Enclave از طریق CryptoKit برای ذخیره‌سازی کلیدهای خصوصی امضا در برنامه‌های iOS استفاده کنید

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید