一种基于跳通道模式的抵御ddos攻击的方法_2

文档序号:9508558阅读:来源:国知局
为Echo request-回显 请求(ping请求)。
[0036] (二)密钥协商阶段
[0037] 利用STS(Station-to_Station,站到站)算法,通过预定的多通道进行密钥协商, 产生共享密钥TSK。
[0038] (三)、映射跳变信息阶段
[0039] (la)使用哈希函数将临时密钥TSK映射成128比特长度的数据M。
[0040] (lb)通道类型有 TCP、UDP、IP、ICMP 几种。
[0041] 将通道类型编号,如下表1 :
[0043] ICMP的类型表,如下表2 :

[0045] (lc)取出Μ前8比特,对其进行模5运算,结果为P(0到4)。暂设通道类型一共 4种,则得到的通道数N = 4+P,N为4到8,则通道数最大为8。
[0046] 通道类型直接按类型表顺序分配,总共所需要的通道数为N,则第一次先选TCP通 道,选Μ前16比特,得到数之后判断其大小,若小于1024,将该数加上1024为端口号,若大 于等于1024,则此数值为端口号,为TCP通道分配该端口号,检查该端口号是否被占用,若 被占用,则端口号+1,再检查,直到确定了端口号;再选UDP通道,取Μ下一 16比特,重复上 述确定端□号的过程,然后选IP通道,再然后选ICMP通道,取Μ下一 16比特,对Μ进行模 10运算,结果是几,就在ICMP类型表中选择对应的类型,若已被选择,则类型号+1,再检查, 直到确定了 ICMP通道的类型。若此时还需要几个通道,继续按照类型表循环选择,选TCP 通道,取Μ下一 16比特,按上述过程确定端口号,再选UDP通道,取Μ下一 16比特,按上述 过程确定端口号,再选IP通道,如果被占用,则跳过,则再选ICMP通道,按上述过程确定其 通道类型,然后按照上述过程按照类型表循环选择,直到选够所需要的通道数N并为所有 通道分配了端口号。
[0047](四)、建立新通信阶段
[0048] 将通道类型和端口号的列表发送给接收方,接收方发送同意通信的通道类型和端 口号的列表,进行确认。此时双方拥有相同的通信列表,可以进行新通信了。
[0049](五)、XML格式定义数据包
[0050] 设id种XML(Extensible Markup Language,可扩展标记语言)的消息数据格式, 携带有数据包的唯一性标识,携带有片段编号用于标识分块数据的顺序并用于删除重复的 数据包,同时也加入加密和签名。该XML格式用于传递通信双方的信息,这些消息得到加密 算法的保护,也能通过验证签名来确定消息的来源。
[0051] 数据包格式如下:
[0052]
[0053] XML文档包括元素:
[0054] A.特殊标识:用于标记本次所有通信的数据包,对不带本标识ID的数据包进行排 除和丢弃。
[0055] B.唯一会话标识:用于对来自同一个会话的数据进行重组,可在发送数据包之 前,产生一个随机数当作第一个数据包的唯一性标识。此项必须出现且只出现一次。
[0056] C.片段编号:用于标识分块数据的顺序。同时用于删除重复的数据包,对于唯一 性会话标识相同,片段编号也相同的XML文档,进行删除。
[0057] D.标志位:类似于IP头中的flag标志,对同一个文件的分包,只有最后一个分包 标志位为0,其他都为1.接收方直到收到标志号位1的数据包才开始进行还原。
[0058] E.加密算法标识:DTD文档约束可写为:
[0059] 〈! ELEMENT 加密算法(null ? | DES ?) >
[0060] F.签名算法标识:DTD文档约束可写为:
[0061] 〈! ELEMENT 签名算法(null ? | RSA ?) >
[0062] G.传输编码标识:DTD文档约束可写为:
[0063] 〈! ELEMENT 传输编码(null ? | BASE64 ?)>
[0064] Η.消息域:分块后的数据,可能是加密并编码过的。
[0065] I.签名域:可以对每个封装好的数据包进行签名,进行认证和使得接收方对数据 可靠性进行校验。若签名算法标识域为空,则此项为空;若签名算法标识域为RSA,则为产 生的签名。
[0066] 举例如下:
[0067] 〈? xml version = 〃1· 0"encoding = 〃UTF_8" ? >
[0068] 〈Element〉
[0069] <ID>99XD20150505555</ID>
[0070] <sID>l</sID>
[0071] 〈fragment number)1</fragment number)
[0072] <flag>l</flag>
[0073] 〈encryption mark>DES〈/encryption mark>
[0074] 〈signature mark>RSA〈/signature mark>
[0075] 〈transfer mark>BASE64〈/transfer mark>
[0076] 〈Message content>buf〈/Message content〉
[0077] <signature>MIGfMA10GCSqGSIb32DQEBA3QU5AA4GNADCBiQKBgQC8rPqGGsarGSI4 b3cfM68A0bdgy2GD3QEBAhQGSIgesb3D7QEBGSIb3DQEBAQUAAAQUAAUAAGSIb3DQEBAQUAA</ signature)
[0078] 〈/Element〉
[0079] (六)、传递信息阶段:
[0080] 设计数据的接收队列和发送队列。
[0081] (4. a)发送模块:
[0082] 先得到即将发送的数据或文件,进行分块,每块大小为1400字节,每块大小= 1400 - IP头开销一传输层协议头开销一 xml文件中非消息域的开销。将文件按xml文件 格式进行封装,并依次放入一个循环队列。
[0083] 取一个滑窗大小η,通过已有的通道类型和端口号,发送数据包。收端有反馈机制, 当反馈没有超时,继续按照滑窗方式工作,并清除发送过的η个包同时填入新的包,若反馈 超时,则从超时的包开始重发。收到缺包反馈时,从缺失的包开始重发。同一组发送通道遇 到同时有多个文件发送时,将待发送文件建立优先级,并排队,再依次发送。
[0084] b)接收模块:
[0085] 从接收队列收到数据包,记下接收的数据包的序号,先检查其是否符合xml文档 格式,若不符合,丢弃之,再查看其片段编号,假如解析出的文档片段编号小于接收序号,也 丢弃之,若大于接收序号,将其放入一个临时队列,等于该序号的,直接放入收方磁盘,放入 的内容是去除了 xml其他部分的解密后的消息域部分。将接收序号+1,检查临时队列,是否 有等于该序号的,若有,放入磁盘,并把相同序号的都从临时队列删去,将接收序号+1,继续 检查临时队列,若无,解析接收队列中xml文件,依此循环,将临时队列的大小设置为合适 的值,若临时队列满了,仍然没有收到希望收到的序号的文件,则判断为丢包,向发方反馈 丢包信息。同时清空临时队列和公共接收通道以及各个通道已经保存的
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1