ความปลอดภัยของระบบและเคิร์กัล

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

ความปลอดภัยของ Linux

พื้นฐานของแพลตฟอร์ม Android คือเคอร์เนล Linux เรามีการใช้เคอร์เนล Linux อย่างแพร่หลายมาหลายปีแล้ว และใช้ในสภาพแวดล้อมที่มีความละเอียดอ่อนด้านความปลอดภัยหลายล้านแห่ง ตลอดประวัติศาสตร์ที่นักพัฒนาซอฟต์แวร์หลายพันคนทำการวิจัย โจมตี และแก้ไขอยู่อย่างต่อเนื่อง ทำให้ Linux กลายเป็นเคอร์เนลที่เสถียรและปลอดภัยซึ่งได้รับความไว้วางใจจากบริษัทและผู้เชี่ยวชาญด้านความปลอดภัยหลายราย

เคอร์เนล Linux เป็นพื้นฐานสําหรับสภาพแวดล้อมการประมวลผลแบบเคลื่อนที่ ซึ่งให้ฟีเจอร์ด้านความปลอดภัยที่สําคัญหลายอย่างแก่ Android ได้แก่

  • รูปแบบสิทธิ์ที่อิงตามผู้ใช้
  • การแยกกระบวนการ
  • กลไกแบบขยายได้สำหรับ IPC ที่ปลอดภัย
  • ความสามารถในการนําส่วนที่ไม่จําเป็นและอาจไม่ปลอดภัยของเคอร์เนลออก

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

  • ป้องกันไม่ให้ผู้ใช้ ก อ่านไฟล์ของผู้ใช้ ข
  • ตรวจสอบว่าผู้ใช้ ก. ไม่ได้ใช้หน่วยความจำของผู้ใช้ ข. จนหมด
  • ช่วยให้มั่นใจว่าผู้ใช้ ก. จะไม่ใช้ทรัพยากร CPU ของผู้ใช้ ข. จนหมด
  • ตรวจสอบว่าผู้ใช้ ก. ไม่ได้ใช้อุปกรณ์ของผู้ใช้ ข. จนหมด (เช่น โทรศัพท์, GPS และบลูทูธ)

แซนด์บ็อกซ์แอปพลิเคชัน

ความปลอดภัยของแอป Android บังคับใช้โดยแซนด์บ็อกซ์แอปพลิเคชัน ซึ่งจะแยกแอปออกจากกัน และปกป้องแอปและระบบจากแอปที่เป็นอันตราย โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อแซนด์บ็อกซ์ของแอปพลิเคชัน

พาร์ติชันระบบและโหมดปลอดภัย

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

สิทธิ์ของระบบไฟล์

ในสภาพแวดล้อมสไตล์ UNIX สิทธิ์ของระบบไฟล์จะตรวจสอบว่าผู้ใช้รายหนึ่งไม่สามารถแก้ไขหรืออ่านไฟล์ของผู้ใช้รายอื่นได้ ในกรณีของ Android แอปแต่ละแอปจะทํางานเป็นผู้ใช้ของตนเอง ไฟล์ที่สร้างโดยแอปหนึ่งจะอ่านหรือแก้ไขโดยแอปอื่นไม่ได้ เว้นแต่นักพัฒนาแอปจะแชร์ไฟล์กับแอปอื่นๆ อย่างชัดเจน

Security-Enhanced 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 หลายรุ่น ผู้ใช้สามารถปลดล็อกโปรแกรมบูตเพื่ออนุญาตให้ติดตั้งระบบปฏิบัติการอื่นได้ ระบบปฏิบัติการอื่นๆ เหล่านี้อาจอนุญาตให้เจ้าของได้รับสิทธิ์เข้าถึงระดับรูทเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องของแอปและคอมโพเนนต์ของระบบ หรือเพื่อเข้าถึงฟีเจอร์ที่ 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 ได้ที่การดูแลระบบอุปกรณ์