Penjelasan struktur internal iMessage
- Memberikan gambaran umum tingkat tinggi tentang struktur internal iMessage
- Menjelaskan dengan menyederhanakan detail teknis berdasarkan temuan dari proyek
pypush
pypush adalah proyek open source yang mengimplementasikan ulang iMessage, dan detail implementasinya dapat dilihat di repositori tersebut
Lapisan dasar (Foundational Layer)
- Apple Push Notification Service(APNs) adalah komponen inti iMessage, yang digunakan agar aplikasi dapat menerima notifikasi dan pembaruan secara real-time bahkan saat aplikasi ditutup
- APNs adalah layanan dua arah, yang digunakan baik untuk mengirim maupun menerima push notification
- Saat perangkat terhubung ke APNs, perangkat akan menerima "push token" yang digunakan untuk merutekan notifikasi ke perangkat tertentu
- Saat mengirim notifikasi, harus menentukan topik pesan, dan untuk iMessage nilainya adalah
com.apple.madrid
- Selain pengiriman pesan, APNs juga digunakan untuk mengirim kueri melalui IDS dan menerima respons melalui APNs
- Untuk terhubung ke APNs, diperlukan sertifikat klien yang diterbitkan oleh server aktivasi Albert
Server kunci (Keyserver)
- IDS(diduga berarti IDentity Services) digunakan sebagai server kunci untuk layanan seperti iMessage dan FaceTime
- Karena iMessage dienkripsi secara end-to-end, kunci publik harus dipertukarkan dengan aman antar peserta
- Langkah pertama untuk mendaftar ke IDS adalah mendapatkan token autentikasi, yang memerlukan nama pengguna dan kata sandi Apple ID
- Setelah mendapatkan token autentikasi, token tersebut harus segera ditukar dengan sertifikat yang lebih tahan lama, dan sertifikat ini digunakan untuk mendaftar ke IDS
- Dalam proses pendaftaran IDS, kunci publik untuk enkripsi dan penandatanganan serta berbagai "data klien" diunggah ke server kunci
- Saat mengajukan permintaan pendaftaran ke IDS, diperlukan blob biner bernama "data verifikasi", yang merupakan mekanisme verifikasi untuk mencegah perangkat non-Apple menggunakan iMessage
- Setelah terdaftar di IDS, Anda akan menerima "identity key pair", yang memungkinkan Anda melakukan pencarian kunci publik
- Saat melakukan pencarian, Anda memberikan akun yang diinginkan dan menerima daftar "identitas" yang sesuai untuk tiap perangkat, beserta detail penting
Enkripsi pesan
- Setelah pengaturan dasar iMessage selesai, Anda dapat mencari kunci publik pengguna lain dan memublikasikan kunci Anda sendiri
- Untuk menerima pesan, koneksi APNs difilter ke
com.apple.madrid lalu mengirim paket keepalive
- Bergantung pada kemampuan yang diiklankan saat pendaftaran IDS dan versi iOS perangkat pengirim, pesan dapat diterima dalam format enkripsi
pair atau format baru pair-ec
- Saat mengirim pesan, Anda dapat mengirim pesan secara terpisah ke tiap penerima, atau menggabungkan semua penerima dan payload terenkripsi ke dalam satu bundel besar yang kemudian dapat dibagikan oleh APNs
- Pesan dikirim ke semua peserta dalam percakapan, termasuk perangkat lain milik akun Anda sendiri
- Hal yang sering terlewat saat pengiriman pesan adalah bahwa kunci AES tidak sepenuhnya acak, melainkan diberi tag dengan HMAC
Materi dan sumber
- Ada banyak orang dan karya sebelumnya yang membantu pemahaman tentang iMessage
- IMFreedom Knowledge Base,
pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki, serta penelitian Mihir Bellare dan Igors Stepanovs dijadikan rujukan
1 komentar
Opini Hacker News
Ada prediksi bahwa Apple akan menggunakan verifikasi (attestation) perangkat untuk mengunci iMessage. Ini akan memerlukan pembaruan perangkat lunak untuk perangkat lama.
Ada yang penasaran apakah tindakan Apple ini dapat melanggar regulasi DSA dan DMA Uni Eropa.
Jika berbagi pengalaman tentang bagaimana masuk ke bidang teknologi, itu akan membantu para pelajar yang ingin mempelajari hal-hal teknis.
Ada yang bertanya-tanya apakah seseorang berencana membuat plugin libpurple.
Menunjukkan antusiasme terhadap topik ini dan merekomendasikan untuk bergabung dengan Hack Club.
Ada yang berharap ada penjelasan tentang mengapa iMessage mengizinkan pesan dan lampiran yang tidak terlihat, tetapi kemudian mempertanyakan hal itu setelah melihat fitur ini digunakan untuk menginfeksi perangkat.
pypush, proyek open source yang mendorong perkembangan berita reverse engineering iMessage hari ini, mengikuti Server Side Public License milik MongoDB dan dimiliki oleh Beeper. Library ini sangat bagus, tetapi lisensi hak cipta yang kuat dapat memengaruhi cakupan penggunaannya.
Ada pertanyaan serius apakah kata 'opertunistic' benar-benar digunakan, atau apakah itu salah ketik seperti 'referer' yang akhirnya melekat lintas generasi.
Ada komentar yang menyemangati bahwa luar biasa seorang siswa SMA bisa melakukan hal seperti ini.