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訊息認證機制文件