密码学基础:对称加密与非对称加密、哈希函数、数字签名、密钥管理基础

各位同学,咱们今天聊点硬核的——密码学基础。别一听“密码学”就觉得是数学家的事,其实它就是我们遥测链路安全的基石。你想想看,遥测数据在天上飞、在地上跑,要是被人截获了,那后果……嗯,我当年刚入行时,就亲眼见过一个项目因为加密没做好,数据被中间人篡改,差点导致整个系统误判。从那以后,我对密码学就再也不敢马虎了。

这一节,我会把对称加密、非对称加密、哈希函数、数字签名和密钥管理这几个核心概念,掰开了揉碎了讲给你听。咱们不搞虚的,全是实战经验。

1. 对称加密:一把钥匙开一把锁

对称加密,说白了就是加密和解密用同一个密钥。就像你家的门锁,用同一把钥匙既能锁门也能开门。速度快,效率高,适合加密大量数据。

常见的对称加密算法有:

  • AES(高级加密标准):目前最主流,我个人习惯用AES-256,安全强度足够。
  • DES(数据加密标准):太老了,密钥只有56位,现在基本被淘汰了。
  • 3DES:DES的加强版,但效率低,也不推荐了。

核心要点:对称加密的痛点是密钥分发。你想想,如果通信双方相隔千里,怎么安全地把这把“钥匙”交给对方?这就是后面要讲的非对称加密要解决的问题。

我的经验:在遥测系统中,我通常用对称加密来加密实际的遥测数据包。因为数据量大,对称加密速度快,延迟低。但密钥交换,我会用非对称加密来完成。

2. 非对称加密:公钥和私钥的默契

非对称加密,它有两把钥匙:一把公钥,一把私钥。公钥可以公开给任何人,私钥只有自己知道。公钥加密的数据,只能用私钥解密;反过来,私钥加密的数据,只能用公钥解密。

这解决了对称加密的密钥分发难题。你想想,我直接把公钥发给你,你用公钥加密数据发给我,我用私钥解密。就算公钥被截获了,别人也解不开数据,因为他没有私钥。

常见的非对称加密算法:

  • RSA:最经典,但密钥越长,加解密越慢。我建议至少用2048位。
  • ECC(椭圆曲线加密):比RSA更高效,密钥更短,安全性更高。现在很多新系统都在用。

注意:非对称加密虽然安全,但速度慢。所以实际应用中,我们通常用非对称加密来加密一个“会话密钥”,然后用这个会话密钥进行对称加密。这就是“混合加密”的思路。我在项目中就是这么干的,既保证了安全,又兼顾了性能。

3. 哈希函数:数据的“指纹”

哈希函数,它能把任意长度的数据,变成一串固定长度的“摘要”。这串摘要就像数据的指纹,独一无二。而且,哈希函数是单向的,你无法从摘要反推出原始数据。

哈希函数的主要用途:

  • 数据完整性校验:发送方计算数据的哈希值,接收方收到数据后重新计算,对比一下就知道数据有没有被篡改。
  • 密码存储:系统不存你的明文密码,只存密码的哈希值。这样就算数据库泄露,黑客也拿不到你的密码。

常见的哈希算法:

  • MD5:曾经很流行,但现在已经被证明不安全了,容易碰撞。千万别用了。
  • SHA-256:目前最推荐,安全强度高。我在遥测系统中,就用SHA-256来校验数据包的完整性。

避坑指南:我曾经遇到过一个问题,用MD5做文件校验,结果两个不同的文件竟然生成了相同的MD5值。这就是“哈希碰撞”。从那以后,我再也不用MD5了,全部换成SHA-256。

4. 数字签名:防抵赖的“电子印章”

数字签名,它结合了非对称加密和哈希函数。它的作用是:证明数据是谁发的,以及数据没有被篡改。说白了,就是防抵赖。

签名过程:

  1. 发送方对数据计算哈希值。
  2. 用发送方的私钥对这个哈希值进行加密,得到“数字签名”。
  3. 发送方把数据和数字签名一起发给接收方。

验证过程:

  1. 接收方用发送方的公钥解密数字签名,得到哈希值A。
  2. 接收方对收到的数据计算哈希值B。
  3. 对比A和B,如果一致,说明数据是发送方发的,且没有被篡改。

我的习惯:在遥测链路中,我不仅对数据包做加密,还会对关键指令做数字签名。这样就算有人伪造了指令,接收方也能通过签名验证发现异常。嗯,安全无小事。

5. 密钥管理基础:安全的核心

密钥管理,是整个密码体系的“心脏”。密钥丢了,加密再强也没用。我见过太多项目,算法选得挺好,结果密钥管理一塌糊涂,最后功亏一篑。

密钥管理的关键点:

  • 密钥生成:必须用真随机数生成器,不能用伪随机数。我曾经见过有人用时间戳当密钥,结果被秒破。
  • 密钥存储:私钥必须安全存储,比如硬件安全模块(HSM)或安全飞地。绝对不能明文写在配置文件里。
  • 密钥分发:用非对称加密来分发对称密钥,或者用密钥协商协议(如Diffie-Hellman)。
  • 密钥轮换:密钥不能一直用,要定期更换。我建议每3-6个月轮换一次。
  • 密钥销毁:密钥不用了,要彻底销毁,不能只是删除文件。要覆盖写,或者物理销毁。

警告:密钥管理是系统工程,不是写几行代码就完事的。我曾经接手过一个项目,密钥硬编码在代码里,结果代码泄露,整个系统都得重建。血的教训啊。

知识体系结构图

下面这张图,帮你理清本章的知识脉络。我特意用SVG画的,你可以直接看。

密码学基础核心知识体系 密码学基础 对称加密 AES / DES / 3DES 速度快,密钥分发难 非对称加密 RSA / ECC 公钥私钥,速度慢 哈希函数 MD5 / SHA-256 数据指纹,单向性 数字签名 防抵赖,防篡改 私钥签名,公钥验证 密钥管理 生成 / 存储 / 分发 轮换 / 销毁 混合加密 非对称加密交换密钥 对称加密传输数据 核心目标:机密性 + 完整性 + 可用性 + 不可否认性 —— 遥测链路安全的四大基石

好了,这一节的内容就到这里。密码学是门实践性很强的学问,光看理论是不够的。我建议你找个开源库(比如OpenSSL),亲手写几个加解密的小程序,感受一下。嗯,动手才是最好的学习方式。


专注资料整理