密码学基础(上):对称加密与非对称加密、哈希函数(SHA256)、数字签名原理

好,咱们直接进入正题。密码学这东西,听起来高大上,其实说白了就是两件事:藏起来和验真身。做固件签名联调,你绕不开这些基础概念。我当年第一次接触时,也被各种术语搞得头晕,后来发现,抓住核心逻辑,一通百通。

一、对称加密:一把钥匙开一把锁

对称加密,顾名思义,加密和解密用的是同一把密钥。就像你家的门锁,用一把钥匙锁上,再用同一把钥匙打开。

核心流程:

  1. 发送方用密钥K,把明文加密成密文。
  2. 接收方收到密文后,用同样的密钥K解密,还原出明文。

常见算法:

算法密钥长度特点
AES128/192/256位目前最主流,硬件加速支持好
DES56位太老了,别用了,我见过老项目还在用,赶紧劝他们升级
SM4128位国标,国内项目必须考虑
优点:速度快,适合加密大量数据。
缺点:密钥分发困难。你想想看,如果密钥在传输过程中被截获,那加密就形同虚设。
我的经验:在嵌入式设备里,对称加密常用于加密固件包本身。但密钥怎么安全地存到设备里?这是个头疼的问题。我曾经在一个IoT项目里,直接把AES密钥硬编码在代码里,结果被逆向出来……嗯,后来被骂得很惨。

二、非对称加密:公钥私钥,各司其职

非对称加密就聪明多了。它有一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。

核心逻辑:

  • 公钥加密,私钥解密:任何人用你的公钥加密数据,只有你能用私钥解开。用于加密通信。
  • 私钥签名,公钥验签:你用私钥对数据签名,别人用你的公钥验证签名是否是你本人所为。用于身份认证和完整性校验。

常见算法:

算法典型密钥长度用途
RSA2048/4096位最经典,签名和加密都行
ECC(椭圆曲线)256位(相当于RSA 3072位)密钥更短,性能更好,嵌入式首选
SM2256位国密标准,国内项目必备
注意:非对称加密非常慢,比对称加密慢几百到上千倍。所以实际应用中,我们通常用非对称加密来传输对称密钥,然后用对称密钥加密实际数据。这叫混合加密。

三、哈希函数(SHA256):数据的指纹

哈希函数,你可以把它想象成一个榨汁机。不管扔进去什么(一个字节的文件,还是几个G的电影),榨出来的汁(哈希值)长度都是固定的。而且,只要原料有一丁点不同,榨出来的汁就完全不一样。

SHA256 的特点:

  • 固定输出:无论输入多大,输出都是256位(32字节)。
  • 单向性:从哈希值无法反推出原始数据。说白了,就是不可逆。
  • 抗碰撞性:几乎不可能找到两个不同的输入,产生相同的哈希值。

在固件签名中的作用:

我们不会直接对整个固件进行非对称签名,因为固件可能很大,签名会很慢。正确的做法是:

  1. 先对固件计算SHA256哈希值,得到一个32字节的摘要。
  2. 然后对这个摘要进行签名。
为什么这么做?因为哈希值很小,签名速度快。而且只要固件被篡改,哈希值就会变,签名验证就会失败。一举两得。

四、数字签名原理:给固件盖个章

数字签名,说白了就是私钥签名,公钥验签。它解决了三个问题:

  • 完整性:固件有没有被篡改?
  • 真实性:这个固件是不是声称的发布者签发的?
  • 不可否认性:发布者不能事后抵赖说“我没签过”。

签名流程(发布者):

  1. 对固件计算SHA256哈希值,得到摘要H。
  2. 用发布者的私钥对摘要H进行加密(即签名),得到签名值S。
  3. 将固件 + 签名值S + 公钥(可选)打包发布。

验签流程(设备端):

  1. 设备收到固件后,自己计算SHA256哈希值,得到摘要H1。
  2. 用发布者的公钥对签名值S进行解密,得到摘要H2。
  3. 比较H1和H2。如果相等,验签通过;否则,固件被篡改或签名无效。
避坑指南:我曾经在一个项目里,设备端验签时忘了比较哈希值,只检查了签名解密是否成功。结果攻击者随便伪造了一个签名,解密竟然成功了(因为算法特性),但解密出来的内容根本不是哈希值。嗯,那次联调搞了三天才找到问题。记住:一定要比较解密后的哈希值!

五、知识体系结构图

下面这张图,帮你理清今天讲的所有概念之间的关系:

密码学基础(上)知识体系 对称加密 非对称加密 哈希函数 AES / SM4 密钥分发困难 RSA / ECC / SM2 公钥加密 / 私钥签名 SHA256 / SM3 固定长度 / 单向性 数字签名 私钥签名(发布者) 公钥验签(设备端) 完整性 + 真实性

你看,对称加密、非对称加密、哈希函数,这三者最终汇聚到数字签名上。数字签名不是凭空产生的,它是这三者的组合应用。搞懂了这个关系,后面讲固件签名流程时,你就知道每一步在干什么了。

最后提醒一句:密码学算法本身是安全的,但实现和应用才是漏洞的重灾区。比如随机数生成器不够随机、密钥存储不当、签名验证逻辑不完整……这些坑,我几乎都踩过。后面章节我们会逐一拆解。

可可精品资料库