พื้นที่เก็บข้อมูลแบบ Adoptable

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

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

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

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

ความปลอดภัย

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

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

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

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

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

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

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

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

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

เมื่อดำเนินการบำรุงรักษาเมื่อไม่มีความเคลื่อนไหว ปัญหาของแพลตฟอร์ม 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