ในระดับระบบปฏิบัติการ แพลตฟอร์ม Android จะให้ความปลอดภัยของเคอร์เนลของ Linux รวมถึงแพลตฟอร์มการสื่อสารระหว่างกระบวนการ (IPC) ที่ปลอดภัยเพื่อให้การสื่อสารระหว่างแอปที่ทํางานในกระบวนการต่างๆ มีความปลอดภัย ฟีเจอร์ด้านความปลอดภัยเหล่านี้ที่ระดับระบบปฏิบัติการช่วยให้มั่นใจได้ว่าแซนด์บ็อกซ์แอปพลิเคชันจะจำกัดโค้ดเนทีฟด้วย ไม่ว่าโค้ดนั้นจะเป็นผลมาจากลักษณะการทํางานของแอปที่รวมอยู่ด้วยหรือเป็นการแสวงหาประโยชน์จากช่องโหว่ของแอป ระบบก็ออกแบบมาเพื่อป้องกันไม่ให้แอปที่เป็นอันตรายทําอันตรายต่อแอปอื่นๆ, ระบบ Android หรืออุปกรณ์ โปรดดูมาตรการที่ทำได้เพื่อเพิ่มความแข็งแกร่งให้กับเคอร์เนลในอุปกรณ์ที่หัวข้อการกำหนดค่าเคอร์เนล ดูการตั้งค่าที่จําเป็นในเอกสารคําจํากัดความความเข้ากันได้ (CDD) ของ Android
ความปลอดภัยของ Linux
พื้นฐานของแพลตฟอร์ม Android คือเคอร์เนล Linux เรามีการใช้เคอร์เนล Linux อย่างแพร่หลายมาหลายปีแล้ว และใช้ในสภาพแวดล้อมที่มีความละเอียดอ่อนด้านความปลอดภัยหลายล้านแห่ง นักพัฒนาซอฟต์แวร์หลายพันคนใช้ชื่อว่า Linux เป็นเคอร์เนลที่มีความเสถียรและปลอดภัย ซึ่งได้รับความไว้วางใจจากบริษัทและผู้เชี่ยวชาญด้านการรักษาความปลอดภัยจำนวนมาก ที่ผ่านมา การตรวจสอบ การโจมตี และแก้ไขปัญหาอย่างต่อเนื่อง
เคอร์เนล Linux เป็นพื้นฐานสําหรับสภาพแวดล้อมการประมวลผลแบบเคลื่อนที่ ซึ่งให้ฟีเจอร์ด้านความปลอดภัยที่สําคัญหลายอย่างแก่ Android ได้แก่
- รูปแบบสิทธิ์ที่อิงตามผู้ใช้
- การแยกกระบวนการ
- กลไกแบบขยายได้สําหรับ IPC ที่ปลอดภัย
- ความสามารถในการนำส่วนที่ไม่จำเป็นและอาจไม่ปลอดภัยของเคอร์เนลออก
เนื่องจากเป็นระบบปฏิบัติการแบบผู้ใช้หลายคน วัตถุประสงค์ด้านความปลอดภัยขั้นพื้นฐานของเคิร์กัล Linux คือการแยกทรัพยากรของผู้ใช้ออกจากกัน หลักปรัชญาด้านความปลอดภัยของ Linux คือการปกป้องทรัพยากรของผู้ใช้จากผู้ใช้รายอื่น โดย Linux จะดำเนินการดังนี้
- ป้องกันไม่ให้ผู้ใช้ A อ่านไฟล์ของผู้ใช้ B
- ตรวจสอบว่าผู้ใช้ A ไม่ได้ใช้หน่วยความจำของผู้ใช้ B จนหมด
- ตรวจสอบว่าผู้ใช้ A ไม่ได้ใช้ทรัพยากร CPU ของผู้ใช้ B จนหมด
- ตรวจสอบว่าผู้ใช้ ก. ไม่ได้ใช้อุปกรณ์ของผู้ใช้ ข. จนหมด (เช่น โทรศัพท์, GPS และบลูทูธ)
แซนด์บ็อกซ์แอปพลิเคชัน
ความปลอดภัยของแอป Android บังคับใช้โดยแซนด์บ็อกซ์แอปพลิเคชัน ซึ่งจะแยกแอปออกจากกัน และปกป้องแอปและระบบจากแอปที่เป็นอันตราย ดูรายละเอียดเพิ่มเติมได้ที่ Application Sandbox
พาร์ติชันระบบและโหมดปลอดภัย
พาร์ติชันต่างๆ ที่ปกป้องความสมบูรณ์มีเคอร์เนลของ Android รวมถึงไลบรารีระบบปฏิบัติการ รันไทม์ของแอป เฟรมเวิร์กแอป และแอป พาร์ติชันนี้ได้รับการตั้งค่าเป็นแบบอ่านอย่างเดียว เมื่อผู้ใช้บูตอุปกรณ์เข้าสู่โหมดปลอดภัย เจ้าของอุปกรณ์อาจเปิดแอปของบุคคลที่สามด้วยตนเองได้ แต่จะไม่ได้เปิดโดยค่าเริ่มต้น
สิทธิ์ของระบบไฟล์
ในสภาพแวดล้อมแบบ UNIX สิทธิ์ของระบบไฟล์จะตรวจสอบว่าผู้ใช้ 1 รายแก้ไขหรืออ่านไฟล์ของผู้ใช้รายอื่นไม่ได้ ในกรณีของ Android แต่ละแอปจะทำงานในฐานะผู้ใช้ของตนเอง ไฟล์ที่สร้างโดยแอปหนึ่งจะอ่านหรือแก้ไขโดยแอปอื่นไม่ได้ เว้นแต่นักพัฒนาแอปจะแชร์ไฟล์กับแอปอื่นๆ อย่างชัดเจน
Linux ที่เพิ่มประสิทธิภาพด้านความปลอดภัย
Android ใช้ Security-Enhanced Linux (SELinux) เพื่อใช้นโยบายการควบคุมการเข้าถึงและสร้างการควบคุมการเข้าถึงแบบบังคับ (mac) ในกระบวนการ โปรดดูรายละเอียดที่หัวข้อ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 คือการเข้ารหัสตามไฟล์ร่วมกับการเข้ารหัสข้อมูลเมตา การเข้ารหัสตามไฟล์จะเข้ารหัสเนื้อหาและชื่อไฟล์ในพาร์ติชันข้อมูลผู้ใช้อย่างโปร่งใส โดยใช้คีย์ที่แตกต่างกันสำหรับไดเรกทอรีต่างๆ โดยมีไดเรกทอรีพื้นที่เก็บข้อมูลที่เข้ารหัสข้อมูลเข้าสู่ระบบและเข้ารหัสอุปกรณ์สำหรับผู้ใช้แต่ละราย รวมถึงโปรไฟล์งาน
การเข้ารหัสข้อมูลเมตาจะช่วยเสริมการเข้ารหัสตามไฟล์ ซึ่งจะเข้ารหัสบล็อกทั้งหมดในพาร์ติชันข้อมูลผู้ใช้ที่ยังไม่ได้เข้ารหัสด้วยการเข้ารหัสตามไฟล์ โดยใช้คีย์ที่ไม่ได้ผูกกับข้อมูลเข้าสู่ระบบหน้าจอล็อกของผู้ใช้ แต่ยังคงได้รับการปกป้องด้วยการเปิดเครื่องที่ได้รับการยืนยัน
การป้องกันข้อมูลเข้าสู่ระบบในหน้าจอล็อก
Android สามารถกําหนดค่าให้ยืนยันข้อมูลเข้าสู่ระบบหน้าจอล็อกที่ผู้ใช้ระบุ (PIN, รหัสผ่าน หรือรูปแบบ) ก่อนที่จะให้สิทธิ์เข้าถึงอุปกรณ์ นอกเหนือจากการป้องกันการใช้อุปกรณ์โดยไม่ได้รับอนุญาตแล้ว ข้อมูลเข้าสู่ระบบหน้าจอล็อกจะปกป้องคีย์การเข้ารหัสสำหรับข้อมูลที่เข้ารหัสข้อมูลเข้าสู่ระบบด้วย ผู้ดูแลระบบอุปกรณ์อาจกำหนดให้ต้องใช้ข้อมูลเข้าสู่ระบบในหน้าจอล็อกและ/หรือกฎความซับซ้อนของข้อมูลเข้าสู่ระบบ
การดูแลระบบอุปกรณ์
Android 2.2 ขึ้นไปมี Android Device Administration API ซึ่งให้บริการฟีเจอร์การจัดการอุปกรณ์ที่ระดับระบบ เช่น แอปอีเมล Android ในตัวจะใช้ API เพื่อปรับปรุงการรองรับของ Exchange ผู้ดูแลระบบ Exchange จะบังคับใช้นโยบายข้อมูลเข้าสู่ระบบสำหรับหน้าจอล็อก เช่น รหัสผ่านที่เป็นตัวอักษรและตัวเลขคละกัน หรือ PIN ที่เป็นตัวเลข ในอุปกรณ์ต่างๆ ได้ผ่านแอปอีเมล ผู้ดูแลระบบยังล้างข้อมูลจากระยะไกล (ซึ่งก็คือเปิดการกู้คืนค่าเริ่มต้นจากโรงงาน) โทรศัพท์มือถือที่สูญหายหรือถูกขโมยได้
นอกเหนือจากการใช้งานในแอปที่มาพร้อมกับระบบ Android แล้ว API เหล่านี้ยังมีให้บริการแก่ผู้ให้บริการโซลูชันการจัดการอุปกรณ์บุคคลที่สามอีกด้วย ดูรายละเอียดเกี่ยวกับ API ได้ที่การดูแลระบบอุปกรณ์