รักษาความปลอดภัยของข้อมูลข้อความด้วยการเข้ารหัสจากต้นทางถึงปลายทาง

เลเยอร์การขนส่งของ 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 สำหรับการโอนข้อมูล

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

ดังนั้น ให้พิจารณาทางเลือกอื่นสำหรับประสบการณ์ของผู้ใช้ในกรณีที่การดึงข้อมูลอาจใช้เวลานานเกินไป เช่น คุณอาจแสดงการแจ้งเตือนทั่วไป เช่น "คุณมีข้อความใหม่" แล้วอัปเดตการแจ้งเตือนเมื่อดึงเนื้อหาทั้งหมดแล้ว