您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

时间:2021-04-07 11:56:46  来源:今日头条  作者:cnBeta

作为一个相当完善的移动操作系统,Android 系统涉及到很多组件。如果宽泛的来讲可以分成两大部分,应用生态和操作系统本身。而对于开发者来说,所选择的编程语言会根据正在开发的 Android 部分有所不同。

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

对于应用开发者来说,JAVA 和 Kotlin 是比较流行的选择;而对于从事操作系统以及内部底层的开发者来说,C 和 C++ 是比较热门的选择。而今天谷歌为操作系统开发者增加了第 3 个选择-- Rust,因为 Android Open Source Project 现在支持 Rust 编程语言来开发操作系统了。

C 和 C++ 的限制

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

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

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

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

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

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

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

Rust 及其优势

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

让Android更安全 谷歌推荐开发者使用Rust编写系统代码

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

切换到 Rust 对于Android 意味着什么

Rust还专注于防止bug,而不是严重依赖检测bug,从而提高代码的正确性。它有几个关键特性,比如内存安全、数据并发、更有表现力的类型系统、默认的不可变引用和变量、更安全的整数处理、标准库中更好的错误处理等等。

google表示,在过去的18个月里,它一直在为Android开源项目添加Rust支持。但在Android平台上添加一门新语言是一项巨大的工程。一些工具链和依赖关系需要维护,测试基础设施和工具必须更新,开发人员需要接受培训。



Tags:Rust编写   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作为一个相当完善的移动操作系统,Android 系统涉及到很多组件。如果宽泛的来讲可以分成两大部分,应用生态和操作系统本身。而对于开发者来说,所选择的编程语言会根据正在开发的...【详细内容】
2021-04-07  Tags: Rust编写  点击:(286)  评论:(0)  加入收藏
▌简易百科推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  像程序那样思考    Tags:Android开发   点击:(6)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  YuCoding    Tags:Android   点击:(7)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  网易Leo    Tags:Android开发   点击:(16)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  网易Leo    Tags:Android开发   点击:(21)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  像程序那样思考    Tags:Android开发   点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  永沧    Tags:Android   点击:(26)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  羊城小阳    Tags:Android   点击:(36)  评论:(0)  加入收藏
谷歌离推出Play Store应用程序的新数据隐私部分又近了一步。应用程序开发人员现在可以通过谷歌在Play控制台的新 "数据安全表 "填写相关细节。该公司表示,所需信息将从2022年...【详细内容】
2021-10-20    中关村在线  Tags:安卓   点击:(57)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  像程序那样思考    Tags:Android架构   点击:(51)  评论:(0)  加入收藏
概述当Android应用程序需要访问设备上的敏感资源时,应用程序开发人员会使用权限模型。虽然该模型使用起来非常简单,但开发人员在使用权限时容易出错,从而导致安全漏洞。本文中,...【详细内容】
2021-09-07  SecTr安全团队    Tags:Android开发   点击:(66)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条