Google ยังคงดำเนินการย้าย Android ไปยัง Rust ต่อไป 

สนิม-Android

Google กำลังทำงานเกี่ยวกับการโยกย้ายส่วนประกอบ Android ต่างๆ ไปยัง Rust อยู่แล้ว

เป็นเวลาหลายเดือนแล้วที่ เราได้แบ่งปันข่าวบางส่วนที่นี่ในบล็อก ไฮไลท์เกี่ยวกับการสนับสนุนและการยอมรับที่มี สนิมในโครงการและการพัฒนาต่างๆ ซึ่งส่วนใหญ่เป็นรุ่นใหญ่ เช่น Linux, Windows และแม้กระทั่ง Android

แม้ว่าจะได้รับการตอบรับอย่างดีจากบริษัทใหญ่ๆ แต่การเปลี่ยนมาใช้ Rust ก็ไม่ใช่เรื่องง่าย เนื่องจากแม้จะได้รับการยอมรับว่าเป็นภาษาโปรแกรมที่สองใน Linux Kernel แต่ Linus Torvalds ก็ต้องผ่านบางสิ่งมาบ้างจึงจะลองใช้ได้ การอนุมัติ.

ในกรณีของ Google สิ่งนี้ก็ไม่ใช่ข้อยกเว้น และเป็นเวลาหลายเดือนแล้วที่ Google ได้เปิดตัว Rust ในหลายโครงการและ Android เป็นหนึ่งในนั้นและมีการดำเนินการขั้นตอนการโยกย้ายที่มีการควบคุมอย่างเป็นธรรม เนื่องจากเป็นส่วนหนึ่งของความพยายามในการเสริมสร้างความปลอดภัยของส่วนประกอบซอฟต์แวร์ที่สำคัญของแพลตฟอร์มในขณะนี้ Google ประกาศว่างานการย้ายข้อมูลเสร็จสิ้นแล้ว ของเฟิร์มแวร์ "VM (pVM) ที่ได้รับการป้องกันของ Android Virtualization Framework" เป็นสนิม

เฟิร์มแวร์นี้ ใช้เพื่อจัดระเบียบการทำงานของเครื่องเสมือนที่เปิดใช้งานโดยไฮเปอร์ไวเซอร์ pVM จาก Android. ก่อนหน้านี้ เฟิร์มแวร์เขียนด้วยภาษา C และใช้งานบน U-Boot bootloader ซึ่งก่อนหน้านี้พบช่องโหว่ของโค้ดที่เกิดจากปัญหาหน่วยความจำ

ไฮเปอร์ไวเซอร์ pVM เข้าควบคุมตั้งแต่ระยะเริ่มต้นของการเริ่มต้น y ให้การแยกหน่วยความจำเครื่องเสมือนอย่างสมบูรณ์จากสภาพแวดล้อมโฮสต์ ป้องกันการเข้าถึงจากระบบโฮสต์ไปยังเครื่องเสมือนที่ได้รับการป้องกันซึ่งประมวลผลข้อมูลที่ละเอียดอ่อน เฟิร์มแวร์ pvmfm (เฟิร์มแวร์เครื่องเสมือนที่ได้รับการป้องกัน) เข้าควบคุมทันทีหลังจากบูตเครื่องเสมือน ตรวจสอบสภาพแวดล้อมที่สร้างขึ้น และตัดสินใจยกเลิกการบูตหากตรวจพบปัญหาด้านความสมบูรณ์ หรือสร้างใบรับรองการบูตสำหรับระบบแขกหากเป็นสายโซ่แห่งความไว้วางใจ

การเขียนใหม่ของ Rust ทำให้การปฏิบัติตาม "กฎสองข้อ" ของ Google ง่ายและปลอดภัยยิ่งขึ้น เพื่อรักษาส่วนประกอบของระบบ Android ให้ปลอดภัย ตามกฎนี้ โค้ดที่เพิ่มจะต้องตรงตามเงื่อนไขไม่เกินสองในสามเงื่อนไข: ทำงานกับข้อมูลอินพุตที่ไม่ได้รับการตรวจสอบ ใช้ภาษาการเขียนโปรแกรมที่ไม่ปลอดภัย (C/C++) และรันด้วยสิทธิ์ระดับสูง กฎนี้บอกเป็นนัยว่าโค้ดสำหรับการประมวลผลข้อมูลภายนอกจะต้องถูกลดสิทธิ์ให้เหลือน้อยที่สุด (แยกกัน) หรือเขียนในภาษาการเขียนโปรแกรมที่ปลอดภัย ตามสถิติของ Google ประมาณ 70% ของช่องโหว่ที่เป็นอันตรายที่ระบุทั้งหมดใน Android เกิดจากข้อผิดพลาดเมื่อทำงานกับหน่วยความจำ

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

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

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

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

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ในไฟล์ ลิงค์ต่อไปนี้


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา