การจัดเก็บที่นำมาใช้ได้

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

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

เมื่อผู้ใช้ใส่สื่อบันทึกข้อมูลใหม่ (เช่น การ์ด SD) ในตำแหน่งที่ปรับใช้ได้ Android จะถามพวกเขาว่าต้องการใช้สื่ออย่างไร พวกเขาสามารถเลือกที่จะใช้สื่อซึ่งจัดรูปแบบและเข้ารหัส หรือสามารถใช้ต่อไปตามที่เป็นสำหรับการจัดเก็บไฟล์อย่างง่าย หากพวกเขาเลือกที่จะนำไปใช้ แพลตฟอร์มเสนอให้ย้ายเนื้อหาการจัดเก็บข้อมูลที่ใช้ร่วมกันหลัก (โดยทั่วไปจะติดตั้งที่ /sdcard ) ไปยังสื่อที่นำมาใช้ใหม่ เพื่อเพิ่มพื้นที่ว่างอันมีค่าบนที่จัดเก็บข้อมูลภายใน ต่างจากที่เก็บข้อมูลทั่วไปซึ่งถูกจำกัดไว้ที่ 2TB เนื่องจากการใช้ MBR พื้นที่จัดเก็บที่ปรับใช้ได้นั้นใช้ GPT และดังนั้นจึงมีขีดจำกัดการจัดเก็บไฟล์อยู่ที่ ~9ZB

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

ความปลอดภัย

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

หากอุปกรณ์ได้รับการกำหนดค่าให้ใช้ การเข้ารหัสแบบไฟล์ (FBE) ในที่จัดเก็บข้อมูลภายใน อุปกรณ์จัดเก็บข้อมูลที่ปรับใช้ได้จะใช้ทั้งการเข้ารหัส FBE และ การเข้ารหัสข้อมูลเมตา มิฉะนั้น พื้นที่เก็บข้อมูลที่ปรับใช้ได้จะใช้ การเข้ารหัสทั้งดิสก์ (FDE)

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

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

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

ประสิทธิภาพและความเสถียร

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

เมื่อผู้ใช้ใช้อุปกรณ์จัดเก็บข้อมูลใหม่ แพลตฟอร์มจะทำการวัดประสิทธิภาพและเปรียบเทียบประสิทธิภาพกับที่จัดเก็บข้อมูลภายใน หากอุปกรณ์ที่นำมาใช้นั้นช้ากว่าที่จัดเก็บข้อมูลภายในอย่างมาก แพลตฟอร์มจะเตือนผู้ใช้เกี่ยวกับประสบการณ์ที่อาจลดลง เกณฑ์มาตรฐานนี้มาจากพฤติกรรม I/O ที่แท้จริงของแอป Android ยอดนิยม ในปัจจุบัน การใช้งาน AOSP จะเตือนผู้ใช้ที่เกินขีดจำกัดเดียว แต่ผู้ผลิตอุปกรณ์อาจปรับเปลี่ยนสิ่งนี้เพิ่มเติม เช่น การปฏิเสธการนำไปใช้โดยสิ้นเชิงหากการ์ดทำงานช้ามาก

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

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

การทดสอบ

หากต้องการทดสอบว่าที่จัดเก็บข้อมูลที่ปรับใช้ได้นั้นใช้งานได้ ให้รันการทดสอบ CTS นี้:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

ในการตรวจสอบพฤติกรรมของไดรฟ์ USB และการ์ด SD เมื่ออุปกรณ์ไม่มีช่องเสียบในตัว หรือเมื่อมีการใช้ขั้วต่อ USB สำหรับการเชื่อมต่อ adb ที่ใช้งานอยู่ ให้ใช้:

adb shell sm set-virtual-disk true