HarmonyOS 应用开发《掌上英语》第85篇:用户数据安全架构设计
用户数据安全架构设计一、引言HarmonyOS 7.0 采用完全自研的安全架构集成了星盾防诈系统攻击面较上一代缩减 80% 以上。这一安全升级对于应用开发者来说既是机遇也是挑战——机遇在于系统提供了更强大的安全基座挑战在于需要适配新的安全 API 和策略。用户数据安全是一个容易被忽视但至关重要的问题。学习记录、生词本、收藏列表、学习进度——这些数据看似不敏感但聚合起来可以勾勒出用户的完整学习画像。如果存储不当一旦设备丢失或被恶意应用窃取用户的隐私就会泄露。本文将从星盾安全架构的 4 层防护体系出发分析 Preferences 存储、Token 管理、跨设备同步等场景的安全升级方案。二、安全架构 4 层防护体系安全架构从底层到上层构建了 4 层防护2.1 硬件安全层TEE 隔离基于 TrustZone 技术的可信执行环境TEE在硬件层面隔离了敏感数据的处理区域。即使操作系统内核被攻破TEE 中的数据仍然安全。在我们的场景中用户登录 Token 和加密密钥存储在 TEE 中。2.2 内核安全层星盾内核通过形式化验证确保了内存安全和进程隔离。每个应用运行在独立的沙箱中无法访问其他应用的数据。这比传统的 Linux DAC自主访问控制模型更加严格。2.3 数据安全层数据安全层提供了加密存储、安全传输和数据防篡改能力。7.0 新增了对 Preferences 存储的透明加密支持——开发者只需在创建 Preferences 实例时指定加密模式系统自动完成加密和解密。2.4 分布式安全层针对分布式场景星盾引入了数据联邦概念。跨设备数据同步时数据在发送端加密、接收端解密传输信道本身不持有明文数据的访问权限。三、数据加密存储TEE 隔离 国密算法3.1 Preferences 加密存储升级在之前的版本中Preferences 存储的数据以明文形式保存在应用私有目录。虽然其他应用无法直接访问沙箱隔离但如果设备丢失攻击者可以通过文件系统读取数据。7.0 引入了加密 Preferencesimport{preferences}fromkit.ArkData;import{common}fromkit.AbilityKit;exportclassSecurePreferenceUtil{privatestaticinstance:SecurePreferenceUtil;privatepreferencesPromise:Promisepreferences.Preferences|nullnull;publicstaticgetInstance():SecurePreferenceUtil{if(!SecurePreferenceUtil.instance){SecurePreferenceUtil.instancenewSecurePreferenceUtil();}returnSecurePreferenceUtil.instance;}publicasyncgetPreferences(context:common.Context):Promisepreferences.Preferences{if(!this.preferencesPromise){this.preferencesPromisepreferences.getPreferences(context,user_learning_data,{encryption:{algorithm:SM4,// 国密 SM4 算法keyDerivation:PBKDF2,teeProtected:true// 密钥存储在 TEE 中}});}returnthis.preferencesPromise;}publicasyncsaveLearningData(key:string,value:string):Promisevoid{constprefsawaitthis.getPreferences(getContext());awaitprefs.put(key,value);awaitprefs.flush();}}关键配置说明algorithm: SM4使用国密 SM4 对称加密算法符合国内密码标准keyDerivation: PBKDF2使用 PBKDF2 密钥派生函数防止暴力破解teeProtected: true加密密钥存储在 TEE 中即使 root 也无法读取3.2 升级前后的对比维度API 21未加密API 26加密存储内容明文 JSONSM4 密文密钥存储文件系统TEE 隔离区读取性能~0.5ms~2ms含解密写入性能~1ms~4ms含加密设备丢失安全性数据可读数据不可读加密带来的性能开销约 3-4 倍但对于 Preferences 操作数据量小、频率低来说增加 2-3ms 几乎无感。四、权限管理的最小化原则星盾架构要求开发者严格遵循权限最小化原则。对于英语学习 App我们重新审视了权限声明// module.json5 - 精简后的权限声明 { module: { requestPermissions: [ { name: ohos.permission.INTERNET, reason: 在线查词和语音下载, usedScene: { abilities: [EntryAbility], when: inuse // 仅在前台使用时授权 } }, { name: ohos.permission.MICROPHONE, reason: 语音跟读评测, usedScene: { abilities: [PracticeAbility], when: inuse } }, // 移除不必要的权限 // 不再声明 STORAGE 权限使用沙箱文件系统 ] } }when: inuse是 7.0 新增的授权模式——权限仅在应用前台运行时有效切到后台后自动收回。这比传统的一次性授权永久有效更加安全。五、分布式数据联邦的硬件级安全5.1 跨设备安全同步当用户同时在手机和平板上学习时学习进度需要跨设备同步。星盾的分布式数据联邦确保了同步过程的安全import{distributedKVStore}fromkit.DistributedServiceKit;exportclassSecureSyncManager{privatekvManager:distributedKVStore.KVManager;constructor(context:common.Context){constconfig:distributedKVStore.KVManagerConfig{context:context,bundleName:com.example.englishapp};this.kvManagerdistributedKVStore.createKVManager(config);}publicasynccreateSecureKVStore():PromisedistributedKVStore.SingleKVStore{constoptions:distributedKVStore.Options{createIfMissing:true,encrypt:true,// 开启端到端加密backup:false,securityLevel:distributedKVStore.SecurityLevel.S2// 安全级别 S2};returnawaitthis.kvManager.getKVStore(learning_sync_store,options);}publicasyncsyncProgress():Promisevoid{conststoreawaitthis.createSecureKVStore();// 数据在设备间传输时自动加密// 对端设备必须通过身份认证才能解密awaitstore.sync([tablet_device_id],distributedKVStore.SyncMode.PUSH_ONLY);}}encrypt: true启用端到端加密数据在发送设备加密、在接收设备解密云端中间节点只传输密文。securityLevel: S2对应需要身份认证的安全级别。5.2 关机验证密码7.0 支持关机验证密码功能——即使设备丢失攻击者也无法通过关机绕过锁屏直接读取数据// 访问加密的 Preferences 时需要验证设备锁constprefsawaitpreferences.getPreferences(context,secure_data,{encryption:{algorithm:SM4,requireAuth:true// 访问数据前需验证锁屏密码}});六、项目落地数据安全加固实施6.1 Token 安全存储用户的登录 Token 是最敏感的数据之一。我们将其从 Preferences 迁移到 TEE 保护的凭证存储import{securityGuard}fromkit.CloudServiceKit;exportclassTokenManager{privatestaticreadonlyTOKEN_KEYauth_token;publicasyncsaveToken(token:string):Promisevoid{try{awaitsecurityGuard.storeCredential({key:TokenManager.TOKEN_KEY,value:token,credentialType:securityGuard.CredentialType.ACCESS_TOKEN,teeProtected:true// 存储在 TEE});}catch(error){Logger.error(TAG,Failed to save token securely,error);// 降级使用加密 Preferencesawaitthis.encryptedPreferences.put(TokenManager.TOKEN_KEY,token);}}publicasyncgetToken():Promisestring|null{try{constcredentialawaitsecurityGuard.retrieveCredential({key:TokenManager.TOKEN_KEY});returncredential?.value??null;}catch{returnnull;}}}使用securityGuard.storeCredential将 Token 存储在 TEE 隔离区即使应用进程被 dump 也无法提取。6.2 学习数据的加密改造我们对四个核心数据存储进行了加密改造数据存储方案加密策略性能影响学习记录Encrypted PreferencesSM4 TEE写入3ms生词本Encrypted PreferencesSM4 TEE写入3ms用户 TokenTEE Credential Store硬件隔离无额外开销跨设备同步Encrypted KV Store端到端加密同步10ms6.3 降级策略加密操作可能因为设备不兼容如低端设备不支持 TEE而失败。我们设计了降级策略publicasyncsaveSensitiveData(key:string,value:string):Promisevoid{try{// 首选TEE 加密存储awaitthis.securePreferences.put(key,value);}catch(primaryError){Logger.warn(TAG,Secure storage failed, fallback to standard,primaryError);try{// 降级标准 Preferences至少沙箱隔离awaitthis.standardPreferences.put(key,value);}catch(fallbackError){Logger.error(TAG,All storage methods failed,fallbackError);throwfallbackError;}}}七、最佳实践分层加密不是所有数据都需要 TEE 加密。敏感数据Token、用户信息用 TEE一般数据学习记录用加密 Preferences缓存数据词库不做加密。最小化数据采集只收集学习必需的数据不采集设备信息、位置等无关数据。定期清理定期清理过期的学习缓存数据减少存储中的敏感信息总量。安全审计在应用发布前进行安全审计检查是否有未加密的敏感数据泄露路径。

相关新闻

HarmonyOS 应用开发《掌上英语》第89篇:短信服务通知模块实现

HarmonyOS 应用开发《掌上英语》第89篇:短信服务通知模块实现

短信服务 场景介绍 短信服务模块提供了管理短信的一些基础能力,包括创建/发送短信、获取/设置发送短信的默认SIM卡槽ID、获取/设置短信服务中心地址,以及检查当前设备是否具备短信发送和接收能力等。 常见的应用场景举例如下: 从网页拉起&…

2026/10/25 10:27:41 阅读更多 →
落地案例|东莞厚街精密制造产业园 200 路高清监控 AI 视频压缩改造(广东融科数据)

落地案例|东莞厚街精密制造产业园 200 路高清监控 AI 视频压缩改造(广东融科数据)

专栏:大数据与智能系统集成 标签:#AI 视频压缩 #工业安防 #存储优化 #海康皓视通 #创维安防 #东莞数字化改造 原创声明:本文由广东融科数据服务有限公司技术团队原创项目复盘,转载请标注来源:广东融科数据 CSDN 企业博…

2026/10/24 5:29:22 阅读更多 →
如何用手机控制另一部手机 怎样远程控制另一部手机

如何用手机控制另一部手机 怎样远程控制另一部手机

如何用手机控制另一部手机?很多人遇到长辈手机故障、旧手机闲置挂机、异地协助操作设备等场景时,都会被这个问题困扰。如何用手机控制另一部手机,其实无需复杂的技术操作,选对远程工具就能轻松实现。对比多款手机远程控制软件后&a…

2026/10/25 15:32:36 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →