写点什么

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

  • 2019-12-16
  • 本文字数:1136 字

    阅读完需:约 4 分钟

微软正在探索使用 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:001859

评论

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

架构实战营总结

刘洋

#架构实战营 「架构实战营」

云端守望者(下):十八般武艺

天翼云开发者社区

云计算 云存储

synchronized有几种用法?

王磊

Java java面试

上海理工大学:巧用数字技术打响智慧抗疫信息战

华为云开发者联盟

低代码 welink 防疫 AppCube 核酸检测

正则表达式提取 git 提交记录中的新增代码行

OpenHacker

JavaScript 正则表达式

持续进击,STI上演极致通缩模型

西柚子

linux运维是做什么工作的?有哪些岗位?

行云管家

运维 网络运维 IT运维

企业为什么要实施知识管理?

小炮

知识管理 企业知识管理 企业知识管理工具

Groovy踩坑记之方法调用八层认识

FunTester

ETL批量作业调度TASKCTL桌面应用端安装步骤

敏捷调度TASKCTL

kettle 批量任务 ETL 自动化运维 调度任务

为什么说Aquqnee有望成为GameFi板块天花板

小哈区块

要想推荐系统做的好,图技术少不了

华为云开发者联盟

推荐系统 图分析 图技术 单部图 异构图

天翼云CDN+云主机护航,全天候支撑云上战“疫”

天翼云开发者社区

软件测试很简单么?

chenkl

测试

Telnet是什么意思?与SSH有啥区别?

行云管家

运维 SSH IT运维

为什么说Aquqnee有望成为GameFi板块天花板

西柚子

走进英特尔中国研究院,探索科技创新无穷奥秘

科技新消息

阿拉德之怒手游超详细图文架设教程

echeverra

游戏开发

什么是低代码开发?

源字节1号

软件开发 低代码开发

开源之夏 2022 与您相约!

RadonDB

数据库 开源 开源之夏

Go Runtime 设计:计算资源调度

张旭海

Go runtime goroutine scheduler

了解云桌面,看这一篇文章就够了!

天翼云开发者社区

【直播预告】凡泰讲堂第一期:洞见云原生,Kubernetes技术详解与实践

FinClip

Kubernetes

图数据库|基于 Nebula Graph 的 Betweenness Centrality 算法

NebulaGraph

数据库 算法 图数据库

SimpleDateFormat类的安全问题,这6个方案总有一个适合你

华为云开发者联盟

Java 高并发 线程池 线程安全 SimpleDateFormat类

王世杰:读博被美国拒签之后

OneFlow

人工智能 深度学习 计算机视觉 深度学习框架 oneflow

Tapdata 与阿里云 PolarDB 开源数据库社区联合共建开放数据技术生态

tapdata

数据库

Ranger对HDFS权限管理探索与实践

移动云大数据

hdfs Ranger

千万张医疗影像,都去了哪里?

天翼云开发者社区

云主机 云存储

Tech Talk 活动预告丨使用 Amazon IoT Core 构建安全合规的智能产品

亚马逊云科技 (Amazon Web Services)

Amazon IoT Core

云端守望者(上):十二道难关

天翼云开发者社区

云主机 云安全

微软正在探索使用 Rust 开发安全的软件_安全_Sergio De Simone_InfoQ精选文章