本文介紹了設備如何通過更安全的身份認證方式(ID2)連接到阿里云物聯網平臺,并建立安全傳輸通道。
1. 術語
Soft-KM(Key Management)密鑰管理,由阿里提供的軟件安全沙箱,基于軟件加固和虛擬化技術提供對密鑰(IoT ID2)的安全保護。
OSA(Operation System Abstractor Layer)操作系統抽象層,定義內存申請和釋放、日志打印、系統時間、網絡通信等接口,非遵循POSIX標準的OS,需重新適配這些接口。
HAL(Hardware Abstractor Layer)硬件抽象層,根據設備硬件特性,完成對加解密算法、設備唯一ID、密鑰管理和數據安全存儲的接口適配。
ID2 OTP(One-Time Provisioning)一次性燒錄,也稱ID2空發,指設備在第一次聯網時,通過網絡請求,下發ID2數據燒錄到設備中。
TLS(Transport Layer Security)安全傳輸層協議, 用于兩個通信實體之間,保護通信數據的私密性和完整性。
IoT(Internet of things)物聯網,基于互聯網實現萬物互聯。
阿里云物聯網平臺(Link Platform)阿里云物聯網平臺,提供物聯網的設備管理。
2. ID2產品架構
ID2控制中心:
ID2的Web控制臺,提供對ID2產線灌裝、ID2產品和配額申請、以及ID2使用統計的管理。
ID2服務中心:
ID2在云端的應用,提供ID2的各種安全能力,包括ID2密鑰安全分發、設備認證、基于ID2的安全連接協議等;同時,提供各種能力的云端接口,支持業務平臺的二次開發,支持不同的安全業務需求和場景。
ID2 Client SDK:
ID2在設備端的功能組件和軟件開發框架,可支持不同操作系統和不同硬件,為IoT設備提供基于ID2的端到端的設備認證、數據加解密等各種安全能力。
3. ID2接入流程
3.1 概述:
阿里云物聯網平臺接入的方式,ID2已默認同物聯網平臺打通,因此不需要進行服務端對接。
設備建連的過程,IoT設備通過物聯網設備端Linkkit SDK調用ID2-iTLS,進行設備認證和會話密鑰協商,最后建立數據安全傳輸通道。
設備建連成功后,IoT設備和物聯網平臺,通過安全通道進行應用數據的安全傳輸。
ID2對接步驟如下:
3.2 購買ID2授權:
點擊購買鏈接 - 購買ID2認證授權。
選擇地域和可用區、規格、購買數量和有效期:
3.3 創建產品:
登錄IoT安全產品控制臺,在左側導航欄,選擇入門 > IoT設備身份認證,單擊與阿里云物聯網平臺組合使用卡片的開始接入按鈕
在配置產品頁面創建新產品&分配ID2授權,然后單擊下一步按鈕。
選擇產品:請選擇創建新產品,并輸入產品名稱。
ID2有效期:請選擇1年、3年、或5年。
分配ID2授權數量:填寫實際的設備數量,不超過賬號下可分配ID2的數量。
在查看配置信息頁面,記錄下實例ID、ProductKey、ProductSecret。
實例ID:阿里云物聯網平臺的實例標識。企業實例ID是字符串,公共實例ID是符號“-”。
ProductKey:設備所屬產品的ProductKey。
ProductSecret:由IoT設備身份認證頒發的產品密鑰,與 ProductKey 成對出現。
3.4 選擇設備認證算法:
IoT設備身份認證支持國際算法(AES-128、AES-192、AES-256)和國密算法(SM1、SM2、SM4-128),能滿足企業不同安全等級的需求。
說明
國密算法SM1需要配合ID2安全芯片使用,SM2用于業務數據完整性校驗和加密。
創建的ID2產品默認選擇的設備認證算法是AES-128;如需選擇其他設備認證算法,請按如下步驟操作:
在查看配置信息頁面,單擊設備認證算法后的更換按鈕,查看支持的密鑰類型(如SM4-128),并確認。
在查看配置信息頁面,記錄下實例ID、ProductKey、ProductSecret。
實例ID:阿里云物聯網平臺的實例標識。企業實例ID是字符串,公共實例ID是符號“-”。
ProductKey:設備所屬產品的ProductKey。
ProductSecret:由IoT設備身份認證頒發的產品密鑰,與 ProductKey 成對出現。
3.5 集成設備端SDK:
3.5.1 ID2設備端SDK框架:
iTLS:輕量的安全連接協議TLS,基于ID2完成TLS的握手認證和密鑰協議,提供應用數據的加密傳輸。
ID2:IoT設備認證和數據加密的對外接口,上層應用/協議基于此接口進行開發。
KM:密鑰管理模塊,支持不同形式的載體:
Soft-KM:軟件沙箱,基于軟件加固和虛擬化技術提供對ID2密鑰的安全保護。
SE(Secure Element):安全芯片,基于物理防護機制,提供對ID2密鑰的安全保護,通過AT指令對設備提供ID2的運算指令。
Crypto:提供統一的加解密算法接口。
OSA:操作系統適配接口,廠商需根據使用的OS,重新進行接口適配。
HAL:硬件適配接口,提供算法庫和Soft-KM的適配接口,廠商需根據選擇的硬件平臺,重新進行接口適配。
3.5.2 下載設備端SDK:
登錄IoT安全產品控制臺,在左側導航欄,選擇文檔與工具,在IoT設備身份認證設備端SDK中單擊立即下載右側的復制按鈕獲取最新的下載地址,執行命令獲取設備端SDK。
wget https://id2-schip-online.oss-cn-shanghai.aliyuncs.com/static_resources/id2_client_sdk/ID2_Client_SDK.tar
執行命令tar -xvf ID2_Client_SDK.tar完成解壓,執行命令cd <解壓SDK后的目錄>。設備端SDK的目錄說明見表格內容:
目錄/文件 | 說明 |
demos | ID2設備端的示例代碼:
|
external | 用于存放外部的組件:
|
include | ID2的頭文件目錄 |
libs | ID2的靜態庫 |
make.rules | 編譯規則文件,可配置編譯工具鏈和編譯參數 |
make.settings | 編譯配置文件,可配置ID2的密鑰類型(如AES、SM4) |
makefile | 編譯腳本 |
src | ID2的源碼目錄 |
tests | ID2的測試用例,包括HAL和ID2的測試。 |
3.5.3 集成設備端SDK:
設備硬件及系統層集成, 詳情請參考ID2安全Agent適配接口:
OSA接口適配:實現src/osa/ls_osa.c中的接口,參考目錄下__DEMO__的實現。
HAL接口適配:實現src/hal/km/demo/ls_hal_km.c中的接口,通過hal_test測試用例驗證(成功日志: “HAL KM Test Pass”),參考目錄下__DEMO__的實現。
2. 設備連接通道層集成
本節說明ID2和不同Link SDK(ID2 SDK中默認提供的,以及用戶自定義構建的)的集成方式:
使用默認的Link SDK v4.x,請跳過此步驟。
使用單獨構建的Link SDK時,認證方式必須選擇ID2;拷貝LinkSDK到external/mqtt/lk_4.x中,并執行命令cd external/mqtt/lk_4.x & ./ls_config_LinkSDK.sh完成Link SDK的配置。
返回設備端SDK根目錄。
3. 設備應用層集成
設備應用調用Link SDK的實現請參考使用示例。需要注意:
設備接入域名(mqtt_host)、MQTT服務器端口的配置方式:
設備接入域名:${YourProductKey}.itls.cn-shanghai.aliyuncs.com,其中${YourProductKey}為IoT設備身份認證產品的ProductKey
MQTT服務器端口:1883
在配置連接參數中追加配置:
設備接入域名:${YourProductKey}.itls.cn-shanghai.aliyuncs.com,其中${YourProductKey}為IoT設備身份認證產品的ProductKey
MQTT服務器端口:1883
LinkSDK集成ID2 的示例代碼,請參考demos/mqtt/lk_4.x/mqtt_id2_demo.c
4. 設備端SDK的編譯
在ID2 SDK的根目錄,執行命令vi ./make.settings打開文件, 修改CONFIG_LS_ID2_KEY_TYPE的值
同ID2產品選擇的認證算法保持相同
執行命令 vi demos/mqtt/lk_4.x/mqtt_id2_demo.c打開文件,配置如下參數:
ProductKey:ID2產品的ProductKey。
ProductSecret:ID2產品的ProductSecret。
DeviceName:自定義,同一個產品下唯一。
LP_Instance_ID:填寫在ID2產品詳情中獲得的企業實例ID字符串;如果是公共實例,填寫NULL
執行命令“make clean & make plat=xxx”進行編譯
Linux x86_64默認使用系統中的GCC作為編譯工具,且默認指定“plat=x86_64”參數
如要編譯其他架構,如armhf,在make.rules中配置編譯工具,運行編譯命令“make clean & make plat=armhf”
3.6 安全接入
在完成設備端集成的基礎上,運行設備應用, 或者演示示例接入阿里云物聯網平臺
使用演示示例接入物聯網平臺:
燒錄固件mqtt_id2_demo到設備中
運行固件mqtt_id2_demo,查看設備端打印的日志
在日志中,可以看到此設備上的ID2 ID(“ 000FF...”)
基于ID2進行設備和LP平臺之間的雙向認證(“Verify iTLS Server AuthCode OK”),并建立設備和LP平臺的TLS安全傳輸通道(ID2-iTLS);MQTT消息開始基于TLS通道進行加密傳輸(“Start to use itls to encrypt message buffer”)
查看到期時間:
登錄IoT設備身份認證控制臺,在左側導航欄,選擇物聯網身份>設備身份認證,查看設備狀態為正常,到期時間為免費試用的到期時間。
重要
付費后,每個設備的ID2到期時間單獨計算,到期時間 = 首次上線時間+授權有效期。詳情請查看計費概述。