用于城市路桥自由流收费的车道PSAM卡及其使用方法
技术领域
本发明涉及城市智能交通应用领域中基于城市路桥自由流电子收费的车道PSAM(PurchaseSecureAccessModule,销售点终端安全存取模块)卡技术方案。
背景技术
目前,城市路桥自由流收费技术是世界上最先进的路桥收费技术之一。它是一种没有设置任何收费路障的快速电子收费系统。这种收费系统在一些发达国家已经相当成熟,但由于中国的应用市场与国外的应用市场存在很大的差异,所以直接运用国际现有的成熟技术会存在一定的风险;而在国内还处在研究阶段,尚未有应用案例。
电子收费系统(ElectronicTollCollection,简称ETC)是国际上正在努力开发并推广的用于公路、大桥和隧道的自动收费系统,特别适于高速公路或交通繁忙的桥梁和隧道采用。在电子收费系统中,车辆需安装具有唯一标识的电子标签(即OBU,OnBoardUnit,车载单元),而在收费站的车道或公路的龙门架上安装可读写对应电子标签的路侧读写器(即RSU,RoadSideUnit,路侧单元)和车道控制器。
车道PSAM卡是一种终端安全控制模块,放置于RSU中,用于通讯过程中的安全保护、多级密钥分散、数据加密、解密、计算MAC(MessageAuthenticationCode,信息鉴别码)等运算操作。
目前中国电子收费系统的DSRC(DedicatedShortRangeCommunications,专用短程通信)国家标准GB/T20851-2007《电子收费专用短程通信》中的PSAM卡技术规范主要应用于一些省市的高速公路电子收费,其处理速度较慢,每条COS指令执行时间较长,而且无法应对多个OBU的并发处理的情况,因此无法满足城市路桥自由流电子收费的应用需求。
发明内容
本发明所要解决的技术问题是:提供一种用于城市路桥自由流收费的车道PSAM卡及其使用方法,本发明性能良好,能满足城市路桥自由流收费多OBU的并发处理。
本发明所采用的技术方案是:用于城市路桥自由流收费的车道PSAM卡,其文件结构采用树状层级结构,根节点为主控文件MF,其子节点包括目录数据文件DIR、卡片公共信息文件、终端信息文件、主密钥文件、基本应用目录DF01、第一扩展应用目录DF02和第二扩展应用目录DF03,第二扩展应用目录包括应用公共信息文件、终端应用交易序号和第二密钥文件。
所述的车道PSAM卡,所述主密钥文件和第二密钥文件结构见下表:
用于城市路桥自由流收费的车道PSAM卡的使用方法,包括路侧单元对车载单元进行并发操作中的双向安全认证过程,双向安全认证过程依次包括路侧单元对车载单元的信息鉴别过程和车载单元对路侧单元的访问许可认证过程。
所述的方法,信息鉴别的方法包括以下步骤:
S1)路侧单元对车载单元发送信息鉴别命令报文,在ACCOMPLISHAUTHENTICATION命令调用入口,车载单元EASM(EmbeddedSecureAccessModule,嵌入式安全控制模块)返回给路侧单元车载单元随机数序列号、车载单元密钥版本号和车载单元合同序列号;
S2)路侧单元根据车载单元密钥版本号,通过SETKEYINDEX命令选择相应的车载单元加密主密钥RK2;
S3)路侧单元的PSAM卡随机产生信息鉴别随机数和信息鉴别随机数序列号;
S4)路侧单元利用车载单元合同序列号对RK2进行分散,生成临时车载单元加密主密钥tmpEncryptKey;
S5)路侧单元利用车载单元随机数序列号选择对应的信息鉴别随机数randRSUforAuthen,利用tmpEncryptKey对randRSUforAuthen进行数据加密运算生成临时信息鉴别码tmpAuthenticator;
S6)路侧单元将信息鉴别随机数传输至车载单元;
S7)车载单元对传输得到的信息鉴别随机数进行加密运算产生信息鉴别码Authenticator,并传输到路侧单元;
S8)路侧单元将tmpAuthenticator和Authenticator对比进行信息鉴别认证,相同则车载单元信息合法并进行后续处理,否则车载单元信息非法。
所述的方法,步骤S3中,路侧单元通过EXPANDGETCHALLENGE命令将信息鉴别随机数、信息鉴别随机数序列号存放在PSAM缓存中的随机数列表中,其中随机数序列号从0至31循环产生,随机数序列号初始值为0,每调用一次本步骤获取随机数的方法,随机数序列号增1,随机数重新生成,当随机数序列号为31时完成一次循环,重新从0开始递增;步骤S5是通过车载单元随机数序列号从随机数列表中寻找对应的信息鉴别随机数序列号,并通过信息鉴别随机数得到相应的信息鉴别随机数。
所述的方法,所述的访问许可认证方法为:
S9)车载单元对路侧单元发送访问凭证命令报文,在GETACCESSCREDENTIALS命令调用入口,将车载单元合同序列号和车载单元密钥版本号发送给路侧单元;
S10)车载单元ESAM卡随机产生访问许可认证随机数,并将访问许可认证随机数传输至路侧单元;
S11)路侧单元根据车载单元密钥版本号,通过SETKEYINDEX命令选择相应的车载单元认证主密钥RK1;
S12)路侧单元利用车载单元合同序列号对RK1进行分散,生成临时车载单元认证主密钥tmpAccessKey;
S13)路侧单元利用tmpAccessKey对访问许可认证随机数加密生成访问许可认证码accessCredentials;
S14)路侧单元将accessCredentials传输至车载单元;
S15)车载单元对访问许可认证随机数加密生成临时访问许可认证码tmpAccessCredentials;
S16)车载单元将tmpAccessCredentials与accessCredentials对比进行访问许可认证,相同则路侧单元访问合法并进行后续处理,否则非法。
所述的方法,步骤S5或S13的数据加密运算算法为三重数据加密标准。
本发明充分考虑国内城市路桥收费特点,结合国外电子收费技术的成功实践经验,并兼容现有的中国DSRC国家标准,建立一种基于城市路桥自由流收费应用的车道PSAM卡技术方案,其具有以下几个技术优势及特点:
(1)设计了COS(ChipOperatingSystem,片内操作系统)专用指令,极大地加快了卡片处理速度,并提高了其工作性能;
(2)设计了车道PSAM卡片的文件结构,使其满足城市路桥自由流收费的应用需求;
(3)支持多密钥存储,确保其安全性;
(4)设计了应对多个OBU的并发处理机制,使其能够同时对多个OBU进行安全认证操作;
附图说明
图1是车道PSAM卡文件结构。
图2是专用命令2——ACCOMPLISHAUTHENTICATION命令执行流程图。
图3是专用命令3——GETACCESSCREDENTIALS命令执行流程图。
具体实施方式
本发明综合运用了智能交通电子收费技术、芯片安全密钥技术、双向认证技术以及计算机软件技术,属城市智能交通应用领域。本发明设计采用专用的终端安全PSAM控制模块,放置于RSU中,用于通讯过程中的安全保护、多级密钥分散、数据加密、解密、计算MAC等运算操作,主要用于城市路桥自由流电子收费的车道PSAM卡通信,包括PSAM文件结构及文件详细说明、PSAM密钥说明、PSAM并发处理机制、PSAM卡COS专用指令设计等,极大地加快了PSAM卡的处理速度,并提高了其工作性能,使其能够同时处理多个OBU并发情况,更好的满足城市路桥自由流收费系统的应用需求。
本发明基础性的重大突破,针对目前城市路桥收费现状及国内智能交通领域的其他实际应用需求,提出一种全新的车道PSAM卡技术方案,设计了COS专用指令和PSAM卡并发处理多个OBU机制,并相应的扩展了PSAM卡文件结构。本发明以尽量减少数据读写次数为原则,采用帧合并技术、缓存技术和指令多功能设计,使其能够应对多个OBU并发安全认证处理,快速可靠的完成交易流程。
本发明基于城市路桥自由流收费应用的车道PSAM卡技术方案包括以下内容:
1.车道PSAM卡文件结构及文件详细说明:文件结构见图1,详细说明如下:
2.车道PSAM卡密钥说明如下:OBU加密主密钥和OBU认证主密钥均采用多组存储,在实际应用中通过设定不同的密钥版本号进行选择性使用,确保交易的安全性。
3.车道PSAM卡COS专用指令:
(1)专用指令1——EXPANDGETCHALLENGE:用于自由流收费模式下路侧单元处理多个OBU并发情况,路侧单元同时获取一个随机数(8字节)及随机数序列号(1字节),并将随机数、随机数序列号存放在PSAM缓存中的一个随机数列表中,PSAM将根据车载单元返回的随机数序列号与PSAM卡随机数列表中进行对应,根据随机数序列号分别对多个OBU进行认证操作;其中随机数序列号从0至31循环产生(共32组),随机数序列号初始值为0。每调用一次该命令,随机数序列号增1,随机数重新生成。当随机数序列号为31时完成一次循环,重新从0开始递增,其命令报文定义如下:
代码 |
数值(16进制) |
CLA |
‘D0’ |
INS |
‘84’ |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
不存在 |
DATA |
不存在 |
Le |
‘09’包括随机数(8字节)+随机数序列号(1字节),共9字节 |
上述报文中,CLA表示命令类别,INS表示命令报文的指令字节,P1表示参数1,P2表示参数2,Lc表示终端发出的命令数据的实际长度,DATA表示具体数据,Le表示响应数据中的最大期望长度。
响应报文数据域包括随机数(长度8个字节),随机数序列号(1个字节)一共9个字节。响应报文格式如下:
响应信息中可能返回的状态码有:
SW1 |
SW |
说明 |
90 |
00 |
命令执行成功 |
67 |
00 |
Le长度错误 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
(2)专用命令2——ACCOMPLISHAUTHENTICATION:用于完成对OBU进行信息鉴别操作,其命令报文定义如下:
命令执行过程见图2,具体描述如下:
●根据密钥版本号选择相应的OBU加密主密钥RK2(MasterEncryptKey,16字节);
●利用合同序列号ContractSerialNumber(8字节)对其进行分散,生成临时OBU加密主密钥tmpEncryptKey(16字节),若分散不成功则结束该过程(状态码SW1为6A,状态码SW2为88);
●利用随机数序列号选择对应的随机数randRSUforAuthen,利用临时加密密钥tmpEncryptKey对randRSUforAuthen进行TDES运算生成tmpAuthenticator,算法如下:
tmpAuthenticatior=TDES(tmpEncryptKey,randRSUforAuthen)
若生成不成功则结束该过程(状态码SW1为95,状态码SW2为03);
●即利用tmpAuthenticator和车载单元的ESAM(EmbeddedSecureAccessModule,嵌入式安全控制模块)发送过来的鉴别码Authenticator对比进行信息鉴别认证,相同则OBU信息合法,否则非法(状态码SW1为96,状态码SW2为02)。
响应报文数据域不存在,响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
64 |
00 |
标志状态位没变 |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
69 |
86 |
没有选择当前文件 |
69 |
88 |
安全信息(MAC和加密)数据错误 |
6A |
81 |
功能不支持 |
6A |
85 |
Lc与TLV结构不匹配 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
96 |
02 |
Authenticator信息鉴别失败 |
95 |
03 |
tempAuthenticator生成失败 |
(3)专用指令3——GETACCESSCREDENTIALS:用于生成RSU访问许可证书,并同时读取RSU中PSAM卡的PSAMID信息,其命令报文定义如下:
命令执行过程见图3,具体描述如下:
●RSU利用密钥版本号(1字节,入口参数所得)选择相应的OBU认证主密钥RK1(MasterAccessKey,16字节);
●利用合同序列号(ContractSerialNumber,8字节)对其进行分散,生成临时OBU认证主密钥tmpAccessKey,若分散失败则结束本过程(状态码SW1为6A,状态码SW2为88);
●利用临时密钥tmpAccessKey对RandOBU进行TDES加密生成访问许可证书accessCredentials,并同时读取PSAMID,一起由RSU发送到OBU;
accessCredentials=TDES(tmpAccessKey,RandOBU)
若生成失败则结束本过程(状态码SW1为95,状态码SW2为01)。
响应报文数据域包括访问许可证书accessCredentials,(长度8个字节)和PSAMID(长度为6个字节),一共14个字节。
响应报文格式如下:
说明 |
长度(字节) |
accessCredentials |
8 |
PSAM ID |
6 |
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
64 |
00 |
标志状态位没变 |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
69 |
86 |
没有选择当前文件 |
69 |
88 |
安全信息(MAC和加密)数据错误 |
6A |
81 |
功能不支持 |
6A |
85 |
Lc与TLV结构不匹配 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
95 |
01 |
accessCredentials生成失败 |
(4)专用指令4——SETKEYINDEX:用于设置交易中的密钥版本号,默认为0,其命令报文定义如下:
代码 |
数 |
CLA |
‘D0’ |
INS |
‘DA’ |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
‘01’ |
DATA |
密钥版本号(1字节) |
Le |
无 |
响应报文数据域不存在,响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
98 |
01 |
设置密钥版本号失败 |
在具体应用中,以车载单元-路侧单元自由流收费模式交易方法为实施例,依次包括路侧单元发起的与多个车载单元之间同时协商彼此通信参数和配置的过程、交易数据信息帧的传送和读取的过程,以及记录报告的发送过程。
所述的方法,路侧单元发起的与多个车载单元之间协商彼此通信参数和配置的过程包括以下步骤:
S11)路侧单元发送信标服务表至车载单元;
S12)车载单元发送专用窗口请求至路侧单元;
S13)路侧单元对多个车载单元进行专用窗口分配后,并分别发送专用窗口分配控制帧给车载单元;
S14)车载单元发送车辆服务表给路侧单元。
所述的方法,步骤S11具体包括:路侧单元读取密钥版本号和支持的车载单元类型、路侧单元交易模式;然后拼接以上数据生成信标服务表,信标服务表携带密钥版本号和支持的车载单元类型、路侧单元交易模式发送至车载单元。
所述的方法,步骤S14具体包括以下步骤:
S141)车载单元读取信标服务表中的密钥版本号和支持的车载单元类型,以及路侧单元交易模式,选择相应的交易模式并将密钥版本号存入车载单元缓存中;
S142)车载单元从其嵌入式安全控制模块中读取系统信息数据、车辆关键信息数据写入车载单元缓存中;
S143)车载单元生成后续交易信息数据帧所需的部分信息,包括从嵌入式安全控制模块中读取车载单元拆卸状态及车载单元类型、访问认证随机数,写入车辆服务表的内容,并写入车载单元缓存中;
S144)车载单元依次拼接步骤S141~S143的信息,生成完整的车辆服务表并发送至路侧单元。
所述的方法,交易数据信息帧的传送和读取的过程包括以下步骤:
S21)路侧单元收到车辆服务表之后,生成交易信息下行帧,发送给车载单元;
S22)车载单元发送快速响应上行帧给路侧单元,携带命令处理最短和最长时间;
S23)路侧单元读取快速响应上行帧的时间信息,在命令处理的最短和最长时间范围内发送取结果下行帧给路侧单元。
S24)车载单元发送确认信息上行帧给路侧单元。
所述的方法,步骤S21具体包括:
S211)路侧单元通过其终端安全存取模块生成信息鉴别用随机数和信息鉴别用随机数序列号,并将访问认证随机数进行加密生成访问认证码,每个车载单元对应不同的信息鉴别随机数序列号和相应的信息鉴别随机数;
S212)路侧单元读取其存储的车道号和站点号,并生成终端机交易流水号;
S213)路侧单元将车辆服务表中的电量信息、车辆用户状态信息,生成SetMMI用户界面提示信息;
S212)路侧单元拼接步骤S211~S123的数据信息,生成交易信息下行帧并发送到车载单元。
所述的方法,步骤S211具体包括:路侧单元根据密钥版本号读取相应的认证密钥,并用车载单元系统信息数据中的合同序列号进行分散生成临时认证密钥,并对访问认证随机数进行加密,同时生成信息鉴别随机数和随机数序列号,以便后续路侧单元能够通过不同的随机数序列号对每个车载单元进行依次鉴别。
所述的方法,记录报告的发送过程具体包括:路侧单元收到确认信息上行帧之后,标识此次交易成功,并后续完成对车载单元的信息鉴别,并将路侧单元中的相关记录发送TCP报告至车道控制器,同时发送释放链路帧至车载单元,车载单元返回车载单元交易状态信息帧。
所述的方法,车载单元在建立专用链路后,在收到任何路侧单元的下行帧后发出车载单元交易状态信息帧,以通知路侧单元根据断开专用链路或保持专用链路但重新开始交易过程。车载单元在收到路侧单元的释放链路帧后需回复车载单元交易状态信息帧。车载单元在接受到释放链路帧或超过超时时间都标识本次交易成功(后续有蜂鸣器鸣叫,写交易记录等操作)。
实施例的基于城市路桥自由流应用的OBU-RSU收费模式技术方案包括以下内容:
1.信标服务表(BST)和车辆服务表(VST)应用层内容交换的编码机制同时兼容了不同的应用模式,包括收费交易模式和稽查模式,新增字段RSUTransactionMode用于标识RSU的交易模式和支持的OBU类型,具体设计见下表:
RSUTransactionMode格式定义
2.采用帧合并技术和RSU应对多个OBU的并发处理机制,设计了专用的服务原语和收费模式的交易流程,更好的满足城市路桥自由流收费模式的应用需求,详细帧格式描述如下:
(1)INITIALISATION_request(BST)(27字节)
■方向:RSU→OBU
■功能:轮询通信区域内的多个OBU,并与其协商通信参数及应用参数。
■需要执行的操作:RSU读取其存储的密钥版本号、支持的OBU类型及RSU交易模式生成BST
■发送的交易数据:密钥版本号、支持的OBU类型及RSU交易模式,ESAM专用命令序列号,RSUBeaconID(信标ID,包括厂商编码一个字节,断面号2个字节,天线号1个字节)。
具体帧格式参见下表:
(2)PrivateWindowResponse(PrWRq)(10字节)
■方向:OBU→RSU
■功能:请求专用上行链路窗口。
■需执行的操作:OBU从ESAM卡中读取OBUMAC(MediaAccessControl,媒体访问控制)地址(使用ESAM命令——READBINARY),RsuBeaconID中的断面号(从BST中读取),判断和上一次成功交易收到的断面号是否一样,如果一样则不做响应。
■发送的交易数据:包括OBUMAC地址(4字节),AntID(天线号,即RsuBeaconID的最后一个字节)
具体帧格式参见下表:
(3)PrivateWindowAllocation(PrWA)(10字节)
■方向:RSU→OBU
■功能:分配专用上行链路窗口。
■需执行的操作:RSU从PrWRq中读取AntID,首先判断该AntID是否是自身的BeaconID的最后一个字节,如不是则不做响应,如果是则读取PrWRq帧中的OBUMACID,发送响应信息帧。
■发送的交易数据:OBUMAC地址(4字节),AntID(天线号,即RsuBeaconID的最后一个字节)
具体帧格式参见下表:
(4)INITIALISATION_response(VST)(52字节)
■方向:OBU→RSU
■功能:OBU对PrWA进行应答,判断AntID是否是上次收到RSU发出的天线号,如果不是则不做响应。如果是则建立通信链路,与RSU协商通信参数及应用参数,并返回系统文件数据、车辆关键数据及访问认证随机数等信息。
■需执行的操作:
OBU选择相应的交易模式并将密钥版本号存入OBU缓存中;
用于在OBU激活后,OBU产生电量信息和OBUMACID校验信息并写入OBU缓存;
使用ESAM专有命令3——READOBEINFO1,用于在OBU激活后,从ESAM中读取读取固定交易数据(车牌号、车型、车辆用户类型、合同序列号、OBUMAC)写入OBU缓存中;
OBU拼接以上数据生成完整的VST并发送至RSU。
使用ESAM专有命令1——READDYNAMICINFO1,用于生成发送VST时所需的ESAM卡中的动态数据,包括访问认证随机数RandOBU,OBU拆卸状态及OBU类型。
OBU拼接以上数据生成完整的VST并发送至RSU。
■发送的交易数据:
OBU产生电量信息和OBUMACID校验信息、OBU软件版本号(2个字节);
合同序列号(8字节)、OBUMAC地址(4字节)(以上信息属于ESAM卡中的固定信息);
OBU的拆卸状态及OBU类型(1字节)(以上信息属于ESAM卡中的动态信息)
具体帧格式参见下表:
(5)交易信息下行帧SetSecure.request+SetMMI.request(59字节)
■方向:RSU→OBU
■功能:实现对RSU身份合法性的安全认证,如果RSU具备访问许可权限则将交易记录信息和界面提示信息写入OBU中,并携带相关安全数据供RSU对OBU进行信息鉴别。
■需执行的操作:
RSU将VST中的OBU的MAC地址和合同序列号、电量信息、车牌号、车型、车辆用户类型、OBE状态信息写入到交易记录表中,同时生成SetMMI(人机界面设定)提示信息;
RSU读取其存储的车道号和站点号,并生成终端机交易流水号写入交易记录表中;
使用PSAM专有指令3——GETACCESSCREDENTIALS,RSU将合同序列号和密钥版本号送入PSAM卡中,PSAM从应用密钥文件中对应版本号的主认证密钥,分散出临时密钥,使用TDES加密RandOBU生成访问许可证书accessCredentials,并同时读取PSAMID;
使用PSAM专有指令1——EXPANDGETCHALLENGE,生成信息鉴别用随机数randRSUforAuthen和随机数序列号randRSUforAuthenIndex;
RSU拼接以上交易记录信息、MMI(人机界面)提示信息和accessCredentials,randRSUforAuthen和随机数序列号randRSUforAuthenIndex,生成交易信息帧并发送到OBU;
RSU发送UDP报告至车道控制器,UDP报告包括:RSU交易模式及支持的OBU类型、交易时间、车牌号、车型、车辆用户类型、合同序列号、OBUMAC、OBE(车载设备)状态信息。
发送的交易数据:用于OBU信息鉴别的随机数randRSUforAuthen(8字节)和随机数序列号randRSUforAuthenIndex(1字节),AntID(天线号,即RsuBeaconID的最后一个字节)。
具体帧格式参见下表:
(6)OBU快速应答上行帧(17字节)
■方向:OBU→RSU
■功能:实现对RSU的快速响应。
■需要执行的操作:
OBU从BST帧中获取ESAM专用命令序列号;
使用ESAM专有命令5——READTIME,用于在OBU激活后,ESAM中读取处理专用命令时间窗,存放在OBU的缓存中。
■发送的交易数据:OBU处理ESAM相应专用命令的最短时间和最长时间。
具体帧格式参见下表:
(7)RSU取结果下行帧(15字节)
■方向:RSU→OBU
■功能:RSU再次发送取结果信息帧,请求OBU的确认信息帧。
■需要执行的操作:
RSU读取OBU快速响应上行帧中的处理ESAM专用命令的最短时间和最长时间,在最短时间内RSU不会发送该信息帧。
■发送的交易数据:无
具体帧格式参见下表:
(8)OBU确认信息上行帧SetSecure.response+SetMMI.response(38字节)
■方向:OBU→RSU
■功能:实现OBU对RSU的访问认证,并对交易信息帧中信息鉴别随机数randRSUforAuthen进行加密生成信息鉴别码Authenticator。
■需要执行的操作:
使用ESAM专用命令6——ACCOMPLISHACCESSCREDENTIALS1,将密钥版本号和accessCredentials,randRSUforAuthen送入ESAM卡中,利用ESAM卡中随机数RandOBU,TDES加密生成tmpAccessCredentials,和RSU发过来的accessCredentials进行对比认证。认证通过后将randRSUforAuthen进行TDES加密生成Authenticator。
OBU将OBU将交易时间(4B)、PSAMID(6B)、终端机交易流水号(RSU的交易次数)(4B)、站点号(2B)、车道号(1B)、交易余额(2B)、OBU终端交易编号(OBU的交易次数)(4B)进行CRC16运算(注:所有上述数据依次按序排列,后面补1个字节0,凑足24字节)(x16+x12+x5+x1,起始FFFFH)生成2个字节的CRC0、CRC1,将CRC16运算生成的这2个字节与PSAMID一起按位或运算生成8字节的临时数据CRC0||CRC1||PSAMID;
使用ESAM专用命令11——GETTAC,将CRC0||CRC1||PSAMID(8字节)送入ESAM卡中,利用对应密钥版本的离线认证密钥,采用TDES算法加密生成TAC(交易认证)码。
OBU将TAC码、Authenticator、randRSUForAuthenIndex、OBU终端交易流水号,OBU上一次成功交易的天线号LastAntID拼接在一起发送至RSU。
■发送的交易数据:无
randRSUForAuthenIndex(1字节)、OBU终端交易流水号(4字节),OBU上一次成功交易的天线号(1字节)(OBU中获取),TAC码(8字节)、信息鉴别码Authenticator(8字节)(ESAM卡中获取)
具体帧格式参见下表:
(10)Event_Report.request(14字节)
■方向:RSU→OBU
■功能:结束交易,释放与电子标签的通信连接。
■需要执行的操作:
使用PSAM专有指令2——ACCOMPLISHAUTHENCATION:将合同序列号,密钥版本号及随机数序列号送入PSAM卡中,取PSAM卡中对应的主加密密钥,分散出临时加密密钥,利用随机数序列号选择对应的randRSUforAuthen,利用临时加密密钥进行TDES运算生成tmpAuthenticator,和ESAM发送过来的鉴别码Authenticator对比进行信息鉴别认证,相同则OBU信息合法,否则非法。
将OBU确认信息(TAC码、OBU终端交易流水号)及RSU生成的交易状态信息一起写入到RSU交易记录表中,并发送TCP报告至车道控制器。TCP报告包括:RSU交易模式及支持的OBU类型、车牌号、车型、车辆用户类型、合同序列号、OBUMAC、OBU状态信息、交易时间、PSAMID,终端机交易流水号、交易站点号、交易车道号、交易余额、交易状态信息、OBU终端交易流水号、TAC码、OBU上一次成功交易的天线号LastAntID、密钥版本号。
■发送的交易数据:无
具体帧格式参见下表:
(11)OBU交易状态信息帧(13字节)
■方向:OBU→RSU
■功能:OBU在建立专用链路后,可以在收到任何RSU的下行帧后发出OBU交易状态信息帧,以通知RSU根据OBU交易状态的内容断开OBU的专用链路或保持专用链路但重新开始交易过程。OBU在收到RSU的释放链路帧后需回复OBU交易状态信息帧。
■需要执行的操作:
在收到RSU释放链路帧或超过超时时间,OBU均标识交易成功并进行如下操作:
OBU对SetMMI信息做出响应;
使用ESAM专用命令14——EXPANDUPDATERECORD2将收到的交易记录信息和OBU缓存中的电量信息和OBUMACID校验信息、OBU终端交易流水号写入交易记录文件中(包括交易时间、PSAMID、终端机交易流水号、收费站号、车道号、交易余额、车辆用户状态信息、OBE电量信息和OBUMACID校验信息(比较OBU中存储的OBUMACID是否与ESAM中存储的OBUMACID一致)、OBU协议版本号、OBU软件版本号、OBU终端交易流水号、TAC码,密钥版本号)。
■发送的交易数据:OBU交易状态ObuTransactionStatus(1字节)
具体帧格式参见下表:
上述表格中的OBU表示车载单元中的车载设备,RSU表示路测单元,ESAM表示车载设备中的嵌入式安全控制模块,PSAM表示路测单元中所装载的安全存取模块。A类电子标签、B类和C类电子标签的区别:
(1)基本型(A类):单片有源电子标签。
(2)兼容型(B类):双片式电子标签(同国标GB/T20851-2007)。
(3)扩展型(C类):双片式电子标签,IC卡插入将金额充入到OBE的ESAM卡中,进行现场交易,从ESAM卡中扣除交易金额。
实施例的ESAM卡的文件结构说明:
用于自由流收费的车载单元ESAM模块,其文件结构采用树状层级结构,其根节点为主控文件MF,子节点包括系统密钥文件、系统信息文件、系统保留文件、自由流电子收费应用目录文件DF03、交管应用目录文件DF04。ESAM模块基本结构包括文件结构和密钥管理,每个目录文件DF或主控文件MF建立时指定密钥的添加权限,密钥的属性包括标识符、类型、版本、错误计数、使用权限、修改权限、密钥值等内容,ESAM通过标识符和类型来确定密钥的唯一性。
所述的ESAM模块,自由流电子收费应用目录文件DF03的子节点包括电子收费应用密钥文件、电子收费应用车辆信息文件、电子收费应用交易记录文件、电子收费应用时间窗存储文件、电子收费应用第一保留文件、电子收费应用第二保留文件、车载单元应用第一保留文件和车载单元应用第二保留文件。
所述的ESAM模块,交管应用目录文件DF04的子节点包括交管应用密钥文件、交管应用记录文件和交管应用保留文件。
所述的ESAM模块,各密钥文件数据见下表:
实施例用到的ESAM专用命令说明:
(1)ESAM命令——READBINARY:应用范围为各类应用模式,用于读出二进制文件的内容(或部分内容),包括车辆信息文件等二进制文件,其命令报文定义如下:
响应报文响应报文格式规定:当Le的值为零时,只要文件的最大长度在256(短长度)或65536(扩展长度)之内,则其全部字节将被读出。
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
85 |
使用条件不满足 |
69 |
86 |
没有选择当前文件 |
6A |
81 |
功能不支持 |
6A |
82 |
未找到文件 |
6A |
86 |
P1、P2参数错 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
(2)专用指令——READOBEINFO1:应用范围为收费交易模式,用于产生发送VST时所需要的固定数据信息,包括:合同序列号、OBE(车载设备)MACID以及车牌号、车辆用户类型、车型等,其命令报文定义如下:
响应报文响应报文格式如下:
说明 |
长度(字节) |
车牌号 |
12 |
车型 |
1 |
车辆用户类型 |
1 |
合同序列号 |
8 |
OBU MAC |
4 |
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
94 |
04 |
未找到系统信息文件 |
94 |
06 |
未找到车辆信息文件 |
94 |
07 |
未读出系统信息文件的记录 |
94 |
09 |
未读出车辆信息文件的记录 |
(3)专用指令——READDYNAMICINFO1:应用范围为收费交易模式,用于生成VST中所需要的动态数据。包括OBU生成的随机数,OBU拆卸状态及OBU类型,其命令报文定义如下:
响应报文响应报文格式如下:
说明 |
长度(字节) |
RandOBU |
8 |
OBU拆卸状态及OBU类型 |
1 |
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
84 |
引用数据无效(未申请随机数) |
69 |
85 |
使用条件不满足 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
94 |
04 |
未找到系统信息文件 |
94 |
07 |
未读出系统信息文件的记录 |
(4)专用指令——READTIME:应用范围为收费交易模式,用于从ESAM中读取相应专有指令所执行的最长时间和最短时间,其命令报文定义如下:
响应报文响应报文格式如下:
说明 |
长度(字节) |
指令执行最短时间 |
1 |
指令执行最长时间 |
1 |
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
69 |
86 |
没有选择当前文件 |
69 |
88 |
安全信息(MAC和加密)数据错误 |
6A |
81 |
功能不支持 |
6A |
85 |
未找到时间窗存储文件 |
6A |
86 |
P1、P2参数错 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
(5)专用指令——ACCOMPLISHACCESSCREDENTIALS1:应用范围为收费交易模式,用于完成对RSU的访问许可认证及生成OBU信息鉴别码,其命令报文定义如下:
命令执行过程具体描述如下:
●OBU利用主认证密钥对RandOBU进行TDES计算得到临时的访问许可证书tmpaccessCredentials,和RSU发送过来的访问许可证书accessCredentials进行对比认证;其中TDES计算方法如下:
tmpAccessCredentials=TDES(RK1_DF03,RandOBU)
●对比accessCredentials和tmpAccessCredentials是否相等,认证通过后进行下一步。
●ESAM通过密钥版本号选择相应的应用加密密钥RK2_DF03,利用其应用加密密钥RK2_DF03对RSU生成的随机数randRSUForAuthen进行TDES计算,方法同上,得出信息鉴别码Authenticator。
响应报文响应报文格式如下:
说明 |
长度(字节) |
Authenticator |
8 |
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
69 |
88 |
安全信息(MAC和加密)数据错误 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
95 |
04 |
tmpaccessCredentials生成失败 |
94 |
03 |
访问许可认证失败 |
94 |
02 |
Authenticator生成失败 |
(6)专用指令——GETTAC1:应用范围为收费交易模式,用于后台实现对OBU交易数据的离线认证,其命令报文定义如下:
代码 |
数值(十六进制) |
CLA |
‘D0’ |
INS |
‘D8’ |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
‘09’ |
DATA |
包括密钥版本号(1字节)+CRC0||CRC1||PSAM ID(8字节) |
Le |
‘08’包括离线认证TAC码(8字节) |
命令执行过程如下,其中计算过程中的第一、二步在OBU中计算完成,第三步在ESAM中完成。
●OBU将交易时间(4B)、PSAMID(6B)、终端机交易流水号(RSU的交易次数)(4B)、站点号(2B)、车道号(1B)、交易余额(2B)、OBU终端交易编号(OBU的交易次数)(4B)进行CRC16运算(注:所有上诉数据依次按序排列,后面补1个字节0,凑足24字节)(x16+x12+x5+x1,起始FFFFH)生成2个字节的CRC0、CRC1;
●将CRC16运算生成的这2个字节与PSAMID一起生成8字节的临时数据CRC0||CRC1||PSAMID;
●ESAM通过密钥版本号选择相应的DF03目录下TAC认证密钥RK3_DF03,对这8个字节的临时数据进行TDES加密生成离线认证TAC码,算法如下:
Tac1=TDES(RK3_DF03,CRC0||CRC1||PSAMID)
响应报文响应报文格式如下:
响应信息中可能返回的状态码有:
SW1 |
SW2 |
说明 |
90 |
00 |
命令执行成功 |
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
69 |
88 |
安全信息(MAC和加密)数据错误 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
96 |
01 |
TAC生成失败 |
(7)专用指令——EXPANDUPDATERECORD2:应用范围为收费交易模式,用于更新ESAM交易记录文件。此条指令必须在ACCOMPLISHACCESSCREDENTIALS1指令执行成功之后执行。其它任何指令无法触发此条指令,其命令报文定义如下:
响应报文响应数据域不存在,响应信息中可能返回的状态码有:
61 |
xx |
还有xx字节要返回 |
62 |
81 |
部分回送的数据可能有错 |
62 |
82 |
文件长度<Le |
65 |
81 |
写EEPROM失败 |
67 |
00 |
Lc长度错误 |
69 |
81 |
当前文件不是二进制文件 |
69 |
82 |
不满足安全状态 |
69 |
83 |
认证密钥锁定 |
69 |
85 |
使用条件不满足 |
6A |
81 |
功能不支持 |
6A |
86 |
P1、P2参数错 |
6A |
88 |
未找到密钥数据 |
6B |
00 |
起始地址超出范围 |
6C |
xx |
Le长度错误。‘xx’表示实际长度 |
6D |
00 |
命令不存在 |
6E |
00 |
CLA错 |
93 |
03 |
应用永久锁定 |
94 |
11 |
未更新交易记录文件的记录 |
实施例的专用窗口请求和专用窗口分配的具体方法说明:
本发明的专用链路建立机制,是在原国标基础上增加专用窗口请求(Privatewindowrequest——PrWRq)和专用窗口分配(Privatewindowallocation——PrWA),同时MAC(MediaAccessControl,媒体访问控制)控制域在原国标基础上增加分配时间窗口机制,及分配专用上行链路窗的下行链路帧的序列控制,具体建立机制如下:
(1)广播方式下建立机制:RSU发送分配多个公共上行链路窗口的下行链路帧,其中RSU发送的为广播MAC地址(全1),并且Q为1。
(2)点对点方式下,RSU与OBU之间需建立专用通信链路,该链路以专用MAC地址作为唯一标识。专用链路的建立过程如下:
a)RSU周期性广播Q为1的分配N5个公共上行链路窗口,且包含有特定信息(天线号,即RsuBeaconID的最后一个字节)的下行链路帧;
b)通信区域内OBU收到该信息后,随机延时N1个时间单位T5;
c)OBU发送包括其MAC地址信息的专用链路请求帧到RSU;
d)RSU确认收到合法帧后,登记对应的OBUMAC地址,并以该MAC地址发送分配有专用上行链路窗口的下行链路帧到OBU;
e)OBU收到带该OBUMAC地址的下行链路帧后,专用链路窗口分配成功,专用链路建立成功。
下行链路MAC控制域和上行链路MAC控制域的结构设计见表A和表B所示。
表A下行链路MAC控制域
表B上行链路MAC控制域
时间窗口管理机制:时间窗口管理分为下行链路帧未分配上行链路窗口,分配了专用上行链路窗口,以及分配了一个或多个公共上行链路窗口等情况,是否分配窗口由下行链路MAC控制域的A比特来决定。
(1)专用上行链路窗口
只有obumac地址与正在分配的窗口的obumac地址相同的obu才能使用该专用上行链路窗口。
一个专用上行链路窗口的起始点出现在包含分配该上行链路窗口帧的下行链路窗口结束T1时间后。
一个专用上行链路窗口的结束点出现在:如果没有OBU开始发送,则在窗口开始T4a之后结束。OBU在结束点出现之后不再发送下行链路窗口请求的数据,直到RSU再次发送该请求命令时才发送。
(2)公共上行链路窗口
每一个带有广播地址的下行链路帧都可以分配一个或者多个连续的公共上行链路窗口。一个下行链路帧最多可以分配N5个连续的公共上行链路窗口。一个公共上行链路窗口可以被任何在通信区域内的OBU按照随机延时计数器规则使用。
一个公共上行链路窗口的开始点:
①如果该公共上行链路窗口是下行链路窗口之后的第一个窗口的话,则出现在包含该分配窗口帧的链路窗口结束T1之后。
②如果前一个窗口是公共上行链路窗口,则出现在前一个窗口的结束时刻。
③公共上行链路窗口的结束发生于开始后的T5时刻。在公共上行链路窗口中,OBU发送数据应该在该公共窗口开始后的T4b之前开始。
链路层关键参数定义:具体定义见下表: