50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

Flutter 开发:如何引入第三方库并安装使用

三掌柜

三周年连更

如何快速在手机中查看UDID,无需itunes、itools

创建型模式之单例模式和工厂模式

共饮一杯无

设计模式 创建型模型 三周年连更

Node 版本控制

程序员海军

Node 三周年连更

MySQL 教程

kafka常用命令

烟波

kafka MQ 中间件

大模型带来的Web复兴,会是昙花一现吗?

脑极体

AI 云厂商

QUIC技术分享

linux大本营

网络协议 udp QUIC

运行脚本报错lindex:未找到命令

linux大本营

bash Linux 脚本

Android XML数据解析

芯动大师

android XML配置 三周年连更

AI视觉实战2:实时头发染色

轻口味

android AI 图像处理 三周年连更

重塑元宇宙体验!3DCAT元宇宙实时云渲染解决方案来了

3DCAT实时渲染

元宇宙 元宇宙解决方案

C头文件是什么,使用mmap

linux大本营

C语言 Mmap

C语言检测输入的ip地址中含有几个.

linux大本营

C语言 字符串

怎么看电脑上是否有lindex命令可运行

linux大本营

bash Linux linux命令

2023-04-21:用go语言重写ffmpeg的metadata.c示例。

福大大架构师每日一题

Go ffmpeg

一文初探 Goroutine 与 channel

陈明勇

Go golang channel goroutine 三周年连更

怎么查看自己的mac地址和ip

linux大本营

Mac 网络 Windows Server IP地址

挑战 30 天学完 Python:Day11 函数

MegaQi

Python 挑战30天学完Python 三周年连更

报名开启,明天直播!龙蜥社区多位专家在线报告 | 2023 大学生操作系统大赛培训会

OpenAnolis小助手

活动 操作系统 计算机 大学生 龙蜥社区

网络视频监控如何入门?如何安装和配置、设备选择和实时监控?

wljslmz

三周年连更

lindex命令在shell脚本里的应用

linux大本营

Shell linux命令 脚本 shell脚本

IPv6过渡技术概述

穿过生命散发芬芳

ipv6 三周年连更

TCP正常关闭连接

阿泽🧸

TCP 三周年连更

仅需三步,快速打造指标数据应用

Kyligence

数据分析 指标平台

ORACLE EBS:多组织结构 理解与配置

back_wang

oracle oracle ebs oracle apex

linux环境下用c语言实现reactor网络模型的代码案例

linux大本营

Linux reactor 高并发 epoll

解析mmap系统调用的所有的标志位

linux大本营

Linux 内存管理 Mmap 系统调用 内存映射

组播ip地址,广播ip地址,特殊ip地址

linux大本营

TCP IP地址

C语言检测输入的ip地址是否合法

linux大本营

C语言 IP地址

一键搭建web版chatGPT,无需魔法,国内可用

石云升

AI AIGC ChatGPT 三周年连更

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