將物聯(lián)網(wǎng)設(shè)備連接到云端的安全解決方案
盡管人們越來越意識到需要安全性,但開發(fā)人員經(jīng)常發(fā)現(xiàn)自己在安全性方面采取了快捷方式,將物聯(lián)網(wǎng)設(shè)備連接到云端。在許多情況下,合適的安全機制的復(fù)雜性,微型電池供電的物聯(lián)網(wǎng)設(shè)備中可用的有限內(nèi)存和處理資源以及運輸產(chǎn)品的需求之間的沖突似乎是不可克服的。
解決這些問題和為簡化物聯(lián)網(wǎng)設(shè)備中安全功能的實施,Microchip Technology和Google合作創(chuàng)建了一種方法,將Microchip的安全硬件功能與稱為JSON Web令牌(JWT)的簡單數(shù)據(jù)結(jié)構(gòu)相結(jié)合。結(jié)果是確保物聯(lián)網(wǎng)設(shè)備與Google Cloud IoT核心服務(wù)之間相互身份驗證的簡便方法。
本文將介紹物聯(lián)網(wǎng)設(shè)備安全威脅,并介紹當前用于應(yīng)對該威脅的設(shè)備。它將確定安全漏洞以及開發(fā)人員和嵌入式系統(tǒng)設(shè)計人員如何使用JWT關(guān)閉它們。
物聯(lián)網(wǎng)設(shè)備的安全漏洞
對物聯(lián)網(wǎng)設(shè)備的攻擊可以采取多種形式,絕不僅限于大規(guī)模的物聯(lián)網(wǎng)部署。對于希望利用用于分布式拒絕服務(wù)(DDoS)攻擊的僵尸網(wǎng)絡(luò)中的許多單個設(shè)備的資源的黑客來說,即使是最小的物聯(lián)網(wǎng)也是一個很有吸引力的目標。因此,每一類物聯(lián)網(wǎng)設(shè)備的設(shè)計者都不可避免地需要通過基于硬件的強大安全機制來保護他們的系統(tǒng),從而阻止攻擊。
例如,使用系統(tǒng)內(nèi)存或閃存存儲用于加密和身份驗證的私鑰會使IoT設(shè)備容易受到攻擊。更糟糕的是,黑客可以竊取這些密鑰并使用它們來訪問物聯(lián)網(wǎng)網(wǎng)絡(luò)和附加的公司資源。
安全IC
Microchip Technology的CryptoMemory和CryptoAuthentication IC等專用安全設(shè)備具有硬件功能基于保護私鑰和其他秘密數(shù)據(jù)的機制。 EEPROM陣列集成在這些器件中,提供安全存儲,只能通過器件的SPI或I 2 C串行接口訪問的加密安全機制(圖1)。因此,這些設(shè)備提供了一種向任何物聯(lián)網(wǎng)設(shè)備設(shè)計添加安全存儲和其他安全功能的簡單方法。
圖1:Microchip Technology硬件安全設(shè)備(如AT88SC0204C CryptoMemory IC)提供安全存儲,使用集成加密機制保護對片上EEPROM的訪問。 (圖片:Microchip Technology)
Microchip CryptoAuthentication系列的成員(如ATECC608A)增強了安全存儲基礎(chǔ),并支持安全設(shè)計中常用的加密算法。在其硬件功能中,該器件具有多種算法的硬件加速功能,包括:
非對稱加密算法:
FIPS186-3橢圓曲線數(shù)字簽名算法(ECDSA)
FIPS SP800-56A橢圓曲線Diffie-Hellman(ECDH)
NIST標準P256橢圓曲線加密(ECC)
對稱加密算法:
SHA-256哈希密碼術(shù)
基于哈希的消息身份驗證代碼(HMAC)密碼術(shù)
AES-128密碼術(shù)
AES-GCM( Galois字段乘法)密碼學(xué)
密鑰派生函數(shù)(KDF):
偽隨機函數(shù)(PRF)KDF
基于HMAC的提取 - 并且擴展KDF(HKDF)
對于加密專家來說,這組加密功能代表了支持更高級別安全協(xié)議所需的全面機制列表。身份驗證和安全數(shù)據(jù)交換。例如,KDF功能提供了傳輸層安全性(TLS)協(xié)議所需的基本機制,用于在交換甚至開始之前驗證數(shù)據(jù)交換會話中的參與者。
在此協(xié)議中,TLS會話以客戶端向服務(wù)器發(fā)送啟動安全會話的請求。服務(wù)器使用其數(shù)字證書進行響應(yīng),客戶端使用該證書來確認服務(wù)器的身份。在客戶端以這種方式驗證服務(wù)器之后,會話設(shè)置繼續(xù)通過使用服務(wù)器的公鑰來生成會話密鑰,以加密使用PRF KDF或更強大的HDKF創(chuàng)建的一些隨機值。
TLS身份驗證協(xié)議是Internet安全的基礎(chǔ)。稱為證書頒發(fā)機構(gòu)(CA)的整個證書提供商行業(yè)已經(jīng)發(fā)展為支持安全通信的這一關(guān)鍵組件。公司從CA獲得可信證書,以便在自己的服務(wù)器上安裝,以支持上述標準TLS服務(wù)器身份驗證協(xié)議。
對于物聯(lián)網(wǎng)應(yīng)用,網(wǎng)絡(luò)與公司廣泛而深入地連接,這種單向認證不足以確保保護。例如,具有欺詐性證書的黑客可以將自己表示為物聯(lián)網(wǎng)設(shè)備的合法服務(wù)器,作為更廣泛攻擊的一部分。
盡管存在風(fēng)險,但物聯(lián)網(wǎng)開發(fā)人員經(jīng)常難以實施TLS相互身份驗證協(xié)議,因為證書,密鑰,使用TLS實現(xiàn)客戶端身份驗證所需的軟件可能會超出許多物聯(lián)網(wǎng)設(shè)備的功能。通過合作,Microchip Technology和Google創(chuàng)建了一種替代方法,將ATECC608A功能與稱為JSON Web令牌(JWT)的簡單數(shù)據(jù)結(jié)構(gòu)相結(jié)合。結(jié)果是確保物聯(lián)網(wǎng)設(shè)備與Google Cloud IoT核心服務(wù)之間相互身份驗證的簡便方法。
基于JWT的身份驗證
在RFC 7519中指定,JWT是行業(yè)標準容器關(guān)于準備和傳輸JWT的實體的信息,稱為索賠。 JWT結(jié)構(gòu)本身包含三個部分:
標題,包括JSON名稱:密碼算法的名稱(“alg”)的值對(例如,ECDSA的“EC256”使用NIST P-256曲線)用于簽署令牌和令牌的類型(“typ”)(這些令牌的“JWT”)
Payload,包括JSON名稱:每個索賠的值對
簽名,它使用標頭中指定的算法來編碼密鑰以及標頭和聲明集,每個單獨轉(zhuǎn)換為加密前的base64 URL編碼表示
RFC 7519為在有效負載或其他部分中指定聲明提供了極大的靈活性。該標準甚至允許在沒有簽名或加密的情況下創(chuàng)建的不安全JWT,在這種情況下,標頭將包括算法的名稱:值對{{alg“:”none“}。對于與Google Cloud IoT核心服務(wù)一起使用的JWT,Google需要簽名部分以及包含三個強制聲明的有效負載,包括:
“iat” - 以ISO 8601 UTC時間戳格式創(chuàng)建令牌時的“頒發(fā)時間”,自1970-01-01T00:00:00Z以來的秒數(shù)(例如,2019年6月30日的1561896000 12 :格林威治標準時間00:00 PM)
“exp” - 指定令牌到期時間的UTC時間戳,最大24小時超過“iat”值加上10分鐘寬限期,以解決不同之間的系統(tǒng)時鐘偏差客戶端和服務(wù)器(例如,2019年7月1日1561982400,格林威治標準時間00:00 00:00)
“aud” - 包含開發(fā)人員Google Cloud項目ID的字符串
< p> Google的物聯(lián)網(wǎng)設(shè)備身份驗證方案將基于TLS的常規(guī)服務(wù)器身份驗證與使用這些相對簡單的聲明創(chuàng)建的JWT進行物聯(lián)網(wǎng)設(shè)備身份驗證相結(jié)合。要啟動新會話,IoT設(shè)備會打開一個到服務(wù)器的安全套接字,并使用前面描述的相同TLS協(xié)議對服務(wù)器進行身份驗證。
此過程的下一步依賴于Google IoT云對用于物聯(lián)網(wǎng)網(wǎng)絡(luò)事務(wù)的輕量級消息隊列遙測傳輸(MQTT)協(xié)議。使用安全套接字到經(jīng)過身份驗證的服務(wù)器,IoT設(shè)備使用其唯一的JWT作為登錄密碼“登錄”到該服務(wù)器的MQTT主機服務(wù)(清單1)。
雖然IoT設(shè)備發(fā)送用戶名作為此登錄序列的一部分,但用戶名不用于身份驗證。因此,傳輸了一個虛擬用戶名(清單2)。相反,IoT設(shè)備的認證基于作為登錄密碼發(fā)送的JWT進行。由于JWT簽名是標頭,有效負載和設(shè)備私鑰的組合,因此Google Cloud IoT核心服務(wù)可以驗證JWT是否真正來自授權(quán)設(shè)備。對于此驗證,Google Cloud IoT服務(wù)使用以前由IoT設(shè)備開發(fā)人員使用下述密鑰管理流程存儲在Google云中的設(shè)備公鑰。與單獨使用TLS相比,此方法通過混合方法提供相互身份驗證,從而加快流程,同時降低物聯(lián)網(wǎng)設(shè)備資源需求。
關(guān)鍵使能器
ATECC608A及其供應(yīng)鏈的功能是此方法的關(guān)鍵推動因素。雖然任何MCU最終都可以從JWT報頭和有效負載生成加密加密簽名,但任何僅使用軟件執(zhí)行的方法在沒有基于硬件的安全密鑰存儲的情況下仍然容易受到攻擊。此外,對于許多資源有限的物聯(lián)網(wǎng)設(shè)備或具有嚴格響應(yīng)時間要求的應(yīng)用,“僅軟件”實現(xiàn)所需的處理器負載和執(zhí)行延遲可能是禁止的。最后,沒有豐富的安全算法和更高級協(xié)議經(jīng)驗的開發(fā)人員很難實現(xiàn)所需的軟件功能。 Microchip通過其CryptoAuthLib庫解決了這些問題(圖2)。
圖2:因為CryptoAuthLib使用硬件抽象層(HAL)將API函數(shù)和核心基元與底層硬件分開,所以開發(fā)人員可以定位他們的適用于各種支持設(shè)備的軟件。 (圖片:Microchip Technology)
Microchip CryptoAuthLib簡化了安全IoT功能的實現(xiàn),例如Google JWT身份驗證協(xié)議,將復(fù)雜的安全操作簡化為通過CryptoAuthLib應(yīng)用程序編程接口(API)提供的一組函數(shù)調(diào)用。對于物聯(lián)網(wǎng)開發(fā)人員而言,最重要的可能是Microchip CryptoAuthLib核心功能充分利用了諸如ATECC608A之類的Microchip加密IC,可加快設(shè)計中安全功能的執(zhí)行速度。例如,清單1中對atca_jwt_finalize()的調(diào)用使用可用的加密設(shè)備(如ATECC608A)來創(chuàng)建用作清單2中密碼的JWT。在這種情況下,ATECC608A加速JWT簽名的加密,讀取設(shè)計的私有來自其集成安全存儲的關(guān)鍵,以完成前面描述的簽名創(chuàng)建過程。
然而,即使使用復(fù)雜的軟件和安全設(shè)備,由于傳統(tǒng)上管理密鑰和證書所需的方法,物聯(lián)網(wǎng)設(shè)備仍然容易受到攻擊。過去,私鑰需要在外部生成并在制造,分發(fā)甚至部署期間加載到安全存儲設(shè)備中。即使使用硬件安全模塊和安全設(shè)施,在“需要知道”它們的唯一設(shè)備之外短暫存在這些秘密代表了可能導(dǎo)致其意外或意圖暴露的安全弱點。通過利用ATECC608A的功能,Microchip和Google在很大程度上消除了傳統(tǒng)的安全漏洞。
在這種新方法中,Microchip使用ATECC608A生成密鑰對的能力,而無需私鑰離開設(shè)備(圖3)。然后,Microchip使用中間證書對設(shè)備生成的公鑰進行簽名,該證書由客戶提供并存儲在Microchip安全設(shè)施內(nèi)的安全服務(wù)器中。最后,Microchip安全地將公鑰傳輸?shù)紾oogle Cloud IoT設(shè)備管理器中的客戶帳戶,該設(shè)備管理器可為每個設(shè)備存儲最多三個公鑰,以支持密鑰輪換策略。部署后,IoT設(shè)備可以使用ATECC608A安全功能來創(chuàng)建前面描述的相互身份驗證過程中使用的JWT。
圖3:Microchip Technology和Google Cloud IoT服務(wù)相結(jié)合,簡化了密鑰和證書的配置,提供了一種旨在加強IoT應(yīng)用安全性的受保護機制。 (圖片:谷歌)
Microchip和Google之間的此次合作讓開發(fā)人員可以完全卸載這一關(guān)鍵密鑰管理流程。對于自定義要求,開發(fā)人員可以使用CryptoAuthLib API函數(shù)atcab_genkey()實現(xiàn)自己的密鑰管理過程,這會導(dǎo)致ATECC608A生成密鑰對,將私鑰存儲在其安全存儲中,并返回關(guān)聯(lián)的公鑰。/p>
為了探索密鑰生成和其他ATECC608A安全功能,開發(fā)人員可以快速建立一個圍繞Microchip SAM D21 Xplained Pro評估套件構(gòu)建的綜合開發(fā)環(huán)境?;贛icrochip ATSAMD21J18A 32位Arm ® Cortex ® -M0 + MCU,SAM D21 Xplained Pro套件提供了Microchip高級軟件框架(ASF)支持的完整硬件平臺驅(qū)動程序和代碼模塊。
為了評估包括ATECC608A在內(nèi)的CryptoAuthentication設(shè)備,開發(fā)人員可以簡單地將CryptoAuth XPRO-B附加板插入Xplained Pro板的兩個擴展頭之一。 Microchip提供了用于評估CryptoAuthLib與ATECC608A的安全功能的示例軟件。更進一步,開發(fā)人員可以將Microchip ATWINC1500-XPRO Wi-Fi附加板插入另一個標頭,以運行Microchip示例軟件,該軟件演示了本文中描述的相互認證流程,包括TLS服務(wù)器認證和JWT設(shè)備認證。
結(jié)論
雖然物聯(lián)網(wǎng)應(yīng)用安全帶來了多項要求,但關(guān)鍵挑戰(zhàn)通常在于為物聯(lián)網(wǎng)設(shè)備和云資源實施相互身份驗證。在資源有限的物聯(lián)網(wǎng)系統(tǒng)中,傳統(tǒng)協(xié)議可能超過可用內(nèi)存和處理資源。使用Microchip Technology CryptoAuthLib庫和ATECC608A CryptoAuthentication IC,開發(fā)人員可以實施基于JSON Web Tokens的更高效方法,以便將IoT設(shè)備安全地連接到Google Cloud IoT服務(wù)。