ESAM芯片使用说明(22版本)

​​​SPI通信流程

概述

SSN=0:将 SSN 置低;SSN=1:将 SSN 置高。

Len1代表长度的高字节,Len2 代表长度的低字节。

LRC1 的计算方法:对 CLA INS P1 P2 Len1 Len2 DATA 数据,每个字节的异 或值,再取反。

LRC2 的计算方法:对 SW1 SW2 Len1 Len2 DATA 数据,每个字节的异或值, 再取反。

Len1 Len2 代表 DATA 域的长度,不包括 LRC1 或 LRC2。

标识

最小值

最大值

推荐值

说明

Tcsl

60us

150us

100us

SSN 拉低持续时间

Tcsd

3us

10us

5us

通讯结束,SSN 拉低持续时间

Tcsh

10us

50us

10us

SSN 每次拉高持续时间

Tclk

40ns

66ns

50ns

对应 SPI 频率,16MHz-25MHz

Tb

1.5us

10us

3us

SPI有效通讯时间

Tq

15us

100us

20us

指令查询间隔时间

Ttq

1s

3s

2s

指令查询总时间

发送数据结构

发送数据的结构为:55 CLA INS P1 P2 Lc1 Lc2 DATA LRC1,其中:

55 为发送命令结构的命令头;

CLA 是命令类别;

INS 是命令类别中的指令代码;

P1、P2 是一个完成指令代码的参考符号;

Lc1 Lc2 是后续 DATA 的长度,不包含 LRC1,由两字节表示;

DATA 是由终端安全芯片来处理的输入数据;

LRC1 是发送数据的校验值,计算方法见SPI通信流程说明。

接收数据结构

接收数据的结构为:SW1 SW2 Len1 Len2 DATA LRC2,其中:

SW1 SW2 是指令执行完毕后,从主设备返回的状态字;

Len1 Len2 是后续 DATA 的长度,不包含 LRC2,由两字节表示;

DATA 是终端安全芯片处理数据完毕后,返回的输出数据;

LRC2 是接收数据的校验值,计算方法见SPI通信流程说明;

状态字节

SW1、SW2 构成接收数据的起始序列,起始序列在命令的起始指示芯片的状态。

SW1 SW2=‘9000 ’表示正常响应。

SW1

SW2

说明

90

00

命令执行成功

67

00

错误的长度

69

00

CLA 不符合文件属性要求

69

01

命令不接受,  无效状态 计数器不正确

69

07

TIMER 超时

93

02

MAC 无效

69

82

安全状态不被满足 会话未建立

69

84

引用的数据无效

69

85

使用的条件不被满足

69

89

验证 MAC 错误

69

8A

使用的证书状态不被满足

6A

80

不正确的数据域

6A

81

功能不被支持

6A

86

不正确的参数 P1~P2

6A

90

SPI 协议 LRC 校验错误

6D

00

指令代码不被支持或无效

6E

00

CLA 类别不被支持

90

86

验签错误

90

88

产生密钥对错误

90

8A

签名错误

数据重发机制

SPI传输层支持错误重发机制。当出现SPI 数据传输数据错时,允许重新发 送。支持错误重发次数为 3 次。

发送数据错误

主设备发送数据,如果终端安全芯片返回的错误码为 6A90,表明数据在传输 时出现错误,此时主设备可以重发指令。

接收数据错误

主设备收到数据后,需校验从终端安全芯片接收的 LRC 与接收数据计算的 LRC 是否一致,如果不一致,说明终端安全芯片数据在传输过程中出现错误,此 时主设备可以重新启动接收流程(将 SSN 置高,高电平保持时间至少 10us 以上, 再将 SSN 置低,保持MOSI置高(低),进入指令查询和接收流程。

终端安全芯片交互指令流程

主站与终端交互

获取 TESAM 信息

步骤

主站

终端和 TESAM

备注

1

主站下发获取 TESAM 信息 命令

2

发送:803600FF0000

返回:000+LEN+Data1

批量获取终端安全芯片信息:

Data1:

ESAM 序列号(8B)、

ESAM 版本号(4B)、

对称密钥版本(16B)、

证书版本(主站证书版本号 (1B)+ 终 端 证 书 版 本 号 (1B))、

会话时效门限(4B)、

会话时效剩余时间(4B)、 当前计数器(ASCTR:单地址应用协商计数器(4B)、

ARCTR : 主 动 上 报 计 数 器 (4B)、

AGSEQ:应用广播通信序列号 (4B)、

终端证书序列号(16B)、 主站证书序列号(16B)

3

发送:803600P20000

返回:9000+LEN+ Data2

单项获取终端安全芯片信息 P2:

02:ESAM 序列号(8B)、 03:ESAM 版本号(4B)、

04:对称密钥版本(16B)、

05:证书版本(主站证书版 本号 (1B)+终端证书版本号 (1B) )、

06:会话时效门限(4B)、

07:会话时效剩余时间(4B)、 08:当前计数器

(ASCTR:单地址应用协商计 数器(4B)、

ARCTR : 主 动 上 报 计 数 器

(4B)、

AGSEQ:应用广播通信序列号 (4B))

09:终端证书序列号(16B)、 0A:主站证书序列号(16B)

0B:终端证书 0C:主站证书

建立应用连接(主站与终端会话密钥协商

步骤

主站

终端和 TESAM

备注

1

主站建立应用连接下发终 端会话协商数据 ,包含 ucOutSessionInit 密文 2 和 ucOutSign 客户机签名 2

ucOutSessionInit:32 字节

ucOutSign : N 字节

2

发送:80020000+ Lc+

ucOutSessionInit+ucOu tSign

返回:9000+ Len+

ucSessionData+ucSign

Lc:ucOutSessionInit 长度 加上 ucOutSign 长度,2 字节

Len: 芯片返回数据长度,2字节

ucSessionData:服务器随机 数,48 字节

ucSign:服务器签名信 息, Len-48 字节

3

终端上传

ucSessionData、ucSign

4

主站获得 ucSessionData、 ucSign,进行校验

安全传输数据处理(主站到终端)

步骤

主站

终端和 TESAM

备注

1

建立应用连接

终端数据抄读、广播操作可 不需要会话连接

2

主站发送任务数据,包含 应用数据单元 Data,数据 验证信息

使用应用会话密钥对数据进 行计算 MAC

Data: 明文应用数据单元或 者密文应用数据单元

数据验证信息: SID_MAC 或 RN 或 RN_MAC 或 SID

SID:包含 4 字节安全标识+ 附加数据 AttachData

3

广播说明:

终端收到数据后判断广 播地址、安全标识的前 4 个字节是否正确

安全标识:8016480X

当组地址或广播地址最后一 位有效位

为 1 时 X=1;为 2 时 X=2;

为 3 时 X=3;为 4 时 X=4;

为 5 时 X=5;为 6 时 X=6;

为 7 时 X=7;为 8 时 X=8;

为 9 时 X=9;为 0 或 A 时 X=A;

4

若数据验证信息为随机 数 RN,则跳第 5 步;

若 数 据 验 证 信 息 为 SID_MAC,

发送: 4 字节安全标识+ 附加数据 AttachData+Data+ MAC   

返回:9000+LEN+Data2

若数据验证信息为 SID, 发送: 4 字节安全标识+ 附加数据 AttachData+Data

返回:9000+LEN+Data2

SID:包含 4 字节安全标识+ 附加数据 AttachData

5

执行相应的应用层协议 处理

读取、设置(安全模式设置)、 操作

6

组织数据返回帧

广播业务不需要返回帧给主 站

读取终端数据时,直接将组 织好的数据通过安全传输返 回主站,跳到第 8 步骤进行 验证

其他操作需要继续

7

发 送 : 801C00+P2+Lc+ Data3

返回:9000+LEN+ Data4

Data3:数据返回帧

Data4:包含应用数据单元和 数据验证信息

由终端按照下述规则组织各 个数据项。

P2 :

明文+MAC 方式:11 密文:96

密文+MAC:97

设置(安全模式设置)时, P2 :

密文+MAC:97

8

主站验证,获得确认帧或 否认帧

应用层协议处理

读取(抄读终端)

步骤

主站/掌机

终端和 TESAM

备注

1

根据 建立应用连接(主站与终端会话密钥协商)的第 2 步骤获得抄读随机数 RN

2

发送:

800E4002+LC+Data1

返回:9000+0004+MAC

LC:Data1 长度,2 字节

Data1:RN+PlainData

备注:终端计算明文+MAC

3

根据 安全传输数据处理(主站到终端)的 6、7、8 步骤返回主站

操作(终端对称密钥更新)

步骤

主站

终端和 TESAM

备注

1

根据 安全传输数据处理(主站到终端) 的 1、2、4 步骤获得 Data2,Data2 包含密钥密文(Endata1)、数据验证 码 SID_MAC(包含安全标识、附加数据 AttachData、 MAC)

2

终端判断安全标识为812E0000

3

发送:安全标识+附加数

据AttachData+ Endata1+MAC

返回:9000+0000

4

根据 安全传输数据处理(主站到终端)的 6、7、8 步骤返回主站,返回帧中 P2 需为密文+MAC:97

操作(证书更新)

步骤

主站

终端和 TESAM

备注

1

根据 安全传输数据处理(主站到终端)的 1、2、4 步骤获得 Data2,Data2 包含证书内容(Endata1)、安全标识 SID(包含安全标识和附加数据AttachData)

2

终端判断安全标识为81300203

3

发送: 安全标识+附加数据 AttachData+ Endata1

返回:9000+0000

4

根据 安全传输数据处理(主站到终端) 的 6、7、8 步骤返回主站,返回帧中 P2 需为密文:96 或者密文+MAC:97

设置(更新会话时效门限、转加密初始化、置离线计数器)

步骤

主站

终端和 TESAM

备注

1

根据 安全传输数据处理(主站到终端) 的 1、2、4 步骤获得 Data2

Data2 包含数据更新信息,参 数内容 Data1 、数据验证码 SID(包含安全标识、附加数 据 AttachData)

2

发送: 安全标识+附加数据 AttachData+Data1

返回:9000+0000

3

根据 安全传输数据处理(主站到终端) 的 6、7、8 步骤返回主站

操作(处理转加任务数据和密钥包)

步骤

主站

终端和 TESAM

备注

1

根据 安全传输数据处理(主站到终端) 的 1、2、4 步骤获得 Data2,Data2 包含密钥或任务密文(Endata1)、数 据验证码 SID_MAC(包含安全标识、附加数据 AttachData、 MAC)

3

发送:安全标识+附加数据         AttachData+ Endata1+MAC

返回:9000+LEN+Endata2

Endata2:处理后的任务密文

4

根据 安全传输数据处理(主站到终端) 的 6、7、8 步骤返回主站,返回帧中 P2 需为密文+MAC:97

安全传输数据处理(终端到主站)

步骤

主站

终端和 TESAM

备注

1

发送:80140103+LC+ Data1

返回:9000+LEN+Data2+ MAC1

LC : Data1 长度,2 字节

Data1: 明文数据

Data2:12 字节随机数

RN_MAC:包含 12 字节随机数 Data2 和 4 字节 MAC

2

终端上传数据

3

主站对ucReportData进行验证,并保存数据,下发 应答帧

4

根据主站下发的应答帧

发送:安全标识+附加数 据 AttachData+ Data3+MAC2

返回:9000+Len+Data4

Data3:接收主站下发应答帧 数据

Data4:明文数据

终端与电能表(20 版和物联版电能表)交互

读取信息(获取电能表 ESAM 信息)

步骤

终端和 TESAM

电能表和 ESAM

备注

1

下发获取 ESAM 信息命令

2

获取电能表安全芯片信 息

获取电能表安全芯片信息包 含:

Data1:

ESAM 版本号(5B)、ESAM 序列号(8B)、 保留(1B)

对称密钥版本(16B)、会话时效门限(4B)、

会话时效剩余时间1(4B)、当前计数器

(ASCTR:单地址应用协商计 数器(4B)、

AMRCTR: 电能表主动上报计 数器(4B)

AGSEQ:应用广播通信序列号 (4B)

AMTCTR: 终端与电表会话计 数器(4B))

ESAM 发行信息(40B)、 身份认证权限(1B)、

终端地址(8B)、

终端广播计数器(4B)

建立应用连接(会话密钥协商)

步骤

终端和 TESAM

电能表和 ESAM

备注

1

发送:80720000+LC+ 密钥 包+AMTCTR+00

返回:9000+Len+

SessionData1+MAC1

需先参考 5.2.1 章节步骤获  取电能表 ESAM 相关信息,终 端从主站管理系统获取电能  表密钥数据;

LC:后续数据长度,2 字节  AMTCTR:终端与电表会话计 数器 4 字节

密钥包:从主站获取 128 字 节。

2

安全芯片验证

SessionData1 和 MAC1,

返回 SessionData2 和MAC2

3

电能表上传SessionData2、MAC2

4

发送:80740000+LC+ 密钥 包+ SessionData2+MAC2

返回:9000+Len+ 会话密 钥包

LC:后续数据长度,2 字节

安全传送数据处理(终端到电能表)

步骤

终端和 TESAM

电能表和 ESAM

备注

1

会话协商

返回密钥包。

2

终端发送任务数据,包含

应用数据单元 Data,数据

验证信息

使用应用会话密钥对数据进行加密

Data: 明文应用数据单元或

者密文应用数据单元

数据验证信息:RN 或 SID RN:使用 终端对电能表广播校时 章节

SID:包含 4 字节安全标识+ 附加数据 AttachData

3

发送:80760300+LC+会话 密钥条数+会话密钥包+任务数据密文

返回:

9000+LEN+SID+EnData+ MAC

组织数据域Data和数据验证信息 SID,下发。

下发数据计算密文+MAC

LC:后续数据长度,2Byte

会话密钥条数:1Byte(会话 密钥包的字节数除以 32,16 进制)

SID:6 字节 MAC:4 字节

4

若数据验证信息为 SID_MAC,

发送:4 字节标识+附加数 据AttachData+Data+ MAC 返回:9000+Len+Data2

若数据验证信息为 SID, 发送:4 字节标识+附加数 据 AttachData+Data

返回:9000+Len+Data2

电能表解密密文

5

业务处理

读取、设置参数、控制和广 播校时。广播校时不需要建 立应用连接。

6

电能表按照规则组织各个数据项 Data3

电能表加密 Data3 返回Data4

7

发送:80780000+LC+会话 密钥包个数+会话密钥包  +80241100+LC1+明文数据 +MAC

终端验证明文+MAC

会话密钥包个数:会话密钥 包的字节数除以 32

LC1:明文文数据和 MAC 的长 度,2 字节

发送:80780000+LC+会话 密钥包个数+会话密钥包  +80241200+LC1+密文数据

返回:9000+LC1+明文

终端解密密文

会话密钥包个数:会话密钥 包的字节数除以 32

发送:80780000+LC+会话 密钥包个数+会话密钥包  +80241300+LC1+密文数据 +MAC

终端解密密文并验证 MAC

会话密钥包个数:会话密钥 包的字节数除以 32

LC1:密文数据和 MAC 的长度,

2 字节

终端对电能表广播校时

步骤

终端和 TESAM

电能表和 ESAM

备注

1

发送:800400100000

返回:9000+LEN+Rand1

操 作 此 步 骤 之 前 先 按 照 5.2.1 步骤获取电能表应用 广播通信序列号(AGCTR);

2

发送:800A4808+LC+终端 地址+Rand1+AGCTR+Data

返回:9000+Len+Data1

广播数据加密。

终端地址:8 字节 从电能表 端读取

AGCTR : 电能表应用广播通信 序列号+1,4 字节从电能表端读取

Data:广播数据明文  Data1:广播数据密文

发送:800E4808+LC+终端 地址+Rand1+801E400A+

LC1+Rand1+01+Data1

返回:9000+0004+MAC

对密文计算 MAC

LC:后续数据长度,2 字节  LC1:后续数据长度+4,2 字 节

3

组织密文应用数据单元  Data1 和数据验证信息  SID_MAC,下发到电能表

数据验证信息 SID_MAC(包 含标识、附加数据AttachData,数据 MAC)

标识:4 字节,固定 801E400A 附加数据:LC1+Rand1+01

4

发送:标识+附加数据+ Data1+数据 MAC

返回:9000+Len+Data

密文 MAC 方式广播数据处理 获得明文。

终端对电能表校时

步骤

终端和 TESAM

电能表

备注

1

会话协商

2

发送:80760301+LC+会话密钥包个数+会话密钥包+LC1+Date+任务数据密文

返回:9000+LEN+SID+EnData+ MAC

下发数据计算密文

LC:后续数据长度,2Byte

会话密钥包个数:会话密钥包的字节数除以 32

Date:校时时间

LC1:校时时间长度,1 字节

组织数据域Data和数据验 证信息 SID 或 SID_MAC,

下发。

若数据验证信息为 SID_MAC, 发送:4 字节标识+附加数据 AttachData + 4 字节标识+ 附加数据 AttachData1 +Data+ MAC

若数据验证信息为SID,

发送:4 字节标识+附加数据 AttachData+Data

3

执行操作

4

返回终端,根据 安全传送数据处理(终端到电能表)的 6、7 步骤验证

设置 ESAM 参数(终端地址、终端广播计数器)

步骤

终端和 TESAM

电能表

备注

1

会话协商

2

发送:80D40300+LC+会话 密钥包个数+会话密钥包  +Endata1+MAC

返回:9000+LC1+Endata2

下发数据计算密文

LC:后续数据长度,2Byte

会话密钥包个数:会话密钥

包的字节数除以 32 Endata1:密文数据

发送:80760301+LC+会话 密钥包个数+会话密钥包 +LC1+Endata2+任务数据密文  

返回:9000+LEN+SID3+EnData3+ MAC

组织数据验证信息 SID3  和数据密文 Endata3,下发 到电能表。

数据验证信息 SID3(包含标 识、附加数据 AttachData) 标识:4 字节,

附加数据:2 字节,

3

执行操作

4

返回终端,根据 安全传送数据处理(终端到电能表)的 6、7 步骤验证

安全传输数据处理(电能表到终端)

步骤

终端和 TESAM

电能表和 ESAM

备注

1

发送:80140103+LC+

Data1

返回:9000+LEN+Rand+AMRCTR+

4 字节 MAC

电能表计算明文+MAC

LC : Data1 长度,2 字节 Data1: 明文数据

Rand:随机数 8 字节

AMRCTR:上报计数器 4 字节 RN_MAC,包含 12 字节 Data2 (Rand 和 AMRCTR)和 4 字节 MAC

2

组织数据上报终端

3

终端根据接收数据格式,

4

发送: 800E4888+LC+电能 表表号+Rand+AMRCTR+AMRCTR`+Data1+MAC

返回:9000+0000

终端明文+MAC 方式验证上报 数据

AMRCTR` :AMRCTR 取反 4 字节

5

发送: 800E4807+LC+电能 表表号+Data2+00000000+Data3

返回:9000+0004+MAC

计算上报返回数据明文+MAC

Data2:Rand+AMRCTR

Data3:返回数据明文

组织密文应用数据单元 Data5 和数据验证信息

SID_MAC,下发到电能表。

数据验证信息 SID_MAC(包含标识、附加数据  AttachData,MAC)

标识:4 字节,固定 800E4081 附加数据:Data5 的长度+4,两个字节

Data5:包含(Data2、 00000000 和 Data3)

6

发送: 800A4807+LC+电能 表表号+

Data2+00000000+Data3

返回:9000+LEN+Data4

密文

组织密文应用数据单元 Data5 和数据验证信息 SID,下发到电能表。

数据验证信息 SID(包含标  识、附加数据 AttachData) 标识:4 字节,固定 800C4001 附加数据:Data5 的长度,两个字节

Data5:包含(Data2、 00000000 和 Data4)

7

发送: 80104807+LC+电能 表+

Data2+00000000+Data3

返回:9000+LEN+Data4+ MAC

密文+MAC

组织密文应用数据单元 Data5 和数据验证信息

SID_MAC,下发到电能表。

数据验证信息 SID_MAC(包含标识、附加数据  AttachData,MAC)

标识:4 字节,固定 80124001 附加数据:Data5 的长度+4,两个字节

Data5:包含(Data2、 00000000 和 Data4)

8

发送:标识+附加数据 +Data5+MAC

返回:9000+0000

Data5 接收主站下发应答帧 数据

终端与电能表身份认证

步骤

终端和 TESAM

电能表

备注

1

发送:800400080000

数据验证信息的RN 为Rand1

返回:9000+LEN+Rand1

下发随机数到电能表,包 含应用数据单元 Data,数 据验证信息

2

电能表返回Rand1密文 1、 Rand2 、 表号和电能表 ESAM 序列号

3

发送:800808030010+ 表号+Rand1

返回:9000+0010+ Endata1

异或 Endata1,并与 Rand1 密 文 1 比较是否相同

4

发送:800808040010+ DIV+Rand2

返回:9000+0010+ Endata2

DIV 为 8 字节分散因子,测试 密钥下为 ESAM 序列号,正式 密钥下为电能表表号。

5

异或 Endata2,下发电能表

6

电能表验证 Endata2

7

组织数据返回终端

8

接收返回数据

终端抄读电能表

步骤

终端和 TESAM

电能表和 ESAM

备注

1

发送:800400100000

返回:9000+LEN+Rand

下发随机数到电能表,包 含应用数据单元 Data,数 据验证信息

数据验证信息的RN 为Rand

2

电能表根据安全模式要 求对抄读数据 Data2 计算 MAC

安全模式为明文+MAC

3

电能表组织数据报文返 回终端

4

终端根据接收数据验证

5

发送: 800E4887+LC+电能表表号+Rand+Data2+MAC

返回:9000+0000

终端明文+MAC 方式验证抄读 数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值