เลเยอร์การขนส่งของ Android พร้อมกับการเชื่อมต่อทั้งหมดระหว่าง เซิร์ฟเวอร์ แบ็กเอนด์ของ FCM และอุปกรณ์ไคลเอ็นต์จะได้รับการรักษาความปลอดภัยโดยใช้ Transport Layer Security (TLS) ซึ่งจะให้การเข้ารหัสแบบจุดต่อจุด ที่มีประสิทธิภาพสำหรับข้อมูลทั้งหมดในระหว่างการส่งข้อมูล เพื่อป้องกันไม่ให้มีการดักจับข้อมูลในเครือข่าย โมเดลความปลอดภัยที่มีประสิทธิภาพนี้เหมาะสำหรับแอปพลิเคชันส่วนใหญ่ ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับสถาปัตยกรรมของ FCM
ข้อจำกัดอย่างหนึ่งของการเข้ารหัสแบบจุดต่อจุดคือข้อมูลจะไม่ได้รับการเข้ารหัสตลอดเส้นทางทั้งหมด โดยจะมีเพียงผู้ส่งและผู้รับเท่านั้นที่ถอดรหัสข้อความได้ ด้วยเหตุนี้ FCM จึงแนะนำให้ใช้การเข้ารหัสจากต้นทางถึงปลายทางสำหรับการสื่อสารที่ละเอียดอ่อนด้านความเป็นส่วนตัว เช่น ข้อความแชทหรือธุรกรรมการตรวจสอบสิทธิ์ การเข้ารหัสจากต้นทางถึงปลายทางต้องได้รับการติดตั้งใช้งานในระดับที่สูงขึ้น เช่น ภายในเซิร์ฟเวอร์และโค้ดของแอป เพื่อให้ได้ประโยชน์สูงสุด
เพิ่มการเข้ารหัสจากต้นทางถึงปลายทางสำหรับข้อมูลที่ละเอียดอ่อน
สำหรับแอปพลิเคชันที่จัดการข้อมูลที่ละเอียดอ่อนเป็นพิเศษ เช่น ข้อความส่วนตัวหรือข้อมูลเข้าสู่ระบบส่วนบุคคล คุณสามารถเพิ่มการป้องกันอีกชั้นด้วยการเข้ารหัสจากต้นทางถึงปลายทาง (E2EE) กระบวนการนี้เกี่ยวข้องกับการเข้ารหัสเพย์โหลดของข้อความในเซิร์ฟเวอร์ก่อนที่จะ ส่งไปยัง FCM และถอดรหัสภายในแอปในอุปกรณ์ของผู้ใช้ ซึ่งจะทำงานร่วมกับ FCM ข้อความข้อมูล เนื่องจากระบบปฏิบัติการจะจัดการเพย์โหลดการแจ้งเตือนมาตรฐานและแอปของคุณจะถอดรหัสเพย์โหลดไม่ได้ก่อนที่จะแสดง
โปรดทราบว่า FCM ไม่ได้มีโซลูชันในตัวสำหรับการเข้ารหัสจากต้นทางถึงปลายทาง คุณมีหน้าที่รับผิดชอบในการติดตั้งใช้งานเลเยอร์ความปลอดภัยนี้ภายในแอปพลิเคชัน โดยมีไลบรารีและโปรโตคอลภายนอกที่ออกแบบมาเพื่อวัตถุประสงค์นี้ เช่น Capillary หรือ DTLS
ตัวอย่างแนวคิด
ต่อไปนี้คือวิธีที่เพย์โหลด FCM data เปลี่ยนไปเมื่อใช้ E2EE
ก่อนการเข้ารหัส (เพย์โหลดมาตรฐาน)
{
"token": "DEVICE_REGISTRATION_TOKEN",
"data": {
"sender": "user123",
"message_body": "Your 2FA code is 555-123",
"timestamp": "1661299200"
}
}
หลังการเข้ารหัส (เพย์โหลด E2EE)
{
"token": "DEVICE_REGISTRATION_TOKEN",
"data": {
"encrypted_payload": "aG9va2Vk...so much encrypted gibberish...ZW5jcnlwdA=="
}
}
หากคุณติดตั้งใช้งานการเข้ารหัส e2e อย่างถูกต้อง แอปพลิเคชันไคลเอ็นต์จะเป็นเพียงฝ่ายเดียวที่สามารถถอดรหัสเพย์โหลดที่เข้ารหัสเพื่อแสดงข้อความเดิมได้
ทางเลือกอื่น: การดึงเนื้อหาจากเซิร์ฟเวอร์โดยตรง
หากการเข้ารหัสจากต้นทางถึงปลายทางไม่เหมาะกับแอป คุณสามารถส่งข้อความข้อมูลที่ว่างเปล่าแทนได้ ข้อความเหล่านี้ทำหน้าที่เป็นสัญญาณให้แอปดึงเนื้อหาจากเซิร์ฟเวอร์ของคุณโดยตรง ซึ่งหมายความว่าข้อมูลที่ละเอียดอ่อนจะถูกส่งระหว่างแอปและเซิร์ฟเวอร์ของคุณเท่านั้น โดยข้าม FCM สำหรับการโอนข้อมูล
ข้อเสียของวิธีนี้คืออาจเกิดความล่าช้าเนื่องจากแอปเชื่อมต่อกับเซิร์ฟเวอร์เพื่อดึงข้อมูล เมื่อแอปได้รับข้อความข้อมูล โดยปกติแล้วแอปจะมีเวลาเพียงไม่กี่วินาทีในการแสดงการแจ้งเตือนก่อนที่จะทำงานในเบื้องหลัง การดึงข้อมูลจากเซิร์ฟเวอร์อาจไม่เสร็จสมบูรณ์ภายในช่วงเวลานี้ ความสำเร็จของการดึงข้อมูลนี้ขึ้นอยู่กับปัจจัยต่างๆ เช่น การเชื่อมต่ออุปกรณ์ของผู้ใช้
ดังนั้น ให้พิจารณาทางเลือกอื่นสำหรับประสบการณ์ของผู้ใช้ในกรณีที่การดึงข้อมูลอาจใช้เวลานานเกินไป เช่น คุณอาจแสดงการแจ้งเตือนทั่วไป เช่น "คุณมีข้อความใหม่" แล้วอัปเดตการแจ้งเตือนเมื่อดึงเนื้อหาทั้งหมดแล้ว