分享简单易用的配网终端加密模块
只要你会Uart接口控制编程,就能轻松实现加密模块控制。QQ:1900109344
1. 概述
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. 应答单元格式
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
分享简单易用的配网终端加密模块相关推荐
- 配网终端加密模块国密算法芯片
概述 目前现有的配网自动化试点(包括国网和南网)均未考虑二次安防,而在110KV以上的变电网里,二次安防是一个很重要的建设内容,主要原因在于以前配网自动化建设不规范,且技术条件不成熟. 二○一一年二月 ...
- 无偿分享 简单易用 贝茨训练法 调节睫状肌 近视恢复训练
无偿分享 简单易用 贝茨训练法 调节睫状肌 近视恢复训练 1. 项目背景: 贝茨训练法(Bates training method),是1885年由美国眼科医生贝茨发明,通过调节眼球晶状体改变形状来完 ...
- 配网终端加密装置模块(配电终端加密单元装置)
2017年前存量的配网自动化FTU-DTU-TTU等配网自动化终端,只采用软加密,并且只对遥控报文加密的方式实现.由于技术条件的发展成熟,2017年中国电科院始进行配电终端硬加密的安全测试,要求对三遥 ...
- 电力配网终端安全方案
随着电网智能化建设的深入进行,配网安全也逐渐的被各大电网及电力公司所重视.相关部门也于2009年陆续出台了一系列的有关安全的指导性方案与规定.万协通依据电监会<电力二次系统安全防护总体方案> ...
- 配网加密终端(配电终端加密单元)
根据国网相关要求配电自动化终端均要求增加硬件加密功能,且要符合相关电科院的测试要求,本产品通过国家电科院相应测试,可以国内各种主站实现加密通信,大致分绍如下: ISU-208N型配网终端FTU-DTU ...
- 还有脸睡?微信小程序与智能硬件终端蓝牙BLE通讯,实现WIFI配网这么简单都不会,周公都得踹醒你!
当下各种支持WIFI模块的硬件终端越来越普遍,但要想与之进行数据交互需要先给终端连接上周边WIFI,这样才可正常通过互联网接收与发送数据,这种终端一般分为 3 类,即:可视化操作配网(窗口) .WIF ...
- 简单易用的终端工具——NxShell
NxShell 是一款免费.适用于 Windows/Linux/MacOS 平台.简单易用的终端工具. 它是和Xshell .SecureCRT.PuTTY类似的终端工具. 特征 支持SSH协议 ...
- TTU智能配电终端_分布式dtu智能配电终端10KV配网自动化专用介绍
SGE300FD 系列分布式配电自动化终端(以下简称装置)采用了先进的数字信号处理技术.高速工业网络通信技术.嵌入式工业芯片组和多任务实时操作系统,稳定性强.可靠性高.实时性好.环境性广.功能强大.维 ...
- 嵌入式设备AP配网实例分享
大家好,我是杂烩君. 上一篇笔记我们分享了嵌入式Linux单板连接飞燕物联网平台,这篇我们分享一下配网. 在这之前,建议阅读往期相关笔记: smartconfig一件配网:嵌入式大杂烩周记第 5 期 ...
最新文章
- Go 学习笔记(37)— 标准命令(go build 跨平台编译、交叉编译、go clean、go run、go fmt、go install、go get)
- LTE PUCCH Format1
- 根据xml 文件生成 xsd文件 以及相关测试方法
- mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗
- 传说之下地图素材_文旅黄陵——轩辕黄帝传说故事(十一) 杜康酿酒的传说...
- 从体验出发构建以增长为目标的视频服务体系
- 《SAP HANA平台应用开发》—第2章2.3节熟悉SAP HANA工作台
- 高级语言程序设计(c )试卷,《高级语言程序设计C》试卷
- 智能会议系统(18)---如何进行视频电话
- 2020流行的液态风格PNG免扣素材,竟然被我找到了!
- python中bind的用法_Javascript中bind()方法的使用与实现
- Redis-数据结构02-简单动态字符串(sds)
- My in 2007
- 转载:三种方式使得iOS应用能够在后台进行数据更新和下载
- ie剪切增强版工具---自由填表工具filltable
- 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(上)
- CSS精灵优化Retina显示屏下的网站图像
- leetcode33. 搜索旋转排序数组
- ASUS ROG Win10.21H1 x64专业工作站极速精简优化版
- 声声不息,新“声”报到
热门文章
- jquery 表单验证 ajax提交,jquery.validationEngine ajax验证 不通过也提交表单
- Microsoft AppLocale Utility,微软的多语言支持工具
- GKCTF(MISCCRYPTO部分)(未完待续。。)
- wow服务器信息,魔兽世界2.4服务器最新消息和消息汇总
- 合作还是背叛(博弈论的诡计)
- CTO俱乐部系列之四:3G和移动互联网的CTO俱乐部活动
- 《超越平凡的平面设计: 版式设计原理与应用》—空白页面,含义无穷
- 国外优秀的人工智能商务工具,主要有哪些?
- 薛定谔 | 分子药效团构建
- Java17 新特性确定,Java之父:终于可以和一个长达25年的漏洞说再见了