3 คะแนน โดย GN⁺ 2023-12-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

อธิบายโครงสร้างภายในของ iMessage

  • ให้ภาพรวมคร่าวๆ ของโครงสร้างภายในของ iMessage
  • อธิบายรายละเอียดทางเทคนิคแบบย่อ โดยอิงจากสิ่งที่ค้นพบผ่านโปรเจ็กต์ pypush
  • pypush เป็นโปรเจ็กต์โอเพนซอร์สที่นำ iMessage มาสร้างใหม่ โดยสามารถดูรายละเอียดการติดตั้งใช้งานได้ในรีโพซิทอรีดังกล่าว

ชั้นพื้นฐาน (Foundational Layer)

  • Apple Push Notification Service(APNs) เป็นองค์ประกอบหลักของ iMessage และใช้สำหรับรับการแจ้งเตือนและอัปเดตแบบเรียลไทม์แม้ขณะปิดแอปอยู่
  • APNs เป็นบริการแบบสองทาง ใช้ทั้งสำหรับส่งและรับการแจ้งเตือนแบบพุช
  • เมื่ออุปกรณ์เชื่อมต่อกับ APNs จะได้รับ "โทเค็นพุช" ที่ใช้สำหรับกำหนดเส้นทางการแจ้งเตือนไปยังอุปกรณ์นั้น
  • เมื่อต้องการส่งการแจ้งเตือน ต้องระบุ หัวข้อ ของข้อความ และในกรณีของ iMessage คือ com.apple.madrid
  • นอกจากการส่งข้อความแล้ว APNs ยังใช้สำหรับส่งคิวรีผ่าน IDS และรับการตอบกลับผ่าน APNs ด้วย
  • การเชื่อมต่อกับ APNs ต้องใช้ใบรับรองไคลเอนต์ที่ออกโดยเซิร์ฟเวอร์เปิดใช้งาน Albert

คีย์เซิร์ฟเวอร์ (Keyserver)

  • IDS(คาดว่าย่อมาจาก IDentity Services) ถูกใช้เป็นคีย์เซิร์ฟเวอร์สำหรับบริการอย่าง iMessage และ FaceTime
  • iMessage ใช้การเข้ารหัสแบบ E2E ดังนั้นจึงต้องแลกเปลี่ยนกุญแจสาธารณะระหว่างผู้เข้าร่วมอย่างปลอดภัย
  • ขั้นตอนแรกของการลงทะเบียนกับ IDS คือการรับโทเค็นยืนยันตัวตน ซึ่งต้องใช้ชื่อผู้ใช้และรหัสผ่าน Apple ID
  • หลังได้รับโทเค็นยืนยันตัวตนแล้ว ต้องแลกเป็นใบรับรองที่มีอายุยาวกว่าทันที และใช้ใบรับรองนี้เพื่อลงทะเบียนกับ IDS
  • ในกระบวนการลงทะเบียนกับ IDS จะอัปโหลดกุญแจสาธารณะสำหรับการเข้ารหัสและการลงนาม พร้อมทั้ง "ข้อมูลไคลเอนต์" หลากหลายรายการไปยังคีย์เซิร์ฟเวอร์
  • คำขอลงทะเบียนกับ IDS ต้องใช้ไบนารีบล็อบที่เรียกว่า "ข้อมูลตรวจสอบ" ซึ่งเป็นกลไกตรวจสอบเพื่อป้องกันไม่ให้อุปกรณ์ที่ไม่ใช่ Apple ใช้งาน iMessage ได้
  • เมื่อลงทะเบียนกับ IDS แล้ว จะได้รับ "คู่กุญแจตัวตน" ซึ่งใช้สำหรับค้นหากุญแจสาธารณะ
  • เมื่อค้นหา จะระบุบัญชีที่ต้องการและได้รับรายการ "ตัวตน" ของแต่ละอุปกรณ์ ซึ่งมีรายละเอียดสำคัญรวมอยู่

การเข้ารหัสข้อความ

  • การตั้งค่าพื้นฐานของ iMessage เสร็จสมบูรณ์แล้ว จึงสามารถค้นหากุญแจสาธารณะของผู้ใช้อื่นและเผยแพร่กุญแจของตนเองได้
  • เพื่อรับข้อความ ต้องกรองการเชื่อมต่อ APNs ด้วย com.apple.madrid และส่งแพ็กเก็ตสถานะใช้งาน
  • ขึ้นอยู่กับความสามารถที่ประกาศไว้ตอนลงทะเบียน IDS และเวอร์ชัน iOS ของอุปกรณ์ผู้ส่ง ข้อความอาจถูกส่งมาในรูปแบบการเข้ารหัส pair หรือรูปแบบใหม่ pair-ec
  • เมื่อต้องการส่งข้อความ สามารถส่งข้อความแยกให้ผู้รับแต่ละราย หรือรวมผู้รับทั้งหมดกับเพย์โหลดที่เข้ารหัสไว้เป็นบันเดิลขนาดใหญ่ก้อนเดียวให้ APNs กระจายต่อก็ได้
  • ข้อความจะถูกส่งไปยังผู้เข้าร่วมทั้งหมดในบทสนทนา รวมถึงอุปกรณ์อื่นของบัญชีตนเองด้วย
  • ประเด็นหนึ่งที่มักถูกมองข้ามในการส่งข้อความคือคีย์ AES ไม่ได้สุ่มอย่างสมบูรณ์ แต่ถูกติดแท็กด้วย HMAC

เอกสารและแหล่งอ้างอิง

  • มีผู้คนจำนวนมากและผลงานก่อนหน้าที่ช่วยให้เข้าใจ iMessage มากขึ้น
  • อ้างอิงจาก IMFreedom Knowledge Base, pushproxy, apns-dissector, QuarkSlab, Garman et al., NowSecure, Elcomsoft, open-imcore, The Apple Wiki และงานวิจัยของ Mihir Bellare กับ Igors Stepanovs

1 ความคิดเห็น

 
GN⁺ 2023-12-06
ความคิดเห็นจาก Hacker News
  • มีการคาดการณ์ว่า Apple จะใช้การตรวจสอบยืนยันอุปกรณ์ (attestation) เพื่อล็อก iMessage ซึ่งจะทำให้ต้องมีการอัปเดตซอฟต์แวร์สำหรับอุปกรณ์รุ่นเก่า

    เมื่อขอลงทะเบียน IDS เพื่อใช้งาน iMessage จะต้องมีไบนารีบล็อบที่เรียกว่า 'ข้อมูลการตรวจสอบยืนยัน' นี่คือกลไกการตรวจสอบของ Apple ที่ทำให้อุปกรณ์ที่ไม่ใช่ของ Apple ใช้ iMessage ไม่ได้

  • สงสัยว่าการกระทำลักษณะนี้ของ Apple อาจขัดต่อกฎหมาย DSA และ DMA ของสหภาพยุโรปหรือไม่

  • หากแบ่งปันประสบการณ์ว่าเข้าสู่วงการเทคโนโลยีได้อย่างไร ก็น่าจะเป็นประโยชน์ต่อนักเรียนที่อยากเรียนรู้เรื่องเทคนิค

  • สงสัยว่ามีใครวางแผนจะทำปลั๊กอิน libpurple หรือไม่

  • แสดงความชื่นชมต่อความหลงใหลในหัวข้อนี้ และแนะนำให้เข้าร่วม Hack Club

  • เดิมทีคาดว่าจะได้คำอธิบายว่าทำไม iMessage ถึงยอมให้มีข้อความและไฟล์แนบที่มองไม่เห็น แต่เมื่อเห็นว่าฟีเจอร์นี้ถูกใช้เพื่อแพร่การติดเชื้อไปยังอุปกรณ์ ก็ทำให้เกิดคำถาม

  • pypush ซึ่งเป็นโปรเจ็กต์โอเพนซอร์สที่ผลักดันความคืบหน้าของข่าวการทำวิศวกรรมย้อนกลับ iMessage ในวันนี้ ใช้สัญญาอนุญาต Server Side Public License ของ MongoDB และเป็นของ Beeper ไลบรารีนี้ยอดเยี่ยม แต่สัญญาอนุญาตลิขสิทธิ์ที่เข้มงวดอาจส่งผลต่อขอบเขตการใช้งาน

  • มีคำถามอย่างจริงจังว่า 'opertunistic' เป็นคำที่มีการใช้จริงหรือไม่ หรือเป็นการพิมพ์ผิดแบบเดียวกับ 'referer' ที่ฝังตัวจนติดมาเป็นรุ่น ๆ

  • มีคำกล่าวชื่นชมว่าการที่นักเรียนมัธยมปลายทำเรื่องแบบนี้ได้เป็นสิ่งที่น่าทึ่ง