写点什么

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

评论

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

Spring 5 中文解析核心篇-IoC容器之SpEL表达式

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之ApplicationContext与BeanFactory

青年IT男

Spring5 Spring Framework

为什么企业自主开发软件时,都会使用统一的模块化框架式开发平台?

Philips

敏捷开发 代码优化 框架设计 框架开发 标准框架

车队管理软件

samhuang

Spring 5 中文解析核心篇-IoC容器之Bean作用域

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之JSR330标准注解

青年IT男

Spring5 Spring Framework

企业表格技术与风险指标补录系统

葡萄城技术团队

SpreadJS

Spring 5 中文解析核心篇-IoC容器之基于注解的容器配置

青年IT男

Spring5 Spring Framework

手把手带你写Node.JS版本小游戏

华为云开发者联盟

Java node.js Node 华为云 剪刀石头布

手把手教程:基于环信4小时开发一个视频会议APP【附源码】

环信

Spring 5 中文解析核心篇-IoC容器之Spring AOP API

青年IT男

Spring5 Spring Framework

CSS常用样式——绘制各种角度的三角形(1)

程序员学院

CSS css3 CSS小技巧

Redis 持久化 --RDB

是老郭啊

redis redis持久化 aof rdb

Spring 5 中文解析核心篇-IoC容器之IoC容器和Bean概述

青年IT男

Spring5 Spring Framework

日防夜防,“隐私窃贼“难防? 手把手教你如何使用OPPO手机管理应用权限

OPPO安全

安全 隐私保护 数据隐私 sdk

Spring 5 中文解析核心篇-IoC容器之基于Java容器配置

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之AOP编程(上)

青年IT男

Spring5 Spring Framework

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo

环信

Spring 5 中文解析核心篇-IoC容器之依赖关系

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之自定义Bean性质

青年IT男

Spring5 Spring Framework

话题讨论 | 你的桌面上会放哪些有趣的小摆件?

InfoQ写作社区官方

工作 话题讨论 办公室

你真的懂AQS吗?透彻理解AQS源码分析系列之AQS基础一

InfoQ_d2212957090d

AQS

Spring 5 中文解析核心篇-IoC容器之BeanDefinition继承与容器拓展点

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Environment抽象

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之AOP编程(下)

青年IT男

Spring5 Spring Framework

软件工程开发之道:了解能力和复杂度是前提

华为云开发者联盟

软件工程 开发 项目 代码 复杂度

再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报

YourBatman

Jackson Fastjson 安全漏洞 CVE-2020-24616

《我要进大厂》之mysql夺命连环13问

艾小仙

Java MySQL 面试 Java 分布式 大厂

从RainbowBridge看Js与Java交互中的安全漏洞

OPPO安全

安全 安全漏洞

Spring 5 中文解析核心篇-IoC容器之类路径扫描和组件管理

青年IT男

Spring5 Spring Framework

敏捷转型谁先动:老总,项目经理or团队

华为云开发者联盟

项目管理 敏捷 敏捷开发 团队 华为云

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