- Ironclad คือ เคอร์เนลตระกูล Unix แบบเรียลไทม์ที่อิงการพิสูจน์ความถูกต้องเชิงรูปแบบ สำหรับการใช้งานทั่วไปและสภาพแวดล้อมแบบฝังตัว
- การพิสูจน์ความถูกต้องเชิงรูปแบบ (Formal verification) : ชุดกระบวนการและการตรวจสอบที่โค้ดเคอร์เนลต้องผ่านเพื่อรับประกัน การไม่มีข้อผิดพลาดขณะรันไทม์ (AoRTE, Absence of Runtime Errors) และความถูกต้องขององค์ประกอบต่าง ๆ
- เขียนด้วย SPARK และ Ada และประกอบด้วย ซอฟต์แวร์เสรี 100%
- รองรับ อินเทอร์เฟซที่เข้ากันได้กับ POSIX, มัลติทาสก์แบบแย่งการประมวลผล, การควบคุมการเข้าถึงแบบบังคับ (MAC) และ การจัดตารางแบบฮาร์ดเรียลไทม์
- เผยแพร่ภายใต้ สัญญาอนุญาต GPLv3 และคงโครงสร้างแบบ โอเพนซอร์สอย่างสมบูรณ์ โดยไม่มี firmware blob
- สามารถพอร์ตไปยังหลายแพลตฟอร์มได้ และกำลังขยายระบบนิเวศผ่านดิสโทรอย่าง Gloire
ภาพรวมของเคอร์เนลระบบปฏิบัติการ Ironclad
- Ironclad คือ เคอร์เนลตระกูล UNIX ที่รองรับเรียลไทม์ ซึ่งมีการนำ การพิสูจน์ความถูกต้องเชิงรูปแบบ (formal verification) มาใช้บางส่วน
- ออกแบบมาสำหรับทั้งงานทั่วไปและระบบฝังตัว
- การพิสูจน์ความถูกต้องเชิงรูปแบบ (Formal verification) : ชุดกระบวนการและการตรวจสอบที่โค้ดเคอร์เนลต้องผ่านเพื่อรับประกัน การไม่มีข้อผิดพลาดขณะรันไทม์ (AoRTE, Absence of Runtime Errors) และความถูกต้องขององค์ประกอบต่าง ๆ
- เพื่อสิ่งนี้จึงใช้ ** SPARK** ซึ่งเป็นซับเซ็ตของ Ada
- โค้ดทั้งหมดประกอบด้วย ซอฟต์แวร์เสรี
- เคอร์เนลมี อินเทอร์เฟซที่เข้ากันได้กับ POSIX และรองรับ มัลติทาสก์แบบแย่งการประมวลผล, การควบคุมการเข้าถึงแบบบังคับ (MAC) และ การจัดตารางแบบฮาร์ดเรียลไทม์
- มอบประสบการณ์การพัฒนาที่คล้ายกับสภาพแวดล้อม UNIX เดิม
- เป็นโครงสร้างที่เหมาะกับระบบที่ต้องการการควบคุมแบบเรียลไทม์
คุณลักษณะในฐานะซอฟต์แวร์เสรี
- Ironclad เผยแพร่เป็นโอเพนซอร์สอย่างสมบูรณ์ภายใต้ สัญญาอนุญาต GPLv3
- ไม่มี firmware blob รวมอยู่ในเคอร์เนล
- องค์ประกอบทั้งหมดของสแตกถูกจัดให้ในรูปแบบโอเพนซอร์ส
การพิสูจน์ความถูกต้องเชิงรูปแบบ (Formal Verification)
- ใช้ ความสามารถด้านการพิสูจน์ความถูกต้องเชิงรูปแบบของภาษา SPARK เพื่อรับประกันการไม่มีข้อผิดพลาดและความถูกต้องขององค์ประกอบหลัก
- SPARK ทำการตรวจสอบความสอดคล้องเชิงตรรกะของโค้ดในเชิงคณิตศาสตร์ โดยระบุ เงื่อนไขก่อนหน้า (Pre), เงื่อนไขภายหลัง (Post), การพึ่งพา (Depends) เป็นต้น ไว้ในโค้ด Ada
- สิ่งที่อยู่ในขอบเขตการตรวจสอบ ได้แก่ โมดูลเข้ารหัส, ระบบ MAC และ ฟังก์ชันที่เกี่ยวข้องกับส่วนติดต่อผู้ใช้
การพกพาและสภาพแวดล้อมการพัฒนา
- Ironclad ถูกพอร์ตไปยัง แพลตฟอร์มและบอร์ด หลายแบบ และออกแบบมาให้รองรับการพอร์ตเพิ่มเติมได้ง่าย
- พึ่งพาเพียง GNU toolchain จึงทำ cross-compilation ได้อย่างสะดวก
- ด้วย ความเข้ากันได้กับ POSIX จึงทำให้การพอร์ตซอฟต์แวร์และการพัฒนาทำได้ง่าย
ดิสโทรและระบบนิเวศ
- โครงการ Ironclad จัดเตรียม ดิสโทร (distribution) สำหรับสถาปัตยกรรมและบอร์ดหลากหลายแบบ
- ดิสโทรเสรีและโอเพนซอร์สที่เป็นตัวแทนคือ Gloire
- มี อิมเมจดิสโทรในรูปแบบ tarball ให้ดาวน์โหลด
การสนับสนุนโครงการและความยั่งยืน
- Ironclad ยังคงเป็น โครงการที่ใช้งาน ศึกษา และแก้ไขได้อย่างเสรี
- การดำเนินงานของโครงการพึ่งพา เงินบริจาคและทุนสนับสนุน
- ทุกการมีส่วนร่วมส่งผลโดยตรงต่อการขยายตัวและการพัฒนาของโครงการ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นโปรเจกต์ที่น่าสนใจ อยากรู้ข้อจำกัดของการพิสูจน์เชิงรูปนัยของ เวลาการทำงานกรณีแย่ที่สุด (WCET)
ยังมีเคอร์เนลที่ผ่านการตรวจพิสูจน์อื่น ๆ อย่าง seL4, atmosphere และยังสามารถวางชั้นความเข้ากันได้แบบ POSIX เหมือน genode ได้ด้วย
ยังมีเคอร์เนลที่เข้ากันได้สมบูรณ์และมีความ成熟อย่าง QNX หรือ VxWorks อยู่แล้ว ดังนั้นการตรวจพิสูจน์อย่างสมบูรณ์อาจไม่ได้เพิ่มคุณค่ามากนัก
แต่แทบไม่เคยเห็นกรณีที่มีทั้ง WCET + การตรวจพิสูจน์เชิงรูปนัย + ความเข้ากันได้กับ POSIX ครบพร้อมกัน
ในขั้นปัจจุบันยังมองว่ายากที่จะบอกว่ามี ความพร้อมใช้งาน สูงพอจะนำไปใช้กับงานเรียลไทม์ตามที่ระบุในเอกสารได้ทันที
seL4 เร็วกว่า Linux มาก แต่ตัวนี้ดูน่าจะช้า POSIX มีปัญหาโดยธรรมชาติอยู่แล้ว และ MAC ก็ซับซ้อนเกินไปจนใช้งานจริงได้ยาก
Ada อยู่ในกลุ่ม ภาษาแบบ Wirth (สาย Pascal) จนถึงตอนนี้เคอร์เนลคล้าย Unix ที่เขียนด้วยภาษาในสาย Wirth ที่ผมรู้จักมีแค่ TUNIS
TUNIS ถูกพัฒนาด้วย Concurrent Euclid
อีกทั้งในยุค 80 Sol ของ INRIA ก็ถูกพัฒนาด้วยภาษาถิ่นของ Pascal และให้สภาพแวดล้อมที่เข้ากันได้กับ Unix ก่อนจะต่อยอดไปเป็น Chorus
ยังมีบริษัทด้าน NDA ที่ใช้ชื่อ Ironclad อยู่ด้วย ควรระวังเรื่อง เครื่องหมายการค้า
ถึงอย่างนั้นก็ดีใจมากที่มีความพยายามแบบนี้ แต่ในโลกความจริง ห่วงโซ่ที่อ่อนแอที่สุดของความปลอดภัยคือชั้นเฟิร์มแวร์
ความฝันของผมคือฮาร์ดแวร์อย่าง Framework Computer จะมี เฟิร์มแวร์ EFI ที่ผ่านการตรวจพิสูจน์ และมีเฟิร์มแวร์ของแต่ละองค์ประกอบที่ผ่านการตรวจสอบได้
การสร้าง OS ใหม่เป็นเรื่องที่ ทะเยอทะยานมาก ช่วงนี้ Radiant Computer ก็เพิ่งถูกพูดถึง เลยสงสัยว่ายังมีโปรเจกต์น่าสนใจคล้ายกันอีกไหม
หวังว่าสักวัน เคอร์เนลที่ผ่านการตรวจพิสูจน์เชิงรูปนัยอย่างสมบูรณ์ จะกลายเป็นเรื่องแพร่หลาย
คงเป็นไปไม่ได้ที่จะพิสูจน์ Linux ทั้งหมด แต่ seL4 อาจมีโอกาสในตลาดอย่างสมาร์ตโฟนได้
ถ้าดูจาก โรดแมปการตรวจพิสูจน์ ของพวกเขา ก็ยังแรงเกินไปที่จะเรียกว่า “การตรวจพิสูจน์เชิงรูปนัย”
ไม่มีการพิสูจน์คุณสมบัติหลักของเคอร์เนล และยังไม่ถึงระดับของเคอร์เนลอย่าง seL4 หรือ Tock
CuBit เป็นอีก OS ที่เขียนด้วย SPARK/Ada
ดูซอร์สได้ที่ GitHub
สำหรับผู้ใช้ทั่วไป เคอร์เนลอย่างเดียวไม่มีประโยชน์อะไร
ตัวอย่าง OS ที่ใช้เคอร์เนล Ironclad คือ Gloire
เอกสารเกี่ยวกับ MAC จัดทำไว้ดีมาก (Mandatory Access Control)
พอดูคำว่า “สอบถามราคา” ของ SPARK แล้ว มันดูเหมือนคำว่า free ในอีกความหมาย มากกว่าจะเป็น ‘ซอฟต์แวร์เสรี’