MQTT認證機制

IoT大平台針對 KMS 與 ChipSIM 雙向認證與資料加密辦法,終端設端MqTT的訂閱與發佈客製化Adaptor ( iot-encmqtt )並申請 port 3883。並規劃特有的認證協定(subscribe與publish) /v1/kms/device/{deviceId}/method。如圖所示

(1)首先裝置向IoT大平台取得16碼的隨機亂數(Command B0)。此段Mqtt連線帳密皆為ekms,此認證過程中的隨機亂數資訊系統保存期限為10分鐘。接下來代入FAN_ID,隨機亂數,給Chip SIM,加上ICCID算出HMAC值後依據 Random 字串產生資料加解密金鑰 sk。此時會中斷MQTT連線,使用加密的金鑰重新連線,此段Mqtt連線帶入帳號為ekms,密碼為Base64(共同金鑰加密後以Base64編碼字串格式)並送出認證請求(Command B1),若隨機亂數不存在則無法成功訂閱,訂閱時若已存在,資訊會直接將結果回傳。IoT大平台送給KMS做認證, KMS取得金鑰解開密碼檢查是否有權限存取該裝置並得到回應認證結果 (Command B1),若認證成功將會發送訂閱認證結果。流程如圖所示。

(2)當裝置要把資料傳給IoT大平台時,此時會進入上傳加密訊息,訂閱時若已存在先前處理結果,會直接將結果回傳,會先把資料用Session Key作加密後,送給Chip SIM並算出JSON加密值eDATA並上傳加密資料(Command B2) 並增加 enc/auth type 區分數據上傳模式(加密上傳或加密與認證上傳)然後再傳給KMS使用Session Key解密出eDATA和解出JSON資料並回傳上傳結果(Command B2)並發送數據加解密結果,流程如圖所示。

(3)裝置訂閱加密感測數據Rawdata資料Subscribe /v1/kms/device/{deivceId}/sensor/{sensorId}/rawdata,透過Broker 發送訂閱訊息。Chip SIM並算出JSON加密值eDATA並上傳加密資料,KMS使用Session Key解密出eDATA並送出發送數據加解密結果Send Base64(eData) base on topic (加密訊息) /v1/kms/device/{deivceId}/sensor/{sensorId}/rawdata,如果發送訊息當下系統認證金鑰失效(過期)則回傳Unauthenticated 訊息,須重新認證。

下載MQTT通訊協定文件