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