3、密码学基础:对称加密、非对称加密、哈希函数、消息认证码、数字签名、密钥交换协议及其在安全芯片中的应用

密码学是硬件安全芯片(如安全MCU、TPM、SE、HSM)实现机密性、完整性、真实性和不可否认性的技术基石。安全芯片的评估(如CC EAL)本质上是对其密码算法实现、密钥管理、物理防护和协议交互的综合验证。本章将系统梳理对称加密(AES/DES)、非对称加密(RSA/ECC)、哈希函数(SHA-2/3)、消息认证码(MAC)、数字签名和密钥交换协议的核心原理,并结合安全芯片的典型应用场景(如安全启动、固件加密、通信保护、证书认证)进行工程化拆解。理解这些基础原语及其在芯片中的实现约束,是后续进行安全评估、漏洞分析和CC认证的前提。

安全芯片密码学原语体系与典型应用链路 对称加密 AES-128/256, DES/3DES • 数据机密性保护 • 密钥长度:128/192/256 • 硬件加速器:AES引擎 • 典型场景:Flash加密、 通信数据加密 密钥:K_enc 非对称加密 RSA-2048/4096, ECC-P256 • 公钥/私钥对 • RSA:大整数分解 • ECC:椭圆曲线离散对数 • 典型场景:密钥交换、 数字签名、证书认证 密钥对:Pub/Priv 哈希与MAC SHA-2/3, HMAC, CMAC • 单向性、抗碰撞 • SHA-256/384/512 • HMAC:密钥+哈希 • 典型场景:完整性校验、 固件认证、消息认证 密钥:K_mac 签名与密钥交换 ECDSA, ECDH, TLS • 数字签名:不可否认 • ECDH:共享密钥协商 • 典型场景:安全通道 建立、固件签名验证 密钥:Session Key 安全芯片 (SE/TPM/HSM) 硬件隔离 · 密钥存储 · 密码加速器 防侧信道 · 防故障注入 · 安全生命周期 数据加密/解密 签名/验签/密钥协商 完整性/认证 安全协议 安全启动 固件哈希校验 签名验证 安全通信 TLS/DTLS 握手 会话密钥协商 密钥管理 密钥生成/存储 密钥更新/销毁 证书认证 X.509 证书链 设备身份认证

3.1 对称加密:AES与DES在安全芯片中的实现与评估要点

3.1.1 核心原理与算法特性

对称加密使用同一把密钥进行加密和解密,其安全性依赖于密钥的保密性。在安全芯片领域,AES(高级加密标准)已成为主流,而DES/3DES因密钥长度不足(56位)和块大小限制(64位),已逐步被淘汰,仅在兼容旧系统时保留。AES采用SPN(替换-置换网络)结构,支持128/192/256位密钥,分组长度为128位。在硬件实现中,AES引擎通常包含S盒替换、行移位、列混合和轮密钥加四个步骤,轮数根据密钥长度分别为10/12/14轮。

安全芯片中的AES实现通常采用硬件加速器方式,而非软件实现,原因在于:硬件实现具有更高的吞吐率(可达Gbps级别)、更低的功耗,且能有效抵抗时序侧信道攻击。在CC EAL评估中,评估人员会重点检查AES引擎是否采用了掩码(Masking)、隐藏(Hiding)或乱序执行等抗侧信道措施。

3.1.2 操作模式与安全等级

安全芯片中AES的操作模式直接影响安全性等级。ECB模式不应使用(相同明文产生相同密文),CBC模式需要随机IV,GCM/CCM模式提供认证加密(AEAD),CTR模式支持并行处理。下表总结了常见模式的安全特性:

操作模式机密性完整性并行性典型应用
ECB弱(模式不安全)无支持不推荐
CBC强(需随机IV)无(需配合MAC)解密可并行固件存储加密
GCM强强(AEAD)支持安全通信、TLS
CCM强强(AEAD)受限IEEE 802.15.4
CTR强无(需配合MAC)完全并行高速数据流

3.1.3 案例拆解:安全芯片Flash固件加密

某IoT安全芯片需要对其外部Flash中存储的固件进行加密保护,防止固件被提取和逆向。设计约束:芯片主频200MHz,Flash读取速度50MB/s,要求加密延迟不超过10ms。初始方案采用CBC模式,但发现每次启动需要读取整个固件(2MB)进行解密,耗时约40ms,超出要求。分析后改用CTR模式,利用其可并行特性,将解密操作与Flash读取流水线化,最终延迟降至8ms。同时,为每个固件版本生成随机IV,并存储在芯片内部OTP区域,防止重放攻击。该案例说明,在安全芯片设计中,密码算法模式的选择需要结合系统级性能约束,而非仅考虑密码学强度。

常见误区:部分设计者认为只要使用AES就安全,忽略了模式选择、IV管理和密钥更新策略。在CC评估中,AES-ECB模式的使用会被直接判定为高风险项。此外,硬件AES引擎的密钥寄存器必须在调试接口(如JTAG)访问时被清零,否则可能通过调试端口泄露密钥。

3.2 非对称加密:RSA与ECC的工程选型与安全评估

3.2.1 核心原理与安全强度对比

非对称加密使用公钥/私钥对,公钥可公开,私钥必须安全存储。RSA基于大整数分解难题,密钥长度通常为2048/3072/4096位;ECC基于椭圆曲线离散对数难题,在相同安全强度下密钥长度更短(P-256约等于RSA-3072)。在安全芯片中,ECC因其计算量小、密钥短、功耗低等优势,正逐步取代RSA成为主流选择,尤其在资源受限的IoT设备中。

安全芯片中的私钥存储是核心安全边界。私钥必须存储在芯片内部的非易失性安全存储区(如OTP或专用Flash区域),且受硬件访问控制策略保护,任何软件接口都无法直接读取私钥明文。CC EAL评估中,会验证私钥是否可通过侧信道(如功耗分析、电磁辐射)被提取。

3.2.2 判断方法:RSA与ECC的选型决策

  • 安全强度需求:若需兼容现有PKI体系(如X.509证书),RSA仍被广泛支持;若为新建系统,优先选择ECC。
  • 性能约束:ECC签名速度比RSA快2-3倍,密钥生成速度快10倍以上;但RSA验签速度较快。
  • 芯片资源:ECC需要更少的存储空间(密钥、中间结果),适合低内存安全芯片。
  • 抗量子安全:两者均受量子计算威胁,需关注NIST PQC标准进展。

3.2.3 实战场景:安全芯片中的ECDSA签名验证

在安全启动流程中,BootROM需要验证固件签名。某安全芯片采用ECDSA P-256签名,公钥存储在芯片OTP中。验证流程:BootROM读取固件头部签名值(64字节),计算固件哈希(SHA-256),然后调用硬件ECC引擎执行签名验证。关键参数:签名值r和s各32字节,公钥为64字节(未压缩格式)。硬件实现中,ECC引擎需要支持模逆运算和标量乘法,这些操作容易受到时序侧信道攻击。因此,评估人员会检查ECC引擎是否采用固定时间执行(Constant-Time)算法,以及是否对中间值进行随机化处理。

评估要点:在CC EAL4+及以上认证中,非对称密钥的生成过程必须在芯片内部完成,且随机数发生器(TRNG)必须通过AIS-31或NIST SP 800-90B测试。若密钥在外部生成后导入芯片,则导入过程必须使用安全通道(如TLS或专用协议)保护。

3.3 哈希函数与消息认证码:完整性保护与认证机制

3.3.1 哈希函数核心原理

哈希函数将任意长度消息压缩为固定长度摘要,具有单向性、抗碰撞性和雪崩效应。SHA-2系列(SHA-256/384/512)是目前最广泛使用的哈希算法,SHA-3(Keccak)作为NIST标准,采用海绵结构,提供不同的设计冗余。在安全芯片中,哈希引擎通常与DMA控制器集成,支持对Flash、SRAM或外部存储器的直接哈希计算,用于启动时的完整性度量。

3.3.2 消息认证码(MAC)与哈希的区别

MAC在哈希基础上引入共享密钥,提供消息认证功能,防止消息被篡改且能验证发送方身份。HMAC(基于哈希的MAC)和CMAC(基于分组密码的MAC)是两种主要实现方式。HMAC构造为:HMAC(K,m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)),其中K'为密钥填充后的值。在安全芯片中,MAC计算通常用于安全通信协议(如TLS记录层)和固件认证。

特性哈希函数消息认证码
密钥无需要共享密钥
安全性抗碰撞抗伪造+抗碰撞
输出摘要(如32字节)MAC值(如32字节)
应用完整性校验完整性+真实性认证
典型算法SHA-256, SHA-3HMAC-SHA256, CMAC-AES

3.3.3 案例拆解:安全启动中的哈希链验证

某车规级安全芯片采用多级安全启动机制。BootROM(一级)验证Bootloader(二级)的签名,Bootloader再验证应用固件(三级)的签名。每级验证均需计算哈希值并与存储的参考值比对。关键设计:参考哈希值存储在芯片OTP中,且每级验证的哈希计算使用不同的上下文(Context),防止哈希长度扩展攻击。实际测试中,发现SHA-256引擎在计算大文件(4MB)时,DMA传输与哈希计算存在竞争,导致性能下降30%。优化方案:采用双缓冲DMA,将数据读取和哈希计算流水线化,最终性能提升至理论值的95%。

经验提醒:在CC评估中,哈希函数的实现必须验证其是否符合FIPS 180-4或FIPS 202标准。评估人员会使用已知测试向量(如NIST CAVP测试用例)验证硬件哈希引擎的输出正确性。此外,哈希引擎的功耗曲线应无明显特征,否则可能泄露消息长度信息。

3.4 数字签名与密钥交换协议:安全芯片的信任根

3.4.1 数字签名原理与芯片应用

数字签名提供不可否认性和完整性保护。签名过程:发送方使用私钥对消息哈希进行签名,接收方使用公钥验证签名。在安全芯片中,数字签名主要用于:固件签名(防止恶意固件)、设备认证(证明芯片身份)、安全通信(TLS握手)。ECC签名(ECDSA)和EdDSA(Ed25519)是当前主流选择。安全芯片的签名私钥必须存储在芯片内部,且签名操作在硬件安全边界内完成,软件只能调用签名接口,无法获取私钥。

3.4.2 密钥交换协议:ECDH与TLS握手

密钥交换协议允许通信双方在不安全的信道上协商出共享密钥。ECDH(椭圆曲线Diffie-Hellman)是当前最常用的密钥交换算法。在安全芯片场景中,ECDH通常与数字签名结合,形成经过认证的密钥交换(如TLS 1.3中的ECDHE_ECDSA)。安全芯片作为TLS客户端或服务器时,其私钥用于签名握手消息,公钥用于验证对端身份,ECDH参数用于生成会话密钥。

3.4.3 实战场景:安全芯片与主机之间的安全通道建立

某安全芯片需要与外部MCU建立安全通信通道。协议流程:① 芯片生成临时ECDH密钥对;② 芯片使用其长期签名私钥对临时公钥进行签名;③ 芯片将临时公钥和签名发送给MCU;④ MCU验证签名,生成自己的临时ECDH密钥对,计算共享密钥;⑤ 双方使用共享密钥派生会话密钥(通过HKDF)。该流程中,芯片的TRNG质量至关重要,若随机数可预测,则ECDH密钥可被恢复。评估中,需验证TRNG的熵源质量、去偏处理和后处理算法。

风险提示:密钥交换协议中常见的实现漏洞包括:未验证对端公钥是否在合法曲线上(无效曲线攻击)、未使用恒定时间比较函数验证签名、会话密钥未及时更新等。在CC EAL评估中,这些漏洞会被作为攻击向量进行测试。建议设计者参考NIST SP 800-56A和RFC 7748的推荐实现。

3.5 密码学原语在安全芯片中的综合应用与评估总结

安全芯片的密码学设计不是简单堆砌算法,而是需要构建一个完整的信任链体系。以安全启动为例:芯片BootROM使用内置公钥验证Bootloader签名(ECDSA),Bootloader使用AES-GCM解密应用固件,同时使用HMAC验证固件完整性,整个过程中哈希引擎(SHA-256)贯穿始终。在CC EAL评估中,评估人员会从以下维度进行综合审查:

  • 算法正确性:是否符合FIPS/NIST标准,是否通过已知测试向量验证。
  • 密钥管理:密钥生成、存储、更新、销毁的全生命周期管理。
  • 侧信道防护:功耗、电磁、时序、缓存等侧信道攻击的防护措施。
  • 故障注入防护:电压/时钟毛刺、激光注入等物理攻击的抵抗能力。
  • 协议安全:密钥交换、签名验证等协议流程是否完整、无逻辑漏洞。