1# 关键资产存储服务(ASSET) 2 3## 简介 4 5关键资产存储服务(ASSET),提供了用户短敏感数据的安全存储及管理能力。其中,短敏感数据可以是密码类(账号/密码)、Token类(应用凭据)、其他关键明文(如银行卡号)等长度较短的用户敏感数据。 6 7关键资产存储服务的架构如下图所示。 8 9 10 11应用接入关键资产存储服务后,可以进行如下操作: 12 13- 新增关键资产,ASSET 首先为应用生成独属于它的密钥,然后使用该密钥对关键资产进行加密,最后将关键资产密文存储到数据库。 14- 更新关键资产,ASSET 使用独属于该应用的密钥,对新的关键资产进行加密,并覆盖数据库中的相应记录。 15- 查询关键资产,ASSET 首先根据应用指定的查询条件,从数据库中读取关键资产密文,然后校验应用的访问控制权限,验证通过后,使用独属于该应用的密钥,对关键资产密文进行解密,最后将明文数据返回给应用。 16- 删除关键资产,ASSET 根据应用指定的删除条件,从数据库中查找并删除符合条件的关键资产记录。 17 18关键资产的安全存储,依赖底层的通用密钥库系统。具体来说,关键资产的加/解密操作以及访问控制校验,都由通用密钥库系统在安全环境(如可信执行环境)中完成,即使系统被攻破,也能保证用户敏感数据不发生泄露。 19 20针对安全性要求更高的场景,ASSET 支持应用存储需要用户身份认证通过才允许访问的关键资产。具体来说,应用在读取此类关键资产时,需要先拉起统一用户认证服务,提示用户通过锁屏密码、指纹、人脸等方式进行身份认证;应用将用户身份认证结果传递给 ASSET 后,ASSET 会请求通用密钥库系统,在安全环境校验认证结果,验证通过后才继续在安全环境解密关键资产。 21 22使用关键资产存储服务提供的接口,开发者可以快速集成平台级别、面向短敏感数据的加密存储和访问控制机制,帮助用户方便、安全地管理密码等数据。 23 24## 目录 25 26```bash 27├── frameworks # 框架层代码 28│ ├── c # C-Rust交互模块 29│ ├── definition # 通用数据类型定义 30│ ├── ipc # IPC接口定义 31│ ├── js # JS-C/C++交互模块 32│ ├── os_dependency # 通用系统能力适配模块 33│ └── utils # 工具方法 34├── interfaces # 对外提供的接口 35│ ├── inner_kits # 提供给系统服务调用的接口 36│ └── kits # 提供给应用调用的接口 37├── sa_profile # 系统服务配置文件 38└── services # 服务层代码 39 ├── constants # 服务层常量定义 40 ├── core_service # 核心处理模块 41 ├── crypto_manager # 数据加密模块 42 ├── db_key_operator # 数据库密钥管理模块 43 ├── db_operator # 数据管理模块 44 └── os_dependency # 系统能力适配模块 45``` 46 47## 编译构建 48 49以rk3568为例,编译命令如下: 50 51```bash 52# 本模块源码编译命令 53./build.sh --product-name rk3568 --ccache --build-target asset 54 55# 本模块测试代码编译命令 56./build.sh --product-name rk3568 --ccache --build-target asset_bin_test 57``` 58 59## 说明 60### 接口说明 61 62[接口文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-asset-store-kit/Readme-CN.md) 63 64### 使用说明 65 66[开发指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AssetStoreKit/Readme-CN.md) 67 68## 相关仓 69**[通用密钥库系统(HUKS)](https://gitee.com/openharmony/security_huks)** 70 71**[统一用户认证(UserIAM)](https://gitee.com/openharmony/useriam_user_auth_framework)**