微软正在开发基于Rust的安全编程语言

  此前,微软表示正探索将Rust作为C和C++的安全替代方案,并且也对外展示了使用Rust重写Windows组件的体验,根据微软的说法,Rust是一种从根本上考虑安全性的编程语言,他们将尝试使用Rust重写各种产品,因为在过去的十年里,微软70%以上的安全补丁都提供了与内存相关的错误,而Rust正是解决这个问题的“良药”。

  而根据ZDNet的报导,近日在一次演讲中,谈到微软为解决相应内存问题所做的工作,微软研究人员MatthewParkinson提到了微软正在开发的基于Rust的新编程语言Verona。

  演讲中,Matthew先是分享了微软在MemGC(MemoryGarbageCollector)上所做的工作,MemGC是指IE和Edge浏览器上的内存垃圾回收器,它解决了标准浏览器一个特性——文档对象模型(DOM)中的漏洞,DOM以树结构表述了HTML文档内容。

  之后他由此牵出另一个问题:如何构建最安全的产品?不仅仅丢弃已有的东西,而要考虑可以在更加安全的系统中构建一些什么。他介绍了微软正在使用Rust重写某些组件,并提出:“如果我们想要隔离,并精简遗留代码,以使攻击者的利用代码无法逃逸出来,那么如何设计语言呢?”

  Matthew提出了微软正在开发的基于Rust的新编程语言Verona,他表示这是首次讨论该项目,Verona是用于微软“安全基础设施编程(safeinfrastructureprogramming)”的一种新语言。

  Matthew介绍,Verona由C#项目经理MadsTorgensen与MicrosoftResearchCambridge研究软件工程师JulianaFranco维护。

  微软面临的挑战是应对宽广的应用领域,范围从C#桌面应用到C或C#Exchange、ASP.NET、Azure与设备驱动程序,再到内存管理和启动加载器等底层Windows组件,以及Windows内核硬件抽象层(HAL,hardwareabstractionlayer)。

  “执行内存管理确实很困难,如果有任意并发突变,则临时内存安全性将非常困难”,Matthew介绍了Verona的设计思路:“Verona的所有权模型是基于对象组的,而不是像Rust那样基于单个对象的所有权模型。在C++中,可以获得指针,并且它是基于对象的。但这与我关于数据和语法的思考不同,我认为数据结构是对象的集合,而对象的集合则是生命周期。因此,通过在对象的所有权级别获得所有权,我们就可以更接近人们正在使用的抽象级别,它使我们能够构建数据结构而不会超出安全范围。”

  Sobytakingownershipatthelevelofownershipofobjects,thenwegetmuchclosertothelevelofabstractionthatpeopleareusinganditgivesustheabilitytobuilddatastructureswithoutgoingoutsideofsafety.

  另外,Matthew还表示Verona很快将会开源。