第2章:密码学基础:对称加密与非对称加密的概念、哈希函数的作用、数字签名与证书、密钥管理基础

各位同学,咱们今天聊点硬核的——密码学。别一听这词就头大,觉得是数学家干的事。其实在DTU通信里,密码学就像咱们每天用的锁和钥匙,只不过换成了0101的比特流。我做了这么多年工业通信,见过太多因为密码学基础不牢,导致数据被篡改、设备被冒充的惨案。今天咱们就把这几个核心概念掰开揉碎了讲清楚。

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

对称加密,说白了就是加密和解密用同一个密钥。就像你家里的大门钥匙,你用它锁门,也用它开门。最经典的算法有AES、DES、SM4(国密标准)。

它的工作流程是这样的:

  1. 发送方用密钥K把明文加密成密文
  2. 密文通过不安全的信道传输
  3. 接收方用同一个密钥K解密密文,还原明文

核心特点:速度快,适合大量数据加密。但密钥分发是个大麻烦。

我在一个水厂项目里遇到过这么个事。他们用DTU采集水位数据,加密用的是DES。本来好好的,结果有一次运维人员把密钥写在了PLC的注释里,还上传到了公开的代码仓库。你想想看,这跟把家门钥匙贴在门框上有什么区别?后来我给他们换成了AES-256,并且强制要求密钥必须通过硬件安全模块存储。

我的建议:工业现场首选AES-256或SM4。别再用DES了,那玩意儿现在用普通电脑几分钟就能暴力破解。

2.2 非对称加密:公钥私钥两把锁

非对称加密就高级多了。它有一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。用公钥加密的数据,只有对应的私钥能解密;反过来,用私钥加密的数据,只有对应的公钥能解密。

常见的算法:RSA、ECC(椭圆曲线)、SM2(国密)。

举个例子:你给供应商发采购订单,用你的私钥加密(签名),供应商用你的公钥解密验证。这样供应商就知道,这订单确实是你发的,没人冒充。

注意:非对称加密速度慢,比对称加密慢几百到几千倍。所以实际应用中,我们通常用非对称加密来传输对称密钥,然后用对称加密来加密实际数据。这叫“混合加密”。

我记得有一次调试一个风电场的远程监控系统,DTU上报数据时用了纯RSA加密。结果数据量一大,CPU直接跑满,通信延迟飙到十几秒。后来改成用RSA交换AES密钥,再用AES加密数据,问题就解决了。嗯,这里要注意,算法选型一定要考虑现场设备的算力。

2.3 哈希函数:数据的指纹

哈希函数,你可以把它想象成给数据按个指纹。不管输入多长,输出都是固定长度(比如SHA-256输出256位)。而且只要输入变一点点,输出就面目全非。

哈希函数的特点:

  • 单向性:从哈希值无法反推出原始数据
  • 抗碰撞性:很难找到两个不同的输入,产生相同的哈希值
  • 雪崩效应:输入改一个比特,输出一半以上的比特都会变

在DTU通信中,哈希函数主要干三件事:

  1. 数据完整性校验:发送方计算数据的哈希值,接收方重新计算并对比。如果不一样,说明数据被篡改了。
  2. 密码存储:绝不存明文密码,只存密码的哈希值。这样数据库泄露了,攻击者也拿不到原始密码。
  3. 数字签名的基础:先对数据哈希,再对哈希值签名,效率高很多。

常用算法:SHA-256、SHA-3、SM3(国密)。MD5和SHA-1已经不安全了,别用了。

我曾经帮一个化工厂做安全审计,发现他们的DTU固件升级包只做了CRC校验。CRC是什么?循环冗余校验,它只能检测随机错误,防不了恶意篡改。攻击者完全可以替换固件包,同时重新计算CRC。后来我给他们加上了SHA-256哈希校验和数字签名,才算是把这道门关上了。

2.4 数字签名与证书:你是谁?你说了算吗?

数字签名,说白了就是用私钥对数据的哈希值进行加密。接收方用公钥解密,如果能解密成功,就证明数据确实来自私钥持有者,而且没有被篡改。

数字签名的流程:

  1. 发送方计算数据的哈希值H
  2. 用私钥对H加密,得到签名S
  3. 发送数据和签名S给接收方
  4. 接收方用公钥解密S,得到H1
  5. 接收方自己计算数据的哈希值H2
  6. 如果H1 == H2,验证通过

那数字证书又是什么?证书就是公钥的“身份证”。由权威机构(CA,证书颁发机构)签发,里面包含了公钥、持有者信息、有效期、CA的签名等。你拿到一个证书,用CA的公钥验证一下签名,就知道这个公钥确实是属于证书上写的那个人的。

避坑指南:我曾经见过一个工厂,自己搭了个CA服务器,给所有DTU设备签发证书。结果CA服务器的私钥密码设成了“123456”。你想想看,这跟没锁门有什么区别?CA私钥是信任的根,必须用硬件安全模块(HSM)保护,或者至少用强密码+物理隔离。

2.5 密钥管理基础:钥匙丢了怎么办?

密钥管理,是整个密码体系的命门。算法再强,密钥泄露了,一切归零。我把它总结为四个核心问题:

问题 解决方案 我的经验
密钥怎么生成? 使用硬件随机数发生器,别用软件伪随机 某次用rand()函数生成密钥,结果每次重启都一样
密钥怎么存储? 硬件安全模块(HSM)、安全元件(SE)、TEE 工业DTU建议用SE芯片,成本不高但安全提升明显
密钥怎么分发? 用非对称加密传输对称密钥,或预置密钥 预置密钥要定期更换,别一用就是十年
密钥怎么销毁? 覆写多次,物理销毁存储介质 别只删文件,要覆写整个存储区域

重要提醒:密钥生命周期管理一定要有制度。谁可以访问密钥?什么时候更换?更换后旧密钥怎么处理?这些都要写进操作规程。我见过太多技术到位、管理拉胯的案例了。

最后说一句,密码学不是银弹。它解决的是“通信安全”的问题,但解决不了“终端安全”的问题。如果DTU设备本身被物理入侵了,密钥被直接读走了,那再强的加密也没用。所以,密码学要和物理安全、访问控制、安全审计配合使用,才能构建真正的纵深防御体系。

好,这一章就到这里。下一章咱们聊聊DTU通信中常见的攻击手法,以及怎么用密码学手段来防御。到时候我会拿几个真实案例出来,保证让你听得过瘾。