消息安全通信算法分发送端算法与接收端算法两部分,发送端算法描述如下。
(1)设置本次建立连接后通信的会话号,转步骤(2)。
(2)如果在一段时间内未收到消息,则进行新消息的发送,转步骤(3)。否则,对接收到的消息进行处理,转步骤(7)。
(3)判断发送端所要发送的安全数据Mi的类型,如果无法识别则报错,转步骤(2)。否则为可识别的类型,转步骤(4)。
(4)对发送端所要发送的安全数据Mi进行封装操作。封装过程分为以下几步:①加载本次即将发送的安全数据Mi;②加载1字节的状态位,该状态位初始值为1,表示正常通信:③加载1字节的会话号;④加载1字节的序列号;⑤根据发送端上一个CRC校验值与当前安全数据城一起计算出新的CRC校验值,加载该新的CRC校验值,大小为2字节。封装完毕,发送封装后的消息给接收端,转步骤(5)。同时记录新的CRC校验值用于下一次发送校验。
(5)如果发送端所发送的安全数据从的类型是同步消息,转步骤(2)。否则为异步消息,转步骤(6)。
(6)中断发送端消息的发送,等待接收到安全数据Si后,转步骤(2)。
(7)读取所接收消息的序列号,根据序列号提取相关CRC:校验值,进行校验,如果校验成功,转步骤(8)。否则校验不成功,转步骤(9)。
(8)提取所接收消息中的状态位,如果是0,即为重发请求,则重发消息,然后转步骤(2).否则,不是重发请求,直接转步骤(2)。
(9)要求从站重发,将状态位置为0,将重发消息发送给接收端,然后转步骤(2)。
接收端算法描述如下。
(1)等待发送端所发送的消息,根据其会话号和序列号提取相关CRC校验值,转步骤(2)。
(2)使用提取的CRC校验值对所接收的消息进行校验,如果校验通过,则转步骤((3)。否则校验未通过,转步骤(5)。
(3)提取所接收消息中的状态位,对其值进行判断,如果为1,是正常消息,转步骤(4)。否则为0,是重发消息,则进行重发,转步骤(1)。
(4)提取所接收消息中的CRC校验值并储存,然后用储存的CRC校验值对欲发送给发送端的安全数据S;进行处理,得到的新的CRC校验值并不存储,但却跟安全数据Si、状态位、会话号以及序列号封装到一起,共同发送给发送端,然后转步骤(1)。
(5)判断该消息发生错误的次数,如果大于某个设定界限,则向发送端发送上一消息的重发请求消息,然后转步骤(1)。否则,向发送端发送该消息的重发请求消息,然后转步骤(1)。
3 性能分析
剩余错误率为检验消息安全传输方法性能好坏的主要标准之一。首先定义性能分析中需要用到的各种函数及变量。
(1)Sd:安全数据,即需要安全传输的原始数据,用Sa (x)表示其多项式。
(2) Sc:校验值,由上一个CRC校验值与安全数据Sa共同求得,用Sc(x)表示其多项式。
(3) G:生成多项式,用g(x)表示其多项式。
(4) m:安全数据Sd所包含的位数。
(5) r:生成多项式g(x)的度数,亦即Sc中所包含的位数。
(6) n:在通信中传输的帧的位数。
(7) Be:在通信中发生错误的位的总数。
(8) Bude:在通信中没有被检测到的错误位的总数。
(9) Ball:在通信中所有传输位的总数。
3.1 CRC方法