目錄
放棄C、C ,轉向Rust,只為記憶體安全
除了Rust,記憶體安全程式語言還有哪些
Rust 語言
首頁 科技週邊 人工智慧 白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

Mar 01, 2024 pm 10:16 PM
ai 模型 overflow

最近,白宮國家網路主任辦公室(ONCD)在一份長達19頁的報告中提出了一個重要觀點:開發者應該採用記憶體安全的程式語言,例如 Rust 語言。這份報告指出,選擇記憶體安全的程式語言是確保軟體以安全設計方式開發的關鍵方法。

ONCD也指出,報告中的建議是透過與科技公司、學術界和其他機構合作制定的,並獲得了多家知名科技公司的支持,其中包括惠普、埃森哲和Palantir。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

報告網址:https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical- Report.pdf

其實,這並不是美國官方機構第一次呼籲放棄使用C 和C 了。

去年12月,美國網路安全與基礎設施局(CISA)與其他機構一起發布了一份《記憶體安全路線圖指南》,指出了C和C 作為記憶體不安全的程式語言,強調軟體開發人員應採用Rust、Java等其他記憶體安全的程式語言。這份指南的目的是提高軟體開發中對記憶體安全問題的重視,並鼓勵採取更可靠的程式語言來減少潛在的安全漏洞。 CISA特別強調了採用記憶體安全程式語言的重要性,因為這有助於減少惡意攻擊和資料外洩的風險。此舉也是為了推動軟體開發產業朝著更安全可靠的方向發展,

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

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

放棄C、C ,轉向Rust,只為記憶體安全

強調使用記憶體安全的程式語言很重要,因為記憶體安全性能夠防止出現諸如緩衝區溢位和懸空指標等問題,這些問題可能導致bug和漏洞的產生。因此,了解記憶體安全的概念是至關重要的。

記憶體不安全的危害有多大呢? 2019 年,微軟安全工程師報告的數據是:大約 70% 的安全問題是由記憶體安全問題引起的。 2020 年,Google針對在 Chromium 瀏覽器發現的 bug 也報告了類似的數據。

對於程式語言而言,C 和 C 都允許使用直接記憶體位址來進行任意指標運算,並且沒有邊界檢查。報告中指出,專家發現了一些程式語言既缺乏與記憶體安全相關的特徵,又在一些關鍵系統中具有高度擴散性,以 C 和 C 為代表。因此,C 和 C 被認為是「不安全的」程式語言。

與 C 和 C 相對應,Rust 被認為是記憶體安全程式語言的典型範例。 Rust 是一門系統程式語言,專注於安全,尤其是並發安全。它支援函數式和命令式以及泛型等程式設計範式的多範式語言,而 TensorFlow 等深度學習框架也把它當作一個優秀的前端語言。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

在程式設計師問答網站 Stack Overflow 2021 年度開發者調查報告中,Rust 語言成為最受開發者喜愛的程式語言。 Rust 在系統程式設計領域很受歡迎,原因之一就是它可以幫助消除與記憶體相關的安全漏洞。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

Rust 記憶體安全的特性早已被業界驗證。 2021 年 4 月,Google就宣布 Android 加入對 Rust 語言支援。原因是 C 和 C 中的記憶體安全 bug 是最難解決的錯誤來源,Google已經投入了大量的精力和資源來檢測、修復和緩解這類 bug,並有效地防止了大量 bug 進入 Android 版本。

然而,儘管做出了這些努力,記憶體安全 bug 仍然是穩定性問題的主要原因,它在 Android 嚴重安全漏洞中長期佔據大約 70% 的比例。因此,Google為作業系統開發者增加了第 3 個選擇 Rust。

華盛頓大學電腦科學教授Dan Grossman 表示,幾十年來,大家都了解C 和C 的危險,現在終於迎來了推動記憶體安全程式語言的好時機,畢竟已經有了實用且成熟的替代方案。

他也認為,擺脫 C 和 C 並不是一朝一夕就能完成的,尤其是在嵌入系統中。不過,隨著 Rust 等其他程式語言在系統軟體中更廣泛的應用, 這一進程預計會加快。

對於官方對 C 和 C 的態度,更多的人似乎不買單。

有人認為現代 C 是記憶體安全的,所有作業系統都使用 C 或 C 進行程式設計。也有人認為,即使 C 不能算是記憶體安全,但現代 C 擁有更多的「護欄」,成本低甚至不用花錢。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

對於被「欽點」記憶體安全的Rust,有人覺得它的支援程度沒有那麼高,也不值得整合到政府系統中。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

除了Rust,記憶體安全程式語言還有哪些

2022 年11 月,美國國家安全局(NSA) 發布了一份網路安全資訊表,詳細介紹了它認為記憶體安全的程式語言

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

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

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

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

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

該報告也呼籲更好地衡量軟體安全性。 ONCD 認為:更好的衡量標準使技術供應商在漏洞成為問題之前更好地規劃、預測和緩解漏洞。

這份報告也回顧了阿波羅 13 號任務,NASA 將這次任務歸類為「成功的失敗」。任務本身遭遇了災難性的失敗,三名太空人臨時進行維修並緩解了一些問題,以便安全返回家園。報告指出:記憶體安全代碼對於太空計畫來說是非常重要的。人類探索太空應該使用一種記憶體安全語言,一種盡可能接近核心的語言,以免將來發生事故。

隨著世界上越來越多的地方變得數位化,更好的編碼變得越來越重要,不良程式碼可能會被惡意使用。

Rust 語言

Rust 語言是由 Mozilla 主導開發的通用、編譯型程式語言。設計準則為「安全、並發、實用」,支援函數式、並發式、過程式以及物件導向的程式設計風格。

Rust 語言最突出的優勢就是可以提供記憶體安全保證,而且沒有額外的效能損失。在傳統的系統級程式語言( C/C++) 的開發過程中,經常出現因各種記憶體錯誤引起的崩潰或bug ,例如空指標、野指標、記憶體洩漏、記憶體越界、段錯誤、資料競爭、迭代器失效等等。

記憶體問題是影響程式穩定性和安全性的重大隱患,並且是影響開發效率的重大因素。 Google和微軟兩大科技巨頭曾表示:旗下重要產品程式安全問題 70% 由記憶體問題引發,並且這兩個巨頭都考慮利用 Rust 語言來解決記憶體安全問題。

此外,Rust 還具有優秀的跨平台性,支援交叉編譯,對嵌入式環境同樣友善。

然而,Rust 語言也有一些棘手的缺點。

首先,由於 Rust 存在一些特殊的語法,因此初學者入門稍微困難,例如「生命週期(lifetime)」。相較之下,Python、Java 等語言則更加簡單、易學。但如果你已經掌握了 C 語言,學習 Rust 語言就容易得多,因為借鑒了大量 C 的語法。

其次,Rust 語言的編譯器檢查非常嚴格,開發過程的大多數時間都在解決編譯問題。不過,一旦編譯通過,開發人員就不需要關心記憶體安全,記憶體洩漏等頭痛問題,只需要專注在業務邏輯。

以上是白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SQL 如何添加新列 SQL 如何添加新列 Apr 09, 2025 pm 02:09 PM

SQL 中通過使用 ALTER TABLE 語句為現有表添加新列。具體步驟包括:確定表名稱和列信息、編寫 ALTER TABLE 語句、執行語句。例如,為 Customers 表添加 email 列(VARCHAR(50)):ALTER TABLE Customers ADD email VARCHAR(50);

SQL 添加列的語法是什麼 SQL 添加列的語法是什麼 Apr 09, 2025 pm 02:51 PM

SQL 中添加列的語法為 ALTER TABLE table_name ADD column_name data_type [NOT NULL] [DEFAULT default_value]; 其中,table_name 是表名,column_name 是新列名,data_type 是數據類型,NOT NULL 指定是否允許空值,DEFAULT default_value 指定默認值。

SQL 清空表:性能優化技巧 SQL 清空表:性能優化技巧 Apr 09, 2025 pm 02:54 PM

提高 SQL 清空表性能的技巧:使用 TRUNCATE TABLE 代替 DELETE,釋放空間並重置標識列。禁用外鍵約束,防止級聯刪除。使用事務封裝操作,保證數據一致性。批量刪除大數據,通過 LIMIT 限制行數。清空後重建索引,提高查詢效率。

SQL 添加列時如何設置默認值 SQL 添加列時如何設置默認值 Apr 09, 2025 pm 02:45 PM

為新添加的列設置默認值,使用 ALTER TABLE 語句:指定添加列並設置默認值:ALTER TABLE table_name ADD column_name data_type DEFAULT default_value;使用 CONSTRAINT 子句指定默認值:ALTER TABLE table_name ADD COLUMN column_name data_type CONSTRAINT default_constraint DEFAULT default_value;

使用 DELETE 語句清空 SQL 表 使用 DELETE 語句清空 SQL 表 Apr 09, 2025 pm 03:00 PM

是的,DELETE 語句可用於清空 SQL 表,步驟如下:使用 DELETE 語句:DELETE FROM table_name;替換 table_name 為要清空的表的名稱。

Redis內存碎片如何處理? Redis內存碎片如何處理? Apr 10, 2025 pm 02:24 PM

Redis內存碎片是指分配的內存中存在無法再分配的小塊空閒區域。應對策略包括:重啟Redis:徹底清空內存,但會中斷服務。優化數據結構:使用更適合Redis的結構,減少內存分配和釋放次數。調整配置參數:使用策略淘汰最近最少使用的鍵值對。使用持久化機制:定期備份數據,重啟Redis清理碎片。監控內存使用情況:及時發現問題並採取措施。

phpmyadmin建立數據表 phpmyadmin建立數據表 Apr 10, 2025 pm 11:00 PM

要使用 phpMyAdmin 創建數據表,以下步驟必不可少:連接到數據庫並單擊“新建”標籤。為表命名並選擇存儲引擎(推薦 InnoDB)。通過單擊“添加列”按鈕添加列詳細信息,包括列名、數據類型、是否允許空值以及其他屬性。選擇一個或多個列作為主鍵。單擊“保存”按鈕創建表和列。

怎麼創建oracle數據庫 oracle怎麼創建數據庫 怎麼創建oracle數據庫 oracle怎麼創建數據庫 Apr 11, 2025 pm 02:33 PM

創建Oracle數據庫並非易事,需理解底層機制。 1. 需了解數據庫和Oracle DBMS的概念;2. 掌握SID、CDB(容器數據庫)、PDB(可插拔數據庫)等核心概念;3. 使用SQL*Plus創建CDB,再創建PDB,需指定大小、數據文件數、路徑等參數;4. 高級應用需調整字符集、內存等參數,並進行性能調優;5. 需注意磁盤空間、權限和參數設置,並持續監控和優化數據庫性能。 熟練掌握需不斷實踐,才能真正理解Oracle數據庫的創建和管理。

See all articles