写点什么

微软正在探索使用 Rust 开发安全的软件

2019 年 12 月 16 日

微软正在探索使用 Rust 开发安全的软件

近来,微软尝试使用 Rust 来提升软件的安全性。在巴塞罗那举行的RustFest大会上,微软工程师 Ryan Levick 和 Sebastian Fernandez 分享了他们在微软使用 Rust 时所面临的挑战。微软的 Rust 之旅包括使用 Rust 重写 Windows 的一个底层组件。


Fernandez 和 Levick 表示,软件行业建立在一个不安全的技术基础之上,涉及巨额成本。保守估计,微软的软件里被爆出的每一个问题平均需要耗费 15 万美元,而受安全漏洞侵害的组织需要付出更高的成本。英国国家医疗保健系统就是这样的一个案例,因为受到赎金攻击,预计损失达到 40 亿美元。


他们说,这些问题大部分与使用 C 语言和 C++有关。


C 语言和 C++非常适合用来开发底层系统,它们只使用非常少的资源。实际上,它们是我们创建的系统的基础,但问题是它们不够安全。在使用它们开发系统时,开发人员并没有考虑到安全问题。


这也解释了为什么微软在尝试使用 Rust,希望能够消除软件 bug,特别是那些会导致安全漏洞的 bug。


我们可以使用 Rust 开发出安全的组件。


两位工程师表示,这个有待验证,但他们希望结果能够如他们所愿。


实现这个目标的一个主要障碍是使用 Rust 从头开始重写所有东西是不可能的。Rust 应该与其他语言共存,虽然这样也不容易。例如,对于 Windows 来说,第一个障碍是 LLVM(Rust 的编译器),它对 Windows 的支持并不好。类似的,Rust 的构建工具 Cargo 无法管理微软的整个构建系统,只能被集成到现有的构建系统中。


这个问题适用于所有的 Rust 工具,以及被封装进 DLL 的共享可执行程序(它们大部分使用 C 语言和 C++开发)和对 COM、WinRT、Win32 的支持。


除此之外,微软以及其他类似的企业还有其他问题需要解决,包括人的因素在内。Rust 的受众通常是那些具有多年 C 语言或 C++经验的开发者,需要说服他们转向 Rust。


之前,当我们向有经验的 C++程序员推荐 Rust 时,他们一般都能够快速上手,因为他们的知识体系里已经有一些形式化的东西,这是好事。但对于那些从其他领域转过来的人来说就有一点困难。不过,虽然学习曲线比较陡峭,但一旦他们上手了,就会变得非常高效。


来自微软 Hyper-V 团队的工程师 Adam Burch 分享了微软使用 Rust 开发项目的经验。他讲述了使用 Rust 重写一个 Windows 底层系统组件的经历,并把 Rust 编译器的安全性保证说成是一股清流:


Rust 编译器提供的内存和数据安全性保证让程序员信心满满,因为通过能够编译的代码都是内存安全的。


与 Fernandez 和 Levick 一样,Burch 也同样认为 C/C++程序员能够快速上手 Rust,他还提供了一些有关 Rust 与 C/C++代码互操作以及如何保持语言安全的建议,包括使用工具生成可表示C语言数据的Rust数据结构,以及与COM API有关的东西。


原文链接


Microsoft Exploring Rust as the Solution for Safe Software


2019 年 12 月 16 日 09:001220

评论

发布
暂无评论
发现更多内容

曾国藩的人生“六戒”

霍太稳@极客邦科技

身心健康 个人成长 心理学

香港上市"失效"、传言申请科创板,聊聊半年亏损52亿的旷视科技 | IPO招股书系列(4)

赵新龙

IPO 旷视科技 上市 招股说明书 科创板

程序员陪娃漫画系列——夜宵

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

程序员陪娃漫画系列——吃饭

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

媒体的经营 02 | 媒体/内容行业的主要变现方式

邓瑞恒Ryan

创业 投资 商业

说说疫情下的新常态该怎么应对

CD826

疫情 新常态

演讲的秘诀

伯薇

个人成长 演讲 追求极致 完美主义

我为什么不愿在公众号发文章,却愿在写作平台发

小天同学

微信公众平台 产品 反馈 写作平台

小技巧:ssh -D 让终端访问或下载快一点

LinkPwd

Linux Shell

Java并发编程系列——线程的等待与唤醒

孙苏勇

Java Java并发 并发编程 线程

二叉树的先序中序后序递归实现

Kenn

算法 递归

判断链表是否有环

Kenn

算法 链表 双指针 Brent

JCJC错别字检测JS接口新增CORS跨域支持

田春峰-JCJC错别字检测

回"疫"录(5):不见面,云拜年

小天同学

疫情 回忆录 现实纪录 纪实

【奖项公布】致内测用户——亲爱的1号创作者们~

InfoQ写作平台官方

写作平台 1号创作者 奖品

Gary的唠叨(二):先算是非,后算得失

郭蕾

Gary的唠叨 感悟

迷茫时,想想能为这个世界做些什么就好了

霍太稳@极客邦科技

身心健康 个人成长 团队协作

怎么写出bug的

三爻

对开发人员有用的定律、理论、原则和模式

松花皮蛋me

Java 设计模式

媒体的经营 03 | 很显然,媒体卖广告是最没有前途的

邓瑞恒Ryan

创业 媒体 商业模式

人生一大误区:做到80%就不错了

池建强

个人成长 自我管理

npm version 使用详解

Leo

前端 npm 语义化 版本控制

【获奖名单公示】作为一名技术人,我为什么要写作?

InfoQ写作平台官方

程序员 写作 写作平台 活动专区

不知不觉,写了10000字了

小天同学

写作 个人感想 思辨

“IPO上市扒层皮”,以阿里巴巴为例看看公开了什么 | 如何读IPO招股书(3-b)

赵新龙

阿里巴巴 IPO 招股说明书

我们是时候降低对完全自动驾驶的期望了

赵钰莹

自动驾驶 AI

死磕Java并发(5):线程详解,Java开发这么久,这些线程的基础知识你确定都会了?

七哥爱编程

Java Java并发 线程

专家的直觉和你的直觉

池建强

书摘 直觉

二叉树先序中序后序的非递归实现

Kenn

算法

“IPO上市扒层皮”,以阿里巴巴为例看看公开了什么 | 如何读IPO招股书(3-a)

赵新龙

阿里巴巴 IPO 招股说明书

您到底要说什么?

水色

微软正在探索使用 Rust 开发安全的软件-InfoQ