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