《安全启动验证方法实操课程》
第2章 密码学基础(一)
2. 密码学基础(一):对称加密与非对称加密、哈希函数(SHA-256)的原理与作用
🔐 第一节:对称加密 —— 一把钥匙开一把锁
对称加密 是密码学中最直观的加密方式:加密和解密使用同一把密钥。就像你用一把钥匙锁上日记本,再用同一把钥匙打开它。
✅ 优点
- 加解密速度极快(硬件加速可达 GB/s 级别)
- 适合大量数据加密(如磁盘、文件、通信流)
- 算法成熟(AES、SM4、ChaCha20)
⚠️ 缺点
- 密钥分发困难 —— 如何安全地把密钥交给对方?
- 密钥管理复杂 —— n 个人通信需要 n(n-1)/2 个密钥
- 无法提供数字签名 / 抗抵赖性
▲ 对称加密流程:加密和解密使用完全相同的密钥
🔑 第二节:非对称加密 —— 公钥与私钥的默契
非对称加密 使用一对密钥:公钥 (Public Key) 公开分发,私钥 (Private Key) 秘密保存。公钥加密的数据只能用私钥解密;私钥签名的数据只能用公钥验证。
▲ 非对称加密:公钥加密,私钥解密,密钥对天生一对
🧮 第三节:哈希函数(SHA-256)—— 数据的数字指纹
哈希函数 将任意长度的数据映射为固定长度的摘要(Digest)。SHA-256 输出 256 位(32 字节)的哈希值,具有以下核心性质:
- 单向性:从哈希值无法反推出原始数据
- 抗碰撞性:极难找到两个不同输入产生相同哈希值
- 雪崩效应:输入改变 1 比特,输出约 50% 的比特发生变化
- 固定长度:无论输入是 1 字节还是 1GB,输出始终 32 字节
🔍 在安全启动中的应用
固件镜像的 SHA-256 哈希值被签名并存储在安全区域。启动时,BootROM 重新计算镜像哈希,与签名中的哈希比对。若不一致,说明镜像被篡改,立即拒绝启动。
▲ SHA-256 哈希函数:任意输入 → 固定 256 位输出,雪崩效应保证安全性
⚙️ 第四节:三者在安全启动中的协同工作
在嵌入式安全启动中,三种密码学原语各司其职,形成完整的信任链:
- 哈希函数 (SHA-256):计算固件镜像的摘要,作为“数字指纹”
- 非对称加密 (RSA/ECC):用私钥对哈希值签名,公钥验证签名真实性
- 对称加密 (AES):可选地对固件镜像进行加密存储,防止静态分析
▲ 安全启动信任链:哈希 → 签名 → 验证 → 启动决策
💻 实操代码片段:使用 OpenSSL 计算 SHA-256
以下命令演示如何在嵌入式开发环境中计算固件文件的 SHA-256 哈希值:
# 计算固件镜像的 SHA-256 哈希
$ openssl dgst -sha256 firmware.bin
SHA256(firmware.bin)= a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890
# 使用私钥对哈希值签名(PKCS#1 v1.5)
$ openssl dgst -sha256 -sign private_key.pem -out firmware.sig firmware.bin
# 使用公钥验证签名
$ openssl dgst -sha256 -verify public_key.pem -signature firmware.sig firmware.bin
Verified OK
📌 关键理解:安全启动中,BootROM 内置公钥,验证签名通过后才执行固件。哈希函数保证了固件的完整性,非对称签名保证了固件的真实性和抗抵赖性。