2、密码学基础:对称加密、非对称加密、哈希、数字签名、密钥交换等核心概念
TEE(可信执行环境)与 HSM(硬件安全模块)的核心职责,是保护密钥在全生命周期中的机密性、完整性与可用性。而密钥管理的一切技术根基,都建立在密码学基础之上。理解对称加密、非对称加密、哈希、数字签名与密钥交换这五大核心概念,是后续掌握密钥生成、存储、轮换、销毁等工程实践的前提。本章将从原理、判断方法、实战场景与常见误区四个维度,系统梳理这些基础概念,并建立它们与TEE/HSM硬件安全能力之间的映射关系。
2.1 对称加密:高效但密钥分发困难
核心原理
对称加密使用同一个密钥进行加密和解密操作。发送方用密钥K将明文M加密为密文C,接收方用同一密钥K将密文C解密还原为明文M。其数学表达为:C = EK(M),M = DK(C)。当前工业界主流对称算法包括AES(高级加密标准,支持128/192/256位密钥)和国密SM4(分组长度128位,密钥长度128位)。对称加密的显著优势是运算速度快,硬件实现效率高,适合大数据量的加密保护。在TEE/HSM中,对称加密引擎通常以硬件IP核形式集成,支持AES-NI指令集或专用协处理器,实现GB/s级别的加解密吞吐量。
判断方法
在实际工程选型中,判断是否使用对称加密主要依据以下三点:
- 数据量大小:若单次加密数据量超过1KB,优先考虑对称加密,因为非对称加密在相同安全强度下性能低2-3个数量级。
- 密钥分发条件:如果通信双方已通过安全渠道(如TEE安全通道、HSM密钥注入)预置了共享密钥,则直接使用对称加密。
- 合规要求:金融、政务场景需遵循国密标准,使用SM4;国际业务则通常选择AES-256。
实战场景:TEE内部数据加密
在移动设备TEE环境中,当安全应用需要将用户指纹模板加密后存储到普通文件系统时,典型操作如下:
// TEE内部使用AES-256-GCM加密指纹模板
uint8_t key[32] = {0x2B, 0x7E, ...}; // 由TEE密钥管理模块生成
uint8_t iv[12] = {0x00, 0x01, ...}; // 随机初始化向量
aes_gcm_encrypt(key, iv, fingerprint_data, fingerprint_len, ciphertext, tag);
// 密文和tag存储到REE侧文件系统,密钥永不离开TEE
该场景中,密钥由TEE内部安全生成并存储在安全存储区,REE侧即使获取密文也无法解密,因为密钥不可提取。
2.2 非对称加密:解决密钥分发难题
核心原理
非对称加密使用一对数学关联的密钥:公钥(Public Key)和私钥(Private Key)。公钥公开分发,私钥严格保密。用公钥加密的数据只能用私钥解密,反之亦然。主流算法包括RSA(基于大整数分解难题,2048/3072/4096位)、ECC(基于椭圆曲线离散对数难题,256位即可达到AES-128同等安全强度)和国密SM2(基于ECC,256位)。非对称加密的核心价值在于:无需预先共享密钥即可建立安全通信,且私钥永不离开HSM/TEE安全边界。
判断方法
| 维度 | RSA | ECC/SM2 |
|---|---|---|
| 密钥长度(同等安全强度) | 2048位 | 256位 |
| 运算速度 | 慢(模幂运算) | 较快(点乘运算) |
| 签名/验签性能 | 验签快,签名慢 | 签名快,验签较快 |
| 硬件资源占用 | 高(大数运算单元) | 低(适合IoT) |
| 典型应用 | HTTPS证书、代码签名 | 区块链、车联网V2X |
实战场景:HSM中的密钥对生成与使用
在金融支付HSM中,为商户生成RSA-2048签名密钥对时,私钥在HSM内部生成后直接存入安全存储区,公钥通过安全通道导出。整个过程中,私钥以明文形式仅存在于HSM的易失性内存中,任何外部接口都无法读取私钥明文。签名操作通过HSM提供的PKCS#11接口调用,应用层只能获得签名结果。
2.3 哈希函数:数据完整性保障
核心原理
哈希函数将任意长度的输入数据映射为固定长度的输出(摘要),具有单向性(无法从摘要反推原文)、抗碰撞性(难以找到两个不同输入产生相同摘要)和雪崩效应(输入微小变化导致输出巨大变化)。常用算法包括SHA-256(输出256位)、SHA-3(新一代标准)和国密SM3(输出256位)。哈希函数本身不涉及密钥,但它是数字签名、HMAC、密钥派生等机制的基础组件。
判断方法
选择哈希算法时需考虑:
- 安全强度:SHA-1已被碰撞攻击突破,禁止使用;SHA-256及以上为当前最低要求。
- 性能需求:硬件哈希加速器通常支持SHA-256/SM3,吞吐量可达10Gbps以上。
- 合规性:国内等保、密评要求使用SM3。
案例拆解:固件完整性校验
TEE启动过程中,Boot ROM计算固件镜像的SHA-256摘要,与存储在OTP(一次性可编程)中的黄金摘要比对。若匹配则加载固件,否则拒绝启动。该机制确保固件未被篡改。具体流程:
// Boot ROM中的校验逻辑(伪代码)
digest = sha256(firmware_image);
golden_digest = read_otp(0x1000);
if (digest != golden_digest) {
abort_boot();
} else {
execute(firmware_image);
}
此场景中,OTP存储的黄金摘要在芯片出厂时烧录,不可更改,从硬件层面保证了信任根。
2.4 数字签名:认证与不可否认性
核心原理
数字签名结合哈希函数与非对称加密,实现三个安全目标:认证(确认发送者身份)、完整性(数据未被篡改)、不可否认性(发送者无法否认发送行为)。签名过程:发送方对消息M计算哈希H(M),用私钥对H(M)加密得到签名S;验证方用公钥解密S得到H'(M),再计算H(M)并比对。若一致则签名有效。主流签名算法包括RSA-PSS、ECDSA和SM2。
判断方法
在TEE/HSM场景中,数字签名主要用于:
- 代码签名:TEE中的可信应用(TA)必须经过签名才能加载执行。
- 证书签发:HSM作为CA根,签发下级证书。
- 交易认证:支付HSM对交易报文进行签名。
实战场景:TEE TA签名验证
以ARM TrustZone为例,TA镜像在REE侧加载前,TEE内核需验证其签名。TA头部包含签名值,TEE内核使用预置的TA签名公钥验证。该公钥在TEE固件编译时嵌入,存储在安全存储区。验证流程:
- TEE内核读取TA镜像头部,获取签名值S和消息摘要算法标识。
- 计算TA代码段的SHA-256摘要H。
- 使用公钥对S解密,得到H'。
- 比对H与H',一致则加载执行。
此机制确保只有经过授权的开发者签名的TA才能在TEE中运行,防止恶意代码注入。
2.5 密钥交换:安全建立共享密钥
核心原理
密钥交换协议允许通信双方在不安全的信道上协商出共享密钥。经典方案包括Diffie-Hellman(DH)和椭圆曲线Diffie-Hellman(ECDH)。其核心思想基于离散对数难题:双方各自生成私钥a和b,计算公钥A = g^a mod p和B = g^b mod p并交换,各自计算共享密钥K = B^a mod p = A^b mod p = g^(ab) mod p。但传统DH易受中间人攻击,需结合数字签名或证书进行身份认证。现代TLS 1.3使用ECDHE(临时ECDH)实现前向保密。
判断方法
选择密钥交换方案时需评估:
| 方案 | 前向保密 | 性能 | 适用场景 |
|---|---|---|---|
| 静态DH | 否 | 中 | 低安全需求 |
| ECDHE | 是 | 高 | HTTPS、VPN |
| SM2密钥交换 | 是 | 高 | 国密合规场景 |
案例拆解:TEE与HSM之间的安全通道建立
在车联网场景中,车机TEE需要与云端HSM建立安全通道。双方使用ECDHE协议:
// TEE侧生成临时密钥对
ecdh_keypair_t ephemeral = generate_ecdh_keypair(secp256r1);
send_public_key(ephemeral.public_key);
// 接收HSM公钥后计算共享密钥
ecdh_shared_secret_t shared = compute_shared_secret(ephemeral.private_key, hsm_public_key);
// 使用KDF派生会话密钥
session_key = hkdf(shared, salt, "session-key");
该过程中,TEE的私钥在安全环境中生成并运算,HSM同样在硬件安全边界内完成计算。即使攻击者截获公钥,也无法在计算可行时间内推导出私钥。会话密钥用于后续的对称加密通信,且每次会话独立,实现前向保密。
2.6 常见误区与总结复盘
| 误区 | 正确认知 |
|---|---|
| 认为哈希可以替代加密 | 哈希不提供机密性,只能验证完整性 |
| 将RSA用于大数据加密 | RSA性能差,应使用"非对称加密密钥+对称加密数据"的混合方案 |
| 忽略密钥交换中的身份认证 | 必须结合数字签名或证书防止中间人攻击 |
| 在TEE外部处理私钥运算 | 私钥运算必须在TEE/HSM内部完成,外部只能获取结果 |
| 使用相同密钥加密和签名 | 加密与签名应使用不同密钥对,避免安全属性交叉 |