0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++之父:Rust等内存安全语言的安全性并不优于C++

OSC开源社区 来源:OSC开源社区 2023-02-06 10:22 次阅读

在美国国家安全局 (NSA) 建议组织从 C/C++ 切换到内存安全语言 (如 C#、Rust、Go、Java、Ruby 或 Swift) 之后。C++ 之父 Bjarne Stroustrup 回应称,在他看来,NSA 报告中提到的 “安全” 编程语言在重要应用程序中实际上并不优于 C++。

Bjarne 指出,NSA 的这一判定忽略了 C/C++ 三十多年来的进步;且许多 C++ 的用例也停留在遥远的过去而忽视了改进,其中就包括极大地提高安全性的方法。

现在,如果我认为这些 “安全” 语言中的任何一种在我关心的使用范围内都比 C++ 优越,我就不会认为 C/C++ 的淡出是一件坏事,但事实并非如此。另外,正如所描述的那样,“安全” 仅限于内存安全,而忽略了一种语言可能(并且将会)被用来违反某种形式的安全和保障的十几种其他方式。

9fba40c4-a566-11ed-bfe3-dac502259ad0.png

Bjarne 表示,自己几十年来一直致力于实现更好、更安全、更高效的 C++。特别是关于 C++ Core Guidelines 的工作,旨在为有需要的人提供静态保证的类型安全和资源安全的 C++。符合 C++ Core Guidelines 的良好静态分析器可以为 C++ 代码安全提供必要的保证,且比升级到更新的安全编程语言要简单得多。

他批评 NSA 的报告只关注内存处理问题,而忽略了许多其他影响项目安全性和可靠性的编程语言问题。并建议使用代码注释和编译器选项来控制规则的包含,以确保类型和资源得到安全处理。考虑到可能对项目造成的破坏,他保证 C++ 社区不会忽视安全问题,但只关注安全问题也不行。因此他计划列出一份可被视为安全问题(包括 UB)的问题清单,并找到预防这些问题的方法。

此外,Bjarne 在与日前 InfoWorld 的邮件沟通中补充道,“太多人谈论神话般的 C/C++ 语言,但转头却去关注 C 部分的弱点。许多这些弱点在 C++ 中是可以避免的,通常可以通过编写更高效的代码来更直接地表达程序员的意图”。

邮件中 Bjarne 也分享了他对安全的定义:目标是类型和资源安全,即每个对象都根据其类型使用,没有资源泄漏。对于 C++,这意味着一些运行时范围检查,消除通过悬空指针的访问,并避免误用强制转换和联合。C++ 提供 high-level 工具,例如容器、span、range-for 循环和变体,它们可以在不损害生产力或效率的情况下提供保证。关于 NSA 引用的所谓安全语言,Bjarne 则表示,所有这些语言都容易受到未经静态验证的代码的攻击。此外,每个系统都必须使用硬件,而有效的硬件访问很少是安全的。

Bjarne 还概述了他安全使用 C++ 的策略:

静态分析以验证没有不安全的代码被执行。

简化代码的编码规则,使工业规模的静态分析可行。

使此类简化代码相当容易编写并确保在需要时进行运行时检查的库。

目前共存在数百万 C++ 程序员和数十亿行 C++ 代码,该语言目前的主要用途包括航空航天、医疗仪器、人工智能 / 机器学习、生物医学、高能物理学等。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73627
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • Rust
    +关注

    关注

    1

    文章

    228

    浏览量

    6602

原文标题:C++ 之父:Rust等内存安全语言的安全性并不优于C++

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C++程序设计原理与实践》(C++之父最新力作)

    `《C++程序设计原理与实践》(C++之父最新力作)`
    发表于 08-19 16:30

    C语言C++运用

    。是世界上使用最广泛的编程语言之一。C++ 之父 —— Bjarne Stroustrup随着物联网威廉希尔官方网站 的发展,C/C++ 威廉希尔官方网站 在网络通信(
    发表于 11-25 10:47

    OpenHarmony应用开发为什么不首选C/C++作为应用开发语言

    OpenHarmony本来就是CC++开发的,支持C/C++语言环境。应用开发为什么不首选C/
    发表于 03-17 10:30

    OpenHarmony为什么不首选C/C++作为应用开发语言

    OpenHarmony本来就是CC++开发的,支持C/C++语言环境。应用开发为什么不首选C/
    发表于 06-01 11:30

    如何提高cc++安全编程能力?《CC++安全编码》带你详细学习

    ,既详细阐述了C/C++语言及其相关库固有的安全问题和陷阱,系统总结了导致软件漏洞的各种常见编码错误,并给出了应对错误的解决方案;又对C/
    发表于 08-28 08:00 0次下载

    微软未来将使用 Rust 作为 CC++ 以及其他编程语言的替代方案

    为了解决内存安全问题,需要采取几种不同的方式。C++ 中的 “现代” 构造(例如 span)能够在一定程度上预防某些内存安全问题。此外,我们
    的头像 发表于 07-27 07:50 5550次阅读

    微软开始尝试使用Rust代替C/C++,介绍这些运用Rust的产品

    微软拥有世界上最大的C/C++代码库之一。从Windows、Office到Azure云,微软的所有核心产品都在该代码库上运行。但因为C++不是内存
    的头像 发表于 09-03 10:09 4142次阅读

    C语言C++相互调用

        1CC++相互调用 在一个嵌入式系统中大部分的底层和驱动层更多的是采用C语言来进行开发,而上层应用、服务更多的采用C++等高级
    的头像 发表于 01-18 11:05 3329次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>与<b class='flag-5'>C++</b>相互调用

    C++语言的发展

    今年的CPP North C++大会上,谷歌宣布了一门新的编程语言Carbon,并称其将是“C++的继任者”。
    发表于 08-15 14:22 606次阅读

    Rust语言助力Android内存安全漏洞大幅减少

    从 Android 12 开始,Google 就在 Android 系统中带来了 Rust 语言的支持,作为 C/C++ 的替代方案,他们的目标并不
    发表于 12-06 17:56 671次阅读

    RustC++哪个更好入门

    作为一门系统编程语言Rust 一直致力于解决高并发和高安全性系统问题。和老牌的 C++ 相比,Rus
    的头像 发表于 03-17 14:45 1932次阅读

    取代C++!微软用Rust改写的Win11内核来了

    按照微软此前介绍,Rust 语言的优势在于极高的内存安全性,原来内核中大量的不安全的子例程在改写后消失不见。同时,
    的头像 发表于 05-19 16:58 1424次阅读
    取代<b class='flag-5'>C++</b>!微软用<b class='flag-5'>Rust</b>改写的Win11内核来了

    使用C++编写通用库并在 Rust 中使用它 (WASI)

    的速度运行代码。它不特定于网络,也可以在其他平台上运行。WebAssembly 代码可以从各种编程语言编译而来,例如 CC++RustC
    的头像 发表于 06-16 10:03 1087次阅读
    使用<b class='flag-5'>C++</b>编写通用库并在 <b class='flag-5'>Rust</b> 中使用它 (WASI)

    C++之父新作带你勾勒现代C++地图

    为了帮助大家解决这些痛点问题,让大家领略现代C++之美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他亲自操刀写就了这本《
    的头像 发表于 10-30 16:35 840次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之父</b>新作带你勾勒现代<b class='flag-5'>C++</b>地图

    谷歌捐款100万美元给Rust基金会,以增强C++Rust的交互

    如今,谷歌多项核心业务仍以 C++为主要编程语言,虽然无法直接使用Rust替代现有的C++程序,但谷歌依然选择支持Rust基金会的“Inte
    的头像 发表于 02-19 15:41 645次阅读