一种针对ADS‑B协议保密性及完整性的解决方法与流程

文档序号:11709951阅读:757来源:国知局
一种针对ADS‑B协议保密性及完整性的解决方法与流程

本发明属于航空通信领域,具体涉及一种针对ads-b协议保密性及完整性的解决方法。

发明背景

由于最近几年航空领域的空前发展,越来越多的人开始选择乘坐飞机作为长途旅行的交通工具。与此同时,航空失事率也也有所增加。如近期的马航事件便引起了全球各地对于航空安全的关注。

ads-b的基本数据格式如图1所示,

(i).df(downlinkformat)字段df字段长度是5位,用于区分不同的下行链路格式(downlinkformat)。df的值可以是17、18或19。df=17用于s模式应答机发出ads-b报文;df=18用于非s模式应答机发出ads-b报文或tis-b报文;df=19用于军事用途,非军事应用不会涉及到该类型报文。

(ii).ca/cf(capability/codeformat)字段

ca/cf字段的长度是3位,在不同的df值下有不同的含义。df=17时,该字段是ca字段,含义是s模式应答机的能力;df=18时,该字段是cf字段,含义是编码格式(codeformat),用于区分me字段的内容、aa地址的类型、以及两类特殊的报文;cf=0或1时,表明该报文是ads-b报文。

(iii).aa(icao24aircraftaddress)字段aa字段的长度是24位,包含了发射装置的地址信息。地址的类型有两类:icao地址和非icao地址。icao地址是飞机的地址,非icao地址是匿名地址、地面车辆地址或表面障碍物地址。

(iv).data(dataframe)字段data字段的长度是56位,包含了ads-b报文的业务数据,称之为ads-b业务报文。关于data字段的格式将在ads-b业务报文中进一步说明。

(v).pi(paritycheck)字段pi字段的长度是24位,是一个下行链路字段,含义是奇偶性(parity)和一致性(identity)。该字段包含了编码标签(codelabel,cl)和询问器编码(interrogatorcode,ic)的奇偶性。

表1

为了保证方法对于原先ads-b协议的兼容性,我们着重说明tc字段,当typecode为不同值时ads-b消息所包含的不同的信息。dataframe(33bit-88bit)中的33bit-37bit为tc(typecode),typecode的值不同,则这条ads-b消息所包含的消息也不同。在本方案中用tc=25表示ads-b保留消息,即飞机不会去解析此类报文。

ads-b作为美国下一代航空运输系统的组成部分,近几年越来越受到各方关注。欧盟规定,其成员国需在2020年之前强制运用ads-b。但依照ads-b航空领域广播通信协议,所有飞机所生成的所有包含为位置、速度等重要信息的ads-b报文以明文的形式通过飞机配备的ads-b-out设备广播在指定信道上。这也就削弱了ads-b协议的安全性,因为任何一个配备ads-b接收器的攻击者都可以通过将频段调制1090mhz,对飞机广播的消息进行监听,从而从中获得飞机的位置、速度等敏感信息。对于主动攻击者而言,在收到ads-b消息的基础上,可以通过对其消息记性修改生成假消息,并通过ads-b发送机发送到1090mhz信道上,这无疑对于飞机的安全构成威胁。



技术实现要素:

针对上述现有技术问题,本发明的目的在于提供一种针对ads-b协议保密性及完整性的解决方法,该方法在不修改ads-b航空通信协议的基础上,对原有ads-b消息进行加密处理,保证敏感数据的机密性;提供消息认证功能从而保证消息的完整性;与此同时,本方案对于自然环境广播中存在的丢包问题具备容错性。

为了达到上述目的,本发明包括以下步骤:

步骤1:可信第三方为每个应用ads-b的飞机生成加密和消息验证所需安全参数,通过安全信道分发给各飞机,并通过广播信道广播给飞机;

步骤2:各飞机在飞行过程中通过ads-btransponder接收安全参数后生成消息验证码完成加密,生成ads_b消息并传输给ads-b发送器;

步骤3:接收方接收ads-b消息进行校验。

上述技术方法中,所述步骤1可信第三方为每个应用ads-b的飞机生成加密和消息验证所需安全参数,通过安全信道分发给各飞机,并通过广播信道广播给飞机包括以下几个步骤:

步骤1.1:可信第三方每个应用ads-b的飞机选取安全参数并通过算法生成加密所需密钥和加密所需参数;

步骤1.2:可信第三方将加密所需密钥和加密所需参数代入加密算法公式生成假名;

步骤1.3:可信第三方为每个应用ads-b的飞机选取不同的随机密钥作为密钥链的第n个密钥,并运用单向哈希函数f生成一条只可单向推导的密钥链密钥链并取出第一个密钥;

步骤1.4:将假名和密钥链组成二元组[假名,密钥链]后通过安全信道分发给飞机,将假名和第一个密钥组成二元组[假名,第一个密钥]后通过广播信道广播给飞机;

上述技术方法中,所述步骤2各飞机在飞行过程中通过ads-btransponder接收安全参数后生成消息验证码完成加密,生成ads_b消息并传输给ads-b发送器,保证生成的ads-b消息对于原ads-b协议的兼容性,包括以下步骤:

步骤2.1:加密所需参数的接收:飞机接收来自可信第三方的安全参数中的假名和密钥;

步骤2.2:构建消息验证码的输入:从密钥链中取出第i-1个链密钥,并通过截断函数得到第i-1个短密钥;将原始消息中的data字段连同前一条报文使用的密钥作为消息验证码算法的输入;从密钥链中取出第i个链密玥,并计算第i个短密钥,将第i个短密钥为消息验证码算法的另一个输入;

步骤2.3:生成消息验证码:将原始消息中的data字段连同前一条报文使用的密钥和第i个短密钥代入消息验证码算法公式中生成消息验证码;

步骤2.4:完成加密并发送报文:飞机用收到的假名替换原有的icao,将生成的消息认证码连同前一条报文使用的密钥作为新ads-b消息的data字段,构建第i个报文,并将第i个报文通过1090mhz信道广播给接收方。

上述技术方法中,所述步骤3接收方接收ads-b消息进行校验当报文未丢失时,包括以下几个步骤:

步骤3.1:接收第i-1个报文缓存;

步骤3.2:待收第i个报文之后,将新报文data字段中的第i-1个短密钥取出,将缓存中data字段中去除第i-1个消息验证码之后剩余的部分取出,用第i-1个短密钥通过截断函数得到第i-2个短密钥,将第i-2个短密钥与缓存中data字段中去除第i-1个消息验证码之后剩余的部分比较。若相同,则跳至3.3,否则跳转3.5;

步骤3.3:从缓存中取出第i-1个消息验证码,通过消息验证码算法得到第i-1个新消息验证码,将缓存中的第i-1个消息验证码与第i-1个新消息验证码比较,若相同,则验证成功跳转3.4,否则跳转3.5;

步骤3.4:读取第i-1个报文并分析缓存中ads-b消息的原始data字段,并缓存最新的第i个报文;

步骤3.5:校验失败,丢弃最新收到的包。

上述技术方法中,所述步骤3接收方接收ads-b消息进行校验当报文丢失时,包括以下几个步骤:

步骤3.1:接收第i-1个报文缓存;

步骤3.2:将缓存中data字段中去除第i-1个消息验证码之后剩余的部分和第i-1个消息验证码取出,从新报文的data字段中取出第i+m-1个短密钥,通过截断函数向前推导得到第i-2个前短密钥,将第i-2个前短密钥与第i-2个短密钥比较,若相同,则跳至3.3,否则跳至3.5;

步骤3.3:向后回退一个密钥距离,通过截断函数得到第i-1个短密钥,第i-1个短密钥通过消息验证码算法得到第i-1新消息验证码,将第i-1新消息验证码与第i-1消息验证码比较,若相同,则校验成功跳转3.4,否则跳转3.5;

步骤3.4:读取第i-1个报文包并分析缓存中ads-b消息的原始data字段,并缓存第i个报文包;

步骤3.5:校验失败,丢弃最新收到的包。

上述技术方法中,加密算法采用ffx,消息验证码算法采用基于密钥链的hmac-md5。

上述技术方法中,步骤2.1接收的假名与步骤2.4中icao位数相同;步骤2.3中,对于消息认证码的生成以及ads-b消息的构造,包含认证码的新ads-b消息的data字段中tc字段值为25。

因为本发明采用上述技术方法,因此具备以下有益效果:

(1)在实际执行过程中,加密结果的格式与原报文中明文的格式相同,从而保证了对于原有ads-b协议的兼容性,促进针对ads-b航空领域广播通信协议的完整性;

(2)消息认证码通过将其连接密钥链中前一密钥后填充入tc=25的保留ads-b消息中,从而保证其中的消息认证码数据不会被飞机解析成相关位置信息,也确保了对于原有ads-b协议的兼容性;

(3)本发明在生成消息认证码的密钥基于密钥链以及延迟认证技术,使得开发人员可以定期更换密钥而不必向所有终端通知新密钥,有效提供针对ads-b航空领域广播通信协议的机密性与安全性;

(4)本发明的密钥链基于密钥链的单向性,在ads-b消息出现丢失的情况下仍可以对待认证消息进行认证,从而保证了该方案在实际运用中对于保温丢失的容错性。

附图说明

图1是方法整体流程示意图;

图2是ads-b消息格式图;

图3是构造报文数据包的方法图;

图4为应用环境的系统模型图。

具体实施方式

为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明提出了一种针对ads-b协议保密性及完整性的解决方法,在加密及生成消息验证码的同时保证生成的ads-b消息对于原ads-b协议的兼容性方面取得良好的效果。整个方案整体流程示意图如图1所示,包括步骤:

我们通过已有的opensky开源项目获取.avro文件,其中包含有原始ads-b消息和其他如传感器编号等信息。

在java程序中,运用org.apache.avro接口可以实现对于.avro文件的读取和解析。通过opensky提供的org.opensky.example.modesencodedmessage读取rawads-b消息,因为ads-b消息的格式是固定的,所以可以将指定数位读取出来。再通过在modesencodedmessage中增加加密方法来实现ffx加密。

加密过程中,java程序将rawmessage通过传参的方式将其传给python程序。在python程序中通过gmpy包实现高精度运算,通过crypto包直接实现aes加密,并在aes加密的基础上编程实现ffx加密算法;用python的hashlib库生成后期生成消息验证码所需的密钥链;连通hmac库文件模拟消息认证码的生成。

如图2所示,python程序将加密之后的icao以及k′i-1||γi再传送回java程序。由java程序负责将原始的icao替换为pid,并在原始消息后再追加新的ads-b消息,其中tc字段置为25,表示此条ads-b消息为保留消息,其data字段用来存放k′i-1||γi。

因为本方案的基本要求为保证对于原始ads-b协议的兼容性,因此为了最终测试的便利性,我们在生成新的ads-b消息之后,用opensky提供的javaapi接口org.opensky.example.modesencodedmessage将新的ads-b消息写入.avro文件,再运用opensky提供的avro2kml工具将.avro文件转换成可以被googleearth识别的.kml文件,通过对比文件前后在googleearth上的轨迹是否相同来判断对于原先ads-b协议的兼容性。

本发明在兼容现行ads-b协议格式的基础上实现对传统明文广播传输消息的机密性以及完整性的保障,整个方法实现流程图如图1所示,包括步骤:

步骤1:可信第三方系统初始化:可信第三方为每个应用ads-b的飞机生成加密和消息验证码所需的安全参数,通过安全信道分发给各飞机,并通过广播信道广播出去,其步骤如下:

a、可信第三方选取安全参数λ并执行算法θ(λ)为每个应用ads-b的飞机生成加密所需密钥和加密所需参数ti,其中

b、可信第三方执行加密算法将身份码进行加密,为每架飞机生成相应的假名pidi,其中icaoi为存储在ads-b报文aa字段的24位身份码;

c、可信第三方为每个应用ads-b的飞机选取不同的随机密钥kn作为密钥链的第n个密钥,并运用单向哈希函数f,运行fv(x)=f(fv-1(x))生成一条只可单向推导的密钥链keychain=(k1,k2,...,kn),并取出第一个密钥k1.;

d、将假名pidi和密钥链keychain组成二元组σ1=(pidi,keychain)通过安全信道分发给飞机,并将假名pidi和第一个密钥k1.组成二元组σ2=(pidi,k1)通过广播信道广播给飞机。

步骤2:各飞机在飞行过程中通过ads-btransponder接收安全参数后生成消息验证码完成加密,生成ads_b消息并传输给ads-b发送器,处理步骤如下:

a、加密所需参数的接收:接收来自可信第三方的假名和密钥;

b、构建消息验证码的输入:对于第i个ads-b消息,从密钥链中取出第i-1个链密钥ki-1,并通过截断函数f′(x)得到第i-1个链密钥对应的短密钥k′i-1=f′(ki-1);原始消息中的data字段连同前一条报文使用的密钥<mi||k′i-1>作为消息验证码算法的输入,从密钥链中取出第i个链密钥ki,通过k‘i=f’(ki)计算第i个短密钥k‘i,第i个短密钥k‘i作为消息验证码算法的另一个输入;

c、生成消息验证码:将第i个短密钥k‘i和原始消息中的data字段连同前一条报文使用的密钥<mi||k′i-1>代入消息验证码算法公式得到消息验证码γi;

d、构建data字段和构建发送报文:飞机用收到的假名pid替换原有的icao,将生成的消息认证码连同前一条报文使用的密钥datai=<mi||k′i-1||γi>作为新ads-b消息的data字段,构建第i个报文pi=<head||pidi||datai||pii>(head为ads-b报文头;pid为生成的假名;data为数据字段;pi为奇偶校验字),并将第i个报文pi通过1090mhz信道广播给接收方。

步骤3:接收方接收ads-b消息进行校验,对于没有出现报文丢失的理想情况,其步骤如下:

a、收到第i-1个报文pi-1之后先缓存;

b、待收到第i个报文pi之后,将缓存中data字段中去除第i-1个消息验证码之后剩余的部分di-1=<mi-1||k′i-2>(mi-1为第i-1条ads-b报文中原始的数据字段,k′i-2为第i-2个短密钥)取出,并从第i个报文pi中取出第i-1个短密钥k′i-1,计算第i-2个短密钥k″i-2=f′(f(k′i-1)),将k′i-2∈di-1进行比较,若相同,执行c,否则跳转d;

c、从缓存中取出第i-1个消息验证码γi-1,通过消息验证码算法计算第i-1个新消息验证码γ′i-1;比较γi-1和γ′i-1的大小,若相同,则校验成功,从第i-1个报文pi-1中读取信息,缓存第i个报文pi,否则跳转d;

d、校验失败,丢弃最新接收的包。

步骤3:接收方接收ads-b消息进行校验,对于出现报文丢失的情况,其步骤如下:

a、收到第i-1个报文pi-1之后先缓存;

b、待收到第i+m个报文pi+m之后,将缓存中data字段中去除第i-1个消息验证码之后剩余的部分di-1=<mi-1||k′i-2>和第i-1个消息验证码γi-1取出;从第i+m个报文pi+m中取出第i+m-1个短密钥k′i+m-1,通过截断函数k″i-2=f′(fm(k′i+m-1))计算第i-2个短密钥,将k″i-2同k′i-2比较;若相同,跳转c,否则跳转d;

c、通过k′i-2=f′(fm-1(k′i+m-1))计算回退一个密钥距离的第i-1个短密钥,通过消息验证码算法计算第i-1个新消息验证码,并将第i-1个新消息验证码γ′i-1同第i-1个消息验证码γi-1进行比较;若相同,则校验成功;否则跳转d;

d、校验失败,丢弃最新接收的包。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1