ในระดับระบบปฏิบัติการ แพลตฟอร์ม Android ให้การรักษาความปลอดภัยของเคอร์เนลลินุกซ์ รวมถึงสิ่งอำนวยความสะดวกในการสื่อสารระหว่างกระบวนการ (IPC) ที่ปลอดภัย เพื่อเปิดใช้งานการสื่อสารที่ปลอดภัยระหว่างแอปพลิเคชันที่ทำงานในกระบวนการต่างๆ คุณลักษณะด้านความปลอดภัยเหล่านี้ที่ระดับระบบปฏิบัติการทำให้มั่นใจได้ว่าแม้โค้ดเนทีฟจะถูกจำกัดโดย Application Sandbox ไม่ว่ารหัสนั้นจะเป็นผลมาจากพฤติกรรมของแอปพลิเคชันที่รวมอยู่หรือการใช้ประโยชน์จากช่องโหว่ของแอปพลิเคชัน ระบบได้รับการออกแบบมาเพื่อป้องกันแอปพลิเคชันปลอมไม่ให้ทำอันตรายต่อแอปพลิเคชันอื่นๆ ระบบ Android หรืออุปกรณ์เอง ดู การกำหนดค่าเคอร์เนล สำหรับมาตรการที่คุณสามารถทำได้เพื่อเพิ่มความแข็งแกร่งให้กับเคอร์เนลบนอุปกรณ์ของคุณ ดู เอกสารนิยามความเข้ากันได้ของ Android (CDD) สำหรับการตั้งค่าที่จำเป็น
ความปลอดภัยของลินุกซ์
รากฐานของแพลตฟอร์ม Android คือเคอร์เนลของ Linux เคอร์เนลของลีนุกซ์มีการใช้งานอย่างแพร่หลายมานานหลายปี และใช้ในสภาพแวดล้อมที่ไวต่อความปลอดภัยหลายล้านแห่ง จากประวัติศาสตร์ของการถูกวิจัย โจมตี และแก้ไขอย่างต่อเนื่องโดยนักพัฒนาหลายพันคน Linux ได้กลายเป็นเคอร์เนลที่เสถียรและปลอดภัยซึ่งได้รับความไว้วางใจจากองค์กรและผู้เชี่ยวชาญด้านความปลอดภัยมากมาย
ในฐานะที่เป็นพื้นฐานสำหรับสภาพแวดล้อมการใช้คอมพิวเตอร์เคลื่อนที่ เคอร์เนลของ Linux ช่วยให้ Android มีคุณลักษณะด้านความปลอดภัยที่สำคัญหลายประการ ได้แก่:
- รูปแบบการอนุญาตตามผู้ใช้
- การแยกกระบวนการ
- กลไกขยายได้สำหรับ IPC ที่ปลอดภัย
- ความสามารถในการลบส่วนที่ไม่จำเป็นและอาจไม่ปลอดภัยของเคอร์เนล
ในฐานะที่เป็นระบบปฏิบัติการที่มีผู้ใช้หลายคน วัตถุประสงค์ด้านความปลอดภัยขั้นพื้นฐานของเคอร์เนล Linux คือการแยกทรัพยากรของผู้ใช้ออกจากกัน ปรัชญาการรักษาความปลอดภัยของ Linux คือการปกป้องทรัพยากรของผู้ใช้จากกันและกัน Linux:
- ป้องกันไม่ให้ผู้ใช้ A อ่านไฟล์ของผู้ใช้ B
- ตรวจสอบให้แน่ใจว่าผู้ใช้ A ไม่ได้ใช้หน่วยความจำของผู้ใช้ B
- ตรวจสอบให้แน่ใจว่าผู้ใช้ A ไม่ใช้ทรัพยากร CPU ของผู้ใช้ B
- ตรวจสอบให้แน่ใจว่าผู้ใช้ A ไม่ใช้อุปกรณ์ของผู้ใช้ B (เช่น โทรศัพท์ GPS และบลูทูธ)
แอปพลิเคชัน Sandbox
ความปลอดภัยของแอปพลิเคชันของ Android บังคับใช้โดยแอปพลิเคชันแซนด์บ็อกซ์ ซึ่งแยกแอปพลิเคชันออกจากกัน และปกป้องแอปพลิเคชันและระบบจากแอปพลิเคชันที่เป็นอันตราย สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Application Sandbox
พาร์ติชันระบบและเซฟโหมด
พาร์ติชันที่ป้องกันความสมบูรณ์ต่างๆ ประกอบด้วยเคอร์เนลของ Android ตลอดจนไลบรารีของระบบปฏิบัติการ รันไทม์ของแอปพลิเคชัน เฟรมเวิร์กของแอปพลิเคชัน และแอปพลิเคชัน พาร์ติชันนี้ถูกตั้งค่าเป็นแบบอ่านอย่างเดียว เมื่อผู้ใช้บูทอุปกรณ์เข้าสู่โหมดปลอดภัย เจ้าของอุปกรณ์อาจเปิดใช้งานแอปพลิเคชันของบุคคลที่สามด้วยตนเอง แต่จะไม่เปิดใช้งานตามค่าเริ่มต้น
สิทธิ์ของระบบไฟล์
ในสภาพแวดล้อมแบบ UNIX สิทธิ์ของระบบไฟล์จะทำให้แน่ใจว่าผู้ใช้คนหนึ่งไม่สามารถแก้ไขหรืออ่านไฟล์ของผู้ใช้รายอื่นได้ ในกรณีของ Android แต่ละแอปพลิเคชันจะทำงานเป็นผู้ใช้ของตนเอง เว้นแต่ผู้พัฒนาจะแชร์ไฟล์กับแอพพลิเคชั่นอื่นอย่างชัดเจน ไฟล์ที่สร้างโดยแอพพลิเคชั่นหนึ่งจะไม่สามารถอ่านหรือแก้ไขโดยแอพพลิเคชั่นอื่นได้
Linux เสริมความปลอดภัย
Android ใช้ Linux ที่ปรับปรุงความปลอดภัย (SELinux) เพื่อใช้นโยบายการควบคุมการเข้าถึงและสร้างการควบคุมการเข้าถึงที่จำเป็น (mac) ในกระบวนการต่างๆ ดูรายละเอียดได้ ที่ Security-Enhanced Linux ใน Android
ยืนยันการบูต
Android 7.0 และใหม่กว่ารองรับการบู๊ตที่ผ่านการตรวจสอบอย่างเข้มงวด ซึ่งหมายความว่าอุปกรณ์ที่ถูกบุกรุกจะไม่สามารถบู๊ตได้ การบู๊ตที่ผ่านการยืนยันรับประกันความสมบูรณ์ของซอฟต์แวร์อุปกรณ์ตั้งแต่รูทของฮาร์ดแวร์ที่เชื่อถือได้จนถึงพาร์ติชันระบบ ระหว่างการบูต แต่ละขั้นตอนจะตรวจสอบความสมบูรณ์และความถูกต้องของขั้นตอนถัดไปด้วยการเข้ารหัสก่อนที่จะดำเนินการ
ดู การบู๊ตที่ยืนยันแล้ว สำหรับรายละเอียดเพิ่มเติม
การเข้ารหัส
Android มีชุด API การเข้ารหัสสำหรับการใช้งานโดยแอปพลิเคชัน ซึ่งรวมถึงการใช้งานมาตรฐานการเข้ารหัสแบบดั้งเดิมที่ใช้กันทั่วไป เช่น AES, RSA, DSA และ SHA นอกจากนี้ ยังมี API สำหรับโปรโตคอลระดับที่สูงขึ้น เช่น SSL และ HTTPS
Android 4.0 เปิดตัวคลาส KeyChain เพื่ออนุญาตให้แอปพลิเคชันใช้ที่จัดเก็บข้อมูลรับรองระบบสำหรับคีย์ส่วนตัวและสายใบรับรอง
การรูทอุปกรณ์
ตามค่าเริ่มต้น บน Android เฉพาะเคอร์เนลและชุดย่อยเล็กๆ ของบริการหลักเท่านั้นที่รันด้วยสิทธิ์ระดับรูท SELinux ยังคงจำกัดกระบวนการพื้นที่ผู้ใช้ที่ทำงานในฐานะรูท การบูตที่ได้รับการยืนยันจะป้องกันไม่ให้ผู้ใช้หรือบริการที่มีสิทธิ์รูทแก้ไขระบบปฏิบัติการอย่างถาวร
ความสามารถในการปรับเปลี่ยนอุปกรณ์ Android ที่ตนเป็นเจ้าของมีความสำคัญต่อนักพัฒนาซอฟต์แวร์ที่ทำงานกับแพลตฟอร์ม Android ในอุปกรณ์ Android หลายเครื่อง ผู้ใช้สามารถปลดล็อก bootloader เพื่ออนุญาตให้ติดตั้งระบบปฏิบัติการอื่นได้ ระบบปฏิบัติการสำรองเหล่านี้อาจอนุญาตให้เจ้าของเข้าถึงรูทเพื่อวัตถุประสงค์ในการดีบักแอปพลิเคชันและส่วนประกอบของระบบ หรือเพื่อเข้าถึงคุณลักษณะที่ไม่ได้นำเสนอในแอปพลิเคชันโดย Android API
ในอุปกรณ์บางอย่าง บุคคลที่มีอำนาจควบคุมอุปกรณ์และสาย USB จะสามารถติดตั้งระบบปฏิบัติการใหม่ที่มอบสิทธิ์การรูทให้กับผู้ใช้ เพื่อปกป้องข้อมูลผู้ใช้ที่มีอยู่จากการบุกรุก กลไกการปลดล็อก bootloader ต้องการให้ bootloader ลบข้อมูลผู้ใช้ที่มีอยู่ซึ่งเป็นส่วนหนึ่งของขั้นตอนการปลดล็อก การเข้าถึงรูทที่ได้รับจากการใช้ประโยชน์จากจุดบกพร่องของเคอร์เนลหรือช่องโหว่ด้านความปลอดภัยสามารถข้ามการป้องกันนี้ได้
การเข้ารหัสข้อมูลด้วยคีย์ที่จัดเก็บไว้ในอุปกรณ์ไม่ได้ป้องกันข้อมูลแอปพลิเคชันจากผู้ใช้รูทบนอุปกรณ์ที่รูท แอปพลิเคชันสามารถเพิ่มชั้นของการปกป้องข้อมูลโดยใช้การเข้ารหัสด้วยคีย์ที่เก็บไว้นอกอุปกรณ์ เช่น บนเซิร์ฟเวอร์หรือรหัสผ่านของผู้ใช้ วิธีนี้สามารถให้การป้องกันชั่วคราวในขณะที่ไม่มีคีย์ แต่ในบางจุดต้องระบุคีย์ให้กับแอปพลิเคชัน จากนั้นผู้ใช้รูทจะสามารถเข้าถึงได้
แนวทางที่มีประสิทธิภาพมากขึ้นในการปกป้องข้อมูลจากผู้ใช้รูทคือการใช้โซลูชันฮาร์ดแวร์ OEM อาจเลือกใช้โซลูชันฮาร์ดแวร์ที่จำกัดการเข้าถึงเนื้อหาบางประเภท เช่น DRM สำหรับการเล่นวิดีโอ หรือพื้นที่เก็บข้อมูลที่เชื่อถือได้เกี่ยวกับ NFC สำหรับ Google Wallet ในกรณีที่อุปกรณ์สูญหายหรือถูกขโมย การเข้ารหัสพื้นที่เก็บข้อมูลช่วยให้มั่นใจว่าข้อมูลผู้ใช้ไม่สามารถเข้าถึงได้โดยไม่ทราบข้อมูลรับรองการล็อกหน้าจอของผู้ใช้
คุณลักษณะด้านความปลอดภัยของผู้ใช้
การเข้ารหัสที่เก็บข้อมูล
CDD กำหนดให้อุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 10 หรือสูงกว่า และอุปกรณ์ส่วนใหญ่ที่เปิดใช้งานด้วย Android 6.0 หรือสูงกว่า ต้องเปิดใช้งานการเข้ารหัสพื้นที่เก็บข้อมูลทันที
การใช้งานการเข้ารหัสพื้นที่เก็บข้อมูลในปัจจุบันของ Android คือ การเข้ารหัสตามไฟล์ ร่วมกับ การเข้ารหัสข้อมูลเมตา การเข้ารหัสตามไฟล์จะเข้ารหัสเนื้อหาและชื่อไฟล์ในพาร์ติชันข้อมูลผู้ใช้อย่างโปร่งใส โดยใช้คีย์ที่แตกต่างกันสำหรับไดเร็กทอรีต่างๆ มีไดเร็กทอรีพื้นที่เก็บข้อมูลที่เข้ารหัสข้อมูลรับรองและเข้ารหัสอุปกรณ์สำหรับผู้ใช้แต่ละราย รวมถึงโปรไฟล์งานด้วย
การเข้ารหัสข้อมูลเมตาช่วยเสริมการเข้ารหัสตามไฟล์ โดยจะเข้ารหัสบล็อกทั้งหมดบนพาร์ติชันข้อมูลผู้ใช้ที่ยังไม่ได้เข้ารหัสโดยการเข้ารหัสตามไฟล์ โดยใช้คีย์ที่ไม่ได้ผูกไว้กับข้อมูลรับรองหน้าจอล็อกของผู้ใช้ แต่ยังคงป้องกันโดย Verified Boot
การป้องกันข้อมูลประจำตัวของ Lockscreen
Android สามารถกำหนดค่าให้ตรวจสอบข้อมูลรับรองหน้าจอล็อกที่ผู้ใช้ระบุ (PIN, รหัสผ่าน หรือรูปแบบ) ก่อนที่จะให้สิทธิ์เข้าถึงอุปกรณ์ นอกเหนือจากการป้องกันการใช้อุปกรณ์โดยไม่ได้รับอนุญาตแล้ว ข้อมูลรับรองหน้าจอล็อกยังปกป้องคีย์เข้ารหัสสำหรับข้อมูลรับรองที่เข้ารหัสด้วย ผู้ดูแลระบบอุปกรณ์อาจต้องใช้ข้อมูลรับรองการล็อกหน้าจอและ/หรือกฎความซับซ้อนของข้อมูลรับรอง
การดูแลระบบอุปกรณ์
Android 2.2 และใหม่กว่ามี Android Device Administration API ซึ่งมีคุณสมบัติการดูแลอุปกรณ์ที่ระดับระบบ ตัวอย่างเช่น แอปพลิเคชันอีเมล Android ในตัวใช้ API เพื่อปรับปรุงการรองรับ Exchange ผ่านแอปพลิเคชันอีเมล ผู้ดูแลระบบ Exchange สามารถบังคับใช้นโยบายข้อมูลรับรองการล็อคหน้าจอ — รวมถึงรหัสผ่านที่เป็นตัวอักษรและตัวเลขหรือ PIN ที่เป็นตัวเลข — ในอุปกรณ์ต่างๆ ผู้ดูแลระบบยังสามารถล้างข้อมูลจากระยะไกล (นั่นคือ เปิดใช้ค่าเริ่มต้นจากโรงงาน) เมื่อโทรศัพท์สูญหายหรือถูกขโมย
นอกเหนือจากการใช้งานในแอปพลิเคชันที่มาพร้อมกับระบบ Android แล้ว API เหล่านี้จะพร้อมใช้งานสำหรับผู้ให้บริการโซลูชันการจัดการอุปกรณ์ที่เป็นบุคคลที่สาม รายละเอียดเกี่ยวกับ API มีให้ที่ การดูแลระบบอุปกรณ์