本文介紹了設備如何通過更安全的身份認證方式(ID2)連接到阿里云物聯網平臺,并建立安全傳輸通道。適用于集成了ID2安全芯片的設備。
1. 術語
Soft-KM(Key Management)密鑰管理,由阿里提供的軟件安全沙箱,基于軟件加固和虛擬化技術提供對密鑰(IoT ID2)的安全保護。
OSA(Operation System Abstractor Layer)操作系統抽象層,定義內存申請和釋放、日志打印、系統時間、網絡通信等接口,非遵循POSIX標準的OS,需重新適配這些接口。
HAL(Hardware Abstractor Layer)硬件抽象層,根據設備硬件特性,完成對加解密算法、設備唯一ID、密鑰管理和數據安全存儲的接口適配。
TLS(Transport Layer Security)安全傳輸層協議, 用于兩個通信實體之間,保護通信數據的私密性和完整性。
IoT(Internet of things)物聯網,基于互聯網實現萬物互聯。
LP(Link Platform)阿里云物聯網平臺,提供物聯網的設備管理。
SE(Secure Element)安全元件,也稱安全芯片,單獨的防篡改硬件,專門用于存儲和數據加密。
AT指令,終端設備和外設模塊之間的連接和通信的指令。
ID2安全芯片,或ID2-SE芯片,在安全芯片生產時燒錄ID2密鑰,基于安全芯片的物理防護特性保護ID2密鑰的存儲和運行安全,通過SE AT指令提供ID2密鑰的基礎運算。
2. 產品架構
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安全元器件:
點擊購買鏈接 - ID2安全元器件。
選擇硬件類型、型號和數量:
3.3 創建產品:
登錄產品控制臺,在左側導航欄,選擇常規>集成與部署 > IoT設備身份認證,單擊組合使用(與阿里云物聯網平臺)卡片的開始接入按鈕。
2. 在配置產品頁面創建新產品&分配ID2授權,然后單擊下一步按鈕。
請選擇新增產品,并輸入產品名稱。
ID2有效期:請選擇1年、3年、或5年。
分配ID2授權數量:填寫實際的設備數量,不超過賬號下可分配ID2的數量。
3.4 選擇設備認證算法:
IoT設備身份認證支持國際算法(AES-128、AES-192、AES-256)和國密算法(SM1-128、SM2-256、SM4-128),能滿足企業不同安全等級的需求。
說明
國密算法SM1需要配合ID2安全芯片使用,SM2用于業務數據完整性校驗和加密。
創建的ID2產品默認選擇的設備認證算法是AES-128;如需選擇其他設備認證算法,請按如下步驟操作:
在產品控制臺,選擇常規>集成與部署 > IoT設備身份認證,單擊獨立使用(三方物聯網平臺)卡片的開始接入按鈕。
在配置產品頁面獲取配置信息,然后單擊下一步按鈕。
選擇產品:請選擇現有產品,在下拉框中勾選產品名稱。
在獲取配置信息頁面,單擊設備認證算法后的更換按鈕,查看支持的密鑰類型(如SM4-128),并確認。
在產品詳情頁面,記錄下實例ID、ProductKey、ProductSecret。
實例ID:阿里云物聯網平臺的實例標識。企業實例ID是字符串,公共實例ID是符號“-”。
ProductKey:設備所屬產品的ProductKey。
ProductSecret:由IoT設備身份認證頒發的產品密鑰,與 ProductKey 成對出現。
3.5 設備端對接:
3.5.1 ID2設備端SDK框架:
IoT Application:
設備端的應用程序,負責業務數據處理,包括設備認證、設備建連和數據收發等。
2. IoT Linkkit:
阿里云物聯網平臺的接入SDK,提供IoT設備安全連接到阿里云IoT平臺,提供數據連云的安全通道,以及業務數據的管理。
3. ID2 Client SDK:
iTLS:輕量的安全連接協議TLS,基于ID2完成TLS的握手認證和密鑰協議,提供應用數據的收發。
ID2:IoT設備認證的對外接口,上層應用/協議基于此接口進行開發。
KM:密鑰管理模塊,支持不同形式的載體:
Soft-KM:軟件沙箱,基于軟件加固和虛擬化技術提供對ID2密鑰的安全保護。
SE:安全芯片,基于物理防護機制,提供對ID2密鑰的安全保護,通過AT指令對設備提供ID2的運算。
Crypto:提供統一的加解密算法接口。
OSA:操作系統適配接口,廠商需根據使用的OS,重新進行接口適配。
HAL:硬件適配接口,提供算法庫和Soft-KM的適配接口,廠商需根據選擇的硬件平臺,重新進行接口適配。
3.5.2 下載設備端SDK:
ID2 SDK下載:
ID2 Release Package目錄:
目錄/文件 | 說明 |
modules | 核心模塊代碼 |
include | 頭文件 |
app | 測試代碼,可用于集成調試 |
sample | ID2的示例代碼 |
doc | 文檔 |
make.settings | ID2 SDK統一配置文件:
|
make.rules | 編譯系統配置文件,可配置編譯工具鏈和編譯參數 |
makefile | 編譯腳本 |
3.5.3 集成設備端SDK:
設備硬件及系統層集成, 詳情請參考ID2安全Agent適配接口:
OSA接口適配:實現src/osa/ls_osa.c中的接口。
IROT HAL接口適配:
進入modules/irot/se目錄。
在chipset目錄, 創建新增安全芯片的目錄(如fm1280),復制template中全部文件到新增的目錄,并修改makefile指定到新建的目錄。
打開chipset/fm1280/se_driver/se_driver.c, 適配SE芯片驅動接口:
se_open_session - SE初始化
se_transmit - 發送APDU指令,并獲取response。
se_close_session - SE關閉。
設備端SDK的編譯:
在ID2 SDK的根目錄,執行命令vi ./make.settings打開文件:
修改CONFIG_LS_ID2_ROT_TYPE的值為SE
修改CONFIG_LS_ID2_KEY_TYPE的值,同ID2產品選擇的認證算法保持相同
執行命令“make clean & make plat=xxx”進行編譯
Linux x86_64默認使用系統中的GCC作為編譯工具,且默認指定“plat=x86_64”參數
如要編譯其他架構,如armhf,在make.rules中配置編譯工具,運行編譯命令“make clean & make plat=armhf”
設備連接通道層集成:
第一步:下載Linkkit代碼:
登錄物聯網平臺控制臺。
進入SDK定制頁面 - 獲取C Link SDK。
在SDK定制頁面,根據需求配置相關參數,設備認證方案需要選擇ID2:
第二步:在Linkkit根目錄,新建libs目錄,并將已適配好的ID2靜態庫拷貝到libs目錄:
第三步:修改Linkkit 配置:
在Link_SDK目錄內, 打開./core/sysdep/core_adapter.c, 關閉宏CORE_ADAPTER_MBEDTLS_ENABLED。
第四步:修改Linkkit Makefile,鏈接ID2靜態庫:
第五步:修改示例代碼中的產品信息和實例ID:
demos/mqtt_id2_demo.c:
在使用LP企業版實例時,需在mqttclient中增加實例ID:
重新配置extend_clientid字段(demos/mqtt_id2_demo.c),其中instanceId填入實例頁面中的ID:
第六步:固件編譯:
根目錄重新執行編譯,正確編譯,可生成output/mqtt-id2-demo可執行文件。
3.6 安全接入:
在完成設備端集成的基礎上,運行設備應用, 或者演示示例接入阿里云物聯網平臺
使用演示示例接入阿里云物聯網平臺:
運行固件mqtt_id2_demo,查看設備端打印的日志
在日志中,可以看到此設備上的ID2 ID(“ 000FF...”)
基于ID2進行設備和LP平臺之間的雙向認證(“Verify iTLS Server AuthCode OK”),并建立設備和LP平臺的TLS安全傳輸通道(ID2-iTLS)
查看設備狀態:
登錄產品控制臺,在左側導航欄,選擇資產>設備,查看設備狀態為正常,安全狀態為安全。
- 本页导读 (0)
- 1. 術語
- 2. 產品架構
- 3. ID2接入流程
- 3.1 概述:
- 3.2 購買ID2:
- 3.3 創建產品:
- 3.4 選擇設備認證算法:
- 3.5 設備端對接:
- 3.6 安全接入: