Penyelarasan rantai kunci aman
Saat pengguna mengaktifkan Rantai Kunci iCloud untuk pertama kalinya, perangkat membangun lingkaran kepercayaan dan membuat identitas penyelarasan untuk dirinya sendiri. Identitas penyelarasan berisi kunci pribadi dan kunci publik, dan disimpan di rantai kunci perangkat. Kunci publik identitas penyelarasan disimpan di lingkaran, dan lingkaran ditandatangani dua kali: pertama oleh kunci pribadi identitas penyelarasan, dan lalu oleh kunci eliptis asimetris (menggunakan P-256) turunan kata sandi akun iCloud pengguna. Juga yang disimpan bersama dengan lingkaran adalah parameter (salt dan iterasi acak) yang digunakan untuk membuat kunci berdasarkan kata sandi iCloud pengguna.
Untuk akun autentikasi dua faktor, lingkaran penyelarasan tambahan serupa dibuat dan disimpan di CloudKit. Identitas perangkat di sistem ini berisi dua pasang kunci eliptis asimetris (menggunakan P-384), juga disimpan di rantai kunci. Setiap perangkat masing-masing mempertahankan daftar identitas yang dipercayai, dan menandatangani daftar ini sebagai salah satu kunci identitasnya.
Penyelarasan iCloud dari lingkaran penyelarasan
Lingkaran penyelarasan yang ditandatangani disimpan di area penyimpanan nilai kunci iCloud pengguna. Lingkaran tidak dapat dibaca tanpa mengetahui kata sandi iCloud pengguna dan tidak dapat dimodifikasi dengan sah tanpa memiliki kunci pribadi identitas penyelarasan dari anggotanya.
Untuk akun autentikasi dua faktor, setiap daftar penyelarasan perangkat disimpan di CloudKit. Daftar tidak dapat dibaca tanpa mengetahui kata sandi iCloud pengguna, dan tidak dapat dimodifikasi tanpa memiliki kunci pribadi perangkat yang memilikinya.
Cara perangkat lain milik pengguna ditambahkan ke lingkaran penyelarasan
Perangkat baru, saat masuk ke iCloud, bergabung dengan lingkaran penyelarasan Rantai Kunci iCloud dengan satu dari dua cara: dengan memasangkan dan disponsori oleh perangkat Rantai Kunci iCloud yang ada, atau dengan menggunakan pemulihan Rantai Kunci iCloud.
Selama alur pemasangan, perangkat pendaftar membuat identitas penyelarasan baru untuk lingkaran penyelarasan dan daftar penyelarasan (untuk akun autentikasi dua faktor) dan menunjukkannya ke sponsor. Sponsor menambahkan kunci publik anggota baru ke lingkaran penyelarasan dan menandatanganinya kembali dengan identitas penyelarasan dan kunci turunan dari kata sandi iCloud pengguna. Lingkaran penyelarasan baru ditempatkan di iCloud, lalu ditandatangani secara serupa oleh anggota baru dari lingkaran. Di akun autentikasi dua faktor, perangkat sponsor juga menyediakan perangkat yang bergabung dengan voucer yang ditandatangani oleh kunci identitasnya, yang menunjukkan bahwa perangkat pendaftar harus dipercayai. Lalu perangkat memperbarui daftar identitas penyelarasan tepercayanya sendiri untuk menyertakan pendaftar.
Ada dua anggota lingkaran penanda tangan pada tahap ini, dan setiap anggota memiliki kunci publik rekannya. Kedua anggota akan mulai bertukar item rantai kunci individual melalui penyimpanan nilai kunci iCloud atau mereka menyimpannya di CloudKit, yang mana pun yang paling sesuai. Jika kedua anggota lingkaran memiliki pembaruan ke item yang sama, salah satunya akan dipilih, yang nantinya menghasilkan konsistensi. Setiap item yang diselaraskan akan dienkripsi sehingga hanya dapat didekripsi oleh perangkat di dalam lingkaran kepercayaan pengguna; item tidak dapat didekripsi oleh perangkat lain atau oleh Apple.
Saat perangkat baru bergabung ke lingkaran penyelarasan, “proses bergabung” ini diulangi. Misalnya, saat perangkat ketiga bergabung, perangkat dapat dipasangkan dengan salah satu perangkat yang ada. Saat rekan baru ditambahkan, tiap rekan akan diselaraskan dengan rekan baru. Ini dirancang untuk memastikan bahwa semua anggota memiliki item rantai kunci yang sama.
Hanya item tertentu yang diselaraskan
Beberapa item rantai kunci dikhususkan bagi perangkat, seperti kunci iMessage, maka dari itu harus tetap berada di perangkat. Sebagai hasilnya, setiap item yang akan diselaraskan harus ditandai secara eksplisit dengan atribut kSecAttrSynchronizable
.
Apple mengatur atribut ini untuk data pengguna Safari (termasuk nama pengguna, kata sandi, dan nomor kartu kredit) serta untuk kata sandi Wi-Fi, kunci enkripsi HomeKit, dan item rantai kunci lainnya yang mendukung enkripsi iCloud ujung ke ujung.
Selain itu, secara default, item rantai kunci yang ditambahkan oleh app pihak ketiga tidak diselaraskan. Pengembang harus mengatur atribut kSecAttrSynchronizable
saat menambahkan item ke rantai kunci.