应用安全面临的问题和挑战

  • 诱导用户下载安装恶意应用

  • 窃取用户数据

  • 强制推送广告

  • 利用漏洞攻击其他应用程序

  • 盗版软件

华为在应用“开发”、“发布”、“运行”生命周期的这三个阶段来应对上述问题

鸿蒙安全管控措施

应用开发安全

  • 开发者注册和实名认证:合法的开发者可确保鸿蒙应用的来源是可信的,这是创作安全可靠应用的前提

  • 申请开发者证书:使用证书对应用签名,可以保证应用来源可靠,以及完整性不被破坏,并且可以通过证书关联到经过实名认证的开发者。(签名过程其实就是将开发者证书以私钥方式写进应用,然后将公钥提供给华为,然后在上架和安装时,华为会通过相关的公钥来对应用中的开发者证书进行校验,通过后才可以上架和安装)

    • 调试证书:开发时使用,只允许运行在指定设备上(做法和苹果的开发证书一样)

    • 发布证书:上架商店时使用,不要求提供运行设备ID,但必须通过应用市场检测上架后才可以安装(应用市场会对应用重签名)

  • 申请应用 Profile 文件:Profile 是应用的授权文件,就像应用的身份证,用于 HarmonyOS 对应用进行识别的管理,并对应用关健属性和敏感能力进行管控,文件中包含“包名”、“开发者ID”、“应用的开发证书”等,这个文件会在打包时写到应用安装包中,在应用上架审核和安装时进行校验

    • 调试 Profile:调试场景使用,包含设备ID列表,只能运行在指定设备上,并且对数量有限制

    • 发布 Profile:用于上架到应用市场时使用

  • 代码安全检查:为了减少安全漏洞,避免应用被攻击,增加应用安全性,DevEco Studio 提供了 code linter 来对代码进行规范性检测,同时也会重点对代码的安全性做检查,包括静态代码分析,二进制安全分析检查,重点检测应用攻击面管控不足、权限或证书配置不当等可能会导致的安全风险

  • 代码混淆:DevEco Studio 提供了混淆功能,可以对类和方法名称做混淆,移除日志打印代码,合并语句,压缩代码体积等,在保证运行时性能无变化的前提下,增加应用被逆向难度,保护开发者核心知识产权(代码)免受恶意逆向分析

应用发布安全

  • 应用检测与审核:通过静态检测、动态检测、人工检测手段对应用的“权限”、“行为”、“病毒”、“隐私”等方法进行检测,对于不合规的应用会被拒绝上架

    • 权限检测:检测应用所申请的权限列表是否是合理并有必要的,以保护用户个人信息

    • 应用行为检测:监测应用的接口调用、文件访问等行为来识别恶意应用,不允许以“恶意弹窗霸屏”、“异常后台行为”等操作来干扰其他应用或影响设备功能

    • 隐私检测:检测应用是否违规和超范围的收集及使用个人信息

    • 恶意应用检测:对应用中可疑代码片段、文件或三方库,与业界安全厂商的病毒库进行对比,检查应用是否包含病毒风险

  • 应用加密:应用市场会对上架应用做代码加密,应用在设备安装时仍然是加密状态,当应用启动时,通过内核加载的应用文件是加密状态,这些文件会在内核中按页解密,然后提取文件明文在内存中执行,形成端到端的加密方案,有效保障了应用程序的安全性

  • 应用包签名:开发者使用发布证书和发布 Profile 对安装包签名后申请上架,应用市场在上架检测和质量审核通过后,会对安装包进行重签名,HarmonyOS 会对所有安装应用通过“根CA”进行签名校验,以确保来源可信和完整性,对于调试应用的安装,HarmonyOS 还会检测 Profile 中的设备ID与当前设备ID是否匹配

  • 应用代码签名:HarmonyOS 引入强制代码签名机制,提供加载和运行时的代码合法性检查以及完整性保护,确保执行的代码来源可靠,避免滥用热更新机制和运行时下载恶意代码的行为,但系统也提供了安全的受限运行环境,允许应用在其中执行动态下发的未签名代码,但会限制其系统能力以确保在安全管控之内,不会对系统造成威胁

应用运行生命周期安全

基础安全架构模型

HarmonyOS 从安全架构方面将应用分为三个级别

  • normal:普通应用,可申请的权限对用户隐私以及其他应用带来的风险很小

  • system basic:申请的权限涉及访问系统基础服务相关资源,普通应用可向应用市场申请 HarmonyAppProvision 授权证书的方式来申请权限

  • system core:具有操作系统核心服务能力,目前只对系统服务开放

基础安全防护

  • 应用运行在独立的沙盒环境中,默认只能访问自身的文件,系统提供方式可以将数据公共存储空间中供其他应用使用,当需要访问其他应用或系统信息时,需要通过权限申请方式来实现

  • DevEco Studio 提供代码安全检测工具,可识别并修复代码中存在的漏洞,如整数溢出检测、数据越界检查、使用已释放内存等问题

  • 在运行时系统通过栈保护防止溢出、内存地址随机化、内存数据只读不可写、控制流完整性保护等方式抑制漏洞利用

应用权限管理

开发应用时权限申请需要满足下面要求、

  • 应用(包括引用的三方库)所需权限必须在应用的配置文件中按开发指导逐个声明

  • 权限申请满足最小化原则,禁止申请不必要和已废弃的权限

  • 应用申请和用户隐私相关的敏感权限时,必须填写权限使用理由字段

  • 应用敏感权限需要在对应业务功能执行前申请

  • 用户拒绝授权某个权限后,与此权限无关的其他功能应能正常使用

隐私控制设计

隐私设计基本原则

  • 数据最小化:只获取必要数据

  • 透明可控:采集数据时要明确告知用户(访问前应用需告知理由,访问中系统会实时提醒用户,访问数据后系统提供查看访问历史记录功能,并在判断可能存在风险行为时收回应用权限)

  • 身份保护:数据离开用户设备后隐藏用户身份

  • 数据本地化:尽量在用户设备上完成个人数据处理和分析

  • 数据安全保障:围绕硬件、OS、应用及服务持续构建数据安全能力

HarmonyOS 提供安全控件和 Picker(照片、文件、音频、相机、联系人、电话)来访问包含敏感信息的数据,使用的话则不需要自己向用户请求授权,应用将被授予临时权限,无需向用户弹框授权就可访问受限资源,实现通过识别用户主动行为自动授权的设计思路。

用户身份认证

HarmonyOS 提供统一用户身份认证 API 和用户界面,可以帮助开发者通过口令、人脸、指纹等方式确认用户身份,并可以防止用户数据泄露,可用于锁屏解锁、支付认证等用户身份鉴别场景。

应用数据保护

HarmonyOS 通过不同的加密方式对数据从生成、存储、使用、传输、销毁过程中进行保护。

  • 对于存储数据,提供了文件级加密与敏感数据加密存储机制,系统针对应用平时使用和产生的数据(密码、账号等)和应用需要用户解锁前就要访问的数据(闹钟、壁纸等)提供了两个不同的加密存储空间,并对其进行访问控制,如需要通过人脸或指纹验证后访问,或者设置数据在设备不同状态下才可以被访问,如设置了锁屏密码、解除锁屏、重启设备后第一次解锁、总是有效。

  • 对于应用在使用的数据,提供了系统级密钥管理机制对其加密,包括密钥的生成、存储、使用和销毁等功能,生成密钥时可指定访问时是否通过锁屏密码、人脸、指纹方式进行二次认证。

  • 对于端端传输过程中的数据,系统原生超级终端可信组网机制可保护超级终端分布式特性的数据流转端端加密,防止数据泄漏。

应用运行时安全检测

应用运行时安全检测是结合应用实际运行时行为、所在系统上下文、应用信誉、开发者信誉等进行综合分析,以判断可能存在的应用风险行为,HarmonyOS 在端侧分析风险后将结果脱敏后在云侧进一步基于大数据模型和 AI 模型进行分析,通过聚合关联进一步提升应用行为风险感知。

应用风险行为管控

依赖端云协同机制,当发现端侧有违规行为时,云端可下发管控策略,端侧系统收到后会立即生效,限制应用的风险行为,当应用整改完毕后,HarmonyOS 会更新管制策略,撤销相关应用的管控项。

应用快速修复

HarmonyOS 提供了快速修复能力,支持以远快于应用升级的方式对应用程序包进行缺陷修复,可以在不中断正在运行应用的情况下完成缺陷修复开发者通过 DevEco Studio 制作补丁包,经过安全检查、应用市场重签名后在用户设备上才能生效。