HarmonyOS 分布式安全机制实战:从 TEE 可信执行到跨设备端端加密
文章目录

每日一句正能量
路上总有阴影,但你抬头就能看到光。
光永远在,关键在于你是否愿意调整视角去看见。
孤独却不荒凉,相遇却不黏着,回忆却不停留。仿佛一棵树,根系在黑暗里安静探索,枝叶在光中坦然舒展。日子滚烫,是因为心还在真切地感受;简单极致,是因为已穿过复杂的迷雾。
一、前言:分布式时代的安全挑战
在前五篇文章中,我们依次探讨了 HarmonyOS 的分布式文件系统、分布式数据库、分布式对象存储、分布式任务调度与分布式服务调用。这些技术让数据、任务与服务能够在多设备间自由流动,但也带来了一个根本性的安全挑战:当数据离开本机,流向其他设备时,如何确保"正确的人,通过正确的设备,正确地使用数据"?
在传统的单设备安全模型中,安全边界清晰——数据存储在本机,访问控制由本机操作系统 enforcing。但在分布式场景下,数据需要在手机、平板、智慧屏、车机等多种设备间流转,每种设备的安全能力参差不齐(如手表可能没有 TEE,而手机具备完整的安全芯片),网络环境也复杂多变(Wi-Fi、BLE、5G 混合使用)。攻击面从"单点"扩展为"全网",传统的安全机制已无法应对。
HarmonyOS 的分布式安全机制,以 “正确的人,通过正确的设备,正确地使用数据” 为安全目标,构建了覆盖身份认证、设备可信、数据加密与传输安全的完整防护体系。本文将从三层安全架构、TEE 可信执行环境、设备认证与密钥协商、数据分级加密四个维度深入剖析,并带领读者完成一个基于 TEE 的跨设备安全通信应用。
二、分布式安全三层架构
HarmonyOS 的分布式安全架构围绕"人-设备-数据"三个核心要素展开:

2.1 正确的人:身份认证层
HarmonyOS 基于 零信任模型 实现用户身份认证,核心机制包括:
- 多因素融合认证:通过 Huawei ID 身份管理,将不同设备上标识同一用户的认证凭据关联起来。认证因素包括生物特征(指纹/人脸)、锁屏密码、硬件安全密钥等,系统根据场景动态选择认证强度。
- 协同互助认证:将硬件和认证能力解耦,实现不同设备的资源池化与能力互助。例如,手表没有摄像头,可通过手机的人脸识别完成认证,认证结果通过安全通道传递至手表。
- 通行密钥(Passkey):在 TEE 环境中为应用生成设备绑定的通行密钥私钥,私钥永不离开安全环境。跨设备认证时,通过近场通信传输共享秘密协商会话密钥,建立安全传输通道。
- 匿名身份凭证:用户身份使用可吊销、用途受限的凭证进行匿名认证,全程隐藏用户真实身份。网络采用隐私安全协议,云服务器无法获取用户真实 IP 地址、设备信息和用户身份。
2.2 正确的设备:设备可信层
HarmonyOS 通过以下机制确保只有可信设备才能接入分布式网络:
- 安全启动(Secure Boot):从芯片 BootROM 开始,每一级固件都验证下一级镜像的签名,形成完整的信任链。任何被篡改的镜像都无法通过验证,确保系统固件和应用程序的完整性。
- 可信执行环境(TEE):华为自研的 iTrustee 基于 ARM TrustZone 技术实现,将处理器工作状态分为安全世界(TEE)和非安全世界(REE)。TEE 微内核通过形式化验证,获得商用 OS 内核 CCEAL5+ 认证评级。密钥生成和计算由独立硬件芯片完成,私钥仅在 TEE 内使用。
- 设备证书认证:具备 TEE 的设备在产线预置 PKI 设备证书,私钥写入 TEE 环境。设备间通过证书验证彼此身份,确保设备是合法制造生产的。
- HPIC 安全会话:通过手机、平板、PC 等终端的硬件安全芯片(SE/TPM)进行可信认证与密钥协商,由硬件安全模块生成唯一密钥,确保所有安全行为均基于可测、不可篡改的硬件可信根执行。
- 控制流完整性(CFI):采用 Clang CFI 及栈保护技术,缓解 ROP/JOP 攻击威胁,限制攻击者可调用的代码片段范围。
2.3 正确地使用数据:数据安全层
- 文件系统分级加密:采用 AES-XTS-256 算法,利用内核加密文件系统模块和硬件加解密引擎实现文件级加密。明文类密钥和文件密钥在 TEE 中创建、存储、使用和销毁。
- 访问控制(DAC/MAC):提供自主访问控制与强制访问控制,确保只有正确的应用程序可以访问数据。分布式文件系统具有分布式沙箱功能,确保跨设备数据访问场景中只有正确的应用可以访问。
- 数据传输安全:高风险数据在未经用户知情同意的情况下,不得传输到安全级别低于源设备的设备。分布式系统提供基于数据风险级别的跨设备访问控制机制。
三、TEE 可信执行环境深度解析
3.1 TEE 架构与隔离机制
TEE(Trusted Execution Environment,可信执行环境)是 HarmonyOS 分布式安全的硬件基石。华为自研的 iTrustee 基于 ARM TrustZone 技术实现,其核心设计包括:
- 硬件级隔离:TrustZone 将 CPU 和内存划分为安全世界(Secure World)和普通世界(Normal World),通过 SCR 寄存器硬件开关切换执行环境。安全世界的代码和数据对普通世界完全不可见。
- 多核多线程:支持创建多个安全任务并运行在多个 CPU 核心上,极大提高 TEE 的算力,满足 AI 推理、加密运算等高性能需求。
- 动态资源管理:支持普通内存动态转换为安全内存,降低静态资源占用比例,提升系统整体效率。
3.2 TEE 安全服务
HarmonyOS TEE 为开发者和系统提供以下核心安全服务:
| 服务 | 功能 | 应用场景 |
|---|---|---|
| 可信存储服务 | 关键信息加密存储,支持设备绑定与应用隔离 | 指纹模板、支付密钥、数字证书 |
| 加解密服务 | 支持 AES/RSA/ECC 等多种算法,密钥派生 | 数据加密、安全通信、数字签名 |
| 可信时间服务 | 提供不可篡改的基准时间 | 防重放攻击、证书有效期校验 |
| 可信显示与输入(TUI) | 隔离显示区域,防止截屏与劫持 | 密码输入、支付确认、敏感信息展示 |
3.3 安全存储的防重放机制
TEE 安全存储通过以下机制防止数据被篡改或回滚:
- 加密与设备绑定:存储数据以加密形式落盘,解密密钥由 TEE 内部派生,与设备唯一标识(SoC UID、安全芯片 ID)绑定。数据拷贝到另一台设备后无法解密。
- 防重放攻击:通过版本号 + 消息认证码(MAC)机制防重放。每次写入更新版本计数器,读取时校验版本与 MAC,发现回滚即拒绝。
- 文件级隔离:不同可信应用(TA)的安全存储相互隔离,TA 之间不能互相读取对方的存储文件。
四、设备认证与密钥协商
4.1 同账号设备认证流程
HarmonyOS 分布式系统的连接安全,核心在于设备之间的相互正确可信。同账号设备的认证流程如下:

- 生成身份凭据:设备登录 Huawei ID 后,在 TEE 中生成椭圆曲线(ECC)公私钥对,作为本机在该账号下的身份认证凭据。
- 向云端申请证明:设备向华为云服务器申请对其公钥凭据进行证明。私钥凭据仅在端侧 TEE 存储,永远不会被服务器获取。
- 云端签发公钥证明:华为云身份认证服务验证设备身份后,签发公钥证明证书。
- 设备发现与近场组网:同账号设备通过 DSoftBus 的 MDNS/BLE 机制发现彼此,发起组网请求。
- 公钥交换:设备 A 与设备 B 通过 DSoftBus 安全通道交换公钥。
- ECDH 密钥协商:双方基于椭圆曲线 Diffie-Hellman 算法协商共享秘密。
- 派生会话密钥:从共享秘密派生本次会话的加密密钥。
- AES-GCM 加密通信:软总线安全通道使用会话密钥对传输数据进行 AES-GCM 端端加密。
核心保障:
- 私钥永不离开 TEE,即使操作系统被攻破,攻击者也无法获取私钥。
- 会话密钥仅本次会话有效,会话结束后自动销毁,实现前向安全。
- 即使 Wi-Fi 或 BLE 协议层被攻破,传输数据仍被端端加密保护,只有通信双方能解密。
4.2 点对点绑定设备认证
对于非同账号的设备(如家人共享设备),HarmonyOS 支持点对点绑定认证:
- 用户在两台设备上手动确认配对请求。
- 设备通过近场通信(NFC/BLE)交换临时公钥。
- 双方验证配对码(PIN 码或二维码)的一致性。
- 认证成功后,设备证书写入彼此的信任列表,后续通信无需重复认证。
五、数据分级加密与传输安全
5.1 文件系统五级加密方案
HarmonyOS 根据数据敏感程度,提供五级加密方案:

| 级别 | 名称 | 加密方案 | 特点 | 典型数据 |
|---|---|---|---|---|
| S4 | ECE (Enhanced CE) | 与锁屏密码强绑定 | 设备锁定时不可打开,不可创建文件 | 支付密钥、生物特征模板 |
| S3 | SECE (Strong CE) | 与锁屏密码绑定 | 设备锁定时不可打开,允许创建和写入 | 邮件附件、加密文档 |
| S2 | CE (Credential Encrypted) | 与锁屏密码结合 | 开机后输入密码可访问,锁屏后仍可用 | 图库、联系人、短信 |
| S1 | DE (Device Encrypted) | 与锁屏密码无关 | 开机后即可访问 | 壁纸、闹钟、铃声 |
| S0 | NE (Non-Encrypted) | 不加密 | 明文存储 | OTA 升级包 |
密钥层次结构:HUK(硬件唯一密钥)→ 类密钥(CE/SECE/ECE/DE)→ 文件密钥。所有明文密钥在 TEE 中创建、存储、使用和销毁,REE 侧仅持有加密后的密钥密文。
5.2 跨设备传输安全机制
当数据需要在设备间传输时,HarmonyOS 执行以下安全策略:
- 数据风险评估:系统首先评估数据的敏感级别(S0-S4)。
- 目标设备安全级别校验:检查目标设备是否具备与数据风险级别相称的安全能力(如是否具备 TEE)。
- TEE 安全环境验证:通过设备证书验证目标设备的 TEE 完整性与可信度。
- 建立 TEE-to-TEE 通道:在源设备 TEE 与目标设备 TEE 之间建立直接的安全通道。
- AES-GCM 端端加密传输:数据在源设备 TEE 中加密,通过安全通道传输,在目标设备 TEE 中解密。
- 接收端解密与存储:解密后的数据根据目标设备的加密策略重新加密存储。
核心原则:高风险数据(S3/S4)仅传输到安全级别不低于源设备的设备;未经用户知情同意,高风险数据不得外传。
六、实战开发:构建「智联安全」TEE 加密通信应用
本节将构建一个利用 TEE 安全存储与跨设备加密通道实现敏感数据安全传输的应用。
6.1 开发环境
- IDE:DevEco Studio 5.0+
- SDK:HarmonyOS 6.0(API 12)
- 设备:支持 TEE 的手机 + 平板
- 项目模板:Empty Ability(Stage 模型)
6.2 权限配置
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.SECURE_STORAGE",
"reason": "$string:secure_storage_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
},
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC",
"reason": "$string:dist_data_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
}
]
}
}
6.3 TEE 安全存储封装
// manager/TEESecurityManager.ets
import { deviceSecurity } from '@ohos.security.deviceSecurity';
export class TEESecurityManager {
private session?: deviceSecurity.TrustedExecutionEnvironmentSession;
/**
* 初始化 TEE 会话
*/
async initialize(): Promise<void> {
try {
const teeService = await deviceSecurity.getTrustedExecutionEnvironmentService();
this.session = await teeService.createSession({
authType: deviceSecurity.AuthType.ALL,
authLevel: deviceSecurity.AuthLevel.SYSTEM,
userId: 0,
});
console.info('[TEE] 安全会话已创建');
} catch (error) {
console.error(`[TEE] 会话创建失败: ${JSON.stringify(error)}`);
throw error;
}
}
/**
* 安全存储敏感数据(自动加密,设备绑定)
*/
async secureStore(key: string, data: string): Promise<void> {
if (!this.session) throw new Error('TEE 会话未初始化');
try {
const dataBuffer = new TextEncoder().encode(data);
const trustedStorage = await this.session.getTrustedStorage();
await trustedStorage.save(key, dataBuffer);
console.info(`[TEE] 数据已安全存储: ${key}`);
} catch (error) {
console.error(`[TEE] 存储失败: ${JSON.stringify(error)}`);
throw error;
}
}
/**
* 读取安全存储的数据
*/
async secureRetrieve(key: string): Promise<string> {
if (!this.session) throw new Error('TEE 会话未初始化');
try {
const trustedStorage = await this.session.getTrustedStorage();
const dataBuffer = await trustedStorage.read(key);
return new TextDecoder().decode(dataBuffer);
} catch (error) {
console.error(`[TEE] 读取失败: ${JSON.stringify(error)}`);
throw error;
}
}
/**
* 在 TEE 内执行加密运算
*/
async encryptInTEE(plainText: string, keyAlias: string): Promise<ArrayBuffer> {
if (!this.session) throw new Error('TEE 会话未初始化');
try {
const cryptoEngine = await this.session.getCryptoEngine();
const plainBuffer = new TextEncoder().encode(plainText);
const encrypted = await cryptoEngine.encrypt({
algorithm: 'AES/GCM/NoPadding',
keyAlias: keyAlias,
iv: this.generateIV(),
}, plainBuffer);
return encrypted;
} catch (error) {
console.error(`[TEE] 加密失败: ${JSON.stringify(error)}`);
throw error;
}
}
private generateIV(): ArrayBuffer {
const iv = new Uint8Array(12);
for (let i = 0; i < 12; i++) {
iv[i] = Math.floor(Math.random() * 256);
}
return iv.buffer;
}
/**
* 销毁会话
*/
async destroy(): Promise<void> {
if (this.session) {
await this.session.close();
this.session = undefined;
console.info('[TEE] 安全会话已销毁');
}
}
}
6.4 跨设备安全传输
// manager/SecureTransferManager.ets
import { distributedDeviceManager } from '@kit.DistributedServiceKit';
import { rpc } from '@kit.IPCKit';
export interface SecureDataPacket {
encryptedData: ArrayBuffer;
iv: ArrayBuffer;
authTag: ArrayBuffer;
dataLevel: 'S1' | 'S2' | 'S3' | 'S4';
timestamp: number;
}
export class SecureTransferManager {
private dmInstance?: distributedDeviceManager.DeviceManager;
async initialize(bundleName: string): Promise<void> {
this.dmInstance = distributedDeviceManager.createDeviceManager(bundleName);
}
/**
* 安全传输数据到目标设备
* 仅在目标设备安全级别满足要求时传输
*/
async transferSecurely(
targetNetworkId: string,
packet: SecureDataPacket
): Promise<boolean> {
try {
// 1. 校验目标设备安全级别
const targetDevice = await this.getDeviceInfo(targetNetworkId);
if (!targetDevice.isTrusted) {
console.error('[Transfer] 目标设备不可信');
return false;
}
// S3/S4 数据仅传输至同等级设备
if ((packet.dataLevel === 'S3' || packet.dataLevel === 'S4') && !targetDevice.hasTEE) {
console.error('[Transfer] 目标设备无 TEE,无法传输高风险数据');
return false;
}
// 2. 建立远程服务连接(通过 TEE-to-TEE 通道)
const remoteProxy = await this.connectToRemoteService(targetNetworkId);
// 3. 发送加密数据包
const result = await remoteProxy.sendRequest(
0, // message code
this.serializePacket(packet),
new rpc.MessageParcel(),
new rpc.MessageOption()
);
return result.errCode === 0;
} catch (err) {
console.error(`[Transfer] 传输失败: ${err}`);
return false;
}
}
private async getDeviceInfo(networkId: string): Promise<{
isTrusted: boolean;
hasTEE: boolean;
securityLevel: number;
}> {
// 实际项目中通过设备管理器查询设备能力
return {
isTrusted: true,
hasTEE: true,
securityLevel: 4,
};
}
private async connectToRemoteService(networkId: string): Promise<rpc.IRemoteObject> {
const want = {
deviceId: networkId,
bundleName: 'com.example.smartsecurity',
abilityName: 'SecureTransferAbility',
};
return new Promise((resolve, reject) => {
const options = {
onConnect: (elementName: object, remote: rpc.IRemoteObject) => resolve(remote),
onDisconnect: () => reject(new Error('连接断开')),
onFailed: (code: number) => reject(new Error(`连接失败: ${code}`)),
};
// 注意:实际调用需通过 context
});
}
private serializePacket(packet: SecureDataPacket): rpc.MessageParcel {
const parcel = new rpc.MessageParcel();
parcel.writeInt8Array(new Int8Array(packet.encryptedData));
parcel.writeInt8Array(new Int8Array(packet.iv));
parcel.writeInt8Array(new Int8Array(packet.authTag));
parcel.writeString(packet.dataLevel);
parcel.writeLong(packet.timestamp);
return parcel;
}
}
6.5 UI 页面实现
// pages/SecurityPage.ets
import { TEESecurityManager } from '../manager/TEESecurityManager';
import { SecureTransferManager, SecureDataPacket } from '../manager/SecureTransferManager';
@Entry
@Component
struct SecurityPage {
@State inputData: string = '';
@State storedData: string = '';
@State transferStatus: string = '就绪';
@State deviceList: Array<{name: string, networkId: string}> = [];
private teeManager: TEESecurityManager = new TEESecurityManager();
private transferManager: SecureTransferManager = new SecureTransferManager();
aboutToAppear() {
this.teeManager.initialize();
this.transferManager.initialize('com.example.smartsecurity');
this.loadDevices();
}
aboutToDisappear() {
this.teeManager.destroy();
}
async loadDevices() {
// 模拟加载设备列表
this.deviceList = [
{ name: '平板', networkId: 'device_tablet_001' },
{ name: '智慧屏', networkId: 'device_tv_001' },
];
}
async storeInTEE() {
if (!this.inputData) return;
try {
await this.teeManager.secureStore('sensitive_data', this.inputData);
this.transferStatus = '数据已安全存储至 TEE';
} catch (err) {
this.transferStatus = `存储失败: ${err}`;
}
}
async readFromTEE() {
try {
this.storedData = await this.teeManager.secureRetrieve('sensitive_data');
this.transferStatus = '数据已从 TEE 读取';
} catch (err) {
this.transferStatus = `读取失败: ${err}`;
}
}
async transferToDevice(networkId: string) {
if (!this.storedData) {
this.transferStatus = '请先存储数据';
return;
}
this.transferStatus = '正在加密并传输...';
try {
// 在 TEE 内加密数据
const encrypted = await this.teeManager.encryptInTEE(this.storedData, 'transfer_key');
const packet: SecureDataPacket = {
encryptedData: encrypted,
iv: new ArrayBuffer(12),
authTag: new ArrayBuffer(16),
dataLevel: 'S3',
timestamp: Date.now(),
};
const success = await this.transferManager.transferSecurely(networkId, packet);
this.transferStatus = success ? '安全传输成功' : '传输被拒绝(安全级别不匹配)';
} catch (err) {
this.transferStatus = `传输异常: ${err}`;
}
}
build() {
Column({ space: 16 }) {
Text('智联安全 - TEE 加密与跨设备传输')
.fontSize(24)
.fontWeight(FontWeight.Bold)
.fontColor('#1976D2')
.margin({ top: 20 })
// 数据输入
TextInput({ placeholder: '输入敏感数据...', text: $$this.inputData })
.width('90%')
.height(44)
.backgroundColor('#F5F5F5')
.borderRadius(8)
Row({ space: 16 }) {
Button('存储至 TEE')
.type(ButtonType.Capsule)
.backgroundColor('#1976D2')
.onClick(() => this.storeInTEE())
Button('从 TEE 读取')
.type(ButtonType.Capsule)
.backgroundColor('#388E3C')
.onClick(() => this.readFromTEE())
}
// 已存储数据展示
if (this.storedData) {
Column({ space: 8 }) {
Text('已存储的敏感数据')
.fontSize(14)
.fontWeight(FontWeight.Bold)
.width('90%')
Text(this.storedData)
.fontSize(13)
.fontColor('#333')
.width('90%')
.padding(12)
.backgroundColor('#FAFAFA')
.borderRadius(8)
}
}
// 设备列表与传输
Column({ space: 8 }) {
Text('目标设备(安全传输)')
.fontSize(14)
.fontWeight(FontWeight.Bold)
.width('90%')
ForEach(this.deviceList, (device: {name: string, networkId: string}) => {
Row() {
Text(device.name)
.fontSize(14)
.layoutWeight(1)
Button('安全传输')
.type(ButtonType.Capsule)
.backgroundColor('#7B1FA2')
.fontSize(12)
.onClick(() => this.transferToDevice(device.networkId))
}
.width('90%')
.padding(10)
.backgroundColor('#F5F5F5')
.borderRadius(8)
})
}
Text(this.transferStatus)
.fontSize(12)
.fontColor('#666')
.margin({ bottom: 16 })
}
.width('100%')
.height('100%')
.backgroundColor('#FFFFFF')
}
}
七、安全最佳实践与常见问题
7.1 开发安全清单
| 检查项 | 建议 | 风险等级 |
|---|---|---|
| 敏感数据存储 | 优先使用 TEE 安全存储,避免明文存储在 REE | 高 |
| 密钥管理 | 密钥在 TEE 内生成与使用,禁止硬编码在代码中 | 高 |
| 跨设备传输 | 传输前校验目标设备安全级别,S3/S4 数据仅传至 TEE 设备 | 高 |
| 会话密钥 | 每次会话独立协商,实现前向安全 | 中 |
| 生物特征 | 比对过程必须在 TEE 内完成,模板不可导出 | 高 |
| 日志脱敏 | 日志中禁止输出敏感数据(密钥、密码、Token) | 中 |
7.2 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| TEE 会话创建失败 | 设备不支持 TEE 或权限未申请 | 检查设备安全能力,确认 SECURE_STORAGE 权限 |
| 安全存储读取失败 | 数据被篡改或设备更换 | 检查数据完整性(MAC 校验),确认同一设备 |
| 跨设备传输被拒绝 | 目标设备安全级别不足 | 检查目标设备是否具备 TEE,或降低数据级别 |
| 设备认证失败 | 设备证书过期或未被信任 | 重新登录 Huawei ID,或手动重新配对 |
| 加密运算超时 | TEE 负载过高或算法参数错误 | 优化算法选择,分片处理大数据 |
八、总结与展望
本文从 HarmonyOS 分布式安全的三层架构(正确的人、正确的设备、正确地使用数据)出发,深入解析了 TEE 可信执行环境的硬件隔离机制与安全服务、同账号设备认证的 ECDH 密钥协商流程、文件系统五级加密方案(CE/SECE/ECE/DE/NE)以及跨设备 TEE-to-TEE 安全传输机制。通过「智联安全」实战案例,演示了基于 TEE 的安全存储、加密运算与跨设备安全传输的完整开发流程。
HarmonyOS 分布式安全机制的核心设计理念是 “安全内生、信任链传递、最小权限”。从芯片 BootROM 的安全启动,到 TEE 的硬件级隔离,再到设备间的证书认证与端端加密,每一层都构建在前一层的信任基础之上,形成完整的信任链。开发者无需成为安全专家,只需遵循框架提供的安全 API 与最佳实践,即可构建企业级的分布式安全应用。
展望未来,分布式安全将在以下方向持续演进:
- 后量子密码学:随着量子计算的发展,HarmonyOS 将逐步引入抗量子攻击的加密算法(如 lattice-based cryptography),保障长期数据安全。
- AI 驱动的威胁感知:利用端侧大模型实时分析设备行为模式,自动识别异常访问与潜在攻击,实现"自适应安全"。
- 区块链级设备信任:结合分布式账本技术,构建设备身份的不可篡改记录,实现去中心化的设备信任验证。
- 隐私计算融合:将联邦学习、安全多方计算(MPC)与 TEE 结合,实现"数据可用不可见"的跨设备隐私计算。
在万物互联的时代,安全不再是功能的"附加项",而是系统的"基座"。掌握 HarmonyOS 分布式安全机制的开发能力,意味着你已经具备了构建可信、可控、可审计的下一代分布式应用的核心竞争力。
转载自:https://blog.csdn.net/u014727709/article/details/164065280
欢迎 👍点赞✍评论⭐收藏,欢迎指正
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)