iMessage mesajları nasıl güvenli bir şekilde alır ve gönderir?
Kullanıcılar, bir adres veya ad girerek yeni bir iMessage yazışması başlatır. Bir telefon numarası veya e-posta adresi girerlerse aygıt yazışmanın gönderildiği kişiyle ilişkili tüm aygıtlar için açık anahtarları ve APNs adreslerini almak üzere Apple Kimlik Servisi (IDS) ile iletişim kurar. Kullanıcı bir ad girerse aygıt ilk önce kullanıcının Kişiler uygulamasını kullanarak bu adla ilişkili telefon numaralarını ve e-posta adreslerini toplar, sonra IDS’den açık anahtarları ve APNs adreslerini alır.
Kullanıcının giden mesajı, alıcının her bir aygıtı için ayrı ayrı şifrelenir. Alıcı aygıtların açık şifreleme anahtarları ve imzalama anahtarları IDS’den alınır. Gönderen aygıt, her bir alıcı aygıt için 88 bitlik rasgele bir değer üretir ve bunu bir HMAC-SHA256 anahtarı olarak kullanarak gönderenin ve alıcının açık anahtarlarıyla düz metinden türetilen 40 bitlik bir değer oluşturur. 88 bitlik ve 40 bitlik değerlerin uç uca eklenmesiyle 128 bitlik bir anahtar oluşturulur; bu anahtarla Sayaç (CTR) Modu’nda AES kullanılarak mesaj şifrelenir. 40 bitlik değer, şifresi çözülen düz metnin bütünlüğünü doğrulamak için alıcı tarafça kullanılır. Bu mesaja özgü AES anahtarı, alıcı aygıtın açık anahtarına RSA-OAEP kullanarak şifrelenir. Şifreli mesaj metniyle şifreli mesaj anahtarının birleşimi daha sonra SHA‑1 ile özetlenir ve özet, gönderen aygıtın özel imza anahtarı kullanılarak Eliptik Eğri Dijital İmza Algoritması (ECDSA) ile imzalanır. iOS 13 veya daha yenisinde ve iPadOS 13.1 veya daha yenisinde, aygıtlar RSA şifreleme yerine Eliptik Eğri Tümleşik Şifreleme Düzeni (ECIES) şifrelemesi kullanabilir.
Sonuçta ortaya çıkan mesajlar, her alıcı aygıt için bir tane olmak üzere, şifreli mesaj metni, şifreli mesaj anahtarı ve gönderenin dijital imzasından oluşur. Daha sonra bunların hepsi iletilmek üzere APNs’ye gönderilir. Zaman damgası ve APNs yönlendirme bilgileri gibi üst veriler şifrelenmez. APNs ile iletişim, bir gizli iletme TLS kanalı kullanılarak şifrelenir.
APNs, iOS veya iPadOS sürümüne bağlı olarak yalnızca büyüklüğü en fazla 4 veya 16 KB olan mesajları iletebilir. Mesaj metni çok uzunsa ya da fotoğraf gibi bir ilişik eklenmişse ilişik AES kullanılarak CTR modunda rasgele üretilen bir 256 bit anahtar kullanılarak şifrelenir ve iCloud’a yüklenir. Daha sonra ilişik için AES anahtarı, Tek Biçimli Kaynak Tanıtıcı’sı (URI) ve şifrelenmiş biçiminin bir SHA‑1 özeti, iMessage içeriği olarak alıcıya gönderilir. Bunların gizliliği ve bütünlüğü, aşağıdaki şemada gösterildiği gibi normal iMessage şifrelemesiyle korunur.
Grup yazışmalarında, bu işlem her alıcı ve aygıtı için tekrarlanır.
Alıcı tarafta her aygıt APNs’den kendi mesaj kopyasını ve gerekirse iCloud’dan ilişiği alır. Gönderenin gelen telefon numarası veya e-posta adresi, alıcının kişileriyle eşleştirilir ve böylece mümkün olduğunda bir ad görüntülenebilir.
Tüm anında iletme bildirimlerinde olduğu gibi, mesaj iletildiğinde APNs’den silinir. Ancak diğer APNs bildirimlerinin aksine, iMessage mesajları çevrimdışı aygıtlara iletilmek üzere sıraya alınır. Mesajlar Apple sunucularında en fazla 30 gün saklanır.