MAXQ1065為嵌入式器件安全協處理器,提供信任根、相互認證、數據機密性和完整性、安全啟動、安全固件更新以及通用密鑰交換和批量加密或完整TLS支持的安全通信等加密功能。 Google IoT Core是一個物聯網設備管理系統,允許用戶連接,管理和接收來自遠程連接設備的數據。Google IoT Core提供了管理遠程連接設備所需的接口。
介紹
在過去幾年中,智能設備的數量呈指數級增長。它們的設計和功能的復雜性提供了許多簡化我們生活的功能。互聯網的便捷訪問以及技術和通信的進步為隨時隨地管理遠程設備打開了大門,而無需親自出現在設備位置。但是,隨著越來越多的設備相互連接,預計會出現數據操縱、未經授權的訪問和安全漏洞的風險。需要一個安全的環境來避免災難性事件。本文介紹如何使用MAXQ1065和Google IoT Core創建安全環境,并說明如何生成所需的證書和密鑰,描述它們的用法,并提供基本安全連接和設置的真實示例。本應用筆記引用MAXQ1065 SDK,用于生成密鑰、證書、器件配置和測試。SDK 可應要求提供。
MAXQ1065特性
- 用于嵌入式設備安全的固定功能IC
- 安全功能
- 安全存儲
- 芯片DNA保護+芯片屏蔽,篡改檢測器
- 8KB 動態文件系統(10K 周期),具有可自定義的安全屬性
- 安全密鑰管理和生命周期,x.509 支持
- 硬件加密引擎
- SHA-2-256
- ECC (NIST P-256)*: ECDSA, ECDH
- AES-128/256 (GCM, CBC, ECB, CCM)
- NIST SP800-90A/B/C 就緒 TRNG
- 10MHz SPI 從機,帶安全通道
- -40/+105°C,1.8V/3.3V 工作電壓,100nA 關斷模式 (**)
- 12-TDFN 3 × 3mm 間距 0.5mm
谷歌物聯網核心描述
Google IoT Core是一個物聯網設備管理,身份驗證和通信設施。物聯網節點設備(直接或通過網關)連接到谷歌物聯網核心版服務器。通常,會建立TLS連接以驗證Google IoT Core服務器。這些設備使用JSON Web Token(JWT)協議進行身份驗證。
基本
物聯網設備(直接或通過網關)連接到 Google IoT Core 服務器。在允許與 Google IoT Core 連接之前,每個設備都需要與 Google IoT Core 服務器建立傳輸層安全性 (TLS) 會話。此 TLS 會話建立為通信的身份驗證、完整性和加密創建共享對稱密鑰,并向 IoT 設備保證其連接到合法服務器。此外,一旦啟動 TLS 會話,服務器還可以使用 JWT 協議安全地識別物聯網設備。發生此安全相互身份驗證后,常規 HTTP 或 MQTT 流量可以流經已建立的 TLS 會話。
圖1.基本物聯網連接。
JWT 身份驗證依賴于客戶定義的根證書和密鑰對(JWT_CA證書和 JWT 密鑰對)。從服務器的角度來看,物聯網設備被分組到所謂的“注冊表”中,每個注冊表都由其自己的JWT_CA證書定義。屬于注冊表的所有設備都必須通過證明由注冊表附加的 JWT_CA 私鑰頒發的 JWT 證書的所有權來確認其身份。每個設備都有自己的 JWT 密鑰對,以及 JWT 證書頒發機構頒發的 JWT 證書JWT_CA。
注意: 所有證書必須采用 X.509 v3 格式,以隱私增強郵件 (PEM) 格式編碼,這是一種編碼為 base64 的 DER 格式,并包裝在-----BEGIN CERTIFICATE-----和 -----END 證書-----分隔符之間。JWT_CA私鑰必須采用 PEM 格式,并至少使用 128 位安全性進行加密。讀者需要參考定義私鑰加密技術的標準,例如 PKCS#8。私鑰JWT_CA允許生成“有效”設備;因此,必須保密并嚴格控制其使用。
圖2.設備注冊表的視圖。
制備
在繼續之前,請參閱 https://cloud.google.com/iot/docs/create-device-registry 并按照教程“創建 IoT 核心版設備注冊表”進行操作,然后繼續執行步驟“創建 設備注冊表 ”(隨附)。
身份驗證設置
創建附加到注冊表的JWT_CA根證書(和私鑰)。MAXQ1065 SDK包括make_ca_cert腳本,用于生成該序列所需的自簽名證書和密鑰。
所需步驟
-
執行“make_ca_cert”腳本:
- 它會生成JWT_CA私鑰并將其保存到文件“cert privkey_server_ECDSA_secp256r1_secp256r1.pem”中。稍后用于頒發存儲在MAXQ1065存儲器中的器件專用證書。
- 它還使用生成的JWT_CA私鑰將自簽名 x509 JWT_CA 證書生成到文件“cert_CA.pem”中。
-
將生成的JWT_CA證書上傳到 Google IoT Core 注冊表。
-
打開生成的證書文件“cert_CA.pem”并復制其內容。
圖3.生成的證書注冊表。
圖4.證書內容。-
轉到Google Cloud進入“IoT Core”面板。
圖 5.谷歌物聯網核心。
-
選擇正確的注冊表。
圖6.注冊表。
-
在所選注冊表下,單擊“ CA 證書 ”下拉菜單。
圖7.上傳 CA 證書。
-
單擊添加證書按鈕。
圖8.插入證書。
-
在“添加 CA 證書”窗口的 “證書值 ”框中,粘貼文件“cert_CA.pem”中的內容,然后單擊“ ADD ”。
圖9.粘貼證書。
-
證書被添加到注冊表中,用于驗證采用MAXQ1065的物聯網節點設備。現在,MAXQ1065必須配置器件專用證書。有關更多詳細信息,請參閱配置器件(MAXQ1065)部分。
圖 10.證書已加載。
-
配置器件 (MAXQ1065)
設備預配創建設備特定的密鑰對,并使用JWT_CA私鑰頒發其證書。
為了實現這一過程,MAXQ1065 SDK包含init_tls_googleiot腳本。此腳本提供了每個后續步驟的示例。這是過程。對于每個設備,“ init_tls_googleiot ”腳本執行以下步驟:
-
在MAXQ1065中生成器件密鑰對(JWT私鑰和JWT公鑰)。
-
讀出生成的設備公鑰。
圖 11.生成公鑰。
-
使用JWT_CA私鑰認證生成的 JWT 公鑰。
-
將器件JWT證書(csr_cert.pem)加載回器件(更具體地說,加載到MAXQ1065存儲器中)。
圖 12.加載 JWT 證書。
現在,IoT 設備具有自己的 JWT 身份驗證密鑰和關聯的證書。因此,它可以由Google IoT核心服務器進行身份驗證,更具體地說,它屬于由用于頒發設備證書的根JWT_CA證書定義的注冊表。
下面的其他步驟包括將Google IoT根證書加載到客戶端設備中,這允許設備在TLS握手期間對Google IoT核心服務器進行身份驗證,并確保它連接到真實的Google IoT服務器,而不是未知服務器。這些步驟也由同一個“ init_tls_googleiot ”腳本執行:
-
獲取 Google IoT TLS 根證書 (GTS LTSR 證書) 或證書 GS 根 R4 作為備份:
-
將谷歌物聯網TLS根證書加載到MAXQ1065內存中。
圖 13.加載谷歌物聯網TLS根證書。
在谷歌物聯網核心版上注冊設備
每次客戶端設備連接到 Google IoT 核心服務器時,其身份都必須由服務器安全地驗證。通過將每個設備預先注冊到Google IoT注冊表中,進一步的身份驗證變得更快,更簡單。事實上,每個設備的證書在注冊時都會加載到谷歌物聯網服務器注冊表中一次。在該階段,使用注冊表的JWT_CA證書對設備的證書進行驗證。谷歌物聯網核心服務器使用注冊表的證書JWT_CA來驗證來自客戶端設備的JWT證書(證書存儲在MAXQ1065中)是否確實是用JWT_CA私鑰頒發的。然后,每當設備連接到物聯網服務器時,都不需要進一步傳輸和驗證其證書。服務器只是識別設備,確保它屬于注冊表,并請求 JWT 身份驗證以確認其身份。
每個設備都需要按照此過程注冊到Google IoT Core服務器中。
使用Google IoT GCP控制臺將名為“EXAMPLE_DEVICE”的設備添加到注冊表中:gcloud 物聯網設備創建EXAMPLE_DEVICE --project=maximiot-224510 --region=us-central1 --registry=my-registry --public-key path=csr_cert.pem,type=es256-x509-pem
在這里,上面命令行中提供的 JWT 設備證書(文件名為 csr_cert.pem)由 Google IoT 使用之前上傳的JWT_CA證書進行驗證。
圖 14.開發工具包加載證書。
圖 15.在谷歌物聯網核心上注冊設備。
運行設備
將設備連接到Google IoT Core服務器遵循以下過程:
-
設備使用其本地Google IoT TLS根證書驗證Google IoT Core服務器證書。
圖 16.驗證服務器證書。-
服務器將其證書發送到客戶端(也稱為設備)。
-
客戶端使用先前在配置階段加載到MAXQ1065中的Google IoT TLS根證書來驗證服務器證書。該證書的驗證在MAXQ1065中進行。
-
MAXQ1065在成功時提取服務器公鑰并存儲以備將來使用。
圖 17.驗證服務器證書序列。
-
-
設備向谷歌物聯網核心服務器驗證自身。
圖 18.對服務器進行身份驗證。-
服務器創建新的 ECDHE 密鑰對。
-
服務器使用服務器私鑰對ECDHE公鑰和來自MAXQ1065的隨機數進行簽名,并將簽名的ECDHE公鑰發送回器件。
-
器件的MAXQ1065使用從服務器證書解碼的服務器公鑰來驗證來自服務器的傳入數據的簽名。服務器公鑰在上一步中經過驗證和解碼,并存儲在MAXQ1065中。
-
如果簽名經過驗證,則證明服務器的身份,然后ECDHE公鑰在內部保留以備下一步使用。
圖 19.對服務器序列進行身份驗證。
-
-
執行 ECDHE 密鑰交換。派生會話密鑰。
圖 20.執行 ECDHE 和派生會話密鑰。-
MAXQ1065創建一個新的隨機ECDHE密鑰對。
-
私有 ECDHE 密鑰與經過身份驗證的服務器的 ECDHE 公鑰相結合。
-
該組合在兩端(設備和服務器)上提供共享密鑰。共享密鑰進一步派生到 AES 會話密鑰中。
圖 21.執行 ECDHE 派生會話密鑰序列。
-
-
執行應用層安全性。使用會話密鑰加密/解密包。
圖 22.加密/解密。
圖 23 顯示了建立會話后的 TLS 通信。當服務器向客戶端發送消息(例如,對請求的響應)時,服務器使用 AES 會話密鑰對其消息進行加密和簽名。
客戶端設備一旦從服務器接收到TLS數據包,器件的主微控制器將TLS數據包輸入MAXQ1065。MAXQ1065使用先前建立的會話密鑰解密并驗證TLS數據包,并以明文形式返回給主微控制器。相同的過程應用于另一個通信方向。
圖 23.加密/解密序列。
-
對客戶端進行身份驗證。
圖 24.對客戶端進行身份驗證。
建立 TLS 會話后,客戶端設備對服務器進行身份驗證,但設備尚未對服務器進行身份驗證。執行此附加步驟以完成相互身份驗證。
- 服務器向客戶端發送質詢(隨機數)。
- 客戶端使用MAXQ1065使用其JWT私鑰對質詢進行簽名。
- 客戶端發回簽名和客戶端 JWT 證書。
- 服務器使用 JWT_CA 證書驗證客戶端的 JWT 證書,并從中獲取客戶端的公鑰。
- 服務器使用客戶端證書中的可信公鑰驗證質詢的簽名。
- 如果簽名經過驗證,則證明客戶端實際擁有與其證書存在的公鑰匹配的私鑰。
有關 JWT 的更多信息,請參閱 https://jwt.io/。
圖 25.對客戶端序列進行身份驗證。
用戶可以使用“google_iot”文件夾中提供的SDK示例執行上述整個過程:
./iot_core_mqtt_client -p maximiot-224510 -d projects/maximiot-224510/locations/us-central1/registries/my-registry/devices/EXAMPLE_DEVICE -t /devices/EXAMPLE_DEVICE/state
預配選項
為了便于部署,ADI提供開箱即用的工廠安全編程服務。有關更多信息和最低要求,請聯系ADI銷售代表。
圖 26 顯示了此服務的常見流程。
圖 26.ADI安全編程服務流程。
結論
物聯網設備本質上暴露給攻擊者,因為它們可能無人看管或未部署在安全設施中。它使攻擊者更容易進行侵入性攻擊,以試圖從這些設備獲取加密密鑰。獲取密鑰允許攻擊者模擬設備或替換其固件以創建僵尸網絡,這可能是對網絡進行大規模攻擊的構建塊。
MAXQ1065安全加密協處理器通過為運行嵌入式系統或物聯網應用的任何微控制器添加安全實現的加密功能和安全密鑰存儲,增強了連接嵌入式系統的安全性。特別是,MAXQ1065 ChipDNA PUF技術對黑客在集成電路上提取憑據的侵入性和逆向工程攻擊的防護能力呈指數級增長。任何證明或觀察ChipDNA操作的嘗試都會修改底層電路特性,從而阻止發現保護物聯網云基礎設施連接憑據的唯一機密。MAXQ1065的附加功能可以在連接憑證可供使用之前進行強制性的設備固件驗證,從而保證設備在連接到物聯網云服務器之前運行合法固件。同樣,數據加密密鑰可能會被鎖定,直到設備實際部署到現場,從而在制造和運輸階段保護敏感數據。
另外,將密鑰和證書預編程到MAXQ1065中,使得物聯網設備可以即時地進一步注冊到云基礎設施中,甚至更加安全。物聯網器件可以在沒有環境安全要求的情況下制造,但預先配置的MAXQ1065 IC已經安全,連接憑證被鎖定。
MAXQ1065提高了攻擊者的標準,允許以合理的成本在嵌入式設備中實現可證明的安全性。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7489瀏覽量
151051 -
集成電路
+關注
關注
5381文章
11385瀏覽量
360876 -
嵌入式
+關注
關注
5068文章
19019瀏覽量
303297
發布評論請先 登錄
相關推薦
評論