UDP訊息認證機制

NB-IoT 閘道器把感測層收集到的資訊,由行動網路UDP協定傳送給IoT大平台,其中先傳輸至IoT大平台之UDP Adaptor。因目前NB-IoT模組僅支援UDP協定,所以終端設備與IoT大平台之UDP Adapter之訊息溝通協定需以UDP為基礎進行定義。以下分成兩種方式說明

(1)B0-B1-B2 僅認證一次後並在一定時間內上傳資料

首先裝置向IoT大平台取得16碼的隨機亂數(Command B0)。接下來代入FAN_ID,隨機亂數,給Chip SIM,加上ICCID算出HMAC值後,送出認證請求(Command B1)。IoT大平台送給KMS做認證並得到回應認證結果 (Command B1),若認證成功將會產生一組Session Key作為之後資料加解密使用。

當裝置要把資料傳給IoT大平台時,此時會進入上傳加密程序,會先把資料用Session Key作加密後,送給Chip SIM並算出JSON加密值eDATA並上傳加密資料(Command B2) ,然後再傳給KMS再用Session Key解密出eDATA和解出JSON資料並回傳上傳結果(Command B2)。詳細流程如圖所示

B2加密請求 (Payload包含加密設備金要和加密JSON資料)

認證比對請求(0xB2) Request(設備請求) 長度:55+16N bytes 備註
[0]Message Id 訊息種類 byte, 0xB2 設備向平台發送比對資料進行認證比對
[1]-[8]Device Id 設備代碼 Int64 8 byte,IoT平台的設備編號
[9]SN 訊息序號 byte 序號:0~255,自動累加
[10-11]Length Payload長度 word Deviec Key長度+感測器時間+JSON長度資料+加密資料+JSON資料CRC的資料總長度
[12-43]EDevice Key 設備金鑰(加密) byte[32] IoT平台中所屬專案之設備管理下的已加密的設備金鑰,解密後取前18 bytes
[44-47]Sensor Time 感測資料產生的時間 int 4 byte,1970年1月1日0時0分0秒至現在的總秒數(UTC為基準)
[48-49]JSON Data Length JSON 資料長度 word
[50-65]EDATA1 加密資料#1 byte[16] JSON資料加密,每包16 bytes,超過16 bytes放在加密資料#2
[66-81]EDATA2 加密資料#2 Byte[16] JSON資料加密,每包16 bytes,超過16 bytes放在加密資料#3
[50+16N~53+16N]CRC JSON 資料的CRC uint32 JSON 資料CRC 值採用CRC32 計算
[54+16N]Checksum 檢查碼 byte

加密回應:Payload包含結果

認證比對請求(0xB1) Request(設備請求) 長度:N bytes 備註
[0]Message Id 訊息種類 byte, 0xB2 平台回覆設備認證比對結果
[1]-[8]Device Id 設備代碼 Int64 8 byte,IoT平台的設備編號
[9]SN 訊息序號 byte 序號:0~255,自動累加
[10-11]Length Payload長度 word Deviec Key長度+感測器時間+JSON長度資料+加密資料+JSON資料CRC的資料總長度
[12]Check Result 比對結果 byte[1] 回傳值 0x00:OK 0x01:未通過認證 0x02:解密後資料格式不正確0x03: CRC 錯誤
Checksum 檢查碼 byte

(2)B0-B3 每筆上傳資料皆須認證

首先裝置向IoT大平台取得16碼的隨機亂數(Command B0)。接下來代入FAN_ID,隨機亂數,給Chip SIM,加上ICCID算出HMAC值後。此時進行認證與加密(Command B3)程序。IoT大平台送給KMS做認證並得到回應認證結果,若認證成功將會認產生一組Session Key作為之後資料加解密使用。當裝置要把資料傳給IoT大平台時,此時會進入上傳加密程序,會先把資料用Session Key作加密後,送給Chip SIM並算出JSON加密值EDATA並上傳加密資料,然後再傳給KMS再用Session Key解密出EDATA和解出JSON資料並回傳上傳結果,認證失敗或解密資料不正確回傳錯誤碼。此B0-B3如同為B0+(B1+B2),與B1+B2差異處主要為每筆上傳資料時,皆須認證,詳細流程如圖所示。

B3認證與資料加密比對請求:Payload包含Device Key

認證比對請求(0xB3) Request(設備請求) 長度:139+16N bytes 備註
[0]Message Id 訊息種類 byte, 0xB3 平台回覆設備認證比對結果
[1]-[8]Device Id 設備代碼 Int64 8 byte,IoT平台的設備編號
[9]SN 訊息序號 byte 序號:0~255,自動累加
[10-11]Length Payload長度 word Deviec Key長度+IICID+FAN_ID+Random Data回應認證結果 (Command B1)感測器時間+JSON長度資料+加密資料+JSON資料CRC的資料總長度
[12-43]EDevice Key 設備金鑰(加密) byte[32] IoT平台中所屬專案之設備管理下的已加密的設備金鑰,解密後取前18 bytes
[44-47]Sensor Time 感測資料產生的時間 int 4 byte,1970年1月1日0時0分0秒至現在的總秒數(UTC為基準)
[48-79] ICCID ICCID byte[32] ICCID,共32 bytes
[80-95] FAN_ID FAN_ID byte[16] FAN_ID,共16 bytes
[96-111] Random data Random data int Random,共16 bytes
[112-131] HMAC/td> HMAC byte[32] ICCID,共32 bytes
[132-133]JSON Data Length JSON 資料長度 word
[134-149]EDATA1 加密資料#1 byte[16] JSON資料加密,每包16 bytes,超過64 bytes放在加密資料#2
[66-81]EDATA2 加密資料#2 Byte[16] JSON資料加密,每包16 bytes,超過64 bytes放在加密資料#3
[….]EDATAN 加密資料#N Byte[16] JSON資料加密,每包16 bytes
[134+16N~137+16N]CRC JSON 資料的CRC uint32 JSON 資料CRC 值採用CRC32 計算
[138+16*N]Checksum 檢查碼 byte

下載UDP通訊協定文件