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