2、密码学基础:对称加密、非对称加密、哈希、数字签名、密钥交换等核心概念

TEE(可信执行环境)与 HSM(硬件安全模块)的核心职责,是保护密钥在全生命周期中的机密性、完整性与可用性。而密钥管理的一切技术根基,都建立在密码学基础之上。理解对称加密、非对称加密、哈希、数字签名与密钥交换这五大核心概念,是后续掌握密钥生成、存储、轮换、销毁等工程实践的前提。本章将从原理、判断方法、实战场景与常见误区四个维度,系统梳理这些基础概念,并建立它们与TEE/HSM硬件安全能力之间的映射关系。

密码学核心概念与TEE/HSM安全映射 对称加密 AES / SM4 非对称加密 RSA / ECC / SM2 哈希函数 SHA-256 / SM3 数字签名 ECDSA / RSA-PSS 密钥交换 ECDH / DH / SM2 TEE / HSM 硬件安全能力 安全密钥存储 非易失性安全区 硬件加速运算 AES/RSA/ECC引擎 信任根 不可提取根密钥 防篡改 主动屏蔽层

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侧即使获取密文也无法解密,因为密钥不可提取。

经验提醒:对称加密的密钥长度选择需平衡安全性与性能。AES-128在量子计算威胁下已显薄弱,建议新系统直接采用AES-256。对于IoT设备,需评估硬件加速能力,避免因软件实现导致功耗过高。

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接口调用,应用层只能获得签名结果。

风险提示:RSA-1024已被证明不安全,严禁在新系统中使用。ECC虽然密钥短、性能好,但实现复杂度高,需防止侧信道攻击(如计时攻击、功耗分析)。在HSM选型时,务必确认硬件支持ECC点乘的恒定时间实现。

2.3 哈希函数:数据完整性保障

核心原理

哈希函数将任意长度的输入数据映射为固定长度的输出(摘要),具有单向性(无法从摘要反推原文)、抗碰撞性(难以找到两个不同输入产生相同摘要)和雪崩效应(输入微小变化导致输出巨大变化)。常用算法包括SHA-256(输出256位)、SHA-3(新一代标准)和国密SM3(输出256位)。哈希函数本身不涉及密钥,但它是数字签名、HMAC、密钥派生等机制的基础组件。

判断方法

选择哈希算法时需考虑:

  1. 安全强度:SHA-1已被碰撞攻击突破,禁止使用;SHA-256及以上为当前最低要求。
  2. 性能需求:硬件哈希加速器通常支持SHA-256/SM3,吞吐量可达10Gbps以上。
  3. 合规性:国内等保、密评要求使用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存储的黄金摘要在芯片出厂时烧录,不可更改,从硬件层面保证了信任根。

关键认知:哈希函数不提供机密性,只提供完整性。在TEE/HSM中,哈希运算通常与签名、MAC结合使用,形成"先哈希后签名"的标准模式,大幅提升签名效率。

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固件编译时嵌入,存储在安全存储区。验证流程:

  1. TEE内核读取TA镜像头部,获取签名值S和消息摘要算法标识。
  2. 计算TA代码段的SHA-256摘要H。
  3. 使用公钥对S解密,得到H'。
  4. 比对H与H',一致则加载执行。

此机制确保只有经过授权的开发者签名的TA才能在TEE中运行,防止恶意代码注入。

经验提醒:签名密钥的私钥必须存储在HSM/TEE内部,且设置使用策略(如每日签名次数限制、使用时间窗口)。对于高价值密钥,建议启用HSM的多方控制(M of N)机制,防止单点泄露。

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同样在硬件安全边界内完成计算。即使攻击者截获公钥,也无法在计算可行时间内推导出私钥。会话密钥用于后续的对称加密通信,且每次会话独立,实现前向保密。

风险提示:密钥交换必须结合身份认证。若未验证对方公钥的真实性,攻击者可实施中间人攻击。在TEE/HSM场景中,建议使用预置的CA证书对对方公钥进行签名验证,或使用带外方式(如二维码扫码)完成公钥绑定。

2.6 常见误区与总结复盘

误区 正确认知
认为哈希可以替代加密 哈希不提供机密性,只能验证完整性
将RSA用于大数据加密 RSA性能差,应使用"非对称加密密钥+对称加密数据"的混合方案
忽略密钥交换中的身份认证 必须结合数字签名或证书防止中间人攻击
在TEE外部处理私钥运算 私钥运算必须在TEE/HSM内部完成,外部只能获取结果
使用相同密钥加密和签名 加密与签名应使用不同密钥对,避免安全属性交叉