周 兴, 陈 帅, 白钲皓, 袁思思, 张 琨
(南京理工大学自动化学院, 南京 210094)
随着2020 年北斗三号卫星导航系统的全面建成, 北斗卫星导航系统(Beidou Navigation Satellite System, BDS) 在我国国防、交通、电力、金融、农业等领域日益发挥着重要作用[1]。 然而, 由于BDS 信号传播到地面时信号功率水平较低和北斗系统开放服务的特性, 导致接收终端易受到欺骗信号干扰, 进而导致相关设备得到错误的位置、速度和时间信息, 使得相关设备无法正常使用[2-3]。同时, 如文献[4]和文献[5]所述, 欺骗干扰在严重情况下会对国家的国防和经济安全造成严重影响,如何有效地防御欺骗干扰已经成为一个亟待解决的问题。
按照欺骗实现的复杂程度, 欺骗干扰可分为简单欺骗、中级欺骗和高级欺骗三类: 简单欺骗使用卫星信号模拟器即可实现, 欺骗信号不需要与真实卫星信号同步; 中级欺骗则需要欺骗信号和真实信号同步, 目的是在不引起接收终端产生较大波动的情况下实现欺骗目的; 高级欺骗需要多个欺骗设备协调以模拟真实的卫星分布环境,这种欺骗方式实现的难度较高, 目前基本还停留在理论研究层次[6]。 同时, 抗欺骗干扰的方法按照防御的层级也可以分为三类, 依次为信号处理级(Signal Processing Level, SPL)、数据位级(Data Bit Level, DBL) 和导航 与位置解算 级(Navigation and Position Solution Level, NPSL): SPL 利用信号功率、信号来向、信号到达时间等信息来判别欺骗信号与真实信号; DBL 和NPSL 则多利用接收机的各种量测信息进行检测, 量测信息包括卫星伪距、接收机钟差和钟漂、解算的位置速度等[7]。
由于中级欺骗干扰不易被接收终端发现且具备较好的隐蔽性, 对使用BDS 系统定位和定时的设备具有较大的威胁, 所以本文主要对中级欺骗干扰对接收机造成的影响进行研究。 中级欺骗攻击的初始时刻, 为了保持欺骗信号与真实信号一致, 欺骗设备利用外部的雷达等探测设备得到接收机的位置、速度等信息, 之后逐步调整欺骗信号的载波、伪码等使欺骗信号与真实信号同步。在同步的过程中, 由于欺骗设备是利用内部的控制器分别调节载波和伪码的, 故此时会出现载波和伪码不一致的现象。 同时, 在欺骗信号开始诱导欺骗对象得到错误的位置和速度时, 也会分别调整载波和伪码等, 此时也会出现载波和伪码不一致的现象[6]。 依据载波和伪码在欺骗场景下的不一致现象, 本文提出了基于BDS 载波与伪码一致性的欺骗信号检测算法。 国内外已有使用伪码和载波信息进行欺骗干扰检测的先例, 如文献[8]和文献[9]利用在真实和欺骗环境下不同卫星间的载波Doppler 频率和变化率具有不同的特性进行了欺骗检测; 文献[6]与本文一样都是利用载波和伪码的一致性进行欺骗检测, 不同点在于文献[6]主要在捕获阶段进行欺骗检测, 然而中级欺骗通常是出现在环路已经稳定跟踪的时候, 文献[6]所述的方法使用场景较为有限, 本文所述的方法则主要在跟踪阶段进行欺骗检测, 故具有更多的应用场景。
由文献[10]可知, BDS 信号从卫星上发射时其内部的频点是固定的, 但由于卫星和接收机存在视线方向上的相对运动, 使得接收机接收到的信号频率与卫星信号发送的频率不一致, 即存在Doppler 效应。 Doppler 频移计算如下
式(1)中,fd为Doppler 频率,vr和vs分别为接收机和卫星的速度,λ为信号波长,I为接收机与卫星视线方向上的单位矢量,f为信号的频率,c为光速。 信号中的伪码是调制在载波之上的, 所以Doppler 效应同时存在于载波和伪码当中。 根据式(1), 可以推导出载波Doppler 频率与伪码Doppler 频率的关系
载波和伪码的信号频率通常是固定的, 由式(3)可知二者的Doppler 频率比值应当也是固定的。以BDS 的B1I 频点为例,fcarrier为1561.098MHz,fcode为2.046MHz, 则根据式(3) 可得的比值为763。
图1 和图2 分别为北斗卫星2 号星和北斗卫星28 号星在静态无欺骗干扰场景下从接收机环路中得到的载波Doppler 频率和伪码Doppler 频率。 本文以接收机的载波环和码环控制器输出给载波NCO(Numerically Controlled Oscillator) 和伪码NCO的相对标称频率的调整数值作为载波Doppler 频率和伪码Doppler 频率。
图2 北斗卫星28 号星的载波和伪码Doppler 频率Fig.2 Carrier and pseudocode Doppler frequencies ofBeidou satellite-28
由图1 和图2 可知, 由于量测误差、系统噪声和电离层的影响, 得到的存在一定的噪声[11]。 为了减小噪声的影响, 本文使用α-β滤波器对的数据分别进行滤波以减小噪声和误差对检测算法的影响。α-β滤波器是一种可用于状态估计、数据平滑的一维滤波器, 由于载波Doppler 和伪码Doppler 是分别进行滤波的, 同一时刻滤波器只对某颗卫星的1 种数据进行滤波,不依赖系统的具体模型且稳定性较好, 实现简单不会占用大量计算资源, 便于工程实现[12]。 所以,本文选择该滤波器进行滤波, 滤波方程如下
式(6)中,E为经过转换后的的差值, 763 由式(3)计算得到。
中级欺骗会使接收机得到错误的位置、速度等信息, 同时在攻击的时候会导致载波和伪码频率不一致。 接收机通常利用卫星位置和伪距实现定位, 使用卫星速度与载波Doppler 频率实现定速, 伪距计算公式如下
式(7)中, Δt为信号的传播时间。
为了达到欺骗接收机位置的目的, 欺骗系统通常需要适当地改变各个卫星的伪距, 伪距的改变可以根据文献[12]与改变码相位使接收机得到错误的信号发射时间来实现, 此时会导致载波和伪码的不一致。 同理, 速度欺骗可以通过改变载波Doppler 频率来实现, 原理与伪距类似, 在此不再赘述。 信号传播时间Δt的计算公式如下
式(8)中,tu为接收机接收到信号的时间,ts为信号的发射时间(可由式(9)计算得到),δtu和δts分别为接收机和卫星的钟差,I'和T分别为电离层和对流层的延时,ε为量测误差。 式(9) 中,TOW为导航电文下一子帧的起始时间,w为当前子帧接收到的整个导航电文数据码的字数,b为当前导航电文已接收的比特数,c'为接收到的整周C/A 码(C/A 码的周期为1ms),CP为当前这一周C/A 码中的码相位量测值。
图3 为含欺骗信号的北斗卫星20 号星、21 号星和26 号星根据式(6)计算得到的E与E的方差σ2(E), 欺骗信号是在横轴数值为1190s 处加入。由图3 可知, 在欺骗信号出现时E和σ2(E)都会发生变化, 但σ2(E)比E变化更为明显, 所以本文以σ2(E)的数据进行欺骗检测。
图3 频率差值与频率差值方差对比图Fig.3 Comparison between frequency difference and variance of frequency difference
唐检测器是接收机信号捕获和跟踪时使用的一种信号检测器, 因检测速度快、耗费资源少和检测精度高而被广泛使用。 它先给上/下行计数器一个初值B, 若信号值超过门限则计数器加1, 反之则减1, 当计数器值超过上行门限A时判定信号存在, 若计数器值小于下行门限则判定信号不存在。 本文以唐检测器为欺骗信号的检测判定系统,当计数器值超过上行门限时判定欺骗信号存在,否则认为信号正常。 由文献[13]可知, 检测概率随B和A的增大而增大, 但检测时间也会随之增加,所以二者是一个调谐的过程。 本文根据文献[13]中仿真得到的结果将B设为2,A设为12。 唐检测流程如图4 所示,V可视为σ2(E),σ2(E)采用滑动窗口的方法进行计算,B为计数器值。
图4 唐检测流程图Fig.4 Flowchart of Tong detection
虚警概率是指在没有欺骗信号的情况下判定欺骗信号存在的概率, 由文献[14]可知虚警概率可视为关于检测门限的函数, 可以利用设定的虚警概率计算得到检测门限。 设检测门限为Th, 则虚警概率计算公式为
式(10) 中,Pfa为虚警概率,p(σ2(E)) 为关于σ2(E)的概率密度函数。 由于欺骗信号具有时变性,使得在欺骗信号存在时σ2(E) 的分布较为复杂,p(σ2(E))较难以推导, 所以本文使用统计论中的检测率来代替P, 以代替Pfa,的计算公式为
通过以上分析, 利用欺骗信号会导致载波和伪码频率不一致的特性使用唐检测器对σ2(E)进行欺骗检测, 将可能含有欺骗信号的通道标识出来。欺骗检测的具体流程为:
1)采集数据。 从环路中采集载波和伪码的Doppler 频移, 本文每0.1s 采集一次。
3)通过式(6)计算E。
4)滑动窗口, 计算σ2(E)。
5)唐检测器检测, 将含有欺骗信号的通道标识出来, 并对外示警。
实验验证采用如图5 和图6 所示的含有欺骗信号的BDS 信号进行测试, 图5 中的红色和蓝色轨迹分别为欺骗信号和真实信号的三维轨迹, 图6 中的红色和蓝色轨迹分别为欺骗信号和真实信号的线速度。
图5 真实信号与欺骗信号的三维位置图Fig.5 3D location map of real signal and deception signal
图6 真实信号与欺骗信号的线速度图Fig.6 Linear velocity diagram of real signal and deception signal
实验架构如图7 所示。 首先, 使用卫星信号模拟器生成一条位置和速度如图5 和图6 中蓝色轨迹所示的真实信号, 之后启动卫星信号模拟器, 将卫星信号模拟器生成的实时轨迹信息和卫星信号发送给欺骗设备作为欺骗设备的量测信息; 然后,欺骗设备根据接收到的量测信息和设定的欺骗策略调整自身参数; 最后, 将生成的欺骗信号与真实信号经过合路器合路之后发送给接收机。 欺骗信号在图5 和图6 的第157s 开始出现, 对应的周内秒为86605s。
图7 欺骗设备连接示意图Fig.7 Connection diagram of deception device
为了便于分析实验结果, 实验采用半实物仿真的方式进行, 使用上位机保存从接收机中得到的载波与伪码Doppler 频率, 之后使用第2 节中的检测方法对数据进行检测。 验证选取信号中的3 号星、20 号星、21 号星和26 号星的数据进行验证。图8 为测试不同虚警概率下检测到欺骗信号的时间, 图例中的“欺骗” 表示欺骗信号出现的时间,当检测到欺骗的时间小于欺骗出现的时间时认为系统误把真实信号检测为欺骗信号。 综合图8 可知, 在虚警概率大于0.02425% 时会存在误检现象, 当虚警概率小于0.0066%时会出现无法检测出欺骗信号的现象, 所以综合考虑之后将虚警概率设定为0.015%。 根据设定的虚警概率, 计算得到4 颗卫星的Th值依次为: 1.84 ×10-4、3.45 ×10-5、2.80 ×10-5和3.29 ×10-5, 计算Th值时使用的样本总数依次为: 876、885、880 和901。
图8 不同虚警概率下检测到欺骗信号的时间Fig.8 Diagram of time when deception signals are detected under different false alarm probabilities
北斗卫星3 号星、20 号星、21 号星和26 号星的欺骗信号检测结果如图9 所示。 检测结果为当唐检测器检测判定为无欺骗信号时设定为0, 反之则设定为1, 并一直保持此结果。
图9 欺骗信号的检测结果Fig.9 Detection results of deception signals
由图9 可知, 在欺骗信号于86605s 时刻出现之后, 北斗卫星3 号星、20 号星、21 号星和26 号星检测到欺骗信号的时刻依次为86609s、86607s、86607s 和86608s, 通过实验验证了本文所提算法可以在欺骗信号出现之后的5s 内检测到欺骗信号的存在, 可以及时向外界示警。
利用中级欺骗信号会引起接收机的载波和伪码产生波动导致二者之间不再保持一致性的特点,本文提出了一种能反映二者之间不一致性的中级欺骗干扰检测算法。 通过唐检测器判断二者差值的方差是否在一段时间内连续超出门限值来判断是否受到了中级欺骗的攻击, 结合BDS 卫星信号模拟器与欺骗设备生成一组中级欺骗信号来对本文的算法进行验证。 通过实验验证得到: 本文的算法可以在欺骗信号出现后的5s 内检测出欺骗攻击并及时向外部系统示警, 以免欺骗信号对系统产生较大的影响。