1、网络数据密文传输
将所有网络流量从明文转向TLS,更改网络安全性配置 (Network Security Configuration) 的默认值,以阻止所有明文流量.
2、个人隐私保护增强
Android P 将增强个人隐私方面保护,限制后台应用程序访问用户输入以及传感器数据。当应用UID空闲时,断开应用对摄像头、话筒、传感器的使用,如果应用强制使用则会产生错误,从而进一步防止流氓应用后台手机隐私数据。
若您的应用在Android P 设备上后台运行,将会受到来自系统的以下限制:
应用无法访问麦克风和摄像头。
处于 “连续模式 (continuous)” 的传感器 (如加速传感器或者陀螺仪) 将无法接收事件。
处于 “变化模式 (on-change)” 或者 “单次模式 (one-shot)” 的传感器无法接受事件。
若应用需要在 Android P 设备上检测传感器事件,请使用前台服务。
设置为前台服务的方法如下图:
【注意】调用 SensorManager 的 flush() 方法的应用不受此变更影响。
3、数据加密
FBE加密(基于文件的加密):FBE将会更容易支持高端元数据加密的设备,以及对sdcard的支持。对于OEM能够更简单地移植。对于低端设备,更快速的算法,适合所有机型的移植。
4、设备序列号访问限制
Android 8.0(API等级为26) 已弃用 Build.SERIAL 字段;从 Android P 开始,Build.SERIAL 始终设定为 "UNKNOWN",此项变更能够保护用户隐私。如果应用要访问设备硬件序列号,应该请求 READ_PHONE_STATE 权限,然后调用 getSerial()。
5、加密程序变更
从 Android P 开始,对于 AndroidOpenSSL (也称为 Conscrypt) 提供重复的、来自于 BC 提供程序的部分功能,计划将予以弃用。此改动仅会影响在调用 getInstance() 方法时明确指定 BC 提供程序的应用程序。如果您在 getInstance() 调用中没有指定提供程序,则无需做出任何改动。
如果应用按名称或实例指定提供程序 - 例如,Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC") 或 Cipher.getInstance("AES/CBC/PKCS7PADDING", Security.getProvider("BC")),则 Android P 的行为将取决于您应用的目标 API 级别。
对于目标级别早于 P 的应用,调用会返回 BC 实施方法,并在应用日志中记录警告。对于目标级别为 Android P 或之后版本的应用,调用会抛出 NoSuchAlgorithmException。
为了解决此问题,应用需要停止指定加密程序,并使用默认实施方法。
在后续的 Android 版本中,我们计划完全移除 BC 提供程序的功能。在移除后,所有请求 BC 提供程序的调用 (不论按名称还是实例) 都会抛出 NoSuchAlgorithmException。
6、移除Crypto提供程序
在 Android P 中,Google计划完全移除 Crypto 提供程序。
在移除后,所有对方法SecureRandom.getInstance("SHA1PRNG", "Crypto") 的调用都会抛出 NoSuchProviderException异常。
7、用户识别统一提示(Biometric prompt)
Android P 为市面上涌现出来的各种用户识别机制在系统层面提供了统一的使用体验,应用不再需要自行提供用户识别操作界面,只需要使用统一的 BiometricPrompt API 即可。这套全新的 API 替代了 DP1 版本中的 FingerprintDialog API,且支持包括指纹识别 (包括屏幕下指纹识别)、面部识别以及虹膜识别,而且所有系统支持的用户识别需求都包含在一个 USE_BIOMETRIC 权限里。FingerprintManager 以及对应的 USE_FINGERPRINT 权限已经被废弃,需要尽快转用 BiometricPrompt API方法。
使用方法示例:
弹出界面样式如下:
8、受保护的确认(Protected Confirmation)
Android P 新增了受保护的确认操作 (Android Protected Confirmation),这个功能使用可信执行环境 (Trusted Execution Environment, TEE) 来确保一个显示出来的提示文本被真实用户确认。只有在用户确认之后,TEE 才会放行这个文本并可由应用去验证。
使用方法如下:
9、私有密钥的增强保护(Stronger Protection For Private Keys)
Android P添加了一个新的 KeyStore 类型StrongBox,并提供对应的 API 来支持那些提供了防入侵硬件措施的设备,比如独立的 CPU、内存以及安全存储芯片。应用可以在 KeyGenParameterSpec 里指定使用的密钥是否交给 StrongBox 安全芯片来保存。
添加了安全硬件的框图如下:
安全性对比图如下:
StrongBox 使用示例: