حماية بيانات سلسلة المفاتيح
تحتاج العديد من التطبيقات إلى التعامل مع كلمات السر وغيرها من أجزاء البيانات القصيرة والحساسة في الوقت ذاته، مثل المفاتيح ورموز تسجيل الدخول. توفر سلسلة المفاتيح طريقة آمنة لتخزين هذه العناصر. تستخدم أنظمة تشغيل Apple المختلفة آليات مختلفة لفرض الضمانات المرتبطة بفئات حماية سلسلة المفاتيح المختلفة. في macOS (بما في ذلك أجهزة كمبيوتر Mac المزودة بسيليكون Apple)، لا يتم استخدام حماية البيانات بشكل مباشر لفرض هذه الضمانات.
نظرة عامة
يتم تشفير عناصر سلسلة المفاتيح باستخدام مفتاحي AES-256-GCM مختلفين: مفتاح جدول (بيانات تعريف) ومفتاح لكل صف (مفتاح سري). يتم تشفير بيانات تعريف سلسلة المفاتيح (جميع السمات الأخرى بخلاف kSecValue) باستخدام مفتاح بيانات التعريف لإجراء عمليات بحث سريعة، ويتم تشفير القيمة السرية (kSecValueData) باستخدام المفتاح السري. وتتم حماية مفتاح بيانات التعريف بواسطة Secure Enclave، ولكن يتم تخزينه مؤقتًا في معالج التطبيقات للسماح بالاستعلامات السريعة لسلسلة المفاتيح. يتطلب المفتاح السري دائمًا رحلة ذهاب وإياب من خلال Secure Enclave.
يتم تطبيق سلسلة المفاتيح كقاعدة بيانات SQLite مخزنة على نظام الملفات. لا توجد سوى قاعدة بيانات واحدة، ويحدد برنامج securityd
الخفي عناصر سلسلة المفاتيح التي يمكن لكل عملية أو تطبيق الوصول إليها. تؤدي واجهات API الخاصة بالوصول إلى سلسلة المفاتيح إلى إجراء اتصالات بالبرنامج الخفي الذي يستعلم عن استحقاقات "Keychain-access-groups" و "application-identifier" و "application-group" الخاصة بالتطبيق. بدلاً من تقييد الوصول إلى عملية واحدة، تسمح مجموعات الوصول بمشاركة عناصر سلسلة المفاتيح بين التطبيقات.
لا يمكن مشاركة عناصر سلسلة المفاتيح إلا بين التطبيقات التي من نفس المطور. لمشاركة عناصر سلسلة المفاتيح، تستخدم تطبيقات الجهات الخارجية مجموعات الوصول مع بادئة مخصصة لها من خلال Apple Developer Program عبر مجموعات التطبيقات. يتم تطبيق متطلبات البادئة وتفرد مجموعة التطبيقات من خلال توقيع التعليمات البرمجية وملفات تعريف التموين وبرنامج Apple Developer Program.
تتم حماية بيانات سلسلة المفاتيح باستخدام بنية فئة مماثلة لتلك المستخدمة في حماية بيانات الملفات. تحتوي هذه الفئات على سلوكيات مكافئة لفئات حماية البيانات، ولكنها تستخدم مفاتيح ووظائف مميزة.
التوفر | حماية بيانات الملفات | حماية بيانات سلسلة المفاتيح | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
عند فتح القفل | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
أثناء القفل | NSFileProtectionCompleteUnlessOpen | غير متوفر | |||||||||
بعد فتح القفل الأول | NSFileProtectionCompleteUntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
دائمًا | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
تمكين رمز الدخول | غير متوفر | kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly |
يمكن للتطبيقات التي تستخدم خدمات تحديث الخلفية استخدام kSecAttrAccessibleAfterFirstUnlock لعناصر سلسلة المفاتيح التي يجب الوصول إليها أثناء تحديثات الخلفية.
تتصرف الفئة kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly مثل kSecAttrAccessibleWhenUnlocked؛ لكنها لا تكون متوفرة إلا عند تكوين الجهاز برمز دخول. ولا تكون هذه الفئة موجودة إلا في حافظة مفاتيح النظام؛ وهي:
لا تتم مزامنتها مع سلسلة مفاتيح iCloud
لا يتم نسخها احتياطيًا
لا يتم تضمينها في حافظات المفاتيح المودعة في الضمان
إذا تمت إزالة رمز الدخول أو إعادة تعيينه، تصبح العناصر عديمة الفائدة من خلال تجاهل مفاتيح الفئات.
تشتمل فئات سلسلة المفاتيح الأخرى على نظير "هذا الجهاز فقط"، والذي يكون دائمًا محميًا بمعرف UID عند نسخه من الجهاز أثناء النسخ الاحتياطي، مما يجعله عديم الفائدة إذا تمت استعادته إلى جهاز مختلف. حققت Apple التوازن بين الأمن وقابلية الاستخدام بعناية عن طريق اختيار فئات سلسلة المفاتيح التي تعتمد على نوع المعلومات التي يتم تأمينها وعند الحاجة إليها من قبل iOS و iPadOS. على سبيل المثال، يجب أن تكون شهادة VPN متاحة دائمًا حتى يحتفظ الجهاز باتصال مستمر، ولكن يتم تصنيفها على أنها "غير مرتحلة"، ومن ثم لا يمكن نقلها إلى جهاز آخر.
وسائل حماية فئة بيانات سلسلة المفاتيح
يتم فرض وسائل حماية الفئات الواردة أدناه لعناصر سلسلة المفاتيح.
العنصر | يمكن الوصول إليه |
---|---|
كلمات سر Wi-Fi | بعد فتح القفل الأول |
حسابات البريد | بعد فتح القفل الأول |
حسابات Microsoft Exchange ActiveSync | بعد فتح القفل الأول |
كلمات سر VPN | بعد فتح القفل الأول |
LDAP, CalDAV, CardDAV | بعد فتح القفل الأول |
رموز حسابات شبكات التواصل الاجتماعي | بعد فتح القفل الأول |
مفاتيح تشفير إعلانات التسليم | بعد فتح القفل الأول |
رمز iCloud | بعد فتح القفل الأول |
مفاتيح iMessage | بعد فتح القفل الأول |
كلمة سر المشاركة المنزلية | عند فتح القفل |
كلمات سر سفاري | عند فتح القفل |
إشارات سفاري المرجعية | عند فتح القفل |
فايندر/نسخ iTunes الاحتياطي | عند فتح القفل، غير مرتحل |
المفاتيح الخاصة المثبتة بواسطة ملف تعريف التكوين | عند فتح القفل، غير مرتحل |
شهادات VPN | دائمًا، غير مرتحل |
مفاتيح Bluetooth® | دائمًا، غير مرتحل |
رمز خدمة الإشعارات اللحظية من Apple (APNs) | دائمًا، غير مرتحل |
شهادات iCloud والمفتاح الخاص | دائمًا، غير مرتحل |
SIM PIN | دائمًا، غير مرتحل |
الشهادات المثبتة بواسطة ملف تعريف التكوين | دائمًا |
رمز تحديد الموقع | دائمًا |
البريد الصوتي | دائمًا |
التحكم في الوصول إلى سلسلة المفاتيح
يمكن أن تستخدم سلاسل المفاتيح قوائم التحكم في الوصول (ACLs) لتعيين سياسات لمتطلبات إمكانية الوصول والمصادقة. يمكن للعناصر وضع الشروط التي تتطلب وجود المستخدم عن طريق تحديد عدم إمكانية الوصول إليها ما لم تتم المصادقة باستخدام بصمة الوجه أو بصمة الإصبع أو عن طريق إدخال رمز المرور أو كلمة السر الخاصة بالجهاز. يمكن كذلك تقييد الوصول إلى العناصر عن طريق تحديد أن تسجيل بصمة الوجه أو بصمة الإصبع لم يتغير منذ إضافة العنصر. يساعد هذا القيد في منع المهاجم من إضافة بصمة إصبعه الخاصة للوصول إلى عنصر من عناصر سلسلة المفاتيح. يتم تقييم قوائم ACL داخل Secure Enclave ولا يتم إصدارها إلى kernel إلا في حالة استيفاء قيودها المحددة.
بنية سلسلة المفاتيح في macOS
يقدم macOS أيضًا وصولاً إلى سلسلة المفاتيح لتخزين أسماء المستخدمين وكلمات السر بكل سهولة وأمان، بما في ذلك الهويات الرقمية ومفاتيح التشفير والملاحظات الآمنة. ويمكن الوصول إليه عن طريق فتح تطبيق الوصول إلى سلسلة المفاتيح في /Applications/Utilities/. ويُلغي استخدام سلسلة المفاتيح الحاجة إلى إدخال — أو حتى تذكر — بيانات الاعتماد لكل مورد. يتم إنشاء سلسلة مفاتيح افتراضية أولية لكل مستخدم Mac، على الرغم من أنه يمكن للمستخدمين إنشاء سلاسل مفاتيح أخرى لأغراض محددة.
بالإضافة إلى الاعتماد على سلاسل مفاتيح المستخدم، يعتمد macOS على عدد من سلاسل المفاتيح على مستوى النظام تحافظ على أصول المصادقة التي لا تخص المستخدم، مثل بيانات اعتماد الشبكة وهويات البنية الأساسية للمفتاح العام (PKI). إحدى سلاسل المفاتيح هذه، وهي جذور النظام، غير قابلة للتغيير وتخزّن شهادات الجهة الموثقة (CA) الجذرية لـ PKI على الإنترنت لتسهيل المهام الشائعة مثل الخدمات المصرفية عبر الإنترنت والتجارة الإلكترونية. يمكن للمستخدم كذلك نشر شهادات الجهة الموثقة التي يتم توفيرها داخليًا لأجهزة كمبيوتر Mac المُدارة للمساعدة في التحقق من صحة المواقع والخدمات الداخلية.