微软的目标非常明确——运用一切能够调动的力量,为联网设备安全提供保障。
现在,开发人员已经可以在Azure Sphere平台上用Rust语言为联网设备创建应用程序。
以此为基础,程序员们可以使用Rust中的性能和安全功能增强物联网设备及其他嵌入式系统,避免其成为僵尸网络及其他恶意软件的攻击目标。
微软嵌入式软件工程师Akshatha Udayashankar在一篇博文中写道,“Rust和Azure Sphere是个很好的组合——一边是通过严格的编译时安全检查,提高代码安全性的编程语言;另一边则是提供安全身份、更新以及端到端加密通信服务的Azure Sphere,可为联网设备提供更好的客户应用安全性。”
微软在2022年6月就曾开放过这套组合的预览版。同一周,谷歌也表示将在其开源Chronium项目中支持第三方Rust库。与微软一样,谷歌也高度赞赏了Rust编程语言的安全特性。
当时有报道指出,Rust的吸引力不仅限于安全层面。“还包括更高的正确性,以及更可靠的并发性。Rust的「富类型系统」也有助于编写出更具表现力的代码。”
Azure Sphere已经包含面向联网设备的内置安全功能,且采用基于联发科芯片及Linux操作系统构建的硬件。此外,它还提供基于云的Azure Sphere安全服务(AS3),可在设备与互联网或云端之间建立安全连接。
AS3是用于保障安全启动、设备身份验证、软件信任以及设备仅运行可信代码的证明性机制,也让微软能够为设备上的Azure Sphere操作系统及应用程序安全下载更新。
在引入Rust之后,Azure Sphere的安全功能又将得到进一步提升。
Azure Sphere首席技术项目经理Joseph Lloyd表示,“Rust承诺显著减少甚至彻底消除各类软件缺陷。”
“忘记初始化变量了?编译器会明确报错!想执行空指针引用取消操作?根本不可能!对于嵌入式系统,这样的安全水平相当于生命保障线。如此一来,即使是继承了大量旧代码或集成了多个开源项目的高复杂度系统,上市工作量和调整需求也会少得多。”
Udayashankar还补充道,Rust为系统编程和低级代码控制提供了现代开发者工具,避免这些工作受到各类“细微错误”的影响。相比之下,其他大多数语言的开发者只能开展大量测试和代码审查来识别这些小纰漏。
Rust编译器会拒绝编译存在缺陷的代码,例如报告代码中的并发错误。她解释称,编译器还提供功能添加和重构选项,由此实现的稳定性和遗留代码风险都要远优于其他没有此类检查的语言。
Udayashankar写道,“Rust努力在提高代码安全的同时加快运行速度。零成本抽象使将高级功能编译为低级代码的速度,已经基本看齐手动编码。”
Rust诞生自Mozilla公司之手并一直维护至2021年,随后拥有了自己的语言基金会。微软和谷歌的大力支持让Rust声名大噪,这也是对其安全功能的认可。谷歌已经在Android中使用Rust,它的身影也出现在苹果和Linux内核等项目当中。
美国国家安全局于2022年11月对Rust张开怀抱,鼓励各部门从C/C++语言过渡至Rust、Go和C#等内存安全语言。
此类语言会使用编译时和运行时检查,以自动阻止各种可能被程序员错误纳入代码的缺陷。
在去年的一份报告中,Okta提到Rust编译器“不接受非内存安全代码,除非开发者在非安全块或函数中明确将其标记为「非安全」。这种静态编译时分析消除了各类内存bug,并配合多种额外的运行时检查严格保障内存安全。”
正是凭借这些优势,Rust作为众多新兴编程语言中的典型代码(Go也是其中之一)才被Hive和BlackCat等网络威胁组织利用,借以逃避安全检测。
Rust是通过crate系统在Azure Sphere中实现的,其依赖项则内置于微软的“客户应用”平台当中。Udayashankar指出,考虑到Azure Sphere应用中包含众多依赖项,程序员们需要改掉C语言编程中不管不顾的坏习惯,在Rust中明确指定内存使用方法。