ความปลอดภัย

เพื่อป้องกันการเรียกใช้เพย์โหลดตามอำเภอใจภายใน pVM นั้น Android Virtualization Framework (AVF) จะใช้วิธีการรักษาความปลอดภัยแบบเลเยอร์ซึ่งแต่ละเลเยอร์จะเพิ่มการบังคับใช้เพิ่มเติม ต่อไปนี้คือรายการเลเยอร์ความปลอดภัย AVF:

  • Android – Android ช่วยให้มั่นใจได้ว่าเฉพาะแอปที่มีสิทธิ์ pVM เท่านั้นที่ได้รับอนุญาตให้สร้างหรือตรวจสอบ pVM

  • Bootloader – ตัวโหลดบูตช่วยให้แน่ใจว่าเฉพาะอิมเมจ pVM ที่ลงนามโดย Google หรือผู้จำหน่ายอุปกรณ์เท่านั้นที่ได้รับอนุญาตให้บู๊ตและปฏิบัติตามขั้นตอน Android Verified Boot สถาปัตยกรรมนี้บอกเป็นนัยว่าแอปที่รัน pVM ไม่สามารถรวมเคอร์เนลของตนเองได้

  • pVM – pVM ให้การป้องกันในเชิงลึก เช่น SELinux สำหรับเพย์โหลดที่ทำงานใน pVM การป้องกันในเชิงลึกไม่อนุญาตให้ใช้ข้อมูลการแมปเป็นไฟล์เรียกทำงาน ( neverallow execmem ) และทำให้แน่ใจว่า W^X เก็บไว้สำหรับไฟล์ทุกประเภท

โมเดลความปลอดภัย

การรักษาความลับ ความสมบูรณ์ และความพร้อมใช้งาน หรือที่เรียกว่า CIA triad เป็นแบบจำลองที่ออกแบบมาเพื่อเป็นแนวทางในนโยบายการรักษาความปลอดภัยข้อมูล:

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

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

การรักษาความลับและความซื่อสัตย์

การรักษาความลับเกิดขึ้นจากคุณสมบัติการแยกหน่วยความจำที่บังคับใช้โดยไฮเปอร์ไวเซอร์ pKVM pKVM ติดตาม ความเป็นเจ้าของหน่วยความจำ ของเพจหน่วยความจำกายภาพแต่ละเพจและคำขอใดๆ จากเจ้าของสำหรับเพจที่จะแชร์ pKVM ช่วยให้แน่ใจว่ามีเพียง pVM ที่มีสิทธิ์เท่านั้น (โฮสต์และแขก) เท่านั้นที่มีการแมปเพจที่ระบุในตารางเพจสเตจ 2 ที่ควบคุมโดยไฮเปอร์ไวเซอร์ สถาปัตยกรรมนี้ยืนยันว่าเนื้อหาของหน่วยความจำที่ pVM เป็นเจ้าของยังคงเป็นส่วนตัว เว้นแต่เจ้าของจะแชร์กับ pVM อื่นอย่างชัดเจน

ข้อจำกัดในการรักษาความลับยังขยายไปถึงหน่วยงานใดๆ ในระบบที่ดำเนินการเข้าถึงหน่วยความจำในนามของ pVM กล่าวคือ อุปกรณ์และบริการที่ รองรับ DMA ซึ่ง ทำงานในเลเยอร์ที่มีสิทธิพิเศษมากขึ้น ผู้จำหน่าย SoC ต้องปฏิบัติตามข้อกำหนดชุดใหม่ก่อนจึงจะสามารถรองรับ pKVM ได้ มิฉะนั้นจะไม่สามารถระบุการรักษาความลับได้

ความสมบูรณ์ใช้ได้กับทั้งข้อมูลในหน่วยความจำและการคำนวณ:

  • pVM ไม่สามารถแก้ไขหน่วยความจำของกันและกันได้หากไม่ได้รับความยินยอม
  • pVM ไม่สามารถมีอิทธิพลต่อสถานะ CPU ของกันและกัน

ข้อกำหนดเหล่านี้บังคับใช้โดยไฮเปอร์ไวเซอร์ แต่ปัญหาเกี่ยวกับความสมบูรณ์ของข้อมูลยังเกิดขึ้นกับการจัดเก็บข้อมูลเสมือนซึ่งต้องใช้โซลูชันอื่นๆ เช่น dm-verity หรือ AuthFS

หลักการเหล่านี้ไม่แตกต่างจากการแยกกระบวนการที่นำเสนอโดย Linux ซึ่งการเข้าถึงหน้าหน่วยความจำถูกควบคุมด้วยตารางหน้าระยะที่ 1 และสวิตช์บริบทของเคอร์เนลระหว่างกระบวนการ อย่างไรก็ตาม ส่วน EL2 ของ pKVM ซึ่งบังคับใช้คุณสมบัติเหล่านี้ มีพื้นผิวการโจมตีประมาณครึ่งหนึ่งเมื่อเทียบกับเคอร์เนล Linux ทั้งหมด (ประมาณ 10,000 โค้ดเทียบกับ 20 ล้านบรรทัดของโค้ด) ดังนั้นจึงให้การรับประกันที่แข็งแกร่งกว่าในกรณีการใช้งานที่ละเอียดอ่อนเกินกว่าจะพึ่งพาได้ เกี่ยวกับการแยกกระบวนการ

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

ส่วนที่เหลือของเอกสารนี้ครอบคลุมถึงการรักษาความลับและความสมบูรณ์ซึ่งรับประกันว่าแต่ละองค์ประกอบรอบ pKVM มีให้

ไฮเปอร์ไวเซอร์

pKVM คือไฮเปอร์ไวเซอร์ที่ใช้ KVM ที่แยก pVM และ Android ออกจากสภาพแวดล้อมการดำเนินการที่ไม่น่าเชื่อถือร่วมกัน คุณสมบัติเหล่านี้ถือในกรณีที่มีการประนีประนอมภายใน pVM รวมถึงโฮสต์ ไฮเปอร์ไวเซอร์ทางเลือกที่สอดคล้องกับ AVF จำเป็นต้องจัดเตรียมคุณสมบัติที่คล้ายคลึงกัน

  • pVM ไม่สามารถเข้าถึงเพจที่เป็นของเอนทิตีอื่น เช่น pVM หรือไฮเปอร์ไวเซอร์ เว้นแต่จะมีการแบ่งปันอย่างชัดเจนโดยเจ้าของเพจ กฎนี้รวมโฮสต์ pVM และใช้กับทั้งการเข้าถึง CPU และ DMA
  • ก่อนที่เพจที่ใช้โดย pVM จะถูกส่งกลับไปยังโฮสต์ เช่น เมื่อ pVM ถูกทำลาย เพจจะถูกล้าง
  • หน่วยความจำของ pVM และเฟิร์มแวร์ pVM ทั้งหมดจากการบู๊ตอุปกรณ์เครื่องเดียวจะถูกล้างก่อนที่ OS bootloader จะทำงานในการบู๊ตอุปกรณ์ในครั้งต่อๆ ไป
  • เมื่อมีการแนบดีบักเกอร์ฮาร์ดแวร์ เช่น SJTAG pVM จะไม่สามารถเข้าถึงคีย์ที่สร้างเสร็จก่อนหน้านี้ได้
  • เฟิร์มแวร์ pVM ไม่สามารถบู๊ตได้หากไม่สามารถตรวจสอบอิมเมจเริ่มต้นได้
  • เฟิร์มแวร์ pVM ไม่สามารถบู๊ตได้หากความสมบูรณ์ของ instance.img ถูกบุกรุก
  • Boot Certificate Chain (BCC) และ Compound Device Identifiers (CDI) ที่จัดเตรียมให้กับอินสแตนซ์ pVM สามารถรับได้โดยอินสแตนซ์นั้นเท่านั้น

ระบบปฏิบัติการสำหรับแขก

Microdroid เป็นตัวอย่างของระบบปฏิบัติการที่ทำงานอยู่ใน pVM Microdroid ประกอบด้วย U-boot-based bootloader, GKI และชุดย่อยของพื้นที่ผู้ใช้ Android และตัวเรียกใช้เพย์โหลด คุณสมบัติเหล่านี้ถือในกรณีที่มีการประนีประนอมภายใน pVM รวมถึงโฮสต์ ระบบปฏิบัติการทางเลือกที่ทำงานใน pVM ควรมีคุณสมบัติที่คล้ายคลึงกัน

  • Microdroid จะไม่สามารถบู๊ตได้หากไม่สามารถตรวจสอบ vbmeta.img boot.img super.img vbmeta\_system.img
  • Microdroid จะไม่บู๊ตหากการตรวจสอบ APK ล้มเหลว
  • อินสแตนซ์ Microdroid เดียวกันจะไม่สามารถบู๊ตได้แม้ว่าจะอัปเดต APK แล้ว
  • Microdroid จะไม่บู๊ตหาก APEX ใดไม่ผ่านการตรวจสอบ
  • Microdroid จะไม่บู๊ต (หรือบู๊ตด้วยสถานะเริ่มต้นใหม่ทั้งหมด) หาก instance.img ถูกแก้ไขภายนอก pVM ของแขก
  • Microdroid ให้การรับรองกับห่วงโซ่การบูต
  • การแก้ไขใดๆ (ไม่ได้ลงนาม) กับภาพดิสก์ที่แชร์กับ guest pVM ทำให้เกิดข้อผิดพลาด I/O ที่ฝั่ง pVM
  • BCC และ CDI ที่จัดเตรียมให้กับอินสแตนซ์ pVM สามารถรับได้โดยอินสแตนซ์นั้นเท่านั้น

Android

คุณสมบัติเหล่านี้เป็นคุณสมบัติที่ Android ดูแลในฐานะโฮสต์ แต่ไม่ถือเป็นจริงในกรณีที่โฮสต์ประนีประนอม:

  • guest pVM ไม่สามารถโต้ตอบโดยตรงกับ (เช่น ทำการเชื่อมต่อ vsock กับ) guest pVM อื่นๆ
  • เฉพาะ VirtualizationService ในโฮสต์ pVM เท่านั้นที่สามารถสร้างช่องทางการสื่อสารไปยัง pVM ได้ (หมายเหตุ: สามารถส่งผ่านช่องทางที่สร้างไปยังผู้อื่นได้)
  • เฉพาะแอปที่ลงนามด้วยคีย์แพลตฟอร์มเท่านั้นที่สามารถขออนุญาตเพื่อสร้าง เป็นเจ้าของ หรือโต้ตอบกับ pVM
  • ตัวระบุที่เรียกว่า ตัวระบุบริบท (CID) ใช้ในการตั้งค่าการเชื่อมต่อ vsock ระหว่างโฮสต์และ pVM จะไม่ถูกนำมาใช้ซ้ำในขณะที่โฮสต์ pVM กำลังทำงานอยู่ ตัวอย่างเช่น ไม่สามารถแทนที่ pVM ที่ทำงานอยู่ด้วยอันอื่นได้

ความพร้อมใช้งาน

ในบริบทของ pVM ความพร้อมใช้งานหมายถึงโฮสต์ที่จัดสรรทรัพยากรที่เพียงพอให้กับแขกเพื่อให้แขกสามารถทำงานที่พวกเขาได้รับการออกแบบให้ทำ

ความรับผิดชอบของโฮสต์รวมถึงการตั้งเวลา CPU เสมือนของ pVM KVM ซึ่งแตกต่างจากไฮเปอร์ไวเซอร์ Type-1 แบบดั้งเดิม เช่น Xen ตัดสินใจออกแบบอย่างชัดเจนเพื่อมอบหมายการจัดกำหนดการเวิร์กโหลดให้กับเคอร์เนลโฮสต์ ด้วยขนาดและความซับซ้อนของตัวจัดกำหนดการในปัจจุบัน การตัดสินใจออกแบบนี้จึงลดขนาดของฐานการคำนวณที่เชื่อถือได้ (TCB) ลงอย่างมาก และทำให้โฮสต์สามารถตัดสินใจเกี่ยวกับการจัดกำหนดการที่มีข้อมูลมากขึ้นเพื่อเพิ่มประสิทธิภาพการทำงาน อย่างไรก็ตาม โฮสต์ที่เป็นอันตรายสามารถเลือกที่จะไม่กำหนดเวลาแขกได้

ในทำนองเดียวกัน pKVM ยังมอบหมายการจัดการอินเตอร์รัปต์ทางกายภาพให้กับเคอร์เนลโฮสต์เพื่อลดความซับซ้อนของไฮเปอร์ไวเซอร์และปล่อยให้โฮสต์รับผิดชอบการจัดกำหนดการ มีการใช้ความพยายามเพื่อให้แน่ใจว่าการส่งต่อการขัดจังหวะของแขกจะส่งผลให้เกิดการปฏิเสธบริการเท่านั้น (การขัดจังหวะที่น้อยเกินไป มากเกินไป หรือเส้นทางที่ผิดพลาด)

สุดท้าย กระบวนการตรวจสอบเครื่องเสมือน (VMM) ของโฮสต์มีหน้าที่ในการจัดสรรหน่วยความจำและจัดหาอุปกรณ์เสมือน เช่น การ์ดเครือข่าย VMM ที่เป็นอันตรายสามารถระงับทรัพยากรจากแขกได้

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

บูตอย่างปลอดภัย

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

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

แต่ละขั้นตอนจะส่งอ็อบเจ็กต์ CBOR ที่เข้ารหัสแบบกำหนดเส้นทางไปยังสเตจถัดไป ออบเจ็กต์นี้มีข้อมูลลับและ BCC ซึ่งมีข้อมูลสถานะสะสม เช่น โหลดสเตจสุดท้ายอย่างปลอดภัยหรือไม่

อุปกรณ์ปลดล็อค

เมื่อปลดล็อกอุปกรณ์ด้วย fastboot oem unlock ข้อมูลผู้ใช้จะถูกล้าง กระบวนการนี้ปกป้องข้อมูลผู้ใช้จากการเข้าถึงโดยไม่ได้รับอนุญาต ข้อมูลที่เป็นส่วนตัวกับ pVM จะใช้งานไม่ได้เมื่อมีการปลดล็อกอุปกรณ์

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

ฝ่ายระยะไกลสามารถสังเกตสถานะที่อาจไม่ปลอดภัยนี้โดยตรวจ สอบสถานะการบูตที่ตรวจสอบแล้ว ของอุปกรณ์ในใบรับรองการรับรองหลัก