自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

白宮發(fā)文,呼吁開發(fā)者放棄C、C++:Rust被「欽點(diǎn)」內(nèi)存安全

人工智能 新聞
近年來,C、C++ 編程語言成了美國官方的「眼中釘」,而內(nèi)存安全的 Rust 等語言搖身一變成了「新寵」。

近日,在一份 19 頁的報(bào)告《回歸基礎(chǔ)構(gòu)件:通往安全軟件之路》中,白宮國家網(wǎng)絡(luò)主任辦公室(ONCD)呼吁開發(fā)者使用「內(nèi)存安全的編程語言」,比如 Rust 語言。報(bào)告指出,從一開始就選擇內(nèi)存安全的編程語言,是以安全設(shè)計(jì)方式開發(fā)軟件的重要途徑。

此外,ONCD 表示,報(bào)告中的建議是與包括科技公司、學(xué)術(shù)界和其他機(jī)構(gòu)合作制定的,并收集了包括惠普、埃森哲和 Palantir 在內(nèi)等多家科技公司支持報(bào)告的意見。

圖片

報(bào)告地址:https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

其實(shí),這并不是美國官方機(jī)構(gòu)第一次呼吁放棄使用 C 和 C++ 了。

去年 12 月,美國網(wǎng)絡(luò)安全和基礎(chǔ)設(shè)施局(CISA)聯(lián)合其他機(jī)構(gòu)頒發(fā)了一份《內(nèi)存安全路線圖指南》, 其中就指出了 C 和 C++ 是內(nèi)存不安全的編程語言,并呼吁軟件開發(fā)商采用 Rust、Java 等其他內(nèi)存安全的編程語言。

來源:https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf

放棄 C、C++,轉(zhuǎn)向 Rust,只為內(nèi)存安全

既然強(qiáng)調(diào)了要使用內(nèi)存安全的編程語言,那首先來了解一下什么是內(nèi)存安全。所謂內(nèi)存安全是指防止處理內(nèi)存訪問時(shí)出現(xiàn) bug 和漏洞,比如緩沖區(qū)溢出和懸空指針。

內(nèi)存不安全的危害有多大呢?2019 年,微軟安全工程師報(bào)告的數(shù)據(jù)是:大約 70% 的安全問題是由內(nèi)存安全問題引起的。2020 年,谷歌針對(duì)在 Chromium 瀏覽器發(fā)現(xiàn)的 bug 也報(bào)告了類似的數(shù)據(jù)。

對(duì)于編程語言而言,C 和 C++ 都允許使用直接內(nèi)存地址來進(jìn)行任意指針運(yùn)算,并且沒有邊界檢查。報(bào)告中指出,專家發(fā)現(xiàn)了一些編程語言既缺乏與內(nèi)存安全相關(guān)的特征,又在一些關(guān)鍵系統(tǒng)中具有高度擴(kuò)散性,以 C 和 C++ 為代表。因此,C 和 C++ 被認(rèn)為是「不安全的」編程語言。

與 C 和 C++ 相對(duì)應(yīng),Rust 被認(rèn)為是內(nèi)存安全編程語言的典型示例。Rust 是一門系統(tǒng)編程語言,專注于安全,尤其是并發(fā)安全。它支持函數(shù)式和命令式以及泛型等編程范式的多范式語言,且 TensorFlow 等深度學(xué)習(xí)框架也把它作為一個(gè)優(yōu)秀的前端語言。

圖片

在程序員問答網(wǎng)站 Stack Overflow 2021 年度開發(fā)者調(diào)查報(bào)告中,Rust 語言成為最受開發(fā)者喜愛的編程語言。Rust 在系統(tǒng)編程領(lǐng)域很受歡迎,原因之一就是它可以幫助消除與內(nèi)存相關(guān)的安全漏洞。

圖片

Rust 內(nèi)存安全的特性早已得到業(yè)內(nèi)驗(yàn)證。2021 年 4 月,谷歌就宣布 Android 加入對(duì) Rust 語言支持。原因是 C 和 C++ 中的內(nèi)存安全 bug 是最難解決的錯(cuò)誤源,谷歌已經(jīng)投入了大量的精力和資源來檢測、修復(fù)和緩解這類 bug,并有效地防止了大量 bug 進(jìn)入 Android 版本。

然而,盡管做出了這些努力,內(nèi)存安全 bug 仍然是穩(wěn)定性問題的主要原因,它在 Android 嚴(yán)重安全漏洞中長期占據(jù)大約 70% 的比例。因此,谷歌為操作系統(tǒng)開發(fā)者增加了第 3 個(gè)選擇 Rust。

華盛頓大學(xué)計(jì)算機(jī)科學(xué)教授 Dan Grossman 表示,幾十年來,大家都了解 C 和 C++ 的危險(xiǎn),現(xiàn)在終于迎來了推動(dòng)內(nèi)存安全編程語言的好時(shí)機(jī),畢竟已經(jīng)有了實(shí)用且成熟的替代方案。

他也認(rèn)為,擺脫 C 和 C++ 并不是一朝一夕就能完成的,尤其是在嵌入系統(tǒng)中。不過,隨著 Rust 等其他編程語言在系統(tǒng)軟件中的更廣泛應(yīng)用, 這一進(jìn)程預(yù)計(jì)會(huì)加快。

對(duì)于官方對(duì) C 和 C++ 的態(tài)度,更多的人似乎并不買賬。

有人認(rèn)為現(xiàn)代 C++ 是內(nèi)存安全的,所有操作系統(tǒng)都使用 C 或者 C++ 進(jìn)行編程。也有人認(rèn)為,即使 C++ 不能算是內(nèi)存安全,但現(xiàn)代 C++ 擁有更多的「護(hù)欄」,并且成本低甚至不用花錢。

圖片

圖片

對(duì)于被「欽點(diǎn)」內(nèi)存安全的 Rust,有人覺得它的支持程度沒有那么高,也不值得集成到政府系統(tǒng)中。

圖片

除了 Rust,內(nèi)存安全編程語言還有哪些

2022 年 11 月,美國國家安全局 (NSA) 發(fā)布了一份網(wǎng)絡(luò)安全信息表,詳細(xì)介紹了它認(rèn)為內(nèi)存安全的編程語言

  • Rust
  • Go
  • C#
  • Java
  • Swift
  • JavaScript
  • Ruby
  • Python
  • Delphi/Object Pascal
  • Ada

以上這些編程語言的流行度如何呢?2024 年 2 月的編程語言流行度指標(biāo) TIOBE 顯示,在編程方面,Python 排名第一,C# 排名第五,Java 排名第四,JavaScript 排名第六,Go 排名第八,Delphi/Object Pascal 排名第 12,Swift 排名第 16,Rust 排名第 18,Ruby 勉強(qiáng)排名第 20。

可以看到,大多數(shù) NSA 選擇的語言都在前 20 名中,只有 Ada 不在,但前十名只有 5 種。

圖片

來源:https://www.tiobe.com/tiobe-index/

該報(bào)告還呼吁更好地衡量軟件安全性。ONCD 認(rèn)為:更好的衡量標(biāo)準(zhǔn)使技術(shù)提供商能夠在漏洞成為問題之前更好地規(guī)劃、預(yù)測和緩解漏洞。

這份報(bào)告還回顧了阿波羅 13 號(hào)任務(wù),NASA 將這次任務(wù)歸類為「成功的失敗」。該任務(wù)本身遭遇了災(zāi)難性的失敗,三名宇航員臨時(shí)進(jìn)行維修并緩解了一些問題,以便安全返回家園。該報(bào)告指出:內(nèi)存安全代碼對(duì)于太空計(jì)劃來說是非常重要的。人類探索太空應(yīng)該使用一種內(nèi)存安全語言,一種盡可能接近內(nèi)核的語言,以免將來發(fā)生事故。

隨著世界上越來越多的地方變得數(shù)字化,更好的編碼變得越來越重要,不良代碼可能會(huì)被惡意使用。

Rust 語言

Rust 語言是由 Mozilla 主導(dǎo)開發(fā)的通用、編譯型編程語言。設(shè)計(jì)準(zhǔn)則為「安全、并發(fā)、實(shí)用」,支持函數(shù)式、并發(fā)式、過程式以及面向?qū)ο蟮木幊田L(fēng)格。

Rust 語言最突出的優(yōu)勢就是可以提供內(nèi)存安全保證,而且沒有額外的性能損失。在傳統(tǒng)的系統(tǒng)級(jí)編程語言( C/C++) 的開發(fā)過程中,經(jīng)常出現(xiàn)因各種內(nèi)存錯(cuò)誤引起的崩潰或 bug ,比如空指針、野指針、內(nèi)存泄漏、內(nèi)存越界、段錯(cuò)誤、數(shù)據(jù)競爭、迭代器失效等等。

內(nèi)存問題是影響程序穩(wěn)定性和安全性的重大隱患,并且是影響開發(fā)效率的重大因素。谷歌和微軟兩大科技巨頭曾表示:旗下重要產(chǎn)品程序安全問題 70% 由內(nèi)存問題引發(fā),并且這兩個(gè)巨頭都考慮利用 Rust 語言來解決內(nèi)存安全問題。

此外,Rust 還具有優(yōu)秀的跨平臺(tái)性,支持交叉編譯,對(duì)嵌入式環(huán)境同樣友好。

然而,Rust 語言也有一些棘手的缺點(diǎn)。

首先,由于 Rust 存在一些特殊的語法,因此初學(xué)者入門稍顯困難,例如「生命周期(lifetime)」。相比之下,Python、Java 等語言更加簡單、易學(xué)。但如果你已經(jīng)掌握了 C++ 語言,學(xué)習(xí) Rust 語言就容易得多,因?yàn)榻梃b了大量 C++ 的語法。

其次,Rust 語言的編譯器檢查非常嚴(yán)格,開發(fā)過程的大多數(shù)時(shí)間都是在解決編譯問題。不過,一旦編譯通過,開發(fā)人員就不需要關(guān)心內(nèi)存安全,內(nèi)存泄漏等頭疼問題,只需關(guān)注業(yè)務(wù)邏輯。

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2024-03-12 12:05:57

2024-02-28 15:36:20

2012-12-26 09:51:52

C++開發(fā)者C++ CX

2013-09-05 11:04:53

C++開發(fā)者

2010-11-24 10:35:40

Objective-C

2014-04-15 11:27:50

C++開發(fā)者Objective-C核心語法

2025-01-26 16:12:52

PythonRust開發(fā)

2024-02-06 13:43:16

C++內(nèi)存安全

2013-07-29 11:11:33

C++C++11

2024-02-26 07:26:27

RustC++開發(fā)

2021-04-30 11:34:45

JavaScript開發(fā)者Rust

2012-05-11 13:06:13

Windows微軟

2024-04-01 09:42:19

2022-06-01 14:02:47

谷歌Chrome 安全團(tuán)C++

2024-07-26 00:22:34

2023-05-25 09:44:37

谷歌開源

2021-05-10 14:50:03

.NETRust語言

2024-08-28 14:13:26

2014-04-03 09:36:47

Objective-Cruby消息傳遞

2022-10-21 18:41:23

RustC++Azure
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)