概述
目前现有的配网自动化试点(包括国网和南网)均未考虑二次安防,而在110KV以上的变电网里,二次安防是一个很重要的建设内容,主要原因在于以前配网自动化建设不规范,且技术条件不成熟。
二○一一年二月九日国家电网在调〔2011〕168号文件《关于加强配电网自动化系统安全防护工作的通知》明确提出了配网自动化系统位于生产控制1区,必须做好安全防护工作。
国家电网公司物资采购标准中专用技术规范中提出,配电终端应配备符合国调〔2011〕168号文件的技术功能要求的非对称密钥技术的单向认证模块。
目前公司的配网终端还不具有加密模块,为了使配网终端产品更具有市场竞争力,需要尽快加入加密模块以满足需求。
参考资料
国家电网公司物资采购标准(数据采集终端通用技术规范 2009年版)
国家电网公司物资采购标准(站所终端单元DTU专用技术规范 2010年版)
现分享一款简单易用的国密算法加密模块,用户只需通过Uart接口控制即可实现国密SM1\SM2\SM4算法,简单方便

只要你会Uart接口控制编程,就能轻松实现加密模块控制。QQ:1900109344

1.   概述

本文档适用于使用国密算法芯片进行终端产品开发的用户。终端开发者通过Uart口发命令的方式操作国密算法芯片进行数据交换,产品应用开发。通过阅读本文档,终端开发者可以在无需考虑算法实现细节情况下,迅速完成产品开发。

2.   基本特征

芯片的基本特征见下表:

串口波特率

115200 bps(默认)

供电电源

DC 3.3V,5V

通讯接口

UART

3.   通信协议

3.1.  物理层

国密算法芯片采用系统供电方式,电压5V或者3.3V。国密芯片串口与系统MCU串口相连,异步全双工通讯,波特率默认为115200bps。数据格式为1位起始位、8位数据位和1位停止位,无校验位。

系统MCU向国密算法芯片发送命令时,在同一个命令内,相连两个发送字符之间的间隔不应大于10个字符时间,否则芯片可能会认为命令超时导致无任何响应。

3.2.  链路层

3.2.1.      通讯数据包定义

通信数据包如下图所示:

STX(0x02)

Len_Hi

Len_Low

Data

LRC

ETX(0x03)

通讯数据包项目、长度、含义说明对应见下表:

通讯数据包项目含义一览表

序号

项 目

长度(字节)

说明

1

数据包头(STX)

1

常量:0x02

2

数据单元长度(Len)

2

需传输的数据单元Data部分的长度,高字节在前,低字节在后。

例如:0x0010表示Data部分有16个字节。

3

需传输的数据单元(Data)

不定

长度由Len指出,数据单元头两个字节是命令码(系统发送命令到芯片)或状态码(芯片返回数据给系统),后面是其它参数。

4

冗余检验值(LRC)

1

Data部分数据各字节异或值。

5

数据包尾(ETX)

1

常量:0x03

3.2.2.      协议描述

系统MCU首先发送一个命令数据包,发送完成后等待来自国密芯片的应答数据包。

国密芯片正确收到命令数据包后,便执行命令,然后回应应答数据包。

3.3.  数据单元格式

3.3.1.      命令单元格式

MCU向国密芯片发送的数据包称为命令数据包,命令数据包的格式如下图所示:

STX(0x02)

Len_Hi

Len_Low

CommandH

CommandL

Command Param

LRC

ETX(0x03)

命令单元格式见下表:

命令单元格式一览表

项目

长度

说明

CommandH

1字节

命令类别

CommandL

1字节

命令代码

【参数】

不定长

命令参数

3.3.2.      应答单元格式

国密芯片向系统MCU应答数据包,如下图所示:

STX(0x02)

Len_Hi

Len_Low

StatusH

StatusL

Status Data

LRC

ETX(0x03)

应答单元格式见下表:

应答单元格式一览表

项目

长度

说明

StatusH

1字节

状态码高字节

StatusL

1字节

状态码低字节

【数据】

不定长

应答数据

3.4.  SM1算法操作指令

3.4.1.      SM1  加密/解密

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

70H

SM1算法指令

CommandL

00H/01H

00表示加密,01表示解密

明文/密文

10H

16字节明文/密文

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

加密/解密成功

Status

00H,01H

命令格式不对

Message

10H

16字节密文/ 明文

3.4.2.      SM1算法密钥导入指令

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

70H

SM1算法指令

CommandL

CCH

SM1算法密钥导入

密钥

10H

16字节密钥

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

导入成功

Status

00H,01H

导入失败

3.5.  SM2算法操作指令

3.5.1.      SM2_Sign   SM2签名

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令

CommandL

C6H

SM2签名

data

Len

Len字节待签名消息(Len<1024)

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

签名成功

Status

00H,01H

命令格式不对

data

40H

64字节签名结果

3.5.2.      SM2_Verify  SM2验证

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令

CommandL

C8H

SM2验证

data

Len

Len字节数据(已签名数据+64字节签名结果),Len<1024+64

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

验证成功

Status

00H,01H

命令格式不对

data

3.5.3.      SM2_Enc  SM2加密

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令

CommandL

CAH

SM2加密

明文

P_Len

P_Len字节的明文(P_Len<1024)

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

加密成功

Status

00H,01H

命令格式不对

密文

E_Len

E_Len=P_Len+97字节的密文

3.5.4.      SM2_Dec  SM2解密

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令

CommandL

CBH

SM2解密

密文

E_Len

E_Len字节的密文

(E_Len<1024+97)

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

验证成功

Status

00H,01H

命令格式不对

明文

P_Len

P_Len= E_Len - 97字节的明文

3.5.5.      SM2_GetPairKey  产生SM2密钥对

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令

CommandL

CDH

SM2密钥对生成

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

密钥生成成功

Status

00H,01H

命令格式不对

data

60H

64字节公钥+32字节私钥

3.5.6.      SM2算法公钥导入

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

80H

SM2算法指令,

CommandL

CEH

SM2公钥导入

公钥

40H

64字节公钥

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

导入成功

Status

00H,01H

导入失败

3.6.  SM4算法操作指令

3.6.1.      SM4加密/解密

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

90H

SM4算法指令

CommandL

00H/01H

00表示加密,01表示解密

明文/密文

10H

16字节明文/密文

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

加密/解密成功

Status

00H,01H

命令格式不对

Message

10H

16字节密文/ 明文

3.6.2.      SM4算法密钥导入指令

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

90H

SM4算法指令

CommandL

CCH

SM4算法密钥导入

密钥

10H

16字节密钥

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

导入成功

Status

00H,01H

导入失败

3.7.  校验/修改Pin指令

命令数据单元:

命令数据单元含义一览表

标识

内容

说明

CommandH

08H

校验/修改Pin指令

CommandL

00/01H

00校验Pin,01为修改Pin

Pin

08H/10H

8字节的校验Pin,或者16字节的Pin(原来的8字节Pin+8字节替换的Pin)

应答数据单元:

应答数据单元含义一览表

标识

内容

说明

Status

00H,00H

命令成功

Status

00H,01H

命令失败

3.8.   国密算法使用示例(Uart口命令流)

说明:芯片出厂时的Pin是8字节:0x06 0x06 0x06 0x06 0x06 0x06 0x06 0x06

只有Pin验证通过了才能导入16字节的SM1密钥,否则命令会返回失败,以后SM1的加解密都以此密钥来计算。

只有Pin验证通过了才能生成SM2密钥对或导入64字节的SM2公钥,否则命令会返回失败,以后SM2的加解密都以此密钥来计算。

默认的ID为16字节:0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33,0x34, 0x35, 0x36, 0x37, 0x38

只有Pin验证通过了才能导入16字节的SM4密钥,否则命令会返回失败,以后SM4的加解密都以此密钥来计算。

下面是Uart口操作国密算法芯片的命令流

3.8.1.      SM1算法操作示例

校验Pin的,Uart口命令流,红色部分为初始Pin

向国密芯片发送:

02 00 0a 08 00 06 06 06 06 06 06 06 06 08 03//校验Pin

国密芯片返回:

02 00 02 00 00 00 03//执行正确

SM1密钥导入

向国密芯片发送:颜色部分为16字节密钥

02 00 12 70 CC A3 D1 9F 9E 2E EC 46 43 92 DA B4 7B 70 7D 3D 308F 03

返回:02 00 02 0000 00 03//命令执行正确

成功导入密钥后,以后可以直接发送加解密指令即可,除非需要更改新的密钥

SM1加密

向国密芯片发送:颜色部分为16字节明文

02 00 12 70 00 C8 F9 D7 00 F8 00 B6 AA 1A 3F 02 6E 2C 68 6B 4C5803

国密芯片返回:颜色部分为加密后的密文

02 00 12 00 00 C5 41 C3 47 BF 63 62 8D 26 62 05 E5 A8 C8 B898 D7 03

SM1解密

向国密芯片发送:颜色部分为16字节密文

02 00 12 70 01 C5 41 C3 47 BF 63 62 8D 26 62 05 E5 A8 C8 B898 A6 03

国密芯片返回:颜色部分为解密后的明文

02 00 12 00 00 C8 F9 D7 00 F8 00 B6 AA 1A 3F 02 6E 2C 68 6B 4C28 03

3.8.2.      SM2算法操作示例

校验Pin的,Uart口命令流,红色部分为初始Pin

向国密芯片发送:

02 00 0a 08 00 06 06 06 06 06 06 06 06 08 03//校验Pin

国密芯片返回:

02 00 02 00 00 00 03//执行正确

SM2算法产生密钥对

向国密芯片发送:

02000280cd4d03

国密芯片返回:64字节公钥+32字节私钥,浅蓝色部分是公钥,橙色是私钥

02 00 62 00 00 73 98 34 31 BF E0 7BF6 EE BD 72 6E CD 08 3C 78 2E C1 ED 39 00 37 14 4F CB E6 2C 6A FD 09 0C D8 2E94 83 34 5E B9 D5 0E EC DF A9 7C 91 29 34 A8 80 14 82 2A 03 5E F4 E6 23 7E 3D5E 29 60 A2 5E 1C BC FE C9 82 A9 C6 84 0B EC 7F 20 07 B5 9720 FF D2 E0 6C 03 07 00 25 0E C1 E4 86 C0 A4 28 9A 5D 03

SM2算法公钥导入

向国密芯片发送:颜色部分为64字节公钥

02004480ce45 AC 4F 39 52 89 F9CC FB D1 22 35 87 0E FF 20 FA 5F 57 B9 65 CE 89 95 E9 41 44 D2 7A C7 1B FA 6A1B D9 EC 31 0E 73 42 BF 38 5B 91 78 B3 8F FE 13 69 42 33 42 20 07 60 97 5D 6EE6 E8 EC C3 BC4003

国密芯片返回:02 0002 00 00 00 03//执行正确

成功生成密钥对或导入公钥后,以后可以直接发送加解密签名验签指令即可,除非需要更改新的密钥

SM2加密

向国密芯片发送:颜色部分为3字节明文

02000580ca1122334a03

国密芯片返回:颜色部分为加密后的密文

02 00 66 00 00 04 EB E7 1818 61 FA CE 1E 29 EC 10 3E 8F 40 7A A9 62 B2 2B 9F E3 7D 21 02 2B 57 64 3D 582A 3C 62 7C C4 4D BC 0C 38 AC BA 32 C3 C1 AC D6 AF 3B 78 37 B9 09 E7 01 00 32CD AD 04 26 8C 79 93 B0 A9 49 1D 86 6F 26 78 D0 FC E4 32 5F 02 88 59 AA 32 11B0 A5 FB 0E 6B 9C A7 16 18 AA F9 87 44 D5 E2 B6 45 85 B4 03

SM2解密

向国密芯片发送:颜色部分密文

02006680cb04EB E7 18 18 61 FA CE 1E 29 EC 10 3E 8F 40 7A A9 62 B2 2B 9F E3 7D 21 02 2B 5764 3D 58 2A 3C 62 7C C4 4D BC 0C 38 AC BA 32 C3 C1 AC D6 AF 3B 78 37 B9 09 E701 00 32 CD AD 04 26 8C 79 93 B0 A9 49 1D 86 6F 26 78 D0 FC E4 32 5F 02 88 59AA 32 11 B0 A5 FB 0E 6B 9C A7 16 18 AA F9 87 44 D5 E2 B6 45 85FF03

国密芯片返回:颜色部分为解密后的明文

02 00 05 00 00 11 22 33 00 03

SM2签名

向国密芯片发送:颜色部分为2字节待签消息

02000480c622335703

国密芯片返回:颜色部分为64字节签名值

02 00 42 00 00 F9 98 C7 4382 90 94 BB CA CB FF C9 A3 70 5D A7 37 D3 CE B9 56 AF 51 D0 66 58 BA B8 1F F1A6 AA 68 B1 6C 65 D9 99 5D A6 75 0C 63 F1 C3 58 62 21 41 F5 70 8A DB 96 8A A3FD 68 04 7D 9C E8 FB E5 07 03

SM2验签

向国密芯片发送:绿色部分为消息+蓝灰色64字节签名值

02004480c82233F9 98 C7 43 82 90 94 BB CA CB FF C9 A3 70 5D A7 37 D3 CE B9 56 AF 51 D0 6658 BA B8 1F F1 A6 AA 68 B1 6C 65 D9 99 5D A6 75 0C 63 F1 C3 58 62 21 41 F5 708A DB 96 8A A3 FD 68 04 7D 9C E8 FB E55E03

国密芯片返回

02 00 02 00 00 00 03//验证成功

3.8.3.      SM4算法操作示例

校验Pin的,Uart口命令流,红色部分为初始Pin

向国密芯片发送:

02 00 0a 08 00 06 06 06 06 06 06 06 06 08 03//校验Pin

国密芯片返回:

02 00 02 00 00 00 03//执行正确

SM4密钥导入

向国密芯片发送:颜色部分为16字节密钥

02 00 12 90 CC 9A 0E BD 94 4C 11 C1 17 C2 84 A8 2A 89 FD CF 9782 03

返回:02 00 02 0000 00 03//命令执行正确

成功导入密钥后,以后可以直接发送加解密指令即可,除非需要更改新的密钥

SM4加密

向国密芯片发送:颜色部分为16字节明文

02 00 12 90 00 EE 71 C4 14 53 16 11 10 33 89 CE F1 2F 8C 51 8864 03

国密芯片返回:颜色部分为加密后的密文

02 00 12 00 00 01 08 CA 30 FE C6 AB 70 EA ED 36 BD AF CA 9FA1 C7 03

SM4解密

向国密芯片发送:颜色部分为16字节密文

02 00 12 90 01 01 08 CA 30 FE C6 AB 70 EA ED 36 BD AF CA 9FA1 56 03

国密芯片返回:颜色部分为解密后的明文

02 00 12 00 00 EE 71 C4 14 53 16 11 10 33 89 CE F1 2F 8C 51 88F4 03

分享简单易用的配网终端加密模块相关推荐

  1. 配网终端加密模块国密算法芯片

    概述 目前现有的配网自动化试点(包括国网和南网)均未考虑二次安防,而在110KV以上的变电网里,二次安防是一个很重要的建设内容,主要原因在于以前配网自动化建设不规范,且技术条件不成熟. 二○一一年二月 ...

  2. 无偿分享 简单易用 贝茨训练法 调节睫状肌 近视恢复训练

    无偿分享 简单易用 贝茨训练法 调节睫状肌 近视恢复训练 1. 项目背景: 贝茨训练法(Bates training method),是1885年由美国眼科医生贝茨发明,通过调节眼球晶状体改变形状来完 ...

  3. 配网终端加密装置模块(配电终端加密单元装置)

    2017年前存量的配网自动化FTU-DTU-TTU等配网自动化终端,只采用软加密,并且只对遥控报文加密的方式实现.由于技术条件的发展成熟,2017年中国电科院始进行配电终端硬加密的安全测试,要求对三遥 ...

  4. 电力配网终端安全方案

    随着电网智能化建设的深入进行,配网安全也逐渐的被各大电网及电力公司所重视.相关部门也于2009年陆续出台了一系列的有关安全的指导性方案与规定.万协通依据电监会<电力二次系统安全防护总体方案> ...

  5. 配网加密终端(配电终端加密单元)

    根据国网相关要求配电自动化终端均要求增加硬件加密功能,且要符合相关电科院的测试要求,本产品通过国家电科院相应测试,可以国内各种主站实现加密通信,大致分绍如下: ISU-208N型配网终端FTU-DTU ...

  6. 还有脸睡?微信小程序与智能硬件终端蓝牙BLE通讯,实现WIFI配网这么简单都不会,周公都得踹醒你!

    当下各种支持WIFI模块的硬件终端越来越普遍,但要想与之进行数据交互需要先给终端连接上周边WIFI,这样才可正常通过互联网接收与发送数据,这种终端一般分为 3 类,即:可视化操作配网(窗口) .WIF ...

  7. 简单易用的终端工具——NxShell

      NxShell 是一款免费.适用于 Windows/Linux/MacOS 平台.简单易用的终端工具. 它是和Xshell .SecureCRT.PuTTY类似的终端工具. 特征 支持SSH协议 ...

  8. TTU智能配电终端_分布式dtu智能配电终端10KV配网自动化专用介绍

    SGE300FD 系列分布式配电自动化终端(以下简称装置)采用了先进的数字信号处理技术.高速工业网络通信技术.嵌入式工业芯片组和多任务实时操作系统,稳定性强.可靠性高.实时性好.环境性广.功能强大.维 ...

  9. 嵌入式设备AP配网实例分享

    大家好,我是杂烩君. 上一篇笔记我们分享了嵌入式Linux单板连接飞燕物联网平台,这篇我们分享一下配网. 在这之前,建议阅读往期相关笔记: smartconfig一件配网:嵌入式大杂烩周记第 5 期 ...

最新文章

  1. Go 学习笔记(37)— 标准命令(go build 跨平台编译、交叉编译、go clean、go run、go fmt、go install、go get)
  2. LTE PUCCH Format1
  3. 根据xml 文件生成 xsd文件 以及相关测试方法
  4. mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗
  5. 传说之下地图素材_文旅黄陵——轩辕黄帝传说故事(十一) 杜康酿酒的传说...
  6. 从体验出发构建以增长为目标的视频服务体系
  7. 《SAP HANA平台应用开发》—第2章2.3节熟悉SAP HANA工作台
  8. 高级语言程序设计(c )试卷,《高级语言程序设计C》试卷
  9. 智能会议系统(18)---如何进行视频电话
  10. 2020流行的液态风格PNG免扣素材,竟然被我找到了!
  11. python中bind的用法_Javascript中bind()方法的使用与实现
  12. Redis-数据结构02-简单动态字符串(sds)
  13. My in 2007
  14. 转载:三种方式使得iOS应用能够在后台进行数据更新和下载
  15. ie剪切增强版工具---自由填表工具filltable
  16. 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(上)
  17. CSS精灵优化Retina显示屏下的网站图像
  18. leetcode33. 搜索旋转排序数组
  19. ASUS ROG Win10.21H1 x64专业工作站极速精简优化版
  20. 声声不息,新“声”报到

热门文章

  1. jquery 表单验证 ajax提交,jquery.validationEngine ajax验证 不通过也提交表单
  2. Microsoft AppLocale Utility,微软的多语言支持工具
  3. GKCTF(MISCCRYPTO部分)(未完待续。。)
  4. wow服务器信息,魔兽世界2.4服务器最新消息和消息汇总
  5. 合作还是背叛(博弈论的诡计)
  6. CTO俱乐部系列之四:3G和移动互联网的CTO俱乐部活动
  7. 《超越平凡的平面设计: 版式设计原理与应用》—空白页面,含义无穷
  8. 国外优秀的人工智能商务工具,主要有哪些?
  9. 薛定谔 | 分子药效团构建
  10. Java17 新特性确定,Java之父:终于可以和一个长达25年的漏洞说再见了