白丝美女被狂躁免费视频网站,500av导航大全精品,yw.193.cnc爆乳尤物未满,97se亚洲综合色区,аⅴ天堂中文在线网官网

基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法及系統(tǒng)

專利號(hào)
CN116484439B
公開(kāi)日期
2023-09-01
申請(qǐng)人
中國(guó)人民解放軍國(guó)防科技大學(xué)(湖南省長(zhǎng)沙市開(kāi)福區(qū)德雅路109號(hào))
發(fā)明人
董攀; 江仁霜; 黃辰林; 丁滟; 蹇松雷; 譚郁松; 李寶; 任怡; 王曉川; 張建鋒; 譚霜; 羅軍
IPC分類
G06F21/74; G06F8/30
技術(shù)領(lǐng)域
安全,unsafe,rust,acsl,指針,函數(shù),封裝,形式化,trait,union
地域: 湖南省 湖南省長(zhǎng)沙市

摘要

本發(fā)明公開(kāi)了一種基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法及系統(tǒng),通過(guò)等價(jià)功能替代設(shè)計(jì):針對(duì)訪問(wèn)或修改可變靜態(tài)變量和union字段兩類不安全操作,靜態(tài)分析不安全原因,使用標(biāo)準(zhǔn)庫(kù)函數(shù)和/或接口對(duì)兩類不安全操作進(jìn)行替換;內(nèi)部不安全封裝設(shè)計(jì):對(duì)于無(wú)法直接進(jìn)行替換的不安全操作,在不安全代碼暴露為不安全之前,將無(wú)法直接進(jìn)行替換的不安全操作正確的封裝在內(nèi)部不安全函數(shù)中;增加類ACSL形式化設(shè)計(jì):將ACSL形式化規(guī)約思想用于封裝得到的內(nèi)部不安全函數(shù)中,為內(nèi)部不安全封裝函數(shù)增加類ACSL形式化設(shè)計(jì)驗(yàn)證,提供生命周期支持和限制不安全狀態(tài)范圍集合。本發(fā)明降低形式化驗(yàn)證的復(fù)雜性,提升Rust操作系統(tǒng)安全性。

說(shuō)明書

1 2 3 4 5 6 7 8 9 10 11
基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法及系統(tǒng) 技術(shù)領(lǐng)域 [0001] 本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)技術(shù)領(lǐng)域,尤其公開(kāi)了一種基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法及系統(tǒng)。 背景技術(shù) [0002] 傳統(tǒng)系統(tǒng)級(jí)編程語(yǔ)言存在內(nèi)存和并發(fā)安全問(wèn)題,而多數(shù)內(nèi)存安全的編程語(yǔ)言存在明顯的運(yùn)行時(shí)開(kāi)銷,導(dǎo)致運(yùn)行效率下降。Rust語(yǔ)言通過(guò)其特有的安全特性(所有權(quán)和生命周期),從本質(zhì)上避免了許多嚴(yán)重的內(nèi)存錯(cuò)誤和并發(fā)錯(cuò)誤。并且Rust所編譯的二進(jìn)制代碼近似于C代碼的執(zhí)行效率。因此,Rust成為近些年最受歡迎的安全編程語(yǔ)言,常被用來(lái)構(gòu)建操作系統(tǒng)和瀏覽器等基礎(chǔ)軟件。然而,現(xiàn)有的Rust編寫的項(xiàng)目仍被發(fā)現(xiàn)存在不少嚴(yán)重的軟件缺陷。例如RustSec?Advisory數(shù)據(jù)庫(kù)已經(jīng)公布了數(shù)百個(gè)Rust漏洞,包括rulex漏洞、static?type?map未維護(hù)等問(wèn)題。Rust語(yǔ)言中的不安全因素成為Rust開(kāi)發(fā)的基礎(chǔ)軟件(如操作系統(tǒng))安全性提升的瓶頸。 [0003] 首先,Rust系統(tǒng)級(jí)項(xiàng)目存在缺陷的主要原因是包含不安全代碼,編譯器無(wú)法對(duì)這些代碼安全性進(jìn)行保證。具體而言,Rust包含兩類編程語(yǔ)言:Safe?Rust和Unsafe?Rust。使用Safe?Rust可以編寫出高性能安全的應(yīng)用程序和庫(kù),是Rust項(xiàng)目中的主要組成部分。 Unsafe?Rust使用“unsafe”關(guān)鍵字繞過(guò)一些安全檢查,執(zhí)行Safe?Rust難以實(shí)現(xiàn)的一些操作,主要包括五種功能:(1)解引用裸指針;(2)調(diào)用不安全函數(shù)或方法;(3)訪問(wèn)或修改可變靜態(tài)變量;(4)實(shí)現(xiàn)不安全trait;(5)按字段訪問(wèn)union。由于Rust語(yǔ)言獨(dú)特的安全機(jī)制(生命周期和所有權(quán)特性),完全基于Safe?Rust編寫的程序可以避免內(nèi)存錯(cuò)誤,Unsafe?Rust的使用是導(dǎo)致系統(tǒng)缺陷的主要原因。然而,從實(shí)際系統(tǒng)設(shè)計(jì)過(guò)程的角度而言,Unsafe?Rust代碼在實(shí)現(xiàn)的過(guò)程中是不可避免。Unsafe?Rust的不可回避性與系統(tǒng)安全性形成沖突,造成基于Rust語(yǔ)言開(kāi)發(fā)的操作系統(tǒng)安全性保障困難。因此,消除或減少Unsafe?Rust的使用是提升系統(tǒng)安全性的重點(diǎn)。 [0004] 其次,Rust系統(tǒng)中大部分缺陷來(lái)源于Unsafe?Rust代碼,但Safe?Rust和Unsafe?Rust的交互也會(huì)加劇Rust系統(tǒng)的不安全。Rust中許多內(nèi)存安全問(wèn)題是由于對(duì)生命周期的錯(cuò)誤理解和使用造成的,如內(nèi)存生命周期(MLC)錯(cuò)誤。當(dāng)Unsafe?Rust與Safe?Rust交互時(shí),顯著增加了生命周期分析和使用的復(fù)雜性,更容易引發(fā)系統(tǒng)缺陷。從Rust語(yǔ)言設(shè)計(jì)本質(zhì)而言,Rust僅使用“unsafe”關(guān)鍵字對(duì)Safe?Rust和Unsafe?Rust進(jìn)行區(qū)分,并沒(méi)有對(duì)安全和不安全操作進(jìn)行隔離。由于Unsafe?Rust操作的不可避免性,從而Unsafe?Rust和Safe?Rust的交互不可避免,其帶來(lái)的安全性問(wèn)題也不可避免。因此,有效地降低Unsafe?Rust和Safe?Rust的交互也是提升系統(tǒng)安全性的關(guān)鍵。 [0005] 最后,為了提高Rust語(yǔ)言開(kāi)發(fā)的軟件的安全性,可以采用形式化的方法對(duì)系統(tǒng)進(jìn)行驗(yàn)證。形式化通過(guò)數(shù)學(xué)的方法,來(lái)證明系統(tǒng)中不存在某個(gè)缺陷,從而完全消除不安全代碼的不安全性。由于操作系統(tǒng)需要驗(yàn)證的不安全代碼量龐大、邊界寬闊,并且內(nèi)核代碼之間的依賴性強(qiáng),導(dǎo)致形式化驗(yàn)證狀態(tài)空間爆炸,并且高度依賴工程師的能力,存在驗(yàn)證的開(kāi)銷高、效率較低的問(wèn)題。因此,形式化的方法通常只能完成對(duì)Rust系統(tǒng)一部分子集的驗(yàn)證,無(wú)法保證整個(gè)系統(tǒng)的安全性。對(duì)于其他Rust系統(tǒng)測(cè)試方案,可以看成靜態(tài)分析和動(dòng)態(tài)檢測(cè)兩類組成。然而,由于Rust發(fā)展年限短等因素,現(xiàn)有的缺陷檢測(cè)方案都存在一定不足。比如,模糊測(cè)試準(zhǔn)確率依賴于分支覆蓋率,存在復(fù)雜性高、用例程序的構(gòu)造復(fù)雜等問(wèn)題;靜態(tài)分析只能對(duì)特定問(wèn)題分析,并且存在假陰性和假陽(yáng)性問(wèn)題。 [0006] 總的來(lái)說(shuō),現(xiàn)有的Rust語(yǔ)言的方法并不能有效、安全和輕松地解決安全問(wèn)題。降低不安全的使用并減少安全代碼和不安全代碼之間的交互,是降低形式化驗(yàn)證復(fù)雜性的關(guān)鍵。

權(quán)利要求

1 2 3
1.一種基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法,其特征在于,包括以下步驟: 等價(jià)功能替代設(shè)計(jì):依據(jù)事先設(shè)置的第一原則,針對(duì)訪問(wèn)或修改可變靜態(tài)變量和union字段兩類不安全操作,靜態(tài)分析不安全原因,使用標(biāo)準(zhǔn)庫(kù)函數(shù)和/或接口對(duì)兩類不安全操作進(jìn)行替換; 內(nèi)部不安全封裝設(shè)計(jì):依據(jù)事先設(shè)置的第二原則,對(duì)于無(wú)法直接進(jìn)行替換的不安全操作,在不安全代碼暴露為不安全之前,將所述無(wú)法直接進(jìn)行替換的不安全操作正確的封裝在內(nèi)部不安全函數(shù)中; 增加類ACSL形式化設(shè)計(jì):依據(jù)事先設(shè)置的第三原則,將ACSL形式化規(guī)約思想用于封裝得到的內(nèi)部不安全函數(shù)中,為內(nèi)部不安全封裝函數(shù)增加類ACSL形式化設(shè)計(jì)驗(yàn)證,提供生命周期支持和限制不安全狀態(tài)范圍集合。 2.如權(quán)利要求1所述的基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法,其特征在于,所述等價(jià)功能替代設(shè)計(jì)的步驟包括: 可變靜態(tài)變量類型的替代:使用Rust中的智能指針Mutex來(lái)替代可變靜態(tài)變量的使用; 同時(shí)編譯器對(duì)智能指針Mutex運(yùn)行借用檢測(cè),若識(shí)別到操作違反借用規(guī)則進(jìn)行使用且系統(tǒng)在編譯的時(shí)候,則可通過(guò);若識(shí)別到操作違反借用規(guī)則進(jìn)行使用且系統(tǒng)在運(yùn)行時(shí),則會(huì)panic并退出; union類型的替代:使用基于自動(dòng)化特征檢測(cè)和替代的方法來(lái)對(duì)union中的操作進(jìn)行優(yōu)化;通過(guò)檢測(cè)union的使用,利用struct關(guān)鍵字來(lái)對(duì)union類型進(jìn)行替換。 3.如權(quán)利要求1所述的基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法,其特征在于,所述內(nèi)部不安全封裝設(shè)計(jì)的步驟包括: 解引用裸指針的封裝:通過(guò)調(diào)整不安全代碼的架構(gòu),使用內(nèi)部不安全函數(shù)對(duì)解引用裸指針的功能進(jìn)行封裝,把unsafe關(guān)鍵字包裹的解引用裸指針功能塊轉(zhuǎn)化為調(diào)度安全的庫(kù)函數(shù),在庫(kù)函數(shù)內(nèi)部使用內(nèi)部不安全函數(shù)進(jìn)行解引用裸指針的操作; 不安全函數(shù)和trait的封裝:對(duì)unsafe函數(shù)和trait進(jìn)行封裝優(yōu)化設(shè)計(jì),依據(jù)內(nèi)部不安全性原理,調(diào)整unsafe函數(shù)塊中不安全范圍,使用內(nèi)部不安全塊進(jìn)行替代。 4.如權(quán)利要求1所述的基于Rust語(yǔ)言的安全性增強(qiáng)模型開(kāi)發(fā)方法,其特征在于,所述增加類ACSL形式化設(shè)計(jì)的步驟包括: 解引用裸指針:使用’static來(lái)顯式標(biāo)注裸指針的生命周期;使用斷言對(duì)程序運(yùn)行到此處的狀態(tài)進(jìn)行約束,在解引用裸指針前插入斷言,對(duì)程序執(zhí)行到此次的內(nèi)存合法性進(jìn)行判斷,若識(shí)別到斷言代碼正確時(shí),則判斷運(yùn)行在斷言前的代碼是合格的代碼;
微信群二維碼
意見(jiàn)反饋