2、网络安全基础:加密算法(对称/非对称)、哈希函数、数字签名、PKI体系
各位工程师,咱们今天聊聊车载网络安全的地基——加密算法、哈希函数、数字签名和PKI体系。说实话,这些概念听起来有点枯燥,但它们是MACsec和IPsec的“心脏”。没有它们,安全协议就是空壳子。
我刚开始接触车载网络时,也犯过迷糊。有一次,我在调试一个V2X通信模块,发现数据明明加密了,但接收方就是解不出来。折腾了半天,才发现是密钥协商时用了错误的算法套件。嗯,从那以后,我对这些基础算法就格外上心。
2.1 对称加密算法:又快又稳的老黄牛
对称加密,说白了就是加密和解密用同一把钥匙。你想想看,就像你用一把锁锁门,也用同一把钥匙开门。在车载网络中,这种算法特别适合处理大量数据,比如CAN FD或车载以太网上的实时数据流。
常见的对称加密算法:
- AES(高级加密标准):目前最主流的选择。我个人习惯用AES-128或AES-256。在车载ECU上,AES-128已经足够安全,而且性能开销小。
- SM4:国密标准,国内项目必须考虑。我在一个国产芯片项目中用过,硬件加速后速度跟AES差不多。
- 3DES:老古董了,别用了。我见过一些遗留代码还在用,性能差,安全性也跟不上。
关键点:对称加密的瓶颈在于密钥分发。你想想,如果每辆车和云端共享同一个密钥,那密钥怎么安全地传给新车?这就是后面要讲的PKI体系要解决的问题。
2.2 非对称加密算法:公钥私钥,分工明确
非对称加密,就是加密和解密用不同的钥匙。一把公钥公开,一把私钥自己藏着。这解决了密钥分发的难题。
常见的非对称加密算法:
- RSA:经典但慢。我建议只在密钥交换或数字签名时用,别用来加密大量数据。
- ECC(椭圆曲线加密):车载领域的宠儿。同样的安全强度,ECC的密钥长度比RSA短得多。比如,256位的ECC相当于3072位的RSA。这对资源受限的ECU来说,简直是福音。
- SM2:国密椭圆曲线算法。我在一个T-Box项目中用过,配合硬件安全模块(HSM),性能完全够用。
避坑指南:我曾经在一个项目中,为了省事,直接用RSA加密了整条诊断报文。结果ECU解密花了200多毫秒,直接导致超时。记住,非对称加密只适合加密小数据(比如对称密钥),别贪心。
2.3 哈希函数:数据的“指纹”
哈希函数,就是把任意长度的数据,压缩成固定长度的“摘要”。它有个特点:不可逆。你没法从摘要反推出原始数据。在车载网络中,哈希函数常用于校验数据完整性。
常见的哈希算法:
- SHA-256:目前最稳妥的选择。MACsec和IPsec里都用它。
- SM3:国密哈希算法。输出256位,跟SHA-256对标。
- MD5:别碰。我见过一些老旧的OTA升级包还在用MD5做校验,这很容易被碰撞攻击。
为什么会这样?因为哈希函数有个特性叫“雪崩效应”——输入改一个比特,输出就面目全非。所以,哪怕攻击者篡改了一个字节,接收方一算哈希值,立马就能发现。
2.4 数字签名:谁签的?谁说的?
数字签名,就是非对称加密的“反向操作”。发送方用私钥签名,接收方用公钥验证。它解决了两个问题:身份认证和不可否认性。
签名流程:
- 发送方对数据计算哈希值。
- 用私钥加密这个哈希值,生成签名。
- 把数据和签名一起发出去。
- 接收方用公钥解密签名,得到哈希值A。
- 接收方自己计算数据的哈希值B。
- 如果A等于B,说明数据没被改,而且确实是发送方签的。
实际案例:我在做OTA升级时,每个固件包都带一个数字签名。ECU在刷写前,先验证签名。如果签名不对,直接拒绝升级。这能防止恶意固件被刷进车里。
2.5 PKI体系:信任的“根”
PKI(公钥基础设施),说白了就是一套管理公钥的体系。你想想,如果攻击者伪造了一个公钥,那数字签名就形同虚设。PKI通过证书链来解决信任问题。
PKI的核心组件:
- CA(证书颁发机构):信任的起点。CA给自己签一个根证书,然后给下级CA或终端实体签证书。
- 证书:包含公钥、身份信息、有效期、CA签名等。X.509是最常见的格式。
- CRL(证书吊销列表):记录被吊销的证书。我建议车载系统定期下载CRL,防止使用已泄露的证书。
车载PKI的特殊性:
| 场景 | 说明 |
|---|---|
| V2X通信 | 车辆之间或车与路侧设备通信,证书有效期很短(比如5分钟),防止重放攻击。 |
| OTA升级 | 云端用私钥签名固件,车辆用预置的公钥验证。公钥通常烧死在HSM里,拔都拔不出来。 |
| 诊断访问 | 诊断仪需要出示证书,ECU验证通过后才允许执行安全操作。 |
注意:我曾经遇到一个坑——证书过期。一辆车在产线上刷了证书,但出厂后两年没联网,证书过期了。结果OTA升级时,签名验证失败,车机变砖。所以,证书有效期要设计得足够长,或者支持离线更新。
2.6 小结:这些基础怎么用?
好了,咱们捋一捋。在MACsec和IPsec里,这些算法是怎么配合的?
- 对称加密(AES):加密实际传输的数据,速度快。
- 非对称加密(ECC)
- 哈希函数(SHA-256):计算消息认证码(MAC),确保数据没被篡改。
- 数字签名:在IPsec的IKEv2握手阶段,用证书签名来验证对方身份。
- PKI:管理所有参与者的证书,建立信任链。
我个人习惯,在设计车载安全方案时,先画一张“算法选型表”。比如:
- 加密:AES-128-GCM(带认证的加密模式,省一个哈希步骤)
- 密钥交换:ECDHE(椭圆曲线迪菲-赫尔曼)
- 签名:ECDSA(椭圆曲线数字签名算法)
- 哈希:SHA-256
记住,没有银弹。每种算法都有适用场景。你想想看,如果一辆车的ECU只有几百KB的RAM,你硬塞一个RSA-4096进去,它跑得动吗?所以,选型时要考虑硬件能力、实时性要求和安全等级。
下一章,咱们就进入MACsec的具体实现。到时候你会发现,这些基础算法就像乐高积木,拼在一起就能搭出坚固的安全城堡。