Penyelarasan rantai kunci aman
Saat pengguna menyalakan Rantai Kunci iCloud untuk pertama kalinya di akun dengan autentikasi dua faktor, perangkat menciptakan dan membuat identitas penyelarasan untuk dirinya sendiri. Identitas penyelarasan berisi kunci eliptik asimetri (menggunakan P-384), yang disimpan di rantai kunci perangkat. Setiap perangkat mempertahankan daftarnya sendiri yang berisi identitas penyelarasan perangkat lainnya milik pengguna, dan menandatangani daftar ini sebagai salah satu kunci identitasnya. Daftar ini disimpan di CloudKit, sehingga perangkat pengguna untuk mencapai kesepakatan mengenai cara menyelaraskan data rantai kunci dengan aman antarperangkatnya sendiri.
Untuk kompatibilitas dengan perangkat iCloud yang lebih lama, penyelarasan lingkaran kepercayaan yang mirip dan identitas penyelarasan lainnya dibentuk. Kunci publik identitas penyelarasan disimpan di lingkaran, dan lingkaran ditandatangani dua kali: pertama oleh kunci pribadi identitas penyelarasan, 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.
Penyelarasan iCloud dari lingkaran penyelarasan
Untuk akun autentikasi dua faktor, setiap daftar perangkat tepercaya milik 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.
Sama halnya, lingkaran penyelarasan yang ditandatangani disimpan di area penyimpanan nilai kunci iCloud milik pengguna, tidak dapat dibaca tanpa mengetahui kata sandi iCloud pengguna, dan tidak dapat dimodifikasi dengan sah tanpa memiliki kunci pribadi identitas penyelarasan anggotanya.
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 CloudKit atau penyimpanan nilai kunci iCloud, mana pun yang paling sesuai untuk situasi. 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. Untuk mencegah transportasi data yang tidak diharapkan, 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.