RFID通信数据完整性措施

2020-12-17 09:22:21 潘春伟

通信数据的完整性是数据安全传输的一个重要方面,它要求接收方收到的数据必须是发送方发出的正确无误的数据。在数据传输过程中,通信介质中的数据会受到各种环境因素的干扰,窃听者有时也会篡改数据,导致接收方收到的数据与发送方发送的数据不一致。

保障数据完整性的措施之一是进行数据的完整性校验。完整性校验的基本方法是在传输的数据中额外增加一些纠错信息,这些纠错信息和传输的数据存在某种算数或逻辑关系,接收端可以利用这些关系和纠错码来判断接收的信息是否与发送方发出的信息一致。

RFID系统中读写器与电子标签之间通信采用的保障数据完整性的措施主要有奇偶校验法、纵向冗余校验法和循环冗余码校验法等。

1 奇偶校验法

奇偶校验(Parity Check)是一种简单而应用广泛的数据校验方法。奇偶校验的基本思路是在传送的每一个8bit字节后面增加1位校验位,如果规定这9位中1的个数是奇数个,则称为奇校验;如果9位中1的个数为偶数个,则称为偶校验。

通信双方在通信之前要约定好采用奇校验还是偶校验。通信时接收方收到每1字节的数据位和校验位后检查1的个数,如果约定的是偶校验而1的个数为奇数,或者约定的奇校验但是1的个数为偶数,则判断所接收数据错误,否则判定所接收数据正确。

奇偶检验的实现可以采用软件,也可以使用硬件电路。用简单的逻辑门搭建的8位二进制数奇偶校验位生成电路如图1所示。

明申智能卡 RFID通信数据完整性措施
 

图1  8位二进制数奇偶校验位生成电路

奇偶检验识别错误的能力较低。例如,在8位二进制数中如果同时有两个bit发生了反转,则这种错误不影响奇偶校验位的输出值,从而无法检验出错误。可见奇偶校验只能判断奇数个错误,而对偶数个错误无能为力。

2 纵向冗余校验法

纵向冗余校验(Longitudinal Redundancy Check,LRC)是另一种通信中常用的校验形式。LRC是把传输数据中的所有字节进行按位运算,其结果就是校验字节。在传输数据时,校验字节同正常数据一起发送。接收端收到数据后将数据字节作同样的运算,如果结果和发送方的校验字节相同,则认为接收的数据是正确的,否则认为数据接收错误。

LRC中采用的运算方法有多种,常见的有求和及异或校验。例如发送数据0x495A3D6E87,当采用异或校验时,发送方与接收方的运算过程如图2所示。

LRC校验识别错误的能力也不高。当字节间采用异或运算时,同奇偶检验类似,当8列中的某一列数据中同时有两个bit发生了反转,这种错误不影响LRC校验的结果,从而无法检验出错误。

明申智能卡 RFID通信数据完整性措施
图2  采用异或运算的LRC校验实例

3 循环冗余码校验法

循环冗余校码校验(Cyclic Redundancy Check,CRC)广泛应用于数字通信中的数据链路层,其原理是利用除法及其余数来进行错误检测。通信的双方需要事先约定好一个除数,然后将要传输的数据看作被除数,发送方在发送数据前执行被除数与除数之间的除法运算得到余数,之后将这个余数附着在待发送数据的尾部一起发送。接收方收到全部数据后作同样的除法运算,如果余数相同则认为所接收的数据正确,否则判定所接收的数据错误。与我们常规对除法的理解不同,CRC校验的除法中各个要素规定如下。

1.除数

CRC校验中的除数是一个由二进制位串组成的代码,该代码通常用一个系数取值仅为0和1的多项式表示,称为生成多项式,生成多项式应满足以下条件:

(1)生成多项式的最高位和最低位必须为1;

(2)当被传送信息任何一位发生错误时,被生成多项式做除后应该使余数不为0;

(3)不同位发生错误时,应该使余数不同;

(4)对余数继续做除,应使余数循环。

一般根据余数的位数命名不同的CRC校验,命名形式为CRC-R,比如CRC-8、CRC-16等,除数比余数多一位。常用的CRC校验及其生成多项式如表1所示。

表1 常用的CRC校验及其生成多项式

名称

生成多项式

二进制

十六进制

CRC-4

x4+x+1

10011

13

CRC-8

x8+x5+x4+1

100110001

131

CRC-12

x12+x11+x3+x2+x+1

1100000001111

180F

CRC-16

x16+x15+x2+1

11000000000000101

18005

CRC-ITU

x16+x12+x5+1

10001000000100001

11021

CRC-32

x32+x26+x23+x22+x16+x12+x11

+x10+x8+x7+x5+x4+x2+x+1

10000010011000001

0001110110110111

104C11DB7

2.被除数

被除数由待发送的信息生成,但被除数并不完全等于待发送信息数据,而是由待发送的信息数据左移R位得到,或者说是由待发送数据右侧补充R个0得到。

3.除法

用被除数除以生成多项式(二进制数)。这里的二进制除法不同于日常运算中的除法,除式中的竖向运算不使用减法,而是使用模2加,即异或运算。

4.余数

余数由被除数除以生成多项式得到,如果余数的宽度不足R位,要在左侧补0凑足R位。将余数拼到信息码后面的位置,即得到完整的CRC码。

例:假设待发送的信息数据为10110,使用表1中的CRC-4进行校验,则除数为10011,发送端的被除数后面补4个0,运算后得到余数1111。发送时使用余数代替被除数后面的4个0,形成发送数据101101111,接收端收到该数据后用相同的除数进行除法运算,结果余数为0,证明数据接收正确。发送端与接收端的计算过程如下。

明申智能卡 RFID通信数据完整性措施

图3  CRC校验实例


首页
产品
动态
联系