news 2026/2/17 12:06:25

OpenHarmony Flutter 分布式安全防护:跨设备身份认证与数据加密方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenHarmony Flutter 分布式安全防护:跨设备身份认证与数据加密方案

前言

在开源鸿蒙(OpenHarmony)全场景分布式生态中,跨设备安全防护是保障多设备协同可信、数据传输安全的核心技术基石。随着设备间数据交互与能力调用的频次提升,陌生设备冒充、数据传输窃听、权限越权访问等安全风险也随之增加。基于开源鸿蒙的分布式安全框架,结合 Flutter 的跨端开发优势,能够构建一套 “身份可信认证、数据传输加密、权限精细管控、安全审计追溯” 的分布式安全防护体系,为全场景应用筑牢安全防线。

本文聚焦分布式安全防护这一核心选题,以开源鸿蒙的分布式身份认证服务(DID)、分布式数据加密服务为技术底座,结合 Flutter 的安全存储与权限管理能力,通过 “跨设备身份认证、端到端数据加密、分布式权限管控、安全审计日志” 四大实战场景,详解分布式安全防护的实现方案。本文字数约 2800 字,包含 7 个核心代码块,技术细节丰富,适用于金融支付、智能家居控制、企业办公等对安全性要求较高的分布式应用开发。

一、分布式安全防护的核心逻辑与技术底座

1.1 核心定义与创新价值

分布式安全防护是指基于开源鸿蒙的分布式安全技术,实现多设备间身份可信校验、数据传输与存储加密、权限细粒度管控、安全行为审计的技术体系,核心目标是解决跨设备协同中的信任与安全问题,其创新价值体现在:

  • 身份可信化:基于分布式 DID 实现设备身份唯一标识与可信校验,杜绝陌生设备冒充接入;
  • 数据加密化:采用端到端加密技术保障数据传输安全,结合本地加密存储防止数据泄露;
  • 权限精细化:实现跨设备权限的申请、授予与回收,基于最小权限原则管控设备能力访问;
  • 行为可追溯:记录设备间的所有交互行为,支持安全审计与异常行为追溯,便于风险排查。

1.2 与传统设备安全方案的核心差异

特性分布式安全防护(OpenHarmony+Flutter)传统设备安全方案
身份认证方式分布式 DID 去中心化认证,无需第三方信任机构基于账号密码或蓝牙配对,中心化管理
数据加密范围端到端传输加密 + 本地存储加密,全链路防护仅传输加密,本地存储多为明文
权限管控粒度基于设备与能力的细粒度权限管控基于应用的粗粒度权限管控
安全审计能力自动记录跨设备交互日志,支持行为追溯无统一审计日志,难以追溯异常行为
核心依赖技术分布式 DID+SM4/AES 加密 + 权限管理框架账号体系 + SSL/TLS 加密

1.3 技术底座:四大核心能力协同

  • 开源鸿蒙分布式安全能力:分布式身份认证服务提供设备唯一 DID 标识与可信校验,分布式数据加密服务支持端到端数据加密,权限管理服务实现跨设备权限管控;
  • Flutter 跨端安全能力:通过flutter_secure_storage实现敏感数据加密存储,结合权限申请组件实现权限动态申请;
  • 密码学技术:采用国密 SM4 算法实现数据加密,基于 RSA 算法实现身份签名与验签,保障数据与身份的安全性;
  • 安全审计技术:基于事件驱动机制记录设备交互行为,实现操作日志的持久化与查询,支持异常行为告警。

dart

/// 分布式安全防护核心管理器 class DistributedSecurityManager { // 单例模式 static final DistributedSecurityManager _instance = DistributedSecurityManager._internal(); factory DistributedSecurityManager() => _instance; // 依赖服务 late DeviceDidAuthService _didAuthService; late DataEncryptService _encryptService; late DistributedPermissionService _permissionService; late SecurityAuditService _auditService; // 设备可信状态 bool _isDeviceTrusted = false; DistributedSecurityManager._internal() { _didAuthService = DeviceDidAuthService(); _encryptService = DataEncryptService(); _permissionService = DistributedPermissionService(); _auditService = SecurityAuditService(); } // 初始化安全服务 Future<void> initSecurityService() async { await _didAuthService.initDid(); await _encryptService.initEncryptor(); await _permissionService.initPermissionManager(); await _auditService.initAuditLog(); // 初始化完成后记录审计日志 await _auditService.recordLog(SecurityLog( operation: "init_security_service", deviceId: await _didAuthService.getLocalDeviceDid(), timestamp: DateTime.now().millisecondsSinceEpoch, result: "success", )); } // 设备身份认证 Future<bool> authenticateDevice(String targetDeviceDid) async { final result = await _didAuthService.verifyDeviceDid(targetDeviceDid); _isDeviceTrusted = result; // 记录认证日志 await _auditService.recordLog(SecurityLog( operation: "device_authenticate", deviceId: targetDeviceDid, timestamp: DateTime.now().millisecondsSinceEpoch, result: result ? "success" : "failure", )); return result; } // 获取设备可信状态 bool get isDeviceTrusted => _isDeviceTrusted; } // 安全审计日志模型 class SecurityLog { final String operation; final String deviceId; final int timestamp; final String result; SecurityLog({ required this.operation, required this.deviceId, required this.timestamp, required this.result, }); Map<String, dynamic> toJson() => { "operation": operation, "deviceId": deviceId, "timestamp": timestamp, "result": result, }; }

二、实战场景 1:跨设备身份认证 —— 基于 DID 的可信设备校验

2.1 场景描述

用户在手机端发起与智慧屏的协同请求,智慧屏首先通过分布式 DID 服务校验手机的身份标识,确认手机为可信设备后,才允许手机调用智慧屏的视频播放能力,杜绝陌生设备的非法接入。

2.2 分布式 DID 身份认证实现

dart

/// 设备DID身份认证服务 class DeviceDidAuthService { // 鸿蒙DID服务方法通道 final MethodChannel _methodChannel = const MethodChannel("distributed_did_service"); // 本地设备DID String? _localDeviceDid; // 初始化DID服务 Future<void> initDid() async { _localDeviceDid = await _methodChannel.invokeMethod("getLocalDeviceDid"); // 注册本地DID到可信列表 await _methodChannel.invokeMethod("registerDidToTrustedList", {"did": _localDeviceDid}); } // 获取本地设备DID Future<String> getLocalDeviceDid() async { if (_localDeviceDid == null) await initDid(); return _localDeviceDid!; } // 验证目标设备DID是否可信 Future<bool> verifyDeviceDid(String targetDid) async { return await _methodChannel.invokeMethod("verifyDidTrust", {"targetDid": targetDid}); } // 添加设备DID到可信列表 Future<bool> addTrustedDeviceDid(String targetDid) async { return await _methodChannel.invokeMethod("addTrustedDid", {"targetDid": targetDid}); } // 移除设备DID从可信列表 Future<bool> removeTrustedDeviceDid(String targetDid) async { return await _methodChannel.invokeMethod("removeTrustedDid", {"targetDid": targetDid}); } } /// 设备认证组件服务 class DeviceAuthComponentService { final DistributedSecurityManager _securityManager = DistributedSecurityManager(); // 发起设备认证请求 Future<String> requestDeviceAuth(String targetDeviceDid) async { final isTrusted = await _securityManager.authenticateDevice(targetDeviceDid); return isTrusted ? "设备认证成功" : "设备认证失败,非可信设备"; } }

2.3 Flutter 设备认证组件封装

dart

/// 分布式设备认证组件 class DeviceAuthWidget extends StatefulWidget { final String targetDeviceDid; const DeviceAuthWidget({super.key, required this.targetDeviceDid}); @override State<DeviceAuthWidget> createState() => _DeviceAuthWidgetState(); } class _DeviceAuthWidgetState extends State<DeviceAuthWidget> { final DeviceAuthComponentService _authService = DeviceAuthComponentService(); String _authResult = "未认证"; bool _isAuthenticating = false; // 执行设备认证 Future<void> _performAuth() async { setState(() { _isAuthenticating = true; _authResult = "认证中..."; }); final result = await _authService.requestDeviceAuth(widget.targetDeviceDid); setState(() { _isAuthenticating = false; _authResult = result; }); } @override Widget build(BuildContext context) { return Column( children: [ Text("目标设备DID: ${widget.targetDeviceDid.substring(0, 10)}..."), const SizedBox(height: 16), ElevatedButton( onPressed: _isAuthenticating ? null : _performAuth, child: const Text("发起设备认证"), ), const SizedBox(height: 16), Text( _authResult, style: TextStyle( color: _authResult.contains("成功") ? Colors.green : Colors.red, ), ), ], ); } }

2.4 核心亮点

  • 基于分布式 DID 实现设备去中心化身份认证,无需依赖第三方服务器,保障认证的可信性与高效性;
  • 支持可信设备 DID 的添加与移除,灵活管理设备信任列表;
  • 认证过程与结果实时反馈,用户可直观了解设备认证状态;
  • 认证行为自动记录至安全审计日志,便于后续追溯。

三、实战场景 2:端到端数据加密 —— 跨设备传输数据安全防护

3.1 场景描述

用户在手机端向平板端发送一份敏感的文档数据,数据在传输前通过国密 SM4 算法加密,平板端接收后使用对应的密钥解密,确保数据在传输过程中即使被窃听也无法被破解。

3.2 端到端数据加密实现

dart

/// 数据加密服务 class DataEncryptService { // 鸿蒙加密服务方法通道 final MethodChannel _methodChannel = const MethodChannel("distributed_encrypt_service"); // 加密密钥 String? _encryptKey; // 初始化加密器 Future<void> initEncryptor() async { _encryptKey = await _methodChannel.invokeMethod("generateSm4Key"); } // SM4数据加密 Future<String> encryptData(String plainText) async { if (_encryptKey == null) await initEncryptor(); return await _methodChannel.invokeMethod("sm4Encrypt", { "plainText": plainText, "key": _encryptKey, }); } // SM4数据解密 Future<String> decryptData(String cipherText) async { if (_encryptKey == null) await initEncryptor(); return await _methodChannel.invokeMethod("sm4Decrypt", { "cipherText": cipherText, "key": _encryptKey, }); } // 密钥安全共享(基于设备DID加密密钥) Future<String> shareKeyWithTrustedDevice(String targetDid) async { return await _methodChannel.invokeMethod("encryptKeyWithDid", { "key": _encryptKey, "targetDid": targetDid, }); } // 导入共享密钥 Future<void> importSharedKey(String encryptedKey, String targetDid) async { _encryptKey = await _methodChannel.invokeMethod("decryptKeyWithDid", { "encryptedKey": encryptedKey, "targetDid": targetDid, }); } } /// 加密传输组件服务 class EncryptTransferService { final DataEncryptService _encryptService = DataEncryptService(); // 加密并发送数据 Future<Map<String, dynamic>> encryptAndSend(String data, String targetDid) async { // 1. 加密数据 final cipherText = await _encryptService.encryptData(data); // 2. 加密密钥并共享 final encryptedKey = await _encryptService.shareKeyWithTrustedDevice(targetDid); return { "cipherText": cipherText, "encryptedKey": encryptedKey, "timestamp": DateTime.now().millisecondsSinceEpoch, }; } // 接收并解密数据 Future<String> receiveAndDecrypt(Map<String, dynamic> payload, String senderDid) async { // 1. 导入共享密钥 await _encryptService.importSharedKey(payload["encryptedKey"], senderDid); // 2. 解密密文 return await _encryptService.decryptData(payload["cipherText"]); } }

3.3 Flutter 数据加密传输组件封装

dart

/// 端到端数据加密传输组件 class E2eEncryptTransferWidget extends StatefulWidget { final String targetDeviceDid; const E2eEncryptTransferWidget({super.key, required this.targetDeviceDid}); @override State<E2eEncryptTransferWidget> createState() => _E2eEncryptTransferWidgetState(); } class _E2eEncryptTransferWidgetState extends State<E2eEncryptTransferWidget> { final EncryptTransferService _transferService = EncryptTransferService(); final TextEditingController _dataController = TextEditingController(); String _transferResult = ""; bool _isTransferring = false; // 执行加密传输 Future<void> _performEncryptTransfer() async { if (_dataController.text.isEmpty) return; setState(() { _isTransferring = true; _transferResult = "加密传输中..."; }); try { final payload = await _transferService.encryptAndSend( _dataController.text, widget.targetDeviceDid, ); // 模拟发送数据,实际场景通过分布式软总线传输 setState(() { _isTransferring = false; _transferResult = "数据加密传输成功,密文长度: ${payload["cipherText"].length}"; }); } catch (e) { setState(() { _isTransferring = false; _transferResult = "传输失败: $e"; }); } } @override Widget build(BuildContext context) { return Column( children: [ TextField( controller: _dataController, decoration: const InputDecoration( hintText: "输入需要传输的敏感数据", border: OutlineInputBorder(), ), maxLines: 3, ), const SizedBox(height: 16), ElevatedButton( onPressed: _isTransferring ? null : _performEncryptTransfer, child: const Text("加密并发送"), ), const SizedBox(height: 16), Text( _transferResult, style: TextStyle( color: _transferResult.contains("成功") ? Colors.green : Colors.red, ), ), ], ); } }

3.4 核心亮点

  • 采用国密 SM4 算法实现数据加密,符合国家信息安全标准,加密强度高;
  • 密钥基于设备 DID 进行安全共享,仅可信设备可解密密钥,保障密钥安全;
  • 加密传输过程可视化,用户可直观了解数据传输状态;
  • 支持任意文本数据的加密与解密,适配多种敏感数据传输场景。

四、实战场景 3:分布式权限管控 —— 跨设备能力访问权限管理

4.1 场景描述

手机端需要调用智慧屏的摄像头能力进行视频通话,智慧屏通过分布式权限服务校验手机是否拥有摄像头访问权限,仅在权限授予后才允许手机调用,防止权限越权访问。

4.2 分布式权限管控实现

dart

/// 分布式权限服务 class DistributedPermissionService { // 鸿蒙权限服务方法通道 final MethodChannel _methodChannel = const MethodChannel("distributed_permission_service"); // 初始化权限管理器 Future<void> initPermissionManager() async { await _methodChannel.invokeMethod("initPermissionManager"); } // 申请跨设备权限 Future<PermissionResult> requestCrossDevicePermission(String targetDid, String permission) async { final result = await _methodChannel.invokeMethod("requestPermission", { "targetDid": targetDid, "permission": permission, }); return PermissionResult( granted: result["granted"], message: result["message"], permission: permission, ); } // 授予跨设备权限 Future<bool> grantCrossDevicePermission(String targetDid, String permission) async { return await _methodChannel.invokeMethod("grantPermission", { "targetDid": targetDid, "permission": permission, }); } // 回收跨设备权限 Future<bool> revokeCrossDevicePermission(String targetDid, String permission) async { return await _methodChannel.invokeMethod("revokePermission", { "targetDid": targetDid, "permission": permission, }); } // 检查权限状态 Future<bool> checkPermissionStatus(String targetDid, String permission) async { return await _methodChannel.invokeMethod("checkPermission", { "targetDid": targetDid, "permission": permission, }); } } // 权限申请结果模型 class PermissionResult { final bool granted; final String message; final String permission; PermissionResult({ required this.granted, required this.message, required this.permission, }); } /// 权限管控组件服务 class PermissionControlService { final DistributedPermissionService _permissionService = DistributedPermissionService(); // 申请摄像头权限 Future<PermissionResult> requestCameraPermission(String targetDid) async { return await _permissionService.requestCrossDevicePermission(targetDid, "ohos.permission.CAMERA"); } }

4.3 Flutter 权限管控组件封装

dart

/// 分布式权限申请组件 class CrossDevicePermissionWidget extends StatefulWidget { final String targetDeviceDid; const CrossDevicePermissionWidget({super.key, required this.targetDeviceDid}); @override State<CrossDevicePermissionWidget> createState() => _CrossDevicePermissionWidgetState(); } class _CrossDevicePermissionWidgetState extends State<CrossDevicePermissionWidget> { final PermissionControlService _permissionService = PermissionControlService(); PermissionResult? _permissionResult; bool _isRequesting = false; // 申请摄像头权限 Future<void> _requestCameraPermission() async { setState(() { _isRequesting = true; }); final result = await _permissionService.requestCameraPermission(widget.targetDeviceDid); setState(() { _isRequesting = false; _permissionResult = result; }); } @override Widget build(BuildContext context) { return Column( children: [ ElevatedButton( onPressed: _isRequesting ? null : _requestCameraPermission, child: const Text("申请跨设备摄像头权限"), ), const SizedBox(height: 16), if (_permissionResult != null) Text( "权限申请结果: ${_permissionResult!.message}", style: TextStyle( color: _permissionResult!.granted ? Colors.green : Colors.red, ), ), ], ); } }

4.4 核心亮点

  • 基于开源鸿蒙权限管理框架,实现跨设备权限的申请、授予与回收,管控粒度精细;
  • 支持多种系统权限的申请,适配不同设备能力的访问管控需求;
  • 权限申请结果实时反馈,用户可直观了解权限状态;
  • 权限操作自动记录至安全审计日志,便于权限使用情况追溯。

五、实战场景 4:安全审计日志 —— 跨设备交互行为追溯

5.1 场景描述

管理员需要查看近期设备间的协同操作记录,通过安全审计日志组件可查询所有设备的认证、权限申请、数据传输等行为记录,当发现异常认证行为时,可及时移除对应的设备 DID。

5.2 安全审计日志实现

dart

/// 安全审计服务 class SecurityAuditService { // 鸿蒙审计服务方法通道 final MethodChannel _methodChannel = const MethodChannel("distributed_audit_service"); // 本地审计日志数据库 Database? _auditDb; // 初始化审计日志 Future<void> initAuditLog() async { final dbPath = await getDatabasesPath(); _auditDb = await openDatabase( join(dbPath, "security_audit.db"), version: 1, onCreate: (db, version) async { await db.execute(''' CREATE TABLE IF NOT EXISTS audit_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, operation TEXT NOT NULL, deviceId TEXT NOT NULL, timestamp INTEGER NOT NULL, result TEXT NOT NULL ) '''); }, ); } // 记录审计日志 Future<void> recordLog(SecurityLog log) async { if (_auditDb == null) await initAuditLog(); await _auditDb!.insert( "audit_logs", log.toJson(), conflictAlgorithm: ConflictAlgorithm.replace, ); // 同步日志到分布式审计服务 await _methodChannel.invokeMethod("syncAuditLog", log.toJson()); } // 查询审计日志 Future<List<SecurityLog>> queryAuditLogs({String? operation, int? startTime, int? endTime}) async { if (_auditDb == null) await initAuditLog(); String whereClause = "1=1"; List<dynamic> whereArgs = []; if (operation != null) { whereClause += " AND operation = ?"; whereArgs.add(operation); } if (startTime != null) { whereClause += " AND timestamp >= ?"; whereArgs.add(startTime); } if (endTime != null) { whereClause += " AND timestamp <= ?"; whereArgs.add(endTime); } final result = await _auditDb!.query( "audit_logs", where: whereClause, whereArgs: whereArgs, orderBy: "timestamp DESC", ); return result.map((e) => SecurityLog( operation: e["operation"], deviceId: e["deviceId"], timestamp: e["timestamp"], result: e["result"], )).toList(); } }

5.3 Flutter 安全审计日志组件封装

dart

/// 安全审计日志查询组件 class SecurityAuditWidget extends StatefulWidget { const SecurityAuditWidget({super.key}); @override State<SecurityAuditWidget> createState() => _SecurityAuditWidgetState(); } class _SecurityAuditWidgetState extends State<SecurityAuditWidget> { final SecurityAuditService _auditService = SecurityAuditService(); List<SecurityLog> _auditLogs = []; bool _isQuerying = false; // 查询审计日志 Future<void> _queryAuditLogs() async { setState(() { _isQuerying = true; }); await _auditService.initAuditLog(); final logs = await _auditService.queryAuditLogs(); setState(() { _isQuerying = false; _auditLogs = logs; }); } @override Widget build(BuildContext context) { return Column( children: [ ElevatedButton( onPressed: _isQuerying ? null : _queryAuditLogs, child: const Text("查询安全审计日志"), ), const SizedBox(height: 16), if (_isQuerying) const CircularProgressIndicator() else Expanded( child: _auditLogs.isEmpty ? const Center(child: Text("暂无审计日志")) : ListView.builder( itemCount: _auditLogs.length, itemBuilder: (context, index) { final log = _auditLogs[index]; return ListTile( title: Text("操作: ${log.operation}"), subtitle: Text("设备: ${log.deviceId.substring(0, 10)}... | 时间: ${DateTime.fromMillisecondsSinceEpoch(log.timestamp).toString().substring(0, 19)}"), trailing: Text( log.result, style: TextStyle(color: log.result == "success" ? Colors.green : Colors.red), ), ); }, ), ), ], ); } }

5.4 核心亮点

  • 支持本地与分布式审计日志的同步,保障日志数据的完整性与可追溯性;
  • 支持多条件日志查询,便于快速定位特定操作记录;
  • 日志记录包含操作类型、设备 ID、时间戳与结果,信息完整;
  • 异常操作结果标红展示,便于快速识别安全风险。

六、关键技术挑战与解决方案

6.1 技术挑战 1:设备 DID 身份伪造风险

  • 问题:恶意设备可能伪造可信设备的 DID 标识,实现非法接入;
  • 解决方案:1. 基于数字签名技术,设备 DID 与设备硬件信息绑定,无法伪造;2. 实现 DID 证书过期机制,定期更新 DID 证书;3. 异常 DID 接入时触发安全告警,及时通知用户。

6.2 技术挑战 2:加密密钥泄露风险

  • 问题:加密密钥在存储或共享过程中可能泄露,导致数据被破解;
  • 解决方案:1. 密钥采用硬件加密存储(如 TEE 安全区域),防止软件层面窃取;2. 密钥共享时基于设备 DID 二次加密,仅目标设备可解密;3. 实现密钥定期更新机制,降低密钥泄露影响。

6.3 技术挑战 3:权限越权访问风险

  • 问题:已授权设备可能超越权限范围访问其他能力;
  • 解决方案:1. 基于最小权限原则,仅授予设备所需的最小权限;2. 实现权限使用监控,当发现权限越权使用时,立即回收权限;3. 权限授予时设置有效期,过期后自动回收。

6.4 技术挑战 4:审计日志篡改风险

  • 问题:本地审计日志可能被恶意篡改,导致安全行为无法追溯;
  • 解决方案:1. 审计日志采用区块链技术存储,实现日志不可篡改;2. 日志记录时添加数字签名,确保日志的完整性;3. 定期同步日志至可信设备,实现日志备份。

七、常见问题(FAQ)

Q1:分布式 DID 身份认证是否需要联网?

A1:不需要。分布式 DID 基于设备本地硬件信息生成,身份校验通过设备间点对点完成,无需依赖互联网,满足离线组网场景的安全认证需求。

Q2:数据加密支持哪些算法?

A2:默认支持国密 SM4 算法,同时兼容 AES、RSA 等国际通用加密算法,开发者可根据业务需求灵活选择加密算法。

Q3:权限授予后是否可以随时回收?

A3:可以。分布式权限服务支持权限的实时回收,管理员可通过权限管控组件随时回收已授予的权限,防止权限滥用。

Q4:安全审计日志会占用大量存储空间吗?

A4:不会。审计日志采用轻量化存储格式,同时支持日志自动清理策略,可设置日志保存时长,自动删除过期日志,节省存储空间。

八、结语

分布式安全防护是开源鸿蒙全场景分布式生态不可或缺的核心技术,它为多设备协同提供了从身份认证到数据加密、从权限管控到行为审计的全链路安全保障。本文提出的 “身份可信认证、端到端数据加密、分布式权限管控、安全审计追溯” 四大核心方案,基于开源鸿蒙的分布式安全能力与 Flutter 的跨端开发优势,为开发者构建安全可靠的分布式应用提供了完整的技术路径。

相比于传统设备安全方案,本方案的核心优势在于 **“去中心化可信” 与 “全链路防护”**—— 基于分布式 DID 实现设备去中心化身份认证,无需第三方信任机构;通过端到端加密与本地存储加密实现数据全链路安全防护;基于细粒度权限管控防止权限滥用;通过不可篡改的审计日志实现行为可追溯,全方位保障分布式应用的安全性。

未来,随着开源鸿蒙生态的持续完善,分布式安全防护技术将向 **“智能风险预警” 与 “零信任安全”** 方向演进 —— 结合 AI 算法实现异常行为智能识别与预警;基于零信任安全模型,实现 “持续验证、永不信任” 的安全防护机制,进一步提升分布式应用的安全等级。

对于开发者而言,掌握分布式安全防护技术,是构建高质量、高安全性全场景分布式应用的必备能力。后续我们还将探讨 “分布式零信任安全架构设计”“国密算法在分布式应用中的优化实践” 等进阶主题,敬请关注!

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!