衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何快速安全地將物聯網應用連接到 Google Cloud

丫丫119 ? 來源:未知 ? 作者:肖冰 ? 2019-08-13 10:46 ? 次閱讀

Google Cloud 之類的企業級云服務為物聯網開發人員提供了各種功能服務,從可擴展虛擬機服務到交鑰匙型人工智能 (AI) 應用,不一而足。而這些服務的基本要求則是使用特定的安全方法來建立并維護物聯網設備與云端之間的安全連接。但是對開發人員而言,實施適當的安全機制可能會導致延遲,從而增加本就交期緊迫的設計項目的復雜性。

Microchip TechnologyPIC-IoT WG開發板采用專用安全 IC 構建,為 Google Cloud 連接提供交鑰匙型解決方案。該套件使用專用安全 IC,可提供一個綜合性平臺,用于加速開發能夠安全連接到 Google Cloud 服務的物聯網設計。本文介紹了安全連接的關鍵要求,并闡示了開發人員如何在典型的物聯網設計中使用 PIC-IoT WG 來滿足這些要求。

安全的復雜性

確保物聯網設備與遠程主機服務器之間安全連接的能力,是全面保護物聯網應用和相關網絡企業資源的基礎。對于這些服務器和其他企業級系統可以提供的功能和性能,以資源有限的微控制器和最小內存構建的物聯網設備則完全無法提供。若是希冀簡單的物聯網設備能傳送傳感器數據或實時操控致動器,而出于物聯網設備本身的性質局限,即使只是實現最基本的安全算法,可能也無法達到處理要求。

安全方法所依賴的基本原則,即突破安全屏障所付出的代價應比屏障保護的資產價值更高昂。對于基于算法的安全方法,這意味著解密加密信息或破壞認證協議在計算方面應該是令人望而卻步的。至少,破壞基于算法的安全性應當需要一定水平的計算資源和所需時間,其代價超過受保護數據或通信通道的價值或時效。因此,加密算法試圖將有價值的數據掩藏在一系列復雜的計算密集型處理步驟之下,且必須使用密鑰才能解開。例如,廣泛使用的高級加密標準 (AES) 算法對數據進行多輪循環處理,各輪循環均包含數個步驟,即首先生成密鑰,然后再進行字節替換、移位和矩陣計算(圖 1)。

加密算法專門采用一系列復雜操作的示意圖

圖 1:為了使解密難以實現,甚至無法實現,加密算法專門采用一系列復雜操作,比如 AES 算法的這個步驟,將數據與私鑰生成的字節相結合。(圖片來源:Wikimedia Commons)

對于諸如 AES 一類的對稱加密算法,加密信息接收者需使用相同的密鑰才能解密數據。相反,非對稱算法使用一對密鑰,一個私鑰和一個公鑰,消除了因使用共享密鑰可能造成的風險,可代價卻是使計算變得更為復雜。采用這種算法時,發送者和接收者在交換公鑰的同時,對各自持有的私鑰保密。因此,其中一方可以使用另一方的公鑰來加密信息,但信息只能使用另一方的私鑰進行解密。

為了進一步提供保護,高級算法會建立在非對稱公鑰加密算法之上,僅在特定的信息交換會話期間,才允許安全交換用于加密數據的短期共享私鑰。考慮到這些密鑰交換的關鍵性,如橢圓曲線 Diffie-Hellman 算法 (ECDH) 等更高級的算法可將密鑰深深掩藏在復雜的橢圓曲線計算之下。諸如傳輸層安全 (TLS) 之類的認證協議通過使用數字證書,將 Diffie-Hellman 密鑰交換之類的機制與正式驗證方法相結合;而數字證書可在公鑰中嵌入來自認證機構(CA,可證明證書的真實性)的可驗證數字簽名。

正如簡要說明所述,安全方法依賴于各層的加密算法和協議,而最終仍取決于私鑰。雖然這些層次能經受住黑客的持續攻擊,但如若私鑰被發現了,整個安全結構頃刻就會分崩離析。

因此,基于硬件的安全密鑰存儲是物聯網設備安全性的基本要求。此外,這些算法和協議的計算復雜性決定了對專用加密引擎的需求,這些引擎必須能夠為資源有限的微控制器分擔復雜的計算。

基于硬件的安全

專用安全元件硬件設備,如 Microchip Technology 的ATECC608ACryptoAuthentication IC,具備保護密鑰和提高加密算法執行速度所需的特性。除了這些特性外,ATECC608A 還提供片上 EEPROM,可安全存儲多達 16 個密鑰、證書和其他數據,以及其他必要的功能,包括符合 NIST SP 800-90A/B/C 標準的隨機數發生器。

ATECC608A 不僅是一種安全存儲設備,還可以提高多種算法的執行速度,包括用于對稱加密的 AES 和非對稱加密的 ECDH。此外,該器件還支持更高級別的服務,包括安全引導(請參閱“使用加密芯片為物聯網器件設計增加安全引導”)。

除了通過分擔這些算法的執行任務所獲得的直接性能優勢之外,ATECC608A 還具備加密引擎、安全存儲和其他功能,將安全性從根本上提升到另一個層次:密鑰與不受信任的實體保持隔離。這些實體包括不特別注重安全性的微控制器、微控制器上運行的軟件以及使用軟件的個人。設備還能生成私鑰,這為制造或分銷設施的部署提供更進一步的安全性。

與傳統基于軟件的安全方法相比,結果是減少了威脅向量的數量。這進而支持縱深防御原則,即有效安全策略的核心。

ATECC608A 的這種功能全面集成方式簡化了硬件接口的要求。該器件可作為另一個 I2C 外設運行,甚至可以與其他器件共享微控制器的 I2C 總線,如 Microchip Technology 的MCP9808等數字傳感器(圖 2)。

Microchip Technology 的 ATECC608A CryptoAuthentication IC 示意圖

圖 2:由于 Microchip Technology 的 ATECC608A CryptoAuthentication IC(左)完全在片上完成安全處理,因此可以提供簡單的 I2C 硬件接口,與其他 I2C 器件一起使用,如 Microchip Technology 的 MCP9808 I2C 數字溫度傳感器(右)。(圖片來源:Microchip Technology)

然而,就軟件層面而言,ATECC608A 豐富的功能會使接口復雜化。Microchip Technology 的CryptoAuthLib庫將接口抽象為一組直觀函數調用,可在 CryptoAuthLib 應用程序編程接口 (API) 中使用。該庫與 Microchip Technology 的MPLAB X集成開發環境 (IDE) 中的相關驅動程序和中間件捆綁在一起。雖然 CryptoAuthLib API 和驅動程序可為采用 ATECC608A 的定制設計提供基礎元素,但在實現安全連接到 Google Cloud 所需的完整安全鏈方面,開發人員仍面臨著其他挑戰。而 Microchip Technology 的 PIC-IoT WG 開發板也能消除這一障礙。

開發端到端的物聯網應用

PIC-IoT 板基于 ATECC608A 和 Microchip Technology 的低成本PIC24FJ128GA70516 位微控制器,這款無線物聯網設計包含了 Microchip Technology 的ATWINC1510Wi-Fi 模塊、Vishay SemiconductorTEMT6000X01環境光傳感器和 MCP9808 I2C 溫度傳感器。此外,開發人員通過添加數百種MikroElektronikaClick板提供的傳感器和致動器,可以輕松擴展硬件基礎平臺。對于軟件開發,Microchip Technology 提供了 MPLAB X IDE 及相關的MPLAB 代碼配置器(MCC) 快速原型開發工具。

該電路板和相關軟件可以為基本端到端物聯網應用評估提供交鑰匙型平臺,而這類應用的運行建立在物聯網傳感器設備與 Google Cloud 服務的安全連接基礎之上。該套件以獨特的方法實現了相互身份驗證,即使對于資源受限的物聯網設備也能進行驗證。使用該方法,物聯網設備可以使用輕型 TLS 服務來驗證 Google 端的連接,并用 JavaScript Object Notation (JSON) Web Token (JWT),向 Google 服務器證明自身身份(請參閱“將 IoT 設備安全連接到云端的更簡單的解決方案”)。除了器件驅動程序、板級支持包和中間件服務外,Microchip Technology 還通過 MPLAB 開發套件,并作為適用于 PIC-IoT 板的完整樣例物聯網應用一部分來演示該方法。

通過樣例應用程序,開發人員不僅可以獲得使用云應用的經驗,還可以獲得主要云服務提供商提供的物聯網專用服務,將物聯網設備連接到云端的經驗。例如,物聯網設備可通過 Google Cloud IoT Core 訪問 Google Cloud 資源,該 IoT Core 提供了設備連接、相關元數據管理等所需的一系列服務(圖 3)。

Google Cloud 提供專用服務 Google Cloud IoT Core 的示意圖

圖 3:與其他企業云提供商一樣,Google Cloud 也提供專用服務 Google Cloud IoT Core,旨在滿足將物聯網設備與云資源結合相關的獨特要求。(圖片來源:Google)

使用云服務

在后端,Google Cloud IoT Core 使用發布/訂閱模式,通過數據代理為設備提供對 Google Cloud 高級資源的訪問權限。在前端,IoT Core 采用超文本傳輸協議 (HTTP) 或消息隊列遙測傳輸 (MQTT),為物聯網設備起到了橋接作用。MQTT 是國際標準化組織 (ISO) 的標準消息傳輸協議,旨在以最小通信帶寬和物聯網設備資源運行。Microchip Technology 的 PIC-IoT 板軟件應用演示了如何采用在傳輸控制協議/網際協議 (TCP/IP) 套接字連接上運行的 MQTT,而該連接采用上述的 TLS/JWT 雙向認證方法來確保安全。

建立安全連接后,該軟件采用 MQTT 與 Google Cloud IoT Core 服務進行通信,建立通道或“主題”,用于將傳感器數據發送到 Google Cloud 并響應來自云服務的命令。Google 調用物聯網設備軟件進行訂閱,然后將數據發送到表單/devices/{deviceID}/events的指定主題,并在寬泛的events主題下提供了子主題選項。除了設備管理功能等其他主題外,Google 還指定了/devices/{device-id}/commands主題,可用于將命令從云端發送到物聯網設備。Google 甚至提供了一個全能主題 (/devices/{device-id}/commands/#),允許物聯網設備接收通過任何子主題發送的命令。

PIC-IoT 應用使用基于定時器和回調的可擴展軟件架構演示了這些不同的程序。基于這種架構,主模塊 (main.c) 只需提供主例程 (main()) 以及用于發送 (sendToCloud()) 和接收 (receivedFromCloud()) 消息的應用級例程。在進入運行計時器調度程序的無限循環之前,main()主例程本身只調用一對初始化例程,并為用戶例程提供占位符(清單 1)。

復制void receivedFromCloud(uint8_t *topic, uint8_t *payload) { char *toggleToken = ""toggle":"; char *subString; if ((subString = strstr((char*)payload, toggleToken))) { LED_holdYellowOn( subString[strlen(toggleToken)] == '1' ); } debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "topic: %s", topic); debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "payload: %s", payload); } // This will get called every 1 second only while we have a valid Cloud connection void sendToCloud(void) { static char json[70]; // This part runs every CFG_SEND_INTERVAL seconds int rawTemperature = SENSORS_getTempValue(); int light = SENSORS_getLightValue(); int len = sprintf(json, "{"Light":%d,"Temp":"%d.%02d"}", light,rawTemperature/100,abs(rawTemperature)%100); if (len >0) { CLOUD_publishData((uint8_t*)json, len); LED_flashYellow(); } } #include "mcc_generated_files/application_manager.h" /* Main application */ int main(void) { // initialize the device SYSTEM_Initialize(); application_init(); while (1) { // Add your application code runScheduler(); } return 1; }

清單 1:Microchip Technology 的 PIC-IoT 板樣例應用程序使用一系列定時器和回調來簡化主循環,并且開發人員可輕松添加自己的服務和應用例程。(代碼來源:Microchip Technology)

在進入無限循環之前,調用SYSTEM_Initialize()例程初始化硬件組件,包括時鐘模數轉換器 (ADC)、中斷等。application_init()例程初始化各種包括 CryptoAuthentication 庫在內的軟件系統,并連接到 Wi-Fi 和云本身。最后,application_init()設置一個 100 毫秒 (ms) 的計時器來執行MAIN_dataTask()。計時器到期并調用MAIN_dataTask()時,該例程檢查云連接,并且每秒調用一次sendToCloud(),視具體情況設置電路板 LED,以指示應用的當前運行狀態(清單 2)。接著,開發人員可以通過 Microchip Technology 在 Google Cloud 上提供的免費沙盒帳號來查看傳感器值。

復制// This gets called by the scheduler approximately every 100ms uint32_t MAIN_dataTask(void *payload) { static time_t previousTransmissionTime = 0; // Get the current time.This uses the C standard library time functions time_t timeNow = time(NULL); // Example of how to send data when MQTT is connected every 1 second based on the system clock if (CLOUD_isConnected()) { // How many seconds since the last time this loop ran?int32_t delta = difftime(timeNow,previousTransmissionTime); if (delta >= CFG_SEND_INTERVAL) { previousTransmissionTime = timeNow; // Call the data task in main.c sendToCloud(); } } if(shared_networking_params.haveAPConnection) { LED_BLUE_SetLow(); } else { LED_BLUE_SetHigh(); } if(shared_networking_params.haveERROR) { LED_RED_SetLow(); } else { LED_RED_SetHigh(); } if (LED_isBlinkingGreen() == false) { if(CLOUD_isConnected()) { LED_GREEN_SetLow(); } else { LED_GREEN_SetHigh(); } } // This is milliseconds managed by the RTC and the scheduler, this return makes the // timer run another time, returning 0 will make it stop return MAIN_DATATASK_INTERVAL; }

清單 2:使用定時器和回調機制,Microchip Technology 的 PIC-IoT 樣例應用程序每秒向云端發送一次傳感器數據 (CFG_SEND_INTERVAL=1),并更新電路板 LED 狀態以指示當前運行狀態。(代碼來源:Microchip Technology)

處理來自云端的命令同樣簡單。樣例應用程序演示了如何關聯回調例程,例如receivedFromCloud()可用于處理接收到的消息。在初始化階段,上述的application_init()例程調用例程 (CLOUD_subscribe()) 來執行 Google Cloud 訂閱。在此過程中,軟件回調receivedFromCloud()來更新表格 (imqtt_publishReceiveCallBackTable)(清單 3)。在本例中,樣例應用程序使用config主題,并從NUM_TOPICS_SUBSCRIBE=1開始將索引硬編碼到表中,但使用一般命令主題和派生子主題也是另一種選擇。

復制void CLOUD_subscribe(void) { mqttSubscribePacket cloudSubscribePacket; uint8_t topicCount = 0; // Variable header cloudSubscribePacket.packetIdentifierLSB = 1; cloudSubscribePacket.packetIdentifierMSB = 0; // Payload for(topicCount = 0; topicCount < NUM_TOPICS_SUBSCRIBE; topicCount++) { sprintf(mqttSubscribeTopic, "/devices/%s/config", deviceId); cloudSubscribePacket.subscribePayload[topicCount].topic = (uint8_t *)mqttSubscribeTopic; cloudSubscribePacket.subscribePayload[topicCount].topicLength = strlen(mqttSubscribeTopic); cloudSubscribePacket.subscribePayload[topicCount].requestedQoS = 0; imqtt_publishReceiveCallBackTable[0].topic = mqttSubscribeTopic; imqtt_publishReceiveCallBackTable[0].mqttHandlePublishDataCallBack = receivedFromCloud; MQTT_SetPublishReceptionHandlerTable(imqtt_publishReceiveCallBackTable); } if(MQTT_CreateSubscribePacket(&cloudSubscribePacket) == true) { debug_printInfo("CLOUD: SUBSCRIBE packet created"); sendSubscribe = false; } }

清單 3:Microchip Technology 樣例應用程序顯示了開發人員如何將回調例程與接收到的 MQTT 消息輕松關聯在一起,在本例中,定義receivedFromCloud()函數來回調從默認主題接收到的消息。(代碼來源:Microchip Technology)

開發人員可以使用交付的 PIC-IoT 硬件和軟件包,即刻就可開始探索從 Google Cloud 發送和接收數據的各種方案。PIC-IoT 硬件包括 ATECC608A CryptoAuthentication 器件,并且已預先配置為支持 Google Cloud IoT Core 及此使用模型。開發人員可以輕松使用 MPLAB X IDE 和 MPLAB 代碼配置器來修改或構建安全連接到 Google Cloud 的全新物聯網應用。

總結

在物聯網設備與網絡資源之間提供安全連接,對于任何網絡服務環境都是極其重要的,對于使用商業云服務而言更是必不可少。構建安全連接所需的軟件服務層可能會致使物聯網項目嚴重延遲,對于資源有限的物聯網設計,甚至難以實現。使用如 Microchip Technology 的 PIC-IoT 等開發板(包含專用安全 IC),開發人員可以快速開發出能夠安全連接到 Google Cloud 的物聯網應用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7651

    瀏覽量

    152120
  • 物聯網
    +關注

    關注

    2914

    文章

    44938

    瀏覽量

    377074
收藏 人收藏

    評論

    相關推薦

    使用插件Excel連接到MySQL/MariaDB

    使用插件 Excel 連接到 MySQL/MariaDB 適用于 MySQL 的 Devart Excel 插件允許您將 Microsoft Excel 連接到 MySQL 或 MariaDB
    的頭像 發表于 01-20 12:38 ?120次閱讀
    使用插件<b class='flag-5'>將</b>Excel<b class='flag-5'>連接到</b>MySQL/MariaDB

    聯網就業有哪些高薪崗位?

    系統的數據安全和隱私保護,這一崗位的需求也在逐年上升。  隨著聯網行業的蓬勃發展,這些高薪崗位持續吸引著大量求職者。然而,高薪并不是唾手可得的,對于求職者而言,還需要具備扎實的技
    發表于 01-10 16:47

    Looker Studio連接器:一個連接器從多個數據庫和云應用獲取數據

    并擁有外部 IP。 適用于 Cloud Data 的連接器 通過單個連接 Looker Studio(以前稱為 Google Data
    的頭像 發表于 01-03 09:07 ?142次閱讀
    Looker Studio<b class='flag-5'>連接</b>器:一個<b class='flag-5'>連接</b>器從多個數據庫和云應用獲取數據

    芯科科技如何應對聯網安全挑戰

    任何連接到聯網的東西都可能在某一時候面臨攻擊。攻擊者可能會試圖遠程破壞聯網設備,以竊取數據,進行 DDoS 攻擊,或試圖破壞網絡的其余部分。
    的頭像 發表于 11-08 14:44 ?423次閱讀

    聯網系統的安全漏洞分析

    隨著聯網技術的快速發展,越來越多的設備被連接到聯網上,從智能家居、智能城市到工業自動化,
    的頭像 發表于 10-29 13:37 ?507次閱讀

    如何實現聯網安全

    隨著聯網(IoT)技術的飛速發展,越來越多的設備被連接到聯網上,從智能恒溫器到工業控制系統,IoT設備已經成為我們日常生活和工業生產中不可或缺的一部分。然而,隨著這些設備的普及,
    的頭像 發表于 10-29 10:24 ?438次閱讀

    NetApp與Google Cloud深化合作,強化分布式云存儲

    智能數據基礎設施領導者NetApp?宣布,其與Google Cloud的戰略合作再升級。此次合作中,NetApp統一數據存儲和智能服務融入Google Distributed
    的頭像 發表于 10-11 17:21 ?546次閱讀

    家電廠中MES聯網平臺有什么功能

    、設備連接與管理 聯網平臺的首要功能是提供設備連接管理功能。在家電廠中,這包括設備的注冊、身份認證和數據接入等。通過
    的頭像 發表于 09-13 14:29 ?267次閱讀

    如何快速安全地為超級電容器充電

    電子發燒友網站提供《如何快速安全地為超級電容器充電.pdf》資料免費下載
    發表于 09-06 09:55 ?1次下載
    如何<b class='flag-5'>快速</b><b class='flag-5'>安全地</b>為超級電容器充電

    使用ESP8266arduino連接到thinkspeak云,無法將其連接到任何網頁,為什么?

    我正在嘗試使用 ESP8266 arduino 連接到 thinkspeak 云。所以我能夠 esp 模塊連接到我的家庭 wifi,但我無法將其
    發表于 07-16 07:43

    esp8266已連接到Wifi但無法連接到聯網,為什么?

    首先,我想說對不起,如果我的帖子在錯誤的線程中。在那之后,我想問一個問題,我的 esp12E 已連接到 Wifi,但它無法連接到聯網,即使 wifi 連接到
    發表于 07-09 07:11

    Flutter首次亮相Google Cloud Next大會

    Flutter 團隊在近期首次參加了 Google Cloud Next 大會,這意味著 Flutter 在開發社區中的影響力正在日益增長。
    的頭像 發表于 05-09 10:15 ?527次閱讀

    iot聯網平臺是什么?

    監控、自動報警、遠程控制、遠程診斷、遠程維護等功能。 IOT聯網平臺是聯網解決方案的關鍵組成部分,負責感知層的各類設備
    的頭像 發表于 04-01 10:19 ?3023次閱讀

    如何LED連接到Arduino板并使其閃爍

     在本快速入門指南中,您將學習如何 LED 連接到 Arduino 板并使其閃爍。
    的頭像 發表于 02-11 10:53 ?2350次閱讀
    如何<b class='flag-5'>將</b>LED<b class='flag-5'>連接到</b>Arduino板并使其閃爍

    如何按鈕連接到Arduino板

    在本快速入門指南中,您將學習如何按鈕連接到Arduino板,并根據按鈕是否被按下來讀取HIGH或LOW。您將使用電路板上隨附的發光二極管 (LED)通過按鈕打開和關閉,以便驗證按鈕按下代碼是否正常工作。
    的頭像 發表于 02-11 10:52 ?4181次閱讀
    如何<b class='flag-5'>將</b>按鈕<b class='flag-5'>連接到</b>Arduino板
    博九网百家乐现金网| 百家乐视频聊天游戏| 百家乐电投网站| 路劲太阳城怎么样| 湾仔区| 百家乐官网衬衣| 百家乐大转轮| 百家乐官网蓝盾有赢钱的吗| 百家乐开户最快的平台是哪家| 大发888网页版出纳| 百家乐官网转盘技巧| 中原百家乐官网的玩法技巧和规则| 博彩百家乐的玩法技巧和规则| 赌场百家乐技巧| 欢乐谷棋牌游戏官网| 百家乐官网好多假网站| 金百家乐博彩公司| 顶级赌场371betcwm| 百家乐官网赌场论坛| 百家乐推饼| 皇冠投注平台| 百家乐官网是怎样算牌| 百家乐老千| 新葡京娱乐| 做生意怎么看风水| 大嘴棋牌手机版| 金沙百家乐官网的玩法技巧和规则| 威尼斯人娱乐城返佣| 澳门百家乐官网洗码提成查询| 百家乐赌博工具| 百家乐官网赢利策略| 百家乐网站东方果博| 百家乐分析| 百家乐官网那里最好| 百利宫娱乐城官方网| 真人百家乐官网网络游戏信誉怎么样 | 波音代理| 澳门百家乐出千| 足球比分| 百家乐娱乐城提款| 24山来水吉凶|