MAXQ1065為嵌入式器件安全協(xié)處理器,提供信任根、相互認(rèn)證、數(shù)據(jù)機(jī)密性和完整性、安全啟動(dòng)、安全固件更新以及通用密鑰交換和批量加密或完整TLS支持的安全通信等加密功能。
Google IoT Core是一個(gè)物聯(lián)網(wǎng)設(shè)備管理系統(tǒng),允許用戶連接,管理和接收來(lái)自遠(yuǎn)程連接設(shè)備的數(shù)據(jù)。Google IoT Core提供了管理遠(yuǎn)程連接設(shè)備所需的接口。
介紹
在過(guò)去幾年中,智能設(shè)備的數(shù)量呈指數(shù)級(jí)增長(zhǎng)。它們的設(shè)計(jì)和功能的復(fù)雜性提供了許多簡(jiǎn)化我們生活的功能?;ヂ?lián)網(wǎng)的便捷訪問(wèn)以及技術(shù)和通信的進(jìn)步為隨時(shí)隨地管理遠(yuǎn)程設(shè)備打開了大門,而無(wú)需親自出現(xiàn)在設(shè)備位置。但是,隨著越來(lái)越多的設(shè)備相互連接,預(yù)計(jì)會(huì)出現(xiàn)數(shù)據(jù)操縱、未經(jīng)授權(quán)的訪問(wèn)和安全漏洞的風(fēng)險(xiǎn)。需要一個(gè)安全的環(huán)境來(lái)避免災(zāi)難性事件。本文介紹如何使用MAXQ1065和Google IoT Core創(chuàng)建安全環(huán)境,并說(shuō)明如何生成所需的證書和密鑰,描述它們的用法,并提供基本安全連接和設(shè)置的真實(shí)示例。本應(yīng)用筆記引用MAXQ1065 SDK,用于生成密鑰、證書、器件配置和測(cè)試。SDK 可應(yīng)要求提供。
MAXQ1065特性
用于嵌入式設(shè)備安全的固定功能IC
安全功能
(四)TLS 1.2,通用 SP800-56r3 ECC DH 密鑰交換
用于身份驗(yàn)證、機(jī)密性、證明的通用加密工具箱 唯一 ID 安全啟動(dòng)/安全更新
具有可配置時(shí)序的外部看門狗功能
復(fù)位輸出(可選事件)
通過(guò)篡改進(jìn)行上電篡改檢測(cè)
可現(xiàn)場(chǎng)升級(jí)
安全存儲(chǔ)
芯片DNA保護(hù)+芯片屏蔽,篡改檢測(cè)器
8KB 動(dòng)態(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 3x3毫米間距0.5毫米
谷歌物聯(lián)網(wǎng)核心描述
Google IoT Core是一個(gè)物聯(lián)網(wǎng)設(shè)備管理,身份驗(yàn)證和通信設(shè)施。物聯(lián)網(wǎng)節(jié)點(diǎn)設(shè)備(直接或通過(guò)網(wǎng)關(guān))連接到谷歌物聯(lián)網(wǎng)核心版服務(wù)器。通常,會(huì)建立TLS連接以驗(yàn)證Google IoT Core服務(wù)器。這些設(shè)備使用JSON Web Token(JWT)協(xié)議進(jìn)行身份驗(yàn)證。
基本
物聯(lián)網(wǎng)設(shè)備(直接或通過(guò)網(wǎng)關(guān))連接到 Google IoT Core 服務(wù)器。在允許與 Google IoT Core 連接之前,每個(gè)設(shè)備都需要與 Google IoT Core 服務(wù)器建立傳輸層安全性 (TLS) 會(huì)話。此 TLS 會(huì)話建立為通信的身份驗(yàn)證、完整性和加密創(chuàng)建共享對(duì)稱密鑰,并向 IoT 設(shè)備保證其連接到合法服務(wù)器。此外,一旦啟動(dòng) TLS 會(huì)話,服務(wù)器還可以使用 JWT 協(xié)議安全地識(shí)別物聯(lián)網(wǎng)設(shè)備。發(fā)生此安全相互身份驗(yàn)證后,常規(guī) HTTP 或 MQTT 流量可以流經(jīng)已建立的 TLS 會(huì)話。
圖1.基本物聯(lián)網(wǎng)連接。
JWT 身份驗(yàn)證依賴于客戶定義的根證書和密鑰對(duì)(JWT_CA證書和 JWT 密鑰對(duì))。從服務(wù)器的角度來(lái)看,物聯(lián)網(wǎng)設(shè)備被分組到所謂的“注冊(cè)表”中,每個(gè)注冊(cè)表都由其自己的JWT_CA證書定義。屬于注冊(cè)表的所有設(shè)備都必須通過(guò)證明由注冊(cè)表附加的 JWT_CA 私鑰頒發(fā)的 JWT 證書的所有權(quán)來(lái)確認(rèn)其身份。每個(gè)設(shè)備都有自己的 JWT 密鑰對(duì),以及 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è)備注冊(cè)表的視圖。
制備
在繼續(xù)之前,請(qǐng)參閱 https://cloud.google.com/iot/docs/create-device-registry 并按照教程“創(chuàng)建 IoT 核心版設(shè)備注冊(cè)表”進(jìn)行操作,然后繼續(xù)執(zhí)行步驟“創(chuàng)建設(shè)備注冊(cè)表”(隨附)。
身份驗(yàn)證設(shè)置
創(chuàng)建附加到注冊(cè)表的JWT_CA根證書(和私鑰)。MAXQ1065 SDK包括make_ca_cert腳本,用于生成該序列所需的自簽名證書和密鑰。
所需步驟
執(zhí)行“make_ca_cert”腳本:
它會(huì)生成JWT_CA私鑰并將其保存到文件“cert privkey_server_ECDSA_secp256r1_secp256r1.pem”中。稍后用于頒發(fā)存儲(chǔ)在MAXQ1065存儲(chǔ)器中的器件專用證書。
它還使用生成的JWT_CA私鑰將自簽名 x509 JWT_CA 證書生成到文件“cert_CA.pem”中。
將生成的JWT_CA證書上傳到 Google IoT Core 注冊(cè)表。
打開生成的證書文件“cert_CA.pem”并復(fù)制其內(nèi)容。
轉(zhuǎn)到Google Cloud進(jìn)入“IoT Core”面板。
選擇正確的注冊(cè)表。
在所選注冊(cè)表下,單擊“CA 證書”下拉菜單。
單擊添加證書按鈕。
在“添加 CA 證書”窗口的“證書值”框中,粘貼文件“cert_CA.pem”中的內(nèi)容,然后單擊“ADD”。
證書被添加到注冊(cè)表中,用于驗(yàn)證采用MAXQ1065的物聯(lián)網(wǎng)節(jié)點(diǎn)設(shè)備?,F(xiàn)在,MAXQ1065必須配置器件專用證書。有關(guān)更多詳細(xì)信息,請(qǐng)參閱配置器件(MAXQ1065)部分。
配置器件 (MAXQ1065)
設(shè)備預(yù)配創(chuàng)建設(shè)備特定的密鑰對(duì),并使用JWT_CA私鑰頒發(fā)其證書。
為了實(shí)現(xiàn)這一過(guò)程,MAXQ1065 SDK包含init_tls_googleiot腳本。此腳本提供了每個(gè)后續(xù)步驟的示例。這是過(guò)程。對(duì)于每個(gè)設(shè)備,“init_tls_googleiot”腳本執(zhí)行以下步驟:
在MAXQ1065中生成器件密鑰對(duì)(JWT私鑰和JWT公鑰)。
讀出生成的設(shè)備公鑰。
使用JWT_CA私鑰認(rèn)證生成的 JWT 公鑰。
將器件JWT證書(csr_cert.pem)加載回器件(更具體地說(shuō),加載到MAXQ1065存儲(chǔ)器中)。
獲取 Google IoT TLS 根證書 (GTS LTSR 證書) 或證書 GS 根 R4 作為備份:
https://pki.goog/gtsltsr/gtsltsr.crt
https://pki.goog/gsr4/GSR4.crt
將谷歌物聯(lián)網(wǎng)TLS根證書加載到MAXQ1065內(nèi)存中。
在谷歌物聯(lián)網(wǎng)核心版上注冊(cè)設(shè)備
每次客戶端設(shè)備連接到 Google IoT 核心服務(wù)器時(shí),其身份都必須由服務(wù)器安全地驗(yàn)證。通過(guò)將每個(gè)設(shè)備預(yù)先注冊(cè)到Google IoT注冊(cè)表中,進(jìn)一步的身份驗(yàn)證變得更快,更簡(jiǎn)單。事實(shí)上,每個(gè)設(shè)備的證書在注冊(cè)時(shí)都會(huì)加載到谷歌物聯(lián)網(wǎng)服務(wù)器注冊(cè)表中一次。在該階段,使用注冊(cè)表的JWT_CA證書對(duì)設(shè)備的證書進(jìn)行驗(yàn)證。谷歌物聯(lián)網(wǎng)核心服務(wù)器使用注冊(cè)表的證書JWT_CA來(lái)驗(yàn)證來(lái)自客戶端設(shè)備的JWT證書(證書存儲(chǔ)在MAXQ1065中)是否確實(shí)是用JWT_CA私鑰頒發(fā)的。然后,每當(dāng)設(shè)備連接到物聯(lián)網(wǎng)服務(wù)器時(shí),都不需要進(jìn)一步傳輸和驗(yàn)證其證書。服務(wù)器只是識(shí)別設(shè)備,確保它屬于注冊(cè)表,并請(qǐng)求 JWT 身份驗(yàn)證以確認(rèn)其身份。
每個(gè)設(shè)備都需要按照此過(guò)程注冊(cè)到Google IoT Core服務(wù)器中。
使用Google IoT GCP控制臺(tái)將名為“EXAMPLE_DEVICE”的設(shè)備添加到注冊(cè)表中:
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)行驗(yàn)證。
圖 14.開發(fā)工具包加載證書。
圖 15.在谷歌物聯(lián)網(wǎng)核心上注冊(cè)設(shè)備。
運(yùn)行設(shè)備
將設(shè)備連接到Google IoT Core服務(wù)器遵循以下過(guò)程:
設(shè)備使用其本地Google IoT TLS根證書驗(yàn)證Google IoT Core服務(wù)器證書。
服務(wù)器將其證書發(fā)送到客戶端(也稱為設(shè)備)。
客戶端使用先前在配置階段加載到MAXQ1065中的Google IoT TLS根證書來(lái)驗(yàn)證服務(wù)器證書。該證書的驗(yàn)證在MAXQ1065中進(jìn)行。
MAXQ1065在成功時(shí)提取服務(wù)器公鑰并存儲(chǔ)以備將來(lái)使用。
設(shè)備向谷歌物聯(lián)網(wǎng)核心服務(wù)器驗(yàn)證自身。
服務(wù)器創(chuàng)建新的 ECDHE 密鑰對(duì)。
服務(wù)器使用服務(wù)器私鑰對(duì)ECDHE公鑰和來(lái)自MAXQ1065的隨機(jī)數(shù)進(jìn)行簽名,并將簽名的ECDHE公鑰發(fā)送回器件。
器件的MAXQ1065使用從服務(wù)器證書解碼的服務(wù)器公鑰來(lái)驗(yàn)證來(lái)自服務(wù)器的傳入數(shù)據(jù)的簽名。服務(wù)器公鑰在上一步中經(jīng)過(guò)驗(yàn)證和解碼,并存儲(chǔ)在MAXQ1065中。
如果簽名經(jīng)過(guò)驗(yàn)證,則證明服務(wù)器的身份,然后ECDHE公鑰在內(nèi)部保留以備下一步使用。
執(zhí)行 ECDHE 密鑰交換。派生會(huì)話密鑰。
MAXQ1065創(chuàng)建一個(gè)新的隨機(jī)ECDHE密鑰對(duì)。
私有 ECDHE 密鑰與經(jīng)過(guò)身份驗(yàn)證的服務(wù)器的 ECDHE 公鑰相結(jié)合。
該組合在兩端(設(shè)備和服務(wù)器)上提供共享密鑰。共享密鑰進(jìn)一步派生到 AES 會(huì)話密鑰中。
執(zhí)行應(yīng)用層安全性。使用會(huì)話密鑰加密/解密包。
對(duì)客戶端進(jìn)行身份驗(yàn)證。
建立 TLS 會(huì)話后,客戶端設(shè)備對(duì)服務(wù)器進(jìn)行身份驗(yàn)證,但設(shè)備尚未對(duì)服務(wù)器進(jìn)行身份驗(yàn)證。執(zhí)行此附加步驟以完成相互身份驗(yàn)證。
服務(wù)器向客戶端發(fā)送質(zhì)詢(隨機(jī)數(shù))。
客戶端使用MAXQ1065使用其JWT私鑰對(duì)質(zhì)詢進(jìn)行簽名。
客戶端發(fā)回簽名和客戶端 JWT 證書。
服務(wù)器使用 JWT_CA 證書驗(yàn)證客戶端的 JWT 證書,并從中獲取客戶端的公鑰。
服務(wù)器使用客戶端證書中的可信公鑰驗(yàn)證質(zhì)詢的簽名。
如果簽名經(jīng)過(guò)驗(yàn)證,則證明客戶端實(shí)際擁有與其證書存在的公鑰匹配的私鑰。
圖 25.對(duì)客戶端序列進(jìn)行身份驗(yàn)證。
用戶可以使用“google_iot”文件夾中提供的SDK示例執(zhí)行上述整個(gè)過(guò)程:
./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ù)配選項(xiàng)
為了便于部署,ADI提供開箱即用的工廠安全編程服務(wù)。有關(guān)更多信息和最低要求,請(qǐng)聯(lián)系A(chǔ)DI銷售代表。
圖 26 顯示了此服務(wù)的常見流程。
圖 26.ADI安全編程服務(wù)流程。
結(jié)論
物聯(lián)網(wǎng)設(shè)備本質(zhì)上暴露給攻擊者,因?yàn)樗鼈兛赡軣o(wú)人看管或未部署在安全設(shè)施中。它使攻擊者更容易進(jìn)行侵入性攻擊,以試圖從這些設(shè)備獲取加密密鑰。獲取密鑰允許攻擊者模擬設(shè)備或替換其固件以創(chuàng)建僵尸網(wǎng)絡(luò),這可能是對(duì)網(wǎng)絡(luò)進(jìn)行大規(guī)模攻擊的構(gòu)建塊。
MAXQ1065安全加密協(xié)處理器通過(guò)為運(yùn)行嵌入式系統(tǒng)或物聯(lián)網(wǎng)應(yīng)用的任何微控制器添加安全實(shí)現(xiàn)的加密功能和安全密鑰存儲(chǔ),增強(qiáng)了連接嵌入式系統(tǒng)的安全性。特別是,MAXQ1065 ChipDNA PUF技術(shù)對(duì)黑客在集成電路上提取憑據(jù)的侵入性和逆向工程攻擊的防護(hù)能力呈指數(shù)級(jí)增長(zhǎng)。任何證明或觀察ChipDNA操作的嘗試都會(huì)修改底層電路特性,從而阻止發(fā)現(xiàn)保護(hù)物聯(lián)網(wǎng)云基礎(chǔ)設(shè)施連接憑據(jù)的唯一機(jī)密。MAXQ1065的附加功能可以在連接憑證可供使用之前進(jìn)行強(qiáng)制性的設(shè)備固件驗(yàn)證,從而保證設(shè)備在連接到物聯(lián)網(wǎng)云服務(wù)器之前運(yùn)行合法固件。同樣,數(shù)據(jù)加密密鑰可能會(huì)被鎖定,直到設(shè)備實(shí)際部署到現(xiàn)場(chǎng),從而在制造和運(yùn)輸階段保護(hù)敏感數(shù)據(jù)。
另外,將密鑰和證書預(yù)編程到MAXQ1065中,使得物聯(lián)網(wǎng)設(shè)備可以即時(shí)地進(jìn)一步注冊(cè)到云基礎(chǔ)設(shè)施中,甚至更加安全。物聯(lián)網(wǎng)器件可以在沒有環(huán)境安全要求的情況下制造,但預(yù)先配置的MAXQ1065 IC已經(jīng)安全,連接憑證被鎖定。
MAXQ1065提高了攻擊者的標(biāo)準(zhǔn),允許以合理的成本在嵌入式設(shè)備中實(shí)現(xiàn)可證明的安全性。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19390瀏覽量
230601 -
嵌入式
+關(guān)注
關(guān)注
5089文章
19161瀏覽量
306661 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2912文章
44855瀏覽量
375471
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論