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

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

ความปลอดภัยของลินุกซ์

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

เคอร์เนล Linux เป็นฐานสำหรับสภาพแวดล้อมการประมวลผลแบบเคลื่อนที่ ทำให้ Android มีคุณสมบัติด้านความปลอดภัยที่สำคัญหลายประการ รวมถึง:

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

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

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

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

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

พาร์ติชันระบบและเซฟโหมด

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

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

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

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

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

แนวทางที่มีประสิทธิภาพมากขึ้นในการปกป้องข้อมูลจากผู้ใช้รูทคือการใช้โซลูชันฮาร์ดแวร์ OEM อาจเลือกใช้โซลูชันฮาร์ดแวร์ที่จำกัดการเข้าถึงเนื้อหาบางประเภท เช่น DRM สำหรับการเล่นวิดีโอ หรือพื้นที่เก็บข้อมูลที่เชื่อถือได้ที่เกี่ยวข้องกับ NFC สำหรับ Google Wallet ในกรณีที่อุปกรณ์สูญหายหรือถูกขโมย การเข้ารหัสพื้นที่เก็บข้อมูลช่วยให้แน่ใจว่าข้อมูลผู้ใช้ไม่สามารถเข้าถึงได้โดยไม่ทราบข้อมูลรับรองหน้าจอล็อคของผู้ใช้

คุณสมบัติด้านความปลอดภัยของผู้ใช้

การเข้ารหัสการจัดเก็บข้อมูล

CDD กำหนดให้อุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 10 ขึ้นไป และอุปกรณ์ส่วนใหญ่ที่เปิดตัวด้วย Android 6.0 ขึ้นไป ต้องเปิดใช้งานการเข้ารหัสพื้นที่เก็บข้อมูลตั้งแต่แกะกล่อง

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

การเข้ารหัสข้อมูลเมตาช่วยเสริมการเข้ารหัสตามไฟล์ โดยจะเข้ารหัสบล็อกทั้งหมดบนพาร์ติชั่นข้อมูลผู้ใช้ที่ยังไม่ได้เข้ารหัสด้วยการเข้ารหัสแบบไฟล์ โดยใช้คีย์ที่ไม่ผูกกับข้อมูลรับรองหน้าจอล็อคของผู้ใช้ แต่ยังคงป้องกันโดย Verified Boot

การป้องกันข้อมูลรับรอง Lockscreen

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

การดูแลระบบอุปกรณ์

Android 2.2 และใหม่กว่ามี API การดูแลระบบอุปกรณ์ Android ซึ่งมีคุณลักษณะการดูแลระบบอุปกรณ์ในระดับระบบ ตัวอย่างเช่น แอปพลิเคชันอีเมล Android ในตัวใช้ API เพื่อปรับปรุงการสนับสนุน Exchange ผู้ดูแลระบบ Exchange สามารถบังคับใช้นโยบายข้อมูลประจำตัวของหน้าจอล็อกผ่านแอปพลิเคชันอีเมล รวมถึงรหัสผ่านตัวอักษรและตัวเลขหรือ PIN ที่เป็นตัวเลขในอุปกรณ์ต่างๆ ผู้ดูแลระบบยังสามารถล้างข้อมูลมือถือที่สูญหายหรือถูกขโมยจากระยะไกล (นั่นคือ เรียกคืนค่าเริ่มต้นจากโรงงาน)

นอกเหนือจากการใช้งานในแอปพลิเคชันที่มาพร้อมกับระบบ Android แล้ว API เหล่านี้ยังมีให้สำหรับผู้ให้บริการโซลูชันการจัดการอุปกรณ์บุคคลที่สามอีกด้วย รายละเอียดเกี่ยวกับ API มีอยู่ที่ Device Administration