鸿蒙 7.0 星盾安全:关键资产隔离 + 权限最小化——零信任安全根因
本文是「鸿蒙 7.0 新特性」系列第 5 篇。上篇讲超丝滑方舟引擎(springMotion 物理弹簧动画真实回弹手感)。本文讲鸿蒙星盾安全核心:关键资产隔离 + 权限最小化零信任——根因在零信任安全架构。鸿蒙 7.0(API 26)星盾机密风控引擎(Device Security Kit,机密空间可算不可取),本文用本机 API 21 就能跑的 @ohos.security.asset(关键资产存储,API 12)+ @ohos.abilityAccessCtrl(权限管理,API 8)真机演示,再讲鸿蒙 7.0 星盾安全演进根因:根可信(BootLoader 校验)→ 分层隔离(安全域)→ 最小权限零信任(权限链)→ 星盾机密风控引擎(API 26,机密空间可算不可取)。
一、开篇:安全不是「防得多严」,是「一开始就不信你」
你写 React 时,安全是「JWT 魔法」(JWT token + localStorage 存):
// React 安全:JWT 魔法(localStorage 存 token)
function SecureApp() {
const [token, setToken] = useState(localStorage.getItem('jwt') || '')
const login = () => {
fetch('/api/login').then(r => r.json()).then(d => {
localStorage.setItem('jwt', d.token) // ✅ localStorage 存 JWT token
setToken(d.token)
})
}
// ❌ localStorage 明文存,XSS 一击即中,token 泄露
}
// React 安全:JWT 魔法(localStorage 存 token,明文易被 XSS 偷)
你写鸿蒙 ArkTS 时,安全是零信任安全架构——关键资产加密存储 + 权限默认拒绝:
// ArkTS 零信任安全:关键资产加密存储 + 权限默认拒绝
import asset from '@ohos.security.asset'
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
@Entry
@Component
struct Index {
private atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
async addAsset() {
// ✅ asset.addSync 关键资产加密存储(应用沙箱隔离,密钥不出端侧)
const attrs = new Map<asset.Tag, asset.Value>()
attrs.set(asset.Tag.SECRET, new util.TextEncoder().encodeInto('我的支付密码-2026'))
attrs.set(asset.Tag.ACCESSIBILITY, asset.Accessibility.DEVICE_FIRST_UNLOCKED)
asset.addSync(attrs) // ✅ 加密存储,沙箱隔离
}
async checkPermission() {
// ✅ verifyAccessTokenSync 检查权限(tokenID=0 当前应用,零信任默认拒绝)
const status = this.atManager.verifyAccessTokenSync(0, 'ohos.permission.READ_MEDIA')
// status=-1 未授权(默认拒绝),status=0 已授权(按需授权)
}
}
// ArkTS 零信任安全:关键资产加密存储 + 权限默认拒绝(应用沙箱隔离,密钥不出端侧)
JWT 魔法 vs 零信任安全架构的区别:React 把安全当 JWT 魔法(localStorage 存 token,明文易被 XSS 偷),ArkTS 把安全当「零信任安全架构」(关键资产加密存储 + 权限默认拒绝,密钥不出端侧)。根因不是 localStorage 存 token 是零信任安全架构——asset.addSync 加密存储应用沙箱隔离,权限默认拒绝按需授权可追溯,零信任安全架构。
二、根因:鸿蒙星盾安全的零信任三层架构机制
鸿蒙 7.0 星盾安全是零信任三层架构绑定——根可信 + 分层隔离 + 最小权限零信任,来自三重绑定机制。
机制 1:根可信——BootLoader 校验链,不可信拒绝启动
根可信——BootLoader/Kernel/SystemService 校验链,不可信拒绝启动:
// ✅ 根可信(BootLoader 校验链,鸿蒙安全起点不在应用层在硬件和启动链路)
// 系统从第一行指令开始就要能被验证:
// ① BootLoader 校验(启动加载器签名校验)
// ② Kernel 校验(内核签名校验)
// ③ SystemService 校验(系统服务签名校验)
// 一旦某一层不可信,系统直接拒绝启动(不可信 = 不启动)
// 根可信是鸿蒙安全的「根」:安全不是从 App 开始的,是从硬件和启动链路开始的
根可信 vs JWT 根信任的区别:根可信(BootLoader 校验链,从硬件和启动链路开始,不可信拒绝启动),JWT 根信任(JWT token 签名验证,从应用层开始,token 过期就失效)。根因不是 JWT 根信任是根可信——BootLoader 校验链从硬件开始,不可信拒绝启动,安全起点不在应用层在硬件。
机制 2:分层隔离——多安全域,越往下权限越高接口越少
分层隔离——Kernel/SystemService/Ability/分布式设备多安全域,越往下权限越高接口越少:
// ✅ 分层隔离(多安全域,每一层都有明确边界)
// 鸿蒙在系统结构上天然是分层安全域:
// ① Kernel 层(内核,权限最高,接口最少)
// ② SystemService 层(系统服务,权限中等)
// ③ Ability/App 层(应用,权限最低,接口最多)
// ④ 分布式设备层(跨设备协同,设备认证 + 能力授权 + 数据范围控制)
// 每一层都有明确边界,越往下权限越高,接口越少
// 分层隔离是鸿蒙安全的「域」:不是「一个系统」是「多个安全域」
分层隔离 vs React 单层的区别:分层隔离(多安全域,Kernel/SystemService/Ability/分布式设备,越往下权限越高接口越少),React 单层(应用层一个安全域,XSS 越界即沦陷)。根因不是 React 单层是分层隔离——多安全域明确边界,越往下权限越高接口越少,分层隔离。
机制 3:最小权限零信任——默认拒绝,按需授权,可追溯
最小权限零信任——默认拒绝,按需授权,可追溯(本 demo 演示):
// ✅ 最小权限零信任(默认拒绝,按需授权,可追溯)
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
const atManager = abilityAccessCtrl.createAtManager()
// ✅ verifyAccessTokenSync 检查权限(默认拒绝,status=-1 未授权)
const status = atManager.verifyAccessTokenSync(0, 'ohos.permission.READ_MEDIA')
// status=-1 PERMISSION_DENIED(默认拒绝)
// status=0 PERMISSION_GRANTED(按需授权)
// ✅ requestPermissionsFromUser 运行时请求权限(按需授权,可追溯)
const result = await atManager.requestPermissionsFromUser(ctx, ['ohos.permission.READ_MEDIA'])
// result.authResults[0]=0 已授权,=-1 用户拒绝
// 鸿蒙零信任:你没说清楚要干啥,我就当你不该干(默认拒绝 + 按需授权 + 可追溯)
最小权限零信任 vs JWT 单 token 的区别:最小权限零信任(默认拒绝,按需授权,可追溯,权限粒度到单一操作),JWT 单 token(一个 token 全权限,token 一泄露全沦陷)。根因不是 JWT 单 token 是最小权限零信任——默认拒绝按需授权可追溯,权限粒度到单一操作,最小权限零信任。
三、真机配图:鸿蒙星盾安全——关键资产隔离 + 权限最小化




真机配图展示鸿蒙星盾安全关键资产隔离 + 权限最小化:
- 初始态:鸿蒙 7.0 星盾安全标题,两个场景卡片——场景1关键资产隔离(asset.addSync 加密存储)、场景2权限最小化零信任(abilityAccessCtrl 权限链),下方三层架构说明
- 关键资产写入态:点击「写入关键资产」按钮,日志显示「✅ asset.addSync 成功:关键资产已加密存储(应用沙箱隔离)」,资产内容「(已写入,待读取)」——密钥加密存储,应用沙箱隔离
- 关键资产读取解密态:点击「读取关键资产」按钮,日志显示「✅ asset.querySync 成功:关键资产已解密读取(沙箱内可读)」,资产内容解密回原文「鸿蒙星盾机密-我的支付密码-2026」——沙箱内可读,密钥不出端侧
- 权限链检查态:点击「检查权限」按钮,权限状态显示「未授权(PERMISSION_DENIED)」,日志显示「✅ 权限链检查:ohos.permission.READ_MEDIA = 未授权(最小权限零信任)」——零信任默认拒绝验证
四、真解法:鸿蒙星盾安全的三个场景
场景 1:关键资产加密存储(asset.addSync/querySync)——90% 场景首选,支付密码/Token/私钥
关键资产加密存储用 @ohos.security.asset + Map<Tag, Value>:
// ✅ 场景 1:关键资产加密存储(asset.addSync/querySync)
import asset from '@ohos.security.asset'
import util from '@ohos.util'
@Entry
@Component
struct Index {
private SECRET_TAG = 'my_payment_secret'
async addAsset() {
// ✅ AssetMap 是 Map<Tag, Value> 不是对象字面量,用真 Map
const attrs = new Map<asset.Tag, asset.Value>()
// ✅ Tag.SECRET/ALIAS 都是 BYTES 类型用 Uint8Array(util.TextEncoder 编码)
attrs.set(asset.Tag.SECRET, new util.TextEncoder().encodeInto('我的支付密码-2026'))
attrs.set(asset.Tag.ALIAS, new util.TextEncoder().encodeInto(this.SECRET_TAG))
// ✅ Tag.ACCESSIBILITY 是 NUMBER 类型
attrs.set(asset.Tag.ACCESSIBILITY, asset.Accessibility.DEVICE_FIRST_UNLOCKED)
// ✅ asset.addSync 关键资产加密存储(密钥加密存储,应用沙箱隔离)
asset.addSync(attrs)
}
async getAsset() {
const query = new Map<asset.Tag, asset.Value>()
query.set(asset.Tag.ALIAS, new util.TextEncoder().encodeInto(this.SECRET_TAG))
query.set(asset.Tag.RETURN_TYPE, asset.ReturnType.ALL)
// ✅ asset.querySync 关键资产读取(返回 Array<AssetMap>,每个 AssetMap 是 Map)
const res = asset.querySync(query)
if (res.length > 0) {
// ✅ AssetMap.get(Tag.SECRET) 返回 Value(boolean|number|Uint8Array),强转 Uint8Array
const buf = res[0].get(asset.Tag.SECRET) as Uint8Array
// ✅ Uint8Array 解码成字符串(util.TextDecoder)
const secret = new util.TextDecoder().decodeToString(buf)
}
}
}
// 关键资产加密存储:支付密码/Token/私钥,密钥加密存储应用沙箱隔离
鸿蒙 asset API 真名坑:asset 没有 getSync,真名是 querySync(返回 Array<AssetMap>);AssetMap 是 Map<Tag, Value> 不是对象字面量,用真 Map;Tag.SECRET/ALIAS 都是 BYTES 类型用 Uint8Array(util.TextEncoder().encodeInto() 编码),Tag.ACCESSIBILITY 是 NUMBER 类型;util.TextDecoder 要从 @ohos.util 导入(不是全局)。
场景 2:权限最小化零信任(abilityAccessCtrl 权限链)——运行时按需授权
权限最小化零信任用 @ohos.abilityAccessCtrl + verifyAccessTokenSync:
// ✅ 场景 2:权限最小化零信任(abilityAccessCtrl 权限链)
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
import common from '@ohos.app.ability.common'
@Entry
@Component
struct Index {
private atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
async checkPermission() {
// ✅ verifyAccessTokenSync 检查权限(tokenID=0 表示当前应用,零信任默认拒绝)
const status = this.atManager.verifyAccessTokenSync(0, 'ohos.permission.READ_MEDIA')
// status=-1 PERMISSION_DENIED(默认拒绝)
// status=0 PERMISSION_GRANTED(按需授权)
}
async requestPermission() {
const ctx = getContext(this) as common.UIAbilityContext
// ✅ requestPermissionsFromUser 运行时请求权限(按需授权,可追溯)
const result = await this.atManager.requestPermissionsFromUser(ctx, ['ohos.permission.READ_MEDIA'])
// result.authResults[0]=0 已授权,=-1 用户拒绝
// 鸿蒙零信任:默认拒绝 + 按需授权 + 可追溯
}
}
// 权限最小化零信任:运行时按需授权,权限粒度到单一操作,可追溯
鸿蒙权限 API 真名坑:abilityAccessCtrl.createAtManager() 造 AtManager 实例(不是 new);verifyAccessTokenSync(tokenID, permission) 检查权限,tokenID=0 表示当前应用;requestPermissionsFromUser(ctx, permissionList) 运行时请求权限(弹出系统授权弹窗,用户确认);Permissions 枚举只有 MICROPHONE/LOCATION 两个,其他权限用字符串传。
场景 3:鸿蒙 7.0 星盾机密风控引擎(API 26,机密空间可算不可取)
鸿蒙 7.0(API 26)星盾机密风控引擎——Device Security Kit,机密空间可算不可取:
// ✅ 场景 3:鸿蒙 7.0 星盾机密风控引擎(API 26,Device Security Kit)
// ⚠ 鸿蒙 7.0(API 26)新特性,本机 API 21 降级为 asset + 权限链演示
// ✅ 鸿蒙 7.0 星盾机密风控引擎(API 26,Device Security Kit)
// import deviceSecurityKit from '@ohos.security.deviceSecurityKit'
// // ✅ importRiskFactors 导入应用风险因子数据(机密空间内)
// await deviceSecurityKit.importRiskFactors({
// factors: [{ name: 'anti_fraud_score', value: 85 }]
// })
// // ✅ getRiskControlResult 执行策略规则,输出风险评估结果(机密空间内计算)
// const result = await deviceSecurityKit.getRiskControlResult({
// strategyId: 'bank_transfer_anti_fraud'
// })
// // 鸿蒙 7.0 星盾机密风控引擎三原则:
// // ① 可算不可取:风险因子可用于策略计算,但无法拿出机密空间
// // ② 可知不可见:风险因子可知意义,但明文内容无法看到
// // ③ 可用不泄露:风控策略在计算使用过程中不会被逆向泄露
// // 鸿蒙 7.0 星盾:反诈风控,银行转账/支付交易场景
// ✅ 降级方案:API 21 用 asset 加密存储 + 权限链零信任演示
// asset.addSync(attrs) + atManager.verifyAccessTokenSync(0, perm)
鸿蒙 7.0 星盾机密风控引擎 vs asset 加密存储的区别:鸿蒙 7.0 星盾机密风控引擎(API 26,Device Security Kit,机密空间可算不可取,反诈风控),asset 加密存储(API 12,关键资产加密存储,沙箱隔离)。根因不是 asset 加密存储是鸿蒙 7.0 星盾机密风控引擎——Device Security Kit 机密空间可算不可取,反诈风控,鸿蒙 7.0 星盾机密风控引擎。
五、一句话哲学
写鸿蒙 ArkUI 记住:安全不是「防得多严」是「一开始就不信你」——鸿蒙 7.0 星盾安全零信任三层架构。根因不是 JWT token 单点防御是零信任安全架构——根可信(BootLoader 校验链,不可信拒绝启动,安全起点在硬件不在应用)+ 分层隔离(Kernel/SystemService/Ability/分布式设备多安全域,越往下权限越高接口越少)+ 最小权限零信任(默认拒绝,按需授权,可追溯,权限粒度到单一操作)+ 鸿蒙 7.0 星盾机密风控引擎(API 26,Device Security Kit,机密空间可算不可取,反诈风控)。关键资产加密存储用 @ohos.security.asset + Map<Tag, Value>(asset.addSync/querySync,密钥加密存储沙箱隔离,API 真名坑:asset 没 getSync 真 名是 querySync,AssetMap 是 Map 不是对象,Tag.SECRET/ALIAS 是 BYTES 用 Uint8Array),权限最小化零信任用 @ohos.abilityAccessCtrl + verifyAccessTokenSync(默认拒绝按需授权可追溯,tokenID=0 当前应用)。一开始就不信你是鸿蒙 7.0 星盾安全核心!
能力系列回链
- 鸿蒙 7.0 新特性篇 1「沉浸式毛玻璃 + 底部 Sheet 面板」——backgroundBlurStyle 系统材质渲染槽
- 鸿蒙 7.0 新特性篇 2「Component3D 空间计算」——一行加载 glTF 3D 模型真机渲染
- 鸿蒙 7.0 新特性篇 3「鸿蒙智能体框架 2.0」——意图即服务,InsightIntentExecutor 意图路由表
- 鸿蒙 7.0 新特性篇 4「超丝滑方舟引擎」——springMotion 物理弹簧动画,真实回弹手感
- 鸿蒙 7.0 新特性篇 5「鸿蒙星盾安全」——关键资产隔离 + 权限最小化,零信任安全(本文)
真机 demo 完整代码
// 鸿蒙 7.0 新特性篇 5:鸿蒙星盾安全——关键资产隔离 + 权限最小化根因
// 本 demo 用 API 12+ @ohos.security.asset + @ohos.abilityAccessCtrl 真机演示(本机 API 21 可跑)
// 文章里讲鸿蒙 7.0 星盾安全演进:根可信(BootLoader 校验)→ 分层隔离(安全域)→ 最小权限零信任(权限链)→ 星盾机密风控引擎(API 26,机密空间可算不可取)
import asset from '@ohos.security.asset'
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
import util from '@ohos.util'
import common from '@ohos.app.ability.common'
@Entry
@Component
struct Index {
@State log: string = '(未操作)'
@State assetValue: string = '(未读取)'
@State permissionStatus: string = '(未检查)'
// ✅ 关键资产存储的属性键
private SECRET_TAG = 'h7_security_demo_secret'
private atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
aboutToAppear() {
this.log = '鸿蒙 7.0 星盾安全:关键资产隔离 + 权限最小化'
}
// ✅ 场景 1:关键资产存储(asset.addSync/querySync)—— 鸿蒙星盾安全的核心
async addAsset() {
try {
// ✅ AssetMap 是 Map<Tag, Value> 不是对象字面量,用真 Map
// ✅ Tag.SECRET/ALIAS 都是 BYTES 类型用 Uint8Array,Tag.ACCESSIBILITY 是 NUMBER
const attrs = new Map<asset.Tag, asset.Value>()
attrs.set(asset.Tag.SECRET, new util.TextEncoder().encodeInto('鸿蒙星盾机密-我的支付密码-2026'))
attrs.set(asset.Tag.ALIAS, new util.TextEncoder().encodeInto(this.SECRET_TAG))
attrs.set(asset.Tag.ACCESSIBILITY, asset.Accessibility.DEVICE_FIRST_UNLOCKED)
// ✅ asset.addSync 关键资产存储(密钥加密存储,应用沙箱隔离)
asset.addSync(attrs)
this.log = '✅ asset.addSync 成功:关键资产已加密存储(应用沙箱隔离)'
this.assetValue = '(已写入,待读取)'
} catch (e) {
this.log = `❌ asset.addSync 失败:${JSON.stringify(e)}`
}
}
async getAsset() {
try {
// ✅ AssetMap 用真 Map 查询(ALIAS 是 BYTES 用 Uint8Array)
const query = new Map<asset.Tag, asset.Value>()
query.set(asset.Tag.ALIAS, new util.TextEncoder().encodeInto(this.SECRET_TAG))
query.set(asset.Tag.RETURN_TYPE, asset.ReturnType.ALL)
// ✅ asset.querySync 关键资产读取(解密返回 Array<AssetMap>,每个 AssetMap 是 Map)
const res = asset.querySync(query)
if (res.length > 0) {
// ✅ AssetMap.get(Tag.SECRET) 返回 Value(boolean|number|Uint8Array),强转 Uint8Array
const buf = res[0].get(asset.Tag.SECRET) as Uint8Array
// ✅ Uint8Array 解码成字符串(鸿蒙文件/字节系列 API 读出来都是 ArrayBuffer 裸字节自己解码)
this.assetValue = new util.TextDecoder().decodeToString(buf)
this.log = '✅ asset.querySync 成功:关键资产已解密读取(沙箱内可读)'
} else {
this.assetValue = '(未找到)'
this.log = '❌ asset.querySync 返回空:未写入或已被删'
}
} catch (e) {
this.log = `❌ asset.querySync 失败:${JSON.stringify(e)}`
this.assetValue = '(读取失败,可能未写入)'
}
}
async removeAsset() {
try {
const query = new Map<asset.Tag, asset.Value>()
query.set(asset.Tag.ALIAS, new util.TextEncoder().encodeInto(this.SECRET_TAG))
asset.removeSync(query)
this.log = '✅ asset.removeSync 成功:关键资产已删除'
this.assetValue = '(已删除)'
} catch (e) {
this.log = `❌ asset.removeSync 失败:${JSON.stringify(e)}`
}
}
// ✅ 场景 2:权限最小化零信任(abilityAccessCtrl 权限链)
async checkPermission() {
try {
const ctx = getContext(this) as common.UIAbilityContext
// ✅ 用 verifyAccessTokenSync 检查权限(tokenID=0 表示当前应用,鸿蒙零信任默认拒绝)
const status = this.atManager.verifyAccessTokenSync(0, 'ohos.permission.READ_MEDIA')
const statusMap: Record<string, string> = {
'0': '已授权(PERMISSION_GRANTED)',
'-1': '未授权(PERMISSION_DENIED)',
}
this.permissionStatus = statusMap[String(status)] || `未知状态码:${status}`
this.log = `✅ 权限链检查:ohos.permission.READ_MEDIA = ${this.permissionStatus}(最小权限零信任)`
} catch (e) {
this.permissionStatus = `检查失败:${JSON.stringify(e)}`
this.log = this.permissionStatus
}
}
async requestPermission() {
try {
const ctx = getContext(this) as common.UIAbilityContext
// ✅ 运行时请求权限(鸿蒙零信任:默认拒绝,按需授权,可追溯)
const result = await this.atManager.requestPermissionsFromUser(ctx, ['ohos.permission.READ_MEDIA'])
const granted = result.authResults[0] === 0
this.permissionStatus = granted ? '已授权(运行时授权成功)' : '未授权(用户拒绝)'
this.log = `✅ 运行时权限请求:ohos.permission.READ_MEDIA = ${this.permissionStatus}(零信任按需授权)`
} catch (e) {
this.permissionStatus = `请求失败:${JSON.stringify(e)}`
this.log = this.permissionStatus
}
}
build() {
Column({ space: 8 }) {
Text('鸿蒙 7.0 星盾安全')
.fontSize(18).fontWeight(FontWeight.Bold).margin({ top: 16, bottom: 4 })
Text('关键资产隔离 + 权限最小化——零信任安全根因')
.fontSize(11).fontColor('#888').margin({ bottom: 8 })
// ✅ 场景 1:关键资产隔离
Column({ space: 6 }) {
Text('场景 1:关键资产隔离(@ohos.security.asset)')
.fontSize(12).fontColor('#2563eb').fontWeight(FontWeight.Bold)
Text('asset.addSync 加密存储,应用沙箱隔离,密钥不出端侧')
.fontSize(9).fontColor('#888')
Row({ space: 6 }) {
Button('① 写入关键资产').height(30).fontSize(10).backgroundColor('#2563eb20')
.onClick(() => this.addAsset())
Button('② 读取关键资产').height(30).fontSize(10).backgroundColor('#28a74520')
.onClick(() => this.getAsset())
Button('③ 删除关键资产').height(30).fontSize(10).backgroundColor('#dc354520')
.onClick(() => this.removeAsset())
}
Text(`资产内容:${this.assetValue}`).fontSize(9).fontColor('#333').margin({ top: 4 })
}
.width('92%').padding(8).backgroundColor('#e0f0ff').borderRadius(8)
// ✅ 场景 2:权限最小化零信任
Column({ space: 6 }) {
Text('场景 2:权限最小化零信任(@ohos.abilityAccessCtrl)')
.fontSize(12).fontColor('#ff6600').fontWeight(FontWeight.Bold)
Text('默认拒绝 + 按需授权 + 可追溯,鸿蒙零信任安全')
.fontSize(9).fontColor('#888')
Row({ space: 6 }) {
Button('④ 检查权限').height(30).fontSize(10).backgroundColor('#ff660020')
.onClick(() => this.checkPermission())
Button('⑤ 请求权限').height(30).fontSize(10).backgroundColor('#ffc10720')
.onClick(() => this.requestPermission())
}
Text(`权限状态:${this.permissionStatus}`).fontSize(9).fontColor('#333').margin({ top: 4 })
}
.width('92%').padding(8).backgroundColor('#fff3e0').borderRadius(8)
// ✅ 鸿蒙 7.0 星盾安全三层架构说明
Column({ space: 3 }) {
Text('鸿蒙 7.0 星盾安全三层架构')
.fontSize(10).fontColor('#6c757d').fontWeight(FontWeight.Bold)
Text('① 根可信:BootLoader/Kernel/SystemService 校验链,不可信拒绝启动')
.fontSize(8).fontColor('#888')
Text('② 分层隔离:Kernel/SystemService/Ability/分布式设备多安全域')
.fontSize(8).fontColor('#888')
Text('③ 最小权限零信任:默认拒绝,按需授权,可追溯(本 demo 演示)')
.fontSize(8).fontColor('#ff6600')
Text('④ 星盾机密风控引擎(API 26):机密空间可算不可取,反诈风控')
.fontSize(8).fontColor('#dc3545')
}
.width('92%').padding(6).backgroundColor('#f8f9fa').borderRadius(8)
Text(`日志:${this.log}`).fontSize(9).fontColor('#333').margin({ top: 6 })
Text('鸿蒙 7.0(API 26)星盾机密风控引擎:Device Security Kit,机密空间可算不可取')
.fontSize(8).fontColor('#dc3545').margin({ top: 6 })
}
.width('100%').height('100%').alignItems(HorizontalAlign.Center)
}
}
写鸿蒙 ArkUI 记住:安全不是「防得多严」是「一开始就不信你」——鸿蒙 7.0 星盾安全零信任三层架构。根因不是 JWT token 单点防御是零信任安全架构——根可信(BootLoader 校验链,不可信拒绝启动,安全起点在硬件不在应用)+ 分层隔离(Kernel/SystemService/Ability/分布式设备多安全域,越往下权限越高接口越少)+ 最小权限零信任(默认拒绝,按需授权,可追溯,权限粒度到单一操作)+ 鸿蒙 7.0 星盾机密风控引擎(API 26,Device Security Kit,机密空间可算不可取,反诈风控)。关键资产加密存储用 @ohos.security.asset + Map<Tag, Value>(asset.addSync/querySync,密钥加密存储沙箱隔离,API 真名坑:asset 没 getSync 真 名是 querySync,AssetMap 是 Map 不是对象,Tag.SECRET/ALIAS 是 BYTES 用 Uint8Array),权限最小化零信任用 @ohos.abilityAccessCtrl + verifyAccessTokenSync(默认拒绝按需授权可追溯,tokenID=0 当前应用)。一开始就不信你是鸿蒙 7.0 星盾安全核心!
更多推荐




所有评论(0)