近几年来,无线通信、集成电路与嵌入式系统等技术持续迅猛发展,推动微型无线传感器在各领域广泛应用。虽然体积小巧,但这类设备具备感知、计算及相互通信的能力。凭借低成本、低功耗与多功能特性,大量传感器节点可组建成传感器网络,实现环境实时监测、数据采集、协同处理,并将加工后的新消息传递给需求方。从本质上讲,传感器网络是信息感知领域的一支新兴力量,能够随时随地、在任何环境下提供海量且可靠的数据。因此,它在军事、国家安全、环境监测、交通管理、医疗卫生、制造业、反恐抗灾等诸多领域拥有广阔的应用前景。
然而,由于传感器网络常被部署在恶劣环境、无人区甚至敌方阵地,加之无线网络自身安全防护相对薄弱,安全问题已成为其发展的核心痛点。许多应用——例如军事目标的追踪与监控——其正常运行几乎完全依赖网络安全。一旦遭受攻击或瘫痪,后果可能极为严重。如何在节点计算能力、电池续航、通信带宽以及存储空间都非常有限的条件下,设计出一套具备加密、认证并能抵御各类恶意攻击的安全机制,为传感器网络提供一个相对可靠的工作环境——这正是决定该技术能否从实验室走向实际应用的关键所在。
传感器网络的研究始于20世纪90年代末,但安全方面的成果直到近几年才陆续涌现,各类安全方案也相继提出。不过,截至目前,传感器网络尚未完全实现模型化与量化,无线传感器网络安全方案大多仍停留在理论研究阶段,距离真正落地并形成公认标准,还有不小的差距。
本文的结构安排如下:第二节首先阐述传感器网络的安全需求;第三节详细拆解消息加密方案中所使用的协议与算法;第四节对方案的安全性与效率进行深入分析;最后一节总结全文,给出研究结论。
无线传感器网络的安全需求
传感器网络具有若干突出特点,例如通信能力有限、电源能量紧张、计算与存储空间捉襟见肘,节点分布密集且网络拓扑频繁变化。这些特性给安全方案的设计带来了诸多挑战。一套较为完善的无线传感器网络安全方案,至少需要具备以下基本特性:
机密性:传感器网络不得随意向外泄露敏感信息。即便某个密钥不慎泄露,其影响范围也应尽可能小,避免“一颗老鼠屎坏了一锅汤”。
真实性:节点身份认证与数据来源认证在众多传感器网络应用中至关重要。攻击者极易向网络中注入虚假消息,接收方只有确认消息确实来自合法节点,才能放心处理。
完整性:在通信过程中,必须确保接收方收到的数据未被任何人恶意篡改或替换。
新鲜性:为防止攻击者实施重放攻击,每条消息都必须是“新鲜”的。简单来说,发送方传给接收方的数据,应当是最近生成的最新信息。
扩展性:传感器网络的扩展涉及节点数量、覆盖面积、生命周期、响应时间、感知精度等多个维度,这些维度都存在扩展极限。针对给定的网络扩展级别,安全方案必须提供匹配的机制与算法,确保网络正常运行。
可用性:安全方案提供的各项服务,既要让授权用户正常使用,又要防范攻击者的破坏行为。同时,安全设计不能过度限制网络的可用性。
基本协议
首先交代协议中使用的符号含义:x ∈R N 表示从集合N中随机选取一个x;H1()与H2()是两种互不相同的抗碰撞单向散列函数,例如MD5或SHA-1;║为字符串拼接运算符;EKi(M)表示用密钥Ki对消息M进行加密;MAC(Ki,M)表示用密钥Ki生成消息M的认证码。
1. 会话密钥建立协议
一个完整的会话密钥建立过程通常分为三步:密钥预分发、单跳密钥发现、多跳密钥建立。
(1)基站先生成n个密钥及其对应的标识符,组成密钥池P:
P = {(k1, ID1), (k2, ID2), ..., (kn, IDn)}
其中ki是基站生成的密钥,IDi是其标识符。
(2)基站从这n个密钥中随机选取r个,组成节点A的密钥环RA,并将其加载到A的存储器中:
RA = {(kA1, IDA1), (kA2, IDA2), ..., (kAr, IDAr)}
这里IDAi是密钥kAi的标识符。基站会保存每个节点的密钥环。
(3)节点A计算自身与基站的共享密钥:
KBA = H1(IDB ║ IDA)
随后将其存入存储器。IDB是基站的身份标识。至此,密钥预分发阶段完成。该阶段保证了簇内任意两个节点,有一定概率在各自的密钥环上找到双方共有的会话密钥。
(4)传感器网络部署时,节点A被随机或特定地投放至指定感知区域。簇形成后,它广播一条消息:
A → * : IDA, IDA1, IDA2, ..., IDAr, LA
其中*表示A所在簇内的任意节点,LA为A的位置信息。
(5)收到广播的节点会意识到自己与A处于同一传输范围(即同一簇)。它们会遍历自己的密钥环,寻找与A广播的密钥标识符集重合的元素。假设节点C在自己的密钥环上找到了与A标识符集相交的元素IDAC,则说明C与A共享同一个会话密钥KAC。于是C向A回复响应:
C → A : IDC, EKAC(IDC ║ LA)
(6)A利用共享密钥KAC解密消息,确认自己的密钥环与C存在交集。至此单跳密钥发现阶段结束。通过广播,节点能够找到簇内与自己共享密钥的伙伴。单跳完成后,A会保存已找到的共享实体的密钥,并删除密钥环上剩余的部分。
(7)对于簇内尚未与A建立共享密钥的节点,可通过以下流程完成。假设节点D在单跳结束后仍未能与A共享密钥,但它找到了与C共享的密钥KDC,而A与C也共享KAC。此时,A向C发送一条挑战信息(先进行身份认证):
A → C : IDA, IDC, EKAC(KAD ║ LA)
该信息包含了A与D要共享的密钥KAD及A的位置。
(8)C解密消息后,使用KDC重新加密,转发给D:
C → D : IDC, EKDC(KAD ║ LA)
(9)D验证挑战消息的合法性,然后向A回复响应:
D → A : IDD, EKAD(IDD, nonce, LD)
其中nonce为随机数,LD为D的位置。
(10)A利用KAD解密,确认与D的共享密钥已成功建立。多跳密钥建立阶段结束,此时簇内任意两个节点之间均已拥有共享的会话密钥。
2. 消息加密协议
会话密钥建立完成后,任意两个节点便可依据消息加密协议进行安全通信。
(1)假设A要与C通信,它首先计算加密密钥Ke与认证密钥Km:
Ke = H2(KAC ║ "Encrypt")
Km = H1(KAC ║ "Auth")
(2)随后使用加密密钥、认证密钥以及计数器C对消息M进行加密,发送的消息格式如下:
A → C : IDA, EKe(M ║ C), MAC(Km, EKe(M ║ C))
(3)C收到A的消息后,同样根据共享密钥KAC重新计算出Ke与Km,并验证消息的合法性。
性能分析
1. 安全性分析
A与C通信时,使用共享密钥KAC加密消息;C与D、D与A在建立会话密钥的过程中同样使用了共享密钥加密。这样一来,攻击者根本无法获取消息内容,机密性得到了充分保障。
通信双方共享唯一的会话密钥,该密钥本身具备类似数字签名的身份认证功能。接收方通过数据源认证,能够确信消息确实来自合法节点,从而确保了真实性。
消息认证码是将共享密钥与待检验消息串联后进行散列运算的结果。由于散列函数具备强无碰撞特性,只要消息被丝毫改动,认证码的值便会发生显著变化。这就有效防止了篡改行为,保证了完整性。
该方案将计数器信息隐藏在待加密消息中,共享密钥加密确保了攻击者既无法得知也无法篡改计数器的值。而计数器又能帮助接收方确认数据是最近生成的,即消息的新鲜性得到保障。
在整个会话过程中,基站无需参与。认证密钥与加密密钥均由通信双方根据共享会话密钥自行计算,基站的工作负荷大幅降低,避免了其成为网络通信瓶颈——可扩展性由此实现。
引入认证密钥、加密密钥与计数器后,该方案不仅具备了身份验证、消息保密与内容保鲜等功能,还能有效抵御诸如重放攻击等各类威胁,可用性自然得到提升。
2. 效率分析
在设计传感器网络加密方案时,我们充分考虑了节点计算能力、电池、通信带宽以及存储空间极为有限这一现实。会话密钥建立协议与消息加密协议均设计得较为轻量,参与各方通信时传输的内容也尽可能精简。同时,采用科学的分簇方法,合理控制簇的规模,确保了通信质量,降低了因节点通信能力有限而导致会话失败的概率。
此外,该方案绕过了成本高昂的公钥运算,转而使用对称密钥、散列算法与计数器来实现类似公钥基础设施的效果。通过减少会话步骤、简化计算方法来降低节点负担,整个方案在计算、存储与通信上的开销都很小,执行效率相当高。
结论
本文提出了一种传感器网络中的加密方案。该方案无需基站参与,认证密钥与加密密钥由通信双方根据共享会话密钥自行计算,因此具有良好的可扩展性;在加密过程中使用了计数器与消息认证码,基本满足了传感器网络的安全需求。同时,考虑到传感器节点在计算、电源、通信与存储上均十分有限,方案中的协议与算法都设计得简单实用,用对称加密取代了昂贵的公钥算法,整体开销小、执行效率高。可以说,这是一套既务实又有效的加密方案。
