2、密钥基础概念:对称加密与非对称加密、密钥长度与安全强度、密钥生命周期

大家好,我是老张。今天咱们聊聊密钥的基础概念。说实话,这部分内容看着有点理论,但你要是真搞懂了,后面做加密狗烧录的时候会少踩很多坑。我当年刚入行时,就因为没搞清对称和非对称的区别,差点把客户的密钥给搞丢了……嗯,咱们慢慢说。

2.1 对称加密与非对称加密

先说说对称加密。说白了,就是加密和解密用同一把钥匙。就像你家里的门锁,用一把钥匙锁门,也用同一把钥匙开门。常见的对称加密算法有 AES、DES、SM4 等。

对称加密的特点:

  • 速度快,适合大量数据加密
  • 密钥管理麻烦,分发是个大问题
  • 安全性完全依赖于密钥的保密性

我在项目中遇到过一件事。有一次给客户做加密狗方案,他们坚持用 DES。我说 DES 的密钥长度只有 56 位,现在用暴力破解,几小时就能搞定。他们不信。后来我给他们演示了一下,用一台普通 PC,跑了不到 3 小时就把密钥解出来了。从那以后,他们再也不敢用 DES 了。

非对称加密呢?它用一对钥匙:公钥和私钥。公钥可以公开,私钥自己藏着。你用公钥加密,只有对应的私钥能解开。反过来,你用私钥签名,别人用公钥验证。常见的算法有 RSA、ECC、SM2。

我的建议:在实际的加密狗方案中,我习惯用非对称加密来做密钥分发和身份认证,用对称加密来加密实际的数据。两者配合使用,既安全又高效。

你想想看,如果只用对称加密,你怎么把密钥安全地传给对方?快递?邮件?都不靠谱。非对称加密就解决了这个问题:你用对方的公钥加密对称密钥,对方用私钥解密,然后双方用这个对称密钥通信。这就是经典的“混合加密”方案。

2.2 密钥长度与安全强度

密钥长度越长,安全强度越高,但计算开销也越大。这里有个平衡点。

算法 密钥长度(位) 安全强度 推荐用途
AES 128 一般数据加密
AES 256 极高 机密数据加密
RSA 2048 数字签名、密钥交换
RSA 4096 极高 高安全场景
ECC 256 极高 移动设备、物联网
SM2 256 极高 国密标准

为什么会这样?因为破解不同算法的难度不一样。比如 RSA 2048 位的安全强度,大约相当于 AES 112 位。而 ECC 256 位的安全强度,相当于 RSA 3072 位。所以 ECC 在同等安全强度下,密钥更短,计算更快。

注意:我曾经见过有人用 512 位的 RSA 密钥做加密狗。我当时就告诉他,这个密钥用现在的算力,几分钟就能破解。他还不信,结果我现场用了一个开源工具,不到 5 分钟就把私钥算出来了。所以,密钥长度千万别省!

我个人习惯,在加密狗方案中,对称加密至少用 AES-256,非对称加密至少用 RSA-2048 或 ECC-256。如果是国密方案,就用 SM4 和 SM2。这个配置,目前来看是安全的。

2.3 密钥生命周期

密钥不是生下来就能一直用下去的。它有完整的生命周期:生成、分发、存储、使用、销毁。每个环节都可能出问题。

2.3.1 密钥生成

密钥生成的关键是随机性。如果随机数生成器不够随机,密钥就可能被预测。我在项目中遇到过,有人用 C 语言的 rand() 函数生成密钥。结果呢?每次程序重启,生成的密钥序列都一样。这跟没加密有什么区别?

正确的做法:

  • 使用硬件随机数生成器(TRNG)
  • 或者使用操作系统提供的安全随机数接口(如 /dev/urandom)
  • 不要用软件伪随机数生成器(PRNG)直接生成密钥

2.3.2 密钥分发

密钥分发是最容易出问题的环节。你想想看,你要把密钥从生成设备传到加密狗里,中间经过了多少环节?网络?USB?文件?每个环节都可能被截获。

我的经验:我建议在加密狗内部生成密钥对,公钥导出,私钥永远不出芯片。这样私钥从出生到死亡,都没离开过安全环境。分发公钥就简单多了,公开出去也没事。

2.3.3 密钥存储

密钥存储要保证机密性和完整性。不能被人读走,也不能被人篡改。

常见的存储方式:

  • 硬件安全模块(HSM):最安全,但贵
  • 安全芯片(如加密狗):次安全,性价比高
  • 文件系统加密存储:方便,但容易被攻击
  • 环境变量或配置文件:最不安全,千万别用

警告:我曾经见过有人把密钥硬编码在代码里。结果代码被反编译,密钥直接暴露。嗯,这个项目后来重做了。记住:密钥永远不要出现在源代码中!

2.3.4 密钥销毁

密钥用完了,或者怀疑被泄露了,就要销毁。销毁不是简单地 delete 文件,因为数据可能还在磁盘上。

正确的销毁方式:

  • 覆盖写入:用随机数据多次覆盖密钥存储区域
  • 物理销毁:对于安全芯片,直接销毁芯片本身
  • 安全擦除:使用专用的安全擦除工具

我建议在加密狗方案中,设计一个“自毁”功能。当检测到物理攻击或多次认证失败时,自动擦除所有密钥。这样即使加密狗被人拿走了,密钥也拿不到。

总结一下:密钥生命周期管理,说白了就是管好密钥的“生老病死”。生成要随机,分发要安全,存储要加密,销毁要彻底。每个环节都不能马虎。我做了这么多年嵌入式安全,见过太多因为密钥管理不当导致的安全事故。希望你们能引以为戒。

好了,这一章就到这里。下一章我们聊聊加密狗的具体硬件架构,看看里面到底是怎么工作的。