Android liên tục cải thiện các tính năng và dịch vụ bảo mật của mình. Xem danh sách các tính năng nâng cao theo bản phát hành trong bảng điều hướng bên trái.
Android 14
每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:
- Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
- 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
- Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接。
- 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划。
- 新增了对多个 IMEI 的支持
- 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
- 移动网络连接
- 在 Android 安全中心添加了相关文档
- 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。
Android 13
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 13 中提供的一些主要安全增强功能:
- Android 13 添加了对多文档呈现的支持。 通过这个新的 Presentation Session 接口,应用可以执行多文档呈现,而现有 API 无法做到这一点。如需了解详情,请参阅身份凭据
- 在 Android 13 中,当且仅当源自外部应用的 intent 与其声明的 intent 过滤器元素匹配时,这些 intent 才会传送到导出的组件。
- Open Mobile API (OMAPI) 是一种标准 API,用于与设备的安全元件进行通信。在 Android 13 之前,只有应用和框架模块可以访问此接口。通过将其转换为供应商稳定版接口,HAL 模块还能够通过 OMAPI 服务与安全元件进行通信。 如需了解详情,请参阅 OMAPI 供应商稳定版接口。
- 从 Android 13-QPR 开始,共享 UID 被废弃。 使用 Android 13 或更高版本的用户应在其清单中添加 `android:sharedUserMaxSdkVersion="32"` 行。此条目可防止新用户获取共享 UID。如需详细了解 UID,请参阅应用签名。
- Android 13 添加了对密钥库对称加密基元的支持,例如支持 AES(高级加密标准)、HMAC(密钥哈希消息认证码)以及非对称加密算法(包括椭圆曲线加密、RSA2048、RSA4096 和曲线 25519 加密)
- Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免通知的运行时权限。这可让用户控制他们会看到哪些权限通知。
- 针对请求访问所有设备日志的应用,添加了在每次使用时显示提示的功能,以便用户允许或拒绝授予访问权限。
- 推出了 Android 虚拟化框架 (AVF),它使用标准化 API 将不同的 Hypervisor 整合到一个框架下。 它提供安全、私密的执行环境,以便执行通过 Hypervisor 隔离的工作负载。
- 引入了 APK 签名方案 v3.1 所有使用 apksigner 的新密钥轮替都将默认使用 v3.1 签名方案,以便将 Android 13 及更高版本作为轮替目标。
Android 12
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 12 中提供的一些主要安全增强功能:
- Android 12 引入了 BiometricManager.Strings API,它为使用 BiometricPrompt 进行身份验证的应用提供本地化的字符串。这些字符串旨在感知设备,并更明确地指定可以使用哪些身份验证类型。Android 12 还支持屏下指纹传感器
- 添加了对屏下指纹传感器的支持
- 引入了 Fingerprint Android 接口定义语言 (AIDL)
- 支持新的 Face AIDL
- 引入了 Rust 作为平台开发语言
- 添加了可供用户仅授权应用访问其大致位置信息的选项
- 当应用使用摄像头或麦克风时,现在状态栏上会显示隐私指示标志
- Android 的 Private Compute Core (PCC)
- 添加了用于停用 2G 支持的选项
Android 11
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Để biết danh sách một số tính năng bảo mật nâng cao chính có trong Android 11, hãy xem Ghi chú phát hành Android.
Android 10
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Android 10 có một số tính năng nâng cao về bảo mật và quyền riêng tư. Xem ghi chú phát hành của Android 10 để xem danh sách đầy đủ các thay đổi trong Android 10.
Bảo mật
BoundsSanitizer
Android 10 triển khai BoundsSanitizer (BoundSan) trong Bluetooth và bộ mã hoá và giải mã. BoundSan sử dụng trình dọn dẹp giới hạn của UBSan. Giải pháp giảm thiểu này được bật ở cấp độ từng mô-đun. Giúp thu hút khách hàng quan trọng các thành phần của Android an toàn và không được tắt. BoundSan được bật trong các bộ mã hoá và giải mã sau:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Bộ nhớ chỉ thực thi
Theo mặc định, các phần mã thực thi cho tệp nhị phân hệ thống AArch64 được đánh dấu là chỉ thực thi (không đọc được) để giảm thiểu việc tấn công tái sử dụng mã đúng thời điểm. Mã kết hợp dữ liệu và mã với nhau và mã kiểm tra có chủ đích các phần này (mà không cần ánh xạ lại các phân đoạn bộ nhớ ở dạng có thể đọc trước tiên) không còn hoạt động nữa. Các ứng dụng có SDK mục tiêu là Android 10 (API cấp 29 trở lên) sẽ bị ảnh hưởng nếu ứng dụng cố gắng đọc các phần mã của thư viện hệ thống đã bật bộ nhớ chỉ thực thi (XOM) trong bộ nhớ mà không đánh dấu trước phần đó là có thể đọc được.
Quyền truy cập mở rộng
Tác nhân tin cậy, cơ chế cơ bản mà xác thực cấp ba sử dụng các cơ chế như Smart Lock chỉ có thể kéo dài thời gian mở khoá trong Android 10. Độ tin cậy nhân viên hỗ trợ không thể mở khoá một thiết bị đã khoá và chỉ có thể giữ cho thiết bị luôn mở khoá trong tối đa bốn giờ.
Xác thực khuôn mặt
Khuôn mặt xác thực cho phép người dùng mở khoá thiết bị của họ chỉ bằng cách nhìn vào trước thiết bị của họ. Android 10 hỗ trợ thêm một ngăn xếp xác thực khuôn mặt mới có thể xử lý các khung hình máy ảnh một cách an toàn, bảo vệ tính bảo mật và quyền riêng tư trong quá trình xác thực khuôn mặt trên phần cứng được hỗ trợ. Android 10 cũng cung cấp một cách dễ dàng để triển khai các biện pháp tuân thủ bảo mật nhằm cho phép tích hợp ứng dụng cho các giao dịch như ngân hàng trực tuyến hoặc các dịch vụ khác.
Dọn dẹp tràn số nguyên
Android 10 bật tính năng Thêm số nguyên Dọn dẹp (IntSan) trong bộ mã hoá và giải mã phần mềm. Đảm bảo hiệu suất phát ở mức chấp nhận được đối với mọi bộ mã hoá và giải mã không được hỗ trợ trong phần cứng của thiết bị. IntSan được bật trong các bộ mã hoá và giải mã sau:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Thành phần hệ thống mô-đun
Android 10 mô-đun hoá một số thành phần hệ thống Android và cho phép cập nhật các thành phần đó bên ngoài chu kỳ phát hành Android thông thường. Một số mô-đun bao gồm:
- Android Thời gian chạy
- Conscrypt
- Trình phân giải DNS
- Giao diện người dùng tài liệu
- ExtServices
- Nội dung đa phương tiện
- ModuleMetadata (Siêu dữ liệu mô-đun)
- Networking
- PermissionController
- Dữ liệu về múi giờ
OEMCrypto
Android 10 sử dụng OEMCrypto API phiên bản 15.
Scudo
Scudo là một trình phân bổ bộ nhớ động ở chế độ người dùng được thiết kế để có khả năng chống chịu tốt hơn trước các lỗ hổng liên quan đến vùng nhớ khối xếp. Thư viện này cung cấp các nguyên hàm phân bổ và giải phóng C tiêu chuẩn, cũng như các nguyên hàm C++.
ShadowCallStack
ShadowCallStack
(SCS)
là một LLVM
khả năng đo lường giúp chống lại việc ghi đè địa chỉ trả về (như
vùng đệm ngăn xếp bị tràn) bằng cách lưu địa chỉ trả về của một hàm vào một
thực thể ShadowCallStack
được phân bổ trong nhật ký hàm là
các hàm không có lá và tải địa chỉ trả về từ
Thực thể ShadowCallStack
trong phần tóm tắt của hàm.
WPA3 và Wi-Fi Enhanced Open
Android 10 hỗ trợ thêm Wi-Fi Các tiêu chuẩn bảo mật bảo mật Protected Access 3 (WPA3) và Wi-Fi mở rộng để bảo vệ quyền riêng tư và tăng cường độ mạnh mẽ trước các cuộc tấn công đã biết.
Quyền riêng tư
Quyền truy cập vào ứng dụng khi nhắm đến Android 9 trở xuống
Nếu ứng dụng của bạn chạy trên Android 10 trở lên nhưng nhắm đến Android 9 (API cấp 28) hoặc thấp hơn, nền tảng sẽ áp dụng hành vi sau:
- Nếu ứng dụng của bạn khai báo phần tử
<uses-permission>
choACCESS_FINE_LOCATION
hoặcACCESS_COARSE_LOCATION
, hệ thống sẽ tự động thêm phần tử<uses-permission>
choACCESS_BACKGROUND_LOCATION
trong quá trình cài đặt. - Nếu ứng dụng của bạn yêu cầu
ACCESS_FINE_LOCATION
hoặcACCESS_COARSE_LOCATION
, hệ thống sẽ tự động thêmACCESS_BACKGROUND_LOCATION
vào yêu cầu.
Hạn chế hoạt động ở chế độ nền
Kể từ Android 10, hệ thống sẽ đặt ra các quy định hạn chế
khi bắt đầu hoạt động ở chế độ nền. Thay đổi về hành vi này giúp giảm thiểu sự gián đoạn cho người dùng và giúp người dùng kiểm soát tốt hơn nội dung hiển thị trên màn hình. Miễn là ứng dụng của bạn bắt đầu các hoạt động do kết quả trực tiếp của hoạt động tương tác của người dùng, thì rất có thể ứng dụng của bạn sẽ không bị ảnh hưởng bởi các quy định hạn chế này.
Để tìm hiểu thêm về giải pháp thay thế được đề xuất cho việc bắt đầu các hoạt động ở chế độ nền, hãy xem hướng dẫn về cách cảnh báo người dùng về các sự kiện nhạy cảm về thời gian trong ứng dụng.
Siêu dữ liệu của camera
Android 10 thay đổi phạm vi thông tin mà phương thức getCameraCharacteristics()
trả về theo mặc định. Cụ thể, ứng dụng của bạn phải có CAMERA
để truy cập vào siêu dữ liệu có thể dành riêng cho thiết bị
được bao gồm trong giá trị trả về của phương thức này.
Để tìm hiểu thêm về những thay đổi này, hãy xem phần về các trường máy ảnh cần có quyền.
Dữ liệu bảng nhớ tạm
Trừ phi ứng dụng của bạn là phương thức đầu vào mặc định trình chỉnh sửa phương thức (IME) hoặc là ứng dụng hiện có tiêu điểm, ứng dụng của bạn không thể truy cập vào dữ liệu bảng nhớ tạm trên Android 10 trở lên.
Vị trí thiết bị
Để hỗ trợ thêm quyền kiểm soát mà người dùng có đối với quyền truy cập của ứng dụng vào thông tin vị trí, Android 10 đã ra mắt quyền ACCESS_BACKGROUND_LOCATION
.
Ngừng thích ACCESS_FINE_LOCATION
và ACCESS_COARSE_LOCATION
thì quyền ACCESS_BACKGROUND_LOCATION
chỉ ảnh hưởng đến
quyền truy cập của ứng dụng vào thông tin vị trí khi ứng dụng đó chạy ở chế độ nền. Một ứng dụng được xem là
truy cập thông tin vị trí ở chế độ nền, trừ phi một trong những điều sau
thoả mãn điều kiện:
- Bạn có thể nhìn thấy một hoạt động thuộc về ứng dụng đó.
- Ứng dụng đang chạy một dịch vụ trên nền trước đã khai báo loại dịch vụ trên nền trước là
location
.
Cách khai báo dịch vụ trên nền trước nhập cho một dịch vụ trong ứng dụng của bạn, đặttargetSdkVersion
hoặccompileSdkVersion
đến29
trở lên. Tìm hiểu thêm về cách các dịch vụ trên nền trước có thể tiếp tục những hành động do người dùng thực hiện yêu cầu quyền truy cập vào thông tin vị trí.
Bộ nhớ ngoài
Theo mặc định, những ứng dụng nhắm đến Android 10 trở lên sẽ được cung cấp phạm vi quyền truy cập vào bộ nhớ ngoài hoặc bộ nhớ có giới hạn. Những ứng dụng như vậy có thể xem các loại tệp sau vào thiết bị lưu trữ bên ngoài mà không cần để yêu cầu quyền của người dùng liên quan đến bộ nhớ:
- Các tệp trong thư mục dành riêng cho ứng dụng, được truy cập bằng
getExternalFilesDir()
. - Ảnh, video và đoạn âm thanh mà ứng dụng tạo ra từ nội dung nghe nhìn cửa hàng.
Để tìm hiểu thêm về bộ nhớ có giới hạn, cũng như cách chia sẻ, truy cập và sửa đổi các tệp được lưu trên thiết bị bộ nhớ ngoài, hãy xem hướng dẫn về cách quản lý tệp trong bộ nhớ ngoài và truy cập và sửa đổi tệp phương tiện.
Gán địa chỉ MAC ngẫu nhiên
Trên các thiết bị chạy Android 10 trở lên, hệ thống sẽ truyền tin MAC ngẫu nhiên
địa chỉ email theo mặc định.
Nếu ứng dụng của bạn xử lý một trường hợp sử dụng dành cho doanh nghiệp, thì nền tảng sẽ cung cấp các API cho một số thao tác liên quan đến địa chỉ MAC:
- Nhận địa chỉ MAC ngẫu nhiên: Ứng dụng của chủ sở hữu thiết bị và
ứng dụng của chủ sở hữu hồ sơ có thể truy xuất địa chỉ MAC ngẫu nhiên được gán cho một
mạng cụ thể bằng cách gọi
getRandomizedMacAddress()
. - Lấy địa chỉ MAC thực tế ban đầu:Các ứng dụng của chủ sở hữu thiết bị có thể
truy xuất địa chỉ MAC phần cứng thực tế của thiết bị bằng cách gọi
getWifiMacAddress()
. Phương pháp này rất hữu ích khi theo dõi các nhóm thiết bị.
Giá trị nhận dạng thiết bị không thể đặt lại
Kể từ Android 10, ứng dụng phải có quyền đặc quyền READ_PRIVILEGED_PHONE_STATE
để truy cập vào giá trị nhận dạng không thể đặt lại của thiết bị, bao gồm cả IMEI và số sê-ri.
Build
TelephonyManager
Nếu ứng dụng của bạn không có quyền này và bạn vẫn cố gắng yêu cầu thông tin về giá trị nhận dạng không thể đặt lại, thì phản hồi của nền tảng sẽ khác nhau tuỳ theo phiên bản SDK mục tiêu:
- Nếu ứng dụng của bạn nhắm đến Android 10 trở lên, thì
SecurityException
sẽ xảy ra. - Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, thì phương thức này sẽ trả về
null
hoặc dữ liệu phần giữ chỗ nếu ứng dụng cóREAD_PHONE_STATE
quyền. Nếu không,SecurityException
sẽ xảy ra.
Nhận dạng hoạt động thể chất
Android 10 ra mắt android.permission.ACTIVITY_RECOGNITION
quyền khi bắt đầu chạy cho những ứng dụng cần phát hiện số bước của người dùng, hoặc
phân loại hoạt động thể chất của người dùng, ví dụ như đi bộ, đi xe đạp, hoặc di chuyển trong
chiếc xe. Mục đích của tính năng này là giúp người dùng biết cách dữ liệu cảm biến thiết bị được sử dụng trong phần Cài đặt.
Một số thư viện trong Dịch vụ Google Play, chẳng hạn như Activity
Recognition API và Google
API Fit, không cung cấp kết quả trừ phi người dùng đã cấp quyền này cho ứng dụng của bạn
quyền.
Ứng dụng cài sẵn duy nhất
cảm biến trên thiết bị yêu cầu bạn khai báo quyền này là bước
bộ đếm và bước
máy phát hiện.
Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, hệ thống
tự động cấp quyền android.permission.ACTIVITY_RECOGNITION
cho ứng dụng của bạn (nếu cần) nếu ứng dụng đó đáp ứng mỗi điều kiện sau
điều kiện:
- Tệp kê khai bao gồm
Quyền
com.google.android.gms.permission.ACTIVITY_RECOGNITION
. - Tệp kê khai không bao gồm quyền
android.permission.ACTIVITY_RECOGNITION
.
Nếu hệ thống tự động cấp
Quyền android.permission.ACTIVITY_RECOGNITION
, ứng dụng của bạn
vẫn giữ lại quyền sau khi bạn cập nhật ứng dụng để nhắm đến Android 10. Tuy nhiên,
người dùng có thể thu hồi quyền này bất cứ lúc nào trong phần cài đặt hệ thống.
Các quy định hạn chế về hệ thống tệp /proc/net
Trên các thiết bị chạy Android 10 trở lên, ứng dụng không thể truy cập vào /proc/net
, trong đó có thông tin về trạng thái mạng của thiết bị. Các ứng dụng cần quyền truy cập vào thông tin này, chẳng hạn như VPN, nên sử dụng
NetworkStatsManager
hoặc ConnectivityManager
.
Xoá nhóm quyền khỏi giao diện người dùng
Kể từ Android 10, các ứng dụng không thể tra cứu cách nhóm các quyền trong giao diện người dùng.
Xoá đối tượng chung sở thích liên hệ
Kể từ Android 10, nền tảng này không theo dõi thông tin về mối quan hệ tương đồng của người liên hệ. Do đó, nếu ứng dụng của bạn thực hiện tìm kiếm danh bạ của người dùng,
kết quả không được sắp xếp theo tần suất tương tác.
Hướng dẫn về ContactsProvider
có một thông báo mô tả các trường và phương thức cụ thể đã lỗi thời trên tất cả thiết bị bắt đầu từ Android 10.
Hạn chế quyền truy cập vào nội dung trên màn hình
Để bảo vệ nội dung màn hình, Android 10 ngăn chặn quyền truy cập im lặng vào
nội dung trên màn hình của thiết bị bằng cách thay đổi phạm vi của
READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
và
Quyền CAPTURE_SECURE_VIDEO_OUTPUT
. Kể từ Android 10,
là quyền truy cập bằng chữ ký
.
Các ứng dụng cần truy cập vào nội dung trên màn hình của thiết bị phải sử dụng API
MediaProjection
. API này sẽ hiển thị lời nhắc yêu cầu người dùng đồng ý.
Số sê-ri của thiết bị USB
Nếu ứng dụng của bạn nhắm đến Android 10 trở lên, thì ứng dụng đó sẽ không đọc được sê-ri
số điện thoại cho đến khi người dùng cấp cho ứng dụng của bạn quyền truy cập vào thiết bị USB
hoặc phụ kiện.
Để tìm hiểu thêm về cách làm việc với thiết bị USB, hãy xem hướng dẫn về cách định cấu hình máy chủ USB.
Wi-Fi
Các ứng dụng nhắm đến Android 10 trở lên không thể bật hoặc tắt Wi-Fi. Chiến lược phát hành đĩa đơn
WifiManager.setWifiEnabled()
luôn trả về false
.
Nếu bạn cần nhắc người dùng bật và tắt Wi-Fi, hãy sử dụng bảng điều khiển cài đặt.
Các hạn chế đối với quyền truy cập trực tiếp vào mạng Wi-Fi đã định cấu hình
Để bảo vệ quyền riêng tư của người dùng, hãy định cấu hình danh sách mạng Wi-Fi theo cách thủ công
chỉ dành cho các ứng dụng hệ thống và chính sách thiết bị
bộ điều khiển (DPC). Một DPC nhất định có thể là chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ.
Nếu ứng dụng của bạn nhắm đến Android 10 trở lên và không phải là ứng dụng hệ thống hoặc DPC, thì các phương thức sau sẽ không trả về dữ liệu hữu ích:
- Phương thức
getConfiguredNetworks()
luôn trả về một danh sách trống. - Mỗi phương thức thao tác mạng trả về một giá trị số nguyên –
addNetwork()
vàupdateNetwork()
– luôn trả về -1. - Mỗi thao tác mạng trả về một giá trị boolean –
removeNetwork()
,reassociate()
!enableNetwork()
,disableNetwork()
!reconnect()
, vàdisconnect()
—luôn luôn sẽ trả vềfalse
.
Android 9
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需 Android 9 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
Android 8
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能:
- 加密:在工作资料中增加了对撤销密钥 (evict key) 的支持。
- 验证启动:增加了 Android 启动时验证 (AVB)。支持回滚保护(用于引导加载程序)的启动时验证代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。
- 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。
- KeyStore:搭载 Android 8.0 及更高版本的所有设备都需要进行密钥认证。增加了 ID 认证支持,以改进零触摸注册计划。
- 沙盒:使用 Treble 计划的框架和设备特定组件之间的标准接口更紧密地对许多组件进行沙盒化处理。将 seccomp 过滤应用到了所有不信任的应用,以减少内核的攻击面。WebView 现在运行在一个独立的进程中,对系统其余部分的访问非常有限。
- 内核加固:实现了经过安全强化的 usercopy、PAN 模拟、初始化后变为只读以及 KASLR。
- 用户空间安全强化:为媒体堆栈实现了 CFI。 应用叠加层不能再遮盖系统关键窗口,并且用户可以关闭这些叠加层。
- 操作系统流式更新:在磁盘空间不足的设备上启用了更新。
- 安装未知应用:用户必须授予权限,系统才能从不是第一方应用商店的来源安装应用。
- 隐私权:对于设备上的每个应用和使用设备的每个用户,Android ID (SSAID) 都采用不同的值。对于网络浏览器应用,Widevine 客户端 ID 会针对每个应用软件包名称和网络来源返回不同的值。
net.hostname
现在为空,并且 DHCP 客户端不再发送主机名。android.os.Build.SERIAL
已被替换为Build.SERIAL
API(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。
Android 7
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 7.0 中提供的一些主要安全增强功能:
- 文件级加密:在文件级进行加密,而不是将整个存储区域作为单个单元进行加密。这种加密方式可以更好地隔离和保护设备上的不同用户和资料(例如个人资料和工作资料)。
- 直接启动:通过文件级加密实现,允许特定应用(例如,闹钟和无障碍功能)在设备已开机但未解锁的情况下运行。
- 验证启动:现在,验证启动会被严格强制执行,从而使遭到入侵的设备无法启动;验证启动支持纠错功能,有助于更可靠地防范非恶意数据损坏。
- SELinux。更新后的 SELinux 配置和更高的 Seccomp 覆盖率有助于进一步锁定应用沙盒并减小受攻击面。
- 库加载顺序随机化和改进的 ASLR。 增大随机性降低了某些代码重用攻击的有效性。
- 内核加固:通过将内核内存的各个分区标记为只读,限制内核对用户空间地址的访问,并进一步减小现有的受攻击面,为更高版本的内核添加额外的内存保护。
- APK 签名方案 v2:引入了一种全文件签名方案,该方案有助于加快验证速度并增强完整性保证。
- 可信 CA 存储区。为了使应用更容易控制对其安全网络流量的访问,对于 API 级别为 24 及以上的应用,由用户安装的证书颁发机构以及通过 Device Admin API 安装的证书颁发机构在默认情况下不再受信任。此外,所有新的 Android 设备必须搭载相同的可信 CA 存储区。
- 网络安全配置。通过声明式配置文件来配置网络安全设置和传输层安全协议 (TLS)。
Android 6
Mỗi bản phát hành Android đều có hàng chục tính năng bảo mật nâng cao để bảo vệ người dùng. Dưới đây là một số tính năng bảo mật nâng cao chính hiện có trên Android 6.0:
- Quyền khi bắt đầu chạy. Ứng dụng yêu cầu cấp quyền khi bắt đầu chạy thay vì được cấp quyền tại thời điểm cài đặt ứng dụng. Người dùng có thể bật và tắt quyền cho cả giai đoạn M và giai đoạn trước M của chúng tôi.
- Xác minh quy trình khởi động. Một tập hợp các bước kiểm tra bằng mật mã của hệ thống được tiến hành trước khi để đảm bảo điện thoại hoạt động tốt từ trình tải khởi động cho đến hệ điều hành.
- Bảo mật được tách biệt bằng phần cứng. Lớp trừu tượng hoá phần cứng (HAL) mới do API vân tay, Màn hình khoá, Mã hoá thiết bị và Chứng chỉ máy khách sử dụng để bảo vệ khoá khỏi bị xâm phạm hạt nhân và/hoặc các cuộc tấn công vật lý cục bộ
- Vân tay. Giờ đây, bạn có thể mở khoá thiết bị chỉ bằng một thao tác chạm. Nhà phát triển cũng có thể thực hiện tận dụng các API mới để sử dụng vân tay nhằm khoá và mở khoá khoá mã hoá.
- Sử dụng thẻ SD. Bạn có thể sử dụng phương tiện có thể tháo rời cho một thiết bị và mở rộng bộ nhớ có sẵn cho dữ liệu cục bộ của ứng dụng, ảnh, video, v.v., nhưng vẫn được bảo vệ bằng phương thức mã hoá cấp khối.
- Lưu lượng truy cập qua văn bản rõ ràng. Nhà phát triển có thể dùng StrictMode mới để đảm bảo ứng dụng của họ không dùng văn bản thô.
- Tăng cường hệ thống. Củng cố hệ thống bằng các chính sách do SELinux thực thi. Việc này mang đến trải nghiệm tốt hơn sự tách biệt giữa người dùng, cơ chế lọc IOML, giảm mối đe doạ đối với dịch vụ tiếp xúc, siết chặt hơn nữa miền SELinux và truy cập /proc cực kỳ hạn chế.
- Kiểm soát quyền truy cập USB: Người dùng phải xác nhận để cho phép USB truy cập vào các tệp, bộ nhớ hoặc chức năng khác trên điện thoại. Chế độ mặc định hiện là chỉ tính phí với quyền truy cập vào bộ nhớ yêu cầu người dùng phê duyệt rõ ràng.
Android 5
5
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Dưới đây là một số tính năng bảo mật nâng cao chính hiện có trên Android 5:
- Được mã hoá theo mặc định. Trên các thiết bị đi kèm với L ngay từ đầu, tính năng mã hoá toàn bộ ổ đĩa được bật theo mặc định để cải thiện khả năng bảo vệ dữ liệu trên các thiết bị bị mất hoặc bị đánh cắp. Bạn có thể mã hoá các thiết bị cập nhật lên L trong phần Cài đặt > Bảo mật .
- Cải thiện tính năng mã hoá toàn bộ đĩa. Mật khẩu của người dùng là
được bảo vệ khỏi các cuộc tấn công brute force bằng
scrypt
và, có sẵn, khoá sẽ được liên kết với kho khoá phần cứng để ngăn chặn cuộc tấn công ra ngoài thiết bị. Như mọi khi, khoá bí mật màn hình Android và khoá mã hoá thiết bị sẽ không được gửi ra khỏi thiết bị hoặc hiển thị cho bất kỳ ứng dụng nào. - Hộp cát Android được tăng cường bằng SELinux . Android ngay bây giờ yêu cầu SELinux trong chế độ thực thi cho tất cả các miền. SELinux là một hệ thống kiểm soát truy cập (MAC) bắt buộc trong nhân Linux được sử dụng để tăng cường mô hình bảo mật kiểm soát truy cập tuỳ ý (DAC) hiện tại. Lớp mới này cung cấp biện pháp bảo vệ bổ sung trước các lỗ hổng bảo mật tiềm ẩn.
- Smart Lock. Android hiện có các trustlet giúp tăng tính linh hoạt khi mở khoá thiết bị. Ví dụ: trustlet có thể cho phép tự động mở khoá thiết bị khi ở gần một thiết bị tin cậy khác (thông qua NFC, Bluetooth) hoặc khi thiết bị được một người có khuôn mặt được tin cậy sử dụng.
- Nhiều người dùng, hồ sơ bị hạn chế và chế độ khách cho điện thoại và máy tính bảng. Android hiện cung cấp cho nhiều người dùng trên điện thoại và có một chế độ khách có thể dùng để giúp bạn dễ dàng truy cập tạm thời vào mà không cấp quyền truy cập vào dữ liệu và ứng dụng của bạn.
- Cập nhật WebView mà không cần OTA. Giờ đây, bạn có thể cập nhật WebView độc lập với khung và không cần hệ thống OTA. Điều này cho phép phản hồi nhanh hơn các vấn đề bảo mật tiềm ẩn trong WebView.
- Cập nhật thuật toán mã hoá cho HTTPS và TLS/SSL. TLSv1.2 và TLSv1.1 hiện đã được bật, tính năng Bảo mật chuyển tiếp hiện được ưu tiên, AES-GCM hiện đã được bật và các bộ thuật toán mật mã yếu (MD5, 3DES và bộ thuật toán mật mã xuất) hiện đã bị tắt. Hãy xem https://developer.android.com/reference/javax/net/ssl/SSLSocket.html để biết thêm thông tin chi tiết.
- Xoá tính năng hỗ trợ trình liên kết không phải PIE. Android hiện yêu cầu tất cả các tệp thực thi được liên kết linh động để hỗ trợ PIE (các tệp thực thi độc lập với vị trí). Điều này giúp cải thiện việc triển khai tính năng bố cục không gian địa chỉ ngẫu nhiên (ASLR) của Android.
- Cải tiếnFORTIFY_SOURCE. Thư viện sau đây
các hàm hiện triển khai biện pháp bảo vệ FORTIFY_SOURCE:
stpcpy()
,stpncpy()
,read()
,recvfrom()
FD_CLR()
,FD_SET()
vàFD_ISSET()
. Chiến dịch này cung cấp biện pháp bảo vệ chống lại các lỗ hổng bảo mật làm hỏng bộ nhớ liên quan đến các hàm đó. - Bản sửa lỗi bảo mật. Android 5.0 cũng bao gồm các bản sửa lỗi cho Các lỗ hổng bảo mật dành riêng cho Android. Thông tin về những lỗ hổng bảo mật này được cung cấp cho các thành viên của Open Handset Alliance và có các bản sửa lỗi tại Dự án nguồn mở Android. Để tăng cường bảo mật, một số thiết bị có cài đặt các phiên bản Android cũng có thể bao gồm các bản sửa lỗi này.
Android 4 trở xuống
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.4 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。 Android 现在以强制模式使用 SELinux。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于自主访问控制 (DAC) 的现有安全模型。 这为防范潜在的安全漏洞提供了额外的保护屏障。
- 按用户应用 VPN。 在多用户设备上,现在按用户应用 VPN。 这样一来,用户就可以通过一个 VPN 路由所有网络流量,而不会影响使用同一设备的其他用户。
- AndroidKeyStore 中的 ECDSA 提供程序支持。 Android 现在有一个允许使用 ECDSA 和 DSA 算法的密钥库提供程序。
- 设备监测警告。 如果有任何可能允许监测加密网络流量的证书添加到设备证书库中,Android 都会向用户发出警告。
- FORTIFY_SOURCE。 Android 现在支持 FORTIFY_SOURCE 第 2 级,并且所有代码在编译时都会受到这些保护。FORTIFY_SOURCE 已得到增强,能够与 Clang 配合使用。
- 证书锁定。 Android 4.4 能够检测安全的 SSL/TLS 通信中是否使用了欺诈性 Google 证书,并且能够阻止这种行为。
- 安全修复程序。 Android 4.4 中还包含针对 Android 特有漏洞的修复程序。 有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开源项目中提供了相应的修复程序。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复程序。
Mỗi bản phát hành Android đều có hàng chục tính năng bảo mật nâng cao để bảo vệ người dùng. Sau đây là một số tính năng bảo mật nâng cao hiện có trong Android 4.3:
- Hộp cát Android được củng cố bằng SELinux. Bản phát hành này tăng cường hộp cát Android bằng cách sử dụng hệ thống kiểm soát quyền truy cập bắt buộc (MAC) của SELinux trong nhân Linux. SELinux tăng cường mà người dùng và nhà phát triển không nhìn thấy, đồng thời tăng thêm tính mạnh mẽ vào mô hình bảo mật Android hiện có mà vẫn duy trì khả năng tương thích với các ứng dụng hiện có. Để đảm bảo khả năng tương thích liên tục, bản phát hành này cho phép sử dụng SELinux ở chế độ cho phép. Chế độ này ghi lại mọi chính sách nhưng sẽ không làm hỏng ứng dụng hoặc ảnh hưởng đến hoạt động của hệ thống.
- Không có chương trình
setuid
hoặcsetgid
. Bổ sung tính năng hỗ trợ các chức năng của hệ thống tệp vào tệp hệ thống Android và xoá tất cả chương trìnhsetuid
hoặcsetgid
. Chiến dịch này giảm bề mặt tấn công gốc và giảm thiểu khả năng bảo mật lỗ hổng bảo mật. - Xác thực ADB. Kể từ Android 4.2.2, các kết nối đến ADB là được xác thực bằng cặp khoá RSA. Điều này giúp ngăn chặn việc sử dụng trái phép ADB khi kẻ tấn công có quyền truy cập thực tế vào thiết bị.
- Hạn chế Setuid trong các ứng dụng Android.
Phân vùng
/system
hiện được gắn nosuid cho các quy trình do zygote tạo ra, ngăn ứng dụng Android thực thi các chương trìnhsetuid
. Điều này giúp giảm thiểu bề mặt tấn công gốc nguy cơ gặp phải lỗ hổng bảo mật tiềm ẩn. - Giới hạn chức năng.
Android zygote và ADB hiện sử dụng
prctl(PR_CAPBSET_DROP)
để thả khả năng không cần thiết trước khi thực thi ứng dụng. Điều này ngăn các ứng dụng Android và ứng dụng được chạy từ shell có được các chức năng đặc quyền. - Nhà cung cấp AndroidKeyStore. Android hiện có một trình cung cấp kho khoá cho phép các ứng dụng tạo khoá sử dụng độc quyền. Điều này cung cấp cho các ứng dụng một API để tạo hoặc lưu trữ các khoá riêng tư mà các ứng dụng khác không thể sử dụng.
- KeyChain
isBoundKeyAlgorithm
. Keychain API hiện cung cấp một phương thức (isBoundKeyType
) cho phép các ứng dụng xác nhận rằng các khoá trên toàn hệ thống được liên kết với một gốc đáng tin cậy phần cứng cho thiết bị. Điều này mang lại một nơi để tạo hoặc lưu trữ các khoá riêng tư không thể xuất ra khỏi thiết bị, ngay cả trong trường hợp bị xâm phạm thư mục gốc. NO_NEW_PRIVS
. Android zygote hiện sử dụngprctl(PR_SET_NO_NEW_PRIVS)
để chặn việc thêm các đặc quyền mới trước khi thực thi mã ứng dụng. Chiến dịch này ngăn ứng dụng Android thực hiện các thao tác có thể nâng cao đặc quyền thông qua người thực thi. (Điều này yêu cầu nhân Linux phiên bản 3.5 trở lên).- Các tính năng nâng cao cho
FORTIFY_SOURCE
. Đã bậtFORTIFY_SOURCE
trên Android x86 và MIPS và tăng cườngstrchr()
,strrchr()
,strlen()
, vàumask()
cuộc gọi. Việc này có thể phát hiện các lỗ hổng tiềm ẩn về hỏng bộ nhớ hoặc hằng số chuỗi chưa kết thúc. - Biện pháp bảo vệ khi di chuyển. Bật tính năng di chuyển chỉ có thể đọc (relro) cho các tệp thực thi được liên kết tĩnh và xoá tất cả các lượt di chuyển văn bản trong mã Android. Điều này giúp bảo vệ theo chiều sâu trước các lỗ hổng tiềm ẩn về hỏng bộ nhớ.
- Cải thiện EntropyMixer. EntropyMixer hiện ghi entropy khi tắt hoặc khởi động lại, ngoài việc trộn định kỳ. Điều này cho phép giữ lại tất cả entropy được tạo ra khi thiết bị đang bật nguồn và đặc biệt hữu ích cho các thiết bị được khởi động lại ngay sau khi cấp phép.
- Các bản sửa lỗi bảo mật. Android 4.3 cũng bao gồm các bản sửa lỗi cho các lỗ hổng dành riêng cho Android. Thông tin về các lỗ hổng này đã được cung cấp cho các thành viên của Open Handset Alliance và các bản sửa lỗi có trong Dự án nguồn mở Android. Để cải thiện tính bảo mật, một số thiết bị chạy các phiên bản Android cũ hơn cũng có thể bao gồm các bản sửa lỗi này.
Android provides a multi-layered security model described in the Android Security Overview. Each update to Android includes dozens of security enhancements to protect users. The following are some of the security enhancements introduced in Android 4.2:
- App verification: Users can choose to enable Verify Apps and have apps screened by an app verifier, prior to installation. App verification can alert the user if they try to install an app that might be harmful; if an app is especially bad, it can block installation.
- More control of premium SMS: Android provides a notification if an app attempts to send SMS to a short code that uses premium services that might cause additional charges. The user can choose whether to allow the app to send the message or block it.
- Always-on VPN: VPN can be configured so that apps won't have access to the network until a VPN connection is established. This prevents apps from sending data across other networks.
- Certificate pinning: The Android core libraries now support certificate pinning. Pinned domains receive a certificate validation failure if the certificate doesn't chain to a set of expected certificates. This protects against possible compromise of certificate authorities.
- Improved display of Android permissions: Permissions are organized into groups that are more easily understood by users. During review of the permissions, the user can click on the permission to see more detailed information about the permission.
- installd hardening: The
installd
daemon does not run as the root user, reducing potential attack surface for root privilege escalation. - init script hardening: init scripts now apply
O_NOFOLLOW
semantics to prevent symlink related attacks. FORTIFY_SOURCE
: Android now implementsFORTIFY_SOURCE
. This is used by system libraries and apps to prevent memory corruption.- ContentProvider default configuration: Apps that target API
level 17 have
export
set tofalse
by default for each Content Provider, reducing default attack surface for apps. - Cryptography: Modified the default implementations of SecureRandom and Cipher.RSA to use OpenSSL. Added SSL Socket support for TLSv1.1 and TLSv1.2 using OpenSSL 1.0.1
- Security fixes: Upgraded open source libraries with security fixes include WebKit, libpng, OpenSSL, and LibXML. Android 4.2 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.
Android cung cấp một mô hình bảo mật nhiều lớp được mô tả trong bài viết Tổng quan về tính bảo mật của Android. Mỗi bản cập nhật Android đều có hàng chục tính năng cải tiến về bảo mật để bảo vệ người dùng. Sau đây là một số biện pháp bảo mật các tính năng nâng cao được giới thiệu trong các phiên bản Android từ 1.5 đến 4.1:
- Android 1.5
- ProPolice để ngăn tình trạng vùng đệm ngăn xếp vượt mức (-fstack-protector)
- safety_iop để giảm tình trạng tràn số nguyên
- Các tiện ích mở rộng cho OpenBSD dlmalloc để ngăn chặn các lỗ hổng bảo mật miễn phí hai lần và để ngăn các cuộc tấn công hợp nhất phân đoạn. Các cuộc tấn công hợp nhất phân đoạn là một cách phổ biến để khai thác lỗi vùng nhớ khối xếp.
- OpenBSD calloc để ngăn tình trạng tràn số nguyên trong quá trình phân bổ bộ nhớ
- Android 2.3
- Các biện pháp bảo vệ lỗ hổng bảo mật chuỗi định dạng (-Wformat-security -Werror=format-security)
- No eXecute (NX) dựa trên phần cứng để ngăn việc thực thi mã trên ngăn xếp và vùng nhớ khối xếp
- Linux mmap_min_addr để giảm thiểu đặc quyền huỷ tham chiếu con trỏ rỗng chuyển lên cấp trên (nâng cao hơn trong Android 4.1)
- Android 4.0
- Sắp xếp ngẫu nhiên bố cục không gian địa chỉ (ASLR) để sắp xếp ngẫu nhiên các vị trí chính trong bộ nhớ
- Android 4.1
- Hỗ trợ PIE (Vị trí thực thi độc lập)
- Chuyển vị trí chỉ đọc / liên kết ngay lập tức (-Wl,-z,relro -Wl,-z,now)
- Bật dmesg_restrict (tránh rò rỉ địa chỉ hạt nhân)
- Bật kptr_restrict (tránh rò rỉ địa chỉ hạt nhân)