เฮ้ ฮับ!
วันนี้ฉันจะพูดถึงสิ่งที่ฉันและเพื่อนร่วมงานทำมาหลายเดือนแล้ว: การแจ้งเตือนแบบพุชสำหรับผู้ส่งข้อความด่วนบนมือถือ ดังที่ได้กล่าวไปแล้ว ในแอปพลิเคชันของเรา สิ่งสำคัญหลักคือเรื่องความปลอดภัย ดังนั้นเราจึงพบว่าการแจ้งเตือนแบบพุชมี "จุดอ่อน" หรือไม่ และหากเป็นเช่นนั้น เราจะปรับระดับการแจ้งเตือนเหล่านั้นเพื่อเพิ่มตัวเลือกที่มีประโยชน์นี้ให้กับบริการของเราได้อย่างไร
ฉันกำลังเผยแพร่คำแปลของเรา
เราตรวจสอบวัสดุ
ในรุ่นคลาสสิก การแจ้งเตือนแบบพุชทำให้ผู้ส่งสารเสี่ยงต่อการโจมตี MITM (Man-in-the-middle) ตัวอย่างเช่น สำหรับ Google, Microsoft และ iMessage เวอร์ชันเก่า แอปพลิเคชันจะส่งคีย์การเข้ารหัสไปยังเซิร์ฟเวอร์ของ Apple - บนเซิร์ฟเวอร์ ผู้ใช้จะได้รับการตรวจสอบสิทธิ์ และส่วนหัวของข้อความ (หรือเนื้อหา) จะถูกถอดรหัส
เป็นผลให้มีโอกาสที่จะอ่านจดหมายโดยการเข้าถึงเซิร์ฟเวอร์การแจ้งเตือนแบบพุช ซึ่งหมายความว่าการเข้ารหัสการติดต่อใด ๆ ไม่มีประโยชน์: การแจ้งเตือนแบบพุชจะยังคงทำให้บุคคลที่สามสามารถอ่านได้ ผู้เขียนบทความได้กล่าวถึงความเป็นไปได้นี้โดยละเอียด
หากคุณคิดว่าเซิร์ฟเวอร์ของ Apple และ Google ปลอดภัย 100% จากการรั่วไหลของคีย์เข้ารหัสผู้ใช้ ให้พิจารณาข้อเท็จจริงที่ว่าพนักงานของพวกเขาสามารถเข้าถึงได้ และพนักงานก็เป็นคน
แม้จะมีช่องโหว่ในการแจ้งเตือนแบบพุช แต่ผู้ส่งข้อความโต้ตอบแบบทันทีที่ "ปลอดภัย" จำนวนมาก รวมถึง Signal และ Telegram ก็ใช้งานสิ่งเหล่านี้ มิฉะนั้น ผู้ใช้จะต้องตรวจสอบข้อความใหม่ "ด้วยตนเอง" โดยการลงชื่อเข้าใช้แอปพลิเคชันอย่างต่อเนื่อง ซึ่งไม่สะดวกนักและผู้ส่งสารที่แข่งขันกันจะได้เปรียบ
ความหวาดระแวงและสามัญสำนึก
ในโครงการของเรา เราได้แก้ไขปัญหานี้อย่างใกล้ชิดเมื่อหลายเดือนก่อน เราจำเป็นต้องเพิ่มตัวเลือกการแจ้งเตือนแบบพุชเพื่อให้สามารถแข่งขันได้ แต่ในขณะเดียวกันก็อย่าเปิดช่องโหว่ด้านความปลอดภัย เพราะข้อมูลรั่วไหลจะบ่อนทำลายความเชื่อมั่นในโครงการ
อย่างไรก็ตาม เรามีข้อได้เปรียบที่สำคัญอยู่แล้ว: Messenger ของเรามีการกระจายอำนาจ (ข้อมูลถูกเก็บไว้ในบล็อกเชน) และพนักงานไม่สามารถเข้าถึงบัญชีได้ มีเพียงผู้ใช้เท่านั้นที่มีคีย์เข้ารหัส และคีย์สาธารณะของคู่สนทนามีอยู่ในบล็อกเชนเพื่อป้องกันการโจมตี MITM
ในการแจ้งเตือนแบบพุชเวอร์ชันแรก เราตัดสินใจที่จะเล่นอย่างปลอดภัยที่สุดเท่าที่จะเป็นไปได้ และไม่ส่งข้อความเลย บริการพุชไม่ได้รับข้อความจากโหนด แต่เป็นเพียงสัญญาณเกี่ยวกับข้อเท็จจริงของการได้รับเท่านั้น ดังนั้นผู้ใช้จึงเห็นการแจ้งเตือน “ข้อความใหม่มาถึงแล้ว” สามารถอ่านได้เฉพาะใน Messenger เท่านั้น
หลังจากนั้นเราได้เรียนรู้ว่าการแจ้งเตือนเวอร์ชันล่าสุดของ Apple มีคุณสมบัติด้านความปลอดภัยใหม่ พวกเขา
ขณะนี้เราได้พัฒนาการแจ้งเตือนแบบพุชเวอร์ชันที่สองสำหรับ iOS ซึ่งช่วยให้คุณสามารถแสดงข้อความได้โดยไม่กระทบต่อความปลอดภัย ในแนวคิดใหม่ ตรรกะมีลักษณะดังนี้:
- บริการพุชส่งการแจ้งเตือนแบบพุชพร้อมหมายเลขธุรกรรม (ข้อความที่เข้ารหัสอาจมีขนาดใหญ่มากและขนาดของการแจ้งเตือนมีจำกัดมาก)
- เมื่ออุปกรณ์ได้รับการแจ้งเตือน อุปกรณ์จะเปิดตัว NotificationServiceExtension ของเรา ซึ่งเป็นไมโครแอปพลิเคชันที่ร้องขอธุรกรรมจากโหนดด้วย ID ถอดรหัสโดยใช้ข้อความรหัสผ่านที่บันทึกไว้ และส่งการแจ้งเตือนใหม่ไปยังระบบ ข้อความรหัสผ่านจะถูกจัดเก็บไว้ในที่จัดเก็บข้อมูลที่ปลอดภัย
- ระบบแสดงการแจ้งเตือนพร้อมข้อความถอดรหัสหรือคำแปล
- ปุ่มจะไม่ไปไหน เช่นเดียวกับข้อความธรรมดา บริการพุชไม่มีวิธีถอดรหัสข้อความ
เรายอมรับว่าเวอร์ชันนี้ใช้งานได้และนำไปใช้ในการอัปเดตล่าสุดของแอปพลิเคชัน iOS
ผู้ที่สนใจด้านเทคนิคสามารถดูซอร์สโค้ดได้:
ที่มา: will.com