iMessage’ın iç yapısının açıklaması
- iMessage’ın iç yapısına dair genel bir üst düzey bakış sunuluyor
pypush projesi üzerinden keşfedilenlere dayanarak teknik ayrıntılar sadeleştirilmiş şekilde açıklanıyor
pypush, iMessage’ı yeniden uygulayan açık kaynaklı bir proje ve ayrıntılı uygulama için ilgili depoya bakılabilir
Temel katman (Foundational Layer)
- Apple Push Notification Service (APNs), iMessage’ın temel bileşenlerinden biridir ve uygulama kapalıyken bile gerçek zamanlı bildirimler ile güncellemeler almak için kullanılır
- APNs iki yönlü bir hizmettir; hem push bildirimi göndermek hem de almak için kullanılır
- Cihaz APNs’ye bağlandığında, bildirimleri belirli cihaza yönlendirmekte kullanılan bir "push token" alır
- Bildirim gönderirken mesajın konusunu belirtmek gerekir; iMessage için bu
com.apple.madrid’dir
- APNs, mesaj iletiminin yanı sıra IDS üzerinden sorgu göndermek ve yanıtları APNs üzerinden almak için de kullanılır
- APNs’ye bağlanmak için Albert aktivasyon sunucusu tarafından verilen bir istemci sertifikası gerekir
Anahtar sunucusu (Keyserver)
- IDS’nin (muhtemelen IDentity Services) iMessage ve FaceTime gibi hizmetler için anahtar sunucusu olarak kullanıldığı anlaşılıyor
- iMessage uçtan uca şifrelendiği için katılımcılar arasında açık anahtarların güvenli biçimde değiş tokuş edilmesi gerekir
- IDS’ye kaydolmanın ilk adımı bir kimlik doğrulama token’ı almaktır; bunun için Apple ID kullanıcı adı ve parola gerekir
- Kimlik doğrulama token’ı alındıktan sonra bunun hemen daha uzun ömürlü bir sertifikayla değiştirilmesi gerekir; IDS’ye kayıt bu sertifika üzerinden yapılabilir
- IDS kayıt sürecinde açık şifreleme ve imzalama anahtarları ile çeşitli "istemci verileri" anahtar sunucusuna yüklenir
- IDS kayıt isteğinde "doğrulama verisi" adlı ikili bir blob gerekir; bu, Apple cihazı olmayan aygıtların iMessage kullanmasını engelleyen bir doğrulama mekanizmasıdır
- IDS’ye kaydolduktan sonra, açık anahtar sorguları yapmayı sağlayan bir "kimlik anahtar çifti" alınır
- Sorgu sırasında istenen hesap sağlanır ve her cihaza karşılık gelen, önemli ayrıntılar içeren bir "kimlik" listesi alınır
Mesaj şifreleme
- iMessage’ın temel kurulumu tamamlandıktan sonra diğer kullanıcıların açık anahtarları sorgulanabilir ve kendi anahtarlarınız yayımlanabilir
- Mesaj almak için APNs bağlantısı
com.apple.madrid ile filtrelenir ve etkin durum paketi gönderilir
- IDS kaydında duyurulan özelliklere ve gönderen cihazın iOS sürümüne bağlı olarak mesajlar
pair şifreleme biçiminde veya daha yeni pair-ec biçiminde alınabilir
- Mesaj gönderirken her alıcıya ayrı ayrı mesaj yollanabilir ya da APNs’nin dağıtabileceği tek büyük bir bundle içinde tüm alıcılar ve şifrelenmiş payload bir araya getirilebilir
- Mesajlar, aynı hesaba ait diğer cihazlar da dahil olmak üzere konuşmadaki tüm katılımcılara iletilir
- Mesaj iletiminde sık gözden kaçan bir nokta, AES anahtarının tamamen rastgele olmaması ve HMAC ile etiketlenmiş olmasıdır
Materyaller ve kaynaklar
- iMessage’ı anlamaya yardımcı olan çok sayıda kişi ve önceki çalışma bulunuyor
- IMFreedom Knowledge Base,
pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki ile Mihir Bellare ve Igors Stepanovs’un çalışmaları referans alınmış
1 yorum
Hacker News görüşleri
Apple'ın iMessage'ı kilitlemek için cihaz doğrulamasını (attestation) kullanacağına dair tahminler var. Bu da eski cihazlar için yazılım güncellemesi gerektirecek.
Apple'ın böyle bir davranışının Avrupa Birliği'nin DSA ve DMA düzenlemelerine aykırı olup olmayacağı merak ediliyor.
Teknoloji alanına nasıl girildiğine dair deneyimlerin paylaşılmasının, teknik konuları öğrenmek isteyen öğrencilere yardımcı olacağı belirtiliyor.
Birinin libpurple eklentisi yapmayı planlayıp planlamadığı merak ediliyor.
Bu konuya yönelik tutkuyu gösterdiği belirtiliyor ve Hack Club'a katılması tavsiye ediliyor.
iMessage'ın görünmez mesajlara ve eklere neden izin verdiğine dair bir açıklama beklendiği, ancak bu özelliğin cihaz enfeksiyonu için kullanıldığının görülmesinin soru işareti yarattığı söyleniyor.
iMessage tersine mühendislik haberlerindeki bugünkü gelişmeleri mümkün kılan açık kaynak proje pypush, MongoDB'nin Server Side Public License lisansını kullanıyor ve Beeper'a ait. Bu kütüphane harika olsa da, güçlü copyleft lisansı kullanım alanını etkileyebilir.
opertunistickelimesinin gerçekten kullanılıp kullanılmadığına, yoksareferergibi nesiller boyunca kalıcı hale gelmiş bir yazım hatası mı olduğuna dair ciddi bir soru var.Bir lise öğrencisinin bunu başarmasının etkileyici olduğuna dair teşvik edici bir yorum var.