วิธีการที่ iMessage ส่งและรับข้อความอย่างปลอดภัย
ผู้ใช้เริ่มต้นบทสนทนา iMessage ใหม่โดยการป้อนที่อยู่หรือชื่อ ถ้าผู้ใช้ป้อนเบอร์โทรศัพท์หรือที่อยู่อีเมล อุปกรณ์จะติดต่อบริการข้อมูลประจำตัว (IDS) ของ Apple เพื่อเรียกใช้กุญแจสาธารณะและที่อยู่ APNs สำหรับอุปกรณ์ทั้งหมดที่เชื่อมโยงกับผู้รับนั้น ถ้าผู้ใช้ป้อนชื่อ อันดับแรกอุปกรณ์จะใช้แอปรายชื่อของผู้ใช้เพื่อรวบรวมเบอร์โทรศัพท์และที่อยู่อีเมลที่เชื่อมโยงกับชื่อนั้น จากนั้นรับกุญแจสาธารณะและที่อยู่ APNs จาก IDS
ข้อความที่ส่งออกของผู้ใช้แต่ละอันจะถูกเข้ารหัสสำหรับอุปกรณ์ของผู้รับแต่ละเครื่อง กุญแจการเข้ารหัสสาธารณะและกุญแจการเซ็นชื่อของอุปกรณ์ที่รับจะดึงข้อมูลจาก IDS สำหรับอุปกรณ์ที่รับแต่ละเครื่อง อุปกรณ์ที่ส่งจะสร้างค่า 88 บิต แบบสุ่ม และใช้ค่าดังกล่าวเป็นกุญแจ HMAC-SHA256 เพื่อสร้างค่า 40 บิตที่ได้รับจากกุญแจสาธารณะและข้อความธรรมดาของผู้ส่งและผู้รับ การแปรผันของค่า 88 บิต และ 40 บิต จะเป็นการสร้างกุญแจ 128 บิต ที่เข้ารหัสข้อความโดยใช้ AES ในโหมดตัวนับ (CTR) ค่า 40 บิต จะใช้ในฝั่งผู้รับเพื่อตรวจสอบยืนยันความสมบูรณ์ของข้อความธรรมดาที่ถอดรหัสแล้ว กุญแจ AES รายข้อความนี้จะถูกเข้ารหัสโดยใช้ RSA-OAEP ไปที่กุญแจสาธารณะของอุปกรณ์ที่รับ ชุดของข้อความตัวอักษรที่เข้ารหัสและกุญแจข้อความที่เข้ารหัสจะถูกแฮชด้วย SHA-1 และแฮชจะได้รับการลงชื่อด้วยอัลกอริทึมลายเซ็นดิจิทัลแบบเส้นโค้งรูปไข่ (ECDSA) โดยใช้กุญแจการลงชื่อส่วนตัวของอุปกรณ์ที่ส่ง ใน iOS 13 ขึ้นไป และ iPadOS 13.1 ขึ้นไป อุปกรณ์อาจใช้การเข้ารหัส Elliptic Curve Integrated Encryption Scheme (ECIES) แทนการเข้ารหัส RSA
ข้อความผลลัพธ์ที่ได้ ซึ่งแต่ละอันสำหรับอุปกรณ์ที่รับแต่ละเครื่อง จะประกอบด้วยข้อความตัวอักษรที่เข้ารหัส กุญแจข้อความที่เข้ารหัส และลายมือชื่อดิจิทัลของผู้ส่ง ข้อความจะถูกส่งไปยัง APNs สำหรับการส่งต่อ เมตาดาต้า เช่น ตราประทับเวลาและข้อมูลเส้นทาง APNs จะไม่ถูกเข้ารหัส การติดต่อกับ APNs จะถูกเข้ารหัสโดยใช้ช่องทาง forward-secret TLS
APNs สามารถส่งต่อข้อความขนาดสูงสุด 4 หรือ 16 KB เท่านั้น ทั้งนี้ขึ้นอยู่กับเวอร์ชั่นของ iOS หรือ iPadOS ถ้าข้อความตัวอักษรยาวเกินไป หรือถ้าไฟล์แนบ เช่น รูปภาพ รวมอยู่ด้วย ไฟล์แนบจะถูกเข้ารหัสโดยใช้ AES ในโหมด CTR พร้อมกับกุญแจ 256 บิตที่สร้างแบบสุ่ม และมีการอัปโหลดไปยัง iCloud กุญแจ AES สำหรับไฟล์แนบ ตัวระบุแหล่งทรัพยากรสากล (URI) ของกุญแจ และแฮช SHA-1 ของกุญแจในรูปแบบที่เข้ารหัสแล้วจะถูกส่งไปยังผู้รับเป็นเนื้อหาของ iMessage โดยได้รับการปกป้องความลับและความสมบูรณ์ของข้อมูลผ่านการเข้ารหัส iMessage แบบปกติ ตามที่แสดงในไดอะแกรมต่อไปนี้
สำหรับบทสนทนากลุ่ม กระบวนการทำงานนี้จะมีการทำซ้ำสำหรับผู้รับแต่ละรายและอุปกรณ์ของผู้รับ
สำหรับฝั่งรับ อุปกรณ์แต่ละเครื่องจะได้รับสำเนาของข้อความจาก APNs และหากจำเป็น จะได้รับไฟล์แนบจาก iCloud เบอร์โทรศัพท์ที่โทรเข้าหรือที่อยู่อีเมลของผู้ส่งจะถูกจับคู่กับรายชื่อของผู้รับเพื่อให้แสดงชื่อเมื่อเป็นไปได้
เช่นเดียวกับการแจ้งเตือนแบบผลักข้อมูลทั้งหมด ข้อความจะถูกลบออกจาก APNs เมื่อส่งเรียบร้อยแล้ว อย่างไรก็ตาม ข้อความ iMessage จะถูกจัดเข้าคิวเพื่อการส่งไปยังอุปกรณ์ออฟไลน์ ซึ่งแตกต่างจากการแจ้งเตือน APNs อื่น ข้อความจะถูกจัดเก็บไว้บนเซิร์ฟเวอร์ของ Apple สูงสุด 30 วัน