Pdu(加密)


1.总体架构

1.1 系统组成部分

1)NB-IOT物联网应用终端设备接入系统架构有4个主要部分:NB-IOT应用终端,NB-IOT安全使能服务,NB-IOT应用设备接入网关、应用端。
2)终端中的NB SIM卡中集成了SE芯片。SE芯片中的applet提供终端信息安全相关能力和算法。
3)电信NB-IOT安全使能服务中包括物盾平台及应用接入平台,物盾平台负责终端与业务平台对接,对设备上报的数据进行身份认证和数据解密,对业务平台下发的控制指令进行数字签名和指令加密。
4)在设备接入平台端部署集成物盾平台的SDK包(HTTP接口),SDK包提供业务平台平台与物盾平台的安全通信,接入平台只需要调用软盾本地接口即可使用物盾平台的加解密服务。

2.秘钥初始化

2.1 导入数据

将卡商提供的ICCID(20位)和对称秘钥存入物盾应用数据库(写插入语句即可。)

  • 卡内置有业务平台公钥P(不提供),对称秘钥K1(卡商提供)。
  • 物盾平台将ICCID和K1存入数据库

2.2 数据注册

注册流程

模组在注册NB平台后,获取SIM卡的初始化注册状态,如未初始化注册,则启动注册流程。

  • 模组确认SIM卡未注册,启动注册。(对应上图12)
  • SIM卡注册完成,向模组发送D`,MAC,ICCID(SIM GET REGISTRY响应报文数据)
  • 注册完成后,模组向AEP平台发送数据。(对应上图15)
// 1. 打开 channel
AT+CCHO=D1560000405010735910070000000003     
OK
                           
// 2. 获取状态 在1通道上 42是apdu长度42位数字 发送选择应用指令固定值表明物盾应用
AT+CGLA=1,42,01A4040010D1560000405010735910070000000003             
+CGLA: 4,6101               //6101 有数据返回 请终端发送C0指令获取数据

// 3. 在1通道上,发送01C0指令获取数据 
AT+CGLA=1,10,"01C0000001"                        
+CGLA: 6,029000            //6指令长度 9000表示正确执行,02表示已注册,00未注册,01注册中。

// 4. 写入注册完成 对应北向下发注册成功的指令,将卡状态由1改2
AT+CGLA=1,8,"81F00000"                                               
+CGLA: 4,9000  

// 5. 发送加密数据到AEP平台,1,加密并发送到平台   1,待加密数据长度  11,待加密数据
AT+QENCRYPT=1,1,11                      
OK

2.3 模组与AEP平台交互的数据帧格式

该部分定义了模组与AEP平台帧协议。

模组发送注册数据帧:

7E 01 iccId(20Byte) Length(2Byte) Xor(1Byte) Payload-实际注册数据(n Byte)

例:

7e0138393836313131393230383030303730343231395270
8986111920800070421995437573e24ae64a5cec85aed84ae8abadb8b1ef94282d14c9946a24123717843c8ea0099ca60bcb2c6953088fe583a9a32dfc5f5dd5873e640fe133724f8a2d9832a4276d0fb476
00

帧解释:

7e

  • Flag: 标志字段,固定为7E(126), 占用1个字节。

01

  • Type: 数据类型指示字段, 占用1个字节。
    • 0x01: 物盾平台注册;
    • 0x02: 模组上传密文数据;
    • 0x03: 模组上传明文数据或者混合数据;
    • 0x81: 物盾平台注册应答;
    • 0x82 : NB-IoT平台下发密文数据
    • 0x83: NB-IoT平台下发明文或者混合数据

3839383631313139323038303030373034323139

  • ICCID:卡号,占用20个字节(89861119208000704219)

52

  • Length: 数据长度指示字段。 占用1个字节。 表示Payload字段长度。

70

  • Xor: 异或字段. 占用1个字节, Payload字段异或。

8986111920800070421995437573e24ae64a5cec85aed84ae8abadb8b1ef94282d14c9946a24123717843c8ea0099ca60bcb2c6953088fe583a9a32dfc5f5dd5873e640fe133724f8a2d9832a4276d0fb476

  • Payload:实际注册数据(即调用物盾注册接口所需要的encData)

00

  • 暂不清楚作用。

2.4 调用物盾注册接口

将P3,meId存入物盾数据库(对应上图18-20步骤)

注册接口文档
url: https://ip:port/wd/register
请求参数:

参数名 类型 说明
appkey String 应用appKey(保存在物盾数据库)
encData String SIM GET REGISTRY响应报文数据(即模组上报到AEP平台的payload)
meId String 模组IMEI
sign String 签名 (参数按照字典顺序拼接计算出sign',+appSecret计算md5后的值)

响应结果:

{
    "code": 200,
    "msg": "SUCCESS",
    "data": {
        "meId": "867726034396442"
    },
    "version": "1.0"
}

数据库值:

2.5 数据注册状态确认

确保SIM卡将公钥P3保存到物盾数据库

注册状态接口文档
url:https://ip:port/wd/state
请求参数:

参数名 类型 说明
appkey String 应用appKey(保存在物盾数据库)
iccId String iccId
meId String 模组IMEI
sign String 签名 (参数按照字典顺序拼接计算出sign',+appSecret计算md5后的值)

响应结果:

{
    "code": 200,
    "msg": "SUCCESS",
    "data": null,
    "version": "1.0"
}

3. 加密数据上传及调用物盾接口解密

数据加解密流程

3.1 加密数据上传

加密数据不能大于54个字节

  • 1个十六进制占4位(bit),1个字节(B)占8位(bit),所以一个十六进制占0.5个字节,即一个字节可以表示两个十六进制(2个十六进制 = 1个字节)
// 1,加密并发送到平台   54,待加密数据长度  01000.....,待加密数据
AT+QENCRYPT=1,54,010000000401E8764701020305000905001F00131A06000102030405060708090A0B0C0D0E0F101112131415161707E207010B1F0701

AEP平台收到模组上传数据。

3.2 模组与AEP平台交互的数据帧格式

根据帧协议截取出加密值。(即调用物盾接口所需的encData)

9a2ca23af4afedbeafff0167f753ff7cf0bdd0147c5e96dd6220885a51f2c060490ba3f067ebbd78d13d25768831ab9dbc0ab8a3e227b187903510ab88fe68c7fde5fbd79929f9a6d868616dbb8cd63c27886d0c2cd148ad94224fd1f06fc7097dc3a166987fd7964ba2cca6239703d9c145a1c32f3796e78d62e58d04be54943a170f5b93f20895324b5e3693c02db38d8bc4e67bb0cf8de4ffeda55d1a2fe9fe347485b82f266a6e8c968dc2911223005f9f6df67342df9f45d6e16c0a2b4f4ed7542b4b8202e24a893a290748a01cf2997c73e0517315b35275

3.3 调用物盾接口对数据进行解密

对模组上报到AEP平台的加密数据进行解密获取初始值

解密数据接口文档
url:https://ip:port/wd/data/upload
请求参数:

参数名 类型 说明
appkey String 应用appKey(保存在物盾数据库)
encData String SIM SECURE DATA响应报文数据域(即模组上报到AEP平台的payload)
iccId String 卡ICCID
sign String 签名 (参数按照字典顺序拼接计算出sign',+appSecret计算md5后的值)

响应结果:

{
    "code": 200,
    "msg": "SUCCESS",
    "data": {
        "originalData": "00000002010000000401E8764701020305000905001F00131A06000102030405060708090A0B0C0D0E0F101112131415161707E207010B1F0701"
    },
    "version": "1.0"
}
``00000002``表示通讯次数。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM