مزامنة سلسلة المفاتيح بشكل آمن
عندما يشغل مستخدم سلسلة مفاتيح iCloud لأول مرة على حساب مُفعَّل به المصادقة بخطوتين، ينشئ الجهاز هوية مزامنة لنفسه. تتكون هوية المزامنة من مفاتيح بيضاوية غير متناظرة (باستخدام P-384)، ويتم تخزينها في سلسلة مفاتيح الجهاز. يحتفظ كل جهاز بقائمة هويات مزامنة لأجهزة المستخدم الأخرى ويوقع هذه القائمة باستخدام مفتاح من مفاتيح الهوية الخاصة به. وهذه القوائم مخزنة في CloudKit، ما يسمح لأجهزة المستخدم الاتفاق على كيفية مزامنة بيانات سلسلة المفاتيح فيما بينها بشكل آمن.
للتوافق مع أجهزة iCloud الأقدم، يتم إنشاء دائرة ثقة مزامنة مشابهة ويتم تكوين هوية مزامنة أخرى. يُوضع المفتاح العام لهوية المزامنة في الدائرة، ويتم التوقيع على الدائرة مرتين: أولاً بواسطة المفتاح الخاص لهوية المزامنة، ثم مرة أخرى باستخدام مفتاح بيضاوي غير متناظر (باستخدام P-256) مشتق من كلمة سر حساب iCloud الخاص بالمستخدم. وتُخزَّن كذلك في الدائرة المعامِلات (القيمة العشوائية المضافة والتكرارات) المستخدمة لإنشاء المفتاح الذي يستند إلى كلمة سر iCloud الخاصة بالمستخدم.
تخزين iCloud لدائرة المزامنة
بالنسبة إلى حسابات المصادقة بخطوتين، تُخزَّن قائمة الأجهزة الموثوقة لكل جهاز في CloudKit. ولا يمكن قراءة القوائم دون معرفة كلمة سر iCloud الخاصة بالمستخدم، كما لا يمكن تعديلها دون امتلاك المفاتيح الخاصة للجهاز المالك.
وعلى نحو مماثل، يتم تخزين دائرة المزامنة الموقَّعة في منطقة تخزين مفاتيح-قيم iCloud الخاصة بالمستخدم، ولا يمكن قراءتها من دون معرفة كلمة سر iCloud الخاصة بالمستخدم، ولا يمكن تعديلها بشكل صالح من دون امتلاك المفتاح الخاص لهوية المزامنة الخاصة بعضوها.
كيفية إضافة أجهزة المستخدم الأخرى إلى دائرة المزامنة
تنضم الأجهزة الجديدة، عند تسجيل الدخول إلى iCloud، إلى دائرة مزامنة سلسلة مفاتيح iCloud بإحدى طريقتين: إمّا عن طريق الاقتران بجهاز حالي به سلسلة مفاتيح iCloud وتكون مدعومة من قِبله وإمّا باستخدام استرداد سلسلة مفاتيح iCloud.
أثناء تدفقات الاقتران، ينشئ الجهاز مقدم الطلب هويات مزامنة جديدة لكل من دائرة المزامنة وقوائم المزامنة (لحسابات المصادقة بخطوتين) ويقدمها إلى الجهاز الراعي. يضيف الجهاز الراعي المفتاح العام للعضو الجديد إلى دائرة المزامنة ويوقع عليه مرة أخرى باستخدام كل من هوية المزامنة الخاصة به والمفتاح المشتق من كلمة سر iCloud الخاصة بالمستخدم. وتُوضع دائرة المزامنة الجديدة في iCloud، حيث يتم توقيعها بالمثل بواسطة العضو الجديد في الدائرة. في حسابات المصادقة بخطوتين، يزود الجهاز الراعي كذلك الجهاز المنضم بقسيمة موقعة باستخدام مفاتيح الهوية الخاصة به، ما يوضح أنه يجب الوثوق في الجهاز مقدم الطلب. ومن ثم يحدث قائمته الفردية لهويات المزامنة الموثوقة لتشمل مقدم الطلب.
يوجد الآن عضوان في دائرة التوقيع، ولدى كل عضو المفتاح العام الخاص بنظيره. يبدآن الآن في تبادل عناصر سلسلة المفاتيح الفردية عبر CloudKit أو منطقة تخزين مفاتيح-قيم iCloud، أيهما أكثر ملاءمةً للموقف. إذا كان لدى عضويِ الدائرة تحديثات على العنصر نفسه، يتم اختيار أحدهما أو الآخر، ما ينتج عنه توافق في النهاية. يتم تشفير كل عنصر تمت مزامنته بحيث لا يمكن فك تشفيره إلا عن طريق جهاز داخل دائرة ثقة المستخدم؛ لا يمكن فك تشفيره بواسطة أي أجهزة أخرى أو بواسطة Apple.
عند انضمام أجهزة جديدة إلى دائرة المزامنة، يتم تكرار "عملية الانضمام" هذه. على سبيل المثال، عند انضمام جهاز ثالث، يمكن إقرانه بأي من الجهازين الموجودين. عند إضافة نظراء جدد، يتزامن كل نظير مع النظير الجديد. وقد تم التصميم بتلك الطريقة لضمان حصول جميع الأعضاء على عناصر سلسلة المفاتيح ذاتها.
تتم مزامنة عناصر معينة فقط
بعض عناصر سلسلة المفاتيح تعد خاصة بالجهاز، مثل مفاتيح iMessage، ولهذا يلزم بقاؤها على الجهاز. لتجنب نقل البيانات غير المتوقع، يجب تمييز كل عنصر ستتم مزامنته بوضوح بالسمة kSecAttrSynchronizable
.
عيّنت Apple هذه السمة لبيانات مستخدم سفاري (بما في ذلك أسماء المستخدمين وكلمات السر وأرقام بطاقات الائتمان)، وكذلك كلمات سر Wi-Fi ومفاتيح تشفير HomeKit وعناصر سلسلة المفاتيح الأخرى التي تدعم تشفير iCloud الكامل.
بالإضافة إلى ذلك، لا تتم مزامنة عناصر سلسلة المفاتيح المضافة بواسطة تطبيقات الجهات الخارجية، بشكل افتراضي. ويجب على المطورين تعيين السمة kSecAttrSynchronizable
عند إضافة عناصر إلى سلسلة المفاتيح.