Berbagi foto dan nama iMessage dengan aman
Berbagi Foto dan Nama iMessage memungkinkan pengguna untuk berbagi Nama dan Foto menggunakan iMessage. Pengguna dapat memilih informasi Kartu Saya milik mereka, atau menyesuaikan nama dan menyertakan gambar apa pun yang mereka pilih. Berbagi Foto dan Nama iMessage menggunakan sistem dua tahap untuk mendistribusikan nama dan foto.
Data dibagi ke dalam bidang, masing-masing dienkripsi dan disahkan secara terpisah dan disahkan bersama dengan proses di bawah. Ada tiga bidang:
Nama
Foto
Nama file foto
Salah satu langkah pertama dari pembuatan data adalah untuk membuat kunci rekaman 128 bit secara acak di perangkat. Kunci rekaman ini kemudian diturunkan dengan HKDF-HMAC-SHA256 untuk membuat tiga subkunci: Kunci 1:Kunci 2:Kunci 3 = HKDF(kunci rekaman, “nama panggilan”). Untuk setiap bidang, Vektor Inisialisasi (IV) 96 bit acak dibuat dan data dienkripsi menggunakan AES-CTR dan Kunci 1. Kode pengesahan pesan (MAC) kemudian dihitung dengan HMAC-SHA256 menggunakan Kunci 2 dan menyertakan nama bidang, IV bidang, dan ciphertext bidang. Terakhir, kumpulan nilai MAC bidang terpisah disatukan dan MAC-nya dihitung dengan HMAC-SHA256 menggunakan Kunci 3. MAC 256 bit disimpan bersama data yang dienkripsi. 128 bit pertama dari MAC ini digunakan sebagai RecordID.
Rekaman terenkripsi ini kemudian disimpan di database publik CloudKit di bagian RecordID. Rekaman ini tidak pernah dimutasi dan jika pengguna memilih untuk mengubah nama dan foto mereka, rekaman terenkripsi baru akan dibuat. Jika pengguna 1 memilih untuk membagikan nama dan foto mereka dengan pengguna 2, mereka mengirimkan kunci rekaman bersama dengan recordID di dalam muatan iMessage mereka, yang dienkripsi.
Saat perangkat pengguna 2 menerima muatan iMessage ini, perangkat akan mendeteksi bahwa muatan berisi recordID dan kunci Nama Panggilan dan Foto. Perangkat pengguna 2 kemudian akan mengakses database CloudKit publik untuk mengambil nama dan foto terenkripsi di ID rekaman dan mengirimkannya menggunakan iMessage.
Setelah pesan diterima, perangkat pengguna 2 mendekripsi muatan dan memverifikasi tanda tangan menggunakan recordID. Jika berhasil, pengguna 2 akan diberi nama dan foto, dan mereka dapat memilih untuk menambahkannya ke kontak mereka, atau menggunakannya untuk Pesan.