4、网络安全基础:航空通信的安全威胁、加密算法(AES、RSA)、数字证书与身份认证
各位同行,咱们做航空电台远程维护,最怕什么?不是设备坏了,是通信链路被人盯上了。我入行那会儿,有个老前辈跟我说过一句话:「飞机在天上飞,数据在地上跑,中间要是被人截了,后果不堪设想。」这话我一直记着。
今天这一章,咱们就聊聊网络安全的基础。说白了,就是怎么让咱们的远程维护指令,安全地到达设备,不被篡改、不被窃听、不被冒充。
4.1 航空通信面临的安全威胁
先说说威胁。你想想看,一个航空电台,通过4G/5G或者卫星链路连到地面维护中心。这条链路有多长?几百公里甚至上千公里。中间经过多少个节点?基站、核心网、互联网、企业内网……每一个节点,都可能成为攻击点。
我个人习惯把威胁分成三类:
- 窃听(Eavesdropping):攻击者偷偷监听通信内容。比如,你远程下发了一个固件升级包,里面包含了电台的配置参数。被人听去了,就等于把电台的「底牌」暴露了。
- 篡改(Tampering):攻击者截获数据包,修改后再发出去。我曾经在测试中遇到过,有人把升级包的校验码改了,结果电台收到后直接「变砖」。还好那是实验室环境,要是真机,麻烦就大了。
- 冒充(Spoofing):攻击者伪装成合法的维护终端或电台。比如,伪造一个地面站的身份,向电台发送「关机」指令。嗯,这里要注意,航空通信里身份认证是底线,绝对不能省。
4.2 加密算法:AES 与 RSA
加密算法是安全的基础。咱们航空通信里,最常用的就是两种:AES 和 RSA。一个是对称加密,一个是非对称加密。说白了,一个像「一把钥匙开一把锁」,另一个像「一把锁配两把钥匙」。
4.2.1 AES(高级加密标准)
AES 是对称加密算法。加密和解密用同一个密钥。速度快,适合加密大量数据。比如,你远程传输一个几十兆的固件包,用 AES 就很合适。
AES 的密钥长度有 128、192、256 位。我个人建议,航空场景至少用 256 位。为什么?因为 128 位虽然目前够用,但考虑到电台的使用寿命(通常 10-15 年),还是 256 位更稳妥。
下面是一个 AES 加密的伪代码示例,咱们在嵌入式设备上经常这么写:
// AES-256 加密示例(伪代码)
uint8_t key[32] = {0x2b, 0x7e, 0x15, 0x16, ...}; // 256位密钥
uint8_t iv[16] = {0x00, 0x01, 0x02, ...}; // 初始化向量
void aes_encrypt(uint8_t *plaintext, uint8_t *ciphertext, uint32_t len) {
AES_ctx ctx;
AES_init_ctx_iv(&ctx, key, iv);
AES_CBC_encrypt_buffer(&ctx, plaintext, len);
// 加密后的数据在 plaintext 中
}
4.2.2 RSA(非对称加密)
RSA 是非对称加密。有一对密钥:公钥和私钥。公钥可以公开,私钥自己留着。用公钥加密的数据,只能用私钥解密。反过来,用私钥加密的数据,只能用公钥解密。
RSA 的优点是解决了密钥分发问题。你想想看,如果所有电台都用同一个 AES 密钥,一旦一个电台被攻破,整个网络都完蛋。但用 RSA,每个电台有自己的密钥对,安全多了。
不过 RSA 有个缺点:慢。所以实际中,我们通常用 RSA 来加密 AES 的密钥,然后用 AES 加密数据。这叫「混合加密」。我在项目中就是这么做的:
- 地面站生成一个随机的 AES 密钥(会话密钥)。
- 用电台的 RSA 公钥加密这个 AES 密钥。
- 电台收到后,用自己的 RSA 私钥解密,得到 AES 密钥。
- 后续通信全部用 AES 加密。
这样既解决了密钥分发问题,又保证了加密速度。
4.3 数字证书与身份认证
加密解决了「别人看不懂」的问题,但没解决「你是谁」的问题。你想想看,如果有人冒充地面站,给电台发了一个假的公钥,那后续的加密就全废了。所以,我们需要数字证书。
4.3.1 数字证书是什么?
数字证书,说白了就是一个「电子身份证」。它包含了持有者的身份信息、公钥,以及一个权威机构(CA)的签名。这个签名保证了证书的内容没有被篡改过。
证书的结构大致如下:
| 字段 | 说明 |
|---|---|
| 版本号 | 证书格式版本(通常为 V3) |
| 序列号 | CA 分配的唯一编号 |
| 签名算法 | 如 SHA256-RSA |
| 颁发者 | CA 的名称 |
| 有效期 | 起始和结束时间 |
| 主体 | 持有者的名称(如电台 ID) |
| 公钥 | 持有者的 RSA 公钥 |
| 签名 | CA 对上述内容的数字签名 |
4.3.2 身份认证流程
在航空电台远程维护中,身份认证通常分两步:
- 证书验证:电台收到地面站的证书后,用 CA 的公钥验证签名。如果签名有效,说明证书是真实的。
- 挑战-响应:电台生成一个随机数(挑战),用地面站的公钥加密后发过去。地面站用自己的私钥解密,再把随机数发回来。如果匹配,说明地面站确实持有对应的私钥。
🔑 核心要点: 证书验证的是「身份」,挑战-响应验证的是「持有私钥」。两者缺一不可。我曾经见过一个方案,只验证了证书,没做挑战-响应。结果攻击者拿到了一个合法的证书(比如通过社会工程学),就能冒充合法设备。后来我们改了流程,加上了挑战-响应,才堵住这个漏洞。
4.4 实战中的注意事项
说了这么多理论,最后聊点实际的。在航空电台远程维护中,有几点我特别想强调:
- 证书管理:证书有有效期,过期了要更新。我建议在电台中预置多个 CA 证书,并支持远程证书更新。否则,一旦证书过期,远程维护就断了。
- 密钥存储:私钥必须安全存储。在嵌入式设备中,我习惯用安全元件(SE)或 TPM 芯片。如果设备没有硬件安全模块,至少也要用软件加密存储,并加上防篡改检测。
- 抗重放攻击:加密后的数据包,如果被攻击者录下来,再重放一遍,怎么办?解决办法是加时间戳或序列号。我一般在每个数据包头部加一个 32 位的序列号,接收方检查序列号是否递增。如果重复,直接丢弃。
好了,这一章的内容就到这里。网络安全是个大话题,但核心就三件事:加密、认证、防篡改。把这三点做好了,航空电台的远程维护才能放心。下一章,咱们聊聊具体的远程升级协议设计,到时候会用到今天讲的知识。