NVIDIA 安全團隊:如果我們停止使用 C 會怎樣?

整理 | 朱珂欣 責編 | 張紅月

近日,在 AdaCore 上一篇關於 NVIDIA 正嘗試使用 SPARK 語言取代 C 語言的案例研究,引發了大家關注。

本次案例研究聚焦於 NVIDIA 面對網路安全問題時存在的挑戰,並嘗試使用 SPARK 語言實現一些對安全較為敏感的應用程序或元件。同時,還說明了 NVIDIA 在關鍵元件開發中加大對 SPARK 的使用的方法,以及 NVIDIA 通過採用 SPARK 獲得的好處及對潛在 SPARK 採用者的建議。

圖源:AdaCore 官網截圖

圖源:AdaCore 官網截圖

安全性幾乎無法通過測試來驗證

安全性幾乎無法通過測試來驗證

NVIDIA 軟體安全副總裁 Daniel Rohrer 曾坦言:「安全性是幾乎無法通過測試來驗證的。「隨後,NVIDIA 安全團隊開始尋找方案來應對日益惡劣的網路安全環境,並質疑過往的軟體開發和驗證策略,也意識到面向測試的軟體驗證,根本無法確保安全性。

Daniel Rohrer 還表示:「希望強調可證明性作為首選的驗證方法,而不是測試。」

值得慶幸的是,可以從數學的角度,依託數學計算和形式證明程式碼的行為完全符合其規範,也因此使 NVIDIA 開始研究了 SPARK 。

從 C 轉換為 SPARK 的原因:安全性和穩健性得到重大改進

SPARK 作為一種程式語言和一套驗證工具,可以滿足高保證軟體開發的需求。SPARK 基於 Ada,既能對語言進行了子集化以刪除無法驗證的功能,又能擴展合同和方面的系統以支持模組化的形式驗證。

早在 2018 年, NVIDIA 就進行了概念驗證 (POC) 演習。在短短三個月內,兩個安全級別較低的應用程序上實現了從 C 到 SPARK 的遷移。

在對投資回報評估後, NVIDIA 安全團隊得出結論:伴隨著培訓、實驗、新工具等新技術的提升,應用程序安全性和驗證效率的也得到了提高。兩個應用程序,在安全性和穩健性兩個方面的重大改進。

由於 POC 的結果驗證了最初的策略,SPARK 的使用也在 NVIDIA 內部迅速傳播。現有的 50 名經過專業培養的開發人員在 SPARK 中實現了大量元件,許多 NVIDIA 產品現在都附帶了 SPARK 元件。

網友:性能與 C 相比,沒有看到任何性能差異?

然而,在 Hacker News 上,關於 NVIDIA 安全團隊正嘗試用 SPARK 語言取代 C 語言的案例,也引發了大家激烈的討論:

  • 「相信如果我們擺脫了 C 語言,所有軟體安全問題都會得到解決」;

  • 「有許多 C 語言開發人員會堅持認為他們已經獲得了足夠的經驗,永遠不會編寫易受各種記憶體安全漏洞攻擊的程式碼」;

  • 「性能與 C 相比,我根本沒有看到任何性能差異」。

未來,SPARK 還將給 NVIDIA 及其客戶提供哪些保證,我們拭目以待。

參考連結:

https://www.adacore.com/papers/nvidia-adoption-of-spark-new-era-in-security-critical-software-development

https://blog.adacore.com/nvidia-security-team-what-if-we-just-stopped-using-c

https://news.ycombinator.com/item?id=33504206

相關文章

Redis 的過期資料會被立馬刪除麼?

Redis 的過期資料會被立馬刪除麼?

碼哥,當 key 達到過期時間,Redis 就會馬上刪除麼? 先說結論:並不會立馬刪除。Redis 有兩種刪除過期資料的策略: 定期選取部分...