CHERIoT 1.0 proqram və aparat platformasının (RISC-V üçün İnternet of Things imkanları əlavə etməsi) yekun spesifikasiyası təqdim edilib. Bu spesifikasiya təhlükəsiz cihazların yaradılması üçün əmrlər toplusunun (ISA) genişləndirilməsini müəyyən edir. CHERIoT, yaddaş girişini izləmək, göstəricilərlə işləyərkən düzgünlüyü yoxlamaq və kod bloklarının izolyasiyasını təmin etmək üçün aparat imkanları təqdim edir. Eyni zamanda, CHERIoT ISA-nın formal modelinin sabit buraxılışı da dərc edilib, bu model Sail dilində təyin edilib. Layihənin inkişafları BSD lisenziyası altında yayılır.
CHERIoT layihəsi, Microsoft tərəfindən C və C++ dillərində mövcud kodun təhlükəsizlik problemlərini həll etmək və eyni kodu yenidən işləmədən qorumaq üçün yaradılıb. Qoruma, yaddaşla işləyərkən göstəricilərin bütövlüyünü təmin edən, yaddaş sərhədlərini nəzarət edən və sərbəst buraxılmış yaddaşa girişin qarşısını alan genişləndirilmiş prosessor əmrlər dəstini (ISA) istifadə edən dəyişdirilmiş kompilyator vasitəsilə həyata keçirilir. 2023-cü ildə CHERIoT-in inkişafları açıq qaynağa çevrildi və digər şirkətlərin də iştirak etdiyi birgə layihəyə çevrildi.
CHERIoT-in aparat komponentləri RISC-V arxitekturasına əsaslanan mikrokontroller şəklində hazırlanmışdır və qorunan CHERI prosessor arxitekturasasını (RISC-V-ə imkan əlavə etməsi) reallaşdırır. Bu, «capability» əsaslı yaddaş girişinə nəzarət modelini təqdim edir (hər oxuma və yazma əməliyyatı yaddaşda icazə alır). CHERIoT-da təqdim olunan əmrlər dəstinin (ISA) əsasında proqram modeli yaradılıb ki, bu da yaddaşla işləmənin təhlükəsizliyini təmin edir, azad edilmiş yaddaşa girişin qarşısını alır və yaddaş üzərinə girişin izolyasiyası üçün yüngül sistem həyata keçirir.
Bu proqram qoruma modeli, C/C++ dil modelinə birbaşa təsir edir ki, bu da onu mövcud tətbiqlərdə istifadə etməyə imkan verir. Bu tətbiqlərin qorunması yalnız yenidən kompilyasiya və CHERIoT ISA-nı dəstəkləyən avadanlıqda işə salınmağı tələb edir. Məsələn, CHERIoT-un tətbiqi, kodda heç bir dəyişiklər edilmədən avtomatik sərhəd yoxlaması, yaddaş bölgələrinin ömrünün izlənməsi və etibarsız məlumatlarla işləyən komponentlərdə göstəricilərin bütövlüyünün təmin edilməsini mümkün edir.
CHERIoT vasitəsilə qarşısını alan problemlər arasında:
- Yaddaşda obyektin sərhədini aşmaq;
- Göstəricilərin dəyişdirilməsi (CHERIoT tətbiq edildikdə, bütün göstəricilər artıq mövcud göstəricilərdən yaranmalıdır);
- Sərbəst buraxıldıqdan sonra yaddaşa giriş (hər hansı qeyri-dəqiq göstəricidən və ya sərbəst buraxılmış obyektə istinad edən göstəricidən yaddaşa giriş, CHERIoT tətbiq edildikdə istisna yaradılması ilə nəticələnir).
Layihənin spesifikasiyası və rəsmi modeli ilə yanaşı, CHERIoT ISA dəstəyi olan 32-bitlik RISC-V CPU Ibex-ın standart tətbiqi inkişaf etdirilir və modifikasiya edilmiş LLVM alətləri təqdim olunur. CPU-nun prototip sxemləri və aparat bloklarının təsvirləri Verilog dilində Apache 2.0 lisenziyası altında yayılır. İstifadə olunan CPU nüvəsi lowRISC layihəsindən Ibex-dir. CHERIoT Ibex nüvəsi əsasında ICENI çiplərinin kütləvi istehsalına hazırlıq görülür və onların satışa çıxarılması gələn il planlaşdırılır. Ayrıca, Microsoft tərəfindən CHERIoT ISA dəstəyi olan Kudu mikrocontroller-in inkişafı həyata keçirilir. Ibex və Kudu artıq CHERIoT 1.0 spesifikasiyasını tam şəkildə dəstəkləyir. RISC-V International təşkilatında RISC-V prosessorları üçün CHERI genişlənmələrinin standartlaşdırılması üzərində iş gedir.
Əlavə olaraq, FPGA əsasında hazırlanan emulator və inkişaf etdiricilər üçün qabaqcadan quraşdırılmış alət və Ibex CPU simulatoru olan Docker konteyneri inkişaf etdirilir, bu Verilator vasitəsilə həyata keçirilib. Bundan əlavə, CHERIoT əsasında 256 MB RAM-a malik ağıllı sistemlərdə belə bölmələrin (compartment) izolyasiyasını təmin edən CHERIoT RTOS real vaxt əməliyyat sisteminin prototipi hazırlanıb. CHERIoT RTOS-un kodu C++ dilində yazılıb və MIT lisenziyası altında yayılır. Əməliyyat sisteminin əsas komponentləri, məsələn, yükləyici, planlayıcı və yaddaş bölgüsü sistemi, bölmələr şəklində təşkil olunmuşdur.
CHERIoT RTOS-dakı kompartment, kodun və qlobal dəyişənlərin izolyasiyalı kombinasiyasıdır ki, bu da paylaşılan kitabxanaya bənzəyir, lakin sonuncudan fərqli olaraq öz vəziyyətini dəyişə (mutable) və ayrı təhlükəsizlik kontekstində işləyə bilər. Xaricdən heç bir kod kompartmentdəki koda idarəetmə vermək və obyektlərə giriş əldə edə bilmir, yalnız xüsusi təyin olunmuş giriş xətləri vasitəsilə və digər kompartmentin çağırılması zamanı açıq şəkildə təqdim olunan obyektlərin göstəricilərini istifadə edərək mümkündür. Kompartmentdəki kod və qlobal obyektlər üçün bütövlük və məxfilik təmin edilir.
Mənbə: opennet.ru
