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