HarmonyOS 鸿蒙Next应用如何安全存储用户密码或支付密钥?
HarmonyOS 鸿蒙Next应用如何安全存储用户密码或支付密钥? App 需要本地缓存用户 PIN 码。普通 Preferences 加密够用吗?还是必须用硬件级保护?
开发者你好,隐私信息建议使用关键资产存储服务。
【背景知识】
- Asset Store Kit(关键资产存储服务,简称Asset)包含了一系列开放接口,用于提供用户短敏感数据的安全存储及管理功能。
- 用户首选项(Preferences)为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户有轻量级的键值型数据需要存储时,可以采用Preferences来进行存储。
【解决方案】
解决方案一:关键资产存储服务提供一系列接口用于短敏感数据包括密码类、Token类以及其他关键明文等长度较短的敏感信息的安全存储及管理功能。该服务使用AES256-GCM加密,数据存储在安全环境(如TEE),即使系统被攻破也难以泄露。详细的开发案例可参考。
解决方案二:应用首选项的持久化文件保存在应用沙箱内部,键值对存储,适合小数据量,但默认卸载应用时数据清除。详细的开发案例可参考。
更多关于HarmonyOS 鸿蒙Next应用如何安全存储用户密码或支付密钥?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
普通 Preferences 加密 对“本地缓存用户 PIN”已够用,不必强行上硬件级安全元件,但支付密钥仍建议走硬件级保护。
在HarmonyOS Next中,使用用户认证框架(User Authentication Framework)和加解密框架(Crypto Framework)安全存储敏感信息。通过KeyStore系统管理密钥生命周期,结合身份认证(如生物识别)保护密钥访问。敏感数据应加密后存入Preferences或数据库,避免明文存储。
对于HarmonyOS Next应用,安全存储用户密码或支付密钥应遵循以下原则:
-
敏感数据不应明文存储:即使使用Preferences的加密能力,若密钥管理不当仍存在风险。Preferences提供基础加密,但密钥默认由系统管理,适合中低敏感度数据。
-
高敏感数据需硬件级保护:支付密钥、生物特征等必须使用华为硬件级密钥库(HUKS)。HUKS提供:
- 密钥在可信执行环境(TEE)中生成和存储
- 支持密钥访问的访问控制策略
- 防物理提取和软件攻击
-
具体建议:
- PIN码缓存:若仅用于本地验证,可使用
@ohos.security.cryptoFramework生成加密密钥,结合Preferences加密存储。但更推荐通过HUKS生成密钥对,将PIN密文与设备硬件绑定。 - 支付密钥:必须使用HUKS,并设置
ALGORITHM_*为强算法(如RSA 2048/ECC P-256),访问控制属性应包含ATTR_AUTH_TIMEOUT等。
- PIN码缓存:若仅用于本地验证,可使用
-
注意事项:
- 避免自行实现加密算法
- 定期调用HUKS的密钥有效性检查
- 使用Keychain管理证书链时需验证颁发者
总结:普通PIN码可基于cryptoFramework增强保护,支付密钥等必须依赖HUKS硬件隔离。开发时需根据数据敏感度选择对应等级的安全方案。

