一、数据安全概述
应用的安全性是一个应用能否成功的关键。
HarmonyOS提供了系统安全、IDE/工具安全以及应用安全生态等三个层面的安全能力。
1、系统安全层面
HarmonyOS通过完整性保护、漏洞防利用、安全可信环境等安全防护技术,从架构上支持了应用的安全运行,保证其自身业务的安全可靠(例如安全支付、安全登录、安全聊天等)。
2、IDE/工具层面
生态开发者的应用来自不同的开发者和不同用途, 除了好的生态应用以外,也存在恶意利用生态开放进行牟利的黑产、诈骗应用、恶意营销广告推广(恶意弹框)等各种风险应用,为了生态的应用安全纯净可控, HarmonyOS将以端到端的安全可控的生态模式进行构建。
3、应用安全生态层面
HarmonyOS通过各种软硬件基础设施支持应用的安全性。具体来说通过下列方案实现对敏感数据存储和用户隐私保护:
(1)敏感数据等级划分:通过设备等级划分和数据的敏感分级保护用户的数据安全,并使分布式设备间数据按分级正确流动。
(2)文件分级保护:应用根据其自身需求,按照数据的安全等级,把数据保存到系统相应的加密目录,由系统保证数据的安全性。
(3)关键资产数据加密保护:针对关键敏感数据,为用户提供基于底层TEE级别系统安全保护;提供关键敏感数据管理API,开发者无需关注底层具体安全实现。
二、风险等级划分
HarmonyOS安全能力是以分级安全为架构思想的基础安全底座,面向业务场景构建HarmonyOS安全的应用生态。其中的分级分为两个维度:一是设备的安全等级划分,二是数据的安全等级划分。
设备的安全等级划分的常用业务场景中分布式是一个非常重要的业务场景。在分布式里面最大问题是不同的设备的安全等级不一样,比如A设备为手机,手机的安全等级通常较高,B设备为手表,手表的安全等级较低,如果数据要在A设备和B设备之间互相流动,那么需要先对设备进行分级,以保证数据在跨设备之间流动的安全性。
另一方面,对流动的数据也需要进行分级,比如说数据能不能流动到普通的设备上,敏感程度不同的数据对流动的限制也不一样。这些需要系统在系统层面决定,而不是在应用层面去划分。如果在应用层面去划分数据等级且应用开发者对数据的处理如果没有等级的概念,那会导致整个系统的数据的泄露非常严重。
1、设备等级划分
根据设备安全能力,比如是否有TEE、是否有安全存储芯片等,将设备安全等级分为SL1、SL2、SL3、SL4、SL5五个等级。例如,智能穿戴通常为低安全的SL1设备,手机、平板通常为高安全的设备。
2、数据等级划分
敏感数据分类可帮助应用开发者根据数据的敏感性、价值以及数据泄露时的潜在影响来识别和分类数据。开发者需要了解不同类型的数据及其使用方式,并对数据进行分类,针对分类制定适当的安全措施和控制措施来保护数据并确保遵守相关法规和标准。下表举例说明了个人数据的分类:
个人数据分类 | 数据分级 | 举例 | |
---|---|---|---|
个人/敏感数据 | 关键资产数据 | 严重 | 口 令、认证TOKEN、密保问题答案等 |
个人种族数据 | 种族血统 | ||
权威社会识别标识 | 高 | 身份证号码、军官证、社会/保险保障号码(社会号码)、驾照、护照号码、签证授权编号 | |
负向名誉数据 | 犯罪记录(刑事、民事犯罪和诉讼记录),入狱记录、纪律处分 | ||
健康数据 | 健康数据(身高、体重、体脂、血压、血糖、心率等)、医疗记录、性生活 | ||
家居控制数据 | 家居控制、HICar反向控制、手机投屏后反向控制等 | ||
年龄生辰数据 | 中 | 年龄,出生日期 | |
虚拟网络身份标识 | 华为帐号、宽带帐号、其他网络帐号(电话号码、邮箱) | ||
一般社会识别标识 | 姓名 | ||
个人多媒体数据 | 照片、视频、录音、文字、日历日程、备忘录文本等 | ||
一般注册信息 | 低 | 昵称、头像、性别、国籍、出生地、教育程度、专业背景等 | |
正向名誉数据 | 专业成就 | ||
非个人数据 | 匿名化数据 | 公开 | 匿名化处理后的个人数据 |
非个人数据 | 系统、设备信息中公开发布的数据,如:TCB模块的版本信息、完整性度量值、访问控制策略数据的完整性度量值、策略数据本身等 |
除了基于内容对数据分类,开发者还需遵守相关的法律法规,如通用数据保护条例(GDPR)和个人信息保护法等,以保护用户的隐私权和数据安全。下图是基于法律法规的数据分类图:
按照数据分类分级规范要求,可将数据分为S1、S2、S3、S4四个安全等级。
风险等级 | 风险标准 | 定义 | 样例 |
---|---|---|---|
严重 | S4 | 业界法律法规定义的特殊数据类型,涉及个人的最私密领域的信息或一旦泄露、篡改、破坏、销毁可能会给个人或组织造成重大的不利影响的数据。 | 政治观点、宗教和哲学信仰、工会成员资格、基因数据、生物信息、健康和性生活状况,性取向等或设备认证鉴权、个人信用卡等财物信息等。 |
高 | S3 | 数据的泄露、篡改、破坏、销毁可能会给个人或组织导致严峻的不利影响 | 个人实时精确定位信息、运动轨迹等。 |
中 | S2 | 数据的泄露、篡改、破坏、销毁可能会给个人或组织导致严重的不利影响 | 个人的详细通信地址、姓名昵称等。 |
低 | S1 | 数据的泄露、篡改、破坏、销毁可能会给个人或组织导致有限的不利影响 | 性别、国籍、用户申请记录等。 |
数据安全标签和设备安全等级越高,加密措施和访问控制措施越严格,数据安全性越高。
数据跨设备同步时,数据管理基于数据安全标签和设备安全等级进行访问控制。规则为,在本设备的数据安全标签不高于对端设备的设备安全等级时,数据才能从本设备同步到对端设备,否则不能同步。具体访问控制矩阵如下:
设备安全级别 | 可同步的数据安全标签 |
---|---|
SL1 | S1 |
SL2 | S1~S2 |
SL3 | S1~S3 |
SL4 | S1~S4 |
SL5 | S1~S4 |
三、分级数据加密
1、分级数据保护
不同的文件路径具备不同的属性和特征。分级数据使用应用沙箱作为保护机制,避免数据受到恶意路径穿越访问。在应用文件目录中,根据不同的文件加密类型,区分了不同的目录。
- el1,设备级加密区:设备开机后即可访问的数据区。
- el2,用户级加密区:设备开机后,需要至少一次解锁对应用户的锁屏界面(密 码、指纹、人脸等方式或无密 码状态)后,才能够访问的加密数据区。
应用如无特殊需要,应将数据存放在el2加密目录下,以尽可能保证数据安全。但是对于某些场景,一些应用文件需要在用户解锁前就可被访问,例如时钟、闹铃、壁纸等,此时应用需要将这些文件存放到设备级加密区(el1) 。
分级数据文件路径使用应用通用文件路径,获取路径代 码如下:
let context = getContext(this) as common.UIAbilityContext;
context.area = contextConstant.AreaMode.EL2;
let file_path = context.filesDir + '/health_data.txt';
this.message = file_path;
如果需要获取el1的路径者需要修改AreaMode,代 码如下:
let context = getContext(this) as common.UIAbilityContext;
context.area = contextConstant.AreaMode.EL1;
let file_path = context.filesDir + '/health_data.txt';
this.message = file_path;
应用如无特殊需要,应将数据存放在el2加密目录下。
系统的文件级加密提供了4种加密类型实现文件保护,应用可以根据自己的述求,把文件保存到相应的数据目录。下表是各个分级加密区所对应的策略:
分级加密 | 策略 |
---|---|
el4 | 用户锁定设备后不久(一般为 10 秒钟),解密的数据保护类密钥会被从内存丢弃,此类的所有数据都无法访问,除非用户再次输入密 码或使用指纹或面容解锁设备。 |
el3 | 用户锁定设备后,如果文件已经被打开,则文件始终可以被继续访问,一旦文件关闭(锁屏),文件将不能被再次访问,除非用户再次输入密 码或使用指纹或面容解锁设备 |
el2 | 用户开机后首次解锁设备后,即可对文件进行访问。这是未分配给数据保护类的所有第三方应用数据的默认数据保护类 |
el1 | 设备在直接启动模式下和用户解锁设备后均可对文件进行访问 |
2、数据加密算法
通用密钥库系统(OpenHarmony Universal KeyStore,简称HUKS),向业务提供了平台级的密钥管理能力,包括密钥的生成、导入、销毁、证明、协商、派生、加密/解密、签名/验签及访问控制等功能。HUKS是系统的底座安全能力,业务无需自己实现复杂的密 码学算法、密钥访问控制模型,即可安全、便捷地使用HUKS提供的密钥全生命周期管理能力,进而保证业务敏感数据的安全性。