盡管開發(fā)人員已經(jīng)采取最大努力,但是仍然可能將物聯(lián)網(wǎng) (IoT) 設(shè)計(jì)暴露在預(yù)期用來維護(hù)安全性的代碼攻擊之下。黑客經(jīng)常會(huì)用受損代碼替換固件,以攻擊看似安全的設(shè)計(jì)。安全引導(dǎo)方法可以緩解這些攻擊,但可能難以確保正確實(shí)現(xiàn)。
開發(fā)人員需要更簡單的方法來實(shí)現(xiàn)安全引導(dǎo),將其作為確保物聯(lián)網(wǎng)器件安全性的整體策略的一部分。
本文簡要回顧了物聯(lián)網(wǎng)器件設(shè)計(jì)中的常見攻擊面,以及安全密鑰存儲(chǔ)、加密和身份驗(yàn)證等基本安全方法的作用;然后介紹了一種安全芯片,能讓開發(fā)人員在整體策略所需的其他功能中添加安全引導(dǎo),以確保物聯(lián)網(wǎng)器件的安全。
物聯(lián)網(wǎng)器件漏洞
對于黑客而言,物聯(lián)網(wǎng)器件帶來了可用以破壞器件本身、其網(wǎng)絡(luò)甚至是最終應(yīng)用的多個(gè)入口點(diǎn)。雖然開發(fā)人員可以使用各種技術(shù)來增強(qiáng)網(wǎng)絡(luò)和應(yīng)用安全性,但由于物聯(lián)網(wǎng)器件上可用的存儲(chǔ)器和處理資源有限,因此確保其安全性仍是一項(xiàng)挑戰(zhàn)。
盡管開發(fā)人員在采用加密方法來保護(hù)數(shù)據(jù),但許多器件都不具備所需的安全身份驗(yàn)證功能,無法防止黑客偽裝成授權(quán)服務(wù)器、網(wǎng)關(guān)或其他物聯(lián)網(wǎng)器件來攔截通信。某些情況下,如果器件使用有效但較弱的身份驗(yàn)證方法,仍然容易受到復(fù)雜的漏洞程序攻擊,這些攻擊會(huì)攔截看似私密的通信會(huì)話中所用的有效安全密鑰,然后加以重復(fù)使用。
物聯(lián)網(wǎng)器件更新
一個(gè)更加底層的安全漏洞涉及數(shù)量快速增長的物聯(lián)網(wǎng)器件中內(nèi)置的空中升級 (OTA) 功能??罩猩墳榭焖侔l(fā)展的物聯(lián)網(wǎng)市場提供了一項(xiàng)重要功能。開發(fā)人員可通過升級已部署器件的固件,響應(yīng)客戶對新功能不斷變化的需求(或修復(fù)錯(cuò)誤)。在典型的空中升級流程中,物聯(lián)網(wǎng)器件將定期尋找更新,在新代碼可用時(shí)下載新代碼,并執(zhí)行一系列系統(tǒng)調(diào)用以完成更新流程。
例如,對于 Microchip Technology 基于 SAM D21 MCU 的物聯(lián)網(wǎng)器件,其固件將包含空中升級代碼,用于從某個(gè)預(yù)設(shè)端點(diǎn)下載鏡像,之后固件會(huì)檢查是否執(zhí)行成功,然后切換到新的固件集(列表 1)。在 Microchip 高級軟件框架包提供的這個(gè)列表中,OTA 固件初始化 (m2m_ota_init()) 之后,回調(diào)例程 OtaUpdateCb() 會(huì)在 OTA 固件下載新代碼鏡像后,切換到新固件集 (m2m_ota_switch_firmware()),然后系統(tǒng)復(fù)位即會(huì)引導(dǎo) MCU 重啟到已更新的固件。
副本
static void OtaUpdateCb(uint8 u8OtaUpdateStatusType ,uint8 u8OtaUpdateStatus)
{
if(u8OtaUpdateStatusType == DL_STATUS) {
if(u8OtaUpdateStatus == OTA_STATUS_SUCSESS) {
//switch to the upgraded firmware
m2m_ota_switch_firmware();
}
}
else if(u8OtaUpdateStatusType == SW_STATUS) {
if(u8OtaUpdateStatus == OTA_STATUS_SUCSESS) {
M2M_INFO("Now OTA successfully done");
//start the host SW upgrade then system reset is required (Reinitialize the driver)
}
}
}
void wifi_event_cb(uint8 u8WiFiEvent, void * pvMsg)
{
case M2M_WIFI_REQ_DHCP_CONF:
{
//after successfully connection, start the over air upgrade
m2m_ota_start_update(OTA_URL);
}
break;
default:
break;
}
int main (void)
{
tstrWifiInitParam param;
tstr1xAuthCredentials gstrCred1x = AUTH_CREDENTIALS;
nm_bsp_init();
m2m_memset((uint8*)?m, 0, sizeof(param));
param.pfAppWifiCb = wifi_event_cb;
//Initialize the WINC Driver
ret = m2m_wifi_init(?m);
if (M2M_SUCCESS != ret)
{
M2M_ERR("Driver Init Failed <%d> ",ret);
while(1);
}
//Initialize the OTA module
m2m_ota_init(OtaUpdateCb,NULL);
//connect to AP that provide connection to the OTA server
m2m_wifi_default_connect();
while(1)
{
//Handle the app state machine plus the WINC event handler
while(m2m_wifi_handle_events(NULL) != M2M_SUCCESS) {
}
}
}
列表 1:這是來自 Microchip 高級軟件框架包的無線 (OTA) 代碼樣例,一個(gè) Wi-Fi 事件句柄回調(diào)函數(shù) wifi_event_cb() 使用指定 URL 啟動(dòng)空中升級 m2m_ota_start_update(OTA_URL),并在成功完成 OtaUpdateCb() 后,切換至新固件 m2m_ota_switch_firmware()。(代碼來源:Microchip Technology)
為了檢查下載的代碼是否有效,開發(fā)人員長期依賴由認(rèn)可的認(rèn)證機(jī)構(gòu)頒發(fā)的代碼簽名證書。即便如此,安全數(shù)據(jù)存儲(chǔ)、驗(yàn)證技術(shù)實(shí)現(xiàn)和證書保護(hù)方面的不足也為黑客提供了操縱侵入物聯(lián)網(wǎng)器件的途徑。
即使使用傳統(tǒng)的安全技術(shù),器件自身的固件更新流程也可能遭受侵害,有效代碼被替換成受損代碼。在重啟時(shí),器件會(huì)成為黑客用來更深入地滲透物聯(lián)網(wǎng)網(wǎng)絡(luò)、物聯(lián)網(wǎng)應(yīng)用甚至企業(yè)內(nèi)部資源的工具。
在這種情況下,安全引導(dǎo)物聯(lián)網(wǎng)器件的能力便成為一道關(guān)鍵防線。但是,對于開發(fā)人員而言,要實(shí)現(xiàn)安全引導(dǎo),在安全存儲(chǔ)、加密、身份驗(yàn)證和代碼驗(yàn)證機(jī)制方面需滿足多種要求。
有些攻擊方法側(cè)重于從器件存儲(chǔ)中檢索安全密鑰、攔截加密數(shù)據(jù)、欺騙身份驗(yàn)證機(jī)制以及破壞代碼驗(yàn)證算法,如果以軟件方式實(shí)現(xiàn)安全引導(dǎo),更新流程將暴露于這些危險(xiǎn)之中。實(shí)際上,物聯(lián)網(wǎng)設(shè)計(jì)通常缺乏額外的存儲(chǔ)器和處理能力,而這正是軟件解決方案在所有情況下都需要的。即便如此,硬件實(shí)現(xiàn)也無法始終保證安全性。
為了在硬件中實(shí)現(xiàn)安全引導(dǎo),物聯(lián)網(wǎng)器件往往需要大量專用器件,而這會(huì)大幅增加設(shè)計(jì)復(fù)雜性和成本,這種情況直到最近才有所改觀。即使開發(fā)人員集成了這些獨(dú)立器件,意向堅(jiān)決的黑客也可以輕松獲取目標(biāo)物聯(lián)網(wǎng)器件的樣件,并通過其總線和信號(hào)互連攻擊單個(gè)安全器件。相比之下,Microchip Technology 的 ATECC608A 是一種單芯片解決方案,允許開發(fā)人員在不暴露底層機(jī)密或安全機(jī)制的情況下添加安全引導(dǎo)。
安全 IC
ATECC608A 是一款 8 引腳安全器件,可通過簡單的串行接口為主機(jī) MCU 提供先進(jìn)的安全功能補(bǔ)充(圖 1)。
圖 1:ATECC608A 是一款 8 引腳加密協(xié)處理器,具有基于硬件的安全密鑰存儲(chǔ)器。(圖片來源:Microchip Technology)
該器件提供基于硬件的完整安全解決方案,將其集成的加密加速器與片載安全存儲(chǔ)器相結(jié)合,支持各種加密算法,包括 SHA-256、AES-128 以及穩(wěn)健的橢圓曲線算法,如橢圓曲線數(shù)字簽名 (ECDSA)、橢圓曲線 Diffie-Hellman (ECDH) 和 NIST 曲線 P-256 等。除了這些加密機(jī)制,該器件還支持包括 TLS 1.3 在內(nèi)的更高級別的傳輸層安全 (TLS) 協(xié)議。與早期器件不同,ATECC608A 可以生成并安全存儲(chǔ)會(huì)話密鑰,這有助于減輕使用 TLS 身份驗(yàn)證時(shí)常見的威脅來源。
這些功能在確保物聯(lián)網(wǎng)器件正常運(yùn)行方面發(fā)揮著重要作用,但 ATECC608A 對安全引導(dǎo)的支持將安全覆蓋范圍擴(kuò)展到基本固件更新流程。ATECC608A 會(huì)驗(yàn)證新代碼集,并向 MCU 返回表示成功或失敗的消息。此時(shí),根據(jù)現(xiàn)有安全策略,MCU 可以重試更新,向安全監(jiān)視器端點(diǎn)發(fā)送警告消息,暫?;蚝雎愿虏⒅貑⑦M(jìn)入原始代碼。
硬件集成
對于開發(fā)人員而言,在向基于 MCU 的設(shè)計(jì)添加安全引導(dǎo)和其他安全功能方面,ATECC608A 帶來的額外要求相對較少。在硬件方面,設(shè)計(jì)人員需要處理最多四個(gè)連接:VCC、GND、串行時(shí)鐘輸入 (SCL) 和串行數(shù)據(jù) (SDA)。其余四個(gè)引腳未連接。除了將 VCC 連接到 2.0 V 至 5.5 V 電源外,唯一待確定的是與 MCU 的串行連接。
設(shè)計(jì)人員可以將器件的 SCL 和 SDA 引腳連接到 MCU,以實(shí)現(xiàn)傳統(tǒng)的 I2C 連接。或者,設(shè)計(jì)人員可以利用器件對 Microchip 單線接口的支持。這里,開發(fā)人員將器件的 SDA 端口連接到 MCU GPIO 引腳,并使用 Microchip 的單線時(shí)序協(xié)議傳輸邏輯 0 和 1 值(圖 2)。
圖 2:在 Microchip 單線串行協(xié)議中,一個(gè)指定持續(xù)時(shí)間的波形轉(zhuǎn)換序列發(fā)出邏輯 0 或邏輯 1 信號(hào)。(圖片來源:Microchip Technology)
在此協(xié)議中,ATECC608A 與 MCU 之間的邏輯值傳輸始于指定持續(xù)時(shí)間的起始脈沖 (tSTART)。在起始脈沖之后,協(xié)議將邏輯 0 定義為指定了持續(xù)時(shí)間的一個(gè)循環(huán),由零傳輸高脈沖 (tZHI) 與隨后的零傳輸?shù)兔}沖 (tZLO) 組成。同樣,持續(xù)的高電平表示邏輯 1 傳輸。
無論哪種情況下,協(xié)議都希望信號(hào)在指定位時(shí)間 (tBIT) 內(nèi)降低。在一系列位傳輸之后,如果串行線路在指定的 IO 超時(shí)持續(xù)時(shí)間后變?yōu)榉腔顒?dòng)狀態(tài),則可以將器件編程為自動(dòng)進(jìn)入休眠模式。但是,使用 ATECC608A 的開發(fā)人員很少需要關(guān)注此協(xié)議的時(shí)序細(xì)節(jié):Microchip 定義的關(guān)鍵時(shí)序參數(shù)與在 230.4 Kbaud 運(yùn)行的標(biāo)準(zhǔn) UART 兼容。
器件配置
在器件級別,ATECC608A 需要的配置設(shè)置最少。開發(fā)人員可以使用 I2C 或單線串行接口加載 I2C 地址等設(shè)置,或設(shè)置一些功能,如喚醒或開機(jī)時(shí)自檢。該器件確實(shí)提供了與超低功耗物聯(lián)網(wǎng)設(shè)計(jì)特別相關(guān)的配置設(shè)置。
在這些設(shè)計(jì)中,ATECC608A 在其空閑或休眠模式下增加的總功耗預(yù)算相對較少,這兩種模式可能是典型物聯(lián)網(wǎng)設(shè)計(jì)中的最常見狀態(tài)。在空閑模式下,器件功耗約為 800 微安 (μA);在休眠模式下,功耗為 150 納安 (nA) 或更低,具體取決于配置。當(dāng) MCU 喚醒器件執(zhí)行某些安全流程時(shí),器件的功耗在有效工作期間仍只有 14 毫安 (mA)。即便如此,具有嚴(yán)格功耗預(yù)算的設(shè)計(jì)也可能需要甚至更低的有功功率水平。
為了支持這些設(shè)計(jì),該器件提供了一個(gè)配置選項(xiàng),允許開發(fā)人員選擇三種不同的工作模式,通過減緩執(zhí)行速度來實(shí)現(xiàn)更低的功耗。因此,開發(fā)人員可通過相應(yīng)減緩執(zhí)行速度,將有功功率從最大執(zhí)行速度下的 14 mA 降至 6 mA 或 3 mA。
除了各種低級配置項(xiàng)之外,如果在開發(fā)之前已落實(shí)安全器件(如 ATECC608A)的安全信息,會(huì)更為有效。開發(fā)過程中所執(zhí)行安全密鑰和證書的錯(cuò)誤或漏洞甚至?xí)率棺罴寻踩胧┦А榻鉀Q這一可能的威脅,Microchip 的可信配置服務(wù)會(huì)在制造過程中加載包括密鑰和證書在內(nèi)的安全數(shù)據(jù)。
在工廠的安全環(huán)境中加載安全信息后,即使器件通過供應(yīng)鏈中的正常處理流程,也可以保護(hù)其不被意外或故意發(fā)現(xiàn)。ATECC608A 包含一種特殊的傳輸鎖定功能,在使用從最終主機(jī) MCU 傳輸?shù)囊阎荑€以加密方式啟用器件前,禁止使用器件。
一旦被主機(jī) MCU 啟用,ATECC608A 就會(huì)隨機(jī)生成一個(gè)與 MCU 共享的稱為 IO 保護(hù)密鑰的密鑰。ATECC608A 與 MCU 之間的后續(xù)通信使用此 IO 保護(hù)密鑰進(jìn)行加密——這是一種在安全引導(dǎo)和其他安全流程中提供額外身份驗(yàn)證的機(jī)制。
如果黑客希望切斷與 ATECC608A 的連接并將自己的“成功”信號(hào)饋送給 MCU 以欺騙驗(yàn)證流程,此 IO 保護(hù)密鑰機(jī)制將導(dǎo)致 MCU 忽略錯(cuò)誤信號(hào)。即使黑客以某種方式破壞 ATECC608A 器件并嘗試在不同的系統(tǒng)上使用它,IO 保護(hù)密鑰機(jī)制也會(huì)有效阻止其使用。
軟件集成
ATECC608A 具有所有精致的功能和保護(hù)機(jī)制,可以直接應(yīng)用到基于 MCU 的設(shè)計(jì)。除了實(shí)現(xiàn)前面提到的簡單硬件接口和配置設(shè)置之外,開發(fā)人員還可使用抽象出操作細(xì)節(jié)的應(yīng)用編程接口 (API)。Microchip 的 CryptoAuthLib 加密認(rèn)證庫提供一個(gè)全面的軟件包,其中包含充分利用 ATECC608A 功能所需的定義、結(jié)構(gòu)和 API 調(diào)用。此庫充當(dāng)硬件中立層,通過硬件抽象層 (HAL) API 和用于特定硬件目標(biāo)的驅(qū)動(dòng)程序來運(yùn)作(圖 3)。
圖 3:Microchip 的 CryptoAuthLib 庫在應(yīng)用和底層硬件之間提供了一個(gè)加密服務(wù)層,可通過硬件特定驅(qū)動(dòng)程序之上的硬件抽象層訪問該服務(wù)層,從而實(shí)現(xiàn)跨不同硬件組的可移植性。(圖片來源:Microchip Technology)
開發(fā)人員使用 CryptoAuthLib API 例程(如 io_protection_set_key())創(chuàng)建 IO 保護(hù)密鑰,并使用 atcab_secureboot() 對照調(diào)用參數(shù)中包含的代碼摘要或簽名,執(zhí)行 ATECC608A 的安全引導(dǎo)驗(yàn)證機(jī)制。
雖然 API 命令很簡單,但實(shí)現(xiàn)安全性所需的特定設(shè)置、管理和操作步驟可能頗具挑戰(zhàn)性。如果關(guān)鍵步驟缺失或未按順序執(zhí)行,開發(fā)人員試圖實(shí)現(xiàn)的安全機(jī)制可能會(huì)導(dǎo)致延遲。
使用 Microchip 基于 SAM D21 MCU 的 ATSAMD21-XPRO 開發(fā)套件及其配備 ATECC608A 的 ATCRYPTOAUTH-XPRO-B 擴(kuò)展板,開發(fā)人員可以快速獲得使用這些通用機(jī)制和 ATECC608A 特定功能的經(jīng)驗(yàn)。Microchip 提供在 ATSAMD21-XPRO 和 ATCRYPTOAUTH-XPRO-B 上運(yùn)行的廣泛安全引導(dǎo)軟件包,使用 Microchip ATOLED1-XPRO 為樣例應(yīng)用提供基本顯示接口(圖 4)。
圖 4:開發(fā)人員可以使用 Microchip 軟件和基于 SAM D21 MCU 的 ATSAMD21-XPRO 開發(fā)套件快速評估安全引導(dǎo)流程,其中開發(fā)套件結(jié)合了配備 ATECC608A 的 ATCRYPTOAUTH-XPRO-B 擴(kuò)展板和 ATOLED1-XPRO 顯示擴(kuò)展板。(圖片來源:Microchip Technology)
包含在 SAM D21 演示包中的完整安全引導(dǎo)例程說明了用于設(shè)置、執(zhí)行和檢查安全引導(dǎo)操作狀態(tài)的關(guān)鍵軟件設(shè)計(jì)模式(列表 2)。通過此硬件平臺(tái)和演示軟件包,開發(fā)人員可以快速評估 ATECC608A 的遠(yuǎn)程引導(dǎo)使用情況,并根據(jù)需要修改樣例軟件以滿足自己的要求。
副本
/** rief Handles secure boot functionality through initialization, execution,
* and de-initialization.
* eturn ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS secure_boot_process(void)
{
ATCA_STATUS status;
secure_boot_parameters secure_boot_params;
uint8_t secure_boot_mode;
bool secure_boot_app_valid = false;
/*Initialize secure boot */
if ((status = secure_boot_init(&secure_boot_params)) != ATCA_SUCCESS)
{
return status;
}
do
{
.
.
.
#if SECURE_BOOT_DIGEST_ENCRYPT_ENABLED
.
.
.
/*Get IO Protection Key*/
if ((status = io_protection_get_key(secure_boot_params.io_protection_key)) != ATCA_SUCCESS)
{
return status;
}
if ((status = atcab_secureboot_mac(secure_boot_mode,
(const uint8_t*)&secure_boot_params.app_digest,
(const uint8_t*)&secure_boot_params.memory_params.signature,
(const uint8_t*)secure_boot_params.randomnum,
(const uint8_t*)secure_boot_params.io_protection_key,
&secure_boot_app_valid)) != ATCA_SUCCESS)
{
break;
}
#else
if ((status = atcab_secureboot(secure_boot_mode,
0,
(const uint8_t*)&secure_boot_params.app_digest,
(const uint8_t*)&secure_boot_params.memory_params.signature,
NULL)) != ATCA_SUCCESS)
{
break;
}
secure_boot_app_valid = true;
#endif
/*Check whether the secure boot command executed successfully with the correct return mac */
if (!secure_boot_app_valid)
{
break;
}
.
.
.
}
while (0);
/* De-initialize memory interface and release its resources*/
secure_boot_deinit_memory(&secure_boot_params.memory_params);
return status;
}
列表 2:Microchip SAM D21 演示包的這個(gè)代碼片段展示了安全引導(dǎo)的關(guān)鍵設(shè)計(jì)模式,包括檢查 IO 保護(hù)密鑰 (io_protection_get_key()) 以及使用其摘要、簽名和其他參數(shù)(atcab_secureboot_mac() 或 atcab_secureboot(),具體取決于所選配置)驗(yàn)證固件。(代碼來源:Microchip Technology)
總結(jié)
物聯(lián)網(wǎng)器件為意圖使用受損器件入侵物聯(lián)網(wǎng)網(wǎng)絡(luò)、應(yīng)用和企業(yè)資源的黑客提供了多個(gè)威脅面。在解決技術(shù)中,安全引導(dǎo)是更廣泛安全策略中的關(guān)鍵要素。然而,安全引導(dǎo)的實(shí)現(xiàn)本身也有一套要求,如果處理不當(dāng),可能會(huì)使系統(tǒng)暴露于危險(xiǎn)當(dāng)中。
Microchip Technology 的 ATECC608A 安全 IC 在單個(gè)封裝中提供一個(gè)全面的解決方案,使開發(fā)人員能夠?qū)⑵漭p松添加到任何基于 MCU 的設(shè)計(jì)中。開發(fā)人員可以利用 ATECC608A 極大地增強(qiáng)安全性并確保其物聯(lián)網(wǎng)設(shè)計(jì)中的安全引導(dǎo)。
-
芯片
+關(guān)注
關(guān)注
459文章
52487瀏覽量
440630 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4531瀏覽量
87435 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2930文章
46221瀏覽量
392249
發(fā)布評論請先 登錄
評論