硬件噪声下多跳WSNs安全路径选择:保密容量分析与Matlab仿真
发布时间:2026/9/24 23:50:54来源:尧图网络
这个项目主要研究的是在实际硬件非理想、并且存在窃听威胁的条件下多跳无线传感器网络WSNs如何通过路径选择的方式尽可能把数据安全地送到目的节点。这类问题在实际工程里特别常见——环境监测、智能农业、工业无线传感器网络中传感器节点不可能功率无限、硬件无瑕更不可能假设周围没人监听。所以如果你正在做WSNs安全传输方向的研究或者在做Matlab仿真时卡在“多跳网络下保密容量怎么算”“路径选择指标怎么设计”这类问题上这篇文章可以给你一个能直接落地的思路和代码框架。1. 项目要解决什么问题多跳WSNs的安全传输困境1.1 收集-传输网络架构传统WSNs里节点采集数据后直接发送给汇聚节点Sink单跳完成。这在距离近、干扰小的场景下没问题但一旦网络覆盖范围扩大单跳传输的能耗和丢包率都不堪重负。所以就有了“多跳收集-传输”的架构源节点先把数据传给附近的中继节点中继节点把来自多个源节点的数据合并、再往后传最终汇集到Sink。每个节点既是生产者也是转发者这种模式就是collect-and-transmit。优点是扩展性好、单跳功耗低、覆盖范围大缺点是路由变得复杂中间节点越多信息被截获的风险面也就越大。1.2 理想硬件假设在现实中站不住脚许多论文在做WSNs安全分析时默认收发机是理想硬件即发射端不会引入额外的信号失真接收端的解调只受高斯白噪声影响。但实际中兴实验室里用的射频模块无论是低成本的CC2530还是稍好一点的SX1276I/Q不平衡、相位噪声、功放非线性都会带来信号失真。这种失真在系统建模里通常被折算成一种与信号功率成正比的“硬件噪声”。硬件噪声一旦存在系统有效信噪比不会随着发射功率无限增大而是会收敛到一个上限——也就是硬件噪声地板Hardware Noise Floor。在路径选择问题中如果忽略这个因素选出来的“最优路径”在实际运行中很可能并不是最优的甚至安全性能会明显变差。1.3 路径选择方法为什么能派上用场多跳网络里从源节点到目的节点往往不止一条中继路径。不同路径的跳数、中继节点位置、信道衰落条件、被窃听的风险程度都不同。路径选择方法的目标就是按照一个合适的准则从这些候选路径中挑出一条最能满足安全传输要求的路径。听起来很直观但难点在于路径选得好不好需要同时考虑链路质量、跳数累积的失真、窃听信道的强弱、以及硬件噪声带来的性能天花板。这几个因素有的相互耦合有的甚至是矛盾的。所以整个项目的核心工作就是设计一个能够把这些因素统一纳入评估的路径选择指标并验证在窃听者和硬件噪声并存的情况下这种选择比随机路由或最短路径路由好多少。2. 系统模型与数学基础2.1 网络拓扑与多跳模型这个项目采用的是一个线状多跳模型。源节点S要发送数据到目的节点D源和目的之间有多组候选中继节点可供选择。为方便描述假设每条路径有N跳中继节点依次编号为R₁, R₂, …, R(N-1)第n跳的发射端记为Tₙ接收端记为Rₙ当nN时接收端就是目的节点D。无线信道采用块衰落Block Fading模型即在一帧传输时间内信道系数保持不变帧与帧之间独立随机变化。信道幅值服从瑞利分布所以信道增益|hₙ|²服从均值为1的指数分布。第n跳链路的瞬时信噪比可以写成γₙ Pₙ |hₙ|² / σₙ²其中Pₙ是第n跳的发射功率σₙ²是接收端噪声功率。多跳传输采用解码转发Decode-and-Forward, DF方式也就是每个中继节点把自己收到的信号完整解调再重新编码发送出去。这种方式比放大转发AF多一步解调但在数字通信系统里实现更简单而且可以避免噪声沿多跳累积放大。2.2 硬件噪声的建模方式实际收发机的硬件损伤在性能分析中最常采用“失真噪声”模型来处理。简单来说发射端输出的信号里不仅有期望信号还会叠加一个与信号功率成正比的热噪声叫发射端失真接收端在下变频、放大、解调的过程中也会引入与接收信号功率成正比的失真叫接收端失真。把这两部分失真统一建模第n跳接收端的端到端信噪比可以写成γₙ(eff) Pₙ |hₙ|² / (Pₙ |hₙ|² κ² σₙ²)注意分母里多了Pₙ |hₙ|²κ²这一项κ是硬件噪声系数通常在0到0.1之间0就代表理想硬件。当Pₙ|hₙ|²远大于σₙ²时γₙ(eff)趋近于1/κ²也就是说信噪比到了天花板上不去了。这在路径选择里带来了一个很重要的推论盲目提高发射功率是有上限收益的而选择一条链路质量更好的路径往往比单纯加大功率更有效。2.3 窃听者模型与保密性能指标窃听者模型是被动窃听即窃听者E在侦听某条链路的信号但不发射任何干扰信号也不参与通信协议。因此通信方很难实时感知窃听者的存在只能从统计意义上评估安全性。在物理层安全中最常用的指标是保密容量Secrecy Capacity。对第n跳来说如果合法链路的信道容量是Cₘ log₂(1 γₙ(eff))窃听链路的信道容量是Cₑ log₂(1 γₑ)那么这一跳的保密容量为Cₛ max{ Cₘ - Cₑ, 0 }在多跳DF网络中端到端的保密容量取决于最差的一跳。因为DF中继需要对信号进行完整解码中间任何一跳如果被窃听者截获了完整信息整条路径的保密性就被破坏了。所以端到端保密容量的计算方式是Cₛ(end) minₙ Cₛ(n)如果用安全中断概率Secrecy Outage Probability, SOP来衡量则可以定义成端到端保密容量低于某个目标速率Rₛ的概率即P(Cₛ(end) Rₛ)。这个概率越低说明系统越安全。本项目在进行路径选择时就是以安全中断概率最小化为目标。3. 路径选择方案设计从理论选路到指标落地3.1 候选路径的构造思路实际网络里路径选择的第一步是确定有哪些候选路径。常见的做法有两种一是按地理位置划分源节点一定范围内有多个可用的邻居中继每个中继后面又连接着不同的下一跳这样组合出一棵路由树二是按路由协议生成例如先通过简单的洪泛协议让目的节点收集若干条可达路径。项目中用到的是第二种思路即预先给定几条由不同中继组合构成的路径然后用提出的指标比较这些路径的性能。这样做的好处是可以把注意力集中在“路径质量评估”这个核心问题上避免路由发现过程带来的干扰。举例来说一个简单的三跳网络里可能候选路径有路径1S → R₁ → R₂ → D路径2S → R₃ → R₄ → R₂ → D路径3S → R₃ → R₅ → D可以看到路径2虽然经过了更多中继但可能因为绕开了深衰落区域链路质量反而更好。传统最短路径算法只会看跳数但这里我们要综合评估每跳的信道状态、窃听风险和硬件噪声影响。3.2 路径评价指标的选取与对比路径选择的评价函数是整个项目的灵魂。常见的指标有这么几类第一类是最小跳数。实现简单但如果某一条链路处于深衰落中这种方式选出来的路径可靠性很差。第二类是端到端信噪比最大化。这种方式在无窃听场景下很有效但在有窃听者时单纯信噪比高不代表安全——可能窃听者信道质量同样很好合法链路信息全被截获了。第三类就是本项目采用的以最小化端到端安全中断概率为目标。这个指标把合法信道、窃听信道、硬件失真、跳数累积四个因素全部考虑进去选出来的路径在安全性能上是更优的。这里补充一点关于指标计算复杂度的说明求解安全中断概率并没有一个完全封闭的解析解常规做法是采用蒙特卡洛仿真来近似。在Matlab实现时对每条候选路径独立生成大量信道样本统计保密容量低于门限的比例这个比例就作为该路径SOP的近似值。3.3 最优路径选择的完整算法流程整个项目分两阶段运行信道状态估计阶段和最优路径选择阶段。对应到论文里也可以理解为“训练阶段”和“传输阶段”。第一步源节点或汇聚节点收集所有候选路径中各跳的统计信道状态信息。第二步对每一条候选路径根据当前的信道状态计算瞬时保密容量序列进而估计安全中断概率。第三步比较所有候选路径的SOP估计值选择SOP最小的一条作为传输路径。第四步在选定路径上按照预定的传输策略发送数据同时周期性刷新信道状态以便在信道变化剧烈时切换路径。这样做的工程价值在于路径选择不需要中心化地掌握全网所有信道的实时全局信息只需要对候选路径做局部估计计算复杂度是可控的。4. Matlab代码实现与仿真细节4.1 代码框架与参数配置在Matlab代码实现上项目分为四个模块参数配置模块、信道与噪声生成模块、路径性能评估模块、蒙特卡洛仿真主循环。我在实际编写代码时用的是Matlab R2022b完全基于脚本编写不需要额外的工具箱。下面是参数配置部分的示例%% 参数配置 clear; close all; clc; % 网络参数 numPaths 3; % 候选路径数 maxHops 5; % 最大跳数 numNodes 12; % 节点总数 % 信道参数 SNRdB 0:2:30; % 信噪比范围单位dB numSNR length(SNRdB); P_tx 0.1; % 发射功率单位W sigma_n2 1e-6; % 噪声功率 % 硬件噪声参数 kappa 0.05; % 硬件噪声系数0表示理想 Rs 0.5; % 目标保密速率单位bit/s/Hz % 仿真参数 numMonte 1e5; % 蒙特卡洛仿真次数需要注意的是硬件噪声系数k的取值范围通常取0到0.1。如果取0.2甚至更高仿真结果会显示系统性能严重受限这虽然能直观说明硬件噪声的危害但偏离了实际硬件水平反而会让审稿人或读者质疑参数选择是否合理。4.2 核心函数实现接下来是核心函数部分。首先是单跳有效信噪比的计算function gamma_eff computeEffectiveSNR(P_tx, h2, sigma_n2, kappa) % 计算存在硬件噪声时的有效信噪比 % P_tx: 发射功率 % h2: 信道增益 |h|^2指数分布随机变量 % sigma_n2: 噪声功率 % kappa: 硬件噪声系数 gamma_eff (P_tx * h2) / (P_tx * h2 * kappa^2 sigma_n2); end然后是窃听信道的瞬时信干噪比计算。窃听者接收到的信号功率不仅包含期望信号同样受到硬件噪声的影响所以计算方式与合法链路相同只是信道增益换成窃听信道增益。function C_s computeSecrecyCapacity(gamma_main, gamma_eve) % 计算单跳保密容量 % 单位: bit/s/Hz C_main log2(1 gamma_main); C_eve log2(1 gamma_eve); C_s max(C_main - C_eve, 0); end对于一条完整路径端到端保密容量是各跳保密容量的最小值对应DF中继的特性function C_end computeEndToEndSecrecy(gamma_main_vec, gamma_eve_vec) % 输入两个向量分别为各跳的合法信噪比和窃听信噪比 C_s_perhop max(log2(1 gamma_main_vec) - log2(1 gamma_eve_vec), 0); C_end min(C_s_perhop); end这三个函数基本覆盖了一整条路径的性能评估。下一步的关键就是路径选择的核心逻辑。4.3 蒙特卡洛仿真主程序蒙特卡洛仿真主循环的伪代码如下%% 蒙特卡洛仿真主循环 SOP_matrix zeros(numPaths, numSNR); % 存放各路径在不同SNR下的SOP for idx 1:numPaths hops_current pathHops(idx); % 当前路径的跳数 for snr_idx 1:numSNR P_tx sigma_n2 * 10^(SNRdB(snr_idx)/10); % 根据信噪比反算发射功率 outage_count 0; for mc 1:numMonte gamma_main_vec zeros(hops_current, 1); gamma_eve_vec zeros(hops_current, 1); for n 1:hops_current % 生成合法链路信道增益 h2_main exprnd(1); gamma_main_vec(n) computeEffectiveSNR(P_tx, h2_main, sigma_n2, kappa); % 生成窃听链路信道增益 h2_eve exprnd(0.5); % 窃听信道平均增益较低 gamma_eve_vec(n) (P_tx * h2_eve) / (P_tx * h2_eve * kappa^2 sigma_n2); end C_end computeEndToEndSecrecy(gamma_main_vec, gamma_eve_vec); if C_end Rs outage_count outage_count 1; end end SOP_matrix(idx, snr_idx) outage_count / numMonte; end end这里有个细节每个信噪比条件下都要重新计算发射功率P_tx。因为我是在固定噪声功率的情况下反推发射功率来对应不同的“平均信噪比”。这样做的好处是仿真曲线横轴物理意义明确方便与理论推导对比。另外关于exprnd(0.5)这个参数我的设定是窃听者的平均信道增益只有合法链路的一半。这是合理的否则窃听者如果平均信道条件比合法链路还好那任何物理层安全方案都会非常脆弱系统的保密容量长期为0仿真对比就没有意义了。4.4 路径选择的可视化结果仿真结束后的可视化也是重头戏。通常会画两类图第一类是SOP随平均信噪比变化的曲线。横轴是SNR纵轴是SOP每条曲线对应一条候选路径。理想硬件下这些曲线会随SNR增大而持续下降但加入硬件噪声后在SNR较高的区域曲线会变得平坦这就是硬件噪声地板在起作用。第二类是“最优路径选择比例”直方图。即统计在多次独立信道实现中每一条路径被选中为最优路径的次数所占的比例。这个图能直观看到路径选择算法是否偏向某一条候选路径以及不同路径的竞争力。%% 选择最优路径 [~, bestPathIdx] min(SOP_matrix, [], 1);min函数返回的就是每个SNR点下的最优路径编号。如果某条路径在多数SNR点下都被选中说明它在这个仿真设定下整体安全性能最优。第二类图更实用特别是当你想对比“路径选择方法”和“随机路径方法”“最短路径方法”的安全性能差距时。只需要把随机路径的SOP均值和最短路径对应的SOP曲线与路径选择算法选出的最优路径SOP画在一张图里差距一目了然。5. 实验结果分析与关键结论5.1 不同跳数路径的安全性能对比仿真结果里最典型的现象是在低信噪比区域跳数少的路径通常更占优势。原因是每增加一跳就多一个被窃听的机会且DF中继下的端到端保密容量取决于最弱一跳路径越长“木桶短板”效应越明显。但在高信噪比区域跳数多但链路质量好的路径反而可能胜出。这就体现出了路径选择算法的价值不只是看跳数而是综合评估每一跳的信道质量与窃听风险。举例来说一条三跳路径中如果中间某一跳正处于深度衰落那整条路径的SOP很高而一条经过四次中继但每一跳信道都很好的路径端到端SOP可能反而更低。这就是“最短路径不等于最安全路径”的核心结论。5.2 硬件噪声对路径选择结果的影响硬件噪声加入后仿真里出现了一个非常值得关注的现象如果不对路径选择指标做修正在较高发射功率区域系统SOP不再下降而是稳定在一个固定值附近。原因就是前面提到的有效SNR收敛到1/κ²。这个现象对仿真实验设计有一个重要提示如果你只跑理想硬件场景然后直接断言“最优路径是最短路径”很可能会得到错误的结论。在有硬件噪声时有时绕开一条硬件条件较差的中继节点虽然跳数增加但整体安全性能更好。我在做这个项目时特意跑了一组对比κ0和κ0.06两种情况下最优路径是否一致。结果显示在大约30%的随机信道实现中两条选出的最优路径不同。这说明硬件噪声确实会实质性地改变路径选择的结果忽略它将高估系统安全性能。5.3 路径选择增益的量化分析为了量化路径选择的价值项目里计算了一个“路径选择增益”路径选择增益 路径选择方法的平均SOP / 随机路径方法的平均SOP这个比值越小说明路径选择带来的安全性能提升越大。仿真结果中在中等信噪比区域约10-15 dB路径选择增益通常能达到40%以上即SOP从0.05降到了0.03左右。这个数值说明路径选择确实是一个性价比高、实现简单的性能增强手段。值得注意的是高信噪比区域路径选择的增益会缩小因为硬件噪声地板限制了所有路径的SOP下限。此时性能瓶颈不在路由层面而在收发机硬件层面。要进一步提升安全性能就得换方案了比如给节点换用性能更好的射频前端或者采用协作干扰技术。6. 实践中的常见问题与调试技巧6.1 仿真结果不收敛或曲线毛刺过多蒙特卡洛仿真最常遇到的问题就是曲线不光滑。如果numMonte次数不足SOP曲线会像锯齿一样剧烈抖动尤其是在SOP较小比如0.01附近的区域抖动更明显。此时你很难判断两条路径谁更优。我的经验是如果SOP在0.1量级numMonte至少要1e4如果SOP在0.01量级numMonte建议在1e5甚至更高。如果你发现仿真时间太长可以适当降低最大SNR点数量或者改用方差缩减技术比如对信道样本使用公共随机数Common Random Numbers也就是说每条路径使用相同的一组信道实现去评估这样对比结果时系统波动会更一致。Matlab里实现公共随机数的一个简单方法是固定随机数种子rng(2024); % 固定种子确保实验可复现但注意固定种子需要在每次蒙特卡洛循环之前设置这样才能保证所有策略在同一批信道实现下比较。6.2 硬件噪声参数选取不当导致结果失真kappa的取值直接决定了性能天花板的水平。曾经我把kappa设为0.15结果所有路径的SOP在15dB之后就完全平了甚至看不出路径选择带来的性能差异。这会导致审稿人质疑实验设置不合理。合理的做法是根据实际硬件水平来定。查一下商用无线收发器的数据手册其EVM误差向量幅度通常在5%到12%之间对应kappa约0.05到0.12。我建议项目默认取0.05这是相对保守但合理的值。另外需要注意的是仿真时合法链路和窃听链路的kappa应设为相同还是不同需要根据场景来定。如果窃听者用的是高精度接收机那你应该把窃听者的kappa设得更小甚至设为0。这个细节在论文里要写清楚否则别人复现时会一头雾水。6.3 路径选择逻辑在拓扑变化时的鲁棒性还有一个容易踩的坑路径选择是基于瞬时信道状态信息还是统计信道状态信息。如果基于瞬时CSI每条信道样本都要重新计算SOP并选出最优路径计算量很大而且需要频繁交换信道信息在实际网络里开销过高。更实际的方案是先基于信道统计信息例如平均信道增益、窃听信道的平均强度在较长的时间尺度上选出路径短时间内不切换只在统计特性显著变化时才重新触发路径选择。我在项目中采用的折中策略是以若干个信道相干时间作为一个路径决策周期在这个周期内固定路径用蒙特卡洛仿真估计该路径的SOP。这样既保证了路径选择的准确性又避免了过于频繁的切换开销。6.4 关于“路径选择”和“功率分配”的联合优化最后说一个扩展方向。单纯做路径选择能吃到一部分安全增益。但如果把路径选择与功率分配联合起来在每个中继节点上根据信道状态动态调整发射功率安全性能还能进一步提升。举例来说对于深衰落的链路可以适当提高功率来补足合法信道的信噪比对于窃听风险高的链路则适当降低功率避免给窃听者送去更强的信号。这个联合优化问题可以用拉格朗日对偶法或者遗传算法求解但计算复杂度高不太适合实时执行。如果只是做研究可以把这个联合优化作为对比方案写进论文如果做工程落地建议还是从路径选择入手性价比更高方案实现上也更稳健。回到项目本身我个人在实际操作中最深的一点体会是不要被“多跳”“窃听者”“硬件噪声”这种偏理论的词汇吓住本质上它的代码工程量并不大核心就是信道生成、SNR计算、指标比较这三个环节。真正的难点在于指标设计——你得想清楚什么情况下路径选择能带来增益什么情况下增益被硬件噪声磨平了这两种情况的边界在哪里。把这个想透了Matlab代码只是顺手的事。
网站建设高端定制企业官网