คําแนะนําด้านความปลอดภัยสําหรับการสํารองข้อมูล

หมวดหมู่ OWASP: MASVS-CODE: คุณภาพโค้ด

ภาพรวม

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

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

แต่หากแอปใช้โซลูชันการสำรองข้อมูลที่ไม่อาศัยระบบการสำรองข้อมูล Android มาตรฐาน ก็อาจเพิ่มโอกาสที่จะเกิดความผิดพลาดซึ่งนำไปสู่การรั่วไหลของข้อมูลที่ละเอียดอ่อน ตัวอย่างโซลูชันการสำรองข้อมูลที่ไม่เป็นไปตามมาตรฐานซึ่งทำให้ข้อมูลผู้ใช้มีความเสี่ยงที่จะรั่วไหล ได้แก่ แอปที่เสนอความสามารถในการ "ส่งออก" หรือ "สำรองข้อมูล" ซึ่งสร้างสำเนาข้อมูลแอปในไดเรกทอรีที่แอปอื่นๆ อ่านได้ และทำให้ข้อมูลมีความเสี่ยงที่จะรั่วไหล (โดยตรงหรือผ่านช่องโหว่อื่นๆ)

ผลกระทบ

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

การลดปัญหา

ใช้ระบบการสำรองข้อมูล Android มาตรฐาน

ระบบการสำรองข้อมูล Android มาตรฐานจะเข้ารหัสข้อมูลสำรองทั้งในระหว่างการรับส่งและขณะที่ไม่มีการเคลื่อนไหวเสมอ การเข้ารหัสนี้จะมีผลไม่ว่าคุณจะใช้ Android เวอร์ชันใดก็ตามและไม่ว่าอุปกรณ์จะมีหน้าจอล็อกหรือไม่ก็ตาม ตั้งแต่ Android 9 เป็นต้นไป หากอุปกรณ์ตั้งค่าหน้าจอล็อกไว้ ข้อมูลสำรองก็จะไม่ได้เข้ารหัสเท่านั้น แต่ยังเข้ารหัสด้วยคีย์ที่ Google ไม่รู้จัก (ข้อมูลลับของหน้าจอล็อกจะปกป้องคีย์การเข้ารหัสด้วย ดังนั้นจึงเปิดใช้การเข้ารหัสจากต้นทางถึงปลายทาง)

โดยทั่วไป โปรดอย่าลืมปฏิบัติตามหลักเกณฑ์ด้านพื้นที่เก็บข้อมูลและความปลอดภัย

หากข้อมูลสํารองมีข้อมูลที่ละเอียดอ่อนเป็นพิเศษ เราขอแนะนําให้ยกเว้นข้อมูลนี้ หรือหากยกเว้นไม่ได้ ให้ใช้การเข้ารหัสจากต้นทางถึงปลายทางตามที่อธิบายไว้ในส่วนต่อไปนี้

การยกเว้นข้อมูลจากการสำรองข้อมูล

คุณระบุข้อมูลที่จะยกเว้นจากข้อมูลสำรองได้โดยใช้ไฟล์กฎ ซึ่งโดยทั่วไปจะเรียกว่า backup_rules.xml และวางไว้ในโฟลเดอร์แอป res/xml การกำหนดค่ากฎการสำรองข้อมูลจะแตกต่างกันไปบ้างโดยขึ้นอยู่กับเวอร์ชัน Android ที่ใช้

จากนั้นกําหนดค่าไฟล์ backup_rules.xml ตามข้อกําหนดด้านการรักษาข้อมูลและความปลอดภัยของแอปพลิเคชัน โดยทําตามรูปแบบการกําหนดค่าที่อัปเดต

รูปแบบที่จําเป็นสําหรับการกําหนดค่าไฟล์ backup_rules.xml ช่วยให้นักพัฒนาแอปกําหนดกฎการสํารองข้อมูลเองได้สําหรับทั้งการโอนไปยังระบบคลาวด์และการโอนจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่ง (D2D) หากไม่ได้ตั้งค่าแอตทริบิวต์ <device-transfer> ระบบจะโอนข้อมูลแอปพลิเคชันทั้งหมดในระหว่างการย้ายข้อมูล D2D สิ่งสำคัญคือ แม้ว่าแอปพลิเคชันเป้าหมายจะกำหนดเป้าหมายเป็น Android 12 ขึ้นไป คุณควรระบุไฟล์แยกต่างหากที่มีชุดกฎการสำรองข้อมูลเพิ่มเติมสำหรับอุปกรณ์ที่ใช้ Android 11 (API ระดับ 30) หรือต่ำกว่าเสมอ

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

กำหนดให้ใช้การเข้ารหัสจากต้นทางถึงปลายทาง

หากยกเว้นข้อมูลที่ละเอียดอ่อนออกจากข้อมูลสำรองไม่ได้ เราขอแนะนำให้ใช้การเข้ารหัสจากต้นทางถึงปลายทาง ซึ่งหมายความว่าจะอนุญาตการสำรองข้อมูลใน Android 9 ขึ้นไปเท่านั้นและเมื่อตั้งค่าหน้าจอล็อกแล้วเท่านั้น ซึ่งทำได้โดยใช้requireFlags="clientSideEncryption"Flag ซึ่งต้องเปลี่ยนชื่อเป็น disableIfNoEncryptionCapabilities และตั้งค่าเป็น true ตั้งแต่วันที่ Android 12 เป็นต้นไป

หากใช้ระบบการสำรองข้อมูล Android มาตรฐานไม่ได้

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

แหล่งข้อมูล