เลเยอร์การรับส่งข้อมูลของ 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=="
}
}
หากคุณใช้การเข้ารหัสจากต้นทางถึงปลายทางอย่างถูกต้อง แอปพลิเคชันไคลเอ็นต์จะเป็นฝ่ายเดียวที่สามารถถอดรหัสเพย์โหลดที่เข้ารหัสเพื่อแสดงข้อความต้นฉบับได้
ทางเลือก: การดึงเนื้อหาจากเซิร์ฟเวอร์ของคุณโดยตรง
หากการเข้ารหัสจากต้นทางถึงปลายทางไม่เหมาะกับแอป คุณสามารถส่งข้อความข้อมูลเปล่าแทนได้ ข้อความเหล่านี้ทำหน้าที่เป็นสัญญาณให้แอปดึงเนื้อหาจากเซิร์ฟเวอร์ของคุณโดยตรง ซึ่งหมายความว่าข้อมูลที่ละเอียดอ่อนจะได้รับการส่งระหว่างแอปและเซิร์ฟเวอร์ของคุณเท่านั้น โดยไม่ผ่าน FCM สำหรับการโอนข้อมูล
ข้อเสียของวิธีนี้คืออาจเกิดความล่าช้าเนื่องจากแอปเชื่อมต่อกับเซิร์ฟเวอร์เพื่อดึงข้อมูล เมื่อแอปได้รับข้อความข้อมูล โดยปกติแล้วจะมีเวลาเพียงไม่กี่วินาทีในการแสดงการแจ้งเตือนก่อนที่จะทำงานอยู่เบื้องหลัง การดึงข้อมูลจากเซิร์ฟเวอร์อาจไม่เสร็จสมบูรณ์ภายในกรอบเวลานี้ ความสำเร็จของการดึงข้อมูลนี้ขึ้นอยู่กับปัจจัยต่างๆ เช่น การเชื่อมต่ออุปกรณ์ของผู้ใช้
ดังนั้น โปรดพิจารณาทางเลือกอื่นๆ สำหรับประสบการณ์ของผู้ใช้ในสถานการณ์ที่การดึงข้อมูลอาจใช้เวลานานเกินไป เช่น คุณอาจแสดงการแจ้งเตือนทั่วไป เช่น "คุณมีข้อความใหม่" แล้วอัปเดตเมื่อดึงข้อมูลเนื้อหาทั้งหมดแล้ว