为了让android更安全,谷歌推荐开发者使用rust编写系统代码

思否编辑部 思否编辑部     2022-12-10     553

关键词:

对于安卓开发者来说,Java 和 Kotlin 是比较流行的选择;而对于从事操作系统以及内部底层的开发者来说,C 和 C++ 是比较热门的选择。但在众多语言中,Rust 作为一款小众的现代系统编程语言,近两年间逐渐受到了各大企业的青睐。

去年,AWS 开源团队宣布聘用 Rust 编译器联合创始人 Felix Klock,未来致力于进一步改进 Rust。苹果也表示对将 C 代码移植到 Rust 感兴趣,希望投身到使用 Rust 编写代码的潮流中,想要在基于 Linux 的服务器端平台上将 C 过渡到 Rust。微软在采访中也表示 C/C++ 无法胜任编写关键任务的软件,业界非常需要高性能、内存安全的编程语言来开发底层系统,而当今市场上最好的选择就是 Rust。

近日,谷歌宣布出于安全性的考虑,推荐开发者使用 Rust 编程语言来开发操作系统。并表示在过去的 18 个月里,它一直在为 Android 开源项目添加 Rust 支持。但在 Android 平台上添加一门新语言是一项巨大的工程。一些工具链和依赖关系需要维护,测试基础设施和工具必须更新,开发人员需要接受培训。

C 和 C++ 的局限性

Android 系统的底层需要 C 和 C++ 等系统编程语言。这些语言为开发者提供了控制和可预测性,这在访问低级系统资源和硬件时非常重要。不幸的是,C 和 C++ 并不能提供内存安全保证,使得它们容易出现错误和安全漏洞。开发者有责任在这些语言上管理内存寿命,但在复杂和多线程的代码库中,这说起来容易做起来难。

C 和 C++ 共同构成了 Android 平台上数以千万计的代码行。这些内存安全漏洞成为最难解决的代码错误来源,占 Android 高严重度安全漏洞的 70% 左右。单纯的修复这些 bug 变得不足以处理问题,更好的方法是在一开始就预防这些 bug。

由于缺乏内存安全保障,迫使开发者在严格约束的无权限沙盒内运行Android进程。但沙盒在资源上的成本很高,会消耗额外的开销,并引入延迟。沙盒也不能完全消除代码的漏洞,而且由于 bug 密度高,沙盒的功效会降低,进一步!

另一个限制,虽然不是 C 和 C++ 独有的,但适用于所有的内存安全问题,那就是错误状态必须在工具化的代码中实际触发,才能被检测到。所以即使你的代码有很好的测试,实际的 bug 也可能一直没有被发现。而当发现bug时,让它们得到修复又是另一项任务,涉及到一个漫长而昂贵的过程,不一定能得到正确的修复。因此,bug 检测变得不可靠,鉴于这些局限性,bug 预防是更好的方法。

Rust 及其优势

2020 年底,Rust 官方在调研了全球 8323 位开发者后,最新发布了 2020 年 Rust 调查报告。通过报告,我们发现 Rust 开发者的用户黏度较高,有 83% 的受访者表示他们一直在使用该语言。

众所周知,当提及 Rust 语言时,安全、性能、并发等特性是其优势。Rust 通过使用编译时检查和运行时检查相结合的方式提供内存安全保证,以强制执行对象的寿命/所有权,并确保内存访问是有效的。在实现这种安全性的同时,还能提供与C和C++相当的性能。Rust 还减少了对沙盒的需求,让开发人员有更多的开销空间来引入更安全、更轻量的新功能。

但是据官方调查报告显示,Rust 仍有许多亟需完善之处。譬如以下几点:

  • 与 C++ 的交互兼容需要进一步提升
  • Rust 上手难度太高
  • 编译时间过长
  • 库的支持不够丰富

虽然 Rust 确实有它的好处,但一夜之间将整个 Android 操作系统换成 Rust 是不可行的,并且现阶段的 Rust 也远非尽善尽美。而且可能根本不需要这样做,因为大多数 Android 的内存错误都发生在新的或最近修改的代码中,大约有 50% 的代码是不到一年的。谷歌认为,其内存安全语言的工作最好集中在新的开发上,而不是重写成熟的 C 和 C++ 代码。

据 Android 开发人员关系小组的成员称,Google 目前还不打算发布 Rust NDK。应用开发支持的语言将继续是 Kotlin,Java,C 和 C ++。

部分参考资料:

xda-developers:《Google is developing parts of Android in Rust to improve security》
Rust 官方:《Rust 语言 2020 调查报告》

如何让“安卓解锁”应用更安全地抵御破解?

...,我选择解锁器应用程序路线,因为它易于实施,允许在开发者控制台中进行个人统计,但主要是因为我不需要维护2个代码库(一个用于免费版和另一个付费版)。即使我使用了CVS(我确实这样做了),继 查看详情

安卓开发的入门书籍大家推荐几本?

参考技术A1、《GoogleAndroidSDK开发范例大全》《GoogleAndroidSDK开发范例大全》是2010年人民邮电出版社出版的图书。全书共分10章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发... 查看详情

让业务容器化更安全便捷,阿里云容器镜像服务acr推出免费制品中心

...并打包成容器镜像是云原生化实践的第一步,为了使企业开发者更简便地打造云原生应用交付流程,2023年1月,阿里云容器镜像服务ACR正式推出“云原生制品中心”,为容器开发者免费提供了来源于阿里云官方、龙蜥社区的安全... 查看详情

android14的首个开发者预览版,推出四大安全增强功能(代码片段)

【CSDN编者按】2月8日,谷歌正式发布了Android14首个开发者预览版,该版本将继续致力于提高开发者效率,同时推出四大安全功能。该版本将支持跨/多设备登录、应用双开、基于自己的需求定制增强的辅助功能等。原... 查看详情

谷歌推荐的android图片加载库(glide)介绍

...ctory.com/blog/get-to-know-glide-recommended-by-google/en在过去的谷歌开发者峰会,谷歌给我们介绍了一个图片加载库,bumptech开发的一个名字叫Glide的Android图像加载库。它已 查看详情

android安全开发之webview中的地雷

Android安全开发之WebView中的地雷0X01AboutWebView在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等。WebView功能强大,应用广泛,但它是天使与恶魔的合体,一方面... 查看详情

chrome解决flash问题

...用NPAPI插件,因为这些插件常常会给网站带来安全风险。为了让用户获得更安全、更快速且更稳定的Chrome浏览体验,2015年9月1日我们已停止支持N 查看详情

一文让你读懂网站https证书是什么

谷歌多年来一直致力于推进HTTPS的加密普及,为了营造安全的上网环境,通过改变Chrome用户界面显示取得显著成效。从Chrome80开始不安全的HTTPS页面会直接标记“NotSecure”(不安全)。下面为不了解网站SSL证书的朋友收集了1... 查看详情

什么叫android程序安全补丁级别?

...效果的方法:1、首先要有良好的编码习惯:一个优秀的开发者应该善于运用常识、完善的算法和标准设计模式。要有资源意识,打开了就要记得关闭,尽量做到晚获取,早释放。这些由来已久的编码准则同样适用Android应用开发... 查看详情

android安全开发之webview中的地雷

0X01AboutWebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等。WebView功能强大,应用广泛,但它是天使与恶魔的合体,一方面它增强了APP的上网体验,让... 查看详情

https:让数据传输更安全

...四篇文章介绍了页面安全和系统安全,也聊了浏览器和Web开发者是如何应对各种类型的攻击,本文是我们专栏的最后一篇,我们就接着来聊聊网络安全协议HTTPS。我们先从HTTP的明文传输的特性讲起,在上一个模块的三篇文章中我... 查看详情

用yolov8推荐的roboflow工具来训练自己的数据集(代码片段)

...。为了让YOLOv8能够有效地识别自己的应用中的物体,开发者需要准备大量的训练数据,而构建自定义数据集是一个非常耗时的过程,往往收集图像、标记图像并以正确的格式导出它们可能就需要数十甚至数百个小时。... 查看详情

@开发者云端一条生产线,让软件开发更敏捷更安全

...践考验的华为云软件开发生产线DevCloud脱颖而出,为开发者提供从需求规划、到编译、发布、构建、部署全生命周期的软件工具服务,帮助研发团队完成研发知识的沉淀,助力企业专注业务创新。什么是软件开发生产... 查看详情

前端project师养成记:开发环境搭建(sublimetext必备插件推荐)

为了让自己更像一个前端project师,决定从开发环境開始武装自己。本文将介绍前段project师开发的一些利器的安装步骤,主要包含了:1.Node.js的安装2.Grunt的安装及经常使用插件3.SublimeText的安装及必备插件一.Node.js的安装Node.js就... 查看详情

10大最适合编程的字体推荐下载,让代码看起来更美更舒服!

   现在有事没事就喜欢写写代码的人越来越多了,对于成天盯着屏幕工作的开发人员来说,编程代码可能是每天见得最多的东西了。可是绝大部分人都一直使用编辑器默认的字体,其实,换一套适合自己的编程字体不仅能... 查看详情

如何在chrome上安装android应用

...部分应用可能也无法正常工作。虽然该版本主要是提供给开发者进行应用测试的,可对于心怀冒险精神的普通用户来说,自行尝试也未尝不可。  如何获取AndroidRuntimeforChrome  想要运行ARC,你只需要在计算机中安装最新版本... 查看详情

谷歌大佬重磅推荐《android开发入门精编》,极致经典,堪称android入门教程的天花板

我仍记得2015年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经接近7年,最初的时候,并没有人告诉我如何做才是正确的。我犯了很多错误,浪费了很多时间。两年之后,我进入谷歌... 查看详情

如何让自己的代码更加安全?

...下了戒备,但是他们的编码错误还是有可能会带来严重的安全隐患。这篇文章的主要受众是还不太熟悉Python的人,其中会提及少量与安全有关的行为以及有经验开发人员遵循的规则。 输入函数在Python2强大的内置函数中,输... 查看详情