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

各位同学,咱们今天聊点硬核的——加密基础。说实话,我在物联网安全这行摸爬滚打这么多年,见过太多因为加密没做好而翻车的案例。你想想看,一个智能灯泡被黑客控制,听起来好像没啥大不了?但要是这个灯泡成了入侵你家网络的跳板呢?嗯,这就是为什么加密不是可选项,而是必选项。

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

对称加密,说白了就是加密和解密用同一把钥匙。就像你家的门锁,用这把钥匙锁上,还得用这把钥匙打开。我刚开始做物联网项目时,觉得这玩意儿太简单了,结果踩了个大坑——钥匙怎么安全地交给对方?

常见的对称加密算法有这些:

算法 密钥长度 特点
AES 128/192/256位 目前最主流,硬件加速支持好
DES 56位 太老了,别用了,我见过有人还在用这个
SM4 128位 国标算法,国内项目必备

核心要点:对称加密速度快,适合大量数据加密。但密钥分发是个老大难问题。

我在一个智能门锁项目里遇到过这种情况:设备端和手机App需要共享一个密钥。直接通过网络传输?那等于把钥匙放在门口垫子下面。后来我们用了预置密钥的方式,出厂时就把密钥烧录进芯片。嗯,这招虽然土,但管用。

非对称加密:公钥私钥两兄弟

非对称加密就聪明多了。它有一对钥匙:公钥和私钥。公钥可以公开,私钥自己藏着。别人用你的公钥加密数据,只有你能用私钥解密。这解决了对称加密的密钥分发难题。

常见的非对称加密算法:

  • RSA:老牌算法,2048位以上才安全。我记得有一次审计,发现项目用了1024位的RSA,当场被要求整改。
  • ECC:椭圆曲线加密,同样安全级别下密钥更短。对物联网设备来说,这简直是福音——省存储、省算力。
  • SM2:国密算法,基于ECC,国内政府项目基本都要求用这个。

我的建议:物联网设备资源有限,优先考虑ECC。RSA虽然成熟,但密钥太长,对MCU来说负担不小。

你可能会问:那非对称加密是不是完美无缺?当然不是。它的计算速度比对称加密慢好几个数量级。所以实际项目中,我们通常混合使用:用非对称加密传输对称密钥,然后用对称加密处理实际数据。这叫「混合加密体系」,我在多个项目里都是这么干的。

哈希函数:数据的指纹

哈希函数,你可以把它想象成给数据按个手印。不管输入多大,输出都是固定长度。而且有个重要特性:不可逆。也就是说,从哈希值反推原始数据,理论上是不可能的。

常用的哈希算法:

  • SHA-256:目前最常用,输出256位。我建议所有新项目都用这个。
  • MD5:128位输出,已经被攻破了。别用了,真的。
  • SM3:国密哈希算法,输出256位,国内项目首选。

避坑指南:我曾经在一个固件升级项目里,直接用MD5做完整性校验。结果发现攻击者可以伪造固件而不改变MD5值。从那以后,我再也不敢用MD5做安全相关的校验了。

哈希函数在物联网里用得最多的场景是:密码存储、数据完整性校验、固件签名验证。举个例子,智能门锁的固件升级包,我们会先计算哈希值,然后签名。设备收到后,先验证签名,再比对哈希值。这样就能确保固件没被篡改过。

数字签名:谁说我不是我

数字签名解决的是「你是谁」和「数据有没有被改过」这两个问题。它的工作流程是这样的:

  1. 发送方用哈希函数计算数据的摘要
  2. 用私钥对摘要进行加密,这就是签名
  3. 接收方用公钥解密签名,得到摘要
  4. 接收方自己计算数据的摘要,比对两者是否一致

如果一致,说明数据确实是发送方发的,而且没被改过。这就是数字签名的核心价值:认证+完整性。

实际案例:我在做智能电表项目时,每个电表上报的数据都必须带数字签名。否则,黑客可以伪造用电数据,少交电费。你想想看,这损失谁来担?

数字签名和加密的区别,我经常用一句话解释:加密是为了不让别人看,签名是为了证明是你写的。这两个概念容易混淆,但本质完全不同。

密钥管理基础:最容易被忽视的环节

说实话,我在项目里见过太多人把精力花在算法选择上,却忽略了密钥管理。结果呢?算法再强,密钥泄露了,一切白搭。

密钥管理包括几个关键环节:

  • 密钥生成:要用真随机数生成器。伪随机数?我曾经见过一个项目,每次生成的密钥都一样,因为随机数种子没初始化好。
  • 密钥存储:不能明文存。最好用硬件安全模块(HSM)或者安全元件(SE)。至少也要加密存储。
  • 密钥分发:物联网设备成千上万,怎么安全地把密钥发下去?预置、在线协商、证书体系,各有优劣。
  • 密钥更新:密钥不能一成不变。定期更换,或者有安全事件时立即更换。
  • 密钥销毁:设备报废时,密钥必须彻底清除。不然别人捡到设备就能提取密钥。
环节 常见问题 我的建议
生成 用伪随机数 用硬件真随机数发生器
存储 明文存储 用安全芯片或加密存储
分发 网络明文传输 用非对称加密保护传输
更新 从不更新 设定有效期,到期强制更新
销毁 直接丢弃设备 覆写多次或物理销毁

血的教训:我曾经负责一个智能家居项目,密钥直接硬编码在代码里。结果有人反编译了App,拿到了所有设备的密钥。一夜之间,几千个设备被远程控制。从那以后,我再也不敢把密钥写死在代码里了。

好了,加密基础就聊到这儿。对称加密、非对称加密、哈希函数、数字签名、密钥管理,这五个概念是物联网安全的基石。你想想看,没有这些基础,后面那些安全协议、身份认证、数据保护,全都无从谈起。

下一章,咱们聊聊具体的加密协议,比如TLS在物联网里怎么用。到时候我会分享一个实际项目中踩过的坑——嗯,那个坑可不小。